All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
DigiCluster.h
Go to the documentation of this file.
1 #ifndef DIGICLUSTER_H
2 #define DIGICLUSTER_H 1
3 
4 #include "PhysicalConstants.h"
5 
6 // Include CLHEP header files
7 #include <CLHEP/Vector/ThreeVector.h>
8 
9 // Include LCIO header files
10 #include <lcio.h>
11 #include <EVENT/MCParticle.h>
12 #include <EVENT/SimTrackerHit.h>
13 
14 /**
15 \addtogroup SiStripDigi SiStripDigi
16 @{
17 */
18 
19 namespace sistrip {
20 
21 //! Digitization cluster class. One cluster represents a bunch of either
22 //! electrons or holes created by ionizing particle, where the number of
23 //! charge carriers is proportional to the deposited energy by the particle.
24 //! Energy necessary for creation of one e-h pair is defined in header file
25 //! PhysicalConstants.h
26 //!
27 //! @author Z. Drasal, Charles University Prague
28 //!
29 
30 class DigiCluster {
31 
32  public:
33 
34 //!Constructor
35  DigiCluster();
36 
37 //!Constructor setting charge, number of carriers, position, sensor ID and wafer ID
38  DigiCluster(short int charge, float time, float depE, CLHEP::Hep3Vector position,
39  short int iLayer, short int iLadder, short int iSensor, int cellID,
40  EVENT::MCParticle * mcPart, EVENT::SimTrackerHit * simHit) :
41  _time(time), _charge(charge) , _iLayer(iLayer),
42  _iLadder(iLadder), _iSensor(iSensor), _iCell(cellID)
43  { _nCarriers = depE/Eeh; _position = position; _MCPart = mcPart; _simHit = simHit;}
44 
45 //!Destructor
46  ~DigiCluster();
47 
48 
49 // SET METHODS
50 
51 //!Set cluster position X
52  inline void setPosX(double posX) {_position.setX(posX);}
53 
54 //!Set cluster position Y
55  inline void setPosY(double posY) {_position.setY(posY);}
56 
57 //!Set cluster position Z
58  inline void setPosZ(double posZ) {_position.setZ(posZ);}
59 
60 //!Set cluster position Three vector
61  void set3Position(const CLHEP::Hep3Vector & position);
62 
63 //!Set cluster velocity X
64  inline void setVelX(double velX) {_velocity.setX(velX);}
65 
66 //!Set cluster velocity Y
67  inline void setVelY(double velY) {_velocity.setY(velY);}
68 
69 //!Set cluster velocity Z
70  inline void setVelZ(double velZ) {_velocity.setZ(velZ);}
71 
72 //!Set cluster velocity Three vector
73  void set3Velocity(const CLHEP::Hep3Vector & velocity);
74 
75 //!Set time when the cluster has been generated by a particle
76  inline void setTime(float time) { _time = time;}
77 
78 //!Set cluster total drift time
79  inline void setDriftTime(double driftTime) {_driftTime = driftTime;}
80 
81 //!Set cluster total diffusion sigma
82  inline void setDiffSigma(double diffSigma) {_diffSigma = diffSigma;}
83 
84 //!Set cluster charge
85  inline void setCharge(short int charge) {_charge = charge;}
86 
87 //!Set number of charge carriers
88  inline void setNCarriers(float depEnergy) {_nCarriers = depEnergy/Eeh;}
89 
90 //!Set layer ID
91  inline void setLayerID(short int iLayer) {_iLayer = iLayer;}
92 
93 //!Set ladder ID
94  inline void setLadderID(short int iLadder) {_iLadder = iLadder;}
95 
96 //!Set sensor ID
97  inline void setSensorID(short int iSensor) {_iSensor = iSensor;}
98 
99 //!Set cell ID
100  inline void setCellID(int cellID){_iCell = cellID;}
101 
102 //!Set pointer to MCParticle
103  inline void setMCParticle(EVENT::MCParticle * mcPart){_MCPart = mcPart;}
104 
105 //!Set pointer to SimTrackerHit
106  inline void setSimTrackerHit(EVENT::SimTrackerHit * simHit){_simHit = simHit;}
107 
108 
109 // GET METHODS
110 
111 //!Get cluster position X
112  inline double getPosX() const {return _position.getX();}
113 
114 //!Get cluster position Y
115  inline double getPosY() const {return _position.getY();}
116 
117 //!Get cluster position Z
118  inline double getPosZ() const {return _position.getZ();}
119 
120 //!Get cluster position Three vector
121  inline CLHEP::Hep3Vector get3Position() const {return _position;}
122 
123 //!Get cluster velocity X
124  inline double getVelX() const {return _velocity.getX();}
125 
126 //!Get cluster velocity Y
127  inline double getVelY() const {return _velocity.getY();}
128 
129 //!Get cluster velocity Z
130  inline double getVelZ() const {return _velocity.getZ();}
131 
132 //!Get cluster velocity Three vector
133  inline CLHEP::Hep3Vector get3Velocity() const {return _velocity;}
134 
135 //!Get time when the cluster has been generated by a particle
136  inline float getTime() const {return _time;}
137 
138 //!Get cluster total drift time
139  inline double getDriftTime() const {return _driftTime;}
140 
141 //!Get cluster total diffusion sigma
142  inline double getDiffSigma() const {return _diffSigma;}
143 
144 //!Get cluster charge
145  inline short int getCharge() const {return _charge;}
146 
147 //!Get number of charge carriers
148  inline int getNCarriers() const {return _nCarriers;}
149 
150 //!Get layer ID
151  inline short int getLayerID() const {return _iLayer;}
152 
153 //!Get ladder ID
154  inline short int getLadderID() const {return _iLadder;}
155 
156 //!Get sensor ID
157  inline short int getSensorID() const {return _iSensor;}
158 
159 //!Get cell ID
160  inline int getCellID() const {return _iCell;}
161 
162 //!Get pointer to MCParticle which has created given cluster
163  inline EVENT::MCParticle * getMCParticle() const {return _MCPart;}
164 
165 //!Get pointer to SimTrackerHit from which the given cluster has been created
166  inline EVENT::SimTrackerHit * getSimTrackerHit() const {return _simHit;}
167 
168  protected:
169 
170  CLHEP::Hep3Vector _position; //!<Cluster position in cm
171  CLHEP::Hep3Vector _velocity; //!<Cluster velocity in cm/s
172  float _time; //!<Time when the cluster has been generated by a particle in s
173  double _driftTime; //!<Cluster total drift time in s
174  double _diffSigma; //!<Cluster total diffusion sigma in cm
175  short int _charge; //!<Cluster charge (e cluster = -1; h cluster = +1)
176  int _nCarriers; //!<Number of charge carriers, i.e. electrons, resp. holes
177 
178  short int _iLayer; //!<ID number of a layer
179  short int _iLadder; //!<ID number of a ladder
180  short int _iSensor; //!<ID number of a sensor
181  int _iCell; //!<ID number of layer+ladder+sensor - encoded into one number
182 
183  EVENT::MCParticle * _MCPart; //!<Monte Carlo particle which has created cluster signal
184  EVENT::SimTrackerHit * _simHit;//!<SimTrackerHit from which the cluster signal has been created
185 
186 }; // Class
187 
188 } // Namespace
189 
190 /** @} */
191 
192 #endif // DIGICLUSTER_H
~DigiCluster()
Destructor.
Definition: DigiCluster.cc:36
double getDiffSigma() const
Get cluster total diffusion sigma.
Definition: DigiCluster.h:142
void set3Position(const CLHEP::Hep3Vector &position)
Set cluster position Three vector.
Definition: DigiCluster.cc:44
double getDriftTime() const
Get cluster total drift time.
Definition: DigiCluster.h:139
EVENT::SimTrackerHit * _simHit
SimTrackerHit from which the cluster signal has been created.
Definition: DigiCluster.h:184
int _iCell
ID number of layer+ladder+sensor - encoded into one number.
Definition: DigiCluster.h:181
short int getLayerID() const
Get layer ID.
Definition: DigiCluster.h:151
void setCharge(short int charge)
Set cluster charge.
Definition: DigiCluster.h:85
void setLayerID(short int iLayer)
Set layer ID.
Definition: DigiCluster.h:91
CLHEP::Hep3Vector _velocity
Cluster velocity in cm/s.
Definition: DigiCluster.h:171
double getVelY() const
Get cluster velocity Y.
Definition: DigiCluster.h:127
float _time
Time when the cluster has been generated by a particle in s.
Definition: DigiCluster.h:172
void setPosX(double posX)
Set cluster position X.
Definition: DigiCluster.h:52
short int _iLayer
ID number of a layer.
Definition: DigiCluster.h:178
double _diffSigma
Cluster total diffusion sigma in cm.
Definition: DigiCluster.h:174
void setDriftTime(double driftTime)
Set cluster total drift time.
Definition: DigiCluster.h:79
double getPosX() const
Get cluster position X.
Definition: DigiCluster.h:112
short int _iLadder
ID number of a ladder.
Definition: DigiCluster.h:179
double getVelX() const
Get cluster velocity X.
Definition: DigiCluster.h:124
void setVelX(double velX)
Set cluster velocity X.
Definition: DigiCluster.h:64
short int _charge
Cluster charge (e cluster = -1; h cluster = +1)
Definition: DigiCluster.h:175
void setNCarriers(float depEnergy)
Set number of charge carriers.
Definition: DigiCluster.h:88
EVENT::MCParticle * getMCParticle() const
Get pointer to MCParticle which has created given cluster.
Definition: DigiCluster.h:163
int _nCarriers
Number of charge carriers, i.e.
Definition: DigiCluster.h:176
double getPosZ() const
Get cluster position Z.
Definition: DigiCluster.h:118
void setVelZ(double velZ)
Set cluster velocity Z.
Definition: DigiCluster.h:70
void setLadderID(short int iLadder)
Set ladder ID.
Definition: DigiCluster.h:94
CLHEP::Hep3Vector get3Position() const
Get cluster position Three vector.
Definition: DigiCluster.h:121
void setMCParticle(EVENT::MCParticle *mcPart)
Set pointer to MCParticle.
Definition: DigiCluster.h:103
CLHEP::Hep3Vector _position
Cluster position in cm.
Definition: DigiCluster.h:170
Digitization cluster class.
Definition: DigiCluster.h:30
void set3Velocity(const CLHEP::Hep3Vector &velocity)
Set cluster velocity Three vector.
Definition: DigiCluster.cc:54
void setPosY(double posY)
Set cluster position Y.
Definition: DigiCluster.h:55
void setCellID(int cellID)
Set cell ID.
Definition: DigiCluster.h:100
void setTime(float time)
Set time when the cluster has been generated by a particle.
Definition: DigiCluster.h:76
double getPosY() const
Get cluster position Y.
Definition: DigiCluster.h:115
void setSensorID(short int iSensor)
Set sensor ID.
Definition: DigiCluster.h:97
void setSimTrackerHit(EVENT::SimTrackerHit *simHit)
Set pointer to SimTrackerHit.
Definition: DigiCluster.h:106
float getTime() const
Get time when the cluster has been generated by a particle.
Definition: DigiCluster.h:136
void setPosZ(double posZ)
Set cluster position Z.
Definition: DigiCluster.h:58
EVENT::MCParticle * _MCPart
Monte Carlo particle which has created cluster signal.
Definition: DigiCluster.h:183
static const float Eeh
DigiCluster()
Constructor.
Definition: DigiCluster.cc:12
void setDiffSigma(double diffSigma)
Set cluster total diffusion sigma.
Definition: DigiCluster.h:82
double _driftTime
Cluster total drift time in s.
Definition: DigiCluster.h:173
short int getSensorID() const
Get sensor ID.
Definition: DigiCluster.h:157
double getVelZ() const
Get cluster velocity Z.
Definition: DigiCluster.h:130
short int _iSensor
ID number of a sensor.
Definition: DigiCluster.h:180
int getCellID() const
Get cell ID.
Definition: DigiCluster.h:160
short int getLadderID() const
Get ladder ID.
Definition: DigiCluster.h:154
EVENT::SimTrackerHit * getSimTrackerHit() const
Get pointer to SimTrackerHit from which the given cluster has been created.
Definition: DigiCluster.h:166
DigiCluster(short int charge, float time, float depE, CLHEP::Hep3Vector position, short int iLayer, short int iLadder, short int iSensor, int cellID, EVENT::MCParticle *mcPart, EVENT::SimTrackerHit *simHit)
Constructor setting charge, number of carriers, position, sensor ID and wafer ID. ...
Definition: DigiCluster.h:38
void setVelY(double velY)
Set cluster velocity Y.
Definition: DigiCluster.h:67
CLHEP::Hep3Vector get3Velocity() const
Get cluster velocity Three vector.
Definition: DigiCluster.h:133
short int getCharge() const
Get cluster charge.
Definition: DigiCluster.h:145
int getNCarriers() const
Get number of charge carriers.
Definition: DigiCluster.h:148