]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/AntiprotonToProton/runProtonAnalysisQA.C
.so cleanup: removed from gSystem->Load()
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / AntiprotonToProton / runProtonAnalysisQA.C
CommitLineData
57e749bb 1void runProtonAnalysisQA(const char* esdAnalysisType = "Hybrid",
efaf38cc 2 const char* pidMode = "Ratio",
71a67ee1 3 Bool_t kUseOnlineTrigger = kFALSE,
4 Bool_t kUseOfflineTrigger = kFALSE) {
9e2392b0 5 //Macro to run the proton QA analysis tested for local, proof & GRID.
e7df5638 6 //Local: Takes four arguments, the analysis mode, the type of the ESD
7 // analysis, the PID mode and the path where the tag and ESD or
8 // AOD files reside.
9 //Interactive: Takes four arguments, the analysis mode, the type of the ESD
10 // analysis, the PID mode and the name of the collection of tag
11 // files.
12 //Batch: Takes four arguments, the analysis mode, the type of the ESD
13 // analysis, the PID mode and the name of the collection file with
14 // the event list for each file.
15 //Proof: Takes five arguments, the analysis level, the analysis mode in
16 // case of ESD, the PID mode, the number of events and the dataset
17 // name and .
18 //Analysis mode can be: "MC", "ESD", "AOD"
19 //ESD analysis type can be one of the three: "TPC", "Hybrid", "Global"
87a55728 20 //PID mode can be one of the four: "Bayesian" (standard Bayesian approach)
e7df5638 21 // "Ratio" (ratio of measured over expected/theoretical dE/dx a la STAR)
87a55728 22 // "Sigma1" (N-sigma area around the fitted dE/dx vs P band)
23 // "Sigma2" (same as previous but taking into account the No of TPC points)
7b59a00b 24 TStopwatch timer;
25 timer.Start();
26
1fd2c71b 27 //runLocal("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"/home/pchrist/ALICE/Baryons/QA/Local");
71a67ee1 28 //runProof("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,100000,"/COMMON/COMMON/LHC10a12_run10482X#esdTree");
29 runProof("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,100000,0,"/COMMON/COMMON/LHC09d10_run10482X#esdTree");
30 //runInteractive("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"tag104825.xml");
1fd2c71b 31 //runBatch("ESD",esdAnalysisType,pidMode,kUseOnlineTrigger,kUseOfflineTrigger,"wn.xml");
75decd62 32
7b59a00b 33 timer.Stop();
34 timer.Print();
35}
36
75decd62 37//_________________________________________________//
e7df5638 38void runLocal(const char* mode = "ESD",
39 const char* analysisType = 0x0,
40 const char* pidMode = 0x0,
4de4661f 41 Bool_t kUseOnlineTrigger = kTRUE,
1fd2c71b 42 Bool_t kUseOfflineTrigger = kTRUE,
57e749bb 43 const char* path = 0x0) {
75decd62 44 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
724d7ba9 45 outputFilename1 += "."; outputFilename1 += pidMode;
75decd62 46 outputFilename1 += ".root"; //main QA file
47 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
724d7ba9 48 outputFilename2 += "."; outputFilename2 += pidMode;
75decd62 49 outputFilename2 += ".root"; //MC process QA
50 TString outputFilename3 = "Protons.QA.Histograms.";
51 outputFilename3 += analysisType;
d7fff4c6 52 outputFilename3 += "."; outputFilename3 += pidMode;
75decd62 53 outputFilename3 += ".root"; //Accepted cut distributions
54 TString outputFilename4 = "Protons.Efficiency.";
55 outputFilename4 += analysisType;
d7fff4c6 56 outputFilename4 += "."; outputFilename4 += pidMode;
75decd62 57 outputFilename4 += ".root"; //Reco and PID efficiency
58 TString outputFilename5 = "Vertex.QA.root"; //vertex QA
efaf38cc 59 TString eventStatsFilename = "eventStats.root";//event stats
75decd62 60
4070f709 61 gSystem->Load("libProofPlayer");
75decd62 62
63 //Setup the par files
64 setupPar("STEERBase");
4070f709 65 gSystem->Load("libSTEERBase");
75decd62 66 setupPar("ESD");
4070f709 67 gSystem->Load("libESD");
75decd62 68 setupPar("AOD");
4070f709 69 gSystem->Load("libAOD");
75decd62 70 setupPar("ANALYSIS");
4070f709 71 gSystem->Load("libANALYSIS");
75decd62 72 setupPar("ANALYSISalice");
4070f709 73 gSystem->Load("libANALYSISalice");
75decd62 74 setupPar("CORRFW");
4070f709 75 gSystem->Load("libCORRFW");
75decd62 76 setupPar("PWG2spectra");
4070f709 77 gSystem->Load("libPWG2spectra");
75decd62 78
e7df5638 79 //____________________________________________//
80 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
81 tagAnalysis->ChainLocalTags(path);
82
83 AliRunTagCuts *runCuts = new AliRunTagCuts();
84 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
85 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
86 AliEventTagCuts *evCuts = new AliEventTagCuts();
75decd62 87
e7df5638 88 TChain* chain = 0x0;
89 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
90 chain->SetBranchStatus("*Calo*",0);
91
92 //____________________________________________//
93 gROOT->LoadMacro("configProtonAnalysis.C");
94 AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
95 analysisType,
4de4661f 96 pidMode,
1fd2c71b 97 kUseOnlineTrigger,
98 kUseOfflineTrigger);
75decd62 99 //____________________________________________//
100 // Make the analysis manager
e7df5638 101 AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
75decd62 102 AliVEventHandler* esdH = new AliESDInputHandler;
103 mgr->SetInputEventHandler(esdH);
104 AliMCEventHandler *mc = new AliMCEventHandler();
105 mgr->SetMCtruthEventHandler(mc);
106
107 //____________________________________________//
108 // 1st Proton task
109 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
e7df5638 110 taskProtonsQA->SetAnalysisObject(analysis);
75decd62 111 mgr->AddTask(taskProtonsQA);
112
113 // Create containers for input/output
f62e9410 114 /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
75decd62 115 TChain::Class(),
f62e9410 116 AliAnalysisManager::kInputContainer);*/
117 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
75decd62 118 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
119 TList::Class(),
120 AliAnalysisManager::kOutputContainer,
121 outputFilename1.Data());
122 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
123 TList::Class(),
124 AliAnalysisManager::kOutputContainer,
125 outputFilename2.Data());
126 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
127 TList::Class(),
128 AliAnalysisManager::kOutputContainer,
129 outputFilename2.Data());
130 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
131 TList::Class(),
132 AliAnalysisManager::kOutputContainer,
133 outputFilename3.Data());
5661e210 134 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList",
75decd62 135 TList::Class(),
136 AliAnalysisManager::kOutputContainer,
137 outputFilename3.Data());
5661e210 138 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList",
139 TList::Class(),
140 AliAnalysisManager::kOutputContainer,
141 outputFilename3.Data());
142 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList",
75decd62 143 TList::Class(),
144 AliAnalysisManager::kOutputContainer,
145 outputFilename4.Data());
5661e210 146 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList",
75decd62 147 TList::Class(),
148 AliAnalysisManager::kOutputContainer,
149 outputFilename5.Data());
df201289 150 AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList",
151 TList::Class(),
152 AliAnalysisManager::kOutputContainer,
153 outputFilename4.Data());
efaf38cc 154 AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats",
155 TH1::Class(),
156 AliAnalysisManager::kOutputContainer,
157 eventStatsFilename.Data());
e7df5638 158
75decd62 159 //____________________________________________//
160 mgr->ConnectInput(taskProtonsQA,0,cinput1);
161 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
162 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
163 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
164 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
165 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
166 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
167 mgr->ConnectOutput(taskProtonsQA,6,coutput7);
5661e210 168 mgr->ConnectOutput(taskProtonsQA,7,coutput8);
df201289 169 mgr->ConnectOutput(taskProtonsQA,8,coutput9);
efaf38cc 170 mgr->ConnectOutput(taskProtonsQA,9,coutput10);
df201289 171
75decd62 172 if (!mgr->InitAnalysis()) return;
173 mgr->PrintStatus();
174 mgr->StartAnalysis("local",chain);
175}
176
1b309669 177//_________________________________________________//
e7df5638 178void runInteractive(const char* mode = "ESD",
179 const char* analysisType = 0x0,
180 const char* pidMode = 0x0,
4de4661f 181 Bool_t kUseOnlineTrigger = kTRUE,
1fd2c71b 182 Bool_t kUseOfflineTrigger = kTRUE,
e7df5638 183 const char* collectionName = "tag.xml") {
1b309669 184 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
724d7ba9 185 outputFilename1 += "."; outputFilename1 += pidMode;
1b309669 186 outputFilename1 += ".root"; //main QA file
187 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
724d7ba9 188 outputFilename2 += "."; outputFilename2 += pidMode;
1b309669 189 outputFilename2 += ".root"; //MC process QA
190 TString outputFilename3 = "Protons.QA.Histograms.";
191 outputFilename3 += analysisType;
724d7ba9 192 outputFilename3 += "."; outputFilename3 += pidMode;
1b309669 193 outputFilename3 += ".root"; //Accepted cut distributions
194 TString outputFilename4 = "Protons.Efficiency.";
195 outputFilename4 += analysisType;
724d7ba9 196 outputFilename4 += "."; outputFilename4 += pidMode;
1b309669 197 outputFilename4 += ".root"; //Reco and PID efficiency
75decd62 198 TString outputFilename5 = "Vertex.QA.root"; //vertex QA
efaf38cc 199 TString eventStatsFilename = "eventStats.root";//event stats
1b309669 200
201 TGrid::Connect("alien://");
1b309669 202
203 //Setup the par files
204 setupPar("STEERBase");
4070f709 205 gSystem->Load("libSTEERBase");
1b309669 206 setupPar("ESD");
4070f709 207 gSystem->Load("libESD");
1b309669 208 setupPar("AOD");
4070f709 209 gSystem->Load("libAOD");
1b309669 210 setupPar("ANALYSIS");
4070f709 211 gSystem->Load("libANALYSIS");
1b309669 212 setupPar("ANALYSISalice");
4070f709 213 gSystem->Load("libANALYSISalice");
1b309669 214 setupPar("CORRFW");
4070f709 215 gSystem->Load("libCORRFW");
1b309669 216 setupPar("PWG2spectra");
4070f709 217 gSystem->Load("libPWG2spectra");
1b309669 218
1b309669 219 //____________________________________________//
e7df5638 220 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
221
222 AliRunTagCuts *runCuts = new AliRunTagCuts();
223 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
224 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
225 AliEventTagCuts *evCuts = new AliEventTagCuts();
226
227 //grid tags
228 TAlienCollection* coll = TAlienCollection::Open(collectionName);
229 TGridResult* TagResult = coll->GetGridResult("",0,0);
230 tagAnalysis->ChainGridTags(TagResult);
231 TChain* chain = 0x0;
232 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
233 chain->SetBranchStatus("*Calo*",0);
234
235 //____________________________________________//
236 gROOT->LoadMacro("configProtonAnalysis.C");
237 AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
238 analysisType,
4de4661f 239 pidMode,
1fd2c71b 240 kUseOnlineTrigger,
241 kUseOfflineTrigger);
1b309669 242 //____________________________________________//
243 // Make the analysis manager
e7df5638 244 AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
1b309669 245 AliVEventHandler* esdH = new AliESDInputHandler;
246 mgr->SetInputEventHandler(esdH);
247 AliMCEventHandler *mc = new AliMCEventHandler();
248 mgr->SetMCtruthEventHandler(mc);
249
250 //____________________________________________//
251 // 1st Proton task
252 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
e7df5638 253 taskProtonsQA->SetAnalysisObject(analysis);
1b309669 254 mgr->AddTask(taskProtonsQA);
255
256 // Create containers for input/output
f62e9410 257 /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
23248c56 258 TChain::Class(),
f62e9410 259 AliAnalysisManager::kInputContainer);*/
260 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
1b309669 261 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
262 TList::Class(),
263 AliAnalysisManager::kOutputContainer,
264 outputFilename1.Data());
265 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
266 TList::Class(),
267 AliAnalysisManager::kOutputContainer,
268 outputFilename2.Data());
269 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
270 TList::Class(),
271 AliAnalysisManager::kOutputContainer,
272 outputFilename2.Data());
273 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
274 TList::Class(),
275 AliAnalysisManager::kOutputContainer,
276 outputFilename3.Data());
5661e210 277 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList",
278 TList::Class(),
279 AliAnalysisManager::kOutputContainer,
280 outputFilename3.Data());
281 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList",
1b309669 282 TList::Class(),
283 AliAnalysisManager::kOutputContainer,
284 outputFilename3.Data());
5661e210 285 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList",
1b309669 286 TList::Class(),
287 AliAnalysisManager::kOutputContainer,
288 outputFilename4.Data());
5661e210 289 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList",
75decd62 290 TList::Class(),
291 AliAnalysisManager::kOutputContainer,
292 outputFilename5.Data());
df201289 293 AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList",
294 TList::Class(),
295 AliAnalysisManager::kOutputContainer,
296 outputFilename4.Data());
efaf38cc 297 AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats",
298 TH1::Class(),
299 AliAnalysisManager::kOutputContainer,
300 eventStatsFilename.Data());
1b309669 301
302 //____________________________________________//
303 mgr->ConnectInput(taskProtonsQA,0,cinput1);
304 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
305 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
306 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
307 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
308 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
309 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
75decd62 310 mgr->ConnectOutput(taskProtonsQA,6,coutput7);
5661e210 311 mgr->ConnectOutput(taskProtonsQA,7,coutput8);
df201289 312 mgr->ConnectOutput(taskProtonsQA,8,coutput9);
efaf38cc 313 mgr->ConnectOutput(taskProtonsQA,9,coutput10);
df201289 314
1b309669 315 if (!mgr->InitAnalysis()) return;
316 mgr->PrintStatus();
317 mgr->StartAnalysis("local",chain);
318}
319
7b59a00b 320//_________________________________________________//
e7df5638 321void runBatch(const char* mode = "ESD",
322 const char* analysisType = 0x0,
323 const char* pidMode = 0x0,
4de4661f 324 Bool_t kUseOnlineTrigger = kTRUE,
1fd2c71b 325 Bool_t kUseOfflineTrigger = kTRUE,
e7df5638 326 const char *collectionfile = "wn.xml") {
9e2392b0 327 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
724d7ba9 328 outputFilename1 += "."; outputFilename1 += pidMode;
9e2392b0 329 outputFilename1 += ".root"; //main QA file
330 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
724d7ba9 331 outputFilename2 += "."; outputFilename2 += pidMode;
9e2392b0 332 outputFilename2 += ".root"; //MC process QA
333 TString outputFilename3 = "Protons.QA.Histograms.";
334 outputFilename3 += analysisType;
724d7ba9 335 outputFilename3 += "."; outputFilename3 += pidMode;
9e2392b0 336 outputFilename3 += ".root"; //Accepted cut distributions
337 TString outputFilename4 = "Protons.Efficiency.";
338 outputFilename4 += analysisType;
724d7ba9 339 outputFilename4 += "."; outputFilename4 += pidMode;
9e2392b0 340 outputFilename4 += ".root"; //Reco and PID efficiency
75decd62 341 TString outputFilename5 = "Vertex.QA.root"; //vertex QA
efaf38cc 342 TString eventStatsFilename = "eventStats.root";//event stats
e2f97a75 343
344 TGrid::Connect("alien://");
4070f709 345 gSystem->Load("libProofPlayer");
e2f97a75 346
347 //Setup the par files
348 setupPar("STEERBase");
4070f709 349 gSystem->Load("libSTEERBase");
e2f97a75 350 setupPar("ESD");
4070f709 351 gSystem->Load("libESD");
e2f97a75 352 setupPar("AOD");
4070f709 353 gSystem->Load("libAOD");
e2f97a75 354 setupPar("ANALYSIS");
4070f709 355 gSystem->Load("libANALYSIS");
e2f97a75 356 setupPar("ANALYSISalice");
4070f709 357 gSystem->Load("libANALYSISalice");
e2f97a75 358 setupPar("CORRFW");
4070f709 359 gSystem->Load("libCORRFW");
e2f97a75 360 setupPar("PWG2spectra");
4070f709 361 gSystem->Load("libPWG2spectra");
e2f97a75 362
e2f97a75 363 //____________________________________________//
364 //Usage of event tags
e7df5638 365 AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
e2f97a75 366 TChain *chain = 0x0;
e7df5638 367 chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
368 chain->SetBranchStatus("*Calo*",0);
369
370 //____________________________________________//
371 gROOT->LoadMacro("configProtonAnalysis.C");
372 AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
373 analysisType,
4de4661f 374 pidMode,
1fd2c71b 375 kUseOnlineTrigger,
376 kUseOfflineTrigger);
e2f97a75 377 //____________________________________________//
378 // Make the analysis manager
e7df5638 379 AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
e2f97a75 380 AliVEventHandler* esdH = new AliESDInputHandler;
381 mgr->SetInputEventHandler(esdH);
382 AliMCEventHandler *mc = new AliMCEventHandler();
383 mgr->SetMCtruthEventHandler(mc);
7b59a00b 384
e2f97a75 385 //____________________________________________//
386 // 1st Proton task
387 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
e7df5638 388 taskProtonsQA->SetAnalysisObject(analysis);
e2f97a75 389 mgr->AddTask(taskProtonsQA);
390
391 // Create containers for input/output
f62e9410 392 /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
e7df5638 393 TChain::Class(),
f62e9410 394 AliAnalysisManager::kInputContainer);*/
395 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
e2f97a75 396 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
397 TList::Class(),
398 AliAnalysisManager::kOutputContainer,
399 outputFilename1.Data());
400 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
401 TList::Class(),
402 AliAnalysisManager::kOutputContainer,
403 outputFilename2.Data());
404 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
405 TList::Class(),
406 AliAnalysisManager::kOutputContainer,
407 outputFilename2.Data());
408 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
409 TList::Class(),
410 AliAnalysisManager::kOutputContainer,
411 outputFilename3.Data());
5661e210 412 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList",
e2f97a75 413 TList::Class(),
414 AliAnalysisManager::kOutputContainer,
415 outputFilename3.Data());
5661e210 416 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList",
417 TList::Class(),
418 AliAnalysisManager::kOutputContainer,
419 outputFilename3.Data());
420 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList",
e2f97a75 421 TList::Class(),
422 AliAnalysisManager::kOutputContainer,
423 outputFilename4.Data());
5661e210 424 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList",
75decd62 425 TList::Class(),
426 AliAnalysisManager::kOutputContainer,
427 outputFilename5.Data());
df201289 428 AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList",
429 TList::Class(),
430 AliAnalysisManager::kOutputContainer,
431 outputFilename4.Data());
efaf38cc 432 AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats",
433 TH1::Class(),
434 AliAnalysisManager::kOutputContainer,
435 eventStatsFilename.Data());
e2f97a75 436
437 //____________________________________________//
438 mgr->ConnectInput(taskProtonsQA,0,cinput1);
439 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
440 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
441 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
442 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
443 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
444 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
75decd62 445 mgr->ConnectOutput(taskProtonsQA,6,coutput7);
5661e210 446 mgr->ConnectOutput(taskProtonsQA,7,coutput8);
df201289 447 mgr->ConnectOutput(taskProtonsQA,8,coutput9);
efaf38cc 448 mgr->ConnectOutput(taskProtonsQA,9,coutput10);
df201289 449
e2f97a75 450 if (!mgr->InitAnalysis()) return;
451 mgr->PrintStatus();
452 mgr->StartAnalysis("local",chain);
453}
454
455//_________________________________________________//
e7df5638 456void runProof(const char* mode = "ESD",
457 const char* analysisType = 0x0,
458 const char* pidMode = 0x0,
4de4661f 459 Bool_t kUseOnlineTrigger = kTRUE,
1fd2c71b 460 Bool_t kUseOfflineTrigger = kTRUE,
71a67ee1 461 Int_t stats = 0, Int_t startingPoint = 0,
e7df5638 462 const char* dataset = 0x0) {
9e2392b0 463 TString outputFilename1 = "Protons.QA."; outputFilename1 += analysisType;
724d7ba9 464 outputFilename1 += "."; outputFilename1 += pidMode;
9e2392b0 465 outputFilename1 += ".root"; //main QA file
466 TString outputFilename2 = "Protons.MC.QA."; outputFilename2 += analysisType;
724d7ba9 467 outputFilename2 += "."; outputFilename2 += pidMode;
9e2392b0 468 outputFilename2 += ".root"; //MC process QA
469 TString outputFilename3 = "Protons.QA.Histograms.";
470 outputFilename3 += analysisType;
724d7ba9 471 outputFilename3 += "."; outputFilename3 += pidMode;
9e2392b0 472 outputFilename3 += ".root"; //Accepted cut distributions
473 TString outputFilename4 = "Protons.Efficiency.";
474 outputFilename4 += analysisType;
724d7ba9 475 outputFilename4 += "."; outputFilename4 += pidMode;
9e2392b0 476 outputFilename4 += ".root"; //Reco and PID efficiency
efaf38cc 477 TString outputFilename5 = "Vertex.QA.root"; //vertex Q
478 TString eventStatsFilename = "eventStats.root";//event stats
7b59a00b 479
f62e9410 480 gEnv->SetValue("XSec.GSI.DelegProxy","2");
7b59a00b 481 printf("****** Connect to PROOF *******\n");
96f84c25 482 TProof::Open("alicecaf.cern.ch");
7b59a00b 483 gProof->SetParallel();
484
485 // Enable the Analysis Package
486 gProof->UploadPackage("STEERBase.par");
487 gProof->EnablePackage("STEERBase");
488 gProof->UploadPackage("ESD.par");
489 gProof->EnablePackage("ESD");
490 gProof->UploadPackage("AOD.par");
491 gProof->EnablePackage("AOD");
492 gProof->UploadPackage("ANALYSIS.par");
493 gProof->EnablePackage("ANALYSIS");
494 gProof->UploadPackage("ANALYSISalice.par");
495 gProof->EnablePackage("ANALYSISalice");
f99662ca 496 gProof->UploadPackage("CORRFW.par");
497 gProof->EnablePackage("CORRFW");
7b59a00b 498 gProof->UploadPackage("PWG2spectra.par");
499 gProof->EnablePackage("PWG2spectra");
500
e7df5638 501 //____________________________________________//
23248c56 502 //gProof->Load("configProtonAnalysis.C");
e7df5638 503 gROOT->LoadMacro("configProtonAnalysis.C");
504 AliProtonQAAnalysis *analysis = GetProtonQAAnalysisObject(mode,
505 analysisType,
4de4661f 506 pidMode,
1fd2c71b 507 kUseOnlineTrigger,
508 kUseOfflineTrigger);
7b59a00b 509 //____________________________________________//
510 // Make the analysis manager
e7df5638 511 AliAnalysisManager *mgr = new AliAnalysisManager("protonAnalysisQAManager");
7b59a00b 512 AliVEventHandler* esdH = new AliESDInputHandler;
513 mgr->SetInputEventHandler(esdH);
514 AliMCEventHandler *mc = new AliMCEventHandler();
515 mgr->SetMCtruthEventHandler(mc);
516
517 //____________________________________________//
518 // 1st Proton task
519 AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
e7df5638 520 taskProtonsQA->SetAnalysisObject(analysis);
7b59a00b 521 mgr->AddTask(taskProtonsQA);
522
523 // Create containers for input/output
f62e9410 524 /*AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
23248c56 525 TChain::Class(),
f62e9410 526 AliAnalysisManager::kInputContainer);*/
527 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
5b8133c7 528 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList",
f99662ca 529 TList::Class(),
530 AliAnalysisManager::kOutputContainer,
d4733690 531 outputFilename1.Data());
5b8133c7 532 AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList",
d4733690 533 TList::Class(),
534 AliAnalysisManager::kOutputContainer,
535 outputFilename2.Data());
5b8133c7 536 AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList",
d4733690 537 TList::Class(),
538 AliAnalysisManager::kOutputContainer,
0008a5a6 539 outputFilename2.Data());
5b8133c7 540 AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList",
541 TList::Class(),
542 AliAnalysisManager::kOutputContainer,
543 outputFilename3.Data());
5661e210 544 AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("rejectedCutList",
545 TList::Class(),
546 AliAnalysisManager::kOutputContainer,
547 outputFilename3.Data());
548 AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("acceptedDCAList",
5b8133c7 549 TList::Class(),
550 AliAnalysisManager::kOutputContainer,
551 outputFilename3.Data());
5661e210 552 AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("efficiencyList",
e2f97a75 553 TList::Class(),
554 AliAnalysisManager::kOutputContainer,
555 outputFilename4.Data());
5661e210 556 AliAnalysisDataContainer *coutput8 = mgr->CreateContainer("vertexList",
75decd62 557 TList::Class(),
558 AliAnalysisManager::kOutputContainer,
559 outputFilename5.Data());
df201289 560 AliAnalysisDataContainer *coutput9 = mgr->CreateContainer("cutEfficiencyList",
561 TList::Class(),
562 AliAnalysisManager::kOutputContainer,
563 outputFilename4.Data());
efaf38cc 564 AliAnalysisDataContainer *coutput10 = mgr->CreateContainer("fHistEventStats",
565 TH1::Class(),
566 AliAnalysisManager::kOutputContainer,
567 eventStatsFilename.Data());
7b59a00b 568
569 //____________________________________________//
570 mgr->ConnectInput(taskProtonsQA,0,cinput1);
571 mgr->ConnectOutput(taskProtonsQA,0,coutput1);
d4733690 572 mgr->ConnectOutput(taskProtonsQA,1,coutput2);
573 mgr->ConnectOutput(taskProtonsQA,2,coutput3);
5b8133c7 574 mgr->ConnectOutput(taskProtonsQA,3,coutput4);
575 mgr->ConnectOutput(taskProtonsQA,4,coutput5);
e2f97a75 576 mgr->ConnectOutput(taskProtonsQA,5,coutput6);
75decd62 577 mgr->ConnectOutput(taskProtonsQA,6,coutput7);
5661e210 578 mgr->ConnectOutput(taskProtonsQA,7,coutput8);
df201289 579 mgr->ConnectOutput(taskProtonsQA,8,coutput9);
efaf38cc 580 mgr->ConnectOutput(taskProtonsQA,9,coutput10);
df201289 581
7b59a00b 582 if (!mgr->InitAnalysis()) return;
583 mgr->PrintStatus();
584
585 if(dataset)
71a67ee1 586 mgr->StartAnalysis("proof",dataset,stats,startingPoint);
7b59a00b 587 else {
588 // You should get this macro and the txt file from:
589 // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
590 gROOT->LoadMacro("CreateESDChain.C");
591 TChain* chain = 0x0;
592 chain = CreateESDChain("ESD82XX_30K.txt",stats);
593 chain->SetBranchStatus("*Calo*",0);
594
595 mgr->StartAnalysis("proof",chain);
f99662ca 596 //mgr->StartAnalysis("local",chain);
7b59a00b 597 }
7b59a00b 598}
599
600//_________________________________________________//
601Int_t setupPar(const char* pararchivename) {
602 ///////////////////
603 // Setup PAR File//
604 ///////////////////
605 if (pararchivename) {
606 char processline[1024];
607 sprintf(processline,".! tar xvzf %s.par",pararchivename);
1b309669 608 gROOT->ProcessLine(processline);
7b59a00b 609 const char* ocwd = gSystem->WorkingDirectory();
610 gSystem->ChangeDirectory(pararchivename);
611
612 // check for BUILD.sh and execute
613 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
614 printf("*******************************\n");
615 printf("*** Building PAR archive ***\n");
616 printf("*******************************\n");
617
618 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
619 Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
620 return -1;
621 }
622 }
623 // check for SETUP.C and execute
624 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
625 printf("*******************************\n");
626 printf("*** Setup PAR archive ***\n");
627 printf("*******************************\n");
628 gROOT->Macro("PROOF-INF/SETUP.C");
629 }
630
631 gSystem->ChangeDirectory("../");
632 }
633 return 1;
634}