65#if defined(G4GEOM_USE_USOLIDS)
66#define G4GEOM_USE_USPHERE 1
69#if defined(G4GEOM_USE_USPHERE)
70 #define G4USphere G4Sphere
149 const G4bool calcNorm =
false,
150 G4bool* validNorm =
nullptr,
161 std::ostream&
StreamInfo(std::ostream& os)
const;
184 inline void Initialize();
189 inline void CheckSPhiAngle(
G4double sPhi);
190 inline void CheckDPhiAngle(
G4double dPhi);
195 inline void InitializePhiTrigonometry();
196 inline void InitializeThetaTrigonometry();
209 enum ESide {kNull,kRMin,kRMax,kSPhi,kEPhi,kSTheta,kETheta};
213 enum ENorm {kNRMin,kNRMax,kNSPhi,kNEPhi,kNSTheta,kNETheta};
215 G4double fRminTolerance, fRmaxTolerance, kAngTolerance,
216 kRadTolerance, fEpsilon = 2.e-11;
220 G4double fRmin, fRmax, fSPhi, fDPhi, fSTheta, fDTheta;
224 G4double sinCPhi, cosCPhi, cosHDPhi, cosHDPhiOT, cosHDPhiIT,
225 sinSPhi, cosSPhi, sinEPhi, cosEPhi, hDPhi, cPhi, ePhi;
229 G4double sinSTheta, cosSTheta, sinETheta, cosETheta,
230 tanSTheta, tanSTheta2, tanETheta, tanETheta2, eTheta;
234 G4bool fFullPhiSphere=
false, fFullThetaSphere=
false, fFullSphere=
true;
238 G4double halfCarTolerance, halfAngTolerance;
243#include "G4Sphere.icc"
G4ThreeVector GetPointOnSurface() const
G4double GetStartPhiAngle() const
void SetDeltaPhiAngle(G4double newDphi)
void BoundingLimits(G4ThreeVector &pMin, G4ThreeVector &pMax) const
G4double GetSinStartTheta() const
G4double GetCosStartPhi() const
void SetStartThetaAngle(G4double newSTheta)
std::ostream & StreamInfo(std::ostream &os) const
G4double GetDeltaPhiAngle() const
G4VisExtent GetExtent() const
G4double GetCosEndTheta() const
void SetOuterRadius(G4double newRmax)
G4GeometryType GetEntityType() const
void SetDeltaThetaAngle(G4double newDTheta)
void SetInnerRadius(G4double newRMin)
G4Polyhedron * CreatePolyhedron() const
G4double GetInnerRadius() const
EInside Inside(const G4ThreeVector &p) const
G4double GetOuterRadius() const
G4bool CalculateExtent(const EAxis pAxis, const G4VoxelLimits &pVoxelLimit, const G4AffineTransform &pTransform, G4double &pmin, G4double &pmax) const
G4ThreeVector SurfaceNormal(const G4ThreeVector &p) const
G4double GetCosEndPhi() const
G4double GetSinEndTheta() const
G4double GetCubicVolume()
G4double GetDeltaThetaAngle() const
G4double DistanceToIn(const G4ThreeVector &p, const G4ThreeVector &v) const
void ComputeDimensions(G4VPVParameterisation *p, const G4int n, const G4VPhysicalVolume *pRep)
G4double GetSinEndPhi() const
void DescribeYourselfTo(G4VGraphicsScene &scene) const
G4double GetSinStartPhi() const
G4Sphere & operator=(const G4Sphere &rhs)
G4double GetSurfaceArea()
G4double GetStartThetaAngle() const
G4double GetCosStartTheta() const
void SetStartPhiAngle(G4double newSphi, G4bool trig=true)
G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=nullptr, G4ThreeVector *n=nullptr) const