63 #ifndef G4ExtrudedSolid_HH
64 #define G4ExtrudedSolid_HH
66 #if defined(G4GEOM_USE_USOLIDS)
67 #define G4GEOM_USE_UEXTRUDEDSOLID 1
70 #if defined(G4GEOM_USE_UEXTRUDEDSOLID)
71 #define G4UExtrudedSolid G4ExtrudedSolid
101 const std::vector<G4TwoVector>& polygon,
102 const std::vector<ZSection>& zsections);
106 const std::vector<G4TwoVector>& polygon,
119 inline std::vector<G4TwoVector>
GetPolygon()
const;
133 const G4bool calcNorm=
false,
145 std::ostream&
StreamInfo(std::ostream &os)
const;
216 #include "G4ExtrudedSolid.icc"
ZSection GetZSection(G4int index) const
G4TwoVector GetVertex(G4int index) const
std::vector< G4double > fKScales
G4bool IsSameLineSegment(const G4TwoVector &p, const G4TwoVector &l1, const G4TwoVector &l2) const
std::vector< ExP01TrackerHit * > a
G4ThreeVector ApproxSurfaceNormal(const G4ThreeVector &p) const
void ComputeProjectionParameters()
G4TwoVector ProjectPoint(const G4ThreeVector &point) const
std::vector< G4TwoVector > GetPolygon() const
G4VFacet * MakeUpFacet(G4int ind1, G4int ind2, G4int ind3) const
G4bool IsPointInside(const G4TwoVector &a, const G4TwoVector &b, const G4TwoVector &c, const G4TwoVector &p) const
std::vector< ZSection > fZSections
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
G4ExtrudedSolid(const G4String &pName, const std::vector< G4TwoVector > &polygon, const std::vector< ZSection > &zsections)
G4double GetAngle(const G4TwoVector &p0, const G4TwoVector &pa, const G4TwoVector &pb) const
std::vector< std::vector< G4int > > fTriangles
std::ostream & StreamInfo(std::ostream &os) const
G4bool IsSameSide(const G4TwoVector &p1, const G4TwoVector &p2, const G4TwoVector &l1, const G4TwoVector &l2) const
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const
G4GeometryType fGeometryType
std::vector< G4double > fLengths
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
G4ExtrudedSolid & operator=(const G4ExtrudedSolid &rhs)
void ComputeLateralPlanes()
std::vector< G4TwoVector > fOffset0s
G4bool AddGeneralPolygonFacets()
std::vector< line > fLines
G4int GetNofZSections() const
std::vector< G4TwoVector > fKOffsets
G4GeometryType GetEntityType() const
virtual ~G4ExtrudedSolid()
std::vector< plane > fPlanes
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
EInside Inside(const G4ThreeVector &p) const
G4bool PointInPolygon(const G4ThreeVector &p) const
G4bool IsSameLine(const G4TwoVector &p, const G4TwoVector &l1, const G4TwoVector &l2) const
G4double DistanceToPolygonSqr(const G4ThreeVector &p) const
ZSection(G4double z, const G4TwoVector &offset, G4double scale)
std::vector< G4double > fScale0s
G4int GetNofVertices() const
std::vector< G4TwoVector > fPolygon
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pMin, G4double &pMax) const
std::vector< ZSection > GetZSections() const
G4VFacet * MakeDownFacet(G4int ind1, G4int ind2, G4int ind3) const