60aa4be55e0df72ccb5d27c60d348ac693bbdfd7
[u/mrichter/AliRoot.git] / TPC / AliTPCTrackHitsV2.h
1 #ifndef ALITPCTRACKHITSV2_H
2 #define ALITPCTRACKHITSV2_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   hits                   //
9 ////////////////////////////////////////////////
10
11 #include "TObject.h"
12
13 class TClonesArray;
14 class AliArrayS;
15 class AliTPChit;
16 class AliTPCTempHitInfoV2;
17 class AliTPCCurrentHitV2;
18 class AliHit;
19
20 class AliTrackHitsParamV2 : public TObject {
21 public:
22   AliTrackHitsParamV2();
23   ~AliTrackHitsParamV2();
24   Int_t fTrackID; // ID of the track
25   Short_t fVolumeID;// volume ID
26   Float_t fR;  //radius
27   Float_t fZ;  //z position
28   Float_t fFi; //radial angle
29   Float_t fAn; //angle with  the radial vector
30   Float_t fAd; //derivation of angle
31   Float_t fTheta; //theta angle
32   Float_t fThetaD; //theta angle derivation
33   Int_t   fNHits; //nuber of thits
34   Short_t * fHitDistance; //[fNHits] array of hits distances
35   Short_t * fCharge; //[fNHits] array of charges
36   static Int_t fgCounter1;
37   static Int_t fgCounter2;  
38   ClassDef(AliTrackHitsParamV2,1)  
39 };
40
41
42
43 class AliTPCTrackHitsV2 : public TObject {
44 public:
45   AliTPCTrackHitsV2(); 
46   ~AliTPCTrackHitsV2();
47   void Clear();
48   void AddHitKartez(Int_t volumeID, Int_t trackID, Double_t x, 
49                     Double_t y, Double_t z,Int_t q);
50   void AddHit(Int_t volumeID, Int_t trackID, Double_t r, 
51               Double_t z, Double_t fi,Int_t q);
52  
53   Bool_t First(); //set current hit to first hit 
54   Bool_t Next();  //set current hit to next
55   AliHit * GetHit();
56   AliTrackHitsParamV2 * GetParam();
57
58   TClonesArray * GetArray(){return fArray;}
59   Int_t  GetEntriesFast() { return fSize;}
60   void SetHitPrecision(Double_t prec) {fPrecision=prec;}
61   void SetStepPrecision(Double_t prec) {fStep=prec;}
62   void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;}
63   Bool_t  FlushHitStack(Bool_t force=kTRUE);    //
64   Int_t *  GetVolumes(){ return fVolumes;}
65   Int_t GetNVolumes(){return fNVolumes;}
66 public:
67   void AddVolume(Int_t volume); //add volumes to tthe list of volumes
68   void FlushHitStack2(Int_t index1, Int_t index2);   //
69   TClonesArray * fArray;  //array of compressed hits
70   Int_t fSize;            //total number of hits in track
71   Double_t fPrecision;  // required precision
72   Double_t fStep;       //unit step size
73   UInt_t fMaxDistance;   //maximal distance between two connected hits 
74   Int_t fNVolumes;      //number of volumes in track  
75   Int_t *  fVolumes;    //[fNVolumes] list of volumes
76   AliTPCTempHitInfoV2 * fTempInfo; //!information about track
77   AliTPCCurrentHitV2  * fCurrentHit; //!information about current hit 
78   AliHit * fHit;                     //! current hit information
79   static const Double_t fgkPrecision;  //precision 
80   static const Double_t fgkPrecision2;  //precision
81   static Int_t fgCounter1;
82   static Int_t fgCounter2;  
83   ClassDef(AliTPCTrackHitsV2,1) 
84 };
85
86 struct AliTPCCurrentHitV2 {
87   UInt_t   fParamIndex;//  - current param pointer
88   UInt_t   fStackIndex; // - current hit stack index
89   Double_t fR;   //current Radius
90   Bool_t  fStatus; //current status    
91 };   
92
93
94
95 #endif //ALITPCTRACKHITSV2_H