ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_ChargeTrappingTool.h
Go to the documentation of this file.
1// -*- C++ -*-
2
3/*
4 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5*/
6
12
13#ifndef SCT_ChargeTrappingTool_h
14#define SCT_ChargeTrappingTool_h
15
16// Athena includes
19
24
25// Gaudi includes
26#include "GaudiKernel/EventContext.h"
27#include "GaudiKernel/ToolHandle.h"
28
29// STL includes
30#include <atomic>
31#include <string>
32
33//forward declarations
34class IdentifierHash;
35
43
44class SCT_ChargeTrappingTool: public extends<AthAlgTool, ISCT_ChargeTrappingTool>
45{
46 public:
47 SCT_ChargeTrappingTool(const std::string& type, const std::string& name, const IInterface* parent);
48 virtual ~SCT_ChargeTrappingTool() = default;
49 virtual StatusCode initialize() override;
50 virtual StatusCode finalize() override;
51
52 virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const override;
53 virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos) const override;
54 virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2, const EventContext& ctx) const override;
55 virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const override;
56
57 private:
58 SCT_ChargeTrappingCondData calculate(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const;
59 double induced(int istrip, double x, double y) const;
60 static double getPotentialValue(int& ix, int& iy) ;
61 void holeTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const;
62
63 private:
64 // Properties
65 StringProperty m_detectorName{this, "DetectorName", "SCT", "Detector name"};
66 bool m_isSCT{false};
67
68 // Temperature and voltages from job options only used if SiConditionsServices is None or
69 // if value read from database is out of range.
70 DoubleProperty m_temperature{this, "Temperature", -2., "Default temperature in Celcius."};
71 DoubleProperty m_temperatureMin{this, "TemperatureMin", -80., "Minimum temperature allowed in Celcius."};
72 DoubleProperty m_temperatureMax{this, "TemperatureMax", 100., "Maximum temperature allowed in Celcius."};
73 DoubleProperty m_deplVoltage{this, "DepletionVoltage", -30., "Default depletion voltage in Volt."};
74 DoubleProperty m_biasVoltage{this, "BiasVoltage", 150., "Default bias voltage in Volt."};
75
77 mutable std::atomic_bool m_conditionsToolWarning{false};
78
79 // -- Radiation damage specific
80 BooleanProperty m_calcHoles{this, "CalcHoles", true, "Default is to consider holes in signal formation."};
81
82 // -- Fluence: Need to make it layer-dependent
83 DoubleProperty m_fluence{this, "Fluence", 3.0E13, "Fluence received by the detector."};
84 DoubleProperty m_betaElectrons{this, "BetaElectrons", 3.1E-16, "Constant for the trapping model for electrons, in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"};
85 DoubleProperty m_betaHoles{this, "BetaHoles", 5.1E-16, "Constant for the trapping model for holes in [cm^2/ns] -- average value from Table 2 in ATL-INDET-2003-014"};
86
87 double m_PotentialValue[81][115]{{0.}};
88
89 // -- Tool Handle
90 ToolHandle<ISiliconConditionsTool> m_siConditionsTool{this, "SiConditionsTool", "SCT_SiliconConditionsTool", "SCT silicon conditions tool"};
91 ToolHandle<ISCT_ElectricFieldTool> m_electricFieldTool{this, "SCT_ElectricFieldTool", "SCT_ElectricFieldTool", "SCT electric field tool"};
92
93 SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};
94 const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const;
95};
96
97#endif // SCT_ChargeTrappingTool_h
#define y
#define x
This is a "hash" representation of an Identifier.
Class to hold geometrical description of a silicon detector element.
Data object for SCT_ChargeTrappingTool, SCT_RadDamageSummaryTool, SCT_SurfaceChargesGenerator.
ToolHandle< ISiliconConditionsTool > m_siConditionsTool
virtual StatusCode initialize() override
SCT_ChargeTrappingCondData calculate(const IdentifierHash &elementHash, double pos, const EventContext &ctx) const
void holeTransport(double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2) const
ToolHandle< ISCT_ElectricFieldTool > m_electricFieldTool
virtual void getHoleTransport(double &x0, double &y0, double &xfin, double &yfin, double &Q_m2, double &Q_m1, double &Q_00, double &Q_p1, double &Q_p2, const EventContext &ctx) const override
virtual ~SCT_ChargeTrappingTool()=default
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
std::atomic_bool m_conditionsToolWarning
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash &elementHash, double pos, const EventContext &ctx) const override
double induced(int istrip, double x, double y) const
static double getPotentialValue(int &ix, int &iy)
SCT_ChargeTrappingTool(const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode finalize() override
const InDetDD::SiDetectorElement * getDetectorElement(const IdentifierHash &waferHash, const EventContext &ctx) const