Pythia7::LundFlavourGenerator Class Reference

The LundFlavouGenerator is the class responsible for the flavour generation according to the Lund scheme of fragmentation. More...

#include <LundFlavourGenerator.h>

Inheritance diagram for Pythia7::LundFlavourGenerator:

ThePEG::FlavourGenerator ThePEG::HandlerBase ThePEG::HandlerBaseT< T > ThePEG::Interfaced ThePEG::InterfacedBase ThePEG::Base ThePEG::Named ThePEG::Pointer::ReferenceCounted

List of all members.

Public Types

typedef vector< double > WeightsVec
 A vector used for SU6 Weights.
typedef WeightsVec::const_iterator WeightsVecPtr
 An iterator into the SU6 weights vector.
typedef vector< WeightsVecWeightsTable
 A matrix used for SU6 Weights.

Public Member Functions

virtual PDPtr generateHadron (tcPDPtr inPD, cPDPtr &newPD, long curtainQid=0) const
 Given an input flavour, inPD, selects a method (Q2BaryonDQ(), Q2MesonQ(), PopDQ2MesonDQ() or DQ2BaryonQ()) that will generate the new flavour to be combined with inPD to produce the new hadron.
void initialize ()
 Initializes the parameters of the generator that depend either on the the interfaced parameters or on the model chosen for the baryon production.
virtual PDPtr getRandomFlavour () const
 Returns the a pointer to a quark (or antiquark) of a qqbar pair created in the string colour field.
void DBprint ()
 Print out state of an object for debugging purposed.
Standard constructors and destructors.
 LundFlavourGenerator ()
 Default constructor.
 LundFlavourGenerator (const LundFlavourGenerator &)
 Copy-constructor.
virtual ~LundFlavourGenerator ()
 Destructor.
Virtual functions required by the FlavourGenerator class.
virtual tcPDPair generateHadron (tcPDPtr quark) const
 Generate a hadron from a quark.
virtual tcPDPtr getHadron (tcPDPtr inPD1, tcPDPtr inPD2) const
 Get hadron from flavours.
virtual tcPDPtr getBaryon (long q1, long q2, long q3) const
 Return a baryon with the flavour content given by the (anti)quarks in the argument.
virtual long selectQuark () const
 Generate a random quark flavour.
virtual long selectFlavour () const
 Generate a random (di)quark flavour.
Access parameters and swithces.
int BaryonMod () const
 Returns the baryon mode.
double strangeQSup () const
 Returns the suppression factor for production of a $s\bar{s}$ pair.
bool extraSuppressed () const
 Returns true if any selected flavour is extra-suppressed.
Functions dealing with popcorn generation.
int PopMesonN (tcPDPtr inDQ) const
 When a diquark is first produced in the string fragmentation, if (BaryomMode=2) this method is invoked to know the number of popcorn mesons that should be produced in between the baryon anti-baryon pair.
int PopMesonN (long inDQ) const
 When a diquark is first produced in the string fragmentation, if (BaryomMode=2) this method is invoked to know the number of popcorn mesons that should be produced in between the baryon anti-baryon pair.
long PopSelectCurtainFlavour (tcPDPtr inDQ) const
 Given the diquark that initializes the popcorn generation, selects a curtain quark for the popcorn meson production.
long PopSelectCurtainFlavour (long inDQ) const
 Given the diquark that initializes the popcorn generation, selects a curtain quark for the popcorn meson production.
bool PopGenRejected () const
 In the process of producing a popcorn meson, the PopDQ2MesonD() function may fail to recombine the curtainQ and the new flavour into a new diquark state.
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.

Static Public Member Functions

static void Init ()
 Standard Init function used to initialize the interface.

Protected Member Functions

Clone Methods.
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.
Standard Interfaced functions.
virtual void doupdate () throw (UpdateException)
 Check sanity of the object during the setup phase.
virtual void doinit () throw (InitException)
 Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual void dofinish ()
 Finalize this object.

Private Member Functions

Meson-production functions.
void Q2MesonQ (long inQ) const
 Is the method for the meson production : inQ $\rightarrow$ newQ + newMeson.
long formMeson (long inQ, long newQ) const
 Given the two constituant quark id numbers, inQ and newQ, forms a new meson and returns its id.
int selectMesonMultiplet (long Hfl) const
 When two flavours combine off to form a meson, this function returns the multiplet of the new meson in function of the heavier quark, Hfl, of the two.
int MesonSpin (int multipletIdx) const
 Given the multiplet of the newly created meson, returns its total angular momentum J.
int RandomFlavourMixing (long Qid, int multipletIdx, double rnd) const
 Selects the physical state of a light flavour-diagonal meson.
Diquark production functions.
bool DQproduction () const
 When a incoming quark is sent to generateHadron() a choice is made to rather produce a quark or a diquark.
bool DQspinSup (int DQspin) const
 When creating a new diquark (in the Q2BaryonDQ)) this method returns true if the diquark is spin-suppressed.
Baryaon production functions.
void Q2BaryonDQ (long inQ) const
 This is a baryon production method for the process inQ -> newDQ + newBaryon
Given a incoming quark, inQ generates a new diquark such as the q-diquark combination is acceptable according to the corresponding weight for the baryon production.
void DQ2BaryonQ (long inDQ) const
 This is the baryon production method for the process : inDQ -> newQ + newBaryon
Given the incoming diquark, inDQ, generates a new flavour such as the weight of the baryon corresponding to the (diquark-quark) combination is acceptable.
long formBaryon (long Q, long DQ, WeightsVecPtr theWeights) const
 Given the quark (Q) - diquark(DQ) flavour combination and the corresponding SU6 Weights, form the new baryon.
WeightsVecPtr getSU6MultWeightVec (long Qid, long DQid) const
 Given the quark (Qid) - diquark (DQid) combination, returns from the lookup table theSU6WeightsTable a pointer to the table (internally a vector) holding the relative probabilities for the Q, DQ to join into a baryon of the octet or decuplet multiplet.
double OctetWT (WeightsVecPtr wtIt) const
 Given the table selected by the getSU6MultWeightVec() returns the relative probability that the quark-diquark combination forms a baryon in the octet.
double DecupletWT (WeightsVecPtr wtIt) const
 Given the table selected by the getSU6MultWeightVec() return the relative probability that the quark-diquark combination forms a baryon in the decuplet.
Popcorn functions.
double PopDQweight (long inDQ) const
 Given a diquark (inDQ), returns its weight for the popcorn model in function of its flavour content.
void PopDQ2MesonDQ (long inDQ, long absCurtainQ) const
 Method of the popcorn meson generation : DQ -> popMeson + DQ'
Given the incoming diquark (inDQ) and the curtain quark (absCurtainQ), combines the free flavour of inDQ with a new created quark to produce the popcorn Meson -> if the generation is not rejected by the PopConsistentDQ() then reconstructs the outgoing diquark DQ', else a new curtain quark has to be re-selected.
bool PopConsistentDQ (long q1, long q2) const
 In popcorn meson production, this method returns false if the selected curtainQ and the new flavour cannot combine into a new diquark state.
Flavour joining functions.
bool consistentJoin (long fl1, long fl2) const
 Performs checks on the two incoming flavours to be combined.
Inlined helper functions.
bool isQuark (long fl) const
 Returns true if the incoming flavour id (fl) corresponds to a quark number.
bool isDiquark (long fl) const
 Returns true if the incoming flavour id (fl) corresponds to a diquark number.
void getDQcontent (int inDQ, int &hq, int &lq, int &s) const
 Given a diquark id number (inDQ), returns its heavy (hq), light(lq) quark and its spin (s).
Functions for initialization of parameters.
void initGenPar ()
 Computes the suppression factor for Spin1 diquark production.
void setDefaultMixingAnglesVec ()
 Initializes the default values of the mixing angles, theMixingAngles, for the 6 meson multiplets.
void setMesonFlavourMixingProbs ()
 Given the set of Mixing angles, theMixingAngles for the different meson multiplets (the defaults values or the user defined values), initializes the mixing probabilities theMixingProbVec for the production of diagonal-flavour mesons.
void setSU6weights ()
 Initializes the table of the non-interfaced SU6 Weights : theSU6WeightsTable.
void setPopDQweights ()
 Initializes the diquark weights for the popcorn model (DQweight).

Private Attributes

long newFl
 The Id number of the generated flavour.
long theHadron
 The Id numbers of the created hadron.
bool extraSup
 True if an Eta, Eta' meson constructed by formMeson() method turns out to be extra-suppressed.
bool thePopRejection
 True if the PopDQ2MesonDQ method fails to reconstruct the outgoing diquark.
int theBaryonMod
 See documentation of interface BaryonMode.
double DQsup
 See documentation of interface DQsup.
double IS1DQsup
 See documentation of interface S1DQsup.
double BaryonDecupletSup
 See documentation of interface SBaryonDecupletSup.
double extraEtaSup
 See documentation of interface extraEtaSup.
double extraEtapSup
 See documentation of interface extraEtapSup.
double MesonP
 See documentation of interface MesonP.
double BssBsup
 See documentation of interface BssBsup.
double BMsBsup
 See documentation of interface BMsBsup.
double sQsup
 See documentation of interface sQsup.
double sDQvQsup
 See documentation of interface sDQvQsup.
double S1lightMesonP
 See documentation of interface S1lightMesonP.
double S1sMesonP
 See documentation of interface S1sMesonP.
double S1hqMesonP
 See documentation of interface S1hqMesonP.
double P_S0L1J1
 See documentation of interface P_S0L1J1.
double P_S1L1J0
 See documentation of interface P_S1L1J0.
double P_S1L1J1
 See documentation of interface P_S1L1J1.
double P_S1L1J2
 See documentation of interface P_S1L1J2.
vector< double > theMixingAngles
 The mixing angles for the production of flavour-diagonal meson.
vector< double > DQweight
 The lookup table for diquark weights in the popcorn model, used to compute the baryon weight when combining the DQ with a new Q in the Q2BaryonDQ() method.
double S1DQsup
 Set in initialization to 3*IS1DQsup.
double POP_sDQvQsup
 Popcorn parameters.
double POP_S1DQsup
 Popcorn parameters.
double POP_delta
 Popcorn parameters.
double DQmaxWeight
 Maximun weight for diquark production.
WeightsTable theSU6WeightsTable
 Lookup Tables for the SU6 weights.
WeightsTable theMixingProbVec
 Lookup Tables for the mixing probabilities .

Static Private Attributes

static ClassDescription
< LundFlavourGenerator
initLundFlavourGenerator
 Standard Interface.


Detailed Description

The LundFlavouGenerator is the class responsible for the flavour generation according to the Lund scheme of fragmentation.

It derives from the FlavourGenerator and overrides the two categories of interfaces : the generateHadron() and the getHadron() methods.

The first one is given one incoming flavour, generates a new quark or diquark, and combines it with the existing flavour, then returns the new hadron and the newly created flavour. The second receives two incoming flavours and tries to combine them into a new hadron.

Different models for flavour production can be selected setting the Switch BaryonMode.

The popcorn model for baryon production needs extra handling than simple flavour production. It is therefore handled by the LundFlavourHandler. Nevertheless the LundFlavourGenerator encapsulates the methods for the popcorn generation. They are denoted as popXXXX() methods.

See also:
The interfaces defined for LundFlavourGenerator.

FlavourGenerator

LundFlavourHandler

Definition at line 43 of file LundFlavourGenerator.h.


Member Typedef Documentation

A vector used for SU6 Weights.

Definition at line 48 of file LundFlavourGenerator.h.

typedef WeightsVec::const_iterator Pythia7::LundFlavourGenerator::WeightsVecPtr

An iterator into the SU6 weights vector.

Definition at line 51 of file LundFlavourGenerator.h.

A matrix used for SU6 Weights.

Definition at line 54 of file LundFlavourGenerator.h.


Member Function Documentation

virtual tcPDPair Pythia7::LundFlavourGenerator::generateHadron ( tcPDPtr  quark  )  const [virtual]

Generate a hadron from a quark.

Given a quark(antiquark, diquark or antidiquark), choose a quark-antiquark (or antidiquark-diquark) pair. Return (first) a hadron formed by the original quark and the antiquark together with (second) the generated quark. Returns null pointers if the generation failed.

Parameters:
quark a quark, antiquark, diquark or antidiquark.
Returns:
a pair of ParticleData pointers. The first is the hadron produced and the second is the anti-partner of the (anti-)(di-)quark generated to form the hadron.

Implements ThePEG::FlavourGenerator.

virtual tcPDPtr Pythia7::LundFlavourGenerator::getHadron ( tcPDPtr  inPD1,
tcPDPtr  inPD2 
) const [virtual]

Get hadron from flavours.

Return a hadron with the flavour content given by the (anti-)(di-)quarks in the argument. The arguments are given as ParticleData pointers. The default versions will call the getHadron(long, long).

Parameters:
inPD1 the first flavour.
inPD2 the second flavour.
Returns:
the corresponding hadron type or null if none could be generated.

Reimplemented from ThePEG::FlavourGenerator.

virtual tcPDPtr Pythia7::LundFlavourGenerator::getBaryon ( long  q1,
long  q2,
long  q3 
) const [virtual]

Return a baryon with the flavour content given by the (anti)quarks in the argument.

The arguments are given as particle data pointers. The default versions will call getBaryon(tcPDPtr, tcPDPtr, tcPDPtr). If no corresponding hadron was formed it should return the null pointer.

Parameters:
q1 the PDG code of the first flavour.
q2 the PDG code of the second flavour.
q3 the PDG code of the third flavour.
Returns:
the corresponding baryon type or null if none could be generated.

Reimplemented from ThePEG::FlavourGenerator.

virtual PDPtr Pythia7::LundFlavourGenerator::generateHadron ( tcPDPtr  inPD,
cPDPtr newPD,
long  curtainQid = 0 
) const [virtual]

Given an input flavour, inPD, selects a method (Q2BaryonDQ(), Q2MesonQ(), PopDQ2MesonDQ() or DQ2BaryonQ()) that will generate the new flavour to be combined with inPD to produce the new hadron.

newPD will be set to the newly created flavour and the hadron will be returned.
For the popcorn model the Id number of the diquark curtain-quark is given as curtainQid. Therefore curtainQid = 0 means either that the popcorn model is not switched on or the final baryon of a popcorn generation has to be produced. The selection of curtain quark is however handled by the LundFlavourHandler.

void Pythia7::LundFlavourGenerator::initialize (  ) 

Initializes the parameters of the generator that depend either on the the interfaced parameters or on the model chosen for the baryon production.

It calls the setMesonFlavourMixingProbs() and initGenPar() methods.

bool Pythia7::LundFlavourGenerator::extraSuppressed (  )  const [inline]

Returns true if any selected flavour is extra-suppressed.

Currently returns true if an Eta, Eta' meson is extra-suppressed.

bool Pythia7::LundFlavourGenerator::PopGenRejected (  )  const [inline]

In the process of producing a popcorn meson, the PopDQ2MesonD() function may fail to recombine the curtainQ and the new flavour into a new diquark state.

The handler of the popcorn generation is informed about this rejection invoking this method that returns true if the generation failed.

void Pythia7::LundFlavourGenerator::persistentOutput ( PersistentOStream os  )  const

Function used to write out object persistently.

Parameters:
os the persistent output stream written to.

Reimplemented from ThePEG::FlavourGenerator.

void Pythia7::LundFlavourGenerator::persistentInput ( PersistentIStream is,
int  version 
)

Function used to read in object persistently.

Parameters:
is the persistent input stream read from.
version the version number of the object when written.

Reimplemented from ThePEG::FlavourGenerator.

virtual IBPtr Pythia7::LundFlavourGenerator::clone (  )  const [inline, protected, virtual]

Make a simple clone of this object.

Returns:
a pointer to the new object.

Implements ThePEG::InterfacedBase.

virtual IBPtr Pythia7::LundFlavourGenerator::fullclone (  )  const [inline, protected, virtual]

Make a clone of this object, possibly modifying the cloned object to make it sane.

Returns:
a pointer to the new object.

Reimplemented from ThePEG::InterfacedBase.

virtual void Pythia7::LundFlavourGenerator::doinit (  )  throw (InitException) [inline, protected, virtual]

Initialize this object after the setup phase before saving an EventGenerator to disk.

Exceptions:
InitException if object could not be initialized properly.

Reimplemented from ThePEG::InterfacedBase.

virtual void Pythia7::LundFlavourGenerator::dofinish (  )  [inline, protected, virtual]

Finalize this object.

Called in the run phase just after a run has ended. Used eg. to write out statistics.

Reimplemented from ThePEG::InterfacedBase.

void Pythia7::LundFlavourGenerator::Q2MesonQ ( long  inQ  )  const [private]

Is the method for the meson production : inQ $\rightarrow$ newQ + newMeson.

Receives the incoming quark id, inQ, generates a new quark flavour and invokes formMeson() to combine them into a newMeson stored in member variables.

int Pythia7::LundFlavourGenerator::RandomFlavourMixing ( long  Qid,
int  multipletIdx,
double  rnd 
) const [inline, private]

Selects the physical state of a light flavour-diagonal meson.

Given the flavour (Qid) of a qqbar pair and the meson multiplet (multipletIdx) of the corresponding meson selects at random the meson state (described internally by an integer number that is returned), according to the different probabilities (theMixingProbabilities) that the $q\bar{q}$ pair produces the possible diagonal-mesons of the different multiplets.

bool Pythia7::LundFlavourGenerator::DQproduction (  )  const [inline, private]

When a incoming quark is sent to generateHadron() a choice is made to rather produce a quark or a diquark.

This method returns true if a diquark is chosen to be produced.

void Pythia7::LundFlavourGenerator::Q2BaryonDQ ( long  inQ  )  const [private]

This is a baryon production method for the process inQ -> newDQ + newBaryon
Given a incoming quark, inQ generates a new diquark such as the q-diquark combination is acceptable according to the corresponding weight for the baryon production.

Warning: Contains a special treatment for diquark produced within the pocorm model.

void Pythia7::LundFlavourGenerator::PopDQ2MesonDQ ( long  inDQ,
long  absCurtainQ 
) const [private]

Method of the popcorn meson generation : DQ -> popMeson + DQ'
Given the incoming diquark (inDQ) and the curtain quark (absCurtainQ), combines the free flavour of inDQ with a new created quark to produce the popcorn Meson -> if the generation is not rejected by the PopConsistentDQ() then reconstructs the outgoing diquark DQ', else a new curtain quark has to be re-selected.


Warning: the absolute value of curtainQ (absCurtainQ) as input here.

bool Pythia7::LundFlavourGenerator::consistentJoin ( long  fl1,
long  fl2 
) const [private]

Performs checks on the two incoming flavours to be combined.

Returns false if the flavour combination is not consistent.

void Pythia7::LundFlavourGenerator::initGenPar (  )  [private]

Computes the suppression factor for Spin1 diquark production.

if the popcorn model is selected scales the quark/diquark suppression factors and sets the diquark weights.
Warning: To be called after any change of the interfaced parameters involved.

void Pythia7::LundFlavourGenerator::setMesonFlavourMixingProbs (  )  [private]

Given the set of Mixing angles, theMixingAngles for the different meson multiplets (the defaults values or the user defined values), initializes the mixing probabilities theMixingProbVec for the production of diagonal-flavour mesons.


Warning: To be called after any change of the mixing angles.

void Pythia7::LundFlavourGenerator::setPopDQweights (  )  [private]

Initializes the diquark weights for the popcorn model (DQweight).


Warning: Called by initGenPar() after any change of the interfaced parameters.


Member Data Documentation

True if the PopDQ2MesonDQ method fails to reconstruct the outgoing diquark.

The generation is rejected and a new curtain quark as to be selected.

Definition at line 531 of file LundFlavourGenerator.h.

vector<double> Pythia7::LundFlavourGenerator::DQweight [private]

The lookup table for diquark weights in the popcorn model, used to compute the baryon weight when combining the DQ with a new Q in the Q2BaryonDQ() method.

Set by initialize().

Definition at line 651 of file LundFlavourGenerator.h.


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

Generated on Thu Apr 29 12:45:34 2010 for Pythia7 by  doxygen 1.5.5