X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=T0%2FAliT0PreprocessorOffline.cxx;h=e013b8301933746ac6763ccfce626917b71ed7ab;hb=704d939880537918ceeed687b7fde213a344b692;hp=a2360c86ba1a406aa06f039e9fe331b7f57a454d;hpb=593a6aab21d2df13316a190e01f71c3137e89cd9;p=u%2Fmrichter%2FAliRoot.git diff --git a/T0/AliT0PreprocessorOffline.cxx b/T0/AliT0PreprocessorOffline.cxx index a2360c86ba1..e013b830193 100644 --- a/T0/AliT0PreprocessorOffline.cxx +++ b/T0/AliT0PreprocessorOffline.cxx @@ -46,11 +46,14 @@ ClassImp(AliT0PreprocessorOffline) //____________________________________________________ AliT0PreprocessorOffline::AliT0PreprocessorOffline(): TNamed("AliT0PreprocessorOffline","AliT0PreprocessorOffline"), - startRun(0), // start Run - used to make fast selection in THnSparse - endRun(0), // end Run - used to make fast selection in THnSparse - startTime(0), // startTime - used to make fast selection in THnSparse - endTime(0), // endTime - used to make fast selection in THnSparse - ocdbStorage("") // path to the OCDB storage + startRun(0), + endRun(0), + startTime(0), + endTime(0), + ocdbStorage(0), + fNewDArun(9999999), + fStatusDelay(0), + fStatusAdjust(0) { //constructor @@ -63,46 +66,32 @@ AliT0PreprocessorOffline::~AliT0PreprocessorOffline() } //____________________________________________________ -void AliT0PreprocessorOffline::Process(TString filePhysName, Int_t ustartRun, Int_t uendRun, TString pocdbStorage) +void AliT0PreprocessorOffline::Process(TString filePhysName, Int_t ustartRun, Int_t uendRun, AliCDBStorage* pocdbStorage) { - // CalibOffsetChannels(filePhysName, ustartRun, uendRun, pocdbStorage); + if ( ustartRun < fNewDArun) + CalibOffsetChannels(filePhysName, ustartRun, uendRun, pocdbStorage); CalibT0sPosition(filePhysName, ustartRun, uendRun, pocdbStorage); } //____________________________________________________ -void AliT0PreprocessorOffline::CalibOffsetChannels(TString filePhysName, Int_t ustartRun, Int_t uendRun, TString pocdbStorage) +void AliT0PreprocessorOffline::CalibOffsetChannels(TString filePhysName, Int_t ustartRun, Int_t uendRun, AliCDBStorage* pocdbStorage) { Float_t zero_timecdb[24]={0}; Float_t *timecdb = zero_timecdb; Float_t *cfdvalue = zero_timecdb; - Int_t badpmt=0; + Float_t cfd[24][5]; + for(Int_t i=0; i<24; i++) + for (Int_t i0=0; i0<5; i0++) + cfd[i][i0] = 0; + Int_t badpmt=-1; //Processing data from DAQ Physics run AliInfo("Processing Time Offset between channels"); - if (pocdbStorage.Length()>0) ocdbStorage=pocdbStorage; - else - ocdbStorage="local://"+gSystem->GetFromPipe("pwd")+"/OCDB"; - AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming"); - if (!entry) AliFatal("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) AliFatal("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) AliFatal("LHC clock-phase shift is not found in OCDB !"); - AliLHCClockPhase *phase = (AliLHCClockPhase*)entry4->GetObject(); - Float_t fGRPdelays = l1Delay - phase->GetMeanPhase(); - - AliCDBEntry *entryL = AliCDBManager::Instance()->Get("T0/Calib/Latency"); - if (!entryL) AliFatal(" T0 Latency is not found in OCDB !"); - AliT0CalibLatency *lat = (AliT0CalibLatency*)entryL->GetObject(); - Float_t fLatencyHPTDC = lat->GetLatencyHPTDC(); - Float_t fLatencyL1 = lat->GetLatencyL1(); - + if (pocdbStorage) ocdbStorage=pocdbStorage; + else { + TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDB"; + ocdbStorage= AliCDBManager::Instance()->GetStorage(localStorage.Data()); + } AliCDBEntry *entryCalib = AliCDBManager::Instance()->Get("T0/Calib/TimeDelay"); if(!entryCalib) { AliWarning(Form("Cannot find any AliCDBEntry for [Calib, TimeDelay]!")); @@ -110,31 +99,25 @@ void AliT0PreprocessorOffline::CalibOffsetChannels(TString filePhysName, Int_t u else { AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entryCalib->GetObject(); - timecdb = clb->GetTimeEq(); - cfdvalue = clb->GetCFDvalue(); - for (Int_t i=0; i<24; i++) { - if( cfdvalue[i] < 500 ) cfdvalue[i] =( 1000.*fLatencyHPTDC - 1000.*fLatencyL1 + 1000.*fGRPdelays)/24.4; - printf("Calc mean CFD time %i %f \n",i,cfdvalue[i]); - } + timecdb = clb->GetTimeEq(); + for(Int_t i=0; i<24; i++) + for (Int_t i0=0; i0<5; i0++) cfd[i][i0] = clb->GetCFDvalue(i, i0); + } - AliCDBEntry *entryCalibreco = AliCDBManager::Instance()->Get("T0/Calib/RecoParam"); - if(entryCalibreco) { - AliT0RecoParam *rpr = (AliT0RecoParam*) entryCalibreco->GetObject(); - badpmt = rpr->GetRefPoint(); - printf(" bad PMT %i \n", badpmt); - } + for(Int_t i=0; i<24; i++)cfdvalue[i]=cfd[i][0]; + AliT0CalibTimeEq *offline = new AliT0CalibTimeEq(); - Bool_t writeok = offline->ComputeOfflineParams(filePhysName.Data(), timecdb, cfdvalue, badpmt); + Int_t writeok = offline->ComputeOfflineParams(filePhysName.Data(), timecdb, cfdvalue, badpmt); + printf(" AliT0PreprocessorOffline::CalibOffsetChannels :: writeok %i \n", writeok); AliCDBMetaData metaData; metaData.SetBeamPeriod(1); metaData.SetResponsible("Alla Maevskaya"); metaData.SetComment("Time equalizing result with slew"); - - if (writeok) { + fStatusDelay = writeok; + if (writeok==0) { AliCDBId* id1=NULL; id1=new AliCDBId("T0/Calib/TimeDelay", ustartRun, uendRun ); - AliCDBStorage* gStorage = AliCDBManager::Instance()->GetStorage(ocdbStorage); - gStorage->Put(offline, (*id1), &metaData); + ocdbStorage->Put(offline, (*id1), &metaData); } else { @@ -145,35 +128,40 @@ void AliT0PreprocessorOffline::CalibOffsetChannels(TString filePhysName, Int_t u } //------------------------------------------------------------------------------------- -void AliT0PreprocessorOffline::CalibT0sPosition(TString filePhysName, Int_t ustartRun, Int_t uendRun, TString pocdbStorage) +void AliT0PreprocessorOffline::CalibT0sPosition(TString filePhysName, Int_t ustartRun, Int_t uendRun, AliCDBStorage* pocdbStorage) { + printf(" AliT0PreprocessorOffline::CalibT0sPosition \n"); Float_t zero_timecdb[4]={0}; Float_t *timecdb = zero_timecdb; - if (pocdbStorage.Length()>0) ocdbStorage=pocdbStorage; - else - ocdbStorage="local://"+gSystem->GetFromPipe("pwd")+"/OCDB"; - AliCDBEntry *entryCalib = AliCDBManager::Instance()->Get("T0/Calib/TimeAdjust"); - if(!entryCalib) { - AliWarning(Form("Cannot find any AliCDBEntry for [Calib, TimeAdjust]!")); + if (pocdbStorage) ocdbStorage=pocdbStorage; + else { + TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDB"; + ocdbStorage=AliCDBManager::Instance()->GetStorage(localStorage.Data()); } - else - { - AliT0CalibSeasonTimeShift *clb = (AliT0CalibSeasonTimeShift*)entryCalib->GetObject(); - timecdb = clb->GetT0Means(); - } AliT0CalibSeasonTimeShift *offline = new AliT0CalibSeasonTimeShift(); - Bool_t writeok = offline->SetT0Par(filePhysName.Data(), timecdb); + Int_t writeok = offline->SetT0Par(filePhysName.Data(), timecdb); + printf(" AliT0PreprocessorOffline::CalibT0sPosition :: writeok %i \n", writeok); AliCDBMetaData metaData; metaData.SetBeamPeriod(1); metaData.SetResponsible("Alla Maevskaya"); metaData.SetComment("Time equalizing result with slew"); - - if (writeok) { + fStatusAdjust = writeok; + if (writeok == 0) { AliCDBId* id1=NULL; - id1=new AliCDBId("T0/Calib/TimeAdjust", ustartRun, uendRun); - AliCDBStorage* gStorage = AliCDBManager::Instance()->GetStorage(ocdbStorage); - gStorage->Put(offline, (*id1), &metaData); + id1=new AliCDBId("T0/Calib/TimeAdjust", ustartRun, uendRun); + ocdbStorage->Put(offline, (*id1), &metaData); } } +//_____________________________________________________________________________ +Int_t AliT0PreprocessorOffline::GetStatus() const +{ + // + // Checks the status + // fStatusPos: errors + // fStatusNeg: only info + // + printf("!!!! GetStatus %i delay %i adjust %i \n",fStatusAdjust+ fStatusDelay, fStatusDelay, fStatusAdjust); + return fStatusAdjust+ fStatusDelay; +}