3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 #include "AliDetector.h"
12 #include "AliITSgeom.h"
15 class AliITShit : public AliHit {
16 ////////////////////////////////////////////////////////////////////////
18 // Written by Rene Brun, Federico Carminati, and Roberto Barbera
21 // Modified and documented by Bjorn S. Nilsen
24 // AliITShit is the hit class for the ITS. Hits are the information
25 // that comes from a Monte Carlo at each step as a particle mass through
26 // sensitive detector elements as particles are transported through a
32 // See AliHit for a full description. The track number of the track
33 // that made this hit.
36 // See AliHit for a full description. The global x position of the
37 // hit (in the standard units of the Monte Carlo).
40 // See AliHit for a full description. The global y position of the
41 // hit (in the standard units of the Monte Carlo).
44 // See AliHit for a full description. The global z position of the
45 // hit (in the standard units of the Monte Carlo).
48 // The track status flag. This flag indicates the track status
49 // at the time of creating this hit. It is made up of the following 8
50 // status bits from highest order to lowest order bits
51 // 0 : IsTrackAlive(): IsTrackStop():IsTrackDisappeared():
52 // IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside() .
53 // See AliMC for a description of these functions. If the function is
54 // true then the bit is set to one, otherwise it is zero.
57 // The layer number of the detector that contains this hit. See
58 // AliITSgeom and AliITSv? for a description of the geometry.
61 // The ladder number of the detector that contains this hit. See
62 // AliITSgeom and AliITSv? for a description of the geometry.
65 // The detector number of the detector that contains this hit. See
66 // AliITSgeom and AliITSv? for a description of the geometry.
69 // The x 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.
74 // The y 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.
79 // The z momentum, in global coordinates, of the particle that
80 // "created" the hit at the time and position of the hit. The units
81 // are those determined by the Monte Carlo.
84 // The energy lost by the particle during the step ending in this
85 // hit. The units are those determined by the Monte Carlo.
88 // The time of flight associated with the particle ending in this
89 // hit. The time is typically measured from the point of creation of the
90 // original particle (if this particle is a daughter). The units
91 // are those determined by the Monte Carlo.
94 ////////////////////////////////////////////////////////////////////////
95 // public; // defined in AliHit
96 // Int_t fTrack // defined in AliHit
97 // Float_t fX; // defined in AliHit
98 // Float_t fY; // defined in AliHit
99 // Float_t fZ; // defined in AliHit
103 Int_t fStatus; // Track Status
104 Int_t fLayer; // Layer number
105 Int_t fLadder; // Ladder number
106 Int_t fDet; // Detector number
107 Float_t fPx; // PX of particle at the point of the hit
108 Float_t fPy; // PY of particle at the point of the hit
109 Float_t fPz; // PZ of particle at the point of the hit
110 Float_t fDestep; // Energy deposited in the current step
111 Float_t fTof; // Time of flight at the point of the hit
115 AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
116 virtual ~AliITShit() {}
117 // Get Hit information functions.
118 // virtual int GetTrack() const {return fTrack;} // define in AliHit
119 // virtual void SetTrack(int track) const {fTrack=track;) // AliHit
120 virtual Int_t GetTrackStatus() const {return fStatus;}
121 virtual Int_t GetLayer() const {return fLayer;}
122 virtual Int_t GetLadder() const {return fLadder;}
123 virtual Int_t GetDetector() const {return fDet;}
124 virtual void GetDetectorID(Int_t &layer,Int_t &ladder,
126 const {layer=fLayer;ladder=fLadder;detector=fDet;return;};
127 virtual Int_t GetModule();
128 virtual Float_t GetIonization() const {return fDestep;}
130 virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z)
131 const {x=fX;y=fY;z=fZ;return;};
132 virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z)
133 const {x=fX;y=fY;z=fZ;return;};
134 virtual Float_t GetTOF() const {return fTof;}
135 // Returns particle 3 position at this hit in global coordinates.
136 virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z,
138 const {x=fX;y=fY;z=fZ,tof=fTof;return;};
139 virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z,
141 const {x=fX;y=fY;z=fZ,tof=fTof;return;};
142 // Returns particle 3 position and the time of flight at this hit
143 // in global coordinates.
144 virtual Float_t GetXG()const {return fX;}
145 // Returns particle X position at this hit in global coordinates.
146 virtual Float_t GetYG()const {return fY;}
147 // Returns particle Y position at this hit in global coordinates.
148 virtual Float_t GetZG()const {return fZ;}
149 // Returns particle Z position at this hit in global coordinates.
150 virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z);
151 // Returns particle 3 position at this hit in local coordinates.
152 virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z,
154 virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z){
155 Float_t xf,yf,zf;GetPositionL(xf,yf,zf);x=xf,y=yf;z=zf;}
156 // Returns particle 3 position at this hit in local coordinates.
157 virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z,
159 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);x=xf,y=yf;z=zf;tof=tf;}
160 // Returns particle 3 position and the time of flight at this hit
161 // in local coordinates.
162 virtual Float_t GetXL();
163 // Returns particle X position at this hit in local coordinates.
164 virtual Float_t GetYL();
165 // Returns particle Y position at this hit in local coordinates.
166 virtual Float_t GetZL();
167 // Returns particle Z position at this hit in local coordinates.
168 // Get Monti Carlo information about hit.
169 virtual void GetMomentumG(Float_t &px,Float_t &py,Float_t &pz)
170 const {px=fPx;py=fPy;pz=fPz;return;};
171 virtual void GetMomentumG(Double_t &px,Double_t &py,Double_t &pz)
172 const {px=fPx;py=fPy;pz=fPz;return;};
173 // Returns particle 3 momentum at this hit in global coordinates.
174 virtual Float_t GetPXG()const {return fPx;}
175 // Returns particle X momentum at this hit in global coordinates.
176 virtual Float_t GetPYG()const {return fPy;}
177 // Returns particle Y momentum at this hit in global coordinates.
178 virtual Float_t GetPZG()const {return fPz;}
179 // Returns particle Z momentum at this hit in global coordinates.
180 virtual void GetMomentumL(Float_t &px,Float_t &py,Float_t &pz);
181 virtual void GetMomentumL(Double_t &px,Double_t &py,Double_t &pz){
182 Float_t x,y,z;GetMomentumL(x,y,z);px=x,py=y,pz=z;}
183 // Returns particle 3 momentum at this hit in local coordinates.
184 virtual Float_t GetPXL();
185 // Returns particle X momentum at this hit in local coordinates.
186 virtual Float_t GetPYL();
187 // Returns particle Y momentum at this hit in local coordinates.
188 virtual Float_t GetPZL();
189 // Returns particle Z momentum at this hit in local coordinates.
190 virtual TParticle * GetParticle(); // Returns pointer to this particle.
191 Bool_t StatusInside() {if((fStatus&0x0001)==0) return kFALSE;
193 Bool_t StatusEntering() {if((fStatus&0x0002)==0) return kFALSE;
195 Bool_t StatusExiting() {if((fStatus&0x0004)==0) return kFALSE;
197 Bool_t StatusOut() {if((fStatus&0x0008)==0) return kFALSE;
199 Bool_t StatusDisappeared() {if((fStatus&0x00010)==0) return kFALSE;
201 Bool_t StatusStop() {if((fStatus&0x00020)==0) return kFALSE;
203 Bool_t StatusAlive() {if((fStatus&0x00030)==0) return kFALSE;
206 ClassDef(AliITShit,1) //Hits object for set:ITS