/* Template of calibration/filtering macro using ESD: - requires AliESDs.root and AliESDfriend.root - requires OCDB access (default set to "raw://") - requires run number as argument to init OCDB - calls LoadLibraries.C, ConfigCalibTrain.C and AddTaskTPCCalib.C macros - output AliESDfriends_v1.root with TPC and TRD calibration objects are created Example: .L $ALICE_ROOT/ANALYSIS/macros/runCalibTrain.C runCalibTrain("104892"); */ void runCalibTrain(Int_t runNumber, const char *inFileName = "AliESDs.root", const char *ocdb="raw://") { // // macro to run TPC calibration train // AliSysInfo::SetVerbose(kTRUE); AliLog::SetGlobalLogLevel(AliLog::kError); gROOT->Macro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/LoadLibraries.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/ConfigCalibTrain.C"); gSystem->SetIncludePath("-I$ALICE_ROOT/include -I$ALICE_ROOT/ANALYSIS -g"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/commonMacros/CleanGeom.C++"); // detector tasks gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskTPCCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskTRDCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTOFAnalysisTaskCalibPass0.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskT0Calib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskMeanVertexCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskSDDCalib.C"); // switch off debug AliLog::SetClassDebugLevel("AliESDEvent",0); // steering input chain TChain *chain = new TChain("esdTree"); chain->Add(inFileName); // config calibration train // setting geometry and B-field from GRP printf("runNumber from runCalibTrain = %d\n",runNumber); printf("ocdb from runCalibTrain = %s\n",ocdb); AliSysInfo::AddStamp("BeforeConfiguringCalibTrain"); ConfigCalibTrain(runNumber, ocdb); AliSysInfo::AddStamp("AfterConfiguringCalibTrain"); if (gROOT->LoadMacro("localOCDBaccessConfig.C")==0) { localOCDBaccessConfig(); } // // check the presence of the detectors AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data"); AliGRPObject* grpData = dynamic_cast(entry->GetObject()); if (!grpData) {printf("Failed to get GRP data for run",runNumber); return;} Int_t activeDetectors = grpData->GetDetectorMask(); TString detStr = AliDAQ::ListOfTriggeredDetectors(activeDetectors); printf("Detectors in the data:\n%s\n",detStr.Data()); // setup analysis // AliAnalysisManager *mgr = new AliAnalysisManager("ESD to ESD", "Analysis Manager"); // mgr->SetDebugLevel(3); mgr->SetNSysInfo(50); mgr->SetCacheSize(0); // Input AliESDInputHandler* inpHandler = new AliESDInputHandler(); inpHandler->SetReadFriends(1); mgr->SetInputEventHandler(inpHandler); // Output const char *outFile = "AliESDfriends_v1.root"; AliESDHandler* esdHandler = new AliESDHandler(); mgr->SetOutputEventHandler(esdHandler); esdHandler->SetOutputFileName(outFile); mgr->SetCommonFileName(outFile); // // Detector Tasks // AliSysInfo::AddStamp("BeforeTPC"); if ( detStr.Contains("TPC")) AddTaskTPCCalib(runNumber); AliSysInfo::AddStamp("BeforeTRD"); if ( detStr.Contains("TRD") && detStr.Contains("TPC")) AddTaskTRDCalib(runNumber); AliSysInfo::AddStamp("BeforeTOF"); if ( detStr.Contains("TOF") && detStr.Contains("TPC")) AddTOFAnalysisTaskCalibPass0(); AliSysInfo::AddStamp("BeforeT0"); if ( detStr.Contains("T0")) AddTaskT0Calib(runNumber); AliSysInfo::AddStamp("BeforeMeanVertex"); if ( detStr.Contains("ITSSPD")) AddTaskMeanVertexCalib(); // Bool_t okTPC = detStr.Contains("TPC"); Bool_t useTPCcrv=kTRUE; Bool_t writeITSTP = kFALSE; if (!okTPC) useTPCcrv = kFALSE; AliSysInfo::AddStamp("BeforeSDD"); AliAnalysisTaskITSAlignQA *itsAlign = AddTaskSDDCalib(0,writeITSTP,useTPCcrv); if (!okTPC) itsAlign->SetUseITSstandaloneTracks(kTRUE); if (grpData->GetL3Current()[0] < 300) itsAlign->SetMinPt(0.001); // // dummy task to clean geometry in Terminate >>>> CleanGeom* clgmTask = new CleanGeom("cleanGeom"); mgr->AddTask(clgmTask); AliAnalysisDataContainer *dummyInp = mgr->GetCommonInputContainer(); if (dummyInp) mgr->ConnectInput(clgmTask,0,dummyInp); // dummy task to clean geometry in Terminate <<<< // // Run the analysis AliSysInfo::AddStamp("BeforeInitAnalysis"); if (!mgr->InitAnalysis()) { printf("Analysis cannot be started, returning\n"); return; } mgr->PrintStatus(); AliSysInfo::AddStamp("BeforeStartAnalysis"); mgr->StartAnalysis("local", chain); return; }