ATLAS Offline Software
Loading...
Searching...
No Matches
SCT_SiliconConditionsTool Class Reference

Class for conditions data about the SCT silicon Allows one to obtain temperature and bias + depletion voltages These are currenlty static values but in future will be obtained for the DB. More...

#include <SCT_SiliconConditionsTool.h>

Inheritance diagram for SCT_SiliconConditionsTool:
Collaboration diagram for SCT_SiliconConditionsTool:

Public Member Functions

 SCT_SiliconConditionsTool (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor.
virtual ~SCT_SiliconConditionsTool ()=default
 Destructor.
virtual StatusCode initialize () override
 Initialise.
virtual StatusCode finalize () override
 Finalise.
virtual float temperature (const Identifier &elementId, const EventContext &ctx) const override
 Silicon temperature by Identifier.
virtual float biasVoltage (const Identifier &elementId, const EventContext &ctx) const override
 Silicon bias voltage by Identifier.
virtual float depletionVoltage (const Identifier &elementId, const EventContext &ctx) const override
 Silicon depletion voltage by Identifier.
virtual float temperature (const IdentifierHash &elementHash, const EventContext &ctx) const override
 Silicon temperature by IdentifierHash.
virtual float biasVoltage (const IdentifierHash &elementHash, const EventContext &ctx) const override
 Silicon bias voltage by IdentifierHash.
virtual float depletionVoltage (const IdentifierHash &elementHash, const EventContext &ctx) const override
 Silicon depletion voltage by IdentifierHash.

Private Member Functions

bool setConditionsFromGeoModel ()
const SCT_DCSFloatCondDatagetCondDataHV (const EventContext &ctx) const
const SCT_DCSFloatCondDatagetCondDataTemp (const EventContext &ctx) const

Private Attributes

FloatProperty m_defaultTemperature {this, "Temperature", 10., "Default temperature (non-DB)"}
FloatProperty m_defaultBiasVoltage {this, "BiasVoltage", 150., "Default bias voltage (non-DB)"}
FloatProperty m_defaultDepletionVoltage {this, "DepletionVoltage", 70., "Default depletion voltage (non-DB)"}
BooleanProperty m_useDB {this, "UseDB", true, "Whether to used the conditions DB or not"}
BooleanProperty m_checkGeoModel {this, "CheckGeoModel", true}
BooleanProperty m_forceUseGeoModel {this, "ForceUseGeoModel", false}
ServiceHandle< IGeoModelSvcm_geoModelSvc {this, "GeoModelSvc", "GeoModelSvc"}
ServiceHandle< IRDBAccessSvcm_rdbSvc {this, "RDBAccessSvc", "RDBAccessSvc"}
float m_geoModelTemperature
float m_geoModelBiasVoltage
float m_geoModelDepletionVoltage
bool m_useGeoModel {false}
SG::ReadCondHandleKey< SCT_DCSFloatCondDatam_condKeyHV {this, "CondKeyHV", "SCT_SiliconBiasVoltCondData", "SCT silicon bias voltage"}
SG::ReadCondHandleKey< SCT_DCSFloatCondDatam_condKeyTemp {this, "CondKeyTemp", "SCT_SiliconTempCondData", "SCT silicon temperature"}
const SCT_IDm_sct_id {nullptr}

Detailed Description

Class for conditions data about the SCT silicon Allows one to obtain temperature and bias + depletion voltages These are currenlty static values but in future will be obtained for the DB.

Definition at line 36 of file SCT_SiliconConditionsTool.h.

Constructor & Destructor Documentation

◆ SCT_SiliconConditionsTool()

SCT_SiliconConditionsTool::SCT_SiliconConditionsTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor.

Definition at line 15 of file SCT_SiliconConditionsTool.cxx.

15 :
16 base_class(type, name, parent)
17{
18 // These will get overwritten if used but give them some initial value anyway.
22}

◆ ~SCT_SiliconConditionsTool()

virtual SCT_SiliconConditionsTool::~SCT_SiliconConditionsTool ( )
virtualdefault

Destructor.

Member Function Documentation

◆ biasVoltage() [1/2]

float SCT_SiliconConditionsTool::biasVoltage ( const Identifier & elementId,
const EventContext & ctx ) const
overridevirtual

Silicon bias voltage by Identifier.

Definition at line 71 of file SCT_SiliconConditionsTool.cxx.

71 {
72 const IdentifierHash elementHash{m_sct_id->wafer_hash(elementId)};
73 return biasVoltage(elementHash, ctx);
74}
virtual float biasVoltage(const Identifier &elementId, const EventContext &ctx) const override
Silicon bias voltage by Identifier.

◆ biasVoltage() [2/2]

float SCT_SiliconConditionsTool::biasVoltage ( const IdentifierHash & elementHash,
const EventContext & ctx ) const
overridevirtual

Silicon bias voltage by IdentifierHash.

Definition at line 98 of file SCT_SiliconConditionsTool.cxx.

98 {
99
100 if (m_useDB and (not m_useGeoModel)) {
101 const SCT_DCSFloatCondData* data{getCondDataHV(ctx)};
102 if (data==nullptr) return m_defaultBiasVoltage;
104 if (not data->getValue(elementHash, hv)) return m_defaultBiasVoltage;
105 if (hv < 0.) {
106 ATH_MSG_DEBUG("HV: "<< hv <<" < 0 ");
108 }
109 return hv;
110 }
112}
#define ATH_MSG_DEBUG(x)
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
const SCT_DCSFloatCondData * getCondDataHV(const EventContext &ctx) const

◆ depletionVoltage() [1/2]

float SCT_SiliconConditionsTool::depletionVoltage ( const Identifier & elementId,
const EventContext & ctx ) const
overridevirtual

Silicon depletion voltage by Identifier.

Definition at line 77 of file SCT_SiliconConditionsTool.cxx.

77 {
79}

◆ depletionVoltage() [2/2]

float SCT_SiliconConditionsTool::depletionVoltage ( const IdentifierHash & elementHash,
const EventContext & ctx ) const
overridevirtual

Silicon depletion voltage by IdentifierHash.

Definition at line 115 of file SCT_SiliconConditionsTool.cxx.

115 {
117}

◆ finalize()

StatusCode SCT_SiliconConditionsTool::finalize ( )
overridevirtual

Finalise.

Definition at line 59 of file SCT_SiliconConditionsTool.cxx.

59 {
60 ATH_MSG_DEBUG("SCT_SiliconConditionsTool::finalize()");
61 return StatusCode::SUCCESS;
62}

◆ getCondDataHV()

const SCT_DCSFloatCondData * SCT_SiliconConditionsTool::getCondDataHV ( const EventContext & ctx) const
private

Definition at line 163 of file SCT_SiliconConditionsTool.cxx.

163 {
164 SG::ReadCondHandle<SCT_DCSFloatCondData> condData{m_condKeyHV, ctx};
165 if (not condData.isValid()) {
166 ATH_MSG_ERROR("Failed to get " << m_condKeyHV.key());
167 return nullptr;
168 }
169 return *condData;
170}
#define ATH_MSG_ERROR(x)
SG::ReadCondHandleKey< SCT_DCSFloatCondData > m_condKeyHV

◆ getCondDataTemp()

const SCT_DCSFloatCondData * SCT_SiliconConditionsTool::getCondDataTemp ( const EventContext & ctx) const
private

Definition at line 172 of file SCT_SiliconConditionsTool.cxx.

172 {
173 SG::ReadCondHandle<SCT_DCSFloatCondData> condData{m_condKeyTemp, ctx};
174 if (not condData.isValid()) {
175 ATH_MSG_ERROR("Failed to get " << m_condKeyTemp.key());
176 return nullptr;
177 }
178 return *condData;
179}
SG::ReadCondHandleKey< SCT_DCSFloatCondData > m_condKeyTemp

◆ initialize()

StatusCode SCT_SiliconConditionsTool::initialize ( )
overridevirtual

Initialise.

Definition at line 25 of file SCT_SiliconConditionsTool.cxx.

25 {
26 ATH_MSG_DEBUG("SCT_SiliconConditionsTool::initialize()");
27
30 if (m_useGeoModel) {
31 ATH_MSG_INFO("Default conditions come from GeoModel.");
32 } else {
33 ATH_MSG_INFO("GeoModel requests to use Conditions DB.");
34 }
35 }
36
37 ATH_CHECK(m_condKeyHV.initialize((not m_useGeoModel) and m_useDB));
38 ATH_CHECK(m_condKeyTemp.initialize((not m_useGeoModel) and m_useDB));
39
40 if (not m_useGeoModel) {
41 ATH_MSG_INFO("Will use temperature and voltages from this service (not from GeoModel).");
42
43 // Get from Conditions database. Register callback, etc.
44 if (m_useDB) {
45 ATH_CHECK(detStore()->retrieve(m_sct_id, "SCT_ID"));
46
47 ATH_MSG_INFO("SCTDCSSvc retrieved");
48 }
49 } else {
50 // Otherwise we use the GeoModel values
54 }
55 return StatusCode::SUCCESS;
56}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ setConditionsFromGeoModel()

bool SCT_SiliconConditionsTool::setConditionsFromGeoModel ( )
private

Definition at line 120 of file SCT_SiliconConditionsTool.cxx.

121{
122 bool conditionsPresent{false};
123 bool useCondDB{false};
124
125 if (m_rdbSvc.retrieve().isFailure()) {
126 ATH_MSG_ERROR("Could not locate RDBAccessSvc");
127 return false;
128 }
129
130 if (m_geoModelSvc.retrieve().isFailure()) {
131 ATH_MSG_ERROR("Could not locate GeoModelSvc");
132 return false;
133 }
134 DecodeVersionKey versionKey{&*m_geoModelSvc, "SCT"};
135 ATH_MSG_DEBUG("Checking GeoModel Version Tag: "<< versionKey.tag() << " at Node: " << versionKey.node());
136
137 IRDBRecordset_ptr sctConditionsSet{m_rdbSvc->getRecordsetPtr("SctConditions", versionKey.tag(), versionKey.node())};
138 if (sctConditionsSet->size()) {
139 ATH_MSG_DEBUG("Default conditions available from GeoModel.");
140 const IRDBRecord* defaultConditions{(*sctConditionsSet)[0]};
141 m_geoModelTemperature = defaultConditions->getDouble("TEMPERATURE");
142 m_geoModelBiasVoltage = defaultConditions->getDouble("BIASVOLT");
143 m_geoModelDepletionVoltage = defaultConditions->getDouble("DEPLETIONVOLT");
144 conditionsPresent = true;
145 // If m_forceUseGeoModel set then we ignore the USECONDDB column and
146 // keep useCondDB = false
147 if ((not m_forceUseGeoModel) and (not defaultConditions->isFieldNull("USECONDDB"))) { // USECONDDB Not present in old SCT tables
148 useCondDB = (defaultConditions->getInt("USECONDDB"));
149 }
150 } else {
151 ATH_MSG_WARNING("Default conditions NOT available in GeoModel database. Using old GeoModel defaults");
152 // These are pre DC3 geometries. Probably never will be used.
156 conditionsPresent = true;
157 }
158
159 return ((not useCondDB) and conditionsPresent);
160
161}
#define ATH_MSG_WARNING(x)
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
const std::string & tag() const
Return version tag.
const std::string & node() const
Return the version node.
virtual bool isFieldNull(const std::string &fieldName) const =0
Check if the field value is NULL.
virtual int getInt(const std::string &fieldName) const =0
Get int field value.
virtual double getDouble(const std::string &fieldName) const =0
Get double field value.
virtual unsigned int size() const =0
ServiceHandle< IRDBAccessSvc > m_rdbSvc
ServiceHandle< IGeoModelSvc > m_geoModelSvc

◆ temperature() [1/2]

float SCT_SiliconConditionsTool::temperature ( const Identifier & elementId,
const EventContext & ctx ) const
overridevirtual

Silicon temperature by Identifier.

Definition at line 65 of file SCT_SiliconConditionsTool.cxx.

65 {
66 const IdentifierHash elementHash{m_sct_id->wafer_hash(elementId)};
67 return temperature(elementHash, ctx);
68}
virtual float temperature(const Identifier &elementId, const EventContext &ctx) const override
Silicon temperature by Identifier.

◆ temperature() [2/2]

float SCT_SiliconConditionsTool::temperature ( const IdentifierHash & elementHash,
const EventContext & ctx ) const
overridevirtual

Silicon temperature by IdentifierHash.

Definition at line 82 of file SCT_SiliconConditionsTool.cxx.

82 {
83 if (m_useDB and (not m_useGeoModel)) {
84 const SCT_DCSFloatCondData* data{getCondDataTemp(ctx)};
85 if (data==nullptr) return m_defaultTemperature;
87 if (not data->getValue(elementHash, temperature)) return m_defaultTemperature;
88 if (temperature <= -30.){
89 ATH_MSG_DEBUG( "Sensor temperature: "<< temperature <<" < -30 ");
91 }
92 return temperature;
93 }
95}
const SCT_DCSFloatCondData * getCondDataTemp(const EventContext &ctx) const

Member Data Documentation

◆ m_checkGeoModel

BooleanProperty SCT_SiliconConditionsTool::m_checkGeoModel {this, "CheckGeoModel", true}
private

Definition at line 71 of file SCT_SiliconConditionsTool.h.

71{this, "CheckGeoModel", true};

◆ m_condKeyHV

SG::ReadCondHandleKey<SCT_DCSFloatCondData> SCT_SiliconConditionsTool::m_condKeyHV {this, "CondKeyHV", "SCT_SiliconBiasVoltCondData", "SCT silicon bias voltage"}
private

Definition at line 82 of file SCT_SiliconConditionsTool.h.

82{this, "CondKeyHV", "SCT_SiliconBiasVoltCondData", "SCT silicon bias voltage"};

◆ m_condKeyTemp

SG::ReadCondHandleKey<SCT_DCSFloatCondData> SCT_SiliconConditionsTool::m_condKeyTemp {this, "CondKeyTemp", "SCT_SiliconTempCondData", "SCT silicon temperature"}
private

Definition at line 83 of file SCT_SiliconConditionsTool.h.

83{this, "CondKeyTemp", "SCT_SiliconTempCondData", "SCT silicon temperature"};

◆ m_defaultBiasVoltage

FloatProperty SCT_SiliconConditionsTool::m_defaultBiasVoltage {this, "BiasVoltage", 150., "Default bias voltage (non-DB)"}
private

Definition at line 68 of file SCT_SiliconConditionsTool.h.

68{this, "BiasVoltage", 150., "Default bias voltage (non-DB)"};

◆ m_defaultDepletionVoltage

FloatProperty SCT_SiliconConditionsTool::m_defaultDepletionVoltage {this, "DepletionVoltage", 70., "Default depletion voltage (non-DB)"}
private

Definition at line 69 of file SCT_SiliconConditionsTool.h.

69{this, "DepletionVoltage", 70., "Default depletion voltage (non-DB)"};

◆ m_defaultTemperature

FloatProperty SCT_SiliconConditionsTool::m_defaultTemperature {this, "Temperature", 10., "Default temperature (non-DB)"}
private

Definition at line 67 of file SCT_SiliconConditionsTool.h.

67{this, "Temperature", 10., "Default temperature (non-DB)"};

◆ m_forceUseGeoModel

BooleanProperty SCT_SiliconConditionsTool::m_forceUseGeoModel {this, "ForceUseGeoModel", false}
private

Definition at line 72 of file SCT_SiliconConditionsTool.h.

72{this, "ForceUseGeoModel", false};

◆ m_geoModelBiasVoltage

float SCT_SiliconConditionsTool::m_geoModelBiasVoltage
private

Definition at line 78 of file SCT_SiliconConditionsTool.h.

◆ m_geoModelDepletionVoltage

float SCT_SiliconConditionsTool::m_geoModelDepletionVoltage
private

Definition at line 79 of file SCT_SiliconConditionsTool.h.

◆ m_geoModelSvc

ServiceHandle<IGeoModelSvc> SCT_SiliconConditionsTool::m_geoModelSvc {this, "GeoModelSvc", "GeoModelSvc"}
private

Definition at line 74 of file SCT_SiliconConditionsTool.h.

74{this, "GeoModelSvc", "GeoModelSvc"};

◆ m_geoModelTemperature

float SCT_SiliconConditionsTool::m_geoModelTemperature
private

Definition at line 77 of file SCT_SiliconConditionsTool.h.

◆ m_rdbSvc

ServiceHandle<IRDBAccessSvc> SCT_SiliconConditionsTool::m_rdbSvc {this, "RDBAccessSvc", "RDBAccessSvc"}
private

Definition at line 75 of file SCT_SiliconConditionsTool.h.

75{this, "RDBAccessSvc", "RDBAccessSvc"};

◆ m_sct_id

const SCT_ID* SCT_SiliconConditionsTool::m_sct_id {nullptr}
private

Definition at line 85 of file SCT_SiliconConditionsTool.h.

85{nullptr};

◆ m_useDB

BooleanProperty SCT_SiliconConditionsTool::m_useDB {this, "UseDB", true, "Whether to used the conditions DB or not"}
private

Definition at line 70 of file SCT_SiliconConditionsTool.h.

70{this, "UseDB", true, "Whether to used the conditions DB or not"};

◆ m_useGeoModel

bool SCT_SiliconConditionsTool::m_useGeoModel {false}
private

Definition at line 80 of file SCT_SiliconConditionsTool.h.

80{false};

The documentation for this class was generated from the following files: