3 This macros setup the TPC calibration task AddTaskTPCCalib
5 - the run number is required to config TPC OCDB
7 The following calibration components are added to the AliTPCAnalysisTaskcalib task:
8 1. AliTPCcalibCalib - redo reconstruction with current calibration
9 2. AliTPCcalibTimeGain - TPC time dependent gain calibration
10 3. AliTPCcalibTime - TPC time dependent drift time calibration
14 // function to set TPC OCDB parameters
15 void ConfigOCDB(Int_t crun);
17 //_____________________________________________________________________________
18 AliAnalysisTask *AddTaskTPCCalib(Int_t runNumber)
21 // add calibration task
23 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
25 ::Error("AddTaskTPCCalib", "No analysis manager to connect to.");
29 // check the input handler
30 if (!mgr->GetInputEventHandler()) {
31 ::Error("AddTaskTPCCalib", "This task requires an input event handler");
35 // set TPC OCDB parameters
36 ConfigOCDB(runNumber);
39 AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
40 SetupCalibTaskTrain1(task1);
43 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
44 if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
45 AliAnalysisManager::kInputContainer);
46 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("TPCCalib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
48 mgr->ConnectInput(task1,0,cinput1);
49 mgr->ConnectOutput(task1,0,coutput1);
53 //_____________________________________________________________________________
54 void AddCalibCalib(TObject* task){
56 // Responsible: Marian Ivanov
58 // calibCalib is a prefilter
59 // The current OCDB entries transformation are applied on cluster, tracks are refitted
61 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
62 AliTPCcalibCalib *calibCalib = new AliTPCcalibCalib("calibTPC","calibTPC");
63 calibCalib->SetDebugLevel(0);
64 calibCalib->SetStreamLevel(0);
65 calibCalib->SetTriggerMask(-1,-1,kFALSE); //accept everything
66 myTask->AddJob(calibCalib);
69 //_____________________________________________________________________________
70 void AddCalibTimeGain(TObject* task, Bool_t isCosmic = kFALSE, char * name = "calibTimeGain"){
72 // Responsible: Alexander Kalweit
73 // Description: Time Gain calibration
76 // Set run time ranges (time stamps)
77 AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
79 ::Error("AddCalibTimeGain","Cannot get AliCDBEntry");
82 const AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject());
84 ::Error("AddCalibTimeGain","Cannot get AliGRPObject");
87 time_t sTime = grpData->GetTimeStart();
88 time_t eTime = grpData->GetTimeEnd();
89 TTimeStamp startRunTime(sTime);
90 TTimeStamp stopRunTime(eTime);
93 startRunTime.GetDate(kTRUE,0,&year);
94 TTimeStamp startTime(year,1,1,0,0,0);
95 TTimeStamp stopTime(year,12,31,23,59,59);
98 // setup calibration component
100 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
101 AliTPCcalibTimeGain *calibTimeGain = new AliTPCcalibTimeGain(name,"calibTimeGain", startTime.GetSec(), stopTime.GetSec(), 10*60);
102 calibTimeGain->SetIsCosmic(isCosmic);
103 calibTimeGain->SetUseCookAnalytical(kTRUE);
104 calibTimeGain->SetUseMax(kFALSE);
105 calibTimeGain->SetDebugLevel(0);
106 calibTimeGain->SetStreamLevel(0);
107 calibTimeGain->SetTriggerMask(-1,-1,kTRUE); //reject laser
108 calibTimeGain->SetLowerTrunc(0.02);
109 calibTimeGain->SetUpperTrunc(0.6);
111 myTask->AddJob(calibTimeGain);
113 AliTPCcalibGainMult *calibGainMult = new AliTPCcalibGainMult("calibGainMult","calibGainMult");
114 calibGainMult->SetUseMax(kTRUE);
115 calibGainMult->SetDebugLevel(0);
116 calibGainMult->SetStreamLevel(0);
117 calibGainMult->SetTriggerMask(-1,-1,kTRUE); //reject laser
118 calibGainMult->SetLowerTrunc(0.02);
119 calibGainMult->SetUpperTrunc(0.6);
121 myTask->AddJob(calibGainMult);
125 //_____________________________________________________________________________
126 void AddCalibTime(TObject* task){
128 // Responsible: Dag Larsen
129 // Description: Time V drift calibration
132 // Set run time ranges (time stamps)
133 AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
135 ::Error("AddCalibTime","Cannot get AliCDBEntry");
138 const AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry->GetObject());
140 ::Error("AddCalibTime","Cannot get AliGRPObject");
143 time_t sTime = grpData->GetTimeStart();
144 time_t eTime = grpData->GetTimeEnd();
146 TTimeStamp startRunTime(sTime);
147 TTimeStamp stopRunTime(eTime);
150 startRunTime.GetDate(kTRUE,0,&year);
151 TTimeStamp startTime(year,1,1,0,0,0);
152 TTimeStamp stopTime(year,12,31,23,59,59);
155 // setup calibration component
157 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
158 AliTPCcalibTime *calibTime = new AliTPCcalibTime("calibTime","calibTime", startTime.GetSec(), stopTime.GetSec(), 10*60, 2);
159 calibTime->SetDebugLevel(0);
160 calibTime->SetStreamLevel(0);
161 calibTime->SetTriggerMask(-1,-1,kFALSE); //accept everything
163 // max 200 tracks per event
164 calibTime->SetCutTracks(200);
166 myTask->AddJob(calibTime);
169 //_____________________________________________________________________________
170 void SetupCalibTaskTrain1(TObject* task){
172 // Setup tasks for calibration train
175 AddCalibTimeGain(task);
179 //_____________________________________________________________________________
180 void ConfigOCDB(Int_t run){
182 // Configure TPC OCDB
184 printf("SETUP OCBD for TPC\n");
185 printf("SETUP OCBD for TPC\n");
186 printf("SETUP OCBD for TPC Run =%d\n", run);
189 AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
190 param->ReadGeoMatrices();
192 AliMagF* magF= TGeoGlobalMagField::Instance()->GetField();
193 printf("\n\nSET EXB FIELD\t\n\n");
194 AliTPCcalibDB::Instance()->SetExBField(magF);
198 AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
199 AliTPCRecoParam * tpcRecoParam = AliTPCRecoParam::GetCosmicTestParam(kTRUE);
201 transform->SetCurrentRecoParam(tpcRecoParam);
202 tpcRecoParam->SetUseGainCorrectionTime(0);
203 tpcRecoParam->SetUseRPHICorrection(kFALSE);
204 tpcRecoParam->SetUseTOFCorrection(kFALSE);
206 tpcRecoParam->SetUseDriftCorrectionTime(0);
207 tpcRecoParam->SetUseDriftCorrectionGY(0);
209 tpcRecoParam->SetUseRadialCorrection(kFALSE);
210 tpcRecoParam->SetUseQuadrantAlignment(kFALSE);
212 tpcRecoParam->SetUseSectorAlignment(kFALSE);
213 tpcRecoParam->SetUseFieldCorrection(kFALSE);
214 tpcRecoParam->SetUseExBCorrection(kFALSE);
216 tpcRecoParam->SetUseMultiplicityCorrectionDedx(kFALSE);
217 tpcRecoParam->SetUseAlignmentTime(kFALSE);
218 tpcRecoParam->SetUseComposedCorrection(kTRUE);
220 AliTPCcalibDB::Instance()->SetRun(run);