ATLAS Offline Software
IOVDbMetaDataTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef IOVDBMETADATATOOLS_IOVDBMETADATATOOL_H
6 #define IOVDBMETADATATOOLS_IOVDBMETADATATOOL_H
7 
21 #include "GaudiKernel/ServiceHandle.h"
22 #include "GaudiKernel/IIncidentListener.h"
24 
25 #include <string>
26 #include <shared_mutex>
27 
28 class StoreGateSvc;
30 
39 class IOVDbMetaDataTool : public extends<AthAlgTool,
40  IIncidentListener, IIOVDbMetaDataTool>
41 {
42 public:
43  // Constructor
44  IOVDbMetaDataTool(const std::string& type,
45  const std::string& name,
46  const IInterface* parent);
47  // Standard Destructor
48  virtual ~IOVDbMetaDataTool();
49 
51  virtual StatusCode initialize() override;
52 
54  virtual StatusCode finalize() override;
55 
57  virtual StatusCode beginInputFile(const SG::SourceID&) override;
58 
60  virtual StatusCode endInputFile(const SG::SourceID&) override;
61 
63  virtual StatusCode metaDataStop() override;
64 
66  virtual void handle(const Incident& incident) override;
67 
69  virtual StatusCode registerFolder(const std::string& folderName,
70  const std::string& folderDescription) const override;
71 
74  virtual StatusCode registerFolder(const std::string& folderName) const override;
75 
78  virtual StatusCode addPayload(const std::string& folderName,
79  CondAttrListCollection* payload) const override;
80 
87  virtual StatusCode processInputFileMetaData(const std::string& fileName) override;
88 
89  virtual IOVMetaDataContainer* findMetaDataContainer(const std::string& folderName) const override final;
90 
91  // ILockableTool API implementation
92  virtual void lock_shared() const override final { m_mutex.lock_shared(); }
93  virtual void unlock_shared() const override final { m_mutex.unlock_shared(); }
94 
95 private:
96 
99  const std::string& folderDescription) const;
100 
102  void checkOverrideRunNumber();
103 
106 
109  StatusCode modifyPayload (const std::string& folderName,
111 
116 
117  // Flag to check whether we need to override run number for MC
118  // events in incoming file meta data. This is needed for example
119  // for incoming simulation or digitization parameters.
122 
123  // Values for changing run number
124  unsigned int m_newRunNumber;
125  unsigned int m_oldRunNumber;
126 
127  unsigned int m_minRunNumber;
128  unsigned int m_maxRunNumber;
129 
130  // Files already processed, maintain a set
131  std::set<std::string> m_filesProcessed;
132 
133  UnsignedIntegerArrayProperty m_minMaxRunNumbers{this, "MinMaxRunNumbers", {}, "Min/max run numbers for overriding meta data IOV"};
134  StringArrayProperty m_foldersToBeModified{this, "FoldersToBeModified", {"/Simulation/Parameters"}};
135  StringArrayProperty m_attributesToBeRemoved{this, "AttributesToBeRemoved", {"RandomSeedOffset"}};
137 
138  // mutex for R/W locking of the entire tool (and supposedly all metadata objects it works with)
139  mutable std::shared_mutex m_mutex;
140 };
141 
142 #endif // IOVDBMETADATATOOLS_IOVDBMETADATATOOL_H
143 
144 
IOVMetaDataContainer
This class is a container for conditions data. It is intended to be used to store conditions data fro...
Definition: IOVMetaDataContainer.h:37
IOVDbMetaDataTool::handle
virtual void handle(const Incident &incident) override
Incident service handle listening for BeginInputFile and EndInputFile.
Definition: IOVDbMetaDataTool.cxx:78
IOVDbMetaDataTool::getMetaDataContainer
IOVMetaDataContainer * getMetaDataContainer(const std::string &folderName, const std::string &folderDescription) const
return meta data container from the meta data store
Definition: IOVDbMetaDataTool.cxx:380
IOVDbMetaDataTool::m_metaDataStore
StoreGateSvc_t m_metaDataStore
Definition: IOVDbMetaDataTool.h:114
IOVDbMetaDataTool::metaDataStop
virtual StatusCode metaDataStop() override
Function called when the tool should write out its metadata.
Definition: IOVDbMetaDataTool.cxx:108
IOVDbMetaDataTool::m_attributesToBeRemoved
StringArrayProperty m_attributesToBeRemoved
Definition: IOVDbMetaDataTool.h:135
IOVDbMetaDataTool::m_minRunNumber
unsigned int m_minRunNumber
Definition: IOVDbMetaDataTool.h:127
IOVDbMetaDataTool::StoreGateSvc_t
ServiceHandle< StoreGateSvc > StoreGateSvc_t
Handles to the meta data stores.
Definition: IOVDbMetaDataTool.h:113
IOVDbMetaDataTool::m_modifyFolders
bool m_modifyFolders
Definition: IOVDbMetaDataTool.h:136
IOVDbMetaDataTool::finalize
virtual StatusCode finalize() override
Finalize AlgTool.
Definition: IOVDbMetaDataTool.cxx:71
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
IOVDbMetaDataTool::addPayload
virtual StatusCode addPayload(const std::string &folderName, CondAttrListCollection *payload) const override
Add an IOV and Payload for a particular folder - replaces payloads if there is an IOV overlap.
Definition: IOVDbMetaDataTool.cxx:230
IOVDbMetaDataTool::overrideIOV
StatusCode overrideIOV(CondAttrListCollection *&coll) const
override IOV with new run number
Definition: IOVDbMetaDataTool.cxx:592
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
IOVDbMetaDataTool::m_minMaxRunNumbers
UnsignedIntegerArrayProperty m_minMaxRunNumbers
Definition: IOVDbMetaDataTool.h:133
IOVDbMetaDataTool::lock_shared
virtual void lock_shared() const override final
Definition: IOVDbMetaDataTool.h:92
IOVDbMetaDataTool::unlock_shared
virtual void unlock_shared() const override final
Definition: IOVDbMetaDataTool.h:93
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:120
IOVDbMetaDataTool::m_overrideMinMaxRunNumber
bool m_overrideMinMaxRunNumber
Definition: IOVDbMetaDataTool.h:121
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
IOVDbMetaDataTool::modifyPayload
StatusCode modifyPayload(const std::string &folderName, CondAttrListCollection *&payload) const
Modify a Payload for a particular folder - replaces one of the internal attributes.
Definition: IOVDbMetaDataTool.cxx:284
IOVDbMetaDataTool::m_maxRunNumber
unsigned int m_maxRunNumber
Definition: IOVDbMetaDataTool.h:128
IOVDbMetaDataTool::m_foldersToBeModified
StringArrayProperty m_foldersToBeModified
Definition: IOVDbMetaDataTool.h:134
IOVDbMetaDataTool::m_newRunNumber
unsigned int m_newRunNumber
Definition: IOVDbMetaDataTool.h:124
columnar::final
CM final
Definition: ColumnAccessor.h:106
IOVDbMetaDataTool
This is an interface to a tool used to manage the IOV Meta Data for a given object in the Meta Data S...
Definition: IOVDbMetaDataTool.h:41
IOVDbMetaDataTool::m_oldRunNumber
unsigned int m_oldRunNumber
Definition: IOVDbMetaDataTool.h:125
CaloCellTimeCorrFiller.folderName
string folderName
Definition: CaloCellTimeCorrFiller.py:19
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IOVDbMetaDataTool::m_mutex
std::shared_mutex m_mutex
Definition: IOVDbMetaDataTool.h:139
IOVDbMetaDataTool::endInputFile
virtual StatusCode endInputFile(const SG::SourceID &) override
Function called when the currently open input file got completely processed.
Definition: IOVDbMetaDataTool.cxx:103
PixelModuleFeMask_create_db.payload
string payload
Definition: PixelModuleFeMask_create_db.py:69
IOVDbMetaDataTool::m_inputStore
StoreGateSvc_t m_inputStore
Definition: IOVDbMetaDataTool.h:115
IOVDbMetaDataTool::IOVDbMetaDataTool
IOVDbMetaDataTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: IOVDbMetaDataTool.cxx:25
IOVDbMetaDataTool::checkOverrideRunNumber
void checkOverrideRunNumber()
check if we should override the run number in the incoming meta data
Definition: IOVDbMetaDataTool.cxx:116
IOVDbMetaDataTool::~IOVDbMetaDataTool
virtual ~IOVDbMetaDataTool()
Definition: IOVDbMetaDataTool.cxx:42
IOVDbMetaDataTool::registerFolder
virtual StatusCode registerFolder(const std::string &folderName, const std::string &folderDescription) const override
Register folder in the IOV Db MetaData - done once at initialize.
Definition: IOVDbMetaDataTool.cxx:209
SG::SourceID
std::string SourceID
Definition: AthenaKernel/AthenaKernel/SourceID.h:25
IOVDbMetaDataTool::m_filesProcessed
std::set< std::string > m_filesProcessed
Definition: IOVDbMetaDataTool.h:131
IOVDbMetaDataTool::beginInputFile
virtual StatusCode beginInputFile(const SG::SourceID &) override
Function called when a new input file is opened.
Definition: IOVDbMetaDataTool.cxx:94
IOVDbMetaDataTool::m_overrideRunNumber
bool m_overrideRunNumber
Definition: IOVDbMetaDataTool.h:120
IIOVDbMetaDataTool.h
This is an interface to a tool used to manage the IOV Meta Data for a given object in the MetaData St...
IOVDbMetaDataTool::findMetaDataContainer
virtual IOVMetaDataContainer * findMetaDataContainer(const std::string &folderName) const override final
Definition: IOVDbMetaDataTool.cxx:371
jobOptions.fileName
fileName
Definition: jobOptions.SuperChic_ALP2.py:39
IOVDbMetaDataTool::initialize
virtual StatusCode initialize() override
Initialize AlgTool.
Definition: IOVDbMetaDataTool.cxx:48
IOVDbMetaDataTool::processInputFileMetaData
virtual StatusCode processInputFileMetaData(const std::string &fileName) override
Explicit call to process IOV meta data from the input meta data store, transferring it to the main me...
Definition: IOVDbMetaDataTool.cxx:413
ServiceHandle< StoreGateSvc >