More flexible map flag than only for high and low gain (David)
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 May 2008 08:06:24 +0000 (08:06 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 May 2008 08:06:24 +0000 (08:06 +0000)
RAW/AliCaloRawStream.cxx
RAW/AliCaloRawStream.h

index 763d750..aeca3fa 100644 (file)
@@ -51,7 +51,8 @@ AliCaloRawStream::AliCaloRawStream(AliRawReader* rawReader, TString calo, AliAlt
   fPrevRow(-1),
   fColumn(-1),
   fPrevColumn(-1),
-  fGain(0),
+  fCaloFlag(0),
+  fFilter(0),
   fNRCU(0),
   fExternalMapping(kFALSE)
 {
@@ -92,7 +93,8 @@ AliCaloRawStream::AliCaloRawStream(const AliCaloRawStream& stream) :
   fPrevRow(-1),
   fColumn(-1),
   fPrevColumn(-1),
-  fGain(0),
+  fCaloFlag(0),
+  fFilter(0),
   fNRCU(0),
   fExternalMapping(kFALSE)
 {  
@@ -123,7 +125,7 @@ void AliCaloRawStream::Reset()
   // reset phos/emcal raw stream params
   AliAltroRawStream::Reset();
   fModule = fPrevModule = fRow = fPrevRow = fColumn = fPrevColumn = -1;
-  fGain = 0;
+  fFilter = fCaloFlag = 0;
 }
 
 //_____________________________________________________________________________
@@ -136,8 +138,15 @@ Bool_t AliCaloRawStream::Next()
   fPrevRow = fRow;
   fPrevColumn = fColumn;
   if (AliAltroRawStream::Next()) {
-    if (IsNewHWAddress())
+    if (IsNewHWAddress()) {
       ApplyAltroMapping();
+      if ( fFilter > 0 ) { // some data should be filtered out
+       if ( (fFilter & (1<<fCaloFlag)) != 0) {  
+         // this particular data should be filtered out
+         Next(); // go to the next address instead
+       }
+      }
+    }
     return kTRUE;
   }
   else
@@ -158,6 +167,6 @@ void AliCaloRawStream::ApplyAltroMapping()
   Short_t hwAddress = GetHWAddress();
   fRow = fMapping[rcuIndex]->GetPadRow(hwAddress);
   fColumn = fMapping[rcuIndex]->GetPad(hwAddress);
-  fGain = fMapping[rcuIndex]->GetSector(hwAddress);
+  fCaloFlag = fMapping[rcuIndex]->GetSector(hwAddress);
 
 }
index 07dca9f..c398bdf 100644 (file)
@@ -38,9 +38,20 @@ public :
   Bool_t           IsNewModule()   const {return GetModule() != GetPrevModule();}
   Bool_t           IsNewRow()      const {return (GetRow() != GetPrevRow()) || IsNewModule();}
   Bool_t           IsNewColumn()   const {return (GetColumn() != GetPrevColumn()) || IsNewRow();}
-  Bool_t           IsLowGain()     const {return (!fGain);} 
   Int_t            GetNRCU() const {return fNRCU;}
 
+  enum EAliCaloFlag { kLowGain=0, kHighGain=1, kTRUData=2, kLEDMonData=3 };
+  Bool_t           IsLowGain()     const {return (fCaloFlag == kLowGain);}
+  Bool_t           IsHighGain()    const {return (fCaloFlag == kHighGain);}
+  Bool_t           IsTRUData()     const {return (fCaloFlag == kTRUData);}
+  Bool_t           IsLEDMonData()  const {return (fCaloFlag == kLEDMonData);} 
+
+  Int_t GetCaloFlag() const { return fCaloFlag; } 
+  Int_t GetFilter() const { return fFilter; } 
+
+  void SkipData(EAliCaloFlag caloFlag=kLEDMonData) 
+    { fFilter |= (1<<caloFlag); }
+
 protected:
 
   AliCaloRawStream(const AliCaloRawStream& stream);
@@ -54,7 +65,8 @@ protected:
   Int_t            fPrevRow;      // index of previous row
   Int_t            fColumn;       // index of current column
   Int_t            fPrevColumn;   // index of previous column
-  Bool_t          fGain;         // low (0) or (1) high gain
+  Int_t            fCaloFlag;     // low (0) or (1) high gain; see enum EAliCaloFlag above
+  Int_t            fFilter; // default 0 = let everything through
   Int_t            fNRCU;   // number of RCU per (super)module
   Bool_t           fExternalMapping;   // use external mapping or create a default one
   AliAltroMapping *fMapping[4];   // pointers to ALTRO mapping