Belle II Software development
|
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). | |
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.
EvtGenDecays | ( | Pythia8::Pythia * | pythiaPtrIn, |
EvtGen * | evtGen, | ||
bool | limit = true |
||
) |
Expert constructor which takes an already initialized EvtGen instance.
Definition at line 255 of file EvtGenDecays.h.
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.
Definition at line 263 of file EvtGenDecays.h.
|
inline |
|
protected |
Check if an EvtGen particle has oscillated.
Definition at line 668 of file EvtGenDecays.h.
|
protected |
Check if a particle is signal.
Definition at line 653 of file EvtGenDecays.h.
|
protected |
Check if a particle can decay.
Definition at line 635 of file EvtGenDecays.h.
double decay | ( | ) |
Perform all decays and return the event weight.
Definition at line 327 of file EvtGenDecays.h.
|
inline |
Stop EvtGen decaying a particle.
Definition at line 122 of file EvtGenDecays.h.
void getDecayLimits | ( | bool | limit | ) |
Get the Decay limits from Pythia.
Definition at line 286 of file EvtGenDecays.h.
|
inline |
Read an EvtGen user decay file.
Definition at line 131 of file EvtGenDecays.h.
|
protected |
Update the particles to decay with EvtGen, and the selected signals.
Definition at line 481 of file EvtGenDecays.h.
|
protected |
Update the Pythia event record with an EvtGen decay tree.
Definition at line 574 of file EvtGenDecays.h.
void updateEvtGen | ( | ) |
Update the EvtGen particle database from Pythia.
Definition at line 455 of file EvtGenDecays.h.
void updatePythia | ( | ) |
Update the Pythia particle database from EvtGen.
Definition at line 431 of file EvtGenDecays.h.
|
protected |
The EvtGen object.
Definition at line 185 of file EvtGenDecays.h.
|
protected |
Set of particle IDs to exclude decays with EvtGen.
Definition at line 188 of file EvtGenDecays.h.
bool extOwner |
bool has external model
Definition at line 136 of file EvtGenDecays.h.
EvtExternalGenList* extPtr |
External model pointer.
Definition at line 138 of file EvtGenDecays.h.
bool fsrOwner |
bool has FSR model
Definition at line 137 of file EvtGenDecays.h.
EvtAbsRadCorr* fsrPtr |
FSR model pointer.
Definition at line 139 of file EvtGenDecays.h.
|
protected |
Set of particle IDs to include decays with EvtGen.
Definition at line 187 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:limitCylinder
Definition at line 208 of file EvtGenDecays.h.
|
protected |
is the decay limited
Definition at line 209 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:limitRadius
Definition at line 207 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:limitTau
Definition at line 206 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:limitTau0
Definition at line 205 of file EvtGenDecays.h.
std::list<EvtDecayBase*> models |
list of model pointers
Definition at line 140 of file EvtGenDecays.h.
|
staticconstexprprotected |
Number of times to try a decay sampling (constant).
Definition at line 176 of file EvtGenDecays.h.
|
protected |
The pointer to the associated Pythia object.
Definition at line 179 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:rMax
Definition at line 202 of file EvtGenDecays.h.
|
protected |
Random number wrapper for EvtGen.
Definition at line 182 of file EvtGenDecays.h.
|
protected |
The selected signal iterator.
Definition at line 194 of file EvtGenDecays.h.
std::map<int, Signal> signals |
signal particles and statuses
Definition at line 151 of file EvtGenDecays.h.
std::string signalSuffix |
The suffix indicating an EvtGen particle or alias is signal.
Definition at line 154 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.
|
protected |
the pythia parameter ParticleDecays:tauMax
Definition at line 201 of file EvtGenDecays.h.
|
protected |
Flag whether the final particle update has been performed.
Definition at line 191 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:xyMax
Definition at line 203 of file EvtGenDecays.h.
|
protected |
the pythia parameter ParticleDecays:zMax
Definition at line 204 of file EvtGenDecays.h.