PYTHIA
8.312
|
#include <VinciaISR.h>
Public Member Functions | |
VinciaISR () | |
Constructor. | |
virtual | ~VinciaISR () |
Destructor. | |
void | init (BeamParticle *beamAPtrIn, BeamParticle *beamBPtrIn) override |
Initialize shower. Possibility to force re-initialization by hand. More... | |
void | onBeginEvent () override |
Force reset at beginning of each event. | |
bool | limitPTmax (Event &event, double Q2Fac=0., double Q2Ren=0.) override |
Possible limitation of first emission. More... | |
void | prepare (int iSys, Event &event, bool limitPTmaxIn=false) override |
Prepare system for evolution; identify ME. More... | |
void | update (int iSys, Event &event, bool hasWeakRad=false) override |
Update dipole list after each ISR emission. More... | |
double | pTnext (Event &event, double pTbegAll, double pTendAll, int nRadIn=-1, bool doTrialIn=false) override |
Select next pT in downwards evolution. More... | |
bool | branch (Event &event) override |
Perform a branching (as defined by current "winner"). More... | |
void | list () const override |
Print a list of II and IF dipole-antennae. | |
bool | initUncertainties () override |
bool | doRestart () const override |
bool | wasGamma2qqbar () override |
bool | getHasWeaklyRadiated () override |
Tell whether ISR has done a weak emission. Not implemented in Vincia yet. | |
int | system () const override |
Tell which system was the last processed one. | |
double | enhancePTmax () const override |
void | initVinciaPtrs (VinciaColour *colourPtrIn, shared_ptr< VinciaFSR > fsrPtrIn, MECs *mecsPtrIn, Resolution *resolutionPtrIn, VinciaCommon *vinComPtrIn, VinciaWeights *vinWeightsPtrIn) |
Initialise pointers to Vincia objects. | |
void | setDiagnosticsPtr (shared_ptr< VinciaDiagnostics > diagnosticsPtrIn) |
Set pointer to object to use for diagnostics and profiling. | |
void | setEWShowerPtr (VinciaModulePtr ewShowerPtrIn) |
Set EW shower module. | |
void | setQEDShowerHardPtr (VinciaModulePtr qedShowerPtrIn) |
Set QED shower module for hard process and resonance decays. | |
void | setQEDShowerSoftPtr (VinciaModulePtr qedShowerPtrIn) |
Set QED shower module for MPI and hadronisation. | |
void | clearContainers () |
Clear all containers. | |
void | initAntPtr (AntennaSetISR *antSetIn) |
Initialize pointers to antenna sets. | |
bool | prepared (int iSys) |
Function to tell if VinciaISR::prepare() has treated this system. | |
AntennaFunctionIX * | getAntFunPtr (enum AntFunType antFunType) |
Wrapper function to return a specific antenna inside antenna set. | |
int | getRegion (double q) |
Evolution windows, phase space region boundaries. | |
double | getQmin (int iRegion) |
Evolution window, phase space region boundaries. | |
int | getNf (int iRegion) |
Number of active flavors. | |
double | getLambda (int nFin) |
Lambda value. | |
void | resetTrialGenerators (shared_ptr< BranchElementalISR > trial) |
Add trial functions to a BranchElemental. More... | |
bool | checkHeavyQuarkPhaseSpace (vector< Particle > parts, int iSyst) |
bool | heavyQuarkLeft (double qTrial) |
Method to check if heavy quark left after passing the evolution window. More... | |
bool | isSysHard (int iSys) |
Function to ask if a system is hard. | |
vector< double > | getMasses () |
Return a vector of the masses. | |
int | getNsys () |
Get number of systems. | |
int | getNbranch (int iSys=-1) |
Get number of branchings in a system (return -1 if no such system). | |
void | setIsTrialShower (bool isTrialIn) |
Communicate information about trial showers for merging. | |
void | setIsTrialShowerRes (bool isTrialIn) |
void | saveBornState (Event &born, int iSys) |
Save flavour content of system in Born state. More... | |
void | saveBornForTrialShower (Event &born) |
Save the flavour content of Born for trial shower. More... | |
void | setVerbose (int verboseIn) |
Set verbosity level. | |
bool | checkAntennae (const Event &event) |
Check the antennae. More... | |
Public Member Functions inherited from SpaceShower | |
SpaceShower ()=default | |
Constructor. | |
virtual | ~SpaceShower () |
Destructor. | |
void | initPtrs (MergingHooksPtr mergingHooksPtrIn, PartonVertexPtr partonVertexPtrIn, WeightContainer *weightContainerPtrIn) |
void | reassignBeamPtrs (BeamParticle *beamAPtrIn, BeamParticle *beamBPtrIn, int beamOffsetIn=0) |
New beams possible for handling of hard diffraction. (Not virtual.) | |
virtual bool | initEnhancements () |
Initialize data members for application of enhancements. | |
virtual Event | clustered (const Event &, int, int, int, string) |
Return clustering kinematics - as needed for merging. More... | |
virtual map< string, double > | getStateVariables (const Event &, int, int, int, string) |
virtual bool | isSpacelike (const Event &, int, int, int, string) |
virtual vector< string > | getSplittingName (const Event &, int, int, int) |
virtual double | getSplittingProb (const Event &, int, int, int, string) |
virtual bool | allowedSplitting (const Event &, int, int) |
virtual vector< int > | getRecoilers (const Event &, int, int, string) |
virtual double | enhanceFactor (const string &name) |
virtual double | noEmissionProbability (double, double, double, int, int, double, double) |
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 |
Public Attributes | |
AlphaStrong * | alphaSptr |
Pointer to global AlphaStrong instance. | |
Public Attributes inherited from SpaceShower | |
MergingHooksPtr | mergingHooksPtr {} |
Pointer to MergingHooks object for NLO merging. | |
WeightContainer * | weightContainerPtr {} |
Friends | |
class | VinciaFSR |
Allow VinciaFSR to access private information. | |
class | VinciaHistory |
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 | 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 SpaceShower | |
int | beamOffset {} |
Beam location offset in event. | |
PartonVertexPtr | partonVertexPtr {} |
Pointer to assign space-time vertices during parton evolution. | |
bool | doUncertainties {} |
Store uncertainty variations relevant to SpaceShower. | |
bool | uVarMuSoftCorr {} |
bool | uVarMPIshowers {} |
int | nUncertaintyVariations {} |
int | nVarQCD {} |
int | uVarNflavQ {} |
double | dASmax {} |
double | cNSpTmin {} |
double | uVarpTmin2 {} |
double | overFactor {} |
map< int, double > | varG2GGmuRfac |
map< int, double > | varQ2QGmuRfac |
map< int, double > | varQ2GQmuRfac |
map< int, double > | varG2QQmuRfac |
map< int, double > | varX2XGmuRfac |
map< int, double > | varG2GGcNS |
map< int, double > | varQ2QGcNS |
map< int, double > | varQ2GQcNS |
map< int, double > | varG2QQcNS |
map< int, double > | varX2XGcNS |
map< int, double > * | varPDFplus |
map< int, double > * | varPDFminus |
map< int, double > * | varPDFmember |
unordered_map< string, double > | enhanceISR |
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 VinciaISR class. Main shower class for initial-state (II and IF) antenna showers Inherits from SpaceShower in Pythia 8 so can be used as alternative to SpaceShower. Methods that must replace ones in SpaceShower are marked with override.
|
overridevirtual |
Perform a branching (as defined by current "winner").
Perform a branching (as defined by current "winner"). Returns true of the branching was accepted and false if rejected.
System of index of the winner and extract current QE scales.
Diagnostics
Set to false for IF because there it was always guy 1 who did gluon splitting/conversion in the initial state.
Count up global number of attempted trials.
Recoiler, allow for both II and IF to have global recoils
Check if we have to force a splitting (to get rid of heavy quarks).
If so, try to force the splitting at the scale we'd like to.
Generate full trial kinematics (and reject if outside phase-space).
Mark this trial as "used", will need to generate a new one..
If no recoilers for this branching, e.g. local IF map, zero iRecs,
If we have a force splitting update scale information might have change to ensure kinematics can be generated.
Assign colour flow. Note, using lastColTag here, if branching accepted we tell Pythia.
For the sector shower veto branching here if outside of sector.
Create vector of all post-branching particles and vector of indices of particles to replace in current state. In local kinematic maps both are only mothers, in global maps also all recoilers.
Append index of recoiling particle to list of old particles.
Append recoiling particle to list of post-branching particles.
Change its momentum.
Get tentative post-branching state.
Save clustering and compute sector resolution for it.
Set daughters correctly.
Sanity check.
Check sector veto.
Failed sector veto.
Mark this trial as "used", will need to generate a new one.
Check whether phase-space is closed for getting rid of heavy quarks.
Mark this trial as "used", will need to generate a new one.
Check if this branching is above cutoff scale (but don't say no to getting rid of a massive flavour).
Check only if we don't force a splitting.
Reject and mark as "used", will need to generate a new trial.
Veto step, decide whether to accept or reject branching, skip for forced splitting.
Mark this trial as "used", will need to generate a new one.
Put new particles into event record, store a copy of event, to be used if branching vetoed by userHooks.
Check for recoilers from II (or IF with global recoil map) branchings.
Copy recoiler change momentum.
Update event pointers if necessary.
Check if we went from polarised to unpolarised state If so, depolarise parton state. A more complete alternative here would be to create depolarised copies of all partons and then update everything, but deemed unnecessary for now.
Depolarise parton state (except the branching mothers, which will be replaced by unpolarised daughters).
Skip if not present in final state.
Skip if mother parton to be replaced by daughter.
Else depolarise.
Also make sure all daughters are depolarised as well.
Set mothers and daughters, mark original dipole partons as branched.
New initial partons inherit mothers (beam).
Gluon emission.
iNew1 a inherits mothers of A, daughters are A and j.
iNew3 b inherits mothers of B, daughters are B and j.
iNew2 j gets a and b as mothers, no daughters. Ensure mother1 is the one that changed colour (collinear mother), used eg to determine vertex structure in HepMC output.
Gluon splitting or conversion in the initial state: side A.
iNew1 a inherits mothers of A, daughters are A and j.
iNew3 b inherits mothers of B, daughter is B.
iNew2 j gets a as mother, no daughters.
Gluon splitting or conversion in the initial state: side B.
iNew1 a inherits mothers of A, daughter is A.
iNew3 b inherits mothers of B, daughters are B and j.
iNew2 j gets b as mother, no daughters.
i1sav A keeps its daughters, gets a as mother.
i2sav B keeps its daughters, gets b as mother.
iNew2 j has no daughters.
Put a and b as daughters of the beam for hard process.
New initial parton inherits mothers (beam).
Gluon emission.
iNew1 a inherits mothers of A, daughters are j and A.
i2sav K gets j and k as daughters, keeps its mothers.
iNew3 k gets K as mother, no daughters.
iNew2 j gets a and K as mothers, no daughters. Ensure mother1 is the one that changed colour (collinear mother), used eg to determine vertex structure in HepMC output.
Gluon splitting or conversion in the initial state
iNew1 a inherits mothers of A, daughters are A and j.
i2sav K gets k as daughter, keeps its mothers.
iNew3 k gets K as mother, no daughters.
iNew2 j gets a as mother, no daughters.
Gluon splitting in the final state
iNew1 a inherits mothers of A, daughteris A.
i2sav K gets k and j as daughters, keeps its mothers.
iNew3 k gets K as mother, no daughters.
iNew2 j gets K as mother, no daughters.
i1sav A keeps its daughters, gets a as mother.
iNew3 5 has no daughters.
iNew2 j has no daughters.
Put a as daughter of the beam for hard process.
Veto by userHooks, possibility to allow user veto of emission step.
Everything accepted.
Update list of systems.
Initial partons.
Recoilers (if any).
Update beam particles.
Update both sides.
Side A.
Redo choice of companion kind whenever new flavour.
Side B.
Redo choice of companion kind whenever new flavour.
Update only one side.
Redo choice of companion kind whenever new flavour.
Update antennae due to recoil.
No recoil outside system.
Check relevant partons for recoilers.
i1 is always initial.
Update number of gluons and quark pairs.
Update list of partons and parton numbers.
Updates of the branched antennae. The BranchElemental that winnerPtr points to is no longer needed. Update it to store new antenna, and add second new antenna if needed.
Gluon emission.
II -> we created two IF antennae. IF -> we created an IF and an FF antenna (the latter of which is up to the FSR shower to find and handle). Update old antenna to be iNew1-iNew2 antenna.
Update colour. Second parton in new antenna is a gluon; decide whether the new antenna corresponds to its colour or anticolour tag. If this was an II branching -> add the other IF antenna.
Decide whether the new antenna corresponds to the colour or anticolour tag of the newly emitted gluon. Save branchelemental.
Gluon splitting in the initial state:
Old antenna should now and add an IF antenna. Decide whether this antenna corresponds to gluon colour or anticolour.
Update old antenna to be iNew1-iNew3 antenna.
Add the other IF antenna.
Update colour, old1 is gluon, so both col and acol != 0. Save branchelemental,
Gluon conversion in the initial state.
Update branched antenna, check IS or FS quark carry ant colour.
In case this is FF ant: kick out later.
IS quark is left.
Is II or IF ant.
FS quark is left.
Update trial generators.
Find other antenna, where converted gluon took part in, replace gluon with left quark.
Can only find one ant with old gluon, as winner already updated.
Only look inside same system.
New antenna is IF.
Gluon splitting in the final state.
Keep the old antenna (iNew2 as emission and iNew1 as initial partner) which is IF, no new one created. Update colour, old2 is quark so if col2 !=0 that's antenna colour
Update trial generators.
And check the other antenna i2sav was involved: has to be IF.
Skip antennae not in same system.
Map i2sav to iNew3.
Updates of the other antennae.
Only look inside same system.
Update particles.
Update.
Check relevant partons for recoilers.
i1 is always initial.
Reset rescue counter
Sanity check: Kick out any FF antenna we might have created.
Renew trials in all other systems since pdfs changed.
Skip same system.
Reset rescue counter.
Count the number of branchings in the system.
Book-keeping for MECs.
Communicate to MECs class that we succesfully branched.
Decide if we should be doing ME corrections for next order.
If going from ME corrected order to uncorrected one, renew trials.
Ensure any damped power showers are only applied to hardest emission.
Let Pythia know how many color tags we used.
Check the event after each branching.
Merging: is this branching a candidate for a merging veto or not?
We only want to veto the event based on the first branching. In principle, later emissions could be vetoed as well, but the current treatment assumes that if the first emission is below the merging scale, all subsequent ones are too. This could explicitly be checked by setting nBranchMergingVeto to a large number.
Merging veto should ignore branchings after the first.
Diagnostics.
Reimplemented from SpaceShower.
bool checkAntennae | ( | const Event & | event | ) |
Check the antennae.
Initialise counters for systems we haven't seen yet.
Otherwise IF.
IF with 1 = I from A.
IF with 1 = I from B.
Check number of initial antennae in each system matches the color type of incoming partons.
Count number of antenna ends expected based on colour type of incoming particles.
Count number of antennae we have.
II contribute to two ends.
bool checkHeavyQuarkPhaseSpace | ( | vector< Particle > | parts, |
int | iSyst | ||
) |
Method to check if a gluon splitting in the initial state (to get rid of heavy quarks) is still possible after the current branching.
Loop over partons to check.
Find the colour partner.
Phase space limit is below the mass.
Check for energy exceeding beam energy.
Allowed maxima.
sajmin = mass^2.
Invariant > 0.5 GeV.
|
inlineoverridevirtual |
Flag for failure in branch(...) that will force a retry of parton level. Returns false in base class, and rescatterFail in simpleTimeShower. Not implemented in Vincia yet since we do not do rescattering.
Reimplemented from SpaceShower.
|
inlineoverridevirtual |
Potential enhancement factor of pTmax scale for hardest emission. Used if limitPTmax = true.
Reimplemented from SpaceShower.
bool heavyQuarkLeft | ( | double | qTrial | ) |
Method to check if heavy quark left after passing the evolution window.
We are above mb.
Loop over antennae.
Safety of 2%.
Find the index of the trial generator for splitting.
Only check parton 2 if this is an II antenna.
Safety of 2%.
Find the index of the trial generator for splitting.
|
overridevirtual |
Initialize shower. Possibility to force re-initialization by hand.
The VinciaISR class.
Initialize shower.
Check if already initialized.
Verbose level.
Showers on/off.
Beam parameters.
Beam particles.
Assume all events in same run have same beam-beam energies.
Possibility to allow user veto of emission step.
Number of active quark flavours.
Mass corrections.
Global flag for helicity dependence.
Global flag for sector showers on/off.
Allow to try other IF kinematics map if selected fails.
Merging flags.
Mass windows : specifies thresholds for each flavour.
Perturbative cutoff.
Check PDF q2min value and issue warning if above ISR cutoff scale(s)
Set shower alphaS pointer.
AlphaS parameters.
Smallest allowed scale.
Check largest numerical value of alphaS we can have.
If we want to get rid of heavy quarks we need to change the masses to the ones in the pdfs.
Check if we can get mass from beams directly (LHAPDF6 only).
If not attempt to find it.
Set x = 0.001 and check the gradient.
Update
Reset the derived scales.
Evolution windows.
Fill constant version with masses.
Fill the rest.
Trial generators.
Enhance settings.
Resize Paccept to the maximum number of elements.
Clear containers.
Rescue levels and failsafe parameters.
Initialize parameters for shower starting scale.
Initialise the ISR antenna functions.
Print VINCIA header and list of parameters, call issued by ISR since we are initialised last.
Reimplemented from SpaceShower.
|
inlineoverridevirtual |
Initialize data members for calculation of uncertainty bands. So far purely dummy in Vincia.
Reimplemented from SpaceShower.
|
overridevirtual |
Possible limitation of first emission.
Method to determine if max pT limit should be imposed on first emission.
Initialise for wimpy showers.
Verbose output
Check if limiting pT of first emission in each system.
Initialise for wimpy showers as default, then check if should modify.
Force wimpy showers.
Also always restrict all systems for processes of SoftQCD type.
Force power showers for hard system(s); MPI still wimpy.
Check if there are jets, photons, or heavy quarks in final state.
Look if jets, photons, and heavy coloured particles in final states of each system. (Top is counted as heavy unless g->ttbar is allowed.)
If no QCD/QED partons detected, allow to go to phase-space maximum.
For power showers, check if dampening should be applied.
Use the input factorisation-scale argument, or compute as geometric mean of the system's incoming A and B "scale" values.
General pTlimitHard is AND of the individual ones.
Verbose output
End loop over systems.
Verbose output
Return true/false.
Reimplemented from SpaceShower.
|
overridevirtual |
Prepare system for evolution; identify ME.
Prepare system of partons for evolution; identify ME.
Check if we are supposed to do anything.
Verbose output.
Resetting for first time in new event.
Reset counters.
Reset all vectors for the first time we are called.
Evolution windows, add factorization scale.
Sort to put factorization scale at the right place.
Fill the rest.
Sanity check: at least two particles in system.
Check if this is a resonance-decay system; if so, let FSR deal with it.
Flag to tell FSR that ISR::prepare() has treated this system. We assume that when both ISR::prepare() and FSR::prepare() are called, the sequence is that ISR::prepare() is always called first.
We don't have a starting scale for this system yet.
After prepare we always have zero branchings.
Set isHardSys and isResonance flags.
Make light quarks (and initial-state partons) explicitly massless.
Update the beam pointers (incoming partons stored as 0,1 in partonSystems). Needed in case makeNewCopies = true; also ensures beamA == positive pZ.
Then see if we know how to compute MECs for this conf.
Decide if we should be doing ME corrections for next order.
Initialise polarisation flag.
Communicate with FSR.
Then see if we should colourise this conf.
Find and save all colors and anticolors.
Loop over event record. Find indices of particles with color lines.
Save to colour maps.
Cross colours for initial partons.
Now loop over colored particles to create branch elementals (=antennae).
Colour index.
i1 is the colour (or incoming anticolour) carrier. i2 is the anticolour (or incoming colour) carrier.
Exclude final-final antennae.
Check whether i1 is valence (if incoming).
Check whether i2 is valence (if incoming).
Store trial QCD antenna and add trial generators depending on type.
Count up number of gluons and quark pairs.
Halve the quarks to get quark pairs.
Save information about Born state only when doing a sector shower and only if this is not a trial shower (because then this was set in VinciaMerging::getWeightCKKWL() already).
Sanity check.
Set starting scale for this system.
Reimplemented from SpaceShower.
|
overridevirtual |
Select next pT in downwards evolution.
Check if we are supposed to do anything.
Verbose output.
Diagnostics
Checks: skipped ants (q[MPI/FSR] > qISR), qEnd < all cutoffs, no ants.
Denote VINCIA scales by "q", PYTHIA ones by "pTevol".
Initialize winner scale.
Loop over antennae (in all currently existing parton systems).
Shorthand for this antenna.
Check if we are skipping this kind of antenna.
Generate new trial branchings, starting from qMax.
Lowest evolution boundary: impose hadronization scale.
Cutoff scale, depends on whether we are II or IF antenna.
No trial generators for this antenna
Loop over trial functions. Find and save max trial scale.
Pointer to trial generator for this trial.
Phase space limit can never be exceeded.
If restart scale < scale we already found continue.
Check if any phase space still open.
Verbose output.
Impose evolution windows.
Go through regions.
Set overestimated Z range for trial generation.
Set headroom factor (= constant multiplying trial probability).
Check for rescue mechanism in case trial gets stuck.
Multiply headroom.
Set PDFratio. If II the first is always side A. If IF check which side the initial guy is. For g->qq splittings.
For trial branchings that have multiple flavour combinations (gluon conversion) check which trial flavour was picked and store PDF ratio for that flavour.
Set color factor for trial.
Effective renormalization-scale prefactor.
Check if we should use running alphaS.
If we are close to lambdaQCD, use constant instead.
Check if we should try to get rid of c and b quarks, iRegion 2 = mc to mb, iRegion 3 = mb to mtb.
Flavours to check.
Enhancements (biased kernels).
At the trial level, all gluon splittings and conversions enhanced by max(enhanceCharm, enhanceBottom).
Sanity check for zero branching probability.
Mass treatment, use PDFs mass thresholds with constant alphaS.
Add extra headroom, should really be multiplying trial PDF ratio.
Overestimate.
alphaS for overestimate.
Generate new q value, with constant alphaS.
Trial information.
AlphaS running inside trial integral.
One-loop beta function (two-loop imposed by veto, below).
Use 3-flavour Lambda for overestimate.
Generate new q value, with alphaS running inside trial integral.
Save trial information.
AlphaS outside trial integral.
Constant alphaS.
Generate new q value, with constant alphaS.
Save trial information.
Check evolution window boundaries.
Do preliminary accept/reject in smaller Z hull.
Note: can insert tighter x < 1 boundaries here too.
If there is no big difference, don't bother.
Update Z limits.
Accept narrower limits with probability IzPhys/IzTrial.
End loop over regions.
Check for rescue mechanism in case trial gets stuck.
End loop over trial generators.
Check if trial wins.
End loop over antennae.
If non-zero branching scale found: continue.
Check if qEnd < all cutoffs.
Check if we have a heavy quark in the initial state left.
Set scale to the corresponding mass.
Diagnostics.
Make sure we get the next branching.
Reimplemented from SpaceShower.
void resetTrialGenerators | ( | shared_ptr< BranchElementalISR > | trial | ) |
Add trial functions to a BranchElemental.
Reset.
Always p+ for II. Always I for IF.
Always p- for II. Always F for IF.
II antennae.
QQbar.
GG.
QG.
GQ.
IF antennae.
QQ.
Use different trial generator for valence quarks.
GG.
For sector shower add additional K-collinear trial generator.
GQ.
QG.
For sector shower add additional K-collinear trial generator.
GOctetOnium.
QOctetOnium.
void saveBornForTrialShower | ( | Event & | born | ) |
Save the flavour content of Born for trial shower.
Save flavour content in Born state for trial shower (in merging).
Index of system we do the trial shower for. Note: will always be 0 for ISR in merging.
Initialise.
We want to resolve the Born only when we have a non-QCD coupling in Born.
If there are non-QCD partons in the system, resolve Born.
Print information.
void saveBornState | ( | Event & | born, |
int | iSys | ||
) |
Save flavour content of system in Born state.
Save the flavour content of system in Born state (needed for sector shower).
Initialise.
We want to resolve the Born only when we have a non-QCD coupling in Born.
If there are non-QCD partons in the system, resolve Born.
Print information.
|
overridevirtual |
Update dipole list after each ISR emission.
Update dipole list after each FSR emission.
Skip if the branching system has no incoming partons.
Count number of branches.
Particles in the list are already updated by FSR. Find and save all colors and anticolors.
Also count number of gluons and quark pairs.
Save to colour maps.
Switch colours for initial partons.
Count number of gluons and quark pairs.
Loop over the antennae, and look for changed ones. Start from back so that if we remove one it won't mess up loop
Only check antennae in same system.
Sanity check. We don't destroy colour lines. Antenna colour should not have disappeared.
Initial-initial antennae.
Fetch up to date i1. Check if i1 attached on colour or anticolour end of dipole.
Fetch up to date i2. Check if i1 attached on colour or anticolour end of dipole.
col because initial
Check if i1 is still the incoming particle.
Check if a QED backwards evolution.
Otherwise we dont't know about this case.
First check if i2 is still the incoming particle.
Check if a QED backwards evolution.
Otherwise we dont't know about this case.
Check if need to update.
Initial-final antennae.
Fetch up to date i1. Ceck if i1 attached on colour or anticolour end of dipole.
Fetch up to date i2.
Check if i1New is still incoming.
Check if QED backwards evolution.
Otherwise we dont't know about this case.
Check if need to update.
Recompute antenna mass.
Remove antenna either because something went wrong or QED backwards evol.
End loop over branchers.
Check leftover colour lines (dismiss any FF). Can occur e.g. if photon backwards evolves into qqbar.
Exclude final-final antennae.
Store trial QCD antenna and add trial generators depending on type.
There was an unmatched colour line.
If we are going from ME-corrected to non-ME-corrected order, renew trials. TODO +1 correct?
Sanity check.
Reimplemented from SpaceShower.
|
inlineoverridevirtual |
Flag for last ISR branching being gamma -> qqbar. Not implemented in Vincia's QED evolution yet.
Reimplemented from SpaceShower.