52#ifndef G4EXTRUDEDSOLID_HH
53#define G4EXTRUDEDSOLID_HH
57#if defined(G4GEOM_USE_USOLIDS)
58#define G4GEOM_USE_UEXTRUDEDSOLID 1
61#if defined(G4GEOM_USE_UEXTRUDEDSOLID)
62 #define G4UExtrudedSolid G4ExtrudedSolid
105 const std::vector<G4TwoVector>& polygon,
106 const std::vector<ZSection>& zsections);
121 const std::vector<G4TwoVector>& polygon,
154 const G4bool calcNorm =
false,
155 G4bool* validNorm =
nullptr,
200 std::ostream&
StreamInfo(std::ostream& os)
const override;
227 void ComputeProjectionParameters();
232 void ComputeLateralPlanes();
309 G4bool AddGeneralPolygonFacets();
322 std::vector<G4TwoVector> fPolygon;
323 std::vector<ZSection> fZSections;
324 std::vector< std::vector<G4int> > fTriangles;
328 G4int fSolidType = 0;
330 std::vector<plane> fPlanes;
332 std::vector<line> fLines;
333 std::vector<G4double> fLengths;
335 std::vector<G4double> fKScales;
336 std::vector<G4double> fScale0s;
337 std::vector<G4TwoVector> fKOffsets;
338 std::vector<G4TwoVector> fOffset0s;
341#include "G4ExtrudedSolid.icc"
G4ThreadLocal T * G4GeomSplitter< T >::offset
CLHEP::Hep3Vector G4ThreeVector
CLHEP::Hep2Vector G4TwoVector
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const override
G4GeometryType GetEntityType() const override
std::vector< G4TwoVector > GetPolygon() const
G4ExtrudedSolid & operator=(const G4ExtrudedSolid &rhs)
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const override
G4ExtrudedSolid(const G4ExtrudedSolid &rhs)=default
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const override
std::vector< ZSection > GetZSections() const
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const override
~G4ExtrudedSolid() override=default
EInside Inside(const G4ThreeVector &p) const override
ZSection GetZSection(G4int index) const
G4int GetNofZSections() const
G4int GetNofVertices() const
G4VSolid * Clone() const override
G4TwoVector GetVertex(G4int index) const
G4ExtrudedSolid(const G4String &pName, const std::vector< G4TwoVector > &polygon, const std::vector< ZSection > &zsections)
std::ostream & StreamInfo(std::ostream &os) const override
G4bool IsFaceted() const override
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const override
G4VFacet is a base class defining the facets which are components of a G4TessellatedSolid shape.
G4VSolid(const G4String &name)
G4VoxelLimits represents limitation/restrictions of space, where restrictions are only made perpendic...
ZSection(G4double z, const G4TwoVector &offset, G4double scale)