herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
Herwig::DipoleEventRecord Class Reference

The DipoleEventRecord class is used internally by the dipole shower. More...

#include <DipoleEventRecord.h>

Inheritance diagram for Herwig::DipoleEventRecord:

Classes

struct  getMomentum
 

Public Member Functions

 DipoleEventRecord ()
 The default constructor.
 
 ~DipoleEventRecord ()
 The default destructor just cleans up.
 
PListhard ()
 Return any non-coloured outgoing particles in the current subprocess.
 
const PListhard () const
 Return any non-coloured outgoing particles in the current subprocess.
 
const Lorentz5Momentum & pX () const
 Return the momentum of the hard system.
 
cPDVectorparticlesAfter ()
 Return the particles after emission.
 
const cPDVectorparticlesAfter () const
 Return the particles after emission.
 
cPDVectorparticlesBefore ()
 Return the particles before emission.
 
const cPDVectorparticlesBefore () const
 Return the particles before emission.
 
vector< Lorentz5Momentum > & momentaAfter ()
 Return the momenta after emission.
 
const vector< Lorentz5Momentum > & momentaAfter () const
 Return the momenta after emission.
 
map< PPtr, size_t > & particleIndices ()
 Return the dictionary for the particles.
 
const map< PPtr, size_t > & particleIndices () const
 Return the dictionary for the particles.
 
DensityOperatordensityOperator ()
 Return the density operator.
 
const DensityOperatordensityOperator () const
 Return the density operator.
 
void setSubleadingNc (bool doSub, size_t emissionsLimit)
 Set the subleading Nc flag and the number of emissions to calculate subleading Nc corrections for.
 
bool getContinueSubleadingNc () const
 Get the continue subleading Nc flag.
 
void setDensityOperatorEvolution (int scheme, Energy2 cutoff)
 Set the scheme and cutoff for the density operator evolution.
 
double dipoleKernelForEvolution (size_t em, size_t spec, Energy2 pEmitpSpec, Energy2 pEmitpEmis, Energy2 pEmispSpec)
 Calculates the dipole kernel to use for the density operator evolution. More...
 
void transform (const LorentzRotation &rot)
 Transform all intermediate, hard and outgoing particles using the given transformation. More...
 
const list< DipoleChain > & chains () const
 Return the dipole chains to be showered.
 
list< DipoleChain > & chains ()
 Access the dipole chains to be showered.
 
const list< DipoleChain > & doneChains () const
 Return the dipole chains which ceased evolving.
 
list< DipoleChain > & doneChains ()
 Access the dipole chains which ceased evolving.
 
bool haveChain () const
 Return true, if there are chains to be showered.
 
DipoleChaincurrentChain ()
 Return the current dipole chain.
 
void popChain ()
 Pop the current dipole chain.
 
void popChain (list< DipoleChain >::iterator)
 Remove the given chain.
 
void popChains (const list< list< DipoleChain >::iterator > &)
 Remove the given chains.
 
DipoleIndex mergeIndex (list< Dipole >::iterator firstDipole, const pair< bool, bool > &whichFirst, list< Dipole >::iterator secondDipole, const pair< bool, bool > &whichSecond) const
 Create a merged dipole index given two independent dipoles; the first dipole is to provide the emitter.
 
SubleadingSplittingInfo mergeSplittingInfo (list< DipoleChain >::iterator firstChain, list< Dipole >::iterator firstDipole, const pair< bool, bool > &whichFirst, list< DipoleChain >::iterator secondChain, list< Dipole >::iterator secondDipole, const pair< bool, bool > &whichSecond) const
 Create a SubleadingSplitingInfo given two independent dipoles; the first dipole is to provide the emitter.
 
void getSubleadingSplittings (list< SubleadingSplittingInfo > &)
 Return a list of all possible subleading-N emitting pairs.
 
void split (list< Dipole >::iterator dip, DipoleSplittingInfo &dsplit, pair< list< Dipole >::iterator, list< Dipole >::iterator > &childIterators, DipoleChain *&firstChain, DipoleChain *&secondChain)
 Split the dipole pointed to by the given iterator. More...
 
void split (list< Dipole >::iterator dip, list< DipoleChain >::iterator ch, DipoleSplittingInfo &dsplit, pair< list< Dipole >::iterator, list< Dipole >::iterator > &childIterators, DipoleChain *&firstChain, DipoleChain *&secondChain, bool colourSpectator=true)
 Split the dipole pointed to by the given iterator in the indicated chain, indicating a splitting with a colour spectator. More...
 
pair< PVector, PVectortmpsplit (list< Dipole >::iterator dip, DipoleSplittingInfo &dsplit, pair< list< Dipole >::iterator, list< Dipole >::iterator > &childIterators, DipoleChain *&firstChain, DipoleChain *&secondChain)
 As split, but not touching the acctual event record.
 
pair< PVector, PVectortmpsplit (list< Dipole >::iterator dip, list< DipoleChain >::iterator ch, DipoleSplittingInfo &dsplit, pair< list< Dipole >::iterator, list< Dipole >::iterator > &childIterators, DipoleChain *&firstChain, DipoleChain *&secondChain, bool colourSpectator=true)
 As split, but not touching the acctual event record.
 
void recoil (list< Dipole >::iterator dip, list< DipoleChain >::iterator ch, DipoleSplittingInfo &dsplit)
 Let the given dipole take the recoil of the indicated splitting.
 
void splitSubleading (SubleadingSplittingInfo &dsplit, pair< list< Dipole >::iterator, list< Dipole >::iterator > &childIterators, DipoleChain *&firstChain, DipoleChain *&secondChain)
 Peform a subleading-N splitting.
 
void update (DipoleSplittingInfo &dsplit)
 Update the particles upon insertion of the given splitting.
 
pair< PVector, PVectortmpupdate (DipoleSplittingInfo &dsplit)
 As update, but not touching the acctual event record.
 
void updateInverse (DipoleSplittingInfo &dsplit)
 Inverse of update, updateInverse(update(dsplit)) would return the event record to the state if update would not have been called.
 
list< pair< list< Dipole >::iterator, list< DipoleChain >::iterator > > inDipoles ()
 Return the dipole(s) containing the incoming partons after the evolution has ended. More...
 
tPPair fillEventRecord (StepPtr step, bool firstInteraction, bool realigned)
 Fill the given step and return incoming partons.
 
const map< PPtr, PPtr > & prepare (tSubProPtr subpro, tStdXCombPtr xc, StepPtr step, const pair< PDF, PDF > &pdf, tPPair beam, bool firstInteraction, const set< long > &offShellPartons, bool dipoles=true)
 Prepare the event record for the given subprocess.
 
void slimprepare (tSubProPtr subpro, tStdXCombPtr xc, const pair< PDF, PDF > &pdf, tPPair beam, const set< long > &offShellPartons, bool dipoles=true)
 Prepare the event record for the given subprocess.
 
virtual void clear ()
 Clear the event record: Give up ownership on any object involved in the evolution.
 
void prepareChainsSubleading (const bool decay)
 Prepare the dipole chains for the eventRecord after the subleading shower.
 
void debugLastEvent (ostream &) const
 Print event record at current state.
 
map< PPtr, PerturbativeProcessPtr > & decays ()
 Get the decays.
 
void fillFromDecays (PerturbativeProcessPtr decayProc, vector< PPtr > &original)
 Used in DipoleEventRecord::prepare. More...
 
void separateDecay (PerturbativeProcessPtr decayProc)
 Used in DipoleEventRecord::prepare. More...
 
Energy decay (PPtr incoming, bool &powhegEmission)
 Decay the particle.
 
bool prepareDecay (PerturbativeProcessPtr decayProc, const set< long > &offShellPartons)
 Prepare the event record for the showering of a decay. More...
 
void updateDecayMom (PPtr decayParent, PerturbativeProcessPtr decayProc)
 Boost the momentum of the outgoing of the given perturbative process to the momentum of given particle.
 
void updateDecayChainMom (PPtr decayParent, PerturbativeProcessPtr decayProc)
 Iteratively update the momenta of all particles in a decay chain, starting with the outgoing from the given parent.
 
void updateDecays (PerturbativeProcessPtr decayProc, bool iterate=true)
 Update theDecays following the decay and/or showering of a decay particle. More...
 
PerturbativeProcessPtr currentDecay ()
 Access current decay process.
 
void currentDecay (PerturbativeProcessPtr in)
 Set current decay process.
 
PPtr nextDecay ()
 Return the next particle to be decayed.
 
void findChains (const PList &ordered, const set< long > &offShellpartons, const bool decay=false)
 Find the chains to be showered. More...
 
PList colourOrdered (PPair &in, PList &out)
 Sort the coloured partons into a colour ordered ensemble.
 
- Public Member Functions inherited from Herwig::ShowerEventRecord
tSubProPtr subProcess () const
 Return the subprocess currently showered.
 
tStdXCombPtr xcombPtr () const
 Return the XComb describing the hard process.
 
void xcombPtr (tStdXCombPtr in)
 Set the XComb describing the hard process.
 
const StandardXCombxcomb () const
 Return the XComb describing the hard process.
 
PPairincoming ()
 Return the incoming partons at the current stage of the evolution.
 
const PPairincoming () const
 Return the incoming partons at the current stage of the evolution.
 
PListoutgoing ()
 Return the outgoing partons at the current stage of the evolution.
 
const PListoutgoing () const
 Return the outgoing partons at the current stage of the evolution.
 
PListintermediates ()
 Return the intermediate particles at the current stage of the evolution.
 
const PListintermediates () const
 Return the intermediate particles at the current stage of the evolution.
 
const pair< double, double > & fractions () const
 Return the momentum fractions.
 
pair< double, double > & fractions ()
 Return the momentum fractions.
 
const pair< PDF, PDF > & pdfs () const
 Return the PDFs.
 
void identifyEventType ()
 Identify the type of event.
 
 ShowerEventRecord ()
 The default constructor.
 
virtual ~ShowerEventRecord ()
 The destructor.
 
bool isMCatNLOSEvent () const
 True, if Matchbox MC S-event.
 
bool isMCatNLOHEvent () const
 True, if matchbox MC H-event.
 
bool isPowhegSEvent () const
 True, if Matchbox MC S-event.
 
bool isPowhegHEvent () const
 True, if matchbox MC H-event.
 
void isMCatNLOSEvent (bool in)
 True, if Matchbox MC S-event.
 
void isMCatNLOHEvent (bool in)
 True, if matchbox MC H-event.
 
Ptr< ShowerApproximation >::tptr showerApproximation ()
 Access to the shower approximation.
 
bool truncatedShower () const
 True if truncated shower required.
 
void truncatedShower (bool in)
 True if truncated shower required.
 
- Public Member Functions inherited from ThePEG::Base
void debug () const
 
virtual void debugme () const
 
- Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted
CounterType referenceCount () const
 

Private Attributes

Lorentz5Momentum thePX
 The momentum of the hard system.
 
PList theHard
 Any non-coloured outgoing particles in the current subprocess.
 
map< PPtr, PPtrtheOriginals
 Map originals to copies.
 
list< DipoleChaintheChains
 The dipole chains currently showered.
 
list< DipoleChaintheDoneChains
 The dipole chains which ceased evolving.
 
cPDVector theParticlesAfter
 Particles after the emission.
 
cPDVector theParticlesBefore
 Particles before the emission.
 
vector< Lorentz5Momentum > theMomentaAfter
 Momenta of the particles after emission.
 
pair< size_t, pair< size_t, size_t > > theEmitterEmissionIndices
 Pair of the emitters index before emission and both the emitters and the emissions indices after emission, <emitter_before,<emitter_after,emission> >
 
pair< size_t, size_t > theSpectatorIndices
 Pair of the spectators index before and after emission.
 
DensityOperator theDensityOperator
 The density operator.
 
bool doSubleadingNc
 Switch on or off for subleading Nc corrections.
 
bool continueSubleadingNc
 Flag to keep track of when to stop calculating colour matrix element corrections.
 
size_t subleadingNcEmissionsLimit
 Number of emissions to calculate subleading Nc corrections for.
 
size_t subEmDone
 Current number of subleading emissions.
 
map< PPtr, size_t > theParticleIndices
 Dictionary for particles before emission.
 
int densityOperatorEvolution
 Integer used to set which method of evolving the density operator to use: 0 - Vijk is Eikonal but there is a cutoff. More...
 
Energy2 densityOperatorCutoff
 Cutoff scale for the invariants (e.g. More...
 
map< std::tuple< size_t, size_t, size_t >, map< size_t, size_t > > theEmissionsMap
 Dictionary for emissions, maps the three indices. More...
 
map< PPtr, PerturbativeProcessPtr > theDecays
 The coloured partons that can be off-shell To only be filled by DipoleShowerHandler. More...
 
PerturbativeProcessPtr theCurrentDecay
 
PList theNextDecays
 List of unstable particles, the decay to be performed and/or showered next is always at the back. More...
 

Additional Inherited Members

- Public Types inherited from ThePEG::Pointer::ReferenceCounted
typedef unsigned int CounterType
 
- Static Public Member Functions inherited from ThePEG::Base
static void Init ()
 
- Public Attributes inherited from ThePEG::Pointer::ReferenceCounted
const unsigned long uniqueId
 
- Protected Member Functions inherited from Herwig::ShowerEventRecord
void subProcess (tSubProPtr in)
 Set the subprocess.
 
pair< PDF, PDF > & pdfs ()
 Return the PDFs.
 
map< ColinePtr, ColinePtr > & colourLines ()
 Map of colour lines used to reset colours when inserted into the event.
 
void colourIsolate (const vector< PPtr > &original, const vector< PPtr > &copy)
 Isolate the colour of the process from the rest of the event. More...
 
void updateColour (PPtr particle, bool recursive)
 Update the colour information of a particle prior to insertion into the event record.
 
void mapColour (PPtr original, PPtr copy)
 Map the colours for a given particle.
 
- Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 

Detailed Description

The DipoleEventRecord class is used internally by the dipole shower.

Author
Simon Platzer, Stephen Webster

Definition at line 132 of file DipoleEventRecord.h.

Member Function Documentation

◆ dipoleKernelForEvolution()

double Herwig::DipoleEventRecord::dipoleKernelForEvolution ( size_t  em,
size_t  spec,
Energy2  pEmitpSpec,
Energy2  pEmitpEmis,
Energy2  pEmispSpec 
)

Calculates the dipole kernel to use for the density operator evolution.

Takes the index of the emitter and spectator, and momentum invariants.

◆ fillFromDecays()

void Herwig::DipoleEventRecord::fillFromDecays ( PerturbativeProcessPtr  decayProc,
vector< PPtr > &  original 
)

Used in DipoleEventRecord::prepare.

Add the outgoing particles from a perturbative process to the vector of original particles. Iterates through decay chains.

◆ findChains()

void Herwig::DipoleEventRecord::findChains ( const PList ordered,
const set< long > &  offShellpartons,
const bool  decay = false 
)

Find the chains to be showered.

The decay bool avoids mixing up decaying particles in hard and decay processes

◆ inDipoles()

list<pair<list<Dipole>::iterator,list<DipoleChain>::iterator> > Herwig::DipoleEventRecord::inDipoles ( )

Return the dipole(s) containing the incoming partons after the evolution has ended.

Put back the chains containing these to the chains to be showered.

◆ prepareDecay()

bool Herwig::DipoleEventRecord::prepareDecay ( PerturbativeProcessPtr  decayProc,
const set< long > &  offShellPartons 
)

Prepare the event record for the showering of a decay.

Return false if the decay does not need to be showered.

◆ separateDecay()

void Herwig::DipoleEventRecord::separateDecay ( PerturbativeProcessPtr  decayProc)

Used in DipoleEventRecord::prepare.

Replace the particles in the given perturbative process with their copies from the map, theOriginals. Iterates through decays chains.

◆ split() [1/2]

void Herwig::DipoleEventRecord::split ( list< Dipole >::iterator  dip,
DipoleSplittingInfo dsplit,
pair< list< Dipole >::iterator, list< Dipole >::iterator > &  childIterators,
DipoleChain *&  firstChain,
DipoleChain *&  secondChain 
)
inline

Split the dipole pointed to by the given iterator.

Return references to the affected chains, and update iterators pointing to the children in the returned chains.

Definition at line 333 of file DipoleEventRecord.h.

◆ split() [2/2]

void Herwig::DipoleEventRecord::split ( list< Dipole >::iterator  dip,
list< DipoleChain >::iterator  ch,
DipoleSplittingInfo dsplit,
pair< list< Dipole >::iterator, list< Dipole >::iterator > &  childIterators,
DipoleChain *&  firstChain,
DipoleChain *&  secondChain,
bool  colourSpectator = true 
)

Split the dipole pointed to by the given iterator in the indicated chain, indicating a splitting with a colour spectator.

Return references to the affected chains, and update iterators pointing to the children in the returned chains.

◆ transform()

void Herwig::DipoleEventRecord::transform ( const LorentzRotation rot)

Transform all intermediate, hard and outgoing particles using the given transformation.

Also update their spinInfo if applicable.

◆ updateDecays()

void Herwig::DipoleEventRecord::updateDecays ( PerturbativeProcessPtr  decayProc,
bool  iterate = true 
)

Update theDecays following the decay and/or showering of a decay particle.

With iteration switched on (true) this will update theDecays with the entire decay chain. `

Member Data Documentation

◆ densityOperatorCutoff

Energy2 Herwig::DipoleEventRecord::densityOperatorCutoff
private

Cutoff scale for the invariants (e.g.

pEmitter*pEmission) in the Eikonal dipole kernel, Vijk.

Definition at line 673 of file DipoleEventRecord.h.

◆ densityOperatorEvolution

int Herwig::DipoleEventRecord::densityOperatorEvolution
private

Integer used to set which method of evolving the density operator to use: 0 - Vijk is Eikonal but there is a cutoff.

1 - Vijk is Eikonal. 2 - Vijk=1 for all i,j,k. 3 - Semi-leading Nc, Vijk=0 for all

Definition at line 667 of file DipoleEventRecord.h.

◆ theDecays

map<PPtr,PerturbativeProcessPtr> Herwig::DipoleEventRecord::theDecays
private

The coloured partons that can be off-shell To only be filled by DipoleShowerHandler.

Storage of the particles which need to be decayed

Definition at line 697 of file DipoleEventRecord.h.

◆ theEmissionsMap

map<std::tuple<size_t,size_t,size_t>,map<size_t,size_t> > Herwig::DipoleEventRecord::theEmissionsMap
private

Dictionary for emissions, maps the three indices.

  • emitter before emission
  • emitter after emission
  • emission to another map of the indices before emission mapped to the indices after emission (except the emitters index)

Definition at line 683 of file DipoleEventRecord.h.

◆ theNextDecays

PList Herwig::DipoleEventRecord::theNextDecays
private

List of unstable particles, the decay to be performed and/or showered next is always at the back.

This list is required to force the dipole shower to shower one decay chain at a time, without jumping between decay chains. Note this is not required but this is the most obvious/intuitive way to treat the decays.

Definition at line 712 of file DipoleEventRecord.h.


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