]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDcluster.h
Add pile up selection via EMCal cluster multiplicity, add or update pile-up control...
[u/mrichter/AliRoot.git] / TRD / AliTRDcluster.h
index 86936dc7bde53e0ac65cb179e6127cba5d6083b7..e7803054e0dd816dadc7208f02d6412895456ddb 100644 (file)
 class AliTRDtrackletWord;
 
 class AliTRDcluster : public AliCluster {
-public:
+  friend class AliHLTTRDCluster;
+  friend class AliTRDtrackletOflHelper;
 
+public:
   enum ETRDclusterStatus { 
     kInChamber = BIT(16) // Out of fiducial volume of chamber (signal tails)
    ,kFivePad   = BIT(17) // Deconvoluted clusters
    ,kLUT       = BIT(18)
    ,kGAUS      = BIT(19)
    ,kCOG       = BIT(20)
+   ,kXcorr     = BIT(21)  // steer efficient vd corrections
+   ,kRawSignals= BIT(22)  // toggle raw digits storage
   };
   enum ETRDclusterMask { 
     kMaskedLeft   = 0
@@ -33,8 +37,8 @@ public:
 
   AliTRDcluster();
   AliTRDcluster(Int_t det, UChar_t col, UChar_t row, UChar_t time, const Short_t *sig, UShort_t volid);
-  AliTRDcluster(Int_t det, Float_t q, Float_t *pos, Float_t *sig
-             , Int_t *tracks, Char_t npads, Short_t * const signals
+  AliTRDcluster(Int_t det, Float_t q, const Float_t *pos, const Float_t *sig
+             , const Int_t *tracks, Char_t npads, Short_t * const signals
              , UChar_t col, UChar_t row, UChar_t time
              , Char_t timebin, Float_t center, UShort_t volid);
   AliTRDcluster(const AliTRDtrackletWord *const tracklet, Int_t det, UShort_t volid);
@@ -52,12 +56,16 @@ public:
           Bool_t    IsUsed() const                  { return IsClusterUsed();      }
           Bool_t    IsFivePad() const               { return TestBit(kFivePad);    }
   inline  Bool_t    IsRPhiMethod(ETRDclusterStatus m) const;
+  inline  Bool_t    IsMCcluster() const;
+          Bool_t    HasXcorr() const                { return TestBit(kXcorr);      }
+          Bool_t    HasRawSignals() const           { return TestBit(kRawSignals); }
 
           UChar_t   GetPadMaskedPosition() const    { return fClusterMasking & 7;  }
           UChar_t   GetPadMaskedStatus() const      { return fClusterMasking >> 3; }
           Int_t     GetDetector() const             { return fDetector;            }
           Int_t     GetLocalTimeBin() const         { return fLocalTimeBin;        }
           Float_t   GetQ() const                    { return fQ;                   }
+          Short_t   GetRawQ() const                 { return TestBit(kRawSignals)?(Short_t)GetSumS():0;}
           Int_t     GetNPads() const                { return fNPads;               }
           Float_t   GetCenter() const               { return fCenter;              }
           Int_t     GetPadCol() const               { return fPadCol;              }
@@ -94,7 +102,9 @@ public:
   void        SetPadMaskedPosition(UChar_t position);
   void        SetPadMaskedStatus(UChar_t status);
   void        SetSigmaY2(Float_t s2, Float_t dt, Float_t exb, Float_t x0, Float_t z=-1., Float_t tgp=0.);
+  void        SetSignals(Short_t sig[7], Bool_t raw=kTRUE){ memcpy(fSignals, sig, 7*sizeof(Short_t)); SetBit(kRawSignals, raw);}
   inline void SetRPhiMethod(ETRDclusterStatus m);
+  void        SetXcorr(Bool_t xc = kTRUE)                 { SetBit(kXcorr,xc);                  }
 
   void        Use(Int_t u = 1)                            { SetBit(AliCluster::kUsed, u ? kTRUE : kFALSE); }
 
@@ -107,8 +117,8 @@ protected:
   UChar_t fNPads;          //  Number of pads in cluster
   UChar_t fClusterMasking; //  Bit field containing cluster status information;
   Short_t fDetector;       //  TRD detector number
-  Short_t fSignals[7];     //  Signals in the cluster
-  Float_t fQ;              //  Amplitude 
+  Short_t fSignals[7];     //  Raw signals if HasRawSignals() returns true. Otherwise calibrated.
+  Float_t fQ;              //  Calibrated cluster charge
   Float_t fCenter;         //  Center of the cluster relative to the pad 
 
 private:
@@ -125,6 +135,15 @@ private:
 
 };
 
+//________________________________________________
+inline  Bool_t AliTRDcluster::IsMCcluster() const
+{
+  if( GetLabel(0) == fPadRow &&
+      GetLabel(1) == fPadCol &&
+      GetLabel(2) == fPadTime) return kFALSE;
+  return kTRUE;
+}
+
 //________________________________________________
 inline Bool_t AliTRDcluster::IsRPhiMethod(ETRDclusterStatus m) const
 {