Herwig 7.3.0
|
This is the definition of the Sudakov form factor class. More...
#include <SudakovFormFactor.h>
Public Member Functions | |
SudakovFormFactor () | |
The default constructor. | |
virtual ShoKinPtr | generateNextTimeBranching (const Energy startingScale, const IdList &ids, const RhoDMatrix &rho, double enhance, double detuning) |
Members to generate the scale of the next branching. | |
virtual ShoKinPtr | generateNextDecayBranching (const Energy startingScale, const Energy stoppingScale, const Energy minmass, const IdList &ids, const RhoDMatrix &rho, double enhance, double detuning) |
Return the scale of the next space-like decay branching. | |
virtual ShoKinPtr | generateNextSpaceBranching (const Energy startingScale, const IdList &ids, double x, const RhoDMatrix &rho, double enhance, tcBeamPtr beam, double detuning) |
Return the scale of the next space-like branching. | |
virtual double | generatePhiForward (ShowerParticle &particle, const IdList &ids, ShoKinPtr kinematics, const RhoDMatrix &rho) |
Generate the azimuthal angle of the branching for forward evolution. | |
virtual double | generatePhiBackward (ShowerParticle &particle, const IdList &ids, ShoKinPtr kinematics, const RhoDMatrix &rho) |
Generate the azimuthal angle of the branching for backward evolution. | |
virtual double | generatePhiDecay (ShowerParticle &particle, const IdList &ids, ShoKinPtr kinematics, const RhoDMatrix &rho) |
Generate the azimuthal angle of the branching for ISR in decays. | |
tSplittingFnPtr | splittingFn () const |
Methods to provide public access to the private member variables. | |
tShowerAlphaPtr | alpha () const |
Return the pointer to the ShowerAlpha object. | |
ShowerInteraction | interactionType () const |
The type of interaction. | |
double | z () const |
Methods to access the kinematic variables for the branching. | |
double | phi () const |
The azimuthal angle. | |
Energy | pT () const |
The transverse momentum. | |
double | pdfMax () const |
Access the maximum weight for the PDF veto. | |
virtual Energy | calculateScale (double z, Energy pt, IdList ids, unsigned int iopt) |
Method to return the evolution scale given the transverse momentum, \(p_T\) and \(z\). | |
Public Member Functions inherited from ThePEG::Interfaced | |
virtual bool | defaultInit () |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
Public Member Functions inherited from ThePEG::InterfacedBase | |
string | fullName () const |
string | name () const |
string | path () const |
string | comment () const |
void | setup (istream &is) |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
virtual void | debugme () const |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
Public Member Functions inherited from ThePEG::Base | |
void | debug () const |
virtual void | debugme () const |
Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
CounterType | referenceCount () const |
Public Member Functions inherited from ThePEG::Named | |
Named (const string &newName=string()) | |
Named (const Named &)=default | |
const string & | name () const |
bool | operator== (const Named &other) const |
bool | operator< (const Named &other) const |
Friends | |
class | SplittingGenerator |
The SplittingGenerator is a friend to insert the particles in the branchings at initialisation. | |
Clone Methods. | |
SplittingFnPtr | splittingFn_ |
Pointer to the splitting function for this Sudakov form factor. | |
ShowerAlphaPtr | alpha_ |
Pointer to the coupling for this Sudakov form factor. | |
SudakovCutOffPtr | cutoff_ |
Pointer to the coupling for this Sudakov form factor. | |
double | pdfmax_ |
Maximum value of the PDF weight. | |
vector< IdList > | particles_ |
List of the particles this Sudakov is used for to aid in setting up interpolation tables if needed. | |
unsigned | pdffactor_ |
Option for the inclusion of a factor \(1/(1-z)\) in the PDF estimate. | |
double | z_ |
Member variables to keep the shower kinematics information generated by a call to generateNextTimeBranching or generateNextSpaceBranching. | |
double | phi_ |
The azimuthal angle. | |
Energy | pT_ |
The transverse momentum. | |
pair< double, double > | zlimits_ |
The limits of \(z\) in the splitting. | |
tcPDFPtr | pdf_ |
Stuff for the PDFs. | |
Energy | freeze_ |
Freezing scale. | |
Energy | q_ |
The evolution scale, \(\tilde{q}\). | |
IdList | ids_ |
The Ids of the particles in the current branching. | |
vector< Energy > | masses_ |
The masses of the particles in the current branching. | |
vector< Energy2 > | masssquared_ |
The mass squared of the particles in the current branching. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. | |
SudakovFormFactor & | operator= (const SudakovFormFactor &)=delete |
The assignment operator is private and must never be called. | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. | |
void | setPDF (tcPDFPtr pdf, Energy scale) |
Set the PDF. | |
const vector< Energy > & | virtualMasses (const IdList &ids) |
Calculate the virtual masses for a branchings. | |
Energy2 | pT2min () |
The minimum pT2. | |
static void | Init () |
The standard Init function used to initialize the interfaces. | |
bool | guessTimeLike (Energy2 &t, Energy2 tmin, double enhance, double detune) |
Methods to provide the next value of the scale before the vetos are applied. | |
bool | guessDecay (Energy2 &t, Energy2 tmax, Energy minmass, double enhance, double detune) |
Value of the energy fraction and scale for time-like branching. | |
bool | guessSpaceLike (Energy2 &t, Energy2 tmin, const double x, double enhance, double detune) |
Value of the energy fraction and scale for space-like branching. | |
void | initialize (const IdList &ids, Energy2 &tmin) |
Initialize the values of the cut-offs and scales. | |
bool | PSVeto (const Energy2 t) |
Phase Space veto member to implement the \(\Theta\) function as a veto so that the emission is within the allowed phase space. | |
bool | computeTimeLikeLimits (Energy2 &scale) |
Compute the limits on \(z\) for time-like branching. | |
bool | computeSpaceLikeLimits (Energy2 &scale, double x) |
Compute the limits on \(z\) for space-like branching. | |
void | guesstz (Energy2 t1, unsigned int iopt, const IdList &ids, double enhance, bool ident, double detune, Energy2 &t_main, double &z_main) |
Methods to implement the veto algorithm to generate the scale of the next branching. | |
bool | PDFVeto (const Energy2 t, const double x, const tcPDPtr parton0, const tcPDPtr parton1, tcBeamPtr beam) const |
Veto on the PDF for the initial-state shower. | |
double | PDFVetoRatio (const Energy2 t, const double x, const tcPDPtr parton0, const tcPDPtr parton1, tcBeamPtr beam, double factor) const |
The PDF veto ratio. | |
bool | SplittingFnVeto (const Energy2 t, const IdList &ids, const bool mass, const RhoDMatrix &rho, const double &detune) const |
The veto on the splitting function. | |
double | SplittingFnVetoRatio (const Energy2 t, const IdList &ids, const bool mass, const RhoDMatrix &rho, const double &detune) const |
The Splitting function veto ratio. | |
bool | alphaSVeto (Energy2 pt2) const |
The veto on the coupling constant. | |
double | alphaSVetoRatio (Energy2 pt2, double factor) const |
The alpha S veto ratio. | |
void | addSplitting (const IdList &) |
Set the particles in the splittings. | |
void | removeSplitting (const IdList &) |
Delete the particles in the splittings. | |
const vector< IdList > & | particles () const |
Access the potential branchings. | |
Additional Inherited Members | |
Public Types inherited from ThePEG::InterfacedBase | |
enum | InitState |
Public Types inherited from ThePEG::Pointer::ReferenceCounted | |
typedef unsigned int | CounterType |
Static Public Member Functions inherited from ThePEG::Interfaced | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::InterfacedBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Base | |
static void | Init () |
Public Attributes inherited from ThePEG::InterfacedBase | |
initializing | |
uninitialized | |
initialized | |
runready | |
Public Attributes inherited from ThePEG::Pointer::ReferenceCounted | |
const unsigned long | uniqueId |
Protected Member Functions inherited from ThePEG::Interfaced | |
void | reporeg (IBPtr object, string name) const |
bool | setDefaultReference (PtrT &ptr, string classname, string objectname) |
Interfaced (const string &newName) | |
Interfaced (const Interfaced &i) | |
void | setGenerator (tEGPtr generator) |
Protected Member Functions inherited from ThePEG::InterfacedBase | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
virtual IBPtr | clone () const=0 |
InterfacedBase (string newName) | |
InterfacedBase (const InterfacedBase &i) | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
Protected Member Functions inherited from ThePEG::Named | |
const Named & | operator= (const Named &other) |
const string & | name (const string &newName) |
Static Protected Member Functions inherited from ThePEG::Interfaced | |
static void | registerRepository (IBPtr) |
static void | registerRepository (IBPtr, string newName) |
This is the definition of the Sudakov form factor class.
In general this is the base class for the implementation of Sudakov form factors in Herwig. The methods generateNextTimeBranching(), generateNextDecayBranching() and generateNextSpaceBranching need to be implemented in classes inheriting from this one.
In addition a number of methods are implemented to assist with the calculation of the form factor using the veto algorithm in classes inheriting from this one.
In general the Sudakov form-factor, for final-state radiation, is given by
\[\Delta_{ba}(\tilde{q}_{i+1},\tilde{q}_i)= \exp\left\{ -\int^{\tilde{q}^2_i}_{\tilde{q}^2_{i+1}} \frac{{\rm d}\tilde{q}^2}{\tilde{q}^2} \int\frac{\alpha_S(z,\tilde{q})}{2\pi} P_{ba}(z,\tilde{q})\Theta(p_T) \right\}. \]
We can solve this to obtain the next value of the scale \(\tilde{q}_{i+1}\) given the previous value \(\tilde{q}_i\) in the following way. First we obtain a simplified form of the integrand which is greater than or equal to the true integrand for all values of \(\tilde{q}\).
In practice it is easiest to obtain this over estimate in pieces. The ShowerAlpha object contains an over estimate for \(\alpha_S\), the splitting function contains both an over estimate of the spltting function and its integral which is needed to compute the over estimate of the \(\tilde{q}\) integrand, together with an over estimate of the limit of the \(z\) integral.
This gives an overestimate of the integrand
\[g(\tilde{q}^2) = \frac{c}{\tilde{q}^2}, \]
where because the over estimates are chosen to be independent of \(\tilde{q}\) the parameter
\[c = \frac{\alpha_{\rm over}}{2\pi}\int^{z_1}_{z_0}P_{\rm over}(z),\]
is a constant independent of \(\tilde{q}\).
The guesstz() member can then be used to generate generate the value of \(\tilde{q}^2\) according to this result. This is done by solving the Sudakov form factor, with the over estimates, is equal to a random number \(r\) in the interval \([0,1]\). This gives
\[\tilde{q}^2_{i+1}=G^{-1}\left[G(\tilde{q}^2_i)+\ln r\right],\]
where \(G(\tilde{q}^2)=c\ln(\tilde{q}^2)\) is the infinite integral of \(g(\tilde{q}^2)\) and \(G^{-1}(x)=\exp\left(\frac{x}c\right)\) is its inverse. It this case we therefore obtain
\[\tilde{q}^2_{i+1}=\tilde{q}^2_ir^{\frac1c}.\]
The value of \(z\) can then be calculated in a similar way
\[z = I^{-1}\left[I(z_0)+r\left(I(z_1)-I(z_0)\right)\right],\]
using the guesstz() member, where \(I=\int P(z){\rm d}z\) and \(I^{-1}\) is its inverse.
The veto algorithm then uses rejection using the ratio of the true value to the overestimated one to obtain the original distribution. This is accomplished using the
The Sudakov form factor for the initial-scale shower is different because it must include the PDF which guides the backward evolution. It is given by
\[\Delta_{ba}(\tilde{q}_{i+1},\tilde{q}_i)= \exp\left\{ -\int^{\tilde{q}^2_i}_{\tilde{q}^2_{i+1}} \frac{{\rm d}\tilde{q}^2}{\tilde{q}^2} \int\frac{\alpha_S(z,\tilde{q})}{2\pi} P_{ba}(z,\tilde{q})\frac{x'f_a(\frac{x}z,\tilde{q}^2)}{xf_b(x,\tilde{q^2})} \right\}, \]
where \(x\) is the fraction of the beam momentum the parton \(b\) had before the backward evolution. This can be solve in the same way as for the final-state branching but the constant becomes
\[c = \frac{\alpha_{\rm over}}{2\pi}\int^{z_1}_{z_0}P_{\rm over}(z)PDF_{\rm max},\]
where
\[PDF_{\rm max}=\max\frac{x'f_a(\frac{x}z,\tilde{q}^2)}{xf_b(x,\tilde{q^2})},\]
which can be set using an interface. In addition the PDFVeto() member then is needed to implement the relevant veto.
Definition at line 127 of file SudakovFormFactor.h.
|
inline |
The default constructor.
Definition at line 140 of file SudakovFormFactor.h.
|
inline |
Return the pointer to the ShowerAlpha object.
Definition at line 238 of file SudakovFormFactor.h.
References alpha_.
|
protected |
The veto on the coupling constant.
pt2 | The value of ther transverse momentum squared, \(p_T^2\). |
|
inlineprotectedvirtual |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
Definition at line 507 of file SudakovFormFactor.h.
|
protected |
Compute the limits on \(z\) for space-like branching.
scale | The scale of the particle |
x | The energy fraction of the parton |
|
protected |
Compute the limits on \(z\) for time-like branching.
scale | The scale of the particle |
|
inlineprotectedvirtual |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
Definition at line 513 of file SudakovFormFactor.h.
|
virtual |
Return the scale of the next space-like decay branching.
If there is no branching then it returns ZERO.
startingScale | starting scale for the evolution |
stoppingScale | stopping scale for the evolution |
minmass | The minimum mass allowed for the spake-like particle. |
ids | The PDG codes of the particles in the splitting defined. |
enhance | The radiation enhancement factor |
|
virtual |
Return the scale of the next space-like branching.
If there is no branching then it returns ZERO.
startingScale | starting scale for the evolution |
ids | The PDG codes of the particles in the splitting |
x | The fraction of the beam momentum defined. |
beam | The beam particle |
enhance | The radiation enhancement factor |
|
virtual |
Members to generate the scale of the next branching.
Return the scale of the next time-like branching. If there is no branching then it returns ZERO.
startingScale | starting scale for the evolution |
ids | The PDG codes of the particles in the splitting |
enhance | The radiation enhancement factor defined. |
|
virtual |
Generate the azimuthal angle of the branching for backward evolution.
particle | The branching particle |
ids | The PDG codes of the particles in the branchings |
The | Shower kinematics |
|
virtual |
Generate the azimuthal angle of the branching for ISR in decays.
particle | The branching particle |
ids | The PDG codes of the particles in the branchings |
The | Shower kinematics |
|
virtual |
Generate the azimuthal angle of the branching for forward evolution.
particle | The branching particle |
ids | The PDG codes of the particles in the branchings |
The | Shower kinematics |
|
protected |
Value of the energy fraction and scale for time-like branching.
t | The scale |
tmax | The maximum scale |
minmass | The minimum mass of the particle after the branching |
enhance | The radiation enhancement factor |
|
protected |
Value of the energy fraction and scale for space-like branching.
t | The scale |
tmin | The minimum scale |
x | Fraction of the beam momentum. |
enhance | The radiation enhancement factor |
|
protected |
Methods to provide the next value of the scale before the vetos are applied.
Value of the energy fraction and scale for time-like branching
t | The scale |
tmin | The minimum scale |
enhance | The radiation enhancement factor |
|
protected |
Methods to implement the veto algorithm to generate the scale of the next branching.
Value of the energy fraction and value of the scale for the veto algorithm
iopt | The option for calculating z |
ids | The PDG codes of the particles in the splitting
|
t1 | The starting valoe of the scale |
enhance | The radiation enhancement factor |
identical | Whether or not the outgoing particles are identical |
t_main | rerurns the value of the energy fraction for the veto algorithm |
z_main | returns the value of the scale for the veto algorithm |
|
static |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
|
protected |
Initialize the values of the cut-offs and scales.
tmin | The minimum scale |
ids | The ids of the partics in the branching |
|
inline |
The type of interaction.
Definition at line 243 of file SudakovFormFactor.h.
References splittingFn_.
|
privatedelete |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
|
inlineprotected |
Access the potential branchings.
Definition at line 473 of file SudakovFormFactor.h.
References particles_.
|
inline |
Access the maximum weight for the PDF veto.
Definition at line 272 of file SudakovFormFactor.h.
References pdfmax_.
|
protected |
Veto on the PDF for the initial-state shower.
t | The scale |
x | The fraction of the beam momentum |
parton0 | Pointer to the particleData for the new parent (this is the particle we evolved back to) |
parton1 | Pointer to the particleData for the original particle |
beam | The BeamParticleData object |
void Herwig::SudakovFormFactor::persistentInput | ( | PersistentIStream & | is, |
int | version | ||
) |
Function used to read in object persistently.
is | the persistent input stream read from. |
version | the version number of the object when written. |
void Herwig::SudakovFormFactor::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
|
inline |
|
protected |
Phase Space veto member to implement the \(\Theta\) function as a veto so that the emission is within the allowed phase space.
t | The scale |
maxQ2 | The maximum virtuality |
|
inline |
|
inline |
|
inline |
|
inline |
Methods to provide public access to the private member variables.
Return the pointer to the SplittingFunction object.
Definition at line 233 of file SudakovFormFactor.h.
References splittingFn_.
|
inlineprotected |
The veto on the splitting function.
t | The scale |
ids | The PDG codes of the particles in the splitting |
mass | Whether or not to use the massive splitting functions |
Definition at line 424 of file SudakovFormFactor.h.
References ThePEG::UseRandom::rnd(), and SplittingFnVetoRatio().
|
inlineprotected |
The Splitting function veto ratio.
Definition at line 436 of file SudakovFormFactor.h.
References splittingFn_, and z_.
Referenced by SplittingFnVeto().
|
inline |
Calculate the virtual masses for a branchings.
Definition at line 490 of file SudakovFormFactor.h.
References cutoff_.
|
inline |
Methods to access the kinematic variables for the branching.
The energy fraction
Definition at line 256 of file SudakovFormFactor.h.
References z_.
|
friend |
The SplittingGenerator is a friend to insert the particles in the branchings at initialisation.
Definition at line 133 of file SudakovFormFactor.h.
|
private |
Pointer to the coupling for this Sudakov form factor.
Definition at line 534 of file SudakovFormFactor.h.
Referenced by alpha().
|
private |
Pointer to the coupling for this Sudakov form factor.
Definition at line 539 of file SudakovFormFactor.h.
Referenced by pT2min(), and virtualMasses().
|
private |
|
private |
The Ids of the particles in the current branching.
Definition at line 610 of file SudakovFormFactor.h.
|
private |
The masses of the particles in the current branching.
Definition at line 615 of file SudakovFormFactor.h.
|
private |
The mass squared of the particles in the current branching.
Definition at line 620 of file SudakovFormFactor.h.
|
private |
List of the particles this Sudakov is used for to aid in setting up interpolation tables if needed.
Definition at line 550 of file SudakovFormFactor.h.
Referenced by particles().
|
private |
|
private |
Option for the inclusion of a factor \(1/(1-z)\) in the PDF estimate.
Definition at line 555 of file SudakovFormFactor.h.
|
private |
Maximum value of the PDF weight.
Definition at line 544 of file SudakovFormFactor.h.
Referenced by pdfMax().
|
private |
|
private |
|
private |
The evolution scale, \(\tilde{q}\).
Definition at line 605 of file SudakovFormFactor.h.
|
private |
Pointer to the splitting function for this Sudakov form factor.
Definition at line 529 of file SudakovFormFactor.h.
Referenced by interactionType(), splittingFn(), and SplittingFnVetoRatio().
|
private |
Member variables to keep the shower kinematics information generated by a call to generateNextTimeBranching or generateNextSpaceBranching.
The energy fraction
Definition at line 567 of file SudakovFormFactor.h.
Referenced by SplittingFnVetoRatio(), and z().
|
private |
The limits of \(z\) in the splitting.
Definition at line 583 of file SudakovFormFactor.h.