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