Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
|
#include <HepPolyhedron.h>
Static Public Member Functions | |
static G4int | GetNumberOfRotationSteps () |
static void | SetNumberOfRotationSteps (G4int n) |
static void | ResetNumberOfRotationSteps () |
Protected Member Functions | |
void | AllocateMemory (G4int Nvert, G4int Nface) |
G4int | FindNeighbour (G4int iFace, G4int iNode, G4int iOrder) const |
G4Normal3D | FindNodeNormal (G4int iFace, G4int iNode) const |
void | CreatePrism () |
void | RotateEdge (G4int k1, G4int k2, G4double r1, G4double r2, G4int v1, G4int v2, G4int vEdge, G4bool ifWholeCircle, G4int ns, G4int &kface) |
void | SetSideFacets (G4int ii[4], G4int vv[4], G4int *kk, G4double *r, G4double dphi, G4int ns, G4int &kface) |
void | RotateAroundZ (G4int nstep, G4double phi, G4double dphi, G4int np1, G4int np2, const G4double *z, G4double *r, G4int nodeVis, G4int edgeVis) |
void | RotateContourAroundZ (G4int nstep, G4double phi, G4double dphi, const std::vector< G4TwoVector > &rz, G4int nodeVis, G4int edgeVis) |
G4bool | TriangulatePolygon (const std::vector< G4TwoVector > &polygon, std::vector< G4int > &result) |
G4bool | CheckSnip (const std::vector< G4TwoVector > &contour, G4int a, G4int b, G4int c, G4int n, const G4int *V) |
Protected Attributes | |
G4int | nvert |
G4int | nface |
G4Point3D * | pV |
G4Facet * | pF |
Static Protected Attributes | |
static G4ThreadLocal G4int | fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS |
Friends | |
std::ostream & | operator<< (std::ostream &, const HepPolyhedron &ph) |
Definition at line 231 of file HepPolyhedron.h.
|
inline |
Definition at line 284 of file HepPolyhedron.h.
Definition at line 120 of file HepPolyhedron.cc.
HepPolyhedron::HepPolyhedron | ( | const HepPolyhedron & | from | ) |
Definition at line 133 of file HepPolyhedron.cc.
HepPolyhedron::HepPolyhedron | ( | HepPolyhedron && | from | ) |
Definition at line 147 of file HepPolyhedron.cc.
|
inlinevirtual |
Definition at line 296 of file HepPolyhedron.h.
HepPolyhedron HepPolyhedron::add | ( | const HepPolyhedron & | p | ) | const |
Definition at line 3342 of file HepPolyhedron.cc.
Definition at line 374 of file HepPolyhedron.cc.
Referenced by createPolyhedron(), createTwistedTrap(), G4PolyhedronArbitrary::G4PolyhedronArbitrary(), HepPolyhedron(), HepPolyhedronBoxMesh::HepPolyhedronBoxMesh(), HepPolyhedronTet::HepPolyhedronTet(), HepPolyhedronTetMesh::HepPolyhedronTetMesh(), HepPolyhedronTrap::HepPolyhedronTrap(), HepPolyhedronTrd2::HepPolyhedronTrd2(), operator=(), RotateAroundZ(), and RotateContourAroundZ().
|
protected |
Definition at line 1063 of file HepPolyhedron.cc.
Referenced by TriangulatePolygon().
G4int HepPolyhedron::createPolyhedron | ( | G4int | Nnodes, |
G4int | Nfaces, | ||
const G4double | xyz[][3], | ||
const G4int | faces[][4] | ||
) |
Creates user defined polyhedron. This function allows to the user to define arbitrary polyhedron. The faces of the polyhedron should be either triangles or planar quadrilateral. Nodes of a face are defined by indexes pointing to the elements in the xyz array. Numeration of the elements in the array starts from 1 (like in fortran). The indexes can be positive or negative. Negative sign means that the corresponding edge is invisible. The normal of the face should be directed to exterior of the polyhedron.
Nnodes | number of nodes |
Nfaces | number of faces |
xyz | nodes |
faces | faces (quadrilaterals or triangles) |
Definition at line 1902 of file HepPolyhedron.cc.
Referenced by G4CutTubs::CreatePolyhedron(), G4Tet::CreatePolyhedron(), G4TwistedTubs::CreatePolyhedron(), and G4VTwistedFaceted::CreatePolyhedron().
|
protected |
Definition at line 400 of file HepPolyhedron.cc.
Referenced by HepPolyhedronTrap::HepPolyhedronTrap(), and HepPolyhedronTrd2::HepPolyhedronTrd2().
G4int HepPolyhedron::createTwistedTrap | ( | G4double | Dz, |
const G4double | xy1[][2], | ||
const G4double | xy2[][2] | ||
) |
Creates polyhedron for twisted trapezoid. The trapezoid is given by two bases perpendicular to the z-axis.
Dz | half length in z |
xy1 | 1st base (at z = -Dz) |
xy2 | 2nd base (at z = +Dz) |
Definition at line 1833 of file HepPolyhedron.cc.
Definition at line 214 of file HepPolyhedron.cc.
|
protected |
Definition at line 242 of file HepPolyhedron.cc.
void HepPolyhedron::GetFacet | ( | G4int | iFace, |
G4int & | n, | ||
G4int * | iNodes, | ||
G4int * | edgeFlags = nullptr , |
||
G4int * | iFaces = nullptr |
||
) | const |
Definition at line 1610 of file HepPolyhedron.cc.
Referenced by G4CutTubs::CreatePolyhedron().
void HepPolyhedron::GetFacet | ( | G4int | iFace, |
G4int & | n, | ||
G4Point3D * | nodes, | ||
G4int * | edgeFlags = nullptr , |
||
G4Normal3D * | normals = nullptr |
||
) | const |
Definition at line 1644 of file HepPolyhedron.cc.
Definition at line 1569 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddSolid().
G4bool HepPolyhedron::GetNextEdge | ( | G4Point3D & | p1, |
G4Point3D & | p2, | ||
G4int & | edgeFlag, | ||
G4int & | iface1, | ||
G4int & | iface2 | ||
) | const |
Definition at line 1590 of file HepPolyhedron.cc.
Definition at line 336 of file HepPolyhedron.h.
|
inline |
Definition at line 330 of file HepPolyhedron.h.
Definition at line 1553 of file HepPolyhedron.cc.
G4bool HepPolyhedron::GetNextEdgeIndices | ( | G4int & | i1, |
G4int & | i2, | ||
G4int & | edgeFlag, | ||
G4int & | iface1, | ||
G4int & | iface2 | ||
) | const |
Definition at line 1500 of file HepPolyhedron.cc.
Referenced by GetNextEdgeIndeces().
G4bool HepPolyhedron::GetNextFacet | ( | G4int & | n, |
G4Point3D * | nodes, | ||
G4int * | edgeFlags = nullptr , |
||
G4Normal3D * | normals = nullptr |
||
) | const |
Definition at line 1666 of file HepPolyhedron.cc.
Referenced by G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), G4ToolsSGSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), and std::hash< G4Polyhedron >::operator()().
G4bool HepPolyhedron::GetNextNormal | ( | G4Normal3D & | normal | ) | const |
Definition at line 1746 of file HepPolyhedron.cc.
Referenced by G4HepRepFileSceneHandler::AddPrimitive().
G4bool HepPolyhedron::GetNextUnitNormal | ( | G4Normal3D & | normal | ) | const |
Definition at line 1766 of file HepPolyhedron.cc.
Referenced by Geant4_SoPolyhedron::computeBBox(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
Definition at line 1451 of file HepPolyhedron.cc.
Referenced by G4HepRepFileSceneHandler::AddPrimitive(), Geant4_SoPolyhedron::computeBBox(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
G4bool HepPolyhedron::GetNextVertex | ( | G4Point3D & | vertex, |
G4int & | edgeFlag, | ||
G4Normal3D & | normal | ||
) | const |
Definition at line 1469 of file HepPolyhedron.cc.
Definition at line 1404 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddPrimitive().
|
inline |
Definition at line 309 of file HepPolyhedron.h.
Referenced by G4HepRepFileSceneHandler::AddPrimitive(), G4OpenGLSceneHandler::AddPrimitive(), G4Qt3DSceneHandler::AddPrimitive(), G4ToolsSGSceneHandler::AddPrimitive(), G4GMocrenFileSceneHandler::AddPrimitive(), G4OpenInventorSceneHandler::AddPrimitive(), G4VtkSceneHandler::AddPrimitiveTensorGlyph(), Geant4_SoPolyhedron::computeBBox(), G4CutTubs::CreatePolyhedron(), Geant4_SoPolyhedron::generateAlternateRep(), and Geant4_SoPolyhedron::generatePrimitives().
G4Normal3D HepPolyhedron::GetNormal | ( | G4int | iFace | ) | const |
Definition at line 1696 of file HepPolyhedron.cc.
|
inline |
Definition at line 306 of file HepPolyhedron.h.
|
inline |
Definition at line 305 of file HepPolyhedron.h.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), G4CutTubs::CreatePolyhedron(), and Geant4_SoPolyhedron::generateAlternateRep().
|
static |
Definition at line 269 of file HepPolyhedron.cc.
Referenced by G4TwistedTubs::CreatePolyhedron(), G4VTwistedFaceted::CreatePolyhedron(), G4ArrowModel::G4ArrowModel(), G4ViewParameters::G4ViewParameters(), G4ReflectedSolid::GetPolyhedron(), G4BooleanSolid::GetPolyhedron(), G4DisplacedSolid::GetPolyhedron(), G4MultiUnion::GetPolyhedron(), G4ScaledSolid::GetPolyhedron(), G4CSGSolid::GetPolyhedron(), G4Ellipsoid::GetPolyhedron(), G4EllipticalCone::GetPolyhedron(), G4EllipticalTube::GetPolyhedron(), G4GenericTrap::GetPolyhedron(), G4Hype::GetPolyhedron(), G4Paraboloid::GetPolyhedron(), G4TessellatedSolid::GetPolyhedron(), G4Tet::GetPolyhedron(), G4TwistedTubs::GetPolyhedron(), G4VCSGfaceted::GetPolyhedron(), G4VTwistedFaceted::GetPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronSphere::HepPolyhedronSphere(), HepPolyhedronTorus::HepPolyhedronTorus(), RotateAroundZ(), and RotateContourAroundZ().
G4double HepPolyhedron::GetSurfaceArea | ( | ) | const |
Definition at line 1782 of file HepPolyhedron.cc.
G4Normal3D HepPolyhedron::GetUnitNormal | ( | G4int | iFace | ) | const |
Definition at line 1721 of file HepPolyhedron.cc.
Referenced by JoinCoplanarFacets().
Definition at line 1431 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), and G4CutTubs::CreatePolyhedron().
G4double HepPolyhedron::GetVolume | ( | ) | const |
Definition at line 1804 of file HepPolyhedron.cc.
HepPolyhedron HepPolyhedron::intersect | ( | const HepPolyhedron & | p | ) | const |
Definition at line 3357 of file HepPolyhedron.cc.
void HepPolyhedron::InvertFacets | ( | ) |
Definition at line 1353 of file HepPolyhedron.cc.
Referenced by G4GenericTrap::CreatePolyhedron(), G4PolyhedronArbitrary::InvertFacets(), and Transform().
void HepPolyhedron::JoinCoplanarFacets | ( | G4double | tolerance | ) |
Definition at line 1264 of file HepPolyhedron.cc.
HepPolyhedron & HepPolyhedron::operator= | ( | const HepPolyhedron & | from | ) |
HepPolyhedron & HepPolyhedron::operator= | ( | HepPolyhedron && | from | ) |
Definition at line 186 of file HepPolyhedron.cc.
|
static |
Definition at line 361 of file HepPolyhedron.cc.
Referenced by G4VSceneHandler::RequestPrimitives().
|
protected |
Definition at line 553 of file HepPolyhedron.cc.
Referenced by HepPolyhedronCons::HepPolyhedronCons(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronPgon::HepPolyhedronPgon(), HepPolyhedronSphere::HepPolyhedronSphere(), and HepPolyhedronTorus::HepPolyhedronTorus().
|
protected |
Definition at line 828 of file HepPolyhedron.cc.
Referenced by HepPolyhedronPgon::HepPolyhedronPgon().
|
protected |
Definition at line 420 of file HepPolyhedron.cc.
Referenced by RotateAroundZ(), and RotateContourAroundZ().
Definition at line 305 of file HepPolyhedron.cc.
Referenced by G4GenericTrap::CreatePolyhedron(), G4TessellatedSolid::CreatePolyhedron(), HepPolyhedronBoxMesh::HepPolyhedronBoxMesh(), and HepPolyhedronTetMesh::HepPolyhedronTetMesh().
|
static |
Definition at line 339 of file HepPolyhedron.cc.
Referenced by G4ArrowModel::G4ArrowModel(), and G4VSceneHandler::RequestPrimitives().
void HepPolyhedron::SetReferences | ( | ) |
Definition at line 1115 of file HepPolyhedron.cc.
Referenced by G4GenericTrap::CreatePolyhedron(), G4TessellatedSolid::CreatePolyhedron(), createPolyhedron(), HepPolyhedronBoxMesh::HepPolyhedronBoxMesh(), HepPolyhedronCons::HepPolyhedronCons(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronHype::HepPolyhedronHype(), HepPolyhedronHyperbolicMirror::HepPolyhedronHyperbolicMirror(), HepPolyhedronParaboloid::HepPolyhedronParaboloid(), HepPolyhedronPgon::HepPolyhedronPgon(), HepPolyhedronSphere::HepPolyhedronSphere(), HepPolyhedronTetMesh::HepPolyhedronTetMesh(), HepPolyhedronTorus::HepPolyhedronTorus(), JoinCoplanarFacets(), and G4PolyhedronArbitrary::SetReferences().
|
protected |
Definition at line 482 of file HepPolyhedron.cc.
Referenced by RotateAroundZ(), and RotateContourAroundZ().
Definition at line 282 of file HepPolyhedron.cc.
Referenced by G4GenericTrap::CreatePolyhedron(), G4TessellatedSolid::CreatePolyhedron(), HepPolyhedronBoxMesh::HepPolyhedronBoxMesh(), and HepPolyhedronTetMesh::HepPolyhedronTetMesh().
HepPolyhedron HepPolyhedron::subtract | ( | const HepPolyhedron & | p | ) | const |
Definition at line 3372 of file HepPolyhedron.cc.
HepPolyhedron & HepPolyhedron::Transform | ( | const G4Transform3D & | t | ) |
Definition at line 1379 of file HepPolyhedron.cc.
Referenced by G4GMocrenFileSceneHandler::AddSolid(), G4ReflectedSolid::CreatePolyhedron(), G4DisplacedSolid::CreatePolyhedron(), G4ScaledSolid::CreatePolyhedron(), G4EllipticalTube::CreatePolyhedron(), G4ScoringBox::Draw(), G4ScoringCylinder::Draw(), G4ScoringBox::DrawColumn(), G4ScoringCylinder::DrawColumn(), G4ArrowModel::G4ArrowModel(), and G4ASCIITreeSceneHandler::RequestPrimitives().
|
protected |
Definition at line 985 of file HepPolyhedron.cc.
Referenced by RotateContourAroundZ().
|
friend |
Definition at line 105 of file HepPolyhedron.cc.
|
staticprotected |
Definition at line 235 of file HepPolyhedron.h.
Referenced by G4Polyhedron::G4Polyhedron(), GetNumberOfRotationSteps(), ResetNumberOfRotationSteps(), and SetNumberOfRotationSteps().
|
protected |
Definition at line 236 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), AllocateMemory(), GetNoFacets(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), InvertFacets(), JoinCoplanarFacets(), operator=(), RotateAroundZ(), RotateContourAroundZ(), SetFacet(), SetReferences(), and SetVertex().
|
protected |
Definition at line 236 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), G4PolyhedronArbitrary::AddVertex(), AllocateMemory(), createPolyhedron(), GetNoVerteces(), GetNoVertices(), HepPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), operator=(), SetFacet(), SetReferences(), SetVertex(), and Transform().
|
protected |
Definition at line 238 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddFacet(), AllocateMemory(), createPolyhedron(), CreatePrism(), createTwistedTrap(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), HepPolyhedronTet::HepPolyhedronTet(), InvertFacets(), JoinCoplanarFacets(), operator=(), RotateAroundZ(), RotateContourAroundZ(), RotateEdge(), SetFacet(), SetReferences(), SetSideFacets(), and ~HepPolyhedron().
|
protected |
Definition at line 237 of file HepPolyhedron.h.
Referenced by G4PolyhedronArbitrary::AddVertex(), AllocateMemory(), createPolyhedron(), createTwistedTrap(), GetSurfaceArea(), GetVolume(), HepPolyhedron(), HepPolyhedronEllipsoid::HepPolyhedronEllipsoid(), HepPolyhedronEllipticalCone::HepPolyhedronEllipticalCone(), HepPolyhedronTet::HepPolyhedronTet(), HepPolyhedronTrap::HepPolyhedronTrap(), HepPolyhedronTrd2::HepPolyhedronTrd2(), JoinCoplanarFacets(), operator=(), RotateAroundZ(), RotateContourAroundZ(), SetVertex(), Transform(), and ~HepPolyhedron().