]> git.uio.no Git - u/mrichter/AliRoot.git/blame - T0/AddTaskT0Calib.C
Pass0 task for any period
[u/mrichter/AliRoot.git] / T0 / AddTaskT0Calib.C
CommitLineData
dd162229 1
dd162229 2
4f0fdf74 3void readCDB (TObject *task1);
dd162229 4//_____________________________________________________________________________
5AliAnalysisTask *AddTaskT0Calib(Int_t runNumber)
6{
7 //
8 // add calibration task
9 //
10 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
11 if (!mgr) {
12 ::Error("AddTaskT0Calib", "No analysis manager to connect to.");
13 return NULL;
14 }
15
16 // check the input handler
17 if (!mgr->GetInputEventHandler()) {
18 ::Error("AddTaskT0Calib", "This task requires an input event handler");
19 return NULL;
20 }
21
22 // set TPC OCDB parameters
23 //ConfigOCDB(runNumber);
24
25 // setup task
4f0fdf74 26 AliT0CalibOffsetChannelsTask *task1 = new AliT0CalibOffsetChannelsTask("CalibObjectsTrain1");
27 readCDB(task1, runNumber);
dd162229 28 mgr->AddTask(task1);
4f0fdf74 29
30 // AliT0AnalysisTaskQA * task2 = new AliT0AnalysisTaskQA("QA task");
31 // mgr->AddTask(task2);
dd162229 32
33 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
34 if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
35 AliAnalysisManager::kInputContainer);
36 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("T0Calib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
37
38 mgr->ConnectInput(task1,0,cinput1);
39 mgr->ConnectOutput(task1,1,coutput1);
40 return task1;
41}
4f0fdf74 42//_____________________________________________________________________________
43void readCDB (TObject *task1, Int_t runNumber) {
44
45 Float_t zero_timecdb[24]={0};
46 Float_t *timecdb = zero_timecdb;
47 Float_t cfdvalue[24][5];
48 Float_t zero_shiftcdb[4]={0};
49 Float_t *shiftcdb = zero_shiftcdb;
50 AliT0CalibOffsetChannelsTask *mytask = (AliT0CalibOffsetChannelsTask*)task1;
51
52 AliCDBManager* man = AliCDBManager::Instance();
53 man->SetDefaultStorage("raw://");
54 man->SetRun(runNumber);
55 AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");
56 if (!entry) AliFatal("CTP timing parameters are not found in OCDB !");
57 AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();
58 Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;
59
60 AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");
61 if (!entry1) AliFatal("CTP time-alignment is not found in OCDB !");
62 AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();
63 l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);
64
65 AliCDBEntry *entry4 = AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase");
66 if (!entry4) AliFatal("LHC clock-phase shift is not found in OCDB !");
67 AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject();
68 fGRPdelays = l1Delay - phase->GetMeanPhase();
69
70 AliCDBEntry *entryCalib0 = man->Get("T0/Calib/Latency");
71 fLatencyL1 = entryCalib0->GetLatencyL1();
72 fLatencyHPTDC = entryCalib0->GetLatencyHPTDC();
73 AliDebug(2,Form(" LatencyL1 %f latencyHPTDC %f \n",fLatencyL1, fLatencyHPTDC));
74
75 AliCDBEntry *entryCalib1 = man->Get("T0/Calib/TimeDelay");
76 if(!entryCalib1) {
77 AliError::(Form("Cannot find any AliCDBEntry for [Calib, TimeDelay]!"));
78 return;
79 }
80 else
81 {
82 AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entryCalib1->GetObject();
83 timecdb = clb->GetTimeEq();
84 for(Int_t i=0; i<24; i++)
85 for (Int_t i0=0; i0<5; i0++){
86 cfdvalue[i][i0] = clb->GetCFDvalue(i, i0);
87 if ( i0 ==0) prinf(" CFD value %i %f \n", i, cfdvalue[i][i0]);
88 }
89 }
90
91 for (Int_t i=0; i<24; i++) {
92 Float_t cfdmean = cfdvalue[i][0];
93 if( cfdvalue[i][0] < 500 || cfdvalue[i][0] > 50000) cfdmean = ( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
94 // printf(" calulated mean %i %f \n", cfdmean);
95 mytask->SetCFDvalue(i, cfdmean);
96 mytask->SetTimeEq(i, timecdb[i]);
97 }
98
99 AliCDBEntry *entryCalib2 = man->Get("T0/Calib/TimeAdjust");
100 if(!entryCalib2) {
101 AliError(Form("Cannot find any AliCDBEntry for [Calib, TimeAdjust]!"));
102 }
103 else
104 {
105 AliT0CalibSeasonTimeShift *clb1 = (AliT0CalibSeasonTimeShift*)entryCalib2->GetObject();
106 shiftcdb = clb1->GetT0Means();
107 }
108
109 for (Int_t i=0; i<4; i++) mytask->SetT0Means(i,shiftcdb[i]);
110}