PYTHIA
8.312
|
#include <ProcessLevel.h>
Public Member Functions | |
ProcessLevel ()=default | |
Constructor. | |
~ProcessLevel () | |
Destructor to delete processes in containers. More... | |
bool | init (bool doLHAin, SLHAinterface *slhaInterfacePtrIn, vector< SigmaProcessPtr > &sigmaPtrs, vector< PhaseSpacePtr > &phaseSpacePtrs) |
Initialization. More... | |
void | setLHAPtr (LHAupPtr lhaUpPtrIn) |
Store or replace Les Houches pointer. | |
void | updateBeamIDs () |
Switch to new beam particle identities; for similar hadrons only. More... | |
bool | next (Event &process, int procTypeIn=0) |
Generate the next "hard" process. More... | |
bool | nextLHAdec (Event &process) |
Special case: LHA input of resonance decay only. More... | |
void | accumulate (bool doAccumulate=true) |
Accumulate and update statistics (after possible user veto). More... | |
void | statistics (bool reset=false) |
Print statistics on cross sections and number of events. More... | |
void | resetStatistics () |
Reset statistics. More... | |
void | findJunctions (Event &junEvent) |
Add any junctions to the process event record list. More... | |
void | initDecays (LHAupPtr lhaUpPtrIn) |
Initialize and call resonance decays separately. | |
bool | nextDecays (Event &process) |
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 ProcessLevel class contains the top-level routines to generate the characteristic "hard" process of an event.
~ProcessLevel | ( | ) |
Destructor to delete processes in containers.
Destructor.
Run through list of first hard processes and delete them.
Run through list of second hard processes and delete them.
void accumulate | ( | bool | doAccumulate = true | ) |
Accumulate and update statistics (after possible user veto).
Increase number of accepted events.
Provide current generated cross section estimate.
Normally only one hard interaction. Then store info and done.
Increase counter for a second hard interaction.
Cross section estimate for second hard process.
Average impact-parameter factor.
Cross section estimate for combination of first and second process. Combine two possible ways and take average.
Store info and done.
void findJunctions | ( | Event & | junEvent | ) |
Add any junctions to the process event record list.
Add any junctions to the process event record list. Also check that do not doublebook if called repeatedly.
Check all hard vertices for BNV
Ignore colorless particles and stages before hard-scattering final state. Also ignore shower branchings.
Check baryon number of vertex.
Loop over mothers (enter with crossed colors and negative sign).
If unmatched (so far), add end. Else erase matching parton.
Loop over sisters.
If unmatched (so far), add end. Else erase matching parton.
Skip if baryon number conserved in this vertex.
Check and skip any junctions that have already been added.
Remove the tags corresponding to each of the 3 existing junction legs.
Skip if no junction colors remain.
If baryon number violated, is B = +1 or -1 (larger values not handled).
From now on, use colJun as shorthand for colVertex or acolVertex.
Order so incoming tags appear first in colVec, outgoing tags last.
Step across final-state gluons (if they come from ISR => kindJun += 2)
Check for matching initial-state (anti)colour
Step across final-state gluon
Check for infinite loop
Add junction with these tags.
Check if any junction colour lines appear both as incoming and outgoing E.g. MadGraph writes out 501 + 502 -> -503 -> 501 + 502. Repaint such cases so that the outgoing tags are different from the incoming ones.
Only consider junction-antijunction combinations
Check if all tags same
Decide which junction to repaint the final-state legs of (If both are types 3-4, arbitrarily decide to repaint iJun)
Find the corresponding decay vertex: repaint daughters recursively
Find a resonance with the right colour
Check if colour is conserved in decay
Encode new colour tag so last digit remains the same (That way, new CR type models would still allow reconnection)
Count up used colour tags until we reach colNew
Done (we found the right BNV vertex and acted recursively)
bool init | ( | bool | doLHAin, |
SLHAinterface * | slhaInterfacePtrIn, | ||
vector< SigmaProcessPtr > & | sigmaPtrs, | ||
vector< PhaseSpacePtr > & | phaseSpacePtrs | ||
) |
Initialization.
Main routine to initialize generation process.
Store other input pointers.
Reference to Settings.
Provisions for variable collision energy or beam kind.
Check whether photon inside lepton and save the mode.
Initialize gammaKinematics when relevant.
Send on some input pointers.
Set up SigmaTotal. Store sigma_nondiffractive for future use.
Usage of both sigmaTotPtr and sigmaCmbPtr to be fixed in the future.
Starting values for potential future energy/beam switch.
Check whether Hidden Valley colours may be used.
Options to allow second hard interaction and resonance decays.
Check whether ISR or MPI applied. Affects processes with photon beams.
Second interaction not to be combined with biased phase space.
Mass and pT cuts for two hard processes.
Check whether mass and pT ranges agree or overlap.
Set up containers for all the internal hard processes.
Append containers for external hard processes, if any.
Append single container for Les Houches processes, if any.
Store location of this container, and send in LHA pointer.
If no processes found then refuse to do anything.
Check whether pT-based weighting in 2 -> 2 is requested.
Check that SUSY couplings were indeed initialized where necessary.
If SUSY processes requested but no SUSY couplings present
Initialize each process.
Sum maxima for Monte Carlo choice.
Option to pick a second hard interaction: repeat as above.
Check whether to create event weight from components.
Printout during initialization is optional.
Construct string with incoming beams and for cm energy.
Print initialization information: header.
Loop over existing processes: print individual process info.
Loop over second hard processes, if any, and repeat as above.
Listing finished.
If sum of maxima vanishes then refuse to do anything.
If two hard processes then check whether some (but not all) agree.
Check for each first process if matched in second.
Check for each second process if matched in first.
Concluding classification, including cuts.
Done.
bool next | ( | Event & | process, |
int | procTypeIn = 0 |
||
) |
Generate the next "hard" process.
Main routine to generate the hard process.
Save procType. Is almost always = 0.
Generate the next event with two or one hard interactions.
Check that colour assignments make sense.
Done.
bool nextLHAdec | ( | Event & | process | ) |
Special case: LHA input of resonance decay only.
Generate (= read in) LHA input of resonance decay only.
Read resonance decays from LHA interface.
Store LHA output in standard event record format.
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.
void resetStatistics | ( | ) |
Reset statistics.
Reset statistics on cross sections and number of events.
void statistics | ( | bool | reset = false | ) |
Print statistics on cross sections and number of events.
Special processing if two hard interactions selected.
Header.
Reset sum counters.
Reset process maps.
Loop over existing processes.
Read info for process. Sum counters.
Skip Les Houches containers.
Internal process info.
Print internal process info.
Print Les Houches process info.
Print subdivision by user code for Les Houches process.
Print summed process info.
Listing finished.
Optionally reset statistics contants.
void updateBeamIDs | ( | ) |
Switch to new beam particle identities; for similar hadrons only.
Switch to new beam particle identities.
Update beam identities for phase space selection.