]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/macros/QAtrainsim.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / ANALYSIS / macros / QAtrainsim.C
CommitLineData
041e39a0 1#include "Riostream.h"
2void LoadLibraries();
3void AddAnalysisTasks();
4void QAmerge(const char *, Int_t);
5
6Int_t iCollisionType = 1; // 0=pp, 1=PbPb
7// Trigger mask.
8
9UInt_t kTriggerInt = AliVEvent::kAnyINT;
10UInt_t kTriggerMuonAll = AliVEvent::kMUL7 | AliVEvent::kMUSH7 | AliVEvent::kMUU7 | AliVEvent::kMUS7
11 | AliVEvent::kMUSPB | AliVEvent::kMUSHPB | AliVEvent::kMuonLikePB | AliVEvent::kMuonUnlikePB;
12UInt_t kTriggerMuonBarell = AliVEvent::kMUU7;
13UInt_t kTriggerEMC = AliVEvent::kEMC7 | AliVEvent::kEMCEJE | AliVEvent::kEMCEGA;
14UInt_t kTriggerHM = AliVEvent::kHighMult;
15// Main trigger mask used:
16UInt_t kTriggerMask = kTriggerInt;
17
18Int_t runNumbers[5] = {158626};
19
20Bool_t doCDBconnect = 1;
21Bool_t doEventStat = 1;
22Bool_t doCentrality = 1;
23Bool_t doQAsym = 1;
24Bool_t doVZERO = 1; // there is a 2nd file
25Bool_t doVZEROPbPb = 1;
26Bool_t doVertex = 1;
27Bool_t doSPD = 1; // needs RP
28Bool_t doTPC = 1;
29Bool_t doHLT = 1;
30Bool_t doSDD = 1; // needs RP
31Bool_t doSSDdEdx = 1;
32
33Bool_t doTRD = 1;
34Bool_t doITS = 1;
35Bool_t doITSsaTracks = 1;
36Bool_t doITSalign = 1;
37Bool_t doCALO = 1;
38Bool_t doMUONTrig = 1;
39Bool_t doImpParRes = 1;
40Bool_t doMUON = 1;
41Bool_t doTOF = 1;
42Bool_t doHMPID = 1;
43Bool_t doT0 = 1;
44Bool_t doZDC = 1;
45Bool_t doPIDResponse = 1;
46Bool_t doPIDqa = 1; //new
47Bool_t doFMD = 1; // new
48Bool_t doPHOS = 1; // new
49Bool_t doEMCAL = 1;
50Bool_t doFBFqa = 1; // new - not ported yet to revision
51
52 // Debug level
53Int_t debug_level = 1; // Debugging
54Int_t run_number = 0;
55
56void QAtrain(Int_t run = 0,
57 const char *xmlfile = "wn.xml",
58 Int_t stage = 0) /*0 = QA train, 1...n - merging stage*/
59{
60 run_number = run;
61
62 TGrid::Connect("alien://");
63 if (!gGrid || !gGrid->IsConnected()) {
64 ::Error("QAtrain", "No grid connection");
65 return;
66 }
67 // Set temporary merging directory to current one
68 gSystem->Setenv("TMPDIR", gSystem->pwd());
69 // Set temporary compilation directory to current one
70 gSystem->SetBuildDir(gSystem->pwd(), kTRUE);
71 // Load libraries
72 LoadLibraries();
73 printf("Include path: %s\n", gSystem->GetIncludePath());
74 // Create manager
75 AliAnalysisManager *mgr = new AliAnalysisManager("PilotAnalysis_sim", "Production train");
76 mgr->SetRunFromPath(run_number);
77 // Input handler
78 AliESDInputHandlerRP *esdHandler = new AliESDInputHandlerRP();
79 esdHandler->SetReadFriends(kTRUE);
80 esdHandler->SetActiveBranches("ESDfriend");
81 mgr->SetInputEventHandler(esdHandler);
82 mgr->SetDebugLevel(debug_level);
83
84 // Monte Carlo handler
85 AliMCEventHandler* mcHandler = new AliMCEventHandler();
86 mgr->SetMCtruthEventHandler(mcHandler);
87 mcHandler->SetPreReadMode(1);
88 mcHandler->SetReadTR(kTRUE);
89
90 // AnalysisTasks
91 AddAnalysisTasks();
92 if (stage>0) {
93 QAmerge(xmlfile, stage);
94 return;
95 }
96 // Input chain
97 TChain *chain = new TChain("esdTree");
98 chain->Add("AliESDs.root");
99 TStopwatch timer;
100 timer.Start();
101 if (mgr->InitAnalysis()) {
102 mgr->PrintStatus();
103 mgr->SetSkipTerminate(kTRUE);
104// mgr->SetNSysInfo(1);
105 mgr->StartAnalysis("local", chain);
106 }
107 timer.Print();
108}
109
110void LoadLibraries()
111{
112 gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWGPP/TRD");
113 gSystem->Load("libANALYSIS");
114 gSystem->Load("libANALYSISalice");
115 gSystem->Load("libCORRFW");
116 gSystem->Load("libTENDER");
117 gSystem->Load("libPWGPP.so");
118 gSystem->Load("libAliHLTTrigger.so");
119
120 if (doEMCAL || doCALO || doPHOS) {
121 gSystem->Load("libEMCALUtils");
122 gSystem->Load("libPHOSUtils");
123 gSystem->Load("libPWGCaloTrackCorrBase");
124 gSystem->Load("libPWGGACaloTrackCorrelations");
125 gSystem->Load("libPWGGACaloTasks");
126 gSystem->Load("libPWGGAPHOSTasks");
127 gSystem->Load("libPWGGAEMCALTasks");
128 }
129 if(doMUON || doMUONTrig) {
130 gSystem->Load("libPWGmuon");
131 gSystem->Load("libPWGPPMUONlite");
132 gSystem->Load("libPWGmuondep");
133 }
134 if (doFMD) {
135 gSystem->Load("libPWGLFforward2");
136 }
137}
138
139void AddAnalysisTasks()
140{
141 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
142 mgr->SetCommonFileName("QAresults.root");
143 // Statistics task
144 mgr->AddStatisticsTask(kTriggerMask);
145 //
146 // CDB connection
147 //
148 if (doCDBconnect) {
149 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskCDBconnect.C");
150 AliTaskCDBconnect *taskCDB = AddTaskCDBconnect();
151 if (!taskCDB) return;
152 AliCDBManager *cdb = AliCDBManager::Instance();
153 cdb->SetDefaultStorage("raw://");
154 taskCDB->SetRunNumber(run_number);
155 }
156
157 //
158 // Event Statistics (Jan Fiete)
159 //
160 if (doEventStat) {
161 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
162 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection(kTRUE /*MC*/);
163 }
164
165 //
166 // Centrality (A. Toia)
167 //
168 if (doCentrality) {
169 if (!iCollisionType) {
170 printf("Disabling centrality task for p-p\n");
171 doCentrality = kFALSE;
172 } else {
173 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
174 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
175 taskCentrality->SetMCInput();
176 }
177 }
178
179 // Vertexing (A. Dainese)
180 //
181 if (doVertex) {
182 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskVertexESD.C");
183 // Specific setting for MC
184 AliAnalysisTaskVertexESD* taskvertexesd = AddTaskVertexESD(kTRUE, kTriggerMask);
185 taskvertexesd->SelectCollisionCandidates(kTriggerMask);
186 }
187
188 // TPC QA (E. Sicking)
189 //
190 if (doQAsym) {
191 // offline trigger in AddTask
192 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskQAsym.C");
193 AliAnalysisTaskSE * taskqasim = AddTaskQAsym(0, kTriggerMask, kTriggerHM, kTriggerEMC, kTriggerMuonBarell);
194 }
195 //
196 // VZERO QA (C. Cheshkov)
197 //
198 if (doVZERO) {
199 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskVZEROQA.C");
200 AliAnalysisTaskSE * taskv0qa = AddTaskVZEROQA(0);
201// taskv0qa->SelectCollisionCandidates();
202 }
203 if (doVZEROPbPb && iCollisionType==1) {
204 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/VZERO/AddTaskVZEROPbPb.C");
205 AliAnaVZEROPbPb* taskV0PbPb = (AliAnaVZEROPbPb*)AddTaskVZEROPbPb(0);
206 taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU-,CPBI2-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVHN_R2-,CVHNWU_R2-,CVLNWU-,CVLN-,CVLN_R1-,CVLN_B2-,CVLNWU_R1-,CVLNWU_B2-,CSEMI_R1-,CSEMIWU_R1-,CCENT_R2-,CCENTWU_R2-");
207 }
208 //
209 // TPC (Jacek Otwinowski & Michael Knichel)
210 //
211 //
212 // Optionally MC information can be used by setting the 1st argument to true
213 // Optionally friends information can be switched off by setting the 2st argument
214 // to false
215 // Optionally highMult axis can be used by setting the 3st argument to true (for PbPb)
216 if (doTPC) {
217 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCdEdxQA.C");
218 AliPerformanceTask *tpcQA = 0;
219 if (iCollisionType) {
220 // High multiplicity Pb-Pb
221 tpcQA = AddTaskPerformanceTPCdEdxQA(kTRUE, kTRUE, kTRUE);
222 } else {
223 // Low multiplicity (pp)
224 tpcQA = AddTaskPerformanceTPCdEdxQA(kTRUE, kTRUE, kFALSE);
225 }
226 tpcQA->SelectCollisionCandidates(kTriggerMask);
227 }
228
229 // HLT (Alberica Toia)
230 if (doHLT) {
231 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCdEdxQA.C");
232 AliPerformanceTask *hltQA = AddTaskPerformanceTPCdEdxQA(kTRUE, kTRUE, kFALSE,0,kTRUE);
233 hltQA->SelectCollisionCandidates(kTriggerMask);
234 }
235 //
236 // SPD (A. Mastroserio)
237 //
238 if (doSPD) {
239 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskSPDQA.C");
240 AliAnalysisTaskSPD* taskspdqa = (AliAnalysisTaskSPD*)AddTaskSPDQA();
241 // Request from Annalisa
242 if (iCollisionType) taskspdqa->SetHeavyIonMode();
243 taskspdqa->SelectCollisionCandidates(kTriggerMask);
244 taskspdqa->SetOCDBInfo(run_number, "raw://");
245 }
246 //
247 // SDD (F. Prino)
248 //
249 if (doSDD) {
250 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddSDDPoints.C");
251 AliAnalysisTaskSE* tasksdd = AddSDDPoints();
252 tasksdd->SelectCollisionCandidates(kTriggerMask);
253 }
254 //
255 // SSD dEdx (Marek Chojnacki)
256 //
257 if (doSSDdEdx) {
258 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskdEdxSSDQA.C");
259 AliAnalysisTaskSE* taskssddedx = AddTaskdEdxSSDQA();
260 taskssddedx->SelectCollisionCandidates(kTriggerMask);
261 }
262
263 //
264 // ITS
265 //
266 if (doITS) {
267 // hardcoded non-zero trigger mask
268 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceITS.C");
269 AliAnalysisTaskITSTrackingCheck *itsQA = 0;
270 AliAnalysisTaskITSTrackingCheck *itsQACent0010 = 0;
271 AliAnalysisTaskITSTrackingCheck *itsQACent3050 = 0;
272 AliAnalysisTaskITSTrackingCheck *itsQACent6080 = 0;
273 if(iCollisionType==0) {
274 itsQA = AddTaskPerformanceITS(kTRUE);
275 } else {
276 itsQA = AddTaskPerformanceITS(kTRUE);
277 itsQACent0010 = AddTaskPerformanceITS(kTRUE,kFALSE,kFALSE,3500,10000);
278 itsQACent3050 = AddTaskPerformanceITS(kTRUE,kFALSE,kFALSE,590,1570);
279 itsQACent6080 = AddTaskPerformanceITS(kTRUE,kFALSE,kFALSE,70,310);
280 }
281 }
282 //
283 // ITS saTracks, align (F.Prino)
284 //
285 if (doITSsaTracks) {
286 // offline trigger in AddTask
287 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskITSsaTracks.C");
288 AliAnalysisTaskITSsaTracks *itssaTracks = AddTaskITSsaTracks(kTRUE,kFALSE);
289 itssaTracks->SelectCollisionCandidates(kTriggerMask);
290 }
291 if (doITSalign) {
292 // no offline trigger selection
293 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskITSAlign.C");
294 AliAnalysisTaskITSAlignQA *itsAlign = AddTaskITSAlign(0,2011);
295 }
296 //
297 // TRD (Alex Bercuci, M. Fasel)
298 //
299 if(doTRD) {
300 // no offline trigger selection
301 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTrainPerformanceTRD.C");
302 // steer individual TRD tasks
303 Bool_t
304 doCheckESD(kTRUE), // AliTRDcheckESD
305 doCheckDET(kTRUE), // AliTRDcheckDET
306 doEffic(kTRUE), // AliTRDefficiency
307 doResolution(kTRUE),// AliTRDresolution
308 doCheckPID(kTRUE), // AliTRDcheckPID
309 doV0Monitor(kFALSE);// AliTRDv0Monitor
310 AddTrainPerformanceTRD(Translate(doCheckESD, doCheckDET, doEffic, doResolution, doCheckPID, doV0Monitor));
311 }
312
313 //
314 // ZDC (Chiara Oppedisano)
315 //
316 if(doZDC) {
317 // hardcoded kMB trigger mask
318 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/ZDC/AddTaskZDCQA.C");
319 AliAnalysisTaskSE *taskZDC = AddTaskZDCQA();
320 taskZDC->SelectCollisionCandidates(kTriggerMask);
321 }
322 //
323 // Calorimetry (Gustavo Conesa)
324 //
325
326 if(doCALO) {
327 gROOT->LoadMacro("$ALICE_ROOT/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
328 AliAnalysisTaskCaloTrackCorrelation *taskCaloQA = AddTaskCalorimeterQA("ESD", 2011, kFALSE, kTRUE);
329 taskCaloQA->SetDebugLevel(0);
330 // offline mask set in AddTask to kMB
331 taskCaloQA->SelectCollisionCandidates(kTriggerMask);
332 // Add a new calo task with EMC1 trigger only
333 taskCaloQA = AddTaskCalorimeterQA("ESD", 2011, kFALSE, kTRUE, "", "EMC7");
334 taskCaloQA->SetDebugLevel(0);
335 taskCaloQA->SelectCollisionCandidates(kTriggerEMC);
336 }
337
338 //
339 // Muon Trigger
340 //
341
342 if(doMUONTrig) {
343 // no offline trigger selection
344 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskMTRchamberEfficiency.C");
345 AliAnalysisTaskTrigChEff *taskMuonTrig = AddTaskMTRchamberEfficiency();
346 }
347
348 //
349 // Impact parameter resolution (xianbao.yuan@pd.infn.it, andrea.dainese@pd.infn.it)
350 //
351 if (doImpParRes) {
352 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskImpParRes.C");
353 AliAnalysisTaskSE* taskimpparres=0;
354 // Specific setting for MC
355 if(iCollisionType==0) {
356 taskimpparres= AddTaskImpParRes(kTRUE);
357 } else {
358 taskimpparres= AddTaskImpParRes(kTRUE,-1,kTRUE,kFALSE);
359 }
360 taskimpparres->SelectCollisionCandidates(kTriggerMask);
361 }
362 //
363 // MUON QA (Philippe Pillot)
364 //
365 if (doMUON) {
366 // trigger analysis internal
367 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskMuonQA.C");
368 AliAnalysisTaskSE* taskmuonqa= AddTaskMuonQA();
369 }
370 //
371 // TOF (Francesca Bellini)
372 //
373 if (doTOF) {
374 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TOF/AddTaskTOFQA.C");
375 AliAnalysisTaskTOFqa *tofQA = AddTaskTOFQA();
376 tofQA->SelectCollisionCandidates(kTriggerMask);
377 }
378 //
379 // PIDResponse(JENS)
380 //
381 if (doPIDResponse) {
382 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
383 AliAnalysisTaskPIDResponse *PIDResponse = AddTaskPIDResponse(kTRUE);
384 PIDResponse->SelectCollisionCandidates(kTriggerMask);
385 }
386
387 //
388 // PIDqa(JENS)
389 //
390 if (doPIDqa) {
391 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
392 AliAnalysisTaskPIDqa *PIDQA = AddTaskPIDqa();
393 PIDQA->SelectCollisionCandidates(kTriggerMask);
394 }
395
396 //
397 // HMPID QA (Giacomo Volpe)
398 //
399 if (doHMPID) {
400 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/HMPID/AddTaskHmpidQA.C");
401 AliAnalysisTaskSE* taskhmpidqa= AddTaskHmpidQA(kTRUE);
402 // offline mask set in AddTask to kMB
403 taskhmpidqa->SelectCollisionCandidates(kTriggerMask);
404 }
405 // T0 QA (Alla Mayevskaya)
406 if (doT0) {
407 // no offline trigger selection
408 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/T0/AddTaskT0QA.C");
409 AliT0AnalysisTaskQA* taskt0qa= AddTaskT0QA();
410 taskt0qa->SelectCollisionCandidates(kTriggerMask);
411 }
412 // FMD QA (Christian Holm Christiansen)
413 if (doFMD) {
414 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskForwardQA.C");
415 // Parameters: usemc, usecentrality
416 AliAnalysisTaskSE *forwardQA = (AliAnalysisTaskSE *)AddTaskForwardQA(kTRUE, (Bool_t)doCentrality);
417 // No offline trigger config. needed (see #84077)
418 }
419 //
420 // PHOS QA (Boris Polishchuk)
421 //
422 if (doPHOS) {
423 gROOT->LoadMacro("$ALICE_ROOT/PWGGA/PHOSTasks/CaloCellQA/macros/AddTaskCaloCellsQA.C");
424 AliAnalysisTaskCaloCellsQA *taskPHOSCellQA1 = AddTaskCaloCellsQA(4, 1, NULL,"PHOSCellsQA_AnyInt");
425 taskPHOSCellQA1->SelectCollisionCandidates(kTriggerMask);
426 taskPHOSCellQA1->GetCaloCellsQA()->SetClusterEnergyCuts(0.3,0.3,1.0);
427 AliAnalysisTaskCaloCellsQA *taskPHOSCellQA2 = AddTaskCaloCellsQA(4, 1, NULL,"PHOSCellsQA_PHI7");
428 taskPHOSCellQA2->SelectCollisionCandidates(AliVEvent::kPHI7);
429 taskPHOSCellQA2->GetCaloCellsQA()->SetClusterEnergyCuts(0.3,0.3,1.0);
430 // Pi0 QA fo PbPb
431 if (iCollisionType) {
432 gROOT->LoadMacro("$ALICE_ROOT/PWGGA/PHOSTasks/PHOS_PbPbQA/macros/AddTaskPHOSPbPb.C");
433 AliAnalysisTaskPHOSPbPbQA* phosPbPb = AddTaskPHOSPbPbQA(0);
434 }
435 }
436 //
437 // EMCAL QA (Gustavo Conesa)
438 //
439 if (doEMCAL) {
440 gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEMCALTriggerQA.C");
441 AliAnalysisTaskEMCALTriggerQA *emctrig = AddTaskEMCALTriggerQA();
442 }
443 //
444 // FLOW and BF QA (C.Perez && A.Rodriguez)
445 //
446 if (doFBFqa) {
447 gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskFBFqa.C");
448 AliAnalysisTaskSE *qaFBFMB = (AliAnalysisTaskSE*) AddTaskFBFqa("qaFBFmb",kFALSE);
449 qaFBFMB->SelectCollisionCandidates(AliVEvent::kMB);
450 AliAnalysisTaskSE *qaFBFSC = (AliAnalysisTaskSE*) AddTaskFBFqa("qaFBFsc",kFALSE);
451 qaFBFSC->SelectCollisionCandidates(AliVEvent::kSemiCentral);
452 AliAnalysisTaskSE *qaFBFCE = (AliAnalysisTaskSE*) AddTaskFBFqa("qaFBFce",kFALSE);
453 qaFBFCE->SelectCollisionCandidates(AliVEvent::kCentral);
454 }
455}
456
457void QAmerge(const char *dir, Int_t stage)
458{
459// Merging method
460 TStopwatch timer;
461 timer.Start();
462 TString outputDir = dir;
463 TString outputFiles = "QAresults.root,EventStat_temp.root,RecoQAresults.root";
464 TString mergeExcludes = "";
465 TObjArray *list = outputFiles.Tokenize(",");
466 TIter *iter = new TIter(list);
467 TObjString *str;
468 TString outputFile;
469 Bool_t merged = kTRUE;
470 while((str=(TObjString*)iter->Next())) {
471 outputFile = str->GetString();
472 // Skip already merged outputs
473 if (!gSystem->AccessPathName(outputFile)) {
474 printf("Output file <%s> found. Not merging again.",outputFile.Data());
475 continue;
476 }
477 if (mergeExcludes.Contains(outputFile.Data())) continue;
478 merged = AliAnalysisAlien::MergeOutput(outputFile, outputDir, 10, stage);
479 if (!merged) {
480 printf("ERROR: Cannot merge %s\n", outputFile.Data());
481 return;
482 }
483 }
484 // read the analysis manager from file
485 if (!outputDir.Contains("Stage")) {
486 ofstream out;
487 out.open("outputs_valid", ios::out);
488 out.close();
489 return;
490 }
491 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
492 mgr->SetRunFromPath(mgr->GetRunFromAlienPath(dir));
493 mgr->SetSkipTerminate(kFALSE);
494 if (!mgr->InitAnalysis()) return;
495 mgr->PrintStatus();
496 AliLog::SetGlobalLogLevel(AliLog::kError);
497 TTree *tree = NULL;
498 mgr->StartAnalysis("gridterminate", tree);
499 ofstream out;
500 out.open("outputs_valid", ios::out);
501 out.close();
502 timer.Print();
503}