#include <EvtLunda.hh>
Inheritance diagram for EvtLunda:
Public Member Functions | |
EvtLunda () | |
virtual | ~EvtLunda () |
void | getName (std::string &name) |
EvtDecayBase * | clone () |
void | decay (EvtParticle *p) |
std::string | commandName () |
void | command (std::string cmd) |
void | init () |
void | initProbMax () |
int | getTotalEvt () |
void | LundaInit (int dummy) |
void | ExclusiveDecay (EvtParticle *p) |
void | makeDecay (EvtParticle *p) |
void | setDaughterSpinDensity (int daughter) |
int | isDaughterSpinDensitySet (int daughter) |
double | getProbMax (double prob) |
double | resetProbMax (double prob) |
virtual bool | matchingDecay (const EvtDecayBase &other) const |
EvtId | getParentId () |
double | getBranchingFraction () |
void | disableCheckQ () |
void | checkQ () |
int | getNDaug () |
EvtId * | getDaugs () |
EvtId | getDaug (int i) |
int | getNArg () |
int | getPHOTOS () |
void | setPHOTOS () |
void | setVerbose () |
void | setSummary () |
double * | getArgs () |
std::string * | getArgsStr () |
double | getArg (int j) |
std::string | getArgStr (int j) |
std::string | getModelName () |
int | getDSum () |
int | summary () |
int | verbose () |
void | saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr) |
void | printSummary () |
void | setProbMax (double prbmx) |
void | noProbMax () |
void | checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1) |
void | checkNDaug (int d1, int d2=-1) |
void | checkSpinParent (EvtSpinType::spintype sp) |
void | checkSpinDaughter (int d1, EvtSpinType::spintype sp) |
virtual int | nRealDaughters () |
Static Public Member Functions | |
static void | findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10]) |
static void | findMass (EvtParticle *p) |
static double | findMaxMass (EvtParticle *p) |
Protected Member Functions | |
bool | daugsDecayedByParentModel () |
Protected Attributes | |
bool | _daugsDecayedByParentModel |
Private Member Functions | |
void | store (EvtDecayBase *jsdecay) |
void | fixPolarizations (EvtParticle *p) |
Static Private Attributes | |
static int | nlundadecays = 0 |
static EvtDecayBasePtr * | lundadecays = 0 |
static int | ntable = 0 |
static int | ncommand = 0 |
static int | lcommand = 0 |
static std::string * | commands = 0 |
static int | nevt = 0 |
Definition at line 33 of file EvtLunda.hh.
EvtLunda::EvtLunda | ( | ) |
EvtLunda::~EvtLunda | ( | ) | [virtual] |
Definition at line 91 of file EvtLunda.cc.
References commands, calibUtil::ERROR, genRecEmupikp::i, lundadecays, nlundadecays, and report().
00091 { 00092 00093 00094 int i; 00095 00096 00097 //the deletion of commands is really uggly! 00098 00099 if (nlundadecays==0) { 00100 delete [] commands; 00101 commands=0; 00102 return; 00103 } 00104 00105 for(i=0;i<nlundadecays;i++){ 00106 if (lundadecays[i]==this){ 00107 lundadecays[i]=lundadecays[nlundadecays-1]; 00108 nlundadecays--; 00109 if (nlundadecays==0) { 00110 delete [] commands; 00111 commands=0; 00112 } 00113 return; 00114 } 00115 } 00116 00117 report(ERROR,"EvtGen") << "Error in destroying Lunda model!"<<endl; 00118 00119 }
void EvtDecayBase::checkNArg | ( | int | a1, | |
int | a2 = -1 , |
|||
int | a3 = -1 , |
|||
int | a4 = -1 | |||
) | [inherited] |
Definition at line 482 of file EvtDecayBase.cc.
References EvtDecayBase::_modelname, EvtDecayBase::_narg, calibUtil::ERROR, EvtDecayBase::printSummary(), and report().
Referenced by EvtVVSPwave::init(), EvtVVPIPI_WEIGHTED::init(), EvtVVpipi::init(), EvtVVP::init(), EvtVSSMix::init(), EvtVSSBMixCPT::init(), EvtVSS::init(), EvtVSPPwave::init(), EvtVPHOtoVISRHi::init(), EvtVPHOtoVISR::init(), EvtVll::init(), EvtVectorIsr::init(), EvtTVSPwave::init(), EvtTSS::init(), EvtTrackGen::init(), EvtTauVectornu::init(), EvtTauScalarnu::init(), EvtTaulnunu::init(), EvtTauHadnu::init(), EvtTauGamMu::init(), EvtT2GV::init(), EvtSVVNONCPEIGEN::init(), EvtSVVHelAmp::init(), EvtSVVCPLH::init(), EvtSVVCP::init(), EvtSVSNONCPEIGEN::init(), EvtSVSCPLH::init(), EvtSVSCPiso::init(), EvtSVSCP::init(), EvtSVS::init(), EvtSVPHelAmp::init(), EvtSVPCP::init(), EvtSTSCP::init(), EvtSTS::init(), EvtSSSCPT::init(), EvtSSSCPpng::init(), EvtSSSCP::init(), EvtSSDCP::init(), EvtSLN::init(), EvtSll::init(), EvtS2GV::init(), EvtRexc::init(), EvtPythia::init(), EvtPyGaGa::init(), EvtPycont::init(), EvtPi0Dalitz::init(), EvtPhsp::init(), EvtPhokhara_ppbar::init(), EvtPhokhara_pipipi0::init(), EvtPhokhara_pipi::init(), EvtPhokhara_pi0pi0pipi::init(), EvtPhokhara_nnbar::init(), EvtPhokhara_LLB::init(), EvtPhokhara_KK::init(), EvtPhokhara_K0K0::init(), EvtPhokhara_4pi::init(), EvtPhokhara::init(), EvtPhiDalitz::init(), EvtPartWave::init(), EvtP2GC2::init(), EvtP2GC1::init(), EvtP2GC0::init(), EvtOmegaDalitz::init(), EvtmH2::init(), EvtMelikhov::init(), EvtMBody3::init(), EvtMassH2::init(), EvtMassH1::init(), EvtLNuGamma::init(), EvtLambdaP_BarGamma::init(), EvtLambdac2pKpi::init(), EvtKstarstargamma::init(), EvtKstarnunu::init(), EvtJscont::init(), EvtJpipi::init(), EvtJPE::init(), EvtJetSet::init(), EvtISGW2::init(), EvtISGW::init(), EvtHypWK::init(), EvtHQET::init(), EvtHelPPJ::init(), EvtHelAmp::init(), EvtHAngSam3::init(), EvtGoityRoberts::init(), EvtFlatQ2::init(), EvtEtaDalitz::init(), EvtEDM::init(), EvtDMix::init(), EvtDeBD::init(), EvtDDalitz::init(), EvtChi2BB2::init(), EvtChi2BB1::init(), EvtChi1BB2::init(), EvtChi1BB1::init(), EvtChi0BB2::init(), EvtCBTo3piP00::init(), EvtCBTo3piMPP::init(), EvtCalHelAmp::init(), EvtBtoXsll::init(), EvtBtoXsEtap::init(), EvtbTosllBall::init(), EvtbTosllAli::init(), EvtBToKpipiCP::init(), EvtBtoKpiCPiso::init(), EvtBtoKD3P::init(), EvtBTo4piCP::init(), EvtBTo3piCP::init(), EvtBto2piCPiso::init(), EvtBsquark::init(), EvtBody3::init(), EvtBHadronic::init(), EvtAV2GV::init(), and EvtAngH2::init().
00482 { 00483 00484 if ( _narg != a1 && _narg != a2 && _narg != a3 && _narg != a4 ) { 00485 report(ERROR,"EvtGen") << _modelname.c_str() << " generator expected "<<endl; 00486 report(ERROR,"EvtGen") << a1<<endl;; 00487 if ( a2>-1) { 00488 report(ERROR,"EvtGen") << " or " << a2<<endl; 00489 } 00490 if ( a3>-1) { 00491 report(ERROR,"EvtGen") << " or " << a3<<endl; 00492 } 00493 if ( a4>-1) { 00494 report(ERROR,"EvtGen") << " or " << a4<<endl; 00495 } 00496 report(ERROR,"EvtGen") << " arguments but found:"<< _narg << endl; 00497 printSummary(); 00498 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00499 ::abort(); 00500 00501 } 00502 00503 }
void EvtDecayBase::checkNDaug | ( | int | d1, | |
int | d2 = -1 | |||
) | [inherited] |
Definition at line 504 of file EvtDecayBase.cc.
References EvtDecayBase::_modelname, EvtDecayBase::_ndaug, calibUtil::ERROR, EvtDecayBase::printSummary(), and report().
Referenced by EvtVVSPwave::init(), EvtVVPIPI_WEIGHTED::init(), EvtVVpipi::init(), EvtVVP::init(), EvtVubNLO::init(), EvtVubHybrid::init(), EvtVub::init(), EvtVSSMix::init(), EvtVSSBMixCPT::init(), EvtVSS::init(), EvtVSPPwave::init(), EvtVPHOtoVISRHi::init(), EvtVPHOtoVISR::init(), EvtVll::init(), EvtVectorIsr::init(), EvtTVSPwave::init(), EvtTSS::init(), EvtTauVectornu::init(), EvtTauScalarnu::init(), EvtTaulnunu::init(), EvtTauGamMu::init(), EvtSVVNONCPEIGEN::init(), EvtSVVHelAmp::init(), EvtSVVCPLH::init(), EvtSVVCP::init(), EvtSVSNONCPEIGEN::init(), EvtSVSCPLH::init(), EvtSVSCPiso::init(), EvtSVSCP::init(), EvtSVS::init(), EvtSVPHelAmp::init(), EvtSVPCP::init(), EvtSTSCP::init(), EvtSTS::init(), EvtSSSCPT::init(), EvtSSSCPpng::init(), EvtSSSCP::init(), EvtSSDCP::init(), EvtSPL::init(), EvtSLPole::init(), EvtSLN::init(), EvtSll::init(), EvtSLBKPole::init(), EvtS2GV::init(), EvtPi0Dalitz::init(), EvtPhokhara::init(), EvtPhiDalitz::init(), EvtPBB2::init(), EvtPBB1::init(), EvtPartWave::init(), EvtP2GC2::init(), EvtP2GC1::init(), EvtP2GC0::init(), EvtOmegaDalitz::init(), EvtMelikhov::init(), EvtLNuGamma::init(), EvtLambdaP_BarGamma::init(), EvtKstarstargamma::init(), EvtKstarnunu::init(), EvtKKLambdaC::init(), EvtJTO3P::init(), EvtJpipi::init(), EvtJPE::init(), EvtJ2BB3::init(), EvtJ2BB2::init(), EvtJ2BB1::init(), EvtISGW2::init(), EvtISGW::init(), EvtHypWK::init(), EvtHQET2::init(), EvtHQET::init(), EvtHelPPJ::init(), EvtHelAmp::init(), EvtGoityRoberts::init(), EvtFlatQ2::init(), EvtEtaDalitz::init(), EvtEDM::init(), EvtDeBD::init(), EvtDDalitz::init(), EvtD0mixDalitz::init(), EvtChi2BB2::init(), EvtChi2BB1::init(), EvtChi1BB2::init(), EvtChi1BB1::init(), EvtChi0BB2::init(), EvtChi0BB1::init(), EvtCBTo3piP00::init(), EvtCBTo3piMPP::init(), EvtBtoXsll::init(), EvtbTosllBall::init(), EvtbTosllAli::init(), EvtBToKpipiCP::init(), EvtBtoKpiCPiso::init(), EvtBtoKD3P::init(), EvtBTo4piCP::init(), EvtBTo3piCP::init(), EvtBto2piCPiso::init(), EvtAV2GV::init(), EvtAngSamLab::init(), EvtAngSam3::init(), and EvtAngSam::init().
00504 { 00505 00506 if ( _ndaug != d1 && _ndaug != d2 ) { 00507 report(ERROR,"EvtGen") << _modelname.c_str() << " generator expected "; 00508 report(ERROR,"EvtGen") << d1; 00509 if ( d2>-1) { 00510 report(ERROR,"EvtGen") << " or " << d2; 00511 } 00512 report(ERROR,"EvtGen") << " daughters but found:"<< _ndaug << endl; 00513 printSummary(); 00514 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00515 ::abort(); 00516 } 00517 00518 }
void EvtDecayBase::checkQ | ( | ) | [inherited] |
Definition at line 35 of file EvtDecayBase.cc.
References EvtDecayBase::_daug, EvtDecayBase::_modelname, EvtDecayBase::_ndaug, EvtDecayBase::_parent, EvtCyclic3::c_str(), EvtPDL::chg3(), calibUtil::ERROR, genRecEmupikp::i, EvtPDL::name(), q, and report().
Referenced by EvtDecayBase::saveDecayInfo().
00035 { 00036 int i; 00037 int q=0; 00038 int qpar; 00039 00040 //If there are no daughters (jetset etc) then we do not 00041 //want to do this test. Why? Because sometimes the parent 00042 //will have a nonzero charge. 00043 00044 if ( _ndaug != 0) { 00045 for(i=0; i<_ndaug; i++ ) { 00046 q += EvtPDL::chg3(_daug[i]); 00047 } 00048 qpar = EvtPDL::chg3(_parent); 00049 00050 if ( q != qpar ) { 00051 report(ERROR,"EvtGen") <<_modelname.c_str()<< " generator expected " 00052 << " charge to be conserved, found:"<<endl; 00053 report(ERROR,"EvtGen") << "Parent charge of "<<(qpar/3)<<endl; 00054 report(ERROR,"EvtGen") << "Sum of daughter charge of "<<(q/3)<<endl; 00055 report(ERROR,"EvtGen") << "The parent is "<< EvtPDL::name(_parent).c_str()<<endl; 00056 for(i=0; i<_ndaug; i++ ) { 00057 report(ERROR,"EvtGen") << "Daughter "<< EvtPDL::name(_daug[i]).c_str()<<endl; 00058 } 00059 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00060 00061 ::abort(); 00062 } 00063 } 00064 }
void EvtDecayBase::checkSpinDaughter | ( | int | d1, | |
EvtSpinType::spintype | sp | |||
) | [inherited] |
Definition at line 533 of file EvtDecayBase.cc.
References EvtDecayBase::_modelname, calibUtil::ERROR, EvtDecayBase::getDaug(), EvtPDL::getSpinType(), EvtDecayBase::printSummary(), and report().
Referenced by EvtVVSPwave::init(), EvtVVPIPI_WEIGHTED::init(), EvtVVpipi::init(), EvtVVP::init(), EvtVSSMix::init(), EvtVSSBMixCPT::init(), EvtVSS::init(), EvtVSPPwave::init(), EvtVPHOtoVISRHi::init(), EvtVPHOtoVISR::init(), EvtVll::init(), EvtVectorIsr::init(), EvtTVSPwave::init(), EvtTSS::init(), EvtTauVectornu::init(), EvtTauScalarnu::init(), EvtTaulnunu::init(), EvtTauHadnu::init(), EvtTauGamMu::init(), EvtSVVNONCPEIGEN::init(), EvtSVVHelAmp::init(), EvtSVVCPLH::init(), EvtSVVCP::init(), EvtSVSNONCPEIGEN::init(), EvtSVSCPLH::init(), EvtSVSCPiso::init(), EvtSVSCP::init(), EvtSVS::init(), EvtSVPHelAmp::init(), EvtSVPCP::init(), EvtSTSCP::init(), EvtSTS::init(), EvtSSSCPpng::init(), EvtSSSCP::init(), EvtSPL::init(), EvtSLPole::init(), EvtSLN::init(), EvtSll::init(), EvtSLBKPole::init(), EvtS2GV::init(), EvtPi0Dalitz::init(), EvtPhiDalitz::init(), EvtPBB2::init(), EvtPBB1::init(), EvtP2GC2::init(), EvtP2GC1::init(), EvtP2GC0::init(), EvtOmegaDalitz::init(), EvtMelikhov::init(), EvtLNuGamma::init(), EvtLambdaP_BarGamma::init(), EvtKstarstargamma::init(), EvtKstarnunu::init(), EvtKKLambdaC::init(), EvtJTO3P::init(), EvtJpipi::init(), EvtJPE::init(), EvtJ2BB3::init(), EvtJ2BB2::init(), EvtJ2BB1::init(), EvtISGW2::init(), EvtISGW::init(), EvtHypWK::init(), EvtHQET2::init(), EvtHQET::init(), EvtHelPPJ::init(), EvtGoityRoberts::init(), EvtFlatQ2::init(), EvtEtaDalitz::init(), EvtEDM::init(), EvtDeBD::init(), EvtDDalitz::init(), EvtD0mixDalitz::init(), EvtChi2BB2::init(), EvtChi2BB1::init(), EvtChi1BB2::init(), EvtChi1BB1::init(), EvtChi0BB2::init(), EvtChi0BB1::init(), EvtCBTo3piP00::init(), EvtCBTo3piMPP::init(), EvtbTosllBall::init(), EvtbTosllAli::init(), EvtBToKpipiCP::init(), EvtBtoKpiCPiso::init(), EvtBtoKD3P::init(), EvtBTo4piCP::init(), EvtBTo3piCP::init(), EvtBto2piCPiso::init(), and EvtAV2GV::init().
00533 { 00534 00535 EvtSpinType::spintype parenttype = EvtPDL::getSpinType(getDaug(d1)); 00536 if ( parenttype != sp ) { 00537 report(ERROR,"EvtGen") << _modelname.c_str() 00538 << " did not get the correct daughter spin d=" 00539 << d1 << endl; 00540 printSummary(); 00541 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00542 ::abort(); 00543 } 00544 00545 }
void EvtDecayBase::checkSpinParent | ( | EvtSpinType::spintype | sp | ) | [inherited] |
Definition at line 520 of file EvtDecayBase.cc.
References EvtDecayBase::_modelname, calibUtil::ERROR, EvtDecayBase::getParentId(), EvtPDL::getSpinType(), EvtDecayBase::printSummary(), and report().
Referenced by EvtVVSPwave::init(), EvtVVPIPI_WEIGHTED::init(), EvtVVpipi::init(), EvtVVP::init(), EvtVSSMix::init(), EvtVSSBMixCPT::init(), EvtVSS::init(), EvtVSPPwave::init(), EvtVPHOtoVISRHi::init(), EvtVPHOtoVISR::init(), EvtVll::init(), EvtVectorIsr::init(), EvtTVSPwave::init(), EvtTSS::init(), EvtTauVectornu::init(), EvtTauScalarnu::init(), EvtTaulnunu::init(), EvtTauHadnu::init(), EvtTauGamMu::init(), EvtSVVHelAmp::init(), EvtSVVCPLH::init(), EvtSVVCP::init(), EvtSVSCPLH::init(), EvtSVSCPiso::init(), EvtSVSCP::init(), EvtSVS::init(), EvtSVPHelAmp::init(), EvtSVPCP::init(), EvtSTSCP::init(), EvtSTS::init(), EvtSSSCPpng::init(), EvtSSSCP::init(), EvtSPL::init(), EvtSLPole::init(), EvtSLN::init(), EvtSll::init(), EvtSLBKPole::init(), EvtS2GV::init(), EvtPi0Dalitz::init(), EvtPhiDalitz::init(), EvtPBB2::init(), EvtPBB1::init(), EvtP2GC2::init(), EvtP2GC1::init(), EvtP2GC0::init(), EvtOmegaDalitz::init(), EvtMelikhov::init(), EvtLNuGamma::init(), EvtLambdaP_BarGamma::init(), EvtKstarstargamma::init(), EvtKstarnunu::init(), EvtKKLambdaC::init(), EvtJTO3P::init(), EvtJpipi::init(), EvtJPE::init(), EvtJ2BB3::init(), EvtJ2BB2::init(), EvtJ2BB1::init(), EvtISGW2::init(), EvtISGW::init(), EvtHypWK::init(), EvtHQET2::init(), EvtHQET::init(), EvtHelPPJ::init(), EvtGoityRoberts::init(), EvtFlatQ2::init(), EvtEtaDalitz::init(), EvtEDM::init(), EvtDeBD::init(), EvtDDalitz::init(), EvtD0mixDalitz::init(), EvtChi2BB2::init(), EvtChi2BB1::init(), EvtChi1BB2::init(), EvtChi1BB1::init(), EvtChi0BB2::init(), EvtChi0BB1::init(), EvtCBTo3piP00::init(), EvtCBTo3piMPP::init(), EvtbTosllBall::init(), EvtbTosllAli::init(), EvtBToKpipiCP::init(), EvtBtoKpiCPiso::init(), EvtBtoKD3P::init(), EvtBTo4piCP::init(), EvtBTo3piCP::init(), EvtBto2piCPiso::init(), and EvtAV2GV::init().
00520 { 00521 00522 EvtSpinType::spintype parenttype = EvtPDL::getSpinType(getParentId()); 00523 if ( parenttype != sp ) { 00524 report(ERROR,"EvtGen") << _modelname.c_str() 00525 << " did not get the correct parent spin\n"; 00526 printSummary(); 00527 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00528 ::abort(); 00529 } 00530 00531 }
EvtDecayBase * EvtLunda::clone | ( | ) | [virtual] |
Implements EvtDecayBase.
Definition at line 128 of file EvtLunda.cc.
00128 { 00129 00130 return new EvtLunda; 00131 00132 }
void EvtLunda::command | ( | std::string | cmd | ) | [virtual] |
Reimplemented from EvtDecayBase.
Definition at line 176 of file EvtLunda.cc.
References commands, genRecEmupikp::i, lcommand, ncommand, and deljobs::string.
00176 { 00177 00178 if (ncommand==lcommand){ 00179 00180 lcommand=10+2*lcommand; 00181 00182 std::string* newcommands=new std::string[lcommand]; 00183 00184 int i; 00185 00186 for(i=0;i<ncommand;i++){ 00187 newcommands[i]=commands[i]; 00188 } 00189 00190 delete [] commands; 00191 00192 commands=newcommands; 00193 00194 } 00195 00196 commands[ncommand]=cmd; 00197 00198 ncommand++; 00199 00200 }
std::string EvtLunda::commandName | ( | ) | [virtual] |
Reimplemented from EvtDecayBase.
Definition at line 170 of file EvtLunda.cc.
References deljobs::string.
00170 { 00171 00172 return std::string("LundaPar"); 00173 00174 }
bool EvtDecayBase::daugsDecayedByParentModel | ( | ) | [inline, protected, inherited] |
Definition at line 110 of file EvtDecayBase.hh.
References EvtDecayBase::_daugsDecayedByParentModel.
Referenced by EvtDecayProb::makeDecay(), EvtDecayIncoherent::makeDecay(), and EvtDecayAmp::makeDecay().
00110 {return _daugsDecayedByParentModel;}
void EvtLunda::decay | ( | EvtParticle * | p | ) | [virtual] |
Implements EvtDecayBase.
Definition at line 204 of file EvtLunda.cc.
References abs, boostTo(), EvtCyclic3::c_str(), checktag_, count, EvtParticle::decay(), EvtParticle::deleteDaughters(), calibUtil::ERROR, EvtPDL::evtIdFromStdHep(), fixPolarizations(), EvtVector4R::get(), EvtDecayBase::getArg(), EvtParticle::getDaug(), EvtParticle::getId(), EvtPDL::getId(), EvtDecayBase::getNArg(), EvtParticle::getNDaug(), EvtDecayBase::getParentId(), EvtPDL::getStdHep(), genRecEmupikp::i, EvtDecayTable::inChannelList(), Bes_Common::INFO, EvtParticle::init(), isr(), LundaInit(), lundar_(), EvtParticle::makeDaughters(), EvtParticle::mass(), MAX_DAUG, mp, EvtPDL::name(), report(), EvtVector4R::set(), EvtParticle::setDiagonalSpinDensity(), and type.
00204 { 00205 00206 static int iniflag=1; 00207 00208 static EvtId STRNG=EvtPDL::getId("string"); 00209 00210 int istdheppar=EvtPDL::getStdHep(p->getId()); 00211 00212 /* 00213 int Xpdg=0; 00214 if(getNArg()==1){ 00215 Xpdg = getArg(0); 00216 if(Xpdg == 100443) Xpdg = 30443; //chage the curent pdg code to jetset pdg code for psiprime 00217 } 00218 nores_.xpdg = Xpdg; 00219 */ 00220 00221 /* 00222 if (pycomp_(&istdheppar)==0){ 00223 report(ERROR,"EvtGen") << "Lunda can not decay:" 00224 <<EvtPDL::name(p->getId()).c_str()<<endl; 00225 return; 00226 } 00227 */ 00228 double mp=p->mass(); 00229 float xmp=mp; 00230 // std::cout<<"float xmp="<<xmp<<std::endl; 00231 00232 EvtVector4R p4[20]; 00233 00234 int i,more; 00235 int ip=EvtPDL::getStdHep(p->getId()); 00236 int ndaugjs; 00237 static int kf[4000]; 00238 EvtId evtnumstable[100],evtnumparton[100]; 00239 int stableindex[100],partonindex[100]; 00240 int numstable; 00241 int numparton; 00242 static int km[4000]; 00243 EvtId type[MAX_DAUG]; 00244 00245 int isr=1; //open ISR (default) 00246 if(getNArg()>0){ isr=getArg(0);} 00247 00248 static double px[4000],py[4000],pz[4000],e[4000]; 00249 if (iniflag==1) lundar_(&isr,&iniflag,&xmp,&ndaugjs,kf,km,px,py,pz,e); 00250 00251 if ( p->getNDaug() != 0 ) { p->deleteDaughters(true);} 00252 00253 int count=0; 00254 bool mtg=0; 00255 00256 do{ 00257 //report(INFO,"EvtGen") << "calling lunda " << ip<< " " << mp <<endl; 00258 iniflag=iniflag+1; //to count the event number 00259 //std::cout<<"Event number by Lunda: "<<iniflag<<std::endl; 00260 modeSelection: 00261 lundar_(&isr,&iniflag,&xmp,&ndaugjs,kf,km,px,py,pz,e); 00262 00263 mtg = checktag_.decaytag==1; 00264 if(mtg)std::cout<<"checktag_.decaytag="<<checktag_.decaytag<<std::endl; 00265 //if the Ecms is too low, Lunda fails to decay, so change to 3pi decay exclusively 00266 //if(mtg) {ExclusiveDecay(p); return;} //see SUBROUTINE LUBEGN(KFL,ECM) in luarlw.F 00267 00268 LundaInit(0); // allow user to set LundaPar in the decay list 00269 numstable=0; 00270 numparton=0; 00271 //report(INFO,"EvtGen") << "found some daughters " << ndaugjs << endl; 00272 double esum=0; 00273 //for debugging 00274 //for(int i=0;i<ndaugjs;i++){ 00275 //std::cout<<"ndaugjs,kf,km,px,py,pz,e: "<<i<<", "<<km[i]<<", "<<EvtPDL::name(EvtPDL::evtIdFromStdHep(kf[i]))<<", "<<px[i]<<" ,"<<py[i]<<", "<<pz[i]<<", "<<e[i]<<std::endl; 00276 //} 00277 00278 for(i=0;i<ndaugjs;i++){ 00279 if (abs(kf[i])==11 || kf[i]==92 || kf[i]==22) continue; //fill out the unstatble particle 00280 //std::cout<<i<<", "<<km[i]<<", "<<kf[i]<<", "<<EvtPDL::name(EvtPDL::evtIdFromStdHep(kf[i]))<<" "<<px[i]<<" ,"<<py[i]<<", "<<pz[i]<<", "<<e[i]<<std::endl; //for debugging 00281 if (EvtPDL::evtIdFromStdHep(kf[i])==EvtId(-1,-1)) { 00282 report(ERROR,"EvtGen") << "Lunda returned particle:"<<kf[i]<<endl; 00283 report(ERROR,"EvtGen") << "This can not be translated to evt number"<<endl; 00284 report(ERROR,"EvtGen") << "and the decay will be rejected!"<<endl; 00285 report(ERROR,"EvtGen") << "The decay was of particle:"<<ip<<endl; 00286 //xmp=(1+0.01)*xmp; 00287 std::cout<<"xmp= "<<xmp<<std::endl; 00288 goto modeSelection; 00289 } 00290 00291 //sort out the partons 00292 if (abs(kf[i])<=6||kf[i]==21){ 00293 partonindex[numparton]=i; 00294 evtnumparton[numparton]=EvtPDL::evtIdFromStdHep(kf[i]); 00295 numparton++; 00296 } 00297 else{ 00298 stableindex[numstable]=i; 00299 evtnumstable[numstable]=EvtPDL::evtIdFromStdHep(kf[i]); 00300 numstable++; 00301 } 00302 00303 esum+=e[i]; 00304 // have to protect against negative mass^2 for massless particles 00305 // i.e. neutrinos and photons. 00306 // this is uggly but I need to fix it right now.... 00307 00308 if (px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i]>=e[i]*e[i]){ 00309 00310 e[i]=sqrt(px[i]*px[i]+py[i]*py[i]+pz[i]*pz[i])+0.0000000001; 00311 00312 } 00313 00314 p4[i].set(e[i],px[i],py[i],pz[i]); 00315 00316 00317 } 00318 00319 int channel=EvtDecayTable::inChannelList(p->getId(),numstable,evtnumstable); 00320 00321 // Test the branching fraction of lunda 00322 // the specified decay mode is put as the 0-th channel with specifing mother particle 00323 more=(channel!=-1); 00324 //debugging 00325 if(abs(esum-xmp)>0.001 ){ 00326 std::cout<<"Unexpected final states from Lunda with total energy "<<esum<<" unequal to "<<xmp<<std::endl; 00327 //xmp=(1+0.01)*xmp; 00328 std::cout<<"xmp= "<<xmp<<std::endl; 00329 goto modeSelection; 00330 } 00331 00332 count++; 00333 }while( more && (count<10000) && mtg ); 00334 // }while( more && (count<10000) ); 00335 00336 if (count>9999) { 00337 report(INFO,"EvtGen") << "Too many loops in EvtLunda!!!"<<endl; 00338 report(INFO,"EvtGen") << "Parent:"<<EvtPDL::name(getParentId()).c_str()<<endl; 00339 for(i=0;i<numstable;i++){ 00340 report(INFO,"EvtGen") << "Daug("<<i<<")"<<EvtPDL::name(evtnumstable[i]).c_str()<<endl; 00341 } 00342 00343 } 00344 00345 00346 00347 if (numparton==0){ 00348 00349 p->makeDaughters(numstable,evtnumstable); 00350 int ndaugFound=0; 00351 for(i=0;i<numstable;i++){ 00352 p->getDaug(i)->init(evtnumstable[i],p4[stableindex[i]]); 00353 ndaugFound++; 00354 } 00355 if ( ndaugFound == 0 ) { 00356 report(ERROR,"EvtGen") << "Lunda has failed to do a decay "; 00357 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass()<<endl; 00358 assert(0); 00359 } 00360 00361 fixPolarizations(p); 00362 //debugging 00363 // p->printTree(); 00364 00365 return ; 00366 00367 } 00368 else{ 00369 00370 //have partons in LUNDA 00371 00372 EvtVector4R p4string(0.0,0.0,0.0,0.0); 00373 00374 for(i=0;i<numparton;i++){ 00375 p4string+=p4[partonindex[i]]; 00376 } 00377 00378 int nprimary=1; 00379 type[0]=STRNG; 00380 for(i=0;i<numstable;i++){ 00381 if (km[stableindex[i]]==0){ 00382 type[nprimary++]=evtnumstable[i]; 00383 } 00384 } 00385 00386 p->makeDaughters(nprimary,type); 00387 00388 p->getDaug(0)->init(STRNG,p4string); 00389 00390 EvtVector4R p4partons[10]; 00391 00392 for(i=0;i<numparton;i++){ 00393 p4partons[i]=p4[partonindex[i]]; 00394 } 00395 00396 ((EvtStringParticle*)p->getDaug(0))->initPartons(numparton,p4partons,evtnumparton); 00397 00398 00399 00400 nprimary=1; 00401 00402 for(i=0;i<numstable;i++){ 00403 00404 if (km[stableindex[i]]==0){ 00405 p->getDaug(nprimary++)->init(evtnumstable[i],p4[stableindex[i]]); 00406 } 00407 } 00408 00409 00410 int nsecond=0; 00411 for(i=0;i<numstable;i++){ 00412 if (km[stableindex[i]]!=0){ 00413 type[nsecond++]=evtnumstable[i]; 00414 } 00415 } 00416 00417 00418 p->getDaug(0)->makeDaughters(nsecond,type); 00419 00420 EvtVector4R p4stringboost(p4string.get(0),-p4string.get(1), 00421 -p4string.get(2),-p4string.get(3)); 00422 00423 nsecond=0; 00424 for(i=0;i<numstable;i++){ 00425 if (km[stableindex[i]]!=0){ 00426 p4[stableindex[i]]=boostTo(p4[stableindex[i]],p4stringboost); 00427 p->getDaug(0)->getDaug(nsecond)->init(evtnumstable[i],p4[stableindex[i]]); 00428 p->getDaug(0)->getDaug(nsecond)->setDiagonalSpinDensity(); 00429 p->getDaug(0)->getDaug(nsecond)->decay(); 00430 nsecond++; 00431 } 00432 } 00433 00434 if ( nsecond == 0 ) { 00435 report(ERROR,"EvtGen") << "Jetset has failed to do a decay "; 00436 report(ERROR,"EvtGen") << EvtPDL::name(p->getId()).c_str() << " " << p->mass() <<endl; 00437 assert(0); 00438 } 00439 00440 fixPolarizations(p); 00441 00442 return ; 00443 00444 } 00445 00446 }
void EvtDecayBase::disableCheckQ | ( | ) | [inline, inherited] |
Definition at line 62 of file EvtDecayBase.hh.
References EvtDecayBase::_chkCharge.
Referenced by EvtSinglePoint::init(), EvtSingleParticle2::init(), and EvtSingleParticle::init().
00062 {_chkCharge=0;};
void EvtLunda::ExclusiveDecay | ( | EvtParticle * | p | ) |
Definition at line 523 of file EvtLunda.cc.
References EvtParticle::getDaug(), EvtPDL::getId(), EvtPDL::getMass(), genRecEmupikp::i, EvtParticle::initializePhaseSpace(), EvtParticle::makeDaughters(), EvtParticle::mass(), and deljobs::string.
00523 { 00524 EvtId daugs[8]; 00525 int _ndaugs =4; 00526 daugs[0]=EvtPDL::getId(std::string("pi+")); 00527 daugs[1]=EvtPDL::getId(std::string("pi-")); 00528 daugs[2]=EvtPDL::getId(std::string("pi+")); 00529 daugs[3]=EvtPDL::getId(std::string("pi-")); 00530 checkA: 00531 p->makeDaughters(_ndaugs,daugs); 00532 double totMass=0; 00533 for(int i=0;i< _ndaugs;i++){ 00534 EvtParticle* di=p->getDaug(i); 00535 double xmi=EvtPDL::getMass(di->getId()); 00536 di->setMass(xmi); 00537 totMass+=xmi; 00538 } 00539 if(totMass>p->mass()) goto checkA; 00540 p->initializePhaseSpace( _ndaugs , daugs); 00541 00542 00543 }
void EvtDecayBase::findMass | ( | EvtParticle * | p | ) | [static, inherited] |
Definition at line 346 of file EvtDecayBase.cc.
References EvtCyclic3::c_str(), count, EvtDecayBase::findMaxMass(), EvtParticle::getDaug(), EvtParticle::getId(), EvtPDL::getMass(), EvtPDL::getMaxMass(), EvtPDL::getMinMass(), EvtParticle::getNDaug(), EvtParticle::getParent(), genRecEmupikp::i, Bes_Common::INFO, EvtParticle::mass(), mass, EvtPDL::name(), EvtParticle::printTree(), report(), and EvtParticle::setMass().
00346 { 00347 00348 //Need to also check that this mass does not screw 00349 //up the parent 00350 //This code assumes that for the ith daughter, 0..i-1 00351 //already have a mass 00352 double maxOkMass=findMaxMass(p); 00353 00354 int count=0; 00355 double mass; 00356 bool massOk=false; 00357 int i; 00358 while (!massOk) { 00359 count++; 00360 if ( count > 10000 ) { 00361 report(INFO,"EvtGen") << "Can not find a valid mass for: " << EvtPDL::name(p->getId()).c_str() <<endl; 00362 report(INFO,"EvtGen") << "Now printing parent and/or grandparent tree\n"; 00363 if ( p->getParent() ) { 00364 if ( p->getParent()->getParent() ) { 00365 p->getParent()->getParent()->printTree(); 00366 report(INFO,"EvtGen") << p->getParent()->getParent()->mass() <<endl; 00367 report(INFO,"EvtGen") << p->getParent()->mass() <<endl; 00368 } 00369 else{ 00370 p->getParent()->printTree(); 00371 report(INFO,"EvtGen") << p->getParent()->mass() <<endl; 00372 } 00373 } 00374 else p->printTree(); 00375 report(INFO,"EvtGen") << "maxokmass=" << maxOkMass << " " << EvtPDL::getMinMass(p->getId()) << " " << EvtPDL::getMaxMass(p->getId())<<endl; 00376 if ( p->getNDaug() ) { 00377 for (i=0; i<p->getNDaug(); i++) { 00378 report(INFO,"EvtGen") << p->getDaug(i)->mass()<<" "; 00379 } 00380 report(INFO,"EvtGen") << endl; 00381 } 00382 if ( maxOkMass >= EvtPDL::getMinMass(p->getId()) ) { 00383 report(INFO,"EvtGen") << "taking a default value\n"; 00384 p->setMass(maxOkMass); 00385 return; 00386 } 00387 assert(0); 00388 } 00389 mass = EvtPDL::getMass(p->getId()); 00390 //Just need to check that this mass is > than 00391 //the mass of all daughters 00392 double massSum=0.; 00393 if ( p->getNDaug() ) { 00394 for (i=0; i<p->getNDaug(); i++) { 00395 massSum+= p->getDaug(i)->mass(); 00396 } 00397 } 00398 //some special cases are handled with 0 (stable) or 1 (k0->ks/kl) daughters 00399 if (p->getNDaug()<2) massOk=true; 00400 if ( p->getParent() ) { 00401 if ( p->getParent()->getNDaug()==1 ) massOk=true; 00402 } 00403 if ( !massOk ) { 00404 if (massSum < mass) massOk=true; 00405 if ( mass> maxOkMass) massOk=false; 00406 } 00407 } 00408 00409 p->setMass(mass); 00410 00411 }
void EvtDecayBase::findMasses | ( | EvtParticle * | p, | |
int | ndaugs, | |||
EvtId | daugs[10], | |||
double | masses[10] | |||
) | [static, inherited] |
Definition at line 414 of file EvtDecayBase.cc.
References EvtCyclic3::c_str(), count, calibUtil::ERROR, EvtParticle::firstornot(), EvtParticle::getDaug(), EvtParticle::getId(), EvtPDL::getMass(), EvtPDL::getMinMass(), genRecEmupikp::i, EvtParticle::mass(), EvtPDL::name(), report(), EvtParticle::setFirstOrNot(), and EvtStatus::setRejectFlag().
Referenced by EvtBtoXsll::decay().
00415 { 00416 00417 int i; 00418 double mass_sum; 00419 00420 int count=0; 00421 00422 if (!( p->firstornot() )) { 00423 for (i = 0; i < ndaugs; i++ ) { 00424 masses[i] = p->getDaug(i)->mass(); 00425 } //for 00426 } //if 00427 else { 00428 p->setFirstOrNot(); 00429 // if only one daughter do it 00430 00431 if (ndaugs==1) { 00432 masses[0]=p->mass(); 00433 return; 00434 } 00435 00436 //until we get a combo whose masses are less than _parent mass. 00437 do { 00438 mass_sum = 0.0; 00439 00440 for (i = 0; i < ndaugs; i++ ) { 00441 masses[i] = EvtPDL::getMass(daugs[i]); 00442 mass_sum = mass_sum + masses[i]; 00443 } 00444 00445 count++; 00446 00447 00448 if(count==10000) { 00449 report(ERROR,"EvtGen") <<"Decaying particle:"<< 00450 EvtPDL::name(p->getId()).c_str()<<" (m="<<p->mass()<<")"<<endl; 00451 report(ERROR,"EvtGen") <<"To the following daugthers"<<endl; 00452 for (i = 0; i < ndaugs; i++ ) { 00453 report(ERROR,"EvtGen") << 00454 EvtPDL::name(daugs[i]).c_str() << endl; 00455 } 00456 report(ERROR,"EvtGen") << "Has been rejected "<<count 00457 << " times, will now take minimal masses " 00458 << " of daugthers"<<endl; 00459 00460 mass_sum=0.; 00461 for (i = 0; i < ndaugs; i++ ) { 00462 masses[i] = EvtPDL::getMinMass(daugs[i]); 00463 mass_sum = mass_sum + masses[i]; 00464 } 00465 if (mass_sum > p->mass()){ 00466 report(ERROR,"EvtGen") << "Parent mass="<<p->mass() 00467 << "to light for daugthers."<<endl 00468 << "Will throw the event away."<<endl; 00469 //dont terminate - start over on the event. 00470 EvtStatus::setRejectFlag(); 00471 mass_sum=0.; 00472 // ::abort(); 00473 } 00474 00475 } 00476 } while ( mass_sum > p->mass()); 00477 } //else 00478 00479 return; 00480 }
double EvtDecayBase::findMaxMass | ( | EvtParticle * | p | ) | [static, inherited] |
Definition at line 311 of file EvtDecayBase.cc.
References EvtParticle::getDaug(), EvtParticle::getId(), EvtPDL::getMaxMass(), EvtPDL::getMinMass(), EvtParticle::getNDaug(), EvtParticle::getParent(), EvtParticle::hasValidP4(), genRecEmupikp::i, and EvtParticle::mass().
Referenced by EvtDecayBase::findMass().
00311 { 00312 00313 00314 double maxOkMass=EvtPDL::getMaxMass(p->getId()); 00315 00316 //protect against vphotons 00317 if ( maxOkMass < 0.0000000001 ) return 10000000.; 00318 //and against already determined masses 00319 if ( p->hasValidP4() ) maxOkMass=p->mass(); 00320 00321 EvtParticle *par=p->getParent(); 00322 if ( par ) { 00323 double maxParMass=findMaxMass(par); 00324 int i; 00325 double minDaugMass=0.; 00326 for(i=0;i<par->getNDaug();i++){ 00327 EvtParticle *dau=par->getDaug(i); 00328 if ( dau!=p) { 00329 // it might already have a mass 00330 if ( dau->isInitialized() || dau->hasValidP4() ) 00331 minDaugMass+=dau->mass(); 00332 else 00333 //give it a bit of phase space 00334 minDaugMass+=1.000001*EvtPDL::getMinMass(dau->getId()); 00335 } 00336 } 00337 if ( maxOkMass>(maxParMass-minDaugMass)) maxOkMass=maxParMass-minDaugMass; 00338 } 00339 return maxOkMass; 00340 }
void EvtLunda::fixPolarizations | ( | EvtParticle * | p | ) | [private] |
Definition at line 448 of file EvtLunda.cc.
References alpha, EvtVector4R::d3mag(), EvtVector4R::get(), EvtParticle::getDaug(), EvtParticle::getId(), EvtPDL::getId(), EvtParticle::getNDaug(), EvtParticle::getP4(), genRecEmupikp::i, EvtSpinDensity::Set(), EvtDecayIncoherent::setDaughterSpinDensity(), and EvtParticle::setSpinDensityForwardHelicityBasis().
Referenced by decay().
00448 { 00449 00450 //special case for now to handle the J/psi polarization 00451 00452 int ndaug=p->getNDaug(); 00453 00454 int i; 00455 00456 static EvtId Jpsi=EvtPDL::getId("J/psi"); 00457 00458 for(i=0;i<ndaug;i++){ 00459 if(p->getDaug(i)->getId()==Jpsi){ 00460 00461 EvtSpinDensity rho; 00462 00463 rho.SetDim(3); 00464 rho.Set(0,0,0.5); 00465 rho.Set(0,1,0.0); 00466 rho.Set(0,2,0.0); 00467 00468 rho.Set(1,0,0.0); 00469 rho.Set(1,1,1.0); 00470 rho.Set(1,2,0.0); 00471 00472 rho.Set(2,0,0.0); 00473 rho.Set(2,1,0.0); 00474 rho.Set(2,2,0.5); 00475 00476 EvtVector4R p4Psi=p->getDaug(i)->getP4(); 00477 00478 double alpha=atan2(p4Psi.get(2),p4Psi.get(1)); 00479 double beta=acos(p4Psi.get(3)/p4Psi.d3mag()); 00480 00481 00482 p->getDaug(i)->setSpinDensityForwardHelicityBasis(rho,alpha,beta,0.0); 00483 setDaughterSpinDensity(i); 00484 00485 } 00486 } 00487 00488 }
double EvtDecayBase::getArg | ( | int | j | ) | [inherited] |
Definition at line 564 of file EvtDecayBase.cc.
References EvtDecayBase::_args, EvtCyclic3::c_str(), genRecEmupikp::i, Bes_Common::INFO, and report().
Referenced by EvtVVSPwave::decay(), EvtVSSMix::decay(), EvtVPHOtoVISRHi::decay(), EvtVPHOtoVISR::decay(), EvtTVSPwave::decay(), EvtTauGamMu::decay(), EvtSVVNONCPEIGEN::decay(), EvtSVVHelAmp::decay(), EvtSVVCPLH::decay(), EvtSVVCP::decay(), EvtSVSCPiso::decay(), EvtSVSCP::decay(), EvtSVPHelAmp::decay(), EvtSVPCP::decay(), EvtSTSCP::decay(), EvtSSSCPT::decay(), EvtSSSCPpng::decay(), EvtSSSCP::decay(), EvtRhoPi::decay(), EvtPhokhara::decay(), EvtPBB2::decay(), EvtPBB1::decay(), EvtOpenCharm::decay(), decay(), EvtJscont::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtEDM::decay(), EvtDDalitz::decay(), EvtConExc::decay(), EvtChi2BB2::decay(), EvtChi2BB1::decay(), EvtChi1BB2::decay(), EvtChi1BB1::decay(), EvtChi0BB2::decay(), EvtCBTo3piP00::decay(), EvtCBTo3piMPP::decay(), EvtCalHelAmp::decay(), EvtBtoXsgamma::decay(), EvtBToKpipiCP::decay(), EvtBtoKpiCPiso::decay(), EvtBTo4piCP::decay(), EvtBTo3piCP::decay(), EvtBto2piCPiso::decay(), EvtBsquark::decay(), EvtBHadronic::decay(), EvtAngSamX::decay(), EvtAngSamLab::decay(), EvtAngSam3::decay(), EvtAngSam::decay(), EvtCalHelAmp::firstder(), EvtLNuGamma::getFormFactor(), EvtVubNLO::init(), EvtVubHybrid::init(), EvtVub::init(), EvtVSSBMixCPT::init(), EvtVectorIsr::init(), EvtTrackGen::init(), EvtTauHadnu::init(), EvtSVVNONCPEIGEN::init(), EvtSVSNONCPEIGEN::init(), EvtSVSCPLH::init(), EvtSSDCP::init(), EvtSinglePoint::init(), EvtSingleParticle2::init(), EvtSingleParticle::init(), EvtPycont::init(), EvtPartWave::init(), EvtmPhsp::init(), EvtmH2::init(), EvtMelikhov::init(), EvtLNuGamma::init(), EvtHypNonLepton::init(), EvtHQET2::init(), EvtHQET::init(), EvtHelAmp::init(), EvtDMix::init(), EvtD0mixDalitz::init(), EvtConExc::init(), EvtBtoXsll::init(), EvtBtoKD3P::init(), EvtPhokhara::init_evt(), EvtPhokhara::init_mode(), EvtSVVHelAmp::initProbMax(), EvtSVVCPLH::initProbMax(), EvtSVVCP::initProbMax(), EvtSVSCPLH::initProbMax(), EvtSVSCPiso::initProbMax(), EvtSVSCP::initProbMax(), EvtSVPHelAmp::initProbMax(), EvtSVPCP::initProbMax(), EvtSTSCP::initProbMax(), EvtSSSCPpng::initProbMax(), EvtSSSCP::initProbMax(), EvtPBB2::initProbMax(), EvtBtoKpiCPiso::initProbMax(), EvtBto2piCPiso::initProbMax(), and EvtVubHybrid::readWeights().
00564 { 00565 00566 // Verify string 00567 00568 const char* str = _args[j].c_str(); 00569 int i = 0; 00570 while(str[i]!=0){ 00571 if (isalpha(str[i]) && str[i]!='e') { 00572 00573 report(INFO,"EvtGen") << "String " << str << " is not a number" << endl; 00574 assert(0); 00575 } 00576 i++; 00577 } 00578 00579 char** tc=0; 00580 return strtod(_args[j].c_str(),tc); 00581 }
double * EvtDecayBase::getArgs | ( | ) | [inherited] |
Definition at line 547 of file EvtDecayBase.cc.
References EvtDecayBase::_args, EvtDecayBase::_argsD, EvtDecayBase::_narg, EvtCyclic3::c_str(), and genRecEmupikp::i.
Referenced by EvtBtoXsgamma::decay(), EvtSLPole::init(), EvtSLBKPole::init(), and EvtKKLambdaC::init().
00547 { 00548 00549 if ( _argsD ) return _argsD; 00550 //The user has asked for a list of doubles - the arguments 00551 //better all be doubles... 00552 if ( _narg==0 ) return _argsD; 00553 00554 _argsD = new double[_narg]; 00555 00556 int i; 00557 char * tc; 00558 for(i=0;i<_narg;i++) { 00559 _argsD[i] = strtod(_args[i].c_str(),&tc); 00560 } 00561 return _argsD; 00562 }
std::string* EvtDecayBase::getArgsStr | ( | ) | [inline, inherited] |
std::string EvtDecayBase::getArgStr | ( | int | j | ) | [inline, inherited] |
Definition at line 75 of file EvtDecayBase.hh.
References EvtDecayBase::_args.
Referenced by EvtParticleDecay::chargeConj(), EvtParticleDecayList::EvtParticleDecayList(), EvtDecayTable::findChannel(), EvtMultibody::init(), and EvtIntervalDecayAmp< EvtDalitzPoint >::init().
double EvtDecayBase::getBranchingFraction | ( | ) | [inline, inherited] |
Definition at line 61 of file EvtDecayBase.hh.
References EvtDecayBase::_brfr.
Referenced by EvtParticleDecay::chargeConj(), and EvtParticleDecayList::EvtParticleDecayList().
00061 {return _brfr;}
EvtId EvtDecayBase::getDaug | ( | int | i | ) | [inline, inherited] |
Definition at line 66 of file EvtDecayBase.hh.
References EvtDecayBase::_daug.
Referenced by EvtParticleDecayList::addMode(), EvtParticleDecay::chargeConj(), EvtDecayBase::checkSpinDaughter(), EvtVubNLO::decay(), EvtVubHybrid::decay(), EvtVub::decay(), EvtVSSBMixCPT::decay(), EvtVPHOtoVISRHi::decay(), EvtVPHOtoVISR::decay(), EvtVectorIsr::decay(), EvtTauHadnu::decay(), EvtSVVNONCPEIGEN::decay(), EvtSVVHelAmp::decay(), EvtSVVCPLH::decay(), EvtSVVCP::decay(), EvtSVSNONCPEIGEN::decay(), EvtSVSCPiso::decay(), EvtSSDCP::decay(), EvtSLN::decay(), EvtSinglePoint::decay(), EvtSingleParticle2::decay(), EvtSingleParticle::decay(), EvtKstarnunu::decay(), EvtJ2BB3::decay(), EvtJ2BB1::decay(), EvtGoityRoberts::decay(), EvtCBTo3piP00::decay(), EvtCBTo3piMPP::decay(), EvtBtoXsll::decay(), EvtBtoXsgamma::decay(), EvtBtoXsEtap::decay(), EvtBToKpipiCP::decay(), EvtBtoKpiCPiso::decay(), EvtBtoKD3P::decay(), EvtBTo3piCP::decay(), EvtPto3P::dp(), EvtDecayTable::findChannel(), EvtConExc::gamHXSection(), EvtVVPIPI_WEIGHTED::init(), EvtVVpipi::init(), EvtVSSBMixCPT::init(), EvtTrackGen::init(), EvtTauHadnu::init(), EvtSSDCP::init(), EvtSLPole::init(), EvtSLBKPole::init(), EvtS2GV::init(), EvtPartWave::init(), EvtP2GC2::init(), EvtP2GC1::init(), EvtP2GC0::init(), EvtJpipi::init(), EvtJPE::init(), EvtISGW2::init(), EvtISGW::init(), EvtHypNonLepton::init(), EvtHQET2::init(), EvtHQET::init(), EvtHelAmp::init(), EvtDDalitz::init(), EvtD0mixDalitz::init(), EvtBtoXsll::init(), EvtbTosllBall::init(), EvtbTosllAli::init(), EvtAV2GV::init(), EvtSVSCPiso::initProbMax(), EvtSSDCP::initProbMax(), EvtSLPole::initProbMax(), EvtSLN::initProbMax(), EvtSLBKPole::initProbMax(), EvtKKLambdaC::initProbMax(), EvtISGW2::initProbMax(), EvtHypNonLepton::initProbMax(), EvtHQET2::initProbMax(), EvtHQET::initProbMax(), EvtbTosllBall::initProbMax(), EvtbTosllAli::initProbMax(), EvtBtoKpiCPiso::initProbMax(), EvtTauHadnu::pi3G(), and EvtParticleDecayList::removeMode().
EvtId* EvtDecayBase::getDaugs | ( | ) | [inline, inherited] |
Definition at line 65 of file EvtDecayBase.hh.
References EvtDecayBase::_daug.
Referenced by EvtVVSPwave::decay(), EvtVVPIPI_WEIGHTED::decay(), EvtVVpipi::decay(), EvtVVP::decay(), EvtVubNLO::decay(), EvtVubHybrid::decay(), EvtVub::decay(), EvtVSSMix::decay(), EvtVSSBMixCPT::decay(), EvtVSS::decay(), EvtVSPPwave::decay(), EvtVll::decay(), EvtVectorIsr::decay(), EvtTVSPwave::decay(), EvtTSS::decay(), EvtTrackGen::decay(), EvtTauVectornu::decay(), EvtTauScalarnu::decay(), EvtTaulnunu::decay(), EvtTauHadnu::decay(), EvtTauGamMu::decay(), EvtT2GV::decay(), EvtSVSCPLH::decay(), EvtSVSCP::decay(), EvtSVS::decay(), EvtSVPHelAmp::decay(), EvtSVPCP::decay(), EvtSTSCP::decay(), EvtSTS::decay(), EvtSSSCPT::decay(), EvtSSSCPpng::decay(), EvtSSSCP::decay(), EvtSPL::decay(), EvtSLPole::decay(), EvtSLN::decay(), EvtSll::decay(), EvtSLBKPole::decay(), EvtSinglePoint::decay(), EvtSingleParticle2::decay(), EvtSingleParticle::decay(), EvtS2GV::decay(), EvtRhoPi::decay(), EvtPi0Dalitz::decay(), EvtPhsp::decay(), EvtPhiDalitz::decay(), EvtPBB2::decay(), EvtPBB1::decay(), EvtPartWave::decay(), EvtP2GC2::decay(), EvtP2GC1::decay(), EvtP2GC0::decay(), EvtOmegaDalitz::decay(), EvtMultibody::decay(), EvtmPhsp::decay(), EvtmH2::decay(), EvtMelikhov::decay(), EvtMBody3::decay(), EvtMassH2::decay(), EvtMassH1::decay(), EvtLNuGamma::decay(), EvtLambdaP_BarGamma::decay(), EvtLambdac2pKpi::decay(), EvtKstarstargamma::decay(), EvtKstarnunu::decay(), EvtKKLambdaC::decay(), EvtJTO3P::decay(), EvtJpipi::decay(), EvtJPE::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtISGW2::decay(), EvtISGW::decay(), EvtIntervalDecayAmp< EvtDalitzPoint >::decay(), EvtHypWK::decay(), EvtHypNonLepton::decay(), EvtHQET2::decay(), EvtHQET::decay(), EvtHelPPJ::decay(), EvtHelAmp::decay(), EvtHAngSam3::decay(), EvtFlatQ2::decay(), EvtEtaDalitz::decay(), EvtEDM::decay(), EvtDMix::decay(), EvtDIY::decay(), EvtDeBD::decay(), EvtDDalitz::decay(), EvtD0mixDalitz::decay(), EvtChi2BB2::decay(), EvtChi2BB1::decay(), EvtChi1BB2::decay(), EvtChi1BB1::decay(), EvtChi0BB2::decay(), EvtChi0BB1::decay(), EvtCBTo3piP00::decay(), EvtCBTo3piMPP::decay(), EvtCalHelAmp::decay(), EvtBtoXsll::decay(), EvtBtoXsgamma::decay(), EvtBtoXsEtap::decay(), EvtbTosllBall::decay(), EvtbTosllAli::decay(), EvtBToKpipiCP::decay(), EvtBtoKpiCPiso::decay(), EvtBtoKD3P::decay(), EvtBTo4piCP::decay(), EvtBTo3piCP::decay(), EvtBto2piCPiso::decay(), EvtBsquark::decay(), EvtBody3::decay(), EvtBHadronic::decay(), EvtAV2GV::decay(), EvtAngSamX::decay(), EvtAngSamLab::decay(), EvtAngSam3::decay(), EvtAngSam::decay(), EvtAngH2::decay(), EvtGoityRoberts::DecayBDpilnuGR(), EvtGoityRoberts::DecayBDstarpilnuGR(), EvtParticleDecayList::EvtParticleDecayList(), EvtConExc::get_mode(), EvtMultibody::init(), EvtLambdac2pKpi::init(), EvtConExc::init(), EvtConExc::init_mode(), EvtBto2piCPiso::initProbMax(), and EvtDecayAmp::makeDecay().
00065 {return _daug;}
int EvtDecayBase::getDSum | ( | ) | [inline, inherited] |
Definition at line 77 of file EvtDecayBase.hh.
References EvtDecayBase::_dsum.
00077 {return _dsum; }
std::string EvtDecayBase::getModelName | ( | ) | [inline, inherited] |
Definition at line 76 of file EvtDecayBase.hh.
References EvtDecayBase::_modelname.
Referenced by EvtParticleDecayList::addMode(), EvtParticleDecayList::EvtParticleDecayList(), EvtDecayTable::findChannel(), and EvtDecay::getModel().
00076 {return _modelname; }
void EvtLunda::getName | ( | std::string & | name | ) | [virtual] |
int EvtDecayBase::getNArg | ( | ) | [inline, inherited] |
Definition at line 67 of file EvtDecayBase.hh.
References EvtDecayBase::_narg.
Referenced by EvtParticleDecay::chargeConj(), EvtVPHOtoVISRHi::decay(), EvtVPHOtoVISR::decay(), EvtRhoPi::decay(), EvtOpenCharm::decay(), EvtmPhsp::decay(), decay(), EvtJscont::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtConExc::decay(), EvtCalHelAmp::decay(), EvtBtoXsgamma::decay(), EvtAngSamX::decay(), EvtAngSamLab::decay(), EvtAngSam3::decay(), EvtAngSam::decay(), EvtPto3P::dp(), EvtParticleDecayList::EvtParticleDecayList(), EvtDecayTable::findChannel(), EvtVubNLO::init(), EvtVubHybrid::init(), EvtVub::init(), EvtVSSBMixCPT::init(), EvtSVVNONCPEIGEN::init(), EvtSVSNONCPEIGEN::init(), EvtSSDCP::init(), EvtSLPole::init(), EvtSLBKPole::init(), EvtSinglePoint::init(), EvtSingleParticle2::init(), EvtSingleParticle::init(), EvtPycont::init(), EvtMultibody::init(), EvtmPhsp::init(), init(), EvtLNuGamma::init(), EvtKKLambdaC::init(), EvtIntervalDecayAmp< EvtDalitzPoint >::init(), EvtHypNonLepton::init(), EvtHQET2::init(), EvtHQET::init(), EvtD0mixDalitz::init(), EvtConExc::init(), EvtCalHelAmp::init(), EvtBtoXsll::init(), EvtBtoXsgamma::init(), EvtAngSamX::init(), EvtAngSamLab::init(), EvtAngSam3::init(), and EvtAngSam::init().
00067 {return _narg;}
int EvtDecayBase::getNDaug | ( | ) | [inline, inherited] |
Definition at line 64 of file EvtDecayBase.hh.
References EvtDecayBase::_ndaug.
Referenced by EvtParticleDecayList::addMode(), EvtParticleDecay::chargeConj(), EvtVVSPwave::decay(), EvtVVPIPI_WEIGHTED::decay(), EvtVVpipi::decay(), EvtVVP::decay(), EvtVubNLO::decay(), EvtVubHybrid::decay(), EvtVub::decay(), EvtVSSMix::decay(), EvtVSSBMixCPT::decay(), EvtVSS::decay(), EvtVSPPwave::decay(), EvtVll::decay(), EvtVectorIsr::decay(), EvtTVSPwave::decay(), EvtTSS::decay(), EvtTrackGen::decay(), EvtTauVectornu::decay(), EvtTauScalarnu::decay(), EvtTaulnunu::decay(), EvtTauHadnu::decay(), EvtTauGamMu::decay(), EvtT2GV::decay(), EvtSVSCPLH::decay(), EvtSVSCPiso::decay(), EvtSVSCP::decay(), EvtSVS::decay(), EvtSVPHelAmp::decay(), EvtSVPCP::decay(), EvtSTSCP::decay(), EvtSTS::decay(), EvtSSSCPT::decay(), EvtSSSCPpng::decay(), EvtSSSCP::decay(), EvtSPL::decay(), EvtSLPole::decay(), EvtSLN::decay(), EvtSll::decay(), EvtSLBKPole::decay(), EvtSinglePoint::decay(), EvtSingleParticle2::decay(), EvtSingleParticle::decay(), EvtS2GV::decay(), EvtRhoPi::decay(), EvtPi0Dalitz::decay(), EvtPhsp::decay(), EvtPhiDalitz::decay(), EvtPBB2::decay(), EvtPBB1::decay(), EvtPartWave::decay(), EvtP2GC2::decay(), EvtP2GC1::decay(), EvtP2GC0::decay(), EvtOmegaDalitz::decay(), EvtMultibody::decay(), EvtmPhsp::decay(), EvtmH2::decay(), EvtMelikhov::decay(), EvtMBody3::decay(), EvtMassH2::decay(), EvtMassH1::decay(), EvtLNuGamma::decay(), EvtLambdaP_BarGamma::decay(), EvtLambdac2pKpi::decay(), EvtKstarstargamma::decay(), EvtKstarnunu::decay(), EvtKKLambdaC::decay(), EvtJTO3P::decay(), EvtJpipi::decay(), EvtJPE::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtISGW2::decay(), EvtISGW::decay(), EvtHypWK::decay(), EvtHypNonLepton::decay(), EvtHQET2::decay(), EvtHQET::decay(), EvtHelPPJ::decay(), EvtHelAmp::decay(), EvtHAngSam3::decay(), EvtFlatQ2::decay(), EvtEtaDalitz::decay(), EvtEDM::decay(), EvtDMix::decay(), EvtDIY::decay(), EvtDeBD::decay(), EvtDDalitz::decay(), EvtD0mixDalitz::decay(), EvtChi2BB2::decay(), EvtChi2BB1::decay(), EvtChi1BB2::decay(), EvtChi1BB1::decay(), EvtChi0BB2::decay(), EvtChi0BB1::decay(), EvtCBTo3piP00::decay(), EvtCBTo3piMPP::decay(), EvtCalHelAmp::decay(), EvtBtoXsll::decay(), EvtBtoXsgamma::decay(), EvtBtoXsEtap::decay(), EvtbTosllBall::decay(), EvtbTosllAli::decay(), EvtBToKpipiCP::decay(), EvtBtoKpiCPiso::decay(), EvtBtoKD3P::decay(), EvtBTo4piCP::decay(), EvtBTo3piCP::decay(), EvtBto2piCPiso::decay(), EvtBsquark::decay(), EvtBody3::decay(), EvtBHadronic::decay(), EvtAV2GV::decay(), EvtAngSamX::decay(), EvtAngSamLab::decay(), EvtAngSam3::decay(), EvtAngSam::decay(), EvtAngH2::decay(), EvtGoityRoberts::DecayBDpilnuGR(), EvtGoityRoberts::DecayBDstarpilnuGR(), EvtPto3P::dp(), EvtParticleDecayList::EvtParticleDecayList(), EvtDecayTable::findChannel(), EvtDecayTable::inChannelList(), EvtVSSBMixCPT::init(), EvtTrackGen::init(), EvtTauHadnu::init(), EvtMultibody::init(), EvtHypNonLepton::init(), EvtConExc::init(), EvtTauHadnu::initProbMax(), EvtDecayAmp::makeDecay(), and EvtParticleDecayList::removeMode().
00064 {return _ndaug;}
EvtId EvtDecayBase::getParentId | ( | ) | [inline, inherited] |
Definition at line 60 of file EvtDecayBase.hh.
References EvtDecayBase::_parent.
Referenced by EvtParticleDecayList::addMode(), EvtParticleDecay::chargeConj(), EvtDecayBase::checkSpinParent(), EvtTauola::decay(), EvtPythia::decay(), EvtOpenCharm::decay(), EvtMultibody::decay(), EvtLundCharm::decay(), decay(), EvtJPE::decay(), EvtJetSet::decay(), EvtJ2BB3::decay(), EvtJ2BB2::decay(), EvtJ2BB1::decay(), EvtPto3P::dp(), EvtParticleDecayList::EvtParticleDecayList(), EvtTauola::fixPolarizations(), EvtVSSBMixCPT::init(), EvtTauola::init(), EvtSSDCP::init(), EvtRhoPi::init(), EvtPythia::init(), EvtPhokhara_ppbar::init(), EvtPhokhara_pipipi0::init(), EvtPhokhara_pipi::init(), EvtPhokhara_pi0pi0pipi::init(), EvtPhokhara_nnbar::init(), EvtPhokhara_LLB::init(), EvtPhokhara_KK::init(), EvtPhokhara_K0K0::init(), EvtPhokhara_4pi::init(), EvtPhokhara::init(), EvtPartWave::init(), EvtOpenCharm::init(), EvtmH2::init(), EvtMassH2::init(), EvtMassH1::init(), EvtLundCharm::init(), init(), EvtJetSet::init(), EvtHypNonLepton::init(), EvtHelAmp::init(), EvtHAngSam3::init(), EvtDIY::init(), EvtDDalitz::init(), EvtD0mixDalitz::init(), EvtBody3::init(), EvtAngSamX::init(), EvtAngSamLab::init(), EvtAngSam3::init(), EvtAngSam::init(), EvtAngH2::init(), EvtSLPole::initProbMax(), EvtSLN::initProbMax(), EvtSLBKPole::initProbMax(), EvtKKLambdaC::initProbMax(), EvtISGW2::initProbMax(), EvtHypNonLepton::initProbMax(), EvtHQET2::initProbMax(), EvtHQET::initProbMax(), EvtbTosllBall::initProbMax(), EvtbTosllAli::initProbMax(), and EvtParticleDecayList::removeMode().
00060 {return _parent;}
int EvtDecayBase::getPHOTOS | ( | ) | [inline, inherited] |
Definition at line 68 of file EvtDecayBase.hh.
References EvtDecayBase::_photos.
Referenced by EvtParticleDecay::chargeConj(), EvtParticleDecayList::EvtParticleDecayList(), EvtDecayProb::makeDecay(), EvtDecayIncoherent::makeDecay(), and EvtDecayAmp::makeDecay().
00068 {return _photos;}
double EvtDecayBase::getProbMax | ( | double | prob | ) | [inherited] |
Definition at line 67 of file EvtDecayBase.cc.
References EvtDecayBase::_daug, EvtDecayBase::_modelname, EvtDecayBase::_ndaug, EvtDecayBase::_parent, EvtCyclic3::c_str(), EvtDecayBase::defaultprobmax, genRecEmupikp::i, Bes_Common::INFO, EvtDecayBase::max_prob, EvtPDL::name(), EvtDecayBase::ntimes_prob, EvtDecayBase::probmax, report(), and EvtDecayBase::sum_prob.
Referenced by EvtBtoKD3P::decay(), EvtDecayProb::makeDecay(), and EvtDecayAmp::makeDecay().
00067 { 00068 00069 int i; 00070 00071 //diagnostics 00072 sum_prob+=prob; 00073 if (prob>max_prob) max_prob=prob; 00074 00075 00076 if ( defaultprobmax && ntimes_prob<=500 ) { 00077 //We are building up probmax with this iteration 00078 ntimes_prob += 1; 00079 if ( prob > probmax ) { probmax = prob;} 00080 if (ntimes_prob==500) { 00081 probmax*=1.2; 00082 } 00083 return 1000000.0*prob; 00084 } 00085 00086 if ( prob> probmax*1.0001) { 00087 00088 report(INFO,"EvtGen") << "prob > probmax:("<<prob<<">"<<probmax<<")"; 00089 report(INFO,"") << "("<<_modelname.c_str()<<") "; 00090 report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> "; 00091 for(i=0;i<_ndaug;i++){ 00092 report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " "; 00093 } 00094 report(INFO,"") << endl; 00095 00096 if (defaultprobmax) probmax = prob; 00097 00098 } 00099 00100 ntimes_prob += 1; 00101 00102 00103 return probmax; 00104 00105 } //getProbMax
int EvtLunda::getTotalEvt | ( | ) | [inline] |
void EvtLunda::init | ( | ) | [virtual] |
Reimplemented from EvtDecayBase.
Definition at line 142 of file EvtLunda.cc.
References calibUtil::ERROR, EvtDecayBase::getNArg(), EvtDecayBase::getParentId(), EvtPDL::name(), report(), store(), and deljobs::string.
00142 { 00143 00144 // checkNArg(1); 00145 std::string strpdg=getenv("BESEVTGENROOT"); 00146 strpdg +="/share/r_pdg.dat"; 00147 //strcpy(mypdgfile_.mypdg, strpdg.c_str()); 00148 std::cout<<"mypdg= "<<strpdg<<std::endl; 00149 00150 if(getNArg()>2){std::cout<<"Parameter can be 1 or 2, You have "<<getNArg()<<std::endl; ::abort();} 00151 00152 if (getParentId().isAlias()){ 00153 00154 report(ERROR,"EvtGen") << "EvtLunda finds that you are decaying the"<<endl 00155 << " aliased particle " 00156 << EvtPDL::name(getParentId()).c_str() 00157 << " with the Lunda model"<<endl 00158 << " this does not work, please modify decay table." 00159 << endl; 00160 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; 00161 ::abort(); 00162 00163 } 00164 00165 store(this); 00166 00167 }
void EvtLunda::initProbMax | ( | ) | [virtual] |
Reimplemented from EvtDecayBase.
Definition at line 135 of file EvtLunda.cc.
References EvtDecayBase::noProbMax().
00135 { 00136 00137 noProbMax(); 00138 00139 }
int EvtDecayIncoherent::isDaughterSpinDensitySet | ( | int | daughter | ) | [inline, inherited] |
Definition at line 39 of file EvtDecayIncoherent.hh.
References EvtDecayIncoherent::spinDensitySet.
Referenced by EvtDecayIncoherent::makeDecay().
00040 {return spinDensitySet[daughter];}
void EvtLunda::LundaInit | ( | int | dummy | ) |
Definition at line 511 of file EvtLunda.cc.
References EvtCyclic3::c_str(), commands, first, genRecEmupikp::i, lugive0_(), and ncommand.
Referenced by decay().
00511 { 00512 00513 static int first=1; 00514 if (first){ 00515 00516 first=0; 00517 for(int i=0;i<ncommand;i++) 00518 lugive0_(commands[i].c_str(),strlen(commands[i].c_str())); 00519 } 00520 00521 }
void EvtDecayIncoherent::makeDecay | ( | EvtParticle * | p | ) | [virtual, inherited] |
Implements EvtDecayBase.
Definition at line 29 of file EvtDecayIncoherent.cc.
References EvtDecayBase::_daugsDecayedByParentModel, EvtRadCorr::alwaysRadCorr(), EvtDecayBase::daugsDecayedByParentModel(), EvtParticle::decay(), EvtDecayBase::decay(), EvtRadCorr::doRadCorr(), EvtParticle::getDaug(), EvtParticle::getNDaug(), EvtDecayBase::getPHOTOS(), EvtParticle::getSpinDensityForward(), EvtParticle::getSpinStates(), genRecEmupikp::i, EvtDecayIncoherent::isDaughterSpinDensitySet(), MAX_DAUG, EvtParticle::setDecayProb(), EvtSpinDensity::SetDiag(), EvtParticle::setSpinDensityBackward(), EvtParticle::setSpinDensityForward(), EvtDecayIncoherent::spinDensitySet, and subSeperate::temp.
00029 { 00030 00031 int i; 00032 //initialize this the hard way.. 00033 //Lange June 26, 2000 00034 for (i=0; i<MAX_DAUG; i++ ) { spinDensitySet[i]=0;} 00035 _daugsDecayedByParentModel=false; 00036 00037 decay(p); 00038 p->setDecayProb(1.); 00039 00040 EvtSpinDensity rho; 00041 00042 rho.SetDiag(p->getSpinStates()); 00043 00044 p->setSpinDensityBackward(rho); 00045 00046 if (getPHOTOS() || EvtRadCorr::alwaysRadCorr()) { 00047 EvtRadCorr::doRadCorr(p); 00048 } 00049 00050 //Now decay the daughters. 00051 00052 if ( !daugsDecayedByParentModel()) { 00053 00054 for(i=0;i<p->getNDaug();i++){ 00055 //Need to set the spin density of the daughters to be 00056 //diagonal. 00057 rho.SetDiag(p->getDaug(i)->getSpinStates()); 00058 //if (p->getDaug(i)->getNDaug()==0){ 00059 //only do this if the user has not already set the 00060 //spin density matrix herself. 00061 //Lange June 26, 2000 00062 if ( isDaughterSpinDensitySet(i)==0 ) { 00063 p->getDaug(i)->setSpinDensityForward(rho); 00064 } 00065 else{ 00066 //report(INFO,"EvtGen") << "spinDensitymatrix already set!!!\n"; 00067 EvtSpinDensity temp=p->getDaug(i)->getSpinDensityForward(); 00068 // report(INFO,"EvtGen") <<temp<<endl; 00069 } 00070 //Now decay the daughter. Really! 00071 p->getDaug(i)->decay(); 00072 } 00073 00074 } 00075 }
bool EvtDecayBase::matchingDecay | ( | const EvtDecayBase & | other | ) | const [virtual, inherited] |
Definition at line 587 of file EvtDecayBase.cc.
References EvtDecayBase::_daug, EvtDecayBase::_ndaug, EvtDecayBase::_parent, genRecEmupikp::i, ganga-rec::j, and EvtCyclic3::other().
Referenced by EvtParticleDecayList::addMode(), and EvtParticleDecayList::removeMode().
00587 { 00588 00589 if ( _ndaug != other._ndaug) return false; 00590 if ( _parent != other._parent) return false; 00591 00592 std::vector<int> useDs; 00593 for ( unsigned int i=0; i<_ndaug; i++) useDs.push_back(0); 00594 00595 for ( unsigned int i=0; i<_ndaug; i++) { 00596 bool foundIt=false; 00597 for ( unsigned int j=0; j<_ndaug; j++) { 00598 if ( useDs[j] == 1 ) continue; 00599 if ( _daug[i] == other._daug[j] && _daug[i].getAlias() == other._daug[j].getAlias()) { 00600 foundIt=true; 00601 useDs[j]=1; 00602 break; 00603 } 00604 } 00605 if ( foundIt==false) return false; 00606 } 00607 for ( unsigned int i=0; i<_ndaug; i++) if ( useDs[i]==0) return false; 00608 00609 return true; 00610 00611 }
void EvtDecayBase::noProbMax | ( | ) | [inherited] |
Definition at line 304 of file EvtDecayBase.cc.
References EvtDecayBase::defaultprobmax.
Referenced by EvtVubNLO::initProbMax(), EvtVubHybrid::initProbMax(), EvtVub::initProbMax(), EvtVectorIsr::initProbMax(), EvtTrackGen::initProbMax(), EvtTauola::initProbMax(), EvtRhoPi::initProbMax(), EvtRexc::initProbMax(), EvtPythia::initProbMax(), EvtPyGaGa::initProbMax(), EvtPycont::initProbMax(), EvtPhsp::initProbMax(), EvtPhokhara_ppbar::initProbMax(), EvtPhokhara_pipipi0::initProbMax(), EvtPhokhara_pipi::initProbMax(), EvtPhokhara_pi0pi0pipi::initProbMax(), EvtPhokhara_nnbar::initProbMax(), EvtPhokhara_LLB::initProbMax(), EvtPhokhara_KK::initProbMax(), EvtPhokhara_K0K0::initProbMax(), EvtPhokhara_4pi::initProbMax(), EvtPhokhara::initProbMax(), EvtOpenCharm::initProbMax(), EvtmPhsp::initProbMax(), EvtmH2::initProbMax(), EvtMBody3::initProbMax(), EvtMassH2::initProbMax(), EvtMassH1::initProbMax(), EvtLundCharm::initProbMax(), initProbMax(), EvtLambdac2pKpi::initProbMax(), EvtJscont::initProbMax(), EvtJetSet::initProbMax(), EvtHAngSam3::initProbMax(), EvtDMix::initProbMax(), EvtDIY::initProbMax(), EvtConExc::initProbMax(), EvtCalHelAmp::initProbMax(), EvtBtoXsll::initProbMax(), EvtBtoXsgamma::initProbMax(), EvtBtoXsEtap::initProbMax(), EvtBody3::initProbMax(), EvtAngSamX::initProbMax(), EvtAngSamLab::initProbMax(), EvtAngSam3::initProbMax(), EvtAngSam::initProbMax(), and EvtAngH2::initProbMax().
00304 { 00305 00306 defaultprobmax=0; 00307 00308 }
virtual int EvtDecayBase::nRealDaughters | ( | ) | [inline, virtual, inherited] |
Reimplemented in EvtBtoKD3P, and EvtVSSBMixCPT.
Definition at line 105 of file EvtDecayBase.hh.
References EvtDecayBase::_ndaug.
Referenced by EvtDecayTable::readDecayFile().
00105 { return _ndaug;}
void EvtDecayBase::printSummary | ( | ) | [inherited] |
Definition at line 259 of file EvtDecayBase.cc.
References EvtDecayBase::_daug, EvtDecayBase::_modelname, EvtDecayBase::_ndaug, EvtDecayBase::_parent, EvtCyclic3::c_str(), genRecEmupikp::i, Bes_Common::INFO, EvtDecayBase::max_prob, EvtPDL::name(), EvtDecayBase::ntimes_prob, EvtDecayBase::probmax, report(), and EvtDecayBase::sum_prob.
Referenced by EvtDecayBase::checkNArg(), EvtDecayBase::checkNDaug(), EvtDecayBase::checkSpinDaughter(), EvtDecayBase::checkSpinParent(), and EvtParticleDecay::printSummary().
00259 { 00260 00261 int i; 00262 00263 if (ntimes_prob>0) { 00264 00265 report(INFO,"EvtGen") << "Calls="<<ntimes_prob<<" eff:"<< 00266 sum_prob/(probmax*ntimes_prob)<<" frac. max:"<<max_prob/probmax; 00267 report(INFO,"") <<" probmax:"<<probmax<<" max:"<<max_prob<<" : "; 00268 } 00269 00270 report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> "; 00271 for(i=0;i<_ndaug;i++){ 00272 report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " "; 00273 } 00274 report(INFO,"") << " ("<<_modelname.c_str()<<"):"<< endl; 00275 00276 00277 00278 }
double EvtDecayBase::resetProbMax | ( | double | prob | ) | [inherited] |
Definition at line 108 of file EvtDecayBase.cc.
References EvtDecayBase::_daug, EvtDecayBase::_modelname, EvtDecayBase::_ndaug, EvtDecayBase::_parent, EvtDecayBase::defaultprobmax, EvtPDL::getStdHep(), genRecEmupikp::i, Bes_Common::INFO, EvtDecayBase::ntimes_prob, EvtDecayBase::probmax, and report().
00108 { 00109 00110 report(INFO,"EvtGen") << "Reseting prob max\n"; 00111 report(INFO,"EvtGen") << "prob > probmax:("<<prob<<">"<<probmax<<")"; 00112 report(INFO,"") << "("<<_modelname.c_str()<<")"; 00113 report(INFO,"") << EvtPDL::getStdHep(_parent)<<"->"; 00114 00115 for( int i=0;i<_ndaug;i++){ 00116 report(INFO,"") << EvtPDL::getStdHep(_daug[i]) << " "; 00117 } 00118 report(INFO,"") << endl; 00119 00120 probmax = 0.0; 00121 defaultprobmax = 0; 00122 ntimes_prob = 0; 00123 00124 return prob; 00125 00126 }
void EvtDecayBase::saveDecayInfo | ( | EvtId | ipar, | |
int | ndaug, | |||
EvtId * | daug, | |||
int | narg, | |||
std::vector< std::string > & | args, | |||
std::string | name, | |||
double | brfr | |||
) | [inherited] |
Definition at line 167 of file EvtDecayBase.cc.
References EvtDecayBase::_args, EvtDecayBase::_brfr, EvtDecayBase::_chkCharge, EvtDecayBase::_daug, EvtDecayBase::_dsum, EvtDecayBase::_modelname, EvtDecayBase::_narg, EvtDecayBase::_ndaug, EvtDecayBase::_parent, EvtCyclic3::c_str(), EvtDecayBase::checkQ(), EvtDecayBase::defaultprobmax, EvtId::getAlias(), genRecEmupikp::i, Bes_Common::INFO, EvtDecayBase::init(), EvtDecayBase::initProbMax(), EvtPDL::name(), report(), and deljobs::string.
Referenced by EvtParticleDecay::chargeConj(), EvtParticleDecayList::EvtParticleDecayList(), and EvtDecayTable::readDecayFile().
00170 { 00171 00172 int i; 00173 00174 _brfr=brfr; 00175 _ndaug=ndaug; 00176 _narg=narg; 00177 _parent=ipar; 00178 00179 _dsum=0; 00180 00181 if (_ndaug>0) { 00182 _daug=new EvtId [_ndaug]; 00183 for(i=0;i<_ndaug;i++){ 00184 _daug[i]=daug[i]; 00185 _dsum+=daug[i].getAlias(); 00186 } 00187 } 00188 else{ 00189 _daug=0; 00190 } 00191 00192 if (_narg>0) { 00193 _args=new std::string[_narg+1]; 00194 for(i=0;i<_narg;i++){ 00195 _args[i]=args[i]; 00196 } 00197 } 00198 else{ 00199 _args = 0; 00200 } 00201 00202 _modelname=name; 00203 00204 this->init(); 00205 this->initProbMax(); 00206 00207 if (_chkCharge){ 00208 this->checkQ(); 00209 } 00210 00211 00212 if (defaultprobmax){ 00213 report(INFO,"EvtGen") << "No default probmax for "; 00214 report(INFO,"") << "("<<_modelname.c_str()<<") "; 00215 report(INFO,"") << EvtPDL::name(_parent).c_str()<<" -> "; 00216 for(i=0;i<_ndaug;i++){ 00217 report(INFO,"") << EvtPDL::name(_daug[i]).c_str() << " "; 00218 } 00219 report(INFO,"") << endl; 00220 report(INFO,"") << "This is fine for development, but must be provided for production."<<endl; 00221 report(INFO,"EvtGen") << "Never fear though - the decay will use the \n"; 00222 report(INFO,"EvtGen") << "500 iterations to build up a good probmax \n"; 00223 report(INFO,"EvtGen") << "before accepting a decay. "<<endl; 00224 } 00225 00226 }
void EvtDecayIncoherent::setDaughterSpinDensity | ( | int | daughter | ) | [inline, inherited] |
Definition at line 36 of file EvtDecayIncoherent.hh.
References EvtDecayIncoherent::spinDensitySet.
Referenced by EvtVectorIsr::decay(), EvtTauola::fixPolarizations(), EvtPythia::fixPolarizations(), EvtOpenCharm::fixPolarizations(), EvtLundCharm::fixPolarizations(), fixPolarizations(), and EvtJetSet::fixPolarizations().
00037 { spinDensitySet[daughter]=1; return;}
void EvtDecayBase::setPHOTOS | ( | ) | [inline, inherited] |
Definition at line 69 of file EvtDecayBase.hh.
References EvtDecayBase::_photos.
Referenced by EvtParticleDecay::chargeConj(), EvtParticleDecayList::EvtParticleDecayList(), and EvtDecayTable::readDecayFile().
00069 {_photos=1;}
void EvtDecayBase::setProbMax | ( | double | prbmx | ) | [inherited] |
Definition at line 297 of file EvtDecayBase.cc.
References EvtDecayBase::defaultprobmax, and EvtDecayBase::probmax.
Referenced by EvtBtoKD3P::decay(), EvtVVSPwave::initProbMax(), EvtVVPIPI_WEIGHTED::initProbMax(), EvtVVpipi::initProbMax(), EvtVVP::initProbMax(), EvtVSSMix::initProbMax(), EvtVSSBMixCPT::initProbMax(), EvtVSS::initProbMax(), EvtVSPPwave::initProbMax(), EvtVPHOtoVISRHi::initProbMax(), EvtVll::initProbMax(), EvtTVSPwave::initProbMax(), EvtTSS::initProbMax(), EvtTauVectornu::initProbMax(), EvtTauScalarnu::initProbMax(), EvtTaulnunu::initProbMax(), EvtTauHadnu::initProbMax(), EvtT2GV::initProbMax(), EvtSVVNONCPEIGEN::initProbMax(), EvtSVVHelAmp::initProbMax(), EvtSVVCPLH::initProbMax(), EvtSVVCP::initProbMax(), EvtSVSNONCPEIGEN::initProbMax(), EvtSVSCPLH::initProbMax(), EvtSVSCPiso::initProbMax(), EvtSVSCP::initProbMax(), EvtSVS::initProbMax(), EvtSVPHelAmp::initProbMax(), EvtSVPCP::initProbMax(), EvtSTSCP::initProbMax(), EvtSTS::initProbMax(), EvtSSSCPpng::initProbMax(), EvtSSSCP::initProbMax(), EvtSSDCP::initProbMax(), EvtSPL::initProbMax(), EvtSLPole::initProbMax(), EvtSLN::initProbMax(), EvtSLBKPole::initProbMax(), EvtS2GV::initProbMax(), EvtPi0Dalitz::initProbMax(), EvtPBB2::initProbMax(), EvtPBB1::initProbMax(), EvtPartWave::initProbMax(), EvtP2GC2::initProbMax(), EvtP2GC1::initProbMax(), EvtP2GC0::initProbMax(), EvtOmegaDalitz::initProbMax(), EvtLNuGamma::initProbMax(), EvtLambdaP_BarGamma::initProbMax(), EvtKKLambdaC::initProbMax(), EvtJpipi::initProbMax(), EvtISGW2::initProbMax(), EvtIntervalDecayAmp< EvtDalitzPoint >::initProbMax(), EvtHypNonLepton::initProbMax(), EvtHQET2::initProbMax(), EvtHQET::initProbMax(), EvtHelAmp::initProbMax(), EvtGoityRoberts::initProbMax(), EvtFlatQ2::initProbMax(), EvtEtaDalitz::initProbMax(), EvtEDM::initProbMax(), EvtDDalitz::initProbMax(), EvtD0mixDalitz::initProbMax(), EvtCBTo3piP00::initProbMax(), EvtCBTo3piMPP::initProbMax(), EvtbTosllBall::initProbMax(), EvtbTosllAli::initProbMax(), EvtBtoKpiCPiso::initProbMax(), EvtBtoKD3P::initProbMax(), EvtBTo3piCP::initProbMax(), EvtBto2piCPiso::initProbMax(), and EvtAV2GV::initProbMax().
00297 { 00298 00299 defaultprobmax=0; 00300 probmax=prbmx; 00301 00302 }
void EvtDecayBase::setSummary | ( | ) | [inline, inherited] |
Definition at line 71 of file EvtDecayBase.hh.
References EvtDecayBase::_summary.
Referenced by EvtParticleDecayList::EvtParticleDecayList(), and EvtDecayTable::readDecayFile().
00071 {_summary=1;}
void EvtDecayBase::setVerbose | ( | ) | [inline, inherited] |
Definition at line 70 of file EvtDecayBase.hh.
References EvtDecayBase::_verbose.
Referenced by EvtParticleDecayList::EvtParticleDecayList(), and EvtDecayTable::readDecayFile().
00070 {_verbose=1;}
void EvtLunda::store | ( | EvtDecayBase * | jsdecay | ) | [private] |
Definition at line 490 of file EvtLunda.cc.
References genRecEmupikp::i, lundadecays, nlundadecays, and ntable.
Referenced by init().
00490 { 00491 00492 if (nlundadecays==ntable){ 00493 00494 EvtDecayBasePtr* newlundadecays=new EvtDecayBasePtr[2*ntable+10]; 00495 int i; 00496 for(i=0;i<ntable;i++){ 00497 newlundadecays[i]=lundadecays[i]; 00498 } 00499 ntable=2*ntable+10; 00500 delete [] lundadecays; 00501 lundadecays=newlundadecays; 00502 } 00503 00504 lundadecays[nlundadecays++]=jsdecay; 00505 00506 00507 00508 }
int EvtDecayBase::summary | ( | ) | [inline, inherited] |
Definition at line 78 of file EvtDecayBase.hh.
References EvtDecayBase::_summary.
Referenced by EvtParticleDecayList::EvtParticleDecayList().
00078 {return _summary; }
int EvtDecayBase::verbose | ( | ) | [inline, inherited] |
Definition at line 79 of file EvtDecayBase.hh.
References EvtDecayBase::_verbose.
Referenced by EvtParticleDecayList::EvtParticleDecayList(), EvtSVSCPLH::init(), EvtSSDCP::init(), EvtPartWave::init(), EvtHelAmp::init(), EvtBtoXsll::init(), EvtPartWave::initProbMax(), and EvtHelAmp::initProbMax().
00079 {return _verbose; }
bool EvtDecayBase::_daugsDecayedByParentModel [protected, inherited] |
Definition at line 109 of file EvtDecayBase.hh.
Referenced by EvtDecayBase::daugsDecayedByParentModel(), EvtBtoKD3P::decay(), EvtDecayProb::makeDecay(), EvtDecayIncoherent::makeDecay(), and EvtDecayAmp::makeDecay().
std::string * EvtLunda::commands = 0 [static, private] |
int EvtLunda::lcommand = 0 [static, private] |
EvtDecayBasePtr * EvtLunda::lundadecays = 0 [static, private] |
int EvtLunda::ncommand = 0 [static, private] |
int EvtLunda::nevt = 0 [static, private] |
int EvtLunda::nlundadecays = 0 [static, private] |
int EvtLunda::ntable = 0 [static, private] |