18 double shining_weight)
23 int non_lepton_position = -1;
24 for (
int i = 0; i < 3; ++i) {
26 non_lepton_position = i;
31 if (non_lepton_position == -1) {
32 throw std::runtime_error(
33 "Error in DecayActionDilepton::sample_3body_phasespace.");
40 const double mass_l1 = l1.
type().
mass();
41 const double mass_l2 = l2.type().mass();
42 const double mass_nl = nl.
type().
mass();
47 const double dil_mass =
49 const double delta_m = cms_energy - mass_nl - mass_l1 - mass_l2;
52 cms_energy, mass_l1, dil_mass, mass_nl, &nl.
type(),
62 const double dil_mom =
pCM(cms_energy, dil_mass, mass_nl);
68 FourVector dil_4mom(std::sqrt(dil_mass * dil_mass + dil_mom * dil_mom),
73 const double mom_lep =
pCM(dil_mass, mass_l1, mass_l2);
79 l2.set_4momentum(mass_l2, -phitheta.
threevec() * mom_lep);
84 l2.boost_momentum(-velocity_CM);
The ThreeVector class represents a physical three-vector with the components .
double abs() const
calculate the lorentz invariant absolute value
DecayBranchList decay_channels_
List of possible decays.
FourVector total_momentum_of_outgoing_particles() const
Calculate the total kinetic momentum of the outgoing particles.
ThreeVector threevec() const
void sample_3body_phasespace() override
Sample the full 3-body phase-space (masses, momenta, angles) in the center-of-mass frame for the fina...
ParticleList outgoing_particles_
Initially this stores only the PDG codes of final-state particles.
const double shining_weight_
The shining weight is a weight you apply to every dilepton decay.
void set_4momentum(const FourVector &momentum_vector)
Set the particle's 4-momentum directly.
ParticleList incoming_particles_
List with data of incoming particles.
double branching_
An additional branching factor that is multiplied with the shining weight.
DecayAction is a special action which takes one single particle in the initial state and makes it dec...
const ParticleType & type() const
Get the type of the particle.
static double diff_width(double m_par, double m_l, double m_dil, double m_other, ParticleTypePtr other, ParticleTypePtr t)
Get the mass-differential width for a dilepton Dalitz decay, where is the invariant mass of the lep...
Angles provides a common interface for generating directions: i.e., two angles that should be interpr...
void distribute_isotropically()
Populate the object with a new direction.
T pCM(const T sqrts, const T mass_a, const T mass_b) noexcept
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
ParticleData contains the dynamic information of a certain particle.
void boost_momentum(const ThreeVector &v)
Apply a Lorentz-boost to only the momentum.
DecayActionDilepton(const ParticleData &p, double time_of_execution, double shining_weight)
Construct a DecayActionDilepton from a particle p.