evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtParticleDecay.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
22 
23 #include "EvtGenBase/EvtId.hh"
24 #include "EvtGenBase/EvtPDL.hh"
26 #include "EvtGenBase/EvtPatches.hh"
27 #include "EvtGenBase/EvtRandom.hh"
28 #include "EvtGenBase/EvtReport.hh"
29 
30 #include <ctype.h>
31 #include <fstream>
32 #include <iostream>
33 #include <stdlib.h>
34 #include <string>
35 #include <vector>
36 using std::fstream;
38 {
39  if ( _decay != 0 )
41 }
42 
44 {
45  _brfrsum = decay->_brfrsum;
46  _massmin = decay->_massmin;
47 
48  _decay = decay->_decay->clone();
49 
50  int ndaug = decay->_decay->getNDaug();
51  int narg = decay->_decay->getNArg();
52  double brfr = decay->_decay->getBranchingFraction();
53  std::string name = decay->_decay->getName();
54  EvtId ipar = EvtPDL::chargeConj( decay->_decay->getParentId() );
55  int i;
56  EvtId* daug = new EvtId[ndaug];
57  for ( i = 0; i < ndaug; i++ ) {
58  daug[i] = EvtPDL::chargeConj( decay->_decay->getDaug( i ) );
59  }
60  //Had to add 1 to make sure the vector is not empty!
61  std::vector<std::string> args;
62  for ( i = 0; i < narg; i++ ) {
63  args.push_back( decay->_decay->getArgStr( i ) );
64  }
65 
66  _decay->saveDecayInfo( ipar, ndaug, daug, narg, args, name, brfr );
67 
68  if ( decay->_decay->getPHOTOS() )
69  _decay->setPHOTOS();
70 
71  delete[] daug;
72 }
std::string getArgStr(int j) const
Definition: EvtDecayBase.hh:78
void setPHOTOS()
Definition: EvtDecayBase.hh:70
void printSummary() const
Definition: EvtId.hh:27
int getPHOTOS() const
Definition: EvtDecayBase.hh:69
EvtId getParentId() const
Definition: EvtDecayBase.hh:61
EvtDecayBase * _decay
void saveDecayInfo(EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
double getBranchingFraction() const
Definition: EvtDecayBase.hh:62
virtual std::string getName()=0
void chargeConj(EvtParticleDecay *decay)
int getNDaug() const
Definition: EvtDecayBase.hh:65
virtual EvtDecayBase * clone()=0
int getNArg() const
Definition: EvtDecayBase.hh:68
static EvtId chargeConj(EvtId id)
Definition: EvtPDL.cpp:207
EvtId getDaug(int i) const
Definition: EvtDecayBase.hh:67