]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCTrackHits.h
045c80429ed6c06889f29a3dc2f198ce72d59858
[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 #include "AliCTypes.h"
12 //#include "AliSegmentID.h"
13 //#include "AliArrayS.h"
14 //#include "AliTPC.h"
15 //#include "TVector3.h"
16 //#include "AliObjectArray.h"
17 #include "TArrayOfArray.h"
18
19 class TClonesArray;
20 class AliArrayS;
21 class AliTPChit;
22 class AliTPCTempHitInfo;
23 class AliTPCCurrentHit;
24 class AliObjectArray;
25
26 class AliTrackHitsInfo   {
27   friend  class  AliTPCTrackHits;
28   friend class   AliTPC;
29  public:
30   AliTrackHitsInfo(){fgCounter1++;fgCounter2++;}
31   ~AliTrackHitsInfo(){fgCounter1--;}
32  private:  
33   Int_t   fTrackID;  //track ID
34   Int_t   fVolumeID;   //volume ID
35   UInt_t   fHitParamIndex; //corresponding index  
36   static Int_t fgCounter1; //counter
37   static Int_t fgCounter2;   //counter
38
39   LClassDef(AliTrackHitsInfo,1)  
40 };
41
42
43 class AliTrackHitsParam {
44   friend  class  AliTPCTrackHits;
45   friend  struct AliTPCTempHitInfo;
46  public:
47   AliTrackHitsParam(){fgCounter1++;fgCounter2++;}
48   ~AliTrackHitsParam(){fgCounter1--;}
49  private:
50   Float_t fR;  //radius
51   Float_t fZ;  //z position
52   Float_t fFi; //radial angle
53   Float_t fAn; //angle with  the radial vector
54   Float_t fAd; //derivation of angle
55   Float_t fTheta; //theta angle
56   Float_t fThetaD; //theta angle derivation
57   static Int_t fgCounter1; //counter
58   static Int_t fgCounter2;   //counter
59
60   LClassDef(AliTrackHitsParam,1)  
61 };
62
63
64 class AliHitInfo {
65   friend  class  AliTPCTrackHits;
66   friend  struct AliTPCTempHitInfo;
67 public:
68   AliHitInfo(){fgCounter1++;fgCounter2++;}
69   ~AliHitInfo(){fgCounter1--;}
70  private:
71   Short_t fHitDistance; //distance to previous hit
72   Short_t fCharge; //deponed charge
73   static Int_t fgCounter1; //counter
74   static Int_t fgCounter2;  //counter
75
76   LClassDef(AliHitInfo,1)
77 };
78
79
80
81 class AliTPCTrackHits : public TObject{
82   friend class AliTPC;
83   friend  struct AliTPCTempHitInfo;
84 public:
85   AliTPCTrackHits(); 
86   ~AliTPCTrackHits();
87   AliTPCTrackHits(const AliTPCTrackHits& r);
88   AliTPCTrackHits & operator=(const AliTPCTrackHits& r);  
89
90   void Clear();
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);
95  
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);    //
106 private:
107   void FlushHitStack2(Int_t index1, Int_t index2);   //
108   AliObjectArray * fTrackHitsInfo;  //quick information about track
109   AliObjectArray * fTrackHitsParam;  //hit information  
110   TArrayOfArrayVStack * fHitsPosAndQ;  //position information
111
112   Double_t fPrecision;  // required precision
113   Double_t fStep;       //unit step size
114   UInt_t fMaxDistance;   //maximal distance between two connected hits 
115   AliTPCTempHitInfo * fTempInfo; //!information about track
116   AliTPCCurrentHit  * fCurrentHit; //!information about current hit 
117   static const Double_t fgkPrecision;  //precision 
118   static const Double_t fgkPrecision2;  //precision
119   static Int_t fgCounter1;  // counter1
120   static Int_t fgCounter2;  // counter2
121
122   ClassDef(AliTPCTrackHits,1) 
123 };
124
125
126 #endif //ALITPCTRACKHITS_H