PYTHIA
8.312
|
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). | |
Class that performs electroweak showers in a single parton system.
|
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.
|
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?