ATLAS Offline Software
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
SCT_ChargeTrappingTool Class Reference

#include <SCT_ChargeTrappingTool.h>

Inheritance diagram for SCT_ChargeTrappingTool:
Collaboration diagram for SCT_ChargeTrappingTool:

Public Member Functions

 SCT_ChargeTrappingTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~SCT_ChargeTrappingTool ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual SCT_ChargeTrappingCondData getCondData (const IdentifierHash &elementHash, double pos, const EventContext &ctx) const override
 
virtual SCT_ChargeTrappingCondData getCondData (const IdentifierHash &elementHash, double pos) const override
 
virtual void getHoleTransport (double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2, const EventContext &ctx) const override
 
virtual void getHoleTransport (double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2) const override
 

Private Member Functions

SCT_ChargeTrappingCondData calculate (const IdentifierHash &elementHash, double pos, const EventContext &ctx) const
 
double induced (int istrip, double x, double y) const
 
void holeTransport (double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2) const
 
const InDetDD::SiDetectorElementgetDetectorElement (const IdentifierHash &waferHash, const EventContext &ctx) const
 

Static Private Member Functions

static double getPotentialValue (int &ix, int &iy)
 

Private Attributes

StringProperty m_detectorName {this, "DetectorName", "SCT", "Detector name"}
 
bool m_isSCT {false}
 
DoubleProperty m_temperature {this, "Temperature", -2., "Default temperature in Celcius."}
 
DoubleProperty m_temperatureMin {this, "TemperatureMin", -80., "Minimum temperature allowed in Celcius."}
 
DoubleProperty m_temperatureMax {this, "TemperatureMax", 100., "Maximum temperature allowed in Celcius."}
 
DoubleProperty m_deplVoltage {this, "DepletionVoltage", -30., "Default depletion voltage in Volt."}
 
DoubleProperty m_biasVoltage {this, "BiasVoltage", 150., "Default bias voltage in Volt."}
 
bool m_conditionsToolValid {false}
 
std::atomic_bool m_conditionsToolWarning {false}
 
BooleanProperty m_calcHoles {this, "CalcHoles", true, "Default is to consider holes in signal formation."}
 
DoubleProperty m_fluence {this, "Fluence", 3.0E13, "Fluence received by the detector."}
 
DoubleProperty m_betaElectrons {this, "BetaElectrons", 3.1E-16, "Constant for the trapping model for electrons, in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"}
 
DoubleProperty m_betaHoles {this, "BetaHoles", 5.1E-16, "Constant for the trapping model for holes in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"}
 
double m_PotentialValue [81][115] {{0.}}
 
ToolHandle< ISiliconConditionsToolm_siConditionsTool {this, "SiConditionsTool", "SCT_SiliconConditionsTool", "SCT silicon conditions tool"}
 
ToolHandle< ISCT_ElectricFieldToolm_electricFieldTool {this, "SCT_ElectricFieldTool", "SCT_ElectricFieldTool", "SCT electric field tool"}
 
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
 

Detailed Description

Definition at line 44 of file SCT_ChargeTrappingTool.h.

Constructor & Destructor Documentation

◆ SCT_ChargeTrappingTool()

SCT_ChargeTrappingTool::SCT_ChargeTrappingTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 26 of file SCT_ChargeTrappingTool.cxx.

26  :
27  base_class(type, name, parent)
28 {
29 }

◆ ~SCT_ChargeTrappingTool()

virtual SCT_ChargeTrappingTool::~SCT_ChargeTrappingTool ( )
virtualdefault

Member Function Documentation

◆ calculate()

SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::calculate ( const IdentifierHash elementHash,
double  pos,
const EventContext &  ctx 
) const
private

Definition at line 92 of file SCT_ChargeTrappingTool.cxx.

93 {
94  ATH_MSG_VERBOSE("Updating cache for elementHash = " << elementHash);
95 
97  // Only print the warning once.
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 
104 
105  const InDetDD::SiDetectorElement* element{getDetectorElement(elementHash, ctx)};
106 
107  double temperature{0.};
108  double deplVoltage{0.};
109  double biasVoltage{0.};
110  if (not m_conditionsToolValid) {
112  deplVoltage = m_deplVoltage * Gaudi::Units::volt;
113  biasVoltage = m_biasVoltage * Gaudi::Units::volt;
114  } else {
115  temperature = m_siConditionsTool->temperature(elementHash, ctx) + Gaudi::Units::STP_Temperature;
116  deplVoltage = m_siConditionsTool->depletionVoltage(elementHash, ctx) * Gaudi::Units::volt;
117  biasVoltage = m_siConditionsTool->biasVoltage(elementHash, ctx) * Gaudi::Units::volt;
118  }
119 
120  // Protect against invalid temperature
121  double temperatureC{temperature - Gaudi::Units::STP_Temperature};
122  if (not (temperatureC > m_temperatureMin and temperatureC < m_temperatureMax)) {
123  ATH_MSG_WARNING("Invalid temperature: " << temperatureC << " C. "
124  << "Setting to " << m_temperature << " C.");
126  }
127 
128  // Calculate depletion depth. If biasVoltage is less than depletionVoltage
129  // the detector is not fully depleted and we need to take this into account.
130  // We take absolute values just in case voltages are signed .
131  double depletionDepth{element->thickness()};
132  if (std::abs(biasVoltage) < std::abs(deplVoltage)) {
133  depletionDepth *= sqrt(std::abs(biasVoltage / deplVoltage));
134  // -- if this was the case would need to re-calculate the Ramo Potential and other parameters.
135  }
136 
137  double electricField{m_electricFieldTool->getElectricField(pos,//posZ
138  m_fluence,
139  deplVoltage,
140  element->thickness(),
141  std::abs(biasVoltage))};
142  //electric field will be a function of bias voltage and fluence...
143 
144  condData.setElectricField(electricField);
145 
146  InDet::SiliconProperties siProperties;
147  siProperties.setConditions(temperature, electricField);
148 
149  // -- Calculate electron and holes drift mobility and velocity for these conditions (temperature, electricField)
150  // using parametrizations in SiliconProperties (SiPropertiesTool). These will be used later for the trapping model.
151  // In the SCT we collect holes.
152  double electronDriftMobility{0.};
153  double holeDriftMobility{0.};
154  double electronDriftVelocity{0.};
155  double holeDriftVelocity{0.};
156  if(element->carrierType()==InDetDD::electrons) {
157  // electronDriftMobility = siProperties.calcElectronDriftMobility(temperature,electricField);
158  // electronDriftVelocity = electronDriftMobility*electricField;
159  } else {
160  if (m_calcHoles){
161  holeDriftMobility = siProperties.calcHoleDriftMobility(temperature,electricField*Gaudi::Units::volt)*Gaudi::Units::volt;
162  //in this way you could put the electric field in V/mm and the mobility will be in [V mm^2 ns^-1]
163  condData.setHoleDriftMobility(holeDriftMobility);
164  holeDriftVelocity = holeDriftMobility*electricField;
165  }
166  }
167 
168  // -- Calculate Trapping Times
169  const double trappingElectrons{1./(m_fluence*m_betaElectrons)};
170  condData.setTrappingElectrons(trappingElectrons);
171 
172  double trappingHoles{0.};
173  if (m_calcHoles) {
174  trappingHoles = 1./(m_fluence*m_betaHoles);
175  condData.setTrappingHoles(trappingHoles);
176  }
177 
178  // -- Calculate Mean Free Path
179  const double meanFreePathElectrons{electronDriftVelocity*trappingElectrons};
180  condData.setMeanFreePathElectrons(meanFreePathElectrons);
181 
182  double meanFreePathHoles{0.};
183  if (m_calcHoles) {
184  meanFreePathHoles = holeDriftVelocity*trappingHoles;
185  condData.setMeanFreePathHoles(meanFreePathHoles);
186  }
187 
188  // -- Trapping probability
189  double trappingProbability_electron{0.0};
190  double trappingProbability_hole{0.0};
191  double trappingProbability{0.0};
192  if (element->carrierType()==InDetDD::electrons) {
193  trappingProbability = 1.0 - std::exp(-std::abs(pos/meanFreePathElectrons));
194  trappingProbability_electron = trappingProbability;
195  } else {
196  if (m_calcHoles) {
197  trappingProbability = 1.0 - std::exp(-std::abs(pos/meanFreePathHoles));
198  trappingProbability_hole = trappingProbability;
199  } else {
200  trappingProbability = 0.0;
201  }
202  }
203  condData.setTrappingProbability(trappingProbability);
204 
205  // -- Drift time without being trapped
206  const double u{CLHEP::RandFlat::shoot(0., 1.)};
207  const double drift_time{-std::log(u)*trappingHoles};
208  condData.setTrappingTime(drift_time);
209 
210  // -- Time to arrive to the electrode
211  const double t_electrode_hole{pos/holeDriftVelocity};
212  condData.setTimeToElectrode(t_electrode_hole);
213 
214  // -- Position at which the trapping happened
215  const double trappingPosition_hole{holeDriftVelocity*drift_time};
216  condData.setTrappingPositionZ(trappingPosition_hole);
217 
218  //-------------------
219 
220  ATH_MSG_VERBOSE("Temperature (C), bias voltage, depletion voltage: "
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);
228  ATH_MSG_VERBOSE("Electron mean free path (cm): " << condData.getMeanFreePathElectrons());
229  ATH_MSG_VERBOSE("Electron trapping probability: " << trappingProbability_electron);
230 
231  if (m_calcHoles) {
232  ATH_MSG_VERBOSE("Hole drift mobility (cm2/V/s): " << holeDriftMobility/(Gaudi::Units::cm2/Gaudi::Units::volt/Gaudi::Units::s));
233  ATH_MSG_VERBOSE("Hole drift velocity (cm/s): " << holeDriftVelocity);
234  ATH_MSG_VERBOSE("Hole mean free path (cm): " << condData.getMeanFreePathHoles());
235  ATH_MSG_VERBOSE("Hole trapping probability: " << trappingProbability_hole);
236  }
237 
238  return condData;
239 }

◆ finalize()

StatusCode SCT_ChargeTrappingTool::finalize ( )
overridevirtual

Definition at line 64 of file SCT_ChargeTrappingTool.cxx.

65 {
66  return StatusCode::SUCCESS;
67 }

◆ getCondData() [1/2]

SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::getCondData ( const IdentifierHash elementHash,
double  pos 
) const
overridevirtual

Definition at line 74 of file SCT_ChargeTrappingTool.cxx.

75 {
76  const EventContext& ctx{Gaudi::Hive::currentContext()};
77  return getCondData(elementHash, pos, ctx);
78 }

◆ getCondData() [2/2]

SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::getCondData ( const IdentifierHash elementHash,
double  pos,
const EventContext &  ctx 
) const
overridevirtual

Definition at line 69 of file SCT_ChargeTrappingTool.cxx.

70 {
71  return calculate(elementHash, pos, ctx);
72 }

◆ getDetectorElement()

const InDetDD::SiDetectorElement * SCT_ChargeTrappingTool::getDetectorElement ( const IdentifierHash waferHash,
const EventContext &  ctx 
) const
private

Definition at line 334 of file SCT_ChargeTrappingTool.cxx.

334  {
336  if (not condData.isValid()) return nullptr;
337  return condData->getDetectorElement(waferHash);
338 }

◆ getHoleTransport() [1/2]

void SCT_ChargeTrappingTool::getHoleTransport ( double &  x0,
double &  y0,
double &  xfin,
double &  yfin,
double &  Q_m2,
double &  Q_m1,
double &  Q_00,
double &  Q_p1,
double &  Q_p2 
) const
overridevirtual

Definition at line 85 of file SCT_ChargeTrappingTool.cxx.

86 {
87  const EventContext& ctx{Gaudi::Hive::currentContext()};
88  getHoleTransport(x0, y0, xfin, yfin, Q_m2, Q_m1, Q_00, Q_p1, Q_p2, ctx);
89 }

◆ getHoleTransport() [2/2]

void SCT_ChargeTrappingTool::getHoleTransport ( double &  x0,
double &  y0,
double &  xfin,
double &  yfin,
double &  Q_m2,
double &  Q_m1,
double &  Q_00,
double &  Q_p1,
double &  Q_p2,
const EventContext &  ctx 
) const
overridevirtual

Definition at line 80 of file SCT_ChargeTrappingTool.cxx.

81 {
82  holeTransport(x0, y0, xfin, yfin, Q_m2, Q_m1, Q_00, Q_p1, Q_p2);
83 }

◆ getPotentialValue()

double SCT_ChargeTrappingTool::getPotentialValue ( int &  ix,
int &  iy 
)
staticprivate

Definition at line 330 of file SCT_ChargeTrappingTool.cxx.

330  {
332 }

◆ holeTransport()

void SCT_ChargeTrappingTool::holeTransport ( double &  x0,
double &  y0,
double &  xfin,
double &  yfin,
double &  Q_m2,
double &  Q_m1,
double &  Q_00,
double &  Q_p1,
double &  Q_p2 
) const
private

Definition at line 285 of file SCT_ChargeTrappingTool.cxx.

285  {
286  // transport holes in the bulk
287  // T. Kondo, 2010.9.9
288  // External parameters to be specified
289  // m_transportTimeMax [nsec]
290  // m_transportTimeStep [nsec]
291  // bulk_depth [cm]
292  // Induced currents are added to
293  // Q_m2,Q_m1,Q_00,Q_p1,Q_p2
294  //
295  // initPotentialValue(); // <-this has to go into the main
296 
297  // x is width, y is depth
298 
299  double x{x0/10.}; // original hole position [cm]
300  double y{y0/10.}; // original hole position [cm]
301  double qstrip[5];
302 
303  for (int istrip{-2}; istrip < 3 ; istrip++) {
304  qstrip[istrip+2] = induced(istrip, x, y);
305  }
306  ATH_MSG_DEBUG("h:qstrip=" << qstrip[0] << " " << qstrip[1] << " " << qstrip[2] << " " << qstrip[3] << " " << qstrip[4]);
307 
308  // Get induced current by subtracting induced charges
309  for (int istrip{-2}; istrip < 3 ; istrip++) {
310  x = xfin/10.;
311  y = yfin/10.;
312  const double qnew{induced(istrip, x, y)};
313  int jj{istrip + 2};
314  const double dq{qnew - qstrip[jj]};
315  qstrip[jj] = qnew;
316  ATH_MSG_DEBUG("dq= " << dq);
317  switch(istrip) {
318  case -2: Q_m2 += dq ; break;
319  case -1: Q_m1 += dq ; break;
320  case 0: Q_00 += dq ; break;
321  case +1: Q_p1 += dq ; break;
322  case +2: Q_p2 += dq ; break;
323  // default: break; // Coverity complains the default is deadcode.
324  }
325  }
326  ATH_MSG_DEBUG("h:qstrip=" << qstrip[0] << " " << qstrip[1] << " " << qstrip[2] << " " << qstrip[3] << " " << qstrip[4]);
327 }

◆ induced()

double SCT_ChargeTrappingTool::induced ( int  istrip,
double  x,
double  y 
) const
private

Definition at line 250 of file SCT_ChargeTrappingTool.cxx.

250  {
251  // x and y are the coorlocation of charge (e or hole)
252  // induced chardege on the strip "istrip" situated at the height y = d
253  // the center of the strip (istrip=0) is x = 0.004 [cm]
254  static const double deltax{0.0005};
255  static const double deltay{0.00025};
256 
257  static const double bulk_depth{0.0285}; // in [cm]
258  static const double strip_pitch{0.0080}; // in [cm]
259  // x is width, y is depth
260 
261  if ((y < 0.) or (y > bulk_depth)) return 0.;
262  const double xc{strip_pitch * (istrip + 0.5)};
263  const double dx{std::abs(x-xc)};
264  const int ix{static_cast<int>(dx/deltax)};
265  if (ix > 79) return 0.;
266  const int iy{static_cast<int>(y/deltay)};
267  const double fx{(dx - ix*deltax) / deltax};
268  const double fy{(y - iy*deltay) / deltay};
269  const int ix1{ix + 1};
270  const int iy1{iy + 1};
271  const double P{m_PotentialValue[ix ][iy ] * (1.-fx) * (1.-fy)
272  + m_PotentialValue[ix1][iy ] * fx * (1.-fy)
273  + m_PotentialValue[ix ][iy1] * (1.-fx) * fy
274  + m_PotentialValue[ix1][iy1] * fx * fy};
275  ATH_MSG_DEBUG("induced: x,y,iy="<<x<<" "<<y<<" "<<iy<<" istrip,xc,dx,ix="
276  <<istrip<<" "<<xc<<" " <<dx<<" "<<ix<<" fx,fy="<<fx <<" " <<fy<< ", P="<<P);
277 
278  return P;
279 }

◆ initialize()

StatusCode SCT_ChargeTrappingTool::initialize ( )
overridevirtual

Definition at line 32 of file SCT_ChargeTrappingTool.cxx.

33 {
34  if (m_detectorName!="SCT") {
35  ATH_MSG_FATAL("Invalid detector name: " << m_detectorName << ". Must be SCT.");
36  return StatusCode::FAILURE;
37  }
38 
39  m_isSCT = (m_detectorName=="SCT");
40 
41  // Get conditions summary tool
42  m_conditionsToolValid = false;
43  if (not m_siConditionsTool.empty()) {
44  ATH_CHECK(m_siConditionsTool.retrieve());
45  m_conditionsToolValid = true;
46  } else {
47  m_siConditionsTool.disable();
49  }
50 
51  // Read CondHandle Key
53 
54  // initialize PotentialValue
55  for (int ix{0}; ix<81; ix++) {
56  for (int iy{0}; iy<115; iy++) {
57  m_PotentialValue[ix][iy] = getPotentialValue(ix, iy);
58  }
59  }
60 
61  return StatusCode::SUCCESS;
62 }

Member Data Documentation

◆ m_betaElectrons

DoubleProperty SCT_ChargeTrappingTool::m_betaElectrons {this, "BetaElectrons", 3.1E-16, "Constant for the trapping model for electrons, in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"}
private

Definition at line 84 of file SCT_ChargeTrappingTool.h.

◆ m_betaHoles

DoubleProperty SCT_ChargeTrappingTool::m_betaHoles {this, "BetaHoles", 5.1E-16, "Constant for the trapping model for holes in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"}
private

Definition at line 85 of file SCT_ChargeTrappingTool.h.

◆ m_biasVoltage

DoubleProperty SCT_ChargeTrappingTool::m_biasVoltage {this, "BiasVoltage", 150., "Default bias voltage in Volt."}
private

Definition at line 74 of file SCT_ChargeTrappingTool.h.

◆ m_calcHoles

BooleanProperty SCT_ChargeTrappingTool::m_calcHoles {this, "CalcHoles", true, "Default is to consider holes in signal formation."}
private

Definition at line 80 of file SCT_ChargeTrappingTool.h.

◆ m_conditionsToolValid

bool SCT_ChargeTrappingTool::m_conditionsToolValid {false}
private

Definition at line 76 of file SCT_ChargeTrappingTool.h.

◆ m_conditionsToolWarning

std::atomic_bool SCT_ChargeTrappingTool::m_conditionsToolWarning {false}
mutableprivate

Definition at line 77 of file SCT_ChargeTrappingTool.h.

◆ m_deplVoltage

DoubleProperty SCT_ChargeTrappingTool::m_deplVoltage {this, "DepletionVoltage", -30., "Default depletion voltage in Volt."}
private

Definition at line 73 of file SCT_ChargeTrappingTool.h.

◆ m_detectorName

StringProperty SCT_ChargeTrappingTool::m_detectorName {this, "DetectorName", "SCT", "Detector name"}
private

Definition at line 65 of file SCT_ChargeTrappingTool.h.

◆ m_electricFieldTool

ToolHandle<ISCT_ElectricFieldTool> SCT_ChargeTrappingTool::m_electricFieldTool {this, "SCT_ElectricFieldTool", "SCT_ElectricFieldTool", "SCT electric field tool"}
private

Definition at line 91 of file SCT_ChargeTrappingTool.h.

◆ m_fluence

DoubleProperty SCT_ChargeTrappingTool::m_fluence {this, "Fluence", 3.0E13, "Fluence received by the detector."}
private

Definition at line 83 of file SCT_ChargeTrappingTool.h.

◆ m_isSCT

bool SCT_ChargeTrappingTool::m_isSCT {false}
private

Definition at line 66 of file SCT_ChargeTrappingTool.h.

◆ m_PotentialValue

double SCT_ChargeTrappingTool::m_PotentialValue[81][115] {{0.}}
private

Definition at line 87 of file SCT_ChargeTrappingTool.h.

◆ m_SCTDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> SCT_ChargeTrappingTool::m_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
private

Definition at line 93 of file SCT_ChargeTrappingTool.h.

◆ m_siConditionsTool

ToolHandle<ISiliconConditionsTool> SCT_ChargeTrappingTool::m_siConditionsTool {this, "SiConditionsTool", "SCT_SiliconConditionsTool", "SCT silicon conditions tool"}
private

Definition at line 90 of file SCT_ChargeTrappingTool.h.

◆ m_temperature

DoubleProperty SCT_ChargeTrappingTool::m_temperature {this, "Temperature", -2., "Default temperature in Celcius."}
private

Definition at line 70 of file SCT_ChargeTrappingTool.h.

◆ m_temperatureMax

DoubleProperty SCT_ChargeTrappingTool::m_temperatureMax {this, "TemperatureMax", 100., "Maximum temperature allowed in Celcius."}
private

Definition at line 72 of file SCT_ChargeTrappingTool.h.

◆ m_temperatureMin

DoubleProperty SCT_ChargeTrappingTool::m_temperatureMin {this, "TemperatureMin", -80., "Minimum temperature allowed in Celcius."}
private

Definition at line 71 of file SCT_ChargeTrappingTool.h.


The documentation for this class was generated from the following files:
SCT_ChargeTrappingTool::getPotentialValue
static double getPotentialValue(int &ix, int &iy)
Definition: SCT_ChargeTrappingTool.cxx:330
SCT_ChargeTrappingTool::m_electricFieldTool
ToolHandle< ISCT_ElectricFieldTool > m_electricFieldTool
Definition: SCT_ChargeTrappingTool.h:91
SCT_ChargeTrappingCondData::setTrappingTime
void setTrappingTime(const double trappingTime)
Definition: SCT_ChargeTrappingCondData.cxx:90
SCT_ChargeTrappingCondData::setTrappingElectrons
void setTrappingElectrons(const double trappingElectrons)
Definition: SCT_ChargeTrappingCondData.cxx:78
SCT_ChargeTrappingTool::m_calcHoles
BooleanProperty m_calcHoles
Definition: SCT_ChargeTrappingTool.h:80
getPotentialValue
double getPotentialValue(const int ix, const int iy)
A free function to return the SCT electric field potential internal to the silicon on a 81 * 115 arra...
Definition: SCT_GetPotentialValue.cxx:9
SCT_ChargeTrappingCondData
Data object for SCT_ChargeTrappingTool, SCT_RadDamageSummaryTool, SCT_SurfaceChargesGenerator.
Definition: SCT_ChargeTrappingCondData.h:22
SCT_ChargeTrappingTool::getHoleTransport
virtual void getHoleTransport(double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2, const EventContext &ctx) const override
Definition: SCT_ChargeTrappingTool.cxx:80
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SCT_ChargeTrappingTool::m_detectorName
StringProperty m_detectorName
Definition: SCT_ChargeTrappingTool.h:65
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
SCT_ChargeTrappingCondData::setTrappingHoles
void setTrappingHoles(const double trappingHoles)
Definition: SCT_ChargeTrappingCondData.cxx:82
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
python.PhysicalConstants.STP_Temperature
float STP_Temperature
Definition: PhysicalConstants.py:119
SCT_ChargeTrappingTool::m_temperatureMin
DoubleProperty m_temperatureMin
Definition: SCT_ChargeTrappingTool.h:71
DMTest::P
P_v1 P
Definition: P.h:23
SCT_ChargeTrappingTool::m_conditionsToolWarning
std::atomic_bool m_conditionsToolWarning
Definition: SCT_ChargeTrappingTool.h:77
SCT_ChargeTrappingCondData::setMeanFreePathHoles
void setMeanFreePathHoles(const double meanFreePathHoles)
Definition: SCT_ChargeTrappingCondData.cxx:74
SCT_ChargeTrappingTool::m_SCTDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
Definition: SCT_ChargeTrappingTool.h:93
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
SCT_ChargeTrappingTool::m_temperature
DoubleProperty m_temperature
Definition: SCT_ChargeTrappingTool.h:70
SCT_ChargeTrappingCondData::setElectricField
void setElectricField(const double electricField)
Definition: SCT_ChargeTrappingCondData.cxx:66
x
#define x
SCT_ChargeTrappingTool::calculate
SCT_ChargeTrappingCondData calculate(const IdentifierHash &elementHash, double pos, const EventContext &ctx) const
Definition: SCT_ChargeTrappingTool.cxx:92
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
SCT_ChargeTrappingCondData::setMeanFreePathElectrons
void setMeanFreePathElectrons(const double meanFreePathElectrons)
Definition: SCT_ChargeTrappingCondData.cxx:70
Run3DQTestingDriver.dq
dq
Definition: Run3DQTestingDriver.py:108
SCT_ChargeTrappingTool::getCondData
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash &elementHash, double pos, const EventContext &ctx) const override
Definition: SCT_ChargeTrappingTool.cxx:69
python.SystemOfUnits.cm2
int cm2
Definition: SystemOfUnits.py:88
SCT_ChargeTrappingCondData::getMeanFreePathElectrons
double getMeanFreePathElectrons() const
Definition: SCT_ChargeTrappingCondData.cxx:30
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SCT_ChargeTrappingTool::holeTransport
void holeTransport(double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2) const
Definition: SCT_ChargeTrappingTool.cxx:285
SCT_ChargeTrappingTool::m_PotentialValue
double m_PotentialValue[81][115]
Definition: SCT_ChargeTrappingTool.h:87
SCT_ChargeTrappingTool::m_betaHoles
DoubleProperty m_betaHoles
Definition: SCT_ChargeTrappingTool.h:85
test_pyathena.parent
parent
Definition: test_pyathena.py:15
InDet::SiliconProperties::calcHoleDriftMobility
double calcHoleDriftMobility(double temperature, double electricField) const
Definition: SiliconProperties.cxx:149
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCT_ChargeTrappingTool::getDetectorElement
const InDetDD::SiDetectorElement * getDetectorElement(const IdentifierHash &waferHash, const EventContext &ctx) const
Definition: SCT_ChargeTrappingTool.cxx:334
python.SystemOfUnits.volt
int volt
Definition: SystemOfUnits.py:204
MuonR4::SegmentFit::ParamDefs::x0
@ x0
MuonR4::SegmentFit::ParamDefs::y0
@ y0
SCT_ChargeTrappingTool::m_conditionsToolValid
bool m_conditionsToolValid
Definition: SCT_ChargeTrappingTool.h:76
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
SCT_ChargeTrappingTool::m_temperatureMax
DoubleProperty m_temperatureMax
Definition: SCT_ChargeTrappingTool.h:72
SCT_ChargeTrappingTool::m_deplVoltage
DoubleProperty m_deplVoltage
Definition: SCT_ChargeTrappingTool.h:73
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
InDet::SiliconProperties
Definition: SiliconProperties.h:24
SCT_ChargeTrappingCondData::setTrappingProbability
void setTrappingProbability(const double trappingProbability)
Definition: SCT_ChargeTrappingCondData.cxx:86
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SCT_ChargeTrappingTool::m_siConditionsTool
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
Definition: SCT_ChargeTrappingTool.h:90
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
SCT_ChargeTrappingTool::m_fluence
DoubleProperty m_fluence
Definition: SCT_ChargeTrappingTool.h:83
y
#define y
SCT_ChargeTrappingCondData::getMeanFreePathHoles
double getMeanFreePathHoles() const
Definition: SCT_ChargeTrappingCondData.cxx:34
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SCT_ChargeTrappingCondData::setTimeToElectrode
void setTimeToElectrode(const double electrodeTime)
Definition: SCT_ChargeTrappingCondData.cxx:94
SCT_ChargeTrappingCondData::setHoleDriftMobility
void setHoleDriftMobility(const double holeDriftMobility)
Definition: SCT_ChargeTrappingCondData.cxx:102
SCT_ChargeTrappingTool::induced
double induced(int istrip, double x, double y) const
Definition: SCT_ChargeTrappingTool.cxx:250
SCT_ChargeTrappingCondData::setTrappingPositionZ
void setTrappingPositionZ(const double trappingPosition)
Definition: SCT_ChargeTrappingCondData.cxx:98
SCT_ChargeTrappingTool::m_biasVoltage
DoubleProperty m_biasVoltage
Definition: SCT_ChargeTrappingTool.h:74
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
InDet::SiliconProperties::setConditions
void setConditions(double temperature, double electricField)
Definition: SiliconProperties.cxx:71
SCT_ChargeTrappingTool::m_isSCT
bool m_isSCT
Definition: SCT_ChargeTrappingTool.h:66
SCT_ChargeTrappingTool::m_betaElectrons
DoubleProperty m_betaElectrons
Definition: SCT_ChargeTrappingTool.h:84