]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/runProtonAnalysis.C
Few modifications in the QA part
[u/mrichter/AliRoot.git] / PWG2 / runProtonAnalysis.C
1 void runProtonAnalysis() {
2   TStopwatch timer;
3   timer.Start();
4   
5   //runLocal();
6   //runInteractive();
7   //runBatch();
8   
9   runProof("ESD",200000,"/PWG0/COMMON/run30000X_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() {
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   gProof->UploadPackage("CORRFW.par");
56   gProof->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   //____________________________________________//
85   // 1st Proton task
86   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
87   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
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");
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",
102                                                            TChain::Class(),
103                                                            AliAnalysisManager::kInputContainer);
104   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
105                                                             TList::Class(),
106                                                             AliAnalysisManager::kOutputCont
107                                                             "Protons.ESD.root");
108
109   //____________________________________________//
110   mgr->ConnectInput(taskProtons,0,cinput1);
111   mgr->ConnectOutput(taskProtons,0,coutput1);
112   if (!mgr->InitAnalysis()) return;
113   mgr->PrintStatus();
114   mgr->StartAnalysis("local",chain);
115
116   timer.Stop();
117   timer.Print();
118 }
119
120 //_________________________________________________//
121 void 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
154   //_________________________________________________________//
155   //___________Setting up ANALYSISalice.par__________________//
156   //_________________________________________________________//
157   setupPar("ANALYSISalice");
158   gSystem->Load("libANALYSISalice.so");
159
160   //__________________________________________________//
161   //___________Setting up CORRFW.par__________________//
162   //__________________________________________________//
163   gProof->UploadPackage("CORRFW.par");
164   gProof->EnablePackage("CORRFW");
165
166   //____________________________________________________________//
167   //_____________Setting up PWG2spectra.par_____________________//
168   //____________________________________________________________//
169   setupPar("PWG2spectra");
170   gSystem->Load("libPWG2spectra.so");
171   
172   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
173   
174   //____________________________________________//
175   AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
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);
185   tagAnalysis->ChainGridTags(TagResult);
186   TChain* chain = 0x0;
187   chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
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
197   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
198   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
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");
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",
213                                                            TChain::Class(),
214                                                            AliAnalysisManager::kInputContainer);
215   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
216                                                             TList::Class(),
217                                                             AliAnalysisManager::kOutputCont
218                                                             "Protons.ESD.root");
219   
220   //____________________________________________//
221   mgr->ConnectInput(taskProtons,0,cinput1);
222   mgr->ConnectOutput(taskProtons,0,coutput1);
223   if (!mgr->InitAnalysis()) return;
224   mgr->PrintStatus();
225   mgr->StartAnalysis("local",chain);
226
227   timer.Stop();
228   timer.Print();
229 }
230
231 //_________________________________________________//
232 void 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
265   //_________________________________________________________//
266   //___________Setting up ANALYSISalice.par__________________//
267   //_________________________________________________________//
268   setupPar("ANALYSISalice");
269   gSystem->Load("libANALYSISalice.so");
270
271   //____________________________________________________________//
272   //_____________Setting up PWG2spectra.par_____________________//
273   //____________________________________________________________//
274   setupPar("PWG2spectra");
275   gSystem->Load("libPWG2spectra.so");
276
277   //ANALYSIS PART
278   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
279   const char *collectionfile = "wn.xml";
280
281   //____________________________________________//
282   //Usage of event tags
283   AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
284   TChain *chain = 0x0;
285   chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
286   chain->SetBranchStatus("*Calo*",0);
287
288   //____________________________________________//
289   // Make the analysis manager
290   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
291   AliVEventHandler* esdH = new AliESDInputHandler;
292   mgr->SetInputEventHandler(esdH);  
293   //____________________________________________//
294   // 1st Proton task
295   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
296   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
297   TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
298   TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
299   TF1 *fitPions = (TF1 *)f->Get("fitPions");
300   TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
301   TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
302   taskProtons->SetPriorProbabilityFunctions(fitElectrons,
303                                             fitMuons,
304                                             fitPions,
305                                             fitKaons,
306                                             fitProtons);*/
307   mgr->AddTask(taskProtons);
308
309   // Create containers for input/output                                                                               
310   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
311                                                            TChain::Class(),AliAnalysisManager::kInputContainer);
312   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
313                                                             TList::Class(),AliAnalysisManager::kOutputCont
314                                                             "Protons.ESD.root");
315
316   //____________________________________________//
317   mgr->ConnectInput(taskProtons,0,cinput1);
318   mgr->ConnectOutput(taskProtons,0,coutput1);
319   if (!mgr->InitAnalysis()) return;
320   mgr->PrintStatus();
321   mgr->StartAnalysis("grid",chain);
322
323   timer.Stop();
324   timer.Print();
325 }
326
327 //_________________________________________________//
328 void runProof(const char* mode = "ESD", 
329               Int_t stats = 0, 
330               const char* dataset = 0x0) {
331   TStopwatch timer;
332   timer.Start();
333   
334   TString smode = mode;
335   TString outputFilename = "Protons."; outputFilename += mode;
336   outputFilename += ".root";
337
338   printf("****** Connect to PROOF *******\n");
339   TProof::Open("proof://lxb6046.cern.ch"); 
340   gProof->SetParallel();
341
342   // Enable the Analysis Package
343   gProof->UploadPackage("STEERBase.par");
344   gProof->EnablePackage("STEERBase");
345   gProof->UploadPackage("ESD.par");
346   gProof->EnablePackage("ESD");
347   gProof->UploadPackage("AOD.par");
348   gProof->EnablePackage("AOD");
349   gProof->UploadPackage("ANALYSIS.par");
350   gProof->EnablePackage("ANALYSIS");
351   gProof->UploadPackage("ANALYSISalice.par");
352   gProof->EnablePackage("ANALYSISalice");
353   gProof->UploadPackage("CORRFW.par");
354   gProof->EnablePackage("CORRFW");
355   gProof->UploadPackage("PWG2spectra.par");
356   gProof->EnablePackage("PWG2spectra");
357   
358   gProof->Load("AliAnalysisTaskProtons.cxx++");
359
360   //____________________________________________//
361   // Make the analysis manager
362   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
363   AliVEventHandler* esdH = new AliESDInputHandler;
364   mgr->SetInputEventHandler(esdH);
365   if(smode == "MC") {
366     AliMCEventHandler *mc = new AliMCEventHandler();
367     mgr->SetMCtruthEventHandler(mc);
368   }
369   //____________________________________________//
370   // 1st Proton task
371   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
372   taskProtons->SetType(mode);
373   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
374   TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
375   TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
376   TF1 *fitPions = (TF1 *)f->Get("fitPions");
377   TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
378   TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
379   taskProtons->SetPriorProbabilityFunctions(fitElectrons,
380                                             fitMuons,
381                                             fitPions,
382                                             fitKaons,
383                                             fitProtons);*/
384   mgr->AddTask(taskProtons);
385
386   // Create containers for input/output
387   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
388                                                            TChain::Class(),
389                                                            AliAnalysisManager::kInputContainer);
390   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1", 
391                                                             TList::Class(),
392                                                             AliAnalysisManager::kOutputContainer,
393                                                             outputFilename.Data());
394
395   //____________________________________________//
396   mgr->ConnectInput(taskProtons,0,cinput1);
397   mgr->ConnectOutput(taskProtons,0,coutput1);
398   if (!mgr->InitAnalysis()) return;
399   mgr->PrintStatus();
400
401   if(dataset)
402     mgr->StartAnalysis("proof",dataset,stats);
403   else {
404     // You should get this macro and the txt file from:
405     // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
406     gROOT->LoadMacro("CreateESDChain.C");
407     TChain* chain = 0x0;
408     chain = CreateESDChain("ESD82XX_30K.txt",stats);
409     chain->SetBranchStatus("*Calo*",0);
410
411     mgr->StartAnalysis("proof",chain);
412   }
413
414   timer.Stop();
415   timer.Print();
416 }
417
418 //_________________________________________________//
419 Int_t setupPar(const char* pararchivename) {
420   ///////////////////
421   // Setup PAR File//
422   ///////////////////
423   if (pararchivename) {
424     char processline[1024];
425     sprintf(processline,".! tar xvzf %s.par",pararchivename);
426     gROOT->ProcessLine(processline);
427     const char* ocwd = gSystem->WorkingDirectory();
428     gSystem->ChangeDirectory(pararchivename);
429     
430     // check for BUILD.sh and execute
431     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
432       printf("*******************************\n");
433       printf("*** Building PAR archive    ***\n");
434       printf("*******************************\n");
435       
436       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
437         Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
438         return -1;
439       }
440     }
441     // check for SETUP.C and execute
442     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
443       printf("*******************************\n");
444       printf("*** Setup PAR archive       ***\n");
445       printf("*******************************\n");
446       gROOT->Macro("PROOF-INF/SETUP.C");
447     }
448     
449     gSystem->ChangeDirectory("../");
450   } 
451   return 1;
452 }