PYTHIA  8.311
Public Member Functions | List of all members
EWSystem Class Reference

Class that performs electroweak showers in a single parton system. More...

#include <VinciaEW.h>

Public Member Functions

 EWSystem ()
 Constructors.
 
 EWSystem (unordered_map< pair< int, int >, vector< EWBranching > > *brMapFinalIn, unordered_map< pair< int, int >, vector< EWBranching > > *brMapInitialIn, unordered_map< pair< int, int >, vector< EWBranching > > *brMapResonanceIn, unordered_map< pair< int, int >, vector< pair< int, int > > > *cluMapFinalIn, unordered_map< pair< int, int >, vector< pair< int, int > > > *cluMapInitialIn, AmpCalculator *ampCalcIn)
 
void initPtr (Info *infoPtrIn, VinciaCommon *vinComPtrIn, AlphaEM *alIn)
 Initialize pointers.
 
void init (BeamParticle *beamAPtrIn, BeamParticle *beamBPtrIn)
 Initialize.
 
void setVerbose (int verboseIn)
 Set verbosity.
 
bool prepare (Event &event, int iSysIn, double q2CutIn, bool resDecOnlyIn)
 Prepare an event.
 
bool buildSystem (Event &event)
 Build a system. More...
 
int system ()
 Return which system we are handling.
 
double q2Next (double q2Start, double q2End)
 Generate the next Q2. More...
 
template<class T >
void addAntenna (T ant, vector< T > &antVec, Event &event, int iMot, int iRec, unordered_map< pair< int, int >, vector< EWBranching > > *brMapPtr)
 Add an antenna. More...
 
template<class T >
void generateTrial (vector< T > &antVec, double q2Start, double q2End, double alphaIn)
 Generate a trial. More...
 
void generateTrial (Event &event, vector< EWAntenna > &antVec, double q2Start, double q2End, double alphaIn)
 Overloaded version passing event, just for resonance decays.
 
bool acceptTrial (Event &event)
 Accept a trial.
 
void updateEvent (Event &event)
 Update an event.
 
void updatePartonSystems (Event &event)
 Update parton systems.
 
void printAntennae ()
 Print the antennas.
 
unsigned int nBranchers ()
 Get number of branchers (total and res-dec only)
 
unsigned int nResDec ()
 
bool hasTrial ()
 Check if system has a trial pointer.
 
bool lastWasSplitToFermions ()
 Check if split to fermions, initial, or resonance.
 
bool lastWasInitial ()
 
bool lastWasResonanceDecay ()
 
void clearAntennae ()
 Clear the antennae.
 
void clearLastTrial ()
 Clear the last saved trial (but keep the antennae).
 

Detailed Description

Class that performs electroweak showers in a single parton system.

Member Function Documentation

void addAntenna ( ant,
vector< T > &  antVec,
Event event,
int  iMot,
int  iRec,
unordered_map< pair< int, int >, vector< EWBranching > > *  brMapPtr 
)
inline

Add an antenna.

Check mother.

Skip gluons.

Found. Pass verbosity.

Pass pointers.

Initialise and if success, store.

bool buildSystem ( Event event)

Build a system.

Class that performs electroweak showers in a single parton system.

Build a system.

Verbose output.

Clear out previous antennae and check for initial state. (Assumes iSysSav set by prior call to prepare()).

Set up initial antennae.

Get initial state particles.

Check if the initial state is polarized.

Get final-state particles.

Skip non-resonances if only doing resonance decays.

Make sure the state is polarized (ignore gluons).

Force select random polarisation.

Spin 0:

Spin 1/2 fermions:

Spin 1:

Return all OK if nothing to do.

Set up final antennae. If there is only one final state particle.

Check if it is a resonance. In that case it can only decay.

Otherwise don't do anything.

If two final state particles.

Filter out gluons immediately.

If last scale was below q2cut only consider resonances. (as these still have to decay).

Check if there are any branchings of this particle.

Collect all potential recoilers and compute their weights.

Don't recoil against yourself.

Check if there are any clusterings.

Did we find any clusterings?

idi and idj may be in the wrong order. Check the flipped case.

Have to flip everything.

We didn't find any clusterings. Add the recoiler to the list of backups.

This is a vector of all possible clusterings of idi and idj.

Loop over cluster options for k.

Get the on-shell mass for idMotCluster.

Check in case we are considering the products of an on-shell decay. In that case, we will find infinite branching kernel. We should always select this recoiler. Set the contribution to an arbitrary large value.

Compute 1->2 branching kernel for this clustering.

Store candidate recoiler if aSum > 0.

Else add to backups.

Select a recoiler.

If there were no clusterings and no backups, we panic.

If there were no clusterings, select a backup at random.

Pick one with weighted probability.

Return.

void generateTrial ( vector< T > &  antVec,
double  q2Start,
double  q2End,
double  alphaIn 
)
inline

Generate a trial.

Generate a trial scale for the current antenna.

Current winner.

Save trial information.

This is done to avoid issues with resonance antennae not deciding their channel until acceptTrial.

double q2Next ( double  q2Start,
double  q2End 
)

Generate the next Q2.

Generate a scale, clear saved trial information.

Generate from FF EW antennae. Stop evolution at the EW cutoff.

Generate from II EW antennae. Stop evolution at the EW cutoff.

Generate from res decay EW antennae. Resonances must decay, so permit "evolution" all the way down to zero. (Scales are BW-generated below matching scale). (Note: later may want to keep long-lived resonances undecayed eg until after first pass of hadronisation cf Early vs Late Resonance Decays.)

Did we abort?


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