PYTHIA
8.312
|
#include <NucleonExcitations.h>
Public Member Functions | |
NucleonExcitations ()=default | |
Constructor. | |
NucleonExcitations (const NucleonExcitations &)=delete | |
Objects of this class should only be passed as references. | |
NucleonExcitations (NucleonExcitations &&)=delete | |
NucleonExcitations & | operator= (const NucleonExcitations &)=delete |
NucleonExcitations & | operator= (NucleonExcitations &&)=delete |
bool | init (string path) |
Read in excitation data from the specified file. | |
bool | init (istream &stream) |
Read in excitation data from the specified stream. More... | |
bool | check () |
Validate that the loaded data makes sense. More... | |
vector< int > | getExcitationMasks () const |
Get all nucleon excitations from particle data. More... | |
vector< pair< int, int > > | getChannels () const |
Get masks (ids without quark content) for all implemented cross sections. | |
double | sigmaExTotal (double eCM) const |
Get total excitation cross sections for NN at the specified energy. More... | |
double | sigmaExPartial (double eCM, int maskC, int maskD) const |
Get cross section for NN -> CD. Quark content in masks is ignored. More... | |
bool | pickExcitation (int idA, int idB, double eCM, int &idCOut, double &mCOut, int &idDOut, double &mDOut) |
Pick excited particles and their masses. More... | |
double | sigmaCalc (double eCM) const |
Calculate the total excitation cross section without using interpolation. | |
double | sigmaCalc (double eCM, int maskC, int maskD) const |
Calculate partial excitation cross section without using interpolation. More... | |
bool | parameterizeAll (int precision, double threshold=8.) |
Regenerate parameterization for all cross sections. More... | |
bool | save (ostream &stream) const |
Write all cross section data to an xml file. More... | |
bool | save (string file="NucleonExcitations.dat") const |
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 |
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. | |
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. | |
void | registerSubObject (PhysicsBase &pb) |
Register a sub object that should have its information in sync with this. | |
Protected Attributes inherited from PhysicsBase | |
Info * | infoPtr = {} |
Settings * | settingsPtr = {} |
Pointer to the settings database. | |
ParticleData * | particleDataPtr = {} |
Pointer to the particle data table. | |
Logger * | loggerPtr = {} |
Pointer to logger. | |
HadronWidths * | hadronWidthsPtr = {} |
Pointer to the hadron widths data table. | |
Rndm * | rndmPtr = {} |
Pointer to the random number generator. | |
CoupSM * | coupSMPtr = {} |
Pointers to SM and SUSY couplings. | |
CoupSUSY * | coupSUSYPtr = {} |
BeamSetup * | beamSetupPtr = {} |
BeamParticle * | beamAPtr = {} |
BeamParticle * | beamBPtr = {} |
BeamParticle * | beamPomAPtr = {} |
BeamParticle * | beamPomBPtr = {} |
BeamParticle * | beamGamAPtr = {} |
BeamParticle * | beamGamBPtr = {} |
BeamParticle * | beamVMDAPtr = {} |
BeamParticle * | beamVMDBPtr = {} |
PartonSystems * | partonSystemsPtr = {} |
Pointer to information on subcollision parton locations. | |
SigmaTotal * | sigmaTotPtr = {} |
Pointers to the total/elastic/diffractive cross sections. | |
SigmaCombined * | sigmaCmbPtr = {} |
set< PhysicsBase * > | subObjects |
UserHooksPtr | userHooksPtr |
The NucleonExcitations class is used to calculate cross sections for explicit nucleon excitation channels, e.g. p p -> p p(1520).
bool check | ( | ) |
Validate that the loaded data makes sense.
Check that all excitations make sense.
Check that ids actually correspond to particles.
vector< int > getExcitationMasks | ( | ) | const |
Get all nucleon excitations from particle data.
Check quark content to make sure each mask is included only once.
bool init | ( | istream & | stream | ) |
Read in excitation data from the specified stream.
Lower bound, needed for total cross section parameterization.
Read header info.
Configuration to use when parameterizing total cross section.
Process each line sequentially.
Read channel data.
Update eMin if needed.
Add channel to the list.
Pre-sum sigmas to create one parameterization for the total sigma.
Done.
bool parameterizeAll | ( | int | precision, |
double | threshold = 8. |
||
) |
Regenerate parameterization for all cross sections.
Calculate high energy scale factor for nucleons and Delta(1232).
Create new excitation channels.
Define helpful variables for the current excitation.
Calculate high energy scale factor.
Generate N + X cross sections.
Generate Delta(1232) + X cross sections.
Reparameterize total cross section.
Done.
bool pickExcitation | ( | int | idA, |
int | idB, | ||
double | eCM, | ||
int & | idCOut, | ||
double & | mCOut, | ||
int & | idDOut, | ||
double & | mDOut | ||
) |
Pick excited particles and their masses.
Pick an excitation and mass distribution for the specified particles.
Excitations are available only for nucleons.
If antiparticles, flip signs and flip back at the end.
Pick an excitation channel.
Below threshold, use parameterization.
Above threshold, use approximation (ignoring incoming phase space).
The two nucleons have equal chance of becoming excited.
Construct ids of resonances from masks plus incoming quark content.
Pick masses.
Set output values and return.
bool save | ( | ostream & | stream | ) | const |
Write all cross section data to an xml file.
Write header
Write channels.
Done.
double sigmaCalc | ( | double | eCM, |
int | maskC, | ||
int | maskD | ||
) | const |
Calculate partial excitation cross section without using interpolation.
Convert masks to particle ids.
No cross section below threshold.
Calculate matrix element, based on method by UrQMD.
Return cross section.
double sigmaExPartial | ( | double | eCM, |
int | maskC, | ||
int | maskD | ||
) | const |
Get cross section for NN -> CD. Quark content in masks is ignored.
Remove quark content from masks.
Ensure ordering is ND, NX* or DX*.
Find the corresponding channel.
At low energy, use interpolation.
At high energy, use parameterization.
Cross section is zero if channel does not exist.
double sigmaExTotal | ( | double | eCM | ) | const |
Get total excitation cross sections for NN at the specified energy.
Below threshold, use parameterization.
Above threshold, sum approximated integrals.
Average over incoming phase space.