Split: fix refs to AddTaskPhysicsSelection.C
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / runEfficiencyTaskCentralityTrain.C
CommitLineData
40b41983 1enum anaModes {mLocal,mLocalPAR,mPROOF,mGrid,mGridPAR};
2//mLocal: Analyze locally files in your computer using aliroot
3//mLocalPAR: Analyze locally files in your computer using root + PAR files
4//mPROOF: Analyze CAF files with PROOF
5//mGrid: Analyze files on Grid via AliEn plug-in and using precompiled FLOW libraries
6//mGridPAR: Analyze files on Grid via AliEn plug-in and using par files for FLOW package
7
8//Analysis modes
9const TString analysisMode = "TPC"; //"TPC", "Global"
10
11//Centrality stuff
12Int_t binfirst = 0; //where do we start numbering bins
13Int_t binlast = 8; //where do we stop numbering bins
14const Int_t numberOfCentralityBins = 9;
15Float_t centralityArray[numberOfCentralityBins+1] = {0.,5.,10.,20.,30.,40.,50.,60.,70.,80.}; // in centrality percentile
16Bool_t kUsePID = kTRUE;
17const TString centralityEstimator = "V0M";
18Double_t vertexZ = 10.;
19
20//output file
622c9e7f 21TString commonOutputFileName = "AnalysisResultsEfficiency_proof";
40b41983 22
622c9e7f 23//void runEfficiencyTaskCentralityTrain(Int_t mode = mPROOF,Int_t nRuns = 600000, Bool_t DATA = kFALSE,
24 //const Char_t* dataDir="/alice/sim/LHC11a10a_000138795_AOD048", Int_t offset=0) {
25 //const Char_t* dataDir="/alice/sim/LHC11a10b_plus_000139507", Int_t offset=0) {
40b41983 26//const Char_t* dataDir="/alice/data/LHC10h_000137161_p1_4plus#esdTree", Int_t offset=0) {
27void runEfficiencyTaskCentralityTrain(Int_t mode = mLocal, Bool_t DATA = kFALSE) {
28//void runEfficiencyTaskCentralityTrain(const char* runListFileName = "listOfRuns.txt",Int_t mode = mGrid, Bool_t DATA = kFALSE) {
29 // Time:
30 TStopwatch timer;
31 timer.Start();
32
33 // Load needed libraries:
34 LoadLibraries(mode);
35
36 // Create and configure the AliEn plug-in:
37 if(mode == mGrid || mode == mGridPAR) {
38 gROOT->LoadMacro("CreateAlienHandler.C");
39 AliAnalysisGrid *alienHandler = CreateAlienHandler(runListFileName);
40 if (!alienHandler) return;
41 gROOT->LoadMacro("AliAnalysisTaskEfficiencyBF.cxx++"); //gROOT->LoadMacro("AliAnalysisEfficiencyTaskCentralityTrain.cxx++");
42 }
43 // Chains:
44 if(mode==mLocal || mode == mLocalPAR) {
45 //gROOT->LoadMacro("AliAnalysisEfficiencyTaskCentralityTrain.cxx++");
46 gROOT->LoadMacro("AliAnalysisTaskEfficiencyBF.cxx++");
47 TChain* chain = new TChain("esdTree");
48 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set1/AliESDs.root");
49 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set2/AliESDs.root");
50 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set3/AliESDs.root");
51 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set4/AliESDs.root");
52 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set5/AliESDs.root");
53 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set6/AliESDs.root");
54 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set7/AliESDs.root");
55 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set8/AliESDs.root");
56 chain->Add("/project/alice/users/alisrm/AcceptanceFilter/MonteCarlo/Set9/AliESDs.root");
57 //chain->Add("/glusterfs/alice1/alice3/alisrm/AcceptanceFilter/MonteCarlo/Set10/AliESDs.root");
58 }
59 //Proof
60 if(mode == mPROOF) {
61 gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName("$ALICE_ROOT")));
62 gProof->Load("AliAnalysisTaskEfficiencyBF.cxx++");
63 }
64
65 // Create analysis manager:
66 AliAnalysisManager *mgr = new AliAnalysisManager("FluctuationsAnalysisManager");
67 // Connect plug-in to the analysis manager:
68 if(mode == mGrid || mode == mGridPAR) {
69 mgr->SetGridHandler(alienHandler);
70 }
71 // Event handlers:
72 AliVEventHandler* esdH = new AliESDInputHandler;
73 mgr->SetInputEventHandler(esdH);
74 AliMCEventHandler *mc = new AliMCEventHandler();
75 //mc->SetReadTR(kFALSE);
76 mgr->SetMCtruthEventHandler(mc);
77
78 // Task to check the offline trigger:
79 //if(mode == mLocal || mode == mGrid || mode == mGridPAR)
63b6cbd0 80 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskPhysicsSelection.C");
40b41983 81 AliPhysicsSelectionTask* physicsSelTask = AddTaskPhysicsSelection(!DATA);
82 physicsSelTask->GetPhysicsSelection()->SetAnalyzeMC();
83 // Enable debug printouts:
84 mgr->SetDebugLevel(2);
85
86 //Add the centrality determination task
1c06a186 87 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
40b41983 88 AliCentralitySelectionTask *centralityTask = AddTaskCentrality();
89 centralityTask->SetMCInput();
90 //centralityTask->SetPass(2);
91 //AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
92 //taskCentrality->SelectCollisionCandidates(AliVEvent::kMB);
93
94 if(kUsePID) {
95 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
96 AddTaskPIDResponse(1);
97 }
98
99 // Load the analysis task:
100 gROOT->LoadMacro("AddTaskBalanceEfficiency.C");
101 //gROOT->LoadMacro("AddEfficiencyTaskCentralityTrain.C");
102
103 //for (Int_t i=binfirst; i<binlast+1; i++) {
104 for (Int_t i = 0; i < 9; i++) {
105 Float_t lowCentralityBinEdge = centralityArray[i];
106 Float_t highCentralityBinEdge = centralityArray[i+1];
107 Printf("\nWagon for centrality bin %i: %.0f-%.0f",i,lowCentralityBinEdge,highCentralityBinEdge);
108 // AddEfficiencyTaskCentralityTrain(analysisMode.Data(),lowCentralityBinEdge, highCentralityBinEdge,commonOutputFileName);
109 AddTaskBalanceEfficiency(centralityEstimator, lowCentralityBinEdge, highCentralityBinEdge, vertexZ, commonOutputFileName);
110 } // end of for (Int_t i=0; i<numberOfCentralityBins; i++)
111
112 // Run the analysis:
113 if(!mgr->InitAnalysis()){return;}
114 mgr->PrintStatus();
115 if(mode == mLocal || mode == mLocalPAR)
116 mgr->StartAnalysis("local",chain);
117 else if(mode == mPROOF)
118 mgr->StartAnalysis("proof",dataDir,nRuns,offset);
119 else if(mode == mGrid || mode == mGridPAR)
120 mgr->StartAnalysis("grid");
121
122 // Print real and CPU time used for analysis:
123 timer.Stop();
124 timer.Print();
125
126} // end of void runTaskFluctuations(...)
127
128//=============================================================//
129void LoadLibraries(const anaModes mode) {
130 //--------------------------------------
131 // Load the needed libraries most of them already loaded by aliroot
132 //--------------------------------------
133 gSystem->Load("libTree");
134 gSystem->Load("libGeom");
135 gSystem->Load("libVMC");
136 gSystem->Load("libXMLIO");
137 gSystem->Load("libPhysics");
138
139 //----------------------------------------------------------
140 // >>>>>>>>>>> Local mode <<<<<<<<<<<<<<
141 //----------------------------------------------------------
142 if (mode==mLocal || mode==mGrid || mode == mGridPAR) {
143 //--------------------------------------------------------
144 // If you want to use already compiled libraries
145 // in the aliroot distribution
146 //--------------------------------------------------------
147 gSystem->Load("libSTEERBase");
148 gSystem->Load("libESD");
149 gSystem->Load("libAOD");
150 gSystem->Load("libANALYSIS");
151 gSystem->Load("libANALYSISalice");
152 gSystem->Load("libCORRFW");
153 gSystem->Load("libPWGTools");
154
155 // Use AliRoot includes to compile our task
156 gROOT->ProcessLine(".include $ALICE_ROOT/include");
157 }
158
159 else if (mode == mLocalPAR) {
160 //--------------------------------------------------------
161 //If you want to use root and par files from aliroot
162 //--------------------------------------------------------
163 SetupPar("STEERBase");
164 SetupPar("ESD");
165 SetupPar("AOD");
166 SetupPar("ANALYSIS");
167 SetupPar("ANALYSISalice");
168}
169
170 //---------------------------------------------------------
171 // <<<<<<<<<< PROOF mode >>>>>>>>>>>>
172 //---------------------------------------------------------
173 else if (mode==mPROOF) {
174 // Connect to proof
175 printf("*** Connect to PROOF ***\n");
176 gEnv->SetValue("XSec.GSI.DelegProxy","2");
177 // Put appropriate username here
178 TProof::Open("alice-caf.cern.ch");
179 //TProof::Open("skaf.saske.sk");
180 //TProof::Open("prf000-iep-grid.saske.sk");
181
622c9e7f 182 gProof->EnablePackage("VO_ALICE@AliRoot::v5-03-46-AN");
40b41983 183 }
184
185} // end of void LoadLibraries(const anaModes mode)
186
187//===============================================================================================
188
189void SetupPar(char* pararchivename) {
190 //Load par files, create analysis libraries
191 //For testing, if par file already decompressed and modified
192 //classes then do not decompress.
193
194 TString cdir(Form("%s", gSystem->WorkingDirectory() )) ;
195 TString parpar(Form("%s.par", pararchivename)) ;
196 if ( gSystem->AccessPathName(parpar.Data()) ) {
197 gSystem->ChangeDirectory(gSystem->Getenv("ALICE_ROOT")) ;
198 TString processline(Form(".! make %s", parpar.Data())) ;
199 gROOT->ProcessLine(processline.Data()) ;
200 gSystem->ChangeDirectory(cdir) ;
201 processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
202 gROOT->ProcessLine(processline.Data()) ;
203 }
204 if ( gSystem->AccessPathName(pararchivename) ) {
205 TString processline = Form(".! tar xvzf %s",parpar.Data()) ;
206 gROOT->ProcessLine(processline.Data());
207 }
208
209 TString ocwd = gSystem->WorkingDirectory();
210 gSystem->ChangeDirectory(pararchivename);
211
212 // check for BUILD.sh and execute
213 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
214 printf("*******************************\n");
215 printf("*** Building PAR archive ***\n");
216 cout<<pararchivename<<endl;
217 printf("*******************************\n");
218 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
219 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
220 return -1;
221 }
222 }
223 // check for SETUP.C and execute
224 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
225 printf("*******************************\n");
226 printf("*** Setup PAR archive ***\n");
227 cout<<pararchivename<<endl;
228 printf("*******************************\n");
229 gROOT->Macro("PROOF-INF/SETUP.C");
230 }
231
232 gSystem->ChangeDirectory(ocwd.Data());
233 printf("Current dir: %s\n", ocwd.Data());
234
235} // end of void SetupPar(char* pararchivename)
236
237//===============================================================================================
238
239// Helper macros for creating chains
240// from: CreateESDChain.C,v 1.10 jgrosseo Exp
241
242TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)
243{
244 // creates chain of files in a given directory or file containing a list.
245 // In case of directory the structure is expected as:
246 // <aDataDir>/<dir0>/AliESDs.root
247 // <aDataDir>/<dir1>/AliESDs.root
248 // ...
249
250 if (!aDataDir)
251 return 0;
252
253 Long_t id, size, flags, modtime;
254 if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
255 {
256 printf("%s not found.\n", aDataDir);
257 return 0;
258 }
259
260 TChain* chain = new TChain("esdTree");
261 TChain* chaingAlice = 0;
262
263 if (flags & 2)
264 {
265 TString execDir(gSystem->pwd());
266 TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
267 TList* dirList = baseDir->GetListOfFiles();
268 Int_t nDirs = dirList->GetEntries();
269 gSystem->cd(execDir);
270
271 Int_t count = 0;
272
273 for (Int_t iDir=0; iDir<nDirs; ++iDir)
274 {
275 TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
276 if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
277 continue;
278
279 if (offset > 0)
280 {
281 --offset;
282 continue;
283 }
284
285 if (count++ == aRuns)
286 break;
287
288 TString presentDirName(aDataDir);
289 presentDirName += "/";
290 presentDirName += presentDir->GetName();
291 chain->Add(presentDirName + "/AliESDs.root/esdTree");
292 // cerr<<presentDirName<<endl;
293 }
294
295 }
296 else
297 {
298 // Open the input stream
299 ifstream in;
300 in.open(aDataDir);
301
302 Int_t count = 0;
303
304 // Read the input list of files and add them to the chain
305 TString esdfile;
306 while(in.good()) {
307 in >> esdfile;
308 if (!esdfile.Contains("root")) continue; // protection
309
310 if (offset > 0)
311 {
312 --offset;
313 continue;
314 }
315
316 if (count++ == aRuns)
317 break;
318
319 // add esd file
320 chain->Add(esdfile);
321 }
322
323 in.close();
324 }
325
326 return chain;
327
328} // end of TChain* CreateESDChain(const char* aDataDir, Int_t aRuns, Int_t offset)
329
330//===============================================================================================
331
332TChain* CreateAODChain(const char* aDataDir, Int_t aRuns, Int_t offset)
333{
334 // creates chain of files in a given directory or file containing a list.
335 // In case of directory the structure is expected as:
336 // <aDataDir>/<dir0>/AliAOD.root
337 // <aDataDir>/<dir1>/AliAOD.root
338 // ...
339
340 if (!aDataDir)
341 return 0;
342
343 Long_t id, size, flags, modtime;
344 if (gSystem->GetPathInfo(aDataDir, &id, &size, &flags, &modtime))
345 {
346 printf("%s not found.\n", aDataDir);
347 return 0;
348 }
349
350 TChain* chain = new TChain("aodTree");
351 TChain* chaingAlice = 0;
352
353 if (flags & 2)
354 {
355 TString execDir(gSystem->pwd());
356 TSystemDirectory* baseDir = new TSystemDirectory(".", aDataDir);
357 TList* dirList = baseDir->GetListOfFiles();
358 Int_t nDirs = dirList->GetEntries();
359 gSystem->cd(execDir);
360
361 Int_t count = 0;
362
363 for (Int_t iDir=0; iDir<nDirs; ++iDir)
364 {
365 TSystemFile* presentDir = (TSystemFile*) dirList->At(iDir);
366 if (!presentDir || !presentDir->IsDirectory() || strcmp(presentDir->GetName(), ".") == 0 || strcmp(presentDir->GetName(), "..") == 0)
367 continue;
368
369 if (offset > 0)
370 {
371 --offset;
372 continue;
373 }
374
375 if (count++ == aRuns)
376 break;
377
378 TString presentDirName(aDataDir);
379 presentDirName += "/";
380 presentDirName += presentDir->GetName();
381 chain->Add(presentDirName + "/AliAOD.root/aodTree");
382 // cerr<<presentDirName<<endl;
383 }
384
385 }
386 else
387 {
388 // Open the input stream
389 ifstream in;
390 in.open(aDataDir);
391
392 Int_t count = 0;
393
394 // Read the input list of files and add them to the chain
395 TString aodfile;
396 while(in.good()) {
397 in >> aodfile;
398 if (!aodfile.Contains("root")) continue; // protection
399
400 if (offset > 0)
401 {
402 --offset;
403 continue;
404 }
405
406 if (count++ == aRuns)
407 break;
408
409 // add aod file
410 chain->Add(aodfile);
411 }
412
413 in.close();
414 }
415
416 return chain;
417
418} // end of TChain* CreateAODChain(const char* aDataDir, Int_t aRuns, Int_t offset)
419