|
|
Go to the documentation of this file.
16 inv = 1.0 / initialP4.mass();
17 for (
int i = 0;
i < 4;
i++) {
18 covariance(3,
i) *= inv;
20 covariance(3, 3) *= inv;
24 inv = 1.0 / initialP4.energy();
25 for (
int i = 0;
i < 4;
i++) {
26 covariance(3,
i) *= inv;
28 covariance(3, 3) *= inv;
52 return sqrt(covariance(0, 0));
55 return sqrt(covariance(0, 0)) * (
p4.P2());
65 <<
"getResolP not yet implemented for parametrization " <<
parametrization;
76 double pti2 = 1.0 / (
p4.Perp2());
77 return sqrt((covariance(0, 0) *
p4.Px() *
p4.Px() + covariance(1, 1) *
p4.Py() *
p4.Py() +
78 2 * covariance(0, 1) *
p4.Px() *
p4.Py()) *
86 double a =
sin(
p4.Theta());
88 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
94 double a = -(
p *
p) *
sin(
p4.Theta());
96 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
101 return sqrt(covariance(0, 0));
106 <<
"getResolPt not yet implemented for parametrization " <<
parametrization;
118 return 1.0 /
p4.P2() *
sqrt(covariance(0, 0));
121 return sqrt(covariance(0, 0));
133 <<
"getResolPInv not yet implemented for parametrization " <<
parametrization;
145 return sqrt(covariance(0, 0));
156 derivs[0] *= -(
p *
p);
167 double b = -
p4.Pt() *
sin(
p4.Phi());
168 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(2, 0) +
b *
b * covariance(2, 2));
175 <<
"getResolPx not yet implemented for parametrization " <<
parametrization;
186 return sqrt(covariance(1, 1));
197 derivs[0] *= -(
p *
p);
209 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(2, 0) +
b *
b * covariance(2, 2));
216 <<
"getResolPy not yet implemented for parametrization " <<
parametrization;
227 return sqrt(covariance(2, 2));
233 double a =
cos(
p4.Theta());
234 double b = -
p4.P() *
sin(
p4.Theta());
235 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(1, 0) +
b *
b * covariance(1, 1));
240 double a = -
p *
p *
cos(
p4.Theta());
241 double b = -
p *
sin(
p4.Theta());
242 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(1, 0) +
b *
b * covariance(1, 1));
249 double b = -
p4.Pt() / (
s *
s);
250 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(1, 0) +
b *
b * covariance(1, 1));
254 double a = sinh(
p4.Eta());
255 double b =
p4.Et() * cosh(
p4.Eta());
256 return sqrt(
a *
a * covariance(0, 0) + 2 *
a *
b * covariance(1, 0) +
b *
b * covariance(1, 1));
263 <<
"getResolPz not yet implemented for parametrization " <<
parametrization;
274 return sqrt(covariance(3, 3));
278 double a = 1.0 /
sin(
p4.Theta());
279 double b = -
a *
a *
p4.Et() *
cos(
p4.Theta());
280 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
284 double th =
p4.Theta();
285 double a = 1.0 /
sin(th);
286 double b =
a *
p4.Et() *
cos(th);
287 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
293 return sqrt(ROOT::Math::Similarity(xoE, covariance));
298 return sqrt(ROOT::Math::Similarity(xoE, covariance));
302 double einv = 1.0 /
p4.E();
303 double a =
p4.P() * einv;
304 double b =
p4.M() * einv;
305 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(3, 3) + 2 *
a *
b * covariance(0, 3));
309 return p4.P() /
p4.E() *
sqrt(covariance(0, 0));
315 return p *
p *
p /
p4.E() *
sqrt(covariance(0, 0));
322 <<
"getResolE not yet implemented for parametrization " <<
parametrization;
333 double pt2 =
p4.Perp2();
337 derivs *= (1.0 /
p4.Et());
338 derivs[0] *= pz2 * e2OverP4;
339 derivs[1] *= pz2 * e2OverP4;
340 derivs[2] *= -
pt2 * e2OverP4;
341 derivs[3] *=
pt2 /
p2;
342 return sqrt(ROOT::Math::Similarity(derivs, covariance));
346 double st =
sin(
p4.Theta()), ct =
cos(
p4.Theta());
348 2 * st * ct *
p4.E() * covariance(1, 3));
353 return sqrt(covariance(0, 0));
358 double pt2 =
p4.Perp2();
360 double e2 =
p2 +
p4.M2();
370 return sqrt(ROOT::Math::Similarity(derivs, covariance));
373 return sqrt(ROOT::Math::Similarity(derivs, covariance));
381 return sqrt(ROOT::Math::Similarity(derivs, covariance));
387 double a =
p4.P() *
s /
e;
389 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
394 double p =
p4.P(),
e =
p4.E();
395 double a = (-
p *
p *
p /
e) *
s;
397 return sqrt(
a *
a * covariance(0, 0) +
b *
b * covariance(1, 1) + 2 *
a *
b * covariance(0, 1));
404 <<
"getResolEt not yet implemented for parametrization " <<
parametrization;
422 return sqrt(covariance(3, 3));
425 double dMdE =
p4.E() /
p4.M(), dMdP = -
p4.P() /
p4.M();
426 return sqrt(dMdP * dMdP * covariance(0, 0) + 2 * dMdP * dMdE * covariance(0, 3) + dMdE * dMdE * covariance(3, 3));
430 derivs *= 1.0 /
p4.M();
431 return sqrt(ROOT::Math::Similarity(derivs, covariance));
434 <<
"getResolM not yet implemented for parametrization " <<
parametrization;
439 <<
"getResolM not yet implemented for parametrization " <<
parametrization;
452 return -2.0 / (
e + 1.0 /
e);
471 return sqrt(covariance(1, 1));
476 <<
"getResolEta not yet implemented for parametrization " <<
parametrization;
487 double pt2 =
p4.Perp2();
491 derivs[0] = -
p4.Px() *
p4.Pz() * dacos * pi3;
492 derivs[1] = -
p4.Py() *
p4.Pz() * dacos * pi3;
493 derivs[2] =
pt2 * dacos * pi3;
501 return sqrt(covariance(1, 1));
508 <<
"getResolTheta not yet implemented for parametrization " <<
parametrization;
514 double pt2 =
p4.Perp2();
520 -2 *
p4.Px() *
p4.Py() * covariance(0, 1)) /
528 return sqrt(covariance(2, 2));
533 <<
"getResolPhi not yet implemented for parametrization " <<
parametrization;
ROOT::Math::SVector< double, 3 > AlgebraicVector3
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 getResolEt(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
Sin< T >::type sin(const T &t)
Cos< T >::type cos(const T &t)
double getResolTheta(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
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)
Geom::Theta< T > theta() const
parametrization
specify parametrization (see SWGuidePATKinematicResolutions for more details)
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 getResolPInv(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)
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > AlgebraicSymMatrix44
double getResolM(pat::CandKinResolution::Parametrization parametrization, const AlgebraicSymMatrix44 &covariance, const pat::CandKinResolution::LorentzVector &p4)
void rescaleForKinFitter(const pat::CandKinResolution::Parametrization parametrization, AlgebraicSymMatrix44 &covariance, const math::XYZTLorentzVector &initialP4)
ROOT::Math::SVector< double, 4 > AlgebraicVector4
double getResolPz(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 DetaDtheta(double theta)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Abs< T >::type abs(const T &t)
math::XYZTLorentzVector LorentzVector
double DthetaDeta(double eta)