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