PYTHIA
8.312
|
#include <MergingHooks.h>
Public Member Functions | |
HardProcess () | |
Default constructor. | |
virtual | ~HardProcess () |
Default destructor. | |
HardProcess (const HardProcess &hardProcessIn) | |
Copy constructor. | |
HardProcess (string LHEfile, ParticleData *particleData) | |
Constructor with path to LHE file. | |
virtual void | initOnProcess (string process, ParticleData *particleData) |
Constructor with core process input. More... | |
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... | |
virtual void | translateProcessString (string process) |
Function to translate the process string (in MG/ME notation) More... | |
void | clear () |
Function to clear hard process information. More... | |
virtual bool | allowCandidates (int iPos, vector< int > Pos1, vector< int > Pos2, const Event &event) |
virtual void | storeCandidates (const Event &event, string process) |
Function to identify the hard subprocess in the current event. More... | |
virtual bool | matchesAnyOutgoing (int iPos, const Event &event) |
virtual bool | findOtherCandidates (int iPos, const Event &event, bool doReplace) |
virtual 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... | |
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 |
Public Attributes | |
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. | |
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.
|
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 in DireHardProcess.
void clear | ( | ) |
Function to clear hard process information.
Clear flavour of the first incoming particle
Clear outgoing particles
Clear intermediate bosons in the hard 2->2
Clear reference event
Clear potential positions of outgoing particles in reference event
Clear potential positions of intermediate bosons in reference event
Clear merging scale read from LHE file
|
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 in DireHardProcess.
|
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 in VinciaHardProcess, and DireHardProcess.
int hasResInCurrent | ( | ) |
Function to report if a resonace decay was found in the 2->2 sub-process of the current state
Function to report if a resonace decay was found in the 2->2 hard sub-process in the current state
Do not count final state bosons as resonaces
bool hasResInProc | ( | ) |
Function to report if a resonace decay was found in the 2->2 hard process.
Function to report if a resonace decay was found in the 2->2 hard core process
Do not count final state bosons as resonaces
void initOnLHEF | ( | string | LHEfile, |
ParticleData * | particleData | ||
) |
Constructor with path to LHE file input.
Initialisation on the path to LHE file.
|
virtual |
Constructor with core process input.
The HardProcess 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 in VinciaHardProcess, and DireHardProcess.
void listCandidates | ( | ) | const |
Function to print the hard process candidates in the Matrix element state (for debug)
Function to list the hard process candiates in the matrix element state (for debug)
|
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 in VinciaHardProcess, and DireHardProcess.
int nBosonsOut | ( | ) |
Function to get the number of electroweak final state bosons in the hard process
Function to get the number of uncoloured final state particles in the hard process
int nLeptonIn | ( | ) |
Function to get the number of uncoloured initial state particles in the hard process
int nLeptonOut | ( | ) |
Function to get the number of uncoloured final state particles in the hard process
Bookkeep MSSM neutralinos as leptons
Bookkeep sleptons as leptons
Bookkeep MSSM neutralinos as leptons
Bookkeep sleptons as leptons
For very loose hard process definition, check number of hard process lepton explicitly. Check lepton / neutrino containers as leptons
int nQuarksIn | ( | ) |
Function to get the number of coloured initial state partons in the hard process
int nQuarksOut | ( | ) |
Function to get the number of coloured final state partons in the hard process
For very loose hard process definition, check number of hard process b-quarks explicitly.
int nResInCurrent | ( | ) |
Function to report the number of resonace decays in the 2->2 sub-process of the current state
|
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 in VinciaHardProcess, and DireHardProcess.
void translateLHEFString | ( | string | LHEpath | ) |
Function to access the LHE file and read relevant information.
Function to access the LHE file and read relevant information. The merging scale will be read from the +1 jet sample, called LHEpath_1.lhe while the hard process will be read from LHEpath_0.lhe Currently, only read from MadEvent- or Sherpa-generated LHE files is automatic, else the user is asked to supply the necessary information.
Open path to LHEF and extract merging scale
Check with ME generator has been used
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
Leptons
Jet container
Quarks
Declare intermediate particle identifiers
Electroweak gauge bosons
Top quarks
Dummy index as back-up
All squarks
Declare names of intermediate particles
Electroweak gauge bosons
Top quarks
Dummy index as back-up
All squarks
Declare final state particle identifiers
Leptons
Jet container and lepton containers
Quarks
SM uncoloured bosons
Neutralino in SUSY
All squarks
Declare names of final state particles
Leptons
Jet container and lepton containers
Quarks
SM uncoloured bosons
Neutralino in SUSY
All squarks
Leptons
Jet container and lepton containers
Quarks
SM uncoloured bosons
Neutralino in SUSY
All squarks
Declare size of particle name arrays
Save type of the generator, in order to be able to extract the tms definition
Now read merging scale Open path to LHEF and extract merging scale
Remove whitespaces
Replace d with e
Now read hard process Open path to LHEF and extract hard process
Cut string into incoming and outgoing pieces
Do not count additional final jets
Get incoming particles
Get intermediate particles If intermediates are still empty, fill intermediate with default value
Get final particles
Now read merging scale
Open path to LHEF and extract merging scale
Remove whitespaces
Replace d with e
Now read hard process Open path to LHEF and extract hard process
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
Remember final state bosons
Remember b-quark container
Remember jet container
Remember lepton container
Remember lepton container
Set final particle identifiers
Push back particles / antiparticles
Save final state W-boson container as particle
Push back jets, distribute evenly amongst particles / antiparticles Push back majorana particles, distribute evenly
Done
|
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.
Remove whitespaces
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 in DireHardProcess.