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