53 UCons(
const std::string& pName,
54 double pRmin1,
double pRmax1,
55 double pRmin2,
double pRmax2,
57 double pSPhi,
double pDPhi);
115 std::ostream&
StreamInfo(std::ostream& os)
const;
129 double r2, rl, rh, pPhi, tolRMin, tolRMax;
135 if (std::fabs(p.
z) >
fDz + halfCarTolerance)
139 else if (std::fabs(p.
z) >=
fDz - halfCarTolerance)
148 r2 = p.
x * p.
x + p.
y * p.
y;
154 tolRMin = rl - halfRadTolerance;
159 tolRMax = rh + halfRadTolerance;
161 if ((r2 < tolRMin * tolRMin) || (r2 > tolRMax * tolRMax))
168 tolRMin = rl + halfRadTolerance;
174 tolRMax = rh - halfRadTolerance;
178 if ((r2 < tolRMin * tolRMin) || (r2 >= tolRMax * tolRMax))
185 pPhi = std::atan2(p.
y, p.
x);
187 if (pPhi <
fSPhi - halfAngTolerance)
191 else if (pPhi >
fSPhi +
fDPhi + halfAngTolerance)
196 if ((pPhi <
fSPhi - halfAngTolerance) ||
204 if ((pPhi <
fSPhi + halfAngTolerance) ||
237 inline double GetDz()
const;
void SetZHalfLength(double newDz)
double SafetyFromOutside(const UVector3 &p, bool precise) const
virtual void ComputeBBox(UBBox *, bool)
VUSolid::EnumInside Inside(const UVector3 &p) const
void SetOuterRadiusMinusZ(double Rmax1)
UGeometryType GetEntityType() const
std::ostream & StreamInfo(std::ostream &os) const
double DistanceToIn(const UVector3 &p, const UVector3 &v, double aPstep=UUtils::kInfinity) const
UCons & operator=(const UCons &rhs)
void InitializeTrigonometry()
double SafetyFromInside(const UVector3 &p, bool precise) const
double GetOuterRadiusPlusZ() const
static double Tolerance()
void SetDeltaPhiAngle(double newDPhi)
static const double kInfinity
double GetStartPhiAngle() const
bool Normal(const UVector3 &p, UVector3 &n) const
double GetZHalfLength() const
double GetInnerRadiusPlusZ() const
double GetOuterRadiusMinusZ() const
void Extent(UVector3 &aMin, UVector3 &aMax) const
virtual void GetParametersList(int, double *) const
void CheckPhiAngles(double sPhi, double dPhi)
void SetInnerRadiusPlusZ(double Rmin2)
void CheckSPhiAngle(double sPhi)
double GetDeltaPhiAngle() const
std::string UGeometryType
double GetInnerRadiusMinusZ() const
void SetOuterRadiusPlusZ(double Rmax2)
UVector3 GetPointOnSurface() const
void SetInnerRadiusMinusZ(double Rmin1)
UVector3 ApproxSurfaceNormal(const UVector3 &p) const
void CheckDPhiAngle(double dPhi)
void SetStartPhiAngle(double newSPhi, bool trig=true)
double DistanceToOut(const UVector3 &aPoint, const UVector3 &aDirection, UVector3 &aNormalVector, bool &aConvex, double aPstep=UUtils::kInfinity) const