Geant4_10
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
HepPolyhedron Class Reference

#include <HepPolyhedron.h>

Inheritance diagram for HepPolyhedron:
Inheritance graph
[legend]
Collaboration diagram for HepPolyhedron:
Collaboration graph
[legend]

Public Member Functions

 HepPolyhedron ()
 
 HepPolyhedron (const HepPolyhedron &from)
 
virtual ~HepPolyhedron ()
 
HepPolyhedronoperator= (const HepPolyhedron &from)
 
G4int GetNoVertices () 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 GetNextEdgeIndeces (G4int &i1, G4int &i2, G4int &edgeFlag, G4int &iface1, G4int &iface2) 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 = DEFAULT_NUMBER_OF_STEPS
 

Friends

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

Detailed Description

Definition at line 195 of file HepPolyhedron.h.

Constructor & Destructor Documentation

HepPolyhedron::HepPolyhedron ( )
inline

Definition at line 240 of file HepPolyhedron.h.

HepPolyhedron::HepPolyhedron ( const HepPolyhedron from)

Definition at line 107 of file HepPolyhedron.cc.

Here is the call graph for this function:

virtual HepPolyhedron::~HepPolyhedron ( )
inlinevirtual

Definition at line 246 of file HepPolyhedron.h.

Member Function Documentation

HepPolyhedron HepPolyhedron::add ( const HepPolyhedron p) const

Definition at line 2261 of file HepPolyhedron.cc.

void HepPolyhedron::AllocateMemory ( G4int  Nvert,
G4int  Nface 
)
protected

Definition at line 244 of file HepPolyhedron.cc.

Here is the caller graph for this function:

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.

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

Definition at line 1358 of file HepPolyhedron.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

void HepPolyhedron::CreatePrism ( )
protected

Definition at line 270 of file HepPolyhedron.cc.

Here is the caller graph for this function:

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.

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

Definition at line 1289 of file HepPolyhedron.cc.

Here is the call graph for this function:

G4int HepPolyhedron::FindNeighbour ( G4int  iFace,
G4int  iNode,
G4int  iOrder 
) const
protected

Definition at line 140 of file HepPolyhedron.cc.

G4Normal3D HepPolyhedron::FindNodeNormal ( G4int  iFace,
G4int  iNode 
) const
protected

Definition at line 168 of file HepPolyhedron.cc.

Here is the call graph for this function:

void HepPolyhedron::GetFacet ( G4int  iFace,
G4int n,
G4int iNodes,
G4int edgeFlags = 0,
G4int iFaces = 0 
) const

Definition at line 1065 of file HepPolyhedron.cc.

Here is the caller graph for this function:

void HepPolyhedron::GetFacet ( G4int  iFace,
G4int n,
G4Point3D nodes,
G4int edgeFlags = 0,
G4Normal3D normals = 0 
) const

Definition at line 1099 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextEdge ( G4Point3D p1,
G4Point3D p2,
G4int edgeFlag 
) const

Definition at line 1024 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4bool HepPolyhedron::GetNextEdge ( G4Point3D p1,
G4Point3D p2,
G4int edgeFlag,
G4int iface1,
G4int iface2 
) const

Definition at line 1045 of file HepPolyhedron.cc.

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

Definition at line 955 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextEdgeIndeces ( G4int i1,
G4int i2,
G4int edgeFlag 
) const

Definition at line 1008 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextFacet ( G4int n,
G4Point3D nodes,
G4int edgeFlags = 0,
G4Normal3D normals = 0 
) const

Definition at line 1121 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextNormal ( G4Normal3D normal) const

Definition at line 1201 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4bool HepPolyhedron::GetNextUnitNormal ( G4Normal3D normal) const

Definition at line 1222 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextVertex ( G4Point3D vertex,
G4int edgeFlag 
) const

Definition at line 905 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4bool HepPolyhedron::GetNextVertex ( G4Point3D vertex,
G4int edgeFlag,
G4Normal3D normal 
) const

Definition at line 923 of file HepPolyhedron.cc.

G4bool HepPolyhedron::GetNextVertexIndex ( G4int index,
G4int edgeFlag 
) const

Definition at line 858 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4int HepPolyhedron::GetNoFacets ( ) const
inline

Definition at line 255 of file HepPolyhedron.h.

Here is the caller graph for this function:

G4Normal3D HepPolyhedron::GetNormal ( G4int  iFace) const

Definition at line 1151 of file HepPolyhedron.cc.

G4int HepPolyhedron::GetNoVertices ( ) const
inline

Definition at line 252 of file HepPolyhedron.h.

Here is the caller graph for this function:

G4int HepPolyhedron::GetNumberOfRotationSteps ( )
static

Definition at line 196 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4double HepPolyhedron::GetSurfaceArea ( ) const

Definition at line 1238 of file HepPolyhedron.cc.

G4Normal3D HepPolyhedron::GetUnitNormal ( G4int  iFace) const

Definition at line 1176 of file HepPolyhedron.cc.

G4Point3D HepPolyhedron::GetVertex ( G4int  index) const

Definition at line 885 of file HepPolyhedron.cc.

Here is the caller graph for this function:

G4double HepPolyhedron::GetVolume ( ) const

Definition at line 1260 of file HepPolyhedron.cc.

HepPolyhedron HepPolyhedron::intersect ( const HepPolyhedron p) const

Definition at line 2276 of file HepPolyhedron.cc.

void HepPolyhedron::InvertFacets ( )
protected

Definition at line 807 of file HepPolyhedron.cc.

Here is the caller graph for this function:

HepPolyhedron & HepPolyhedron::operator= ( const HepPolyhedron from)

Definition at line 121 of file HepPolyhedron.cc.

Here is the call graph for this function:

void HepPolyhedron::ResetNumberOfRotationSteps ( )
static

Definition at line 231 of file HepPolyhedron.cc.

Here is the caller graph for this function:

void HepPolyhedron::RotateAroundZ ( G4int  nstep,
G4double  phi,
G4double  dphi,
G4int  np1,
G4int  np2,
const G4double z,
G4double r,
G4int  nodeVis,
G4int  edgeVis 
)
protected

Definition at line 423 of file HepPolyhedron.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

void HepPolyhedron::RotateEdge ( G4int  k1,
G4int  k2,
G4double  r1,
G4double  r2,
G4int  v1,
G4int  v2,
G4int  vEdge,
G4bool  ifWholeCircle,
G4int  ns,
G4int kface 
)
protected

Definition at line 290 of file HepPolyhedron.cc.

Here is the caller graph for this function:

void HepPolyhedron::SetNumberOfRotationSteps ( G4int  n)
static

Definition at line 209 of file HepPolyhedron.cc.

Here is the caller graph for this function:

void HepPolyhedron::SetReferences ( )
protected

Definition at line 670 of file HepPolyhedron.cc.

Here is the caller graph for this function:

void HepPolyhedron::SetSideFacets ( G4int  ii[4],
G4int  vv[4],
G4int kk,
G4double r,
G4double  dphi,
G4int  ns,
G4int kface 
)
protected

Definition at line 352 of file HepPolyhedron.cc.

Here is the caller graph for this function:

HepPolyhedron HepPolyhedron::subtract ( const HepPolyhedron p) const

Definition at line 2291 of file HepPolyhedron.cc.

HepPolyhedron & HepPolyhedron::Transform ( const G4Transform3D t)

Definition at line 833 of file HepPolyhedron.cc.

Here is the call graph for this function:

Here is the caller graph for this function:

Friends And Related Function Documentation

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

Definition at line 92 of file HepPolyhedron.cc.

Member Data Documentation

G4ThreadLocal G4int HepPolyhedron::fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS
staticprotected

Definition at line 199 of file HepPolyhedron.h.

G4int HepPolyhedron::nface
protected

Definition at line 200 of file HepPolyhedron.h.

G4int HepPolyhedron::nvert
protected

Definition at line 200 of file HepPolyhedron.h.

G4Facet* HepPolyhedron::pF
protected

Definition at line 202 of file HepPolyhedron.h.

G4Point3D* HepPolyhedron::pV
protected

Definition at line 201 of file HepPolyhedron.h.


The documentation for this class was generated from the following files: