Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
HepPolyhedron Class Reference
Inheritance diagram for HepPolyhedron:
G4Polyhedron HepPolyhedronCons HepPolyhedronEllipsoid HepPolyhedronEllipticalCone HepPolyhedronHype HepPolyhedronParaboloid HepPolyhedronPgon HepPolyhedronSphere HepPolyhedronTorus HepPolyhedronTrap HepPolyhedronTrd2

Public Member Functions

 HepPolyhedron ()
 
 HepPolyhedron (const HepPolyhedron &from)
 
virtual ~HepPolyhedron ()
 
HepPolyhedronoperator= (const HepPolyhedron &from)
 
G4int GetNoVertices () const
 
G4int GetNoVerteces () const
 
G4int GetNoFacets () const
 
HepPolyhedronTransform (const G4Transform3D &t)
 
G4bool GetNextVertexIndex (G4int &index, G4int &edgeFlag) const
 
G4Point3D GetVertex (G4int index) const
 
G4bool GetNextVertex (G4Point3D &vertex, G4int &edgeFlag) const
 
G4bool GetNextVertex (G4Point3D &vertex, G4int &edgeFlag, G4Normal3D &normal) const
 
G4bool GetNextEdgeIndices (G4int &i1, G4int &i2, G4int &edgeFlag, G4int &iface1, G4int &iface2) const
 
G4bool GetNextEdgeIndeces (G4int &i1, G4int &i2, G4int &edgeFlag, G4int &iface1, G4int &iface2) const
 
G4bool GetNextEdgeIndices (G4int &i1, G4int &i2, G4int &edgeFlag) const
 
G4bool GetNextEdgeIndeces (G4int &i1, G4int &i2, G4int &edgeFlag) const
 
G4bool GetNextEdge (G4Point3D &p1, G4Point3D &p2, G4int &edgeFlag) const
 
G4bool GetNextEdge (G4Point3D &p1, G4Point3D &p2, G4int &edgeFlag, G4int &iface1, G4int &iface2) const
 
void GetFacet (G4int iFace, G4int &n, G4int *iNodes, G4int *edgeFlags=0, G4int *iFaces=0) const
 
void GetFacet (G4int iFace, G4int &n, G4Point3D *nodes, G4int *edgeFlags=0, G4Normal3D *normals=0) const
 
G4bool GetNextFacet (G4int &n, G4Point3D *nodes, G4int *edgeFlags=0, G4Normal3D *normals=0) const
 
G4Normal3D GetNormal (G4int iFace) const
 
G4Normal3D GetUnitNormal (G4int iFace) const
 
G4bool GetNextNormal (G4Normal3D &normal) const
 
G4bool GetNextUnitNormal (G4Normal3D &normal) const
 
HepPolyhedron add (const HepPolyhedron &p) const
 
HepPolyhedron subtract (const HepPolyhedron &p) const
 
HepPolyhedron intersect (const HepPolyhedron &p) const
 
G4double GetSurfaceArea () const
 
G4double GetVolume () const
 
G4int createTwistedTrap (G4double Dz, const G4double xy1[][2], const G4double xy2[][2])
 
G4int createPolyhedron (G4int Nnodes, G4int Nfaces, const G4double xyz[][3], const G4int faces[][4])
 

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 SetReferences ()
 
void InvertFacets ()
 

Protected Attributes

G4int nvert
 
G4int nface
 
G4Point3DpV
 
G4FacetpF
 

Static Protected Attributes

static G4ThreadLocal G4int fNumberOfRotationSteps
 

Friends

std::ostream & operator<< (std::ostream &, const HepPolyhedron &ph)
 

Constructor & Destructor Documentation

virtual ~HepPolyhedron ( )
virtual

References pF, and pV.

Member Function Documentation

void AllocateMemory ( G4int  Nvert,
G4int  Nface 
)
protected
G4int FindNeighbour ( G4int  iFace,
G4int  iNode,
G4int  iOrder 
) const
protected
G4Normal3D FindNodeNormal ( G4int  iFace,
G4int  iNode 
) const
protected
void CreatePrism ( )
protected
void RotateEdge ( G4int  k1,
G4int  k2,
G4double  r1,
G4double  r2,
G4int  v1,
G4int  v2,
G4int  vEdge,
G4bool  ifWholeCircle,
G4int  ns,
G4int kface 
)
protected
void SetSideFacets ( G4int  ii[4],
G4int  vv[4],
G4int kk,
G4double r,
G4double  dphi,
G4int  ns,
G4int kface 
)
protected
void RotateAroundZ ( G4int  nstep,
G4double  phi,
G4double  dphi,
G4int  np1,
G4int  np2,
const G4double z,
G4double r,
G4int  nodeVis,
G4int  edgeVis 
)
protected
void SetReferences ( )
protected
void InvertFacets ( )
protected
HepPolyhedron& operator= ( const HepPolyhedron from)
G4int GetNoVertices ( ) const

References nvert.

G4int GetNoVerteces ( ) const

References nvert.

G4int GetNoFacets ( ) const

References nface.

HepPolyhedron& Transform ( const G4Transform3D t)
G4bool GetNextVertexIndex ( G4int index,
G4int edgeFlag 
) const
G4Point3D GetVertex ( G4int  index) const
G4bool GetNextVertex ( G4Point3D vertex,
G4int edgeFlag 
) const
G4bool GetNextVertex ( G4Point3D vertex,
G4int edgeFlag,
G4Normal3D normal 
) const
G4bool GetNextEdgeIndices ( G4int i1,
G4int i2,
G4int edgeFlag,
G4int iface1,
G4int iface2 
) const

Referenced by GetNextEdgeIndeces().

G4bool GetNextEdgeIndeces ( G4int i1,
G4int i2,
G4int edgeFlag,
G4int iface1,
G4int iface2 
) const

References GetNextEdgeIndices().

G4bool GetNextEdgeIndices ( G4int i1,
G4int i2,
G4int edgeFlag 
) const
G4bool GetNextEdgeIndeces ( G4int i1,
G4int i2,
G4int edgeFlag 
) const

References GetNextEdgeIndices().

G4bool GetNextEdge ( G4Point3D p1,
G4Point3D p2,
G4int edgeFlag 
) const
G4bool GetNextEdge ( G4Point3D p1,
G4Point3D p2,
G4int edgeFlag,
G4int iface1,
G4int iface2 
) const
void GetFacet ( G4int  iFace,
G4int n,
G4int iNodes,
G4int edgeFlags = 0,
G4int iFaces = 0 
) const
void GetFacet ( G4int  iFace,
G4int n,
G4Point3D nodes,
G4int edgeFlags = 0,
G4Normal3D normals = 0 
) const
G4bool GetNextFacet ( G4int n,
G4Point3D nodes,
G4int edgeFlags = 0,
G4Normal3D normals = 0 
) const
G4Normal3D GetNormal ( G4int  iFace) const
G4Normal3D GetUnitNormal ( G4int  iFace) const
G4bool GetNextNormal ( G4Normal3D normal) const
G4bool GetNextUnitNormal ( G4Normal3D normal) const
HepPolyhedron add ( const HepPolyhedron p) const
HepPolyhedron subtract ( const HepPolyhedron p) const
HepPolyhedron intersect ( const HepPolyhedron p) const
G4double GetSurfaceArea ( ) const
G4double GetVolume ( ) const
static G4int GetNumberOfRotationSteps ( )
static
static void SetNumberOfRotationSteps ( G4int  n)
static
static void ResetNumberOfRotationSteps ( )
static
G4int 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.

Parameters
Dzhalf length in z
xy11st base (at z = -Dz)
xy22nd base (at z = +Dz)
Returns
status of the operation - is non-zero in case of problem
G4int 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.

Parameters
Nnodesnumber of nodes
Nfacesnumber of faces
xyznodes
facesfaces (quadrilaterals or triangles)
Returns
status of the operation - is non-zero in case of problem

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  ,
const HepPolyhedron ph 
)
friend

Member Data Documentation

G4ThreadLocal G4int fNumberOfRotationSteps
staticprotected
G4int nvert
protected

Referenced by GetNoVerteces(), and GetNoVertices().

G4int nface
protected

Referenced by GetNoFacets().

G4Point3D* pV
protected

Referenced by ~HepPolyhedron().

G4Facet* pF
protected

Referenced by ~HepPolyhedron().