AliRoot Core  d69033e (d69033e)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliTPCclusterMI.h
Go to the documentation of this file.
1 #ifndef ALITPCCLUSTERMI_H
2 #define ALITPCCLUSTERMI_H
3 
10 
11 /* $Id$ */
12 
13 
14 #include "AliCluster.h"
15 #include "TMath.h"
16 //#include "AliTPCclusterInfo.h"
17 #include <AliTrackPointArray.h>
18 
19 //_____________________________________________________________________________
20 class AliTPCclusterMI : public AliCluster {
21  enum Status{ kDisabled = 0x7F};
22  enum {
23  kSectorChanged=BIT(14) // to flag sector change due to the distortions
24  };
25 public:
27  AliTPCclusterMI(const AliTPCclusterMI & cluster);
28  AliTPCclusterMI &operator = (const AliTPCclusterMI & cluster); //assignment operator
29  AliTPCclusterMI(Int_t *lab, Float_t *hit);
30  virtual ~AliTPCclusterMI();
31  virtual void Clear(const Option_t*) { ResetBit(0xffffffff);}
32  virtual Bool_t IsSortable() const;
33  virtual Int_t Compare(const TObject* obj) const;
34  inline void Use(Int_t inc=10);
35  inline void Disable(){fUsed=kDisabled;}
36  inline Bool_t IsDisabled() const {return (fUsed==kDisabled);}
37 
38  Bool_t IsSectorChanged() const {return TestBit(kSectorChanged);}
39  void SetSectorChanged(Bool_t v=kTRUE) {SetBit(kSectorChanged,v);}
40 
41  virtual Int_t GetDetector() const {return fDetector;}
42  virtual Int_t GetRow() const {return fRow;}
43  virtual void SetDetector(Int_t detector);
44  virtual void SetRow(Int_t row){fRow = (UChar_t)(row%256);}
45  virtual void SetTimeBin(Float_t timeBin){ fTimeBin= timeBin;}
46  virtual void SetPad(Float_t pad){ fPad = pad;}
47  //
48  void SetQ(Float_t q) {fQ=(UShort_t)q;}
49  void SetType(Char_t type) {fType=type;}
50  void SetMax(UShort_t max) {fMax=max;}
51  Int_t IsUsed(Int_t th=10) const {return (fUsed>=th) ? 1 : 0;}
52  Float_t GetQ() const {return TMath::Abs(fQ);}
53  Float_t GetMax() const {return fMax;}
54  Char_t GetType()const {return fType;}
55  Float_t GetTimeBin() const { return fTimeBin;}
56  Float_t GetPad() const { return fPad;}
57  //
58  void SetDistortions(float dx, float dy, float dz);
59  void GetDistortions(float& dx,float& dy, float& dz) const;
60  void SetDistortionDispersion(float d);
61  Float_t GetDistortionX() const;
62  Float_t GetDistortionY() const;
63  Float_t GetDistortionZ() const;
64  Float_t GetDistortionDispersion() const;
65 
66  Bool_t GetGlobalCov(Float_t cov[6]) const;
67  // AliTPCclusterInfo * GetInfo() const { return fInfo;}
68  // void SetInfo(AliTPCclusterInfo * info);
69  //
70  AliTPCclusterMI* MakeCluster(AliTrackPoint* point);
71  AliTrackPoint* MakePoint();
72  static void SetGlobalTrackPoint(const AliCluster &cl, AliTrackPoint &point);
73 
74  protected:
75  enum{ // constants for storing x,y,z distortion in AliCluster::fSigmaYZ
76  kScaleDX=50,kScaleDY=100,kScaleDZ=100,kScaleDisp=85, // 1./kScale gives rounding in cm
78  kMaxDX = (0x1<<(kNBitsDX-1))-1, kMaxDY = (0x1<<(kNBitsDY-1))-1,kMaxDZ = (0x1<<(kNBitsDZ-1))-1,
79  kMaxDisp = 0xff,
80  kMaskDX = (0x1<<kNBitsDX)-1, kMaskDY = (0x1<<kNBitsDY)-1, kMaskDZ = (0x1<<kNBitsDZ)-1
81  };
82 
83 private:
84  // AliTPCclusterInfo * fInfo; ///< pointer to the cluster debug info
85  Float_t fTimeBin;
86  Float_t fPad;
87  Short_t fQ ;
88  Short_t fMax;
89  Char_t fType;
90  // offline: type of the cluster 0 means golden
91  // hlt: 0 = Not Split, 1 = Split in Pad Direction, 2 = Split in Time Direction, 3 = Split in both directions
92  Char_t fUsed;
93  UChar_t fDisp;
94  UChar_t fDetector;
95  UChar_t fRow;
96  ClassDef(AliTPCclusterMI,7) // Time Projection Chamber clusters
99 };
100 
101 void AliTPCclusterMI::Use(Int_t inc)
102 {
103  if (inc>0) fUsed+=inc;
104  else
105  fUsed=0;
106 }
107 
108 
109 
110 #endif
111 
112 
virtual void Clear(const Option_t *)
Float_t GetDistortionY() const
virtual ~AliTPCclusterMI()
AliTPCclusterMI & operator=(const AliTPCclusterMI &cluster)
virtual void SetRow(Int_t row)
static void SetGlobalTrackPoint(const AliCluster &cl, AliTrackPoint &point)
Float_t GetDistortionZ() const
virtual void SetPad(Float_t pad)
Float_t GetQ() const
Float_t fTimeBin
time bin coordinate
Char_t GetType() const
virtual Bool_t IsSortable() const
Short_t fQ
Q of cluster (in ADC counts)
virtual Int_t GetDetector() const
Char_t fUsed
counter of usage
Short_t fMax
maximal amplitude in cluster
Int_t IsUsed(Int_t th=10) const
Char_t fType
different meaning depending on whether hlt of offline cluster finder was used:
Float_t GetTimeBin() const
void SetType(Char_t type)
Float_t fPad
pad coordinate
void SetSectorChanged(Bool_t v=kTRUE)
void SetMax(UShort_t max)
Float_t GetDistortionDispersion() const
Implementation of the TPC cluser.
virtual Int_t Compare(const TObject *obj) const
void SetDistortions(float dx, float dy, float dz)
UChar_t fDetector
detector number
virtual void SetDetector(Int_t detector)
Bool_t IsDisabled() const
AliTPCclusterMI * MakeCluster(AliTrackPoint *point)
void SetQ(Float_t q)
virtual void SetTimeBin(Float_t timeBin)
Bool_t GetGlobalCov(Float_t cov[6]) const
Float_t GetPad() const
virtual Int_t GetRow() const
void Use(Int_t inc=10)
UChar_t fDisp
dispersion of applied correction
void SetDistortionDispersion(float d)
Float_t GetDistortionX() const
AliTrackPoint * MakePoint()
Float_t GetMax() const
Bool_t IsSectorChanged() const
void GetDistortions(float &dx, float &dy, float &dz) const