ATLAS Offline Software
Loading...
Searching...
No Matches
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
6
7#include <cmath>
8#include <algorithm>
9
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}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define AmgMatrix(rows, cols)
static Double_t P(Double_t *tt, Double_t *par)
EigenP4JacobianEEtaPhiM2PxPyPzE(double E, double eta, double phi, double M)