40 Printf(
"ABSO: %3s",
UseABSO() ?
"yes" :
"no");
41 Printf(
"ACORDE: %3s",
UseACORDE() ?
"yes" :
"no");
42 Printf(
"DIPO: %3s",
UseDIPO() ?
"yes" :
"no");
43 Printf(
"EMCAL: %3s",
UseEMCAL() ?
"yes" :
"no");
44 Printf(
"FMD: %3s",
UseFMD() ?
"yes" :
"no");
45 Printf(
"FRAME: %3s",
UseFRAME() ?
"yes" :
"no");
46 Printf(
"HALL: %3s",
UseHALL() ?
"yes" :
"no");
47 Printf(
"ITS: %3s",
UseITS() ?
"yes" :
"no");
48 Printf(
"MAG: %3s",
UseMAG() ?
"yes" :
"no");
49 Printf(
"MUON: %3s",
UseMUON() ?
"yes" :
"no");
50 Printf(
"PHOS: %3s",
UsePHOS() ?
"yes" :
"no");
51 Printf(
"PIPE: %3s",
UsePIPE() ?
"yes" :
"no");
52 Printf(
"PMD: %3s",
UsePMD() ?
"yes" :
"no");
53 Printf(
"HMPID: %3s",
UseHMPID() ?
"yes" :
"no");
54 Printf(
"SHIL: %3s",
UseSHIL() ?
"yes" :
"no");
55 Printf(
"T0: %3s",
UseT0() ?
"yes" :
"no");
56 Printf(
"TOF: %3s",
UseTOF() ?
"yes" :
"no");
57 Printf(
"TPC: %3s",
UseTPC() ?
"yes" :
"no");
58 Printf(
"TRD: %3s",
UseTRD() ?
"yes" :
"no");
59 Printf(
"VZERO: %3s",
UseVZERO() ?
"yes" :
"no");
60 Printf(
"ZDC: %3s",
UseZDC() ?
"yes" :
"no");
122 if (!str.IsNull()) str.Append(
" ");
152 virtual const char*
Prefix()
const {
return ""; }
160 ::Fatal(
"VirtualOCDBConfig",
"Dummy init called - redefine!");
171 AliCDBManager* cdb = AliCDBManager::Instance();
172 const char* prefix = Prefix();
173 TString path = Form(
"alien://Folder=/alice/simulation/%s/%s",
174 prefix, !ideal ?
"Residual" :
"Ideal");
175 ::Info(
"AddStore",
"%s -> %s", key, path.Data());
176 cdb->SetSpecificStorage(key, path);
203 if (
grp->
IsPP())
return "pythia";
205 else if (
grp->
IsAA())
return "hijing";
214 if (!cls.IsNull() && gROOT->GetClass(cls))
return;
220 if (libs.Contains(name))
return;
232 if (!runType.EqualTo(
"hydjet", TString::kIgnoreCase))
244 if (gen) LoadGen(
"");
246 if (gROOT->GetClass(Form(
"AliPythia6%c", m)))
return;
249 v.ReplaceAll(
".",
"_");
260 if (gROOT->GetClass(
"THijing"))
return;
263 AliPDG::AddParticlesToPdgDataBase();
290 if (gROOT->GetClass(
"TDPMjet"))
return;
300 if (gROOT->GetClass(
"TAmpt"))
return;
321 ::Fatal(
"MakeGenerator",
"No EG spec given");
328 AliGenerator* g = CreateGenerator(runType,b1,b2);
333 g->SetSigma(0.0025, 0.0029, 0);
334 g->SetVertexSmear(AliGenerator::kPerEvent);
349 ::Fatal(
"MakeGenerator",
"No EG spec given");
356 TVirtualMCDecayer* decayer = CreateDecayer(runType);
358 if (decayer) decayer->Init();
371 virtual AliGenerator* CreateGenerator(
const TString& runType,
381 virtual TVirtualMCDecayer* CreateDecayer(
const TString& runType) = 0;
407 const char* xmlFile =
"wn.xml",
409 const char* cdb =
"raw://")
416 if (cdbString.Contains(
"raw://")) {
417 TGrid::Connect(
"alien://");
418 if (!gGrid || !gGrid->IsConnected()) {
419 ::Error(
"Run",
"No grid connection");
435 mgr->SetRunFromPath(
grp->
run);
438 AliESDInputHandlerRP *esdHandler =
new AliESDInputHandlerRP();
439 mgr->SetInputEventHandler(esdHandler);
441 esdHandler->SetReadFriends(kTRUE);
442 esdHandler->SetActiveBranches(
"ESDfriend");
447 AliMCEventHandler* mcHandler =
new AliMCEventHandler();
448 mgr->SetMCtruthEventHandler(mcHandler);
449 mcHandler->SetPreReadMode(1);
450 mcHandler->SetReadTR(
true);
454 AliAODHandler* aodHandler =
new AliAODHandler();
455 aodHandler->SetOutputFileName(
"AliAOD.root");
456 mgr->SetOutputEventHandler(aodHandler);
460 if (!AddTasks())
return false;
464 return Merge(xmlfile, stage);
468 if (!chain)
return false;
472 if (!mgr->InitAnalysis()) {
473 ::Error(
"Run",
"Failed to initialize the train");
478 mgr->SetSkipTerminate(kTRUE);
479 mgr->StartAnalysis(
"local", chain);
497 Bool_t final = outputDir.Contains(
"Stage");
498 TCollection* outputFiles = GetFilesToMerge(stage,
final);
500 ::Warning(
"Merge",
"Nothing to merge");
503 TIter iter(outputFiles);
506 while((str = static_cast<TObjString*>(iter()))) {
507 TString& outputFile = str->GetString();
509 if (!
gSystem->AccessPathName(outputFile)) {
510 ::Warning(
"Merge",
"Output file <%s> found. Not merging again.",
514 merged = AliAnalysisAlien::MergeOutput(outputFile,
518 if (merged)
continue;
520 ::Error(
"Merge",
"Cannot merge %s\n", outputFile.Data());
523 if (MergeFileInfo()) {
524 TString infolog =
"fileinfo.log";
525 AliAnalysisAlien::MergeInfo(infolog, dir);
537 mgr->SetSkipTerminate(kFALSE);
538 if (!mgr->InitAnalysis()) {
539 ::Error(
"Merge",
"Failed to initialize the train");
544 mgr->StartAnalysis(
"gridterminate", (
TTree*)0);
563 ::Info(
"LoadLibrary",
"Loading %s", module);
564 gROOT->IncreaseDirLevel();
567 ::Error(
"LoadLibrary",
"Empty module name");
568 gROOT->DecreaseDirLevel();
573 if (mod.EndsWith(
".so")) {
574 mod.Remove(mod.Index(
".so"));
575 ::Info(
"LoadLibrary",
"Loading .so: %s", mod.Data());
578 ::Error(
"oadLibrary",
"Could not load library %s", module);
580 gROOT->DecreaseDirLevel();
581 return (result >= 0);
584 if (strlen(
gSystem->GetLibraries(module,
"", kFALSE)) > 0) {
585 ::Info(
"LoadLibrary",
"Module %s.so already loaded", module);
586 gROOT->DecreaseDirLevel();
590 ::Info(
"LoadLibrary",
"Trying to load lib%s.so", module);
591 result =
gSystem->Load(Form(
"lib%s", module));
593 ::Error(
"LoadLibrary",
"Could not load module %s", module);
594 ::Info(
"LoadLibrary",
"Module %s, successfully loaded", module);
595 gROOT->DecreaseDirLevel();
596 return (result >= 0);
606 if (!
gSystem->Getenv(
"ALICE_PHYSICS")) {
607 ::Error(
"LoadBaseLibraries",
608 "Analysis trains requires that analysis libraries are " 609 "compiled with a local AliRoot");
624 gROOT->ProcessLine(
".include $ALICE_PHYSICS/include");
626 ::Info(
"LoadBaseLibraries",
627 "Load common libraries: SUCCESS");
628 ::Info(
"LoadBaseLibraries",
629 "Include path for Aclic compilation:\n%s",
632 ::Info(
"LoadBaseLibraries",
633 "Load common libraries: FAILED");
644 if (
gSystem->AccessPathName(
"AliESDs.root")) {
645 ::Error(
"CreateChain",
646 "File: AliESDs.root not in ./data dir");
652 chain->Add(
"AliESDs.root");
653 if (!chain->GetNtrees()) {
667 out.open(
"outputs_valid", ios::out);
684 virtual const char*
GetName()
const {
return "dummy"; }
740 Info(
"",
"Defined base classes for configuration");
virtual Bool_t UseFRAME() const
virtual const char * Prefix() const
virtual Bool_t UseMAG() const
virtual Bool_t LoadBaseLibraries()
virtual const char * GeometrySource() const
virtual Bool_t UseSHIL() const
virtual TCollection * GetFilesToMerge(Int_t stage, Bool_t final) const
static void LoadTherminator()
virtual Bool_t UsePMD() const
virtual Bool_t UsePIPE() const
virtual Bool_t UseDIPO() const
virtual Bool_t UseHALL() const
Bool_t Run(UInt_t run, const char *xmlFile="wn.xml", Int_t stage=0, const char *cdb="raw://")
static const char * DeduceRunType()
virtual Bool_t UseMC() const
Bool_t LoadLibrary(const char *module)
TVirtualMCDecayer * MakeDecayer(const TString &rt)
virtual Bool_t IsLego() const
virtual void Init(Bool_t forSim)
virtual Bool_t UseFMD() const
void GetRecoString(TString &enable) const
virtual Bool_t UseT0() const
virtual Bool_t UseABSO() const
virtual Bool_t UsePHOS() const
virtual Bool_t UseMUON() const
virtual Bool_t UseACORDE() const
virtual Bool_t MergeFileInfo() const
virtual Bool_t UseTPC() const
void AddStore(const char *key, Bool_t ideal)
static void LoadGen(const TString &runType)
virtual Bool_t MakeAOD() const
void GetHits2DigitsString(TString &fromHits) const
virtual Bool_t UseFriends() const
TH1 * Merge(const TH1 *cen, const TH1 *fwd, Double_t &xlow, Double_t &xhigh)
static void LoadEposLHC()
virtual Bool_t UseITS() const
Bool_t Merge(const char *dir, Int_t stage)
virtual Bool_t UseTRD() const
virtual Bool_t UseVZERO() const
void MakeAOD(TString name="aod", TString url="help", TString options="help")
virtual const char * GetName() const
virtual Bool_t UseZDC() const
virtual Bool_t UseEMCAL() const
static void LoadLibrary(const TString &name, const TString &cls="")
virtual void LoadConfig()
static void LoadPythia(Bool_t gen=true, const char *vers="6.4.21")
virtual Bool_t AddTasks() const
Bool_t LoadLibrary(const char *module)
static void Append2Str(TString &str, const char *append)
virtual Bool_t UseTOF() const
virtual Bool_t UseHMPID() const
void GetSDigitString(TString &sDigits) const
AliGenerator * MakeGenerator(const TString &rt, Float_t b1, Float_t b2, Bool_t smear=true)