ATLAS Offline Software
IOVRegistrationSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
16 #ifndef REGISTRATIONSERVICES_IOVREGISTRATIONSVC_H
17 # define REGISTRATIONSERVICES_IOVREGISTRATIONSVC_H
18 
19 //<<<<<< INCLUDES >>>>>>
20 
23 #include "AthenaKernel/IOVTime.h"
24 #include "GaudiKernel/ServiceHandle.h"
25 #include "GaudiKernel/ClassID.h"
26 #include "CoolKernel/StorageType.h"
27 
28 //<<<<<< FORWARD DECLARATIONS >>>>>>
29 
30 class IIOVCondDbSvc;
31 class StoreGateSvc;
32 class IAddressCreator;
33 class IClassIDSvc;
34 
35 
36 //<<<<<< CLASS DECLARATIONS >>>>>>
37 
53 class IOVRegistrationSvc : public extends<AthService, IIOVRegistrationSvc>
54 {
55 
56 public:
57 
58  IOVRegistrationSvc( const std::string& name, ISvcLocator* svc );
59 
60  virtual ~IOVRegistrationSvc();
61 
63  virtual const InterfaceID& type() const;
64 
68  virtual StatusCode registerIOV( const std::string& typeName ) const;
69 
74  virtual StatusCode registerIOV( const std::string& typeName, const std::string& tag ) const;
75 
80  virtual StatusCode registerIOV( const std::string& typeName, const std::string& key,
81  const std::string& tag ) const;
82 
85  virtual StatusCode registerIOV( const std::string& typeName,
86  const std::string& tag,
87  unsigned int beginRun,
88  unsigned int endRun,
89  unsigned int beginLB,
90  unsigned int endLB ) const;
91 
92 
95  virtual StatusCode registerIOV( const std::string& typeName,
96  const std::string& tag,
97  uint64_t beginTime,
98  uint64_t endTime ) const;
99 
102  virtual StatusCode registerIOV( const std::string& typeName,
103  const std::string& key,
104  const std::string& tag,
105  unsigned int beginRun,
106  unsigned int endRun,
107  unsigned int beginLB,
108  unsigned int endLB ) const;
109 
112  virtual StatusCode registerIOV( const std::string& typeName,
113  const std::string& key,
114  const std::string& tag,
115  uint64_t beginTime,
116  uint64_t endTime ) const;
117 
120  virtual StatusCode registerIOV( const std::string& typeName,
121  const std::string& key,
122  const std::string& folder,
123  const std::string& tag,
124  unsigned int beginRun,
125  unsigned int endRun,
126  unsigned int beginLB,
127  unsigned int endLB ) const;
128 
131  virtual StatusCode registerIOV( const std::string& typeName,
132  const std::string& key,
133  const std::string& folder,
134  const std::string& tag,
135  uint64_t beginTime,
136  uint64_t endTime ) const;
137 
139  virtual StatusCode initialize();
140 
142  virtual StatusCode finalize();
143 
144 
145 private:
146 
147  // Allow SvcFactory to instantiate the service.
148  friend class SvcFactory<IOVRegistrationSvc>;
149 
150  StatusCode registerIOV(const std::string& typeName,
151  const std::string& key,
152  const std::string& folder,
153  const std::string& tag,
154  const IOVTime& begin,
155  const IOVTime& end) const;
156 
157  StatusCode registerIOVCOOL(const std::string& typeName,
158  const std::string& key,
159  const std::string& folderName,
160  const std::string& tag,
161  const IOVTime& begin,
162  const IOVTime& end) const;
163 
165  const std::string& coralName) const;
166 
168  const std::string& key,
169  std::string& saddr) const;
170 
171  uint64_t timeToNano(const unsigned long int timesec) const;
172 
175  virtual StatusCode buildDescription(const std::string& identifier,
176  const std::string& value,
177  std::string& description) const;
178 
180  StatusCode splitAddress(const std::string& address,
181  std::string& address_header,
182  std::string& address_data) const;
183 
184  Gaudi::Property<bool> m_recreateFolders{this, "RecreateFolders", false};
185  Gaudi::Property<unsigned int> m_beginRun{this, "BeginRun", IOVTime::MINRUN};
186  Gaudi::Property<unsigned int> m_endRun{this, "EndRun", IOVTime::MAXRUN};
187  Gaudi::Property<unsigned int> m_beginLB{this, "BeginLB", IOVTime::MINEVENT};
188  Gaudi::Property<unsigned int> m_endLB{this, "EndLB", IOVTime::MAXEVENT};
189 
190  Gaudi::Property<unsigned long> m_beginTime{this, "BeginTime", IOVTime::MINTIMESTAMP};
191  Gaudi::Property<unsigned long> m_endTime{this, "EndTime", IOVTime::MAXEVENT}; // as the time parameter is only 32bit
192 
193  Gaudi::Property<std::string> m_tag{this, "IOVDbTag", ""};
194  Gaudi::Property<bool> m_timeStamp{this, "IOVDbTimeStamp", false};
195  Gaudi::Property<std::string> m_tagDescription{this, "TagDescription", "Athena IOVRegistrationSvc"};
196  Gaudi::Property<bool> m_writeKeyInfo{this, "writeKeyInfo", true};
197  Gaudi::Property<bool> m_userTags{this, "userTags", true};
198  Gaudi::Property<bool> m_userTagsUH{this, "userTagsUpdateHead", false};
199  Gaudi::Property<bool> m_svFolder{this, "SVFolder", false};
200  Gaudi::Property<bool> m_payloadTable{this, "PayloadTable", false};
201  Gaudi::Property<bool> m_forceGlobalIOV{this, "UseGlobalIOVForCollections", false};
202  Gaudi::Property<std::vector<std::string>> m_overrideName{this, "OverrideNames", {}};
203  Gaudi::Property<std::vector<std::string>> m_overrideType{this, "OverrideTypes", {}};
204 
209 
210 };
211 
212 
213 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>>
214 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>>
215 
216 #endif // REGISTRATIONSERVICES_IOVREGISTRATIONSVC_H
IOVRegistrationSvc::~IOVRegistrationSvc
virtual ~IOVRegistrationSvc()
Definition: IOVRegistrationSvc.cxx:60
IOVRegistrationSvc::m_timeStamp
Gaudi::Property< bool > m_timeStamp
Definition: IOVRegistrationSvc.h:194
IOVRegistrationSvc::m_userTags
Gaudi::Property< bool > m_userTags
Definition: IOVRegistrationSvc.h:197
IOVTime::MAXRUN
static constexpr uint32_t MAXRUN
Definition: IOVTime.h:48
IOVRegistrationSvc::m_overrideName
Gaudi::Property< std::vector< std::string > > m_overrideName
Definition: IOVRegistrationSvc.h:202
IOVRegistrationSvc::m_recreateFolders
Gaudi::Property< bool > m_recreateFolders
Definition: IOVRegistrationSvc.h:184
SvcFactory
Definition: AthCnvSvc.h:28
python.CreateTierZeroArgdict.parname
parname
Definition: CreateTierZeroArgdict.py:194
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
IOVRegistrationSvc::m_overrideType
Gaudi::Property< std::vector< std::string > > m_overrideType
Definition: IOVRegistrationSvc.h:203
IIOVRegistrationSvc.h
This is an interface to a tool used to register conditions objects in the Interval of Validity (IOV) ...
athena.value
value
Definition: athena.py:124
IOVRegistrationSvc::registerIOVCOOL
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
Definition: IOVRegistrationSvc.cxx:435
xAOD::identifier
identifier
Definition: UncalibratedMeasurement_v1.cxx:15
IOVRegistrationSvc::getStringAddress
StatusCode getStringAddress(const CLID &clid, const std::string &key, std::string &saddr) const
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
IOVTime.h
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
IOVTime::MINRUN
static constexpr uint32_t MINRUN
Definition: IOVTime.h:44
IOVRegistrationSvc::splitAddress
StatusCode splitAddress(const std::string &address, std::string &address_header, std::string &address_data) const
Split address in its header and data parts.
Definition: IOVRegistrationSvc.cxx:1142
IOVTime
Basic time unit for IOVSvc. Hold time as a combination of run and event numbers.
Definition: IOVTime.h:33
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:120
IOVRegistrationSvc::initialize
virtual StatusCode initialize()
Initialize AlgTool.
Definition: IOVRegistrationSvc.cxx:71
IOVRegistrationSvc::m_beginLB
Gaudi::Property< unsigned int > m_beginLB
Definition: IOVRegistrationSvc.h:187
IOVRegistrationSvc::m_iov_db
ServiceHandle< IIOVCondDbSvc > m_iov_db
Definition: IOVRegistrationSvc.h:205
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IOVRegistrationSvc::coralToCoolType
cool::StorageType::TypeId coralToCoolType(const std::string &parname, const std::string &coralName) const
Definition: IOVRegistrationSvc.cxx:1077
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
IOVRegistrationSvc::m_beginTime
Gaudi::Property< unsigned long > m_beginTime
Definition: IOVRegistrationSvc.h:190
IOVRegistrationSvc::m_forceGlobalIOV
Gaudi::Property< bool > m_forceGlobalIOV
Definition: IOVRegistrationSvc.h:201
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
IOVRegistrationSvc::m_beginRun
Gaudi::Property< unsigned int > m_beginRun
Definition: IOVRegistrationSvc.h:185
IOVRegistrationSvc::m_endLB
Gaudi::Property< unsigned int > m_endLB
Definition: IOVRegistrationSvc.h:188
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
IOVRegistrationSvc::m_endRun
Gaudi::Property< unsigned int > m_endRun
Definition: IOVRegistrationSvc.h:186
IOVRegistrationSvc::m_persSvc
ServiceHandle< IAddressCreator > m_persSvc
Definition: IOVRegistrationSvc.h:207
IOVTime::MAXEVENT
static constexpr uint32_t MAXEVENT
Definition: IOVTime.h:51
CaloCellTimeCorrFiller.folderName
string folderName
Definition: CaloCellTimeCorrFiller.py:19
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
IOVTime::MINEVENT
static constexpr uint32_t MINEVENT
Definition: IOVTime.h:50
IOVRegistrationSvc::m_clidSvc
ServiceHandle< IClassIDSvc > m_clidSvc
Definition: IOVRegistrationSvc.h:208
IOVRegistrationSvc::finalize
virtual StatusCode finalize()
Finalize AlgTool.
Definition: IOVRegistrationSvc.cxx:144
IOVRegistrationSvc::buildDescription
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.
Definition: IOVRegistrationSvc.cxx:1129
IOVRegistrationSvc::type
virtual const InterfaceID & type() const
Service type.
Definition: IOVRegistrationSvc.cxx:63
IOVRegistrationSvc::m_userTagsUH
Gaudi::Property< bool > m_userTagsUH
Definition: IOVRegistrationSvc.h:198
IOVRegistrationSvc::m_payloadTable
Gaudi::Property< bool > m_payloadTable
Definition: IOVRegistrationSvc.h:200
IOVRegistrationSvc::registerIOV
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 ...
Definition: IOVRegistrationSvc.cxx:151
IIOVCondDbSvc
Definition: IIOVCondDbSvc.h:25
CaloCondBlobAlgs_fillNoiseFromASCII.folder
folder
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:55
AthService.h
ReadCalibFromCool.typeName
typeName
Definition: ReadCalibFromCool.py:477
IOVTime::MINTIMESTAMP
static constexpr uint64_t MINTIMESTAMP
Definition: IOVTime.h:56
IOVRegistrationSvc::m_writeKeyInfo
Gaudi::Property< bool > m_writeKeyInfo
Definition: IOVRegistrationSvc.h:196
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:23
IOVRegistrationSvc::m_svFolder
Gaudi::Property< bool > m_svFolder
Definition: IOVRegistrationSvc.h:199
IOVRegistrationSvc::IOVRegistrationSvc
IOVRegistrationSvc(const std::string &name, ISvcLocator *svc)
Definition: IOVRegistrationSvc.cxx:48
IOVRegistrationSvc
Definition: IOVRegistrationSvc.h:54
IOVRegistrationSvc::m_tag
Gaudi::Property< std::string > m_tag
Definition: IOVRegistrationSvc.h:193
IOVRegistrationSvc::m_endTime
Gaudi::Property< unsigned long > m_endTime
Definition: IOVRegistrationSvc.h:191
Crest::TypeId
TypeId
Definition: CrestContainer.h:22
IOVRegistrationSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: IOVRegistrationSvc.h:206
IOVRegistrationSvc::timeToNano
uint64_t timeToNano(const unsigned long int timesec) const
Definition: IOVRegistrationSvc.cxx:1118
lumiFormat.endTime
endTime
Definition: lumiFormat.py:100
IOVRegistrationSvc::m_tagDescription
Gaudi::Property< std::string > m_tagDescription
Definition: IOVRegistrationSvc.h:195
description
std::string description
glabal timer - how long have I taken so far?
Definition: hcg.cxx:88
ServiceHandle< IIOVCondDbSvc >
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37