ATLAS Offline Software
Loading...
Searching...
No Matches
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
12
13#include "G4LogicalVolume.hh"
14#include "VolumeBuilder.h"
15
16#include "GaudiKernel/ServiceHandle.h"
18
20#include "GeoModelKernel/GeoVPhysVol.h"
21#include "GeoModelKernel/GeoDefinitions.h"
24
25// STL includes
26#include <string>
27#include <vector>
28
29class GeoMaterial;
30class StoreGateSvc;
32
34
35public:
36 // Constructor:
37 Geo2G4Builder(const std::string& detectorName);
38 // Destructor:
39 ~Geo2G4Builder() = default;
40
41 // Build method - geometry
42 G4LogicalVolume* BuildTree();
43
44 // Build method - optical surfaces
45 void BuildOpticalSurfaces(const GeoBorderSurfaceContainer* surface_container,
46 const OpticalVolumesMap* optical_volumes);
47
48 // Access volume builder:
49 VolumeBuilder* GetVolumeBuilder(std::string);
50
52
53private:
54
55 // GeoVDetectorManager* theDetectorElement;
56 std::string m_detectorName;
57 GeoTrf::Transform3D m_motherTransform;
58 std::vector<PVConstLink> m_treeTops;
60
61 // std::Air in the case when top boolean envelope has to be built
62 const GeoMaterial* m_matAir{nullptr};
63 ServiceHandle<StoreGateSvc> m_pDetStore{"DetectorStore", "Geo2G4Builder"};
64 ServiceHandle<IGeo2G4Svc> m_g2gSvc{"Geo2G4Svc", "Geo2G4Builder"};
66};
67
68#endif
std::vector< GeoBorderSurface > GeoBorderSurfaceContainer
std::map< const GeoOpticalPhysVol *, G4VPhysicalVolume *, std::less< const GeoOpticalPhysVol * > > OpticalVolumesMap
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
GeoModelExperiment * m_theExpt
std::vector< PVConstLink > m_treeTops
VolumeBuilder * GetVolumeBuilder(std::string)
const GeoMaterial * m_matAir
Geo2G4Builder(const std::string &detectorName)
void BuildOpticalSurfaces(const GeoBorderSurfaceContainer *surface_container, const OpticalVolumesMap *optical_volumes)
~Geo2G4Builder()=default
G4LogicalVolume * BuildTree()
std::string m_detectorName
ServiceHandle< IGeo2G4Svc > m_g2gSvc
ServiceHandle< StoreGateSvc > m_pDetStore
VolumeBuilder * m_theBuilder
HepGeom::Transform3D GetDetectorTransform()
GeoTrf::Transform3D m_motherTransform
The Athena Transient Store API.
HepGeom::Transform3D EigenTransformToCLHEP(const Amg::Transform3D &eigenTransf)
Converts an Eigen-based Amg::Transform3D into a CLHEP-based HepGeom::Transform3D.