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

#include <DireMergingHooks.h>

Inheritance diagram for DireHardProcess:
HardProcess

Public Member Functions

void initOnProcess (string process, ParticleData *particleData)
 Constructor with core process input. More...
 
void translateProcessString (string process)
 Function to translate the process string (in MG/ME notation) More...
 
bool allowCandidates (int iPos, vector< int > Pos1, vector< int > Pos2, const Event &event)
 
void storeCandidates (const Event &event, string process)
 Function to identify the hard subprocess in the current event. More...
 
bool matchesAnyOutgoing (int iPos, const Event &event)
 
bool findOtherCandidates (int iPos, const Event &event, bool doReplace)
 
bool exchangeCandidates (vector< int > candidates1, vector< int > candidates2, unordered_map< int, int > further1, unordered_map< int, int > further2)
 Function to exchange a stored hard process candidate with another choice. More...
 
- Public Member Functions inherited from HardProcess
 HardProcess ()
 Default constructor.
 
virtual ~HardProcess ()
 Default destructor.
 
 HardProcess (const HardProcess &hardProcessIn)
 Copy constructor.
 
 HardProcess (string LHEfile, ParticleData *particleData)
 Constructor with path to LHE file.
 
void initOnLHEF (string LHEfile, ParticleData *particleData)
 Constructor with path to LHE file input. More...
 
void translateLHEFString (string LHEpath)
 Function to access the LHE file and read relevant information. More...
 
void clear ()
 Function to clear hard process information. More...
 
int nQuarksOut ()
 
int nLeptonOut ()
 
int nBosonsOut ()
 
int nQuarksIn ()
 
int nLeptonIn ()
 
int hasResInCurrent ()
 
int nResInCurrent ()
 
bool hasResInProc ()
 Function to report if a resonace decay was found in the 2->2 hard process. More...
 
void list () const
 Function to print the hard process (for debug)
 
void listCandidates () const
 

Additional Inherited Members

- Public Attributes inherited from HardProcess
int hardIncoming1
 Flavour of the first incoming particle.
 
int hardIncoming2
 Flavour of the second incoming particle.
 
vector< int > hardOutgoing1
 Flavours of the outgoing particles.
 
vector< int > hardOutgoing2
 
vector< int > hardIntermediate
 Flavour of intermediate bosons in the hard 2->2.
 
Event state
 Current reference event.
 
vector< int > PosOutgoing1
 Potential positions of outgoing particles in reference event.
 
vector< int > PosOutgoing2
 
vector< int > PosIntermediate
 Potential positions of intermediate bosons in reference event.
 
double tms
 Information on merging scale read from LHE file.
 

Detailed Description

Declaration of hard process class This class holds information on the desired hard 2->2 process for the merging. This class is a container class for History class use.

Member Function Documentation

bool allowCandidates ( int  iPos,
vector< int >  Pos1,
vector< int >  Pos2,
const Event event 
)
virtual

Function to check whether the sets of candidates Pos1, Pos2, together with the proposed candidate iPos give an allowed hard process state

Function to check if the candidates stored in Pos1 and Pos2, together with a proposed candidate iPos are allowed.

Find colour-partner of new candidate

Never allow equal initial partners!

Never allow equal initial partners!

Reimplemented from HardProcess.

bool exchangeCandidates ( vector< int >  candidates1,
vector< int >  candidates2,
unordered_map< int, int >  further1,
unordered_map< int, int >  further2 
)
virtual

Function to exchange a stored hard process candidate with another choice.

Function to exchange hard process candidates.

Replace, if one-to-one correspondence exists.

Else simply swap with the first candidate.

Done

Reimplemented from HardProcess.

bool findOtherCandidates ( int  iPos,
const Event event,
bool  doReplace 
)
virtual

Function to check if instead of the particle event[iCandidate], another particle could serve as part of the hard process. Assumes that iCandidate is already stored as part of the hard process.

Return value

Save stored candidates' properties.

If the particle's mother is an identified intermediate resonance, then do not attempt any replacement.

Compare particle properties

Find candidate amongst the already stored ME process candidates.

Check outgoing candidates

Compare particle properties

Check outgoing candidates

Compare particle properties

If more / less than one stored candidate for iPos has been found, exit.

Now check for other allowed candidates.

Do nothing if this particle has already be found, or if this particle is a jet, lepton container or lepton

Declare vector of already existing candiates.

If allowed, remember replacment parton.

Now check for other allowed candidates.

Do nothing if this particle has already be found, or if this particle is a jet, lepton container or lepton

Declare vector of already existing candidates.

If allowed, remember replacment parton.

Remove all hard process particles that would be counted twice.

Decide of a replacment candidate has been found.

Done

Reimplemented from HardProcess.

void initOnProcess ( string  process,
ParticleData particleData 
)
virtual

Constructor with core process input.

The DireHardProcess class.

Declaration of hard process class This class holds information on the desired hard 2->2 process to be merged This class is a container class for History class use. Initialisation on the process string

Reimplemented from HardProcess.

bool matchesAnyOutgoing ( int  iPos,
const Event event 
)
virtual

Function to check if the particle event[iPos] matches any of the stored outgoing particles of the hard subprocess

Match quantum numbers of any first outgoing candidate

Match quantum numbers of any second outgoing candidate

Match parton in the hard process, or parton from decay of electroweak boson in hard process, or parton from decay of electroweak boson from decay of top

Check outgoing candidates

Compare particle properties

Check outgoing candidates

Compare particle properties

Check if maps to hard process: Check that particle is in hard process

Or particle has taken recoil from first splitting

Or particle has on-shell resonace as mother

Or particle has on-shell resonace as mother, which again has and on-shell resonance as mother

Done

Reimplemented from HardProcess.

void storeCandidates ( const Event event,
string  process 
)
virtual

Function to identify the hard subprocess in the current event.

Store the reference event

Local copy of intermediate bosons

Local copy of outpoing partons

Clear positions of intermediate and outgoing particles

For QCD dijet or e+e- > jets hard process, do not store any candidates, as to not discriminate clusterings

Done

For inclusive merging, do not store any candidates, as to not discriminate clusterings

Done

Initialise vector of particles that were already identified as hard process particles

If the hard process is specified only by containers, then add all particles matching with the containers to the hard process.

Try to find all unmatched hard process leptons. Loop through event to find outgoing lepton

Skip non-final particles

Skip all particles that have already been identified

If the particle matches an outgoing neutrino, save it

If the particle matches an outgoing lepton, save it

If the particle matches an outgoing b-quark, save it

Skip all particles that have already been identified

If the particle matches an outgoing neutrino, save it

If the particle matches an outgoing lepton, save it

If the particle matches an outgoing b-quark, save it

Done

Now begin finding candidates when not only containers are used.

First try to find final state bosons

Do nothing if the intermediate boson is absent

Do nothing if this boson does not match any final state boson

Loop through event

Skip all particles that have already been identified

If the particle has a requested intermediate id, check if if is a final state boson

Be careful only to replace one index at a time!

Check for W-boson container

Second try to find particles coupled to intermediate bosons

Do nothing if the intermediate boson is absent

Loop through event

If the particle has a requested intermediate id, check if daughters are hard process particles

If this particle is a potential intermediate

If id's of daughters are good, store position

Loop through daughters to check if these contain some hard outgoing particles

Skip all particles that have already been identified

Check if daughter is hard outgoing particle

Found particle id

Found jet

Store position

Remove the matched particle from the list

Check if daughter is hard outgoing antiparticle

Found particle id

Found jet

Store position

Remove the matched particle from the list

End loop through daughters

End if ids match

End loop through event

End loop though requested intermediates

If all outgoing particles were found, done

Return

Leptons not associated with resonance are allowed. Try to find all unmatched hard process leptons. Loop through event to find outgoing lepton

Skip non-final particles and final partons

Skip all particles that have already been identified

Check if any hard outgoing leptons remain

Do nothing if this particle has already be found, or if this particle is a jet or quark

If the particle matches an outgoing lepton, save it

Check if any hard outgoing antileptons remain

Do nothing if this particle has already be found, or if this particle is a jet or quark

If the particle matches an outgoing lepton, save it

Do nothing if this particle has already be found, or if this particle is a jet.

Do nothing if this particle has already be found, or if this particle is a jet.

In case the index of the multimap is filled twice, make sure not to arbitrarily overwrite set values.

Skip all particles that have already been identified

Skip all indices that have already been identified

Save parton

remove entry form lists

Skip all particles that have already been identified

Skip all indices that have already been identified

Save parton

remove entry form lists

In case the index of the multimap is filled twice, make sure not to arbitraryly overwrite set values.

Skip all particles that have already been identified

Skip all indices that have already been identified

Save parton

remove entry form lists

Skip all particles that have already been identified

Skip all indices that have already been identified

Save parton

remove entry form lists

It sometimes happens that MadEvent does not put a heavy coloured resonance into the LHE file, even if requested. This means that the decay products of this resonance need to be found separately. Loop through event to find hard process (anti)quarks

Skip non-final particles and final partons

Skip all particles that have already been identified

Check if any hard outgoing quarks remain

Do nothing if this particle has already be found, or if this particle is a jet, lepton container or lepton

If the particle matches an outgoing quark, save it

Save parton

remove entry form lists

Check if any hard outgoing antiquarks remain

Do nothing if this particle has already be found, or if this particle is a jet, lepton container or lepton

If the particle matches an outgoing antiquark, save it

Save parton

Remove parton from list

Done

Reimplemented from HardProcess.

void translateProcessString ( string  process)
virtual

Function to translate the process string (in MG/ME notation)

Function to translate a string specitying the core process into the internal notation Currently, the input string has to be in MadEvent notation

Particle identifiers, ordered in such a way that e.g. the "u" in a mu is not mistaken for an u quark

Leptons

Jet container

Quarks

Leptons

Jet container

Quarks

Declare intermediate particle identifiers

Electroweak gauge bosons

All squarks

Top quarks

Dummy index as back-up

Declare names of intermediate particles

Electroweak gauge bosons

All squarks

Top quarks

Dummy index as back-up

Declare final state particle identifiers

Leptons

Jet container and lepton containers

Containers for inclusive handling for weak bosons and jets

All squarks

Quarks

SM uncoloured bosons

Neutralino in SUSY

Declare names of final state particles

Leptons

Jet container and lepton containers

Containers for inclusive handling for weak bosons and jets

All squarks

Quarks

SM uncoloured bosons

Neutralino in SUSY

Declare size of particle name arrays

Start mapping user-defined particles onto particle ids.

Find user-defined hard process content Count number of user particles

Cut user-defined particles from remaining process

Cut remaining process string from rest

Remove curly brackets and whitespace

Convert particle numbers in user particle to integers

Save remaining process string

Remove curly brackets and whitespace

Start mapping residual process string onto particle IDs. Declare leftover process after user-defined particles have been converted

Remove comma separation

Count number of resonances

Cut string in incoming, resonance+decay and outgoing pieces

Cut last resonance from rest

If the string was not cut into pieces, i.e. no resonance was required, cut string using '>' as delimiter

Cut string in incoming and outgoing pieces

Get incoming particles

Check intermediate resonances and decay products

Seperate strings into intermediate and outgoing, if not already done

Get intermediate particles

Get outgoing particles

For arbitrary or non-existing intermediate, remember zero for each two outgoing particles, without bosons.

For final state bosons, bookkeep the final state boson as intermediate as well.

For final state bosons, bookkeep the final state boson as intermediate as well.

Now store incoming, intermediate and outgoing Set intermediate tags

Set the incoming particle tags

Now store final particle identifiers Start with user-defined particles.

For non-existing intermediate, remember zero.

For non-existing intermediate, remember zero.

Push back particles / antiparticles

Save final state W-boson container as particle

Push back jets, distribute evenly among particles / antiparticles Push back majorana particles, distribute evenly

Done

Reimplemented from HardProcess.


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