]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFChannelOnlineStatusArray.cxx
Allow use of AliTOFcalib::TuneForMC() when old ESD TOF data structure detected, AliFa...
[u/mrichter/AliRoot.git] / TOF / AliTOFChannelOnlineStatusArray.cxx
index 730cc38d4aa272e7988a36b0f4bc52c961e224e1..603a2e913313a8b03278353a80604fae4e43767d 100644 (file)
@@ -53,17 +53,23 @@ AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(Int_t size):
        // ctor with size
        for (Int_t ich = 0; ich<size; ich ++){
          SetStatus(ich,kTOFOnlineUnknown);
-         SetLatencyWindow(ich, -1);
+         SetLatencyWindow(ich, 0);
        }
 }
 //________________________________________________________________
 AliTOFChannelOnlineStatusArray::AliTOFChannelOnlineStatusArray(const AliTOFChannelOnlineStatusArray & source):
       TObject(),
       fSize(source.fSize),
-      fArray(source.fArray),
-      fLatencyWindow(source.fLatencyWindow)
+      fArray(0x0),
+      fLatencyWindow(0x0)
 { 
        // copy constructor
+       fArray = new UChar_t[fSize];
+       fLatencyWindow = new Int_t[fSize];
+       for (Int_t ich = 0; ich<fSize; ich ++){
+               fArray[ich] = source.fArray[ich];
+               fLatencyWindow[ich] = source.fLatencyWindow[ich];
+       }
 }
 //________________________________________________________________
 AliTOFChannelOnlineStatusArray &AliTOFChannelOnlineStatusArray::operator=(const AliTOFChannelOnlineStatusArray & source) 
@@ -75,8 +81,13 @@ AliTOFChannelOnlineStatusArray &AliTOFChannelOnlineStatusArray::operator=(const
 
   TObject::operator=(source);
   fSize= source.fSize;
-  fArray= source.fArray;
-  fLatencyWindow= source.fLatencyWindow;
+  delete [] fArray;
+  fArray = new UChar_t[fSize];
+  delete [] fLatencyWindow;
+  fLatencyWindow = new Int_t[fSize];
+  memcpy(fArray,source.fArray,sizeof(UChar_t)*fSize);
+  memcpy(fLatencyWindow,source.fLatencyWindow,sizeof(Int_t)*fSize);
+
   return *this;
 }
 //________________________________________________________________
@@ -124,6 +135,11 @@ void AliTOFChannelOnlineStatusArray::SetNoiseStatus(Int_t pos, UChar_t parr)
 void AliTOFChannelOnlineStatusArray::SetLatencyWindow(Int_t pos, Int_t parr)
 {
        // setting latency window for channel at position = pos
+  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){
          fLatencyWindow[pos] = parr;
@@ -175,7 +191,11 @@ UChar_t AliTOFChannelOnlineStatusArray::GetNoiseStatus(Int_t pos) const
 Int_t AliTOFChannelOnlineStatusArray::GetLatencyWindow(Int_t pos) const 
 {
        // getting the latency window for channel at position = pos 
-  Int_t lw = -1; 
+  Int_t lw = 0; 
+  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;