PYTHIA  8.312
Public Member Functions | Public Attributes | Friends | List of all members
VinciaISR Class Reference

#include <VinciaISR.h>

Inheritance diagram for VinciaISR:
SpaceShower PhysicsBase

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.
 
AntennaFunctionIXgetAntFunPtr (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

AlphaStrongalphaSptr
 Pointer to global AlphaStrong instance.
 
- Public Attributes inherited from SpaceShower
MergingHooksPtr mergingHooksPtr {}
 Pointer to MergingHooks object for NLO merging.
 
WeightContainerweightContainerPtr {}
 

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
InfoinfoPtr = {}
 
SettingssettingsPtr = {}
 Pointer to the settings database.
 
ParticleDataparticleDataPtr = {}
 Pointer to the particle data table.
 
LoggerloggerPtr = {}
 Pointer to logger.
 
HadronWidthshadronWidthsPtr = {}
 Pointer to the hadron widths data table.
 
RndmrndmPtr = {}
 Pointer to the random number generator.
 
CoupSMcoupSMPtr = {}
 Pointers to SM and SUSY couplings.
 
CoupSUSYcoupSUSYPtr = {}
 
BeamSetupbeamSetupPtr = {}
 
BeamParticlebeamAPtr = {}
 
BeamParticlebeamBPtr = {}
 
BeamParticlebeamPomAPtr = {}
 
BeamParticlebeamPomBPtr = {}
 
BeamParticlebeamGamAPtr = {}
 
BeamParticlebeamGamBPtr = {}
 
BeamParticlebeamVMDAPtr = {}
 
BeamParticlebeamVMDBPtr = {}
 
PartonSystemspartonSystemsPtr = {}
 Pointer to information on subcollision parton locations.
 
SigmaTotalsigmaTotPtr = {}
 Pointers to the total/elastic/diffractive cross sections.
 
SigmaCombinedsigmaCmbPtr = {}
 
set< PhysicsBase * > subObjects
 
UserHooksPtr userHooksPtr
 

Detailed Description

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.

Member Function Documentation

bool branch ( Event event)
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.

bool doRestart ( ) const
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.

double enhancePTmax ( ) const
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.

void init ( BeamParticle beamAPtrIn,
BeamParticle beamBPtrIn 
)
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.

bool initUncertainties ( )
inlineoverridevirtual

Initialize data members for calculation of uncertainty bands. So far purely dummy in Vincia.

Reimplemented from SpaceShower.

bool limitPTmax ( Event event,
double  Q2Fac = 0.,
double  Q2Ren = 0. 
)
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.

void prepare ( int  iSys,
Event event,
bool  limitPTmaxIn = false 
)
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.

double pTnext ( Event event,
double  pTbegAll,
double  pTendAll,
int  nRadIn = -1,
bool  doTrialIn = false 
)
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.

void update ( int  iSys,
Event event,
bool  hasWeakRad = false 
)
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.

bool wasGamma2qqbar ( )
inlineoverridevirtual

Flag for last ISR branching being gamma -> qqbar. Not implemented in Vincia's QED evolution yet.

Reimplemented from SpaceShower.


The documentation for this class was generated from the following files: