Changes suggested by Effective C++ (F.Carminati)
[u/mrichter/AliRoot.git] / TPC / AliTPCTrackHits.h
1 #ifndef ALITPCTRACKHITS_H
2 #define ALITPCTRACKHITS_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 //  Manager class for TPC   clusters                   //
9 ////////////////////////////////////////////////
10
11 class TClonesArray;
12
13 #include "AliCTypes.h"
14 #include "TArrayOfArray.h"
15
16 class AliArrayS;
17 class AliTPChit;
18 class AliTPCTempHitInfo;
19 class AliTPCCurrentHit;
20 class AliObjectArray;
21
22 class AliTrackHitsInfo   {
23   friend  class  AliTPCTrackHits;
24   friend class   AliTPC;
25
26  public:
27   AliTrackHitsInfo();
28   ~AliTrackHitsInfo(){fgCounter1--;}
29  
30 private:  
31   Int_t   fTrackID;  //track ID
32   Int_t   fVolumeID;   //volume ID
33   UInt_t   fHitParamIndex; //corresponding index  
34   static Int_t fgCounter1; //counter
35   static Int_t fgCounter2;   //counter
36
37   LClassDef(AliTrackHitsInfo,1)  
38 };
39
40
41 class AliTrackHitsParam {
42   friend  class  AliTPCTrackHits;
43   friend  class  AliTPCTempHitInfo;
44  public:
45   AliTrackHitsParam();
46   ~AliTrackHitsParam(){fgCounter1--;}
47  private:
48   Float_t fR;  //radius
49   Float_t fZ;  //z position
50   Float_t fFi; //radial angle
51   Float_t fAn; //angle with  the radial vector
52   Float_t fAd; //derivation of angle
53   Float_t fTheta; //theta angle
54   Float_t fThetaD; //theta angle derivation
55   static Int_t fgCounter1; //counter
56   static Int_t fgCounter2;   //counter
57
58   LClassDef(AliTrackHitsParam,1)  
59 };
60
61
62 class AliHitInfo {
63   friend  class  AliTPCTrackHits;
64   friend  class  AliTPCTempHitInfo;
65 public:
66   AliHitInfo() : fHitDistance(0), fCharge(0) {fgCounter1++;fgCounter2++;}
67   ~AliHitInfo(){fgCounter1--;}
68  private:
69   Short_t fHitDistance; //distance to previous hit
70   Short_t fCharge; //deponed charge
71   static Int_t fgCounter1; //counter
72   static Int_t fgCounter2;  //counter
73
74   LClassDef(AliHitInfo,1)
75 };
76
77
78
79 class AliTPCTrackHits : public TObject{
80   friend class AliTPC;
81   friend class AliTPCTempHitInfo;
82 public:
83   AliTPCTrackHits(); 
84   ~AliTPCTrackHits();
85   AliTPCTrackHits(const AliTPCTrackHits& r);
86   AliTPCTrackHits & operator=(const AliTPCTrackHits& r);  
87
88   void Clear();
89   void AddHitKartez(Int_t volumeID, Int_t trackID, Double_t x, 
90                     Double_t y, Double_t z,Int_t q);
91   void AddHit(Int_t volumeID, Int_t trackID, Double_t r, 
92               Double_t z, Double_t fi,Int_t q);
93  
94   Bool_t First(); //set current hit to first hit 
95   Bool_t Next(Int_t id = -1);  //set current hit to next
96   AliTPChit * GetHit() const;
97   AliTrackHitsParam * GetParam();
98   AliHitInfo * GetHitInfo();
99   Int_t  GetEntriesFast() { return fHitsPosAndQ ? fHitsPosAndQ->ArraySize():0;}
100   void SetHitPrecision(Double_t prec) {fPrecision=prec;}
101   void SetStepPrecision(Double_t prec) {fStep=prec;}
102   void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;}
103   Bool_t  FlushHitStack(Bool_t force=kTRUE);    //
104 private:
105   void FlushHitStack2(Int_t index1, Int_t index2);   //
106   AliObjectArray * fTrackHitsInfo;  //quick information about track
107   AliObjectArray * fTrackHitsParam;  //hit information  
108   TArrayOfArrayVStack * fHitsPosAndQ;  //position information
109
110   Double_t fPrecision;  // required precision
111   Double_t fStep;       //unit step size
112   UInt_t fMaxDistance;   //maximal distance between two connected hits 
113   AliTPCTempHitInfo * fTempInfo; //!information about track
114   AliTPCCurrentHit  * fCurrentHit; //!information about current hit 
115   static const Double_t fgkPrecision;  //precision 
116   static const Double_t fgkPrecision2;  //precision
117   static Int_t fgCounter1;  // counter1
118   static Int_t fgCounter2;  // counter2
119
120   ClassDef(AliTPCTrackHits,1) 
121 };
122
123
124 #endif //ALITPCTRACKHITS_H