Belle II Software  release-08-01-10
UncertainParameters.icc.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #pragma once
9 
10 #include <tracking/trackFindingCDC/geometry/UncertainParameters.h>
11 
12 #include <tracking/trackFindingCDC/numerics/CovarianceMatrixUtil.h>
13 #include <tracking/trackFindingCDC/numerics/JacobianMatrixUtil.h>
14 #include <tracking/trackFindingCDC/numerics/ParameterVectorUtil.h>
15 
16 namespace Belle2 {
21  namespace TrackFindingCDC {
22 
23  template <class T, class AEParameters>
25  CovarianceMatrix& cov)
26  {
27  CovarianceMatrixUtil::transport(jacobian, cov);
28  }
29 
30  template <class T, class AEParameters>
32  const CovarianceMatrix& cov)
33  -> CovarianceMatrix {
34  return CovarianceMatrixUtil::transported(jacobian, cov);
35  }
36 
37  template <class T, class AEParameters>
39  return JacobianMatrixUtil::scale(T::reversalSigns());
40  }
41 
42  template <class T, class AEParameters>
44  {
45  return transport(reversalJacobian(), cov);
46  }
47 
48  template <class T, class AEParameters>
50  -> CovarianceMatrix {
51  return transported(reversalJacobian(), cov);
52  }
53 
54  template <class T, class AEParameters>
56  return CovarianceMatrixUtil::identity<c_N>();
57  }
58 
59  template <class T, class AEParameters>
60  template <class AParameterVector, int I>
61  AParameterVector
63  {
64  return ParameterVectorUtil::getSub<AParameterVector, I>(par);
65  }
66 
67  template <class T, class AEParameters>
68  template <class ACovarianceMatrix, int I>
69  ACovarianceMatrix
71  {
72  return CovarianceMatrixUtil::getSub<ACovarianceMatrix, I>(cov);
73  }
74 
75  template <class T, class AEParameters>
76  auto
78  -> CovarianceMatrix {
80  }
81 
82  template <class T, class AEParameters>
83  auto
85  -> PrecisionMatrix {
87  }
88 
89  template <class T, class AEParameters>
90  auto
92  -> CovarianceMatrix {
94  }
95 
96  template <class T, class AEParameters>
97  auto
99  -> PrecisionMatrix {
101  }
102  }
104 }
A matrix implementation to be used as an interface typ through out the track finder.
Definition: PlainMatrix.h:40
Abstract base class for different kinds of events.
static void transport(const JacobianMatrix< N, N > &jacobian, CovarianceMatrix< N > &cov)
Transport the covariance matrix inplace with the given jacobian matrix.
static CovarianceMatrix< M > transported(const JacobianMatrix< M, N > &jacobian, const CovarianceMatrix< N > &cov)
Return a copy of the covariance matrix transported with the given jacobian matrix.
static CovarianceMatrix< N > fromPrecision(const PrecisionMatrix< N > &prec)
Convert precision matrix to covariance matrix - allows for reduced rank.
static PrecisionMatrix< N > fullToPrecision(const CovarianceMatrix< N > &cov)
Convert precision matrix to covariance matrix - assumes full rank.
static CovarianceMatrix< N > fromFullPrecision(const PrecisionMatrix< N > &prec)
Convert covariance matrix to precision matrix - assumes full rank.
static PrecisionMatrix< N > toPrecision(const CovarianceMatrix< N > &cov)
Convert covariance matrix to precision matrix - allows for reduced rank.
static JacobianMatrix< N > scale(const ParameterVector< N > &scales)
Calculates the jacobian matrix for a scaling in each parameter.
static PrecisionMatrix precisionFromCovariance(const CovarianceMatrix &cov)
Convert the covariance matrix to the corresponding precision matrix.
static PrecisionMatrix precisionFromFullCovariance(const CovarianceMatrix &cov)
Convert the covariance matrix to the corresponding precision matrix.
static CovarianceMatrix transported(const JacobianMatrix &jacobian, const CovarianceMatrix &cov)
Return a copy of the covariance matrix transported with the given jacobian matrix.
static CovarianceMatrix covarianceFromPrecision(const PrecisionMatrix &prec)
Convert the precision matrix to the corresponding covariance matrix.
static void transport(const JacobianMatrix &jacobian, CovarianceMatrix &cov)
Transport the covariance matrix inplace with the given jacobian matrix.
static CovarianceMatrix identity()
Returns an identity matrix.
static AParameterVector getSubParameterVector(const ParameterVector &par)
Getter for a sub part of the covariance matrix.
static ACovarianceMatrix getSubCovarianceMatrix(const CovarianceMatrix &cov)
Getter for a sub part of the covariance matrix.
static JacobianMatrix reversalJacobian()
Jacobian matrix needed in the reversal operation of the parameter vector.
static void reverse(CovarianceMatrix &cov)
Reverse the covariance matrix inplace.
static CovarianceMatrix covarianceFromFullPrecision(const PrecisionMatrix &prec)
Convert the precision matrix to the corresponding covariance matrix.
static CovarianceMatrix reversed(const CovarianceMatrix &cov)
Return a copy of the reversed covariance matrix.