/* 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 // AliLog::SetGlobalLogLevel(AliLog::kError); gROOT->Macro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/LoadLibraries.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/ConfigCalibTrain.C"); // detector tasks gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskTPCCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskTRDCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTOFAnalysisTaskCalibPass0.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskT0Calib.C"); // gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/AddTaskMeanVertexCalib.C"); gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass1/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); ConfigCalibTrain(runNumber, ocdb); 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); // 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 // if ( detStr.Contains("TPC")) AddTaskTPCCalib(runNumber); if ( detStr.Contains("TRD") && detStr.Contains("TPC")) AddTaskTRDCalib(runNumber); if ( detStr.Contains("TOF") && detStr.Contains("TPC")) AddTOFAnalysisTaskCalibPass0(); if ( detStr.Contains("T0")) AddTaskT0Calib(runNumber); //if ( detStr.Contains("ITSSPD")) tMeanVtx = AddTaskMeanVertexCalib(); // Bool_t okTPC = detStr.Contains("TPC"); Bool_t useTPCcrv=kFALSE; Bool_t writeITSTP = kFALSE; if (!okTPC) useTPCcrv = kFALSE; AliAnalysisTaskITSAlignQA *itsAlign = AddTaskSDDCalib(0,writeITSTP,useTPCcrv); if (!okTPC) itsAlign->SetUseITSstandaloneTracks(kTRUE); if (grpData->GetL3Current()[0] < 300) itsAlign->SetMinPt(0.001); // // Run the analysis if (!mgr->InitAnalysis()) { printf("Analysis cannot be started, returning\n"); return; } mgr->PrintStatus(); mgr->StartAnalysis("local", chain); return; }