Belle II Software  release-08-01-10
EvtGenDecays Class Reference

A class to perform decays via the external EvtGen decay program, see http://evtgen.warwick.ac.uk/, the program manual provided with the EvtGen distribution, and D. More...

#include <EvtGenDecays.h>

Collaboration diagram for EvtGenDecays:

Classes

struct  Signal
 Map of signal particle info. More...
 

Public Member Functions

 EvtGenDecays (Pythia8::Pythia *pythiaPtrIn, EvtGen *evtGen, bool limit=true)
 Expert constructor which takes an already initialized EvtGen instance.
 
 EvtGenDecays (Pythia8::Pythia *pythiaPtrIn, std::string decayFile, std::string particleDataFile, EvtExternalGenList *extPtrIn=0, EvtAbsRadCorr *fsrPtrIn=0, int mixing=1, bool xml=false, bool limit=true, bool extUse=true, bool fsrUse=true)
 Constructor.
 
 ~EvtGenDecays ()
 Destructor.
 
 EvtGenDecays (const EvtGenDecays &)=delete
 forbid copy
 
EvtGenDecaysoperator= (const EvtGenDecays &)=delete
 forbid assignment
 
void getDecayLimits (bool limit)
 Get the Decay limits from Pythia.
 
double decay ()
 Perform all decays and return the event weight.
 
void exclude (int id)
 Stop EvtGen decaying a particle.
 
void updatePythia ()
 Update the Pythia particle database from EvtGen.
 
void updateEvtGen ()
 Update the EvtGen particle database from Pythia.
 
void readDecayFile (std::string decayFile, bool xml=false)
 Read an EvtGen user decay file.
 

Public Attributes

bool extOwner
 bool has external model
 
bool fsrOwner
 bool has FSR model
 
EvtExternalGenList * extPtr
 External model pointer.
 
EvtAbsRadCorr * fsrPtr
 FSR model pointer.
 
std::list< EvtDecayBase * > models
 list of model pointers
 
std::map< int, Signalsignals
 signal particles and statuses
 
std::string signalSuffix
 The suffix indicating an EvtGen particle or alias is signal.
 

Protected Member Functions

void updateData (bool final=false)
 Update the particles to decay with EvtGen, and the selected signals.
 
void updateEvent (Pythia8::Particle *pyPro, EvtParticle *egPro, std::vector< int > *pySigs=0, std::vector< EvtParticle * > *egSigs=0, std::vector< double > *bfs=0, double *wgt=0)
 Update the Pythia event record with an EvtGen decay tree.
 
bool checkVertex (Pythia8::Particle *pyPro)
 Check if a particle can decay.
 
bool checkSignal (Pythia8::Particle *pyPro)
 Check if a particle is signal.
 
bool checkOsc (EvtParticle *egPro)
 Check if an EvtGen particle has oscillated.
 

Protected Attributes

Pythia8::Pythia * pythiaPtr
 The pointer to the associated Pythia object.
 
EvtGenRandom rndm
 Random number wrapper for EvtGen.
 
EvtGen * evtgen
 The EvtGen object.
 
std::set< int > incIds
 Set of particle IDs to include decays with EvtGen.
 
std::set< int > excIds
 Set of particle IDs to exclude decays with EvtGen.
 
bool updated
 Flag whether the final particle update has been performed.
 
std::map< int, Signal >::iterator signal
 The selected signal iterator.
 
double tau0Max
 Parameters used to check if a particle should decay (as set via Pythia). More...
 
double tauMax
 the pythia parameter ParticleDecays:tauMax
 
double rMax
 the pythia parameter ParticleDecays:rMax
 
double xyMax
 the pythia parameter ParticleDecays:xyMax
 
double zMax
 the pythia parameter ParticleDecays:zMax
 
bool limitTau0
 the pythia parameter ParticleDecays:limitTau0
 
bool limitTau
 the pythia parameter ParticleDecays:limitTau
 
bool limitRadius
 the pythia parameter ParticleDecays:limitRadius
 
bool limitCylinder
 the pythia parameter ParticleDecays:limitCylinder
 
bool limitDecay
 is the decay limited
 

Static Protected Attributes

static constexpr int NTRYDECAY = 1000
 Number of times to try a decay sampling (constant).
 

Detailed Description

A class to perform decays via the external EvtGen decay program, see http://evtgen.warwick.ac.uk/, the program manual provided with the EvtGen distribution, and D.

J. Lange, Nucl. Instrum. Meth. A462, 152 (2001) for details.

EvtGen performs a series of decays from some initial particle decay, rather than just a single decay, and so EvtGen cannot be interfaced through the standard external DecayHandler class without considerable complication. Consequently, EvtGen is called on the complete event record after all steps of Pythia are completed.

Oftentimes a specific "signal" decay is needed to occur once in an event, and all other decays performed normally. This is possible via reading in a user decay file (with readDecayFile) and creating aliased particles with names ending with signalSuffix. By default, this is "_SIGNAL". When decay() is called, all particles in the Pythia event record that are of the same types as the signal particles are collected. One is selected at random and decayed via the channel(s) defined for that aliased signal particle. All other particles are decayed normally. The weight for the event is calculated and returned.

It is also possible to specify a status needed to consider a particle as a signal candidate. This can be done by modifying the signals map, e.g. if the tau- is a signal candidate, then EvtGenDecays.signals[15].status = 201 will only only select as candidates any tau- with this status. This allows the event record to be changed before decays, so only certain particles are selected as possible signal candidates (e.g. passing kinematic requirements).

Please note that particles produced from a signal candidate decay are not searched for additional signal candidates. This means that if B0 and tau- have been designated as signal, then a tau- from a W- decay would be a signal candidate, while a tau- from a B0 decay would not. This restriction arises from the additional complexity of allowing recursive signal decays. The following statuses are used: 93 for particles decayed with EvtGen, 94 for particles oscillated with EvtGen, 95 for signal particles, and 96 for signal particles from an oscillation.

Definition at line 88 of file EvtGenDecays.h.

Member Data Documentation

◆ tau0Max

double tau0Max
protected

Parameters used to check if a particle should decay (as set via Pythia).

http://home.thep.lu.se/Pythia/pythia82html/ParticleDecays.html the pythia parameter ParticleDecays:tau0Max

Definition at line 200 of file EvtGenDecays.h.


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