|
ATLAS Offline Software
|
Go to the documentation of this file.
12 #ifndef STRIPDIGITIZATION_STRIPSURFACECHARGESGENERATOR_H
13 #define STRIPDIGITIZATION_STRIPSURFACECHARGESGENERATOR_H
31 #include "GaudiKernel/ITHistSvc.h"
32 #include "GaudiKernel/ServiceHandle.h"
33 #include "GaudiKernel/ToolHandle.h"
36 #include "CLHEP/Units/SystemOfUnits.h"
50 class SiDetectorElement;
54 class HepRandomEngine;
85 CLHEP::HepRandomEngine * rndmEngine,
86 const EventContext& ctx)
override;
90 float eventTime,
unsigned short eventID,
91 CLHEP::HepRandomEngine * rndmEngine,
92 const EventContext& ctx)
const;
110 FloatProperty
m_tfix{
this,
"FixedTime", -999.,
"fixed time"};
111 FloatProperty
m_tsubtract{
this,
"SubtractTime", -999.,
"subtract drift time from mid gap"};
113 BooleanProperty
m_useSiCondDB{
this,
"UseSiCondDB",
true,
"Usage of SiConditions DB values can be disabled to use setable ones"};
114 FloatProperty
m_vdepl{
this,
"DepletionVoltage", 70.,
"depletion voltage, default 70V"};
115 FloatProperty
m_vbias{
this,
"BiasVoltage", 150.,
"bias voltage, default 150V"};
116 BooleanProperty
m_doTrapping{
this,
"doTrapping",
false,
"Flag to set Charge Trapping"};
117 BooleanProperty
m_doHistoTrap{
this,
"doHistoTrap",
false,
"Histogram the charge trapping effect"};
118 BooleanProperty
m_doRamo{
this,
"doRamo",
false,
"Ramo Potential for charge trapping effect"};
119 BooleanProperty
m_isOverlay{
this,
"isOverlay",
false,
"flag for overlay"};
123 ToolHandle<ISiPropertiesTool>
m_siPropertiesTool{
this,
"SiPropertiesTool",
"StripSiPropertiesTool",
"Tool to retrieve SCT silicon properties"};
124 ToolHandle<ISCT_RadDamageSummaryTool>
m_radDamageTool{
this,
"RadDamageSummaryTool",
"StripRadDamageSummaryTool",
"Tool to retrieve SCT radiation damages"};
125 ToolHandle<ISiliconConditionsTool>
m_siConditionsTool{
this,
"SiConditionsTool",
"StripSiliconConditionsTool",
"Tool to retrieve SCT silicon information"};
126 ToolHandle<ISiLorentzAngleTool>
m_lorentzAngleTool{
this,
"LorentzAngleTool",
"SiLorentzAngleTool/ITkStripLorentzAngleTool",
"Tool to retreive Lorentz angle"};
131 this,
"AtlasFieldCacheCondObj",
"fieldCondObj",
"Name of the Magnetic Field conditions object key"};
165 std::unique_ptr<Hists>
m_h;
175 #endif // STRIPSURFACECHARGESGENERATOR_H
float m_distHalfInterStrip
Half way distance inter strip.
FloatProperty m_tsubtract
BooleanProperty m_doTrapping
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
BooleanProperty m_doHistoTrap
virtual StatusCode initialize() override
AlgTool initialize.
a smart pointer to a hit that also provides access to the extended timing info of the host event....
BooleanProperty m_doInducedChargeModel
float maxDriftTime(const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
max drift charge equivalent to the detector thickness
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
BooleanProperty m_useSiCondDB
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
virtual ~StripSurfaceChargesGenerator()=default
Destructor.
FloatProperty m_tSurfaceDrift
related to the surface drift
float m_tHalfwayDrift
Surface drift time.
virtual StatusCode finalize() override
AlgTool finalize.
ToolHandle< ISiLorentzAngleTool > m_lorentzAngleTool
TH2F * m_h_drift_electrode
float m_distInterStrip
Inter strip distance normalized to 1.
IntegerProperty m_numberOfCharges
def TProfile(*args, **kwargs)
float maxDiffusionSigma(const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
max sigma diffusion
::StatusCode StatusCode
StatusCode definition for legacy code.
TH1F * m_h_notrap_drift_t
std::unique_ptr< InducedChargeModel > m_InducedChargeModel
TProfile * m_h_velocity_trap
TProfile * m_h_mobility_trap
BooleanProperty m_isOverlay
ServiceHandle< ITHistSvc > m_thistSvc
FloatProperty m_smallStepLength
std::unique_ptr< Hists > m_h
StripSurfaceChargesGenerator(const std::string &type, const std::string &name, const IInterface *parent)
constructor
float diffusionSigma(float zhit, const InDetDD::SiDetectorElement *element, const EventContext &ctx) const
calculate diffusion sigma from a gaussian dist scattered charge
void processSiHit(const InDetDD::SiDetectorElement *element, const SiHit &phit, ISiSurfaceChargesInserter &inserter, float eventTime, unsigned short eventID, CLHEP::HepRandomEngine *rndmEngine, const EventContext &ctx) const
bool m_SurfaceDriftFlag
surface drift ON/OFF
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
ToolHandle< ISiPropertiesTool > m_siPropertiesTool
ToolHandle< ISCT_RadDamageSummaryTool > m_radDamageTool
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
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
StatusCode book(ITHistSvc &histSvc)
virtual void setFixedTime(float fixedTime) override
bool chargeIsTrapped(double spess, const InDetDD::SiDetectorElement *element, double &trap_pos, double &drift_time) const
float surfaceDriftTime(float ysurf) const
Calculate of the surface drift time.