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

#include <HepPolyhedron.h>

Inheritance diagram for HepPolyhedronSphere:
HepPolyhedron

Public Member Functions

 HepPolyhedronSphere (G4double rmin, G4double rmax, G4double phi, G4double dphi, G4double the, G4double dthe)
 
virtual ~HepPolyhedronSphere ()
 
- 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 480 of file HepPolyhedron.h.

Constructor & Destructor Documentation

HepPolyhedronSphere::HepPolyhedronSphere ( G4double  rmin,
G4double  rmax,
G4double  phi,
G4double  dphi,
G4double  the,
G4double  dthe 
)

Definition at line 1886 of file HepPolyhedron.cc.

References test::a, HepPolyhedron::GetNumberOfRotationSteps(), python.hepunit::pi, HepPolyhedron::RotateAroundZ(), HepPolyhedron::SetReferences(), spatialTolerance, and python.hepunit::twopi.

1904 {
1905  // C H E C K I N P U T P A R A M E T E R S
1906 
1907  if (dphi <= 0. || dphi > twopi) {
1908  std::cerr
1909  << "HepPolyhedronSphere: wrong delta phi = " << dphi
1910  << std::endl;
1911  return;
1912  }
1913 
1914  if (the < 0. || the > pi) {
1915  std::cerr
1916  << "HepPolyhedronSphere: wrong theta = " << the
1917  << std::endl;
1918  return;
1919  }
1920 
1921  if (dthe <= 0. || dthe > pi) {
1922  std::cerr
1923  << "HepPolyhedronSphere: wrong delta theta = " << dthe
1924  << std::endl;
1925  return;
1926  }
1927 
1928  if (the+dthe > pi) {
1929  std::cerr
1930  << "HepPolyhedronSphere: wrong theta + delta theta = "
1931  << the << " " << dthe
1932  << std::endl;
1933  return;
1934  }
1935 
1936  if (rmin < 0. || rmin >= rmax) {
1937  std::cerr
1938  << "HepPolyhedronSphere: error in radiuses"
1939  << " rmin=" << rmin << " rmax=" << rmax
1940  << std::endl;
1941  return;
1942  }
1943 
1944  // P R E P A R E T W O P O L Y L I N E S
1945 
1946  G4int nds = (GetNumberOfRotationSteps() + 1) / 2;
1947  G4int np1 = G4int(dthe*nds/pi+.5) + 1;
1948  if (np1 <= 1) np1 = 2;
1949  G4int np2 = rmin < spatialTolerance ? 1 : np1;
1950 
1951  G4double *zz, *rr;
1952  zz = new G4double[np1+np2];
1953  rr = new G4double[np1+np2];
1954 
1955  G4double a = dthe/(np1-1);
1956  G4double cosa, sina;
1957  for (G4int i=0; i<np1; i++) {
1958  cosa = std::cos(the+i*a);
1959  sina = std::sin(the+i*a);
1960  zz[i] = rmax*cosa;
1961  rr[i] = rmax*sina;
1962  if (np2 > 1) {
1963  zz[i+np1] = rmin*cosa;
1964  rr[i+np1] = rmin*sina;
1965  }
1966  }
1967  if (np2 == 1) {
1968  zz[np1] = 0.;
1969  rr[np1] = 0.;
1970  }
1971 
1972  // R O T A T E P O L Y L I N E S
1973 
1974  RotateAroundZ(0, phi, dphi, np1, np2, zz, rr, -1, -1);
1975  SetReferences();
1976 
1977  delete [] zz;
1978  delete [] rr;
1979 }
const G4double spatialTolerance
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()
static G4int GetNumberOfRotationSteps()
double G4double
Definition: G4Types.hh:76
HepPolyhedronSphere::~HepPolyhedronSphere ( )
virtual

Definition at line 1981 of file HepPolyhedron.cc.

1981 {}

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