]> 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 56c47786e9c11b9d9ec4104f132967878c42aef8..c99c890dc0086ffc6f5bcc00d5801c982d9be0a6 100644 (file)
@@ -15,6 +15,9 @@
 
 /*
 $Log$
+Revision 1.12  2007/02/20 15:57:00  decaro
+Raw data update: to read the TOF raw data defined in UNPACKED mode
+
 */
 
 ////////////////////////////////////////////////////////////////////////
@@ -52,8 +55,7 @@ AliTOFDigitMap::AliTOFDigitMap():
   fNpx(-1),
   fNpz(-1),
   fMaxIndex(-1),
-  fDigitMap(0x0),
-  fTOFGeometry(new AliTOFGeometry())
+  fDigitMap(0x0)
 {
 //
 // Default ctor
@@ -61,7 +63,7 @@ AliTOFDigitMap::AliTOFDigitMap():
 
   fNSector = AliTOFGeometry::NSectors();
   fNplate = AliTOFGeometry::NPlates();
-  fNstrip = fTOFGeometry->NStripC();//fTOFGeometry->NMaxNstrip();
+  fNstrip = AliTOFGeometry::NStripC();
   fNpx  = AliTOFGeometry::NpadX();
   fNpz  = AliTOFGeometry::NpadZ();
   fMaxIndex=fNSector*fNplate*fNstrip*fNpx*fNpz;
@@ -80,8 +82,7 @@ AliTOFDigitMap::AliTOFDigitMap(const AliTOFDigitMap & /*digitMap*/):
   fNpx(-1),
   fNpz(-1),
   fMaxIndex(-1),
-  fDigitMap(0x0),
-  fTOFGeometry(new AliTOFGeometry())
+  fDigitMap(0x0)
 {
 //
 // Dummy copy constructor
@@ -101,7 +102,6 @@ AliTOFDigitMap::~AliTOFDigitMap()
     for (Int_t i=0; i<fMaxIndex; i++)  delete[] fDigitMap[i];
   }
 
-  fTOFGeometry = 0;
 
 }
 
@@ -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;
+
+}