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: EvtFlatQ2.cc
13 // Description: B->Xu l nu with flat q2 distribution
15 // Modification history:
17 // David Cote, U. de Montreal, 11/02/2003 Module created
19 //------------------------------------------------------------------------
21 #include "EvtGenBase/EvtPatches.hh"
22 #include "EvtGenModels/EvtFlatQ2.hh"
28 #include "EvtGenBase/EvtGenKine.hh"
29 #include "EvtGenBase/EvtParticle.hh"
30 #include "EvtGenBase/EvtPDL.hh"
31 #include "EvtGenBase/EvtReport.hh"
32 #include "EvtGenBase/EvtDiracSpinor.hh"
33 #include "EvtGenBase/EvtVector4C.hh"
34 #include "EvtGenBase/EvtTensor4C.hh"
37 EvtFlatQ2::~EvtFlatQ2() {}
39 std::string EvtFlatQ2::getName(){
45 EvtDecayBase* EvtFlatQ2::clone(){
52 void EvtFlatQ2::initProbMax(){
59 void EvtFlatQ2::init(){
61 // check that there are 0 arguments
65 //We expect B->X l nu events
66 checkSpinParent(EvtSpinType::SCALAR);
67 checkSpinDaughter(1,EvtSpinType::DIRAC);
68 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
73 void EvtFlatQ2::decay( EvtParticle *p){
75 p->initializePhaseSpace(getNDaug(),getDaugs());
77 EvtVector4R p4Xu = p->getDaug(0)->getP4();
78 double pXu_x2=p4Xu.get(1)*p4Xu.get(1);
79 double pXu_y2=p4Xu.get(2)*p4Xu.get(2);
80 double pXu_z2=p4Xu.get(3)*p4Xu.get(3);
81 double pXu = sqrt(pXu_x2+pXu_y2+pXu_z2);
84 if(pXu>0.01) setProb(prob);