ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
FourMom
src
EigenP4JacobianEEtaPhiM2PxPyPzE.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
FourMom/EigenP4JacobianEEtaPhiM2PxPyPzE.h
"
6
7
#include <cmath>
8
#include <algorithm>
9
10
EigenP4JacobianEEtaPhiM2PxPyPzE::EigenP4JacobianEEtaPhiM2PxPyPzE
(
double
E,
11
double
eta
,
12
double
phi
,
13
double
M) :
14
AmgMatrix
(4,4)()
15
{
16
double
t = std::exp(-
eta
);
// == tg(theta/2)
17
double
P
= std::sqrt( std::max( 0., E*E - M*M));
18
double
u = 1+t*t;
19
double
cosTheta = (1-t*t)/u;
20
double
sinTheta = 2*t/u;
21
double
sinPhi = std::sin(
phi
);
22
double
cosPhi = std::cos(
phi
);
23
double
pt =
P
* sinTheta;
24
25
this->setZero();
26
27
(*this)(0,0) = E/
P
* sinTheta*cosPhi;
// dpx/dE
28
(*this)(1,0) = E/
P
* sinTheta*sinPhi;
// dpy/dE
29
(*this)(2,0) = E/
P
* cosTheta;
// dpz/dE
30
(*this)(3,0) = 1;
// dE/dE
31
32
(*this)(0,1) = -
P
* cosPhi * cosTheta*sinTheta;
// dpx/deta
33
(*this)(1,1) = -
P
* sinPhi * cosTheta*sinTheta;
// dpy/deta
34
(*this)(2,1) =
P
* sinTheta*sinTheta;
// dpz/deta;
35
36
(*this)(0,2) = -pt * sinPhi;
// dpx/dphi
37
(*this)(1,2) = pt * cosPhi;
// dpy/dphi
38
39
(*this)(0,3) = -M/
P
* sinTheta*cosPhi;
// dpx/dM
40
(*this)(1,3) = -M/
P
* sinTheta*sinPhi;
// dpy/dM
41
(*this)(2,3) = -M/
P
* cosTheta;
// dpz/dM
42
}
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
EigenP4JacobianEEtaPhiM2PxPyPzE.h
AmgMatrix
#define AmgMatrix(rows, cols)
Definition
EventPrimitives.h:49
P
static Double_t P(Double_t *tt, Double_t *par)
Definition
LArPhysWaveHECTool.cxx:280
EigenP4JacobianEEtaPhiM2PxPyPzE::EigenP4JacobianEEtaPhiM2PxPyPzE
EigenP4JacobianEEtaPhiM2PxPyPzE(double E, double eta, double phi, double M)
Definition
EigenP4JacobianEEtaPhiM2PxPyPzE.cxx:10
Generated on
for ATLAS Offline Software by
1.17.0