17                                          double shining_weight)
 
   18     : 
DecayAction({
p}, time), shining_weight_(shining_weight) {}
 
   23     throw std::runtime_error(
 
   24         "Error in DecayActionDilepton::sample_manybody_phasespace: Incorrrect " 
   25         "number of outgoing particles in Dalitz decay");
 
   28   int non_lepton_position = -1;
 
   29   for (
int i = 0; i < 3; ++i) {
 
   31       non_lepton_position = i;
 
   36   if (non_lepton_position == -1) {
 
   37     throw std::runtime_error(
 
   38         "Error in DecayActionDilepton::sample_3body_phasespace: No " 
   39         "non-leptonic outgoing particle in dilepton Dalitz decay found.");
 
   46   const double mass_l1 = l1.
type().
mass();  
 
   47   const double mass_l2 = l2.type().mass();  
 
   48   const double mass_nl = nl.
type().
mass();  
 
   53   const double dil_mass =
 
   55   const double delta_m = cms_energy - mass_nl - mass_l1 - mass_l2;
 
   58       cms_energy, mass_l1, dil_mass, mass_nl, &nl.
type(),
 
   68   const double dil_mom = 
pCM(cms_energy, dil_mass, mass_nl);
 
   74   FourVector dil_4mom(std::sqrt(dil_mass * dil_mass + dil_mom * dil_mom),
 
   79   const double mom_lep = 
pCM(dil_mass, mass_l1, mass_l2);
 
   85   l2.set_4momentum(mass_l2, -phitheta.
threevec() * mom_lep);
 
   90   l2.boost_momentum(-velocity_CM);
 
FourVector total_momentum_of_outgoing_particles() const
Calculate the total kinetic momentum of the outgoing particles.
 
ParticleList outgoing_particles_
Initially this stores only the PDG codes of final-state particles.
 
ParticleList incoming_particles_
List with data of incoming particles.
 
Angles provides a common interface for generating directions: i.e., two angles that should be interpr...
 
ThreeVector threevec() const
 
void distribute_isotropically()
Populate the object with a new direction.
 
void sample_manybody_phasespace() override
Generates momenta of outgoing dileptons (for Dalitz dilepton decays only).
 
double branching_
An additional branching factor that is multiplied with the shining weight.
 
DecayActionDilepton(const ParticleData &p, double time_of_execution, double shining_weight)
Construct a DecayActionDilepton from a particle p.
 
DecayAction is a special action which takes one single particle in the initial state and makes it dec...
 
DecayBranchList decay_channels_
List of possible decays.
 
The FourVector class holds relevant values in Minkowski spacetime with (+, −, −, −) metric signature.
 
double abs() const
calculate the lorentz invariant absolute value
 
ThreeVector velocity() const
Get the velocity (3-vector divided by zero component).
 
ParticleData contains the dynamic information of a certain particle.
 
void set_4momentum(const FourVector &momentum_vector)
Set the particle's 4-momentum directly.
 
const ParticleType & type() const
Get the type of the particle.
 
void boost_momentum(const ThreeVector &v)
Apply a Lorentz-boost to only the momentum.
 
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...
 
The ThreeVector class represents a physical three-vector  with the components .
 
T pCM(const T sqrts, const T mass_a, const T mass_b) noexcept