1 //=============================================================================
5 // This macros setup the TPC calibration task
7 //=============================================================================
13 Int_t streamLevel = 20;
14 TTimeStamp startTime(2010,2,1,0,0,0);
15 TTimeStamp stopTime(2010,12,31,0,0,0);
16 char * prefix = "/V6/";
18 void ConfigOCDB(Int_t crun);
20 AliAnalysisTask *AddTaskTPCCalib(Int_t runNumber)
22 gSystem->Load("libTPCcalib");
23 // pointer to the analysis manager
24 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
26 Error("AddTaskTPCCalib", "No analysis manager to connect to.");
30 // check the input handler
31 if (!mgr->GetInputEventHandler()) {
32 ::Error("AddTask", "This task requires an input event handler");
35 ConfigOCDB(runNumber);
36 AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
38 SetupCalibTaskTrain1(task1);
40 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
42 if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
43 AliAnalysisManager::kInputContainer);
45 AliAnalysisDataContainer *coutput1 =mgr->CreateContainer("TPCCalib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
46 mgr->ConnectInput(task1,0,cinput1);
47 mgr->ConnectOutput(task1,0,coutput1);
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(debugLevel);
64 calibCalib->SetStreamLevel(streamLevel);
65 calibCalib->SetTriggerMask(-1,-1,kFALSE); //accept everything
66 myTask->AddJob(calibCalib);
69 void AddCalibTimeGain(TObject* task, Bool_t isCosmic = kFALSE, char * name = "calibTimeGain"){
71 // Responsible: Alexander Kalweit
74 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
75 AliTPCcalibTimeGain *calibTimeGain = new AliTPCcalibTimeGain(name,"calibTimeGain", startTime.GetSec(), stopTime.GetSec(), 30*60);
76 //calibTimeGain->SetLowMemoryConsumption(kTRUE);
77 //calibTimeGain->SetMIP(25.);
78 calibTimeGain->SetIsCosmic(isCosmic);
79 calibTimeGain->SetUseCookAnalytical(kTRUE);
80 calibTimeGain->SetUseMax(kFALSE);
81 calibTimeGain->SetDebugLevel(debugLevel);
82 calibTimeGain->SetStreamLevel(streamLevel);
83 calibTimeGain->SetTriggerMask(-1,-1,kTRUE); //reject laser
84 myTask->AddJob(calibTimeGain);
87 void AddCalibTime(TObject* task){
89 // Responsible: Dag Larsen
93 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
94 AliTPCcalibTime *calibTime = new AliTPCcalibTime("calibTime","calibTime", startTime.GetSec(), stopTime.GetSec(), 20*60);
95 calibTime->SetDebugLevel(debugLevel);
96 calibTime->SetStreamLevel(streamLevel);
97 calibTime->SetTriggerMask(-1,-1,kFALSE); //accept everything
98 myTask->AddJob(calibTime);
101 void AddCalibLaser(TObject* task){
103 // Responsible: Marian Ivanov
106 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
107 AliTPCcalibLaser *calibLaser = new AliTPCcalibLaser("laserTPC","laserTPC");
108 calibLaser->SetDebugLevel(debugLevel);
109 calibLaser->SetStreamLevel(streamLevel);
110 calibLaser->SetTriggerMask(-1,-1,kFALSE); //accept everything
111 myTask->AddJob(calibLaser);
115 void AddCalibAlign(TObject* task){
117 // Responsible: Marian Ivanov
120 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
121 AliTPCcalibAlign *calibAlign = new AliTPCcalibAlign("alignTPC","Alignment of the TPC sectors");
122 calibAlign->SetDebugLevel(debugLevel);
123 calibAlign->SetStreamLevel(streamLevel);
124 calibAlign->SetTriggerMask(-1,-1,kTRUE); //accept everything
125 myTask->AddJob(calibAlign);
128 void AddCalibCosmic(TObject* task){
130 // Responsible: Marian Ivanov
132 // Histogram residuals and pulls of the track parameters in bins of track parameters
134 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
135 AliTPCcalibCosmic *calibCosmic = new AliTPCcalibCosmic("cosmicTPC","cosmicTPC");
136 calibCosmic->SetDebugLevel(debugLevel);
137 calibCosmic->SetStreamLevel(streamLevel);
138 calibCosmic->SetTriggerMask(-1,-1,kTRUE); //accept everything
139 myTask->AddJob(calibCosmic);
145 void SetupCalibTaskTrain1(TObject* task){
149 AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
151 AddCalibTimeGain(task);
152 AddCalibTimeGain(task,kTRUE,"calibTimeGainCosmic"); // 2nd task for cosmic runs
156 AddCalibCosmic(task);
158 TString path=gSystem->pwd();
160 gSystem->mkdir(path);
161 myTask->SetDebugOuputhPath(path.Data());
167 void ConfigOCDB(Int_t run){
169 printf("SETUP OCBD for TPC\n");
170 printf("SETUP OCBD for TPC\n");
171 printf("SETUP OCBD for TPC Run =%d\n", run);
174 AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
175 param->ReadGeoMatrices();
177 AliMagF* magF= TGeoGlobalMagField::Instance()->GetField();
178 printf("\n\nSET EXB FIELD\t\n\n");
179 AliTPCcalibDB::Instance()->SetExBField(magF);
183 AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
184 AliTPCRecoParam * tpcRecoParam = AliTPCRecoParam::GetCosmicTestParam(kTRUE);
186 transform->SetCurrentRecoParam(tpcRecoParam);
187 tpcRecoParam->SetUseGainCorrectionTime(0);
188 tpcRecoParam->SetUseRPHICorrection(kTRUE);
189 tpcRecoParam->SetUseTOFCorrection(kFALSE);
191 tpcRecoParam->SetUseDriftCorrectionTime(0);
192 tpcRecoParam->SetUseDriftCorrectionGY(0);
194 tpcRecoParam->SetUseRadialCorrection(kFALSE);
195 tpcRecoParam->SetUseQuadrantAlignment(kFALSE);
197 tpcRecoParam->SetUseSectorAlignment(kTRUE);
198 tpcRecoParam->SetUseGainCorrectionTime(kFALSE);
199 tpcRecoParam->SetUseFieldCorrection(kFALSE);
200 tpcRecoParam->SetUseExBCorrection(kTRUE);
201 AliTPCcalibDB::Instance()->SetRun(run);