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
13 // Description: The decay of a vector meson to a scalar and a
14 // lepton pair. E.g. D_s*+ -> D_s+ e+ e-
17 // Modification history:
19 // RYD February 28, 2009 Module created
21 //------------------------------------------------------------------------
23 #include "EvtGenBase/EvtPatches.hh"
27 #include "EvtGenBase/EvtParticle.hh"
28 #include "EvtGenBase/EvtPDL.hh"
29 #include "EvtGenBase/EvtGenKine.hh"
30 #include "EvtGenModels/EvtVtoSll.hh"
31 #include "EvtGenBase/EvtDiracSpinor.hh"
32 #include "EvtGenBase/EvtReport.hh"
33 #include "EvtGenBase/EvtVector4C.hh"
34 #include "EvtGenBase/EvtTensor4C.hh"
36 EvtVtoSll::~EvtVtoSll() {}
38 std::string EvtVtoSll::getName(){
45 EvtDecayBase* EvtVtoSll::clone(){
51 void EvtVtoSll::init(){
53 // check that there are 0 arguments
57 checkSpinParent(EvtSpinType::VECTOR);
59 checkSpinDaughter(0,EvtSpinType::SCALAR);
60 checkSpinDaughter(1,EvtSpinType::DIRAC);
61 checkSpinDaughter(2,EvtSpinType::DIRAC);
65 void EvtVtoSll::initProbMax(){
71 void EvtVtoSll::decay(EvtParticle *p){
73 p->initializePhaseSpace(getNDaug(),getDaugs());
79 EvtVector4C l11, l12, l21, l22;
80 l11=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(0));
81 l12=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(1));
82 l21=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(0));
83 l22=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(1));
85 EvtVector4C eps0=p->eps(0);
86 EvtVector4C eps1=p->eps(1);
87 EvtVector4C eps2=p->eps(2);
89 EvtVector4R P=p->getP4Restframe();
90 EvtVector4R k=l1->getP4()+l2->getP4();
93 EvtTensor4C T(dual(directProd(P,(1.0/k2)*k)));
102 double norm=1.0/sqrt(2*M2+4*m2-4*m2*m2/M2);
104 vertex(0,0,0,norm*(eps0*T.cont2(l11)));
105 vertex(0,0,1,norm*(eps0*T.cont2(l12)));
106 vertex(0,1,0,norm*(eps0*T.cont2(l21)));
107 vertex(0,1,1,norm*(eps0*T.cont2(l22)));
109 vertex(1,0,0,norm*(eps1*T.cont2(l11)));
110 vertex(1,0,1,norm*(eps1*T.cont2(l12)));
111 vertex(1,1,0,norm*(eps1*T.cont2(l21)));
112 vertex(1,1,1,norm*(eps1*T.cont2(l22)));
114 vertex(2,0,0,norm*(eps2*T.cont2(l11)));
115 vertex(2,0,1,norm*(eps2*T.cont2(l12)));
116 vertex(2,1,0,norm*(eps2*T.cont2(l21)));
117 vertex(2,1,1,norm*(eps2*T.cont2(l22)));