|
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef SIDIGITIZATION_INDUCEDCHARGEDMODEL_H
6 #define SIDIGITIZATION_INDUCEDCHARGEDMODEL_H
25 #include "GaudiKernel/PhysicalConstants.h"
26 #include "GaudiKernel/ToolHandle.h"
27 #include "GaudiKernel/ServiceHandle.h"
30 #include "CLHEP/Random/RandFlat.h"
31 #include "CLHEP/Random/RandGaussZiggurat.h"
32 #include "CLHEP/Random/RandPoisson.h"
33 #include "CLHEP/Units/SystemOfUnits.h"
67 const float bulk_depth,
69 const ToolHandle<ISiliconConditionsTool> siConditionsTool,
70 CLHEP::HepRandomEngine* rndmEngine,
71 const EventContext& ctx) :
95 SCT_InducedChargeModelData*
100 const ToolHandle<ISiliconConditionsTool>& siConditionsTool,
101 CLHEP::HepRandomEngine* rndmEngine,
102 const EventContext& ctx)
const;
108 const double x0,
const double y0,
109 double* Q_m2,
double* Q_m1,
double* Q_00,
double* Q_p1,
double* Q_p2,
111 const ToolHandle<ISiPropertiesTool>& siPropertiesTool,
112 const EventContext& ctx)
const;
114 const double x0,
const double y0,
115 double* Q_m2,
double* Q_m1,
double* Q_00,
double* Q_p1,
double* Q_p2,
117 const ToolHandle<ISiPropertiesTool>& siPropertiesTool,
118 const EventContext& ctx)
const;
120 const double x0,
const double y0,
121 double* Q_m2,
double* Q_m1,
double* Q_00,
double* Q_p1,
double* Q_p2,
123 const ToolHandle<ISiPropertiesTool>& siPropertiesTool,
124 const EventContext& ctx)
const;
132 const double x,
const double y,
double& vx,
double& vy,
double& D,
134 const ToolHandle<ISiPropertiesTool>& siPropertiesTool,
135 const EventContext& ctx)
const;
136 double induced(
const SCT_InducedChargeModelData&
data,
137 const int istrip,
const double x,
const double y)
const;
139 const double x,
const double y,
double& Ex,
double& Ey)
const;
180 #endif // SIDIGITIZATION_INDUCEDCHARGEDMODEL_H
char data[hepevt_bytes_allocation_ATLAS]
Amg::Vector3D m_magneticField
void getEField(const SCT_InducedChargeModelData &data, const double x, const double y, double &Ex, double &Ey) const
std::vector< std::array< std::array< double, NDepthPoints >, NEFieldPoints > > m_EyValue
static const std::vector< float > s_VFD0
SCT_InducedChargeModelData * setWaferData(const float vdepl, const float vbias, const InDetDD::SolidStateDetectorElementBase *element, const AtlasFieldCacheCondObj *fieldCondObj, const ToolHandle< ISiliconConditionsTool > &siConditionsTool, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) const
void setEField(SCT_InducedChargeModelData &data) const
std::vector< std::unique_ptr< SCT_InducedChargeModelData > > m_data ATLAS_THREAD_SAFE
bool getVxVyD(const SCT_InducedChargeModelData &data, const bool isElectron, const double x, const double y, double &vx, double &vy, double &D, const IdentifierHash hashId, const ToolHandle< ISiPropertiesTool > &siPropertiesTool, const EventContext &ctx) const
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
std::array< std::array< double, NDepthPoints >, NEFieldPoints > m_EyValue
double m_transportTimeStep
static size_t getFEMIndex(SCT_InducedChargeModelData &data)
void transport(const SCT_InducedChargeModelData &data, const bool isElectron, const double x0, const double y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, const IdentifierHash hashId, const ToolHandle< ISiPropertiesTool > &siPropertiesTool, const EventContext &ctx) const
bool isElectron(const xAOD::Egamma *eg)
is the object an electron (not Fwd)
const InDetDD::SolidStateDetectorElementBase * m_element
std::vector< std::array< std::array< double, NDepthPoints >, NEFieldPoints > > m_ExValue
Class to provide easy MsgStream access and capabilities.
std::array< std::array< double, NDepthPoints >, NEFieldPoints > m_ExValue
void holeTransport(const SCT_InducedChargeModelData &data, const double x0, const double y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, const IdentifierHash hashId, const ToolHandle< ISiPropertiesTool > &siPropertiesTool, const EventContext &ctx) const
EFieldModel m_EFieldModel
CLHEP::HepRandomEngine * m_rndmEngine
Eigen::Matrix< double, 3, 1 > Vector3D
static const std::vector< std::string > s_VFD0str
double m_transportTimeMax
void electronTransport(const SCT_InducedChargeModelData &data, const double x0, const double y0, double *Q_m2, double *Q_m1, double *Q_00, double *Q_p1, double *Q_p2, const IdentifierHash hashId, const ToolHandle< ISiPropertiesTool > &siPropertiesTool, const EventContext &ctx) const
InducedChargeModel(size_t maxHash, EFieldModel model=FEMsolutions)
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
double induced(const SCT_InducedChargeModelData &data, const int istrip, const double x, const double y) const
std::vector< std::array< std::array< double, NDepthPoints >, NRamoPoints > > m_PotentialValue
EFieldModel m_EFieldModel
SCT_InducedChargeModelData(const float vdepl, const float vbias, const InDetDD::SolidStateDetectorElementBase *element, const Amg::Vector3D &magneticField, const float bulk_depth, const EFieldModel model, const ToolHandle< ISiliconConditionsTool > siConditionsTool, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx)