ATLAS Offline Software
SCT_ChargeTrappingTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
11 #include "SCT_ChargeTrappingTool.h"
13 
17 
18 #include "GaudiKernel/PhysicalConstants.h"
19 #include "GaudiKernel/SystemOfUnits.h"
20 
21 #include "CLHEP/Random/RandFlat.h"
22 
23 #include <algorithm>
24 #include <cmath>
25 
26 SCT_ChargeTrappingTool::SCT_ChargeTrappingTool(const std::string& type, const std::string& name, const IInterface* parent) :
27  base_class(type, name, parent)
28 {
29 }
30 
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 }
63 
65 {
66  return StatusCode::SUCCESS;
67 }
68 
69 SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::getCondData(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const
70 {
71  return calculate(elementHash, pos, ctx);
72 }
73 
75 {
76  const EventContext& ctx{Gaudi::Hive::currentContext()};
77  return getCondData(elementHash, pos, ctx);
78 }
79 
80 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
81 {
82  holeTransport(x0, y0, xfin, yfin, Q_m2, Q_m1, Q_00, Q_p1, Q_p2);
83 }
84 
85 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
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 }
90 
91 
92 SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::calculate(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const
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 }
240 
241 
242 
243 //-------------------------------------------------------------------------------------------------------------------
244 // RAMO POTENTIAL
245 //-------------------------------------------------------------------------------------------------------------------
246 
247 //-------------------------------------------------------------------
248 // calculation of induced charge using Weighting (Ramo) function
249 //-------------------------------------------------------------------
250 double SCT_ChargeTrappingTool::induced(int istrip, double x, double y) const {
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 }
280 
281 
282 //---------------------------------------------------------------------
283 // holeTransport
284 //---------------------------------------------------------------------
285 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 {
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 }
328 
329 double
332 }
333 
334 const InDetDD::SiDetectorElement* SCT_ChargeTrappingTool::getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const {
336  if (not condData.isValid()) return nullptr;
337  return condData->getDetectorElement(waferHash);
338 }
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
SCT_ChargeTrappingTool.h
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:83
SCT_ChargeTrappingCondData::setMeanFreePathElectrons
void setMeanFreePathElectrons(const double meanFreePathElectrons)
Definition: SCT_ChargeTrappingCondData.cxx:70
SCT_GetPotentialValue.h
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
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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
SCT_ChargeTrappingTool::finalize
virtual StatusCode finalize() override
Definition: SCT_ChargeTrappingTool.cxx:64
SCT_ChargeTrappingTool::m_conditionsToolValid
bool m_conditionsToolValid
Definition: SCT_ChargeTrappingTool.h:76
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
IdentifierHash.h
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
SiDetectorElement.h
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
SCT_ChargeTrappingTool::m_siConditionsTool
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
Definition: SCT_ChargeTrappingTool.h:90
SCT_ChargeTrappingTool::SCT_ChargeTrappingTool
SCT_ChargeTrappingTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: SCT_ChargeTrappingTool.cxx:26
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_ChargeTrappingTool::initialize
virtual StatusCode initialize() override
Definition: SCT_ChargeTrappingTool.cxx:32
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
IdentifierHash
Definition: IdentifierHash.h:38
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
SiliconProperties.h
SCT_ChargeTrappingTool::m_isSCT
bool m_isSCT
Definition: SCT_ChargeTrappingTool.h:66
SCT_ChargeTrappingTool::m_betaElectrons
DoubleProperty m_betaElectrons
Definition: SCT_ChargeTrappingTool.h:84