]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
propagate pad status to the clusters - corrected (Markus)
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Dec 2008 17:10:36 +0000 (17:10 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 3 Dec 2008 17:10:36 +0000 (17:10 +0000)
TRD/AliTRDclusterizer.cxx
TRD/AliTRDclusterizer.h

index a4f2b5fe5073480b959d4b735ff0ee245272e39a..bbfae1dfd757f7cea465e4b8cc1ff23f53c8f100 100644 (file)
@@ -697,6 +697,32 @@ UChar_t AliTRDclusterizer::GetStatus(Short_t &signal)
   return status;
 }
 
+//_____________________________________________________________________________
+void AliTRDclusterizer::SetPadStatus(UChar_t status, UChar_t &out){
+  //
+  // Set the pad status into out
+  // First three bits are needed for the position encoding
+  //
+  status = status << 3;
+  out |= status;
+}
+
+//_____________________________________________________________________________
+UChar_t AliTRDclusterizer::GetPadStatus(UChar_t encoding){
+  //
+  // return the staus encoding of the corrupted pad
+  //
+  return static_cast<UChar_t>(encoding >> 3);
+}
+
+//_____________________________________________________________________________
+Int_t AliTRDclusterizer::GetCorruption(UChar_t encoding){
+  //
+  // Return the position of the corruption
+  //
+  return encoding & 7;
+}
+
 //_____________________________________________________________________________
 Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
 {
@@ -858,7 +884,7 @@ Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
               // Maximum found, mark the position by a negative signal
               digitsOut->SetData(row,col,time,-signalM);
               fIndexesMaxima->AddIndexTBin(row,col,time);
-              padStatus.SetData(row, col, time, ipos);
+              padStatus.SetData(row, col, time, ipos); // No corruption
             }
           }
         }
@@ -867,12 +893,14 @@ Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
           digitsOut->SetData(row,col,time,-signalM);
           digitsOut->SetData(row, col, time+1, 0.);
           fIndexesMaxima->AddIndexTBin(row,col,time);
+          SetPadStatus(status[0], ipos);
           padStatus.SetData(row, col, time, ipos);
         } 
         else if (status[2] && signalL <= signalM && signalL >= sigThresh) {
           digitsOut->SetData(row,col,time,-signalM);
           digitsOut->SetData(row, col, time-1, 0.);
           fIndexesMaxima->AddIndexTBin(row,col,time);
+          SetPadStatus(status[2], ipos);
           padStatus.SetData(row, col, time, ipos);
         }
       }
@@ -882,6 +910,7 @@ Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
         // Maximum found, mark the position by a negative signal
         digitsOut->SetData(row,col,time,-maxThresh);
         fIndexesMaxima->AddIndexTBin(row,col,time);
+        SetPadStatus(status[1], ipos);
         padStatus.SetData(row, col, time, ipos);
       }
     }
@@ -1046,18 +1075,11 @@ Bool_t AliTRDclusterizer::MakeClusters(Int_t det)
           volid);
         cluster->SetInChamber(!out);
 
-        UChar_t maskPosition = padStatus.GetData(row, col, time);
+        UChar_t maskPosition = GetCorruption(padStatus.GetData(row, col, time));
+        UChar_t padstatus = GetPadStatus(padStatus.GetData(row, col, time));
         if (maskPosition) { 
           cluster->SetPadMaskedPosition(maskPosition);
-          if      (maskPosition & AliTRDcluster::kMaskedLeft) {
-            cluster->SetPadMaskedStatus(status[0]);
-          }
-          else if (maskPosition & AliTRDcluster::kMaskedCenter) {
-            cluster->SetPadMaskedStatus(status[1]);
-          }
-          else {
-            cluster->SetPadMaskedStatus(status[2]);
-          }
+          cluster->SetPadMaskedStatus(padstatus);
         }
 
         // Temporarily store the row, column and time bin of the center pad
index b356c7359f824869a86429f76e6615a9ee54b292..80a5869027551a49a635b6fe6c46a81dbba7523f 100644 (file)
@@ -96,6 +96,10 @@ class AliTRDclusterizer : public TNamed
   void             FillLUT();
           Double_t LUTposition(Int_t ilayer, Double_t ampL, Double_t ampC, Double_t ampR) const;
   virtual void     ResetHelperIndexes(AliTRDSignalIndex *indexesIn);
+  
+  void              SetPadStatus(UChar_t status, UChar_t &encoding);
+  UChar_t           GetPadStatus(UChar_t encoding);
+  Int_t             GetCorruption(UChar_t encoding);
 
   const AliTRDReconstructor *fReconstructor;       //! reconstructor
   AliRunLoader        *fRunLoader;           //! Run Loader