ATLAS Offline Software
Public Member Functions | Protected Attributes | Private Attributes | List of all members
TRT_DetectorTool Class Referencefinal

#include <TRT_DetectorTool.h>

Inheritance diagram for TRT_DetectorTool:
Collaboration diagram for TRT_DetectorTool:

Public Member Functions

 TRT_DetectorTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~TRT_DetectorTool ()=default
 
virtual StatusCode create () override final
 
virtual StatusCode clear () override final
 
virtual StatusCode registerCallback ATLAS_NOT_THREAD_SAFE () override final
 
virtual StatusCode align (IOVSVC_CALLBACK_ARGS) override final
 
virtual GeoVDetectorManager * manager ()
 The Detector Node corresponding to this tool. More...
 
virtual const GeoVDetectorManager * manager () const
 

Protected Attributes

GeoVDetectorManager * m_detector
 

Private Attributes

Gaudi::Property< bool > m_useOldActiveGasMixture {this,"UseOldActiveGasMixture",false}
 
Gaudi::Property< bool > m_DC2CompatibleBarrelCoordinates {this,"DC2CompatibleBarrelCoordinates",false}
 
Gaudi::Property< int > m_overridedigversion {this,"OverrideDigVersion",-999}
 
Gaudi::Property< bool > m_alignable {this,"Alignable",true}
 
Gaudi::Property< bool > m_useDynamicAlignFolders {this,"useDynamicAlignFolders",false}
 
Gaudi::Property< bool > m_doArgonMixture {this,"DoXenonArgonMixture",true}
 
Gaudi::Property< bool > m_doKryptonMixture {this,"DoKryptonMixture",true}
 
ServiceHandle< IGeoDbTagSvcm_geoDbTagSvc {this,"GeoDbTagSvc","GeoDbTagSvc"}
 
ServiceHandle< IGeometryDBSvcm_geometryDBSvc {this,"GeometryDBSvc","InDetGeometryDBSvc"}
 
ToolHandle< ITRT_StrawStatusSummaryToolm_sumTool {"TRT_StrawStatusSummaryTool", this}
 
const InDetDD::TRT_DetectorManagerm_manager {nullptr}
 
InDetDD::AthenaComps m_athenaComps {"TRT_GeoModel"}
 
bool m_initialLayout {true}
 

Detailed Description

Definition at line 24 of file TRT_DetectorTool.h.

Constructor & Destructor Documentation

◆ TRT_DetectorTool()

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

Definition at line 24 of file TRT_DetectorTool.cxx.

26 {
27 }

◆ ~TRT_DetectorTool()

virtual TRT_DetectorTool::~TRT_DetectorTool ( )
virtualdefault

Member Function Documentation

◆ align()

StatusCode TRT_DetectorTool::align ( IOVSVC_CALLBACK_ARGS  )
finaloverridevirtual

Reimplemented from GeoModelTool.

Definition at line 258 of file TRT_DetectorTool.cxx.

259 {
260  MsgStream log(msgSvc(), name());
261  if (!m_manager) {
262  msg(MSG::WARNING) << "Manager does not exist" << endmsg;
263  return StatusCode::FAILURE;
264  }
265  if (m_alignable) {
266  return m_manager->align(I,keys);
267  } else {
268  msg(MSG::DEBUG) << "Alignment disabled. No alignments applied" << endmsg;
269  return StatusCode::SUCCESS;
270  }
271 }

◆ ATLAS_NOT_THREAD_SAFE()

virtual StatusCode registerCallback TRT_DetectorTool::ATLAS_NOT_THREAD_SAFE ( )
finaloverridevirtual

Reimplemented from GeoModelTool.

◆ clear()

StatusCode TRT_DetectorTool::clear ( )
finaloverridevirtual

Reimplemented from GeoModelTool.

Definition at line 246 of file TRT_DetectorTool.cxx.

247 {
249  if(proxy) {
250  proxy->reset();
251  m_manager = nullptr;
252  }
253  return StatusCode::SUCCESS;
254 }

◆ create()

StatusCode TRT_DetectorTool::create ( )
finaloverridevirtual

Definition at line 31 of file TRT_DetectorTool.cxx.

32 {
33  // Get the detector configuration.
34  ATH_CHECK( m_geoDbTagSvc.retrieve());
35 
36  // Get the straw status tool
37  ATH_CHECK(m_sumTool.retrieve());
38 
39  ServiceHandle<IRDBAccessSvc> accessSvc(m_geoDbTagSvc->getParamSvcName(),name());
40  ATH_CHECK( accessSvc.retrieve());
41 
42  // Locate the top level experiment node
43  GeoModelExperiment* theExpt{nullptr};
44  ATH_CHECK(detStore()->retrieve(theExpt,"ATLAS"));
45  GeoPhysVol *world = theExpt->getPhysVol();
46 
47  // Retrieve the Geometry DB Interface
48  ATH_CHECK( m_geometryDBSvc.retrieve() );
49 
50  // Pass athena services to factory, etc
51  m_athenaComps.setDetStore(detStore().operator->());
53  m_athenaComps.setRDBAccessSvc(accessSvc.get());
55 
56  GeoModelIO::ReadGeoModel* sqliteReader = m_geoDbTagSvc->getSqliteReader();
57  //
58  // If we are using the SQLite reader, then we are not building the raw geometry but
59  // just locating it and attaching to readout geometry and various other actions
60  // taken in this factory.
61  //
62  if (sqliteReader) {
63  ATH_MSG_INFO( " Building TRT geometry from GeoModel factory TRTDetectorFactory_Lite" );
64  TRTDetectorFactory_Lite theTRTFactory(sqliteReader,
66  m_sumTool.get(),
72  );
73 
74  theTRTFactory.create(world);
75  m_manager=theTRTFactory.getDetectorManager();
76  }
77  else {
78  DecodeVersionKey versionKey(m_geoDbTagSvc.get(), "TRT");
79 
80  ATH_MSG_INFO( "Building TRT with Version Tag: "<< versionKey.tag() << " at Node: " << versionKey.node() );
81 
82  // Print the TRT version tag:
83  std::string trtVersionTag = accessSvc->getChildTag("TRT", versionKey.tag(), versionKey.node());
84  ATH_MSG_INFO("TRT Version: " << trtVersionTag );
85 
86  // Check if version is empty. If so, then the TRT cannot be built. This may or may not be intentional. We
87  // just issue an INFO message.
88  if (trtVersionTag.empty()) {
89  ATH_MSG_INFO("No TRT Version. TRT will not be built." );
90  return StatusCode::SUCCESS;
91  }
92 
93  ATH_MSG_DEBUG( "Keys for TRT Switches are " << versionKey.tag() << " " << versionKey.node() );
94  IRDBRecordset_ptr switchSet = accessSvc->getRecordsetPtr("TRTSwitches", versionKey.tag(), versionKey.node());
95  const IRDBRecord *switches = (*switchSet)[0];
96 
97  if (switches->getInt("DC1COMPATIBLE")) {
98  ATH_MSG_ERROR( "DC1COMPATIBLE flag set in database, but DC1 is no longer supported in the code!!");
99  return StatusCode::FAILURE;
100  }
101 
102  m_DC2CompatibleBarrelCoordinates = switches->getInt("DC2COMPATIBLE");
103  m_useOldActiveGasMixture = ( switches->getInt("GASVERSION") == 0 );
104  m_initialLayout = switches->getInt("INITIALLAYOUT");
105 
106  // Check if the new switches exists:
108  if ( switches->getInt("DOARGONMIXTURE") == 0) { m_doArgonMixture = false; }
109  else if ( switches->getInt("DOARGONMIXTURE") == 1) { m_doArgonMixture = true; }
110 
111  if ( switches->getInt("DOKRYPTONMIXTURE") == 0) { m_doKryptonMixture = false; }
112  else if ( switches->getInt("DOKRYPTONMIXTURE") == 1) { m_doKryptonMixture = true; }
113  }
114 
115  ATH_MSG_INFO( "Creating the TRT" );
116  ATH_MSG_INFO( "TRT Geometry Options:" << std::boolalpha );
117  ATH_MSG_INFO( " UseOldActiveGasMixture = " << m_useOldActiveGasMixture );
118  ATH_MSG_INFO( " Do Argon = " << m_doArgonMixture );
119  ATH_MSG_INFO( " Do Krypton = " << m_doKryptonMixture );
120  ATH_MSG_INFO( " DC2CompatibleBarrelCoordinates = " << m_DC2CompatibleBarrelCoordinates );
121  ATH_MSG_INFO( " InitialLayout = " << m_initialLayout );
122  ATH_MSG_INFO( " Alignable = " << m_alignable );
123  ATH_MSG_INFO( " VersioName = " << switches->getString("VERSIONNAME") );
124 
125  ATH_MSG_INFO( " Building TRT geometry from GeoModel factory TRTDetectorFactory_Full" );
126 
127  TRTDetectorFactory_Full theTRTFactory(&m_athenaComps,
128  m_sumTool.get(),
132  m_alignable,
136  );
137  theTRTFactory.create(world);
138  m_manager=theTRTFactory.getDetectorManager();
139 
140  }
141 
142  // Register the TRTDetectorNode instance with the Transient Detector Store
143  if (!m_manager) return StatusCode::FAILURE;
144 
145  theExpt->addManager(m_manager);
146  ATH_CHECK(detStore()->record(m_manager,m_manager->getName()));
147  return StatusCode::SUCCESS;
148 }

◆ manager() [1/2]

GeoVDetectorManager * GeoModelTool::manager ( )
virtualinherited

The Detector Node corresponding to this tool.

Definition at line 21 of file GeoModelTool.cxx.

21  {
22  return m_detector;
23 }

◆ manager() [2/2]

const GeoVDetectorManager * GeoModelTool::manager ( ) const
virtualinherited

Definition at line 24 of file GeoModelTool.cxx.

24  {
25  return m_detector;
26 }

Member Data Documentation

◆ m_alignable

Gaudi::Property<bool> TRT_DetectorTool::m_alignable {this,"Alignable",true}
private

Definition at line 46 of file TRT_DetectorTool.h.

◆ m_athenaComps

InDetDD::AthenaComps TRT_DetectorTool::m_athenaComps {"TRT_GeoModel"}
private

Definition at line 59 of file TRT_DetectorTool.h.

◆ m_DC2CompatibleBarrelCoordinates

Gaudi::Property<bool> TRT_DetectorTool::m_DC2CompatibleBarrelCoordinates {this,"DC2CompatibleBarrelCoordinates",false}
private

Definition at line 44 of file TRT_DetectorTool.h.

◆ m_detector

GeoVDetectorManager* GeoModelTool::m_detector
protectedinherited

Definition at line 36 of file GeoModelTool.h.

◆ m_doArgonMixture

Gaudi::Property<bool> TRT_DetectorTool::m_doArgonMixture {this,"DoXenonArgonMixture",true}
private

Definition at line 50 of file TRT_DetectorTool.h.

◆ m_doKryptonMixture

Gaudi::Property<bool> TRT_DetectorTool::m_doKryptonMixture {this,"DoKryptonMixture",true}
private

Definition at line 52 of file TRT_DetectorTool.h.

◆ m_geoDbTagSvc

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

Definition at line 54 of file TRT_DetectorTool.h.

◆ m_geometryDBSvc

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

Definition at line 55 of file TRT_DetectorTool.h.

◆ m_initialLayout

bool TRT_DetectorTool::m_initialLayout {true}
private

Definition at line 60 of file TRT_DetectorTool.h.

◆ m_manager

const InDetDD::TRT_DetectorManager* TRT_DetectorTool::m_manager {nullptr}
private

Definition at line 58 of file TRT_DetectorTool.h.

◆ m_overridedigversion

Gaudi::Property<int> TRT_DetectorTool::m_overridedigversion {this,"OverrideDigVersion",-999}
private

Definition at line 45 of file TRT_DetectorTool.h.

◆ m_sumTool

ToolHandle<ITRT_StrawStatusSummaryTool> TRT_DetectorTool::m_sumTool {"TRT_StrawStatusSummaryTool", this}
private

Definition at line 56 of file TRT_DetectorTool.h.

◆ m_useDynamicAlignFolders

Gaudi::Property<bool> TRT_DetectorTool::m_useDynamicAlignFolders {this,"useDynamicAlignFolders",false}
private

Definition at line 47 of file TRT_DetectorTool.h.

◆ m_useOldActiveGasMixture

Gaudi::Property<bool> TRT_DetectorTool::m_useOldActiveGasMixture {this,"UseOldActiveGasMixture",false}
private

Definition at line 43 of file TRT_DetectorTool.h.


The documentation for this class was generated from the following files:
IRDBRecord::getInt
virtual int getInt(const std::string &fieldName) const =0
Get int field value.
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
IRDBRecord::getString
virtual const std::string & getString(const std::string &fieldName) const =0
Get string field value.
GeoModelExperiment
Definition: GeoModelExperiment.h:32
TRT_DetectorTool::m_alignable
Gaudi::Property< bool > m_alignable
Definition: TRT_DetectorTool.h:46
TRT_DetectorTool::m_manager
const InDetDD::TRT_DetectorManager * m_manager
Definition: TRT_DetectorTool.h:58
GeoModelTool::GeoModelTool
GeoModelTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor(s)
Definition: GeoModelTool.cxx:12
InDetDD::AthenaComps::setGeoDbTagSvc
void setGeoDbTagSvc(IGeoDbTagSvc *)
Definition: InDetDDAthenaComps.cxx:22
InDetDD::AthenaComps::setDetStore
void setDetStore(StoreGateSvc *)
Definition: InDetDDAthenaComps.cxx:17
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
TRT_DetectorTool::m_DC2CompatibleBarrelCoordinates
Gaudi::Property< bool > m_DC2CompatibleBarrelCoordinates
Definition: TRT_DetectorTool.h:44
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
DecodeVersionKey
This is a helper class to query the version tags from GeoModelSvc and determine the appropriate tag a...
Definition: DecodeVersionKey.h:18
ClassID_traits
Default, invalid implementation of ClassID_traits.
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:40
test_pyathena.parent
parent
Definition: test_pyathena.py:15
InDetDD::AthenaComps::setRDBAccessSvc
void setRDBAccessSvc(IRDBAccessSvc *)
Definition: InDetDDAthenaComps.cxx:27
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TRT_DetectorTool::m_athenaComps
InDetDD::AthenaComps m_athenaComps
Definition: TRT_DetectorTool.h:59
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
TRT_DetectorTool::m_initialLayout
bool m_initialLayout
Definition: TRT_DetectorTool.h:60
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
GeoModelTool::m_detector
GeoVDetectorManager * m_detector
Definition: GeoModelTool.h:36
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
InDetDD::InDetDetectorManager::align
StatusCode align(IOVSVC_CALLBACK_ARGS) const
TRT_DetectorTool::m_overridedigversion
Gaudi::Property< int > m_overridedigversion
Definition: TRT_DetectorTool.h:45
IRDBRecord
IRDBRecord is one record in the IRDBRecordset object.
Definition: IRDBRecord.h:27
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DEBUG
#define DEBUG
Definition: page_access.h:11
InDetDD::AthenaComps::setGeometryDBSvc
void setGeometryDBSvc(IGeometryDBSvc *)
Definition: InDetDDAthenaComps.cxx:32
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TRT_DetectorTool::m_doKryptonMixture
Gaudi::Property< bool > m_doKryptonMixture
Definition: TRT_DetectorTool.h:52
TRT_DetectorTool::m_useOldActiveGasMixture
Gaudi::Property< bool > m_useOldActiveGasMixture
Definition: TRT_DetectorTool.h:43
TRT_DetectorTool::m_doArgonMixture
Gaudi::Property< bool > m_doArgonMixture
Definition: TRT_DetectorTool.h:50
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
TRT_DetectorTool::m_sumTool
ToolHandle< ITRT_StrawStatusSummaryTool > m_sumTool
Definition: TRT_DetectorTool.h:56
TRTDetectorFactory_Lite
Definition: TRTDetectorFactory_Lite.h:29
TRT_DetectorTool::m_geoDbTagSvc
ServiceHandle< IGeoDbTagSvc > m_geoDbTagSvc
Definition: TRT_DetectorTool.h:54
TRT_DetectorTool::m_useDynamicAlignFolders
Gaudi::Property< bool > m_useDynamicAlignFolders
Definition: TRT_DetectorTool.h:47
I
#define I(x, y, z)
Definition: MD5.cxx:116
TRTDetectorFactory_Full
This class creates the TRT Geometry.
Definition: TRTDetectorFactory_Full.h:31
SG::DataProxy
Definition: DataProxy.h:44
TRT_DetectorTool::m_geometryDBSvc
ServiceHandle< IGeometryDBSvc > m_geometryDBSvc
Definition: TRT_DetectorTool.h:55
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
ServiceHandle< IRDBAccessSvc >