]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/macros/Train/ProtonFemtoscopy/runBatch.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / ProtonFemtoscopy / runBatch.C
1 void runBatch() {
2   TStopwatch timer;
3   timer.Start();
4
5   printf("*** Connect to AliEn ***\n");
6   TGrid::Connect("alien://");
7   gSystem->Load("libProofPlayer");
8   gSystem->Load("libVMC");
9   gSystem->Load("libPhysics");
10
11   // Use par files only for PWG2 code
12   int useParFiles = 0;
13   int usePWG2ParFiles = 1;
14
15   // Use precompiled libraries for the analysis framework
16   if (useParFiles)
17     setupPar("STEERBase");
18   if (gSystem->Load("libSTEERBase")<0) {
19     cout << "Cannot load libSTEERBase.so . Exiting" << endl;
20     exit(0);
21   }
22   gSystem->Load("libVMC");
23
24   if (useParFiles)
25     setupPar("ESD");
26   if (gSystem->Load("libESD")<0) {
27     cout << "Cannot load libESD.so . Exiting" << endl;
28     exit(0);
29   }
30
31   if (useParFiles)
32     setupPar("AOD");
33   if (gSystem->Load("libAOD")<0) {
34     cout << "Cannot load libAOD.so . Exiting" << endl;
35     exit(0);
36   }
37
38   if (useParFiles)
39     setupPar("ANALYSIS");
40   if (gSystem->Load("libANALYSIS")<0) {
41     cout << "Cannot load libANALYSIS.so . Exiting" << endl;
42     exit(0);
43   }
44
45   if (useParFiles)
46     setupPar("ANALYSISalice");
47   if (gSystem->Load("libANALYSISalice")<0) {
48     cout << "Cannot load libANALYSISalice.so . Exiting" << endl;
49     exit(0);
50   }
51
52   //____________________________________________________//
53   //_____________Setting up PWG2AOD.par_________________//
54   //____________________________________________________//
55   if (usePWG2ParFiles) {
56     // char dynpath[10000];
57     // sprintf(dynpath, ".:%s", gSystem->GetDynamicPath());
58     // gSystem->SetDynamicPath(dynpath);
59     TString dynpath;
60     dynpath = ".:";
61     dynpath += gSystem->GetDynamicPath();
62     gSystem->SetDynamicPath(dynpath.Data());
63   }
64
65   if (usePWG2ParFiles) {
66     setupPar("PWG2AOD");
67     if (gSystem->Load("./PWG2AOD/libPWG2AOD")<0) {
68       cout << "Cannot load local libPWG2AOD.so . Exiting" << endl;
69       exit(0);
70     }
71   }
72   else {
73     if (gSystem->Load("libPWG2AOD")<0) {
74       cout << "Cannot load libPWG2AOD.so . Exiting" << endl;
75       exit(0);
76     }
77   }
78   
79   //____________________________________________________//
80   //_____________Setting up PWG2femtoscopy.par__________//
81   //____________________________________________________//
82   if (usePWG2ParFiles) {
83     setupPar("PWG2femtoscopy");
84     if (gSystem->Load("./PWG2femtoscopy/libPWG2femtoscopy")<0) {
85       cout << "Cannot load local libPWG2femtoscopy.so . Exiting" << endl;
86       exit(0);
87     }
88   }
89   else {
90     if (gSystem->Load("libPWG2femtoscopy")<0) {
91       cout << "Cannot load libPWG2femtoscopy.so . Exiting" << endl;
92       exit(0);
93     }
94   }
95   
96   //____________________________________________________//
97   //_____________Setting up PWG2femtoscopyUser.par______//
98   //____________________________________________________//
99   if (usePWG2ParFiles) {
100     setupPar("PWG2femtoscopyUser");
101     if (gSystem->Load("./PWG2femtoscopyUser/libPWG2femtoscopyUser")<0) {
102       cout << "Cannot load libPWG2femtoscopyUser.so . Exiting" << endl;
103       exit(0);
104     }
105   }
106   else {
107     if (gSystem->Load("libPWG2femtoscopyUser")<0) {
108       cout << "Cannot load libPWG2femtoscopyUser.so . Exiting" << endl;
109       exit(0);
110     }
111   }
112   
113   //ANALYSIS PART
114   const char *collectionfile="wn.xml";
115   
116   //____________________________________________//
117   //Usage of event tags
118   // AliTagAnalysis *analysis = new AliTagAnalysis();
119   // TChain *chain = 0x0;
120   // chain = analysis->CreateChainFromCollection(collectionfile,"esdTree");
121
122   TChain *chain = new TChain("aodTree");;
123   //  gROOT->LoadMacro("CreateESDChain.C");
124 //  const char *collectionfile="/home/akisiel/LHC10h.esds.txt";
125   
126   ifstream *istr = new ifstream(collectionfile);
127   
128   char fname[2000];
129   char pname[2000];
130   while (!istr->eof()) {
131     fname[0] = '\0';
132     (*istr) >> fname;
133     if (strlen(fname) > 10) {
134       sprintf(pname, "alien://%s", fname);
135       chain->Add(pname);
136       
137     }
138   }
139   
140 //  chain->Add("data/AliAOD.root");
141
142   //  chain->Add("Data121040/AliESDs.root");
143   
144 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/001/AliESDs.root");
145 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/002/AliESDs.root");
146 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/003/AliESDs.root");
147 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/004/AliESDs.root");
148 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/005/AliESDs.root");
149 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/006/AliESDs.root");
150 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/007/AliESDs.root");
151 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/008/AliESDs.root");
152 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/009/AliESDs.root");
153 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/010/AliESDs.root");
154 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/011/AliESDs.root");
155 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/012/AliESDs.root");
156 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/013/AliESDs.root");
157 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/014/AliESDs.root");
158 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/015/AliESDs.root");
159 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/016/AliESDs.root");
160 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/017/AliESDs.root");
161 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/018/AliESDs.root");
162 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/019/AliESDs.root");
163 //   chain->Add("alien:///alice/sim/LHC10g1a/130844/020/AliESDs.root");
164 //  chain->Add("ESDs/AliESDs.101.root");
165
166   //____________________________________________//
167   // Make the analysis manager
168   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
169 //   AliESDInputHandler* esdH = new AliESDInputHandler;
170 //  esdH->SetInactiveBranches("FMD CaloCluster");
171 //   esdH->SetReadFriends(kFALSE);
172   AliAODInputHandler *aodH = new AliAODInputHandler;
173   //  mgr->SetInputEventHandler(esdH);  
174   mgr->SetInputEventHandler(aodH);
175
176 //  AliMCEventHandler *mcH = new AliMCEventHandler;
177 //  mgr->SetMCtruthEventHandler(mcH);
178
179 //  gROOT->LoadMacro("AddTaskPhysicsSelection.C");
180 //  AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(0,  0);
181   //physSelTask->GetPhysicsSelection()->SetUseBXNumbers(kFALSE);
182
183   // AOD output handler
184 //   AliAODHandler* aodHandler   = new AliAODHandler();
185 //   aodHandler->SetOutputFileName("AliAOD.root");
186 //   //aodHandler->SetFillAOD(kFALSE);
187 //   aodHandler->SetFillAODforRun(kFALSE);
188 //   mgr->SetOutputEventHandler(aodHandler);
189   
190 //   AliCentralitySelectionTask *centralityTask = new AliCentralitySelectionTask("CentralitySelection");
191 //   centralityTask->SetPass(2);
192 //   mgr->AddTask(centralityTask);
193 //   mgr->ConnectInput(centralityTask, 0, mgr->GetCommonInputContainer());
194   
195 //   AliAnalysisDataContainer *outputCentrality =  mgr->CreateContainer("outputCentrality", TList::Class(),
196 //   AliAnalysisManager::kOutputContainer, "CentralityOutput.root");
197 //   mgr->ConnectOutput(centralityTask, 1, outputCentrality);
198
199   //  ESD filter task configuration.
200   //  gROOT->LoadMacro("AddTaskESDFilter.C");
201   // TODO usually requires muon filter libs
202   //  AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(kFALSE,  kFALSE, kFALSE, kTRUE, kTRUE);
203
204   //AddTaskPIDResponse
205   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
206   AliAnalysisTaskSE *pidresponse = AddTaskPIDResponse();
207
208   //____________________________________________//
209   // 1st Pt task
210   gROOT->LoadMacro("AddTaskFemto.C");
211   AliAnalysisTaskFemto *taskfemto = AddTaskFemto("./ConfigFemtoAnalysis.C");
212
213   //____________________________________________//
214   // Run the analysis
215   if (!mgr->InitAnalysis()) return;
216   mgr->PrintStatus();
217   mgr->StartAnalysis("local",chain);
218
219   timer.Stop();
220   timer.Print();
221 }
222
223 Int_t setupPar(const char* pararchivename) {
224   ///////////////////
225   // Setup PAR File//
226   ///////////////////
227   if (pararchivename) {
228     char processline[1024];
229     sprintf(processline,".! tar xvzf %s.par",pararchivename);
230     gROOT->ProcessLine(processline);
231     const char* ocwd = gSystem->WorkingDirectory();
232     gSystem->ChangeDirectory(pararchivename);
233
234     // check for BUILD.sh and execute
235     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
236       printf("*******************************\n");
237       printf("*** Building PAR archive    ***\n");
238       printf("*******************************\n");
239
240       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
241         Error("runProcess","Cannot Build the PAR Archive! - Abort!");
242         return -1;
243       }
244     }
245     // check for SETUP.C and execute
246     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
247       printf("*******************************\n");
248       printf("*** Setup PAR archive       ***\n");
249       printf("*******************************\n");
250       gROOT->Macro("PROOF-INF/SETUP.C");
251     }
252     
253     gSystem->ChangeDirectory("../");
254   }
255
256   return 1;
257 }