This class selects the hadron flavours of a cluster decay. More...
#include <HadronSelector.h>
Public Member Functions | |
HadronSelector (unsigned int) | |
The default constructor. | |
virtual tcPDPair | chooseHadronPair (const Energy cluMass, tcPDPtr par1, tcPDPtr par2) const |
Method to return a pair of hadrons given the PDG codes of two or three constituents. | |
tcPDPtr | chooseSingleHadron (tcPDPtr par1, tcPDPtr par2, Energy mass) const |
Select the single hadron for a cluster decay return null pointer if not a single hadron decay. | |
tcPDPair | lightestHadronPair (tcPDPtr ptr1, tcPDPtr ptr2) const |
This returns the lightest pair of hadrons given by the flavours. | |
Energy | massLightestHadronPair (tcPDPtr ptr1, tcPDPtr ptr2) const |
Returns the mass of the lightest pair of hadrons with the given particles. | |
tcPDPtr | lightestHadron (tcPDPtr ptr1, tcPDPtr ptr2) const |
Returns the lightest hadron formed by the given particles. | |
vector< pair< tcPDPtr, double > > | hadronsBelowThreshold (Energy threshold, tcPDPtr ptr1, tcPDPtr ptr2) const |
Returns the hadrons below the constituent mass threshold formed by the given particles, together with their total weight. | |
Energy | massLightestHadron (tcPDPtr ptr1, tcPDPtr ptr2) const |
Return the nominal mass of the hadron returned by lightestHadron() | |
double | pwt (long pid) const |
Access the parton weights. | |
virtual std::tuple< bool, bool, bool > | selectBaryon (const Energy cluMass, tcPDPtr par1, tcPDPtr par2) const |
Force baryon/meson selection. | |
virtual double | strangeWeight (const Energy cluMass, tcPDPtr par1, tcPDPtr par2) const |
Strange quark weight. | |
virtual PDPtr | makeDiquark (tcPDPtr par1, tcPDPtr par2) |
Return the particle data of the diquark (anti-diquark) made by the two quarks (antiquarks) par1, par2. | |
![]() | |
virtual bool | defaultInit () |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
![]() | |
string | fullName () const |
string | name () const |
string | path () const |
string | comment () const |
void | setup (istream &is) |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
virtual void | debugme () const |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
virtual IBPtr | fullclone () const |
![]() | |
void | debug () const |
virtual void | debugme () const |
![]() | |
CounterType | referenceCount () const |
![]() | |
Named (const string &newName=string()) | |
Named (const Named &)=default | |
const string & | name () const |
bool | operator== (const Named &other) const |
bool | operator< (const Named &other) const |
Private Attributes | |
A parameter used for determining when clusters are too light. | |
This parameter is used for setting the lower threshold, \( t \) as \[ t' = t(1 + r B^1_{\rm lim}) \] where \( r \) is a random number [0,1]. | |
double | _limBottom |
double | _limCharm |
double | _limExotic |
unsigned int | belowThreshold_ |
Option for the selection of hadrons below the pair threshold. | |
map< pair< long, long >, tcPDPair > | lightestHadrons_ |
Caches of lightest pairs for speed. | |
Standard Interfaced functions. | |
enum | MesonMultiplets { Lmax = 3 , Jmax = 4 , Nmax = 4 } |
Enums so arrays can be statically allocated. More... | |
vector< PDPtr > | _partons |
The PDG codes of the constituent particles allowed. | |
vector< PDPtr > | _forbidden |
The PDG codes of the hadrons which cannot be produced in the hadronization. | |
map< long, double > | _pwt |
Weights for quarks and diquarks. | |
double | _etamix |
The mixing angles for the \(I=0\) mesons containing light quarks. | |
double | _phimix |
The \(\phi-\omega\) mixing angle. | |
double | _h1mix |
The \(h_1'-h_1\) mixing angle. | |
double | _f0mix |
The \(f_0(1710)-f_0(1370)\) mixing angle. | |
double | _f1mix |
The \(f_1(1420)-f_1(1285)\) mixing angle. | |
double | _f2mix |
The \(f'_2-f_2\) mixing angle. | |
double | _eta2mix |
The \(\eta_2(1870)-\eta_2(1645)\) mixing angle. | |
double | _omhmix |
The \(\phi(???)-\omega(1650)\) mixing angle. | |
double | _ph3mix |
The \(\phi_3-\omega_3\) mixing angle. | |
double | _eta2Smix |
The \(\eta(1475)-\eta(1295)\) mixing angle. | |
double | _phi2Smix |
The \(\phi(1680)-\omega(1420)\) mixing angle. | |
vector< double > | _weight1S0 |
The weights for the various meson multiplets to be used to supress the production of particular states. | |
vector< double > | _weight3S1 |
The weights for the \(\phantom{1}^3S_1\) multiplets. | |
vector< double > | _weight1P1 |
The weights for the \(\phantom{1}^1P_1\) multiplets. | |
vector< double > | _weight3P0 |
The weights for the \(\phantom{1}^3P_0\) multiplets. | |
vector< double > | _weight3P1 |
The weights for the \(\phantom{1}^3P_1\) multiplets. | |
vector< double > | _weight3P2 |
The weights for the \(\phantom{1}^3P_2\) multiplets. | |
vector< double > | _weight1D2 |
The weights for the \(\phantom{1}^1D_2\) multiplets. | |
vector< double > | _weight3D1 |
The weights for the \(\phantom{1}^3D_1\) multiplets. | |
vector< double > | _weight3D2 |
The weights for the \(\phantom{1}^3D_2\) multiplets. | |
vector< double > | _weight3D3 |
The weights for the \(\phantom{1}^3D_3\) multiplets. | |
vector< vector< vector< double > > > | _repwt |
The weights for the excited meson multiplets. | |
HadronTable | _table |
The table of hadron data. | |
unsigned int | _topt |
Option for the construction of the tables. | |
unsigned int | _trial |
Which particles to produce for debugging purposes. | |
virtual void | doinit () |
Initialize this object after the setup phase before saving an EventGenerator to disk. | |
void | insertToHadronTable (tPDPtr &particle, int flav1, int flav2) |
A sub-function of HadronSelector::constructHadronTable(). | |
virtual void | constructHadronTable () |
Construct the table of hadron data This is the main method to initialize the hadron data (mainly the weights associated to each hadron, taking into account its spin, eventual isoscalar-octect mixing, singlet-decuplet factor). | |
const HadronTable & | table () const |
Access to the table of hadrons. | |
HadronTable & | table () |
Access to the table of hadrons. | |
const vector< PDPtr > & | partons () const |
Access to the list of partons. | |
vector< PDPtr > & | partons () |
Access to the list of partons. | |
map< long, double > & | pwt () |
Access the parton weights. | |
double | probabilityMixing (const double angleMix, const int order) const |
Methods for the mixing of \(I=0\) mesons. | |
virtual double | mixingStateWeight (long id) const |
Returns the weight of given mixing state. | |
double | specialWeight (long id) const |
Calculates a special weight specific to a given hadron. | |
virtual double | mesonWeight (long id) const |
Weights for mesons. | |
virtual double | baryonWeight (long id) const =0 |
Weights for baryons. | |
int | signHadron (tcPDPtr ptr1, tcPDPtr ptr2, tcPDPtr hadron) const |
This method returns the proper sign ( > 0 hadron; < 0 anti-hadron ) for the input PDG id idHad > 0, suppose to be made by the two constituent particle pointers: ptr1 and ptr2 (both with proper sign). | |
virtual void | insertMeson (HadronInfo a, int flav1, int flav2) |
Insert a meson in the table. | |
virtual void | insertOneHalf (HadronInfo a, int flav1, int flav2) |
Insert a spin \(\frac12\) baryon in the table. | |
virtual void | insertThreeHalf (HadronInfo a, int flav1, int flav2) |
Insert a spin \(\frac32\) baryon in the table. | |
HadronSelector & | operator= (const HadronSelector &)=delete |
The assignment operator is private and must never be called. | |
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 void | Init () |
The standard Init function used to initialize the interfaces. | |
Additional Inherited Members | |
![]() | |
enum | InitState |
![]() | |
typedef unsigned int | CounterType |
![]() | |
static void | Init () |
![]() | |
static void | Init () |
![]() | |
static void | Init () |
![]() | |
initializing | |
uninitialized | |
initialized | |
runready | |
![]() | |
const unsigned long | uniqueId |
![]() | |
void | reporeg (IBPtr object, string name) const |
bool | setDefaultReference (PtrT &ptr, string classname, string objectname) |
Interfaced (const string &newName) | |
Interfaced (const Interfaced &i) | |
void | setGenerator (tEGPtr generator) |
![]() | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
virtual IBPtr | clone () const=0 |
InterfacedBase (string newName) | |
InterfacedBase (const InterfacedBase &i) | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
![]() | |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
![]() | |
const Named & | operator= (const Named &other) |
const string & | name (const string &newName) |
![]() | |
static void | registerRepository (IBPtr) |
static void | registerRepository (IBPtr, string newName) |
This class selects the hadron flavours of a cluster decay.
This is the base class for the selection of either a pair of hadrons, or in some cases a single hadron. The different approaches which were previously implemented in this class are now implemented in the HwppSelector and Hw64Selector which inherit from this class.
This class implements a number of methods which are needed by all models and in addition contains the weights for the different meson multiplets and mixing of the light \(I=0\) mesons.
Definition at line 51 of file HadronSelector.h.
|
private |
Enums so arrays can be statically allocated.
Defines values for array sizes. L,J,N max values for excited mesons.
Definition at line 576 of file HadronSelector.h.
|
protectedpure virtual |
Weights for baryons.
Implemented in Herwig::Hw64Selector, Herwig::Hw7Selector, and Herwig::HwppSelector.
Referenced by specialWeight().
|
virtual |
Method to return a pair of hadrons given the PDG codes of two or three constituents.
cluMass | The mass of the cluster |
par1 | The first constituent |
par2 | The second constituent |
par3 | The third constituent |
Reimplemented in Herwig::Hw64Selector.
tcPDPtr Herwig::HadronSelector::chooseSingleHadron | ( | tcPDPtr | par1, |
tcPDPtr | par2, | ||
Energy | mass | ||
) | const |
Select the single hadron for a cluster decay return null pointer if not a single hadron decay.
par1 | 1st constituent |
par2 | 2nd constituent |
mass | Mass of the cluster |
|
protectedvirtual |
Construct the table of hadron data This is the main method to initialize the hadron data (mainly the weights associated to each hadron, taking into account its spin, eventual isoscalar-octect mixing, singlet-decuplet factor).
This is the method that one should update when new or updated hadron data is available.
This class implements the construction of the basic table but can be overridden if needed in inheriting classes.
The rationale for factors used for diquarks involving different quarks can be can be explained by taking a prototype example that in the exact SU(2) limit, in which:
\[m_u=m_d\]
\[M_p=M_n=M_\Delta\]
and we will have equal numbers of u and d quarks produced. Suppose that we weight 1 the diquarks made of the same quark and 1/2 those made of different quarks, the fractions of u and d baryons (p, n, Delta) we get are the following:
which is correct, and therefore the weight 1/2 for the diquarks of different types of quarks is justified (at least in this limit of exact SU(2) ).
|
protectedvirtual |
Initialize this object after the setup phase before saving an EventGenerator to disk.
The array _repwt is initialized using the interfaces to set different weights for different meson multiplets and the constructHadronTable() method called to complete the construction of the hadron tables.
InitException | if object could not be initialized properly. |
Reimplemented from ThePEG::InterfacedBase.
Reimplemented in Herwig::Hw64Selector, Herwig::Hw7Selector, and Herwig::HwppSelector.
vector< pair< tcPDPtr, double > > Herwig::HadronSelector::hadronsBelowThreshold | ( | Energy | threshold, |
tcPDPtr | ptr1, | ||
tcPDPtr | ptr2 | ||
) | const |
Returns the hadrons below the constituent mass threshold formed by the given particles, together with their total weight.
Given the id of two (or three) constituents of a cluster, it returns the lightest hadron with proper flavour numbers.
threshold | The theshold |
ptr1 | is the first constituent |
ptr2 | is the second constituent |
|
static |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
|
protectedvirtual |
Insert a spin \(\frac12\) baryon in the table.
Reimplemented in Herwig::Hw7Selector.
|
protectedvirtual |
Insert a spin \(\frac32\) baryon in the table.
Reimplemented in Herwig::Hw7Selector.
|
protected |
A sub-function of HadronSelector::constructHadronTable().
It receives the information of a prospective Hadron and inserts it into the hadron table construct.
particle | is a particle data pointer to the hadron |
flav1 | is the first constituent of the hadron |
flav2 | is the second constituent of the hadron |
Returns the lightest hadron formed by the given particles.
Given the id of two (or three) constituents of a cluster, it returns the lightest hadron with proper flavour numbers.
ptr1 | is the first constituent |
ptr2 | is the second constituent |
This returns the lightest pair of hadrons given by the flavours.
Given the two (or three) constituents of a cluster, it returns the two lightest hadrons with proper flavour numbers. Furthermore, the first of the two hadrons must have the constituent with par1, and the second must have the constituent with par2.
The method is implemented by calling twice lightestHadron, once with (par1,quarktopick->CC()) ,and once with (par2,quarktopick) where quarktopick is either the pointer to d or u quarks . In fact, the idea is that whatever the flavour of par1 and par2, no matter if (anti-)quark or (anti-)diquark, the lightest pair of hadrons containing flavour par1 and par2 will have either flavour d or u, being the lightest quarks. The method returns the pair (PDPtr(),PDPtr()) if anything goes wrong.
Return the particle data of the diquark (anti-diquark) made by the two quarks (antiquarks) par1, par2.
par1 | (anti-)quark data pointer |
par2 | (anti-)quark data pointer |
Reimplemented in Herwig::Hw7Selector.
Return the nominal mass of the hadron returned by lightestHadron()
ptr1 | is the first constituent |
ptr2 | is the second constituent |
Definition at line 154 of file HadronSelector.h.
References _table, and ThePEG::Exception::eventerror.
Returns the mass of the lightest pair of hadrons with the given particles.
ptr1 | is the first constituent |
ptr2 | is the second constituent |
Definition at line 116 of file HadronSelector.h.
References lightestHadrons_, and ThePEG::ZERO.
|
protectedvirtual |
Returns the weight of given mixing state.
id | The PDG code of the meson |
|
privatedelete |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
|
inlineprotected |
Access to the list of partons.
Definition at line 314 of file HadronSelector.h.
References _partons.
|
inlineprotected |
Access to the list of partons.
Definition at line 307 of file HadronSelector.h.
References _partons.
void Herwig::HadronSelector::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. |
void Herwig::HadronSelector::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
|
inlineprotected |
Methods for the mixing of \(I=0\) mesons.
Return the probability of mixing for Octet-Singlet isoscalar mixing, the probability of the \(\frac1{\sqrt{2}}(|u\bar{u}\rangle + |d\bar{d}\rangle)\) component is returned.
angleMix | The mixing angle in degrees (not radians) |
order | is 0 for no mixing, 1 for the first resonance of a pair, 2 for the second one. The mixing is defined so that for example with \(\eta-\eta'\) mixing where the mixing angle is \(\theta=-23^0$ with $\eta\) as the first particle and \(\eta'\) the second one. The convention used is \[\eta = \cos\theta|\eta_{\rm octet }\rangle -\sin\theta|\eta_{\rm singlet}\rangle\] \[\eta' = \sin\theta|\eta_{\rm octet }\rangle -\cos\theta|\eta_{\rm singlet}\rangle\] with\[|\eta_{\rm singlet}\rangle = \frac1{\sqrt{3}} \left[|u\bar{u}\rangle + |d\bar{d}\rangle + |s\bar{s}\rangle\right]\] \[|\eta_{\rm octet }\rangle = \frac1{\sqrt{6}} \left[|u\bar{u}\rangle + |d\bar{d}\rangle - 2|s\bar{s}\rangle\right]\] |
Definition at line 351 of file HadronSelector.h.
References ThePEG::Constants::pi, ThePEG::sqr(), and ThePEG::sqrt().
|
inlineprotected |
|
inline |
|
virtual |
Force baryon/meson selection.
Reimplemented in Herwig::Hw7Selector, and Herwig::HwppSelector.
|
inlineprotected |
Calculates a special weight specific to a given hadron.
id | The PDG code of the hadron |
Definition at line 373 of file HadronSelector.h.
References baryonWeight(), and mesonWeight().
|
virtual |
Strange quark weight.
Reimplemented in Herwig::Hw7Selector, and Herwig::HwppSelector.
|
inlineprotected |
|
inlineprotected |
|
private |
The \(\eta_2(1870)-\eta_2(1645)\) mixing angle.
Definition at line 480 of file HadronSelector.h.
|
private |
The \(\eta(1475)-\eta(1295)\) mixing angle.
Definition at line 495 of file HadronSelector.h.
|
private |
The mixing angles for the \(I=0\) mesons containing light quarks.
The \(\eta-\eta'\) mixing angle
Definition at line 450 of file HadronSelector.h.
|
private |
The \(f_0(1710)-f_0(1370)\) mixing angle.
Definition at line 465 of file HadronSelector.h.
|
private |
The \(f_1(1420)-f_1(1285)\) mixing angle.
Definition at line 470 of file HadronSelector.h.
|
private |
The \(f'_2-f_2\) mixing angle.
Definition at line 475 of file HadronSelector.h.
|
private |
The PDG codes of the hadrons which cannot be produced in the hadronization.
Definition at line 436 of file HadronSelector.h.
|
private |
The \(h_1'-h_1\) mixing angle.
Definition at line 460 of file HadronSelector.h.
|
private |
Definition at line 597 of file HadronSelector.h.
|
private |
Definition at line 598 of file HadronSelector.h.
|
private |
Definition at line 599 of file HadronSelector.h.
|
private |
The \(\phi(???)-\omega(1650)\) mixing angle.
Definition at line 485 of file HadronSelector.h.
|
private |
The PDG codes of the constituent particles allowed.
Definition at line 431 of file HadronSelector.h.
Referenced by partons().
|
private |
The \(\phi_3-\omega_3\) mixing angle.
Definition at line 490 of file HadronSelector.h.
|
private |
The \(\phi(1680)-\omega(1420)\) mixing angle.
Definition at line 500 of file HadronSelector.h.
|
private |
The \(\phi-\omega\) mixing angle.
Definition at line 455 of file HadronSelector.h.
|
private |
Weights for quarks and diquarks.
Definition at line 441 of file HadronSelector.h.
Referenced by pwt().
|
private |
The weights for the excited meson multiplets.
Definition at line 562 of file HadronSelector.h.
|
private |
The table of hadron data.
Definition at line 567 of file HadronSelector.h.
Referenced by massLightestHadron(), and table().
|
private |
Option for the construction of the tables.
Definition at line 582 of file HadronSelector.h.
|
private |
Which particles to produce for debugging purposes.
Definition at line 587 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^1D_2\) multiplets.
Definition at line 541 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^1P_1\) multiplets.
Definition at line 521 of file HadronSelector.h.
|
private |
The weights for the various meson multiplets to be used to supress the production of particular states.
The weights for the \(\phantom{1}^1S_0\) multiplets
Definition at line 511 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3D_1\) multiplets.
Definition at line 546 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3D_2\) multiplets.
Definition at line 551 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3D_3\) multiplets.
Definition at line 556 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3P_0\) multiplets.
Definition at line 526 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3P_1\) multiplets.
Definition at line 531 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3P_2\) multiplets.
Definition at line 536 of file HadronSelector.h.
|
private |
The weights for the \(\phantom{1}^3S_1\) multiplets.
Definition at line 516 of file HadronSelector.h.
|
private |
Option for the selection of hadrons below the pair threshold.
Definition at line 605 of file HadronSelector.h.
|
private |
Caches of lightest pairs for speed.
Masses of lightest hadron pair
Definition at line 614 of file HadronSelector.h.
Referenced by massLightestHadronPair().