1 void readCDB (TObject *task1);
2 //_____________________________________________________________________________
3 AliAnalysisTask *AddTaskT0Calib(Int_t runNumber)
6 // add calibration task
8 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
10 ::Error("AddTaskT0Calib", "No analysis manager to connect to.");
14 // check the input handler
15 if (!mgr->GetInputEventHandler()) {
16 ::Error("AddTaskT0Calib", "This task requires an input event handler");
20 // set TPC OCDB parameters
21 //ConfigOCDB(runNumber);
24 AliT0CalibOffsetChannelsTask *task1 = new AliT0CalibOffsetChannelsTask("CalibObjectsTrain1");
25 readCDB(task1, runNumber);
28 // AliT0AnalysisTaskQA * task2 = new AliT0AnalysisTaskQA("QA task");
29 // mgr->AddTask(task2);
31 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
32 if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
33 AliAnalysisManager::kInputContainer);
34 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("T0Calib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "AliESDfriends_v1.root");
36 mgr->ConnectInput(task1,0,cinput1);
37 mgr->ConnectOutput(task1,1,coutput1);
40 //_____________________________________________________________________________
41 void readCDB (TObject *task1, Int_t runNumber) {
43 Float_t zero_timecdb[24]={0};
44 Float_t *timecdb = zero_timecdb;
45 Float_t cfdvalue[24][5];
46 for(Int_t i=0; i<24; i++)
47 for (Int_t i0=0; i0<5; i0++)
50 Float_t zero_shiftcdb[4]={0};
51 Float_t *shiftcdb = zero_shiftcdb;
52 AliT0CalibOffsetChannelsTask *mytask = (AliT0CalibOffsetChannelsTask*)task1;
54 AliCDBManager* man = AliCDBManager::Instance();
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;
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);
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 Float_t fGRPdelays = l1Delay - phase->GetMeanPhase();
70 AliCDBEntry* entry5 = AliCDBManager::Instance()->Get("GRP/GRP/Data");
71 AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entry5->GetObject());
73 ::Error("AddTaskT0Calib","Failed to get GRP data for run %d",runNumber);
77 TString LHCperiod = grpData->GetLHCPeriod();
78 Bool_t isLHC10b = LHCperiod.Contains("LHC10b");
79 Bool_t isLHC10c = LHCperiod.Contains("LHC10c");
81 ::Info("AddTaskT0Calib","LHCperiod:%s ---> isLHC10b:%d isLHC10c:%d",
82 LHCperiod.Data(),(Int_t)isLHC10b, (Int_t)isLHC10c);
84 if(isLHC10b || isLHC10c) mytask-> SetRefPMT(12,2);
86 AliCDBEntry *entryCalib0 = man->Get("T0/Calib/Latency");
88 ::Error("AddTastT0Calib","Cannot find any AliCDBEntry for [Calib, Latency]!");
91 AliT0CalibLatency *calibda=(AliT0CalibLatency*)entryCalib0->GetObject();
92 Float_t fLatencyL1 = calibda->GetLatencyL1();
93 Float_t fLatencyHPTDC = calibda->GetLatencyHPTDC();
95 AliCDBEntry *entryCalib1 = man->Get("T0/Calib/TimeDelay");
97 ::Error("AddTaskT0Calib","Cannot find any AliCDBEntry for [Calib, TimeDelay]!");
102 AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entryCalib1->GetObject();
103 timecdb = clb->GetTimeEq();
104 for(Int_t i=0; i<24; i++)
105 for (Int_t i0=0; i0<5; i0++){
106 cfdvalue[i][i0] = clb->GetCFDvalue(i, i0);
110 for (Int_t i=0; i<24; i++) {
111 Float_t cfdmean = cfdvalue[i][0];
112 if( cfdvalue[i][0] < 500 || cfdvalue[i][0] > 50000) cfdmean = ( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4;
113 mytask->SetCFDvalue(i, cfdmean);
114 mytask->SetTimeEq(i, timecdb[i]);
117 AliCDBEntry *entryCalib2 = man->Get("T0/Calib/TimeAdjust");
119 ::Error("AddTaskT0Calib","Cannot find any AliCDBEntry for [Calib, TimeAdjust]!");
123 AliT0CalibSeasonTimeShift *clb1 = (AliT0CalibSeasonTimeShift*)entryCalib2->GetObject();
124 shiftcdb = clb1->GetT0Means();
127 for (Int_t i=0; i<4; i++) mytask->SetT0Means(i,shiftcdb[i]);