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