6 #include <Math/VectorUtil.h>
14 for (
unsigned int i = 0;
i < gensize; ++
i) {
19 if (
abs(leptonId) != 11 &&
abs(leptonId) != 13 &&
abs(leptonId) != 15)
25 if (bosonId != 23 && bosonId != 24)
27 double bosonMass = boson->
mass();
28 double leptonMass = lepton.
mass();
29 double leptonEnergy = lepton.
energy();
30 double cosLeptonTheta =
cos(lepton.
theta());
31 double sinLeptonTheta =
sin(lepton.
theta());
32 double leptonPhi = lepton.
phi();
44 trueKey = otherleptonKey;
50 for (
unsigned int j = 0;
j < nDaughters; ++
j) {
52 if (photon->
pdgId() != 22)
54 double photonEnergy = photon->
energy();
55 double cosPhotonTheta =
cos(photon->
theta());
56 double sinPhotonTheta =
sin(photon->
theta());
57 double photonPhi = photon->
phi();
59 sinLeptonTheta * sinPhotonTheta *
cos(leptonPhi - photonPhi) + cosLeptonTheta * cosPhotonTheta;
63 double betaLepton =
sqrt(1 -
pow(leptonMass / leptonEnergy, 2));
64 double delta = -8 * photonEnergy * (1 - betaLepton * costheta) /
pow(bosonMass, 3) /
65 (1 -
pow(leptonMass / bosonMass, 2)) / (4 -
pow(leptonMass / bosonMass, 2)) * leptonEnergy *
66 (
pow(leptonMass, 2) / bosonMass + 2 * photonEnergy);
67 weight *= (1 +
delta);
82 const double alphapi = 1 / 137.036 /
M_PI;
83 const double mass_e = 0.0005;
84 const double mass_mu = 0.106;
85 const double mass_tau = 1.777;
86 const double mass_Z = 91.2;
88 pigaga += alphapi * (2 *
log(pt / mass_e) / 3. - 5. / 9.);
90 pigaga += alphapi * (2 *
log(pt / mass_mu) / 3. - 5. / 9.);
92 pigaga += alphapi * (2 *
log(pt / mass_tau) / 3. - 5. / 9.);
104 }
else if (pt < 2.0) {
108 }
else if (pt < 4.0) {
112 }
else if (pt < 10.0) {
116 }
else if (pt < mass_Z) {
120 }
else if (pt < 10000.) {
129 pigaga += A + B *
log(1. + C * pt * pt);
132 return 1. / (1. - pigaga);
virtual double energy() const =0
energy
static std::vector< std::string > checklist log
const Candidate * mother(size_type=0) const override
return mother at a given position, i = 0, ... numberOfMothers() - 1 (read only mode) ...
daughters::value_type daughterRef(size_type i) const
reference to daughter at given position
std::vector< reco::GenParticle > genParticles_
virtual double mass() const =0
mass
Sin< T >::type sin(const T &t)
size_t numberOfDaughters() const override
number of daughters
int status() const final
status word
size_t numberOfMothers() const override
number of mothers
int pdgId() const final
PDG identifier.
double theta() const final
momentum polar angle
virtual double theta() const =0
momentum polar angle
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
virtual int pdgId() const =0
PDG identifier.
double alphaRatio(double) const
double mass() const final
mass
double phi() const final
momentum azimuthal angle
Power< A, B >::type pow(const A &a, const B &b)
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
virtual double phi() const =0
momentum azimuthal angle
double energy() const final
energy