PYTHIA  8.316
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
StringFlav Class Reference

The StringFlav class is used to select quark and hadron flavours. More...

#include <FragmentationFlavZpT.h>

Inheritance diagram for StringFlav:
PhysicsBase HVStringFlav ThermalStringFlav

Public Member Functions

 StringFlav ()
 Constructor.
 
virtual ~StringFlav ()
 Destructor.
 
virtual void init ()
 Initialize data members. More...
 
virtual void init (double kappaModifier, double strangeJunc, double probQQmod)
 Initialise parameters when using close packing. More...
 
int pickLightQ ()
 Pick a light d, u or s quark according to fixed ratios.
 
virtual FlavContainer pick (FlavContainer &flavOld, double=-1., double=-1., bool allowPop=true)
 
virtual int combine (FlavContainer &flav1, FlavContainer &flav2)
 Combine two flavours (including diquarks) to produce a hadron. More...
 
virtual int combineId (int id1, int id2, bool keepTrying=true)
 Ditto, simplified input argument for simple configurations.
 
virtual pair< int, int > combineDiquarkJunction (int id1, int id2, int id3)
 Combine three (di-) quark flavours into two hadrons. More...
 
virtual int combineToLightest (int id1, int id2)
 Combine two flavours to produce a hadron with lowest possible mass. More...
 
virtual int idLightestNeutralMeson ()
 Lightest flavour-neutral meson.
 
virtual int getHadronID (FlavContainer &flav1, FlavContainer &flav2, double=-1.0, double=-1.0, bool=false)
 
virtual double getHadronMassWin (int idHad)
 Return hadron mass.
 
void assignPopQ (FlavContainer &flav)
 Assign popcorn quark inside an original (= rank 0) diquark. More...
 
int makeDiquark (int id1, int id2, int idHad=0)
 Combine two quarks to produce a diquark. More...
 
void addQuarkDiquark (vector< pair< int, int > > &quarkCombis, int qID, int diqID, int hadronID)
 Check if quark-diquark combination should be added. If so add.
 
int getMesonSpinCounter (int hadronID)
 Get spin counter for mesons.
 
double getFlavourSpinRatios (int i, int j)
 
- 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
 
vector< bool > fvec (string key) const
 
vector< int > mvec (string key) const
 
vector< double > pvec (string key) const
 
vector< string > wvec (string key) const
 

Protected Member Functions

virtual void initDerived ()
 Initialise derived parameters. More...
 
- 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.
 
virtual void onStat (vector< PhysicsBase * >, Pythia *)
 
void registerSubObject (PhysicsBase &pb)
 Register a sub object that should have its information in sync with this.
 

Protected Attributes

bool suppressLeadingB
 Settings for default Gaussian model.
 
double probQQtoQ
 
double probStoUD
 
double probSQtoQQ
 
double probQQ1toQQ0
 
double probQandQQ
 
double probQandS
 
double probQandSinQQ
 
double probQQ1corr
 
double probQQ1corrInv
 
double probQQ1norm
 
double probQQ1join [4]
 
double mesonRate [4][6]
 
double mesonRateSum [4]
 
double mesonMix1 [2][6]
 
double mesonMix2 [2][6]
 
double etaSup
 
double etaPrimeSup
 
double decupletSup
 
double baryonCGSum [6]
 
double baryonCGMax [6]
 
double popcornRate
 
double popcornSpair
 
double popcornSmeson
 
double barCGMax [8]
 
double scbBM [3]
 
double popFrac
 
double popS [3]
 
double dWT [3][7]
 
double lightLeadingBSup
 
double heavyLeadingBSup
 
bool qqKappa
 
double probStoUDSav
 
double probQQtoQSav
 
double probSQtoQQSav
 
double probQQ1toQQ0Sav
 
double alphaQQSav
 
bool closePacking
 Settings for closepacking.
 
bool doEnhanceDiquark
 
double enhanceStrange
 
double enhancePT
 
double enhanceDiquark
 
double exponentMPI
 
double exponentNSP
 
WeightsFragmentationwgtsPtr {}
 Fragmentation weights container.
 
- Protected Attributes inherited from PhysicsBase
InfoinfoPtr = {}
 
SettingssettingsPtr = {}
 Pointer to the settings database.
 
ParticleDataparticleDataPtr = {}
 Pointer to the particle data table.
 
LoggerloggerPtr = {}
 Pointer to logger.
 
HadronWidthshadronWidthsPtr = {}
 Pointer to the hadron widths data table.
 
RndmrndmPtr = {}
 Pointer to the random number generator.
 
CoupSMcoupSMPtr = {}
 Pointers to SM and SUSY couplings.
 
CoupSUSYcoupSUSYPtr = {}
 
BeamSetupbeamSetupPtr = {}
 
BeamParticlebeamAPtr = {}
 
BeamParticlebeamBPtr = {}
 
BeamParticlebeamPomAPtr = {}
 
BeamParticlebeamPomBPtr = {}
 
BeamParticlebeamGamAPtr = {}
 
BeamParticlebeamGamBPtr = {}
 
BeamParticlebeamVMDAPtr = {}
 
BeamParticlebeamVMDBPtr = {}
 
PartonSystemspartonSystemsPtr = {}
 Pointer to information on subcollision parton locations.
 
SigmaTotalsigmaTotPtr = {}
 Pointers to the total/elastic/diffractive cross sections.
 
SigmaCombinedsigmaCmbPtr = {}
 
set< PhysicsBase * > subObjects
 
UserHooksPtr userHooksPtr
 
mutex * mutexPtr
 Mutex that should be locked for thread-unsafe code.
 

Static Protected Attributes

static const int mesonMultipletCode [6] = { 1, 3, 10003, 10001, 20003, 5}
 Constants: could only be changed in the code itself. More...
 
static const double baryonCGOct [6] = { 0.75, 0.5, 0., 0.1667, 0.0833, 0.1667}
 
static const double baryonCGDec [6] = { 0., 0., 1., 0.3333, 0.6667, 0.3333}
 

Additional Inherited Members

- Public Types inherited from PhysicsBase
enum  Status {
  INCOMPLETE = -1, COMPLETE = 0, CONSTRUCTOR_FAILED, INIT_FAILED,
  LHEF_END, LOWENERGY_FAILED, PROCESSLEVEL_FAILED, PROCESSLEVEL_USERVETO,
  MERGING_FAILED, PARTONLEVEL_FAILED, PARTONLEVEL_USERVETO, HADRONLEVEL_FAILED,
  CHECK_FAILED, OTHER_UNPHYSICAL, HEAVYION_FAILED, HADRONLEVEL_USERVETO
}
 Enumerate the different status codes the event generation can have.
 

Detailed Description

The StringFlav class is used to select quark and hadron flavours.

Member Function Documentation

void assignPopQ ( FlavContainer flav)

Assign popcorn quark inside an original (= rank 0) diquark.

Safety check that intended to do something.

Make choice of popcorn quark.

Agrees with Patrik code, but opposite to intention??

Also determine if to produce popcorn meson.

int combine ( FlavContainer flav1,
FlavContainer flav2 
)
virtual

Combine two flavours (including diquarks) to produce a hadron.

Combine two flavours (including diquarks) to produce a hadron. The weighting of the combination may fail, giving output 0.

Recognize largest and smallest flavour.

Construct a meson.

Popcorn meson: use only vertex quarks. Fail if none.

Pick spin state and preliminary code.

For nondiagonal mesons distinguish particle/antiparticle.

For light diagonal mesons include uubar - ddbar - ssbar mixing.

Additional suppression of eta and eta' may give failure.

Finished for mesons.

SU(6) factors for baryon production may give failure.

Order quarks to form baryon. Pick spin.

Distinguish Lambda- and Sigma-like.

Form baryon code and return with sign.

Reimplemented in HVStringFlav.

pair< int, int > combineDiquarkJunction ( int  id1,
int  id2,
int  id3 
)
virtual

Combine three (di-) quark flavours into two hadrons.

Combine three (di-)quark flavours into two hadrons. Note that at least one of the id's must be a diquark.

Order the junction ends in an increasing |id| sequence.

If the first is a diquark then all are diquarks. Then split the first. Combine its two quarks with the other diquarks into two baryons.

Otherwise the first is an antiquark. If the second is a diquark, also the third is it. Then split the second. Let one of its quarks form a meson with the first antiquark, and the other a baryon with the third diquark.

Finally, if the first two are antiquarks, then split the third diquark and form two mesons.

If there was no diquark to split something is wrong.

Randomize the flavours of the split diquark and return the two hadrons.

int combineToLightest ( int  id1,
int  id2 
)
virtual

Combine two flavours to produce a hadron with lowest possible mass.

Combine two flavours (including diquarks) to produce the lightest hadron allowed for that flavour content. No popcorn flavours.

Recognize largest and smallest flavour.

Quark-antiquark to meson.

For nondiagonal mesons distinguish particle/antiparticle.

For light diagonal mesons pick pi0 or eta.

Finished for mesons.

Quark-diquark to baryon

Create baryon. Special cases with spin 3/2 and lambdalike.

Finished for baryons.

double getFlavourSpinRatios ( int  i,
int  j 
)
inline

Get the flavour and spin ratios calculated from the diquark weights. i: (0) q -> B B, (1) q -> B M B, (2) qq -> M B j: (0) s/u popcorn ratio, (1/2) s/u ratio for vertex quark if popcorn quark is u/d or s, (3) q/q' vertex quark ratio if popcorn quark is light and = q, (4/5/6) (spin 1)/(spin 0) ratio for su, us and ud

virtual int getHadronID ( FlavContainer flav1,
FlavContainer flav2,
double  = -1.0,
double  = -1.0,
bool  = false 
)
inlinevirtual

General function, decides whether to just return the hadron id if thermal model was use or whether to combine the two flavours.

Reimplemented in ThermalStringFlav.

void init ( )
virtual

Initialize data members.

Initialize data members of the flavour generation.

Set the fragmentation weights container.

Basic parameters for generation of new flavour.

Spin parameters for combining two quarks to a diquark.

Parameters for normal meson production.

Parameters for L=1 excited-meson production.

Store sum over multiplets for Monte Carlo generation.

Parameters for uubar - ddbar - ssbar meson mixing.

Fill in (flavour, spin)-dependent probability of producing the lightest or the lightest two mesons of the nonet.

Additional suppression of eta and etaPrime.

Sum of baryon octet and decuplet weights.

Maximum SU(6) weight for ud0, ud1, uu1 types.

Popcorn baryon parameters.

Suppression of leading (= first-rank) baryons.

Enhanced-rate prefactor for MPIs and/or nearby string pieces.

Save "vacuum" parameters for closepacking init() function.

Calculate derived parameters.

Reimplemented in ThermalStringFlav, and HVStringFlav.

void init ( double  kappaModifier,
double  strangeJunc,
double  probQQmod 
)
virtual

Initialise parameters when using close packing.

Altered probabilities with close packing.

If allowing effective kappa to enhance baryon production, do this.

Diquark scaling power controlled by enhanceDiquark.

Probability of a diquark being formed can scale with the probability of a fluctuation on a string to not connect (and break) a nearby string. for x probability of reconnection, probability of diquark survival scales with 1/2 * [(1-x)^nG + (1-x)^nB]

Make sure probability is sensible.

Calculate derived parameters.

void initDerived ( )
protectedvirtual

Initialise derived parameters.

Initialise the derived parameters.

Parameters derived from init calls.

Enumerate distinguishable diquark types (in diquark first is popcorn q).

Maximum SU(6) weight by diquark type.

Diquark SU(6) survival = Sum_quark (quark tunnel weight) * SU(6).

Tunneling factors for diquark production; only half a pair = sqrt.

spin * (vertex factor) * (half-tunneling factor above).

Combine above two into total diquark weight for q -> B Bbar.

Suppression from having strange popcorn meson.

Suppression for a heavy quark of a diquark to fit into a baryon on the other side of popcorn meson: (0) s/u for q -> B M; (1) s/u for rank 0 diquark su -> M B; (2) ditto for s -> c/b.

Include maximum of Clebsch-Gordan coefficients.

Popcorn fraction for normal diquark production.

Popcorn fraction for rank 0 diquarks, depending on number of s quarks.

Recombine diquark weights to flavour and spin ratios. Second index: 0 = s/u popcorn quark ratio. 1, 2 = s/u ratio for vertex quark if popcorn quark is u/d or s. 3 = q/q' vertex quark ratio if popcorn quark is light and = q. 4, 5, 6 = (spin 1)/(spin 0) ratio for su, us and ud.

Case 0: q -> B B.

Case 1: q -> B M B.

Case 2: qq -> M B; diquark inside chain.

int makeDiquark ( int  id1,
int  id2,
int  idHad = 0 
)

Combine two quarks to produce a diquark.

Combine two quarks to produce a diquark. Normally according to production composition, but nonvanishing idHad means diquark from known hadron content, so use SU(6) wave function.

Initial values.

Select spin of diquark formed from two valence quarks in proton. (More hadron cases??)

Else select spin of diquark according to assumed spin-1 suppression.

Combined diquark code.

FlavContainer pick ( FlavContainer flavOld,
double  = -1.,
double  = -1.,
bool  allowPop = true 
)
virtual

Pick a new flavour (including diquarks) given an incoming one. Optional arguments: pT, kappaModifier, allowPop.

Pick a new flavour (including diquarks) given an incoming one for Gaussian pTq^2 distribution.

Initial values for new flavour.

For original diquark assign popcorn quark and whether popcorn meson.

Diquark exists, to be forced into baryon now.

Diquark exists, but do meson now.

Newly created diquark gives baryon now, antibaryon later.

Choose whether to generate a new meson or a new baryon.

Optional suppression of first-rank baryon.

Single quark for new meson or for baryon where diquark already exists.

Count breaks for variations, then done for simple-quark case.

Case: 0 = q -> B B, 1 = q -> B M B, 2 = qq -> M B.

Flavour of popcorn quark (= q shared between B and Bbar).

Flavour of vertex quark.

Special case for light flavours, possibly identical.

Pick 2 * spin + 1.

Form outgoing diquark. Count breaks for variations. Done.

Reimplemented in ThermalStringFlav, and HVStringFlav.

Member Data Documentation

const double baryonCGOct = { 0.75, 0.5, 0., 0.1667, 0.0833, 0.1667}
staticprotected

Clebsch-Gordan coefficients for baryon octet and decuplet are fixed once and for all, so only weighted sum needs to be edited. Order: ud0 + u, ud0 + s, uu1 + u, uu1 + d, ud1 + u, ud1 + s.

const int mesonMultipletCode = { 1, 3, 10003, 10001, 20003, 5}
staticprotected

Constants: could only be changed in the code itself.

The StringFlav class.

Constants: could be changed here if desired, but normally should not. These are of technical nature, as described for each. Offset for different meson multiplet id values.


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