PYTHIA
8.313
|
#include <HadronLevel.h>
Classes | |
class | PriorityNode |
Public Member Functions | |
HadronLevel ()=default | |
Constructor. | |
bool | init (TimeShowerPtr timesDecPtrIn, RHadronsPtr rHadronsPtrIn, LundFragmentationPtr fragPtrIn, vector< FragmentationModelPtr > *fragPtrsIn, DecayHandlerPtr decayHandlePtr, vector< int > handledParticles, StringIntPtr stringInteractionsPtrIn, PartonVertexPtr partonVertexPtrIn, SigmaLowEnergy &sigmaLowEnergyIn, NucleonExcitations &nucleonExcitationsIn) |
Initialize HadronLevel classes as required. More... | |
StringFlav * | getStringFlavPtr () |
Get pointer to StringFlav instance (needed by BeamParticle). | |
bool | next (Event &event) |
Generate the next event. More... | |
bool | decay (int iDec, Event &event) |
Try to decay the specified particle. Returns false if decay failed. | |
bool | moreDecays (Event &event) |
Special routine to allow more decays if on/off switches changed. More... | |
bool | rescatter (Event &event) |
Perform rescattering. Return true if new strings must be hadronized. More... | |
bool | initLowEnergyProcesses () |
Prepare and pick process for a low-energy hadron-hadron scattering. More... | |
int | pickLowEnergyProcess (int idA, int idB, double eCM, double mA, double mB) |
Pick process for a low-energy hadron-hadron scattering. More... | |
bool | doLowEnergyProcess (int i1, int i2, int procTypeIn, Event &event) |
Special routine to do a low-energy hadron-hadron scattering. | |
bool | hasVetoedHadronize () const |
Tell if we did an early user-defined veto of the event. | |
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 |
Protected Member Functions | |
virtual void | onInitInfoPtr () override |
Protected Member Functions inherited from PhysicsBase | |
PhysicsBase () | |
Default constructor. | |
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. | |
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 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 HadronLevel class contains the top-level routines to generate the transition from the partonic to the hadronic stage of an event.
bool init | ( | TimeShowerPtr | timesDecPtrIn, |
RHadronsPtr | rHadronsPtrIn, | ||
LundFragmentationPtr | fragPtrIn, | ||
vector< FragmentationModelPtr > * | fragPtrsIn, | ||
DecayHandlerPtr | decayHandlePtr, | ||
vector< int > | handledParticles, | ||
StringIntPtr | stringInteractionsPtrIn, | ||
PartonVertexPtr | partonVertexPtrIn, | ||
SigmaLowEnergy & | sigmaLowEnergyIn, | ||
NucleonExcitations & | nucleonExcitationsIn | ||
) |
Initialize HadronLevel classes as required.
Find settings. Initialize HadronLevel classes as required.
Store other input pointers.
Main flags.
For junction processing.
Allow R-hadron formation.
Particles that should decay or not before Bose-Einstein stage.
Displace hadron vertices from parton impact-parameter picture.
Need string density information be collected?
Initialize string interactions (Ropewalk and Flavour Ropes) if present.
Initialize auxiliary fragmentation classes.
Set the fragmentation weights container.
Initialize auxiliary administrative class.
Initialize the fragmentation pointers.
Initialize particle decays.
Initialize low-energy framework.
Initialize rescattering settings if applicable.
Break if conflicting settings.
Read settings for rescattering.
Initialize BoseEinstein.
Initialize DeuteronProduction.
Send flavour and z selection pointers to R-hadron machinery.
Initialize the colour tracing class.
Initialize the junction splitting class.
Done.
bool initLowEnergyProcesses | ( | ) |
Prepare and pick process for a low-energy hadron-hadron scattering.
Prepare to be able to pick a low-energy hadron-hadron scattering.
Prepare for low-energy QCD processes.
Return true if any process is switched on.
bool moreDecays | ( | Event & | event | ) |
Special routine to allow more decays if on/off switches changed.
Allow more decays if on/off switches changed. Note: does not do sequential hadronization, e.g. for Upsilon.
Colour-octet onia states must be decayed to singlet + gluon.
Loop through all entries to find those that should decay.
Done.
bool next | ( | Event & | event | ) |
Generate the next event.
Hadronize and decay the next parton-level.
Clear the fragmentation weights and flavor counts.
Store current event size to mark Parton Level content.
Colour-octet onia states must be decayed to singlet + gluon.
Set lifetimes for already existing hadrons, like onia.
Remove junction structures.
Possibility of hadronization inside decay, but then no BE second time.
First part: string fragmentation.
Find the complete colour singlet configuration of the event. Keep junctions if we do shoving.
Save list with rapidity pairs of the different string pieces.
Let strings interact in rope hadronization treatment. Do the shoving treatment.
Extract all string segments from the event and do the string reulsion.
Find singlets again.
Prepare for flavour ropes.
MiniStringFragmentation needs to know if the event is diffractive.
Fragment models that do not use the color systems, e.g. HiddenValleyFragmentation and RHadrons.
Process all colour singlet (sub)systems.
Collect sequentially all partons in a colour singlet subsystem.
String fragmentation of each colour singlet (sub)system.
Displace hadron vertices transversely from parton MPI + shower.
Calculate the in-situ flavor weights.
The event can be vetoed here by the user.
Second part: decays and hadronic rescattering.
If rescattering is on, perform rescattering.
If rescattering is off, perform only decays.
Third part: include Bose-Einstein effects among current particles.
Fourth part: sequential decays also of long-lived particles.
Fifth part: deuteron production.
Normally done first time around, but sometimes not. (e.g. Upsilon decay can cause create unstable hadrons).
Allow for QED radiation to be added to the full post-hadronization system, after particle decays. Up to the shower to decide if everything was already handled during each particle decay, and/or if there is more to do now (e.g., interleaved QED radiation may be added only after all decay chains have been determined). Note: leptons from the perturbative stage were already showered during the showerQEDafterRemnants stage in PartonLevel and not included here.
No 4th argument means shower must determine the starting scale itself.
Done.
|
inlineoverrideprotectedvirtual |
If an object needs to set up infoPtr for sub objects, override this and call registerSubObject for each object in question.
Reimplemented from PhysicsBase.
int pickLowEnergyProcess | ( | int | idA, |
int | idB, | ||
double | eCM, | ||
double | mA, | ||
double | mB | ||
) |
Pick process for a low-energy hadron-hadron scattering.
Chosen process.
If all processes are on, just call SigmaLowEnergy directly.
Trivial choice if only one process.
If only certain processes are on, calculate those cross sections.
Error if no processes has a positive cross section. Else pick process.
Pick specific resonance for proc == 9.
Done.
bool rescatter | ( | Event & | event | ) |
Perform rescattering. Return true if new strings must be hadronized.
Queue potential decays and rescatterings.
Get earliest decay/rescattering.
Skip if either particle has already interacted elsewhere.
Perform the queued action: decay.
If there is moreToDo, those things should also be handled in order?
Perform the queued action: two-body collision.
If multiple rescattering is on, check for new interactions.
If multiple rescattering is off, decay new hadrons.