]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/FORWARD/trains/GridTerminate.C
Switching off reclustering in tender supply for ET analysis
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / trains / GridTerminate.C
CommitLineData
4a8dd820 1/**
2 * @file Terminate.C
3 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
4 * @date Wed Jan 23 21:22:28 2013
5 *
6 * @brief Worker script to run terminate part for Grid
7 *
8 *
9 */
10/**
11 * Load a library
12 *
13 * @param libName Library name
14 *
15 * @return true on success
16 */
17Bool_t LoadLib(const char* libName)
18{
19 if (gSystem->Load(libName) < 0) {
20 Error("GridTerminate", "Failed to load library %s",libName);
21 return false;
22 }
23 Info("GridTerminate","Loaded library %s",libName);
24 return true;
25}
26/**
27 * Load a PAR
28 *
29 * @param parName PAR file name
30 *
31 * @return true on success
32 */
33Bool_t LoadPar(const char* parName)
34{
35 if (!AliAnalysisAlien::SetupPar(parName)) {
36 Error("GridTerminate","Failed to load PAR %s",parName);
37 return false;
38 }
39 Info("GridTerminate","Loaded package %s",parName);
40 return true;
41}
42/**
43 * Submit the terminate job
44 *
45 * @param name Name of the job
46 * @param libs Libraries to load (space separated string)
47 * @param pars PARs to load (space separated string)
48 * @param srcs Sources to load (space separated string)
49 *
50 * @return true on success
51 */
52Bool_t GridTerminate(const TString& name,
53 const TString& libs,
54 const TString& pars,
55 const TString& srcs)
56{
57 // Load basic ROOT libraries
58 gSystem->AddDynamicPath("/usr/lib");
59 if (gSystem->Load("libTree.so") < 0) return false;
60 if (gSystem->Load("libGeom.so") < 0) return false;
61 if (gSystem->Load("libVMC.so") < 0) return false;
62 if (gSystem->Load("libPhysics.so") < 0) return false;
63 if (gSystem->Load("libMinuit.so") < 0) return false;
64
65 // Load basic AliROOT libraries
66 if (gSystem->Load("libSTEERBase") < 0) return false;
67 if (gSystem->Load("libESD") < 0) return false;
68 if (gSystem->Load("libAOD") < 0) return false;
69 if (gSystem->Load("libANALYSIS") < 0) return false;
70 if (gSystem->Load("libOADB") < 0) return false;
71 if (gSystem->Load("libANALYSISalice") < 0) return false;
72
73 // Load libraries
74 TObjArray* libsArray = libs.Tokenize(" ");
75 TObjString* lib = 0;
76 TIter nextLib(libsArray);
77 while ((lib = static_cast<TObjString*>(nextLib()))) {
78 const TString& libName = lib->String();
79 if (libName.Contains("libSTEERBase") ||
80 libName.Contains("libESD") ||
81 libName.Contains("libAOD") ||
82 libName.Contains("libANALYSIS") ||
83 libName.Contains("libOADB") ||
84 libName.Contains("libANALYSISalice")) continue;
85 if (!libName.Contains(".so")) continue;
86 if (!LoadLib(libName.Data())) return false;
87 }
88 libsArray.Delete();
89
90 // Load packages
91 TObjArray* parArray = pars.Tokenize(" ");
92 TObjString* par = 0;
93 TIter nextPar(parArray);
94 while ((par = static_cast<TObjString*>(nextPar()))) {
95 TString parName(par->String());
96 if (parName.EndsWith(".par")) parName.ReplaceAll(".par", "");
97 if (parName.Contains("STEERBase") ||
98 parName.Contains("ESD") ||
99 parName.Contains("AOD") ||
100 parName.Contains("ANALYSIS") ||
101 parName.Contains("OADB") ||
102 parName.Contains("ANALYSISalice")) continue;
103 if (!LoadPar(parName.Data())) return false;
104 }
105
106 // Load sources
107 TObjArray* srcArray = srcs.Tokenize(" ");
108 TObjString* src = 0;
109 TIter nextSrc(srcArray);
110 while ((src = static_cast<TObjString*>(nextSrc()))) {
111 const TString& srcName = src->String();
112 gROOT->ProcessLine(Form(".L %s+g", srcName.Data()));
113 }
114
115 // Load the analysis manager from file
116 TString base(name);
117 base.Append(".root");
118 if (gSystem->AccessPathName(base.Data())) {
119 // Couldn't read from current directory, try sub-dir
120 TString sub(gSystem->ConcatFileName(name, base));
121 if (gSystem->AccessPathName(sub)) {
122 Error("GridTerminate","Couldn't find manager file %s",base.Data());
123 return false;
124 }
125 base = sub;
126 }
127 gEnv->SetValue("XSec.GSI.DelegProxy", "2");
128 AliAnalysisManager* mgr= AliAnalysisAlien::LoadAnalysisManager(base);
129 if (!mgr) {
130 Error("GridTerminate", "Failed to load manager from %s",base.Data());
131 return false;
132 }
133 if (!name.EqualTo(mgr->GetName())) {
134 Error("GridTerminate","Read manager %s is not %s",mgr->GetName(),name.Data());
135 return false;
136 }
137 Info("GridTerminate","Loaded analysis manager");
138
139 // Load plugin
140 TFile* plug = TFile::Open(Form("%s_plugin.root",name.Data()),"READ");
141 if (!plug) {
142 Error("GridTerminate","Failed to open %s_plugin.root",name.Data());
143 return false;
144 }
145 AliAnalysisAlien* handler =
146 static_cast<AliAnalysisAlien*>(plug->Get("plugin"));
147 if (!handler) {
148 Error("GridTerminate","Failed to load plugin");
149 return false;
150 }
151 Info("GridTerminate","Setting grid handler");
152 handler->SetRunMode("terminate");
153 mgr->SetGridHandler(handler);
154
155 // Run the terminate job
156 Info("GridTerminate","Starting terminate job");
157 if (mgr->StartAnalysis("grid") < 0) return false;
158 // Info("GridTerminate","Job IDs: %s",handler->GetGridJobIDs().Data());
159 return true;
160}
161//
162// EOF
163//
164