47#ifndef G4PolyhedraSide_hh
48#define G4PolyhedraSide_hh
G4PolyhedraSideVec * vecs
G4PolyhedraSideEdge * edges
struct sG4PolyhedraSideVec { G4ThreeVector normal, center, surfPhi, surfRZ; G4PolyhedraSideEdge *edges[2]; G4ThreeVector edgeNorm[2]; } G4PolyhedraSideVec
G4ThreeVector Normal(const G4ThreeVector &p, G4double *bestDistance) override
G4ThreeVector GetPointOnPlane(const G4ThreeVector &p0, const G4ThreeVector &p1, const G4ThreeVector &p2, const G4ThreeVector &p3, G4double *Area)
static const G4PhSideManager & GetSubInstanceManager()
G4PolyhedraSide & operator=(const G4PolyhedraSide &source)
G4double GetPhi(const G4ThreeVector &p)
G4bool IntersectSidePlane(const G4ThreeVector &p, const G4ThreeVector &v, const G4PolyhedraSideVec &vec, G4double normSign, G4double surfTolerance, G4double &distance, G4double &distFromSurface)
G4double SurfaceTriangle(const G4ThreeVector &p1, const G4ThreeVector &p2, const G4ThreeVector &p3, G4ThreeVector *p4)
G4PolyhedraSide(const G4PolyhedraSideRZ *prevRZ, const G4PolyhedraSideRZ *tail, const G4PolyhedraSideRZ *head, const G4PolyhedraSideRZ *nextRZ, G4int numSide, G4double phiStart, G4double phiTotal, G4bool phiIsOpen, G4bool isAllBehind=false)
G4int GetInstanceID() const
G4int ClosestPhiSegment(G4double phi)
struct sG4PolyhedraSideEdge { G4ThreeVector normal; G4ThreeVector corner[2]; G4ThreeVector cornNorm[2]; } G4PolyhedraSideEdge
G4int PhiSegment(G4double phi)
G4int LineHitsSegments(const G4ThreeVector &p, const G4ThreeVector &v, G4int *i1, G4int *i2)
G4bool Intersect(const G4ThreeVector &p, const G4ThreeVector &v, G4bool outgoing, G4double surfTolerance, G4double &distance, G4double &distFromSurface, G4ThreeVector &normal, G4bool &allBehind) override
G4double SurfaceArea() override
EInside Inside(const G4ThreeVector &p, G4double tolerance, G4double *bestDistance) override
G4double Extent(const G4ThreeVector axis) override
G4double Distance(const G4ThreeVector &p, G4bool outgoing) override
G4double DistanceAway(const G4ThreeVector &p, const G4PolyhedraSideVec &vec, G4double *normDist)
void CalculateExtent(const EAxis axis, const G4VoxelLimits &voxelLimit, const G4AffineTransform &tranform, G4SolidExtentList &extentList) override
G4double DistanceToOneSide(const G4ThreeVector &p, const G4PolyhedraSideVec &vec, G4double *normDist)
~G4PolyhedraSide() override
friend struct sG4PolyhedraSideVec
G4IntersectingCone * cone
G4VCSGface * Clone() override
void CopyStuff(const G4PolyhedraSide &source)
G4ThreeVector GetPointOnFace() override