]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG0/multPbPb/run.C
Classes for track-based multiplicity analysis in PbPb. Initial commit.
[u/mrichter/AliRoot.git] / PWG0 / multPbPb / run.C
CommitLineData
a23f7c97 1// TODO:
2// 1. Check cuts for 2010 (Jochen?)
3
4
5enum { kMyRunModeLocal = 0, kMyRunModeCAF};
6
7TChain * GetAnalysisChain(const char * incollection);
8
9void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0, const char* option = "",Int_t workers = -1)
10{
11 // runMode:
12 //
13 // 0 local
14 // 1 proof
15
16 if (nev < 0)
17 nev = 1234567890;
18
19 InitAndLoadLibs(runMode,workers,debug);
20
21 // Create the analysis manager
22 mgr = new AliAnalysisManager;
23
24 // Add ESD handler
25 AliESDInputHandler* esdH = new AliESDInputHandler;
26 // Do I need any of this?
27 esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
28 mgr->SetInputEventHandler(esdH);
29
30 if(isMC) {
31 AliMCEventHandler* handler = new AliMCEventHandler;
32 mgr->SetMCtruthEventHandler(handler);
33 }
34
35 // physics selection
36 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
37 physicsSelectionTask = AddTaskPhysicsSelection(isMC);
38
39
40
41 // Parse option strings
42 TString optionStr(option);
43
44 // remove SAVE option if set
45 // This is copied from a macro by Jan. The reason I kept it is that I may want to pass textual options to the new task at some point
46 Bool_t doSave = kFALSE;
47 TString optionStr(option);
48 if (optionStr.Contains("SAVE"))
49 {
50 optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
51 doSave = kTRUE;
52 }
53
54 AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(kTRUE);
55 TString pathsuffix = "";
56 // cuts->SetPtRange(0.15,0.2);// FIXME pt cut
57 // const char * pathsuffix = "_pt_015_020_nofakes";
58
59 if (optionStr.Contains("ITSsa")) {
60 delete cuts;
61 cuts = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009();
62 cout << ">>>> USING ITS sa tracks" << endl;
63 pathsuffix="ITSsa";
64 }
65
66 if (optionStr.Contains("TPC")) {
67 delete cuts;
68 cuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
69 cout << ">>>> USING TPC only tracks" << endl;
70 pathsuffix="TPC";
71 }
72
73
74 // load my task
75 gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
76 AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts); // kTRUE enables DCA cut
77 task->SetIsMC(isMC);
78 if(isMC) task->GetHistoManager()->SetSuffix("MC");
79
80 if (!mgr->InitAnalysis()) return;
81
82 mgr->PrintStatus();
83
84 if (runMode == kMyRunModeLocal ) {
85 // If running in local mode, create chain of ESD files
86 TChain * chain = GetAnalysisChain(data);
87 chain->Print();
88 mgr->StartAnalysis("local",chain,nev);
89 } else if (runMode == kMyRunModeCAF) {
90 mgr->StartAnalysis("proof",TString(data)+"#esdTree",nev);
91 } else {
92 cout << "ERROR: unknown run mode" << endl;
93 }
94
95 if (doSave) MoveOutput(data, pathsuffix.Data());
96
97
98}
99
100
101void MoveOutput(const char * data, const char * suffix = ""){
102
103 TString path("output/");
104 path = path + TString(data).Tokenize("/")->Last()->GetName() + suffix;
105
106 TString fileName = "multPbPbtracks.root";
107 gSystem->mkdir(path, kTRUE);
108 gSystem->Rename(fileName, path + "/" + fileName);
109 gSystem->Rename("event_stat.root", path + "/event_stat.root");
110 Printf(">>>>> Moved files to %s", path.Data());
111}
112
113
114
115TChain * GetAnalysisChain(const char * incollection){
116 // Builds a chain of esd files
117 // incollection can be
118 // - a single root file
119 // - an xml collection of files on alien
120 // - a ASCII containing a list of local root files
121 TChain* analysisChain = 0;
122 // chain
123 analysisChain = new TChain("esdTree");
124 if (TString(incollection).Contains(".root")){
125 analysisChain->Add(incollection);
126 }
127 else if (TString(incollection).Contains("xml")){
128 TGrid::Connect("alien://");
129 TAlienCollection * coll = TAlienCollection::Open (incollection);
130 while(coll->Next()){
131 analysisChain->Add(TString("alien://")+coll->GetLFN());
132 }
133 } else {
134 ifstream file_collect(incollection);
135 TString line;
136 while (line.ReadLine(file_collect) ) {
137 analysisChain->Add(line.Data());
138 }
139 }
140 analysisChain->GetListOfFiles()->Print();
141
142 return analysisChain;
143}
144
145
146void InitAndLoadLibs(Int_t runMode=kMyRunModeLocal, Int_t workers=0,Bool_t debug=0) {
147
148 if (runMode == kMyRunModeCAF)
149 {
150 cout << "Init in CAF mode" << endl;
151
152 gEnv->SetValue("XSec.GSI.DelegProxy", "2");
153 TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
154
155 // Enable the needed package
156 gProof->UploadPackage("$ALICE_ROOT/STEERBase");
157 gProof->EnablePackage("$ALICE_ROOT/STEERBase");
158 gProof->UploadPackage("$ALICE_ROOT/ESD");
159 gProof->EnablePackage("$ALICE_ROOT/ESD");
160 gProof->UploadPackage("$ALICE_ROOT/AOD");
161 gProof->EnablePackage("$ALICE_ROOT/AOD");
162 gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
163 gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
164 gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
165 gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
166 gProof->UploadPackage("$ALICE_ROOT/PWG0base");
167 gProof->EnablePackage("$ALICE_ROOT/PWG0base");
168 }
169 else
170 {
171 cout << "Init in Local mode" << endl;
172
173 gSystem->Load("libVMC");
174 gSystem->Load("libTree");
175 gSystem->Load("libSTEERBase");
176 gSystem->Load("libESD");
177 gSystem->Load("libAOD");
178 gSystem->Load("libANALYSIS");
179 gSystem->Load("libANALYSISalice");
180 gSystem->Load("libPWG0base");
181
182 gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0"));
183 }
184 // Load helper classes
185 // TODO: replace this by a list of TOBJStrings
186 TString taskName("AliAnalysisTaskMultPbTracks.cxx+");
187 TString histoManName("AliAnalysisMultPbTrackHistoManager.cxx+");
188 TString centrName("AliAnalysisMultPbCentralitySelector.cxx+");
189 TString listName("AliHistoListWrapper.cxx+");
190
191 // Create, add task
192 if (runMode == kMyRunModeCAF) {
193 gProof->Load(listName+(debug?"+g":""));
194 gProof->Load(histoManName+(debug?"+g":""));
195 gProof->Load(centrName+(debug?"+g":""));
196 gProof->Load(taskName+(debug?"+g":""));
197 } else {
198 gROOT->LoadMacro(listName+(debug?"+g":""));
199 gROOT->LoadMacro(histoManName+(debug?"+g":""));
200 gROOT->LoadMacro(centrName+(debug?"+g":""));
201 gROOT->LoadMacro(taskName+(debug?"+g":""));
202 }
203
204
205}