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

Condition algorithm to prepare TileDCSState object and put it into condition store. More...

#include <TileDCSCondAlg.h>

Inheritance diagram for TileDCSCondAlg:
Collaboration diagram for TileDCSCondAlg:

Public Member Functions

 TileDCSCondAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~TileDCSCondAlg ()=default
virtual StatusCode initialize () override
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode finalize () override
virtual bool isReEntrant () const override
 Avoid scheduling algorithm multiple times.
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

enum  TileModuleType { LONG_BARREL = 0 , EXTENDED_BARREL = 1 , EXTENDED_BARREL_NO_D4 = 2 , EXTENDED_BARREL_SPECIAL_C10 = 3 }
enum  TileLimits { NUMBER_OF_CHANNELS = 48 , NUMBER_OF_HVSET_CHANNELS = 68 , NUMBER_OF_MODULE_TYPES = 2 , NUMBER_OF_SPECIAL_MODULE_TYPES = 4 }
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

int readConfig (const std::string &fileName, const std::string &subStr, std::vector< std::pair< int, int > > &rosDrawer)
 Read mapping of DB COOL channels into Tile ROS and drawer pairs.
int readBadHV (const std::string &fileName)
 Read special deltas for few unstable PMTs.
StatusCode fillReferenceHV (TileDCSState &dcsState, SG::WriteCondHandle< TileDCSState > &wh, const EventContext &ctx) const
 Store reference HV from Tile CES or Laser DB folder in TileDCSState.
unsigned int getChannelKey (unsigned int ros, unsigned int drawer, unsigned int channel) const
 @ brief Return Tile channel key used as index in internal caches @ ros Tile ROS in range [1..4] @ drawer Tile drawer number in range [0..63] @ channel Tile channel number
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadCondHandleKey< CondAttrListCollectionm_hvKey
 The Tile DCS HV COOL folder name.
SG::ReadCondHandleKey< CondAttrListCollectionm_hvSetKey
 The Tile DCS HVSET COOL folder name.
SG::ReadCondHandleKey< CondAttrListCollectionm_statesKey
 The Tile DCS STATES COOL folder name.
SG::WriteCondHandleKey< TileDCSStatem_dcsStateKey
 The name of TileDCSState object to produce and put into condition store.
SG::ReadCondHandleKey< TileEMScalem_emScaleKey
 The name of TileEMScale object to get reference HV from Cesium or Laser folder.
Gaudi::Property< bool > m_readHV
 Flag to control reading Tile DCS HV folder from DB.
Gaudi::Property< bool > m_readHVSet
 Flag to control reading Tile DCS HVSET folder from DB.
Gaudi::Property< bool > m_readStates
 Flag to control reading Tile DCS STATES folder from DB.
Gaudi::Property< float > m_goodHVLimit
 Tile DCS Status is OK if difference between measured and requested HV is below this limit.
Gaudi::Property< float > m_warningHVLimit
 Mask channels with difference between measured and requested HV above this limit.
Gaudi::Property< int > m_goodDrawer
 Status is OK if Tile DCS drawer states is like this.
Gaudi::Property< std::vector< int > > m_warningDrawer
 Status is WARNING if Tile DCS drawer states is like this.
Gaudi::Property< std::string > m_dcsChHvInCool
 File name with mapping Tile DCS HV DB COOL channels to ROS and drawer.
Gaudi::Property< std::string > m_dcsChHvSetInCool
 File name with mapping Tile DCS HVSET DB COOL channels to ROS and drawer.
Gaudi::Property< std::string > m_dcsChStatesInCool
 File name with mapping Tile DCS STATES DB COOL channels to ROS and drawer.
ServiceHandle< TileCablingSvcm_cablingSvc
 Name of Tile cabling service.
const TileCablingServicem_cabling {}
std::vector< std::pair< int, int > > m_rosDrawerHV
std::vector< std::pair< int, int > > m_rosDrawerHVSet
std::vector< std::pair< int, int > > m_rosDrawerStates
std::map< int, std::pair< float, float > > m_knownBadHV
int m_channel2pmt [2][NUMBER_OF_HVSET_CHANNELS] = {}
int m_pmt2channel [2][NUMBER_OF_HVSET_CHANNELS] = {}
bool m_isChannelUsed [4][NUMBER_OF_CHANNELS] = {}
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Condition algorithm to prepare TileDCSState object and put it into condition store.

This condition algorithm reads information from Tile DCS DB. Reference HV can be get from Tile calibration Cesium or Laser DB folder (by default) instead of from Tile DCS DB. In this case reference HV is used from Laser folder if it is not negative otherwise reference HV is used from Cesium folder. Using this information the algorithm prepares TileDCSState condition object and put it into condition store.

Definition at line 33 of file TileDCSCondAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ TileLimits

Enumerator
NUMBER_OF_CHANNELS 
NUMBER_OF_HVSET_CHANNELS 
NUMBER_OF_MODULE_TYPES 
NUMBER_OF_SPECIAL_MODULE_TYPES 

Definition at line 51 of file TileDCSCondAlg.h.

51 {
54 NUMBER_OF_MODULE_TYPES = 2, // LB, EB
55 NUMBER_OF_SPECIAL_MODULE_TYPES = 4 // // LB, EB, EB without D4, EB with special C10
56 };

◆ TileModuleType

Enumerator
LONG_BARREL 
EXTENDED_BARREL 
EXTENDED_BARREL_NO_D4 
EXTENDED_BARREL_SPECIAL_C10 

Definition at line 45 of file TileDCSCondAlg.h.

45 {LONG_BARREL = 0, // LB
46 EXTENDED_BARREL = 1, // EB
47 EXTENDED_BARREL_NO_D4 = 2, // EB without D4: EBA15, EBC18
48 EXTENDED_BARREL_SPECIAL_C10 = 3 // EB with special C10
49 };

Constructor & Destructor Documentation

◆ TileDCSCondAlg()

TileDCSCondAlg::TileDCSCondAlg ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 22 of file TileDCSCondAlg.cxx.

22 :
23 AthCondAlgorithm(name, pSvcLocator),
24 m_cabling(nullptr)
25{
26
27}
const TileCablingService * m_cabling

◆ ~TileDCSCondAlg()

virtual TileDCSCondAlg::~TileDCSCondAlg ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode TileDCSCondAlg::execute ( const EventContext & ctx) const
overridevirtual

Definition at line 111 of file TileDCSCondAlg.cxx.

111 {
112
113 SG::WriteCondHandle<TileDCSState> dcsState{m_dcsStateKey, ctx};
114
115 if (dcsState.isValid()) {
116 ATH_MSG_DEBUG("Found valid TileDCSState: " << dcsState.key());
117 return StatusCode::SUCCESS;
118 }
119
120 std::unique_ptr<TileDCSState> dcsStateData = std::make_unique<TileDCSState>();
121 dcsStateData->setGoodDrawer(m_goodDrawer.value());
122 dcsStateData->setWarningDrawer(m_warningDrawer.value());
123
124 if (m_readHV) {
125
126 SG::ReadCondHandle<CondAttrListCollection> hv(m_hvKey, ctx);
127 dcsState.addDependency(hv);
128 for (const CondAttrListCollection::ChanAttrListPair& chanAttrListPair : **hv) {
129
130 const CondAttrListCollection::ChanNum coolChannel = chanAttrListPair.first;
131
132 const std::pair<int, int> rosDrawerPair = m_rosDrawerHV.at(coolChannel);
133 unsigned int ros = rosDrawerPair.first;
134 unsigned int drawer = rosDrawerPair.second;
135
136 ATH_MSG_VERBOSE( "ros: " << ros
137 << ", drawer: " << drawer
138 << ", COOL channel: " << coolChannel
139 << ", payload: " << chanAttrListPair.second);
140
141 int moduleType = (ros > 2) ? EXTENDED_BARREL : LONG_BARREL;
142 int pmt0 = 0; // runs over paylod parameters
143 for (const coral::Attribute& attribute : chanAttrListPair.second) {
144 int channel = m_pmt2channel[moduleType][pmt0];
145 dcsStateData->setChannelHV(ros, drawer, channel, attribute.data<float>());
146 ATH_MSG_VERBOSE( "HV[" << pmt0 << "] = " << attribute.data<float>() );
147 ++pmt0;
148 }
149
150 }
151 }
152
153
154 if (m_readHVSet) {
155
156 SG::ReadCondHandle<CondAttrListCollection> hvSet(m_hvSetKey, ctx);
157 dcsState.addDependency(hvSet);
158 for (const CondAttrListCollection::ChanAttrListPair& chanAttrListPair : **hvSet) {
159
160 const CondAttrListCollection::ChanNum coolChannel = chanAttrListPair.first;
161
162 const std::pair<int, int> rosDrawerPair = m_rosDrawerHVSet.at(coolChannel);
163 unsigned int ros = rosDrawerPair.first;
164 unsigned int drawer = rosDrawerPair.second;
165
166 ATH_MSG_VERBOSE( "ros: " << ros
167 << ", drawer: " << drawer
168 << ", COOL channel: " << coolChannel
169 << ", payload: " << chanAttrListPair.second);
170
171 int moduleType = (ros > 2) ? EXTENDED_BARREL : LONG_BARREL;
172 int pmt0 = 0; // runs over paylod parameters
173 for (const coral::Attribute& attribute : chanAttrListPair.second) {
174 int channel = m_pmt2channel[moduleType][pmt0];
175 dcsStateData->setChannelHVSet(ros, drawer, channel, attribute.data<float>());
176 ATH_MSG_VERBOSE( "HVSET[" << pmt0 << "] = " << attribute.data<float>() );
177 ++pmt0;
178 }
179
180 }
181 } else {
182 ATH_CHECK( fillReferenceHV(*dcsStateData, dcsState, ctx) );
183
184 }
185
186
187 if (m_readStates) {
188
189 SG::ReadCondHandle<CondAttrListCollection> states(m_statesKey, ctx);
190 dcsState.addDependency(states);
191 for (const CondAttrListCollection::ChanAttrListPair& chanAttrListPair : **states) {
192
193 CondAttrListCollection::ChanNum coolChannel = chanAttrListPair.first;
194
195 std::pair<int, int> rosDrawerPair = m_rosDrawerStates.at(coolChannel);
196 unsigned int ros = rosDrawerPair.first;
197 unsigned int drawer = rosDrawerPair.second;
198
199 ATH_MSG_VERBOSE( "ros: " << ros
200 << ", drawer: " << drawer
201 << ", COOL channel: " << coolChannel
202 << ", payload: " << chanAttrListPair.second);
203
204 for (const coral::Attribute& attribute : chanAttrListPair.second) {
205 dcsStateData->setDrawerStates(ros, drawer, attribute.data<int>());
206 ATH_MSG_VERBOSE( "STATES = " << attribute.data<int>() );
207 }
208
209 }
210 }
211
212
213 for (unsigned int ros = 1; ros < TileCalibUtils::MAX_ROS; ++ros) {
214 for (unsigned int drawer = 0; drawer < TileCalibUtils::MAX_DRAWER; ++drawer) {
215
216 TileDCSState::TileDCSStatus drawerStatus = dcsStateData->getDCSStatus(ros, drawer);
217
218 int moduleType = (ros > 2) ? EXTENDED_BARREL : LONG_BARREL;
219 int specialModuleType(moduleType);
220 if (moduleType == EXTENDED_BARREL) {
221 if ((ros == 3 && drawer == 14) || (ros == 4 && drawer == 17)) {
222 specialModuleType = EXTENDED_BARREL_NO_D4; // EBA15 EBC18
223 } else if (!m_cabling->C10_connected(drawer)) {
224 specialModuleType = EXTENDED_BARREL_SPECIAL_C10; // EB modules with special C10
225 }
226 }
227
228 for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
229 if (m_isChannelUsed[specialModuleType][channel]) {
230
232
233 float hvSet(dcsStateData->getChannelHVSet(ros, drawer, channel));
234 float hv(dcsStateData->getChannelHV(ros, drawer, channel));
235
236 // ignore zero "set" and negative "measured" HV, set status to unknown
237 if (hvSet >= 1.0 && hv >= 0.0 // HV can't be negative
238 && hvSet < 999.9 && hv < 999.9) { // HV can't be greater 930V
239
240 std::map<int, std::pair<float, float>>::const_iterator itr =
241 m_knownBadHV.find(getChannelKey(ros, drawer, channel));
242
243 if (itr != m_knownBadHV.end()) { // known unstable PMTs
244
245 float hvGap = (m_readHVSet) ? // take into account offset if HVSET is used
246 std::fabs(hvSet + itr->second.second - hv) : std::fabs(hvSet - hv);
247
248 if (hvGap <= m_goodHVLimit) channelHVStatus = TileDCSState::OK_KNOWNBADPMT;
249 else if (hvGap <= m_warningHVLimit) channelHVStatus = TileDCSState::WARNING_KNOWNBADPMT;
250 else channelHVStatus = TileDCSState::ALERT_KNOWNBADPMT;
251 } else {
252 float hvGap = std::fabs(hvSet - hv);
253 if (hvGap <= m_goodHVLimit) channelHVStatus = TileDCSState::OK;
254 else if (hvGap <= m_warningHVLimit) channelHVStatus = TileDCSState::WARNING;
255 else channelHVStatus = TileDCSState::ALERT;
256 }
257
258 }
259
260 dcsStateData->setDCSHVStatus(ros, drawer, channel, channelHVStatus);
261
262 if (drawerStatus > TileDCSState::OK && !m_readHVSet) {
263 dcsStateData->setDCSStatus(ros, drawer, channel, drawerStatus);
264 } else {
265 dcsStateData->setDCSStatus(ros, drawer, channel, std::max(drawerStatus, channelHVStatus));
266 }
267
268 } else {
269 dcsStateData->setDCSHVStatus(ros, drawer, channel, TileDCSState::NON_EXISTING);
270 dcsStateData->setDCSStatus(ros, drawer, channel, TileDCSState::NON_EXISTING);
271 }
272 }
273
274
275 if (msgLvl(MSG::VERBOSE)) {
276 msg(MSG::VERBOSE) << "Module = " << TileCalibUtils::getDrawerString(ros, drawer)
277 << " Status = " << drawerStatus << endmsg;
278
279 std::string ignored = ((drawerStatus > TileDCSState::OK && !m_readHVSet) ? " ignored" : "");
280
281 for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
282 int pmt0 = m_channel2pmt[moduleType][channel];
283 TileDCSState::TileDCSStatus status = dcsStateData->getDCSHVStatus(ros, drawer, channel);
284 msg(MSG::VERBOSE) << "Module = " << TileCalibUtils::getDrawerString(ros, drawer)
285 << " channel = " << channel
286 << " pmt = " << pmt0 + 1
287 << " HV = " << dcsStateData->getChannelHV(ros, drawer, channel)
288 << " HVSET = " << dcsStateData->getChannelHVSet(ros, drawer, channel)
289 << " Status = " << status
290 << ignored << endmsg;
291 }
292 }
293
294 }
295 }
296
297 // Define validity of the output cond object
298 if(dcsState.record(std::move(dcsStateData)).isFailure()) {
299
300 ATH_MSG_ERROR("Could not record TileDCSState object with "
301 << dcsState.key()
302 << " with EventRange " << dcsState.getRange()
303 << " into Conditions Store");
304
305 return StatusCode::FAILURE;
306 } else {
307
308 ATH_MSG_VERBOSE("Recorded TileDCSState object with "
309 << dcsState.key()
310 << " with EventRange " << dcsState.getRange()
311 << " into Conditions Store");
312 }
313
314 return StatusCode::SUCCESS;
315
316}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
bool msgLvl(const MSG::Level lvl) const
ChanAttrListMap::value_type ChanAttrListPair
const std::string & key() const
void addDependency(const EventIDRange &range)
const EventIDRange & getRange() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED
static const unsigned int MAX_ROS
Number of ROSs.
static std::string getDrawerString(unsigned int ros, unsigned int drawer)
Return the drawer name, e.g.
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
static const unsigned int MAX_CHAN
Number of channels in drawer.
unsigned int getChannelKey(unsigned int ros, unsigned int drawer, unsigned int channel) const
@ brief Return Tile channel key used as index in internal caches @ ros Tile ROS in range [1....
bool m_isChannelUsed[4][NUMBER_OF_CHANNELS]
std::map< int, std::pair< float, float > > m_knownBadHV
SG::WriteCondHandleKey< TileDCSState > m_dcsStateKey
The name of TileDCSState object to produce and put into condition store.
std::vector< std::pair< int, int > > m_rosDrawerHV
int m_pmt2channel[2][NUMBER_OF_HVSET_CHANNELS]
Gaudi::Property< float > m_goodHVLimit
Tile DCS Status is OK if difference between measured and requested HV is below this limit.
Gaudi::Property< bool > m_readHVSet
Flag to control reading Tile DCS HVSET folder from DB.
std::vector< std::pair< int, int > > m_rosDrawerStates
Gaudi::Property< float > m_warningHVLimit
Mask channels with difference between measured and requested HV above this limit.
SG::ReadCondHandleKey< CondAttrListCollection > m_hvSetKey
The Tile DCS HVSET COOL folder name.
Gaudi::Property< std::vector< int > > m_warningDrawer
Status is WARNING if Tile DCS drawer states is like this.
Gaudi::Property< int > m_goodDrawer
Status is OK if Tile DCS drawer states is like this.
SG::ReadCondHandleKey< CondAttrListCollection > m_hvKey
The Tile DCS HV COOL folder name.
int m_channel2pmt[2][NUMBER_OF_HVSET_CHANNELS]
Gaudi::Property< bool > m_readHV
Flag to control reading Tile DCS HV folder from DB.
SG::ReadCondHandleKey< CondAttrListCollection > m_statesKey
The Tile DCS STATES COOL folder name.
std::vector< std::pair< int, int > > m_rosDrawerHVSet
Gaudi::Property< bool > m_readStates
Flag to control reading Tile DCS STATES folder from DB.
StatusCode fillReferenceHV(TileDCSState &dcsState, SG::WriteCondHandle< TileDCSState > &wh, const EventContext &ctx) const
Store reference HV from Tile CES or Laser DB folder in TileDCSState.
TileDCSStatus
Describes Tile DCS status.
status
Definition merge.py:16

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}
An algorithm that can be simultaneously executed in multiple threads.

◆ fillReferenceHV()

StatusCode TileDCSCondAlg::fillReferenceHV ( TileDCSState & dcsState,
SG::WriteCondHandle< TileDCSState > & wh,
const EventContext & ctx ) const
private

Store reference HV from Tile CES or Laser DB folder in TileDCSState.

Parameters
[out]dcsStateTileDCSState to store reference HV
[out]eventRangeEvent range within which reference HV is valid

Definition at line 481 of file TileDCSCondAlg.cxx.

483 {
484
485 SG::ReadCondHandle<TileEMScale> emScale(m_emScaleKey, ctx);
486 wh.addDependency(emScale);
487
488 float laserReferenceHV = -5.;
489 float cesReferenceHV = -5.;
490
491 for (unsigned int ros = 1; ros < TileCalibUtils::MAX_ROS; ++ros) {
492 int moduleType = (ros > 2) ? EXTENDED_BARREL : LONG_BARREL;
493
494 for (unsigned int drawer = 0; drawer < TileCalibUtils::MAX_DRAWER; ++drawer) {
495 unsigned int drawerIdx = TileCalibUtils::getDrawerIdx(ros, drawer);
496
497 for (unsigned int channel = 0; channel < TileCalibUtils::MAX_CHAN; ++channel) {
498 int pmt0 = m_channel2pmt[moduleType][channel];
499
500 cesReferenceHV = emScale->getCesiumReferenceHV(drawerIdx, channel);
501 laserReferenceHV = emScale->getLaserReferenceHV(drawerIdx, channel);
502
503 if (laserReferenceHV >= 0.) {
504 dcsState.setChannelHVSet(ros, drawer, channel, laserReferenceHV);
505 } else {
506 dcsState.setChannelHVSet(ros, drawer, channel, cesReferenceHV);
507 }
508
509 if (msgLvl(MSG::VERBOSE)) {
510 msg(MSG::VERBOSE) << "Module = " << TileCalibUtils::getDrawerString(ros, drawer)
511 << " channel = " << channel
512 << " pmt = " << pmt0 + 1
513 << " HVref = " << dcsState.getChannelHVSet(ros, drawer, channel);
514
515 if (laserReferenceHV >= 0.) {
516 msg(MSG::VERBOSE) << " Taken from Laser run (replace "
517 << cesReferenceHV << " cesium value)" << endmsg;
518 } else {
519 msg(MSG::VERBOSE) << endmsg;
520 }
521 }
522 }
523 }
524 }
525
526 return StatusCode::SUCCESS;
527}
static unsigned int getDrawerIdx(unsigned int ros, unsigned int drawer)
Returns a drawer hash.
SG::ReadCondHandleKey< TileEMScale > m_emScaleKey
The name of TileEMScale object to get reference HV from Cesium or Laser folder.
float getChannelHVSet(unsigned int ros, unsigned int drawer, unsigned int channel) const
Return requested HV reported by DCS for given Tile channel.
void setChannelHVSet(unsigned int ros, unsigned int drawer, unsigned int channel, float hvSet)
Store requested HV reported by DCS for given Tile channel.
str wh
Definition parseDir.py:45

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode TileDCSCondAlg::finalize ( )
overridevirtual

Definition at line 530 of file TileDCSCondAlg.cxx.

530 {
531 return StatusCode::SUCCESS;
532}

◆ getChannelKey()

unsigned int TileDCSCondAlg::getChannelKey ( unsigned int ros,
unsigned int drawer,
unsigned int channel ) const
inlineprivate

@ brief Return Tile channel key used as index in internal caches @ ros Tile ROS in range [1..4] @ drawer Tile drawer number in range [0..63] @ channel Tile channel number

Definition at line 214 of file TileDCSCondAlg.h.

214 {
215 return ( ((((ros - 1) << 6) | drawer) << 6) | channel );
216}

◆ initialize()

StatusCode TileDCSCondAlg::initialize ( )
overridevirtual

Definition at line 30 of file TileDCSCondAlg.cxx.

30 {
31
32 ATH_MSG_DEBUG( "In initialize()" );
33
34 ATH_CHECK( m_hvKey.initialize(m_readHV) );
35
36 ATH_CHECK( m_hvSetKey.initialize(m_readHVSet) );
37 ATH_CHECK( m_emScaleKey.initialize(!m_readHVSet) );
38
39 ATH_CHECK( m_statesKey.initialize(m_readStates) );
40
41
42 ATH_MSG_INFO( "Will read the following folders: "
43 << ((m_readHV) ? m_hvKey.key() : "") << " "
44 << ((m_readHVSet) ? m_hvSetKey.key() : "") << " "
45 << ((m_readStates) ? m_statesKey.key() : ""));
46
47 //=== get TileCablingSvc
48 ATH_CHECK( m_cablingSvc.retrieve() );
49
50 //=== cache pointers to cabling helpers
51 m_cabling = m_cablingSvc->cablingService();
52
53 if (!m_cabling) {
54 ATH_MSG_ERROR( "Pointer to TileCablingService is zero: " << m_cabling);
55 return StatusCode::FAILURE;
56 }
57
58 std::map<TileModuleType, unsigned int> roses{{LONG_BARREL, 2}, {EXTENDED_BARREL, 3}};
59
60 for (TileModuleType moduleType : {LONG_BARREL, EXTENDED_BARREL}) {
61
62 unsigned int ros = roses[moduleType];
63 unsigned int channel = 0;
64
66 int pmt = m_cabling->channel2hole(ros, channel);
67 m_isChannelUsed[moduleType][channel] = (pmt > 0); // positive pmt - means channel is connected
68
69 if (moduleType == EXTENDED_BARREL) {
72 }
73
74 pmt = std::abs(pmt);
75 m_channel2pmt[moduleType][channel] = pmt - 1;
76 m_pmt2channel[moduleType][pmt - 1] = channel; // note - pmt-1 is used as index
77 }
78
79 for (; channel < 68; ++channel) {
80 m_channel2pmt[moduleType][channel] = channel;
81 m_pmt2channel[moduleType][channel] = channel;
82 }
83
84 }
85
86 // description of EBA15 and EBC18 channel 0-3 do not exist, channel 18,19 used
93 // description of EB with special C10 - channel 4 (pmt 5) is not used
95
96 if (m_readHVSet) {
97 // read special deltas for few unstable PMTs
98 readBadHV("BadHVChannels.dat");
99 if (readConfig(m_dcsChHvSetInCool, "Drawer", m_rosDrawerHVSet)) return StatusCode::FAILURE;
100 }
101
102 if (readConfig(m_dcsChStatesInCool, "_LVPS_", m_rosDrawerStates)) return StatusCode::FAILURE;
103 if (readConfig(m_dcsChHvInCool, "Drawer", m_rosDrawerHV)) return StatusCode::FAILURE;
104
105 ATH_CHECK( m_dcsStateKey.initialize() );
106
107 return StatusCode::SUCCESS;
108}
#define ATH_MSG_INFO(x)
Gaudi::Property< std::string > m_dcsChHvInCool
File name with mapping Tile DCS HV DB COOL channels to ROS and drawer.
Gaudi::Property< std::string > m_dcsChHvSetInCool
File name with mapping Tile DCS HVSET DB COOL channels to ROS and drawer.
int readBadHV(const std::string &fileName)
Read special deltas for few unstable PMTs.
Gaudi::Property< std::string > m_dcsChStatesInCool
File name with mapping Tile DCS STATES DB COOL channels to ROS and drawer.
ServiceHandle< TileCablingSvc > m_cablingSvc
Name of Tile cabling service.
int readConfig(const std::string &fileName, const std::string &subStr, std::vector< std::pair< int, int > > &rosDrawer)
Read mapping of DB COOL channels into Tile ROS and drawer pairs.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

◆ isReEntrant()

virtual bool AthCondAlgorithm::isReEntrant ( ) const
inlineoverridevirtualinherited

Avoid scheduling algorithm multiple times.

With multiple concurrent events, conditions objects often expire simultaneously for all slots. To avoid that the scheduler runs the CondAlg in each slot, we declare it as "non-reentrant". This ensures that the conditions objects are only created once.

In case a particular CondAlg should behave differently, it can override this method again and return true.

See also
ATEAM-836

Definition at line 39 of file AthCondAlgorithm.h.

39{ return false; }

◆ msg()

MsgStream & AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ readBadHV()

int TileDCSCondAlg::readBadHV ( const std::string & fileName)
private

Read special deltas for few unstable PMTs.

Parameters
fileNamename of file with special deltas for few unstable PMTs
Returns
0 in the case of success

Definition at line 387 of file TileDCSCondAlg.cxx.

387 {
388
389 std::string fullFileName = PathResolver::find_file(fileName, "DATAPATH");
390 std::ifstream file(fullFileName.c_str());
391 if (!file.is_open()) {
392 ATH_MSG_WARNING( "Can't find " << fileName);
393 return 1;
394 } else {
395 ATH_MSG_DEBUG("Reading file " << fullFileName);
396 }
397
398 std::string partName[5] = { "AUX", "LBA", "LBC", "EBA", "EBC" };
399
400 unsigned int ros, module, pmt;
401 float delta, offset;
402 char ll[256];
403 std::string line;
404 size_t pos = 0;
405
406 while (true) {
407
408 file.getline(ll, sizeof(ll));
409
410 if (file.eof() || file.fail()) break;
411
412 line = std::string(ll);
413
414 for (ros = 1; ros < TileCalibUtils::MAX_ROS; ++ros) {
415 pos = line.find(partName[ros]);
416 if (pos != std::string::npos) break;
417 }
418 if (ros == TileCalibUtils::MAX_ROS) {
419 ATH_MSG_WARNING( "File " << fileName << " Partition name not found in " << line);
420 continue;
421 }
422
423 module = atoi(&line[pos + 3]);
424 if (module < 1 || module > TileCalibUtils::MAX_DRAWER) {
425 ATH_MSG_WARNING( "File " << fileName << " Wrong module number in " << line);
426 continue;
427 }
428
429 pos = line.find("PMT number");
430 if (pos == std::string::npos) {
431 ATH_MSG_WARNING( "File " << fileName << " Word 'PMT number' not found in " << line);
432 continue;
433 }
434
435 pmt = atoi(&line[pos + 10]);
436 if (pmt < 1 || pmt > TileCalibUtils::MAX_CHAN) {
437 ATH_MSG_WARNING( "File " << fileName << " Wrong pmt number in " << line);
438 continue;
439 }
440
441 pos = line.find("Step Value is");
442 if (pos == std::string::npos) {
443 ATH_MSG_WARNING( "File " << fileName << " Word 'Step Value is' not found in " << line);
444 continue;
445 }
446
447 delta = atof(&line[pos + 13]);
448 if (delta <= 0.0 || delta > 1000.0) {
449 ATH_MSG_WARNING( "File " << fileName << " Wrong delta number in " << line);
450 continue;
451 }
452
453 pos = line.find("Offset is:");
454 if (pos == std::string::npos) {
455 ATH_MSG_WARNING( "File " << fileName << " Word 'Offset is:' not found in " << line);
456 continue;
457 }
458
459 offset = atof(&line[pos + 10]);
460 if (offset < -1000.0 || offset > 1000.0) {
461 ATH_MSG_WARNING( "File " << fileName << " Wrong offset number in " << line);
462 continue;
463 }
464
465 ATH_MSG_WARNING( "Module = " << TileCalibUtils::getDrawerString(ros, module - 1)
466 << " pmt = " << pmt
467 << " delta = " << delta
468 << " offset = " << offset);
469
470 int moduleType = (ros > 2) ? EXTENDED_BARREL : LONG_BARREL;
471 int channel = m_pmt2channel[moduleType][pmt - 1];
472 m_knownBadHV[getChannelKey(ros, module - 1, channel)] = std::make_pair(delta, offset);
473
474 }
475
476 file.close();
477
478 return 0;
479}
#define ATH_MSG_WARNING(x)
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
double atof(std::string_view str)
Converts a string into a double / float.
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
long long ll
TFile * file

◆ readConfig()

int TileDCSCondAlg::readConfig ( const std::string & fileName,
const std::string & subStr,
std::vector< std::pair< int, int > > & rosDrawer )
private

Read mapping of DB COOL channels into Tile ROS and drawer pairs.

Parameters
fileNamename of file with mapping of COOL channels to Tile ROS and drawer pairs
subStrsub string to look for
[out]rosDrawervector of Tile ROS and drawer pairs indexed by COOL channel
Returns
0 in the case of success

Definition at line 321 of file TileDCSCondAlg.cxx.

323 {
324
325 std::string fullFileName = PathResolver::find_file(fileName, "DATAPATH");
326 std::ifstream file(fullFileName.c_str());
327 if (!file.is_open()) {
328 ATH_MSG_ERROR( "Can't find " << fileName);
329 return 2;
330 } else {
331 ATH_MSG_DEBUG( "Reading file " << fullFileName);
332 }
333
334 rosDrawer.resize(257, std::make_pair<int, int>(0xFFFF, 0xFFFF));
335
336 std::string compName[5] = { "XXX", "ATLTILLV01", "ATLTILLV02", "ATLTILLV00", "ATLTILLV03" };
337
338 unsigned int ind, ros, module;
339 std::string s, line;
340 size_t pos;
341
342 while (true) {
343
344 file >> s >> ind >> line;
345
346 if (file.eof() || file.fail()) break;
347 if (ind > 1000000) break;
348
349 for (ros = 1; ros < TileCalibUtils::MAX_ROS; ++ros) {
350 pos = line.find(compName[ros]);
351 if (pos != std::string::npos) break;
352 }
353
354 if (ros == TileCalibUtils::MAX_ROS) {
355 msg(MSG::WARNING) << "File " << fileName << " Wrong computer name in " << line << endmsg;
356 continue;
357 }
358
359 pos = line.find(subStr);
360 if (pos == std::string::npos) {
361 ATH_MSG_WARNING( "File " << fileName << " Word " << subStr << " not found in " << line);
362 continue;
363 }
364
365 module = atoi(&line[pos + subStr.size()]);
366 if (module < 1 || module > TileCalibUtils::MAX_DRAWER) {
367 ATH_MSG_WARNING( "File " << fileName << " Wrong module number in " << line);
368 continue;
369 }
370
371 ATH_MSG_VERBOSE("Module = " << TileCalibUtils::getDrawerString(ros, module - 1) << " ind = " << ind);
372
373 if (rosDrawer.size() <= ind) {
374 rosDrawer.resize(ind + 1, std::make_pair<int, int> (0xFFFF, 0xFFFF));
375 }
376
377 rosDrawer[ind] = std::make_pair<int, int>(ros, (module - 1));
378
379 }
380
381 file.close();
382
383 return 0;
384}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in HypoBase, and InputMakerBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_cabling

const TileCablingService* TileDCSCondAlg::m_cabling {}
private

Definition at line 197 of file TileDCSCondAlg.h.

197{};

◆ m_cablingSvc

ServiceHandle<TileCablingSvc> TileDCSCondAlg::m_cablingSvc
private
Initial value:
{ this,
"TileCablingSvc", "TileCablingSvc", "The Tile cabling service" }

Name of Tile cabling service.

Definition at line 194 of file TileDCSCondAlg.h.

194 { this,
195 "TileCablingSvc", "TileCablingSvc", "The Tile cabling service" };

◆ m_channel2pmt

int TileDCSCondAlg::m_channel2pmt[2][NUMBER_OF_HVSET_CHANNELS] = {}
private

Definition at line 205 of file TileDCSCondAlg.h.

205{};

◆ m_dcsChHvInCool

Gaudi::Property<std::string> TileDCSCondAlg::m_dcsChHvInCool
private
Initial value:
{this,
"DCSChHVInCOOL", "DCSChHVInCOOL.dat",
"File name with mapping Tile DCS HV DB COOL channels to ROS and drawer"}

File name with mapping Tile DCS HV DB COOL channels to ROS and drawer.

Definition at line 173 of file TileDCSCondAlg.h.

173 {this,
174 "DCSChHVInCOOL", "DCSChHVInCOOL.dat",
175 "File name with mapping Tile DCS HV DB COOL channels to ROS and drawer"};

◆ m_dcsChHvSetInCool

Gaudi::Property<std::string> TileDCSCondAlg::m_dcsChHvSetInCool
private
Initial value:
{this,
"DCSChHVSETInCOOL", "DCSChHVSETInCOOL.dat",
"File name with mapping Tile DCS HVSET DB COOL channels to ROS and drawer"}

File name with mapping Tile DCS HVSET DB COOL channels to ROS and drawer.

Definition at line 180 of file TileDCSCondAlg.h.

180 {this,
181 "DCSChHVSETInCOOL", "DCSChHVSETInCOOL.dat",
182 "File name with mapping Tile DCS HVSET DB COOL channels to ROS and drawer"};

◆ m_dcsChStatesInCool

Gaudi::Property<std::string> TileDCSCondAlg::m_dcsChStatesInCool
private
Initial value:
{this,
"DCSChStatesInCOOL", "DCSChStatesInCOOL.dat",
"File name with mapping Tile DCS STATES DB COOL channels to ROS and drawer"}

File name with mapping Tile DCS STATES DB COOL channels to ROS and drawer.

Definition at line 187 of file TileDCSCondAlg.h.

187 {this,
188 "DCSChStatesInCOOL", "DCSChStatesInCOOL.dat",
189 "File name with mapping Tile DCS STATES DB COOL channels to ROS and drawer"};

◆ m_dcsStateKey

SG::WriteCondHandleKey<TileDCSState> TileDCSCondAlg::m_dcsStateKey
private
Initial value:
{this,
"TileDCS", "TileDCS", "Output Tile DCS status"}

The name of TileDCSState object to produce and put into condition store.

Definition at line 111 of file TileDCSCondAlg.h.

111 {this,
112 "TileDCS", "TileDCS", "Output Tile DCS status"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_emScaleKey

SG::ReadCondHandleKey<TileEMScale> TileDCSCondAlg::m_emScaleKey
private
Initial value:
{this,
"TileEMScale", "TileEMScale", "Input Tile EMS conditions"}

The name of TileEMScale object to get reference HV from Cesium or Laser folder.

Definition at line 117 of file TileDCSCondAlg.h.

117 {this,
118 "TileEMScale", "TileEMScale", "Input Tile EMS conditions"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_goodDrawer

Gaudi::Property<int> TileDCSCondAlg::m_goodDrawer
private
Initial value:
{this, "GoodDrawer", 212222,
"Status is OK if Tile DCS drawer states is like this"}

Status is OK if Tile DCS drawer states is like this.

Definition at line 155 of file TileDCSCondAlg.h.

155 {this, "GoodDrawer", 212222,
156 "Status is OK if Tile DCS drawer states is like this"};

◆ m_goodHVLimit

Gaudi::Property<float> TileDCSCondAlg::m_goodHVLimit
private
Initial value:
{this, "GoodHVLimit", 2.0F,
"Status is OK if HV difference is below this limit"}

Tile DCS Status is OK if difference between measured and requested HV is below this limit.

Definition at line 142 of file TileDCSCondAlg.h.

142 {this, "GoodHVLimit", 2.0F,
143 "Status is OK if HV difference is below this limit"};

◆ m_hvKey

SG::ReadCondHandleKey<CondAttrListCollection> TileDCSCondAlg::m_hvKey
private
Initial value:
{this,
"HV", "/TILE/DCS/HV", "The Tile DCS HV COOL folder name"}

The Tile DCS HV COOL folder name.

Definition at line 93 of file TileDCSCondAlg.h.

93 {this,
94 "HV", "/TILE/DCS/HV", "The Tile DCS HV COOL folder name"};

◆ m_hvSetKey

SG::ReadCondHandleKey<CondAttrListCollection> TileDCSCondAlg::m_hvSetKey
private
Initial value:
{this,
"HVSET", "/TILE/DCS/HVSET", "The Tile DCS HVSET COOL folder name"}

The Tile DCS HVSET COOL folder name.

Definition at line 99 of file TileDCSCondAlg.h.

99 {this,
100 "HVSET", "/TILE/DCS/HVSET", "The Tile DCS HVSET COOL folder name"};

◆ m_isChannelUsed

bool TileDCSCondAlg::m_isChannelUsed[4][NUMBER_OF_CHANNELS] = {}
private

Definition at line 207 of file TileDCSCondAlg.h.

207{}; // 0=LB, 1=EB, 2=EB without D4, 3=EB with special C10

◆ m_knownBadHV

std::map<int, std::pair<float,float> > TileDCSCondAlg::m_knownBadHV
private

Definition at line 203 of file TileDCSCondAlg.h.

◆ m_pmt2channel

int TileDCSCondAlg::m_pmt2channel[2][NUMBER_OF_HVSET_CHANNELS] = {}
private

Definition at line 206 of file TileDCSCondAlg.h.

206{};

◆ m_readHV

Gaudi::Property<bool> TileDCSCondAlg::m_readHV
private
Initial value:
{this, "ReadHV", true,
"Flag to control reading Tile DCS HV folder from DB"}

Flag to control reading Tile DCS HV folder from DB.

Definition at line 123 of file TileDCSCondAlg.h.

123 {this, "ReadHV", true,
124 "Flag to control reading Tile DCS HV folder from DB"};

◆ m_readHVSet

Gaudi::Property<bool> TileDCSCondAlg::m_readHVSet
private
Initial value:
{this, "ReadHVSET", false,
"Flag to control reading Tile DCS HVSET folder from DB"}

Flag to control reading Tile DCS HVSET folder from DB.

Definition at line 129 of file TileDCSCondAlg.h.

129 {this, "ReadHVSET", false,
130 "Flag to control reading Tile DCS HVSET folder from DB"};

◆ m_readStates

Gaudi::Property<bool> TileDCSCondAlg::m_readStates
private
Initial value:
{this, "ReadSTATES", true,
"Flag to control reading Tile DCS STATES folder from DB"}

Flag to control reading Tile DCS STATES folder from DB.

Definition at line 135 of file TileDCSCondAlg.h.

135 {this, "ReadSTATES", true,
136 "Flag to control reading Tile DCS STATES folder from DB"};

◆ m_rosDrawerHV

std::vector<std::pair<int, int> > TileDCSCondAlg::m_rosDrawerHV
private

Definition at line 199 of file TileDCSCondAlg.h.

◆ m_rosDrawerHVSet

std::vector<std::pair<int, int> > TileDCSCondAlg::m_rosDrawerHVSet
private

Definition at line 200 of file TileDCSCondAlg.h.

◆ m_rosDrawerStates

std::vector<std::pair<int, int> > TileDCSCondAlg::m_rosDrawerStates
private

Definition at line 201 of file TileDCSCondAlg.h.

◆ m_statesKey

SG::ReadCondHandleKey<CondAttrListCollection> TileDCSCondAlg::m_statesKey
private
Initial value:
{this,
"STATES", "/TILE/DCS/STATES", "The Tile DCS STATES COOL folder name"}

The Tile DCS STATES COOL folder name.

Definition at line 105 of file TileDCSCondAlg.h.

105 {this,
106 "STATES", "/TILE/DCS/STATES", "The Tile DCS STATES COOL folder name"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_warningDrawer

Gaudi::Property<std::vector<int> > TileDCSCondAlg::m_warningDrawer
private
Initial value:
{this, "WarningDrawer",
{202221,
202222,
2222,
212020,
202020,
2020},
"Status is WARNING if Tile DCS drawer states is like this"}

Status is WARNING if Tile DCS drawer states is like this.

Definition at line 161 of file TileDCSCondAlg.h.

161 {this, "WarningDrawer",
162 {202221, // module in emergency mode
163 202222, // 830V HV is on, no communication on HV can-bus, status is unknown (assume that it's good)
164 2222, // no communication on HV can-bus, status is unknown (assume that it's good)
165 212020, // no communication on LV can-bus, status is unknown (assume that it's good)
166 202020, // 830V HV is on, no communication on LV and HV can-bus, status is unknown (assume that it's good)
167 2020}, // no communication on LV and HV can-bus, status is unknown (assume that it's good)
168 "Status is WARNING if Tile DCS drawer states is like this"};

◆ m_warningHVLimit

Gaudi::Property<float> TileDCSCondAlg::m_warningHVLimit
private
Initial value:
{this, "WarningHVLimit", 10.0F,
"Mask channels with HV difference above this limit"}

Mask channels with difference between measured and requested HV above this limit.

Definition at line 149 of file TileDCSCondAlg.h.

149 {this, "WarningHVLimit", 10.0F,
150 "Mask channels with HV difference above this limit"};

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