//-------------------------------------------------------------------------- // // 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: See EvtGen/COPYRIGHT // Copyright (C) 1998 Caltech, UCSB // // Module: EvtGenModels/EvtBToVlnuBall.cc // // Description: B->Xu l nu with the Ball/Zwicky decay model // Xu is a vector (rho, rho0, omega) // // // Modification history: // // Wells Wulsin 2008 Aug 14 Module created // //------------------------------------------------------------------------ // #include "EvtGenBase/EvtPatches.hh" #include #include #include "EvtGenBase/EvtParticle.hh" #include "EvtGenBase/EvtGenKine.hh" #include "EvtGenBase/EvtPDL.hh" #include "EvtGenBase/EvtReport.hh" #include "EvtGenModels/EvtBToVlnuBall.hh" #include "EvtGenModels/EvtBToVlnuBallFF.hh" #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh" #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh" #include using std::endl; EvtBToVlnuBall::EvtBToVlnuBall(): _Ballmodel(0) ,_calcamp(0) {} EvtBToVlnuBall::~EvtBToVlnuBall() { delete _Ballmodel; _Ballmodel=0; delete _calcamp; _calcamp=0; } std::string EvtBToVlnuBall::getName(){ return "BTOVLNUBALL"; } EvtDecayBase* EvtBToVlnuBall::clone(){ return new EvtBToVlnuBall; } void EvtBToVlnuBall::decay( EvtParticle *p ){ p->initializePhaseSpace(getNDaug(),getDaugs()); _calcamp->CalcAmp(p,_amp2,_Ballmodel); } void EvtBToVlnuBall::initProbMax(){ EvtId parnum,mesnum,lnum,nunum; parnum = getParentId(); mesnum = getDaug(0); lnum = getDaug(1); nunum = getDaug(2); double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum, lnum,nunum,_Ballmodel); setProbMax(mymaxprob); } void EvtBToVlnuBall::init(){ checkNDaug(3); //We expect the parent to be a scalar //and the daughters to be X lepton neutrino checkSpinParent(EvtSpinType::SCALAR); checkSpinDaughter(1,EvtSpinType::DIRAC); checkSpinDaughter(2,EvtSpinType::NEUTRINO); EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0)); if ( d1type==EvtSpinType::VECTOR) { checkNArg(8); // the number of arguments needed for the Ball model _Ballmodel = new EvtBToVlnuBallFF(getArg(0),getArg(1),getArg(2),getArg(3),getArg(4),getArg(5),getArg(6),getArg(7)); _calcamp = new EvtSemiLeptonicVectorAmp; } else { report(ERROR,"EvtGen") << "Ball model handles only vector meson daughters. Sorry." << endl; ::abort(); } }