101 Printf(
"%-30s : %3s", title, use ?
"yes" :
"no");
149 ::Info(
"LoadLibrary",
"Loading %s", module);
150 gROOT->IncreaseDirLevel();
153 ::Error(
"AnalysisTrainNew.C::LoadLibrary",
"Empty module name");
154 gROOT->DecreaseDirLevel();
159 if (mod.EndsWith(
".so")) {
160 mod.Remove(mod.Index(
".so"));
161 ::Info(
"LoadLibrary",
"Loading library: %s", mod.Data());
164 ::Error(
"AnalysisTrainNew.C::LoadLibrary",
165 "Could not load library %s", module);
167 gROOT->DecreaseDirLevel();
168 return (result >= 0);
171 if (strlen(
gSystem->GetLibraries(module,
"", kFALSE)) > 0) {
172 ::Info(
"LoadLibrary",
"Module %s already loaded", module);
173 gROOT->DecreaseDirLevel();
177 ::Info(
"LoadLibrary",
"Trying to load lib%s", module);
178 result =
gSystem->Load(Form(
"lib%s", module));
180 ::Error(
"AnalysisTrainNew.C::LoadLibrary",
181 "Could not load module %s", module);
182 ::Info(
"LoadLibrary",
"Module %s, successfully loaded", module);
183 gROOT->DecreaseDirLevel();
184 return (result >= 0);
196 if (!
gSystem->Getenv(
"ALICE_PHYSICS")) {
197 ::Error(
"AnalysisTrainNew.C::LoadCommonLibraries",
198 "Analysis train requires that analysis libraries are "
199 "compiled with a local AliRoot");
213 gROOT->ProcessLine(
".include $ALICE_PHYSICS/include");
215 ::Info(
"AnalysisTrainNew.C::LoadCommodLibraries",
216 "Load common libraries: SUCCESS");
217 ::Info(
"AnalysisTrainNew.C::LoadCommodLibraries",
218 "Include path for Aclic compilation:\n%s",
221 ::Info(
"AnalysisTrainNew.C::LoadCommodLibraries",
222 "Load common libraries: FAILED");
262 if (!
LoadLibrary(
"PWGHFvertexingHF"))
return false;
269 ::Info(
"AnalysisTrainNew.C::LoadAnalysisLibraries",
270 "Load other libraries: SUCCESS");
285 TString ali =
"$(ALICE_PHYSICS)";
288 TString pwghf = ali +
"/PWGHF";
289 TString pwglf = ali +
"/PWGLF";
290 TString pwgje = ali +
"/PWGJE";
291 TString pwgdq = ali +
"/PWGDQ";
292 TString pwgpp = ali +
"/PWGPP";
296 AliAnalysisManager::SetCommonFileName(
"AODQA.root");
300 gROOT->LoadMacro(ana+
"/macros/AddTaskPIDResponse.C");
301 AliAnalysisTaskPIDResponse *PIDResponse = AddTaskPIDResponse(kTRUE);
306 gROOT->LoadMacro(pwgpp+
"/PilotTrain/AddTaskCDBconnect.C");
307 AliTaskCDBconnect *taskCDB = AddTaskCDBconnect(cdb_location,
grp->
run);
308 if (!taskCDB)
return;
310 AliCDBManager *cdb = AliCDBManager::Instance();
312 cdb->SetDefaultStorageFromRun(
grp->
run);
315 gROOT->LoadMacro(ana+
"/TenderSupplies/AddTaskTender.C");
322 gROOT->LoadMacro(oadb+
"/macros/AddTaskPhysicsSelection.C");
323 mgr->RegisterExtraFile(
"event_stat.root");
324 AliPhysicsSelectionTask *physSelTask =
325 AddTaskPhysicsSelection(aodCfg->
UseMC());
330 gROOT->LoadMacro(oadb+
"/macros/AddTaskCentrality.C");
331 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
332 taskCentrality->SetMCInput();
339 gROOT->LoadMacro(pwglf+
"/FORWARD/analysis2/AddTaskForwardMult.C");
349 Info(
"",
"Adding forward AOD task with mc=%d",
352 "ForwardAODConfig.C",
".");
353 gROOT->LoadMacro(pwglf+
"/FORWARD/analysis2/AddTaskCentralMult.C");
355 "CentralAODConfig.C");
356 const char* hack2=
"AliForwardCorrectionManager::Instance().Print(\"R\")";
357 gROOT->ProcessLine(hack2);
364 gROOT->LoadMacro(ana+
"/ESDfilter/macros/AddTaskESDFilter.C");
366 printf(
"Registering delta AOD file\n");
367 mgr->RegisterExtraFile(
"AliAOD.Muons.root");
368 mgr->RegisterExtraFile(
"AliAOD.Dimuons.root");
371 AliAnalysisTaskESDfilter *taskesdfilter =
385 pwghf+
"/vertexingHF/ConfigVertexingHF.C" :
386 pwghf+
"/vertexingHF/ConfigVertexingHF_Pb_AllCent.C");
390 gROOT->LoadMacro(pwghf+
"/vertexingHF/macros/AddTaskVertexingHF.C");
393 TFile::Cp(
gSystem->ExpandPathName(configPWG3d2h.Data()),
394 "file:ConfigVertexingHF.C");
397 if (!taskvertexingHF)
398 ::Warning(
"AnalysisTrainNew",
399 "AliAnalysisTaskSEVertexingHF cannot run for this train "
400 "conditions - EXCLUDED");
402 mgr->RegisterExtraFile(
"AliAOD.VertexingHF.root");
404 taskvertexingHF->SelectCollisionCandidates(0);
409 gROOT->LoadMacro(pwgdq+
"/dielectron/macros/AddTaskJPSIFilter.C");
413 ::Warning(
"AnalysisTrainNew",
414 "AliAnalysisTaskDielectronFilter cannot run for this train "
415 "conditions - EXCLUDED");
417 mgr->RegisterExtraFile(
"AliAOD.Dielectron.root");
419 taskJPSIfilter->SelectCollisionCandidates(0);
424 gROOT->LoadMacro(pwghf+
"/vertexingHF/AddD2HTrain.C");
425 TFile::Cp(
gSystem->ExpandPathName(configPWGHFd2h.Data()),
426 "file:ConfigVertexingHF.C");
427 AddD2HTrain(kFALSE, 1,0,0,0,0,0,0,0,0,0,0);
435 Warning(
"",
"JET analysis disabled - major restructuring ofg JETAN");
437 TString jetAOD =
"AliAOD.Jets.root";
442 Info(
"",
"Loading macro %s/macros/AddTaskJets.C", pwgje.Data());
443 gROOT->LoadMacro(pwgje+
"/macros/AddTaskJets.C");
446 AliAnalysisTask* task = AddTaskJets(
"AOD",
"UA1",0.4F,highPtMask,1.F,0);
448 ::Fatal(
"AnalysisTrainNew",
449 "AliAnalysisTaskJets cannot run for this train "
450 "conditions - EXCLUDED");
452 AliAnalysisTaskJets* taskjets =
static_cast<AliAnalysisTaskJets*
>(task);
453 if(!jetAOD.IsNull()) taskjets->SetNonStdOutputFile(jetAOD);
458 mgr->RegisterExtraFile(jetAOD);
464 taskjets = AddTaskJets(
"AOD",
"UA1",0.4,highPtMask,1.,2);
465 if(!jetAOD.IsNull()) taskjets->SetNonStdOutputFile(jetAOD);
469 taskjets = AddTaskJets(
"AOD",
"SISCONE",0.4,highPtMask,0.15,0);
470 if(!jetAOD.IsNull()) taskjets->SetNonStdOutputFile(jetAOD.Data());
471 cTmp = taskjets->GetNonStdBranch();
472 if(!cTmp.IsNull()) subtractBranches += Form(
"%s ",cTmp.Data());
475 gROOT->LoadMacro(pwgje+
"/macros/AddTaskJetCluster.C");
476 AliAnalysisTaskJetCluster *taskCl = 0;
482 taskCl = AddTaskJetCluster(
"AOD",
"",highPtMask,
486 taskCl->SetBackgroundCalc(kTRUE);
487 taskCl->SetNRandomCones(10);
488 taskCl->SetCentralityCut(fCenLo,fCenUp);
489 taskCl->SetGhostEtamax(fTrackEtaWindow);
490 TString bkgBranch = Form(
"%s_%s",
491 AliAODJetEventBackground::StdBranchName(),
492 taskCl->GetJetOutputBranch());
494 taskCl = AddTaskJetCluster(
"AOD",
"", highPtMask, psFlag,
"ANTIKT",
495 0.4, 2, 1, jetAOD, 0.15);
496 taskCl->SetCentralityCut(fCenLo,fCenUp);
497 if(
grp->
IsAA()) taskCl->SetBackgroundBranch(bkgBranch.Data());
499 taskCl->SetNRandomCones(10);
500 subtractBranches += Form(
"%s ",taskCl->GetJetOutputBranch());
502 taskCl = AddTaskJetCluster(
"AOD",
"", highPtMask, psFlag,
"ANTIKT",
503 0.2, 0 , 1, jetAOD, 0.15);
504 taskCl->SetCentralityCut(fCenLo,fCenUp);
505 if(
grp->
IsAA())taskCl->SetBackgroundBranch(bkgBranch);
507 subtractBranches += Form(
"%s ",taskCl->GetJetOutputBranch());
510 if(
grp->
IsAA() && !subtractBranches.IsNull()) {
511 gROOT->LoadMacro(pwgje+
"/macros/AddTaskJetBackgroundSubtract.C");
512 AliAnalysisTaskJetBackgroundSubtract *taskSubtract = 0;
513 taskSubtract = AddTaskJetBackgroundSubtract(subtractBranches,1,
515 taskSubtract->SetBackgroundBranch(bkgBranch);
516 if(!jetAOD.IsNull()) taskSubtract->SetNonStdOutputFile(jetAOD.Data());
535 chain =
new TChain(
"esdTree");
536 if (
gSystem->AccessPathName(
"AliESDs.root"))
537 ::Error(
"AnalysisTrainNew.C::CreateChain",
538 "File: AliESDs.root not in ./data dir");
540 chain->Add(
"AliESDs.root");
541 if (chain->GetNtrees())
return chain;
552 out.open(
"outputs_valid", ios::out);
569 outputFiles.Add(
new TObjString(
"AODQA.root"));
570 outputFiles.Add(
new TObjString(
"pyxsec_hists.root"));
572 Bool_t mergeTrees = stage <= 1;
574 outputFiles.Add(
new TObjString(
"AliAOD.root"));
576 outputFiles.Add(
new TObjString(
"AliAOD.VertexingHF.root"));
580 outputFiles.Add(
new TObjString(
"AliAOD.Muons.root"));
582 outputFiles.Add(
new TObjString(
"AliAOD.Jets.root"));
584 outputFiles.Add(
new TObjString(
"AliAOD.Dielectron.root"));
588 TIter iter(&outputFiles);
591 while ((str = static_cast<TObjString*>(iter()))) {
592 TString& outputFile = str->GetString();
594 if (!
gSystem->AccessPathName(outputFile)) {
595 ::Warning(
"Merge",
"Output file <%s> found. Not merging again.",
599 if (mergeExcludes.Contains(outputFile.Data()))
continue;
600 merged = AliAnalysisAlien::MergeOutput(outputFile,
605 ::Error(
"Merge",
"Cannot merge %s\n", outputFile.Data());
611 if (!outputDir.Contains(
"stage")) {
619 mgr->SetSkipTerminate(kFALSE);
620 if (!mgr->InitAnalysis())
return;
624 mgr->StartAnalysis(
"gridterminate",0);
641 cholm = host.BeginsWith(
"hehi");
642 if (cholm) TGrid::Connect(
"alien:");
648 gROOT->Macro(Form(
"GRP.C(%d)", run));
649 gROOT->Macro(
"AODConfig.C");
650 gROOT->Macro(
"BaseConfig.C");
651 gROOT->Macro(
"DetConfig.C");
660 printf(
"===================================================\n");
661 printf(
"=========== RUNNING FILTERING TRAIN ==========\n");
662 printf(
"===================================================\n");
663 printf(
"= Configuring analysis train for:\n");
668 ::Error(
"AnalysisTrain",
"Could not load common libraries");
676 mgr->SetRunFromPath(
grp->
run);
677 if (aodCfg->
UseSysInfo()) mgr->SetNSysInfo(100);
679 ::Error(
"AnalysisTrain",
"Could not load analysis libraries");
684 AliESDInputHandler *esdHandler =
new AliESDInputHandler();
685 mgr->SetInputEventHandler(esdHandler);
688 if (aodCfg->
UseMC()) {
689 AliMCEventHandler* mcHandler =
new AliMCEventHandler();
690 mgr->SetMCtruthEventHandler(mcHandler);
691 mcHandler->SetPreReadMode(1);
692 mcHandler->SetReadTR(aodCfg->
UseTR());
697 AliAODHandler* aodHandler =
new AliAODHandler();
698 aodHandler->SetOutputFileName(
"AliAOD.root");
699 mgr->SetOutputEventHandler(aodHandler);
708 if (aodCfg->
UseDBG()) mgr->SetDebugLevel(3);
725 if (!mgr->InitAnalysis())
return;
729 mgr->SetSkipTerminate(kTRUE);
730 mgr->StartAnalysis(
"local", chain);
return jsonbuilder str().c_str()
void AODMerge(const char *dir, Int_t stage)
AliAnalysisTask * AddTaskForwardMult(Bool_t mc, ULong_t runNo=0, UShort_t sys=0, UShort_t sNN=0, Short_t field=0, const char *config="ForwardAODConfig.C", const char *corrs=0, const char *dead=0)
void ana(Int_t mode=mGRID)
virtual Bool_t UseCentrality() const =0
AliAnalysisTaskSEVertexingHF * AddTaskVertexingHF(Int_t collisionSystem, TString localdir="", TString configfilename="", Int_t runnumber=-1, TString strPeriod="", const char *fname="AliAOD.VertexingHF.root")
virtual Bool_t UsePWGHFvertexing() const =0
virtual Bool_t UseTender() const =0
virtual Bool_t UsePIDResponse() const =0
Bool_t LoadAnalysisLibraries()
virtual Bool_t UseV0tender() const =0
virtual Bool_t UsePWGHFd2h() const =0
virtual Bool_t UseSysInfo() const =0
virtual Bool_t UseTR() const =0
virtual Bool_t UsePWGMuonTrain() const =0
virtual Bool_t UseCDBconnect() const =0
virtual Bool_t UseFMD() const
Int_t AddD2HTrain(Bool_t readMC=kTRUE, Int_t addQA=1, Int_t addD0Mass=1, Int_t addD0MassLS=1, Int_t addDplus=1, Int_t addLSD0=0, Int_t addCFD0=0, Int_t addPromptD0=1, Int_t addDs=0, Int_t addDStar=1, Int_t addDStarJets=0, Int_t addCFDStar=0)
virtual Bool_t UseESDfilter() const =0
virtual Bool_t UseMUONcopyAOD() const =0
virtual Bool_t UseMC() const =0
virtual Bool_t UseMUON() const
void AddAnalysisTasks(const char *cdb_location)
virtual Bool_t UseAODhandler() const =0
virtual Bool_t UseCORRFW() const =0
void AOD(UInt_t run, const char *xmlfile=0, Int_t stage=0)
virtual void PrintOne(const char *title, Bool_t use) const
virtual Bool_t UseKFILTER() const =0
Bool_t LoadCommonLibraries()
virtual Bool_t UseDBG() const =0
virtual Bool_t UsePWGLFForward() const =0
Bool_t LoadLibrary(const char *module)
AliAnalysisTask * AddTaskCentralMult(Bool_t mc=false, ULong_t runNo=0, UShort_t sys=0, UShort_t sNN=0, Short_t field=0, const char *config="CentralAODConfig.C", const char *corrs=0)
virtual Bool_t UsePWGDQJPSIfilter() const =0
virtual Bool_t UseJETAN() const =0
virtual void Print() const
virtual Bool_t UsePhysicsSelection() const =0
virtual Bool_t UseAODTAGS() const =0
virtual Bool_t UseJETANdelta() const =0