]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/Rec/AliTPCclusterMI.h
3dae8ecc377093e0b953f00c5f6a3292902b0b10
[u/mrichter/AliRoot.git] / TPC / Rec / AliTPCclusterMI.h
1 #ifndef ALITPCCLUSTERMI_H
2 #define ALITPCCLUSTERMI_H
3
4 //-------------------------------------------------------
5 //                    TPC Cluster Class
6 //   Parallel tracking
7 //   Origin: Marian Ivanov
8 //-------------------------------------------------------
9
10 /* $Id$ */
11
12
13 #include "AliCluster.h"
14 #include "TMath.h"
15 #include "AliTPCclusterInfo.h"
16 #include <AliTrackPointArray.h>
17
18 //_____________________________________________________________________________
19 class AliTPCclusterMI : public AliCluster {
20   enum Status{ kDisabled = 0x7F};
21 public:
22   AliTPCclusterMI();
23   AliTPCclusterMI(const AliTPCclusterMI & cluster);
24   AliTPCclusterMI &operator = (const AliTPCclusterMI & cluster); //assignment operator
25   AliTPCclusterMI(Int_t *lab, Float_t *hit);
26   virtual ~AliTPCclusterMI();
27   virtual void  Clear(const Option_t*) { delete fInfo; fInfo=0;}
28   virtual Bool_t IsSortable() const; 
29   virtual Int_t Compare(const TObject* obj) const;
30   inline  void Use(Int_t inc=10);
31   inline  void Disable(){fUsed=kDisabled;}
32   inline  Bool_t IsDisabled() const {return (fUsed==kDisabled);}
33
34   virtual Int_t GetDetector() const {return fDetector;}
35   virtual Int_t GetRow() const {return fRow;}
36   virtual void SetDetector(Int_t detector);
37   virtual void SetRow(Int_t row){fRow = (UChar_t)(row%256);}  
38   virtual void SetTimeBin(Float_t timeBin){ fTimeBin= timeBin;}
39   virtual void SetPad(Float_t pad){ fPad = pad;}
40   //
41   void SetQ(Float_t q) {fQ=(UShort_t)q;}
42   void SetType(Char_t type) {fType=type;}
43   void SetMax(UShort_t max) {fMax=max;}
44   Int_t IsUsed(Int_t th=10) const {return (fUsed>=th) ? 1 : 0;}
45   Float_t GetQ() const {return TMath::Abs(fQ);}
46   Float_t GetMax() const {return fMax;} 
47   Char_t  GetType()const {return fType;}
48   Float_t GetTimeBin() const { return fTimeBin;}
49   Float_t GetPad() const { return fPad;}
50   AliTPCclusterInfo * GetInfo() const { return fInfo;}
51   void SetInfo(AliTPCclusterInfo * info);
52   //
53   AliTPCclusterMI*  MakeCluster(AliTrackPoint* point);
54   AliTrackPoint*    MakePoint();
55   static void     SetGlobalTrackPoint(const AliCluster &cl, AliTrackPoint &point);
56   
57 private:
58   AliTPCclusterInfo * fInfo;  // pointer to the cluster debug info
59   Float_t   fTimeBin;  //time bin coordinate
60   Float_t   fPad;  //pad coordinate
61   Short_t   fQ ;       //Q of cluster (in ADC counts)  
62   Short_t   fMax;      //maximal amplitude in cluster
63   Char_t    fType;     //type of the cluster 0 means golden 
64   Char_t    fUsed;     //counter of usage  
65   UChar_t   fDetector; //detector  number
66   UChar_t   fRow;      //row number number
67   ClassDef(AliTPCclusterMI,5)  // Time Projection Chamber clusters
68 };
69
70 void AliTPCclusterMI::Use(Int_t inc) 
71
72   if (inc>0)  fUsed+=inc; 
73   else 
74     fUsed=0;
75 }
76
77
78
79 #endif
80
81