ROOT logo
/// **** to run the macro: ***********
// alien-token-init username
// source /tmp/gclient_env_XXX
// root -l runGridCascadePbPb.C

class AliAnalysisGrid;

void runGridCascadePbPb( Bool_t   useMC               = kTRUE,  // kTRUE if analysing a MC sample 
                         Bool_t   runperformancetask  = kTRUE,  
                         Float_t  centrlowlim         = 0.,
                         Float_t  centruplim          = 90.,
                         TString  centrest            = "V0M",
                         Bool_t   kusecleaning        = kTRUE,
                         Float_t  vtxlim              = 10.,
                         Int_t minnTPCcls             = 70, 
                         Bool_t   kextrasel           = kFALSE,
                         Bool_t   kacccut             = kFALSE,
                         Bool_t   krelaunchvertexers  = kFALSE,
                         Float_t  minptondaughtertracks = 0.,
                         Float_t  etacutondaughtertracks= .5,//9999999.,
                         TString  anatype             = "AOD",//"ESD",
                         TString  gridoutputdir       = "LHC10h_AOD086test",
                         //the following are used for the Cascade task only
                         TString  datadir             = "/alice/data/2010/LHC10h",///alice/data/2011/LHC11h_2",
                         TString  datapattern         = "ESDs/pass2/AOD086/*/AliAOD.root", // "ESDs/pass2/*/*ESDs.root" // for data
                         const char *plugin_mode      = "test") {

  // Load common libraries
  gSystem->Load("libCore.so");
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libMinuit.so"); 
  gSystem->Load("libGui.so");
  gSystem->Load("libXMLParser.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libESD.so");
  gSystem->Load("libCDB.so");
  gSystem->Load("libAOD");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  gSystem->Load("libProof.so");
  gSystem->Load("libRAWDatabase.so");
  gSystem->Load("libSTEER.so");

   //__________________________________________________________________________
  // Use AliRoot includes to compile our task
  gROOT->ProcessLine(".include $ALICE_ROOT/include");
  
  //__________________________________________________________________________
  // Create and configure the alien handler plugin
  AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode, runperformancetask, useMC, anatype, gridoutputdir, datadir, datapattern);
  if (!alienHandler) return;
 
  //__________________________________________________________________________
  // Create the analysis manager
  AliAnalysisManager *mgr = new AliAnalysisManager("CascadePbPbanalysis");
  
  //__________________________________________________________________________
  // Connect plug-in to the analysis manager
  mgr->SetGridHandler(alienHandler);

  // Input handlers
  AliESDInputHandler* esdH = new AliESDInputHandler();
  AliAODInputHandler* aodH = new AliAODInputHandler();
  if (anatype=="ESD") mgr->SetInputEventHandler(esdH);
  else mgr->SetInputEventHandler(aodH);
  if (runperformancetask&&(anatype=="ESD")) {
    AliMCEventHandler* mcHandler = new AliMCEventHandler();
    mgr->SetMCtruthEventHandler(mcHandler);
  }

  //__________________________________________________________________________
  // Add tasks

  if (anatype=="ESD") {
    // Physics selection
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
    AliPhysicsSelectionTask *physSel = AddTaskPhysicsSelection(useMC);
    // Centrality selection
    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
    AliCentralitySelectionTask *taskCentr = AddTaskCentrality();
    if (useMC){
      taskCentr->SetMCInput();
      taskCentr->DontUseCleaning();
    }
  }

  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
  AliAnalysisTaskPIDResponse *pidTask = AddTaskPIDResponse(useMC);

  if (runperformancetask) {
    gROOT->LoadMacro("./AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");//$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");
    gROOT->LoadMacro("./AddTaskCheckPerformanceCascadePbPb.C");//$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckPerformanceCascadePbPb.C");
    AliAnalysisTaskCheckPerformanceCascadePbPb *task = AddTaskCheckPerformanceCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim,kextrasel ,kacccut ,krelaunchvertexers,minptondaughtertracks,etacutondaughtertracks);

  } else {
    gROOT->LoadMacro("./AliAnalysisTaskCheckCascadePbPb.cxx++g");//$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckCascadePbPb.cxx++g");
    gROOT->LoadMacro("./AddTaskCheckCascadePbPb.C");//$ALICE_ROOT/PWGLF/STRANGENESS/Cascades/macros/AddTaskCheckCascadePbPb.C");
    AliAnalysisTaskCheckCascadePbPb *task = AddTaskCheckCascadePbPb(minnTPCcls, centrlowlim, centruplim, centrest, kusecleaning, vtxlim, kextrasel ,krelaunchvertexers,minptondaughtertracks,etacutondaughtertracks);

  }

  //__________________________________________________________________________
  // Disbale debug printouts
  mgr->SetDebugLevel(3);
  AliLog::SetGlobalLogLevel(AliLog::kFatal);
  AliLog::SetGlobalDebugLevel(0);
  
  //__________________________________________________________________________
  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  // Start analysis in grid.
  mgr->StartAnalysis("grid");
};

//__________________________________________________________________________

AliAnalysisGrid* CreateAlienHandler(const char *plugin_mode, Bool_t runperformancetask, Bool_t useMC, TString anatype, TString gridoutputdir, TString datadir, TString datapattern) {
  //__________________________________________________________________________
  // Check if user has a valid token, otherwise make one. This has limitations.
  // One can always follow the standard procedure of calling alien-token-init then
  //   source /tmp/gclient_env_$UID in the current shell.
  AliAnalysisAlien *plugin= new AliAnalysisAlien();

  //__________________________________________________________________________
  // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
  plugin->SetRunMode(plugin_mode);

  plugin->SetNtestFiles(1);
  //__________________________________________________________________________
  // Set versions of used packages
  plugin->SetAPIVersion("V1.1x");

  //__________________________________________________________________________
  // On GRID - current
  plugin->SetROOTVersion("v5-34-01-1");
  plugin->SetAliROOTVersion("v5-03-50-AN"); 

  //__________________________________________________________________________
  // Declare input data to be processed.
  // Method 1: Create automatically XML collections using alien 'find' command.
  if (useMC) {
    //plugin->SetGridDataDir("/alice/sim/LHC11a10a_bis");   // Define production directory
    //plugin->SetGridDataDir("/alice/sim/LHC11a10b_plus");
    plugin->SetGridDataDir("/alice/sim/2011/LHC11f5");
    // Set data search pattern
    if (anatype == "ESD") plugin->SetDataPattern("*ESDs.root");
    else plugin->SetDataPattern("AOD090/*AOD.root");  
    plugin->AddRunNumber(137124);


  } else {
    plugin->SetGridDataDir(datadir.Data());   // Define production directory LFN
    plugin->SetDataPattern(datapattern.Data());  // Set data search pattern
    plugin->SetRunPrefix("000");
    //plugin->SetRunRange(80000,80000); // ...then add run numbers to be considered
    plugin->AddRunNumber(138534);
   
  }
  // Method 2: Use your input collection 
  //plugin->AddDataFile("/alice/cern.ch/user/m/mnicassi/139105.xml");
  //__________________________________________________________________________
  // Define alien work directory where all files will be copied. Relative to alien $HOME.
  plugin->SetGridWorkingDir(gridoutputdir.Data());
  plugin->SetGridOutputDir("output");

  //__________________________________________________________________________
  if (runperformancetask) plugin->SetAnalysisSource("AliAnalysisTaskCheckPerformanceCascadePbPb.cxx");
  else plugin->SetAnalysisSource("AliAnalysisTaskCheckCascadePbPb.cxx");

  //__________________________________________________________________________
  //Enable same others packages
  //plugin->EnablePackage("PWG3dielectron.par");

  //__________________________________________________________________________
  // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
  plugin->SetAnalysisMacro("testmacro.C");
  //Add all extra files (task.cxx/.h)
  if (runperformancetask) {
    plugin->SetAdditionalLibs("AliAnalysisTaskCheckPerformanceCascadePbPb.h AliAnalysisTaskCheckPerformanceCascadePbPb.cxx");
    // Optionally modify the executable name (default analysis.sh)
    plugin->SetExecutable("CascadePerformancePbPb.sh");
  } else {
    plugin->SetAdditionalLibs("AliAnalysisTaskCheckCascadePbPb.h AliAnalysisTaskCheckCascadePbPb.cxx ");
    // Optionally modify the executable name (default analysis.sh)
    plugin->SetExecutable("CascadePbPb.sh");

  }
  
  //__________________________________________________________________________
  // Declare the output file names separated by blancs.
  // (can be like: file.root or file.root@ALICE::Niham::File)
  //plugin->SetDefaultOutputs(kFALSE);
  //if (runperformancetask) plugin->SetOutputFiles("CascadePerformance.root");
  //else plugin->SetOutputFiles("Cascades.root");

  // Optionally define the files to be archived.
  //plugin->SetOutputArchive("root_archive.zip:*.root log_archive.zip:stdout,stderr");

  //__________________________________________________________________________
  // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
  plugin->SetSplitMaxInputFileNumber(100);
  // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
  plugin->SetMasterResubmitThreshold(90);
  // Optionally set time to live (default 30000 sec)
  plugin->SetTTL(30000);
  // Optionally set input format (default xml-single)
  plugin->SetInputFormat("xml-single");
  // Optionally modify the name of the generated JDL (default analysis.jdl)
  if (runperformancetask) plugin->SetJDLName("TaskCheckPerformanceCascadePbPb.jdl");
  else plugin->SetJDLName("TaskCheckCascadePbPb.jdl");

  // Optionally modify job price (default 1)
  plugin->SetPrice(1);

  // Merge via JDL
  // comment out the next line when using the "terminate" option, unless
  // you want separate merged files for each run
/*  plugin->SetMergeViaJDL(kTRUE);  // run first in full mode, then in terminate
  plugin->SetOneStageMerging(kFALSE);
  plugin->SetMaxMergeFiles(50);
  plugin->SetMaxMergeStages(2);// to define the number of stages
*/
  // Optionally set number of runs per master
//  plugin->SetNrunsPerMaster(1);
  //
  plugin->SetOutputToRunNo();
  // Optionally modify split mode (default 'se')
  plugin->SetSplitMode("se");
  plugin->SetUser("mnicassi");
  return plugin;
}

 runGridCascadePbPb.C:1
 runGridCascadePbPb.C:2
 runGridCascadePbPb.C:3
 runGridCascadePbPb.C:4
 runGridCascadePbPb.C:5
 runGridCascadePbPb.C:6
 runGridCascadePbPb.C:7
 runGridCascadePbPb.C:8
 runGridCascadePbPb.C:9
 runGridCascadePbPb.C:10
 runGridCascadePbPb.C:11
 runGridCascadePbPb.C:12
 runGridCascadePbPb.C:13
 runGridCascadePbPb.C:14
 runGridCascadePbPb.C:15
 runGridCascadePbPb.C:16
 runGridCascadePbPb.C:17
 runGridCascadePbPb.C:18
 runGridCascadePbPb.C:19
 runGridCascadePbPb.C:20
 runGridCascadePbPb.C:21
 runGridCascadePbPb.C:22
 runGridCascadePbPb.C:23
 runGridCascadePbPb.C:24
 runGridCascadePbPb.C:25
 runGridCascadePbPb.C:26
 runGridCascadePbPb.C:27
 runGridCascadePbPb.C:28
 runGridCascadePbPb.C:29
 runGridCascadePbPb.C:30
 runGridCascadePbPb.C:31
 runGridCascadePbPb.C:32
 runGridCascadePbPb.C:33
 runGridCascadePbPb.C:34
 runGridCascadePbPb.C:35
 runGridCascadePbPb.C:36
 runGridCascadePbPb.C:37
 runGridCascadePbPb.C:38
 runGridCascadePbPb.C:39
 runGridCascadePbPb.C:40
 runGridCascadePbPb.C:41
 runGridCascadePbPb.C:42
 runGridCascadePbPb.C:43
 runGridCascadePbPb.C:44
 runGridCascadePbPb.C:45
 runGridCascadePbPb.C:46
 runGridCascadePbPb.C:47
 runGridCascadePbPb.C:48
 runGridCascadePbPb.C:49
 runGridCascadePbPb.C:50
 runGridCascadePbPb.C:51
 runGridCascadePbPb.C:52
 runGridCascadePbPb.C:53
 runGridCascadePbPb.C:54
 runGridCascadePbPb.C:55
 runGridCascadePbPb.C:56
 runGridCascadePbPb.C:57
 runGridCascadePbPb.C:58
 runGridCascadePbPb.C:59
 runGridCascadePbPb.C:60
 runGridCascadePbPb.C:61
 runGridCascadePbPb.C:62
 runGridCascadePbPb.C:63
 runGridCascadePbPb.C:64
 runGridCascadePbPb.C:65
 runGridCascadePbPb.C:66
 runGridCascadePbPb.C:67
 runGridCascadePbPb.C:68
 runGridCascadePbPb.C:69
 runGridCascadePbPb.C:70
 runGridCascadePbPb.C:71
 runGridCascadePbPb.C:72
 runGridCascadePbPb.C:73
 runGridCascadePbPb.C:74
 runGridCascadePbPb.C:75
 runGridCascadePbPb.C:76
 runGridCascadePbPb.C:77
 runGridCascadePbPb.C:78
 runGridCascadePbPb.C:79
 runGridCascadePbPb.C:80
 runGridCascadePbPb.C:81
 runGridCascadePbPb.C:82
 runGridCascadePbPb.C:83
 runGridCascadePbPb.C:84
 runGridCascadePbPb.C:85
 runGridCascadePbPb.C:86
 runGridCascadePbPb.C:87
 runGridCascadePbPb.C:88
 runGridCascadePbPb.C:89
 runGridCascadePbPb.C:90
 runGridCascadePbPb.C:91
 runGridCascadePbPb.C:92
 runGridCascadePbPb.C:93
 runGridCascadePbPb.C:94
 runGridCascadePbPb.C:95
 runGridCascadePbPb.C:96
 runGridCascadePbPb.C:97
 runGridCascadePbPb.C:98
 runGridCascadePbPb.C:99
 runGridCascadePbPb.C:100
 runGridCascadePbPb.C:101
 runGridCascadePbPb.C:102
 runGridCascadePbPb.C:103
 runGridCascadePbPb.C:104
 runGridCascadePbPb.C:105
 runGridCascadePbPb.C:106
 runGridCascadePbPb.C:107
 runGridCascadePbPb.C:108
 runGridCascadePbPb.C:109
 runGridCascadePbPb.C:110
 runGridCascadePbPb.C:111
 runGridCascadePbPb.C:112
 runGridCascadePbPb.C:113
 runGridCascadePbPb.C:114
 runGridCascadePbPb.C:115
 runGridCascadePbPb.C:116
 runGridCascadePbPb.C:117
 runGridCascadePbPb.C:118
 runGridCascadePbPb.C:119
 runGridCascadePbPb.C:120
 runGridCascadePbPb.C:121
 runGridCascadePbPb.C:122
 runGridCascadePbPb.C:123
 runGridCascadePbPb.C:124
 runGridCascadePbPb.C:125
 runGridCascadePbPb.C:126
 runGridCascadePbPb.C:127
 runGridCascadePbPb.C:128
 runGridCascadePbPb.C:129
 runGridCascadePbPb.C:130
 runGridCascadePbPb.C:131
 runGridCascadePbPb.C:132
 runGridCascadePbPb.C:133
 runGridCascadePbPb.C:134
 runGridCascadePbPb.C:135
 runGridCascadePbPb.C:136
 runGridCascadePbPb.C:137
 runGridCascadePbPb.C:138
 runGridCascadePbPb.C:139
 runGridCascadePbPb.C:140
 runGridCascadePbPb.C:141
 runGridCascadePbPb.C:142
 runGridCascadePbPb.C:143
 runGridCascadePbPb.C:144
 runGridCascadePbPb.C:145
 runGridCascadePbPb.C:146
 runGridCascadePbPb.C:147
 runGridCascadePbPb.C:148
 runGridCascadePbPb.C:149
 runGridCascadePbPb.C:150
 runGridCascadePbPb.C:151
 runGridCascadePbPb.C:152
 runGridCascadePbPb.C:153
 runGridCascadePbPb.C:154
 runGridCascadePbPb.C:155
 runGridCascadePbPb.C:156
 runGridCascadePbPb.C:157
 runGridCascadePbPb.C:158
 runGridCascadePbPb.C:159
 runGridCascadePbPb.C:160
 runGridCascadePbPb.C:161
 runGridCascadePbPb.C:162
 runGridCascadePbPb.C:163
 runGridCascadePbPb.C:164
 runGridCascadePbPb.C:165
 runGridCascadePbPb.C:166
 runGridCascadePbPb.C:167
 runGridCascadePbPb.C:168
 runGridCascadePbPb.C:169
 runGridCascadePbPb.C:170
 runGridCascadePbPb.C:171
 runGridCascadePbPb.C:172
 runGridCascadePbPb.C:173
 runGridCascadePbPb.C:174
 runGridCascadePbPb.C:175
 runGridCascadePbPb.C:176
 runGridCascadePbPb.C:177
 runGridCascadePbPb.C:178
 runGridCascadePbPb.C:179
 runGridCascadePbPb.C:180
 runGridCascadePbPb.C:181
 runGridCascadePbPb.C:182
 runGridCascadePbPb.C:183
 runGridCascadePbPb.C:184
 runGridCascadePbPb.C:185
 runGridCascadePbPb.C:186
 runGridCascadePbPb.C:187
 runGridCascadePbPb.C:188
 runGridCascadePbPb.C:189
 runGridCascadePbPb.C:190
 runGridCascadePbPb.C:191
 runGridCascadePbPb.C:192
 runGridCascadePbPb.C:193
 runGridCascadePbPb.C:194
 runGridCascadePbPb.C:195
 runGridCascadePbPb.C:196
 runGridCascadePbPb.C:197
 runGridCascadePbPb.C:198
 runGridCascadePbPb.C:199
 runGridCascadePbPb.C:200
 runGridCascadePbPb.C:201
 runGridCascadePbPb.C:202
 runGridCascadePbPb.C:203
 runGridCascadePbPb.C:204
 runGridCascadePbPb.C:205
 runGridCascadePbPb.C:206
 runGridCascadePbPb.C:207
 runGridCascadePbPb.C:208
 runGridCascadePbPb.C:209
 runGridCascadePbPb.C:210
 runGridCascadePbPb.C:211
 runGridCascadePbPb.C:212
 runGridCascadePbPb.C:213
 runGridCascadePbPb.C:214
 runGridCascadePbPb.C:215
 runGridCascadePbPb.C:216
 runGridCascadePbPb.C:217
 runGridCascadePbPb.C:218
 runGridCascadePbPb.C:219
 runGridCascadePbPb.C:220
 runGridCascadePbPb.C:221
 runGridCascadePbPb.C:222
 runGridCascadePbPb.C:223
 runGridCascadePbPb.C:224
 runGridCascadePbPb.C:225
 runGridCascadePbPb.C:226
 runGridCascadePbPb.C:227
 runGridCascadePbPb.C:228
 runGridCascadePbPb.C:229
 runGridCascadePbPb.C:230
 runGridCascadePbPb.C:231
 runGridCascadePbPb.C:232
 runGridCascadePbPb.C:233
 runGridCascadePbPb.C:234
 runGridCascadePbPb.C:235
 runGridCascadePbPb.C:236
 runGridCascadePbPb.C:237