ThePEG 2.3.0
|
UtilityBase is a base class implementing a number of static utility functions. More...
#include <UtilityBase.h>
Static Public Member Functions | |
template<typename Cont > | |
static LorentzMomentum | sumMomentum (const Cont &c) |
Sums the four-momentum of given container. | |
template<typename Iterator > | |
static LorentzMomentum | sumMomentum (Iterator first, Iterator last) |
Sums the four-momentum of the entries between first and last. | |
template<typename Iterator > | |
static void | transform (Iterator first, Iterator last, const LorentzRotation &boost) |
Transform the entries between first and last. | |
template<typename Cont > | |
static void | transform (Cont &cont, const LorentzRotation &boost) |
Transform the entries in a container cont. | |
template<typename PType > | |
static LorentzRotation | boostToCM (const pair< PType, PType > &pp) |
Boost the two objects in the pair to their CM system. | |
template<typename PType > | |
static LorentzRotation | boostToCM (const Triplet< PType, PType, PType > &pt) |
Boost the three objects in the Triplet to their CM system. | |
template<typename PType > | |
static LorentzRotation | getBoostToCM (const pair< PType, PType > &pp) |
Obtain the LorentzRotation needed to boost the two objects in the pair to their CM system. | |
template<typename PType > | |
static LorentzRotation | getBoostToCM (const Triplet< PType, PType, PType > &pt) |
Obtain the LorentzRotation needed to boost the three objects in the Triplet to their CM system. | |
template<typename PType > | |
static LorentzRotation | getBoostFromCM (const pair< PType, PType > &pp) |
Get the inverse boost as compared to getBoostToCM. | |
template<typename PType > | |
static LorentzRotation | getBoostFromCM (const Triplet< PType, PType, PType > &pt) |
Get the inverse boost as compared to getBoostToCM. | |
template<typename Iterator > | |
static LorentzRotation | boostToCM (Iterator first, Iterator last) |
Boost the entries between fisrt and last into their CM system. | |
template<typename Iterator > | |
static LorentzRotation | boostToCM (Iterator first, Iterator last, Iterator zAxis) |
Boost the entries between fisrt and last into their CM system. | |
template<typename Iterator > | |
static LorentzRotation | boostToCM (Iterator first, Iterator last, Iterator zAxis, Iterator xzPlane) |
Boost the entries between fisrt and last into their CM system. | |
template<typename PType > | |
static void | setMomentum (PType &p, const Momentum3 &q) |
Rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q. | |
template<typename PType > | |
static void | setMomentumFromCMS (PType &p, const Momentum3 &q) |
Boost p along the z-axis and rotate it so that, if it was previously at rest, it ends up with momentum q. | |
template<typename Iter > | |
static void | setMomentum (Iter first, Iter last, const Momentum3 &q) |
Rotate the range of particles so their sum is along z-axis and boost them to their CMS, then boost them along the z-axis and rotate them so that they end up with total momentum q. | |
template<typename Iter > | |
static void | setMomentum (Iter first, Iter last, const Momentum3 &q, double eps) |
Rotate the range of particles so their sum is along z-axis then boost them along the z-axis and rotate them so that they end up with total momentum q. | |
template<typename Iter > | |
static void | setMomentumFromCMS (Iter first, Iter last, Energy2 m2, const Momentum3 &q) |
Boost the range of particles along the z-axis and rotate them so that, if they were previously in their rest frame, they end up with total momentum q. | |
template<typename PType > | |
static LorentzRotation | transformToMomentum (const PType &p, const Momentum3 &q) |
Return the transformation needed to rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q. | |
template<typename PType > | |
static LorentzRotation | transformToMomentum (const PType &p, const LorentzMomentum &q) |
Return the transformation needed to rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q. | |
template<typename PType > | |
static LorentzRotation | getTransformToMomentum (const PType &p, const LorentzMomentum &q, const LorentzMomentum &k) |
Return a transformation appropriate for transforming p to have the momentum q. | |
template<typename PType > | |
static LorentzRotation | getTransformToMomentum (const PType &p, const Momentum3 &q, const LorentzMomentum &k) |
Return a transformation appropriate for transforming p to have the momentum q. | |
template<typename LV > | |
static LorentzRotation | transformFromCMS (const LV &p) |
Create a rotation corresponding to transforming p to its current value from its CMS by first boosting along the z-axis and then rotating. | |
template<typename LV > | |
static LorentzRotation | transformFromCMS (const LV &sum, LV zAxis) |
Create a rotation corresponding to transforming sum to its current value from its CMS, with zAxis along the z-axis in that CMS frame. | |
template<typename LV > | |
static LorentzRotation | transformFromCMS (const LV &sum, const LV &zAxis, LV xyPlane) |
Create a rotation corresponding to transforming sum to its current value from its CMS, with zAxis along the z-axis and xyPlane in the x-y plane in that CMS frame. | |
template<typename LV > | |
static LorentzRotation | transformToCMS (const LV &sum, LV zAxis) |
Create a rotation which would transform sum to its CMS frame with zAxis along the z-axis in that frame. | |
template<typename LV > | |
static LorentzRotation | transformToCMS (const LV &p) |
Create a rotation which would transform sum to its CMS frame first rotating it to the z-axis and then boost it along the z-axis. | |
template<typename LV > | |
static LorentzRotation | transformToCMS (const LV &sum, const LV &zAxis, LV xyPlane) |
Create a rotation which would transform sum to its CMS frame with zAxis along the z-axis and xyPlane in the x-y plane in that frame. | |
template<typename Cont1 , typename Cont2 > | |
static void | add (Cont1 &c1, const Cont2 &c2) |
Add the elements in Cont2 to Cont1, appending them to the end if possible. | |
UtilityBase is a base class implementing a number of static utility functions.
It should be used as a base class to give acces to these functions to a class. A class can safely multiply inherit from this class as it only contains static functions.
Definition at line 24 of file UtilityBase.h.
|
static |
Boost the two objects in the pair to their CM system.
Also rotate so that the first is along the z-axis. The class PType
must have ParticleTraits<PType>::momentum(const PType&)
and ParticleTraits<PType>::transform(PType&, const
LorentzRotation&)
implemented correctly.
Referenced by boostToCM().
|
static |
Boost the three objects in the Triplet to their CM system.
Also rotate so that the first is along the z-axis and the second is in the x-z plane with positive x. The class PType
must have ParticleTraits<PType>::momentum(const PType&)
and ParticleTraits<PType>::transform(PType&, const
LorentzRotation&)
implemented correctly.
|
inlinestatic |
Boost the entries between fisrt and last into their CM system.
The class Iterator::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const
T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
Definition at line 142 of file UtilityBase.h.
References boostToCM().
|
inlinestatic |
Boost the entries between fisrt and last into their CM system.
If zAxis != last, also rotate the entries so that zAxis becomes paralell to the z-axis. The class Iterator::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const
T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
Definition at line 156 of file UtilityBase.h.
References boostToCM().
|
static |
Boost the entries between fisrt and last into their CM system.
If zAxis != last, also rotate the entries so that zAxis becomes paralell to the z-axis. Also, if xzPlane != last, rotate the entries so that xzPlane is placed in the xz-plane. The class Iterator::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const
T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
|
static |
Obtain the LorentzRotation needed to boost the two objects in the pair to their CM system.
Also rotate the LorentzRotation so that the first is along the z-axis. The class PType
must have ParticleTraits<PType>::momentum(const PType&)
implemented correctly.
Referenced by getTransformToMomentum().
|
static |
Obtain the LorentzRotation needed to boost the three objects in the Triplet to their CM system.
Also rotate the LorentzRotation so that the first is along the z-axis and the secons i in the x-z plane with positive x. The class PType
must have ParticleTraits<PType>::momentum(const
PType&)
implemented correctly.
|
inlinestatic |
Return a transformation appropriate for transforming p to have the momentum q.
The transformation is done so that the auxiliary vector k is left unchanged.
Definition at line 281 of file UtilityBase.h.
References getBoostFromCM(), and getBoostToCM().
Referenced by getTransformToMomentum().
|
inlinestatic |
Return a transformation appropriate for transforming p to have the momentum q.
The transformation is done so that the auxiliary vector k is left unchanged.
Definition at line 296 of file UtilityBase.h.
References getTransformToMomentum(), and ThePEG::ThreeVector< Value >::mag2().
|
static |
Rotate the range of particles so their sum is along z-axis and boost them to their CMS, then boost them along the z-axis and rotate them so that they end up with total momentum q.
The class Iter::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
|
static |
Rotate the range of particles so their sum is along z-axis then boost them along the z-axis and rotate them so that they end up with total momentum q.
If a single boost does not succeed to obtain the required precision within eps times the total energy, the boost is redone. The class Iter::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
|
static |
Rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q.
If p is massless - simply set its momentum. The class PType
must have ParticleTraits<PType>::momentum(const PType&)
implemented correctly.
|
static |
Boost the range of particles along the z-axis and rotate them so that, if they were previously in their rest frame, they end up with total momentum q.
The class Iter::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const T&)
and ParticleTraits<T>::transform(T&, const
LorentzRotation&)
are implemented correctly.
first | iterator pointing to the first particle in the range. |
last | iterator indicating the end of the range. |
m2 | the invariant mass squared of the particles. |
q | final summed momentum of the particles. |
|
static |
Boost p along the z-axis and rotate it so that, if it was previously at rest, it ends up with momentum q.
If p is massless
PType
must have ParticleTraits<PType>::momentum(const PType&)
implemented correctly.
|
inlinestatic |
Sums the four-momentum of given container.
The class Cont::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const T&)
is implemented correctly.
Definition at line 33 of file UtilityBase.h.
References sumMomentum().
Referenced by sumMomentum().
|
inlinestatic |
Sums the four-momentum of the entries between first and last.
The class Iterator::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const
T&)
is implemented correctly.
Definition at line 44 of file UtilityBase.h.
|
inlinestatic |
Transform the entries in a container cont.
The class Cont::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const T&)
is implemented correctly.
Definition at line 75 of file UtilityBase.h.
References transform().
|
inlinestatic |
Transform the entries between first and last.
The class Iterator::value_type
must be of a type T
for which ParticleTraits<T>::momentum(const
T&)
is implemented correctly.
Definition at line 60 of file UtilityBase.h.
Referenced by transform().
|
static |
Create a rotation corresponding to transforming p to its current value from its CMS by first boosting along the z-axis and then rotating.
The class LV
must have methods rho()
and e()
.
Referenced by transformToMomentum().
|
static |
Create a rotation corresponding to transforming sum to its current value from its CMS, with zAxis along the z-axis and xyPlane in the x-y plane in that CMS frame.
The class LV
must have methods rho()
, phi()
theta()
and e()
.
|
static |
Create a rotation corresponding to transforming sum to its current value from its CMS, with zAxis along the z-axis in that CMS frame.
The class LV
must have methods rho()
, phi()
theta()
and e()
.
|
static |
Create a rotation which would transform sum to its CMS frame first rotating it to the z-axis and then boost it along the z-axis.
The class LV
must have methods rho()
, phi()
theta()
and e()
.
|
static |
Create a rotation which would transform sum to its CMS frame with zAxis along the z-axis and xyPlane in the x-y plane in that frame.
The class LV
must have methods rho()
, phi()
theta()
and e()
.
|
static |
Create a rotation which would transform sum to its CMS frame with zAxis along the z-axis in that frame.
The class LV
must have methods rho()
, phi()
theta()
and e()
.
Referenced by transformToMomentum().
|
inlinestatic |
Return the transformation needed to rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q.
The class PType
must have ParticleTraits<PType>::momentum(const
PType&)
implemented correctly. Warning This function only works properly if p has a well defined direction in both polar and azimuth angles.
Definition at line 270 of file UtilityBase.h.
References transformFromCMS(), and transformToCMS().
|
inlinestatic |
Return the transformation needed to rotate p to the z-axis and boost it to its CMS, then boost it along the z-axis and rotate it so that it ends up with momentum q.
The class PType
must have ParticleTraits<PType>::momentum(const PType&)
implemented correctly. Warning This function only works properly if p has a well defined direction in both polar and azimuth angles.
Definition at line 252 of file UtilityBase.h.
References ThePEG::ThreeVector< Value >::mag2(), and transformToMomentum().
Referenced by transformToMomentum().