void OCDBConfig(Int_t tag, Int_t type) { switch (tag) { // kOCDBDefault case kOCDBDefault: OCDBDefault(type); break; // kOCDBCustom case kOCDBCustom: if ((gROOT->LoadMacro("OCDBCustom.C")) != 0) { printf("ERROR: cannot find OCDBCustom.C\n"); abort(); return; } gROOT->ProcessLine(Form("OCDBCustom(%d);",type)); break; } }
//______________________________________________________________________________ void QAtrainsim(Int_t run = 0, const char *xmlfile = "wn.xml", Int_t stage = 0, /*0 = QA train, 1...n - merging stage*/ const char *cdb = "raw://") { run_number = run; ProcessEnvironment(); // // set OCDB source TString ocdbConfig = "default,snapshot"; if (gSystem->Getenv("CONFIG_OCDB")) ocdbConfig = gSystem->Getenv("CONFIG_OCDB"); if (stage != 0) { // gSystem->Setenv("CONFIG_RUN", gSystem->Getenv("ALIEN_JDL_LPMRUNNUMBER")); // set OCDB gROOT->LoadMacro("$ALIDPG_ROOT/MC/OCDBConfig.C"); OCDBDefault(1); } else if (ocdbConfig.Contains("alien") || ocdbConfig.Contains("cvmfs")) { // set OCDB gROOT->LoadMacro("$ALIDPG_ROOT/MC/OCDBConfig.C"); OCDBDefault(1); } else { // set OCDB snapshot mode AliCDBManager *cdbm = AliCDBManager::Instance(); cdbm->SetSnapshotMode("OCDBrec.root"); } printf("------ Run QAtrainsim.C for collision type %s ------\n",CollisionSystem[iCollisionType]); UpdateFlags(); TString cdbString(cdb); if (cdbString.Contains("raw://") && !ocdbConfig.Contains("cvmfs")) { TGrid::Connect("alien://"); if (!gGrid || !gGrid->IsConnected()) { ::Error("QAtrain", "No grid connection"); return; } } // gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT/include -I$ALICE_ROOT -I$ALICE_PHYSICS -I$ALICE_PHYSICS/include -I$ALICE_PHYSICS/PWGPP/TRD/macros"); // Set temporary merging directory to current one gSystem->Setenv("TMPDIR", gSystem->pwd()); // Set temporary compilation directory to current one gSystem->SetBuildDir(gSystem->pwd(), kTRUE); // Load libraries // LoadLibraries(); printf("Include path: %s\n", gSystem->GetIncludePath()); // Create manager AliAnalysisManager *mgr = new AliAnalysisManager("PilotAnalysis_sim", "Production train"); mgr->SetRunFromPath(run_number); // Input handler AliESDInputHandlerRP *esdHandler = new AliESDInputHandlerRP(); esdHandler->SetReadFriends(kTRUE); esdHandler->SetActiveBranches("ESDfriend"); mgr->SetInputEventHandler(esdHandler); mgr->SetDebugLevel(debug_level); // Monte Carlo handler AliMCEventHandler* mcHandler = new AliMCEventHandler(); mgr->SetMCtruthEventHandler(mcHandler); mcHandler->SetPreReadMode(1); mcHandler->SetReadTR(kTRUE); // subsidiary handler for mc-to-mc embedding TString bgDir = gSystem->Getenv("CONFIG_BGEVDIR"); if (!bgDir.IsNull()) { // add extra handler for underlaying event if (bgDir.BeginsWith("alien://") && !gGrid && !TGrid::Connect("alien://")) { printf("Failed to create a grid connection\n"); abort(); } if (!bgDir.EndsWith("/")) bgDir += "/"; AliMCEventHandler* mcHandlerBg = new AliMCEventHandler(); mcHandlerBg->SetInputPath(bgDir.Data()); mcHandlerBg->SetPreReadMode(1); mcHandlerBg->SetReadTR(kTRUE); mcHandler->AddSubsidiaryHandler(mcHandlerBg); } // AnalysisTasks // mgr->Lock(); mgr->SetFileInfoLog("fileinfo.log"); AddAnalysisTasks(cdb); // mgr->UnLock(); // mcHandler = (AliMCEventHandler*)mgr->GetMCtruthEventHandler(); // mcHandler->SetReadTR(kTRUE); // mcHandler->SetPreReadMode(1); if (stage>0) { QAmerge(xmlfile, stage); return; } // Input chain TChain *chain = new TChain("esdTree"); chain->Add("AliESDs.root"); TStopwatch timer; timer.Start(); if (mgr->InitAnalysis()) { mgr->PrintStatus(); mgr->SetSkipTerminate(kTRUE); // mgr->SetNSysInfo(1); mgr->StartAnalysis("local", chain); } timer.Print(); }