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

#include <HepPolyhedron.h>

+ Inheritance diagram for HepPolyhedronPgon:

Public Member Functions

 HepPolyhedronPgon (G4double phi, G4double dphi, G4int npdv, G4int nz, const G4double *z, const G4double *rmin, const G4double *rmax)
 
 HepPolyhedronPgon (G4double phi, G4double dphi, G4int npdv, const std::vector< G4TwoVector > &rz)
 
 ~HepPolyhedronPgon () 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 536 of file HepPolyhedron.h.

Constructor & Destructor Documentation

◆ HepPolyhedronPgon() [1/2]

HepPolyhedronPgon::HepPolyhedronPgon ( G4double  phi,
G4double  dphi,
G4int  npdv,
G4int  nz,
const G4double z,
const G4double rmin,
const G4double rmax 
)

Definition at line 2321 of file HepPolyhedron.cc.

2344{
2345 // C H E C K I N P U T P A R A M E T E R S
2346
2347 if (dphi <= 0. || dphi > twopi) {
2348 std::cerr
2349 << "HepPolyhedronPgon/Pcon: wrong delta phi = " << dphi
2350 << std::endl;
2351 return;
2352 }
2353
2354 if (nz < 2) {
2355 std::cerr
2356 << "HepPolyhedronPgon/Pcon: number of z-planes less than two = " << nz
2357 << std::endl;
2358 return;
2359 }
2360
2361 if (npdv < 0) {
2362 std::cerr
2363 << "HepPolyhedronPgon/Pcon: error in number of phi-steps =" << npdv
2364 << std::endl;
2365 return;
2366 }
2367
2368 G4int i;
2369 for (i=0; i<nz; i++) {
2370 if (rmin[i] < 0. || rmax[i] < 0. || rmin[i] > rmax[i]) {
2371 std::cerr
2372 << "HepPolyhedronPgon: error in radiuses rmin[" << i << "]="
2373 << rmin[i] << " rmax[" << i << "]=" << rmax[i]
2374 << std::endl;
2375 return;
2376 }
2377 }
2378
2379 // P R E P A R E T W O P O L Y L I N E S
2380
2381 G4double *zz, *rr;
2382 zz = new G4double[2*nz];
2383 rr = new G4double[2*nz];
2384
2385 if (z[0] > z[nz-1]) {
2386 for (i=0; i<nz; i++) {
2387 zz[i] = z[i];
2388 rr[i] = rmax[i];
2389 zz[i+nz] = z[i];
2390 rr[i+nz] = rmin[i];
2391 }
2392 }else{
2393 for (i=0; i<nz; i++) {
2394 zz[i] = z[nz-i-1];
2395 rr[i] = rmax[nz-i-1];
2396 zz[i+nz] = z[nz-i-1];
2397 rr[i+nz] = rmin[nz-i-1];
2398 }
2399 }
2400
2401 // R O T A T E P O L Y L I N E S
2402
2403 G4int nodeVis = 1;
2404 G4int edgeVis = (npdv == 0) ? -1 : 1;
2405 RotateAroundZ(npdv, phi, dphi, nz, nz, zz, rr, nodeVis, edgeVis);
2406 SetReferences();
2407
2408 delete [] zz;
2409 delete [] rr;
2410}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
void RotateAroundZ(G4int nstep, G4double phi, G4double dphi, G4int np1, G4int np2, const G4double *z, G4double *r, G4int nodeVis, G4int edgeVis)

◆ HepPolyhedronPgon() [2/2]

HepPolyhedronPgon::HepPolyhedronPgon ( G4double  phi,
G4double  dphi,
G4int  npdv,
const std::vector< G4TwoVector > &  rz 
)

Definition at line 2412 of file HepPolyhedron.cc.

2429{
2430 // C H E C K I N P U T P A R A M E T E R S
2431
2432 if (dphi <= 0. || dphi > twopi) {
2433 std::cerr
2434 << "HepPolyhedronPgon/Pcon: wrong delta phi = " << dphi
2435 << std::endl;
2436 return;
2437 }
2438
2439 if (npdv < 0) {
2440 std::cerr
2441 << "HepPolyhedronPgon/Pcon: error in number of phi-steps = " << npdv
2442 << std::endl;
2443 return;
2444 }
2445
2446 G4int nrz = (G4int)rz.size();
2447 if (nrz < 3) {
2448 std::cerr
2449 << "HepPolyhedronPgon/Pcon: invalid number of nodes in rz-contour = " << nrz
2450 << std::endl;
2451 return;
2452 }
2453
2454 // R O T A T E P O L Y L I N E
2455
2456 G4int nodeVis = 1;
2457 G4int edgeVis = (npdv == 0) ? -1 : 1;
2458 RotateContourAroundZ(npdv, phi, dphi, rz, nodeVis, edgeVis);
2459 SetReferences();
2460}
void RotateContourAroundZ(G4int nstep, G4double phi, G4double dphi, const std::vector< G4TwoVector > &rz, G4int nodeVis, G4int edgeVis)

◆ ~HepPolyhedronPgon()

HepPolyhedronPgon::~HepPolyhedronPgon ( )
overridedefault

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