|
ATLAS Offline Software
|
Go to the documentation of this file.
14 #ifndef TRKNIRVANA_MEASUREMENTBASECOMPARISONFUNCTION_H
15 #define TRKNIRVANA_MEASUREMENTBASECOMPARISONFUNCTION_H
100 throw std::runtime_error(
101 "MeasurementBaseComparisonFunction: surface type error for Sf1!");
136 throw std::runtime_error(
137 "MeasurementBaseComparisonFunction: surface type error for Sf2!");
140 return path1 < path2;
158 double denom = 1 - parallelity * parallelity;
160 trackToWire.dot(dirWire) * parallelity) /
168 double parallelity =
m_direction.dot(Trk::s_zAxis);
169 double denom = 1 - parallelity * parallelity;
170 return (fabs(
denom) > 10
e-7)
172 trackToWire.dot(Trk::s_zAxis) * parallelity) /
202 double k = (direc.y()) / (direc.x());
203 double d = (point2.x() * point1.y() - point1.x() * point2.y()) /
204 (point2.x() - point1.x());
211 double a = 1 +
k *
k;
212 double p = 2 *
k *
d;
213 double q =
d *
d - R * R;
224 double t1 = (
first - point1.x()) / direc.x();
225 double t2 = (
second - point1.x()) / direc.x();
230 if (dist1raw.mag() < dist2raw.mag()) {
240 #endif // TRKNIRVANA_MEASUREMENTBASECOMPARISONFUNCTION_H
double pathIntersectWithPlane(const Trk::PlaneSurface &psf) const
MeasurementBaseComparisonFunction & operator=(MeasurementBaseComparisonFunction &&MCF)=default
~MeasurementBaseComparisonFunction()=default
MeasurementBaseComparisonFunction(MeasurementBaseComparisonFunction &&MCF)=default
std::vector< ALFA_RawDataCollection_p1 > t1
MeasurementBaseComparisonFunction()=delete
double pathIntersectWithDisc(const Trk::DiscSurface &dsf) const
virtual const CylinderBounds & bounds() const override final
This method returns the CylinderBounds by reference (NoBounds is not possible for cylinder)
Amg::Vector3D m_direction
const Amg::Vector3D & center() const
Returns the center position of the Surface.
double pathIntersectWithLine(const Trk::StraightLineSurface &lsf) const
Eigen::Affine3d Transform3D
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
MeasurementBaseComparisonFunction(const Amg::Vector3D &sp, const Amg::Vector3D &dir)
Full relation definition using a straight line propagation.
Ensure that the ATLAS eigen extensions are properly loaded.
Eigen::Matrix< double, 3, 1 > Vector3D
double pathIntersectWithLine(const Trk::PerigeeSurface &pgsf) const
std::vector< ALFA_RawDataContainer_p1 > t2
MeasurementBaseComparisonFunction(const MeasurementBaseComparisonFunction &MCF)=default
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
const Amg::Vector3D & lineDirection() const
Special method for StraightLineSurface - provides the Line direction from cache: speedup.
bool operator()(const Trk::MeasurementBase *one, const Trk::MeasurementBase *two) const
The comparison function defining in what case a Measurement is 'smaller' than a second one.
MeasurementBaseComparisonFunction & operator=(MeasurementBaseComparisonFunction &MCF)=default
Class implementing a comparison function for sorting MeasurementBase objects.
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
double pathIntersectWithCylinder(const Trk::CylinderSurface &csf, const Amg::Vector3D &globalHit) const
virtual double r() const override final
This method returns the radius.