- fixing warnings/coverity
[u/mrichter/AliRoot.git] / ITS / AliITShit.h
CommitLineData
b2340bbf 1#ifndef ALIITSHIT_H
2#define ALIITSHIT_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
58005f18 7
58005f18 8////////////////////////////////////////////////////////////////////////
9// Version: 0
10// Written by Rene Brun, Federico Carminati, and Roberto Barbera
11//
12// Version: 1
13// Modified and documented by Bjorn S. Nilsen
14// July 11 1999
15//
16// AliITShit is the hit class for the ITS. Hits are the information
17// that comes from a Monte Carlo at each step as a particle mass through
18// sensitive detector elements as particles are transported through a
19// detector.
20//
21// Data members:
22//
23// Int_t fTrack
24// See AliHit for a full description. The track number of the track
25// that made this hit.
26//
27// Float_t fX
28// See AliHit for a full description. The global x position of the
29// hit (in the standard units of the Monte Carlo).
30//
31// Float_t fY
32// See AliHit for a full description. The global y position of the
33// hit (in the standard units of the Monte Carlo).
34//
35// Float_t fZ
36// See AliHit for a full description. The global z position of the
37// hit (in the standard units of the Monte Carlo).
38//
39// Int_t fStatus
40// The track status flag. This flag indicates the track status
41// at the time of creating this hit. It is made up of the following 8
42// status bits from highest order to lowest order bits
43// 0 : IsTrackAlive(): IsTrackStop():IsTrackDisappeared():
44// IsTrackOut():IsTrackExiting():IsTrackEntering():IsTrackInside() .
45// See AliMC for a description of these functions. If the function is
46// true then the bit is set to one, otherwise it is zero.
47//
48// Int_t fLayer
49// The layer number of the detector that contains this hit. See
50// AliITSgeom and AliITSv? for a description of the geometry.
51//
52// Int_t fLadder
53// The ladder number of the detector that contains this hit. See
54// AliITSgeom and AliITSv? for a description of the geometry.
55//
56// Int_t fDet
57// The detector number of the detector that contains this hit. See
58// AliITSgeom and AliITSv? for a description of the geometry.
59//
60// Float_t fPx
61// The x momentum, in global coordinates, of the particle that
62// "created" the hit at the time and position of the hit. The units
63// are those determined by the Monte Carlo.
64//
65// Float_t fPy
66// The y momentum, in global coordinates, of the particle that
67// "created" the hit at the time and position of the hit. The units
68// are those determined by the Monte Carlo.
69//
70// Float_t fPz
71// The z momentum, in global coordinates, of the particle that
72// "created" the hit at the time and position of the hit. The units
73// are those determined by the Monte Carlo.
74//
75// Float_t fDestep
76// The energy lost by the particle during the step ending in this
77// hit. The units are those determined by the Monte Carlo.
78//
79// Float_t fTof
80// The time of flight associated with the particle ending in this
81// hit. The time is typically measured from the point of creation of the
82// original particle (if this particle is a daughter). The units
83// are those determined by the Monte Carlo.
84//
85//
58005f18 86////////////////////////////////////////////////////////////////////////
012f0f4c 87#include <TLorentzVector.h>
33da2552 88
89#include "AliHit.h"
90
33da2552 91class TParticle;
92
93class AliITShit : public AliHit {
58005f18 94
58005f18 95 public:
7e3ded1b 96 AliITShit();// Default consrtructor
97 // Old Standard Constructor
58005f18 98 AliITShit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
7e3ded1b 99 // New Standard Constructor
100 AliITShit(Int_t shunt,Int_t track,Int_t *vol,Float_t edep,Float_t tof,
012f0f4c 101 TLorentzVector &x,TLorentzVector &x0,TLorentzVector &p);
102 // Copy Constructor
103 AliITShit(const AliITShit &h);
104 // Equals operator
105 AliITShit& operator=(const AliITShit &h);
7e3ded1b 106 // Default destructor
012f0f4c 107 virtual ~AliITShit() {};
58005f18 108 // Get Hit information functions.
593d2ea1 109 // virtual int GetTrack() const {return fTrack;} // define in AliHit
110 // virtual void SetTrack(int track) const {fTrack=track;) // AliHit
012f0f4c 111 virtual void SetModule(Int_t mod){fModule=mod;};
112 virtual void SetShunt(Int_t shunt);
113 virtual void SetPosition(TLorentzVector &x){fX=x.X();fY=x.Y();fZ=x.Z();}
114 virtual void SetStartPosition(TLorentzVector &x){fx0=x.X();fy0=x.Y();
115 fz0=x.Z();}
116 virtual void SetTime(Float_t t){fTof = t;}
117 virtual void SetStartTime(Float_t t){ft0 = t;}
118 virtual void SetStatus(Int_t stat){fStatus = stat;}
119 virtual void SetStartStatus(Int_t stat){fStatus0 = stat;}
120 virtual void SetEdep(Float_t de){fDestep = de;}
71f80067 121 virtual void SetMomentum(TLorentzVector &p){fPx=p.Px();fPy=p.Py();
012f0f4c 122 fPz=p.Pz();}
3dbb2c95 123 virtual Int_t GetTrackStatus() const {//returns the status code
012f0f4c 124 return fStatus;}
7e3ded1b 125 virtual Int_t GetTrackStatus0() const {//returns the status code
012f0f4c 126 return fStatus0;}
127 virtual Int_t GetLayer() const{Int_t a,b,c;// returns the layer number
128 GetDetectorID(a,b,c); return a;}
129 virtual Int_t GetLadder() const{Int_t a,b,c;// returns the ladder number
130 GetDetectorID(a,b,c); return b;}
131 virtual Int_t GetDetector() const{Int_t a,b,c;//returns the detector number
132 GetDetectorID(a,b,c); return c;}
3dbb2c95 133 // returns the detector ID
012f0f4c 134 virtual void GetDetectorID(Int_t &layer,Int_t &ladder,Int_t &det)const;
135 virtual Int_t GetModule(){return fModule;};
136 virtual Float_t GetIonization() const {return fDestep;}//returns the Destep
58005f18 137 //
3dbb2c95 138 virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z)const {
012f0f4c 139 // returns the position in the Global frame
140 x=fX;y=fY;z=fZ;return;};
3dbb2c95 141 virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z)const {
012f0f4c 142 // returns the position in the Global frame
143 x=fX;y=fY;z=fZ;return;};
3dbb2c95 144 virtual Float_t GetTOF() const {// returns the time of flight
012f0f4c 145 return fTof;}
b2340bbf 146 // Returns particle 3 position at this hit in global coordinates.
3dbb2c95 147 virtual void GetPositionG(Float_t &x,Float_t &y,Float_t &z,Float_t &tof)
012f0f4c 148 const {// returns the position in the Global frame and the time of
149 // flight
150 x=fX;y=fY;z=fZ,tof=fTof;return;};
3dbb2c95 151 virtual void GetPositionG(Double_t &x,Double_t &y,Double_t &z,Double_t &t)
012f0f4c 152 const {// Returns particle 3 position and the time of flight at this
153 // hit in global coordinates.
154 x=fX;y=fY;z=fZ,t=fTof;return;};
3dbb2c95 155 virtual Float_t GetXG()const {// Returns particle X position at this hit
012f0f4c 156 // in global coordinates.
157 return fX;}
3dbb2c95 158 virtual Float_t GetYG()const {// Returns particle X position at this hit
012f0f4c 159 // in global coordinates.
160 return fY;}
3dbb2c95 161 virtual Float_t GetZG()const {// Returns particle Z position at this hit
012f0f4c 162 // in global coordinates.
163 return fZ;}
7e3ded1b 164 // Returns particle 3 position at this hit in global coordinates.
165 virtual void GetPositionG0(Float_t &x,Float_t &y,Float_t &z,Float_t &tof)
012f0f4c 166 const {// returns the initial position in the Global frame and the
167 // time of flight
168 x=fx0;y=fy0;z=fz0,tof=fTof;return;};
d2ace6e6 169 // Returns particle 3 position at this hit in global coordinates.
170 virtual void GetPositionG0(Double_t &x,Double_t &y,Double_t &z,
012f0f4c 171 Double_t &tof)const {
172 // returns the initial position in the Global frame and the
173 // time of flight
174 x=fx0;y=fy0;z=fz0,tof=fTof;return;};
175 virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z){
176 // Returns particle 3 position at this hit in local coordinates.
177 Float_t tf;GetPositionL(x,y,z,tf);}
3dbb2c95 178 virtual void GetPositionL(Float_t &x,Float_t &y,Float_t &z,Float_t &tof);
b2340bbf 179 virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z){
012f0f4c 180 // Returns particle 3 position at this hit in local coordinates.
181 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);x=xf,y=yf;z=zf;}
3dbb2c95 182 virtual void GetPositionL(Double_t &x,Double_t &y,Double_t &z,Double_t &t){
012f0f4c 183 // Returns particle 3 position and the time of flight at this hit
184 // in local coordinates.
185 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);x=xf,y=yf;z=zf;t=tf;}
d2ace6e6 186 // Returns particle 3 initial position and the time of flight at this hit
187 // in local coordinates.
012f0f4c 188 virtual void GetPositionL0(Double_t &x,Double_t &y,Double_t &z,
189 Double_t &t);
190 virtual Float_t GetXL(){
191 // Returns particle X position at this hit in local coordinates.
192 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return xf;}
193 virtual Float_t GetYL(){
194 // Returns particle Y position at this hit in local coordinates.
195 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return yf;}
196 virtual Float_t GetZL(){
197 // Returns particle Z position at this hit in local coordinates.
198 Float_t xf,yf,zf,tf;GetPositionL(xf,yf,zf,tf);return zf;}
58005f18 199 // Get Monti Carlo information about hit.
3dbb2c95 200 virtual void GetMomentumG(Float_t &px,Float_t &py,Float_t &pz)const {
012f0f4c 201 // returns the particle momentum in the Global frame
202 px=fPx;py=fPy;pz=fPz;return;};
3dbb2c95 203 virtual void GetMomentumG(Double_t &px,Double_t &py,Double_t &pz)const {
012f0f4c 204 // returns the particle momentum in the Global frame
205 px=fPx;py=fPy;pz=fPz;return;};
3dbb2c95 206 virtual Float_t GetPXG()const {// Returns particle X momentum at this hit
012f0f4c 207 // in global coordinates.
208 return fPx;}
3dbb2c95 209 virtual Float_t GetPYG()const {// Returns particle Y momentum at
012f0f4c 210 // this hit in global coordinates.
211 return fPy;}
3dbb2c95 212 virtual Float_t GetPZG()const {// Returns particle Z momentum at
012f0f4c 213 // this hit in global coordinates.
214 return fPz;}
593d2ea1 215 virtual void GetMomentumL(Float_t &px,Float_t &py,Float_t &pz);
b2340bbf 216 virtual void GetMomentumL(Double_t &px,Double_t &py,Double_t &pz){
012f0f4c 217 // Returns particle 3 momentum at this hit in local coordinates.
218 Float_t x,y,z;GetMomentumL(x,y,z);px=x,py=y,pz=z;}
219 virtual Float_t GetPXL(){Float_t px,py,pz;GetMomentumL(px,py,pz);
220 return px;}
b2340bbf 221 // Returns particle X momentum at this hit in local coordinates.
012f0f4c 222 virtual Float_t GetPYL(){Float_t px,py,pz;GetMomentumL(px,py,pz);
223 return py;}
b2340bbf 224 // Returns particle Y momentum at this hit in local coordinates.
012f0f4c 225 virtual Float_t GetPZL(){Float_t px,py,pz;GetMomentumL(px,py,pz);
226 return pz;}
b2340bbf 227 // Returns particle Z momentum at this hit in local coordinates.
33da2552 228 virtual TParticle * GetParticle() const; // Returns ptr to this particle.
229 Bool_t StatusInside() const {// checks if the particle is "inside"
012f0f4c 230 if((fStatus&0x0001)==0) return kFALSE;else return kTRUE;}
33da2552 231 Bool_t StatusEntering() const {// checks if the particle is "entering"
012f0f4c 232 if((fStatus&0x0002)==0) return kFALSE;else return kTRUE;}
33da2552 233 Bool_t StatusExiting() const {// checks if the particle is "exiting"
012f0f4c 234 if((fStatus&0x0004)==0) return kFALSE;else return kTRUE;}
33da2552 235 Bool_t StatusOut() const {// checks if the particle is "out"
012f0f4c 236 if((fStatus&0x0008)==0) return kFALSE;else return kTRUE;}
33da2552 237 Bool_t StatusDisappeared() const {// checks if the part. is "disappeared"
012f0f4c 238 if((fStatus&0x00010)==0) return kFALSE;else return kTRUE;}
33da2552 239 Bool_t StatusStop() const {// checks if the particle is "stopped"
012f0f4c 240 if((fStatus&0x00020)==0) return kFALSE;else return kTRUE;}
33da2552 241 Bool_t StatusAlive() const {// checks if the particle is "alive"
012f0f4c 242 if((fStatus&0x00030)==0) return kFALSE;else return kTRUE;}
3dbb2c95 243 // Prints out the content of this class in ASCII format.
33da2552 244 void Print(ostream *os) const;
3dbb2c95 245 // Reads in the content of this class in the format of Print
246 void Read(istream *is);
d2f55a22 247 virtual void Print(Option_t *option="") const {TObject::Print(option);}
248 virtual Int_t Read(const char *name) {return TObject::Read(name);}
249
fc743205 250
251 protected:
252 Int_t fStatus; // Track Status
012f0f4c 253 Int_t fModule; // Module number
fc743205 254 Float_t fPx; // PX of particle at the point of the hit
255 Float_t fPy; // PY of particle at the point of the hit
256 Float_t fPz; // PZ of particle at the point of the hit
257 Float_t fDestep; // Energy deposited in the current step
258 Float_t fTof; // Time of flight at the point of the hit
7e3ded1b 259 Int_t fStatus0;// Track Status of Starting point
260 Float_t fx0; // Starting point of this step
261 Float_t fy0; // Starting point of this step
262 Float_t fz0; // Starting point of this step
263 Float_t ft0; // Starting point of this step
593d2ea1 264
012f0f4c 265 ClassDef(AliITShit,3) //Hits object for set:ITS
fc743205 266
3dbb2c95 267};
268// Input and output function for standard C++ input/output.
e11d9a3a 269ostream& operator<<(ostream &os,AliITShit &source);
270istream& operator>>(istream &os,AliITShit &source);
58005f18 271
272#endif