Belle II Software  release-05-01-25
GeneralizedCircle.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2012 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFindingCDC/geometry/GeneralizedCircle.h>
11 
12 #include <tracking/trackFindingCDC/geometry/Circle2D.h>
13 #include <tracking/trackFindingCDC/geometry/Line2D.h>
14 #include <tracking/trackFindingCDC/geometry/Vector2D.h>
15 
16 #include <tracking/trackFindingCDC/numerics/EForwardBackward.h>
17 #include <tracking/trackFindingCDC/numerics/ERotation.h>
18 
19 #include <tracking/trackFindingCDC/numerics/SpecialFunctions.h>
20 #include <tracking/trackFindingCDC/numerics/Quadratic.h>
21 
22 #include <ostream>
23 #include <cmath>
24 
25 using namespace Belle2;
26 using namespace TrackFindingCDC;
27 
29  : m_n3(0.0)
30  , m_n12(0.0, 0.0)
31  , m_n0(0.0)
32 {
33 }
34 
36  const double n1,
37  const double n2,
38  const double n3)
39  : m_n3(n3)
40  , m_n12(n1, n2)
41  , m_n0(n0)
42 {
43  normalize();
44 }
45 
46 GeneralizedCircle::GeneralizedCircle(const double n0, const Vector2D& n12, const double n3)
47  : m_n3(n3)
48  , m_n12(n12)
49  , m_n0(n0)
50 {
51  normalize();
52 }
53 
55  : m_n3(0.0)
56  , m_n12(n012.n12())
57  , m_n0(n012.n0())
58 {
59  normalize();
60 }
61 
63  : m_n3(1.0 / 2.0 / circle.radius())
64  , m_n12(-circle.center().x() * (m_n3 * 2.0), -circle.center().y() * (m_n3 * 2.0))
65  , m_n0((circle.center().normSquared() - circle.radiusSquared()) * m_n3)
66 {
67 }
68 
70  const double absRadius,
71  const ERotation orientation)
72 {
73  GeneralizedCircle generalizedCircle;
74  generalizedCircle.setCenterAndRadius(center, absRadius, orientation);
75  return generalizedCircle;
76 }
77 
79  const Vector2D& tangential,
80  const double impact)
81 {
82  GeneralizedCircle generalizedCircle;
83  generalizedCircle.setPerigeeParameters(curvature, tangential, impact);
84  return generalizedCircle;
85 }
86 
87 GeneralizedCircle GeneralizedCircle::fromPerigeeParameters(const double curvature,
88  const double tangentialPhi,
89  const double impact)
90 {
91  GeneralizedCircle generalizedCircle;
93  return generalizedCircle;
94 }
95 
97  const double absRadius,
98  const ERotation orientation)
99 {
100  double curvature = orientation / fabs(absRadius);
102  setN1(-center.x() * curvature);
103  setN2(-center.y() * curvature);
104  setN3(curvature / 2.0);
105  normalize(); // the call to normalize should be superfluous
106 }
107 
108 void GeneralizedCircle::setPerigeeParameters(const double curvature,
109  const Vector2D& tangential,
110  const double impact)
111 {
112  double n0 = impact * (impact * curvature / 2.0 + 1.0);
114  double n3 = curvature / 2.0;
115  setN(n0, n12, n3);
116 }
117 
119 {
120  if (fastDistance(point) == 0) return point;
121 
122  // solve the minization | point - pointOnCirlce | ^2 subjected to the on circle constraint
123  // 1.0 * m_n0 +
124  // point.x() * m_n1 +
125  // point.y() * m_n2 +
126  // point.cylindricalRSquared() * m_n3 == 0
127  // solved with a lagrangian muliplicator for the constraint
128 
129  Vector2D gradientAtPoint = gradient(point);
130  Vector2D coordinateSystem = gradientAtPoint.unit();
131 
132  // component of closest approach orthogonal to coordinateSystem
133  double closestOrthogonal = n12().cross(point) / gradientAtPoint.norm();
134 
135  // component of closest approach parallel to coordinateSystem - two solutions expected
136  double nOrthogonal = n12().unnormalizedOrthogonalComp(coordinateSystem);
137  double nParallel = n12().unnormalizedParallelComp(coordinateSystem);
138 
139  double closestParallel = 0.0;
140  if (isLine()) {
141  closestParallel = -(nOrthogonal * closestOrthogonal + n0()) / nParallel;
142 
143  } else {
144  const double a = n3();
145  const double b = nParallel;
146  const double c = n0() + (nOrthogonal + n3() * closestOrthogonal) * closestOrthogonal;
147 
148  const std::pair<double, double> closestParallel12 = solveQuadraticABC(a, b, c);
149 
150  // take the solution with smaller distance to point
151  const double pointParallel = point.unnormalizedParallelComp(coordinateSystem);
152 
153  const double criterion1 =
154  closestParallel12.first * (closestParallel12.first - 2 * pointParallel);
155  const double criterion2 =
156  closestParallel12.second * (closestParallel12.second - 2 * pointParallel);
157 
158  closestParallel = criterion1 < criterion2 ? closestParallel12.first : closestParallel12.second;
159  }
160  return Vector2D::compose(coordinateSystem, closestParallel, closestOrthogonal);
161 }
162 
164 {
165  Vector2D result(n12());
166  result.setCylindricalR(-impact());
167  return result;
168 }
169 
171 {
172  Vector2D result(n12());
173  result.setCylindricalR(-impact() - 2 * radius());
174  return result;
175 }
176 
178  const Vector2D& end1,
179  const Vector2D& end2) const
180 {
181  double lengthOnCurve1 = arcLengthBetween(start, end1);
182  double lengthOnCurve2 = arcLengthBetween(start, end2);
183 
184  if (lengthOnCurve1 >= 0.0) {
185 
186  if (lengthOnCurve2 >= 0.0) {
187  return lengthOnCurve1 < lengthOnCurve2 ? end1 : end2;
188  } else {
189  return end1;
190  }
191  } else {
192 
193  if (lengthOnCurve2 >= 0.0) {
194  return end2;
195  } else {
196 
197  // both lengths on curve have a negative sign
198  // the candidate with the lesser length on curve wins because of the discontinuaty
199  // unless the generalized circle is a line
200  // in this case their is no forward intersection with the same cylindrical radius
201  if (isLine()) {
202  return Vector2D(NAN, NAN);
203  } else {
204  return lengthOnCurve1 < lengthOnCurve2 ? end1 : end2;
205  }
206  }
207  }
208  return Vector2D(NAN, NAN); // just avoid a compiler warning
209 }
210 
211 std::pair<Vector2D, Vector2D> GeneralizedCircle::atCylindricalR(const double cylindricalR) const
212 {
213  // extraploted to r
214  // solve
215  // n0 + n1*x + n2*y + n3*r*r == 0
216  // and r = cylindricalR
217  // search for x and y
218 
219  // solve the equation in a coordinate system parallel and orthogonal to the reduced circle center
220  const Vector2D nUnit = n12().unit();
221 
222  // parallel component
223  const double sameCylindricalRParallel = -(n0() + n3() * square(cylindricalR)) / n12().norm();
224 
225  // orthogonal component
226  const double sameCylindricalROrthogonal = sqrt(square(cylindricalR) - square(sameCylindricalRParallel));
227 
229  Vector2D sameCylindricalR1 =
230  Vector2D::compose(nUnit, sameCylindricalRParallel, -sameCylindricalROrthogonal);
231 
232  Vector2D sameCylindricalR2 =
233  Vector2D::compose(nUnit, sameCylindricalRParallel, sameCylindricalROrthogonal);
234 
235  std::pair<Vector2D, Vector2D> result(sameCylindricalR1, sameCylindricalR2);
236  return result;
237 }
238 
240  const double cylindricalR) const
241 {
242  std::pair<Vector2D, Vector2D> candidatePoints = atCylindricalR(cylindricalR);
243  return chooseNextForwardOf(startPoint, candidatePoints.first, candidatePoints.second);
244 }
245 
246 double GeneralizedCircle::arcLengthBetween(const Vector2D& from, const Vector2D& to) const
247 {
248  EForwardBackward lengthSign = isForwardOrBackwardOf(from, to);
249  if (not NForwardBackward::isValid(lengthSign)) return NAN;
250 
251  // Handling the rare case that from and to correspond to opposing points on the circle
252  if (lengthSign == EForwardBackward::c_Unknown) lengthSign = EForwardBackward::c_Forward;
253 
254  Vector2D closestAtFrom = closest(from);
255  Vector2D closestAtTo = closest(to);
256  double directDistance = closestAtFrom.distance(closestAtTo);
257 
258  return lengthSign * arcLengthFactor(directDistance) * directDistance;
259 }
260 
262 {
263  const Vector2D from = perigee();
264 
265  EForwardBackward lengthSign = isForwardOrBackwardOf(from, to);
266  if (not NForwardBackward::isValid(lengthSign)) return NAN;
267 
268  // Handling the rare case that from and to correspond to opposing points on the circle
269  if (lengthSign == EForwardBackward::c_Unknown) lengthSign = EForwardBackward::c_Forward;
270 
271  const Vector2D& closestAtFrom = from;
272  Vector2D closestAtTo = closest(to);
273  double directDistance = closestAtFrom.distance(closestAtTo);
274 
275  return lengthSign * arcLengthFactor(directDistance) * directDistance;
276 }
277 
278 double GeneralizedCircle::arcLengthToCylindricalR(const double cylindricalR) const
279 {
280  // Slight trick here
281  // Since the sought point is on the helix we treat it as the perigee
282  // and the origin as the point to extrapolate to.
283  // We know the distance of the origin to the circle, which is just d0
284  // The direct distance from the origin to the imaginary perigee is just the given cylindricalR.
285  const double dr = d0();
286  const double directDistance =
287  sqrt((cylindricalR + dr) * (cylindricalR - dr) / (1 + dr * omega()));
288  const double arcLength = arcLengthFactor(directDistance) * directDistance;
289  return arcLength;
290 }
291 
292 double GeneralizedCircle::arcLengthFactor(const double directDistance, const double curvature)
293 {
294  double x = directDistance * curvature / 2.0;
295  return asinc(x);
296 }
297 
298 double GeneralizedCircle::distance(const Vector2D& point) const
299 {
300  const double fastD = fastDistance(point);
301  return distance(fastD);
302 }
303 
304 double GeneralizedCircle::distance(const double fastDistance) const
305 {
306  if (fastDistance == 0.0 or isLine()) {
307  // special case for unfitted state
308  // and line
309  return fastDistance;
310  } else {
311 
312  const double a = n3();
313  const double b = 1;
314  const double c = -fastDistance;
315 
316  std::pair<double, double> distance12 = solveQuadraticABC(a, b, c);
317 
318  // take the small solution which has always the same sign of the fastDistance
319  return distance12.second;
320  }
321 }
322 
323 std::pair<Vector2D, Vector2D>
325 {
326  const double m0 = generalizedCircle.n0();
327  const Vector2D& m12 = generalizedCircle.n12();
328  const double m3 = generalizedCircle.n3();
329 
330  const double n0 = this->n0();
331  const Vector2D& n12 = this->n12();
332  const double n3 = this->n3();
333 
334  Vector2D unitC = n12 * m3 - m12 * n3;
335  double absC = unitC.normalize();
336 
337  double xParallel = (m0 * n3 - m3 * n0) / absC;
338 
339  // Use symmetric solution and use all input parameters
340  Vector2D mn12 = n12 + m12;
341  double mn12Parallel = unitC.unnormalizedParallelComp(mn12);
342  double mn12Orthogonal = unitC.unnormalizedOrthogonalComp(mn12);
343 
344  double a = m3 + n3;
345  double b = mn12Orthogonal;
346  double c = (a * xParallel + mn12Parallel) * xParallel + m0 + n0;
347 
348  std::pair<double, double> xOrthogonal = solveQuadraticABC(a, b, c);
349 
350  return std::make_pair(Vector2D::compose(unitC, xParallel, xOrthogonal.first),
351  Vector2D::compose(unitC, xParallel, xOrthogonal.second));
352 }
353 
354 Vector2D GeneralizedCircle::atArcLength(const double arcLength) const
355 {
356  double chi = arcLength * curvature();
357  double chiHalf = chi / 2.0;
358 
359  double atX = arcLength * sinc(chiHalf) * sin(chiHalf) + impact();
360  double atY = -arcLength * sinc(chi);
361  return Vector2D::compose(-n12().unit(), atX, atY);
362 }
363 
364 std::ostream& TrackFindingCDC::operator<<(std::ostream& output, const GeneralizedCircle& circle)
365 {
366  if (circle.isLine()) {
367  output << "Line support point = " << circle.perigee();
368  return output;
369  } else {
370  output << "CircleCenter = " << circle.center() << ", Radius = " << circle.absRadius();
371  return output;
372  }
373 }
Belle2::TrackFindingCDC::GeneralizedCircle::tangential
Vector2D tangential() const
Gives the tangential vector at the closest approach to the origin / at the perigee.
Definition: GeneralizedCircle.h:515
Belle2::TrackFindingCDC::Vector2D::orthogonal
Vector2D orthogonal() const
Orthogonal vector to the counterclockwise direction.
Definition: Vector2D.h:303
Belle2::operator<<
std::ostream & operator<<(std::ostream &output, const IntervalOfValidity &iov)
Definition: IntervalOfValidity.cc:196
Belle2::TrackFindingCDC::Vector2D::unit
Vector2D unit() const
Returns a unit vector colaligned with this.
Definition: Vector2D.h:335
Belle2::TrackFindingCDC::GeneralizedCircle::isForwardOrBackwardOf
EForwardBackward isForwardOrBackwardOf(const Vector2D &from, const Vector2D &to) const
Calculates if the to vector is closer to the from vector following the along orientation of the circl...
Definition: GeneralizedCircle.h:418
Belle2::TrackFindingCDC::GeneralizedCircle::setCenterAndRadius
void setCenterAndRadius(const Vector2D &center, double absRadius, ERotation orientation=ERotation::c_CounterClockwise)
Setter for the circle center and radius.
Definition: GeneralizedCircle.cc:96
Belle2::TrackFindingCDC::Vector2D
A two dimensional vector which is equipped with functions for correct handeling of orientation relat...
Definition: Vector2D.h:37
Belle2::TrackFindingCDC::Vector2D::normalize
double normalize()
Normalizes the vector to unit length.
Definition: Vector2D.h:317
Belle2::TrackFindingCDC::Vector2D::normSquared
double normSquared() const
Calculates .
Definition: Vector2D.h:183
Belle2::TrackFindingCDC::GeneralizedCircle::tangentialPhi
double tangentialPhi() const
Gives to azimuth angle phi of the direction of flight at the perigee.
Definition: GeneralizedCircle.h:521
Belle2::TrackFindingCDC::Vector2D::y
double y() const
Getter for the y coordinate.
Definition: Vector2D.h:619
Belle2::TrackFindingCDC::GeneralizedCircle::atCylindricalRForwardOf
Vector2D atCylindricalRForwardOf(const Vector2D &startPoint, double cylindricalR) const
Approach on the circle with the given cylindrical radius that lies in the forward direction of a star...
Definition: GeneralizedCircle.cc:239
Belle2::TrackFindingCDC::GeneralizedCircle::setN3
void setN3(const double n3)
Setter for fourth circle parameter.
Definition: GeneralizedCircle.h:162
Belle2::TrackFindingCDC::Vector2D::second
double second() const
Getter for the second coordinate.
Definition: Vector2D.h:653
Belle2::TrackFindingCDC::NForwardBackward::isValid
bool isValid(EForwardBackward eForwardBackward)
Check whether the given enum instance is one of the valid values.
Definition: EForwardBackward.h:55
Belle2::TrackFindingCDC::GeneralizedCircle::omega
double omega() const
Gives the omega parameter as used by the framework helix.
Definition: GeneralizedCircle.h:599
Belle2::TrackFindingCDC::GeneralizedCircle::d0
double d0() const
Getter for the absolute distance to the z axes at the support point.
Definition: GeneralizedCircle.h:509
Belle2::TrackFindingCDC::Circle2D
A two dimensional circle in its natural representation using center and radius as parameters.
Definition: Circle2D.h:36
Belle2::TrackFindingCDC::GeneralizedCircle::atArcLength
Vector2D atArcLength(double arcLength) const
Calculates the point, which lies at the give perpendicular travel distance (counted from the perigee)
Definition: GeneralizedCircle.cc:354
Belle2::TrackFindingCDC::NForwardBackward::EForwardBackward
EForwardBackward
Enumeration to represent the distinct possibilities of the right left passage information.
Definition: EForwardBackward.h:35
Belle2::TrackFindingCDC::Vector2D::distance
double distance(const Vector2D &rhs=Vector2D(0.0, 0.0)) const
Calculates the distance of this point to the rhs.
Definition: Vector2D.h:218
Belle2::TrackFindingCDC::GeneralizedCircle
A generalized circle.
Definition: GeneralizedCircle.h:61
Belle2::TrackFindingCDC::GeneralizedCircle::distance
double distance(const Vector2D &point) const
Gives the proper distance of the point to the circle line retaining the sign of the fast distance.
Definition: GeneralizedCircle.cc:298
Belle2::TrackFindingCDC::GeneralizedCircle::radius
double radius() const
Gives the signed radius of the circle. If it was a line this will be infinity.
Definition: GeneralizedCircle.h:578
Belle2::TrackFindingCDC::GeneralizedCircle::GeneralizedCircle
GeneralizedCircle()
Default constructor for ROOT compatibility.
Definition: GeneralizedCircle.cc:28
Belle2::TrackFindingCDC::Vector2D::first
double first() const
Getter for the first coordinate.
Definition: Vector2D.h:643
Belle2::TrackFindingCDC::GeneralizedCircle::n3
double n3() const
Getter for the fourth circle parameter.
Definition: GeneralizedCircle.h:303
Belle2::TrackFindingCDC::Vector2D::cross
double cross(const Vector2D &rhs) const
Calculated the two dimensional cross product.
Definition: Vector2D.h:177
Belle2::TrackFindingCDC::GeneralizedCircle::arcLengthTo
double arcLengthTo(const Vector2D &to) const
Calculates the arc length between the perigee and the given point.
Definition: GeneralizedCircle.cc:261
Belle2::TrackFindingCDC::GeneralizedCircle::apogee
Vector2D apogee() const
Calculates the point on the circle that is furthest away from the origin.
Definition: GeneralizedCircle.cc:170
Belle2::TrackFindingCDC::GeneralizedCircle::setN
void setN(const double n0, const double n1, const double n2, const double n3=0.0)
Setter for all four circle parameters.
Definition: GeneralizedCircle.h:188
Belle2::TrackFindingCDC::GeneralizedCircle::fastDistance
double fastDistance(const Vector2D &point) const
Approximate distance.
Definition: GeneralizedCircle.h:469
Belle2::TrackFindingCDC::GeneralizedCircle::perigee
Vector2D perigee() const
Calculates the closest approach to the two dimensional origin.
Definition: GeneralizedCircle.cc:163
Belle2::TrackFindingCDC::GeneralizedCircle::gradient
Vector2D gradient(const Vector2D &point) const
Gradient of the distance field Gives the gradient of the approximated distance field for the given po...
Definition: GeneralizedCircle.h:357
Belle2::TrackFindingCDC::GeneralizedCircle::intersections
std::pair< Vector2D, Vector2D > intersections(const GeneralizedCircle &generalizedCircle) const
Calculates the two points common to both circles.
Definition: GeneralizedCircle.cc:324
Belle2::TrackFindingCDC::GeneralizedCircle::orientation
ERotation orientation() const
Gives the orientation of the circle.
Definition: GeneralizedCircle.h:622
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::GeneralizedCircle::setN0
void setN0(const double n0)
Setter for first circle parameter.
Definition: GeneralizedCircle.h:112
Belle2::TrackFindingCDC::GeneralizedCircle::fromPerigeeParameters
static GeneralizedCircle fromPerigeeParameters(double curvature, const Vector2D &tangential, double impact)
Constructor of a generalized circle from perigee parameters.
Belle2::TrackFindingCDC::GeneralizedCircle::arcLengthFactor
double arcLengthFactor(const double directDistance) const
Helper function the calculate the factor between the length of a secant line and the length on the ar...
Definition: GeneralizedCircle.h:663
Belle2::TrackFindingCDC::GeneralizedCircle::arcLengthToCylindricalR
double arcLengthToCylindricalR(double cylindricalR) const
Calculates the two dimensional arc length till the cylindrical radius is reached If the radius can no...
Definition: GeneralizedCircle.cc:278
Belle2::TrackFindingCDC::GeneralizedCircle::impact
double impact() const
Gives the signed distance of the origin to the circle.
Definition: GeneralizedCircle.h:503
Belle2::TrackFindingCDC::Vector2D::unnormalizedParallelComp
double unnormalizedParallelComp(const Vector2D &relativTo) const
Same as parallelComp() but assumes the given vector to be of unit length.
Definition: Vector2D.h:439
Belle2::TrackFindingCDC::GeneralizedCircle::curvature
double curvature() const
Gives the signed curvature of the generalized circle.
Definition: GeneralizedCircle.h:590
Belle2::TrackFindingCDC::GeneralizedCircle::center
Vector2D center() const
Gives the center of the circle. If it was a line both components will be infinity.
Definition: GeneralizedCircle.h:605
Belle2::TrackFindingCDC::GeneralizedCircle::chooseNextForwardOf
Vector2D chooseNextForwardOf(const Vector2D &start, const Vector2D &end1, const Vector2D &end2) const
Returns the end point which is first reached if one follows the forward direction of the circle start...
Definition: GeneralizedCircle.cc:177
Belle2::TrackFindingCDC::NRotation::ERotation
ERotation
Enumeration to represent the distinct possibilities of the right left passage information.
Definition: ERotation.h:35
Belle2::TrackFindingCDC::GeneralizedCircle::fromCenterAndRadius
static GeneralizedCircle fromCenterAndRadius(const Vector2D &center, double absRadius, ERotation orientation=ERotation::c_CounterClockwise)
Constructor from center, radius and a optional orientation.
Definition: GeneralizedCircle.cc:69
Belle2::TrackFindingCDC::Vector2D::x
double x() const
Getter for the x coordinate.
Definition: Vector2D.h:609
Belle2::TrackFindingCDC::Line2D
A two dimensional normal line.
Definition: Line2D.h:47
Belle2::TrackFindingCDC::GeneralizedCircle::atCylindricalR
std::pair< Belle2::TrackFindingCDC::Vector2D, Belle2::TrackFindingCDC::Vector2D > atCylindricalR(double cylindricalR) const
Calculates the two points with the given cylindrical radius on the generalised circle.
Definition: GeneralizedCircle.cc:211
Belle2::TrackFindingCDC::Vector2D::norm
double norm() const
Calculates the length of the vector.
Definition: Vector2D.h:189
Belle2::TrackFindingCDC::GeneralizedCircle::n0
double n0() const
Getter for the first circle parameter.
Definition: GeneralizedCircle.h:279
Belle2::TrackFindingCDC::GeneralizedCircle::normalize
void normalize()
Normalizes the circle parameters.
Definition: GeneralizedCircle.h:262
Belle2::TrackFindingCDC::GeneralizedCircle::isLine
bool isLine() const
Indicates if the generalized circle is actually a line.
Definition: GeneralizedCircle.h:566
Belle2::TrackFindingCDC::GeneralizedCircle::closest
Vector2D closest(const Vector2D &point) const
Closest approach on the circle to the point.
Definition: GeneralizedCircle.cc:118
Belle2::TrackFindingCDC::GeneralizedCircle::setN1
void setN1(const double n1)
Setter for second circle parameter.
Definition: GeneralizedCircle.h:122
Belle2::TrackFindingCDC::GeneralizedCircle::n12
const Vector2D & n12() const
Getter for the second and third circle parameter which natuarally from a vector.
Definition: GeneralizedCircle.h:297
Belle2::TrackFindingCDC::GeneralizedCircle::setN2
void setN2(const double n2)
Setter for third circle parameter.
Definition: GeneralizedCircle.h:132
Belle2::TrackFindingCDC::Vector2D::compose
static Vector2D compose(const Vector2D &coordinateVec, const double parallelCoor, const double orthoCoor)
Constructs a vector from a unit coordinate system vector and the coordinates in that system.
Definition: Vector2D.h:85
Belle2::TrackFindingCDC::GeneralizedCircle::setPerigeeParameters
void setPerigeeParameters(double curvature, const Vector2D &tangential, double impact)
Setter for the perigee parameters.
Belle2::TrackFindingCDC::Vector2D::unnormalizedOrthogonalComp
double unnormalizedOrthogonalComp(const Vector2D &relativTo) const
Same as orthogonalComp() but assumes the given vector to be of unit length.
Definition: Vector2D.h:460
Belle2::TrackFindingCDC::GeneralizedCircle::absRadius
double absRadius() const
Gives the signed radius of the circle. If it was a line this will be infinity.
Definition: GeneralizedCircle.h:584
Belle2::TrackFindingCDC::GeneralizedCircle::arcLengthBetween
double arcLengthBetween(const Vector2D &from, const Vector2D &to) const
Calculates the arc length between two points of closest approach on the circle.
Definition: GeneralizedCircle.cc:246