Added HasLatencyWindow method to AliTOFChannelOnlineStatusArray class.
authorrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Jan 2010 11:28:24 +0000 (11:28 +0000)
committerrpreghen <rpreghen@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Jan 2010 11:28:24 +0000 (11:28 +0000)
Method used in TOF preprocessor to know whether latency window data is available in Calib/Status object storedi n OCDB.
If not update OCDB with a new Calib/Status object with latency window data.
Added further checks to AliTOFChannelOnlineStatusArray class for better backward compatibility.

TOF/AliTOFChannelOnlineStatusArray.cxx
TOF/AliTOFChannelOnlineStatusArray.h
TOF/AliTOFPreprocessor.cxx

index 730cc38..4bb403c 100644 (file)
@@ -123,6 +123,10 @@ void AliTOFChannelOnlineStatusArray::SetNoiseStatus(Int_t pos, UChar_t parr)
 //________________________________________________________________
 void AliTOFChannelOnlineStatusArray::SetLatencyWindow(Int_t pos, Int_t parr)
 {
+  if (!fLatencyWindow) {
+    AliWarning("couldn't set latency window");
+    return;
+  }
        // setting latency window for channel at position = pos
        AliDebug(2,Form("Latency window = %d",parr));
        if (pos>-1 && pos < fSize){
@@ -176,6 +180,10 @@ Int_t AliTOFChannelOnlineStatusArray::GetLatencyWindow(Int_t pos) const
 {
        // getting the latency window for channel at position = pos 
   Int_t lw = -1; 
+  if (!fLatencyWindow) {
+    AliWarning("cannot get latency window");
+    return lw;
+  }
   if  (pos>-1 && pos < fSize)lw = fLatencyWindow[pos];
   AliDebug(2,Form("lw = %d ",lw));
   return lw;
index 0036ee3..73932fa 100644 (file)
@@ -44,6 +44,7 @@ public:
   UChar_t  GetPulserStatus(Int_t pos) const;
   UChar_t  GetNoiseStatus(Int_t pos) const;
   Int_t GetLatencyWindow(Int_t pos) const;
+  Bool_t HasLatencyWindow() {return fLatencyWindow != NULL;};
 
 private:
   Int_t fSize;      // Size of the array of UChar_t
index 0078c95..8c73a6f 100644 (file)
@@ -1022,6 +1022,16 @@ UInt_t AliTOFPreprocessor::ProcessFEEData()
          fStatus = (AliTOFChannelOnlineStatusArray*) cdbEntry->GetObject();
          delete cdbEntry;
          cdbEntry = 0x0;
+         /* cehck whether status object has latency window data */
+         if (!fStatus->HasLatencyWindow()) {
+           /* create new status object and update OCDB */
+           Log("     ************ WARNING ************");
+           Log("CDB Status entry found but has no latency window data, creating a new one!");
+           Log("     *********************************");
+           delete fStatus;
+           fStatus = new AliTOFChannelOnlineStatusArray(fNChannels);
+           updateOCDB = kTRUE;
+         }
   }
   for (Int_t iChannel = 0; iChannel < fNChannels; iChannel++){
          //AliDebug(2,Form("********** channel %i",iChannel));