]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/runProtonAnalysis.C
~ has a meaning of logical negation in CTP terms
[u/mrichter/AliRoot.git] / PWG2 / runProtonAnalysis.C
CommitLineData
734d2c12 1void runProtonAnalysis() {
2 TStopwatch timer;
3 timer.Start();
4
5 //runLocal();
6 //runInteractive();
7 //runBatch();
df01f00b 8
96f84c25 9 runProof("ESD",200000,"/COMMON/COMMON/LHC08c11_10TeV_0.5T"); //use data sets
df01f00b 10 //runProof("ESD",200); //use ascii files
11
734d2c12 12 timer.Stop();
13 timer.Print();
14}
15
16//_________________________________________________//
17void runLocal() {
18 TStopwatch timer;
19 timer.Start();
20 gSystem->Load("libTree.so");
21 //____________________________________________________//
22 //_____________Setting up STEERBase.par_______________//
23 //____________________________________________________//
24 setupPar("STEERBase");
25 gSystem->Load("libSTEERBase.so");
26
27 //____________________________________________________//
28 //_____________Setting up ESD.par_____________________//
29 //____________________________________________________//
30 setupPar("ESD");
31 gSystem->Load("libVMC.so");
32 gSystem->Load("libESD.so");
33
34 //____________________________________________________//
35 //_____________Setting up AOD.par_____________________//
36 //____________________________________________________//
37 setupPar("AOD");
38 gSystem->Load("libAOD.so");
e4358d7f 39
734d2c12 40 //_________________________________________________________//
41 //_____________Setting up ANALYSIS.par_____________________//
42 //_________________________________________________________//
43 setupPar("ANALYSIS");
44 gSystem->Load("libANALYSIS.so");
45
e4358d7f 46 //_________________________________________________________//
47 //___________Setting up ANALYSISalice.par__________________//
48 //_________________________________________________________//
49 setupPar("ANALYSISalice");
50 gSystem->Load("libANALYSISalice.so");
51
251e4034 52 //__________________________________________________//
53 //___________Setting up CORRFW.par__________________//
54 //__________________________________________________//
96f84c25 55 setupPar->UploadPackage("CORRFW.par");
56 gSystem->EnablePackage("CORRFW");
251e4034 57
734d2c12 58 //____________________________________________________________//
59 //_____________Setting up PWG2spectra.par_____________________//
60 //____________________________________________________________//
61 setupPar("PWG2spectra");
62 gSystem->Load("libPWG2spectra.so");
63
64 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
65
66 //____________________________________________//
e4358d7f 67 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
68 tagAnalysis->ChainLocalTags("/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags");
734d2c12 69
70 AliRunTagCuts *runCuts = new AliRunTagCuts();
71 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
72 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
73 AliEventTagCuts *evCuts = new AliEventTagCuts();
74
75 TChain* chain = 0x0;
e4358d7f 76 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
734d2c12 77 chain->SetBranchStatus("*Calo*",0);
78
79 //____________________________________________//
80 // Make the analysis manager
81 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
82 AliVEventHandler* esdH = new AliESDInputHandler;
83 mgr->SetInputEventHandler(esdH);
84 //____________________________________________//
85 // 1st Proton task
e4358d7f 86 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
87 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
aafecd8b 88 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
89 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
90 TF1 *fitPions = (TF1 *)f->Get("fitPions");
91 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
92 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
e4358d7f 93 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
94 fitMuons,
95 fitPions,
96 fitKaons,
97 fitProtons);*/
98 mgr->AddTask(taskProtons);
99
100 // Create containers for input/output
101 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
251e4034 102 TChain::Class(),
103 AliAnalysisManager::kInputContainer);
e4358d7f 104 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
251e4034 105 TList::Class(),
106 AliAnalysisManager::kOutputCont
e4358d7f 107 "Protons.ESD.root");
734d2c12 108
734d2c12 109 //____________________________________________//
e4358d7f 110 mgr->ConnectInput(taskProtons,0,cinput1);
111 mgr->ConnectOutput(taskProtons,0,coutput1);
734d2c12 112 if (!mgr->InitAnalysis()) return;
113 mgr->PrintStatus();
114 mgr->StartAnalysis("local",chain);
115
116 timer.Stop();
117 timer.Print();
118}
119
120//_________________________________________________//
121void runInteractive() {
122 TStopwatch timer;
123 timer.Start();
124 gSystem->Load("libProofPlayer.so");
125
126 printf("*** Connect to AliEn ***\n");
127 TGrid::Connect("alien://");
128
129 //____________________________________________________//
130 //_____________Setting up STEERBase.par_______________//
131 //____________________________________________________//
132 setupPar("STEERBase");
133 gSystem->Load("libSTEERBase.so");
134
135 //____________________________________________________//
136 //_____________Setting up ESD.par_____________________//
137 //____________________________________________________//
138 setupPar("ESD");
139 gSystem->Load("libVMC.so");
140 gSystem->Load("libESD.so");
141
142 //____________________________________________________//
143 //_____________Setting up AOD.par_____________________//
144 //____________________________________________________//
145 setupPar("AOD");
146 gSystem->Load("libAOD.so");
147
148 //_________________________________________________________//
149 //_____________Setting up ANALYSIS.par_____________________//
150 //_________________________________________________________//
151 setupPar("ANALYSIS");
152 gSystem->Load("libANALYSIS.so");
153
e4358d7f 154 //_________________________________________________________//
155 //___________Setting up ANALYSISalice.par__________________//
156 //_________________________________________________________//
157 setupPar("ANALYSISalice");
158 gSystem->Load("libANALYSISalice.so");
159
251e4034 160 //__________________________________________________//
161 //___________Setting up CORRFW.par__________________//
162 //__________________________________________________//
96f84c25 163 setupPar->UploadPackage("CORRFW.par");
164 gSystem->EnablePackage("CORRFW");
251e4034 165
734d2c12 166 //____________________________________________________________//
167 //_____________Setting up PWG2spectra.par_____________________//
168 //____________________________________________________________//
169 setupPar("PWG2spectra");
170 gSystem->Load("libPWG2spectra.so");
171
172 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
173
174 //____________________________________________//
e4358d7f 175 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
734d2c12 176
177 AliRunTagCuts *runCuts = new AliRunTagCuts();
178 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
179 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
180 AliEventTagCuts *evCuts = new AliEventTagCuts();
181
182 //grid tags
183 TAlienCollection* coll = TAlienCollection::Open("tag.xml");
184 TGridResult* TagResult = coll->GetGridResult("",0,0);
e4358d7f 185 tagAnalysis->ChainGridTags(TagResult);
734d2c12 186 TChain* chain = 0x0;
e4358d7f 187 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
734d2c12 188 chain->SetBranchStatus("*Calo*",0);
189
190 //____________________________________________//
191 // Make the analysis manager
192 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
193 AliVEventHandler* esdH = new AliESDInputHandler;
194 mgr->SetInputEventHandler(esdH);
195 //____________________________________________//
196 // 1st Proton task
e4358d7f 197 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
198 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
aafecd8b 199 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
200 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
201 TF1 *fitPions = (TF1 *)f->Get("fitPions");
202 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
203 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
e4358d7f 204 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
205 fitMuons,
206 fitPions,
207 fitKaons,
208 fitProtons);*/
209 mgr->AddTask(taskProtons);
210
211 // Create containers for input/output
212 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
251e4034 213 TChain::Class(),
214 AliAnalysisManager::kInputContainer);
e4358d7f 215 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
251e4034 216 TList::Class(),
217 AliAnalysisManager::kOutputCont
e4358d7f 218 "Protons.ESD.root");
734d2c12 219
220 //____________________________________________//
e4358d7f 221 mgr->ConnectInput(taskProtons,0,cinput1);
222 mgr->ConnectOutput(taskProtons,0,coutput1);
734d2c12 223 if (!mgr->InitAnalysis()) return;
224 mgr->PrintStatus();
225 mgr->StartAnalysis("local",chain);
226
227 timer.Stop();
228 timer.Print();
229}
230
231//_________________________________________________//
232void runBatch() {
233 TStopwatch timer;
234 timer.Start();
235
236 printf("*** Connect to AliEn ***\n");
237 TGrid::Connect("alien://");
238 gSystem->Load("libProofPlayer.so");
239
240 //____________________________________________________//
241 //_____________Setting up STEERBase.par_______________//
242 //____________________________________________________//
243 setupPar("STEERBase");
244 gSystem->Load("libSTEERBase.so");
245
246 //____________________________________________________//
247 //_____________Setting up ESD.par_____________________//
248 //____________________________________________________//
249 setupPar("ESD");
250 gSystem->Load("libVMC.so");
251 gSystem->Load("libESD.so");
252
253 //____________________________________________________//
254 //_____________Setting up AOD.par_____________________//
255 //____________________________________________________//
256 setupPar("AOD");
257 gSystem->Load("libAOD.so");
258
259 //_________________________________________________________//
260 //_____________Setting up ANALYSIS.par_____________________//
261 //_________________________________________________________//
262 setupPar("ANALYSIS");
263 gSystem->Load("libANALYSIS.so");
264
e4358d7f 265 //_________________________________________________________//
266 //___________Setting up ANALYSISalice.par__________________//
267 //_________________________________________________________//
268 setupPar("ANALYSISalice");
269 gSystem->Load("libANALYSISalice.so");
270
96f84c25 271 //__________________________________________________//
272 //___________Setting up CORRFW.par__________________//
273 //__________________________________________________//
274 setupPar->UploadPackage("CORRFW.par");
275 gSystem->EnablePackage("CORRFW");
276
734d2c12 277 //____________________________________________________________//
278 //_____________Setting up PWG2spectra.par_____________________//
279 //____________________________________________________________//
280 setupPar("PWG2spectra");
281 gSystem->Load("libPWG2spectra.so");
282
283 //ANALYSIS PART
284 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
285 const char *collectionfile = "wn.xml";
286
287 //____________________________________________//
288 //Usage of event tags
e4358d7f 289 AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
734d2c12 290 TChain *chain = 0x0;
e4358d7f 291 chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
734d2c12 292 chain->SetBranchStatus("*Calo*",0);
293
294 //____________________________________________//
295 // Make the analysis manager
296 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
297 AliVEventHandler* esdH = new AliESDInputHandler;
298 mgr->SetInputEventHandler(esdH);
299 //____________________________________________//
300 // 1st Proton task
e4358d7f 301 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
302 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
aafecd8b 303 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
304 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
305 TF1 *fitPions = (TF1 *)f->Get("fitPions");
306 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
307 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
e4358d7f 308 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
309 fitMuons,
310 fitPions,
311 fitKaons,
312 fitProtons);*/
313 mgr->AddTask(taskProtons);
314
315 // Create containers for input/output
316 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
317 TChain::Class(),AliAnalysisManager::kInputContainer);
318 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
319 TList::Class(),AliAnalysisManager::kOutputCont
320 "Protons.ESD.root");
734d2c12 321
734d2c12 322 //____________________________________________//
e4358d7f 323 mgr->ConnectInput(taskProtons,0,cinput1);
324 mgr->ConnectOutput(taskProtons,0,coutput1);
734d2c12 325 if (!mgr->InitAnalysis()) return;
326 mgr->PrintStatus();
327 mgr->StartAnalysis("grid",chain);
328
329 timer.Stop();
330 timer.Print();
331}
332
333//_________________________________________________//
251e4034 334void runProof(const char* mode = "ESD",
335 Int_t stats = 0,
336 const char* dataset = 0x0) {
734d2c12 337 TStopwatch timer;
338 timer.Start();
df01f00b 339
340 TString smode = mode;
341 TString outputFilename = "Protons."; outputFilename += mode;
342 outputFilename += ".root";
343
734d2c12 344 printf("****** Connect to PROOF *******\n");
96f84c25 345 TProof::Open("alicecaf.cern.ch");
aafecd8b 346 gProof->SetParallel();
734d2c12 347
348 // Enable the Analysis Package
349 gProof->UploadPackage("STEERBase.par");
350 gProof->EnablePackage("STEERBase");
351 gProof->UploadPackage("ESD.par");
352 gProof->EnablePackage("ESD");
353 gProof->UploadPackage("AOD.par");
354 gProof->EnablePackage("AOD");
355 gProof->UploadPackage("ANALYSIS.par");
356 gProof->EnablePackage("ANALYSIS");
e4358d7f 357 gProof->UploadPackage("ANALYSISalice.par");
358 gProof->EnablePackage("ANALYSISalice");
251e4034 359 gProof->UploadPackage("CORRFW.par");
360 gProof->EnablePackage("CORRFW");
734d2c12 361 gProof->UploadPackage("PWG2spectra.par");
362 gProof->EnablePackage("PWG2spectra");
363
734d2c12 364 gProof->Load("AliAnalysisTaskProtons.cxx++");
365
e4358d7f 366 //____________________________________________//
734d2c12 367 // Make the analysis manager
368 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
369 AliVEventHandler* esdH = new AliESDInputHandler;
df01f00b 370 mgr->SetInputEventHandler(esdH);
371 if(smode == "MC") {
372 AliMCEventHandler *mc = new AliMCEventHandler();
373 mgr->SetMCtruthEventHandler(mc);
374 }
734d2c12 375 //____________________________________________//
376 // 1st Proton task
e4358d7f 377 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
df01f00b 378 taskProtons->SetType(mode);
e4358d7f 379 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
aafecd8b 380 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
381 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
382 TF1 *fitPions = (TF1 *)f->Get("fitPions");
383 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
384 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
e4358d7f 385 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
386 fitMuons,
387 fitPions,
388 fitKaons,
389 fitProtons);*/
390 mgr->AddTask(taskProtons);
734d2c12 391
392 // Create containers for input/output
e4358d7f 393 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
251e4034 394 TChain::Class(),
395 AliAnalysisManager::kInputContainer);
e4358d7f 396 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
251e4034 397 TList::Class(),
398 AliAnalysisManager::kOutputContainer,
df01f00b 399 outputFilename.Data());
400
734d2c12 401 //____________________________________________//
e4358d7f 402 mgr->ConnectInput(taskProtons,0,cinput1);
403 mgr->ConnectOutput(taskProtons,0,coutput1);
734d2c12 404 if (!mgr->InitAnalysis()) return;
405 mgr->PrintStatus();
e4358d7f 406
407 if(dataset)
408 mgr->StartAnalysis("proof",dataset,stats);
409 else {
410 // You should get this macro and the txt file from:
411 // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
412 gROOT->LoadMacro("CreateESDChain.C");
413 TChain* chain = 0x0;
414 chain = CreateESDChain("ESD82XX_30K.txt",stats);
415 chain->SetBranchStatus("*Calo*",0);
416
417 mgr->StartAnalysis("proof",chain);
418 }
734d2c12 419
420 timer.Stop();
421 timer.Print();
422}
423
424//_________________________________________________//
425Int_t setupPar(const char* pararchivename) {
426 ///////////////////
427 // Setup PAR File//
428 ///////////////////
429 if (pararchivename) {
430 char processline[1024];
431 sprintf(processline,".! tar xvzf %s.par",pararchivename);
432 gROOT->ProcessLine(processline);
433 const char* ocwd = gSystem->WorkingDirectory();
434 gSystem->ChangeDirectory(pararchivename);
435
436 // check for BUILD.sh and execute
437 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
438 printf("*******************************\n");
439 printf("*** Building PAR archive ***\n");
440 printf("*******************************\n");
441
442 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
443 Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
444 return -1;
445 }
446 }
447 // check for SETUP.C and execute
448 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
449 printf("*******************************\n");
450 printf("*** Setup PAR archive ***\n");
451 printf("*******************************\n");
452 gROOT->Macro("PROOF-INF/SETUP.C");
453 }
454
455 gSystem->ChangeDirectory("../");
456 }
457 return 1;
458}