Belle II Software  release-05-01-25
UncertainPerigeeCircle.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2014 - 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 #pragma once
11 
12 #include <tracking/trackFindingCDC/geometry/PerigeeCircle.h>
13 #include <tracking/trackFindingCDC/geometry/PerigeeParameters.h>
14 
15 #include <cstddef>
16 #include <iosfwd>
17 
18 namespace Belle2 {
24  namespace TrackFindingCDC {
25  class GeneralizedCircle;
26  class Vector2D;
27 
31  class UncertainPerigeeCircle {
32 
33  public:
36  {
37  }
38 
44  UncertainPerigeeCircle(const double curvature,
45  const double phi0Vec,
46  const double impact,
47  const PerigeeCovariance& perigeeCovariance = PerigeeUtil::identity(),
48  const double chi2 = 0.0,
49  std::size_t ndf = 0)
50  : m_perigeeCircle(curvature, phi0Vec, impact)
53  , m_ndf(ndf)
54  {
55  }
56 
62  UncertainPerigeeCircle(const double curvature,
63  const Vector2D& phi0,
64  const double impact,
66  const double chi2 = 0.0,
67  std::size_t ndf = 0)
68  : m_perigeeCircle(curvature, phi0, impact)
71  , m_ndf(ndf)
72  {
73  }
74 
78  const double chi2 = 0.0,
79  std::size_t ndf = 0)
82  , m_chi2(chi2)
83  , m_ndf(ndf)
84  {
85  }
86 
88  explicit UncertainPerigeeCircle(const GeneralizedCircle& generalizedCircle,
90  const double chi2 = 0.0,
91  std::size_t ndf = 0)
92  : m_perigeeCircle(generalizedCircle)
94  , m_chi2(chi2)
95  , m_ndf(ndf)
96  {
97  }
98 
100  explicit UncertainPerigeeCircle(
101  const PerigeeParameters& parameters,
103  const double chi2 = 0.0,
104  std::size_t ndf = 0)
105  : m_perigeeCircle(parameters)
107  , m_chi2(chi2)
109  {
110  }
111 
114  static UncertainPerigeeCircle average(const UncertainPerigeeCircle& fromPerigeeCircle,
115  const UncertainPerigeeCircle& toPerigeeCircle);
116 
117  public:
127  const PerigeeCircle* operator->() const
128  {
129  return &m_perigeeCircle;
130  }
131 
133  operator const PerigeeCircle& () const
134  {
136  }
137 
139  const PerigeeCircle& perigeeCircle() const
140  {
142  }
143 
146  {
148  }
149 
150  public:
153  {
155  }
156 
158  const PerigeeCovariance& perigeeCovariance() const
159  {
161  }
162 
164  double covariance(const EPerigeeParameter& iRow, const EPerigeeParameter& iCol) const
165  {
166  return perigeeCovariance()(iRow, iCol);
167  }
168 
170  double variance(const EPerigeeParameter& i) const
171  {
172  return perigeeCovariance()(i, i);
173  }
174 
176  double chi2() const
177  {
178  return m_chi2;
179  }
180 
182  void setChi2(const double chi2)
183  {
185  }
186 
188  std::size_t ndf() const
189  {
190  return m_ndf;
191  }
192 
194  void setNDF(std::size_t ndf)
195  {
197  }
198 
200  void invalidate()
201  {
204  m_chi2 = 0.0;
205  }
206 
207  public:
209  void reverse()
210  {
213  }
214 
217  {
220  chi2(),
221  ndf());
222  }
223 
224  public:
230  void passiveMoveBy(const Vector2D& by)
231  {
232  // Move the covariance matrix first to have access to the original parameters
236  }
237 
244  {
246  return PerigeeUtil::transported(jacobian, perigeeCovariance());
247  }
248 
249  private:
252 
255 
257  double m_chi2 = 0.0;
258 
260  size_t m_ndf = 0.0;
261 
262  };
263 
265  std::ostream& operator<<(std::ostream& output, const UncertainPerigeeCircle& circle);
266  }
268 }
Belle2::TrackFindingCDC::UncertainPerigeeCircle::m_perigeeCircle
PerigeeCircle m_perigeeCircle
Memory for the underlying circle.
Definition: UncertainPerigeeCircle.h:259
Belle2::TrackFindingCDC::UncertainPerigeeCircle::setChi2
void setChi2(const double chi2)
Setter for the chi square value of the circle fit.
Definition: UncertainPerigeeCircle.h:190
Belle2::operator<<
std::ostream & operator<<(std::ostream &output, const IntervalOfValidity &iov)
Definition: IntervalOfValidity.cc:196
Belle2::TrackFindingCDC::NPerigeeParameterIndices::EPerigeeParameter
EPerigeeParameter
Enumeration to address the individual perigee parameters in a vector or matrix.
Definition: PerigeeParameters.h:34
Belle2::TrackFindingCDC::UncertainPerigeeCircle::perigeeCovariance
const PerigeeCovariance & perigeeCovariance() const
Getter for the whole covariance matrix of the perigee parameters.
Definition: UncertainPerigeeCircle.h:166
Belle2::TrackFindingCDC::Vector2D
A two dimensional vector which is equipped with functions for correct handeling of orientation relat...
Definition: Vector2D.h:37
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >::transport
static void transport(const JacobianMatrix &jacobian, CovarianceMatrix &cov)
Transport the covariance matrix inplace with the given jacobian matrix.
Definition: UncertainParameters.icc.h:34
Belle2::TrackFindingCDC::UncertainPerigeeCircle::m_perigeeCovariance
PerigeeCovariance m_perigeeCovariance
Memory for the 3x3 covariance matrix of the perigee parameters.
Definition: UncertainPerigeeCircle.h:262
Belle2::TrackFindingCDC::PerigeeCircle::perigeeParameters
PerigeeParameters perigeeParameters() const
Getter for the three perigee parameters in the order defined by EPerigeeParameter....
Definition: PerigeeCircle.h:450
Belle2::TrackFindingCDC::UncertainPerigeeCircle::ndf
std::size_t ndf() const
Getter for the number of degrees of freediom used in the circle fit.
Definition: UncertainPerigeeCircle.h:196
Belle2::TrackFindingCDC::UncertainPerigeeCircle::setPerigeeCovariance
void setPerigeeCovariance(const PerigeeCovariance &perigeeCovariance)
Setter for the whole covariance matrix of the perigee parameters.
Definition: UncertainPerigeeCircle.h:160
Belle2::TrackFindingCDC::PerigeeCircle::reversed
PerigeeCircle reversed() const
Returns a copy of the circle with opposite orientation.
Definition: PerigeeCircle.cc:136
Belle2::TrackFindingCDC::UncertainPerigeeCircle::covariance
double covariance(const EPerigeeParameter &iRow, const EPerigeeParameter &iCol) const
Getter for individual elements of the covariance matrix.
Definition: UncertainPerigeeCircle.h:172
Belle2::TrackFindingCDC::UncertainPerigeeCircle::passiveMovedCovarianceBy
PerigeeCovariance passiveMovedCovarianceBy(const Vector2D &by) const
Calculates the jacobian matrix that is needed for the translation of the parameter covariance for a p...
Definition: UncertainPerigeeCircle.h:251
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >::identity
static CovarianceMatrix identity()
Returns an identity matrix.
Definition: UncertainParameters.icc.h:65
Belle2::TrackFindingCDC::GeneralizedCircle
A generalized circle.
Definition: GeneralizedCircle.h:61
Belle2::TrackFindingCDC::UncertainPerigeeCircle::perigeeCircle
const PerigeeCircle & perigeeCircle() const
Getter for the underlying circle.
Definition: UncertainPerigeeCircle.h:147
Belle2::TrackFindingCDC::PerigeeCircle::reverse
void reverse()
Flips the orientation of the circle in place.
Definition: PerigeeCircle.cc:128
Belle2::TrackFindingCDC::PerigeeCircle::passiveMoveByJacobian
PerigeeJacobian passiveMoveByJacobian(const Vector2D &by) const
Computes the Jacobi matrix for a move of the coordinate system by the given vector.
Definition: PerigeeCircle.cc:185
Belle2::TrackFindingCDC::UncertainPerigeeCircle::operator->
const PerigeeCircle * operator->() const
Access to the constant interface of the underlying parameter line Allows the user of this "super" cla...
Definition: UncertainPerigeeCircle.h:135
Belle2::TrackFindingCDC::UncertainPerigeeCircle::passiveMoveBy
void passiveMoveBy(const Vector2D &by)
Moves the coordinate system by the vector by and calculates the new perigee and its covariance matrix...
Definition: UncertainPerigeeCircle.h:238
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >::transported
static CovarianceMatrix transported(const JacobianMatrix &jacobian, const CovarianceMatrix &cov)
Return a copy of the covariance matrix transported with the given jacobian matrix.
Definition: UncertainParameters.icc.h:41
Belle2::TrackFindingCDC::UncertainPerigeeCircle
Adds an uncertainty matrix to the circle in perigee parameterisation.
Definition: UncertainPerigeeCircle.h:39
Belle2::TrackFindingCDC::UncertainPerigeeCircle::chi2
double chi2() const
Getter for the chi square value of the circle fit.
Definition: UncertainPerigeeCircle.h:184
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::UncertainPerigeeCircle::reversed
UncertainPerigeeCircle reversed() const
Returns a copy of the circle with opposite orientation.
Definition: UncertainPerigeeCircle.h:224
Belle2::TrackFindingCDC::UncertainPerigeeCircle::reverse
void reverse()
Flips the orientation of the circle in place.
Definition: UncertainPerigeeCircle.h:217
Belle2::TrackFindingCDC::UncertainPerigeeCircle::setNDF
void setNDF(std::size_t ndf)
Setter for the number of degrees of freediom used in the circle fit.
Definition: UncertainPerigeeCircle.h:202
Belle2::TrackFindingCDC::UncertainPerigeeCircle::variance
double variance(const EPerigeeParameter &i) const
Getter for individual diagonal elements of the covariance matrix.
Definition: UncertainPerigeeCircle.h:178
Belle2::TrackFindingCDC::PerigeeCircle
Extension of the generalized circle also caching the perigee coordinates.
Definition: PerigeeCircle.h:46
Belle2::TrackFindingCDC::PerigeeCircle::passiveMoveBy
void passiveMoveBy(const Vector2D &by)
Moves the coordinates system by the given vector. Updates perigee parameters in place.
Definition: PerigeeCircle.cc:176
Belle2::TrackFindingCDC::UncertainPerigeeCircle::UncertainPerigeeCircle
UncertainPerigeeCircle()
Default constructor for ROOT compatibility.
Definition: UncertainPerigeeCircle.h:43
Belle2::TrackFindingCDC::UncertainPerigeeCircle::m_ndf
size_t m_ndf
Memory for the number of degrees of freedim of the fit of this circle.
Definition: UncertainPerigeeCircle.h:268
Belle2::TrackFindingCDC::UncertainPerigeeCircle::m_chi2
double m_chi2
Memory for the chi square value of the fit of this circle.
Definition: UncertainPerigeeCircle.h:265
Belle2::TrackFindingCDC::PlainMatrix
A matrix implementation to be used as an interface typ through out the track finder.
Definition: PlainMatrix.h:50
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >::reversed
static CovarianceMatrix reversed(const CovarianceMatrix &cov)
Return a copy of the reversed covariance matrix.
Definition: UncertainParameters.icc.h:59
Belle2::TrackFindingCDC::PerigeeCircle::invalidate
void invalidate()
Sets all circle parameters to zero.
Definition: PerigeeCircle.cc:162
Belle2::TrackFindingCDC::UncertainPerigeeCircle::perigeeParameters
PerigeeParameters perigeeParameters() const
Getter for the perigee parameters in the order defined by EPerigeeParameter.h.
Definition: UncertainPerigeeCircle.h:153
Belle2::TrackFindingCDC::UncertainPerigeeCircle::average
static UncertainPerigeeCircle average(const UncertainPerigeeCircle &fromPerigeeCircle, const UncertainPerigeeCircle &toPerigeeCircle)
Average the parameters of the two given perigee circles properly considering their covariance matrix.
Definition: UncertainPerigeeCircle.cc:21
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >::reverse
static void reverse(CovarianceMatrix &cov)
Reverse the covariance matrix inplace.
Definition: UncertainParameters.icc.h:53
Belle2::TrackFindingCDC::UncertainPerigeeCircle::invalidate
void invalidate()
Sets all circle parameters to zero including the covariance matrix.
Definition: UncertainPerigeeCircle.h:208