ROOT logo
/**
 * @file   AAFRailway.C
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Tue Oct 16 19:02:14 2012
 * 
 * @brief  AAF analysis helper
 * 
 * @ingroup pwglf_forward_trains_helper
 * 
 */
#ifndef AAFHELPER_C
#define AAFHELPER_C
#include "ProofRailway.C"
#ifndef __CINT__
# include "AvailableSoftware.C"
# include <TUrl.h>
# include <TString.h>
# include <TProof.h>
# include <AliAnalysisManager.h>
#else
class TUrl;
class AliAnalysisAlien;
#endif

// ===================================================================
/**
 * Handle analysis on an Alice Analysis Facility (AAF)
 * 
 * This helper is triggered by a URL of the form 
 *
 * @code
 * proof://[<user>@]<host>[:<port>]/<dsname>[?<options>][#<treename>]
 * @endcode 
 * where &lt;host@&t; is a known AAF (e.g., <tt>alice-caf.cern.ch</tt>)
 * <dl>
 *   <dt>&lt;user&gt;</dt>
 *   <dd>Optional user name</dd>
 *   <dt>&lt;host&gt;</dt>
 *   <dd>PROOF cluster master host</dd>
 *   <dt>&lt;port&gt;</dt>
 *   <dd>Optional PROOF cluster port on master host</dd>
 *   <dt>&lt;dsname&gt;</dt>
 *   <dd>Data set name</dd>
 *   <dt>&lt;treename&gt;</dt>
 *   <dd>Optional tree name in data set, often <tt>esdTree</tt> or
 *   <tt>aodTree</tt></dd>
 *   <dt>&lt;options&gt;</dt>
 *   <dd>List of options separated by an &amp;
 *     <dl>
 *       <dt><tt>dsname</tt>[=&lt;output dataset&gt;]</dt>
 *       <dd>Register tree output (e.g., AOD) as a new data set on the
 *         PROOF cluster. If &lt;output dataset&gt; is not specified, take
 *         the name of the train.</dd>
 *       <dt><tt>storage=&lt;url&gt;</tt></dt>
 *       <dd>Specify a non-default storage location for special output
 *         (e.g., AOD trees).  &lt;url&gt; should be a valid XRootd 
 *         server URI accessible to the slaves - e.g., 
 *         <tt>root://lxplus.cern.ch:10930//tmp</tt>.</dd>
 *       <dt><tt>mode=[default,rec,sim,train,custom]</tt></dt>
 *       <dd>Set the AliROOT mode.  If not specified <tt>default</tt> 
 *         is assumed.  See also CreateAliROOTPar</dd>
 *       <dt><tt>par</tt></dt>
 *       <dd> Use par files </dd>
 *     </dl>
 *   </dd>
 * </dl>  
 *
 * Note, this helper does not use the AliAnalysisAlien plugin
 *
 * @ingroup pwglf_forward_trains_helper
 */
struct AAFRailway : public ProofRailway
{
  /** 
   * Constructor 
   * 
   * @param url  Url 
   * @param verbose Verbosity 
   */
  AAFRailway(const TUrl& url, Int_t verbose)
    : ProofRailway(url, verbose)
  {
    fOptions.Add("aliroot", "VERSION", "AliROOT version", "last");
    fOptions.Add("root",    "VERISON", "ROOT version", "last");
    fOptions.Add("nocache", "Disable tree cache");
  }
  virtual ~AAFRailway() {}
  /** 
   * Get the name of the AliROOT par file to use 
   * 
   * @return String 
   */
  virtual const char* AliROOTParName() const
  {
    return Form("VO_ALICE@AliRoot::%s", fOptions.Get("aliroot").Data());
  }
  virtual Bool_t CreateAliROOTPar()
  {
    return true;
  }
  /** 
   * Set-up done before task set-ups. Overload ProofRailway::PreSetup
   * to specify the ROOT version using TProofMgr::SetROOTVersion
   * 
   * @return true on success 
   */
  virtual Bool_t PreSetup() 
  {
    TString aliroot("last");
    TString root("last");
    if (fOptions.Has("aliroot")) aliroot = fOptions.Get("aliroot");
    if (fOptions.Has("root"))    root    = fOptions.Get("root");

    AvailableSoftware::Check(aliroot, root);
    fOptions.Set("aliroot", aliroot);
    fOptions.Set("root", root);

    fBasePars = false;

    // Set this before we try to access the cluster
    gEnv->SetValue("XSec.GSI.DelegProxy", "2");

    TProof::Mgr(fUrl.GetHost())
      ->SetROOTVersion(Form("VO_ALICE@ROOT::%s", root.Data()));

    if (!ProofRailway::PreSetup()) return false;

    if (fOptions.Has("nocache")) 
      gProof->SetParameter("PROOF_UseTreeCache", 0);
    return true;
  }
  /** 
   * @return URI help string 
   */
  virtual const Char_t* UrlHelp() const 
  {
    return "proof://<host>/<dataset>?[&<options>][#<treename>]";
  }
  /** 
   * @return short description
   */
  virtual const char* Desc() const { return "AAF"; }
};
#endif
//
// EOF
//
 AAFRailway.C:1
 AAFRailway.C:2
 AAFRailway.C:3
 AAFRailway.C:4
 AAFRailway.C:5
 AAFRailway.C:6
 AAFRailway.C:7
 AAFRailway.C:8
 AAFRailway.C:9
 AAFRailway.C:10
 AAFRailway.C:11
 AAFRailway.C:12
 AAFRailway.C:13
 AAFRailway.C:14
 AAFRailway.C:15
 AAFRailway.C:16
 AAFRailway.C:17
 AAFRailway.C:18
 AAFRailway.C:19
 AAFRailway.C:20
 AAFRailway.C:21
 AAFRailway.C:22
 AAFRailway.C:23
 AAFRailway.C:24
 AAFRailway.C:25
 AAFRailway.C:26
 AAFRailway.C:27
 AAFRailway.C:28
 AAFRailway.C:29
 AAFRailway.C:30
 AAFRailway.C:31
 AAFRailway.C:32
 AAFRailway.C:33
 AAFRailway.C:34
 AAFRailway.C:35
 AAFRailway.C:36
 AAFRailway.C:37
 AAFRailway.C:38
 AAFRailway.C:39
 AAFRailway.C:40
 AAFRailway.C:41
 AAFRailway.C:42
 AAFRailway.C:43
 AAFRailway.C:44
 AAFRailway.C:45
 AAFRailway.C:46
 AAFRailway.C:47
 AAFRailway.C:48
 AAFRailway.C:49
 AAFRailway.C:50
 AAFRailway.C:51
 AAFRailway.C:52
 AAFRailway.C:53
 AAFRailway.C:54
 AAFRailway.C:55
 AAFRailway.C:56
 AAFRailway.C:57
 AAFRailway.C:58
 AAFRailway.C:59
 AAFRailway.C:60
 AAFRailway.C:61
 AAFRailway.C:62
 AAFRailway.C:63
 AAFRailway.C:64
 AAFRailway.C:65
 AAFRailway.C:66
 AAFRailway.C:67
 AAFRailway.C:68
 AAFRailway.C:69
 AAFRailway.C:70
 AAFRailway.C:71
 AAFRailway.C:72
 AAFRailway.C:73
 AAFRailway.C:74
 AAFRailway.C:75
 AAFRailway.C:76
 AAFRailway.C:77
 AAFRailway.C:78
 AAFRailway.C:79
 AAFRailway.C:80
 AAFRailway.C:81
 AAFRailway.C:82
 AAFRailway.C:83
 AAFRailway.C:84
 AAFRailway.C:85
 AAFRailway.C:86
 AAFRailway.C:87
 AAFRailway.C:88
 AAFRailway.C:89
 AAFRailway.C:90
 AAFRailway.C:91
 AAFRailway.C:92
 AAFRailway.C:93
 AAFRailway.C:94
 AAFRailway.C:95
 AAFRailway.C:96
 AAFRailway.C:97
 AAFRailway.C:98
 AAFRailway.C:99
 AAFRailway.C:100
 AAFRailway.C:101
 AAFRailway.C:102
 AAFRailway.C:103
 AAFRailway.C:104
 AAFRailway.C:105
 AAFRailway.C:106
 AAFRailway.C:107
 AAFRailway.C:108
 AAFRailway.C:109
 AAFRailway.C:110
 AAFRailway.C:111
 AAFRailway.C:112
 AAFRailway.C:113
 AAFRailway.C:114
 AAFRailway.C:115
 AAFRailway.C:116
 AAFRailway.C:117
 AAFRailway.C:118
 AAFRailway.C:119
 AAFRailway.C:120
 AAFRailway.C:121
 AAFRailway.C:122
 AAFRailway.C:123
 AAFRailway.C:124
 AAFRailway.C:125
 AAFRailway.C:126
 AAFRailway.C:127
 AAFRailway.C:128
 AAFRailway.C:129
 AAFRailway.C:130
 AAFRailway.C:131
 AAFRailway.C:132
 AAFRailway.C:133
 AAFRailway.C:134
 AAFRailway.C:135
 AAFRailway.C:136
 AAFRailway.C:137
 AAFRailway.C:138
 AAFRailway.C:139
 AAFRailway.C:140
 AAFRailway.C:141
 AAFRailway.C:142
 AAFRailway.C:143
 AAFRailway.C:144
 AAFRailway.C:145
 AAFRailway.C:146
 AAFRailway.C:147
 AAFRailway.C:148