AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray():
TObject(),
fSize(0),
- fArray(0x0)
+ fArray(0x0),
+ fLatencyWindow(0x0)
{
//default constructor
}
{
//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<size; ich ++){
SetStatus(ich,kTOFOnlineUnknown);
+ SetLatencyWindow(ich, -1);
}
}
//________________________________________________________________
AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(const AliTOFChannelOnlineStatusArray & source):
TObject(),
fSize(source.fSize),
- fArray(source.fArray)
+ fArray(source.fArray),
+ fLatencyWindow(source.fLatencyWindow)
{
// copy constructor
}
TObject::operator=(source);
fSize= source.fSize;
fArray= source.fArray;
+ fLatencyWindow= source.fLatencyWindow;
return *this;
}
//________________________________________________________________
AliDebug(2,Form("fArray[%d] = %d",pos,(UInt_t)fArray[pos]));
}
//________________________________________________________________
+void AliTOFChannelOnlineStatusArray::SetLatencyWindow(Int_t pos, Int_t parr)
+{
+ // setting latency window for channel at position = pos
+ AliDebug(2,Form("Latency window = %d",parr));
+ if (pos>-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
// 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;
+}
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
fStoreRefData(kTRUE),
fFDRFlag(kFALSE),
fStatus(0),
- fMatchingWindow(0)
+ fMatchingWindow(0),
+ fLatencyWindow(0)
{
// constructor
AddRunType("PHYSICS");
* 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 */
* 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){
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){
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