Belle II Software  release-05-01-25
UncertainHelix.cc
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 #include <tracking/trackFindingCDC/geometry/UncertainHelix.h>
11 
12 #include <tracking/trackFindingCDC/geometry/UncertainPerigeeCircle.h>
13 
14 #include <tracking/trackFindingCDC/geometry/Helix.h>
15 
16 #include <tracking/trackFindingCDC/geometry/HelixParameters.h>
17 #include <tracking/trackFindingCDC/geometry/PerigeeParameters.h>
18 #include <tracking/trackFindingCDC/geometry/SZParameters.h>
19 
20 #include <ostream>
21 
22 using namespace Belle2;
23 using namespace TrackFindingCDC;
24 
26  const UncertainHelix& toHelix)
27 {
28  HelixParameters fromPar = fromHelix.helixParameters();
29  HelixCovariance fromCov = fromHelix.helixCovariance();
30 
31  HelixParameters toPar = toHelix.helixParameters();
32  HelixCovariance toCov = toHelix.helixCovariance();
33 
34  HelixParameters avgPar;
35  HelixCovariance avgCov;
36 
37  double chi2 = HelixUtil::average(fromPar, fromCov, toPar, toCov, avgPar, avgCov);
38 
39  // Calculating 5 parameters from 10 input parameters. 5 NDF remaining.
40  size_t ndf = 5;
41 
42  return UncertainHelix(avgPar, avgCov, chi2, ndf);
43 }
44 
46  const PerigeeHelixAmbiguity& fromAmbiguity,
47  const UncertainHelix& toHelix)
48 {
49  PerigeeParameters fromPar = fromPerigeeCircle.perigeeParameters();
50  PerigeeCovariance fromCov = fromPerigeeCircle.perigeeCovariance();
51 
52  HelixParameters toPar = toHelix.helixParameters();
53  HelixCovariance toCov = toHelix.helixCovariance();
54 
55  HelixParameters avgPar;
56  HelixCovariance avgCov;
57 
58  double chi2 = HelixUtil::average(fromPar, fromCov, fromAmbiguity, toPar, toCov, avgPar, avgCov);
59 
60  // Calculating 5 parameters from 8 input parameters. 3 NDF remaining.
61  size_t ndf = 3;
62 
63  return UncertainHelix(avgPar, avgCov, chi2, ndf);
64 }
65 
67  const PerigeeHelixAmbiguity& fromAmbiguity,
68  const UncertainPerigeeCircle& toPerigeeCircle,
69  const PerigeeHelixAmbiguity& toAmbiguity,
70  const SZParameters& szParameters)
71 {
72  const PerigeeParameters& fromPar = fromPerigeeCircle.perigeeParameters();
73  const PerigeeCovariance& fromCov = fromPerigeeCircle.perigeeCovariance();
74 
75  const PerigeeParameters& toPar = toPerigeeCircle.perigeeParameters();
76  const PerigeeCovariance& toCov = toPerigeeCircle.perigeeCovariance();
77 
78  HelixParameters avgPar;
79  HelixCovariance avgCov;
80 
81  double chi2 = HelixUtil::average(fromPar,
82  fromCov,
83  fromAmbiguity,
84  toPar,
85  toCov,
86  toAmbiguity,
87  szParameters,
88  avgPar,
89  avgCov);
90 
91  // Calculating 5 parameters from 6 input parameters. 1 NDF remaining.
92  size_t ndf = 1;
93 
94  return UncertainHelix(avgPar, avgCov, chi2, ndf);
95 }
96 
97 std::ostream& TrackFindingCDC::operator<<(std::ostream& output, const UncertainHelix& uncertainHelix)
98 {
99  return output << "Uncertain" << uncertainHelix.helix();
100 }
Belle2::TrackFindingCDC::UncertainHelix::average
static UncertainHelix average(const UncertainHelix &fromHelix, const UncertainHelix &toHelix)
Construct the averages of the two given helices by properly considering their covariance matrix.
Definition: UncertainHelix.cc:25
Belle2::TrackFindingCDC::UncertainHelix::helixParameters
HelixParameters helixParameters() const
Getter for the perigee parameters in the order defined by EPerigeeParameter.h.
Definition: UncertainHelix.h:227
Belle2::operator<<
std::ostream & operator<<(std::ostream &output, const IntervalOfValidity &iov)
Definition: IntervalOfValidity.cc:196
Belle2::TrackFindingCDC::UncertainHelix::chi2
double chi2() const
Getter for the chi square value of the helix fit.
Definition: UncertainHelix.h:273
Belle2::TrackFindingCDC::UncertainPerigeeCircle::perigeeCovariance
const PerigeeCovariance & perigeeCovariance() const
Getter for the whole covariance matrix of the perigee parameters.
Definition: UncertainPerigeeCircle.h:166
Belle2::TrackFindingCDC::UncertainHelix::ndf
std::size_t ndf() const
Getter for the number of degrees of freediom used in the helix fit.
Definition: UncertainHelix.h:285
Belle2::TrackFindingCDC::UncertainHelix::helix
const Helix & helix() const
Getter for the underlying helix.
Definition: UncertainHelix.h:221
Belle2::TrackFindingCDC::UncertainHelix::helixCovariance
const HelixCovariance & helixCovariance() const
Getter for the whole covariance matrix of the perigee parameters.
Definition: UncertainHelix.h:255
Belle2::TrackFindingCDC::HelixUtil::average
static double average(const HelixUtil::ParameterVector &fromPar, const HelixUtil::CovarianceMatrix &fromCov, const HelixUtil::ParameterVector &toPar, const HelixUtil::CovarianceMatrix &toCov, HelixUtil::ParameterVector &avgPar, HelixUtil::CovarianceMatrix &avgCov)
Calculates the weighted average between two helix parameter sets with their respective covariance mat...
Belle2::TrackFindingCDC::UncertainPerigeeCircle
Adds an uncertainty matrix to the circle in perigee parameterisation.
Definition: UncertainPerigeeCircle.h:39
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::UncertainHelix::UncertainHelix
UncertainHelix()
Default constructor for ROOT compatibility.
Definition: UncertainHelix.h:48
Belle2::TrackFindingCDC::PlainMatrix
A matrix implementation to be used as an interface typ through out the track finder.
Definition: PlainMatrix.h:50
Belle2::TrackFindingCDC::UncertainHelix
A general helix class including a covariance matrix.
Definition: UncertainHelix.h:44
Belle2::TrackFindingCDC::UncertainPerigeeCircle::perigeeParameters
PerigeeParameters perigeeParameters() const
Getter for the perigee parameters in the order defined by EPerigeeParameter.h.
Definition: UncertainPerigeeCircle.h:153