]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFDigitMap.cxx
A new class AliPHOSModuleMisalignment is added to read survey data
[u/mrichter/AliRoot.git] / TOF / AliTOFDigitMap.cxx
index d120be1ba3e142321247ca523d74974ab4ee33da..c99c890dc0086ffc6f5bcc00d5801c982d9be0a6 100644 (file)
@@ -223,6 +223,7 @@ AliTOFDigitMap & AliTOFDigitMap::operator = (const AliTOFDigitMap & /*rhs*/)
 // Dummy assignment operator
     return *this;
 }
+
 ////////////////////////////////////////////////////////////////////////
 Int_t AliTOFDigitMap::GetFilledCellNumber() const
 {
@@ -253,3 +254,133 @@ Int_t AliTOFDigitMap::GetFilledCellNumber() const
   return counter;
 
 }
+
+////////////////////////////////////////////////////////////////////////
+Bool_t AliTOFDigitMap::StripDigitCheck(Int_t iSector, Int_t iPlate, Int_t iStrip) const
+{
+  //
+  // Returns:
+  //           kFALSE if the strip doesn't contain digits
+  //           kTRUE  if the strip contains at least one digit
+  //
+
+  Int_t volume[5] = {iSector, iPlate, iStrip, -1, -1};
+  Bool_t counter = kFALSE;
+
+  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 = kTRUE;
+         break;          
+       }
+      }
+
+  return counter;
+
+}
+
+////////////////////////////////////////////////////////////////////////
+Int_t AliTOFDigitMap::DigitInStrip(Int_t iSector, Int_t iPlate, Int_t iStrip) const
+{
+  //
+  // Returns:
+  //
+
+  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++)
+      for (Int_t label=0; label<kMaxDigitsPerPad; label++) {
+       volume[3] = iPadX;
+       volume[4] = iPadZ;
+       if (GetDigitIndex(volume, label)<0) continue;
+       counter++;
+      }
+
+  return counter;
+
+}
+
+////////////////////////////////////////////////////////////////////////
+void AliTOFDigitMap::ResetDigitNumber(Int_t *vol, Int_t dig)
+{
+  //
+  // Reset digit into pad vol
+  //
+
+  Int_t dummy = -1;
+
+  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++) {
+    if (fDigitMap[CheckedIndex(vol)][slot]-1==dig) {
+      fDigitMap[CheckedIndex(vol)][slot] = 0;
+      dummy = slot;
+    }
+  }
+  /*
+  if (dummy<kMaxDigitsPerPad-1) {
+    for (Int_t ii=dummy; ii<kMaxDigitsPerPad-1; ii++) {
+      fDigitMap[CheckedIndex(vol)][ii] =
+       fDigitMap[CheckedIndex(vol)][ii+1];
+    }
+  }
+  */
+}
+
+////////////////////////////////////////////////////////////////////////
+void AliTOFDigitMap::ResetDigit(Int_t *vol, Int_t dig)
+{
+  //
+  // Reset digit into pad vol
+  //
+  // 0 means empty pad, we need to shift indeces by 1
+
+  //for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++) {
+  //if (fDigitMap[CheckedIndex(vol)][slot]==dig)
+  //fDigitMap[CheckedIndex(vol)][slot] = 0;
+  //}
+
+
+  fDigitMap[CheckedIndex(vol)][dig] = 0;
+  /*
+  if (dig<kMaxDigitsPerPad-1) {
+    for (Int_t ii=dig; ii<kMaxDigitsPerPad-1; ii++) {
+      fDigitMap[CheckedIndex(vol)][ii] =
+       fDigitMap[CheckedIndex(vol)][ii+1];
+    }
+  }
+  */
+}
+
+void AliTOFDigitMap::ResetDigit(Int_t *vol)
+{
+  //
+  // Reset digit into pad vol
+  //
+  // 0 means empty pad, we need to shift indices by 1
+
+  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++)
+    fDigitMap[CheckedIndex(vol)][slot] = 0;
+
+}
+
+Int_t AliTOFDigitMap::GetNumberOfDigits(Int_t *vol)
+{
+  //
+  // Returns the number of digit
+  //   into pad volume vol
+  //
+  // 0 means empty pad
+  //
+
+  Int_t counter = 0;
+
+  for (Int_t slot=0; slot<kMaxDigitsPerPad; slot++)
+    if (GetDigitIndex(vol, slot)!=-1) counter++;
+
+  return counter;
+
+}