.so cleanup: more gSystem->Load()
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / macros / Train / DEtaDPhi / PID / ESD / 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 usePWGCFParFiles = 0;
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 (usePWGCFParFiles) {
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 (usePWGCFParFiles) {
66     // setupPar("PWGCFAOD");
67     //if (gSystem->Load("./PWGCFAOD/libPWGCFAOD")<0) {
68     //  cout << "Cannot load local libPWGCFAOD.so . Exiting" << endl;
69     //  exit(0);
70     // }
71     // }
72     //else {
73     //if (gSystem->Load("libPWGCFAOD")<0) {
74     //  cout << "Cannot load libPWGCFAOD.so . Exiting" << endl;
75         //exit(0);
76         //}
77         //}
78   
79   //____________________________________________________//
80   //_____________Setting up PWG2femtoscopy.par__________//
81   //____________________________________________________//
82   if (usePWGCFParFiles) {
83     setupPar("PWGCFfemtoscopy");
84     if (gSystem->Load("./PWGCFfemtoscopy/libPWGCFfemtoscopy")<0) {
85       cout << "Cannot load local libPWG2femtoscopy.so . Exiting" << endl;
86       exit(0);
87     }
88   }
89   else {
90     if (gSystem->Load("libPWGCFfemtoscopy")<0) {
91       cout << "Cannot load libPWGCFfemtoscopy.so . Exiting" << endl;
92       exit(0);
93     }
94   }
95   
96   //____________________________________________________//
97   //_____________Setting up PWG2femtoscopyUser.par______//
98   //____________________________________________________//
99   if (usePWGCFParFiles) {
100     setupPar("PWGCFfemtoscopyUser");
101     if (gSystem->Load("./PWGCFfemtoscopyUser/libPWGCFfemtoscopyUser")<0) {
102       cout << "Cannot load libPWGCFfemtoscopyUser.so . Exiting" << endl;
103       exit(0);
104     }
105   }
106   else {
107     if (gSystem->Load("libPWGCFfemtoscopyUser")<0) {
108       cout << "Cannot load libPWGCFfemtoscopyUser.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
119
120     TChain *chain = new TChain("esdTree");
121     //chain->Add("../Data/PbPb/AOD/1/AliAOD.root");
122
123     //gROOT->LoadMacro("./CreateESDChain.C");
124     //TChain *chain = CreateESDChain("files.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("/opt/alice/workdir/TestConfig/data/ESD/pp/LHC10e/pass2/AliESDs.root");
141     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/1/AliESDs.root");
142     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/2/AliESDs.root");
143     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/3/AliESDs.root");
144     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/4/AliESDs.root");
145     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/5/AliESDs.root");
146     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/6/AliESDs.root");
147     // chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/7/AliESDs.root");
148     //chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/8/AliESDs.root");
149     //chain->Add("/opt/alice/workdir/TestConfig/data/Pythia/9/AliESDs.root");
150   //____________________________________________//
151   // Make the analysis manager
152     AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
153     //AliESDInputHandler* esdH = new AliESDInputHandler;
154 //  esdH->SetInactiveBranches("FMD CaloCluster");
155     
156     AliESDInputHandler *esdH = new AliESDInputHandler;
157     esdH->SetReadFriends(kFALSE);
158   //  mgr->SetInputEventHandler(esdH);  
159   mgr->SetInputEventHandler(esdH);
160
161 //  AliMCEventHandler *mcH = new AliMCEventHandler;
162 //  mgr->SetMCtruthEventHandler(mcH);
163
164
165   //  ESD filter task configuration.
166   //  gROOT->LoadMacro("AddTaskESDFilter.C");
167   // TODO usually requires muon filter libs
168   //  AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(kFALSE,  kFALSE, kFALSE, kTRUE, kTRUE);
169
170   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
171   AliPhysicsSelectionTask* physicsSelTask = AddTaskPhysicsSelection();
172
173   //AddTaskPIDResponse
174   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
175   AliAnalysisTaskSE *pidresponse = AddTaskPIDResponse();
176  
177   //____________________________________________//
178   // 1st Pt task
179   gROOT->LoadMacro("AddTaskFemto.C");
180   AliAnalysisTaskFemto *taskfemto = AddTaskFemto("./ConfigFemtoAnalysis.C");
181   //taskfemto->SelectCollisionCandidates(AliVEvent::kCentral|AliVEvent::kSemiCentral|AliVEvent::kMB);
182   taskfemto->SelectCollisionCandidates(AliVEvent::kMB);
183     
184   //____________________________________________//
185   // Run the analysis
186   if (!mgr->InitAnalysis()) return;
187   mgr->PrintStatus();
188   mgr->StartAnalysis("local",chain);
189
190   timer.Stop();
191   timer.Print();
192 }
193
194 Int_t setupPar(const char* pararchivename) {
195   ///////////////////
196   // Setup PAR File//
197   ///////////////////
198   if (pararchivename) {
199     char processline[1024];
200     sprintf(processline,".! tar xvzf %s.par",pararchivename);
201     gROOT->ProcessLine(processline);
202     const char* ocwd = gSystem->WorkingDirectory();
203     gSystem->ChangeDirectory(pararchivename);
204
205     // check for BUILD.sh and execute
206     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
207       printf("*******************************\n");
208       printf("*** Building PAR archive    ***\n");
209       printf("*******************************\n");
210
211       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
212         Error("runProcess","Cannot Build the PAR Archive! - Abort!");
213         return -1;
214       }
215     }
216     // check for SETUP.C and execute
217     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
218       printf("*******************************\n");
219       printf("*** Setup PAR archive       ***\n");
220       printf("*******************************\n");
221       gROOT->Macro("PROOF-INF/SETUP.C");
222     }
223     
224     gSystem->ChangeDirectory("../");
225   }
226
227   return 1;
228 }