From: rpreghen Date: Tue, 22 Dec 2009 11:41:15 +0000 (+0000) Subject: HPTDC latency window information propagated to OCDB through AliTOFChannelOnlineStatus... X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=02ede0c4c1f01e84145a671dc5a8d99b5ca0d203 HPTDC latency window information propagated to OCDB through AliTOFChannelOnlineStatusArray object stored in Calib/Status. Added fLatencyWindow data in AliTOFChannelOnlineStatusArray object (incremented class version) to be used during reconstruction. Information stored as Int_t value and defined in ns --- diff --git a/TOF/AliTOFChannelOnlineStatusArray.cxx b/TOF/AliTOFChannelOnlineStatusArray.cxx index d9e4fab6160..730cc38d4aa 100644 --- a/TOF/AliTOFChannelOnlineStatusArray.cxx +++ b/TOF/AliTOFChannelOnlineStatusArray.cxx @@ -31,7 +31,8 @@ ClassImp(AliTOFChannelOnlineStatusArray) AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(): TObject(), fSize(0), - fArray(0x0) + fArray(0x0), + fLatencyWindow(0x0) { //default constructor } @@ -40,23 +41,27 @@ AliTOFChannelOnlineStatusArray::~AliTOFChannelOnlineStatusArray() { //distructor delete [] fArray; + delete [] fLatencyWindow; } //________________________________________________________________ AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(Int_t size): TObject(), fSize(size), - fArray(new UChar_t[size]) + fArray(new UChar_t[size]), + fLatencyWindow(new Int_t[size]) { // ctor with size for (Int_t ich = 0; ich-1 && pos < fSize){ + fLatencyWindow[pos] = parr; + } + AliDebug(2,Form("fLatencyWindow[%d] = %d",pos,fLatencyWindow[pos])); +} +//________________________________________________________________ UChar_t AliTOFChannelOnlineStatusArray::GetStatus(Int_t pos) const { // getting the status for channel at position = pos @@ -155,3 +171,12 @@ UChar_t AliTOFChannelOnlineStatusArray::GetNoiseStatus(Int_t pos) const // UChar_t noiseSt = parr & 0x30; return noiseSt; } +//________________________________________________________________ +Int_t AliTOFChannelOnlineStatusArray::GetLatencyWindow(Int_t pos) const +{ + // getting the latency window for channel at position = pos + Int_t lw = -1; + if (pos>-1 && pos < fSize)lw = fLatencyWindow[pos]; + AliDebug(2,Form("lw = %d ",lw)); + return lw; +} diff --git a/TOF/AliTOFChannelOnlineStatusArray.h b/TOF/AliTOFChannelOnlineStatusArray.h index c557e34fc0a..0036ee3f93d 100644 --- a/TOF/AliTOFChannelOnlineStatusArray.h +++ b/TOF/AliTOFChannelOnlineStatusArray.h @@ -38,16 +38,19 @@ public: void SetHWStatus(Int_t pos, UChar_t parr); void SetPulserStatus(Int_t pos, UChar_t parr); void SetNoiseStatus(Int_t pos, UChar_t parr); + void SetLatencyWindow(Int_t pos, Int_t parr); UChar_t GetStatus(Int_t pos) const; UChar_t GetHWStatus(Int_t pos) const; UChar_t GetPulserStatus(Int_t pos) const; UChar_t GetNoiseStatus(Int_t pos) const; + Int_t GetLatencyWindow(Int_t pos) const; private: Int_t fSize; // Size of the array of UChar_t UChar_t * fArray; //[fSize] + Int_t *fLatencyWindow; //[fSize] - ClassDef(AliTOFChannelOnlineStatusArray,1) // TOF Sensor Online Calibration object + ClassDef(AliTOFChannelOnlineStatusArray,2) // TOF Sensor Online Calibration object }; #endif diff --git a/TOF/AliTOFPreprocessor.cxx b/TOF/AliTOFPreprocessor.cxx index 2ad2a7d3920..0078c950b33 100644 --- a/TOF/AliTOFPreprocessor.cxx +++ b/TOF/AliTOFPreprocessor.cxx @@ -87,7 +87,8 @@ AliTOFPreprocessor::AliTOFPreprocessor(AliShuttleInterface* shuttle) : fStoreRefData(kTRUE), fFDRFlag(kFALSE), fStatus(0), - fMatchingWindow(0) + fMatchingWindow(0), + fLatencyWindow(0) { // constructor AddRunType("PHYSICS"); @@ -1004,7 +1005,8 @@ UInt_t AliTOFPreprocessor::ProcessFEEData() * if there is no stored FEE in OCDB set update flag */ fMatchingWindow = new Int_t[fNChannels]; - + fLatencyWindow = new Int_t[fNChannels]; + AliCDBEntry *cdbEntry = GetFromOCDB("Calib","Status"); if (!cdbEntry) { /* no CDB entry found. set update flag */ @@ -1027,6 +1029,7 @@ UInt_t AliTOFPreprocessor::ProcessFEEData() * if different set update flag and break loop */ //AliDebug(2,Form( " channel %i status before FEE = %i",iChannel,(Int_t)fStatus->GetHWStatus(iChannel))); fMatchingWindow[iChannel] = feeReader.GetMatchingWindow(iChannel); + fLatencyWindow[iChannel] = feeReader.GetLatencyWindow(iChannel); if (feeReader.IsChannelEnabled(iChannel)) { hCurrentFEE.SetBinContent(iChannel + 1, 1); if (fStatus->GetHWStatus(iChannel)!=AliTOFChannelOnlineStatusArray::kTOFHWOk){ @@ -1034,6 +1037,11 @@ UInt_t AliTOFPreprocessor::ProcessFEEData() fStatus->SetHWStatus(iChannel,AliTOFChannelOnlineStatusArray::kTOFHWOk); AliDebug(3,Form( " changed into enabled: channel %i status after FEE = %i",iChannel,(Int_t)fStatus->GetHWStatus(iChannel))); } + if (fStatus->GetLatencyWindow(iChannel)!=fLatencyWindow[iChannel]){ + updateOCDB = kTRUE; + fStatus->SetLatencyWindow(iChannel,fLatencyWindow[iChannel]); + AliDebug(3,Form( " changed latency window: channel %i latency window after FEE = %i",iChannel,fStatus->GetLatencyWindow(iChannel))); + } } else { if (fStatus->GetHWStatus(iChannel)!=AliTOFChannelOnlineStatusArray::kTOFHWBad){ diff --git a/TOF/AliTOFPreprocessor.h b/TOF/AliTOFPreprocessor.h index 919a8cbbe07..0e833d3b776 100644 --- a/TOF/AliTOFPreprocessor.h +++ b/TOF/AliTOFPreprocessor.h @@ -58,6 +58,8 @@ class AliTOFPreprocessor : public AliPreprocessor AliTOFChannelOnlineStatusArray *fStatus; // Array with TOF channels' status Int_t *fMatchingWindow; //[fNChannels] // Array of matching windows (one per channel) - to be used in noise runs + Int_t *fLatencyWindow; //[fNChannels] + // Array of latency windows (one per channel) ClassDef(AliTOFPreprocessor, 0); }; #endif