64#if defined(G4GEOM_USE_USOLIDS)
65#define G4GEOM_USE_USPHERE 1
68#if defined(G4GEOM_USE_USPHERE)
69 #define G4USphere G4Sphere
189 const G4bool calcNorm =
false,
190 G4bool* validNorm =
nullptr,
214 std::ostream&
StreamInfo(std::ostream& os)
const override;
241 inline void Initialize();
247 inline void CheckSPhiAngle(
G4double sPhi);
248 inline void CheckDPhiAngle(
G4double dPhi);
254 inline void InitializePhiTrigonometry();
255 inline void InitializeThetaTrigonometry();
266 G4double fRminTolerance, fRmaxTolerance, kAngTolerance,
267 kRadTolerance, fEpsilon = 2.e-11;
270 G4double fRmin, fRmax, fSPhi, fDPhi, fSTheta, fDTheta;
273 G4double sinCPhi, cosCPhi, cosHDPhi, cosHDPhiOT, cosHDPhiIT,
274 sinSPhi, cosSPhi, sinEPhi, cosEPhi, hDPhi, cPhi, ePhi;
277 G4double sinSTheta, cosSTheta, sinETheta, cosETheta,
278 tanSTheta, tanSTheta2, tanETheta, tanETheta2, eTheta;
281 G4bool fFullPhiSphere=
false, fFullThetaSphere=
false, fFullSphere=
true;
284 G4double halfCarTolerance, halfAngTolerance;
287#include "G4Sphere.icc"
CLHEP::Hep3Vector G4ThreeVector
G4CSGSolid(const G4String &pName)
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const override
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const override
EInside Inside(const G4ThreeVector &p) const override
G4double GetStartPhiAngle() const
void SetDeltaPhiAngle(G4double newDphi)
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep) override
G4Sphere(const G4String &pName, G4double pRmin, G4double pRmax, G4double pSPhi, G4double pDPhi, G4double pSTheta, G4double pDTheta)
G4VSolid * Clone() const override
G4double GetSinStartTheta() const
G4VisExtent GetExtent() const override
G4double GetCosStartPhi() const
void SetStartThetaAngle(G4double newSTheta)
G4ThreeVector GetPointOnSurface() const override
G4Sphere(const G4Sphere &rhs)=default
G4double GetCubicVolume() override
G4double GetDeltaPhiAngle() const
~G4Sphere() override=default
G4double GetCosEndTheta() const
void SetOuterRadius(G4double newRmax)
void SetDeltaThetaAngle(G4double newDTheta)
void SetInnerRadius(G4double newRMin)
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pmin, G4double &pmax) const override
G4double GetInnerRadius() const
G4double GetOuterRadius() const
G4double GetCosEndPhi() const
G4double GetSinEndTheta() const
G4double GetDeltaThetaAngle() const
G4double GetSinEndPhi() const
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const override
G4double GetSinStartPhi() const
G4Sphere & operator=(const G4Sphere &rhs)
G4double GetStartThetaAngle() const
void DescribeYourselfTo(G4VGraphicsScene &scene) const override
G4double GetCosStartTheta() const
G4double GetSurfaceArea() override
G4GeometryType GetEntityType() const override
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const override
void SetStartPhiAngle(G4double newSphi, G4bool trig=true)
std::ostream & StreamInfo(std::ostream &os) const override
G4Polyhedron * CreatePolyhedron() const override
G4VPVParameterisation ia an abstract base class for Parameterisation, able to compute the transformat...
G4VPhysicalVolume is an abstract base class for the representation of a positioned volume....
G4VSolid(const G4String &name)
G4VoxelLimits represents limitation/restrictions of space, where restrictions are only made perpendic...