]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCTrackHits.h
New class to make V2 clusters starting from digits or hits (fast simulation). Origin...
[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
25
26 class AliTrackHitsInfo {
27 public:
28   AliTrackHitsInfo(){fgCounter1++;fgCounter2++;}
29   ~AliTrackHitsInfo(){fgCounter1--;}
30   Int_t   fTrackID;  //track ID
31   Int_t   fVolumeID;   //volume ID
32   UInt_t   fHitParamIndex; //corresponding index  
33   static Int_t fgCounter1;
34   static Int_t fgCounter2;  
35   LClassDef(AliTrackHitsInfo,1)  
36 };
37
38
39 class AliTrackHitsParam {
40 public:
41   AliTrackHitsParam(){fgCounter1++;fgCounter2++;}
42   ~AliTrackHitsParam(){fgCounter1--;}
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;
51   static Int_t fgCounter2;  
52   LClassDef(AliTrackHitsParam,1)  
53 };
54
55
56 class AliHitInfo {
57 public:
58   AliHitInfo(){fgCounter1++;fgCounter2++;}
59   ~AliHitInfo(){fgCounter1--;}
60   Short_t fHitDistance; //distance to previous hit
61   Short_t fCharge; //deponed charge
62   static Int_t fgCounter1;
63   static Int_t fgCounter2;  
64   LClassDef(AliHitInfo,1)
65 };
66
67
68
69 class AliTPCTrackHits : public TObject{
70 public:
71   AliTPCTrackHits(); 
72   ~AliTPCTrackHits();
73   void Clear();
74   void AddHitKartez(Int_t volumeID, Int_t trackID, Double_t x, 
75                     Double_t y, Double_t z,Int_t q);
76   void AddHit(Int_t volumeID, Int_t trackID, Double_t r, 
77               Double_t z, Double_t fi,Int_t q);
78  
79   Bool_t First(); //set current hit to first hit 
80   Bool_t Next();  //set current hit to next
81   AliTPChit * GetHit();
82   AliTrackHitsParam * GetParam();
83   AliHitInfo * GetHitInfo();
84   Int_t  GetEntriesFast() { return fHitsPosAndQ ? fHitsPosAndQ->ArraySize():0;}
85   void SetHitPrecision(Double_t prec) {fPrecision=prec;}
86   void SetStepPrecision(Double_t prec) {fStep=prec;}
87   void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;}
88   Bool_t  FlushHitStack(Bool_t force=kTRUE);    //
89 public:
90   void FlushHitStack2(Int_t index1, Int_t index2);   //
91   AliObjectArray * fTrackHitsInfo;  //quick information about track
92   AliObjectArray * fTrackHitsParam;  //hit information  
93   TArrayOfArrayVStack * fHitsPosAndQ;  //position information
94
95   Double_t fPrecision;  // required precision
96   Double_t fStep;       //unit step size
97   UInt_t fMaxDistance;   //maximal distance between two connected hits 
98   AliTPCTempHitInfo * fTempInfo; //!information about track
99   AliTPCCurrentHit  * fCurrentHit; //!information about current hit 
100   static const Double_t fgkPrecision;  //precision 
101   static const Double_t fgkPrecision2;  //precision
102   static Int_t fgCounter1;
103   static Int_t fgCounter2;  
104   ClassDef(AliTPCTrackHits,1) 
105 };
106
107
108 #endif //ALITPCTRACKHITS_H