ATLAS Offline Software
Geo2G4Builder.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 GEO2G4_GEO2G4BUILDER_H
6 #define GEO2G4_GEO2G4BUILDER_H
7 
13 #include "VolumeBuilder.h"
14 #include "GeoModelKernel/GeoVPhysVol.h"
15 #include "GeoModelKernel/GeoDefinitions.h"
16 #include "G4LogicalVolume.hh"
17 
21 
22 // STL includes
23 #include <string>
24 #include <vector>
25 
26 class GeoMaterial;
27 class StoreGateSvc;
28 class GeoModelExperiment;
29 
30 class Geo2G4Builder : public AthMessaging {
31 
32 public:
33  // Constructor:
34  Geo2G4Builder(const std::string& detectorName);
35  // Destructor:
36  ~Geo2G4Builder() = default;
37 
38  // Build method - geometry
39  G4LogicalVolume* BuildTree();
40 
41  // Build method - optical surfaces
42  void BuildOpticalSurfaces(const GeoBorderSurfaceContainer* surface_container,
43  const OpticalVolumesMap* optical_volumes);
44 
45  // Access volume builder:
46  VolumeBuilder* GetVolumeBuilder(std::string);
47 
49 
50 private:
51 
52  // GeoVDetectorManager* theDetectorElement;
53  std::string m_detectorName;
55  std::vector<PVConstLink> m_treeTops;
57 
58  // std::Air in the case when top boolean envelope has to be built
59  const GeoMaterial* m_matAir{nullptr};
62 };
63 
64 #endif
Geo2G4Builder::m_treeTops
std::vector< PVConstLink > m_treeTops
Definition: Geo2G4Builder.h:55
Geo2G4Builder::m_matAir
const GeoMaterial * m_matAir
Definition: Geo2G4Builder.h:59
VolumeBuilder
Definition: Simulation/G4Utilities/Geo2G4/src/VolumeBuilder.h:22
GeoModelExperiment
Definition: GeoModelExperiment.h:32
Geo2G4Builder
Main builder to create/position all volumes described in a GeoModel Tree.
Definition: Geo2G4Builder.h:30
OpticalVolumesMap
std::map< const GeoOpticalPhysVol *, G4VPhysicalVolume *, std::less< const GeoOpticalPhysVol * > > OpticalVolumesMap
Definition: Simulation/G4Utilities/Geo2G4/src/VolumeBuilder.h:19
Geo2G4Builder::BuildOpticalSurfaces
void BuildOpticalSurfaces(const GeoBorderSurfaceContainer *surface_container, const OpticalVolumesMap *optical_volumes)
Definition: Geo2G4Builder.cxx:180
GeoBorderSurfaceContainer.h
Geo2G4Builder::m_motherTransform
GeoTrf::Transform3D m_motherTransform
Definition: Geo2G4Builder.h:54
Geo2G4Builder::GetDetectorTransform
HepGeom::Transform3D GetDetectorTransform()
Definition: Geo2G4Builder.h:48
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
Geo2G4Builder::BuildTree
G4LogicalVolume * BuildTree()
Definition: Geo2G4Builder.cxx:88
Geo2G4Builder::m_pDetStore
StoreGateSvc * m_pDetStore
Definition: Geo2G4Builder.h:60
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
CLHEPtoEigenConverter.h
Geo2G4Builder::~Geo2G4Builder
~Geo2G4Builder()=default
VolumeBuilder.h
GeoBorderSurfaceContainer
std::vector< GeoBorderSurface > GeoBorderSurfaceContainer
Definition: GeoBorderSurfaceContainer.h:12
AthMessaging.h
Amg::EigenTransformToCLHEP
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.
Definition: CLHEPtoEigenConverter.h:120
Geo2G4Builder::Geo2G4Builder
Geo2G4Builder(const std::string &detectorName)
Definition: Geo2G4Builder.cxx:36
Geo2G4Builder::GetVolumeBuilder
VolumeBuilder * GetVolumeBuilder(std::string)
Definition: Geo2G4Builder.cxx:171
Geo2G4Builder::m_theExpt
GeoModelExperiment * m_theExpt
Definition: Geo2G4Builder.h:61
Geo2G4Builder::m_theBuilder
VolumeBuilder * m_theBuilder
Definition: Geo2G4Builder.h:56
Geo2G4Builder::m_detectorName
std::string m_detectorName
Definition: Geo2G4Builder.h:53