Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
HepPolyhedronSphere Class Reference

#include <HepPolyhedron.h>

+ Inheritance diagram for HepPolyhedronSphere:

Public Member Functions

 HepPolyhedronSphere (G4double rmin, G4double rmax, G4double phi, G4double dphi, G4double the, G4double dthe)
 
 ~HepPolyhedronSphere () override
 
- Public Member Functions inherited from HepPolyhedron
 HepPolyhedron ()
 
 HepPolyhedron (G4int Nvert, G4int Nface)
 
 HepPolyhedron (const HepPolyhedron &from)
 
 HepPolyhedron (HepPolyhedron &&from)
 
virtual ~HepPolyhedron ()
 
HepPolyhedronoperator= (const HepPolyhedron &from)
 
HepPolyhedronoperator= (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=nullptr, G4int *iFaces=nullptr) const
 
void GetFacet (G4int iFace, G4int &n, G4Point3D *nodes, G4int *edgeFlags=nullptr, G4Normal3D *normals=nullptr) const
 
G4bool GetNextFacet (G4int &n, G4Point3D *nodes, G4int *edgeFlags=nullptr, G4Normal3D *normals=nullptr) 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
 
void SetVertex (G4int index, const G4Point3D &v)
 
void SetFacet (G4int index, G4int iv1, G4int iv2, G4int iv3, G4int iv4=0)
 
void SetReferences ()
 
void JoinCoplanarFacets (G4double tolerance)
 
void InvertFacets ()
 
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 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 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 560 of file HepPolyhedron.h.

Constructor & Destructor Documentation

◆ HepPolyhedronSphere()

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

Definition at line 2476 of file HepPolyhedron.cc.

2494{
2495 // C H E C K I N P U T P A R A M E T E R S
2496
2497 if (dphi <= 0. || dphi > twopi) {
2498 std::cerr
2499 << "HepPolyhedronSphere: wrong delta phi = " << dphi
2500 << std::endl;
2501 return;
2502 }
2503
2504 if (the < 0. || the > pi) {
2505 std::cerr
2506 << "HepPolyhedronSphere: wrong theta = " << the
2507 << std::endl;
2508 return;
2509 }
2510
2511 if (dthe <= 0. || dthe > pi) {
2512 std::cerr
2513 << "HepPolyhedronSphere: wrong delta theta = " << dthe
2514 << std::endl;
2515 return;
2516 }
2517
2518 if (the+dthe > pi) {
2519 std::cerr
2520 << "HepPolyhedronSphere: wrong theta + delta theta = "
2521 << the << " " << dthe
2522 << std::endl;
2523 return;
2524 }
2525
2526 if (rmin < 0. || rmin >= rmax) {
2527 std::cerr
2528 << "HepPolyhedronSphere: error in radiuses"
2529 << " rmin=" << rmin << " rmax=" << rmax
2530 << std::endl;
2531 return;
2532 }
2533
2534 // P R E P A R E T W O P O L Y L I N E S
2535
2536 G4int nds = (GetNumberOfRotationSteps() + 1) / 2;
2537 G4int np1 = G4int(dthe*nds/pi+.5) + 1;
2538 if (np1 <= 1) np1 = 2;
2539 G4int np2 = rmin < spatialTolerance ? 1 : np1;
2540
2541 G4double *zz, *rr;
2542 zz = new G4double[np1+np2];
2543 rr = new G4double[np1+np2];
2544
2545 G4double a = dthe/(np1-1);
2546 G4double cosa, sina;
2547 for (G4int i=0; i<np1; i++) {
2548 cosa = std::cos(the+i*a);
2549 sina = std::sin(the+i*a);
2550 zz[i] = rmax*cosa;
2551 rr[i] = rmax*sina;
2552 if (np2 > 1) {
2553 zz[i+np1] = rmin*cosa;
2554 rr[i+np1] = rmin*sina;
2555 }
2556 }
2557 if (np2 == 1) {
2558 zz[np1] = 0.;
2559 rr[np1] = 0.;
2560 }
2561
2562 // R O T A T E P O L Y L I N E S
2563
2564 RotateAroundZ(0, phi, dphi, np1, np2, zz, rr, -1, -1);
2565 SetReferences();
2566
2567 delete [] zz;
2568 delete [] rr;
2569}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4double spatialTolerance
void RotateAroundZ(G4int nstep, G4double phi, G4double dphi, G4int np1, G4int np2, const G4double *z, G4double *r, G4int nodeVis, G4int edgeVis)
static G4int GetNumberOfRotationSteps()

◆ ~HepPolyhedronSphere()

HepPolyhedronSphere::~HepPolyhedronSphere ( )
overridedefault

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