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