Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
HepPolyhedronCons Class Reference

#include <HepPolyhedron.h>

Inheritance diagram for HepPolyhedronCons:
HepPolyhedron HepPolyhedronCone HepPolyhedronTube HepPolyhedronTubs

Public Member Functions

 HepPolyhedronCons (G4double Rmn1, G4double Rmx1, G4double Rmn2, G4double Rmx2, G4double Dz, G4double Phi1, G4double Dphi)
 
virtual ~HepPolyhedronCons ()
 
- Public Member Functions inherited from HepPolyhedron
 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])
 

Additional Inherited Members

- Static Public Member Functions inherited from HepPolyhedron
static G4int GetNumberOfRotationSteps ()
 
static void SetNumberOfRotationSteps (G4int n)
 
static void ResetNumberOfRotationSteps ()
 
- Protected Member Functions inherited from HepPolyhedron
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 inherited from HepPolyhedron
G4int nvert
 
G4int nface
 
G4Point3DpV
 
G4FacetpF
 
- Static Protected Attributes inherited from HepPolyhedron
static G4ThreadLocal G4int fNumberOfRotationSteps = DEFAULT_NUMBER_OF_STEPS
 

Detailed Description

Definition at line 428 of file HepPolyhedron.h.

Constructor & Destructor Documentation

HepPolyhedronCons::HepPolyhedronCons ( G4double  Rmn1,
G4double  Rmx1,
G4double  Rmn2,
G4double  Rmx2,
G4double  Dz,
G4double  Phi1,
G4double  Dphi 
)

Definition at line 1689 of file HepPolyhedron.cc.

References python.hepunit::perMillion, HepPolyhedron::RotateAroundZ(), HepPolyhedron::SetReferences(), and python.hepunit::twopi.

1710 {
1711  static const G4double wholeCircle=twopi;
1712 
1713  // C H E C K I N P U T P A R A M E T E R S
1714 
1715  G4int k = 0;
1716  if (Rmn1 < 0. || Rmx1 < 0. || Rmn2 < 0. || Rmx2 < 0.) k = 1;
1717  if (Rmn1 > Rmx1 || Rmn2 > Rmx2) k = 1;
1718  if (Rmn1 == Rmx1 && Rmn2 == Rmx2) k = 1;
1719 
1720  if (Dz <= 0.) k += 2;
1721 
1722  G4double phi1, phi2, dphi;
1723  if (Dphi < 0.) {
1724  phi2 = Phi1; phi1 = phi2 - Dphi;
1725  }else if (Dphi == 0.) {
1726  phi1 = Phi1; phi2 = phi1 + wholeCircle;
1727  }else{
1728  phi1 = Phi1; phi2 = phi1 + Dphi;
1729  }
1730  dphi = phi2 - phi1;
1731  if (std::abs(dphi-wholeCircle) < perMillion) dphi = wholeCircle;
1732  if (dphi > wholeCircle) k += 4;
1733 
1734  if (k != 0) {
1735  std::cerr << "HepPolyhedronCone(s)/Tube(s): error in input parameters";
1736  if ((k & 1) != 0) std::cerr << " (radiuses)";
1737  if ((k & 2) != 0) std::cerr << " (half-length)";
1738  if ((k & 4) != 0) std::cerr << " (angles)";
1739  std::cerr << std::endl;
1740  std::cerr << " Rmn1=" << Rmn1 << " Rmx1=" << Rmx1;
1741  std::cerr << " Rmn2=" << Rmn2 << " Rmx2=" << Rmx2;
1742  std::cerr << " Dz=" << Dz << " Phi1=" << Phi1 << " Dphi=" << Dphi
1743  << std::endl;
1744  return;
1745  }
1746 
1747  // P R E P A R E T W O P O L Y L I N E S
1748 
1749  G4double zz[4], rr[4];
1750  zz[0] = Dz;
1751  zz[1] = -Dz;
1752  zz[2] = Dz;
1753  zz[3] = -Dz;
1754  rr[0] = Rmx2;
1755  rr[1] = Rmx1;
1756  rr[2] = Rmn2;
1757  rr[3] = Rmn1;
1758 
1759  // R O T A T E P O L Y L I N E S
1760 
1761  RotateAroundZ(0, phi1, dphi, 2, 2, zz, rr, -1, -1);
1762  SetReferences();
1763 }
int G4int
Definition: G4Types.hh:78
void RotateAroundZ(G4int nstep, G4double phi, G4double dphi, G4int np1, G4int np2, const G4double *z, G4double *r, G4int nodeVis, G4int edgeVis)
void SetReferences()
double G4double
Definition: G4Types.hh:76
float perMillion
Definition: hepunit.py:241
HepPolyhedronCons::~HepPolyhedronCons ( )
virtual

Definition at line 1765 of file HepPolyhedron.cc.

1765 {}

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