#include <LundFlavourGenerator.h>
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< WeightsVec > | WeightsTable |
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 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 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. |
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.
FlavourGenerator
Definition at line 43 of file LundFlavourGenerator.h.
typedef vector<double> Pythia7::LundFlavourGenerator::WeightsVec |
typedef WeightsVec::const_iterator Pythia7::LundFlavourGenerator::WeightsVecPtr |
typedef vector< WeightsVec > Pythia7::LundFlavourGenerator::WeightsTable |
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.
quark | a quark, antiquark, diquark or antidiquark. |
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).
inPD1 | the first flavour. | |
inPD2 | the second flavour. |
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.
q1 | the PDG code of the first flavour. | |
q2 | the PDG code of the second flavour. | |
q3 | the PDG code of the third flavour. |
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.
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.
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.
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.
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.
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 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 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.
bool Pythia7::LundFlavourGenerator::thePopRejection [mutable, private] |
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.