2#ifndef RIVET_MomentumSmearingFunctions_HH
3#define RIVET_MomentumSmearingFunctions_HH
5#include "Rivet/Math/Vector4.hh"
6#include "Rivet/Tools/Random.hh"
33 double operator () (
const FourMomentum& )
const {
return _x; }
46 const double mass = p.mass2() > 0 ? p.mass() : 0;
53 const double smeared_pt =
max(
randnorm(p.pT(), resolution), 0.);
54 const double mass = p.mass2() > 0 ? p.mass() : 0;
60 const double smeared_mass =
max(
randnorm(p.mass(), resolution), 0.);
80 double operator () (
const Vector3& )
const {
return _x; }
92 const double smeared_mod =
max(
randnorm(p.mod(), resolution), 0.);
93 return smeared_mod * p.unit();
Specialized version of the FourVector with momentum/energy functionality.
Definition Vector4.hh:316
static FourMomentum mkEtaPhiME(double eta, double phi, double mass, double E)
Make a vector from (eta,phi,energy) coordinates and the mass.
Definition Vector4.hh:759
static FourMomentum mkEtaPhiMPt(double eta, double phi, double mass, double pt)
Make a vector from (eta,phi,pT) coordinates and the mass.
Definition Vector4.hh:764
Three-dimensional specialisation of Vector.
Definition Vector3.hh:40
double mass(const FourMomentum &a, const FourMomentum &b)
Calculate mass of two 4-vectors.
Definition Vector4.hh:1463
std::function< double(const FourMomentum &)> P4EffFn
Typedef for FourMomentum efficiency functions/functors.
Definition MomentumSmearingFunctions.hh:21
double P4_EFF_ONE(const FourMomentum &)
Take a FourMomentum and return 1.
Definition MomentumSmearingFunctions.hh:28
FourMomentum P4_SMEAR_IDENTITY(const FourMomentum &p)
Take a FourMomentum and return it unmodified.
Definition MomentumSmearingFunctions.hh:39
FourMomentum P4_SMEAR_E_GAUSS(const FourMomentum &p, double resolution)
Definition MomentumSmearingFunctions.hh:45
Vector3 P3_SMEAR_PERFECT(const Vector3 &p)
Alias for P3_SMEAR_IDENTITY.
Definition MomentumSmearingFunctions.hh:88
FourMomentum P4_SMEAR_PERFECT(const FourMomentum &p)
Alias for P4_SMEAR_IDENTITY.
Definition MomentumSmearingFunctions.hh:41
Vector3 P3_SMEAR_IDENTITY(const Vector3 &p)
Take a Vector3 and return it unmodified.
Definition MomentumSmearingFunctions.hh:86
double P3_EFF_ZERO(const Vector3 &)
Take a Vector3 and return 0.
Definition MomentumSmearingFunctions.hh:72
FourMomentum P4_SMEAR_MASS_GAUSS(const FourMomentum &p, double resolution)
Smear a FourMomentum's mass using a Gaussian of absolute width resolution.
Definition MomentumSmearingFunctions.hh:59
std::function< FourMomentum(const FourMomentum &)> P4SmearFn
Typedef for FourMomentum smearing functions/functors.
Definition MomentumSmearingFunctions.hh:18
double P4_EFF_ZERO(const FourMomentum &)
Take a FourMomentum and return 0.
Definition MomentumSmearingFunctions.hh:25
Vector3 P3_SMEAR_LEN_GAUSS(const Vector3 &p, double resolution)
Smear a Vector3's length using a Gaussian of absolute width resolution.
Definition MomentumSmearingFunctions.hh:91
double P3_EFF_ONE(const Vector3 &)
Take a Vector3 and return 1.
Definition MomentumSmearingFunctions.hh:75
FourMomentum P4_SMEAR_PT_GAUSS(const FourMomentum &p, double resolution)
Smear a FourMomentum's transverse momentum using a Gaussian of absolute width resolution.
Definition MomentumSmearingFunctions.hh:52
Definition MC_CENT_PPB_Projections.hh:10
std::enable_if_t< std::is_arithmetic_v< N1 > &&std::is_arithmetic_v< N2 >, signed_if_mixed_t< N1, N2 > > max(N1 a, N2 b)
Get the maximum of two numbers.
Definition MathUtils.hh:115
double randnorm(double loc, double scale)
Return a random number sampled from a Gaussian/normal distribution.
Take a Vector3 and return a constant number.
Definition MomentumSmearingFunctions.hh:78
Take a FourMomentum and return a constant number.
Definition MomentumSmearingFunctions.hh:31