1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtGenModels/EvtBToVlnuBall.cc
13 // Description: B->Xu l nu with the Ball/Zwicky decay model
14 // Xu is a vector (rho, rho0, omega)
17 // Modification history:
19 // Wells Wulsin 2008 Aug 14 Module created
21 //------------------------------------------------------------------------
23 #include "EvtGenBase/EvtPatches.hh"
26 #include "EvtGenBase/EvtParticle.hh"
27 #include "EvtGenBase/EvtGenKine.hh"
28 #include "EvtGenBase/EvtPDL.hh"
29 #include "EvtGenBase/EvtReport.hh"
30 #include "EvtGenModels/EvtBToVlnuBall.hh"
31 #include "EvtGenModels/EvtBToVlnuBallFF.hh"
32 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
33 #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
37 EvtBToVlnuBall::EvtBToVlnuBall():
42 EvtBToVlnuBall::~EvtBToVlnuBall() {
50 std::string EvtBToVlnuBall::getName(){
55 EvtDecayBase* EvtBToVlnuBall::clone(){
56 return new EvtBToVlnuBall;
60 void EvtBToVlnuBall::decay( EvtParticle *p ){
62 p->initializePhaseSpace(getNDaug(),getDaugs());
63 _calcamp->CalcAmp(p,_amp2,_Ballmodel);
70 void EvtBToVlnuBall::initProbMax(){
72 EvtId parnum,mesnum,lnum,nunum;
74 parnum = getParentId();
79 double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
80 lnum,nunum,_Ballmodel);
82 setProbMax(mymaxprob);
87 void EvtBToVlnuBall::init(){
91 //We expect the parent to be a scalar
92 //and the daughters to be X lepton neutrino
93 checkSpinParent(EvtSpinType::SCALAR);
95 checkSpinDaughter(1,EvtSpinType::DIRAC);
96 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
98 EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
99 if ( d1type==EvtSpinType::VECTOR) {
100 checkNArg(8); // the number of arguments needed for the Ball model
101 _Ballmodel = new EvtBToVlnuBallFF(getArg(0),getArg(1),getArg(2),getArg(3),getArg(4),getArg(5),getArg(6),getArg(7));
102 _calcamp = new EvtSemiLeptonicVectorAmp;
104 report(ERROR,"EvtGen") << "Ball model handles only vector meson daughters. Sorry." << endl;