15 # include <TObjArray.h>
16 # include <TObjString.h>
20 # include <AliAnalysisManager.h>
37 if (
gSystem->Load(libName) < 0) {
38 Error(
"ProofTerminate",
"Failed to load library %s",libName);
41 Info(
"ProofTerminate",
"Loaded library %s",libName);
54 Error(
"ProofTerminate",
"Failed to load PAR %s",parName);
57 Info(
"ProofTerminate",
"Loaded package %s",parName);
65 TFile *
file = TFile::Open(fname);
67 ::Error(
"LoadAnalysisManager",
"Cannot open file %s", fname);
70 TIter nextkey(file->GetListOfKeys());
73 while ((key=(TKey*)nextkey())) {
74 if (!strcmp(key->GetClassName(),
"AliAnalysisManager"))
78 ::Error(
"LoadAnalysisManager",
79 "No analysis manager found in file %s", fname);
101 Bool_t localLibsNotPar=
true)
104 gSystem->AddDynamicPath(
"/usr/lib");
105 if (
gSystem->Load(
"libTree") < 0)
return false;
106 if (
gSystem->Load(
"libGeom") < 0)
return false;
107 if (
gSystem->Load(
"libVMC") < 0)
return false;
108 if (
gSystem->Load(
"libPhysics") < 0)
return false;
109 if (
gSystem->Load(
"libMinuit") < 0)
return false;
112 if (
gSystem->Load(
"libSTEERBase") < 0)
return false;
113 if (
gSystem->Load(
"libESD") < 0)
return false;
114 if (
gSystem->Load(
"libAOD") < 0)
return false;
115 if (
gSystem->Load(
"libANALYSIS") < 0)
return false;
116 if (
gSystem->Load(
"libOADB") < 0)
return false;
117 if (
gSystem->Load(
"libANALYSISalice") < 0)
return false;
120 if (!libs.IsNull()) {
121 TObjArray* libsArray = libs.Tokenize(
" ");
123 TIter nextLib(libsArray);
124 while ((lib = static_cast<TObjString*>(nextLib()))) {
125 const TString& libName = lib->String();
126 if (libName.Contains(
"libSTEERBase") ||
127 libName.Contains(
"libESD") ||
128 libName.Contains(
"libAOD") ||
129 libName.Contains(
"libANALYSIS") ||
130 libName.Contains(
"libOADB") ||
131 libName.Contains(
"libANALYSISalice"))
continue;
132 if (!libName.Contains(
".so"))
continue;
133 if (!
LoadLib(libName.Data()))
return false;
139 if (!pars.IsNull()) {
140 TObjArray* parArray = pars.Tokenize(
" ");
142 TIter nextPar(parArray);
143 while ((par = static_cast<TObjString*>(nextPar()))) {
144 TString parName(par->String());
145 if (parName.EndsWith(
".par")) parName.ReplaceAll(
".par",
"");
146 if (parName.EqualTo(
"STEERBase") ||
147 parName.EqualTo(
"ESD") ||
148 parName.EqualTo(
"AOD") ||
149 parName.EqualTo(
"ANALYSIS") ||
150 parName.EqualTo(
"OADB") ||
151 parName.EqualTo(
"ANALYSISalice"))
continue;
153 TString asLib = Form(
"lib%s.so", parName.Data());
154 if (localLibsNotPar) ret =
LoadLib(asLib.Data());
155 if (!ret) ret =
LoadPar(parName.Data());
156 if (!ret)
return false;
161 if (!srcs.IsNull()) {
162 TObjArray* srcArray = srcs.Tokenize(
" ");
164 TIter nextSrc(srcArray);
165 while ((src = static_cast<TObjString*>(nextSrc()))) {
166 const TString& srcName = src->String();
167 gROOT->ProcessLine(Form(
".L %s+g", srcName.Data()));
173 base.Append(
".root");
174 if (
gSystem->AccessPathName(base.Data())) {
177 if (
gSystem->AccessPathName(sub)) {
178 Error(
"ProofTerminate",
"Couldn't find manager file %s",base.Data());
185 Error(
"ProofTerminate",
"Failed to load manager from %s",base.Data());
188 if (!name.EqualTo(mgr->GetName())) {
189 Error(
"ProofTerminate",
"Read manager %s is not %s",
190 mgr->GetName(),name.Data());
193 Info(
"ProofTerminate",
"Loaded analysis manager");
216 Bool_t localLibsNotPar=
true)
218 if (!
Setup(name, libs, pars, srcs, localLibsNotPar))
return false;
221 Info(
"ProofTerminate",
"Starting terminate job locally");
225 mgr->SetSkipTerminate(
false);
227 if (mgr->StartAnalysis(
"gridterminate", dummy, -1, 0) < 0)
return false;
Bool_t LoadLib(const char *libName)
Bool_t LoadPar(const char *parName)
Bool_t ProofTerminate(const TString &name, const TString &libs, const TString &pars, const TString &srcs, Bool_t localLibsNotPar=true)
Bool_t Setup(const TString &name, const TString &libs, const TString &pars, const TString &srcs, Bool_t localLibsNotPar=true)
AliAnalysisManager * LoadAnalysisManager(const char *fname)
static Bool_t Build(const TString &what)