]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/RunALICE.C
.so cleanup: more gSystem->Load()
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / RunALICE.C
CommitLineData
221dc8d3 1Bool_t RunALICE(TString anSrc = "grid",
2 TString anMode = "terminate",
3 TString input="aod" /*or "esd"*/,
4 TString inputMC="" /*or "mc"*/,
5 Long64_t nEvents = 1e10,
6 Long64_t nSkip = 0,
7 TString dsName="",
8 TString alirsnliteManagers ="AddAMRsn",
51a8daf6 9 Bool_t useMultiHandler=kFALSE,
221dc8d3 10 TString alirsnlitesrc ="$ALICE_ROOT",
11 TString alirsnlitetasks =""
680e4375 12 ) {
221dc8d3 13
14 // some init work
15 anSrc.ToLower(); anMode.ToLower(); input.ToLower(); inputMC.ToLower();
16
51a8daf6 17// TGrid::Connect("alien://");
221dc8d3 18 // loads libs and setup include paths
19 if (LoadLibsBase(alirsnlitesrc)) return kFALSE;
20
21 // reset manager if already exists
22 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
23 if (mgr) delete mgr;
24 mgr = new AliAnalysisManager("AliRsnLiteAM","AliRsnLite Analysis Manager");
25
26 Bool_t useAODOut = kFALSE;
27 CreateInputHandlers(input,inputMC,useAODOut,useMultiHandler);
28
29 // add default grid handler
30 gROOT->LoadMacro("SetupAnalysisPlugin.C");
31 AliAnalysisGrid *analysisPlugin = SetupAnalysisPlugin(anMode.Data());
32 if (!analysisPlugin) { Printf("Error : analysisPlugin is null !!!"); return kFALSE; }
33 mgr->SetGridHandler(analysisPlugin);
34 if (!dsName.IsNull()) {
35 if (!anSrc.CompareTo("proof") && !anMode.CompareTo("full")) {
36 analysisPlugin->SetProofDataSet(dsName.Data());
37 Printf(Form("Using DataSet %s ...",dsName.Data()));
38 } else {
39 analysisPlugin->SetFileForTestMode(dsName.Data());
40 Printf(Form("Using Test file %s ...",dsName.Data()));
41 }
42 }
43
44 TList *listManagers = CreateListOfManagersFromDir(alirsnliteManagers,alirsnlitetasks);
45 if (!listManagers) { Printf("Error : CreateListOfManagersFromDir failed !!!"); return kFALSE;}
46
47 // adds all tasks
48 if (!AddAllManagers(listManagers, anSrc, anMode,input,inputMC)) { Printf("Error : AddAllManagers failed !!!"); return kFALSE;}
49
221dc8d3 50 TStopwatch timer;
51 timer.Start();
52 // runs analysis
53 if (!RunAnalysisManager(anSrc, anMode.Data(), nEvents, nSkip)) { Printf("Error : RunAnalysisManager failed !!!"); return kFALSE;}
54
55 timer.Stop();
56 timer.Print();
57 Printf("Working directory is %s ...", gSystem->WorkingDirectory());
51a8daf6 58 TString outputDir = gSystem->WorkingDirectory();
59 outputDir.ReplaceAll("alirsnlite","alirsnlite-out");
60 gSystem->Exec(TString::Format("mkdir -p %s",outputDir.Data()).Data());
61 gSystem->Exec(TString::Format("mv *.root %s/ > /dev/null 2>&1",outputDir.Data()).Data());
62// gSystem->cd(outputDir.Data());
221dc8d3 63 Printf("Done OK");
64 return kTRUE;
65
66}
67
68Int_t LoadLibsBase(TString alirsnlitesrc) {
69 Int_t num = 0;
b0635849 70 if (gSystem->Load("libTree") < 0) {num++; return num;}
71 if (gSystem->Load("libGeom") < 0) {num++; return num;}
72 if (gSystem->Load("libVMC") < 0) {num++; return num;}
73 if (gSystem->Load("libMinuit") < 0) {num++; return num;}
74 if (gSystem->Load("libPhysics") < 0) {num++; return num;}
75 if (gSystem->Load("libSTEERBase") < 0) {num++; return num;}
76 if (gSystem->Load("libESD") < 0) {num++; return num;}
77 if (gSystem->Load("libAOD") < 0) {num++; return num;}
78 if (gSystem->Load("libANALYSIS") < 0) {num++; return num;}
79 if (gSystem->Load("libOADB") < 0) {num++; return num;}
80 if (gSystem->Load("libANALYSISalice") < 0) {num++; return num;}
221dc8d3 81
82 gSystem->AddIncludePath(Form("-I\"%s/include\"", gSystem->ExpandPathName(alirsnlitesrc.Data())));
83 gROOT->ProcessLine(Form(".include %s/include", gSystem->ExpandPathName(alirsnlitesrc.Data())));
84
85 return 0;
86}
87
88Bool_t CreateInputHandlers(TString input,TString inputMC,Bool_t useAODOut=kFALSE,Bool_t useMultiHandler=kTRUE) {
89
680e4375 90 input.ToLower();
91 inputMC.ToLower();
51a8daf6 92
221dc8d3 93 Bool_t useMC = !inputMC.CompareTo("mc");
94
51a8daf6 95
221dc8d3 96 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
97 if (!mgr) { Printf("Error [CreateInputHandlers] : mgr is null !!!"); return kFALSE; }
98
99 if (useMultiHandler) {
100 AliMultiInputEventHandler *inputHandler = new AliMultiInputEventHandler();
101 if (!input.CompareTo("esd")) {
680e4375 102 Printf("Adding ESD Input Handler ...");
221dc8d3 103 inputHandler->AddInputEventHandler(new AliESDInputHandler());
104 if (useMC) inputHandler->AddInputEventHandler(new AliMCEventHandler());
105 } else if (!input.CompareTo("aod")) {
106 inputHandler->AddInputEventHandler(new AliAODInputHandler());
107 }
108
109 mgr->SetInputEventHandler(inputHandler);
110 } else {
111 if (!input.CompareTo("esd")) {
112 mgr->SetInputEventHandler(new AliESDInputHandler());
113 if (useMC) mgr->SetMCtruthEventHandler(new AliMCEventHandler());
114 } else if (!input.CompareTo("aod")) {
115 mgr->SetInputEventHandler(new AliAODInputHandler());
116 }
221dc8d3 117 }
118
119 if (useAODOut) {
120 AliAODHandler *aodHandler = new AliAODHandler();
121 aodHandler->SetOutputFileName("AliAOD.root");
122 mgr->SetOutputEventHandler(aodHandler);
123 }
124
125 return kTRUE;
221dc8d3 126}
127
128TList *CreateListOfManagersFromDir(TString listManagersNames="",TString dir="") {
129
130 TList *listManagers = new TList;
131 TString dirsStr;
132 TObjArray *dirs=0;
133
134 if (listManagersNames.IsNull()) {
135 if (dir.IsNull() || gSystem->AccessPathName(gSystem->ExpandPathName(dir.Data()))) {
136 Printf("Error [CreateListOfManagersFromDir] : Dir '%s' doesn't exists !!!",dir.Data());
137 return 0;
138 }
139 dirsStr = gSystem->GetFromPipe(Form("ls %s",dir.Data()));
140 dirs = dirsStr.Tokenize("\n");
141 } else {
142 dirsStr = listManagersNames;
143 dirs = dirsStr.Tokenize(" ");
144 }
145
146 TIter next(dirs);
147 Int_t counter=0;
148 TObjString *str,*strtmp;
149 TObjArray *mydirstrTok;
150 TString mydirstr,main,prefix;
151 while ((str = (TObjString *)next.Next())) {
152 // TODO add direcotry
153 mydirstr = str->GetString();
154 if (mydirstr.IsNull()) continue;
155
156 Printf("Adding %s .,,",mydirstr.Data());
157 mydirstrTok = mydirstr.Tokenize("_");
158
159 main = ((TObjString *)mydirstrTok->At(0))->GetString();
160
161 strtmp = (TObjString *)mydirstrTok->At(1);
162 if (strtmp) prefix = strtmp->GetString(); else prefix="";
163
164 listManagers->Add(new TNamed(main,prefix));
165 }
166
167 return listManagers;
168}
169
170Bool_t AddAllManagers(TList *listManagers,TString anSrc, TString anMode,TString input,TString inputMC) {
171 TIter next(listManagers);
172 Int_t counter=0;
173 TNamed *name;
174 while ((name = (TNamed *)next.Next())) {
175 if (!AddAnalysisManager(name->GetName(), anSrc, anMode,input,inputMC,name->GetTitle(),Form("%d",counter++))) {
176 Printf("Error: Problem adding %s",name->GetName());
177 return kFALSE;
178 }
179 }
180
181 return kTRUE;
182}
183
184Bool_t AddAnalysisManager(TString managerMacro, TString anSrc, TString anMode,TString input,TString inputMC, TString postfix,TString idStr) {
185 gROOT->LoadMacro(Form("%s.C", managerMacro.Data()));
186 return gROOT->ProcessLine(Form("%s\(\"%s\",\"%s\",\"%s\"\,\"%s\",\"%s\",\"%s\"\);", managerMacro.Data(), anSrc.Data(), anMode.Data(),input.Data(),inputMC.Data(), postfix.Data(),idStr.Data()));
187}
188
189Bool_t RunAnalysisManager(TString anSrc = "proof", TString anMode = "test", Long64_t nEvents = 1e10, Long64_t nSkip = 0) {
190
191 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
192
193 if (!mgr) { Printf("Error [RunAnalysisManager] : mgr is null !!!"); return kFALSE; }
194
195 // Run analysis
196 mgr->InitAnalysis();
197 mgr->PrintStatus();
198
199 if ((!anSrc.CompareTo("proof")) || (!anSrc.CompareTo("local"))) {
200 mgr->StartAnalysis(anSrc.Data(), nEvents, nSkip);
201 } else {
202 mgr->StartAnalysis(anSrc.Data());
203 }
204
205 return kTRUE;
206}