LCOV - code coverage report
Current view: top level - TRD/TRDbase - AliTRDcluster.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 30 52 57.7 %
Date: 2016-06-14 17:26:59 Functions: 26 44 59.1 %

          Line data    Source code
       1             : #ifndef ALITRDCLUSTER_H
       2             : #define ALITRDCLUSTER_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : 
       8             : ///////////////////////////////////////////////////////////////////////////////
       9             : //                                                                           //
      10             : //  TRD cluster                                                              //
      11             : //                                                                           //
      12             : ///////////////////////////////////////////////////////////////////////////////
      13             : 
      14             : #include "AliCluster.h"
      15             : 
      16             : class AliTRDtrackletWord;
      17             : 
      18             : class AliTRDcluster : public AliCluster {
      19             :   friend class AliHLTTRDCluster;
      20             :   friend class AliTRDtrackletOflHelper;
      21             : 
      22             : public:
      23             :   enum ETRDclusterStatus { 
      24             :     kInChamber = BIT(16) // Out of fiducial volume of chamber (signal tails)
      25             :    ,kFivePad   = BIT(17) // Deconvoluted clusters
      26             :    ,kLUT       = BIT(18)
      27             :    ,kGAUS      = BIT(19)
      28             :    ,kCOG       = BIT(20)
      29             :    ,kXcorr     = BIT(21)  // steer efficient vd corrections
      30             :    ,kRawSignals= BIT(22)  // toggle raw digits storage
      31             :   };
      32             :   enum ETRDclusterMask { 
      33             :     kMaskedLeft   = 0
      34             :    ,kMaskedCenter = 1
      35             :    ,kMaskedRight  = 2
      36             :   };
      37             : 
      38             :   AliTRDcluster();
      39             :   AliTRDcluster(Int_t det, UChar_t col, UChar_t row, UChar_t time, const Short_t *sig, UShort_t volid);
      40             :   AliTRDcluster(Int_t det, Float_t q, const Float_t *pos, const Float_t *sig
      41             :               , const Int_t *tracks, Char_t npads, Short_t * const signals
      42             :               , UChar_t col, UChar_t row, UChar_t time
      43             :               , Char_t timebin, Float_t center, UShort_t volid);
      44             :   AliTRDcluster(const AliTRDtrackletWord *const tracklet, Int_t det, UShort_t volid);
      45             :   AliTRDcluster(const AliTRDcluster &c);
      46      260658 :   virtual ~AliTRDcluster() {};
      47             :   AliTRDcluster    &operator=(const AliTRDcluster &c);
      48             : 
      49             :   virtual void      AddTrackIndex(const Int_t * const i); 
      50             :           void      Clear(Option_t *o="");
      51             :   
      52             :           Bool_t    IsEqual(const TObject *otherCluster) const;
      53      107740 :           Bool_t    IsInChamber() const             { return TestBit(kInChamber);  }
      54           0 :           Bool_t    IsMasked() const                { return fClusterMasking ? kTRUE : kFALSE; }
      55       46840 :           Bool_t    IsShared() const                { return IsClusterShared();    }
      56       55800 :           Bool_t    IsUsed() const                  { return IsClusterUsed();      }
      57           0 :           Bool_t    IsFivePad() const               { return TestBit(kFivePad);    }
      58             :   inline  Bool_t    IsRPhiMethod(ETRDclusterStatus m) const;
      59             :   inline  Bool_t    IsMCcluster() const;
      60       35852 :           Bool_t    HasXcorr() const                { return TestBit(kXcorr);      }
      61           0 :           Bool_t    HasRawSignals() const           { return TestBit(kRawSignals); }
      62             : 
      63           0 :           UChar_t   GetPadMaskedPosition() const    { return fClusterMasking & 7;  }
      64           0 :           UChar_t   GetPadMaskedStatus() const      { return fClusterMasking >> 3; }
      65       92410 :           Int_t     GetDetector() const             { return fDetector;            }
      66       25774 :           Int_t     GetLocalTimeBin() const         { return fLocalTimeBin;        }
      67       78774 :           Float_t   GetQ() const                    { return fQ;                   }
      68           0 :           Short_t   GetRawQ() const                 { return TestBit(kRawSignals)?(Short_t)GetSumS():0;}
      69           0 :           Int_t     GetNPads() const                { return fNPads;               }
      70           0 :           Float_t   GetCenter() const               { return fCenter;              }
      71       76840 :           Int_t     GetPadCol() const               { return fPadCol;              }
      72      144948 :           Int_t     GetPadRow() const               { return fPadRow;              }
      73       57264 :           Int_t     GetPadTime() const              { return fPadTime;             }
      74      247320 :           Short_t  *GetSignals()                    { return fSignals;             }
      75             :           Float_t   GetSumS() const;
      76             : 
      77             :   static  Double_t  GetSX(Int_t tb, Double_t z=-1);
      78             :   static  Double_t  GetSYdrift(Int_t tb, Int_t ly=0, Double_t z=-1);
      79             :   static  Double_t  GetSYcharge(Float_t q);
      80             :   static  Double_t  GetSYprf(Int_t ly, Double_t center, Double_t s2);
      81             :   static  Double_t  GetXcorr(Int_t tb, Double_t z=-1);
      82             :   static  Double_t  GetYcorr(Int_t ly, Float_t y);
      83             :           Float_t   GetXloc(Double_t t0, Double_t vd
      84             :                           , const Double_t *const q = 0x0
      85             :                           , const Double_t *const xq = 0x0
      86             :                           , Double_t z = 0.2);
      87             :           Float_t   GetYloc(Double_t y0, Double_t s2, Double_t W, Double_t *const y1=0x0, Double_t *const y2=0x0);
      88             : 
      89             :   void        Print(Option_t* o="") const;
      90             : 
      91       11790 :   void        SetLocalTimeBin(Char_t t)                   { fLocalTimeBin   = t;                }
      92       38116 :   void        SetNPads(Int_t n)                           { fNPads          = n;                }
      93           0 :   void        SetPadCol(UChar_t inPadCol)                 { fPadCol         = inPadCol;         }
      94           0 :   void        SetPadRow(UChar_t inPadRow)                 { fPadRow         = inPadRow;         }
      95           0 :   void        SetPadTime(UChar_t inPadTime)               { fPadTime        = inPadTime;        }
      96           0 :   void        SetDetector(Short_t inDetector)             { fDetector       = inDetector;       }
      97       38116 :   void        SetQ(Float_t inQ)                           { fQ              = inQ;              }
      98           0 :   void        SetClusterMasking(UChar_t inClusterMasking) { fClusterMasking = inClusterMasking; }
      99           0 :   void        SetShared(Bool_t sh  = kTRUE)               { SetBit(AliCluster::kShared,sh);     }
     100       19058 :   void        SetFivePad(Bool_t b = kTRUE)                { SetBit(kFivePad,b);                 }
     101       16891 :   void        SetInChamber(Bool_t in = kTRUE)             { SetBit(kInChamber,in);              }
     102             :   void        SetPadMaskedPosition(UChar_t position);
     103             :   void        SetPadMaskedStatus(UChar_t status);
     104             :   void        SetSigmaY2(Float_t s2, Float_t dt, Float_t exb, Float_t x0, Float_t z=-1., Float_t tgp=0.);
     105       18452 :   void        SetSignals(Short_t sig[7], Bool_t raw=kTRUE){ memcpy(fSignals, sig, 7*sizeof(Short_t)); SetBit(kRawSignals, raw);}
     106             :   inline void SetRPhiMethod(ETRDclusterStatus m);
     107       19058 :   void        SetXcorr(Bool_t xc = kTRUE)                 { SetBit(kXcorr,xc);                  }
     108             : 
     109        8960 :   void        Use(Int_t u = 1)                            { SetBit(AliCluster::kUsed, u ? kTRUE : kFALSE); }
     110             : 
     111             : protected:
     112             : 
     113             :   UChar_t fPadCol;         //  Central pad number in column direction
     114             :   UChar_t fPadRow;         //  Central pad number in row direction
     115             :   UChar_t fPadTime;        //  Uncalibrated time bin number
     116             :   Char_t  fLocalTimeBin;   //  T0-calibrated time bin number
     117             :   UChar_t fNPads;          //  Number of pads in cluster
     118             :   UChar_t fClusterMasking; //  Bit field containing cluster status information;
     119             :   Short_t fDetector;       //  TRD detector number
     120             :   Short_t fSignals[7];     //  Raw signals if HasRawSignals() returns true. Otherwise calibrated.
     121             :   Float_t fQ;              //  Calibrated cluster charge
     122             :   Float_t fCenter;         //  Center of the cluster relative to the pad 
     123             : 
     124             : private:
     125             : 
     126             :          Float_t   GetDYcog(const Double_t *const y1=0x0, const Double_t *const y2=0x0);
     127             :          Float_t   GetDYlut(const Double_t *const y1=0x0, const Double_t *const y2=0x0);
     128             :          Float_t   GetDYgauss(Double_t sw, Double_t *const y1=0x0, Double_t *const y2=0x0);
     129             :   static void      FillLUT();
     130             : 
     131             :   static const Int_t   fgkNlut;              //!  Number of bins of the LUT
     132             :   static Double_t     *fgLUT;                //! The lookup table
     133             : 
     134      120744 :   ClassDef(AliTRDcluster, 7)                 //  Cluster for the TRD
     135             : 
     136             : };
     137             : 
     138             : //________________________________________________
     139             : inline  Bool_t AliTRDcluster::IsMCcluster() const
     140             : {
     141           0 :   if( GetLabel(0) == fPadRow &&
     142           0 :       GetLabel(1) == fPadCol &&
     143           0 :       GetLabel(2) == fPadTime) return kFALSE;
     144           0 :   return kTRUE;
     145           0 : }
     146             : 
     147             : //________________________________________________
     148             : inline Bool_t AliTRDcluster::IsRPhiMethod(ETRDclusterStatus m) const
     149             : {
     150      358454 :   if(m==kLUT && TestBit(kLUT)) return kTRUE;
     151       47441 :   else if(m==kGAUS && TestBit(kGAUS)) return kTRUE;
     152       94882 :   else if(m==kCOG && (!TestBit(kLUT)&&!TestBit(kGAUS))) return kTRUE;
     153             : 
     154       47441 :   return kFALSE;
     155      113334 : }
     156             : 
     157             : //________________________________________________
     158             : inline void AliTRDcluster::SetRPhiMethod(ETRDclusterStatus m)
     159             : {
     160       38116 :   SetBit(kCOG,0);SetBit(kLUT,0);SetBit(kGAUS,0);
     161       19058 :   switch(m){
     162           0 :   case kCOG: SetBit(kCOG); break;
     163       19058 :   case kLUT: SetBit(kLUT); break;
     164           0 :   case kGAUS: SetBit(kGAUS); break;
     165           0 :   default: SetBit(kLUT); break;
     166             :   }
     167       19058 : }
     168             : 
     169             : #endif

Generated by: LCOV version 1.11