|  | 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.