thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
ThePEG::SimplePhaseSpace Namespace Reference

SimplePhaseSpace defines a set of static functions to be used for distributing momenta evenly in phase space. More...

Functions

template<typename PType >
void CMS (Energy2 s, PType &p1, PType &p2)
 Set two momenta in their center of mass system. More...
 
template<typename PType >
void CMS (PType &p1, PType &p2, Energy2 s, double cosTheta, double phi)
 Set two momenta in their center of mass system. More...
 
template<typename PType >
void CMS (PType &p1, PType &p2, Energy2 s, Energy2 t, double phi, const PType &p0)
 Set two momenta in their center of mass system. More...
 
template<typename PType >
void CMS (PType &p1, PType &p2, Energy2 s)
 Set two momenta in their center of mass system. More...
 
template<typename PPairType >
void CMS (const PPairType &p, Energy2 s)
 Set two momenta in their center of mass system. More...
 
template<typename PType >
void CMS (PType &p1, PType &p2, PType &p3, Energy2 s, double x1, double x3)
 Set three momenta in their center of mass system. More...
 
template<typename PType >
void CMS (PType &p1, PType &p2, PType &p3, Energy2 s, double x1, double x3, double phii=0.0, double theta=0.0, double phi=0.0)
 Set three momenta in their center of mass system. More...
 
Energy getMagnitude (Energy2 s, Energy m1, Energy m2)
 Calculate the absolute magnitude of the momenta of two particles with masses m1 and m2 when put in their CMS of total invariant mass squared s. More...
 
Momentum3 polar3Vector (Energy p, double costheta, double phi)
 Calculate the absolute magnitude of the momenta of two particles with masses m1 and m2 when put in their CMS of total invariant mass squared s. More...
 
vector< LorentzMomentumCMSn (Energy m0, const vector< Energy > &m)
 Get a number of randomly distributed momenta. More...
 
template<typename Container >
void CMSn (Container &particles, Energy m0)
 Set the momentum of a number of particles. More...
 

Detailed Description

SimplePhaseSpace defines a set of static functions to be used for distributing momenta evenly in phase space.

In most cases pointers and references to both particle and momentum objects can be used as arguments as long as the ParticleTraits class is specialized properly. When needed, random numbers are generated with the generator given by the static UseRandom class.

Function Documentation

◆ CMS() [1/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( Energy2  s,
PType &  p1,
PType &  p2 
)

Set two momenta in their center of mass system.

Their total invariant mass squared is given by s, and their direction is distributed isotropically.

Parameters
sthe total invariant mass squared.
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

Referenced by CMS().

◆ CMS() [2/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( PType &  p1,
PType &  p2,
Energy2  s,
double  cosTheta,
double  phi 
)

Set two momenta in their center of mass system.

Their total invariant mass squared is given by s, and their direction is given in terms of the polar and azimuth angle of the first momenta.

Parameters
sthe total invariant mass squared.
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
cosThetacosine of the azimuth angle of the first momentum.
phiazimuth angle of the first momentum.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ CMS() [3/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( PType &  p1,
PType &  p2,
Energy2  s,
Energy2  t,
double  phi,
const PType &  p0 
)

Set two momenta in their center of mass system.

Their total invariant mass squared is given by s. The helper momentum p0 is used so that afterwards $t=(p0-p1)^2$ and p1 has the azimuth angle phi around p0.

Parameters
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
sthe total invariant mass squared.
t$=(p0-p1)^2$.
phiazimuth angle of the first momentum around p0.
p0pointer or reference to an auxiliary momentum.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ CMS() [4/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( PType &  p1,
PType &  p2,
Energy2  s 
)

Set two momenta in their center of mass system.

Their total invariant mass squared is given by s. p1 will be along the z-axis.

Parameters
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
sthe total invariant mass squared.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ CMS() [5/7]

template<typename PPairType >
void ThePEG::SimplePhaseSpace::CMS ( const PPairType &  p,
Energy2  s 
)

Set two momenta in their center of mass system.

Their total invariant mass squared is given by s. The first will be along the z-axis.

Parameters
pa pair of pointers or references to the two momenta. Their invariant masses will be preserved.
sthe total invariant mass squared.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

Definition at line 113 of file SimplePhaseSpace.h.

References CMS(), and getMagnitude().

◆ CMS() [6/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( PType &  p1,
PType &  p2,
PType &  p3,
Energy2  s,
double  x1,
double  x3 
)

Set three momenta in their center of mass system.

Their total invariant mass squared is given by s. The energy fraction of particle p1(3) is x1(3) of the total energy and the angles of the system is distributed isotropically.

Parameters
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
p3pointer or reference to the second momentum. Its invariant mass will be preserved.
sthe total invariant mass squared.
x1the energy fraction $2e_1/\sqrt{s}$.
x3the energy fraction $2e_3/\sqrt{s}$.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ CMS() [7/7]

template<typename PType >
void ThePEG::SimplePhaseSpace::CMS ( PType &  p1,
PType &  p2,
PType &  p3,
Energy2  s,
double  x1,
double  x3,
double  phii = 0.0,
double  theta = 0.0,
double  phi = 0.0 
)

Set three momenta in their center of mass system.

Their total invariant mass squared is given by s. The energy fraction of particle p1(3) is x1(3) of the total energy. Particle p1 is initially placed along the z-axis and particle p2 is given azimuth angle phii. Then the system is then rotated with theta and phi respectively.

Parameters
p1pointer or reference to the first momentum. Its invariant mass will be preserved.
p2pointer or reference to the second momentum. Its invariant mass will be preserved.
p3pointer or reference to the second momentum. Its invariant mass will be preserved.
sthe total invariant mass squared.
x1the energy fraction $2e_1/\sqrt{s}$.
x3the energy fraction $2e_3/\sqrt{s}$.
phiithe azimuth angle of p2 around p1.
thetathe polar angle of p1.
phithe azimuth angle of p1.
Exceptions
ImpossibleKinematicsif the sum of the invariant masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ CMSn() [1/2]

vector<LorentzMomentum> ThePEG::SimplePhaseSpace::CMSn ( Energy  m0,
const vector< Energy > &  m 
)

Get a number of randomly distributed momenta.

Given a number specified invariant masses and a total invariant mass m0, return corresponding four-momenta randomly distributed according to phase space.

Parameters
m0the total invariant mass of the resulting momenta.
ma vector of invariant masses of the resulting momenta.
Returns
a vector of momenta with the given masses randomly distributed.
Exceptions
ImpossibleKinematicsif the sum of the masses was larger than the given invariant mass ( $\sqrt{s}$).

Referenced by polar3Vector().

◆ CMSn() [2/2]

template<typename Container >
void ThePEG::SimplePhaseSpace::CMSn ( Container &  particles,
Energy  m0 
)

Set the momentum of a number of particles.

Given a number of particles and a total invariant mass m0, distribute their four-momenta randomly according to phase space.

Parameters
particlesa container of particles or pointers to particles. The invariant mass of these particles will not be chaned.
m0the total invariant mass of the resulting momenta.
Exceptions
ImpossibleKinematicsif the sum of the masses was larger than the given invariant mass ( $\sqrt{s}$).

◆ getMagnitude()

Energy ThePEG::SimplePhaseSpace::getMagnitude ( Energy2  s,
Energy  m1,
Energy  m2 
)

Calculate the absolute magnitude of the momenta of two particles with masses m1 and m2 when put in their CMS of total invariant mass squared s.

Parameters
sthe total invariant mass squared.
m1the mass of particle 1.
m2the mass of particle 2.
Exceptions
ImpossibleKinematicsif the sum of the masses was larger than the given invariant mass ( $\sqrt{s}$).

Referenced by CMS().

◆ polar3Vector()

Momentum3 ThePEG::SimplePhaseSpace::polar3Vector ( Energy  p,
double  costheta,
double  phi 
)
inline

Calculate the absolute magnitude of the momenta of two particles with masses m1 and m2 when put in their CMS of total invariant mass squared s.

Parameters
sthe total invariant mass squared.
m1the mass of particle 1.
m2the mass of particle 2.
Returns
a negative value if the sum of the masses was larger than the given invariant mass ( $\sqrt{s}$). Return a three-vector given the absolute momentum, cos(theta) and phi.
Parameters
pthe magnitude of the momentum.
costhetathe cosine of the polar angle.
phithe azimuth angle.

Definition at line 197 of file SimplePhaseSpace.h.

References CMSn(), and ThePEG::sqr().