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 */
7 ////////////////////////////////////////////////
8 // Manager class for TPC clusters //
9 ////////////////////////////////////////////////
11 #include "AliCTypes.h"
12 //#include "AliSegmentID.h"
13 //#include "AliArrayS.h"
15 //#include "TVector3.h"
16 //#include "AliObjectArray.h"
17 #include "TArrayOfArray.h"
22 class AliTPCTempHitInfo;
23 class AliTPCCurrentHit;
26 class AliTrackHitsInfo {
27 friend class AliTPCTrackHits;
30 AliTrackHitsInfo(){fgCounter1++;fgCounter2++;}
31 ~AliTrackHitsInfo(){fgCounter1--;}
34 Int_t fTrackID; //track ID
35 Int_t fVolumeID; //volume ID
36 UInt_t fHitParamIndex; //corresponding index
37 static Int_t fgCounter1; //counter
38 static Int_t fgCounter2; //counter
40 LClassDef(AliTrackHitsInfo,1)
44 class AliTrackHitsParam {
45 friend class AliTPCTrackHits;
46 friend struct AliTPCTempHitInfo;
48 AliTrackHitsParam(){fgCounter1++;fgCounter2++;}
49 ~AliTrackHitsParam(){fgCounter1--;}
53 Float_t fZ; //z position
54 Float_t fFi; //radial angle
55 Float_t fAn; //angle with the radial vector
56 Float_t fAd; //derivation of angle
57 Float_t fTheta; //theta angle
58 Float_t fThetaD; //theta angle derivation
59 static Int_t fgCounter1; //counter
60 static Int_t fgCounter2; //counter
62 LClassDef(AliTrackHitsParam,1)
67 friend class AliTPCTrackHits;
68 friend struct AliTPCTempHitInfo;
70 AliHitInfo(){fgCounter1++;fgCounter2++;}
71 ~AliHitInfo(){fgCounter1--;}
74 Short_t fHitDistance; //distance to previous hit
75 Short_t fCharge; //deponed charge
76 static Int_t fgCounter1; //counter
77 static Int_t fgCounter2; //counter
79 LClassDef(AliHitInfo,1)
84 class AliTPCTrackHits : public TObject{
86 friend struct AliTPCTempHitInfo;
91 void AddHitKartez(Int_t volumeID, Int_t trackID, Double_t x,
92 Double_t y, Double_t z,Int_t q);
93 void AddHit(Int_t volumeID, Int_t trackID, Double_t r,
94 Double_t z, Double_t fi,Int_t q);
96 Bool_t First(); //set current hit to first hit
97 Bool_t Next(Int_t id = -1); //set current hit to next
98 AliTPChit * GetHit() const;
99 AliTrackHitsParam * GetParam();
100 AliHitInfo * GetHitInfo();
101 Int_t GetEntriesFast() { return fHitsPosAndQ ? fHitsPosAndQ->ArraySize():0;}
102 void SetHitPrecision(Double_t prec) {fPrecision=prec;}
103 void SetStepPrecision(Double_t prec) {fStep=prec;}
104 void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;}
105 Bool_t FlushHitStack(Bool_t force=kTRUE); //
108 void FlushHitStack2(Int_t index1, Int_t index2); //
109 AliObjectArray * fTrackHitsInfo; //quick information about track
110 AliObjectArray * fTrackHitsParam; //hit information
111 TArrayOfArrayVStack * fHitsPosAndQ; //position information
113 Double_t fPrecision; // required precision
114 Double_t fStep; //unit step size
115 UInt_t fMaxDistance; //maximal distance between two connected hits
116 AliTPCTrackHits(const AliTPCTrackHits& r);
117 AliTPCTempHitInfo * fTempInfo; //!information about track
118 AliTPCCurrentHit * fCurrentHit; //!information about current hit
119 static const Double_t fgkPrecision; //precision
120 static const Double_t fgkPrecision2; //precision
121 static Int_t fgCounter1; // counter1
122 static Int_t fgCounter2; // counter2
124 ClassDef(AliTPCTrackHits,1)
128 #endif //ALITPCTRACKHITS_H