45 type1 = (std::abs(z[1]-z[0]) > std::abs(r[1]-r[0]));
49 B = (r[1] - r[0]) / (z[1] - z[0]);
50 A = (r[0]*z[1] - r[1]*z[0]) / (z[1] -z[0]);
54 B = (z[1] - z[0]) / (r[1] - r[0]);
55 A = (z[0]*r[1] - z[1]*r[0]) / (r[1] - r[0]);
60 rLo = std::min(r[0], r[1]) - halfCarTolerance;
61 rHi = std::max(r[0], r[1]) + halfCarTolerance;
62 zLo = std::min(z[0], z[1]) - halfCarTolerance;
63 zHi = std::max(z[0], z[1]) + halfCarTolerance;
70 : zLo(0.), zHi(0.), rLo(0.), rHi(0.), A(0.), B(0.)
88 if (z < zLo || z > zHi) {
return false; }
92 if (r < rLo || r > rHi) {
return false; }
109 return LineHitsCone1( p, v, s1, s2 );
111 return LineHitsCone2( p, v, s1, s2 );
200 G4double radical = (br*br - 4*ar*cr) + ((std::max(arcz,azcr) - 2*bz*br) + std::min(arcz,azcr));
207 if (radical < -EPS*std::fabs(b)) {
return 0; }
209 if (radical < EPS*std::fabs(b))
214 if (std::fabs(a) > 1/kInfinity)
216 if(B==0.) {
return 0; }
217 if ( std::fabs(x0*ty - y0*tx) < std::fabs(EPS/B) )
227 radical = std::sqrt(radical);
232 G4double sa, sb, q = -0.5*( b + (b < 0 ? -radical : +radical) );
235 if (sa < sb) { *s1 = sa; *s2 = sb; }
else { *s1 = sb; *s2 = sa; }
236 if (A + B*(z0+(*s1)*tz) < 0) {
return 0; }
239 if (a < -1/kInfinity)
241 G4double sa, sb, q = -0.5*( b + (b < 0 ? -radical : +radical) );
244 *s1 = (B*tz > 0)^(sa > sb) ? sb : sa;
248 if (std::fabs(b) < 1/kInfinity) {
return 0; }
251 if (A + B*(z0+(*s1)*tz) < 0) {
return 0; }
291 if (std::fabs(tz) < 1/kInfinity) {
return 0; }
318 G4double radical = (br*br - 4*ar*cr) + ((std::max(arcz,azcr) - 2*bz*br) + std::min(arcz,azcr));
325 if (radical < -EPS*std::fabs(b)) {
return 0; }
327 if (radical < EPS*std::fabs(b))
332 if (std::fabs(a) > 1/kInfinity)
334 if ( std::fabs(x0*ty - y0*tx) < std::fabs(EPS/B) )
344 radical = std::sqrt(radical);
347 if (a < -1/kInfinity)
349 G4double sa, sb, q = -0.5*( b + (b < 0 ? -radical : +radical) );
352 if (sa < sb) { *s1 = sa; *s2 = sb; }
else { *s1 = sb; *s2 = sa; }
353 if ((z0 + (*s1)*tz - A)/B < 0) {
return 0; }
358 G4double sa, sb, q = -0.5*( b + (b < 0 ? -radical : +radical) );
361 *s1 = (tz*B > 0)^(sa > sb) ? sb : sa;
365 if (std::fabs(b) < 1/kInfinity) {
return 0; }
368 if ((z0 + (*s1)*tz - A)/B < 0) {
return 0; }
G4double B(G4double temperature)
CLHEP::Hep3Vector G4ThreeVector
G4double GetSurfaceTolerance() const
static G4GeometryTolerance * GetInstance()
G4bool HitOn(const G4double r, const G4double z)
G4int LineHitsCone(const G4ThreeVector &p, const G4ThreeVector &v, G4double *s1, G4double *s2)
G4IntersectingCone(const G4double r[2], const G4double z[2])