00001 //-------------------------------------------------------------------------- 00002 // 00003 // Environment: 00004 // This software is part of the EvtGen package developed jointly 00005 // for the BaBar and CLEO collaborations. If you use all or part 00006 // of it, please give an appropriate acknowledgement. 00007 // 00008 // Copyright Information: See EvtGen/COPYRIGHT 00009 // Copyright (C) 1998 Caltech, UCSB 00010 // 00011 // Module: EvtFlatQ2.cc 00012 // 00013 // Description: B->Xu l nu with flat q2 distribution 00014 // 00015 // Modification history: 00016 // 00017 // David Cote, U. de Montreal, 11/02/2003 Module created 00018 // 00019 //------------------------------------------------------------------------ 00020 // 00021 #include "EvtGenBase/EvtPatches.hh" 00022 #include "EvtGenModels/EvtFlatQ2.hh" 00023 00024 #include <stdlib.h> 00025 #include <fstream> 00026 #include <stdio.h> 00027 #include <string> 00028 #include "EvtGenBase/EvtGenKine.hh" 00029 #include "EvtGenBase/EvtParticle.hh" 00030 #include "EvtGenBase/EvtPDL.hh" 00031 #include "EvtGenBase/EvtReport.hh" 00032 #include "EvtGenBase/EvtDiracSpinor.hh" 00033 #include "EvtGenBase/EvtVector4C.hh" 00034 #include "EvtGenBase/EvtTensor4C.hh" 00035 using std::fstream; 00036 00037 EvtFlatQ2::~EvtFlatQ2() {} 00038 00039 void EvtFlatQ2::getName(std::string& model_name){ 00040 00041 model_name="FLATQ2"; 00042 00043 } 00044 00045 EvtDecayBase* EvtFlatQ2::clone(){ 00046 00047 return new EvtFlatQ2; 00048 00049 } 00050 00051 00052 void EvtFlatQ2::initProbMax(){ 00053 00054 setProbMax(100); 00055 00056 } 00057 00058 00059 void EvtFlatQ2::init(){ 00060 00061 // check that there are 0 arguments 00062 checkNArg(0); 00063 checkNDaug(3); 00064 00065 //We expect B->X l nu events 00066 checkSpinParent(EvtSpinType::SCALAR); 00067 checkSpinDaughter(1,EvtSpinType::DIRAC); 00068 checkSpinDaughter(2,EvtSpinType::NEUTRINO); 00069 00070 } 00071 00072 00073 void EvtFlatQ2::decay( EvtParticle *p){ 00074 00075 p->initializePhaseSpace(getNDaug(),getDaugs()); 00076 00077 EvtVector4R p4Xu = p->getDaug(0)->getP4(); 00078 double pXu_x2=p4Xu.get(1)*p4Xu.get(1); 00079 double pXu_y2=p4Xu.get(2)*p4Xu.get(2); 00080 double pXu_z2=p4Xu.get(3)*p4Xu.get(3); 00081 double pXu = sqrt(pXu_x2+pXu_y2+pXu_z2); 00082 double prob=1/pXu; 00083 00084 if(pXu>0.01) setProb(prob); 00085 00086 return; 00087 } 00088 00089