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