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

#include <PixelCablingCondAlg.h>

Inheritance diagram for PixelCablingCondAlg:
Collaboration diagram for PixelCablingCondAlg:

Public Member Functions

 PixelCablingCondAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~PixelCablingCondAlg ()=default
virtual StatusCode initialize () override final
virtual StatusCode execute (const EventContext &ctx) const override final
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

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const PixelIDm_pixelID {nullptr}
SG::ReadCondHandleKey< PixelModuleDatam_moduleDataKey {this, "PixelModuleData", "PixelModuleData", "Pixel module data"}
SG::ReadCondHandleKey< PixelReadoutSpeedDatam_readoutspeedKey {this, "PixelReadoutSpeedData", "PixelReadoutSpeedData", "Pixel readout speed data"}
SG::ReadCondHandleKey< AthenaAttributeListm_readKey {this, "ReadKey", "/PIXEL/CablingMap", "Input cabling folder"}
SG::WriteCondHandleKey< PixelCablingCondDatam_writeKey {this, "WriteKey", "PixelCablingCondData", "Output cabling data"}
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

Definition at line 33 of file PixelCablingCondAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ PixelCablingCondAlg()

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

Definition at line 19 of file PixelCablingCondAlg.cxx.

19 :
20 ::AthCondAlgorithm(name, pSvcLocator)
21{
22}

◆ ~PixelCablingCondAlg()

virtual PixelCablingCondAlg::~PixelCablingCondAlg ( )
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 PixelCablingCondAlg::execute ( const EventContext & ctx) const
finaloverridevirtual

Definition at line 38 of file PixelCablingCondAlg.cxx.

38 {
39 ATH_MSG_DEBUG("PixelCablingCondAlg::execute()");
40
41 SG::WriteCondHandle<PixelCablingCondData> writeHandle(m_writeKey, ctx);
42 ATH_MSG_DEBUG("Conditions updates every event!!! This should be avoided once RegionSelectorTable is fixed!!");
43 if (writeHandle.isValid()) {
44 ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid.. In theory this should not be called, but may happen if multiple concurrent events are being processed out of order.");
45 return StatusCode::SUCCESS;
46 }
47
48 // Construct the output Cond Object and fill it in
49 std::unique_ptr<PixelCablingCondData> writeCdo(std::make_unique<PixelCablingCondData>());
50
51 // Signed values
52 int barrel_ec{}, eta_module{};
53
54 // Unsigned 32 bit values
55 uint32_t layer_disk{}, phi_module{};
56 uint32_t robid{}, rodid{};
57 uint32_t sl_40_fmt{}, sl_40_link{}, sl_80_fmt{}, sl_80_link{};
58
59 // Unsigned 64-bit values
60 uint64_t onlineId = 0;
61 uint64_t linknumber = 0;
62
63 // Strings
64 std::string DCSname;
65 std::string line;
66
67 SG::ReadCondHandle<PixelModuleData> moduleDataHandle(m_moduleDataKey, ctx);
68 const PixelModuleData *moduleData = *moduleDataHandle;
69
70 // For debugging purposes
71 std::ofstream output_mapping_file_raw;
72 if (moduleData->getCablingMapToFile()) { output_mapping_file_raw.open("pixel_cabling_map_raw.txt"); }
73 std::ofstream output_mapping_file_interpreted;
74 if (moduleData->getCablingMapToFile()) { output_mapping_file_interpreted.open("pixel_cabling_map_interpreted.txt"); }
75
76 std::stringstream instr;
77 if (!m_readKey.empty()) {
78 SG::ReadCondHandle<AthenaAttributeList> readHandle(m_readKey, ctx);
79 const AthenaAttributeList* readCdo = *readHandle;
80 if (readCdo==nullptr) {
81 ATH_MSG_FATAL("Null pointer to the read conditions object");
82 return StatusCode::FAILURE;
83 }
84 writeHandle.addDependency(readHandle);
85
86 ATH_MSG_DEBUG("Size of AthenaAttributeList " << readHandle.fullKey() << " readCdo->size()= " << readCdo->size());
87 ATH_MSG_DEBUG("Range of input is " << readHandle.getRange());
88
89 const coral::Blob& blob_cabling=(*readCdo)["CablingMapData"].data<coral::Blob>();
90 const char* p_cabling = static_cast<const char*>(blob_cabling.startingAddress());
91
92 unsigned int len_cabling = blob_cabling.size()/sizeof(char);
93 ATH_MSG_DEBUG("blob_cabling.size() = " << blob_cabling.size() << ", len_cabling = " << len_cabling);
94
95 instr.str(std::string(p_cabling,blob_cabling.size()));
96 }
97 else {
98 const std::string &cablingFilename = moduleData->getCablingMapFileName();
99 const std::string filename = PathResolverFindCalibFile(cablingFilename);
100 if (filename.empty()) {
101 ATH_MSG_FATAL("Mapping File: " << cablingFilename << " not found!");
102 return StatusCode::FAILURE;
103 }
104 std::ifstream fin(filename.c_str());
105 if (!fin) { return StatusCode::FAILURE; }
106 instr << fin.rdbuf();
107
108 writeHandle.addDependency(IOVInfiniteRange::infiniteRunLB()); //When reading from file, use infinite IOV
109 ATH_MSG_DEBUG("Refilled pixel cabling from file \"" << cablingFilename << "\"");
110 }
111
112 // Each entry in the mapping is sepated by a newline.
113 // Loop over all lines and parse the values
114 std::map<uint32_t,bool> rodReadoutMap = SG::ReadCondHandle<PixelReadoutSpeedData>(m_readoutspeedKey, ctx)->getReadoutMap();
115
116 while (instr.good() && getline(instr, line)) {
117
118 if (moduleData->getCablingMapToFile()) { output_mapping_file_raw << line << std::endl; }
119
120 // Skip empty lines and comments (i.e. starting with a hash or a space)
121 if (line.empty()) { continue; }
122 if (line[0]==' ' || line[0]=='#') { continue; }
123
124 // There are 11 columns, so there must be at least 21 characters in a valid line.
125 if (line.length()<21) { continue; }
126
127 // If reading from COOL, skip the datestamp
128 if (line.substr(line.length()-3,line.length())=="GMT") { continue; }
129
130 std::istringstream parse(line);
131 // coverity[tainted_data_argument]
132 parse >> barrel_ec >> layer_disk >> phi_module >> eta_module >> std::hex >> robid >> rodid >> sl_40_fmt >> sl_40_link >> sl_80_fmt >> sl_80_link >> DCSname;
133
134 // Debug
135 if (moduleData->getCablingMapToFile()) {
136 output_mapping_file_interpreted << barrel_ec << "\t" << layer_disk << "\t" << phi_module << "\t"
137 << eta_module << "\t" << std::hex << robid << "\t" << rodid << "\t"
138 << sl_40_fmt << "\t" << sl_40_link << "\t" << sl_80_fmt << "\t"
139 << sl_80_link << "\t" << DCSname << std::dec << std::endl;
140 }
141
142 // Get the offline ID for this module
143 // check layer_disk value is inside some very wide range
144 if (layer_disk>100){
145 ATH_MSG_ERROR("Value for layer_disk is insane: "<<layer_disk);
146 return StatusCode::FAILURE;
147 }
148 Identifier offlineId = m_pixelID->wafer_id(barrel_ec,layer_disk,phi_module,eta_module);
149
150 // Set linknumber for IBL / DBM entries
151 if ((robid & 0xFFFFFF)>=0x140000) {
152 linknumber = sl_40_link | (sl_40_fmt<<4) | (sl_80_link<<8) | (sl_80_fmt<<12);
153 }
154 // Set linknumber for pixel entries
155 else {
156 bool readoutSpeed = false;
157 if (rodReadoutMap.find(rodid)!=rodReadoutMap.end()) { readoutSpeed=rodReadoutMap[rodid]; }
158
159 if (!readoutSpeed) { linknumber=(sl_40_link & 0xF) | ((sl_40_fmt & 0xF)<<4); }
160 else { linknumber=(sl_80_link & 0xF) | ((sl_80_fmt & 0xF)<<4); }
161 }
162
163 // Compute onlineId
164 onlineId = (robid & 0xFFFFFF) | (linknumber<<24);
165
166 IdentifierHash hashId;
167
168 // Do checks to verify consistency
169 IdContext cntxpixel = m_pixelID->wafer_context();
170 if (m_pixelID->get_hash(offlineId, hashId, &cntxpixel)) {
171 ATH_MSG_WARNING("Could not get hash from offlineId");
172 }
173
174 if (hashId>m_pixelID->wafer_hash_max()) {
175 ATH_MSG_ERROR("IdHash overflow! HashId is 0x" << std::hex << hashId);
176 ATH_MSG_ERROR("not mapped OfflineID: " << std::hex << offlineId << std::dec << " barrel_ec: " << barrel_ec
177 << " layer_disk: " << layer_disk << " phi_module: " << phi_module << " eta_module: " << eta_module);
178 ATH_MSG_ERROR("to OnlineID: 0x" << std::hex << onlineId << " robid: 0x" << robid << " rodid: 0x" << rodid << std::dec
179 << " link: 0x" << std::hex /*<< link*/ << " -> Linknumber: 0x" << linknumber << " HashId: 0x" << hashId << std::dec);
180
181 // Check if offlineId fail was caused by exceeding eta_module range
182 if (eta_module>m_pixelID->eta_module_max(offlineId) || eta_module<m_pixelID->eta_module_min(offlineId)) {
183 // eta_module_max == -999 indicates the module does not exist
184 if (m_pixelID->eta_module_max(offlineId)==-999 && m_pixelID->eta_module_min(offlineId)==-999) {
185 ATH_MSG_ERROR("Module does not exist in geometry");
186 }
187 else {
188 ATH_MSG_ERROR("eta_module range exceeded: Got eta_module = " << eta_module
189 << ", but allowed range is [" << m_pixelID->eta_module_min(offlineId)
190 << "," << m_pixelID->eta_module_max(offlineId) << "]");
191 ATH_MSG_ERROR("Input geometry tag may not be compatible with mapping file");
192 }
193 }
194 }
195
196 // Fill the maps
197 writeCdo->add_entry_onoff(onlineId, offlineId);
198 writeCdo->add_entry_offon(offlineId, onlineId);
199 writeCdo->add_entry_offlineList(robid,offlineId);
200 writeCdo->add_entry_offrob(offlineId, robid);
201 writeCdo->add_entry_rodrob(rodid, robid);
202 writeCdo->add_entry_robrod(robid, rodid);
203 writeCdo->add_entry_DCSoffline(DCSname, offlineId);
204
205 // Debug messages
206 ATH_MSG_DEBUG("Mapped offlineID: " << std::hex << offlineId << " to onlineID: 0x" << onlineId
207 << ", robID: 0x" << robid << ", barrel_ec: " << std::dec << barrel_ec << ", layer_disk: " << layer_disk
208 << ", eta_module: " << eta_module << ", phi_module: " << phi_module << ", linknumber: 0x" << std::hex << linknumber);
209 }
210
211 if (moduleData->getCablingMapToFile()) {
212 output_mapping_file_raw.close();
213 output_mapping_file_interpreted.close();
214 }
215
216 ATH_MSG_DEBUG("Size of ROD readoutspeed map: " << rodReadoutMap.size());
217 writeCdo->set_readout_map(std::move(rodReadoutMap));
218
219 if (writeHandle.record(std::move(writeCdo)).isFailure()) {
220 ATH_MSG_FATAL("Could not record PixelCablingCondData " << writeHandle.key() << " with EventRange " << writeHandle.getRange() << " into Conditions Store");
221 return StatusCode::FAILURE;
222 }
223 ATH_MSG_DEBUG("recorded new CDO " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store");
224
225 return StatusCode::SUCCESS;
226}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
static EventIDRange infiniteRunLB()
Produces an EventIDRange that is infinite in RunLumi and invalid in Time.
SG::ReadCondHandleKey< AthenaAttributeList > m_readKey
SG::ReadCondHandleKey< PixelModuleData > m_moduleDataKey
SG::ReadCondHandleKey< PixelReadoutSpeedData > m_readoutspeedKey
SG::WriteCondHandleKey< PixelCablingCondData > m_writeKey
const PixelID * m_pixelID
const std::string & getCablingMapFileName() const
bool getCablingMapToFile() const
std::map< std::string, std::string > parse(const std::string &list)
setEventNumber uint32_t

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

◆ 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

◆ initialize()

StatusCode PixelCablingCondAlg::initialize ( )
finaloverridevirtual

Definition at line 24 of file PixelCablingCondAlg.cxx.

24 {
25 ATH_MSG_DEBUG("PixelCablingCondAlg::initialize()");
26
27 ATH_CHECK(detStore()->retrieve(m_pixelID,"PixelID"));
28
29 ATH_CHECK(m_moduleDataKey.initialize());
30 ATH_CHECK(m_readoutspeedKey.initialize());
32
33 ATH_CHECK(m_writeKey.initialize());
34
35 return StatusCode::SUCCESS;
36}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

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

◆ 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_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_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_moduleDataKey

SG::ReadCondHandleKey<PixelModuleData> PixelCablingCondAlg::m_moduleDataKey {this, "PixelModuleData", "PixelModuleData", "Pixel module data"}
private

Definition at line 44 of file PixelCablingCondAlg.h.

45{this, "PixelModuleData", "PixelModuleData", "Pixel module data"};

◆ m_pixelID

const PixelID* PixelCablingCondAlg::m_pixelID {nullptr}
private

Definition at line 42 of file PixelCablingCondAlg.h.

42{nullptr};

◆ m_readKey

SG::ReadCondHandleKey<AthenaAttributeList> PixelCablingCondAlg::m_readKey {this, "ReadKey", "/PIXEL/CablingMap", "Input cabling folder"}
private

Definition at line 50 of file PixelCablingCondAlg.h.

51{this, "ReadKey", "/PIXEL/CablingMap", "Input cabling folder"};

◆ m_readoutspeedKey

SG::ReadCondHandleKey<PixelReadoutSpeedData> PixelCablingCondAlg::m_readoutspeedKey {this, "PixelReadoutSpeedData", "PixelReadoutSpeedData", "Pixel readout speed data"}
private

Definition at line 47 of file PixelCablingCondAlg.h.

48{this, "PixelReadoutSpeedData", "PixelReadoutSpeedData", "Pixel readout speed data"};

◆ 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_writeKey

SG::WriteCondHandleKey<PixelCablingCondData> PixelCablingCondAlg::m_writeKey {this, "WriteKey", "PixelCablingCondData", "Output cabling data"}
private

Definition at line 53 of file PixelCablingCondAlg.h.

54{this, "WriteKey", "PixelCablingCondData", "Output cabling data"};

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