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