/*
- Template of calibration/filtering macro using ESD
+ 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(105160);
-
+ runCalibTrain("104892");
*/
-void runCalibTrain(TString runNumberString, const char *inFileName = "AliESDs.root")
+void runCalibTrain(Int_t runNumber, const char *inFileName = "AliESDs.root", const char *ocdb="raw://")
{
- gROOT->Macro("LoadLibraries.C");
- gROOT->LoadMacro("ConfigCalibTrain.C");
- gROOT->LoadMacro("AddTaskFilterFriend.C");
- gROOT->LoadMacro("AddTaskFilterFriendSecond.C");
- gROOT->LoadMacro("AddTaskAddObject.C");
+ //
+ // 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);
- gROOT->LoadMacro("AddTaskTPCCalib.C");
-
- AliLog::SetClassDebugLevel("AliESDEvent",19);
+ // steering input chain
TChain *chain = new TChain("esdTree");
-
- // Steering input chain
-
chain->Add(inFileName);
- Int_t runNumber = runNumberString.Atoi();
+
+ // config calibration train
+ // setting geometry and B-field from GRP
printf("runNumber from runCalibTrain = %d\n",runNumber);
- ConfigCalibTrain(runNumber, "raw://");
+ 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<AliGRPObject*>(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();
- mgr->SetInputEventHandler (inpHandler);
+ inpHandler->SetReadFriends(1);
+ mgr->SetInputEventHandler(inpHandler);
// Output
-
+ const char *outFile = "AliESDfriends_v1.root";
AliESDHandler* esdHandler = new AliESDHandler();
mgr->SetOutputEventHandler(esdHandler);
- esdHandler->SetOutputFileName("AliESDfriends_v1.root");
- // Steering Tasks
-
- AliAnalysisTaskFilterFriend* filter = AddTaskFilterFriend();
- AliAnalysisTaskFilterFriendSecond* filter2 = AddTaskFilterFriendSecond();
- AliAnalysisTaskAddObject* add = AddTaskAddObject();
-
+ esdHandler->SetOutputFileName(outFile);
+ mgr->SetCommonFileName(outFile);
+ //
// Detector Tasks
-
- AliAnalysisTask* tTPC = AddTaskTPCCalib(runNumber);
-
+ //
+ 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;