57#ifndef G4GENERICTRAP_HH
58#define G4GENERICTRAP_HH
62#if defined(G4GEOM_USE_USOLIDS)
63#define G4GEOM_USE_UGENERICTRAP 1
66#if defined(G4GEOM_USE_UGENERICTRAP)
67 #define G4UGenericTrap G4GenericTrap
94 const std::vector<G4TwoVector>& vertices);
137 const G4bool calcNorm =
false,
138 G4bool* validNorm =
nullptr,
183 std::ostream&
StreamInfo(std::ostream& os)
const override;
218 void CheckParameters(
G4double halfZ,
const std::vector<G4TwoVector>& vertices);
223 void ComputeLateralSurfaces();
228 void ComputeBoundingBox();
233 void ComputeScratchLength();
257 struct G4GenericTrapPlane
264 struct G4GenericTrapSurface
279 std::vector<G4TwoVector> fVertices = {0.,0.,0.,0.,0.,0.,0.,0.};
281 G4bool fIsTwisted =
false;
285 G4int fVisSubdivisions = 0;
286 G4GenericTrapPlane fPlane[8];
287 G4GenericTrapSurface fSurf[4];
290 mutable G4bool fRebuildPolyhedron =
false;
291 mutable G4Polyhedron* fpPolyhedron =
nullptr;
298#include "G4GenericTrap.icc"
G4double C(G4double temp)
G4double B(G4double temperature)
G4double D(G4double temp)
CLHEP::Hep3Vector G4ThreeVector
CLHEP::Hep2Vector G4TwoVector
~G4GenericTrap() override=default
G4int GetNofVertices() const
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const override
G4GenericTrap & operator=(const G4GenericTrap &rhs)
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const override
G4double GetZHalfLength() const
std::ostream & StreamInfo(std::ostream &os) const override
G4TwoVector GetVertex(G4int index) const
G4GeometryType GetEntityType() const override
G4Polyhedron * GetPolyhedron() const override
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const override
G4double GetTwistAngle(G4int index) const
G4double GetCubicVolume() override
G4VisExtent GetExtent() const override
const std::vector< G4TwoVector > & GetVertices() const
G4VSolid * Clone() const override
G4int GetVisSubdivisions() const
EInside Inside(const G4ThreeVector &p) const override
G4Polyhedron * CreatePolyhedron() const override
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const override
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pmin, G4double &pmax) const override
void SetVisSubdivisions(G4int subdiv)
G4bool IsFaceted() const override
G4GenericTrap(const G4String &name, G4double halfZ, const std::vector< G4TwoVector > &vertices)
G4double GetSurfaceArea() override
G4ThreeVector GetPointOnSurface() const override
void DescribeYourselfTo(G4VGraphicsScene &scene) const override
G4VSolid(const G4String &name)
G4VoxelLimits represents limitation/restrictions of space, where restrictions are only made perpendic...