43 for ( i = 0; i <
m_nmode; i++ ) {
58 std::vector<std::string> args;
60 for ( j = 0; j < tModel->
getNArg(); j++ ) {
77 for ( i = 0; i <
m_nmode; i++ ) {
88 for ( i = 0; i <
m_nmode; i++ ) {
96 for ( i = 0; i <
m_nmode; i++ ) {
109 if ( imode >= 0 && imode <
m_nmode ) {
111 if ( theDecay !=
nullptr ) {
148 for ( j = 0; j < 10000000; j++ ) {
153 for ( i = 0; i <
getNMode(); i++ ) {
156 if ( u <
getDecay( i ).getBrfrSum() ) {
185 <<
"Tried 10000000 times to generate decay of "
188 <<
"Will take first kinematically allowed decay in the decay table"
194 double previousBrSum = 0.0;
195 for ( i = 0; i <
getNMode(); i++ ) {
196 if (
getDecay( i ).getBrfrSum() != previousBrSum ) {
207 <<
" with mass:" << p->
mass() <<
" will throw event away! " << endl;
219 <<
"Error m_nmode not equal to zero!!!" << endl;
233 <<
"Error getting channel:" << nchannel <<
" with only " <<
m_nmode
234 <<
" stored!" << endl;
248 for ( i = 0; i <
m_nmode; i++ ) {
260 for ( i = 0; i <
m_nmode; i++ ) {
273 for ( i = 0; i <
m_nmode; i++ ) {
289 <<
"Two matching decays with same parent in decay table\n";
294 for (
int j = 0; j < newDec->
getNDaug(); j++ )
319 <<
"Please give me a "
320 <<
"branching fraction sum greater than 0\n";
325 <<
"Warning, sum of branching fractions for "
334 for ( i = 0; i <
m_nmode; i++ ) {
350 for ( i = 0; i <
m_nmode; i++ ) {
365 std::vector<std::string> args;
367 for ( j = 0; j < tModel->
getNArg(); j++ ) {
368 args.push_back( tModel->
getArgStr( j ) );
392 for ( i = 0; i <
m_nmode; i++ ) {
400 <<
" Attempt to remove undefined mode for" << endl
403 for (
int j = 0; j < decay->
getNDaug(); j++ )
417 double divisor = 1 - match_bf;
418 if ( divisor < 0.000001 && m_nmode > 1 ) {
420 <<
"Removing requested mode leaves "
422 <<
" with zero sum branching fraction," << endl
423 <<
"but more than one decay mode remains. Aborting." << endl;
429 for ( i = 0; i < match; i++ ) {
431 newlist[i]->
setBrfrSum( newlist[i]->getBrfrSum() / divisor );
433 for ( i = match + 1; i <
m_nmode; i++ ) {
436 ( newlist[i - 1]->getBrfrSum() - match_bf ) / divisor );
455 for ( i = 0; i <
getNMode(); i++ ) {
EvtParticleDecay * EvtParticleDecayPtr
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
void saveDecayInfo(EvtId ipar, int ndaug, const EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
std::string getArgStr(int j) const
virtual bool matchingDecay(const EvtDecayBase &other) const
EvtId getParentId() const
std::string getModelName() const
EvtId getDaug(int i) const
double getBranchingFraction() const
virtual EvtDecayBase * clone() const =0
const EvtId * getDaugs() const
static std::string name(EvtId i)
void removeMode(EvtDecayBase *decay)
void printSummary() const
EvtParticleDecayList & operator=(const EvtParticleDecayList &o)
EvtDecayBase * getDecayModel(EvtParticle *p)
void makeChargeConj(EvtParticleDecayList *conjDecayList)
EvtParticleDecay & getDecay(int nchannel) const
void addMode(EvtDecayBase *decay, double brfr, double massmin)
EvtParticleDecayPtr * m_decaylist
double getMassMin() const
void setDecayModel(EvtDecayBase *decay)
double getBrfrSum() const
EvtDecayBase * getDecayModel()
void setMassMin(double massmin)
void setBrfrSum(double brfrsum)
static void setRejectFlag()