//-------------------------------------------------------------------------- // // Environment: // This software is part of the EvtGen package developed jointly // for the BaBar and CLEO collaborations. If you use all or part // of it, please give an appropriate acknowledgement. // // Copyright Information: // Copyright (C) 1998 Caltech, UCSB // // Module: EvtBaryonVminusA.cc // // Description: Routine to implement semileptonic decays using realistic // dynamics. The form factors are from // M.Pervin,S.Capstick,W. Roberts, Phys.Rev. C72 035201(2005). // // // Modification history: // // R.J. Tesarek May 28, 2004 Module created // Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+, // 1/2+->1/2-, 1/2+->3/2- Lambda decays // //------------------------------------------------------------------------ #include "EvtGenBase/EvtPatches.hh" #include #include "EvtGenBase/EvtParticle.hh" #include "EvtGenBase/EvtGenKine.hh" #include "EvtGenBase/EvtPDL.hh" #include "EvtGenBase/EvtReport.hh" #include "EvtGenModels/EvtBaryonPCR.hh" #include "EvtGenBase/EvtConst.hh" #include "EvtGenBase/EvtIdSet.hh" #include #include "EvtGenModels/EvtBaryonPCRFF.hh" using namespace std; #ifdef D0 #undef D0 #endif EvtBaryonPCR::EvtBaryonPCR(): baryonpcrffmodel(0) ,calcamp(0) {} EvtBaryonPCR::~EvtBaryonPCR() { delete baryonpcrffmodel; baryonpcrffmodel=0; delete calcamp; calcamp=0; } std::string EvtBaryonPCR::getName(){ return "BaryonPCR"; } EvtDecayBase* EvtBaryonPCR::clone(){ return new EvtBaryonPCR; } void EvtBaryonPCR::decay( EvtParticle *p ){ //This is a kludge to avoid warnings because the K_2* mass becomes to large. static EvtIdSet regenerateMasses("K_2*+","K_2*-","K_2*0","anti-K_2*0", "K_1+","K_1-","K_10","anti-K_10", "D'_1+","D'_1-","D'_10","anti-D'_10"); if (regenerateMasses.contains(getDaug(0))){ p->resetFirstOrNot(); } p->initializePhaseSpace(getNDaug(),getDaugs()); EvtComplex r00(getArg(0), 0.0 ); EvtComplex r01(getArg(1), 0.0 ); EvtComplex r10(getArg(2), 0.0 ); EvtComplex r11(getArg(3), 0.0 ); calcamp->CalcAmp(p,_amp2,baryonpcrffmodel, r00, r01, r10, r11); } void EvtBaryonPCR::initProbMax() { // Leptons static EvtId EM=EvtPDL::getId("e-"); static EvtId EP=EvtPDL::getId("e+"); static EvtId MUM=EvtPDL::getId("mu-"); static EvtId MUP=EvtPDL::getId("mu+"); static EvtId TAUM=EvtPDL::getId("tau-"); static EvtId TAUP=EvtPDL::getId("tau+"); // Baryons (partial list 5/28/04) static EvtId PP=EvtPDL::getId("p+"); static EvtId PM=EvtPDL::getId("anti-p-"); static EvtId N0=EvtPDL::getId("n0"); static EvtId N0B=EvtPDL::getId("anti-n0"); static EvtId SIGP=EvtPDL::getId("Sigma+"); static EvtId SIGM=EvtPDL::getId("anti-Sigma-"); static EvtId LAM0=EvtPDL::getId("Lambda0"); static EvtId LAM0B=EvtPDL::getId("anti-Lambda0"); static EvtId SIGC0=EvtPDL::getId("Sigma_c0"); static EvtId SIGC0B=EvtPDL::getId("anti-Sigma_c0"); static EvtId SIGCP=EvtPDL::getId("Sigma_c+"); static EvtId SIGCM=EvtPDL::getId("anti-Sigma_c-"); static EvtId SIGCPP=EvtPDL::getId("Sigma_c++"); static EvtId SIGCMM=EvtPDL::getId("anti-Sigma_c--"); static EvtId LAMCP=EvtPDL::getId("Lambda_c+"); static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-"); static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+"); static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-"); static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+"); static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-"); static EvtId LAMB=EvtPDL::getId("Lambda_b0"); static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0"); static EvtId CASM=EvtPDL::getId("Xi-"); static EvtId CASP=EvtPDL::getId("anti-Xi+"); static EvtId CAS0=EvtPDL::getId("Xi0"); static EvtId CAS0B=EvtPDL::getId("anti-Xi0"); static EvtId CASCP=EvtPDL::getId("Xi_c+"); static EvtId CASCM=EvtPDL::getId("anti-Xi_c-"); static EvtId CASC0=EvtPDL::getId("Xi_c0"); static EvtId CASC0B=EvtPDL::getId("anti-Xi_c0"); static EvtId OMEGM=EvtPDL::getId("Omega-"); static EvtId OMEGP=EvtPDL::getId("anti-Omega+"); static EvtId OMEGC0=EvtPDL::getId("Omega_c0"); static EvtId OMEGC0B=EvtPDL::getId("anti-Omega_c0"); EvtId parnum,barnum,lnum; parnum = getParentId(); barnum = getDaug(0); lnum = getDaug(1); if( parnum==LAMB || parnum==LAMBB ) { if( barnum==LAMCP|| barnum==LAMCM || barnum==LAMC1P || barnum==LAMC1M || barnum==LAMC2P || barnum==LAMC2M || barnum==SIGC0 || barnum==SIGC0B || barnum==SIGCP || barnum==SIGCM || barnum==SIGCPP || barnum==SIGCMM ) { setProbMax(22000.0); return; } } //This is a real cludge.. (ryd) setProbMax(0.0); } void EvtBaryonPCR::init(){ //if (getNArg()!=0) { if (getNArg()!=4) { report(EVT_ERROR,"EvtGen") << "EvtBaryonPCR generator expected " << " 4 arguments but found:"<