ATLAS Offline Software
GeoModelSvc.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELSVC_GEOMODELSVC_H
6 #define GEOMODELSVC_GEOMODELSVC_H
7 
8 #include "GeoModelInterfaces/IGeoModelSvc.h" //inheritance
9 #include "EventInfoMgt/ITagInfoMgr.h"//inheritance
10 #include "AthenaBaseComps/AthService.h" //inheritance
11 
12 #include "GeoModelInterfaces/IGeoDbTagSvc.h" //SvcHandle template
13 #include "GeoModelInterfaces/IGeoModelTool.h" //ToolHandle template
14 #include "GeoModelDBManager/GMDBManager.h" //unique_ptr with compiler d'tor
15 #include "GeoModelRead/ReadGeoModel.h" //unique_ptr with compiler d'tor
16 #include "GaudiKernel/ServiceHandle.h" //member
17 #include "GaudiKernel/ToolHandle.h" //member
18 #include "Gaudi/Property.h" //member
19 
20 #include "CxxUtils/checker_macros.h" //ATLAS_NOT_THREAD_SAFE()
21 #include "StoreGate/StoreGateSvc.h" //SvcHandle template
22 #include <memory> //unique_ptr
23 
24 class ISvcLocator;
25 
26 
27 template <class TYPE> class SvcFactory;
28 
29 class GeoModelSvc : public AthService, virtual public IGeoModelSvc,
30  virtual public ITagInfoMgr::Listener
31 {
32 public:
33  friend class SvcFactory<GeoModelSvc>;
34 
35  // Standard Constructor
36  GeoModelSvc(const std::string& name, ISvcLocator* svc);
37 
39  virtual StatusCode finalize() override;
40 
41  virtual StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ) override;
42 
44  virtual void tagInfoUpdated() override final;
45 
47 
48  virtual const IGeoModelTool* getTool(std::string toolName) const override;
49 
50  virtual StatusCode clear() override;
51 
52 private:
53  ToolHandleArray<IGeoModelTool> m_detectorTools{this,"DetectorTools",{}};
54 
55  ISvcLocator* m_pSvcLocator{nullptr};
56 
57  ServiceHandle<StoreGateSvc> m_detStore{this,"DetectorStore","DetectorStore",""};
58  ServiceHandle<ITagInfoMgr> m_tagInfoMgr{this,"TagInfoMgr","TagInfoMgr",""};
59  ServiceHandle<IGeoDbTagSvc> m_geoDbTagSvc{this,"GeoDbTagSvc","GeoDbTagSvc",""};
60 
61  Gaudi::Property<std::string> m_atlasVersion{this,"AtlasVersion","","ATLAS Geometry Tag"};
62 
63  Gaudi::Property<std::string> m_inDetVersionOverride{this,"InDetVersionOverride","","Overrider for InDet version"};
64  Gaudi::Property<std::string> m_pixelVersionOverride{this,"PixelVersionOverride","","Overrider for Pixel version"};
65  Gaudi::Property<std::string> m_sctVersionOverride{this,"SCT_VersionOverride","","Overrider for SCT version"};
66  Gaudi::Property<std::string> m_trtVersionOverride{this,"TRT_VersionOverride","","Overrider for TRT version"};
67  Gaudi::Property<std::string> m_larVersionOverride{this,"LAr_VersionOverride","","Overrider for LAr version"};
68  Gaudi::Property<std::string> m_tileVersionOverride{this,"TileVersionOverride","","Overrider for Tile version"};
69  Gaudi::Property<std::string> m_muonVersionOverride{this,"MuonVersionOverride","","Overrider for Muon version"};
70  Gaudi::Property<std::string> m_caloVersionOverride{this,"CaloVersionOverride","","Overrider for Calo version"};
71  Gaudi::Property<std::string> m_bFieldVersionOverride{this,"MagFieldVersionOverride","","Overrider for MagField version"};
72  Gaudi::Property<std::string> m_cavInfraVersionOverride{this,"CavernInfraVersionOverride","","Overrider for CavernInfra version"};
73  Gaudi::Property<std::string> m_forDetVersionOverride{this,"ForwardDetectorsVersionOverride","","Overrider for Forward Detectors version"};
74 
75  Gaudi::Property<bool> m_callBackON{this,"AlignCallbacks",true,"Read alignment in callbacks"};
76  Gaudi::Property<bool> m_ignoreTagDifference{this,"IgnoreTagDifference",false,"Ignore TagInfo and configuration tag diffs"};
77 
78  Gaudi::Property<bool> m_useTagInfo{this,"UseTagInfo",true,"Use TagInfo"};
79  Gaudi::Property<bool> m_statisticsToFile{this,"StatisticsToFile",false,"Generate GeoModelStatistics file in the run directory"};
80 
81  Gaudi::Property<int> m_supportedGeometry{this,"SupportedGeometry",0,"Supported geometry flag is set in jobOpt and is equal to major release version"};
82  Gaudi::Property<bool> m_ignoreTagSupport{this,"IgnoreTagSupport",false,"Skip checking if the geometry tag is supported/obsolete"};
83 
84  Gaudi::Property<bool> m_sqliteDb{this,"SQLiteDB",false,"Activate GeoModel initialization from SQLite"};
85  Gaudi::Property<std::string> m_sqliteDbFullPath{this,"SQLiteDBFullPath","","Explicit setting of full path to SQLiteDB. For testing purposes only"};
86 
87  std::unique_ptr<GeoModelIO::ReadGeoModel> m_sqliteReader{};
88  std::unique_ptr<GMDBManager> m_sqliteDbManager{};
89 
90  virtual const std::string & atlasVersion() const override {return m_atlasVersion;}
91  virtual const std::string & inDetVersionOverride() const override {return m_inDetVersionOverride;}
92  virtual const std::string & pixelVersionOverride() const override {return m_pixelVersionOverride;}
93  virtual const std::string & SCT_VersionOverride() const override {return m_sctVersionOverride;}
94  virtual const std::string & TRT_VersionOverride() const override {return m_trtVersionOverride;}
95  virtual const std::string & LAr_VersionOverride() const override {return m_larVersionOverride;}
96  virtual const std::string & tileVersionOverride() const override {return m_tileVersionOverride;}
97  virtual const std::string & muonVersionOverride() const override {return m_muonVersionOverride;}
98  virtual const std::string & caloVersionOverride() const override {return m_caloVersionOverride;}
99  virtual const std::string & magFieldVersionOverride() const override {return m_bFieldVersionOverride;}
100  virtual const std::string & cavernInfraVersionOverride() const override {return m_cavInfraVersionOverride;}
101  virtual const std::string & forwardDetectorsVersionOverride() const override {return m_forDetVersionOverride;}
102 
103  virtual const std::string & inDetVersion() const override {return m_geoDbTagSvc->inDetVersion();}
104  virtual const std::string & pixelVersion() const override {return m_geoDbTagSvc->pixelVersion();}
105  virtual const std::string & SCT_Version() const override {return m_geoDbTagSvc->SCT_Version();}
106  virtual const std::string & TRT_Version() const override {return m_geoDbTagSvc->TRT_Version();}
107  virtual const std::string & LAr_Version() const override {return m_geoDbTagSvc->LAr_Version();}
108  virtual const std::string & tileVersion() const override {return m_geoDbTagSvc->tileVersion();}
109  virtual const std::string & muonVersion() const override {return m_geoDbTagSvc->muonVersion();}
110  virtual const std::string & caloVersion() const override {return m_geoDbTagSvc->caloVersion();}
111  virtual const std::string & magFieldVersion() const override {return m_geoDbTagSvc->magFieldVersion();}
112  virtual const std::string & cavernInfraVersion() const override {return m_geoDbTagSvc->cavernInfraVersion();}
113  virtual const std::string & forwardDetectorsVersion() const override {return m_geoDbTagSvc->forwardDetectorsVersion();}
114 
115  virtual GeoModel::GeoConfig geoConfig() const override {return m_geoDbTagSvc->geoConfig();}
116 
118  StatusCode fillTagInfo() const;
119 };
120 
121 #endif // GEOMODELSVC_GEOMODELSVC_H
122 
GeoModelSvc::caloVersionOverride
virtual const std::string & caloVersionOverride() const override
Definition: GeoModelSvc.h:98
GeoModelSvc::m_sctVersionOverride
Gaudi::Property< std::string > m_sctVersionOverride
Definition: GeoModelSvc.h:65
GeoModelSvc::m_tileVersionOverride
Gaudi::Property< std::string > m_tileVersionOverride
Definition: GeoModelSvc.h:68
GeoModelSvc::m_muonVersionOverride
Gaudi::Property< std::string > m_muonVersionOverride
Definition: GeoModelSvc.h:69
GeoModelSvc::m_trtVersionOverride
Gaudi::Property< std::string > m_trtVersionOverride
Definition: GeoModelSvc.h:66
GeoModelSvc::forwardDetectorsVersionOverride
virtual const std::string & forwardDetectorsVersionOverride() const override
Definition: GeoModelSvc.h:101
GeoModelSvc::m_sqliteDbFullPath
Gaudi::Property< std::string > m_sqliteDbFullPath
Definition: GeoModelSvc.h:85
IGeoModelSvc
Definition: IGeoModelSvc.h:17
GeoModelSvc::cavernInfraVersionOverride
virtual const std::string & cavernInfraVersionOverride() const override
Definition: GeoModelSvc.h:100
GeoModelSvc::tileVersionOverride
virtual const std::string & tileVersionOverride() const override
Definition: GeoModelSvc.h:96
GeoModel::GeoConfig
GeoConfig
Definition: IGeoDbTagSvc.h:17
GeoModelSvc::getTool
virtual const IGeoModelTool * getTool(std::string toolName) const override
Definition: GeoModelSvc.cxx:572
initialize
void initialize()
Definition: run_EoverP.cxx:894
ITagInfoMgr.h
SvcFactory
Definition: AthCnvSvc.h:28
GeoModelSvc::tagInfoUpdated
virtual void tagInfoUpdated() override final
Callback from TagInfoMgr on TagInfo change.
Definition: GeoModelSvc.cxx:333
GeoModelSvc::finalize
virtual StatusCode finalize() override
Definition: GeoModelSvc.cxx:117
GeoModelSvc::caloVersion
virtual const std::string & caloVersion() const override
Definition: GeoModelSvc.h:110
GeoModelSvc::m_callBackON
Gaudi::Property< bool > m_callBackON
Definition: GeoModelSvc.h:75
GeoModelSvc::atlasVersion
virtual const std::string & atlasVersion() const override
Definition: GeoModelSvc.h:90
GeoModelSvc::m_supportedGeometry
Gaudi::Property< int > m_supportedGeometry
Definition: GeoModelSvc.h:81
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
GeoModelSvc::muonVersion
virtual const std::string & muonVersion() const override
Definition: GeoModelSvc.h:109
GeoModelSvc::fillTagInfo
StatusCode fillTagInfo() const
Definition: GeoModelSvc.cxx:480
GeoModelSvc::pixelVersionOverride
virtual const std::string & pixelVersionOverride() const override
Definition: GeoModelSvc.h:92
GeoModelSvc::pixelVersion
virtual const std::string & pixelVersion() const override
Definition: GeoModelSvc.h:104
GeoModelSvc::m_useTagInfo
Gaudi::Property< bool > m_useTagInfo
Definition: GeoModelSvc.h:78
GeoModelSvc::m_atlasVersion
Gaudi::Property< std::string > m_atlasVersion
Definition: GeoModelSvc.h:61
GeoModelSvc::SCT_Version
virtual const std::string & SCT_Version() const override
Definition: GeoModelSvc.h:105
GeoModelSvc::ATLAS_NOT_THREAD_SAFE
virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE() override
GeoModelSvc::muonVersionOverride
virtual const std::string & muonVersionOverride() const override
Definition: GeoModelSvc.h:97
GeoModelSvc::queryInterface
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvInterface) override
Definition: GeoModelSvc.cxx:128
GeoModelSvc::m_sqliteReader
std::unique_ptr< GeoModelIO::ReadGeoModel > m_sqliteReader
Definition: GeoModelSvc.h:87
ITagInfoMgr::Listener
Listener interface class that client who want to be notified about TagInfo update should implement (a...
Definition: ITagInfoMgr.h:69
GeoModelSvc::m_detectorTools
ToolHandleArray< IGeoModelTool > m_detectorTools
Definition: GeoModelSvc.h:53
GeoModelSvc::tileVersion
virtual const std::string & tileVersion() const override
Definition: GeoModelSvc.h:108
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthService
Definition: AthService.h:32
GeoModelSvc::LAr_Version
virtual const std::string & LAr_Version() const override
Definition: GeoModelSvc.h:107
GeoModelSvc::m_caloVersionOverride
Gaudi::Property< std::string > m_caloVersionOverride
Definition: GeoModelSvc.h:70
GeoModelSvc::TRT_VersionOverride
virtual const std::string & TRT_VersionOverride() const override
Definition: GeoModelSvc.h:94
GeoModelSvc::LAr_VersionOverride
virtual const std::string & LAr_VersionOverride() const override
Definition: GeoModelSvc.h:95
GeoModelSvc
Definition: GeoModelSvc.h:31
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
GeoModelSvc::magFieldVersionOverride
virtual const std::string & magFieldVersionOverride() const override
Definition: GeoModelSvc.h:99
GeoModelSvc::m_inDetVersionOverride
Gaudi::Property< std::string > m_inDetVersionOverride
Definition: GeoModelSvc.h:63
GeoModelSvc::geoConfig
virtual GeoModel::GeoConfig geoConfig() const override
Definition: GeoModelSvc.h:115
GeoModelSvc::clear
virtual StatusCode clear() override
Definition: GeoModelSvc.cxx:582
IGeoModelTool.h
GeoModelSvc::m_forDetVersionOverride
Gaudi::Property< std::string > m_forDetVersionOverride
Definition: GeoModelSvc.h:73
GeoModelSvc::m_pixelVersionOverride
Gaudi::Property< std::string > m_pixelVersionOverride
Definition: GeoModelSvc.h:64
GeoModelSvc::m_larVersionOverride
Gaudi::Property< std::string > m_larVersionOverride
Definition: GeoModelSvc.h:67
GeoModelSvc::m_geoDbTagSvc
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
Definition: GeoModelSvc.h:59
GeoModelSvc::m_pSvcLocator
ISvcLocator * m_pSvcLocator
Definition: GeoModelSvc.h:55
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
GeoModelSvc::m_tagInfoMgr
ServiceHandle< ITagInfoMgr > m_tagInfoMgr
Definition: GeoModelSvc.h:58
GeoModelSvc::m_cavInfraVersionOverride
Gaudi::Property< std::string > m_cavInfraVersionOverride
Definition: GeoModelSvc.h:72
GeoModelSvc::TRT_Version
virtual const std::string & TRT_Version() const override
Definition: GeoModelSvc.h:106
IGeoModelTool
Definition: IGeoModelTool.h:12
GeoModelSvc::m_statisticsToFile
Gaudi::Property< bool > m_statisticsToFile
Definition: GeoModelSvc.h:79
GeoModelSvc::inDetVersion
virtual const std::string & inDetVersion() const override
Definition: GeoModelSvc.h:103
GeoModelSvc::m_sqliteDb
Gaudi::Property< bool > m_sqliteDb
Definition: GeoModelSvc.h:84
GeoModelSvc::forwardDetectorsVersion
virtual const std::string & forwardDetectorsVersion() const override
Definition: GeoModelSvc.h:113
GeoModelSvc::geoInit
StatusCode geoInit()
Definition: GeoModelSvc.cxx:141
AthService.h
GeoModelSvc::compareTags
StatusCode compareTags()
Definition: GeoModelSvc.cxx:339
GeoModelSvc::GeoModelSvc
GeoModelSvc(const std::string &name, ISvcLocator *svc)
Definition: GeoModelSvc.cxx:30
GeoModelSvc::m_detStore
ServiceHandle< StoreGateSvc > m_detStore
Definition: GeoModelSvc.h:57
GeoModelSvc::m_sqliteDbManager
std::unique_ptr< GMDBManager > m_sqliteDbManager
Definition: GeoModelSvc.h:88
GeoModelSvc::m_bFieldVersionOverride
Gaudi::Property< std::string > m_bFieldVersionOverride
Definition: GeoModelSvc.h:71
GeoModelSvc::magFieldVersion
virtual const std::string & magFieldVersion() const override
Definition: GeoModelSvc.h:111
checker_macros.h
Define macros for attributes used to control the static checker.
IGeoModelSvc.h
GeoModelSvc::m_ignoreTagSupport
Gaudi::Property< bool > m_ignoreTagSupport
Definition: GeoModelSvc.h:82
StoreGateSvc.h
GeoModelSvc::SCT_VersionOverride
virtual const std::string & SCT_VersionOverride() const override
Definition: GeoModelSvc.h:93
IGeoDbTagSvc.h
GeoModelSvc::cavernInfraVersion
virtual const std::string & cavernInfraVersion() const override
Definition: GeoModelSvc.h:112
GeoModelSvc::inDetVersionOverride
virtual const std::string & inDetVersionOverride() const override
Definition: GeoModelSvc.h:91
ServiceHandle< StoreGateSvc >
GeoModelSvc::m_ignoreTagDifference
Gaudi::Property< bool > m_ignoreTagDifference
Definition: GeoModelSvc.h:76