Belle II Software
release-08-01-10
|
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>
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 | |
EvtGenDecays & | operator= (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, Signal > | signals |
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). | |
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.
|
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.