Strips with R/O errors are marked as invalid. Eta always set to correct value
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Jun 2011 14:12:40 +0000 (14:12 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Jun 2011 14:12:40 +0000 (14:12 +0000)
FMD/AliFMDReconstructor.cxx
FMD/AliFMDReconstructor.h

index 03f378f..c6bac94 100644 (file)
@@ -291,13 +291,18 @@ AliFMDReconstructor::MarkDeadChannels(AliESDFMD* esd) const
 
       for (UShort_t s = 0; s < nS; s++) { 
        for (UShort_t t = 0; t < nT; t++) {
+         if (fBad(d, r, s, t)) { 
+           AliDebug(5, Form("Marking FMD%d%c[%2d,%3d] as bad", d, r, s, t));
+           esd->SetMultiplicity(d, r, s, t, AliESDFMD::kInvalidMult);
+         }         
          if (param->IsDead(d, r, s, t)) { 
            AliDebug(5, Form("Marking FMD%d%c[%2d,%3d] as dead", d, r, s, t));
            esd->SetMultiplicity(d, r, s, t, AliESDFMD::kInvalidMult);
-           esd->SetEta(d, r, s, t, AliESDFMD::kInvalidEta);
+           // esd->SetEta(d, r, s, t, AliESDFMD::kInvalidEta);
          }
          else if (esd->Multiplicity(d, r, s, t) == AliESDFMD::kInvalidMult) {
-           AliDebug(10, Form("Setting null signal in FMD%d%c[%2d,%3d]", d, r, s, t));
+           AliDebug(10, Form("Setting null signal in FMD%d%c[%2d,%3d]", 
+                             d, r, s, t));
            esd->SetMultiplicity(d, r, s, t, 0);
          }
        }
@@ -318,7 +323,7 @@ AliFMDReconstructor::Reconstruct(AliRawReader* reader, TTree*) const
   //   ctree    Not used - 'cluster tree' to store rec-points in. 
   AliFMDDebug(1, ("Reconstructing from raw reader"));
   AliFMDRawReader rawReader(reader, 0);
-
+  fBad.Reset(false);
   UShort_t det, sec, str, fac;
   Short_t  adc, oldDet = -1;
   Bool_t   zs;
@@ -434,6 +439,7 @@ AliFMDReconstructor::ProcessDigits(TClonesArray* digits) const
   AliFMDDebug(2, ("Got %d digits", nDigits));
   fESDObj->SetNoiseFactor(fNoiseFactor);
   fESDObj->SetAngleCorrected(fAngleCorrect);
+  fBad.Reset(false);
   for (Int_t i = 0; i < nDigits; i++) {
     AliFMDDigit* digit = static_cast<AliFMDDigit*>(digits->At(i));
     if (!digit) continue;
@@ -477,10 +483,17 @@ AliFMDReconstructor::ProcessSignal(UShort_t det,
   //    rng    Strip ID
   //    adc     ADC counts
   // 
-  AliFMDParameters* param  = AliFMDParameters::Instance();
+  if (adc >= AliFMDRawReader::kBadSignal) { 
+    AliFMDDebug(1, ("FMD%d%c[%2d,%3d] is marked bad", det, rng, sec, str));
+    fBad(det,rng,sec,str) = true;
+    return;
+  }
+
   // Check that the strip is not marked as dead 
+  AliFMDParameters* param  = AliFMDParameters::Instance();
   if (param->IsDead(det, rng, sec, str)) {
     AliFMDDebug(1, ("FMD%d%c[%2d,%3d] is dead", det, rng, sec, str));
+    fBad(det,rng,sec,str) = true;
     return;
   }
   
index 374a245..90bfea4 100644 (file)
@@ -25,6 +25,7 @@
 # include <AliReconstructor.h>
 #endif
 #include "AliLog.h"
+#include <AliFMDBoolMap.h>
 
 //____________________________________________________________________
 class TTree;
@@ -416,6 +417,7 @@ protected:
   TH1*                  fDiagAll;      // Diagnostics histogram
   mutable Bool_t        fZS[3];         // Zero-suppredded?
   mutable UShort_t      fZSFactor[3];   // Noise factor for Zero-suppression
+  mutable AliFMDBoolMap fBad;           // Strip marked bad
 private:
    
   ClassDef(AliFMDReconstructor, 3)  // class for the FMD reconstruction