Belle II Software  release-05-01-25
PerigeeParameters.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - 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/PerigeeParameters.h>
11 
12 #include <tracking/trackFindingCDC/geometry/UncertainParameters.icc.h>
13 
14 #include <tracking/trackFindingCDC/numerics/Angle.h>
15 
16 using namespace Belle2;
17 using namespace TrackFindingCDC;
18 
20 
22  const PerigeeCovariance& fromCov,
23  const PerigeeParameters& toPar,
24  const PerigeeCovariance& toCov,
25  PerigeeParameters& avgPar,
26  PerigeeCovariance& avgCov)
27 {
28  using namespace NPerigeeParameterIndices;
29  PerigeeParameters refPar = (fromPar + toPar) / 2.0;
30  refPar(c_Phi0) = AngleUtil::average(fromPar(c_Phi0), toPar(c_Phi0));
31 
32  PerigeeParameters relFromPar = fromPar - refPar;
33  AngleUtil::normalise(relFromPar(c_Phi0));
34 
35  PerigeeParameters relToPar = toPar - refPar;
36  AngleUtil::normalise(relToPar(c_Phi0));
37 
38  PerigeeParameters relAvgPar;
39 
40  double chi2 =
41  CovarianceMatrixUtil::average(relFromPar, fromCov, relToPar, toCov, relAvgPar, avgCov);
42 
43  avgPar = relAvgPar + refPar;
44  AngleUtil::normalise(avgPar(c_Phi0));
45 
46  return chi2;
47 }
Belle2::TrackFindingCDC::PerigeeUtil::average
static double average(const PerigeeUtil::ParameterVector &fromPar, const PerigeeUtil::CovarianceMatrix &fromCov, const PerigeeUtil::ParameterVector &toPar, const PerigeeUtil::CovarianceMatrix &toCov, PerigeeUtil::ParameterVector &avgPar, PerigeeUtil::CovarianceMatrix &avgCov)
Calculates the weighted average between two perigee parameter sets with their respective covariance m...
Definition: PerigeeParameters.cc:21
Belle2::TrackFindingCDC::CovarianceMatrixUtil::average
static double average(const ParameterVector< N > &par1, const CovarianceMatrix< N > &cov1, const ParameterVector< N > &par2, const CovarianceMatrix< N > &cov2, ParameterVector< N > &par, CovarianceMatrix< N > &cov)
Averages two parameter vectors taking into account their respective covariances.
Definition: CovarianceMatrixUtil.h:156
Belle2::TrackFindingCDC::AngleUtil::normalise
static void normalise(double &angle)
Normalise an angle inplace to lie in the range from [-pi, pi].
Definition: Angle.h:51
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::AngleUtil::average
static double average(const double angle1, double angle2)
Combines two angluar values to the one that lies half way between them on the short arc.
Definition: Angle.h:37
Belle2::TrackFindingCDC::UncertainParametersUtil< PerigeeUtil, EPerigeeParameter >
Belle2::TrackFindingCDC::PlainMatrix
A matrix implementation to be used as an interface typ through out the track finder.
Definition: PlainMatrix.h:50