16 # include <TObjArray.h>
17 # include <TObjString.h>
21 # include <AliAnalysisManager.h>
22 # include <AliAnalysisAlien.h>
36 if (
gSystem->Load(libName) < 0) {
37 Error(
"GridTerminate",
"Failed to load library %s",libName);
40 Info(
"GridTerminate",
"Loaded library %s",libName);
53 Error(
"GridTerminate",
"Failed to load PAR %s",parName);
56 Info(
"GridTerminate",
"Loaded package %s",parName);
70 TFile*
file = TFile::Open(Form(
"%s_plugin.root",name.Data()),
"READ");
74 Error(
"GridTerminate",
"Failed to open %s_plugin.root",
81 Error(
"GridTerminate",
"Failed to load plugin");
84 Info(
"GridTerminate",
"Setting grid handler");
85 handler->SetRunMode(
"terminate");
86 handler->SetMergeViaJDL(
true);
87 AliAnalysisManager::GetAnalysisManager()->SetGridHandler(handler);
112 Bool_t localLibsNotPar=
true)
115 gSystem->AddDynamicPath(
"/usr/lib");
116 if (
gSystem->Load(
"libTree") < 0)
return false;
117 if (
gSystem->Load(
"libGeom") < 0)
return false;
118 if (
gSystem->Load(
"libVMC") < 0)
return false;
119 if (
gSystem->Load(
"libPhysics") < 0)
return false;
120 if (
gSystem->Load(
"libMinuit") < 0)
return false;
123 if (
gSystem->Load(
"libSTEERBase") < 0)
return false;
124 if (
gSystem->Load(
"libESD") < 0)
return false;
125 if (
gSystem->Load(
"libAOD") < 0)
return false;
126 if (
gSystem->Load(
"libANALYSIS") < 0)
return false;
127 if (
gSystem->Load(
"libOADB") < 0)
return false;
128 if (
gSystem->Load(
"libANALYSISalice") < 0)
return false;
131 if (!libs.IsNull()) {
132 TObjArray* libsArray = libs.Tokenize(
" ");
134 TIter nextLib(libsArray);
135 while ((lib = static_cast<TObjString*>(nextLib()))) {
136 const TString& libName = lib->String();
137 if (libName.Contains(
"libSTEERBase") ||
138 libName.Contains(
"libESD") ||
139 libName.Contains(
"libAOD") ||
140 libName.Contains(
"libANALYSIS") ||
141 libName.Contains(
"libOADB") ||
142 libName.Contains(
"libANALYSISalice"))
continue;
143 if (!libName.Contains(
".so"))
continue;
144 if (!
LoadLib(libName.Data()))
return false;
150 if (!pars.IsNull()) {
151 TObjArray* parArray = pars.Tokenize(
" ");
153 TIter nextPar(parArray);
154 while ((par = static_cast<TObjString*>(nextPar()))) {
155 TString parName(par->String());
156 if (parName.EndsWith(
".par")) parName.ReplaceAll(
".par",
"");
157 if (parName.EqualTo(
"STEERBase") ||
158 parName.EqualTo(
"ESD") ||
159 parName.EqualTo(
"AOD") ||
160 parName.EqualTo(
"ANALYSIS") ||
161 parName.EqualTo(
"OADB") ||
162 parName.EqualTo(
"ANALYSISalice"))
continue;
164 if (local && localLibsNotPar)
165 ret =
LoadLib(Form(
"lib%s.so", parName.Data()));
168 if (!ret)
return false;
173 if (!srcs.IsNull()) {
174 TObjArray* srcArray = srcs.Tokenize(
" ");
176 TIter nextSrc(srcArray);
177 while ((src = static_cast<TObjString*>(nextSrc()))) {
178 const TString& srcName = src->String();
179 gROOT->ProcessLine(Form(
".L %s+g", srcName.Data()));
184 gEnv->SetValue(
"XSec.GSI.DelegProxy",
"2");
193 base.Append(
".root");
194 if (
gSystem->AccessPathName(base.Data())) {
197 if (
gSystem->AccessPathName(sub)) {
198 Error(
"GridTerminate",
"Couldn't find manager file %s",base.Data());
205 Error(
"GridTerminate",
"Failed to load manager from %s",base.Data());
208 if (!name.EqualTo(mgr->GetName())) {
209 Error(
"GridTerminate",
"Read manager %s is not %s",
210 mgr->GetName(),name.Data());
213 Info(
"GridTerminate",
"Loaded analysis manager");
216 if (local)
return true;
241 Bool_t localLibsNotPar=
true)
243 if (!
Setup(name, libs, pars, srcs, local, localLibsNotPar))
return false;
246 Info(
"GridTerminate",
"Starting terminate job - %s", local ?
"locally" :
"on the grid");
253 Error(
"GridTerminate",
"Manager does now have an AliEn handler");
256 if (mgr->StartAnalysis(
"grid") < 0)
return false;
258 std::ofstream outJobs(Form(
"%s_merge.jobid", mgr->GetName()));
259 outJobs << handler->GetGridJobIDs() << std::endl;
262 std::ofstream outStages(Form(
"%s_merge.stage", mgr->GetName()));
263 outStages << handler->GetGridStages() << std::endl;
270 mgr->SetSkipTerminate(
false);
272 if (mgr->StartAnalysis(
"gridterminate", dummy, -1, 0) < 0)
return false;
Bool_t LoadHandler(const TString &name)
Bool_t LoadPar(const char *parName)
Bool_t Setup(const TString &name, const TString &libs, const TString &pars, const TString &srcs, Bool_t local=false, Bool_t localLibsNotPar=true)
void SetupPar(char *pararchivename)
Bool_t GridTerminate(const TString &name, const TString &libs, const TString &pars, const TString &srcs, Bool_t local=false, Bool_t localLibsNotPar=true)
AliAnalysisManager * LoadAnalysisManager(const char *fname)
Bool_t LoadLib(const char *libName)