|  | ATLAS Offline Software
    | 
 
 
 
#include <IOVRegistrationSvc.h>
|  | 
|  | IOVRegistrationSvc (const std::string &name, ISvcLocator *svc) | 
|  | 
| virtual | ~IOVRegistrationSvc () | 
|  | 
| virtual const InterfaceID & | type () const | 
|  | Service type.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName) const | 
|  | Register IOV DB for an object given its typeName - run/LB numbers interval or times interval and tag are taken from JobOptions Choice between run/LB and timestamp given in JobOptions.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &tag) const | 
|  | Register IOV DB for an object given its typeName - run/LB numbers interval or times interval taken from JobOptions tag is specified Choice between run/LB and timestamp given in JobOptions.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &tag) const | 
|  | Register IOV DB for an object given its typeName and its key run/LB numbers interval or times interval and tag are taken from JobOptions Choice between run/LB and timestamp given in JobOptions.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &tag, unsigned int beginRun, unsigned int endRun, unsigned int beginLB, unsigned int endLB) const | 
|  | Register IOV DB for an object given its typeName, tag and run/LB numbers interval.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &tag, uint64_t beginTime, uint64_t endTime) const | 
|  | Register IOV DB for an object given its typeName, tag and times interval.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &tag, unsigned int beginRun, unsigned int endRun, unsigned int beginLB, unsigned int endLB) const | 
|  | Register IOV DB for an object given its typeName, key, tag and run/LB numbers interval.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &tag, uint64_t beginTime, uint64_t endTime) const | 
|  | Register IOV DB for an object given its typeName, key, tag and times interval.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &folder, const std::string &tag, unsigned int beginRun, unsigned int endRun, unsigned int beginLB, unsigned int endLB) const | 
|  | Register IOV DB for an object given its typeName, key, folder, tag and run/LB numbers interval.  More... 
 | 
|  | 
| virtual StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &folder, const std::string &tag, uint64_t beginTime, uint64_t endTime) const | 
|  | Register IOV DB for an object given its typeName, key, folder, tag and times interval.  More... 
 | 
|  | 
| virtual StatusCode | initialize () | 
|  | Initialize AlgTool.  More... 
 | 
|  | 
| virtual StatusCode | finalize () | 
|  | Finalize AlgTool.  More... 
 | 
|  | 
|  | 
| StatusCode | registerIOV (const std::string &typeName, const std::string &key, const std::string &folder, const std::string &tag, const IOVTime &begin, const IOVTime &end) const | 
|  | 
| StatusCode | registerIOVCOOL (const std::string &typeName, const std::string &key, const std::string &folderName, const std::string &tag, const IOVTime &begin, const IOVTime &end) const | 
|  | 
| cool::StorageType::TypeId | coralToCoolType (const std::string &parname, const std::string &coralName) const | 
|  | 
| StatusCode | getStringAddress (const CLID &clid, const std::string &key, std::string &saddr) const | 
|  | 
| uint64_t | timeToNano (const unsigned long int timesec) const | 
|  | 
| virtual StatusCode | buildDescription (const std::string &identifier, const std::string &value, std::string &description) const | 
|  | Build the folder description field add in front of the description the value with identifier-markups.  More... 
 | 
|  | 
| StatusCode | splitAddress (const std::string &address, std::string &address_header, std::string &address_data) const | 
|  | Split address in its header and data parts.  More... 
 | 
|  | 
|  | 
| Gaudi::Property< bool > | m_recreateFolders {this, "RecreateFolders", false} | 
|  | 
| Gaudi::Property< unsigned int > | m_beginRun {this, "BeginRun", IOVTime::MINRUN} | 
|  | 
| Gaudi::Property< unsigned int > | m_endRun {this, "EndRun", IOVTime::MAXRUN} | 
|  | 
| Gaudi::Property< unsigned int > | m_beginLB {this, "BeginLB", IOVTime::MINEVENT} | 
|  | 
| Gaudi::Property< unsigned int > | m_endLB {this, "EndLB", IOVTime::MAXEVENT} | 
|  | 
| Gaudi::Property< unsigned long > | m_beginTime {this, "BeginTime", IOVTime::MINTIMESTAMP} | 
|  | 
| Gaudi::Property< unsigned long > | m_endTime {this, "EndTime", IOVTime::MAXEVENT} | 
|  | 
| Gaudi::Property< std::string > | m_tag {this, "IOVDbTag", ""} | 
|  | 
| Gaudi::Property< bool > | m_timeStamp {this, "IOVDbTimeStamp", false} | 
|  | 
| Gaudi::Property< std::string > | m_tagDescription {this, "TagDescription", "Athena IOVRegistrationSvc"} | 
|  | 
| Gaudi::Property< bool > | m_writeKeyInfo {this, "writeKeyInfo", true} | 
|  | 
| Gaudi::Property< bool > | m_userTags {this, "userTags", true} | 
|  | 
| Gaudi::Property< bool > | m_userTagsUH {this, "userTagsUpdateHead", false} | 
|  | 
| Gaudi::Property< bool > | m_svFolder {this, "SVFolder", false} | 
|  | 
| Gaudi::Property< bool > | m_payloadTable {this, "PayloadTable", false} | 
|  | 
| Gaudi::Property< bool > | m_forceGlobalIOV {this, "UseGlobalIOVForCollections", false} | 
|  | 
| Gaudi::Property< std::vector< std::string > > | m_overrideName {this, "OverrideNames", {}} | 
|  | 
| Gaudi::Property< std::vector< std::string > > | m_overrideType {this, "OverrideTypes", {}} | 
|  | 
| ServiceHandle< IIOVCondDbSvc > | m_iov_db | 
|  | 
| ServiceHandle< StoreGateSvc > | m_detStore | 
|  | 
| ServiceHandle< IAddressCreator > | m_persSvc | 
|  | 
| ServiceHandle< IClassIDSvc > | m_clidSvc | 
|  | 
Properties:
Definition at line 53 of file IOVRegistrationSvc.h.
◆ IOVRegistrationSvc()
      
        
          | IOVRegistrationSvc::IOVRegistrationSvc | ( | const std::string & | name, | 
        
          |  |  | ISvcLocator * | svc | 
        
          |  | ) |  |  | 
      
 
 
◆ ~IOVRegistrationSvc()
  
  | 
        
          | IOVRegistrationSvc::~IOVRegistrationSvc | ( |  | ) |  |  | virtual | 
 
 
◆ buildDescription()
  
  | 
        
          | StatusCode IOVRegistrationSvc::buildDescription | ( | const std::string & | identifier, |  
          |  |  | const std::string & | value, |  
          |  |  | std::string & | description |  
          |  | ) |  | const |  | privatevirtual | 
 
Build the folder description field add in front of the description the value with identifier-markups. 
Definition at line 1129 of file IOVRegistrationSvc.cxx.
 1136     return StatusCode::FAILURE;
 
 1139   return StatusCode::SUCCESS;
 
 
 
 
◆ coralToCoolType()
  
  | 
        
          | cool::StorageType::TypeId IOVRegistrationSvc::coralToCoolType | ( | const std::string & | parname, |  
          |  |  | const std::string & | coralName |  
          |  | ) |  | const |  | private | 
 
Definition at line 1077 of file IOVRegistrationSvc.cxx.
 1080   std::string coralType=coralName;
 
 1085       ATH_MSG_INFO (
"Override default type for attribute " << 
 
 1086                     parname << 
" - use " << coralType);
 
 1092   if (coralType==
"bool") 
return cool::StorageType::Bool;
 
 1093   if (coralType==
"UChar" || coralType==
"unsigned char") 
return cool::StorageType::UChar;
 
 1094   if (coralType==
"Int16") 
return cool::StorageType::Int16;
 
 1095   if (coralType==
"UInt16") 
return cool::StorageType::UInt16;
 
 1096   if (coralType==
"Int32" || coralType==
"int") 
return cool::StorageType::Int32;
 
 1097   if (coralType==
"UInt32" || coralType==
"unsigned int") 
return cool::StorageType::UInt32;
 
 1098   if (coralType==
"UInt63" || coralType==
"unsigned long long") 
return cool::StorageType::UInt63;
 
 1099   if (coralType==
"Int64" || coralType==
"long long") 
return cool::StorageType::Int64;
 
 1101   if (coralType==
"Double" || coralType==
"double") 
return cool::StorageType::Double;
 
 1102   if (coralType==
"String255") 
return cool::StorageType::String255;
 
 1103   if (coralType==
"String4k" || coralType==
"string") 
return cool::StorageType::String4k;
 
 1104   if (coralType==
"String64k") 
return cool::StorageType::String64k;
 
 1105   if (coralType==
"String16M") 
return cool::StorageType::String16M;
 
 1106   if (coralType==
"blob" || coralType==
"Blob64k") 
 
 1107     return cool::StorageType::Blob64k;
 
 1108   if (coralType==
"Blob16M") 
return cool::StorageType::Blob16M;
 
 1111   ATH_MSG_FATAL (
"No COOL mapping defined for CORAL type " << coralName);
 
 
 
 
◆ finalize()
  
  | 
        
          | StatusCode IOVRegistrationSvc::finalize | ( |  | ) |  |  | virtual | 
 
 
◆ getStringAddress()
  
  | 
        
          | StatusCode IOVRegistrationSvc::getStringAddress | ( | const CLID & | clid, |  
          |  |  | const std::string & | key, |  
          |  |  | std::string & | saddr |  
          |  | ) |  | const |  | private | 
 
 
◆ initialize()
  
  | 
        
          | StatusCode IOVRegistrationSvc::initialize | ( |  | ) |  |  | virtual | 
 
Initialize AlgTool. 
Definition at line 71 of file IOVRegistrationSvc.cxx.
   76     if ( 
sc.isFailure() ) {
 
   78       return StatusCode::FAILURE;
 
   85        return StatusCode::FAILURE;
 
   90     if ( 
sc.isFailure() ) {
 
   92       return StatusCode::FAILURE;
 
   98     if ( 
sc != StatusCode::SUCCESS ) {
 
   99         ATH_MSG_ERROR (
" Cannot get IAddressCreator interface of the EventPersistencySvc ");
 
  107     if (
sc != StatusCode::SUCCESS ) {
 
  108         ATH_MSG_ERROR (
" Cannot get IClassIDSvc interface of the CLIDSvc " );
 
  132       ATH_MSG_FATAL (
"Inconsistent settings of OverrideNames and OverrideTypes parameters");
 
  133       return StatusCode::FAILURE;
 
  138     return StatusCode::SUCCESS;
 
 
 
 
◆ registerIOV() [1/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName | ) | const |  | virtual | 
 
Register IOV DB for an object given its typeName - run/LB numbers interval or times interval and tag are taken from JobOptions Choice between run/LB and timestamp given in JobOptions. 
Definition at line 151 of file IOVRegistrationSvc.cxx.
  153   std::string 
key = 
"";
 
 
 
 
◆ registerIOV() [2/10]
Definition at line 387 of file IOVRegistrationSvc.cxx.
  400     if (spec_key.empty())
 
  406     msg() << 
" spec_key " << spec_key << 
endmsg;
 
  409           << 
" - end time: "     << 
stop 
  414        start.isTimestamp() != 
stop.isTimestamp() ||
 
  415        start.isRunEvent() != 
stop.isRunEvent()) {
 
  417                        << 
" isBoth: " << 
start.isBoth() << 
":" << 
stop.isBoth() 
 
  418                        << 
" isTimestamp: " << 
start.isTimestamp() << 
":" << 
stop.isTimestamp() 
 
  419                        << 
" isRunEvent: " << 
start.isRunEvent() << 
":" << 
stop.isRunEvent());
 
  420     return( StatusCode::FAILURE);
 
 
 
 
◆ registerIOV() [3/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | key, |  
          |  |  | const std::string & | folder, |  
          |  |  | const std::string & | tag, |  
          |  |  | uint64_t | beginTime, |  
          |  |  | uint64_t | endTime |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, key, folder, tag and times interval. 
Definition at line 361 of file IOVRegistrationSvc.cxx.
  369   start.setTimestamp( beginTime );
 
 
 
 
◆ registerIOV() [4/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | key, |  
          |  |  | const std::string & | folder, |  
          |  |  | const std::string & | tag, |  
          |  |  | unsigned int | beginRun, |  
          |  |  | unsigned int | endRun, |  
          |  |  | unsigned int | beginLB, |  
          |  |  | unsigned int | endLB |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, key, folder, tag and run/LB numbers interval. 
Definition at line 337 of file IOVRegistrationSvc.cxx.
  347   start.setRunEvent( (
unsigned long)beginRun, (
unsigned long)beginLB );
 
  349   stop.setRunEvent ( (
unsigned long)endRun,   (
unsigned long)endLB );
 
 
 
 
◆ registerIOV() [5/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | key, |  
          |  |  | const std::string & | tag |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName and its key run/LB numbers interval or times interval and tag are taken from JobOptions Choice between run/LB and timestamp given in JobOptions. 
Definition at line 219 of file IOVRegistrationSvc.cxx.
 
 
◆ registerIOV() [6/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | key, |  
          |  |  | const std::string & | tag, |  
          |  |  | uint64_t | beginTime, |  
          |  |  | uint64_t | endTime |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, key, tag and times interval. 
Definition at line 317 of file IOVRegistrationSvc.cxx.
  324   start.setTimestamp( beginTime );
 
 
 
 
◆ registerIOV() [7/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | key, |  
          |  |  | const std::string & | tag, |  
          |  |  | unsigned int | beginRun, |  
          |  |  | unsigned int | endRun, |  
          |  |  | unsigned int | beginLB, |  
          |  |  | unsigned int | endLB |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, key, tag and run/LB numbers interval. 
Definition at line 295 of file IOVRegistrationSvc.cxx.
  304   start.setRunEvent( (
unsigned long)beginRun, (
unsigned long)beginLB );
 
  306   stop.setRunEvent ( (
unsigned long)endRun,   (
unsigned long)endLB );
 
 
 
 
◆ registerIOV() [8/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | tag |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName - run/LB numbers interval or times interval taken from JobOptions tag is specified Choice between run/LB and timestamp given in JobOptions. 
Definition at line 185 of file IOVRegistrationSvc.cxx.
  187   std::string 
key = 
"";
 
 
 
 
◆ registerIOV() [9/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | tag, |  
          |  |  | uint64_t | beginTime, |  
          |  |  | uint64_t | endTime |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, tag and times interval. 
Definition at line 274 of file IOVRegistrationSvc.cxx.
  280   start.setTimestamp( beginTime );
 
  284   std::string 
key = 
"";
 
 
 
 
◆ registerIOV() [10/10]
  
  | 
        
          | StatusCode IOVRegistrationSvc::registerIOV | ( | const std::string & | typeName, |  
          |  |  | const std::string & | tag, |  
          |  |  | unsigned int | beginRun, |  
          |  |  | unsigned int | endRun, |  
          |  |  | unsigned int | beginLB, |  
          |  |  | unsigned int | endLB |  
          |  | ) |  | const |  | virtual | 
 
Register IOV DB for an object given its typeName, tag and run/LB numbers interval. 
Definition at line 252 of file IOVRegistrationSvc.cxx.
  260   start.setRunEvent( (
unsigned long)beginRun, (
unsigned long)beginLB );
 
  262   stop.setRunEvent ( (
unsigned long)endRun,   (
unsigned long)endLB );
 
  263   std::string 
key = 
"";
 
 
 
 
◆ registerIOVCOOL()
Definition at line 435 of file IOVRegistrationSvc.cxx.
  452     if (
sc.isFailure()) {
 
  454     return( StatusCode::FAILURE);
 
  472     bool storeRef          = 
true;
 
  473     bool storeAttrListColl = 
false;
 
  474     bool needSGaddr=
false;
 
  475     if (
"AthenaAttributeList" == 
typeName) {
 
  479     if (
"CondAttrListCollection" == 
typeName) {
 
  481         storeAttrListColl  = 
true;
 
  489     IOpaqueAddress* addr=0;
 
  490     std::string 
key = spec_key; 
 
  491     std::vector<CLID> symlinks;
 
  499           return( StatusCode::FAILURE);
 
  506         addr = 
proxy->address();
 
  511           ATH_MSG_ERROR (
"Could not get proxy for clid " << clid << 
" and key " << 
key);
 
  512           return( StatusCode::FAILURE );
 
  516         addr = 
proxy->address();
 
  521           symlinks = 
proxy->transientID();
 
  522           auto it = 
std::find (symlinks.begin(), symlinks.end(), clid);
 
  523           if (
it != symlinks.end()) {
 
  532         storeAttrListColl  = 
true;
 
  537       if (
sc.isFailure()) {
 
  538         ATH_MSG_WARNING (
"Could not get string from IOpaqueAddress for clid " << clid
 
  539                          << 
" is BAD_STORAGE_TYPE: " << (
sc == IConversionSvc::Status::BAD_STORAGE_TYPE));
 
  540       return( StatusCode::FAILURE);
 
  549         return( StatusCode::FAILURE );
 
  553         if (
"AthenaAttributeList" == 
typeName) {
 
  554           saddr=
"<address_header service_type=\"256\" clid=\"40774348\" /> POOLContainer_AthenaAttributeList][CLID=x";
 
  555         } 
else if (
"CondAttrListCollection" == 
typeName) {
 
  556           saddr=
"<address_header service_type=\"256\" clid=\"1238547719\" /> POOLContainer_CondAttrListCollection][CLID=x";
 
  565                        << 
" Storing AttrListCollection: " << storeAttrListColl);
 
  570     std::string local_folder;
 
  579     cool::IDatabasePtr 
db = 
m_iov_db->getDatabase(
false); 
 
  582         return(StatusCode::FAILURE);       
 
  585     const cool::DatabaseId& dbid=
db->databaseId();
 
  587     bool dbidprod=(dbid.find(
"oracle")!=std::string::npos && (
 
  588                dbid.find(
"ATLAS_COOLONL_")!=std::string::npos ||
 
  589                dbid.find(
"ATLAS_COOLOFL_")!=std::string::npos ||
 
  590                dbid.find(
"ATLAS_COOL_")!=std::string::npos));
 
  592     bool dbidwriter=(dbid.find(
"oracle")!=std::string::npos && 
 
  593              dbid.find(
"_W")!=std::string::npos);
 
  594     ATH_MSG_DEBUG (
"Identified prod/writer " << dbidprod << dbidwriter);
 
  597       ATH_MSG_FATAL (
"Direct update of production Oracle servers from Athena is FORBIDDEN");
 
  598       ATH_MSG_FATAL (
"Please write to SQLite file and then merge with AtlCoolMerge.py");
 
  599       return StatusCode::FAILURE;
 
  607         if (
"CondAttrListCollection"==
typeName) {
 
  612         return StatusCode::FAILURE;
 
  614         } 
else if (storeAttrListColl) {
 
  623                                    << addr << 
" " << attrAddr << 
" " << attrListColl);
 
  625           ATH_MSG_ERROR (
"Could not extract ptr for CondAttrListCollAddress ");
 
  626           return StatusCode::FAILURE;
 
  629         ATH_MSG_ERROR (
"Cannot write out collection of POOLref without streaming them first" );
 
  630         return StatusCode::FAILURE;
 
  634           if (StatusCode::SUCCESS!=
m_detStore->retrieve(attrList,
key)) {
 
  637         return StatusCode::FAILURE;
 
  652     bool createFolders = 
false;
 
  654     if(
db->existsFolder(local_folder)) {
 
  658             if (dbidprod || dbidwriter) {
 
  659           ATH_MSG_FATAL (
"Apparent attempt to delete folder on production COOL schema " << dbid);
 
  660           return StatusCode::FAILURE;
 
  663         ATH_MSG_DEBUG (
" Deleting existing COOL Folder " << local_folder);
 
  664         db->dropNode( local_folder ); 
 
  665         createFolders = 
true;
 
  670         folder = 
db->getFolder(local_folder);
 
  676                            << 
" does not exist - must create it");
 
  677         createFolders = 
true;
 
  681     std::string address_header;
 
  682     std::string address_data;
 
  685     if (
sc.isFailure()) {
 
  687                            << 
"addr: " << saddr << 
"\n" 
  688                            << 
"hdr:  " << address_header << 
"\n" 
  689                            << 
"data  " << address_data);
 
  690         return( StatusCode::FAILURE);
 
  693               << 
"  hdr:  " << address_header << 
endmsg 
  694               << 
"  data: " << address_data << 
endmsg;
 
  700           ATH_MSG_FATAL (
"Apparent attempt to create folder using writer account, dbID is: " << dbid);
 
  701           return StatusCode::FAILURE;
 
  720         std::string mergedNames;
 
  724         if (
sc.isFailure()) {
 
  725                 ATH_MSG_ERROR (
"Could not merge towards merged description: " 
  727         return( StatusCode::FAILURE);
 
  732         if (
sc.isFailure()) {
 
  733                 ATH_MSG_ERROR (
"Could not merge towards merged description: " 
  734                                << 
"addrHeader: " << address_header);
 
  735         return( StatusCode::FAILURE);
 
  745           if (
sc.isFailure()) {
 
  746         ATH_MSG_ERROR (
"Could not merge towards merged description: " 
  748         return( StatusCode::FAILURE);
 
  753         if (!symlinks.empty()) {
 
  754         std::string symlinkTypes;
 
  755         for (
unsigned int i = 0; 
i < symlinks.size(); ++
i) {
 
  758             if (
sc.isFailure()) {
 
  761             return( StatusCode::FAILURE);
 
  765                                        << symlinks[
i] << 
" " << 
type);
 
  767             if (symlinkTypes.size()) symlinkTypes += 
':';
 
  768             symlinkTypes += 
type;
 
  771         if (
sc.isFailure()) {
 
  772                   msg() << MSG::ERROR <<
"Could not merge symlinks to merged description: " 
  773             << 
"symlink types: ";
 
  774             for (
unsigned int i = 0; 
i < symlinkTypes.size(); ++
i) {
 
  775                       msg() << MSG::ERROR << symlinkTypes[
i] << 
" ";
 
  778             return( StatusCode::FAILURE);
 
  782                                  << symlinkTypes << 
" " << mergedNames);
 
  789         if (!
start.isValid() || 
 
  791         start.isTimestamp() != 
stop.isTimestamp() || 
 
  792         start.isRunEvent() != 
stop.isRunEvent()) {
 
  793                 ATH_MSG_ERROR (
"Invalid times: start isValid/isTimeStamp/isRunEvent " 
  794                                << 
"addrHeader: " << address_header
 
  795                                << 
start.isValid() << 
" " << 
start.isTimestamp() << 
" "  
  796                                << 
start.isRunEvent());
 
  797                 ATH_MSG_ERROR (
"Invalid times: stop isValid/isTimeStamp/isRunEvent " 
  798                                << 
"addrHeader: " << address_header
 
  799                                << 
stop.isValid() << 
" " << 
stop.isTimestamp() << 
" "  
  800                                << 
stop.isRunEvent());
 
  801         return( StatusCode::FAILURE);
 
  803         bool isTimeStamp = 
false;
 
  804         if (
start.isTimestamp()) isTimeStamp = 
true;
 
  816         if (
sc.isFailure()) { 
 
  817                 ATH_MSG_ERROR (
"Could not merge timeStamp flag towards merged description. ");
 
  818         return( StatusCode::FAILURE);
 
  821         if (storeAttrListColl && attrListColl!=0 && 
 
  822         attrListColl->
name_size()>0) mergedNames+=
"<named/>";
 
  825                            << 
" with description " << mergedNames);
 
  836         payloadSpec.extend(
"PoolRef",cool::StorageType::String4k);
 
  841         if (storeAttrListColl) {
 
  845             if (0 == attrListColl) {
 
  847             return( StatusCode::FAILURE);
 
  850             if (0 == attrListColl->
size()) {
 
  852             return( StatusCode::FAILURE);
 
  856                                    attrListColl->
size());
 
  866         for (coral::AttributeList::const_iterator itr=
 
  867                atr4spec->begin();itr!=atr4spec->end();++itr) {
 
  872                     itr->specification().typeName()));
 
  877           cool::FolderVersioning::MULTI_VERSION;
 
  879           version=cool::FolderVersioning::SINGLE_VERSION;
 
  890                            local_folder << 
" done");
 
  893         if (storeAttrListColl && attrListColl!=0 && 
 
  896                              " channels in " << local_folder);
 
  899            nitr!=attrListColl->
name_end();++nitr) {
 
  900         folder->createChannel(nitr->first,nitr->second);
 
  907     if (storeAttrListColl) {
 
  909                            << 
start << 
" " << 
stop << 
" Note: will be ignored for channels with differnt IOVs " );
 
  916     cool::ValidityKey ivStart = 
start.re_time();
 
  917     cool::ValidityKey ivStop  = 
stop.re_time();
 
  918     if(
start.isTimestamp()) {
 
  919         ivStart = 
start.timestamp();
 
  920         ivStop  = 
stop.timestamp();
 
  925     const cool::RecordSpecification& rspec=
folder->payloadSpecification();
 
  927     if (storeAttrListColl) {
 
  937                 ATH_MSG_ERROR (
"Trying to store a ref for a CondAttrListCollection. ");
 
  938         return( StatusCode::FAILURE);
 
  942                            << 
", " << 
tag << 
" )");
 
  956         cool::ValidityKey ivStart1 = ivStart;
 
  957         cool::ValidityKey ivStop1  = ivStop;
 
  959         std::ostringstream attr;
 
  960         payload.toOutputStream( attr );
 
  964             if(
range.start().isTimestamp()) {
 
  965             ivStart1 = 
range.start().timestamp();
 
  966             ivStop1  = 
range.stop().timestamp();
 
  969             ivStart1 = 
range.start().re_time();
 
  970             ivStop1  = 
range.stop().re_time();
 
  973                                    << 
range.start() << 
" " << 
range.stop() << 
" ");
 
  981         cool::Record record(rspec,
payload);
 
  984           folder->storeObject( ivStart1, 
 
  989           folder->storeObject( ivStart1, 
 
  998         cool::Record record(rspec);
 
 1001           record[
"PoolRef"].setValue<std::string>(address_data);
 
 1005           record=cool::Record(rspec,*attrList);
 
 1011           folder->storeObject( ivStart, 
 
 1015           folder->storeObject( ivStart, 
 
 1021                            << 
", " << 
tag << 
" )");
 
 1030               ATH_MSG_DEBUG (
" tag is empty - folder is not being tagged ");
 
 1033             ATH_MSG_INFO (
" Tagging HEAD of folder " << local_folder << 
 
 1034                           " with tag " << 
tag);
 
 1038         catch ( cool::TagExists& 
e) {
 
 1040                             " exists - attempt to delete tag and retag HEAD");
 
 1045                   ATH_MSG_ERROR (
"Tag is defined in another folder - tag names must be global");
 
 1046           } 
else if (
folder->existsUserTag(
tag)) {
 
 1050                                " is already USER tag - cannot mix tagging modes");
 
 1057             catch ( cool::TagNotFound& 
e) {
 
 1064     return StatusCode::SUCCESS;
 
 1071     return StatusCode::FAILURE;
 
 
 
 
◆ splitAddress()
  
  | 
        
          | StatusCode IOVRegistrationSvc::splitAddress | ( | const std::string & | address, |  
          |  |  | std::string & | address_header, |  
          |  |  | std::string & | address_data |  
          |  | ) |  | const |  | private | 
 
Split address in its header and data parts. 
Definition at line 1142 of file IOVRegistrationSvc.cxx.
 1150   std::string::size_type 
p1=
address.find(
" />");
 
 1151   if (
p1!=std::string::npos) {
 
 1154     return StatusCode::SUCCESS;
 
 1156     return StatusCode::FAILURE;
 
 
 
 
◆ timeToNano()
  
  | 
        
          | uint64_t IOVRegistrationSvc::timeToNano | ( | const unsigned long int | timesec | ) | const |  | private | 
 
 
◆ type()
  
  | 
        
          | const InterfaceID & IOVRegistrationSvc::type | ( |  | ) | const |  | virtual | 
 
 
◆ SvcFactory< IOVRegistrationSvc >
◆ m_beginLB
  
  | 
        
          | Gaudi::Property<unsigned int> IOVRegistrationSvc::m_beginLB {this, "BeginLB", IOVTime::MINEVENT} |  | private | 
 
 
◆ m_beginRun
  
  | 
        
          | Gaudi::Property<unsigned int> IOVRegistrationSvc::m_beginRun {this, "BeginRun", IOVTime::MINRUN} |  | private | 
 
 
◆ m_beginTime
  
  | 
        
          | Gaudi::Property<unsigned long> IOVRegistrationSvc::m_beginTime {this, "BeginTime", IOVTime::MINTIMESTAMP} |  | private | 
 
 
◆ m_clidSvc
◆ m_detStore
◆ m_endLB
  
  | 
        
          | Gaudi::Property<unsigned int> IOVRegistrationSvc::m_endLB {this, "EndLB", IOVTime::MAXEVENT} |  | private | 
 
 
◆ m_endRun
  
  | 
        
          | Gaudi::Property<unsigned int> IOVRegistrationSvc::m_endRun {this, "EndRun", IOVTime::MAXRUN} |  | private | 
 
 
◆ m_endTime
  
  | 
        
          | Gaudi::Property<unsigned long> IOVRegistrationSvc::m_endTime {this, "EndTime", IOVTime::MAXEVENT} |  | private | 
 
 
◆ m_forceGlobalIOV
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_forceGlobalIOV {this, "UseGlobalIOVForCollections", false} |  | private | 
 
 
◆ m_iov_db
◆ m_overrideName
  
  | 
        
          | Gaudi::Property<std::vector<std::string> > IOVRegistrationSvc::m_overrideName {this, "OverrideNames", {}} |  | private | 
 
 
◆ m_overrideType
  
  | 
        
          | Gaudi::Property<std::vector<std::string> > IOVRegistrationSvc::m_overrideType {this, "OverrideTypes", {}} |  | private | 
 
 
◆ m_payloadTable
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_payloadTable {this, "PayloadTable", false} |  | private | 
 
 
◆ m_persSvc
◆ m_recreateFolders
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_recreateFolders {this, "RecreateFolders", false} |  | private | 
 
 
◆ m_svFolder
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_svFolder {this, "SVFolder", false} |  | private | 
 
 
◆ m_tag
  
  | 
        
          | Gaudi::Property<std::string> IOVRegistrationSvc::m_tag {this, "IOVDbTag", ""} |  | private | 
 
 
◆ m_tagDescription
  
  | 
        
          | Gaudi::Property<std::string> IOVRegistrationSvc::m_tagDescription {this, "TagDescription", "Athena IOVRegistrationSvc"} |  | private | 
 
 
◆ m_timeStamp
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_timeStamp {this, "IOVDbTimeStamp", false} |  | private | 
 
 
◆ m_userTags
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_userTags {this, "userTags", true} |  | private | 
 
 
◆ m_userTagsUH
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_userTagsUH {this, "userTagsUpdateHead", false} |  | private | 
 
 
◆ m_writeKeyInfo
  
  | 
        
          | Gaudi::Property<bool> IOVRegistrationSvc::m_writeKeyInfo {this, "writeKeyInfo", true} |  | private | 
 
 
The documentation for this class was generated from the following files:
 
def retrieve(aClass, aKey=None)
Gaudi::Property< bool > m_timeStamp
Gaudi::Property< bool > m_userTags
const_iterator end() const
Validity Range object. Holds two IOVTimes (start and stop)
iov_const_iterator iov_end() const
std::string find(const std::string &s)
return a remapped string
Gaudi::Property< std::vector< std::string > > m_overrideName
Gaudi::Property< bool > m_recreateFolders
Gaudi::Property< std::vector< std::string > > m_overrideType
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
StatusCode registerIOVCOOL(const std::string &typeName, const std::string &key, const std::string &folderName, const std::string &tag, const IOVTime &begin, const IOVTime &end) const
This class is a collection of AttributeLists where each one is associated with a channel number....
ChanIOVMap::const_iterator iov_const_iterator
StatusCode splitAddress(const std::string &address, std::string &address_header, std::string &address_data) const
Split address in its header and data parts.
This class provides an IOpaqueAddress/GenericAddress which can hold a pointer to a CondAttrListCollec...
ChanNameMap::const_iterator name_const_iterator
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Gaudi::Property< unsigned int > m_beginLB
ServiceHandle< IIOVCondDbSvc > m_iov_db
::StatusCode StatusCode
StatusCode definition for legacy code.
static constexpr uint64_t MAXTIMESTAMP
cool::StorageType::TypeId coralToCoolType(const std::string &parname, const std::string &coralName) const
An AttributeList represents a logical row of attributes in a metadata table. The name and type of eac...
Gaudi::Property< unsigned long > m_beginTime
Gaudi::Property< bool > m_forceGlobalIOV
AthROOTErrorHandlerSvc * svc
Gaudi::Property< unsigned int > m_beginRun
Gaudi::Property< unsigned int > m_endLB
uint32_t CLID
The Class ID type.
Gaudi::Property< unsigned int > m_endRun
ServiceHandle< IAddressCreator > m_persSvc
name_const_iterator name_begin() const
Access to Chan/Name pairs via iterators.
static constexpr uint32_t MAXEVENT
name_size_type name_size() const
number of Chan/Name pairs
CondAttrListCollection * attrListColl()
Access to AttributeList.
size_type size() const
number of Chan/AttributeList pairs
ServiceHandle< IClassIDSvc > m_clidSvc
virtual StatusCode buildDescription(const std::string &identifier, const std::string &value, std::string &description) const
Build the folder description field add in front of the description the value with identifier-markups.
virtual const InterfaceID & type() const
Service type.
Gaudi::Property< bool > m_userTagsUH
#define ATH_MSG_WARNING(x)
ChanAttrListMap::const_iterator const_iterator
Gaudi::Property< bool > m_payloadTable
virtual StatusCode registerIOV(const std::string &typeName) const
Register IOV DB for an object given its typeName - run/LB numbers interval or times interval and tag ...
Gaudi::Property< bool > m_writeKeyInfo
iov_const_iterator chanIOVPair(ChanNum chanNum) const
Access to Chan/IOV pairs via channel number: returns map iterator.
Gaudi::Property< bool > m_svFolder
Gaudi::Property< std::string > m_tag
Gaudi::Property< unsigned long > m_endTime
ServiceHandle< StoreGateSvc > m_detStore
uint64_t timeToNano(const unsigned long int timesec) const
Gaudi::Property< std::string > m_tagDescription
name_const_iterator name_end() const
std::string description
glabal timer - how long have I taken so far?