9#include "G4PVPlacement.hh"
10#include "G4RotationMatrix.hh"
11#include "G4LogicalVolumeStore.hh"
14 : base_class(
type,name,parent)
46 ATH_MSG_DEBUG( name() <<
"::initialize(): no sub-detectors to initialize." );
50 return StatusCode::SUCCESS;
55 ATH_MSG_VERBOSE( name() <<
"::Build() (Base class method): Starting. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
58 ATH_MSG_VERBOSE( name() <<
"::Build() - Envelope set. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
62 ATH_MSG_VERBOSE( name() <<
"::Build() - Geometry built. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
65 ATH_MSG_VERBOSE( name() <<
"::Build() - Volume moved around. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
68 ATH_MSG_VERBOSE( name() <<
"::Build() - Connected with parent. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
71 ATH_MSG_VERBOSE( name() <<
"::Build() (Base class method): Finished. Number of registered volumes "<<G4LogicalVolumeStore::GetInstance()->size() );
77 ATH_MSG_VERBOSE(
"DetectorGeometryBase::BuildGeometry(): Using base-class method. Anything going wrong?");
82 ATH_MSG_VERBOSE( name() <<
"::SetRotationAndOffset() (Base class method)");
117 ATH_MSG_VERBOSE( name() <<
"::SetRotationAndOffset() (Base class method): Finished" );
122 ATH_MSG_VERBOSE( name() <<
"::PositionInParent() (Base class method)");
128 G4VPhysicalVolume* physWorld=
new G4PVPlacement(0,G4ThreeVector(),
157 ATH_MSG_VERBOSE( name() <<
"::BuildSubDetectors() (Base class method): Starting");
160 ATH_MSG_VERBOSE(name() <<
"::BuildSubDetectors() (Base class method): Positioning "<<subDetTool->GetDetectorName()<<
" within "<<
m_detectorName.value());
161 subDetTool->SetParent(
this);
164 ATH_MSG_VERBOSE( name() <<
"::BuildSubDetectors() (Base class method): Finished");
206 ATH_MSG_ERROR(
"trying to get World from a DetectorTool which World is not!");
#define ATH_MSG_VERBOSE(x)
#define CHECK(...)
Evaluate an expression and check for errors.
G4VPhysicalVolume * GetWorldVolume() override final
virtual void BuildGeometry() override
void SetParent(IDetectorGeometryTool *) override
Gaudi::Property< double > m_rotateY
DetectorGeometryBase(const std::string &type, const std::string &name, const IInterface *parent)
virtual void SetAsWorld() override
virtual void SetEnvelope() override
virtual void SetRotationAndOffset()
IDetectorGeometryTool * m_theParent
Gaudi::Property< double > m_rotateX
StatusCode initialize() override
Athena method.
Envelope & GetEnvelope() override final
Gaudi::Property< std::string > m_detectorName
Gaudi::Property< double > m_offsetX
virtual void ResetEnvelope() override
std::string GetDetectorName() const override
ServiceHandle< IG4GeometryNotifierSvc > m_notifierSvc
virtual void PositionInParent() override
Gaudi::Property< double > m_offsetY
void SetDetectorName(const std::string &) override
virtual void Build() override
purely virtual methods being implemented here
Gaudi::Property< double > m_rotateZ
Gaudi::Property< double > m_offsetZ
virtual void BuildSubDetectors() override
ToolHandleArray< IDetectorGeometryTool > m_subDetTools