PYTHIA
8.312
|
#include <MultipartonInteractions.h>
Public Member Functions | |
MultipartonInteractions () | |
Constructor. | |
bool | init (bool doMPIinit, int iDiffSysIn, BeamParticle *beamAPtrIn, BeamParticle *beamBPtrIn, PartonVertexPtr partonVertexPtrIn, bool hasGammaIn=false) |
Initialize the generation process for given beams. More... | |
void | initSwitchID (const vector< int > &idAListIn) |
Special setup to allow switching between beam PDFs for MPI handling. | |
void | setBeamID (int iPDFAin) |
Switch to new beam particle identities, and possibly PDFs. | |
void | reset () |
Reset impact parameter choice and update the CM energy. More... | |
void | pTfirst () |
Select first = hardest pT in nondiffractive process. More... | |
void | setupFirstSys (Event &process) |
Set up kinematics for first = hardest pT in nondiffractive process. More... | |
bool | limitPTmax (Event &event) |
Find whether to limit maximum scale of emissions. More... | |
double | scaleLimitPT () const |
void | prepare (Event &event, double pTscale=1000., bool rehashB=false) |
Prepare system for evolution. | |
double | pTnext (double pTbegAll, double pTendAll, Event &event) |
Select next pT in downwards evolution. More... | |
bool | scatter (Event &event) |
Set up kinematics of acceptable interaction. More... | |
void | setEmpty () |
Set "empty" values to avoid query of undefined quantities. | |
double | Q2Ren () const |
Get some information on current interaction. | |
double | alphaSH () const |
double | alphaEMH () const |
double | x1H () const |
double | x2H () const |
double | Q2Fac () const |
double | pdf1 () const |
double | pdf2 () const |
double | bMPI () const |
double | enhanceMPI () const |
double | enhanceMPIavg () const |
int | getVSC1 () const |
int | getVSC2 () const |
int | getBeamOffset () const |
void | setBeamOffset (int offsetIn) |
void | accumulate () |
void | statistics (bool resetStat=false) |
Print statistics on number of multiparton-interactions processes. More... | |
void | resetStatistics () |
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 MultipartonInteractions class contains the main methods for the generation of multiparton parton-parton interactions in hadronic collisions.
|
inline |
Update and print statistics on number of processes. Note: currently only valid for nondiffractive systems, not diffraction??
|
inline |
Set the offset wrt. to normal beam particle positions for hard diffraction and for photon beam from lepton.
|
inline |
For x-dependent matter profile, return incoming valence/sea decision from trial interactions.
bool init | ( | bool | doMPIinit, |
int | iDiffSysIn, | ||
BeamParticle * | beamAPtrIn, | ||
BeamParticle * | beamBPtrIn, | ||
PartonVertexPtr | partonVertexPtrIn, | ||
bool | hasGammaIn = false |
||
) |
Initialize the generation process for given beams.
Store input pointers for future use. Done if no initialization.
Identify either or both beams as pomerons.
Matching in pT of hard interaction to further interactions.
Parameters of alphaStrong generation.
Parameters of alphaEM generation.
Parameters of cross section generation.
Check if photon-photon or photon-hadron collision.
Regularization of QCD evolution for pT -> 0. Separate default parameters for photon-photon collisions.
Impact parameter profile: nondiffractive topologies.
x-dependent impact parameter profile.
Impact parameter profile: diffractive topologies.
No x-dependent impact-parameter profile for diffraction.
Common choice of "pT" scale for determining impact parameter.
Process sets to include in machinery.
Parameters of rescattering description.
Rescattering not yet implemented for x-dependent impact profile.
A global recoil FSR stategy restricts rescattering.
Various other parameters.
Optional dampening at small pT's when large multiplicities.
Parameters for diffractive systems.
Beam particles might not be found from the usual positions.
Possibility to allow user veto of MPI.
Possibility to set parton vertex information.
Some common combinations for double Gaussian, as shorthand.
Some common combinations for exp(b^pow), as shorthand.
Initialize alpha_strong generation.
Initialize alphaEM generation.
Attach matrix-element calculation objects.
Calculate invariant mass of system.
Allow for variable collision energies.
Special option with variable incoming projectile.
Limits on invariant mass of gm+gm system.
Optionally symmetrize particle-particle and particle-antiparticle.
Get the total inelastic and nondiffractive cross section. Ensure correct cross sections for VMD photons.
Ensure correct cross sections also for non-VMD photon beams.
Read or write initialization data from/to file, to save time.
Loop over multiple beam A initializations if necessary.
Do not switch for Pomeron beam.
Output initialization info - first part.
Normally fixed collision cm energy.
For variable-energy beams cover range of cm energies.
For diffraction cover range of diffractive masses.
For photons from lepton cover range of gm+gm invariant masses.
Save for possible reuse.
Loop over masses for which to initialize generation.
Nondiffractive cross section at current mass.
MPI for diffractive events. Rescale Pom/p flux to use for Pom/gamma.
Keep track of pomeron momentum fraction.
MPI with photons from leptons.
Hadron-photon case.
Photon-hadron case.
Photon-photon case.
Set current pT0 scale according to chosed parametrization.
The pT0 value may need to be decreased, if sigmaInt < sigmaND.
Derived pT kinematics combinations.
Provide upper estimate of interaction rate d(Prob)/d(pT2).
Setup binning in b for x-dependent matter profile.
Integrate the parton-parton interaction cross section.
If the overlap-weighted cross section has not fallen below cutoff, then increase bin size in b and reintegrate.
Sufficiently big SigmaInt or reduce pT0; maybe also pTmin.
Give up if pT0 and pTmin fall too low.
Output for accepted pT0.
Calculate factor relating matter overlap and interaction rate.
Maximum violation relative to first estimate.
Save values calculated.
End of loop over energies or diffractive/invariant gamma+gamma masses.
Reset pomeron momentum fraction.
Output details for x-dependent matter profile.
End initialization printout.
Amount of violation from upperEnvelope to jetCrossSection.
End of internal initialization. Optionally store outcome for reuse.
Restore to default setup with option 0. Does not apply for Pomeron beam.
Reset statistics.
Additional setup for x-dependent matter profile.
No preselection of sea/valence content and initialise a0.
Done.
bool limitPTmax | ( | Event & | event | ) |
Find whether to limit maximum scale of emissions.
Find whether to limit maximum scale of emissions. Provide sum pT / 2 as potential limit where relevant.
User-set cases.
Always restrict SoftQCD processes.
Look if only quarks (u, d, s, c, b), gluons and photons in final state.
If two hard interactions then limit if one only contains q/g/gamma.
void pTfirst | ( | ) |
Select first = hardest pT in nondiffractive process.
Select first = hardest pT in nondiffractive process. Requires separate treatment at low and high b values.
Pick impact parameter and thereby interaction rate enhancement. This is not used for the x-dependent matter profile, which instead uses trial interactions.
At low b values evolve downwards with Sudakov.
Pick a pT using a quick-and-dirty cross section estimate.
If fallen below lower cutoff then need to restart at top.
Else pick complete kinematics and evaluate cross-section correction.
Loop until acceptable pT and acceptable kinematics.
At high b values make preliminary pT choice without Sudakov factor.
Evaluate upper estimate of cross section for this pT2 choice.
Pick complete kinematics and evaluate cross-section correction.
Evaluate and include Sudakov factor.
Warn for weight above unity
Loop until acceptable pT and acceptable kinematics.
For x-dependent matter profile, use trial interactions to generate Sudakov, otherwise done.
Save details of the original hard interaction.
Save accepted kinematics and pointer to SigmaProcess.
Put x1, x2 information into beam pointers to get correct PDF rescaling in trial interaction (for hard process, can be sea or valence, not companion).
Pick b according to O(b, x1, x2).
Enhancement factor for the hard process and overestimate for fastPT2. Note that existing framework has a (1. / sigmaND) present.
Trial interaction with dummy event.
Restore beams.
Accept if fallen beneath factorisation scale.
Restore previous values and original sigma.
Accept.
if (bProfile == 4)
while (true)
End handling for high b.
double pTnext | ( | double | pTbegAll, |
double | pTendAll, | ||
Event & | event | ||
) |
Select next pT in downwards evolution.
Initial values.
With the x-dependent matter profile, and minimum bias or diffraction, it is possible to reuse values that have been stored during the trial interactions for a slight speedup. bIsSet is false during trial interactions, counter 21 in case partonLevel is retried and counter 22 for the first pass through partonLevel.
Do not allow rescattering while still FSR with global recoil.
Initial pT2 value.
Find the set of already scattered partons on the two sides.
Pick a pT2 using a quick-and-dirty cross section estimate.
Initial values: no rescattering.
Pick complete kinematics and evaluate interaction cross-section.
Also cross section from rescattering if allowed.
Normalize to dSigmaApprox, which was set in fastPT2 above.
Idea suggested by Gosta Gustafson: increased screening in events with large activity can be simulated by pT0_eff = sqrt(n) * pT0.
x-dependent matter profile overlap weighting.
Correct enhancement factor and weight
Decide whether to keep the event based on weight.
When rescattering possible: new interaction or rescattering?
Restore kinematics for selected scattering/rescattering.
Pick one of the possible channels summed above.
Decide to keep event based on kinematics (normally always OK). Rescattering: need to provide incoming four-vectors and masses.
New interaction: already stored values enough.
Done.
void reset | ( | ) |
Reset impact parameter choice and update the CM energy.
Reset impact parameter choice and update the CM energy. Sometimes also interpolate parameters to current CM energy.
Reset impact parameter choice.
Update CM energy. Done if not diffraction and not new energy.
For variable-energy collisions, including photons from leptons, calculate sigmaND at updated collision CM energy.
Set fictitious Pomeron-proton cross section for diffractive system.
Update interpolation data.
Current interpolation point.
Update pT0 and combinations derived from it.
Update other parameters used in pT choice.
Update parameters related to the impact-parameter picture.
bool scatter | ( | Event & | event | ) |
Set up kinematics of acceptable interaction.
Set up the kinematics of the 2 -> 2 scattering process, and store the scattering in the event record.
Last beam-status particles. Offset relative to normal beam locations.
Loop over four partons and offset info relative to subprocess itself.
Put the partons into the event record.
Allow setting of new parton production vertices.
Allow veto of MPI. If so restore event record to before scatter.
Store participating partons as a new set in list of all systems.
Tag double rescattering graphs that annihilate one initial colour.
Beam remnant A: add scattered partons to list.
Find whether incoming partons are valence or sea, so prepared for ISR.
Remove rescattered parton from final state and change history. Propagate existing colour labels throught graph.
Beam remnant B: add scattered partons to list.
Find whether incoming partons are valence or sea, so prepared for ISR.
Remove rescattered parton from final state and change history. Propagate existing colour labels throught graph.
Annihilating colour in double rescattering requires relabelling of one colour into the other in the whole preceding event.
With gamma+gamma check that room for beam remnants for current scattering. Otherwise take the partons out from event record. roomForRemnants treats both beam equally so need to do only once.
Remove the partons associated to the latest scattering from the event record.
Store the pT value for valence decision of resolved photons.
Store info on subprocess code and rescattered partons.
Done.
void setupFirstSys | ( | Event & | process | ) |
Set up kinematics for first = hardest pT in nondiffractive process.
Last beam-status particles. Offset relative to normal beam locations.
Remove any partons of previous failed interactions.
Entries 3 and 4, now to be added, come from 1 and 2.
Negate beam status, if not already done. (Case with offset beams.)
Loop over four partons and offset info relative to subprocess itself.
Put the partons into the event record.
Set scale from which to begin evolution.
Info on subprocess - specific to mimimum-bias events.
Further standard info on process.
void statistics | ( | bool | resetStat = false | ) |
Print statistics on number of multiparton-interactions processes.
Header.
Loop over existing processes. Sum of all subprocesses.
Find process name that matches code.
Print individual process info.
Print summed process info.
Listing finished.
Optionally reset statistics contents.