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

Class to provide DCS information about modules from the COOL database. More...

#include <SCT_DCSConditionsTool.h>

Inheritance diagram for SCT_DCSConditionsTool:
Collaboration diagram for SCT_DCSConditionsTool:

Public Member Functions

 SCT_DCSConditionsTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~SCT_DCSConditionsTool ()=default
virtual StatusCode initialize () override
virtual StatusCode finalize () override

Methods to be implemented from virtual baseclass methods, when introduced

BooleanProperty m_readAllDBFolders {this, "ReadAllDBFolders", true}
BooleanProperty m_returnHVTemp {this, "ReturnHVTemp", true}
FloatProperty m_barrel_correction {this, "TempBarrelCorrection", -3.7}
FloatProperty m_ecInner_correction {this, "TempEcInnerCorrection", -13.1}
FloatProperty m_ecOuter_correction {this, "TempEcOuterCorrection", -15.5}
SG::ReadCondHandleKey< SCT_DCSStatCondDatam_condKeyState {this, "CondKeyState", "SCT_DCSStatCondData", "SCT DCS state"}
SG::ReadCondHandleKey< SCT_DCSFloatCondDatam_condKeyHV {this, "CondKeyHV", "SCT_DCSHVCondData", "SCT DCS HV"}
SG::ReadCondHandleKey< SCT_DCSFloatCondDatam_condKeyTemp0 {this, "CondKeyTemp0", "SCT_DCSTemp0CondData", "SCT DCS temperature on side 0"}
const SCT_IDm_pHelper {nullptr}
static const Identifier s_invalidId
static const float s_defaultHV {-30.}
static const float s_defaultTemperature {-40.}
virtual bool canReportAbout (InDetConditions::Hierarchy h) const override
 Return whether this service can report on the hierarchy level (e.g. module, chip...).
virtual Identifier getModuleID (const Identifier &elementId, InDetConditions::Hierarchy h) const
virtual bool isGood (const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override
 Summarise the result from the service as good/bad.
virtual bool isGood (const IdentifierHash &hashId, const EventContext &ctx) const override
 is it good?, using wafer hash
virtual void getDetectorElementStatus (const EventContext &ctx, InDet::SiDetectorElementStatus &element_status, SG::WriteCondHandle< InDet::SiDetectorElementStatus > *whandle) const override
virtual float modHV (const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override
virtual float modHV (const IdentifierHash &hashId, const EventContext &ctx) const override
virtual float hybridTemperature (const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override
virtual float hybridTemperature (const IdentifierHash &hashId, const EventContext &ctx) const override
virtual float sensorTemperature (const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override
virtual float sensorTemperature (const IdentifierHash &hashId, const EventContext &ctx) const override
const SCT_DCSStatCondDatagetCondDataState (const EventContext &ctx) const
const SCT_DCSFloatCondDatagetCondDataHV (const EventContext &ctx) const
const SCT_DCSFloatCondDatagetCondDataTemp0 (const EventContext &ctx) const

Detailed Description

Class to provide DCS information about modules from the COOL database.

Tool that returns DCS info about a module.

Definition at line 40 of file SCT_DCSConditionsTool.h.

Constructor & Destructor Documentation

◆ SCT_DCSConditionsTool()

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

Definition at line 20 of file SCT_DCSConditionsTool.cxx.

20 :
21 base_class(type, name, parent)
22{
23}

◆ ~SCT_DCSConditionsTool()

virtual SCT_DCSConditionsTool::~SCT_DCSConditionsTool ( )
virtualdefault

Member Function Documentation

◆ canReportAbout()

bool SCT_DCSConditionsTool::canReportAbout ( InDetConditions::Hierarchy h) const
overridevirtual

Return whether this service can report on the hierarchy level (e.g. module, chip...).

Definition at line 46 of file SCT_DCSConditionsTool.cxx.

◆ finalize()

StatusCode SCT_DCSConditionsTool::finalize ( )
overridevirtual

Definition at line 41 of file SCT_DCSConditionsTool.cxx.

41 {
42 return StatusCode::SUCCESS;
43}

◆ getCondDataHV()

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

Definition at line 218 of file SCT_DCSConditionsTool.cxx.

218 {
219 SG::ReadCondHandle<SCT_DCSFloatCondData> condData{m_condKeyHV, ctx};
220 return condData.retrieve();
221}
SG::ReadCondHandleKey< SCT_DCSFloatCondData > m_condKeyHV
const_pointer_type retrieve()

◆ getCondDataState()

const SCT_DCSStatCondData * SCT_DCSConditionsTool::getCondDataState ( const EventContext & ctx) const
private

Definition at line 212 of file SCT_DCSConditionsTool.cxx.

212 {
213 SG::ReadCondHandle<SCT_DCSStatCondData> condData{m_condKeyState, ctx};
214 return condData.retrieve();
215}
SG::ReadCondHandleKey< SCT_DCSStatCondData > m_condKeyState

◆ getCondDataTemp0()

const SCT_DCSFloatCondData * SCT_DCSConditionsTool::getCondDataTemp0 ( const EventContext & ctx) const
private

Definition at line 224 of file SCT_DCSConditionsTool.cxx.

224 {
225 SG::ReadCondHandle<SCT_DCSFloatCondData> condData{m_condKeyTemp0, ctx};
226 return condData.retrieve();
227}
SG::ReadCondHandleKey< SCT_DCSFloatCondData > m_condKeyTemp0

◆ getDetectorElementStatus()

void SCT_DCSConditionsTool::getDetectorElementStatus ( const EventContext & ctx,
InDet::SiDetectorElementStatus & element_status,
SG::WriteCondHandle< InDet::SiDetectorElementStatus > * whandle ) const
overridevirtual

Definition at line 89 of file SCT_DCSConditionsTool.cxx.

90 {
92 SG::ReadCondHandle<SCT_DCSStatCondData> condDataHandle{m_condKeyState, ctx};
93 if (not condDataHandle.isValid()) {
94 ATH_MSG_ERROR("Failed to get " << m_condKeyState.key());
95 return;
96 }
97 if (whandle) {
98 whandle->addDependency (condDataHandle);
99 }
100 const SCT_DCSStatCondData* condDataState{ condDataHandle.cptr() };
101 if (condDataState==nullptr) return;
102 std::vector<bool> &status = element_status.getElementStatus();
103 if (status.empty()) {
104 status.resize(m_pHelper->wafer_hash_max(),true);
105 }
106 std::vector<InDet::ChipFlags_t> &chip_status = element_status.getElementChipStatus();
107 constexpr unsigned int N_CHIPS_PER_SIDE = 6;
108 constexpr unsigned int N_SIDES = 2;
109 constexpr InDet::ChipFlags_t all_flags_set = static_cast<InDet::ChipFlags_t>((1ul<<(N_CHIPS_PER_SIDE*N_SIDES)) - 1ul);
110 if (chip_status.empty()) {
111 chip_status.resize(status.size(), all_flags_set);
112 }
113 for ( const std::pair< const CondAttrListCollection::ChanNum, std::vector<std::string> > & dcs_state : condDataState->badChannelsMap() ) {
114 Identifier moduleId{ Identifier32{dcs_state.first} };
115 //find the corresponding hash
116 for (unsigned int side_i=0; side_i<2; ++side_i) {
117 Identifier waferId(m_pHelper->wafer_id(m_pHelper->barrel_ec (moduleId),
118 m_pHelper->layer_disk(moduleId),
119 m_pHelper->phi_module(moduleId),
120 m_pHelper->eta_module(moduleId),
121 side_i) );
122 const IdentifierHash hashId{m_pHelper->wafer_hash(waferId)};
123 status.at(hashId.value() ) = status.at(hashId.value() ) && dcs_state.second.empty();
124 chip_status.at(hashId.value()) = chip_status.at(hashId.value()) & ( dcs_state.second.empty() ? all_flags_set : 0 );
125 }
126 }
127 }
128}
#define ATH_MSG_ERROR(x)
constexpr value_type value() const
const std::vector< bool > & getElementStatus() const
const std::vector< ChipFlags_t > & getElementChipStatus() const
unsigned short ChipFlags_t
BooleanProperty m_readAllDBFolders
const DCSConditions & badChannelsMap() const
const_pointer_type cptr()
void addDependency(const EventIDRange &range)
constexpr unsigned int N_CHIPS_PER_SIDE
constexpr unsigned int N_SIDES
status
Definition merge.py:16

◆ getModuleID()

Identifier SCT_DCSConditionsTool::getModuleID ( const Identifier & elementId,
InDetConditions::Hierarchy h ) const
virtual

Definition at line 51 of file SCT_DCSConditionsTool.cxx.

51 {
52 if (not canReportAbout(h)) return s_invalidId;
53
54 Identifier moduleId;
55
57 moduleId = elementId;
58 } else if (h==InDetConditions::SCT_SIDE) {
59 moduleId = m_pHelper->module_id(elementId);
60 } else if (h==InDetConditions::SCT_STRIP) {
61 Identifier waferId = m_pHelper->wafer_id(elementId);
62 moduleId = m_pHelper->module_id(waferId);
63 }
64 return moduleId;
65}
virtual bool canReportAbout(InDetConditions::Hierarchy h) const override
Return whether this service can report on the hierarchy level (e.g. module, chip.....
static const Identifier s_invalidId

◆ hybridTemperature() [1/2]

float SCT_DCSConditionsTool::hybridTemperature ( const Identifier & elementId,
const EventContext & ctx,
InDetConditions::Hierarchy h = InDetConditions::DEFAULT ) const
overridevirtual

Definition at line 156 of file SCT_DCSConditionsTool.cxx.

156 {
157 Identifier moduleId{getModuleID(elementId, h)};
158 if (not moduleId.is_valid()) return s_defaultTemperature; // not canreportabout
159
160 const SCT_DCSFloatCondData* condDataTemp0{getCondDataTemp0(ctx)};
161 if (condDataTemp0==nullptr) return s_defaultTemperature; // no cond data
162
163 float temperature{s_defaultTemperature};
164 if (condDataTemp0->getValue(castId(moduleId), temperature) and isGood(elementId, ctx, h)) {
165 return temperature;
166 }
167 return s_defaultTemperature;//didn't find the module, return -40.
168}
unsigned int castId(const Identifier &identifier)
bool is_valid() const
Check if id is in a valid state.
static const float s_defaultTemperature
const SCT_DCSFloatCondData * getCondDataTemp0(const EventContext &ctx) const
virtual bool isGood(const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override
Summarise the result from the service as good/bad.
virtual Identifier getModuleID(const Identifier &elementId, InDetConditions::Hierarchy h) const
bool getValue(const CondAttrListCollection::ChanNum &chanNum, float &value) const
Get the float value for a channel.

◆ hybridTemperature() [2/2]

float SCT_DCSConditionsTool::hybridTemperature ( const IdentifierHash & hashId,
const EventContext & ctx ) const
overridevirtual

Definition at line 171 of file SCT_DCSConditionsTool.cxx.

171 {
172 Identifier waferId{m_pHelper->wafer_id(hashId)};
173 Identifier moduleId{m_pHelper->module_id(waferId)};
174 return hybridTemperature(moduleId, ctx, InDetConditions::SCT_MODULE);
175}
virtual float hybridTemperature(const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override

◆ initialize()

StatusCode SCT_DCSConditionsTool::initialize ( )
overridevirtual

Definition at line 25 of file SCT_DCSConditionsTool.cxx.

25 {
26 if (detStore()->retrieve(m_pHelper,"SCT_ID").isFailure()) {
27 ATH_MSG_ERROR("SCT helper failed to retrieve ");
28 return StatusCode::FAILURE;
29 }
30
31 // Read Cond Handle Keys
34
35 const bool useState = (m_readAllDBFolders and m_returnHVTemp) or (not m_readAllDBFolders and not m_returnHVTemp);
36 ATH_CHECK(m_condKeyState.initialize(useState));
37
38 return StatusCode::SUCCESS;
39}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ isGood() [1/2]

bool SCT_DCSConditionsTool::isGood ( const Identifier & elementId,
const EventContext & ctx,
InDetConditions::Hierarchy h = InDetConditions::DEFAULT ) const
overridevirtual

Summarise the result from the service as good/bad.

Definition at line 68 of file SCT_DCSConditionsTool.cxx.

68 {
69 Identifier moduleId{getModuleID(elementId, h)};
70 if (not moduleId.is_valid()) return true; // not canreportabout
71
73 const SCT_DCSStatCondData* condDataState{getCondDataState(ctx)};
74 if (condDataState==nullptr) return false; // no cond data
75 else if (condDataState->output(castId(moduleId))==0) return true; //No params are listed as bad
76 else return false;
77 } else {
78 return true;
79 }
80}
const SCT_DCSStatCondData * getCondDataState(const EventContext &ctx) const
int output(const CondAttrListCollection::ChanNum &chanNum, std::vector< std::string > &usersVector) const
Copy all defects to a users vector, the return value is the size.

◆ isGood() [2/2]

bool SCT_DCSConditionsTool::isGood ( const IdentifierHash & hashId,
const EventContext & ctx ) const
overridevirtual

is it good?, using wafer hash

Definition at line 83 of file SCT_DCSConditionsTool.cxx.

83 {
84 Identifier waferId{m_pHelper->wafer_id(hashId)};
85 Identifier moduleId{m_pHelper->module_id(waferId)};
86 return isGood(moduleId, ctx, InDetConditions::SCT_MODULE);
87}

◆ modHV() [1/2]

float SCT_DCSConditionsTool::modHV ( const Identifier & elementId,
const EventContext & ctx,
InDetConditions::Hierarchy h = InDetConditions::DEFAULT ) const
overridevirtual

Definition at line 134 of file SCT_DCSConditionsTool.cxx.

134 {
135 Identifier moduleId{getModuleID(elementId, h)};
136 if (not moduleId.is_valid()) return s_defaultHV; // not canreportabout, return s_defaultHV(-30)
137
138 const SCT_DCSFloatCondData* condDataHV{getCondDataHV(ctx)};
139 if (condDataHV==nullptr) return s_defaultHV; // no cond data
140
141 float hvval{s_defaultHV};
142 if (condDataHV->getValue(castId(moduleId), hvval) and isGood(elementId, ctx, h)) {
143 return hvval;
144 }
145 return s_defaultHV; //didn't find the module, return s_defaultHV(-30)
146}
static const float s_defaultHV
const SCT_DCSFloatCondData * getCondDataHV(const EventContext &ctx) const

◆ modHV() [2/2]

float SCT_DCSConditionsTool::modHV ( const IdentifierHash & hashId,
const EventContext & ctx ) const
overridevirtual

Definition at line 149 of file SCT_DCSConditionsTool.cxx.

149 {
150 Identifier waferId{m_pHelper->wafer_id(hashId)};
151 Identifier moduleId{m_pHelper->module_id(waferId)};
152 return modHV(moduleId, ctx, InDetConditions::SCT_MODULE);
153}
virtual float modHV(const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override

◆ sensorTemperature() [1/2]

float SCT_DCSConditionsTool::sensorTemperature ( const Identifier & elementId,
const EventContext & ctx,
InDetConditions::Hierarchy h = InDetConditions::DEFAULT ) const
overridevirtual

Definition at line 178 of file SCT_DCSConditionsTool.cxx.

178 {
179 Identifier moduleId{getModuleID(elementId, h)};
180 if (not moduleId.is_valid()) return s_defaultTemperature; // not canreportabout
181
182 const SCT_DCSFloatCondData* condDataTemp0{getCondDataTemp0(ctx)};
183 if (condDataTemp0==nullptr) return s_defaultTemperature; // no cond data
184
185 float temperature{s_defaultTemperature};
186 if (condDataTemp0->getValue(castId(moduleId), temperature) and isGood(elementId, ctx, h)) {
187 int bec{m_pHelper->barrel_ec(moduleId)};
188 if (bec==0) { // Barrel
189 return ( temperature + m_barrel_correction); //return the temp+correction
190 } else { // Endcaps
191 int modeta{m_pHelper->eta_module(moduleId)};
192 if (modeta==2) {
193 return (temperature + m_ecInner_correction); //return the temp+correction
194 } else {
195 return (temperature + m_ecOuter_correction); //return the temp+correction
196 }
197 }
198 }
199 return s_defaultTemperature; //didn't find the module, return s_defaultTemperature(-40).
200}

◆ sensorTemperature() [2/2]

float SCT_DCSConditionsTool::sensorTemperature ( const IdentifierHash & hashId,
const EventContext & ctx ) const
overridevirtual

Definition at line 203 of file SCT_DCSConditionsTool.cxx.

203 {
204 Identifier waferId{m_pHelper->wafer_id(hashId)};
205 Identifier moduleId{m_pHelper->module_id(waferId)};
206 return sensorTemperature(moduleId, ctx, InDetConditions::SCT_MODULE);
207}
virtual float sensorTemperature(const Identifier &elementId, const EventContext &ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const override

Member Data Documentation

◆ m_barrel_correction

FloatProperty SCT_DCSConditionsTool::m_barrel_correction {this, "TempBarrelCorrection", -3.7}
private

Definition at line 78 of file SCT_DCSConditionsTool.h.

78{this, "TempBarrelCorrection", -3.7};

◆ m_condKeyHV

SG::ReadCondHandleKey<SCT_DCSFloatCondData> SCT_DCSConditionsTool::m_condKeyHV {this, "CondKeyHV", "SCT_DCSHVCondData", "SCT DCS HV"}
private

Definition at line 82 of file SCT_DCSConditionsTool.h.

82{this, "CondKeyHV", "SCT_DCSHVCondData", "SCT DCS HV"};

◆ m_condKeyState

SG::ReadCondHandleKey<SCT_DCSStatCondData> SCT_DCSConditionsTool::m_condKeyState {this, "CondKeyState", "SCT_DCSStatCondData", "SCT DCS state"}
private

Definition at line 81 of file SCT_DCSConditionsTool.h.

81{this, "CondKeyState", "SCT_DCSStatCondData", "SCT DCS state"};

◆ m_condKeyTemp0

SG::ReadCondHandleKey<SCT_DCSFloatCondData> SCT_DCSConditionsTool::m_condKeyTemp0 {this, "CondKeyTemp0", "SCT_DCSTemp0CondData", "SCT DCS temperature on side 0"}
private

Definition at line 83 of file SCT_DCSConditionsTool.h.

83{this, "CondKeyTemp0", "SCT_DCSTemp0CondData", "SCT DCS temperature on side 0"};

◆ m_ecInner_correction

FloatProperty SCT_DCSConditionsTool::m_ecInner_correction {this, "TempEcInnerCorrection", -13.1}
private

Definition at line 79 of file SCT_DCSConditionsTool.h.

79{this, "TempEcInnerCorrection", -13.1};

◆ m_ecOuter_correction

FloatProperty SCT_DCSConditionsTool::m_ecOuter_correction {this, "TempEcOuterCorrection", -15.5}
private

Definition at line 80 of file SCT_DCSConditionsTool.h.

80{this, "TempEcOuterCorrection", -15.5};

◆ m_pHelper

const SCT_ID* SCT_DCSConditionsTool::m_pHelper {nullptr}
private

Definition at line 84 of file SCT_DCSConditionsTool.h.

84{nullptr};

◆ m_readAllDBFolders

BooleanProperty SCT_DCSConditionsTool::m_readAllDBFolders {this, "ReadAllDBFolders", true}
private

Definition at line 76 of file SCT_DCSConditionsTool.h.

76{this, "ReadAllDBFolders", true};

◆ m_returnHVTemp

BooleanProperty SCT_DCSConditionsTool::m_returnHVTemp {this, "ReturnHVTemp", true}
private

Definition at line 77 of file SCT_DCSConditionsTool.h.

77{this, "ReturnHVTemp", true};

◆ s_defaultHV

const float SCT_DCSConditionsTool::s_defaultHV {-30.}
staticprivate

Definition at line 17 of file SCT_DCSConditionsTool.h.

◆ s_defaultTemperature

const float SCT_DCSConditionsTool::s_defaultTemperature {-40.}
staticprivate

Definition at line 18 of file SCT_DCSConditionsTool.h.

◆ s_invalidId

const Identifier SCT_DCSConditionsTool::s_invalidId
staticprivate

Definition at line 85 of file SCT_DCSConditionsTool.h.


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