]>
Commit | Line | Data |
---|---|---|
57e749bb | 1 | void 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 | 37 | void 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 | 171 | void 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 | 308 | void 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 | 437 | void 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 | //_________________________________________________// | |
576 | Int_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 | } |