File indexing completed on 2025-01-18 09:55:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef DDG4_GEANT4ASSEMBLYVOLUME_H
0014 #define DDG4_GEANT4ASSEMBLYVOLUME_H
0015
0016
0017 #include <TGeoNode.h>
0018
0019
0020 #include <G4AssemblyVolume.hh>
0021
0022
0023 #include <vector>
0024
0025
0026 namespace dd4hep {
0027
0028
0029 namespace sim {
0030
0031
0032 class Geant4Converter;
0033 class Geant4GeometryInfo;
0034
0035
0036
0037
0038
0039
0040
0041 class Geant4AssemblyVolume {
0042
0043 public:
0044
0045 typedef std::vector<const TGeoNode*> Chain;
0046 std::vector<const TGeoNode*> m_entries;
0047 std::vector<Geant4AssemblyVolume*> m_places;
0048 G4AssemblyVolume* m_assembly { nullptr };
0049
0050 public:
0051
0052 Geant4AssemblyVolume();
0053
0054 Geant4AssemblyVolume(Geant4AssemblyVolume&& copy) = delete;
0055
0056 Geant4AssemblyVolume(const Geant4AssemblyVolume& copy) = delete;
0057
0058 Geant4AssemblyVolume& operator=(Geant4AssemblyVolume&& copy) = delete;
0059
0060 Geant4AssemblyVolume& operator=(const Geant4AssemblyVolume& copy) = delete;
0061
0062 virtual ~Geant4AssemblyVolume();
0063
0064 long placeVolume(const TGeoNode* n, G4LogicalVolume* pPlacedVolume, G4Transform3D& transformation);
0065
0066 long placeAssembly(const TGeoNode* n, Geant4AssemblyVolume* pPlacedVolume, G4Transform3D& transformation);
0067
0068 void imprint(const Geant4Converter& cnv,
0069 const TGeoNode* n,
0070 Chain chain,
0071 Geant4AssemblyVolume* pAssembly,
0072 G4LogicalVolume* pMotherLV,
0073 G4Transform3D& transformation,
0074 G4int copyNumBase,
0075 G4bool surfCheck );
0076 };
0077 }
0078 }
0079 #endif