PYTHIA  8.312
Public Member Functions | List of all members
PowhegHooks Class Reference

Use userhooks to veto PYTHIA emissions above the POWHEG scale. More...

#include <PowhegHooks.h>

Inheritance diagram for PowhegHooks:
UserHooks PhysicsBase

Public Member Functions

 PowhegHooks ()
 Constructors and destructor.
 
 PowhegHooks (Pythia *, Settings *, Logger *)
 
bool initAfterBeams ()
 Initialize settings, detailing merging strategy to use.
 
double pT (const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch, bool FSR)
 Top-level wrapper for shower pTs. More...
 
double pTpythia (const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch, bool FSR)
 
double pTvincia (const Event &event, int i1, int i3, int i2)
 
double pTdire (const Event &event, int iRad, int iEmt, int iRec)
 
double pTpowheg (const Event &e, int i, int j, bool FSR)
 Compute the POWHEG pT separation between i and j. More...
 
double pTcalc (const Event &e, int i, int j, int k, int r, int xSRin)
 
bool canVetoMPIStep ()
 
int numberVetoMPIStep ()
 Up to how many MPI steps should be checked.
 
bool doVetoMPIStep (int nMPI, const Event &e)
 
bool canVetoISREmission ()
 ISR veto.
 
bool doVetoISREmission (int, const Event &e, int iSys)
 
bool canVetoFSREmission ()
 FSR veto.
 
bool doVetoFSREmission (int, const Event &e, int iSys, bool)
 
bool canVetoMPIEmission ()
 MPI veto.
 
bool doVetoMPIEmission (int, const Event &e)
 
int getNISRveto ()
 Functions to return information.
 
int getNFSRveto ()
 
- Public Member Functions inherited from UserHooks
virtual ~UserHooks ()
 Destructor.
 
virtual bool canModifySigma ()
 Possibility to modify cross section of process.
 
virtual double multiplySigmaBy (const SigmaProcess *sigmaProcessPtr, const PhaseSpace *phaseSpacePtr, bool inEvent)
 Multiplicative factor modifying the cross section of a hard process. More...
 
virtual bool canBiasSelection ()
 Possibility to bias selection of events, compensated by a weight.
 
virtual double biasSelectionBy (const SigmaProcess *sigmaProcessPtr, const PhaseSpace *phaseSpacePtr, bool inEvent)
 Multiplicative factor in the phase space selection of a hard process. More...
 
virtual double biasedSelectionWeight ()
 Event weight to compensate for selection weight above.
 
virtual bool canVetoProcessLevel ()
 Possibility to veto event after process-level selection.
 
virtual bool doVetoProcessLevel (Event &)
 
virtual bool canSetLowEnergySigma (int, int) const
 
virtual double doSetLowEnergySigma (int, int, double, double, double) const
 
virtual bool canVetoResonanceDecays ()
 Possibility to veto resonance decay chain.
 
virtual bool doVetoResonanceDecays (Event &)
 
virtual bool canVetoPT ()
 
virtual double scaleVetoPT ()
 Transverse-momentum scale for veto test.
 
virtual bool doVetoPT (int, const Event &)
 
virtual bool canVetoStep ()
 
virtual int numberVetoStep ()
 Up to how many ISR + FSR steps of hardest interaction should be checked.
 
virtual bool doVetoStep (int, int, int, const Event &)
 
virtual bool canVetoPartonLevelEarly ()
 
virtual bool doVetoPartonLevelEarly (const Event &)
 
virtual bool retryPartonLevel ()
 
virtual bool canVetoPartonLevel ()
 Possibility to veto event after parton-level selection.
 
virtual bool doVetoPartonLevel (const Event &)
 
virtual bool canSetResonanceScale ()
 Possibility to set initial scale in TimeShower for resonance decay.
 
virtual double scaleResonance (int, const Event &)
 
virtual bool canReconnectResonanceSystems ()
 Possibility to reconnect colours from resonance decay systems.
 
virtual bool doReconnectResonanceSystems (int, Event &)
 
virtual bool canChangeFragPar ()
 Can change fragmentation parameters.
 
virtual void setStringEnds (const StringEnd *, const StringEnd *, vector< int >)
 
virtual bool doChangeFragPar (StringFlav *, StringZ *, StringPT *, int, double, vector< int >, const StringEnd *)
 
virtual bool doVetoFragmentation (Particle, const StringEnd *)
 
virtual bool doVetoFragmentation (Particle, Particle, const StringEnd *, const StringEnd *)
 
virtual bool canVetoAfterHadronization ()
 
virtual bool doVetoAfterHadronization (const Event &)
 Do the actual veto after hadronization.
 
virtual bool canSetImpactParameter () const
 Can set the overall impact parameter for the MPI treatment.
 
virtual double doSetImpactParameter ()
 Set the overall impact parameter for the MPI treatment.
 
virtual bool onEndHadronLevel (HadronLevel &, Event &)
 Custom processing at the end of HadronLevel::next.
 
- 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 UserHooks
 UserHooks ()
 Constructor.
 
virtual void onInitInfoPtr () override
 After initInfoPtr, initialize workEvent. More...
 
void omitResonanceDecays (const Event &process, bool finalOnly=false)
 omitResonanceDecays omits resonance decay chains from process record. More...
 
void subEvent (const Event &event, bool isHardest=true)
 subEvent extracts currently resolved partons in the hard process. More...
 
- 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.
 
- Protected Attributes inherited from UserHooks
Event workEvent = {}
 Have one event object around as work area.
 
double selBias = 1.
 User-imposed selection bias.
 
double enhancedEventWeight = {}
 Bookkept quantities for boosted event weights.
 
double pTEnhanced = {}
 
double wtEnhanced = {}
 
- 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

Use userhooks to veto PYTHIA emissions above the POWHEG scale.

Member Function Documentation

bool canVetoMPIStep ( )
inlinevirtual

Extraction of pThard based on the incoming event. Assume that all the final-state particles are in a continuous block at the end of the event and the final entry is the POWHEG emission. If there is no POWHEG emission, then pThard is set to SCALUP.

Reimplemented from UserHooks.

bool doVetoFSREmission ( int  ,
const Event ,
int  ,
bool   
)
inlinevirtual

Decide whether to veto current emission or not, based on event record. Usage: doVetoFSREmission( sizeOld, event, iSys, inResonance) where sizeOld is size of event record before current emission-to-be-scrutinized was added, iSys is the system of the radiation (according to PartonSystems), and inResonance is true if the emission takes place in a resonance decay.

Must be radiation from the hard system.

If we already have accepted 'vetoCount' emissions in a row, do nothing.

Pythia radiator (before and after), emitted and recoiler (after).

Pythia or Dire.

Vincia.

Behaviour based on pTemtMode: 0 - pT of emitted w.r.t. radiator before 1 - min(pT of emitted w.r.t. all incoming/outgoing) 2 - min(pT of all outgoing w.r.t. all incoming/outgoing)

When pTemtMode is 0 or 1, iEmt has been selected.

Which parton is emitted, based on emittedMode: 0 - Pythia definition of emitted 1 - Pythia definition of radiated after emission 2 - Random selection of emitted or radiated after emission 3 - Try both emitted and radiated after emission

For emittedMode == 3, have tried iRadAft, now try iEmt

If pTemtMode is 2, then try all final-state partons as emitted

If a Born configuration, and a photon, and QEDvetoMode=2, then don't veto photons, W's or Z's harder than pThard

Veto if pTemt > pThard

Don't veto ANY emissions afterwards

Else mark that an emission has been accepted and continue

Reimplemented from UserHooks.

bool doVetoISREmission ( int  ,
const Event ,
int   
)
inlinevirtual

Decide whether to veto current emission or not, based on event record. Usage: doVetoISREmission( sizeOld, event, iSys) where sizeOld is size of event record before current emission-to-be-scrutinized was added, and iSys is the system of the radiation (according to PartonSystems).

Must be radiation from the hard system

If we already have accepted 'vetoCount' emissions in a row, do nothing

Pythia radiator after, emitted and recoiler after.

Pythia.

Vincia.

Dire.

pTemtMode == 0: pT of emitted w.r.t. radiator pTemtMode == 1: min(pT of emitted w.r.t. all incoming/outgoing) pTemtMode == 2: min(pT of all outgoing w.r.t. all incoming/outgoing)

If a Born configuration, and a photon, and QEDvetoMode=2, then don't veto photons, W, or Z harder than pThard.

Veto if pTemt > pThard.

Don't veto ANY emissions afterwards.

Else mark that an emission has been accepted and continue.

Reimplemented from UserHooks.

bool doVetoMPIEmission ( int  ,
const Event  
)
inlinevirtual

Decide whether to veto an MPI based on event record. Usage: doVetoMPIEmission( sizeOld, event) where sizeOld is size of event record before the current MPI.

Reimplemented from UserHooks.

bool doVetoMPIStep ( int  ,
const Event  
)
inlinevirtual

Decide whether to veto current event or not, based on event record. Usage: doVetoMPIStep( nMPI, event), where nMPI is number of MPI's so far.

Extra check on nMPI

When nFinal is set, be strict about comparing the number of final-state particles with expectation from Born and single-real emission states. (Note: the default from 8.309 onwards is nFinal = -1).

Find if there is a POWHEG emission. Go backwards through the event record until there is a non-final particle. Also sum pT and find pT_1 for possible MPI vetoing

Extra check that we have the correct final state

Flag if POWHEG radiation present and index

If nFinal == -1, then go through the event and extract only the information on the emission and its pT, but do not enforce strict comparisons of final state multiplicity.

Flag whether POWHEG radiation is present, and save index of emission.

If there is no radiation or if pThardMode is 0 then set pThard = SCALUP.

If pThardMode is 1 then the pT of the POWHEG emission is checked against all other incoming and outgoing partons, with the minimal value taken.

If pThardMode is 2, then the pT of all final-state partons is checked against all other incoming and outgoing partons, with the minimal value taken.

Find MPI veto pT if necessary.

Initialise other variables.

Do not veto the event

Reimplemented from UserHooks.

double pT ( const Event e,
int  RadAfterBranch,
int  EmtAfterBranch,
int  RecAfterBranch,
bool  FSR 
)
inline

Top-level wrapper for shower pTs.

Routines to calculate the pT (according to pTdefMode) in a branching: ISR: i (radiator after) -> j (emitted after) k (radiator before) FSR: i (radiator before) -> j (emitted after) k (radiator after) For the Pythia pT definitions, a recoiler (after) must be specified.

VINCIA pT definition.

DIRE pT definition.

double pTcalc ( const Event e,
int  i,
int  j,
int  k,
int  r,
int  xSRin 
)
inline

Calculate pT for a splitting based on pTdefMode. If j is -1, all final-state partons are tried. If i, k, r and xSR are -1, then all incoming and outgoing partons are tried. xSR set to 0 means ISR, while xSR set to 1 means FSR.

Loop over ISR and FSR if necessary

FSR flag

If all necessary arguments have been given, then directly calculate. POWHEG ISR and FSR, need i and j.

Pythia ISR, need i, j and r.

Pythia FSR, need k, j and r.

Otherwise need to try all possible combinations.

Start by finding incoming legs to the hard system after branching (radiator after branching, i for ISR). Use partonSystemsPtr to find incoming just prior to the branching and track mothers.

If we do not have j, then try all final-state partons.

Final-state only.

Exclude photons (and W/Z!)

POWHEG.

ISR - only done once as just kinematical pT.

FSR - try all outgoing partons from system before branching as i. Note that for the hard system, there is no "before branching" information.

i != jNow and no carbon copies

Exclude photons (and W/Z!)

for (iMem)

if (!FSR)

Pythia.

ISR - other incoming as recoiler.

FSR - try all final-state coloured partons as radiator after emission (k).

For this kNow, need to have a recoiler. Try two incoming.

Try all other outgoing.

for (rNow)

for (kNow)

if (!FSR)

if (pTdefMode)

for (j)

for (xSR)

double pTdire ( const Event event,
int  iRad,
int  iEmt,
int  iRec 
)
inline

Compute the Dire pT as in DireTimes::pT2_FF, DireTimes::pT2_FI, DireSpace::pT2_IF, DireSpace::pT2_II.

Shorthands.

Calculate pT2 depending on dipole configuration.

FF – copied from DireTimes::pT2_FF.

FI.

IF.

II.

Sanity check.

Return pT.

double pTpowheg ( const Event e,
int  i,
int  j,
bool  FSR 
)
inline

Compute the POWHEG pT separation between i and j.

pT value for FSR and ISR

POWHEG d_ij (in CM frame). Note that the incoming beams have not been updated in the parton systems pointer yet (i.e. prior to any potential recoil).

POWHEG pT_ISR is just kinematic pT

Check result.

double pTpythia ( const Event e,
int  RadAfterBranch,
int  EmtAfterBranch,
int  RecAfterBranch,
bool  FSR 
)
inline

Compute the Pythia pT separation. Based on pTLund function in History.cc and identical to pTevol.

Convenient shorthands for later

Calculate virtuality of splitting

Mass term of radiator

z values for FSR and ISR

Construct 2 -> 3 variables

Construct dipoles before/after splitting

Virtuality with correct sign

Can get negative pT for massive splittings.

Return pT

double pTvincia ( const Event event,
int  i1,
int  i3,
int  i2 
)
inline

Compute the Vincia pT as in Eq. (2.63)-(2.66) in arXiv:2003.00702. Branching is assumed to be {13} {23} -> 1 3 2.

Shorthands.

Fetch mothers of 1 and 2.

Invariants defined as in Eq. (5) in arXiv:2008.09468.

Normalisation as in Eq. (6) in arXiv:2008.09468.

FF.

RF or IF.

FR or FI.

II.

Calculate pT2 as in Eq. (5) in arXiv:2008.09468.

Sanity check.

Return pT.


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