]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/runProtonAnalysisQA.C
Adding the file that didn't want to be added - sorry
[u/mrichter/AliRoot.git] / PWG2 / runProtonAnalysisQA.C
1 void runProtonAnalysisQA() {
2   TStopwatch timer;
3   timer.Start();
4   
5   runProof(200000,"/COMMON/COMMON/LHC08c11_10TeV_0.5T"); //use data sets
6   //runInteractive("wn.xml");
7   
8   timer.Stop();
9   timer.Print();
10 }
11
12 //_________________________________________________//
13 void runInteractive(const char *collectionfile) {
14   TString outputFilename1 = "Protons.QA.root"; 
15   TString outputFilename2 = "Protons.MC.QA.root"; 
16   TString outputFilename3 = "Protons.QA.Histograms.root"; 
17   TString outputFilename4 = "Protons.Efficiency.root"; 
18
19   TGrid::Connect("alien://");
20
21   //Setup the par files
22   setupPar("STEERBase");
23   gSystem->Load("libSTEERBase.so");
24   setupPar("ESD");
25   gSystem->Load("libESD.so");
26   setupPar("AOD");
27   gSystem->Load("libAOD.so");
28   setupPar("ANALYSIS");
29   gSystem->Load("libANALYSIS.so");
30   setupPar("ANALYSISalice");
31   gSystem->Load("libANALYSISalice.so");
32   setupPar("CORRFW");
33   gSystem->Load("libCORRFW.so");
34   setupPar("PWG2spectra");
35   gSystem->Load("libPWG2spectra.so");
36
37   gROOT->LoadMacro("AliAnalysisTaskProtonsQA.cxx+");
38   //____________________________________________//
39   //Usage of event tags
40   AliTagAnalysis *analysis = new AliTagAnalysis();
41   TChain *chain = 0x0;
42   chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
43
44   //____________________________________________//
45   // Make the analysis manager
46   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
47   AliVEventHandler* esdH = new AliESDInputHandler;
48   mgr->SetInputEventHandler(esdH);
49   AliMCEventHandler *mc = new AliMCEventHandler();
50   mgr->SetMCtruthEventHandler(mc);
51   
52   //____________________________________________//
53   // 1st Proton task
54   AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
55   mgr->AddTask(taskProtonsQA);
56
57   // Create containers for input/output
58   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
59                                                            TChain::Class(),
60                                                            AliAnalysisManager::kInputContainer);
61   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
62                                                             TList::Class(),
63                                                             AliAnalysisManager::kOutputContainer,
64                                                             outputFilename1.Data());
65   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
66                                                             TList::Class(),
67                                                             AliAnalysisManager::kOutputContainer,
68                                                             outputFilename2.Data());
69   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
70                                                             TList::Class(),
71                                                             AliAnalysisManager::kOutputContainer,
72                                                             outputFilename2.Data());
73   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
74                                                             TList::Class(),
75                                                             AliAnalysisManager::kOutputContainer,
76                                                             outputFilename3.Data());
77   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("acceptedDCAList", 
78                                                             TList::Class(),
79                                                             AliAnalysisManager::kOutputContainer,
80                                                             outputFilename3.Data());
81   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("efficiencyList", 
82                                                             TList::Class(),
83                                                             AliAnalysisManager::kOutputContainer,
84                                                             outputFilename4.Data());
85
86   //____________________________________________//
87   mgr->ConnectInput(taskProtonsQA,0,cinput1);
88   mgr->ConnectOutput(taskProtonsQA,0,coutput1);
89   mgr->ConnectOutput(taskProtonsQA,1,coutput2);
90   mgr->ConnectOutput(taskProtonsQA,2,coutput3);
91   mgr->ConnectOutput(taskProtonsQA,3,coutput4);
92   mgr->ConnectOutput(taskProtonsQA,4,coutput5);
93   mgr->ConnectOutput(taskProtonsQA,5,coutput6);
94   if (!mgr->InitAnalysis()) return;
95   mgr->PrintStatus();
96   mgr->StartAnalysis("local",chain);
97 }
98  
99 //_________________________________________________//
100 void runProof(Int_t stats = 0, const char* dataset = 0x0) {
101   TString outputFilename1 = "Protons.QA.root"; 
102   TString outputFilename2 = "Protons.MC.QA.root"; 
103   TString outputFilename3 = "Protons.QA.Histograms.root"; 
104   TString outputFilename4 = "Protons.Efficiency.root"; 
105
106   printf("****** Connect to PROOF *******\n");
107   TProof::Open("alicecaf.cern.ch"); 
108   gProof->SetParallel();
109
110   // Enable the Analysis Package
111   gProof->UploadPackage("STEERBase.par");
112   gProof->EnablePackage("STEERBase");
113   gProof->UploadPackage("ESD.par");
114   gProof->EnablePackage("ESD");
115   gProof->UploadPackage("AOD.par");
116   gProof->EnablePackage("AOD");
117   gProof->UploadPackage("ANALYSIS.par");
118   gProof->EnablePackage("ANALYSIS");
119   gProof->UploadPackage("ANALYSISalice.par");
120   gProof->EnablePackage("ANALYSISalice");
121   gProof->UploadPackage("CORRFW.par");
122   gProof->EnablePackage("CORRFW");
123   gProof->UploadPackage("PWG2spectra.par");
124   gProof->EnablePackage("PWG2spectra");
125   
126   gProof->Load("AliAnalysisTaskProtonsQA.cxx++");
127
128   //____________________________________________//
129   // Make the analysis manager
130   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
131   AliVEventHandler* esdH = new AliESDInputHandler;
132   mgr->SetInputEventHandler(esdH);
133   AliMCEventHandler *mc = new AliMCEventHandler();
134   mgr->SetMCtruthEventHandler(mc);
135   
136   //____________________________________________//
137   // 1st Proton task
138   AliAnalysisTaskProtonsQA *taskProtonsQA = new AliAnalysisTaskProtonsQA("TaskProtonsQA");
139   mgr->AddTask(taskProtonsQA);
140
141   // Create containers for input/output
142   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
143                                                            TChain::Class(),
144                                                            AliAnalysisManager::kInputContainer);
145   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("globalQAList", 
146                                                             TList::Class(),
147                                                             AliAnalysisManager::kOutputContainer,
148                                                             outputFilename1.Data());
149   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("pdgCodeList", 
150                                                             TList::Class(),
151                                                             AliAnalysisManager::kOutputContainer,
152                                                             outputFilename2.Data());
153   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("mcProcessList", 
154                                                             TList::Class(),
155                                                             AliAnalysisManager::kOutputContainer,
156                                                             outputFilename2.Data());
157   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("acceptedCutList", 
158                                                             TList::Class(),
159                                                             AliAnalysisManager::kOutputContainer,
160                                                             outputFilename3.Data());
161   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("acceptedDCAList", 
162                                                             TList::Class(),
163                                                             AliAnalysisManager::kOutputContainer,
164                                                             outputFilename3.Data());
165   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("efficiencyList", 
166                                                             TList::Class(),
167                                                             AliAnalysisManager::kOutputContainer,
168                                                             outputFilename4.Data());
169
170   //____________________________________________//
171   mgr->ConnectInput(taskProtonsQA,0,cinput1);
172   mgr->ConnectOutput(taskProtonsQA,0,coutput1);
173   mgr->ConnectOutput(taskProtonsQA,1,coutput2);
174   mgr->ConnectOutput(taskProtonsQA,2,coutput3);
175   mgr->ConnectOutput(taskProtonsQA,3,coutput4);
176   mgr->ConnectOutput(taskProtonsQA,4,coutput5);
177   mgr->ConnectOutput(taskProtonsQA,5,coutput6);
178   if (!mgr->InitAnalysis()) return;
179   mgr->PrintStatus();
180
181   if(dataset)
182     mgr->StartAnalysis("proof",dataset,stats);
183   else {
184     // You should get this macro and the txt file from:
185     // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
186     gROOT->LoadMacro("CreateESDChain.C");
187     TChain* chain = 0x0;
188     chain = CreateESDChain("ESD82XX_30K.txt",stats);
189     chain->SetBranchStatus("*Calo*",0);
190
191     mgr->StartAnalysis("proof",chain);
192     //mgr->StartAnalysis("local",chain);
193   }
194 }
195
196 //_________________________________________________//
197 Int_t setupPar(const char* pararchivename) {
198   ///////////////////
199   // Setup PAR File//
200   ///////////////////
201   if (pararchivename) {
202     char processline[1024];
203     sprintf(processline,".! tar xvzf %s.par",pararchivename);
204     gROOT->ProcessLine(processline);
205     const char* ocwd = gSystem->WorkingDirectory();
206     gSystem->ChangeDirectory(pararchivename);
207     
208     // check for BUILD.sh and execute
209     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
210       printf("*******************************\n");
211       printf("*** Building PAR archive    ***\n");
212       printf("*******************************\n");
213       
214       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
215         Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
216         return -1;
217       }
218     }
219     // check for SETUP.C and execute
220     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
221       printf("*******************************\n");
222       printf("*** Setup PAR archive       ***\n");
223       printf("*******************************\n");
224       gROOT->Macro("PROOF-INF/SETUP.C");
225     }
226     
227     gSystem->ChangeDirectory("../");
228   } 
229   return 1;
230 }