PYTHIA
8.303

The ResonanceWidths is the base class. Also used for generic resonaces. More...
#include <ResonanceWidths.h>
Public Member Functions  
virtual  ~ResonanceWidths () 
Destructor.  
void  initBasic (int idResIn, bool isGenericIn=false) 
Set up standard properties.  
virtual bool  init (Info *infoPtrIn) 
Calculate and store partial and total widths at the nominal mass. More...  
int  id () const 
Return identity of particle species.  
double  width (int idSgn, double mHatIn, int idInFlavIn=0, bool openOnly=false, bool setBR=false, int idOutFlav1=0, int idOutFlav2=0) 
Calculate the total/open width for given mass, charge and instate. More...  
double  widthOpen (int idSgn, double mHatIn, int idIn=0) 
Special case to calculate open finalstate width.  
double  widthStore (int idSgn, double mHatIn, int idIn=0) 
Special case to store open finalstate widths for channel selection.  
double  openFrac (int idSgn) 
Return fraction of width open for particle and antiparticle.  
double  widthRescaleFactor () 
Return forced rescaling factor of resonance width.  
double  widthChan (double mHatIn, int idOutFlav1, int idOutFlav2) 
Protected Member Functions  
ResonanceWidths ()  
Constructor.  
virtual void  initConstants () 
Initialize constants.  
virtual bool  initBSM () 
virtual bool  allowCalc () 
virtual void  calcPreFac (bool=false) 
virtual void  calcWidth (bool=false) 
double  numInt1BW (double mHatIn, double m1, double Gamma1, double mMin1, double m2, int psMode=1) 
Simple routines for matrixelement integration over BreitWigners. More...  
double  numInt2BW (double mHatIn, double m1, double Gamma1, double mMin1, double m2, double Gamma2, double mMin2, int psMode=1) 
Protected Attributes  
int  idRes 
Particle properties always present.  
int  hasAntiRes 
bool  doForceWidth 
bool  isGeneric 
bool  allowCalcWidth 
double  minWidth 
double  minThreshold 
double  mRes 
double  GammaRes 
double  m2Res 
double  GamMRat 
double  openPos 
double  openNeg 
double  forceFactor 
int  iChannel 
Properties for currently studied decay channel(s).  
int  onMode 
int  meMode 
int  mult 
int  id1 
int  id2 
int  id3 
int  id1Abs 
int  id2Abs 
int  id3Abs 
int  idInFlav 
double  widNow 
double  mHat 
double  mf1 
double  mf2 
double  mf3 
double  mr1 
double  mr2 
double  mr3 
double  ps 
double  kinFac 
double  alpEM 
double  alpS 
double  colQ 
double  preFac 
ParticleDataEntry *  particlePtr 
Pointer to properties of the particle species.  
Info *  infoPtr 
Pointer to various information on the generation.  
Settings *  settingsPtr 
Pointer to the settings database.  
ParticleData *  particleDataPtr 
Pointer to the particle data table.  
CoupSM *  coupSMPtr 
Pointers to Standard Model and SUSY couplings.  
CoupSUSY *  coupSUSYPtr 
Static Protected Attributes  
static const int  NPOINT = 100 
Constants: could only be changed in the code itself. More...  
static const double  MASSMIN = 0.1 
The mass of a resonance must not be too small.  
static const double  MASSMARGIN = 0.1 
The sum of product masses must not be too close to the resonance mass.  
The ResonanceWidths is the base class. Also used for generic resonaces.

inlineprotectedvirtual 
Calculate various common prefactors for the current mass. Optional argument calledFromInit only used for Z0.

inlineprotectedvirtual 
Calculate width for currently considered channel. Optional argument calledFromInit only used for Z0.

virtual 
Calculate and store partial and total widths at the nominal mass.
Initialize data members. Calculate and store partial and total widths at the nominal mass.
Save pointers.
Perform any model dependent initialisations (pure dummy in base class).
Minimal decayingresonance width. Minimal phase space for meMode = 103.
Pointer to particle species.
Generic particles should not have meMode < 100, but allow some exceptions: not used Higgses and not used Technicolor.
Resonance properties: antiparticle, mass, width
A resonance cannot be too light, in particular not = 0.
For very narrow resonances assign fictitious small width.
Secondary decay chains by default all on.
Allow option where onshell width is forced to current value. Disable for mixes gamma
Check if we are supposed to do the width calculation (can be false e.g. if SLHA decay table should take precedence instead).
Initialize constants used for a resonance.
Calculate various common prefactors for the current mass.
Reset quantities to sum. Declare variables inside loop.
Loop over all decay channels. Basic properties of channel.
Warn if not relevant meMode.
Channels with meMode < 100 must be implemented in derived classes.
Read out information on channel: primarily use first two.
Order first two in descending order of absolute values.
Allow for third product to be treated in derived classes.
Also order third into descending order of absolute values.
Read out masses. Calculate twobody phase space.
Let derived class calculate width for channel provided.
Channels with meMode >= 100 are calculated based on stored values.
Find secondary open fractions of partial width.
Secondary widths not yet initialized for heavier states, so have to assume unit open fraction there.
Store partial widths and secondary open fractions.
Update sum over all channnels and over open channels only.
If no decay channels are open then set particle stable and done.
Set lifetime for displaced vertex calculations (convert GeV^1 to mm). SLHA decay table should take precedence; decay length already set and potentially overwritten as per users request.
Normalize branching ratios to unity.
Optionally force total width by rescaling of all partial ones.
Else update newly calculated partial width.
Updated widthtomass ratio. Secondary widths for open.
Clip wings of Higgses.
Done.

inlineprotectedvirtual 
Virtual methods to handle modelspecific (nonSM) part of initialization for use by derived classes that implement additional models (eg SUSY).
Reimplemented in SUSYResonanceWidths.

protected 
Simple routines for matrixelement integration over BreitWigners.
Numerical integration of matrixelement in twobody decay, where one particle is described by a BreitWigner mass distribution. Normalization to unit integral if matrix element is unity and there are no phasespace restrictions.
Check that phase space is open for integration.
Precalculate coefficients for BreitWigner selection.
Step size in atanmapped variable.
Variables used in loop over integration points.
Loop with firstparticle mass selection.
Evaluate value and add to sum. Different matrix elements.
End of loop over integration points. Overall normalization.
Done.

protected 
Numerical integration of matrixelement in twobody decay, where both particles are described by BreitWigner mass distributions. Normalization to unit integral if matrix element is unity and there are no phasespace restrictions.
Check that phase space is open for integration.
Precalculate coefficients for BreitWigner selection.
If onshell decay forbidden then split integration range to ensure that lowmass region is not forgotten.
Step size in atanmapped variable.
Variables used in loop over integration points.
Outer loop with firstparticle mass selection.
Inner loop with secondparticle mass selection.
Check that point is inside phase space.
Evaluate value and add to sum. Different matrix elements.
End of second and first loop over integration points.
Done.
double width  (  int  idSgn, 
double  mHatIn,  
int  idInFlavIn = 0 , 

bool  openOnly = false , 

bool  setBR = false , 

int  idOutFlav1 = 0 , 

int  idOutFlav2 = 0 

) 
Calculate the total/open width for given mass, charge and instate.
Calculate the total width and store phasespaceweighted coupling sums.
Calculate various prefactors for the current mass.
Reset quantities to sum. Declare variables inside loop.
Loop over all decay channels. Basic properties of channel.
Initially assume vanishing branching ratio.
Optionally only consider specific (twobody) decay channel. Currently only used for Higgs > q qbar, g g or gamma gamma.
Optionally only consider open channels.
Channels with meMode < 100 must be implemented in derived classes.
Read out information on channel: primarily use first two.
Order first two in descending order of absolute values.
Allow for third product to be treated in derived classes.
Also order third into descending order of absolute values.
Read out masses. Calculate twobody phase space.
Let derived class calculate width for channel provided.
Now on to meMode >= 100. First case: no correction at all.
Correction by step at threshold.
Correction by a phase space factor for twobody decays.
Correction by simple threshold factor for multibody decay.
Optionally multiply by secondary widths.
Optionally include factor to force to fixed width.
Optionally multiply by current/nominal resonance mass??
Sum back up.
Optionally store partial widths for later decay channel choice.
Done.

inline 
Special case to calculate one finalstate width. Currently only used for Higgs > qqbar, g g or gamma gamma.

staticprotected 
Constants: could only be changed in the code itself.
Number of points in integration direction for numInt routines.
The ResonanceWidths class. Base class for the various resonances. Constants: could be changed here if desired, but normally should not. These are of technical nature, as described for each.