//_________________________________________________________________________________________________ void GetTimeRange(Int_t runNumber, time_t& start, time_t& end) { AliCDBManager::Instance()->SetRun(runNumber); AliCDBEntry* e = AliCDBManager::Instance()->Get("GRP/GRP/Data"); AliGRPObject* grp = static_cast<AliGRPObject*>(e->GetObject()); start = grp->GetTimeStart(); end = grp->GetTimeEnd(); TDatime dstart(start); TDatime dend(end); dstart.Set(dstart.GetYear(),dstart.GetMonth(),dstart.GetDay(),dstart.GetHour(),0,0); dend.Set(dend.GetYear(),dend.GetMonth(),dend.GetDay(),dend.GetHour()+1,0,0); std::cout << TDatime(start).AsString() << std::endl; std::cout << TDatime(end).AsString() << std::endl; std::cout << dstart.AsString() << std::endl; std::cout << dend.AsString() << std::endl; start = dstart.Convert(kFALSE); end = dend.Convert(kFALSE); }
//_____________________________________________________________________________ void readCDB (TObject *task1, Int_t runNumber) { Float_t zero_timecdb[24]={0}; Float_t *timecdb = zero_timecdb; Float_t cfdvalue[24][5]; for(Int_t i=0; i<24; i++) for (Int_t i0=0; i0<5; i0++) cfdvalue[i][i0] = 0; Float_t zero_shiftcdb[4]={0}; Float_t *shiftcdb = zero_shiftcdb; AliT0CalibOffsetChannelsTask *mytask = (AliT0CalibOffsetChannelsTask*)task1; AliCDBManager* man = AliCDBManager::Instance(); AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming"); if (!entry) ::Fatal("AddTaskT0Calib", "CTP timing parameters are not found in OCDB !"); AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject(); Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0; AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign"); if (!entry1) ::Fatal("AddTaskT0Calib", "CTP time-alignment is not found in OCDB !"); AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject(); l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0); AliCDBEntry *entry4 = AliCDBManager::Instance()->Get("GRP/Calib/LHCClockPhase"); if (!entry4) ::Fatal("AddTaskT0Calib", "LHC clock-phase shift is not found in OCDB !"); AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject(); Float_t fGRPdelays = l1Delay - phase->GetMeanPhase(); AliCDBEntry* entryGRP = AliCDBManager::Instance()->Get("GRP/GRP/Data"); AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entryGRP->GetObject()); if (!grpData) { ::Error("AddTaskT0Calib","Failed to get GRP data for run %d",runNumber); return; } TString LHCperiod = grpData->GetLHCPeriod(); Bool_t isLHC10b = LHCperiod.Contains("LHC10b"); Bool_t isLHC10c = LHCperiod.Contains("LHC10c"); // AliCDBEntry* entryGRP = AliCDBManager::Instance()->Get("GRP/GRP/Data"); // AliGRPObject* grpData = dynamic_cast<AliGRPObject*>(entryGRP->GetObject()); UInt_t timeStart = grpData->GetTimeStart(); UInt_t timeEnd = grpData->GetTimeEnd(); mytask->SetStartEndTime(timeStart,timeEnd); cout<<"T0 start time "<<timeStart<<" end time "<<timeEnd<<endl; ::Info("AddTaskT0Calib","LHCperiod:%s ---> isLHC10b:%d isLHC10c:%d", LHCperiod.Data(),(Int_t)isLHC10b, (Int_t)isLHC10c); if(isLHC10b || isLHC10c) mytask-> SetRefPMT(12,2); AliCDBEntry *entryCalib0 = man->Get("T0/Calib/Latency"); if(!entryCalib0) { ::Error("AddTastT0Calib","Cannot find any AliCDBEntry for [Calib, Latency]!"); return; } AliT0CalibLatency *calibda=(AliT0CalibLatency*)entryCalib0->GetObject(); Float_t fLatencyL1 = calibda->GetLatencyL1(); Float_t fLatencyHPTDC = calibda->GetLatencyHPTDC(); AliCDBEntry *entryCalib1 = man->Get("T0/Calib/TimeDelay"); if(!entryCalib1) { ::Error("AddTaskT0Calib","Cannot find any AliCDBEntry for [Calib, TimeDelay]!"); return; } else { AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entryCalib1->GetObject(); timecdb = clb->GetTimeEq(); for(Int_t i=0; i<24; i++) for (Int_t i0=0; i0<5; i0++){ cfdvalue[i][i0] = clb->GetCFDvalue(i, i0); } } for (Int_t i=0; i<24; i++) { Float_t cfdmean = cfdvalue[i][0]; if( cfdvalue[i][0] < 500 || cfdvalue[i][0] > 50000) cfdmean = ( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4; mytask->SetCFDvalue(i, cfdmean); mytask->SetTimeEq(i, timecdb[i]); } AliCDBEntry *entryCalib2 = man->Get("T0/Calib/TimeAdjust"); if(!entryCalib2) { ::Error("AddTaskT0Calib","Cannot find any AliCDBEntry for [Calib, TimeAdjust]!"); } else { AliT0CalibSeasonTimeShift *clb1 = (AliT0CalibSeasonTimeShift*)entryCalib2->GetObject(); shiftcdb = clb1->GetT0Means(); } for (Int_t i=0; i<4; i++) mytask->SetT0Means(i,shiftcdb[i]); }