]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/runProtonAnalysis.C
First V0 MC Analysis from H.Ricaud
[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();
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 PWG2spectra.par_____________________//
46   //____________________________________________________________//
47   setupPar("PWG2spectra");
48   gSystem->Load("libPWG2spectra.so");
49   
50   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
51
52   //____________________________________________//
53   AliTagAnalysis *TagAna = new AliTagAnalysis("ESD"); 
54   TagAna->ChainLocalTags("/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags");
55
56   AliRunTagCuts *runCuts = new AliRunTagCuts();
57   AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
58   AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
59   AliEventTagCuts *evCuts = new AliEventTagCuts();
60   
61   TChain* chain = 0x0;
62   chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
63   chain->SetBranchStatus("*Calo*",0);
64
65   //____________________________________________//
66   // Make the analysis manager
67   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
68   AliVEventHandler* esdH = new AliESDInputHandler;
69   mgr->SetInputEventHandler(esdH);  
70   //____________________________________________//
71   // 1st Proton task
72   AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
73   mgr->AddTask(task1);
74
75   // Create containers for input/output
76   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
77   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
78   
79   //____________________________________________//
80   mgr->ConnectInput(task1,0,cinput1);
81   mgr->ConnectOutput(task1,0,coutput1);
82   if (!mgr->InitAnalysis()) return;
83   mgr->PrintStatus();
84   mgr->StartAnalysis("local",chain);
85
86   timer.Stop();
87   timer.Print();
88 }
89
90 //_________________________________________________//
91 void runInteractive() {
92   TStopwatch timer;
93   timer.Start();
94   gSystem->Load("libProofPlayer.so");
95
96   printf("*** Connect to AliEn ***\n");
97   TGrid::Connect("alien://");
98  
99   //____________________________________________________//
100   //_____________Setting up STEERBase.par_______________//
101   //____________________________________________________//
102   setupPar("STEERBase");
103   gSystem->Load("libSTEERBase.so");
104
105   //____________________________________________________//
106   //_____________Setting up ESD.par_____________________//
107   //____________________________________________________//
108   setupPar("ESD");
109   gSystem->Load("libVMC.so");
110   gSystem->Load("libESD.so");
111
112   //____________________________________________________//
113   //_____________Setting up AOD.par_____________________//
114   //____________________________________________________//
115   setupPar("AOD");
116   gSystem->Load("libAOD.so");
117
118   //_________________________________________________________//
119   //_____________Setting up ANALYSIS.par_____________________//
120   //_________________________________________________________//
121   setupPar("ANALYSIS");
122   gSystem->Load("libANALYSIS.so");
123
124   //____________________________________________________________//
125   //_____________Setting up PWG2spectra.par_____________________//
126   //____________________________________________________________//
127   setupPar("PWG2spectra");
128   gSystem->Load("libPWG2spectra.so");
129   
130   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
131   
132   //____________________________________________//
133   AliTagAnalysis *TagAna = new AliTagAnalysis("ESD");
134  
135   AliRunTagCuts *runCuts = new AliRunTagCuts();
136   AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
137   AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
138   AliEventTagCuts *evCuts = new AliEventTagCuts();
139  
140   //grid tags
141   TAlienCollection* coll = TAlienCollection::Open("tag.xml");
142   TGridResult* TagResult = coll->GetGridResult("",0,0);
143   TagAna->ChainGridTags(TagResult);
144   TChain* chain = 0x0;
145   chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
146   chain->SetBranchStatus("*Calo*",0);
147
148   //____________________________________________//
149   // Make the analysis manager
150   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
151   AliVEventHandler* esdH = new AliESDInputHandler;
152   mgr->SetInputEventHandler(esdH);  
153   //____________________________________________//
154   // 1st Proton task
155   AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
156   mgr->AddTask(task1);
157
158   // Create containers for input/output
159   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
160   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
161   
162   //____________________________________________//
163   mgr->ConnectInput(task1,0,cinput1);
164   mgr->ConnectOutput(task1,0,coutput1);
165   if (!mgr->InitAnalysis()) return;
166   mgr->PrintStatus();
167   mgr->StartAnalysis("local",chain);
168
169   timer.Stop();
170   timer.Print();
171 }
172
173 //_________________________________________________//
174 void runBatch() {
175   TStopwatch timer;
176   timer.Start();
177
178   printf("*** Connect to AliEn ***\n");
179   TGrid::Connect("alien://");
180   gSystem->Load("libProofPlayer.so");
181
182   //____________________________________________________//
183   //_____________Setting up STEERBase.par_______________//
184   //____________________________________________________//
185   setupPar("STEERBase");
186   gSystem->Load("libSTEERBase.so");
187
188   //____________________________________________________//
189   //_____________Setting up ESD.par_____________________//
190   //____________________________________________________//
191   setupPar("ESD");
192   gSystem->Load("libVMC.so");
193   gSystem->Load("libESD.so");
194
195   //____________________________________________________//
196   //_____________Setting up AOD.par_____________________//
197   //____________________________________________________//
198   setupPar("AOD");
199   gSystem->Load("libAOD.so");
200
201   //_________________________________________________________//
202   //_____________Setting up ANALYSIS.par_____________________//
203   //_________________________________________________________//
204   setupPar("ANALYSIS");
205   gSystem->Load("libANALYSIS.so");
206
207   //____________________________________________________________//
208   //_____________Setting up PWG2spectra.par_____________________//
209   //____________________________________________________________//
210   setupPar("PWG2spectra");
211   gSystem->Load("libPWG2spectra.so");
212
213   //ANALYSIS PART
214   gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
215   const char *collectionfile = "wn.xml";
216
217   //____________________________________________//
218   //Usage of event tags
219   AliTagAnalysis *analysis = new AliTagAnalysis();
220   TChain *chain = 0x0;
221   chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
222   chain->SetBranchStatus("*Calo*",0);
223
224   //____________________________________________//
225   // Make the analysis manager
226   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
227   AliVEventHandler* esdH = new AliESDInputHandler;
228   mgr->SetInputEventHandler(esdH);  
229   //____________________________________________//
230   // 1st Proton task
231   AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
232   mgr->AddTask(task1);
233
234   // Create containers for input/output
235   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
236   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
237   
238   //____________________________________________//
239   mgr->ConnectInput(task1,0,cinput1);
240   mgr->ConnectOutput(task1,0,coutput1);
241   if (!mgr->InitAnalysis()) return;
242   mgr->PrintStatus();
243   mgr->StartAnalysis("grid",chain);
244
245   timer.Stop();
246   timer.Print();
247 }
248
249 //_________________________________________________//
250 void runProof() {
251   TStopwatch timer;
252   timer.Start();
253   printf("****** Connect to PROOF *******\n");
254   TProof::Open("proof://lxb6046.cern.ch"); 
255   gProof->SetParallel(1);
256
257   // Enable the Analysis Package
258   gProof->UploadPackage("STEERBase.par");
259   gProof->EnablePackage("STEERBase");
260   gProof->UploadPackage("ESD.par");
261   gProof->EnablePackage("ESD");
262   gProof->UploadPackage("AOD.par");
263   gProof->EnablePackage("AOD");
264   gProof->UploadPackage("ANALYSIS.par");
265   gProof->EnablePackage("ANALYSIS");
266   gProof->UploadPackage("PWG2spectra.par");
267   gProof->EnablePackage("PWG2spectra");
268   
269   // You should get this macro and the txt file from:
270   // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
271   gROOT->LoadMacro("CreateESDChain.C");
272   TChain* chain = 0x0;
273   chain = CreateESDChain("ESD82XX_30K.txt",10);
274   chain->SetBranchStatus("*Calo*",0);
275
276   gProof->Load("AliAnalysisTaskProtons.cxx++");
277
278     //____________________________________________//
279   // Make the analysis manager
280   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
281   AliVEventHandler* esdH = new AliESDInputHandler;
282   mgr->SetInputEventHandler(esdH);  
283   //____________________________________________//
284   // 1st Proton task
285   AliAnalysisTaskProtons *task1 = new AliAnalysisTaskProtons("TaskProtons");
286   mgr->AddTask(task1);
287
288   // Create containers for input/output
289   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
290   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("clist1", TList::Class(),AliAnalysisManager::kOutputContainer,"Protons.ESD.root");
291   
292   //____________________________________________//
293   mgr->ConnectInput(task1,0,cinput1);
294   mgr->ConnectOutput(task1,0,coutput1);
295   if (!mgr->InitAnalysis()) return;
296   mgr->PrintStatus();
297   mgr->StartAnalysis("proof",chain);
298
299   timer.Stop();
300   timer.Print();
301 }
302
303 //_________________________________________________//
304 Int_t setupPar(const char* pararchivename) {
305   ///////////////////
306   // Setup PAR File//
307   ///////////////////
308   if (pararchivename) {
309     char processline[1024];
310     sprintf(processline,".! tar xvzf %s.par",pararchivename);
311     gROOT->ProcessLine(processline);
312     const char* ocwd = gSystem->WorkingDirectory();
313     gSystem->ChangeDirectory(pararchivename);
314     
315     // check for BUILD.sh and execute
316     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
317       printf("*******************************\n");
318       printf("*** Building PAR archive    ***\n");
319       printf("*******************************\n");
320       
321       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
322         Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
323         return -1;
324       }
325     }
326     // check for SETUP.C and execute
327     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
328       printf("*******************************\n");
329       printf("*** Setup PAR archive       ***\n");
330       printf("*******************************\n");
331       gROOT->Macro("PROOF-INF/SETUP.C");
332     }
333     
334     gSystem->ChangeDirectory("../");
335   } 
336   return 1;
337 }