]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/runProtonAnalysis.C
Using AliMagWrapCheb
[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,"/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() {
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   //____________________________________________//
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   setupPar->UploadPackage("CORRFW.par");
164   gSystem->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 CORRFW.par__________________//
273   //__________________________________________________//
274   setupPar->UploadPackage("CORRFW.par");
275   gSystem->EnablePackage("CORRFW");
276
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
289   AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
290   TChain *chain = 0x0;
291   chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
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
301   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
302   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
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");
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");
321
322   //____________________________________________//
323   mgr->ConnectInput(taskProtons,0,cinput1);
324   mgr->ConnectOutput(taskProtons,0,coutput1);
325   if (!mgr->InitAnalysis()) return;
326   mgr->PrintStatus();
327   mgr->StartAnalysis("grid",chain);
328
329   timer.Stop();
330   timer.Print();
331 }
332
333 //_________________________________________________//
334 void runProof(const char* mode = "ESD", 
335               Int_t stats = 0, 
336               const char* dataset = 0x0) {
337   TStopwatch timer;
338   timer.Start();
339   
340   TString smode = mode;
341   TString outputFilename = "Protons."; outputFilename += mode;
342   outputFilename += ".root";
343
344   printf("****** Connect to PROOF *******\n");
345   TProof::Open("alicecaf.cern.ch"); 
346   gProof->SetParallel();
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");
357   gProof->UploadPackage("ANALYSISalice.par");
358   gProof->EnablePackage("ANALYSISalice");
359   gProof->UploadPackage("CORRFW.par");
360   gProof->EnablePackage("CORRFW");
361   gProof->UploadPackage("PWG2spectra.par");
362   gProof->EnablePackage("PWG2spectra");
363   
364   gProof->Load("AliAnalysisTaskProtons.cxx++");
365
366   //____________________________________________//
367   // Make the analysis manager
368   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
369   AliVEventHandler* esdH = new AliESDInputHandler;
370   mgr->SetInputEventHandler(esdH);
371   if(smode == "MC") {
372     AliMCEventHandler *mc = new AliMCEventHandler();
373     mgr->SetMCtruthEventHandler(mc);
374   }
375   //____________________________________________//
376   // 1st Proton task
377   AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
378   taskProtons->SetType(mode);
379   /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
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");
385   taskProtons->SetPriorProbabilityFunctions(fitElectrons,
386                                             fitMuons,
387                                             fitPions,
388                                             fitKaons,
389                                             fitProtons);*/
390   mgr->AddTask(taskProtons);
391
392   // Create containers for input/output
393   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
394                                                            TChain::Class(),
395                                                            AliAnalysisManager::kInputContainer);
396   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1", 
397                                                             TList::Class(),
398                                                             AliAnalysisManager::kOutputContainer,
399                                                             outputFilename.Data());
400
401   //____________________________________________//
402   mgr->ConnectInput(taskProtons,0,cinput1);
403   mgr->ConnectOutput(taskProtons,0,coutput1);
404   if (!mgr->InitAnalysis()) return;
405   mgr->PrintStatus();
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   }
419
420   timer.Stop();
421   timer.Print();
422 }
423
424 //_________________________________________________//
425 Int_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 }