PYTHIA
8.312
|
Base class for parton distribution functions. More...
#include <PartonDistributions.h>
Classes | |
struct | PDFEnvelope |
Error envelope from PDF uncertainty. More... | |
Public Member Functions | |
PDF (int idBeamIn=2212) | |
Constructor. | |
virtual | ~PDF () |
Virtual destructor. | |
virtual bool | init (int, string, int, Logger *) |
bool | isSetup () |
Confirm that PDF has been set up (important for LHAPDF and H1 Pomeron). | |
virtual void | setBeamID (int idBeamIn) |
Switch to new beam particle identities; for similar hadrons only. | |
void | resetValenceContent () |
Set valence content. More... | |
void | setValenceContent (int idVal1In, int idVal2In, int idVal3In) |
virtual void | setExtrapolate (bool) |
Allow extrapolation beyond boundaries. This is optional. | |
double | xf (int id, double x, double Q2) |
Read out parton density. More... | |
double | xfVal (int id, double x, double Q2) |
Read out valence and sea part of parton densities. More... | |
double | xfSea (int id, double x, double Q2) |
Only sea part of parton densities. More... | |
virtual bool | insideBounds (double, double) |
Check whether x and Q2 values fall inside the fit bounds (LHAPDF6 only). | |
virtual double | alphaS (double) |
Access the running alpha_s of a PDF set (LHAPDF6 only). | |
virtual double | mQuarkPDF (int) |
Return quark masses used in the PDF fit (LHAPDF6 only). | |
virtual int | nMembers () |
Return number of members of this PDF family (LHAPDF6 only). | |
virtual void | calcPDFEnvelope (int, double, double, int) |
Calculate PDF envelope. | |
virtual void | calcPDFEnvelope (pair< int, int >, pair< double, double >, double, int) |
virtual PDFEnvelope | getPDFEnvelope () |
virtual double | gammaPDFxDependence (int, double) |
Approximate photon PDFs by decoupling the scale and x-dependence. | |
virtual double | gammaPDFRefScale (int) |
Provide the reference scale for logarithmic Q^2 evolution for photons. | |
virtual int | sampleGammaValFlavor (double) |
Sample the valence content for photons. | |
virtual double | xfIntegratedTotal (double) |
The total x-integrated PDFs. Relevant for MPIs with photon beams. | |
virtual double | xGamma () |
Return the sampled value for x_gamma. | |
virtual void | xPom (double=-1.0) |
Keep track of pomeron momentum fraction. | |
virtual double | xfFlux (int, double, double) |
Return accurate and approximated photon fluxes and PDFs. | |
virtual double | xfApprox (int, double, double) |
virtual double | xfGamma (int, double, double) |
virtual double | intFluxApprox () |
virtual bool | hasApproxGammaFlux () |
virtual double | getXmin () |
Return the kinematical limits and sample Q2 and x. | |
virtual double | getXhadr () |
virtual double | sampleXgamma (double) |
virtual double | sampleQ2gamma (double) |
virtual double | fluxQ2dependence (double) |
virtual double | xfMax (int id, double x, double Q2) |
Normal PDFs unless gamma inside lepton -> an overestimate for sampling. | |
virtual double | xfSame (int id, double x, double Q2) |
Normal PDFs unless gamma inside lepton -> Do not sample x_gamma. | |
virtual void | setVMDscale (double=1.) |
Allow for new scaling factor for VMD PDFs. | |
bool | sSymmetric () const |
Return if s/sbar, c/cbar, and b/bbar PDFs are symmetric. | |
bool | cSymmetric () const |
bool | bSymmetric () const |
void | sSymmetric (bool sSymmetricIn) |
Set s/sbar, c/cbar, and b/bbar PDFs symmetric. | |
void | cSymmetric (bool cSymmetricIn) |
void | bSymmetric (bool bSymmetricIn) |
Protected Member Functions | |
virtual void | xfUpdate (int id, double x, double Q2)=0 |
Update parton densities. | |
void | printErr (string loc, string errMsg, Logger *loggerPtr=nullptr) |
Small routine for error printout, depending on loggerPtr existing or not. | |
double | xfRaw (int id) const |
Get the raw stored value for the quark variable corresponding to the id. More... | |
bool | isValence (int id) const |
Check whether the specified id is a valence quark. | |
Protected Attributes | |
int | idBeam |
Store relevant quantities. | |
int | idBeamAbs |
int | idSav |
int | idVal1 |
int | idVal2 |
int | idVal3 |
double | xSav |
double | Q2Sav |
double | xu |
Stored quantities. | |
double | xd |
double | xs |
double | xubar |
double | xdbar |
double | xsbar |
double | xc |
double | xb |
double | xcbar |
double | xbbar |
double | xg |
double | xlepton |
double | xgamma |
bool | isSet |
bool | isInit |
int | beamType |
bool | hasGammaInLepton |
True if a photon beam inside a lepton beam, otherwise set false. | |
bool | sSymmetricSave = false |
Whether to treat flavoured PDFs as symmetric, for efficiency. | |
bool | cSymmetricSave = true |
bool | bSymmetricSave = true |
Base class for parton distribution functions.
|
inlinevirtual |
void resetValenceContent | ( | ) |
Set valence content.
Base class for parton distribution functions.
Set valence content to the default for the current beam.
Gluon has no valence.
Photons can fluctuate. 22 indicates that valence has not been set.
Lepton and neutrino.
Pomeron is treated as pi0-like.
Nuclear beams.
Generic hadron beams.
Decompose default valence content.
For mesons, one quark is an antiquark.
Flip signs for antiparticle beam.
Set valence content.
Determine and store beam type. Diagonal meson special cases.
pi0-like are different from other diagonal mesons.
K_S,L special case.
For other cases, beamType tells about isospin symmetries.
Count number of u/d quarks.
double xf | ( | int | id, |
double | x, | ||
double | Q2 | ||
) |
Read out parton density.
Standard parton densities.
Need to update if flavour, x or Q2 changed. Use idSav = 9 to indicate that ALL flavours are up-to-date. Assume that flavour and antiflavour always updated simultaneously.
Photon/gluon content is always handled the same way.
Photon beam, always the full PDFs.
Lepton or neutrino beam, only charged leptons may emit photons.
Nuclear beam.
Special treatment for pi0-like mesons, based on pi+ content.
For other diagonal mesons, q = sea + valence; qbar = sea.
Special treatment of K_S/K_L, based on K+ content.
For other hadrons, handle u/d through isospin symmetry.
No rearrangement necessary (e.g. p, Sigma+, Xi0, Omega-, pi+).
Switch u <-> d (e.g. n, Sigma-, Xi-, K0, D+, B0).
Use average of u and d (e.g. Lambda0, Sigma0).
Delta++: move d valence into u.
Delta-: as Delta++, but switch u <-> d.
s/c/b is always the same.
None of the above cases work, e.g. id is not a valid particle.
|
protected |
Get the raw stored value for the quark variable corresponding to the id.
Get the raw value for the quark variable corresponding to the id.
double xfSea | ( | int | id, |
double | x, | ||
double | Q2 | ||
) |
Only sea part of parton densities.
Update configuration if necessary.
Gluon is always sea.
Photon beam.
If a valence parton return only the sea part. Otherwise return the total PDF.
Except in pointlike photon beams, gamma is always sea.
The only sea in leptons are photons.
Nuclear PDFs are not yet handled.
Special treatment for pi0-like mesons, based on pi+ content.
For other diagonal mesons, q = sea + valence; qbar = sea.
Otherwise, if q is valence xor beam is an antiparticle, flip sign.
Special treatment of K_S/K_L, based on K+ content.
For other hadrons, handle u/d through isospin symmetry.
No rearrangement necessary (e.g. p, Sigma+, Xi0, Omega-, pi+).
Switch u <-> d (e.g. n, Delta-, Sigma-, Xi-, K0, D+, B0).
Use average of u and d (e.g. Lambda0, Sigma0).
For Delta++, always use qbar value.
s/c/b is always the same.
None of the above cases work, e.g. id is not a valid particle.
double xfVal | ( | int | id, |
double | x, | ||
double | Q2 | ||
) |
Read out valence and sea part of parton densities.
Only valence part of parton densities.
Check parton is valence.
Update configuration if necessary.
Photon beam, return non-zero valence content only if flavour set.
Photon/gluon content is never valence.
For lepton and neutrino beams, the valence is the lepton content itself.
Nuclear PDFs are not yet defined.
Special treatment for pi0-like mesons, based on pi+ content.
For other diagonal mesons, q = sea + valence; qbar = sea.
Special treatment of K_S/K_L, based on K+ content.
For other hadrons, handle u/d through isospin symmetry.
No rearrangement necessary (e.g. p, Sigma+, Xi0, Omega-, pi+).
Switch u <-> d (e.g. n, Sigma-, Xi-, K0, D+, B0).
Use average of u and d (e.g. Lambda0, Sigma0).
Delta++/-: take both d and u (we already checked that it's valence).
s/c/b is always the same.
None of the above cases work, e.g. id is not a valid particle.
|
protected |
For hadrons, beamType defines special cases and determines how to handle isospin symmetries. 1: no rearrangement (e.g. p, Sigma+, Omega-, pi+) -1: switch u <-> d (e.g. n, Sigma-, Xi-, K0) 0: take average of u and d (e.g. Sigma0, Lambda0) 2/-2: Delta++/Delta- 111: pi0-like special case (pi0, rho0, omega, etc.) 221: Other diagonal meson cases (eta, eta', phi, J/psi, Upsilon, etc.) 130: K_S,L special cases