ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
SCT_CablingCondAlgFromCoraCool Class Reference

Condition algorithm which fills the SCT Cabling from the database, using CoraCool. More...

#include <SCT_CablingCondAlgFromCoraCool.h>

Inheritance diagram for SCT_CablingCondAlgFromCoraCool:
Collaboration diagram for SCT_CablingCondAlgFromCoraCool:

Public Member Functions

 SCT_CablingCondAlgFromCoraCool (const std::string &name, ISvcLocator *svc)
 
virtual ~SCT_CablingCondAlgFromCoraCool ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode execute (const EventContext &ctx) const override
 
virtual StatusCode finalize () override
 
virtual bool isClonable () const override
 Make this algorithm clonable. More...
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool insert (const IdentifierHash &hash, const SCT_OnlineId &onlineId, const SCT_SerialNumber &sn, SCT_CablingData *data) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadCondHandleKey< CondAttrListVecm_readKeyRod {this, "ReadKeyRod", "/SCT/DAQ/Config/ROD", "Key of input (raw) conditions folder of Rods"}
 Input conditions folders. More...
 
SG::ReadCondHandleKey< CondAttrListVecm_readKeyRodMur {this, "ReadKeyRodMur", "/SCT/DAQ/Config/RODMUR", "Key of input (raw) conditions folder of RodMurs"}
 
SG::ReadCondHandleKey< CondAttrListVecm_readKeyMur {this, "ReadKeyMur", "/SCT/DAQ/Config/MUR", "Key of input (raw) conditions folder of Murs"}
 
SG::ReadCondHandleKey< CondAttrListVecm_readKeyGeo {this, "ReadKeyGeo", "/SCT/DAQ/Config/Geog", "Key of input (raw) conditions folder of Geography"}
 
SG::WriteCondHandleKey< SCT_CablingDatam_writeKey {this, "WriteKey", "SCT_CablingData", "Key of output (derived) conditions data"}
 Output condition data. More...
 
const SCT_IDm_idHelper {nullptr}
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Condition algorithm which fills the SCT Cabling from the database, using CoraCool.

Definition at line 40 of file SCT_CablingCondAlgFromCoraCool.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

◆ SCT_CablingCondAlgFromCoraCool()

SCT_CablingCondAlgFromCoraCool::SCT_CablingCondAlgFromCoraCool ( const std::string &  name,
ISvcLocator *  svc 
)

Definition at line 169 of file SCT_CablingCondAlgFromCoraCool.cxx.

169  :
170  AthReentrantAlgorithm(name, pSvcLocator)
171 {
172 }

◆ ~SCT_CablingCondAlgFromCoraCool()

virtual SCT_CablingCondAlgFromCoraCool::~SCT_CablingCondAlgFromCoraCool ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::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.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

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

Get the geography table which gives where the MURs (harnesses, for endcap) really are. In fact for the barrel its obvious, so only extract the endcap ones

get the RODMUR which gives where the individual MURs are; this is an intermediate step, so make a temporary data structure.

Definition at line 218 of file SCT_CablingCondAlgFromCoraCool.cxx.

218  {
219  // Write Cond Handle
221  if (writeHandle.isValid()) {
222  ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid."
223  << ". In theory this should not be called, but may happen"
224  << " if multiple concurrent events are being processed out of order.");
225  return StatusCode::SUCCESS;
226  }
227 
228  // Determine the folders are Run2 or Run1
229  bool isRun2{m_readKeyRod.key()==rodFolderName2};
230 
231  // let's get the ROD AttrLists
233  const CondAttrListVec* pRod{*readHandleRod};
234  if (pRod==nullptr) {
235  ATH_MSG_FATAL("Could not find ROD configuration data: " << m_readKeyRod.key());
236  return StatusCode::FAILURE;
237  }
238  // build rod-rob map, and store the crate/slot to RobId mapping
239  CondAttrListVec::const_iterator rodIt{pRod->begin()};
240  CondAttrListVec::const_iterator last_rod{pRod->end()};
241  using IntMap = std::map<int, int>;
242  IntMap slotMap;
243  //there are now 16 crate slots, but they may be numbered (in the DB) as some non-monotonic sequence
244  //so here we take whatever is in the database and map it onto numbers 0-15
245  {//scope this calculation, only slotMap should emerge
246  //map slots onto 0-15
247  using S = std::set<int>;
248  S slots;
249  for (; rodIt != last_rod; ++rodIt) {
250  //type of 'slot' changed between COMP200 and CONDBR2:
251  if (isRun2) {
252  slots.insert(int(rodIt->second["slot"].data<unsigned char>())); //all but 15 inserts will fail, and these 15 should be sorted
253  } else {
254  slots.insert(int(rodIt->second["slot"].data<short>())); //all but 15 inserts will fail, and these 15 should be sorted
255  }
256  }
257  int counter{0};
258  for (S::const_iterator i{slots.begin()};i != slots.end();++i) {
259  slotMap[*i]=counter++;
260  }
261  ATH_MSG_INFO("Number of SCT rod slots inserted: " << counter);
262  }
263  IntMap crateSlot2RobMap; //local data structure
264  bool allInsertsSucceeded{true};
265  rodIt=pRod->begin();
266  int nrods{0};
267  std::set<int> tempRobSet;
268  for (; rodIt != last_rod; ++rodIt) {
269  const coral::AttributeList& rodAttributes{rodIt->second};
270  int rob{rodAttributes["ROB"].data<int>()};
271  if (not tempRobSet.insert(rob).second) ATH_MSG_WARNING("Duplicate rob? :" << std::hex << rob << std::dec);
272  int crate{isRun2 ? static_cast<int>(rodAttributes["crate"].data<unsigned char>()) : (rodAttributes["crate"].data<int>())};
273  int crateSlot{isRun2 ? static_cast<int>(rodAttributes["slot"].data<unsigned char>()) : static_cast<int>(rodAttributes["slot"].data<short>())};
274  //see note in header; these may be 0-15, but not necessarily, so we need to map these onto 0-15
275  IntMap::const_iterator pSlot{slotMap.find(crateSlot)};
276  int slot{(pSlot==slotMap.end()) ? -1 : pSlot->second};
277  if (slot==-1) ATH_MSG_ERROR("Failed to find a crate slot in the crate map");
278  int rodPosition{(crate * slotsPerCrate) +slot};//generate identifier using crate and slot for use later
279  //use the return type of insert which is a pair with the second component(bool) indicating whether the insert was successful
280  bool thisInsertSucceeded{crateSlot2RobMap.insert(IntMap::value_type(rodPosition, rob)).second};
281  if (not thisInsertSucceeded) {
282  ATH_MSG_WARNING("Insert (rodPosition, rob) " << rodPosition << ", " << rob << " failed.");
283  ATH_MSG_INFO("map(rod position) is already " << crateSlot2RobMap[rodPosition]);
284  ATH_MSG_INFO("crate, slot, slots per crate: " << crate << ", " << slot << ", " << slotsPerCrate);
285  }
286  allInsertsSucceeded = thisInsertSucceeded and allInsertsSucceeded;
287  ++nrods;
288  }
289  ATH_MSG_INFO(nrods << " rods entered, of which " << tempRobSet.size() << " are unique.");
290 
291  if (not allInsertsSucceeded) ATH_MSG_WARNING("Some Rod-Rob map inserts failed.");
292 
297  IntMap geoMurMap;
299  const CondAttrListVec* pGeo{*readHandleGeo};
300  if (pGeo==nullptr) {
301  ATH_MSG_FATAL("Could not find Geog configuration data: " << m_readKeyGeo.key());
302  return StatusCode::FAILURE;
303  }
304  CondAttrListVec::const_iterator geoIt{pGeo->begin()};
305  CondAttrListVec::const_iterator last_geo{pGeo->end()};
306  for (;geoIt != last_geo;++geoIt) {
307  const coral::AttributeList& geoAttributes{geoIt->second};
308  int mur{isRun2 ? static_cast<int>(geoAttributes["MUR"].data<unsigned int>()) : (geoAttributes["MUR"].data<int>())};
309  int position{isRun2 ? static_cast<int>(geoAttributes["position"].data<short>()) : (geoAttributes["position"].data<int>())};
310  if (mur > 10000) geoMurMap[mur]=position; //only for endcap case
311  }
312 
317  IntMap murPositionMap;
319  const CondAttrListVec* pRodMur{*readHandleRodMur};
320  if (pRodMur==nullptr) {
321  ATH_MSG_FATAL("Could not find RodMur configuration data: " << m_readKeyRodMur.key());
322  return StatusCode::FAILURE;
323  }
324  CondAttrListVec::const_iterator rodMurIt{pRodMur->begin()};
325  CondAttrListVec::const_iterator last_rodMur{pRodMur->end()};
326  allInsertsSucceeded = true;
327  std::set<int> tempRobSet2;
328  for (; rodMurIt!=last_rodMur; ++rodMurIt) {
329  const coral::AttributeList& rodMurAttributes{rodMurIt->second};
330  int mur{isRun2 ? static_cast<int>(rodMurAttributes["MUR"].data<unsigned int>()) : (rodMurAttributes["MUR"].data<int>())};
331  int crate{isRun2 ? static_cast<int>(rodMurAttributes["crate"].data<unsigned char>()) : (rodMurAttributes["crate"].data<int>())};
332  int crateSlot{isRun2 ? static_cast<int>(rodMurAttributes["rod"].data<unsigned char>()) : (rodMurAttributes["rod"].data<int>())};//slot is int16, others are int32
333  //map slot onto 0-15 range
334  IntMap::const_iterator pSlot{slotMap.find(crateSlot)};
335  int slot{(pSlot==slotMap.end()) ? -1 : pSlot->second};
336  if (slot==-1) ATH_MSG_ERROR("Failed to find a crate slot in the crate map");
337  //
338  int order{isRun2 ? static_cast<int>(rodMurAttributes["position"].data<unsigned char>()) : (rodMurAttributes["position"].data<int>())};
339  int fibreOrder{((((crate * slotsPerCrate) + slot ) * mursPerRod) + order) * fibresPerMur};
340  bool thisInsertSucceeded{murPositionMap.insert(IntMap::value_type(mur, fibreOrder)).second};
341  if (not thisInsertSucceeded) ATH_MSG_WARNING("Insert (mur, fibre) " << mur << ", " << fibreOrder << " failed.");
342  allInsertsSucceeded = thisInsertSucceeded and allInsertsSucceeded;
343  }
344  if (not allInsertsSucceeded) ATH_MSG_WARNING("Some MUR-position map inserts failed.");
345 
346  // let's get the MUR AttrLists
348  const CondAttrListVec* pMur{*readHandleMur};
349  if (pMur==nullptr) {
350  ATH_MSG_FATAL("Could not find ROD configuration data: " << m_readKeyMur.key());
351  return StatusCode::FAILURE;
352  }
353 
354  // Add dependency
355  writeHandle.addDependency(readHandleRod);
356  writeHandle.addDependency(readHandleRodMur);
357  writeHandle.addDependency(readHandleMur);
358  writeHandle.addDependency(readHandleGeo);
359 
360  // Construct the output Cond Object and fill it in
361  std::unique_ptr<SCT_CablingData> writeCdo{std::make_unique<SCT_CablingData>()};
362 
363  //build identifier map
364  CondAttrListVec::const_iterator murIt{pMur->begin()};
365  CondAttrListVec::const_iterator last_mur{pMur->end()};
366  int numEntries{0};
367  std::set<int> onlineIdSet, robSet;
368  std::set<Identifier> offlineIdSet;
369  long long lastSerialNumber{0};
370  for (; murIt != last_mur; ++murIt) {
371  const coral::AttributeList& murAttributes{murIt->second};
372  int mur{isRun2 ? static_cast<int>(murAttributes["MUR"].data<unsigned int>()) : (murAttributes["MUR"].data<int>())};
373  bool nullMur{murAttributes["moduleID"].isNull() or murAttributes["module"].isNull()};
374  if (9999 == mur or nullMur) continue;
375  int fibreInMur{ (isRun2 ? static_cast<int>(murAttributes["module"].data<unsigned char>()) : (murAttributes["module"].data<int>()) ) - 1};
376  long long sn{murAttributes["moduleID"].data<long long>()};
377  if (lastSerialNumber==sn) { //old version (<2.6) of Coral/Cool doesn't detect a 'null' value, instead it simply repeats the last known value.
378  continue;
379  }
380  lastSerialNumber=sn;
381  std::string snString{std::to_string(sn)};
382  IntMap::const_iterator pFibre{murPositionMap.find(mur)};
383  int fibreOffset{-1};
384  if (pFibre==murPositionMap.end()) {
385  ATH_MSG_WARNING("Failed to find an MUR position in the cabling");
386  } else {
387  fibreOffset = pFibre->second;
388  }
389  int encodedCrateSlot{fibreOffset / (fibresPerMur * mursPerRod)};
390  int rob{-1};
391  IntMap::const_iterator pCrate{crateSlot2RobMap.find(encodedCrateSlot)};
392  if (pCrate == crateSlot2RobMap.end()) {
393  ATH_MSG_WARNING("Failed to find a crate slot in the cabling, slot " << encodedCrateSlot);
394  } else {
395  rob=pCrate->second;
396  tempRobSet2.insert(rob);
397  }
398 
399  //cheat to get the geography: use the MUR notation
400  int bec{0},eta{0}, layer{0}, phi{0};
401  std::pair<int, int> etaPhiPair;
402  int harnessPosition{-1};
403  if (mur > 10000) { //its an endcap, so has 5 digits in the mur
404  layer = (mur/10000) - 1; //first digit is the disk number, 1-9, so subtract 1
405  bec = (((mur /1000) % 2)==0) ? ENDCAP_A : ENDCAP_C; //bec is +2 for A if second digit is 0
406  int quadrant{(mur/100) % 10}; //3rd digit is quadrant
407  //eta = ((mur /10) % 10); //eta of the harness is the 4th digit
408  //int harness = (mur % 10) -1; //last digit is harness, 1 or 2
409  harnessPosition=geoMurMap[mur];
410  etaPhiPair= convertToAthenaCoords(bec,layer, quadrant, harnessPosition, fibreInMur);
411  eta=etaPhiPair.first;
412  phi=etaPhiPair.second;
413  } else {
414  bec = 0;
415  layer= (mur /1000) - 3;//first digit is layer, 3-6
416  phi= (mur % 100) - 1; //lower 2 digits are phi check whether this wraps around!
417  eta = (((mur / 100) % 10) *2 -1) * (fibreInMur+1);//second digit gives eta sign, 0-> -, 1-> +
418  }
419  int rxLink[2];
420  if (isRun2) {
421  rxLink[0]=murAttributes["rx0Fibre"].data<unsigned char>();rxLink[1]= murAttributes["rx1Fibre"].data<unsigned char>();
422  } else {
423  rxLink[0]=murAttributes["rx0Fibre"].data<int>();rxLink[1]=murAttributes["rx1Fibre"].data<int>();
424  }
425  if (not (validLinkNumber(rxLink[0]) and validLinkNumber(rxLink[1]))) {
426  ATH_MSG_WARNING("Invalid link number in database in one of these db entries: rx0Fibre=" << rxLink[0] << ", rx1Fibre=" << rxLink[1]);
427  continue;
428  }
429  //normal ordering is like rx0=0, rx1=1; i.e. odd links in rx1.
430  bool normalOrdering{true};
431  if (rxLink[0] != disabledFibre) { //if the first link is not disabled, use that and check its even
432  normalOrdering=(rxLink[0] % 2)==0;
433  } else { //...otherwise use link1 and check its odd
434  normalOrdering=(rxLink[1] % 2)==1;
435  }
436 
437  int possibleLinks[2]{0,0};
438  if (normalOrdering) {
439  possibleLinks[0]=(rxLink[0]!=disabledFibre) ? rxLink[0] : (rxLink[1]-1);
440  possibleLinks[1]=(rxLink[1]!=disabledFibre) ? rxLink[1] : (rxLink[0]+1);
441  } else {
442  possibleLinks[0]=(rxLink[0]!=disabledFibre) ? rxLink[0] : (rxLink[1]+1);
443  possibleLinks[1]=(rxLink[1]!=disabledFibre) ? rxLink[1] : (rxLink[0]-1);
444  }
445  for (int side{0}; side!=2; ++side) {
446  if ((-1==phi) and (-1==eta)) {
447  ATH_MSG_WARNING("Invalid eta, phi..skipping insertion to map for module " << snString << " (may be already present in map)");
448  continue;
449  }
451  int link{rxLink[side]};
452  if (defaultLink==link) {
453  link = (fibreOffset % fibresPerRod) + fibreInMur*2 + side;
454  }
455  if (disabledFibre==link) {
456  int otherLink{rxLink[1-side]};
457  if (otherLink==possibleLinks[0]) link=possibleLinks[1];
458  if (otherLink==possibleLinks[1]) link=possibleLinks[0];
459  }
460  bool flippedModule{isOdd(side)!=isOdd(link)};
461  if (flippedModule) {
462  link = (link==possibleLinks[0]) ? possibleLinks[1] : possibleLinks[0];
463  }
464  int onlineId{(rob & 0xFFFFFF)|(link << 24)};
465  //check uniqueness
466  if (not onlineIdSet.insert(onlineId).second) ATH_MSG_WARNING("Insert of online Id : " << onlineId << " failed.");
467  if (not offlineIdSet.insert(offlineId).second) {
468  ATH_MSG_WARNING("Insert of offline Id : " << offlineId << " failed.");
469  ATH_MSG_WARNING(bec << " " << layer << " " << phi << " " << eta << " " << side);
470  ATH_MSG_INFO("MUR, position " << mur << ", " << harnessPosition);
471  }
472  IdentifierHash offlineIdHash{m_idHelper->wafer_hash(offlineId)};
473  insert(offlineIdHash, onlineId, SCT_SerialNumber(sn), writeCdo.get());
474  numEntries++;
475  }
476  }
477 
478  if (writeHandle.record(std::move(writeCdo)).isFailure()) {
479  ATH_MSG_FATAL("Could not record SCT_CablingData " << writeHandle.key()
480  << " with EventRange " << writeHandle.getRange()
481  << " into Conditions Store");
482  return StatusCode::FAILURE;
483  }
484  ATH_MSG_INFO("recorded new CDO " << writeHandle.key() << " with range " << writeHandle.getRange() << " into Conditions Store");
485 
486  const int robLo{*(tempRobSet2.cbegin())};
487  const int robHi{*(tempRobSet2.crbegin())};
488  ATH_MSG_INFO(numEntries << " entries were made to the identifier map.");
489  ATH_MSG_INFO(tempRobSet2.size() << " unique rob ids were used, spanning 0x" << std::hex << robLo << " to 0x" << robHi << std::dec);
490  if (tempRobSet.size() != tempRobSet2.size()) {
491  ATH_MSG_WARNING("The following existing rods were not inserted : ");
492  std::cout << std::hex;
493  std::set_difference(tempRobSet.cbegin(), tempRobSet.cend(),
494  tempRobSet2.cbegin(), tempRobSet2.cend(),
495  std::ostream_iterator<int>(std::cout,", "));
496  std::cout << std::dec << std::endl;
497  }
498  tempRobSet.clear();
499  return (numEntries==0) ? (StatusCode::FAILURE) : (StatusCode::SUCCESS);
500 }

◆ 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 & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ finalize()

StatusCode SCT_CablingCondAlgFromCoraCool::finalize ( )
overridevirtual

Definition at line 212 of file SCT_CablingCondAlgFromCoraCool.cxx.

212  {
213  return StatusCode::SUCCESS;
214 }

◆ initialize()

StatusCode SCT_CablingCondAlgFromCoraCool::initialize ( )
overridevirtual

Definition at line 176 of file SCT_CablingCondAlgFromCoraCool.cxx.

176  {
177  // Check conditions folder names
178  if((m_readKeyRod.key()!=rodFolderName) and (m_readKeyRod.key()!=rodFolderName2)) {
179  ATH_MSG_FATAL(m_readKeyRod.key() << " is incorrect.");
180  return StatusCode::FAILURE;
181  }
182  if((m_readKeyRodMur.key()!=rodMurFolderName) and (m_readKeyRodMur.key()!=rodMurFolderName2)) {
183  ATH_MSG_FATAL(m_readKeyRodMur.key() << " is incorrect.");
184  return StatusCode::FAILURE;
185  }
186  if((m_readKeyMur.key()!=murFolderName) and (m_readKeyMur.key()!=murFolderName2)) {
187  ATH_MSG_FATAL(m_readKeyMur.key() << " is incorrect.");
188  return StatusCode::FAILURE;
189  }
190  if((m_readKeyGeo.key()!=geoFolderName) and (m_readKeyGeo.key()!=geoFolderName2)) {
191  ATH_MSG_FATAL(m_readKeyGeo.key() << " is incorrect.");
192  return StatusCode::FAILURE;
193  }
194 
195  // SCT_ID
196  ATH_CHECK(detStore()->retrieve(m_idHelper, "SCT_ID"));
197 
198  // Read Cond Handle
203 
204  // Write Cond Handle
206 
207  return StatusCode::SUCCESS;
208 }

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

◆ insert()

bool SCT_CablingCondAlgFromCoraCool::insert ( const IdentifierHash hash,
const SCT_OnlineId onlineId,
const SCT_SerialNumber sn,
SCT_CablingData data 
) const
private

Definition at line 504 of file SCT_CablingCondAlgFromCoraCool.cxx.

504  {
505  if (not sn.isWellFormed()) {
506  ATH_MSG_FATAL("Serial number is not in correct format");
507  return false;
508  }
509  if (not hash.is_valid()) {
510  ATH_MSG_FATAL("Invalid hash: " << hash);
511  return false;
512  }
513  // Check if the pointer of derived conditions object is valid.
514  if (data==nullptr) {
515  ATH_MSG_FATAL("Pointer of derived conditions object is null");
516  return false;
517  }
518 
519  if (not data->setHashForOnlineId(hash, onlineId)) return false;
520  if (not data->setOnlineIdForHash(onlineId, hash)) return false;
521 
522  bool successfulInsert{data->setHashForSerialNumber(hash, sn)};
523  successfulInsert &= data->setSerialNumberForHash(sn, hash);
524  // in this form, the data->getHashEntries() will be half the number of hashes
525  if (successfulInsert) {
526  data->setRod(onlineId.rod()); //move this here so insertion only happens for valid onlineId, hash
527  }
528  return true;
529 }

◆ isClonable()

virtual bool SCT_CablingCondAlgFromCoraCool::isClonable ( ) const
inlineoverridevirtual

Make this algorithm clonable.

Reimplemented from AthReentrantAlgorithm.

Definition at line 49 of file SCT_CablingCondAlgFromCoraCool.h.

49 { return true; };

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::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 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::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 InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
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 AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

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

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_idHelper

const SCT_ID* SCT_CablingCondAlgFromCoraCool::m_idHelper {nullptr}
private

Definition at line 63 of file SCT_CablingCondAlgFromCoraCool.h.

◆ m_readKeyGeo

SG::ReadCondHandleKey<CondAttrListVec> SCT_CablingCondAlgFromCoraCool::m_readKeyGeo {this, "ReadKeyGeo", "/SCT/DAQ/Config/Geog", "Key of input (raw) conditions folder of Geography"}
private

Definition at line 59 of file SCT_CablingCondAlgFromCoraCool.h.

◆ m_readKeyMur

SG::ReadCondHandleKey<CondAttrListVec> SCT_CablingCondAlgFromCoraCool::m_readKeyMur {this, "ReadKeyMur", "/SCT/DAQ/Config/MUR", "Key of input (raw) conditions folder of Murs"}
private

Definition at line 58 of file SCT_CablingCondAlgFromCoraCool.h.

◆ m_readKeyRod

SG::ReadCondHandleKey<CondAttrListVec> SCT_CablingCondAlgFromCoraCool::m_readKeyRod {this, "ReadKeyRod", "/SCT/DAQ/Config/ROD", "Key of input (raw) conditions folder of Rods"}
private

Input conditions folders.

Definition at line 56 of file SCT_CablingCondAlgFromCoraCool.h.

◆ m_readKeyRodMur

SG::ReadCondHandleKey<CondAttrListVec> SCT_CablingCondAlgFromCoraCool::m_readKeyRodMur {this, "ReadKeyRodMur", "/SCT/DAQ/Config/RODMUR", "Key of input (raw) conditions folder of RodMurs"}
private

Definition at line 57 of file SCT_CablingCondAlgFromCoraCool.h.

◆ 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<SCT_CablingData> SCT_CablingCondAlgFromCoraCool::m_writeKey {this, "WriteKey", "SCT_CablingData", "Key of output (derived) conditions data"}
private

Output condition data.

Definition at line 61 of file SCT_CablingCondAlgFromCoraCool.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
SCT_CablingCondAlgFromCoraCool::m_idHelper
const SCT_ID * m_idHelper
Definition: SCT_CablingCondAlgFromCoraCool.h:63
SCT_CablingCondAlgFromCoraCool::m_readKeyMur
SG::ReadCondHandleKey< CondAttrListVec > m_readKeyMur
Definition: SCT_CablingCondAlgFromCoraCool.h:58
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
beamspotPlotBcids.k
k
Definition: beamspotPlotBcids.py:524
xAOD::short
short
Definition: Vertex_v1.cxx:165
SCT_CablingCondAlgFromCoraCool::m_readKeyGeo
SG::ReadCondHandleKey< CondAttrListVec > m_readKeyGeo
Definition: SCT_CablingCondAlgFromCoraCool.h:59
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
beamspotVtxAnalysis.cs
list cs
Definition: beamspotVtxAnalysis.py:391
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
SCT_CablingCondAlgFromCoraCool::insert
bool insert(const IdentifierHash &hash, const SCT_OnlineId &onlineId, const SCT_SerialNumber &sn, SCT_CablingData *data) const
Definition: SCT_CablingCondAlgFromCoraCool.cxx:504
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
JetTiledMap::S
@ S
Definition: TiledEtaPhiMap.h:44
SCT_CablingCondAlgFromCoraCool::m_writeKey
SG::WriteCondHandleKey< SCT_CablingData > m_writeKey
Output condition data.
Definition: SCT_CablingCondAlgFromCoraCool.h:61
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
TRT::Hit::side
@ side
Definition: HitInfo.h:83
SCT_CablingCondAlgFromCoraCool::m_readKeyRod
SG::ReadCondHandleKey< CondAttrListVec > m_readKeyRod
Input conditions folders.
Definition: SCT_CablingCondAlgFromCoraCool.h:56
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
CondAttrListVec
Definition: CondAttrListVec.h:31
lumiFormat.i
int i
Definition: lumiFormat.py:92
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
mc.order
order
Configure Herwig7.
Definition: mc.Herwig7_Dijet.py:12
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
SCT_ID::wafer_hash
IdentifierHash wafer_hash(const Identifier &wafer_id) const
wafer hash from id - optimized
Definition: SCT_ID.h:492
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SCT_Monitoring::ENDCAP_A
@ ENDCAP_A
Definition: SCT_MonitoringNumbers.h:21
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
python.TrigConfigSvcUtils.isRun2
def isRun2(cursor, schemaname)
Definition: TrigConfigSvcUtils.py:290
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
CondAttrListVec::const_iterator
AttrListVec::const_iterator const_iterator
Definition: CondAttrListVec.h:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
SCT_Monitoring::ENDCAP_C
@ ENDCAP_C
Definition: SCT_MonitoringNumbers.h:21
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
SCT_SerialNumber
Definition: SCT_SerialNumber.h:22
readCCLHist.int
int
Definition: readCCLHist.py:84
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloCondBlobAlgs_fillNoiseFromASCII.hash
dictionary hash
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:109
SCT_SerialNumber::isWellFormed
bool isWellFormed() const
Cursory check on whether the serial number is well formed N.B.
Definition: SCT_SerialNumber.cxx:81
SCT_CablingCondAlgFromCoraCool::m_readKeyRodMur
SG::ReadCondHandleKey< CondAttrListVec > m_readKeyRodMur
Definition: SCT_CablingCondAlgFromCoraCool.h:57
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
SCT_ID::wafer_id
Identifier wafer_id(int barrel_ec, int layer_disk, int phi_module, int eta_module, int side) const
For a single side of module.
Definition: SCT_ID.h:464
IdentifierHash
Definition: IdentifierHash.h:38
test_pyathena.counter
counter
Definition: test_pyathena.py:15
SG::WriteCondHandle
Definition: WriteCondHandle.h:26
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
SCT_OnlineId::rod
std::uint32_t rod() const
Return the rod/rob Id.
Definition: SCT_OnlineId.cxx:59
ServiceHandle< ICondSvc >