PYTHIA  8.303
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
StringZ Class Reference

The StringZ class is used to sample the fragmentation function f(z). More...

#include <FragmentationFlavZpT.h>

Inheritance diagram for StringZ:
PhysicsBase HVStringZ

Public Member Functions

 StringZ ()
virtual ~StringZ ()
virtual void init ()
 Initialize data members. More...
virtual double zFrag (int idOld, int idNew=0, double mT2=1.)
 Fragmentation function: top-level to determine parameters. More...
virtual double stopMass ()
 Parameters for stopping in the middle; overloaded for Hidden Valley.
virtual double stopNewFlav ()
virtual double stopSmear ()
virtual double aAreaLund ()
 a and b fragmentation parameters needed in some operations.
virtual double bAreaLund ()
bool deriveBLund ()
 Method to derive bLund from <z> (for fixed a and reference mT2). More...
- Public Member Functions inherited from PhysicsBase
void initInfoPtr (Info &infoPtrIn)
 This function is called from above for physics objects used in a run. More...
virtual ~PhysicsBase ()
 Empty virtual destructor.
bool flag (string key) const
 Shorthand to read settings values.
int mode (string key) const
double parm (string key) const
string word (string key) const

Protected Member Functions

double zLund (double a, double b, double c=1.)
 Fragmentation function: select z according to provided parameters. More...
double zPeterson (double epsilon)
- Protected Member Functions inherited from PhysicsBase
 PhysicsBase ()
 Default constructor.
virtual void onInitInfoPtr ()
virtual void onBeginEvent ()
 This function is called in the very beginning of each Pythia::next call.
virtual void onEndEvent (Status)
virtual void onStat ()
 This function is called from the Pythia::stat() call.
void registerSubObject (PhysicsBase &pb)
 Register a sub object that should have its information in sync with this.

Protected Attributes

bool useNonStandC
 Initialization data, to be read from Settings.
bool useNonStandB
bool useNonStandH
bool usePetersonC
bool usePetersonB
bool usePetersonH
double mc2
double mb2
double aLund
double bLund
double aExtraSQuark
double aExtraDiquark
double rFactC
double rFactB
double rFactH
double aNonC
double aNonB
double aNonH
double bNonC
double bNonB
double bNonH
double epsilonC
double epsilonB
double epsilonH
double stopM
double stopNF
double stopS
- Protected Attributes inherited from PhysicsBase
InfoinfoPtr = {}
SettingssettingsPtr = {}
 Pointer to the settings database.
ParticleDataparticleDataPtr = {}
 Pointer to the particle data table.
HadronWidthshadronWidthsPtr = {}
 Pointer to the hadron widths data table.
RndmrndmPtr = {}
 Pointer to the random number generator.
CoupSMcoupSMPtr = {}
 Pointers to SM and SUSY couplings.
CoupSUSYcoupSUSYPtr = {}
BeamParticlebeamAPtr = {}
BeamParticlebeamBPtr = {}
BeamParticlebeamPomAPtr = {}
BeamParticlebeamPomBPtr = {}
BeamParticlebeamGamAPtr = {}
BeamParticlebeamGamBPtr = {}
BeamParticlebeamVMDAPtr = {}
BeamParticlebeamVMDBPtr = {}
PartonSystemspartonSystemsPtr = {}
 Pointer to information on subcollision parton locations.
SigmaTotalsigmaTotPtr = {}
 Pointer to the total/elastic/diffractive cross sections.
set< PhysicsBase * > subObjects
UserHooksPtr userHooksPtr

Static Protected Attributes

static const double CFROMUNITY = 0.01
 Constants: could only be changed in the code itself. More...
static const double AFROMZERO = 0.02
static const double AFROMC = 0.01
static const double EXPMAX = 50.
 Do not take exponent of too large or small number.

Additional Inherited Members

- Public Types inherited from PhysicsBase
enum  Status {
 Enumerate the different status codes the event generation can have.

Detailed Description

The StringZ class is used to sample the fragmentation function f(z).

Member Function Documentation

bool deriveBLund ( )

Method to derive bLund from <z> (for fixed a and reference mT2).

Alternative parameterisation of the Lund function. Derive the bLund parameter given the average z for fixed a and mT2.

Set up using reference mT2 = mRho^2 + 2*sigmaPT^2

Define lundFF as a function of only b, fixing a, c and mT2 as parameters

Solve for b

Check if derived b fell inside the nominal range for bLund

Print out derived value for b (and mT2ref), noting if outside range.

If outside range, tell user but force anyway so fits can see behaviour.

No further calls needed since b parameter updated in settings database.

void init ( )

Initialize data members.

Initialize data members of the string z selection.

c and b quark masses.

Paramaters of Lund/Bowler symmetric fragmentation function.

Alternative parameterisation of Lund FF using average z(rho) instead of b.

Flags and parameters of nonstandard Lund fragmentation functions.

Flags and parameters of Peterson/SLAC fragmentation function.

Parameters for joining procedure.

Reimplemented in HVStringZ.

double zFrag ( int  idOld,
int  idNew = 0,
double  mT2 = 1. 

Fragmentation function: top-level to determine parameters.

Generate the fraction z that the next hadron will take, using either Lund/Bowler or, for heavy, Peterson/SLAC functions. Note: for a heavy new coloured particle we assume pT negligible.

Find if old or new flavours correspond to diquarks.

Find heaviest quark in fragmenting parton/diquark.

Use Peterson where explicitly requested for heavy flavours.

Nonstandard a and b values implemented for heavy flavours.

Shape parameters of Lund symmetric fragmentation function.

Reimplemented in HVStringZ.

double zLund ( double  a,
double  b,
double  c = 1. 

Fragmentation function: select z according to provided parameters.

Generate a random z according to the Lund/Bowler symmetric fragmentation function f(z) = (1 -z)^a * exp(-b/z) / z^c. Normalized so that f(z_max) = 1 it can also be written as f(z) = exp( a * ln( (1 - z) / (1 - z_max) ) + b * (1/z_max - 1/z)

  • c * ln(z_max/z) ).

Special cases for c = 1, a = 0 and a = c.

Determine position of maximum.

Subdivide z range if distribution very peaked near either endpoint.

Find integral of trial function everywhere bigger than f. (Dummy start values.)

When z_max is small use that f(z) < 1 for z < z_div = 2.75 * z_max, < (z_div/z)^c for z > z_div (=> logarithm for c = 1, else power).

When z_max large use that f(z) < exp( b * (z - z_div) ) for z < z_div with z_div messy expression, < 1 for z > z_div. To simplify expressions the integral is extended to z = -infinity.

Choice of z, preweighted for peaks at low or high z. (Dummy start values.)

Choice of z flat good enough for distribution peaked in the middle; if not this z can be reused as a random number in general.

When z_max small use flat below z_div and 1/z^c above z_div.

When z_max large use exp( b * (z -z_div) ) below z_div and flat above it.

Evaluate actual f(z) (if in physical range) and correct.


double zPeterson ( double  epsilon)

Generate a random z according to the Peterson/SLAC formula f(z) = 1 / ( z * (1 - 1/z - epsilon/(1-z))^2 ) = z * (1-z)^2 / ((1-z)^2 + epsilon * z)^2.

For large epsilon pick z flat and reject, knowing that 4 * epsilon * f(z) < 1 everywhere.

Else split range, using that 4 * epsilon * f(z) < 4 * epsilon / (1 - z)^2 for 0 < z < 1 - 2 * sqrt(epsilon) < 1 for 1 - 2 * sqrt(epsilon) < z < 1

Member Data Documentation

const double CFROMUNITY = 0.01

Constants: could only be changed in the code itself.

The StringZ class.

Constants: could be changed here if desired, but normally should not. These are of technical nature, as described for each. When a or c are close to special cases, default to these.

The documentation for this class was generated from the following files: