|
ATLAS Offline Software
|
Go to the documentation of this file.
32 #ifndef SCT_DIGITIZATION_SCT_SURFACECHARGESGENERATOR_H
33 #define SCT_DIGITIZATION_SCT_SURFACECHARGESGENERATOR_H
50 #include "GaudiKernel/ITHistSvc.h"
51 #include "GaudiKernel/ServiceHandle.h"
52 #include "GaudiKernel/ToolHandle.h"
55 #include "CLHEP/Units/SystemOfUnits.h"
69 class SiDetectorElement;
70 class SCT_ModuleSideDesign;
74 class HepRandomEngine;
118 FloatProperty
m_tfix{
this,
"FixedTime", -999.,
"fixed time"};
119 FloatProperty
m_tsubtract{
this,
"SubtractTime", -999.,
"subtract drift time from mid gap"};
121 BooleanProperty
m_useSiCondDB{
this,
"UseSiCondDB",
true,
"Usage of SiConditions DB values can be disabled to use setable ones"};
122 FloatProperty
m_vdepl{
this,
"DepletionVoltage", 70.,
"depletion voltage, default 70V"};
123 FloatProperty
m_vbias{
this,
"BiasVoltage", 150.,
"bias voltage, default 150V"};
124 BooleanProperty
m_doTrapping{
this,
"doTrapping",
false,
"Flag to set Charge Trapping"};
125 BooleanProperty
m_doHistoTrap{
this,
"doHistoTrap",
false,
"Histogram the charge trapping effect"};
126 BooleanProperty
m_doRamo{
this,
"doRamo",
false,
"Ramo Potential for charge trapping effect"};
127 BooleanProperty
m_isOverlay{
this,
"isOverlay",
false,
"flag for overlay"};
131 ToolHandle<ISiPropertiesTool>
m_siPropertiesTool{
this,
"SiPropertiesTool",
"SCT_SiPropertiesTool",
"Tool to retrieve SCT silicon properties"};
132 ToolHandle<ISCT_RadDamageSummaryTool>
m_radDamageTool{
this,
"RadDamageSummaryTool",
"SCT_RadDamageSummaryTool",
"Tool to retrieve SCT radiation damages"};
133 ToolHandle<ISiliconConditionsTool>
m_siConditionsTool{
this,
"SiConditionsTool",
"SCT_SiliconConditionsTool",
"Tool to retrieve SCT silicon information"};
134 ToolHandle<ISiLorentzAngleTool>
m_lorentzAngleTool{
this,
"LorentzAngleTool",
"SiLorentzAngleTool/SCTLorentzAngleTool",
"Tool to retreive Lorentz angle"};
139 this,
"AtlasFieldCacheCondObj",
"fieldCondObj",
"Name of the Magnetic Field conditions object key"};
175 #endif // SCT_SURFACECHARGESGENERATOR_H
FloatProperty m_tSurfaceDrift
related to the surface drift
IntegerProperty m_numberOfCharges
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
BooleanProperty m_doTrapping
virtual void setFixedTime(float fixedTime) override
virtual StatusCode finalize() override
AlgTool finalize.
float maxDriftTime(const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
max drift charge equivalent to the detector thickness
float m_distHalfInterStrip
Half way distance inter strip.
std::unique_ptr< InducedChargeModel > m_InducedChargeModel
ServiceHandle< ITHistSvc > m_thistSvc
a smart pointer to a hit that also provides access to the extended timing info of the host event....
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
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
float m_distInterStrip
Inter strip distance normalized to 1.
FloatProperty m_tsubtract
BooleanProperty m_isOverlay
def TProfile(*args, **kwargs)
ToolHandle< ISCT_RadDamageSummaryTool > m_radDamageTool
::StatusCode StatusCode
StatusCode definition for legacy code.
BooleanProperty m_useSiCondDB
TProfile * m_h_velocity_trap
bool m_SurfaceDriftFlag
surface drift ON/OFF
FloatProperty m_smallStepLength
float m_tHalfwayDrift
Surface drift time.
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.
BooleanProperty m_doHistoTrap
virtual StatusCode initialize() override
AlgTool initialize.
TProfile * m_h_mobility_trap
TH1F * m_h_notrap_drift_t
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)
SCT_SurfaceChargesGenerator(const std::string &type, const std::string &name, const IInterface *parent)
constructor
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
BooleanProperty m_doInducedChargeModel
float maxDiffusionSigma(const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
max sigma diffusion
virtual ~SCT_SurfaceChargesGenerator()=default
Destructor.
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
bool chargeIsTrapped(double spess, const InDetDD::SiDetectorElement *element, double &trap_pos, double &drift_time)
float diffusionSigma(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate diffusion sigma from a gaussian dist scattered charge