1 // **** to run the macro: ***********
2 // alien-token-init username
3 // source /tmp/gclient_env_IDuser
8 void runGridCascadePbPb ( Bool_t useMC = kTRUE, // kTRUE if analysing a MC sample
9 Bool_t runperformancetask = kTRUE,
10 Float_t centrlowlim = 0.,
11 Float_t centruplim = 80.,
12 TString centrest = "V0M",
13 Short_t lCollidingSystems = 1, //0 = pp, 1 = AA
15 Bool_t usecfcontainers = kTRUE,
16 Bool_t kextrasel = kFALSE,
17 Bool_t acccut = kTRUE,
18 const char *plugin_mode="test") {
20 // Load common libraries
21 gSystem->Load("libCore.so");
22 gSystem->Load("libTree.so");
23 gSystem->Load("libGeom.so");
24 gSystem->Load("libVMC.so");
25 gSystem->Load("libPhysics.so");
26 gSystem->Load("libMinuit.so");
27 gSystem->Load("libGui.so");
28 gSystem->Load("libXMLParser.so");
29 gSystem->Load("libSTEERBase.so");
30 gSystem->Load("libESD.so");
31 gSystem->Load("libCDB.so");
32 gSystem->Load("libAOD");
33 gSystem->Load("libANALYSIS");
34 gSystem->Load("libANALYSISalice");
35 gSystem->Load("libCORRFW");
36 gSystem->Load("libProof.so");
37 gSystem->Load("libRAWDatabase.so");
38 gSystem->Load("libSTEER.so");
40 //__________________________________________________________________________
41 // Use AliRoot includes to compile our task
42 gROOT->ProcessLine(".include $ALICE_ROOT/include");
44 //__________________________________________________________________________
45 // Create and configure the alien handler plugin
46 // gROOT->LoadMacro("CreateAlienHandler.C");
47 AliAnalysisGrid *alienHandler = CreateAlienHandler(plugin_mode, runperformancetask, useMC);
48 if (!alienHandler) return;
50 //__________________________________________________________________________
51 // Create the analysis manager
52 AliAnalysisManager *mgr = new AliAnalysisManager("CascadePbPbanalysis");
54 //__________________________________________________________________________
55 // Connect plug-in to the analysis manager
56 mgr->SetGridHandler(alienHandler);
58 //__________________________________________________________________________
61 if (runperformancetask) {
62 gROOT->LoadMacro("AliAnalysisTaskCheckPerformanceCascadePbPb.cxx++g");
63 AliAnalysisTaskCheckPerformanceCascadePbPb *task = new AliAnalysisTaskCheckPerformanceCascadePbPb("TaskPerformanceCascade");
64 task->SetDebugLevelCascade (0); // not used in the task
65 task->SetApplyAccCut (acccut);
66 task->SetUseCFCont (usecfcontainers);
67 task->SetAlephParamFor1PadTPCCluster (kTRUE); // to set aleph param - ask which ones have to be used
69 gROOT->LoadMacro("AliAnalysisTaskCheckCascadePbPb.cxx++g");
70 AliAnalysisTaskCheckCascadePbPb *task = new AliAnalysisTaskCheckCascadePbPb("TaskCascade");
71 task->SetUseCFContCascadeCuts (usecfcontainers);
75 task->SetCollidingSystems (lCollidingSystems); // only for multiplicity binning
76 task->SetAnalysisType ("ESD");
77 task->SetRelaunchV0CascVertexers (0); // used but code is commented out
78 task->SetQualityCutZprimVtxPos (kTRUE); // selects vertices in +-10cm
79 task->SetQualityCutNoTPConlyPrimVtx (kTRUE); // retains only events with tracking + SPD vertex
80 task->SetQualityCutTPCrefit (kTRUE); // requires TPC refit flag to be true to select a track
81 task->SetQualityCut80TPCcls (kTRUE); // rejects tracks that have less than 80 clusters in the TPC
82 task->SetExtraSelections (kextrasel); // used to add other selection cuts
83 task->SetCentralityLowLim (centrlowlim); // setting centrality selection vriables
84 task->SetCentralityUpLim (centruplim);
85 task->SetCentralityEst (centrest);
86 task->SetVertexRange (vtxlim);
91 AliESDInputHandler* esdH = new AliESDInputHandler();
92 mgr->SetInputEventHandler(esdH);
93 if (runperformancetask) {
94 AliMCEventHandler* mcHandler = new AliMCEventHandler();
95 mgr->SetMCtruthEventHandler(mcHandler);
99 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
100 AliPhysicsSelectionTask *physSel = AddTaskPhysicsSelection(useMC);
101 task->SelectCollisionCandidates();
102 // Centrality selection
103 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
104 AliCentralitySelectionTask *taskCentr = AddTaskCentrality();
105 if (useMC) taskCentr->SetMCInput();
107 //Create containers for input/output
108 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
109 if (runperformancetask) AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, "CascadePerformance.root");
110 else AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist", TList::Class(), AliAnalysisManager::kOutputContainer, "Cascades.root");
111 //__________________________________________________________________________
112 // Connect input/output
113 mgr->ConnectInput(task, 0, cinput);
114 mgr->ConnectOutput(task, 1, coutput1);
116 //__________________________________________________________________________
117 // Disbale debug printouts
118 mgr->SetDebugLevel(3);
119 AliLog::SetGlobalLogLevel(AliLog::kFatal);
120 AliLog::SetGlobalDebugLevel(0);
122 //__________________________________________________________________________
123 if (!mgr->InitAnalysis()) return;
125 // Start analysis in grid.
126 mgr->StartAnalysis("grid");
129 //__________________________________________________________________________
131 AliAnalysisGrid* CreateAlienHandler(const char *plugin_mode, Bool_t runperformancetask, Bool_t useMC) {
132 //__________________________________________________________________________
133 // Check if user has a valid token, otherwise make one. This has limitations.
134 // One can always follow the standard procedure of calling alien-token-init then
135 // source /tmp/gclient_env_$UID in the current shell.
136 AliAnalysisAlien *plugin= new AliAnalysisAlien();
138 //__________________________________________________________________________
139 // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
140 plugin->SetRunMode(plugin_mode);
142 plugin->SetNtestFiles(1);
143 //__________________________________________________________________________
144 // Set versions of used packages
145 plugin->SetAPIVersion("V1.1x");
147 //__________________________________________________________________________
149 plugin->SetROOTVersion("v5-27-06d");
150 plugin->SetAliROOTVersion("v4-21-16-AN");
152 //__________________________________________________________________________
153 // Declare input data to be processed.
154 // Method 1: Create automatically XML collections using alien 'find' command.
156 plugin->SetGridDataDir("/alice/sim/LHC11a7"); // Define production directory
157 // Set data search pattern
158 plugin->SetDataPattern("*ESDs.root");
159 plugin->SetRunRange(137161,138225);
161 plugin->SetGridDataDir("/alice/data/2010/LHC10h"); // Define production directory LFN
162 plugin->SetDataPattern("ESDs/pass2_rev15/*/*ESDs.root"); // Set data search pattern
163 // plugin->SetRunRange(80000,80000); // ...then add run numbers to be considered
164 plugin->SetRunPrefix("000");
165 // plugin->AddRunNumber(137366);
166 plugin->AddRunNumber(138200);
167 // plugin->AddRunNumber(139172);
169 // Method 2: Use your input collection
171 //plugin->AddDataFile("/alice/cern.ch/user/d/dcolella/wn.xml");
173 //__________________________________________________________________________
174 // Define alien work directory where all files will be copied. Relative to alien $HOME.
175 if (runperformancetask) plugin->SetGridWorkingDir("workperf");
176 else plugin->SetGridWorkingDir("work");
177 // Declare alien output directory. Relative to working directory.
178 plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
180 if (runperformancetask) plugin->SetAnalysisSource("AliAnalysisTaskCheckPerformanceCascadePbPb.cxx");
181 else plugin->SetAnalysisSource("AliAnalysisTaskCheckCascadePbPb.cxx");
183 //__________________________________________________________________________
184 //Enable same others packages
185 //plugin->EnablePackage("PWG3dielectron.par");
187 //__________________________________________________________________________
188 // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
189 plugin->SetAnalysisMacro("testmacro.C");
190 //Add all extra files (task.cxx/.h)
191 if (runperformancetask) {
192 plugin->SetAdditionalLibs("AliAnalysisTaskCheckPerformanceCascadePbPb.h AliAnalysisTaskCheckPerformanceCascadePbPb.cxx");
193 // Optionally modify the executable name (default analysis.sh)
194 plugin->SetExecutable("CascadePerformancePbPb.sh");
197 plugin->SetAdditionalLibs("AliAnalysisTaskCheckCascadePbPb.h AliAnalysisTaskCheckCascadePbPb.cxx");
198 // Optionally modify the executable name (default analysis.sh)
199 plugin->SetExecutable("CascadePbPb.sh");
202 //__________________________________________________________________________
203 // Declare the output file names separated by blancs.
204 // (can be like: file.root or file.root@ALICE::Niham::File)
205 plugin->SetDefaultOutputs(kFALSE);
206 if (runperformancetask) plugin->SetOutputFiles("CascadePerformance.root");
207 else plugin->SetOutputFiles("Cascades.root");
209 // Optionally define the files to be archived.
210 plugin->SetOutputArchive("root_archive.zip:*.root log_archive.zip:stdout,stderr");
212 //__________________________________________________________________________
213 // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
214 plugin->SetSplitMaxInputFileNumber(100);
215 // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
216 plugin->SetMasterResubmitThreshold(90);
217 // Optionally set time to live (default 30000 sec)
218 plugin->SetTTL(30000);
219 // Optionally set input format (default xml-single)
220 plugin->SetInputFormat("xml-single");
221 // Optionally modify the name of the generated JDL (default analysis.jdl)
222 if (runperformancetask) plugin->SetJDLName("TaskCheckPerformanceCascadePbPb.jdl");
223 else plugin->SetJDLName("TaskCheckCascadePbPb.jdl");
225 // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
226 plugin->SetSplitMaxInputFileNumber(100);
228 // Optionally modify job price (default 1)
232 // comment out the next line when using the "terminate" option, unless
233 // you want separate merged files for each run
234 // plugin->SetMergeViaJDL(kTRUE); // run first in full mode, then in terminate
235 // plugin->SetOneStageMerging(kFALSE);
236 // plugin->SetMaxMergeStages(2);// to define the number of stages
237 // Optionally set number of runs per master
238 plugin->SetNrunsPerMaster(1);
240 plugin->SetOutputToRunNo();
241 // Optionally modify split mode (default 'se')
242 plugin->SetSplitMode("se");
243 plugin->SetUser("mnicassi");