]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFDigitMap.cxx
Improved QAchecker and plots for DQM
[u/mrichter/AliRoot.git] / TOF / AliTOFDigitMap.cxx
index d7047d6d69e1c84eea073684bfc92e7548de7da0..e0e318cc4c325560562590ef3789b18e3cb7b370 100644 (file)
@@ -76,27 +76,46 @@ AliTOFDigitMap::AliTOFDigitMap(const AliTOFDigitMap & digitMap):
   fNstrip(digitMap.fNstrip),
   fNpx(digitMap.fNpx),
   fNpz(digitMap.fNpz),
-  fMaxIndex(digitMap.fMaxIndex),
+  fMaxIndex(-1),
   fDigitMap(0x0)
 {
-//
-// dummy copy constructor
-//
-  
+  //
+  // Copy constructor
+  //
   fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
   fDigitMap = new Int_t*[fMaxIndex];
-
-  for (Int_t i=0; i<fMaxIndex; i++) fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
+  for (Int_t i=0; i<fMaxIndex; i++) {
+    fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
+    for (Int_t j=0; j<kMaxDigitsPerPad; j++)
+      fDigitMap[i][j]=digitMap.fDigitMap[i][j];
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////
-AliTOFDigitMap &
-AliTOFDigitMap::operator=(const AliTOFDigitMap & /*digitMap*/)
+AliTOFDigitMap & AliTOFDigitMap::operator=(const AliTOFDigitMap & digitMap)
 {
-//
-// dummy copy const
-//
-    return *this;
+  //
+  // Assignment operator
+  //
+  
+  if (this != &digitMap) {
+    TObject::operator=(digitMap);
+    fNSector=digitMap.fNSector;
+    fNplate=digitMap.fNplate;
+    fNstrip=digitMap.fNstrip;
+    fNpx=digitMap.fNpx;
+    fNpz=digitMap.fNpz;
+    fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
+    for (Int_t i=0; i<fMaxIndex; ++i) delete [] fDigitMap[i];
+    delete [] fDigitMap;
+    fDigitMap = new Int_t*[fMaxIndex];
+    for (Int_t i=0; i<fMaxIndex; i++) {
+      fDigitMap[i] = new Int_t[kMaxDigitsPerPad];
+      for (Int_t j=0; j<kMaxDigitsPerPad; j++)
+       fDigitMap[i][j]=digitMap.fDigitMap[i][j];
+    }
+  }
+  return *this;
 }
 
  
@@ -312,6 +331,29 @@ Int_t AliTOFDigitMap::DigitInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) co
 
 }
 
+////////////////////////////////////////////////////////////////////////
+Int_t AliTOFDigitMap::FilledCellsInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const
+{
+  //
+  // Returns number of digits in the strip iStrip,
+  //         in the plate iPlate of the sector iSector
+  //
+
+  Int_t volume[5] = {iSector, iPlate, iStrip, -1, -1};
+  Int_t counter = 0;
+
+  for (Int_t iPadX=0; iPadX<fNpx; iPadX++)
+    for (Int_t iPadZ=0; iPadZ<fNpz; iPadZ++) {
+      volume[3] = iPadX;
+      volume[4] = iPadZ;
+      if (GetDigitIndex(volume, 0)>=0)
+       counter++;
+    }
+
+  return counter;
+
+}
+
 ////////////////////////////////////////////////////////////////////////
 void AliTOFDigitMap::ResetDigitNumber(Int_t *vol, Int_t dig)
 {