Import Geant4 10.6.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2019-06-28 11:59:04 +02:00
parent 28a70706e0
commit d0f911957d
1056 changed files with 95168 additions and 78160 deletions
@@ -42,7 +42,7 @@
// Parameters in the constructor:
// const G4String& pName - solid name
// std::vector<G4TwoVector> polygon - the vertices of the outlined polygon
// defined in clockwise or anti-clockwise order
// defined in clockwise or anti-clockwise order
// std::vector<ZSection> - the z-sections defined by
// z position, offset and scale
// in increasing z-position order
@@ -62,6 +62,8 @@
#ifndef G4ExtrudedSolid_HH
#define G4ExtrudedSolid_HH
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UEXTRUDEDSOLID 1
#endif
@@ -25,7 +25,7 @@
//
//
//
//
//
// --------------------------------------------------------------------
// GEANT 4 class header file
//
@@ -35,21 +35,23 @@
// Class description:
//
// Class implementing a GenericPolycone constructed by points with
// (r,z)coordinates, allows Z 'go back'
// (r,z)coordinates, allows Z 'go back'
//
//
// G4GenericPolycone( const G4String& name,
// G4GenericPolycone( const G4String& name,
// G4double phiStart, // initial phi starting angle
// G4double phiTotal, // total phi angle
// G4int numRZ, // number corners in r,z space
// const G4double r[], // r coordinate of these corners
// const G4double z[]) // z coordinate of these corners
//
//
//
// --------------------------------------------------------------------
#ifndef G4GenericPolycone_hh
#define G4GenericPolycone_hh
/*
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UGENERICPOLYCONE 1
#endif
@@ -58,7 +60,7 @@
#define G4UGenericPolycone G4GenericPolycone
#include "G4UGenericPolycone.hh"
#else
*/
#include "G4VCSGfaceted.hh"
#include "G4PolyconeSide.hh"
@@ -66,12 +68,12 @@ class G4EnclosingCylinder;
class G4ReduciblePolygon;
class G4VCSGface;
class G4GenericPolycone : public G4VCSGfaceted
class G4GenericPolycone : public G4VCSGfaceted
{
public: // with description
G4GenericPolycone( const G4String& name,
G4GenericPolycone( const G4String& name,
G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4int numRZ, // number corners in r,z space
@@ -79,7 +81,7 @@ class G4GenericPolycone : public G4VCSGfaceted
const G4double z[] ); // z coordinate of these corners
virtual ~G4GenericPolycone();
// Methods for solid
EInside Inside( const G4ThreeVector &p ) const;
@@ -115,7 +117,7 @@ class G4GenericPolycone : public G4VCSGfaceted
inline G4bool IsOpen() const;
inline G4int GetNumRZCorner() const;
inline G4PolyconeSideRZ GetCorner(G4int index) const;
public: // without description
G4GenericPolycone(__void__&);
@@ -131,8 +133,6 @@ class G4GenericPolycone : public G4VCSGfaceted
// Generic initializer, called by all constructors
// void SetOriginalParameters(G4ReduciblePolygon *rz);
void Create( G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4ReduciblePolygon *rz ); // r/z coordinate of these corners
@@ -150,15 +150,15 @@ class G4GenericPolycone : public G4VCSGfaceted
G4bool phiIsOpen; // true if there is a phi segment
G4int numCorner; // number RZ points
G4PolyconeSideRZ *corners; // corner r,z points
// Our quick test
G4EnclosingCylinder *enclosingCylinder;
};
#include "G4GenericPolycone.icc"
//#endif
#endif
#endif
@@ -25,7 +25,7 @@
//
//
//
//
//
// --------------------------------------------------------------------
// GEANT 4 class header file
//
@@ -34,14 +34,14 @@
//
// Class description:
//
// G4GenericTrap is a solid which represents an arbitrary trapezoid with
// G4GenericTrap is a solid which represents an arbitrary trapezoid with
// up to 8 vertices standing on two parallel planes perpendicular to Z axis.
//
//
// Parameters in the constructor:
// - name - solid name
// - halfZ - the solid half length in Z
// - vertices - the (x,y) coordinates of vertices:
// o first four points: vertices[i], i<4
// o first four points: vertices[i], i<4
// are the vertices sitting on the -halfZ plane;
// o last four points: vertices[i], i>=4
// are the vertices sitting on the +halfZ plane.
@@ -66,6 +66,8 @@
#ifndef G4GenericTrap_HH
#define G4GenericTrap_HH
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UGENERICTRAP 1
#endif
@@ -106,7 +108,7 @@ class G4GenericTrap : public G4VSolid
inline G4int GetVisSubdivisions() const;
inline void SetVisSubdivisions(G4int subdiv);
// Solid methods
// Solid methods
EInside Inside(const G4ThreeVector& p) const;
G4ThreeVector SurfaceNormal(const G4ThreeVector& p) const;
@@ -137,12 +139,12 @@ class G4GenericTrap : public G4VSolid
G4double GetSurfaceArea();
// Visualisation functions
G4Polyhedron* GetPolyhedron () const;
void DescribeYourselfTo(G4VGraphicsScene& scene) const;
G4VisExtent GetExtent() const;
G4Polyhedron* CreatePolyhedron() const;
public: // without description
G4GenericTrap(__void__&);
@@ -151,7 +153,7 @@ class G4GenericTrap : public G4VSolid
// persistifiable objects.
G4GenericTrap(const G4GenericTrap& rhs);
G4GenericTrap& operator=(const G4GenericTrap& rhs);
G4GenericTrap& operator=(const G4GenericTrap& rhs);
// Copy constructor and assignment operator.
private:
@@ -161,25 +163,25 @@ class G4GenericTrap : public G4VSolid
inline void SetTwistAngle(G4int index, G4double twist);
G4bool ComputeIsTwisted() ;
G4bool CheckOrder(const std::vector<G4TwoVector>& vertices) const;
G4bool IsSegCrossing(const G4TwoVector& a, const G4TwoVector& b,
G4bool IsSegCrossing(const G4TwoVector& a, const G4TwoVector& b,
const G4TwoVector& c, const G4TwoVector& d) const;
G4bool IsSegCrossingZ(const G4TwoVector& a, const G4TwoVector& b,
G4bool IsSegCrossingZ(const G4TwoVector& a, const G4TwoVector& b,
const G4TwoVector& c, const G4TwoVector& d) const;
void ReorderVertices(std::vector<G4ThreeVector>& vertices) const;
void ComputeBBox();
inline G4ThreeVector GetMinimumBBox() const;
inline G4ThreeVector GetMaximumBBox() const;
G4VFacet* MakeDownFacet(const std::vector<G4ThreeVector>& fromVertices,
G4VFacet* MakeDownFacet(const std::vector<G4ThreeVector>& fromVertices,
G4int ind1, G4int ind2, G4int ind3) const;
G4VFacet* MakeUpFacet(const std::vector<G4ThreeVector>& fromVertices,
G4int ind1, G4int ind2, G4int ind3) const;
G4VFacet* MakeSideFacet(const G4ThreeVector& downVertex0,
G4VFacet* MakeUpFacet(const std::vector<G4ThreeVector>& fromVertices,
G4int ind1, G4int ind2, G4int ind3) const;
G4VFacet* MakeSideFacet(const G4ThreeVector& downVertex0,
const G4ThreeVector& downVertex1,
const G4ThreeVector& upVertex1,
const G4ThreeVector& upVertex0) const;
G4TessellatedSolid* CreateTessellatedSolid() const;
EInside InsidePolygone(const G4ThreeVector& p,
const std::vector<G4TwoVector>& poly) const;
G4double DistToPlane(const G4ThreeVector& p,
@@ -228,7 +230,7 @@ class G4GenericTrap : public G4VSolid
G4double fSurfaceArea;
G4double fCubicVolume;
// Surface and Volume
};
};
#include "G4GenericTrap.icc"
@@ -26,7 +26,7 @@
//
// $Original: G4Hype.hh,v 1.0 1998/06/09 16:57:50 safai Exp $
//
//
//
// --------------------------------------------------------------------
// GEANT 4 class header file
//
@@ -41,13 +41,13 @@
// the z-axis. The solid has a specified half-length along the z axis,
// about which it is centered, and a given minimum and maximum radius.
// A minimum radius of 0 signifies a filled Hype (with hyperbolical
// inner surface). To have a filled Hype the user must specify
// inner surface). To have a filled Hype the user must specify
// inner radius = 0 AND inner stereo angle = 0.
//
//
// The inner and outer hyperbolical surfaces can have different
// stereo angles. A stereo angle of 0 gives a cylindrical surface.
// Authors:
// Authors:
// Ernesto Lamanna (Ernesto.Lamanna@roma1.infn.it) &
// Francesco Safai Tehrani (Francesco.SafaiTehrani@roma1.infn.it)
// Rome, INFN & University of Rome "La Sapienza", 9 June 1998.
@@ -56,6 +56,8 @@
#ifndef G4HYPE_HH
#define G4HYPE_HH
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UHYPE 1
#endif
@@ -84,7 +86,7 @@ class G4Hype : public G4VSolid
G4double newHalfLenZ);
virtual ~G4Hype();
void ComputeDimensions(G4VPVParameterisation* p,
const G4int n,
const G4VPhysicalVolume* pRep);
@@ -124,7 +126,7 @@ class G4Hype : public G4VSolid
G4VSolid* Clone() const;
std::ostream& StreamInfo(std::ostream& os) const;
G4double GetCubicVolume();
G4double GetSurfaceArea();
@@ -143,11 +145,11 @@ class G4Hype : public G4VSolid
// persistifiable objects.
G4Hype(const G4Hype& rhs);
G4Hype& operator=(const G4Hype& rhs);
G4Hype& operator=(const G4Hype& rhs);
// Copy constructor and assignment operator.
protected: // without description
inline G4bool InnerSurfaceExists() const;
// whether we have an inner surface or not
@@ -155,13 +157,13 @@ class G4Hype : public G4VSolid
G4double r0, G4double tanPhi );
static G4double ApproxDistInside( G4double pr, G4double pz,
G4double r0, G4double tan2Phi );
// approximate isotropic distance to hyperbolic surface
// approximate isotropic distance to hyperbolic surface
inline G4double HypeInnerRadius2(G4double zVal) const;
inline G4double HypeOuterRadius2(G4double zVal) const;
// values of hype radius at a given Z
static G4int IntersectHype( const G4ThreeVector &p, const G4ThreeVector &v,
static G4int IntersectHype( const G4ThreeVector &p, const G4ThreeVector &v,
G4double r2, G4double tan2Phi, G4double s[2] );
// intersection with hyperbolic surface
@@ -185,7 +187,7 @@ class G4Hype : public G4VSolid
G4double endOuterRadius2; // squared endcap Outer Radius
G4double endInnerRadius; // endcap Inner Radius
G4double endOuterRadius; // endcap Outer Radius
// Used by distanceToOut
enum ESide {outerFace,innerFace,leftCap, rightCap};
@@ -195,7 +197,7 @@ class G4Hype : public G4VSolid
G4double asinh(G4double arg);
private:
G4double fCubicVolume;
G4double fSurfaceArea;
@@ -57,6 +57,8 @@
#ifndef G4Paraboloid_HH
#define G4Paraboloid_HH
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UPARABOLOID 1
#endif
@@ -142,11 +144,11 @@ class G4Paraboloid : public G4VSolid
// persistifiable objects.
G4Paraboloid(const G4Paraboloid& rhs);
G4Paraboloid& operator=(const G4Paraboloid& rhs);
G4Paraboloid& operator=(const G4Paraboloid& rhs);
// Copy constructor and assignment operator.
protected: // without description
mutable G4bool fRebuildPolyhedron;
mutable G4Polyhedron* fpPolyhedron;
@@ -158,7 +160,7 @@ class G4Paraboloid : public G4VSolid
G4double fCubicVolume;
G4double dz, r1, r2;
G4double k1, k2;
G4double k1, k2;
// Defined to make some calculations easier to follow
};
@@ -25,7 +25,7 @@
//
//
//
//
//
// --------------------------------------------------------------------
// GEANT 4 class header file
//
@@ -37,7 +37,7 @@
// Class implementing a CSG-like type "PCON" Geant 3.21 volume,
// inherited from class G4VCSGfaceted:
//
// G4Polycone( const G4String& name,
// G4Polycone( const G4String& name,
// G4double phiStart, // initial phi starting angle
// G4double phiTotal, // total phi angle
// G4int numZPlanes, // number of z planes
@@ -47,19 +47,21 @@
//
// Alternative constructor, but limited to increasing-only Z sections:
//
// G4Polycone( const G4String& name,
// G4Polycone( const G4String& name,
// G4double phiStart, // initial phi starting angle
// G4double phiTotal, // total phi angle
// G4int numRZ, // number corners in r,z space
// const G4double r[], // r coordinate of these corners
// const G4double z[]) // z coordinate of these corners
// Author:
// Author:
// David C. Williams (davidw@scipp.ucsc.edu)
// --------------------------------------------------------------------
#ifndef G4Polycone_hh
#define G4Polycone_hh
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UPOLYCONE 1
#endif
@@ -78,12 +80,12 @@ class G4EnclosingCylinder;
class G4ReduciblePolygon;
class G4VCSGface;
class G4Polycone : public G4VCSGfaceted
class G4Polycone : public G4VCSGfaceted
{
public: // with description
G4Polycone( const G4String& name,
G4Polycone( const G4String& name,
G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4int numZPlanes, // number of z planes
@@ -91,7 +93,7 @@ class G4Polycone : public G4VCSGfaceted
const G4double rInner[], // tangent distance to inner surface
const G4double rOuter[] ); // tangent distance to outer surface
G4Polycone( const G4String& name,
G4Polycone( const G4String& name,
G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4int numRZ, // number corners in r,z space
@@ -99,7 +101,7 @@ class G4Polycone : public G4VCSGfaceted
const G4double z[] ); // z coordinate of these corners
virtual ~G4Polycone();
// Methods for solid
EInside Inside( const G4ThreeVector &p ) const;
@@ -171,11 +173,11 @@ class G4Polycone : public G4VCSGfaceted
G4double fRmin2, G4double fRmax2,
G4double zOne, G4double zTwo,
G4double& totArea) const;
G4ThreeVector GetPointOnTubs(G4double fRMin, G4double fRMax,
G4double zOne, G4double zTwo,
G4double& totArea) const;
G4ThreeVector GetPointOnCut(G4double fRMin1, G4double fRMax1,
G4double fRMin2, G4double fRMax2,
G4double zOne, G4double zTwo,
@@ -199,7 +201,7 @@ class G4Polycone : public G4VCSGfaceted
// Our quick test
G4EnclosingCylinder *enclosingCylinder;
};
#include "G4Polycone.icc"
@@ -77,11 +77,10 @@ class G4PlSideData
void initialize()
{
fPhi.first = G4ThreeVector(0,0,0);
fPhi.second= 0.0;
fPhix = 0.; fPhiy = 0.; fPhiz = 0.; fPhik = 0.;
}
std::pair<G4ThreeVector, G4double> fPhi; // Cached value for phi
G4double fPhix=0., fPhiy=0., fPhiz=0., fPhik=0.; // Cached values for phi
};
// The type G4PlSideManager is introduced to
@@ -25,7 +25,7 @@
//
//
//
//
//
// --------------------------------------------------------------------
// GEANT 4 class header file
//
@@ -37,7 +37,7 @@
// Class implementing a CSG-like type "PGON" Geant 3.21 volume,
// inherited from class G4VCSGfaceted:
//
// G4Polyhedra( const G4String& name,
// G4Polyhedra( const G4String& name,
// G4double phiStart, - initial phi starting angle
// G4double phiTotal, - total phi angle
// G4int numSide, - number sides
@@ -46,7 +46,7 @@
// const G4double rInner[], - tangent distance to inner surface
// const G4double rOuter[] ) - tangent distance to outer surface
//
// G4Polyhedra( const G4String& name,
// G4Polyhedra( const G4String& name,
// G4double phiStart, - initial phi starting angle
// G4double phiTotal, - total phi angle
// G4int numSide, - number sides
@@ -54,12 +54,14 @@
// const G4double r[], - r coordinate of these corners
// const G4double z[] ) - z coordinate of these corners
// Author:
// Author:
// David C. Williams (davidw@scipp.ucsc.edu)
// --------------------------------------------------------------------
#ifndef G4Polyhedra_hh
#define G4Polyhedra_hh
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UPOLYHEDRA 1
#endif
@@ -81,7 +83,7 @@ class G4Polyhedra : public G4VCSGfaceted
{
public: // with description
G4Polyhedra( const G4String& name,
G4Polyhedra( const G4String& name,
G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4int numSide, // number sides
@@ -90,7 +92,7 @@ class G4Polyhedra : public G4VCSGfaceted
const G4double rInner[], // tangent distance to inner surface
const G4double rOuter[] ); // tangent distance to outer surface
G4Polyhedra( const G4String& name,
G4Polyhedra( const G4String& name,
G4double phiStart, // initial phi starting angle
G4double phiTotal, // total phi angle
G4int numSide, // number sides
@@ -106,7 +108,7 @@ class G4Polyhedra : public G4VCSGfaceted
G4double DistanceToIn( const G4ThreeVector &p,
const G4ThreeVector &v ) const;
G4double DistanceToIn( const G4ThreeVector &p ) const;
void BoundingLimits(G4ThreeVector& pMin, G4ThreeVector& pMax) const;
G4bool CalculateExtent(const EAxis pAxis,
const G4VoxelLimits& pVoxelLimit,
@@ -75,14 +75,13 @@ struct G4PolyhedraSideRZ
class G4PhSideData
{
public:
void initialize()
{
fPhi.first = G4ThreeVector(0,0,0);
fPhi.second= 0.0;
fPhix = 0.; fPhiy = 0.; fPhiz = 0.; fPhik = 0.;
}
std::pair<G4ThreeVector, G4double> fPhi; // Cached value for phi
G4double fPhix=0., fPhiy=0., fPhiz=0., fPhik=0.; // Cached values for phi
};
// The type G4PhSideManager is introduced to encapsulate the methods used
@@ -31,20 +31,20 @@
//
// Class description:
//
// G4TessellatedSolid is a special Geant4 solid defined by a number of
// G4TessellatedSolid is a special Geant4 solid defined by a number of
// facets (UVFacet). It is important that the supplied facets shall form a
// fully enclose space which is the solid.
// At the moment only two types of facet can be used for the construction of
// fully enclose space which is the solid.
// At the moment only two types of facet can be used for the construction of
// a G4TessellatedSolid, i.e. the G4TriangularFacet and G4QuadrangularFacet.
//
// How to contruct a G4TessellatedSolid:
//
//
// First declare a tessellated solid:
//
// G4TessellatedSolid* solidTarget = new G4TessellatedSolid("Solid_name");
//
// Define the facets which form the solid
//
//
// G4double targetSiz = 10*cm ;
// G4TriangularFacet *facet1 = new
// G4TriangularFacet (G4ThreeVector(-targetSize,-targetSize, 0.0),
@@ -73,7 +73,7 @@
// G4ThreeVector(+targetSize,-targetSize, 0.0),
// ABSOLUTE);
//
// Then add the facets to the solid:
// Then add the facets to the solid:
//
// solidTarget->AddFacet((UVFacet*) facet1);
// solidTarget->AddFacet((UVFacet*) facet2);
@@ -89,7 +89,7 @@
// --------------
// 31 October 2004, P R Truscott, QinetiQ Ltd, UK
// - Created.
// 22 November 2005, F Lei,
// 22 November 2005, F Lei,
// - Added GetPolyhedron().
// 12 October 2012, M Gayer,
// - Reviewed optimized implementation including voxelization of surfaces.
@@ -98,6 +98,8 @@
#ifndef G4TessellatedSolid_hh
#define G4TessellatedSolid_hh 1
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UTESSELLATEDSOLID 1
#endif
@@ -51,6 +51,8 @@
#ifndef G4TET_HH
#define G4TET_HH
/*
#include "G4GeomTypes.hh"
#if defined(G4GEOM_USE_USOLIDS)
#define G4GEOM_USE_UTET 1
#endif
@@ -67,11 +69,11 @@ class G4Tet : public G4VSolid
public: // with description
G4Tet(const G4String& pName,
G4Tet(const G4String& pName,
G4ThreeVector anchor,
G4ThreeVector p2,
G4ThreeVector p3,
G4ThreeVector p4,
G4ThreeVector p4,
G4bool *degeneracyFlag=0);
virtual ~G4Tet();
@@ -128,7 +130,7 @@ class G4Tet : public G4VSolid
// persistifiable objects.
G4Tet(const G4Tet& rhs);
G4Tet& operator=(const G4Tet& rhs);
G4Tet& operator=(const G4Tet& rhs);
// Copy constructor and assignment operator.
const char* CVSHeaderVers()
@@ -151,7 +153,7 @@ class G4Tet : public G4VSolid
mutable G4bool fRebuildPolyhedron;
mutable G4Polyhedron* fpPolyhedron;
G4ThreeVector GetPointOnFace(G4ThreeVector p1, G4ThreeVector p2,
G4ThreeVector GetPointOnFace(G4ThreeVector p1, G4ThreeVector p2,
G4ThreeVector p3, G4double& area) const;
static const char CVSVers[];
@@ -61,6 +61,9 @@
#include "G4Types.hh"
#include "G4ThreeVector.hh"
#include <vector>
#include <array>
class G4TriangularFacet : public G4VFacet
{
public: // with desctiption
@@ -71,8 +74,10 @@ class G4TriangularFacet : public G4VFacet
G4TriangularFacet (const G4ThreeVector &vt0, const G4ThreeVector &vt1,
const G4ThreeVector &vt2, G4FacetVertexType);
G4TriangularFacet (const G4TriangularFacet &right);
G4TriangularFacet ( G4TriangularFacet &&right);
G4TriangularFacet &operator=(const G4TriangularFacet &right);
G4TriangularFacet &operator=( G4TriangularFacet &&right);
G4VFacet *GetClone ();
G4TriangularFacet *GetFlippedFacet ();
@@ -110,13 +115,13 @@ class G4TriangularFacet : public G4VFacet
private:
void CopyFrom(const G4TriangularFacet &rhs);
void MoveFrom(G4TriangularFacet &rhs);
G4ThreeVector fSurfaceNormal;
G4double fArea;
G4ThreeVector fCircumcentre;
G4double fRadius;
G4int fIndices[3];
std::array<G4int, 3> fIndices;
std::vector<G4ThreeVector> *fVertices;
G4double fA, fB, fC;
@@ -42,15 +42,20 @@
#ifndef G4UGENERICPOLYCONE_hh
#define G4UGENERICPOLYCONE_hh
#include "G4USolid.hh"
#include "G4UAdapter.hh"
#if ( defined(G4GEOM_USE_USOLIDS) || defined(G4GEOM_USE_PARTIAL_USOLIDS) )
#include "UGenericPolycone.hh"
#include <volumes/UnplacedGenericPolycone.h>
#include "G4TwoVector.hh"
#include "G4PolyconeSide.hh"
class G4UGenericPolycone : public G4USolid
class G4UGenericPolycone : public G4UAdapter<vecgeom::UnplacedGenericPolycone>
{
using Shape_t = vecgeom::UnplacedGenericPolycone;
using Base_t = G4UAdapter<vecgeom::UnplacedGenericPolycone>;
public: // with description
G4UGenericPolycone(const G4String& name,
@@ -62,8 +67,6 @@ class G4UGenericPolycone : public G4USolid
~G4UGenericPolycone();
inline UGenericPolycone* GetShape() const;
G4double GetStartPhi() const;
G4double GetEndPhi() const;
G4double GetSinStartPhi() const;
@@ -76,6 +79,8 @@ class G4UGenericPolycone : public G4USolid
inline G4GeometryType GetEntityType() const;
G4VSolid* Clone() const;
public: // without description
G4UGenericPolycone(__void__&);
@@ -95,17 +100,18 @@ class G4UGenericPolycone : public G4USolid
G4double& pMin, G4double& pMax) const;
G4Polyhedron* CreatePolyhedron() const;
private:
G4double wrStart;
G4double wrDelta;
std::vector<G4TwoVector> rzcorners;
};
// --------------------------------------------------------------------
// Inline methods
// --------------------------------------------------------------------
inline UGenericPolycone* G4UGenericPolycone::GetShape() const
{
return (UGenericPolycone*) fShape;
}
inline G4GeometryType G4UGenericPolycone::GetEntityType() const
{
return "G4GenericPolycone";