93{
95
97
99 ATH_MSG_WARNING(
"Conditions Summary Tool is not used. Will use temperature and voltages from job options. "
100 << "Effects of radiation damage may be wrong!");
101 }
102
103 SCT_ChargeTrappingCondData condData;
104
106
107 double temperature{0.};
108 double deplVoltage{0.};
109 double biasVoltage{0.};
114 } else {
115 temperature =
m_siConditionsTool->temperature(elementHash, ctx) + Gaudi::Units::STP_Temperature;
116 deplVoltage =
m_siConditionsTool->depletionVoltage(elementHash, ctx) * Gaudi::Units::volt;
118 }
119
120
121 double temperatureC{temperature - Gaudi::Units::STP_Temperature};
126 }
127
128
129
130
131 double depletionDepth{element->
thickness()};
132 if (std::abs(biasVoltage) < std::abs(deplVoltage)) {
133 depletionDepth *= std::sqrt(std::abs(biasVoltage / deplVoltage));
134
135 }
136
139 deplVoltage,
141 std::abs(biasVoltage))};
142
143
145
146 InDet::SiliconProperties siProperties;
148
149
150
151
152 double electronDriftMobility{0.};
153 double holeDriftMobility{0.};
154 double electronDriftVelocity{0.};
155 double holeDriftVelocity{0.};
157
158
159 } else {
161 holeDriftMobility = siProperties.
calcHoleDriftMobility(temperature,electricField*Gaudi::Units::volt)*Gaudi::Units::volt;
162
164 holeDriftVelocity = holeDriftMobility*electricField;
165 }
166 }
167
168
171
172 double trappingHoles{0.};
176 }
177
178
179 const double meanFreePathElectrons{electronDriftVelocity*trappingElectrons};
181
182 double meanFreePathHoles{0.};
184 meanFreePathHoles = holeDriftVelocity*trappingHoles;
186 }
187
188
189 double trappingProbability_electron{0.0};
190 double trappingProbability_hole{0.0};
191 double trappingProbability{0.0};
193 trappingProbability = 1.0 - std::exp(-std::abs(pos/meanFreePathElectrons));
194 trappingProbability_electron = trappingProbability;
195 } else {
197 trappingProbability = 1.0 - std::exp(-std::abs(pos/meanFreePathHoles));
198 trappingProbability_hole = trappingProbability;
199 } else {
200 trappingProbability = 0.0;
201 }
202 }
204
205
206 const double u{CLHEP::RandFlat::shoot(0., 1.)};
207 const double drift_time{-std::log(u)*trappingHoles};
209
210
211 const double t_electrode_hole{
pos/holeDriftVelocity};
213
214
215 const double trappingPosition_hole{holeDriftVelocity*drift_time};
217
218
219
221 << temperature - Gaudi::Units::STP_Temperature << ", "
222 << biasVoltage/Gaudi::Units::volt << ", "
223 << deplVoltage/Gaudi::Units::volt);
224 ATH_MSG_VERBOSE(
"Depletion depth: " << depletionDepth/Gaudi::Units::mm);
225 ATH_MSG_VERBOSE(
"Electric Field: " << electricField/(Gaudi::Units::volt/Gaudi::Units::mm));
226 ATH_MSG_VERBOSE(
"Electron drift mobility (cm2/V/s): " << electronDriftMobility/(Gaudi::Units::cm2/Gaudi::Units::volt/Gaudi::Units::s));
227 ATH_MSG_VERBOSE(
"Electron drift velocity (cm/s): " << electronDriftVelocity);
229 ATH_MSG_VERBOSE(
"Electron trapping probability: " << trappingProbability_electron);
230
232 ATH_MSG_VERBOSE(
"Hole drift mobility (cm2/V/s): " << holeDriftMobility/(Gaudi::Units::cm2/Gaudi::Units::volt/Gaudi::Units::s));
235 ATH_MSG_VERBOSE(
"Hole trapping probability: " << trappingProbability_hole);
236 }
237
238 return condData;
239}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
InDetDD::CarrierType carrierType() const
carrier type for readout.
void setConditions(double temperature, double electricField)
double calcHoleDriftMobility(double temperature, double electricField) const
void setTrappingTime(const double trappingTime)
void setHoleDriftMobility(const double holeDriftMobility)
void setTrappingHoles(const double trappingHoles)
void setTrappingProbability(const double trappingProbability)
void setTimeToElectrode(const double electrodeTime)
void setTrappingPositionZ(const double trappingPosition)
void setMeanFreePathHoles(const double meanFreePathHoles)
void setTrappingElectrons(const double trappingElectrons)
void setMeanFreePathElectrons(const double meanFreePathElectrons)
double getMeanFreePathElectrons() const
void setElectricField(const double electricField)
double getMeanFreePathHoles() const
@ u
Enums for curvilinear frames.