/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtOmegaDalitz.cc

Go to the documentation of this file.
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: EvtOmegaDalitz.cc
00012 //
00013 // Description: Routine to decay omega -> pi pi pi0
00014 //
00015 // Modification history:
00016 //
00017 //    RYD     November 24, 1996         Module created
00018 //
00019 //------------------------------------------------------------------------
00020 // 
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <stdlib.h>
00023 #include "EvtGenBase/EvtParticle.hh"
00024 #include "EvtGenBase/EvtGenKine.hh"
00025 #include "EvtGenBase/EvtTensor4C.hh"
00026 #include "EvtGenBase/EvtVector4C.hh"
00027 #include "EvtGenBase/EvtVector3R.hh"
00028 #include "EvtGenBase/EvtPDL.hh"
00029 #include "EvtGenModels/EvtOmegaDalitz.hh"
00030 #include "EvtGenBase/EvtReport.hh"
00031 #include <string>
00032 
00033 EvtOmegaDalitz::~EvtOmegaDalitz() {}
00034 
00035 void EvtOmegaDalitz::getName(std::string& model_name){
00036 
00037   model_name="OMEGA_DALITZ";     
00038 
00039 }
00040 
00041 
00042 EvtDecayBase* EvtOmegaDalitz::clone(){
00043 
00044   return new EvtOmegaDalitz;
00045 
00046 }
00047 
00048 void EvtOmegaDalitz::init(){
00049 
00050   // check that there are 0 arguments
00051   checkNArg(0);
00052   checkNDaug(3);
00053 
00054   checkSpinParent(EvtSpinType::VECTOR);
00055 
00056   checkSpinDaughter(0,EvtSpinType::SCALAR);
00057   checkSpinDaughter(1,EvtSpinType::SCALAR);
00058   checkSpinDaughter(2,EvtSpinType::SCALAR);
00059 
00060 }
00061 
00062 void EvtOmegaDalitz::initProbMax() {
00063 
00064    setProbMax( 1.0);
00065 
00066 }      
00067 
00068 void EvtOmegaDalitz::decay( EvtParticle *p ){
00069 
00070   p->initializePhaseSpace(getNDaug(),getDaugs());
00071 
00072   EvtVector4C ep[3];
00073 
00074   ep[0] = p->eps(0);
00075   ep[1] = p->eps(1);
00076   ep[2] = p->eps(2);
00077 
00078   EvtVector4R mompi1 = p->getDaug(0)->getP4();
00079   EvtVector4R mompi2 = p->getDaug(1)->getP4();
00080 
00081   EvtVector3R p1(mompi1.get(1),mompi1.get(2),mompi1.get(3));
00082   EvtVector3R p2(mompi2.get(1),mompi2.get(2),mompi2.get(3));
00083   EvtVector3R q=cross(p2,p1);
00084 
00085   EvtVector3C e1(ep[0].get(1),ep[0].get(2),ep[0].get(3));
00086   EvtVector3C e2(ep[1].get(1),ep[1].get(2),ep[1].get(3));
00087   EvtVector3C e3(ep[2].get(1),ep[2].get(2),ep[2].get(3));
00088 
00089   //This is an approximate formula of the maximum value that
00090   //|q| can have.
00091   double norm=1.14/(p->mass()*p->mass()/9.0-mompi1.mass2());
00092   
00093   vertex(0,norm*e1*q);
00094   vertex(1,norm*e2*q);
00095   vertex(2,norm*e3*q);
00096 
00097   return ;
00098    
00099 }
00100 

Generated on Tue Nov 29 23:12:20 2016 for BOSS_7.0.2 by  doxygen 1.4.7