ATLAS Offline Software
Loading...
Searching...
No Matches
InDetServMatTool Class Referencefinal

#include <InDetServMatTool.h>

Inheritance diagram for InDetServMatTool:
Collaboration diagram for InDetServMatTool:

Public Member Functions

 InDetServMatTool (const std::string &type, const std::string &name, const IInterface *parent)
 Constructor(s)
virtual ~InDetServMatTool () override=default
virtual StatusCode create () override
 Create the Detector Node corresponding to this tool.
virtual StatusCode clear () override
virtual GeoVDetectorManager * manager ()
virtual const GeoVDetectorManager * manager () const
virtual StatusCode registerCallback ATLAS_NOT_THREAD_SAFE () override
virtual StatusCode align ATLAS_NOT_THREAD_SAFE (IOVSVC_CALLBACK_ARGS) override

Protected Attributes

GeoVDetectorManager * m_detector {nullptr}

Private Attributes

ServiceHandle< IGeoDbTagSvcm_geoDbTagSvc {this,"GeoDbTagSvc","GeoDbTagSvc"}
ServiceHandle< IGeometryDBSvcm_geometryDBSvc {this,"GeometryDBSvc","InDetGeometryDBSvc"}
ToolHandle< IInDetServMatBuilderToolm_builderTool {this,"ServiceBuilderTool",""}
StringProperty m_overrideVersionName {this,"OverrideVersionName",""}
const InDetDD::InDetServMatManagerm_manager {nullptr}
InDetServMatAthenaComps m_athenaComps {}

Detailed Description

Definition at line 23 of file InDetServMatTool.h.

Constructor & Destructor Documentation

◆ InDetServMatTool()

InDetServMatTool::InDetServMatTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructor(s)

Definition at line 25 of file InDetServMatTool.cxx.

26 : GeoModelTool( type, name, parent )
27{
28}

◆ ~InDetServMatTool()

virtual InDetServMatTool::~InDetServMatTool ( )
overridevirtualdefault

Member Function Documentation

◆ ATLAS_NOT_THREAD_SAFE() [1/2]

virtual StatusCode registerCallback GeoModelTool::ATLAS_NOT_THREAD_SAFE ( )
inlineoverridevirtualinherited

Reimplemented in BCMPrimeDetectorTool, HGTD_DetectorTool, HGTD_GMX_DetectorTool, PLRDetectorTool, and TRT_DetectorTool.

Definition at line 26 of file GeoModelTool.h.

26{return StatusCode::FAILURE;}

◆ ATLAS_NOT_THREAD_SAFE() [2/2]

virtual StatusCode align GeoModelTool::ATLAS_NOT_THREAD_SAFE ( IOVSVC_CALLBACK_ARGS )
inlineoverridevirtualinherited

Reimplemented in HGTD_DetectorTool, LArDetectorToolNV, PixelDetectorTool, SCT_DetectorTool, and TRT_DetectorTool.

Definition at line 27 of file GeoModelTool.h.

27{return StatusCode::SUCCESS;}

◆ clear()

StatusCode InDetServMatTool::clear ( )
overridevirtual

Reimplemented from GeoModelTool.

Definition at line 129 of file InDetServMatTool.cxx.

130{
131 SG::DataProxy* proxy = detStore()->proxy(ClassID_traits<InDetDD::InDetServMatManager>::ID(),m_manager->getName());
132 if(proxy) {
133 proxy->reset();
134 m_manager = nullptr;
135 }
136 return StatusCode::SUCCESS;
137}
const InDetDD::InDetServMatManager * m_manager

◆ create()

StatusCode InDetServMatTool::create ( )
overridevirtual

Create the Detector Node corresponding to this tool.

Definition at line 33 of file InDetServMatTool.cxx.

34{
35
36 //
37 // Locate the top level experiment node
38 //
39 GeoModelExperiment * theExpt{nullptr};
40 ATH_CHECK(detStore()->retrieve(theExpt,"ATLAS"));
41
42 // Get the detector configuration.
43 ATH_CHECK(m_geoDbTagSvc.retrieve());
44
45 ServiceHandle<IRDBAccessSvc> accessSvc(m_geoDbTagSvc->getParamSvcName(),name());
46 ATH_CHECK(accessSvc.retrieve());
47
48 GeoPhysVol *world=theExpt->getPhysVol();
49
50 GeoModelIO::ReadGeoModel* sqliteReader = m_geoDbTagSvc->getSqliteReader();
51
52 if (sqliteReader) {
53 InDetServMatFactory_Lite factoryLite;;
54 factoryLite.create(world);
55 m_manager = factoryLite.getDetectorManager();
56 }
57 else {
58 DecodeVersionKey versionKey(m_geoDbTagSvc.get(), "InnerDetector");
59
60 std::string versionTag = accessSvc->getChildTag("InDetServices", versionKey.tag(), versionKey.node());
61 ATH_MSG_DEBUG("versionTag=" << versionTag << " %%%");
62
63 // If versionTag is NULL then don't build.
64 if (versionTag.empty()) {
65 ATH_MSG_INFO("No InDetService Version. InDetService will not be built.");
66 ATH_MSG_DEBUG("InnerDetector Version Tag: " << versionKey.tag() << " at Node: " << versionKey.node());
67 return StatusCode::SUCCESS;
68 }
69
70 ATH_MSG_DEBUG("Keys for InDetServMat Switches are " << versionKey.tag() << " " << versionKey.node());
71
72 std::string versionName{"CSC"};
73 if (!m_overrideVersionName.empty()) {
74 versionName = m_overrideVersionName;
75 ATH_MSG_INFO("Overriding version name: " << versionName);
76 }
77 ATH_MSG_INFO("Building Inner Detector Service Material. Version: " << versionName);
78
79 // Retrieve the Geometry DB Interface
80 ATH_CHECK(m_geometryDBSvc.retrieve());
81
82 // Pass athena services to factory, etc
83 m_athenaComps.setDetStore(detStore().get());
84 m_athenaComps.setGeoDbTagSvc(m_geoDbTagSvc.get());
85 m_athenaComps.setRDBAccessSvc(accessSvc.get());
86 m_athenaComps.setGeometryDBSvc(m_geometryDBSvc.get());
87
88 // Retrieve builder tool (SLHC only)
89 if (versionName == "SLHC") {
90 if (!m_builderTool.empty()) {
91 if(m_builderTool.retrieve().isFailure()) {
92 ATH_MSG_WARNING("Could not retrieve " << m_builderTool << ", some services will not be built.");
93 }
94 else {
95 ATH_MSG_INFO("Service builder tool retrieved: " << m_builderTool);
96 m_athenaComps.setBuilderTool(&*m_builderTool);
97 }
98 }
99 else {
100 // This will become an error once the tool is ready.
101 ATH_MSG_INFO("Service builder tool not specified.");
102 }
103 }
104
105 if (versionName == "CSC") {
106 ATH_MSG_DEBUG("InDetServMat Factory CSC");
107 InDetServMatFactory theIDSM(&m_athenaComps);
108 theIDSM.create(world);
109 m_manager=theIDSM.getDetectorManager();
110 } else {
111 // Unrecognized name.
112 ATH_MSG_FATAL("Unrecognized VersionName: " << versionName);
113 return StatusCode::FAILURE;
114 }
115 }
116
117 if (m_manager) {
118 theExpt->addManager(m_manager);
119 ATH_CHECK(detStore()->record (m_manager, m_manager->getName()));
120 }
121 else {
122 ATH_MSG_FATAL("Could not create InDetServMatManager!");
123 return StatusCode::FAILURE;
124 }
125
126 return StatusCode::SUCCESS;
127}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
GeoPhysVol * getPhysVol()
Destructor.
void addManager(const GeoVDetectorManager *)
virtual const InDetDD::InDetServMatManager * getDetectorManager() const override
virtual void create(GeoPhysVol *world) override
InDetServMatAthenaComps m_athenaComps
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
StringProperty m_overrideVersionName
ToolHandle< IInDetServMatBuilderTool > m_builderTool
ServiceHandle< IGeometryDBSvc > m_geometryDBSvc
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ manager() [1/2]

virtual GeoVDetectorManager * GeoModelTool::manager ( )
inlinevirtualinherited

Definition at line 22 of file GeoModelTool.h.

22{return m_detector;}
GeoVDetectorManager * m_detector

◆ manager() [2/2]

virtual const GeoVDetectorManager * GeoModelTool::manager ( ) const
inlinevirtualinherited

Definition at line 23 of file GeoModelTool.h.

23{return m_detector;}

Member Data Documentation

◆ m_athenaComps

InDetServMatAthenaComps InDetServMatTool::m_athenaComps {}
private

Definition at line 41 of file InDetServMatTool.h.

41{};

◆ m_builderTool

ToolHandle<IInDetServMatBuilderTool> InDetServMatTool::m_builderTool {this,"ServiceBuilderTool",""}
private

Definition at line 37 of file InDetServMatTool.h.

37{this,"ServiceBuilderTool",""};

◆ m_detector

GeoVDetectorManager* GeoModelTool::m_detector {nullptr}
protectedinherited

Definition at line 30 of file GeoModelTool.h.

30{nullptr};

◆ m_geoDbTagSvc

ServiceHandle< IGeoDbTagSvc > InDetServMatTool::m_geoDbTagSvc {this,"GeoDbTagSvc","GeoDbTagSvc"}
private

Definition at line 35 of file InDetServMatTool.h.

35{this,"GeoDbTagSvc","GeoDbTagSvc"};

◆ m_geometryDBSvc

ServiceHandle< IGeometryDBSvc > InDetServMatTool::m_geometryDBSvc {this,"GeometryDBSvc","InDetGeometryDBSvc"}
private

Definition at line 36 of file InDetServMatTool.h.

36{this,"GeometryDBSvc","InDetGeometryDBSvc"};

◆ m_manager

const InDetDD::InDetServMatManager* InDetServMatTool::m_manager {nullptr}
private

Definition at line 40 of file InDetServMatTool.h.

40{nullptr};

◆ m_overrideVersionName

StringProperty InDetServMatTool::m_overrideVersionName {this,"OverrideVersionName",""}
private

Definition at line 38 of file InDetServMatTool.h.

38{this,"OverrideVersionName",""};

The documentation for this class was generated from the following files: