34#ifndef G4UPOLYHEDRA_HH
35#define G4UPOLYHEDRA_HH
39#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
41#include <VecGeom/volumes/UnplacedPolyhedron.h>
56class G4UPolyhedra :
public G4UAdapter<vecgeom::UnplacedPolyhedron>
58 using Shape_t = vecgeom::UnplacedPolyhedron;
59 using Base_t = G4UAdapter<vecgeom::UnplacedPolyhedron>;
74 G4UPolyhedra(
const G4String& name,
93 G4UPolyhedra(
const G4String& name,
104 ~G4UPolyhedra()
override =
default;
110 void ComputeDimensions(G4VPVParameterisation* p,
112 const G4VPhysicalVolume* pRep)
override;
118 G4VSolid* Clone()
const override;
123 G4int GetNumSide()
const;
132 G4int GetNumRZCorner()
const;
133 G4PolyhedraSideRZ GetCorner(
const G4int index )
const;
134 G4PolyhedraHistorical* GetOriginalParameters()
const;
139 void SetOriginalParameters(G4PolyhedraHistorical* pars);
154 inline G4bool IsFaceted()
const override;
174 const G4VoxelLimits& pVoxelLimit,
175 const G4AffineTransform& pTransform,
181 G4Polyhedron* CreatePolyhedron()
const override;
186 G4UPolyhedra(
const G4UPolyhedra& source );
187 G4UPolyhedra&
operator=(
const G4UPolyhedra& source );
194 void SetOriginalParameters();
199 G4PolyhedraHistorical fOriginalParameters;
204 std::vector<G4TwoVector> rzcorners;
213 return "G4Polyhedra";
216inline G4bool G4UPolyhedra::IsFaceted()
const
G4PVDivision & operator=(const G4PVDivision &)=delete
CLHEP::Hep3Vector G4ThreeVector
G4EnclosingCylinder is a utility class defining an envelope for quickly deciding if a point is clearl...
G4ReduciblePolygon is a utility class used to specify, test, reduce, and/or otherwise manipulate a 2D...