Defining properly momentum components in AliMUONHit constructors (thanks Artur)
[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
12 #include "TObject.h"
13
14 class TClonesArray;
15 class AliArrayS;
16 class AliTPChit;
17 class AliTPCTempHitInfoV2;
18 class AliTPCCurrentHitV2;
19 class AliHit;
20
21 class AliTrackHitsParamV2 : public TObject {
22   friend class   AliTPC;
23   friend class   AliTRD;
24   friend class   AliTPCTrackHitsV2;
25   friend class   AliTPCTempHitInfoV2;
26   friend class   AliTRDtrackHits;
27
28 public:
29   AliTrackHitsParamV2();
30   AliTrackHitsParamV2(const AliTrackHitsParamV2 &hit):  TObject(hit)
31     {hit.Copy(*this);}
32   AliTrackHitsParamV2& operator = (const AliTrackHitsParamV2 &hit)
33      {hit.Copy(*this); return (*this);}
34   ~AliTrackHitsParamV2();
35
36  private:
37   Int_t fTrackID; // ID of the track
38   Short_t fVolumeID;// volume ID
39   Float_t fR;  //radius
40   Float_t fZ;  //z position
41   Float_t fFi; //radial angle
42   Float_t fAn; //angle with  the radial vector
43   Float_t fAd; //derivation of angle
44   Float_t fTheta; //theta angle
45   Float_t fThetaD; //theta angle derivation
46   Int_t   fNHits; //nuber of thits
47   Short_t * fHitDistance; //[fNHits] array of hits distances
48   Short_t * fCharge; //[fNHits] array of charges
49   static Int_t fgCounter1; //First internal counter
50   static Int_t fgCounter2; // Second internal counter
51
52   void Copy(TObject &) const
53   {Error("Copy","Not Implemented");}
54
55   ClassDef(AliTrackHitsParamV2,1)  
56 };
57
58
59 class AliTPCTrackHitsV2 : public TObject {
60   friend class AliTPCTempHitInfoV2;
61
62 public:
63   AliTPCTrackHitsV2(); 
64   ~AliTPCTrackHitsV2();
65   AliTPCTrackHitsV2(const AliTPCTrackHitsV2 &hit):  TObject(hit)
66     {hit.Copy(*this);}
67   AliTPCTrackHitsV2& operator = (const AliTPCTrackHitsV2 &hit)
68      {hit.Copy(*this); return (*this);}
69   void Clear();
70   void AddHitKartez(Int_t volumeID, Int_t trackID, Double_t x, 
71                     Double_t y, Double_t z,Int_t q);
72   void AddHit(Int_t volumeID, Int_t trackID, Double_t r, 
73               Double_t z, Double_t fi,Int_t q);
74  
75   Bool_t First(); //set current hit to first hit 
76   Bool_t Next();  //set current hit to next
77   AliHit * GetHit() const;
78   AliTrackHitsParamV2 * GetParam();
79
80   TClonesArray * GetArray(){return fArray;}
81   Int_t  GetEntriesFast() const { return fSize;}
82   void SetHitPrecision(Double_t prec) {fPrecision=prec;}
83   void SetStepPrecision(Double_t prec) {fStep=prec;}
84   void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;}
85   Bool_t  FlushHitStack(Bool_t force=kTRUE);    //
86   Int_t *  GetVolumes(){ return fVolumes;}
87   Int_t GetNVolumes() const {return fNVolumes;}
88
89 public:
90   void AddVolume(Int_t volume); //add volumes to tthe list of volumes
91   void FlushHitStack2(Int_t index1, Int_t index2);   //
92
93 protected:
94   TClonesArray * fArray;  //array of compressed hits
95   Int_t fSize;            //total number of hits in track
96   Double_t fPrecision;  // required precision
97   Double_t fStep;       //unit step size
98   UInt_t fMaxDistance;   //maximal distance between two connected hits 
99   Int_t fNVolumes;      //number of volumes in track  
100   Int_t *  fVolumes;    //[fNVolumes] list of volumes
101   AliTPCTempHitInfoV2 * fTempInfo; //!information about track
102   AliTPCCurrentHitV2  * fCurrentHit; //!information about current hit 
103   AliHit * fHit;                     //! current hit information
104   static const Double_t fgkPrecision;  //precision 
105   static const Double_t fgkPrecision2;  //precision
106   static Int_t fgCounter1; // First internal counter
107   static Int_t fgCounter2; // Second internal counter
108
109 private:
110   void Copy(TObject &) const
111   {Error("Copy","Not Implemented");}
112
113
114   ClassDef(AliTPCTrackHitsV2,1) 
115 };
116
117 struct AliTPCCurrentHitV2 {
118   Int_t   fParamIndex;//  - current param pointer
119   Int_t   fStackIndex; // - current hit stack index
120   Double_t fR;   //current Radius
121   Bool_t  fStatus; //current status    
122 };   
123
124
125
126 #endif //ALITPCTRACKHITSV2_H