34#ifndef G4UEXTRUDEDSOLID_HH
35#define G4UEXTRUDEDSOLID_HH
39#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
41#include <VecGeom/volumes/UnplacedExtruded.h>
51class G4UExtrudedSolid :
public G4UAdapter<vecgeom::UnplacedExtruded>
53 using Shape_t = vecgeom::UnplacedExtruded;
54 using Base_t = G4UAdapter<vecgeom::UnplacedExtruded>;
63 ZSection() : fZ(0.), fOffset(0.,0.), fScale(1.) {}
65 : fZ(z), fOffset(
offset), fScale(scale) {}
80 G4UExtrudedSolid(
const G4String& pName,
81 const std::vector<G4TwoVector>& polygon,
82 const std::vector<ZSection>& zsections);
96 G4UExtrudedSolid(
const G4String& pName,
97 const std::vector<G4TwoVector>& polygon,
107 ~G4UExtrudedSolid()
override =
default;
112 G4int GetNofVertices()
const;
114 std::vector<G4TwoVector> GetPolygon()
const;
115 G4int GetNofZSections()
const;
116 ZSection GetZSection(
G4int index)
const;
117 std::vector<ZSection> GetZSections()
const;
127 inline G4bool IsFaceted()
const override;
147 const G4VoxelLimits& pVoxelLimit,
148 const G4AffineTransform& pTransform,
154 G4Polyhedron* CreatePolyhedron()
const override;
159 G4UExtrudedSolid(
const G4UExtrudedSolid& source );
160 G4UExtrudedSolid &
operator=(
const G4UExtrudedSolid& source);
169 return "G4ExtrudedSolid";
172inline G4bool G4UExtrudedSolid::IsFaceted()
const
G4ThreadLocal T * G4GeomSplitter< T >::offset
G4PVDivision & operator=(const G4PVDivision &)=delete
CLHEP::Hep3Vector G4ThreeVector
CLHEP::Hep2Vector G4TwoVector