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