|
ATLAS Offline Software
|
#include <SCT_SurfaceChargesGenerator.h>
|
virtual void | setFixedTime (float fixedTime) override |
|
virtual void | process (const InDetDD::SiDetectorElement *element, const TimedHitPtr< SiHit > &phit, ISiSurfaceChargesInserter &inserter, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) override |
| create a list of surface charges from a hit More...
|
|
void | processSiHit (const InDetDD::SiDetectorElement *element, const SiHit &phit, ISiSurfaceChargesInserter &inserter, float eventTime, unsigned short eventID, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) |
|
float | driftTime (float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const |
| calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap More...
|
|
float | diffusionSigma (float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const |
| calculate diffusion sigma from a gaussian dist scattered charge More...
|
|
float | surfaceDriftTime (float ysurf) const |
| Calculate of the surface drift time. More...
|
|
float | maxDriftTime (const InDetDD::SiDetectorElement *element, const EventContext &ctx) const |
| max drift charge equivalent to the detector thickness More...
|
|
float | maxDiffusionSigma (const InDetDD::SiDetectorElement *element, const EventContext &ctx) const |
| max sigma diffusion More...
|
|
bool | chargeIsTrapped (double spess, const InDetDD::SiDetectorElement *element, double &trap_pos, double &drift_time) |
|
|
IntegerProperty | m_numberOfCharges {this, "NumberOfCharges", 1, "number of charges"} |
|
FloatProperty | m_smallStepLength {this, "SmallStepLength", 5 * CLHEP::micrometer, "max internal step along the larger G4 step"} |
|
FloatProperty | m_tSurfaceDrift {this, "SurfaceDriftTime", 10 * CLHEP::ns, "max surface drift time"} |
| related to the surface drift More...
|
|
FloatProperty | m_tfix {this, "FixedTime", -999., "fixed time"} |
|
FloatProperty | m_tsubtract {this, "SubtractTime", -999., "subtract drift time from mid gap"} |
|
BooleanProperty | m_useSiCondDB {this, "UseSiCondDB", true, "Usage of SiConditions DB values can be disabled to use setable ones"} |
|
FloatProperty | m_vdepl {this, "DepletionVoltage", 70., "depletion voltage, default 70V"} |
|
FloatProperty | m_vbias {this, "BiasVoltage", 150., "bias voltage, default 150V"} |
|
BooleanProperty | m_doTrapping {this, "doTrapping", false, "Flag to set Charge Trapping"} |
|
BooleanProperty | m_doHistoTrap {this, "doHistoTrap", false, "Histogram the charge trapping effect"} |
|
BooleanProperty | m_doRamo {this, "doRamo", false, "Ramo Potential for charge trapping effect"} |
|
BooleanProperty | m_isOverlay {this, "isOverlay", false, "flag for overlay"} |
|
BooleanProperty | m_doInducedChargeModel {this, "doInducedChargeModel", false, "Flag for Induced Charge Model"} |
|
ToolHandle< ISiPropertiesTool > | m_siPropertiesTool {this, "SiPropertiesTool", "SCT_SiPropertiesTool", "Tool to retrieve SCT silicon properties"} |
|
ToolHandle< ISCT_RadDamageSummaryTool > | m_radDamageTool {this, "RadDamageSummaryTool", "SCT_RadDamageSummaryTool", "Tool to retrieve SCT radiation damages"} |
|
ToolHandle< ISiliconConditionsTool > | m_siConditionsTool {this, "SiConditionsTool", "SCT_SiliconConditionsTool", "Tool to retrieve SCT silicon information"} |
|
ToolHandle< ISiLorentzAngleTool > | m_lorentzAngleTool {this, "LorentzAngleTool", "SiLorentzAngleTool/SCTLorentzAngleTool", "Tool to retreive Lorentz angle"} |
|
ServiceHandle< ITHistSvc > | m_thistSvc {this, "THistSvc", "THistSvc"} |
|
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCacheCondObjInputKey |
|
float | m_tHalfwayDrift {0.} |
| Surface drift time. More...
|
|
float | m_distInterStrip {1.0} |
| Inter strip distance normalized to 1. More...
|
|
float | m_distHalfInterStrip {0.} |
| Half way distance inter strip. More...
|
|
bool | m_SurfaceDriftFlag {false} |
| surface drift ON/OFF More...
|
|
TProfile * | m_h_efieldz {nullptr} |
|
TH1F * | m_h_efield {nullptr} |
|
TH1F * | m_h_spess {nullptr} |
|
TH1F * | m_h_depD {nullptr} |
|
TH2F * | m_h_drift_electrode {nullptr} |
|
TH1F * | m_h_ztrap {nullptr} |
|
TH1F * | m_h_drift_time {nullptr} |
|
TH1F * | m_h_t_electrode {nullptr} |
|
TH1F * | m_h_zhit {nullptr} |
|
TH1F * | m_h_ztrap_tot {nullptr} |
|
TH1F * | m_h_no_ztrap {nullptr} |
|
TH1F * | m_h_trap_drift_t {nullptr} |
|
TH1F * | m_h_notrap_drift_t {nullptr} |
|
TProfile * | m_h_mob_Char {nullptr} |
|
TProfile * | m_h_vel {nullptr} |
|
TProfile * | m_h_drift1 {nullptr} |
|
TProfile * | m_h_gen {nullptr} |
|
TProfile * | m_h_gen1 {nullptr} |
|
TProfile * | m_h_gen2 {nullptr} |
|
TProfile * | m_h_velocity_trap {nullptr} |
|
TProfile * | m_h_mobility_trap {nullptr} |
|
TH1F * | m_h_trap_pos {nullptr} |
|
std::unique_ptr< InducedChargeModel > | m_InducedChargeModel |
|
◆ SCT_SurfaceChargesGenerator()
SCT_SurfaceChargesGenerator::SCT_SurfaceChargesGenerator |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ ~SCT_SurfaceChargesGenerator()
virtual SCT_SurfaceChargesGenerator::~SCT_SurfaceChargesGenerator |
( |
| ) |
|
|
virtualdefault |
◆ chargeIsTrapped()
Definition at line 570 of file SCT_SurfaceChargesGenerator.cxx.
574 if (element==
nullptr) {
575 ATH_MSG_ERROR(
"SCT_SurfaceChargesGenerator::chargeIsTrapped element is nullptr");
578 bool isTrapped{
false};
581 const double electric_field{condData.getElectricField()};
584 const double mobChar{condData.getHoleDriftMobility()};
588 m_h_vel->Fill(electric_field, electric_field * mobChar);
590 const double t_electrode{condData.getTimeToElectrode()};
591 drift_time = condData.getTrappingTime();
592 const double z_trap{condData.getTrappingPositionZ()};
593 trap_pos = spess - z_trap;
602 if (drift_time < t_electrode) {
604 ATH_MSG_INFO(
"drift_time: " << drift_time <<
" t_electrode: " << t_electrode <<
" spess " << spess);
609 m_h_drift1->Fill(spess, drift_time / t_electrode);
610 m_h_gen->Fill(spess, drift_time);
612 m_h_gen2->Fill(spess, z_trap / drift_time * t_electrode);
620 const double z_trap{condData.getTrappingPositionZ()};
◆ diffusionSigma()
calculate diffusion sigma from a gaussian dist scattered charge
Definition at line 224 of file SCT_SurfaceChargesGenerator.cxx.
225 if (element==
nullptr) {
226 ATH_MSG_ERROR(
"SCT_SurfaceChargesGenerator::diffusionSigma element is nullptr");
233 const float sigma{
static_cast<float>(std::sqrt(2. *
m_siPropertiesTool->getSiProperties(hashId, ctx).holeDiffusionConstant() *
t))};
◆ driftTime()
calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap
Definition at line 175 of file SCT_SurfaceChargesGenerator.cxx.
176 if (element==
nullptr) {
177 ATH_MSG_ERROR(
"SCT_SurfaceChargesGenerator::process element is nullptr");
181 if (design==
nullptr) {
182 ATH_MSG_ERROR(
"SCT_SurfaceChargesGenerator::process can not get " << design);
185 const double thickness{design->thickness()};
188 if ((zhit < 0.0) or (zhit > thickness)) {
193 float depletionVoltage{0.};
194 float biasVoltage{0.};
203 const float denominator{
static_cast<float>(depletionVoltage + biasVoltage - (2.0 * zhit * depletionVoltage / thickness))};
205 if (biasVoltage >= depletionVoltage) {
207 ATH_MSG_ERROR(
"driftTime: negative argument X for log(X) " << zhit);
217 t_drift *= thickness * thickness / (2.0 *
m_siPropertiesTool->getSiProperties(hashId, ctx).holeDriftMobility() * depletionVoltage);
◆ finalize()
StatusCode SCT_SurfaceChargesGenerator::finalize |
( |
| ) |
|
|
overridevirtual |
◆ initialize()
StatusCode SCT_SurfaceChargesGenerator::initialize |
( |
| ) |
|
|
overridevirtual |
AlgTool initialize.
Definition at line 44 of file SCT_SurfaceChargesGenerator.cxx.
137 const SCT_ID* sct_id{
nullptr};
149 ATH_MSG_INFO(
"\tsurface drift still not on, wrong params");
154 ATH_MSG_FATAL(
"\tCannot set both FixedTime and SubtractTime options!");
155 ATH_MSG_INFO(
"\tMake sure the two flags are not set simultaneously in jo");
156 return StatusCode::FAILURE;
161 return StatusCode::SUCCESS;
◆ maxDiffusionSigma()
◆ maxDriftTime()
◆ process()
◆ processSiHit()
Definition at line 308 of file SCT_SurfaceChargesGenerator.cxx.
316 if (design==
nullptr) {
317 ATH_MSG_ERROR(
"SCT_SurfaceChargesGenerator::process can not get " << design);
321 const double thickness{design->thickness()};
329 float timeOfFlight{p_eventTime +
hitTime(phit)};
347 const float cEta{
static_cast<float>(endPos[
SiHit::xEta]) - xEta};
348 const float cPhi{
static_cast<float>(endPos[
SiHit::xPhi]) - xPhi};
349 const float cDep{
static_cast<float>(endPos[
SiHit::xDep]) - xDep};
351 const float LargeStep{std::sqrt(cEta*cEta + cPhi*cPhi + cDep*cDep)};
355 const float q1{
static_cast<float>(
e1 *
m_siPropertiesTool->getSiProperties(hashId, ctx).electronHolePairsPerEnergy())};
382 const float StepX{cEta / numberOfSteps};
383 const float StepY{cPhi / numberOfSteps};
384 const float StepZ{cDep / numberOfSteps};
401 for (
int istep{0}; istep < numberOfSteps; ++istep) {
403 float z1{zhit + StepZ * dstep};
407 float zReadout{
static_cast<float>(0.5 * thickness - design->readoutSide() * z1)};
408 const double spess{zReadout};
415 float t_drift{
driftTime(zReadout, element, ctx)};
416 if (t_drift>-2.0000002 and t_drift<-1.9999998) {
417 ATH_MSG_DEBUG(
"Checking for rounding errors in compression");
418 if ((std::abs(z1) - 0.5 * thickness) < 0.000010) {
419 ATH_MSG_DEBUG(
"Rounding error found attempting to correct it. z1 = " << std::fixed << std::setprecision(8) << z1);
421 z1 = 0.0000005 - 0.5 * thickness;
424 z1 = 0.5 * thickness - 0.0000005;
427 zReadout = 0.5 * thickness - design->readoutSide() * z1;
428 t_drift =
driftTime(zReadout, element, ctx);
429 if (t_drift>-2.0000002 and t_drift<-1.9999998) {
432 ATH_MSG_DEBUG(
"Correction Successful! z1 = " << std::fixed << std::setprecision(8) << z1 <<
", zReadout = " << zReadout <<
", t_drift = " << t_drift);
435 ATH_MSG_DEBUG(
"No rounding error found. Making no correction.");
439 const float x1{xhit + StepX * dstep};
440 float y1{yhit + StepY * dstep};
445 y1 += tanLorentz * zReadout;
449 const float rx{CLHEP::RandGaussZiggurat::shoot(rndmEngine)};
451 const float ry{CLHEP::RandGaussZiggurat::shoot(rndmEngine)};
452 const float yd{
y1 +
sigma * ry};
455 const double stripPitch{0.080};
456 double dstrip{
y1 / stripPitch};
458 dstrip = dstrip - std::trunc(dstrip);
460 dstrip = dstrip - std::trunc(dstrip) + 1;
464 double y0{dstrip * stripPitch};
465 double z0{thickness - zReadout};
472 double trap_pos{-999999.}, drift_time{-999999.};
477 double Q_all[5]={0.0,0.0,0.0,0.0,0.0};
479 dstrip =
y1 / stripPitch;
485 dstrip -=
static_cast<double>(
static_cast<int>(dstrip));
487 dstrip -=
static_cast<double>(
static_cast<int>(dstrip)) + 1;
491 double yfin{dstrip * stripPitch};
492 double zfin{thickness - trap_pos};
494 m_radDamageTool->holeTransport(y0,
z0, yfin, zfin, Q_all[0], Q_all[1], Q_all[2], Q_all[3], Q_all[4]);
496 const double ystrip{yd +
strip * stripPitch};
498 if (design->inActiveArea(position)) {
500 const double time{drift_time};
521 const double mm2cm = 0.1;
525 Q_m2, Q_m1, Q_00, Q_p1, Q_p2,
530 Q_m2, Q_m1, Q_00, Q_p1, Q_p2,
535 if (Q_00[
it] == 0.0)
continue;
536 double ICM_time{(
it+0.5)*0.5 + timeOfFlight};
538 Q_m2[
it], Q_m1[
it], Q_00[
it], Q_p1[
it], Q_p2[
it]
541 double ystrip{
y1 +
strip * stripPitch};
543 if (design->inActiveArea(position)) {
546 ICM_time, hitproc, trklink)));
552 if (design->inActiveArea(position)) {
553 const float sdist{
static_cast<float>(design->scaledDistanceToNearestDiode(position))};
556 const float totaltime{(
m_tfix > -998.) ?
m_tfix.value() : t_drift + timeOfFlight + t_surf};
559 ATH_MSG_VERBOSE(std::fixed << std::setprecision(8) <<
"Local position (phi, eta, depth): ("
560 << position.xPhi() <<
", " << position.xEta() <<
", " << position.xDepth()
561 <<
") of the element is out of active area, charge = " << q1);
◆ setFixedTime()
virtual void SCT_SurfaceChargesGenerator::setFixedTime |
( |
float |
fixedTime | ) |
|
|
inlineoverrideprivatevirtual |
◆ surfaceDriftTime()
float SCT_SurfaceChargesGenerator::surfaceDriftTime |
( |
float |
ysurf | ) |
const |
|
private |
◆ m_distHalfInterStrip
float SCT_SurfaceChargesGenerator::m_distHalfInterStrip {0.} |
|
private |
◆ m_distInterStrip
float SCT_SurfaceChargesGenerator::m_distInterStrip {1.0} |
|
private |
◆ m_doHistoTrap
BooleanProperty SCT_SurfaceChargesGenerator::m_doHistoTrap {this, "doHistoTrap", false, "Histogram the charge trapping effect"} |
|
private |
◆ m_doInducedChargeModel
BooleanProperty SCT_SurfaceChargesGenerator::m_doInducedChargeModel {this, "doInducedChargeModel", false, "Flag for Induced Charge Model"} |
|
private |
◆ m_doRamo
BooleanProperty SCT_SurfaceChargesGenerator::m_doRamo {this, "doRamo", false, "Ramo Potential for charge trapping effect"} |
|
private |
◆ m_doTrapping
BooleanProperty SCT_SurfaceChargesGenerator::m_doTrapping {this, "doTrapping", false, "Flag to set Charge Trapping"} |
|
private |
◆ m_fieldCacheCondObjInputKey
Initial value:{
this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
Definition at line 138 of file SCT_SurfaceChargesGenerator.h.
◆ m_h_depD
TH1F* SCT_SurfaceChargesGenerator::m_h_depD {nullptr} |
|
private |
◆ m_h_drift1
TProfile* SCT_SurfaceChargesGenerator::m_h_drift1 {nullptr} |
|
private |
◆ m_h_drift_electrode
TH2F* SCT_SurfaceChargesGenerator::m_h_drift_electrode {nullptr} |
|
private |
◆ m_h_drift_time
TH1F* SCT_SurfaceChargesGenerator::m_h_drift_time {nullptr} |
|
private |
◆ m_h_efield
TH1F* SCT_SurfaceChargesGenerator::m_h_efield {nullptr} |
|
private |
◆ m_h_efieldz
TProfile* SCT_SurfaceChargesGenerator::m_h_efieldz {nullptr} |
|
private |
◆ m_h_gen
TProfile* SCT_SurfaceChargesGenerator::m_h_gen {nullptr} |
|
private |
◆ m_h_gen1
TProfile* SCT_SurfaceChargesGenerator::m_h_gen1 {nullptr} |
|
private |
◆ m_h_gen2
TProfile* SCT_SurfaceChargesGenerator::m_h_gen2 {nullptr} |
|
private |
◆ m_h_mob_Char
TProfile* SCT_SurfaceChargesGenerator::m_h_mob_Char {nullptr} |
|
private |
◆ m_h_mobility_trap
TProfile* SCT_SurfaceChargesGenerator::m_h_mobility_trap {nullptr} |
|
private |
◆ m_h_no_ztrap
TH1F* SCT_SurfaceChargesGenerator::m_h_no_ztrap {nullptr} |
|
private |
◆ m_h_notrap_drift_t
TH1F* SCT_SurfaceChargesGenerator::m_h_notrap_drift_t {nullptr} |
|
private |
◆ m_h_spess
TH1F* SCT_SurfaceChargesGenerator::m_h_spess {nullptr} |
|
private |
◆ m_h_t_electrode
TH1F* SCT_SurfaceChargesGenerator::m_h_t_electrode {nullptr} |
|
private |
◆ m_h_trap_drift_t
TH1F* SCT_SurfaceChargesGenerator::m_h_trap_drift_t {nullptr} |
|
private |
◆ m_h_trap_pos
TH1F* SCT_SurfaceChargesGenerator::m_h_trap_pos {nullptr} |
|
private |
◆ m_h_vel
TProfile* SCT_SurfaceChargesGenerator::m_h_vel {nullptr} |
|
private |
◆ m_h_velocity_trap
TProfile* SCT_SurfaceChargesGenerator::m_h_velocity_trap {nullptr} |
|
private |
◆ m_h_zhit
TH1F* SCT_SurfaceChargesGenerator::m_h_zhit {nullptr} |
|
private |
◆ m_h_ztrap
TH1F* SCT_SurfaceChargesGenerator::m_h_ztrap {nullptr} |
|
private |
◆ m_h_ztrap_tot
TH1F* SCT_SurfaceChargesGenerator::m_h_ztrap_tot {nullptr} |
|
private |
◆ m_InducedChargeModel
◆ m_isOverlay
BooleanProperty SCT_SurfaceChargesGenerator::m_isOverlay {this, "isOverlay", false, "flag for overlay"} |
|
private |
◆ m_lorentzAngleTool
◆ m_numberOfCharges
IntegerProperty SCT_SurfaceChargesGenerator::m_numberOfCharges {this, "NumberOfCharges", 1, "number of charges"} |
|
private |
◆ m_radDamageTool
◆ m_siConditionsTool
◆ m_siPropertiesTool
ToolHandle<ISiPropertiesTool> SCT_SurfaceChargesGenerator::m_siPropertiesTool {this, "SiPropertiesTool", "SCT_SiPropertiesTool", "Tool to retrieve SCT silicon properties"} |
|
private |
◆ m_smallStepLength
FloatProperty SCT_SurfaceChargesGenerator::m_smallStepLength {this, "SmallStepLength", 5 * CLHEP::micrometer, "max internal step along the larger G4 step"} |
|
private |
◆ m_SurfaceDriftFlag
bool SCT_SurfaceChargesGenerator::m_SurfaceDriftFlag {false} |
|
private |
◆ m_tfix
FloatProperty SCT_SurfaceChargesGenerator::m_tfix {this, "FixedTime", -999., "fixed time"} |
|
private |
◆ m_tHalfwayDrift
float SCT_SurfaceChargesGenerator::m_tHalfwayDrift {0.} |
|
private |
◆ m_thistSvc
ServiceHandle<ITHistSvc> SCT_SurfaceChargesGenerator::m_thistSvc {this, "THistSvc", "THistSvc"} |
|
private |
◆ m_tsubtract
FloatProperty SCT_SurfaceChargesGenerator::m_tsubtract {this, "SubtractTime", -999., "subtract drift time from mid gap"} |
|
private |
◆ m_tSurfaceDrift
FloatProperty SCT_SurfaceChargesGenerator::m_tSurfaceDrift {this, "SurfaceDriftTime", 10 * CLHEP::ns, "max surface drift time"} |
|
private |
◆ m_useSiCondDB
BooleanProperty SCT_SurfaceChargesGenerator::m_useSiCondDB {this, "UseSiCondDB", true, "Usage of SiConditions DB values can be disabled to use setable ones"} |
|
private |
◆ m_vbias
FloatProperty SCT_SurfaceChargesGenerator::m_vbias {this, "BiasVoltage", 150., "bias voltage, default 150V"} |
|
private |
◆ m_vdepl
FloatProperty SCT_SurfaceChargesGenerator::m_vdepl {this, "DepletionVoltage", 70., "depletion voltage, default 70V"} |
|
private |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
FloatProperty m_tSurfaceDrift
related to the surface drift
IntegerProperty m_numberOfCharges
Data object for SCT_ChargeTrappingTool, SCT_RadDamageSummaryTool, SCT_SurfaceChargesGenerator.
char data[hepevt_bytes_allocation_ATLAS]
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
HepGeom::Point3D< double > localEndPosition() const
BooleanProperty m_doTrapping
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
virtual const Amg::Vector3D & center() const override final
Center in global coordinates.
float m_distHalfInterStrip
Half way distance inter strip.
std::unique_ptr< InducedChargeModel > m_InducedChargeModel
ServiceHandle< ITHistSvc > m_thistSvc
#define ATH_MSG_VERBOSE(x)
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
float m_distInterStrip
Inter strip distance normalized to 1.
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
FloatProperty m_tsubtract
float eventTime() const
t0 offset of the bunch xing containing the hit in ns.
BooleanProperty m_isOverlay
a link optimized in size for a GenParticle in a McEventCollection
def TProfile(*args, **kwargs)
ToolHandle< ISCT_RadDamageSummaryTool > m_radDamageTool
BooleanProperty m_useSiCondDB
const HepMcParticleLink & particleLink() const
TProfile * m_h_velocity_trap
bool m_SurfaceDriftFlag
surface drift ON/OFF
FloatProperty m_smallStepLength
bool isValid() const
Validity check.
float m_tHalfwayDrift
Surface drift time.
Amg::Vector2D hitLocalToLocal(double xEta, double xPhi) const
Simulation/Hit local frame to reconstruction local frame.
ToolHandle< ISiPropertiesTool > m_siPropertiesTool
float driftTime(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate drift time perpandicular to the surface for a charge at distance zhit from mid gap
TH2F * m_h_drift_electrode
float surfaceDriftTime(float ysurf) const
Calculate of the surface drift time.
double energyLoss() const
BooleanProperty m_doHistoTrap
double charge(const T &p)
static HepMcParticleLink getRedirectedLink(const HepMcParticleLink &particleLink, uint32_t eventIndex, const EventContext &ctx)
Return a HepMcParticleLink pointing at the same particle, but in a different GenEvent.
StatusCode initialize(bool used=true)
TProfile * m_h_mobility_trap
TH1F * m_h_notrap_drift_t
def time(flags, cells_name, *args, **kw)
unsigned short eventId() const
the index of the component event in PileUpEventInfo.
#define ATH_MSG_WARNING(x)
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
void processSiHit(const InDetDD::SiDetectorElement *element, const SiHit &phit, ISiSurfaceChargesInserter &inserter, float eventTime, unsigned short eventID, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx)
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
BooleanProperty m_doInducedChargeModel
float hitTime(const AFP_SIDSimHit &hit)
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
bool chargeIsTrapped(double spess, const InDetDD::SiDetectorElement *element, double &trap_pos, double &drift_time)
HepGeom::Point3D< double > localStartPosition() const
float diffusionSigma(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate diffusion sigma from a gaussian dist scattered charge