]>
Commit | Line | Data |
---|---|---|
57e749bb | 1 | void 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 | 36 | void 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 | 168 | void 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 | 303 | void 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 | 430 | void 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 | //_________________________________________________// | |
567 | Int_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 | } |