]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITShit.h
New version of ITS for the TDR
[u/mrichter/AliRoot.git] / ITS / AliITShit.h
1 #ifndef ITSHIT_H
2 #define ITSHIT_H
3
4 #include "AliDetector.h"
5 #include "AliHit.h" 
6 #include "AliDigit.h"
7 #include "AliITSgeom.h"
8
9
10 class AliITShit : public AliHit {
11 ////////////////////////////////////////////////////////////////////////
12 // Version: 0
13 // Written by Rene Brun, Federico Carminati, and Roberto Barbera
14 //
15 // Version: 1
16 // Modified and documented by Bjorn S. Nilsen
17 // July 11 1999
18 //
19 // AliITShit is the hit class for the ITS. Hits are the information
20 // that comes from a Monte Carlo at each step as a particle mass through
21 // sensitive detector elements as particles are transported through a
22 // detector.
23 //
24 // Data members:
25 //
26 // Int_t fTrack
27 //     See AliHit for a full description. The track number of the track
28 // that made this hit.
29 //
30 // Float_t fX
31 //     See AliHit for a full description. The global x position of the
32 // hit (in the standard units of the Monte Carlo).
33 //
34 // Float_t fY
35 //     See AliHit for a full description. The global y position of the
36 // hit (in the standard units of the Monte Carlo).
37 //
38 // Float_t fZ
39 //     See AliHit for a full description. The global z position of the
40 // hit (in the standard units of the Monte Carlo).
41 //
42 // Int_t fStatus
43 //     The track status flag. This flag indicates the track status
44 // at the time of creating this hit. It is made up of the following 8
45 // status bits from highest order to lowest order bits
46 // 0           :  IsTrackAlive():    IsTrackStop():IsTrackDisappeared():
47 // IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside()     .
48 // See AliMC for a description of these functions. If the function is
49 // true then the bit is set to one, otherwise it is zero.
50 //
51 // Int_t fLayer
52 //     The layer number of the detector that contains this hit. See
53 // AliITSgeom and AliITSv? for a description of the geometry.
54 //
55 // Int_t fLadder
56 //     The ladder number of the detector that contains this hit. See
57 // AliITSgeom and AliITSv? for a description of the geometry.
58 //
59 // Int_t fDet
60 //     The detector number of the detector that contains this hit. See
61 // AliITSgeom and AliITSv? for a description of the geometry.
62 //
63 // Float_t fPx
64 //     The x momentum, in global coordinates, of the particle that
65 // "created" the hit at the time and position of the hit. The units
66 // are those determined by the Monte Carlo.
67 //
68 // Float_t fPy
69 //     The y momentum, in global coordinates, of the particle that
70 // "created" the hit at the time and position of the hit. The units
71 // are those determined by the Monte Carlo.
72 //
73 // Float_t fPz
74 //     The z momentum, in global coordinates, of the particle that
75 // "created" the hit at the time and position of the hit. The units
76 // are those determined by the Monte Carlo.
77 //
78 // Float_t fDestep
79 //     The energy lost by the particle during the step ending in this
80 // hit. The units are those determined by the Monte Carlo.
81 //
82 // Float_t fTof
83 //     The time of flight associated with the particle ending in this
84 // hit. The time is typically measured from the point of creation of the
85 // original particle (if this particle is a daughter).  The units
86 // are those determined by the Monte Carlo.
87 //
88 //
89 // Member functions:
90 //
91 // AliITShit()
92 //     The default creator of the AliITShit class.
93 //
94 // AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits)
95 //     The creator of the AliITShit class. The variables shunt and
96 // track are passed to the creator of the AliHit class. See the AliHit
97 // class for a full description. the integer array *vol contains, in order,
98 // fLayer = vol[0], fDet = vol[1], fLadder = vol[2], fStatus = vol[3].
99 // The array *hits contains, in order, fX = hits[0], fY = hits[1], 
100 // fZ = hits[2], fPx = hits[3], fPy = hits[4], fPz = hits[5],
101 // fDestep = hits[6], and fTof = hits[7].
102 //
103 // ~AliITShit()
104 //     The default destructor of the AliITShit class.
105 //
106 // int GetTrack()
107 //     See AliHit for a full description. Returns the track number fTrack
108 // for this hit.
109 //
110 // SetTrack(int track)
111 //     See AliHit for a full description. Sets the track number fTrack
112 // for this hit.
113 //
114 // Int_t GetTrackStatus()
115 //     Returns the value of the track status flag fStatus. This flag
116 // indicates the track status at the time of creating this hit. It is
117 // made up of the following 8 status bits from highest order to lowest
118 // order bits
119 // 0           :  IsTrackAlive():    IsTrackStop():IsTrackDisappeared():
120 // IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside()     .
121 // See AliMC for a description of these functions. If the function is
122 // true then the bit is set to one, otherwise it is zero.
123 //
124 // Int_t GetLayer()
125 //     Returns the layer number, fLayer, for this hit.
126 //
127 // Int_t GetLadder()
128 //     Returns the ladder number, fLadder, for this hit.
129 //
130 // Int_t GetDetector()
131 //     Returns the detector number, fDet, for this hit.
132 //
133 // GetDetectorID(Int_t &layer, Int_t &ladder, Int_t &detector)
134 //     Returns the layer, ladder, and detector numbers, fLayer fLadder fDet,
135 // in one call.
136 //
137 // Float_t GetIonization()
138 //     Returns the energy lost, fDestep, by the particle creating this hit,
139 // in the units defined by the Monte Carlo.
140 //
141 // GetPoositionG(Float_t &x, Float_t &y, Float_t &z)
142 //     Returns the global position, fX fY fZ, of this hit, in the units
143 // define by the Monte Carlo.
144 //
145 // Float_t GetTOF()
146 //     Returns the time of flight, fTof, of this hit, in the units defined
147 // by the Monte Carlo.
148 //
149 // GetPositionG(Float_t &x, Float_t &y, Float_t &z, Float_t &tof)
150 //     Returns the global position and time of flight, fX fY fZ fTof, of
151 // this hit, in the units define by the Monte Carlo.
152 //
153 // GetPositioonP(Float_t &px, Float_t &py, Float_t &pz)
154 //     Returns the global momentum, fPx fPy fPz, of the particle that made
155 // this hit, in the units define by the Monte Carlo.
156 ////////////////////////////////////////////////////////////////////////
157     // public;       // defined in AliHit
158     // Int_t fTrack  // defined in AliHit
159     // Float_t fX;   // defined in AliHit
160     // Float_t fY;   // defined in AliHit
161     // Float_t fZ;   // defined in AliHit
162
163  public:
164 //private:
165     Int_t     fStatus; // Track Status
166     Int_t     fLayer;  // Layer number
167     Int_t     fLadder; // Ladder number
168     Int_t     fDet;    // Detector number  
169     Float_t   fPx;     // PX of particle at the point of the hit
170     Float_t   fPy;     // PY of particle at the point of the hit
171     Float_t   fPz;     // PZ of particle at the point of the hit
172     Float_t   fDestep; // Energy deposited in the current step
173     Float_t   fTof;    // Time of flight at the point of the hit
174
175  public:
176     AliITShit() {}
177     AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
178     virtual ~AliITShit() {}
179     // Get Hit information functions.
180     // inline virtual int GetTrack(){return fTrack;} // define in AliHit
181     // inline virtual void SetTrack(int track){fTrack=track;) // AliHit
182     inline virtual Int_t GetTrackStatus() {return fStatus;}
183     inline virtual Int_t GetLayer() {return fLayer;}
184     inline virtual Int_t GetLadder() {return fLadder;}
185     inline virtual Int_t GetDetector() {return fDet;}
186     inline virtual void  GetDetectorID(Int_t &layer,Int_t &ladder,
187                                        Int_t &detector)
188                      {layer=fLayer;ladder=fLadder;detector=fDet;return;};
189     inline virtual Float_t GetIonization() {return fDestep;}
190     //
191     inline virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z)
192                                     {x=fX;y=fY;z=fZ;return;};
193     inline virtual Float_t GetTOF() {return fTof;}
194     inline virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z,
195                                     Float_t &tof)
196                                     {x=fX;y=fY;z=fZ,tof=fTof;return;};
197     inline virtual Float_t GetXG(){return fX;}
198     inline virtual Float_t GetYG(){return fY;}
199     inline virtual Float_t GetZG(){return fZ;}
200            virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z);
201            virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z,
202                                      Float_t &tof);
203            virtual Float_t GetXL();
204            virtual Float_t GetYL();
205            virtual Float_t GetZL();
206     // Get Monti Carlo information about hit.
207     inline virtual void GetMomentumG(Float_t &px,Float_t &py,Float_t &pz)
208                                     {px=fPx;py=fPy;pz=fPz;return;};
209            virtual void GetMomentumL(Float_t &px,Float_t &py,Float_t &pz);
210     ClassDef(AliITShit,1)  //Hits object for set:ITS
211 };
212
213 #endif