ATLAS Offline Software
CondSvc.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 IOVSVC_CONDSVC_H
6 #define IOVSVC_CONDSVC_H
7 
8 #include "GaudiKernel/ICondSvc.h"
9 #include "GaudiKernel/Service.h"
10 #include "StoreGate/StoreGateSvc.h"
12 #include "ICondSvcSetupDone.h"
13 
14 #include <unordered_map>
15 #include <set>
16 #include <vector>
17 #include <mutex>
18 
19 class ConditionSlotFuture;
20 class ICondtionIOSvc;
21 
22 class CondSvc final: public extends<AthService, ICondSvc, ICondSvcSetupDone> {
23 public:
24 
25  CondSvc(const std::string& name, ISvcLocator* svc);
26 
27  virtual StatusCode initialize() override;
28  virtual StatusCode start() override;
29  virtual StatusCode stop() override;
30 
31  virtual StatusCode regHandle(IAlgorithm* alg, const Gaudi::DataHandle& id) override;
32 
33  virtual bool isValidID(const EventContext&, const DataObjID&) const override;
34 
35  virtual const std::set<IAlgorithm*>& condAlgs() const override { return m_condAlgs; }
36  virtual bool isRegistered(const DataObjID& id) const override { return m_condIDs.contains(id); }
37  virtual bool isRegistered(IAlgorithm* ialg) const override { return m_condAlgs.contains(ialg); }
38  virtual const DataObjIDColl& conditionIDs() const override { return m_condIDs; }
39 
40  virtual StatusCode validRanges( std::vector<EventIDRange>& ranges,
41  const DataObjID& id ) const override;
42 
43  virtual void dump(std::ostream&) const override;
44 
48  virtual StatusCode setupDone() override;
49 
50 
52 
54  virtual ConditionSlotFuture* startConditionSetup(const EventContext&) override {
55  return nullptr;
56  }
57 
60  virtual StatusCode registerConditionIOSvc(IConditionIOSvc*) override {
61  return StatusCode::FAILURE;
62  }
64 
65 
66 private:
67 
68  StatusCode regHandle_i(IAlgorithm* alg, const Gaudi::DataHandle& id);
69 
71 
72  std::set<IAlgorithm*> m_condAlgs;
73  DataObjIDColl m_condIDs;
74 
76  std::unordered_map<DataObjID, IAlgorithm*, DataObjID_Hasher> m_idMap;
77 
79  std::unordered_map<DataObjID, const CondContBase*, DataObjID_Hasher> m_condConts;
80 
81  mutable std::mutex m_lock;
82 
83 };
84 
85 #endif
ICondSvcSetupDone.h
Interface to tell CondSvc to cache conditions containers.
trigbs_pickEvents.ranges
ranges
Definition: trigbs_pickEvents.py:60
CondSvc::initialize
virtual StatusCode initialize() override
Definition: CondSvc.cxx:42
CondSvc::m_sgs
ServiceHandle< StoreGateSvc > m_sgs
Definition: CondSvc.h:70
CondSvc::isValidID
virtual bool isValidID(const EventContext &, const DataObjID &) const override
Definition: CondSvc.cxx:166
CondSvc::m_condConts
std::unordered_map< DataObjID, const CondContBase *, DataObjID_Hasher > m_condConts
Map from DataObjID to CondContBase (populated in setupDone)
Definition: CondSvc.h:79
CondSvc::startConditionSetup
virtual ConditionSlotFuture * startConditionSetup(const EventContext &) override
unimplemented interfaces
Definition: CondSvc.h:54
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
CondSvc::regHandle
virtual StatusCode regHandle(IAlgorithm *alg, const Gaudi::DataHandle &id) override
Definition: CondSvc.cxx:109
CondSvc::isRegistered
virtual bool isRegistered(const DataObjID &id) const override
Definition: CondSvc.h:36
CondSvc::dump
virtual void dump(std::ostream &) const override
Definition: CondSvc.cxx:53
CondSvc::m_lock
std::mutex m_lock
Definition: CondSvc.h:81
CondSvc::validRanges
virtual StatusCode validRanges(std::vector< EventIDRange > &ranges, const DataObjID &id) const override
Definition: CondSvc.cxx:22
CondSvc::condAlgs
virtual const std::set< IAlgorithm * > & condAlgs() const override
Definition: CondSvc.h:35
CondSvc
Definition: CondSvc.h:22
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CondSvc::CondSvc
CondSvc(const std::string &name, ISvcLocator *svc)
Definition: CondSvc.cxx:13
CondSvc::m_idMap
std::unordered_map< DataObjID, IAlgorithm *, DataObjID_Hasher > m_idMap
Map from DataObjID to Algorithm to avoid duplicates.
Definition: CondSvc.h:76
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
columnar::final
CM final
Definition: ColumnAccessor.h:106
CondSvc::m_condIDs
DataObjIDColl m_condIDs
Definition: CondSvc.h:73
CondSvc::isRegistered
virtual bool isRegistered(IAlgorithm *ialg) const override
Definition: CondSvc.h:37
CondSvc::stop
virtual StatusCode stop() override
Definition: CondSvc.cxx:91
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
RegSelToolConfig.alg
alg
Definition: RegSelToolConfig.py:332
CondSvc::m_condAlgs
std::set< IAlgorithm * > m_condAlgs
Definition: CondSvc.h:72
CondSvc::regHandle_i
StatusCode regHandle_i(IAlgorithm *alg, const Gaudi::DataHandle &id)
Definition: CondSvc.cxx:120
CondSvc::registerConditionIOSvc
virtual StatusCode registerConditionIOSvc(IConditionIOSvc *) override
register an IConditionIOSvc (alternative to Algorithm processing of Conditions)
Definition: CondSvc.h:60
AthService.h
CondSvc::start
virtual StatusCode start() override
Definition: CondSvc.cxx:82
StoreGateSvc.h
CondSvc::conditionIDs
virtual const DataObjIDColl & conditionIDs() const override
Definition: CondSvc.h:38
ServiceHandle< StoreGateSvc >
CondSvc::setupDone
virtual StatusCode setupDone() override
To be called after changes to the set of conditions containers in the conditions store.
Definition: CondSvc.cxx:195