112 TVector3
dir = (
end - start);
113 TVector3 invDir (1./dir.X(), 1./dir.Y(), 1/dir.Z());
115 double tmin, tmax, tymin, tymax, tzmin, tzmax;
117 TVector3 enter (-99999, -99999, -99999);
118 TVector3
exit (-99999, -99999, -99999);
122 tmin = (min.X() - start.X()) * invDir.X();
123 tmax = (max.X() - start.X()) * invDir.X();
126 tmin = (max.X() - start.X()) * invDir.X();
127 tmax = (min.X() - start.X()) * invDir.X();
132 tymin = (min.Y() - start.Y()) * invDir.Y();
133 tymax = (max.Y() - start.Y()) * invDir.Y();
136 tymin = (max.Y() - start.Y()) * invDir.Y();
137 tymax = (min.Y() - start.Y()) * invDir.Y();
141 if((tmin > tymax) || (tymin > tmax))
return std::make_pair(enter,
exit);
144 if(tymin > tmin) tmin = tymin;
147 if(tymax < tmax) tmax = tymax;
151 tzmin = (min.Z() - start.Z()) * invDir.Z();
152 tzmax = (max.Z() - start.Z()) * invDir.Z();
155 tzmin = (max.Z() - start.Z()) * invDir.Z();
156 tzmax = (min.Z() - start.Z()) * invDir.Z();
160 if((tmin > tzmax) || (tzmin > tmax))
return std::make_pair(enter,
exit);
163 if(tzmin > tmin) tmin = tzmin;
166 if(tzmax < tmax) tmax = tzmax;
169 double xmin = start.X() + tmin * dir.X();
170 double xmax = start.X() + tmax * dir.X();
171 double ymin = start.Y() + tmin * dir.Y();
172 double ymax = start.Y() + tmax * dir.Y();
173 double zmin = start.Z() + tmin * dir.Z();
174 double zmax = start.Z() + tmax * dir.Z();
177 enter.SetXYZ(xmin, ymin, zmin);
178 exit.SetXYZ(xmax, ymax, zmax);
179 return std::make_pair(enter,
exit);
process_name pandoraGausCryo1 vertexChargeCryo1 vertexStubCryo1 xmin
auto end(FixedBins< T, C > const &) noexcept