CMS 3D CMS Logo

CandKinResolution.cc
Go to the documentation of this file.
4 
5 pat::CandKinResolution::CandKinResolution() : parametrization_(Invalid), covariances_(), constraints_(), covmatrix_() {}
6 
8  const std::vector<Scalar> &covariances,
9  const std::vector<Scalar> &constraints)
10  : parametrization_(parametrization), covariances_(covariances), constraints_(constraints), covmatrix_() {
11  fillMatrix();
12 }
13 
16  const std::vector<Scalar> &constraints)
17  : parametrization_(parametrization), covariances_(), constraints_(constraints), covmatrix_(covariance) {
18  fillVector();
19  if (sizeof(double) != sizeof(Scalar)) { // should become boost::mpl::if_c
20  fillMatrix(); // forcing double => float => double conversion
21  }
22 }
23 
25 
28 }
31 }
34 }
37 }
40 }
43 }
46 }
49 }
52 }
55 }
58 }
61 }
62 
64  if (dimension() == 3) {
66  covariances_.insert(covariances_.end(), sub.begin(), sub.end());
67  } else {
68  covariances_.insert(covariances_.end(), covmatrix_.begin(), covmatrix_.end());
69  }
70 }
71 
73  const std::vector<Scalar> &covariances,
74  AlgebraicSymMatrix44 &covmatrix) {
75  int dimension = dimensionFrom(parametrization);
76  if (dimension == 3) {
77  if (covariances.size() == 3) {
78  for (int i = 0; i < 3; ++i)
79  covmatrix(i, i) = covariances[i];
80  } else {
81  covmatrix.Place_at(AlgebraicSymMatrix33(covariances.begin(), covariances.end()), 0, 0);
82  }
83  } else if (dimension == 4) {
84  if (covariances.size() == 4) {
85  for (int i = 0; i < 4; ++i)
86  covmatrix(i, i) = covariances[i];
87  } else {
88  covmatrix = AlgebraicSymMatrix44(covariances.begin(), covariances.end());
89  }
90  }
91 }
92 
double getResolEt(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolPz(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double resolPhi(const LorentzVector &p4) const
Resolution on phi, given the 4-momentum of the associated Candidate.
double getResolPy(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolP(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
std::vector< Scalar > constraints_
Constraints.
double getResolPx(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
uint32_t dimension() const
Returns the number of free parameters in this parametrization.
double getResolPt(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolPhi(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolM(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolPInv(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
const AlgebraicSymMatrix44 & covariance() const
Returns the full covariance matrix.
double getResolE(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
Parametrization parametrization_
Parametrization code.
double resolPz(const LorentzVector &p4) const
Resolution on pz, given the 4-momentum of the associated Candidate.
static int dimensionFrom(Parametrization parametrization)
Parametrization parametrization() const
Return the code of the parametrization used in this object.
std::vector< Scalar > covariances_
Matrix, streamed as a vector.
double resolP(const LorentzVector &p4) const
Resolution on p, given the 4-momentum of the associated Candidate.
void fillVector()
Fill vectoor from matrix.
double resolPy(const LorentzVector &p4) const
Resolution on py, given the 4-momentum of the associated Candidate.
double p4[4]
Definition: TauolaWrapper.h:92
double resolEta(const LorentzVector &p4) const
Resolution on eta, given the 4-momentum of the associated Candidate.
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
const std::vector< Scalar > & constraints() const
The constraints associated with this parametrization.
double resolM(const LorentzVector &p4) const
double resolPInv(const LorentzVector &p4) const
Resolution on 1/p, given the 4-momentum of the associated Candidate.
double resolPx(const LorentzVector &p4) const
Resolution on px, given the 4-momentum of the associated Candidate.
static void fillMatrixFrom(Parametrization parametrization, const std::vector< Scalar > &covariances, AlgebraicSymMatrix44 &covmatrix)
math::XYZTLorentzVector LorentzVector
void fillMatrix()
Fill matrix from vector.
double resolE(const LorentzVector &p4) const
Resolution on energy, given the 4-momentum of the associated Candidate.
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
double getResolEta(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double getResolTheta(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double resolEt(const LorentzVector &p4) const
Resolution on et, given the 4-momentum of the associated Candidate.
double resolPt(const LorentzVector &p4) const
Resolution on pt, given the 4-momentum of the associated Candidate.
AlgebraicSymMatrix44 covmatrix_
Transient copy of the full 4x4 covariance matrix.
double resolTheta(const LorentzVector &p4) const
Resolution on theta, given the 4-momentum of the associated Candidate.