ATLAS Offline Software
Private Types | List of all members
ClassIDSvc Class Reference

a service to manage and verify CLID assignments in athena. More...

#include <ClassIDSvc.h>

Inheritance diagram for ClassIDSvc:
Collaboration diagram for ClassIDSvc:

Public Member Functions

IClassIDSvc interfaces.
virtual CLID nextAvailableID () const override
 get next available CLID More...
 
virtual bool isIDInUse (const CLID &id) const override
 check if id is used More...
 
virtual bool isNameInUse (const std::string &name) const override
 check if id is used More...
 
virtual StatusCode getTypeNameOfID (const CLID &id, std::string &typeName) const override
 get type name associated with clID (if any) More...
 
virtual StatusCode getTypeInfoNameOfID (const CLID &id, std::string &typeInfoName) const override
 get user assigned type-info name associated with clID More...
 
virtual StatusCode getIDOfTypeName (const std::string &typeName, CLID &id) const override
 get id associated with type name (if any) More...
 
virtual StatusCode getIDOfTypeInfoName (const std::string &typeInfoName, CLID &id) const override
 get id associated with type-info name (if any) More...
 
virtual StatusCode setTypeForID (const CLID &id, const std::string &typeName, const std::string &typeInfoName="") override
 associate type name, package info and type-info name with clID More...
 
Debugging methods.
void dump () const
 dump to MsgStream contents of in memory DB More...
 

Private Types

typedef std::pair< std::string, std::string > TypeName
 
typedef std::unordered_map< CLID, TypeNameCLIDMap
 
typedef std::unordered_map< std::string, CLIDNameMap
 

Gaudi methods.

virtual StatusCode initialize () override
 Gaudi Service Implementation. More...
 
virtual StatusCode reinitialize () override
 
virtual StatusCode finalize () override
 dump CLIDmap to outputFileName; More...
 
void handle (const Incident &inc) override
 implement IIncidentListener More...
 
 ClassIDSvc (const std::string &name, ISvcLocator *svc)
 Standard Constructor. More...
 
std::vector< CLIDsortedIDs () const
 Return all registered IDs in sorted order. More...
 
StatusCode fillDB ()
 get clids from CLIDDB and from registry entries More...
 
bool processCLIDDB (const std::string &fileName)
 load clid/names from a "db" file More...
 
bool getRegistryEntries (const std::string &moduleName)
 load clid/names from a DLL registry More...
 
StatusCode uncheckedSetTypePackageForID (const CLID &id, const std::string &typeName, const std::string &typeInfoName)
 associate type name with clID w/o checking CLID range More...
 
bool maybeRescan () const
 Test to see if anything new has been added to the registry. More...
 

Properties

typedef std::mutex mutex_t
 
typedef std::lock_guard< mutex_tlock_t
 
Gaudi::Property< std::vector< std::string > > m_DBFiles
 
Gaudi::Property< std::string > m_outputFileName
 
CLIDMap m_clidMap
 
NameMap m_nameMap
 
NameMap m_tiNameMap
 
DirSearchPath m_clidDBPath
 The path is which clid db files are to be searched (DATAPATH) More...
 
mutex_t m_mutex
 

Detailed Description

a service to manage and verify CLID assignments in athena.

(clid, class_name) entries are loaded at init from the list of files specifies in "CLIDDBFiles", and from the CLID_Registry of every library. Optionally the resulting m_clidMap can be dumped to "OutputFileName" at finalize time.

Definition at line 36 of file ClassIDSvc.h.

Member Typedef Documentation

◆ CLIDMap

typedef std::unordered_map<CLID, TypeName> ClassIDSvc::CLIDMap
private

Definition at line 40 of file ClassIDSvc.h.

◆ lock_t

typedef std::lock_guard<mutex_t> ClassIDSvc::lock_t
private

Definition at line 133 of file ClassIDSvc.h.

◆ mutex_t

typedef std::mutex ClassIDSvc::mutex_t
private

Definition at line 132 of file ClassIDSvc.h.

◆ NameMap

typedef std::unordered_map<std::string, CLID> ClassIDSvc::NameMap
private

Definition at line 41 of file ClassIDSvc.h.

◆ TypeName

typedef std::pair<std::string, std::string> ClassIDSvc::TypeName
private

Definition at line 39 of file ClassIDSvc.h.

Constructor & Destructor Documentation

◆ ClassIDSvc()

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

Standard Constructor.

Definition at line 271 of file ClassIDSvc.cxx.

272  : base_class(name,svc),
273  m_clidDBPath(System::getEnv("DATAPATH"))
274 {
275 }

Member Function Documentation

◆ dump()

void ClassIDSvc::dump ( ) const

dump to MsgStream contents of in memory DB

Definition at line 198 of file ClassIDSvc.cxx.

199 {
200  lock_t lock (m_mutex);
201  ATH_MSG_INFO( "dump: in memory" );
202 
203  for (CLID clid : sortedIDs()) {
204  const std::string& typeName = m_clidMap.find (clid)->second.first;
205  ATH_MSG_INFO( "CLID: "<< clid << " - type name: " << typeName );
206  }
207  ATH_MSG_INFO( "------------------------------" );
208 }

◆ fillDB()

StatusCode ClassIDSvc::fillDB ( )
private

get clids from CLIDDB and from registry entries

Process the various clid dbs according to user's request.

Definition at line 293 of file ClassIDSvc.cxx.

293  {
294  bool allOK(true);
295  for (const std::string& DBFile : m_DBFiles) {
296  DirSearchPath::path clidDB(DBFile);
297 
298  if (clidDB.is_absolute()) {
299  allOK = processCLIDDB(clidDB.string());
300  } else {
301  std::list<DirSearchPath::path> paths(m_clidDBPath.find_all(clidDB));
302  if (paths.empty()) {
303  ATH_MSG_DEBUG( "Could not resolve clid DB path " << clidDB
304  << " using DATAPATH. Skipping it." );
305  } else {
306  for (const auto& p : paths) {
307  allOK &= processCLIDDB(p.string());
308  }
309  }
310  }
311  }
312  return StatusCode(allOK);
313 }

◆ finalize()

StatusCode ClassIDSvc::finalize ( )
overridevirtual

dump CLIDmap to outputFileName;

Definition at line 240 of file ClassIDSvc.cxx.

241 {
242  if (m_outputFileName != "NULL") {
243  std::ofstream outfile( m_outputFileName );
244  if ( !outfile ) {
245  ATH_MSG_ERROR( "unable to open output CLIDDB file: " << m_outputFileName );
246  return StatusCode::RECOVERABLE;
247  } else {
248  for (CLID clid : sortedIDs()) {
249  const std::string& typeName = m_clidMap[clid].first;
250  const std::string& tiName = m_clidMap[clid].second;
251  outfile << clid << "; " << typeName << "; " << tiName << std::endl;
252  }
253  ATH_MSG_INFO( "finalize: wrote " << m_clidMap.size() <<
254  " entries to output CLIDDB file: " << m_outputFileName );
255  }
256  }
257  return Service::finalize();
258 }

◆ getIDOfTypeInfoName()

StatusCode ClassIDSvc::getIDOfTypeInfoName ( const std::string &  typeInfoName,
CLID id 
) const
overridevirtual

get id associated with type-info name (if any)

Definition at line 162 of file ClassIDSvc.cxx.

164 {
165  lock_t lock (m_mutex);
166  maybeRescan();
167  NameMap::const_iterator iID = m_tiNameMap.find(typeInfoName);
168  if (iID != m_tiNameMap.end()) {
169  id = iID->second;
170  ATH_CONST_MSG_VERBOSE( "getIDOfTypeInfoName(" << typeInfoName << ") CLID is " << id );
171  return StatusCode::SUCCESS;
172  }
173  else {
174  ATH_CONST_MSG_VERBOSE( "getIDOfTypeInfoName(" << typeInfoName << ") no associated CLID found" );
175  return StatusCode::FAILURE;
176  }
177 }

◆ getIDOfTypeName()

StatusCode ClassIDSvc::getIDOfTypeName ( const std::string &  typeName,
CLID id 
) const
overridevirtual

get id associated with type name (if any)

Definition at line 138 of file ClassIDSvc.cxx.

139 {
140  lock_t lock (m_mutex);
141  maybeRescan();
142 
143  NameMap::const_iterator iID = m_nameMap.find(typeName);
144  if (iID != m_nameMap.end()) {
145  id = iID->second;
146  ATH_CONST_MSG_VERBOSE( "getIDOfTypeName(" << typeName << ") CLID is " << id );
147  return StatusCode::SUCCESS;
148  }
149  else if (tryNumeric (typeName, id)) {
150  ATH_CONST_MSG_VERBOSE( "getIDOfTypeName(" << typeName << ") is a numeric CLID" );
151  return StatusCode::SUCCESS;
152  }
153  else {
154  ATH_CONST_MSG_VERBOSE( "getIDOfTypeName(" << typeName << ") no associated CLID found" );
155  return StatusCode::FAILURE;
156  }
157 }

◆ getRegistryEntries()

bool ClassIDSvc::getRegistryEntries ( const std::string &  moduleName)
private

load clid/names from a DLL registry

Definition at line 361 of file ClassIDSvc.cxx.

362 {
363  //not only this is fast, but is necessary to prevent recursion
364  if (!CLIDRegistry::hasNewEntries()) return true;
365 
366  bool allOK(true);
367  size_t newEntries(0);
368  //to speed up processing we only take entries added to CLIDRegistry
369  //since last call (thanks Niels!)
370  for (const auto& [clid, typeName, typeInfoName] : CLIDRegistry::newEntries()) {
371  ATH_MSG_VERBOSE( "reading [" << clid << ", " << typeName << ", " << typeInfoName << "]" );
372  if (uncheckedSetTypePackageForID(clid, typeName, typeInfoName)) {
373  ++newEntries;
374  }
375  else {
376  allOK = false;
377  }
378  }
379 
380  if (allOK) {
381  ATH_MSG_INFO( "getRegistryEntries: read " << newEntries
382  << " CLIDRegistry entries for module " << moduleName );
383  } else {
384  ATH_MSG_ERROR("getRegistryEntries: can not read CLIDRegistry entries for module "
385  << moduleName );
386  }
387 
388  return allOK;
389 }

◆ getTypeInfoNameOfID()

StatusCode ClassIDSvc::getTypeInfoNameOfID ( const CLID id,
std::string &  typeInfoName 
) const
overridevirtual

get user assigned type-info name associated with clID

get type name associated with clID (if any)

Definition at line 116 of file ClassIDSvc.cxx.

117 {
118  lock_t lock (m_mutex);
119  maybeRescan();
120 
121  CLIDMap::const_iterator iID = m_clidMap.find(id);
122  if (iID != m_clidMap.end()) {
123  typeInfoName = iID->second.second;
124  ATH_CONST_MSG_VERBOSE( "getTypeInfoNameOfID(" << id <<
125  ") type-info name is " << typeInfoName );
126  return StatusCode::SUCCESS;
127  }
128  else {
129  ATH_CONST_MSG_VERBOSE( "getTypeInfoNameOfID(" << id <<
130  ") no associated type-info name found" );
131  return StatusCode::FAILURE;
132  }
133 }

◆ getTypeNameOfID()

StatusCode ClassIDSvc::getTypeNameOfID ( const CLID id,
std::string &  typeName 
) const
overridevirtual

get type name associated with clID (if any)

Definition at line 96 of file ClassIDSvc.cxx.

97 {
98  lock_t lock (m_mutex);
99  maybeRescan();
100 
101  CLIDMap::const_iterator iID = m_clidMap.find(id);
102  if (iID != m_clidMap.end()) {
103  typeName = iID->second.first;
104  ATH_CONST_MSG_VERBOSE( "getTypeNameOfID(" << id << ") type name is " << typeName );
105  return StatusCode::SUCCESS;
106  }
107  else {
108  ATH_CONST_MSG_VERBOSE( "getTypeNameOfID(" << id << ") no associated type name found" );
109  return StatusCode::FAILURE;
110  }
111 }

◆ handle()

void ClassIDSvc::handle ( const Incident &  inc)
override

implement IIncidentListener

Definition at line 261 of file ClassIDSvc.cxx.

262 {
263  lock_t lock (m_mutex);
264  const ModuleLoadedIncident& modInc(dynamic_cast<const ModuleLoadedIncident&>(inc));
265 
266  getRegistryEntries(modInc.module());
267 }

◆ initialize()

StatusCode ClassIDSvc::initialize ( )
overridevirtual

Gaudi Service Implementation.

Definition at line 212 of file ClassIDSvc.cxx.

213 {
214  ATH_MSG_VERBOSE( "Initializing " << name() ) ;
215 
217 
218  // set up the incident service:
219  ServiceHandle<IIncidentSvc> pIncSvc ("IncidentSvc", name());
220  CHECK( pIncSvc.retrieve() );
221 
222  pIncSvc->addListener(this, ModuleLoadedIncident::TYPE(), /*priority*/ 100);
223  pIncSvc->release();
224 
225  CHECK( maybeRescan() ); // calls fillDB() if not already done
226 
227  return StatusCode::SUCCESS;
228 }

◆ isIDInUse()

bool ClassIDSvc::isIDInUse ( const CLID id) const
overridevirtual

check if id is used

Definition at line 79 of file ClassIDSvc.cxx.

79  {
80  lock_t lock (m_mutex);
81  maybeRescan();
82  return m_clidMap.find(id) != m_clidMap.end();
83 }

◆ isNameInUse()

bool ClassIDSvc::isNameInUse ( const std::string &  name) const
overridevirtual

check if id is used

Definition at line 87 of file ClassIDSvc.cxx.

87  {
88  lock_t lock (m_mutex);
89  maybeRescan();
90  return m_nameMap.find(name) != m_nameMap.end();
91 }

◆ maybeRescan()

bool ClassIDSvc::maybeRescan ( ) const
private

Test to see if anything new has been added to the registry.

Definition at line 448 of file ClassIDSvc.cxx.

449 {
450  // thread-safe because calls are protected by mutex or during initialize
451  ClassIDSvc* nc ATLAS_THREAD_SAFE = const_cast<ClassIDSvc*>(this);
452 
453  // read CLID database in case initialize() was not called yet (ATR-23634)
454  [[maybe_unused]] static bool fillDB ATLAS_THREAD_SAFE = nc->fillDB().isSuccess();
455 
456  // make sure registry is up-to-date
457  bool status = nc->getRegistryEntries ("ALL");
458 
459  return status && fillDB;
460 }

◆ nextAvailableID()

CLID ClassIDSvc::nextAvailableID ( ) const
overridevirtual

get next available CLID

Exceptions
std::runtime_errorif no CLID can be allocated virtual CLID nextAvailableID() const;
std::runtime_errorif no CLID can be allocated

Definition at line 60 of file ClassIDSvc.cxx.

60  {
61  lock_t lock (m_mutex);
62  maybeRescan();
64  while (valid <= CLIDdetail::MAXCLID &&
65  m_clidMap.find(valid) != m_clidMap.end())
66  {
67  ++valid;
68  }
69 
70  if (valid > CLIDdetail::MAXCLID) {
71  throw std::runtime_error("ClassIDSvc::nextAvailableID: none in range");
72  }
73 
74  return valid;
75 }

◆ processCLIDDB()

bool ClassIDSvc::processCLIDDB ( const std::string &  fileName)
private

load clid/names from a "db" file

Definition at line 317 of file ClassIDSvc.cxx.

318 {
319  std::ifstream ifile(fileName);
320  if (!ifile) {
321  ATH_MSG_WARNING( "processCLIDDB: unable to open " << fileName );
322  return true;
323  }
324 
325  bool allOK(true);
326  unsigned int newEntries(0);
327  std::string line;
328  // Format: CLID;typeName[;typeInfoName]
329  while (allOK && std::getline(ifile, line)) {
330  std::vector<std::string> columns;
331  boost::split(columns, line, boost::is_any_of(";"));
332  long id(-1);
333  if (columns.size()>=2) {
334  boost::trim(columns[0]);
335  try {
336  id = std::stol(columns[0]);
337  } catch (const std::logic_error& e) {
338  ATH_MSG_ERROR( "processCLIDDB: Can't cast ["<< columns[0] << "] to long (clid): " << e.what() );
339  allOK = false;
340  }
341 
343  columns.size()>2 ? columns[2] : "")) {
344  ++newEntries;
345  }
346  }
347  }
348 
349  if (!allOK) {
350  ATH_MSG_ERROR( "processCLIDDB: processing record '" << line
351  << "' from CLIDDB file: " << fileName );
352  } else {
353  ATH_MSG_DEBUG( "processCLIDDB: read " << newEntries <<
354  " entries from CLIDDB file: " << fileName );
355  }
356 
357  return allOK;
358 }

◆ reinitialize()

StatusCode ClassIDSvc::reinitialize ( )
overridevirtual

Definition at line 232 of file ClassIDSvc.cxx.

232  {
233  ATH_MSG_INFO( "RE-initializing " << name() ) ;
234  CHECK( fillDB() );
235  return StatusCode::SUCCESS;
236 }

◆ setTypeForID()

StatusCode ClassIDSvc::setTypeForID ( const CLID id,
const std::string &  typeName,
const std::string &  typeInfoName = "" 
)
overridevirtual

associate type name, package info and type-info name with clID

associate type name with clID

Definition at line 182 of file ClassIDSvc.cxx.

185 {
186  lock_t lock (m_mutex);
187  if (id < CLIDdetail::MINCLID || id > CLIDdetail::MAXCLID) {
188  ATH_MSG_ERROR( "setTypeNameForID: input id " << id
189  << " is out of allowed range " << CLIDdetail::MINCLID
190  << " : " << CLIDdetail::MAXCLID );
191  return StatusCode::FAILURE;
192  }
193  return uncheckedSetTypePackageForID(id, typeName, typeInfoName);
194 }

◆ sortedIDs()

std::vector< CLID > ClassIDSvc::sortedIDs ( ) const
private

Return all registered IDs in sorted order.

Definition at line 279 of file ClassIDSvc.cxx.

280 {
281  std::vector<CLID> ids;
282  ids.reserve (m_clidMap.size());
283  for (const auto& p : m_clidMap) {
284  ids.push_back (p.first);
285  }
286  std::sort (ids.begin(), ids.end());
287  return ids;
288 }

◆ uncheckedSetTypePackageForID()

StatusCode ClassIDSvc::uncheckedSetTypePackageForID ( const CLID id,
const std::string &  typeName,
const std::string &  typeInfoName 
)
private

associate type name with clID w/o checking CLID range

Definition at line 393 of file ClassIDSvc.cxx.

396 {
397  // process "raw" typeName
398  std::string procName(typeName);
399  boost::trim(procName);
400 
401  if (procName.empty()) {
402  ATH_MSG_ERROR( "Empty type name for CLID " << id );
403  return StatusCode::FAILURE;
404  }
405 
406  // assign typeInfoName
407  std::string procTiName;
408  if (typeInfoName.empty()) {
409  procTiName = procName;
410  }
411  else {
412  procTiName = typeInfoName;
413  boost::trim(procTiName);
414  }
415 
416  // insert into CLID map
417  const auto& [clid_it, clid_success] = m_clidMap.try_emplace(id, procName, procTiName);
418  if (!clid_success && clid_it->second!=std::make_pair(procName,procTiName)) {
419  ATH_MSG_ERROR( "Cannot set type " << std::make_pair(procName,procTiName) << " for CLID " <<
420  id << ": known type for this ID " << clid_it->second );
421  return StatusCode::FAILURE;
422  }
423 
424  // insert into type name map
425  const auto& [name_it, name_success] = m_nameMap.try_emplace(procName, id);
426  if (!name_success && name_it->second!=id) {
427  ATH_MSG_ERROR( "Cannot set CLID " << id << " for type name '"
428  << procName << "': known CLID for this name " << name_it->second );
429  return StatusCode::FAILURE;
430  }
431 
432  // insert into typeInfo map
433  const auto& [info_it, info_success] = m_tiNameMap.try_emplace(procTiName, id);
434  if (!info_success && info_it->second!=id) {
435  ATH_MSG_ERROR( "Cannot set CLID " << id << " for type-info name '"
436  << procTiName << "' and type '" << procName
437  << "': known CLID for this type-info name " << info_it->second );
438  return StatusCode::FAILURE;
439  }
440 
441  ATH_MSG_VERBOSE( "Set type name '" << procName << "' for CLID " << id <<
442  " with type-info name '" << procTiName << "'" );
443 
444  return StatusCode::SUCCESS;
445 }

Member Data Documentation

◆ m_clidDBPath

DirSearchPath ClassIDSvc::m_clidDBPath
private

The path is which clid db files are to be searched (DATAPATH)

Definition at line 129 of file ClassIDSvc.h.

◆ m_clidMap

CLIDMap ClassIDSvc::m_clidMap
private

Definition at line 124 of file ClassIDSvc.h.

◆ m_DBFiles

Gaudi::Property<std::vector<std::string> > ClassIDSvc::m_DBFiles
private
Initial value:
{this, "CLIDDBFiles", {"clid.db"},
"List of db files with (CLID, class_name) entries. Loaded at init in svc maps. Files are looked up in DATAPATH",
"OrderedSet<std::string>"}

Definition at line 117 of file ClassIDSvc.h.

◆ m_mutex

mutex_t ClassIDSvc::m_mutex
mutableprivate

Definition at line 134 of file ClassIDSvc.h.

◆ m_nameMap

NameMap ClassIDSvc::m_nameMap
private

Definition at line 125 of file ClassIDSvc.h.

◆ m_outputFileName

Gaudi::Property<std::string> ClassIDSvc::m_outputFileName
private
Initial value:
{this, "OutputFileName", "NULL",
"Path to clid.db file for writing. By default ('NULL') to not create the file."}

Definition at line 121 of file ClassIDSvc.h.

◆ m_tiNameMap

NameMap ClassIDSvc::m_tiNameMap
private

Definition at line 126 of file ClassIDSvc.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
checkFileSG.line
line
Definition: checkFileSG.py:75
CLIDRegistry::newEntries
static CLIDVector_t newEntries()
returns an iterator range over the entries added since last time newEntries was called
Definition: CLIDRegistry.cxx:117
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
CLIDdetail::MINCLID
const unsigned long MINCLID
Definition: CLIDRegistry.h:24
ClassIDSvc::m_nameMap
NameMap m_nameMap
Definition: ClassIDSvc.h:125
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: ClassIDSvc.cxx:41
initialize
void initialize()
Definition: run_EoverP.cxx:894
ClassIDSvc::m_mutex
mutex_t m_mutex
Definition: ClassIDSvc.h:134
CLIDdetail::MAXCLID
const unsigned long MAXCLID
2**31 - 1
Definition: CLIDRegistry.h:25
ClassIDSvc::fillDB
StatusCode fillDB()
get clids from CLIDDB and from registry entries
Definition: ClassIDSvc.cxx:293
ClassIDSvc::m_tiNameMap
NameMap m_tiNameMap
Definition: ClassIDSvc.h:126
ATH_CONST_MSG_VERBOSE
#define ATH_CONST_MSG_VERBOSE(x)
Definition: ClassIDSvc.cxx:47
ClassIDSvc::m_clidDBPath
DirSearchPath m_clidDBPath
The path is which clid db files are to be searched (DATAPATH)
Definition: ClassIDSvc.h:129
calibdata.valid
list valid
Definition: calibdata.py:45
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
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: ClassIDSvc.cxx:42
CLIDRegistry::hasNewEntries
static bool hasNewEntries()
registry accessors (used by ClassIDSvc)
Definition: CLIDRegistry.cxx:111
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
ClassIDSvc::getRegistryEntries
bool getRegistryEntries(const std::string &moduleName)
load clid/names from a DLL registry
Definition: ClassIDSvc.cxx:361
ClassIDSvc::processCLIDDB
bool processCLIDDB(const std::string &fileName)
load clid/names from a "db" file
Definition: ClassIDSvc.cxx:317
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
RunExEngineTestITk.DBFile
DBFile
Definition: RunExEngineTestITk.py:49
TYPE
#define TYPE(CODE, TYP, IOTYP)
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: ClassIDSvc.cxx:43
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:220
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
ClassIDSvc::sortedIDs
std::vector< CLID > sortedIDs() const
Return all registered IDs in sorted order.
Definition: ClassIDSvc.cxx:279
ClassIDSvc::maybeRescan
bool maybeRescan() const
Test to see if anything new has been added to the registry.
Definition: ClassIDSvc.cxx:448
ClassIDSvc::m_clidMap
CLIDMap m_clidMap
Definition: ClassIDSvc.h:124
python.TriggerAPI.TriggerAPISession.columns
columns
Definition: TriggerAPISession.py:432
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: ClassIDSvc.cxx:44
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
ClassIDSvc::uncheckedSetTypePackageForID
StatusCode uncheckedSetTypePackageForID(const CLID &id, const std::string &typeName, const std::string &typeInfoName)
associate type name with clID w/o checking CLID range
Definition: ClassIDSvc.cxx:393
ClassIDSvc::m_outputFileName
Gaudi::Property< std::string > m_outputFileName
Definition: ClassIDSvc.h:121
GRLStrUtil::trim
void trim(std::string &input)
Definition: StrUtil.cxx:12
ReadCalibFromCool.typeName
typeName
Definition: ReadCalibFromCool.py:477
merge.status
status
Definition: merge.py:17
ClassIDSvc
a service to manage and verify CLID assignments in athena.
Definition: ClassIDSvc.h:37
LArCellNtuple.ifile
string ifile
Definition: LArCellNtuple.py:133
ATLAS_THREAD_SAFE
#define ATLAS_THREAD_SAFE
Definition: checker_macros.h:211
ClassIDSvc::lock_t
std::lock_guard< mutex_t > lock_t
Definition: ClassIDSvc.h:133
ClassIDSvc::m_DBFiles
Gaudi::Property< std::vector< std::string > > m_DBFiles
Definition: ClassIDSvc.h:117
PrepareReferenceFile.outfile
outfile
Definition: PrepareReferenceFile.py:42
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: ClassIDSvc.cxx:45
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
plotBeamSpotMon.nc
int nc
Definition: plotBeamSpotMon.py:83
test_athena_ntuple_dumper.paths
paths
Definition: test_athena_ntuple_dumper.py:7
ServiceHandle< IIncidentSvc >