]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/CalibMacros/CPass0/runCalibTrain.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGPP / CalibMacros / CPass0 / runCalibTrain.C
1 /*
2   Template of calibration/filtering macro using ESD:
3   - requires AliESDs.root and AliESDfriend.root
4   - requires OCDB access (default set to "raw://")
5   - requires run number as argument to init OCDB
6   - calls LoadLibraries.C, ConfigCalibTrain.C and AddTaskTPCCalib.C macros
7   - output AliESDfriends_v1.root with TPC and TRD calibration objects are created
8
9   Example:
10   .L $ALICE_ROOT/ANALYSIS/macros/runCalibTrain.C
11   runCalibTrain("104892");
12 */
13
14 void runCalibTrain(Int_t runNumber, const char *inFileName = "AliESDs.root", const char *ocdb="raw://")
15 {
16   //
17   // macro to run TPC calibration train 
18   //
19   AliSysInfo::SetVerbose(kTRUE);
20   AliLog::SetGlobalLogLevel(AliLog::kError); 
21   gROOT->Macro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/LoadLibraries.C");
22   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/ConfigCalibTrain.C");
23   gSystem->SetIncludePath("-I$ALICE_ROOT/include -I$ALICE_ROOT/ANALYSIS -g"); 
24   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/commonMacros/CleanGeom.C++");
25
26   // detector tasks
27   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskTPCCalib.C");
28   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskTRDCalib.C");
29   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTOFAnalysisTaskCalibPass0.C");
30   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskT0Calib.C");
31   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskMeanVertexCalib.C");
32   gROOT->LoadMacro("$ALICE_ROOT/PWGPP/CalibMacros/CPass0/AddTaskSDDCalib.C"); 
33
34   // switch off debug 
35   AliLog::SetClassDebugLevel("AliESDEvent",0);
36   
37   // steering input chain
38   TChain *chain = new TChain("esdTree");
39   chain->Add(inFileName);
40
41   // config calibration train
42   // setting geometry and B-field from GRP
43   printf("runNumber from runCalibTrain = %d\n",runNumber);
44   printf("ocdb from runCalibTrain = %s\n",ocdb);
45   AliSysInfo::AddStamp("BeforeConfiguringCalibTrain");
46   ConfigCalibTrain(runNumber, ocdb);
47   AliSysInfo::AddStamp("AfterConfiguringCalibTrain");  
48   
49   if (gROOT->LoadMacro("localOCDBaccessConfig.C")==0) {
50     localOCDBaccessConfig();
51   }  
52
53   //
54   // check the presence of the detectors
55   AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
56   AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject()); 
57   if (!grpData) {printf("Failed to get GRP data for run",runNumber); return;}
58   Int_t activeDetectors = grpData->GetDetectorMask(); 
59   TString detStr = AliDAQ::ListOfTriggeredDetectors(activeDetectors);
60   printf("Detectors in the data:\n%s\n",detStr.Data());
61
62   // setup analysis
63   //
64   AliAnalysisManager *mgr  = new AliAnalysisManager("ESD to ESD", "Analysis Manager");
65   // mgr->SetDebugLevel(3);
66   mgr->SetNSysInfo(50);   
67   mgr->SetCacheSize(0);
68
69   // Input
70   AliESDInputHandler* inpHandler = new AliESDInputHandler();
71   inpHandler->SetReadFriends(1);
72   mgr->SetInputEventHandler(inpHandler);
73   
74   // Output
75   const char *outFile = "AliESDfriends_v1.root";
76   AliESDHandler* esdHandler   = new AliESDHandler();
77   mgr->SetOutputEventHandler(esdHandler);
78   esdHandler->SetOutputFileName(outFile);
79   mgr->SetCommonFileName(outFile);
80   //  
81   // Detector Tasks
82   //
83   AliSysInfo::AddStamp("BeforeTPC");
84   if ( detStr.Contains("TPC"))    AddTaskTPCCalib(runNumber);
85
86   AliSysInfo::AddStamp("BeforeTRD");
87   if ( detStr.Contains("TRD") && detStr.Contains("TPC"))    AddTaskTRDCalib(runNumber);
88
89   AliSysInfo::AddStamp("BeforeTOF");
90   if ( detStr.Contains("TOF") && detStr.Contains("TPC"))    AddTOFAnalysisTaskCalibPass0();
91
92   AliSysInfo::AddStamp("BeforeT0");
93   if ( detStr.Contains("T0"))     AddTaskT0Calib(runNumber);
94
95   AliSysInfo::AddStamp("BeforeMeanVertex");
96   if ( detStr.Contains("ITSSPD")) AddTaskMeanVertexCalib();
97
98
99   //
100   Bool_t okTPC = detStr.Contains("TPC");
101   Bool_t useTPCcrv=kTRUE;
102   Bool_t writeITSTP = kFALSE;
103   if (!okTPC) useTPCcrv = kFALSE;
104   AliSysInfo::AddStamp("BeforeSDD");
105   AliAnalysisTaskITSAlignQA *itsAlign = AddTaskSDDCalib(0,writeITSTP,useTPCcrv);
106   if (!okTPC) itsAlign->SetUseITSstandaloneTracks(kTRUE); 
107   if (grpData->GetL3Current()[0] < 300) itsAlign->SetMinPt(0.001);
108   //
109   // dummy task to clean geometry in Terminate >>>>
110   CleanGeom* clgmTask = new CleanGeom("cleanGeom");
111   mgr->AddTask(clgmTask);
112   AliAnalysisDataContainer *dummyInp = mgr->GetCommonInputContainer();
113   if (dummyInp) mgr->ConnectInput(clgmTask,0,dummyInp);
114   // dummy task to clean geometry in Terminate <<<<
115    //
116   // Run the analysis
117   AliSysInfo::AddStamp("BeforeInitAnalysis");
118   if (!mgr->InitAnalysis()) {
119     printf("Analysis cannot be started, returning\n");
120     return;
121   }
122   
123   mgr->PrintStatus();
124   AliSysInfo::AddStamp("BeforeStartAnalysis");
125   mgr->StartAnalysis("local", chain);
126   
127   return;
128 }