test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CandKinResolution.cc
Go to the documentation of this file.
4 
5 
7  parametrization_(Invalid),
8  covariances_(),
9  constraints_(),
10  covmatrix_()
11 {
12 }
13 
14 pat::CandKinResolution::CandKinResolution(Parametrization parametrization, const std::vector<Scalar> &covariances, const std::vector<Scalar> &constraints) :
15  parametrization_(parametrization),
16  covariances_(covariances),
17  constraints_(constraints),
18  covmatrix_()
19 {
20  fillMatrix();
21 }
22 
23 pat::CandKinResolution::CandKinResolution(Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const std::vector<Scalar> &constraints) :
24  parametrization_(parametrization),
25  covariances_(),
26  constraints_(constraints),
27  covmatrix_(covariance)
28 {
29  fillVector();
30  if (sizeof(double) != sizeof(Scalar)) { // should become boost::mpl::if_c
31  fillMatrix(); // forcing double => float => double conversion
32  }
33 }
34 
36 }
37 
39 {
40  return pat::helper::ResolutionHelper::getResolEta(parametrization_, covmatrix_, p4);
41 }
43 {
44  return pat::helper::ResolutionHelper::getResolTheta(parametrization_, covmatrix_, p4);
45 }
47 {
48  return pat::helper::ResolutionHelper::getResolPhi(parametrization_, covmatrix_, p4);
49 }
51 {
52  return pat::helper::ResolutionHelper::getResolE(parametrization_, covmatrix_, p4);
53 }
55 {
56  return pat::helper::ResolutionHelper::getResolEt(parametrization_, covmatrix_, p4);
57 }
59 {
60  return pat::helper::ResolutionHelper::getResolM(parametrization_, covmatrix_, p4);
61 }
63 {
64  return pat::helper::ResolutionHelper::getResolP(parametrization_, covmatrix_, p4);
65 }
67 {
68  return pat::helper::ResolutionHelper::getResolPt(parametrization_, covmatrix_, p4);
69 }
71 {
72  return pat::helper::ResolutionHelper::getResolPInv(parametrization_, covmatrix_, p4);
73 }
75 {
76  return pat::helper::ResolutionHelper::getResolPx(parametrization_, covmatrix_, p4);
77 }
79 {
80  return pat::helper::ResolutionHelper::getResolPy(parametrization_, covmatrix_, p4);
81 }
83 {
84  return pat::helper::ResolutionHelper::getResolPz(parametrization_, covmatrix_, p4);
85 }
86 
88  if (dimension() == 3) {
89  AlgebraicSymMatrix33 sub = covmatrix_.Sub<AlgebraicSymMatrix33>(0,0);
90  covariances_.insert(covariances_.end(), sub.begin(), sub.end());
91  } else {
92  covariances_.insert(covariances_.end(), covmatrix_.begin(), covmatrix_.end());
93  }
94 }
95 
97  const std::vector<Scalar>& covariances,
98  AlgebraicSymMatrix44& covmatrix) {
99  int dimension = dimensionFrom(parametrization);
100  if (dimension == 3) {
101  if (covariances.size() == 3) {
102  for (int i = 0; i < 3; ++i) covmatrix(i,i) = covariances[i];
103  } else {
104  covmatrix.Place_at(AlgebraicSymMatrix33(covariances.begin(), covariances.end()), 0, 0);
105  }
106  } else if (dimension == 4) {
107  if (covariances.size() == 4) {
108  for (int i = 0; i < 4; ++i) covmatrix(i,i) = covariances[i];
109  } else {
110  covmatrix = AlgebraicSymMatrix44(covariances.begin(), covariances.end());
111  }
112  }
113 }
114 
115 
117  fillMatrixFrom(parametrization_, covariances_, covmatrix_);
118 }
double getResolEt(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
int i
Definition: DBlmapReader.cc:9
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)
double getResolPx(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
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)
double getResolE(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
double resolPz(const LorentzVector &p4) const
Resolution on pz, given the 4-momentum of the associated Candidate.
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
ROOT::Math::SMatrix< double, 3, 3, ROOT::Math::MatRepSym< double, 3 > > AlgebraicSymMatrix33
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.
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.
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.
uint32_t dimension(pat::CandKinResolution::Parametrization parametrization)
Returns the number of free parameters in a parametrization (3 or 4)
double resolTheta(const LorentzVector &p4) const
Resolution on theta, given the 4-momentum of the associated Candidate.