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 two leptons,
14 // or generally, two spin 1/2 particles.
15 // E.g., J/psi -> e+ e-
17 // Modification history:
19 // RYD January 17, 1997 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/EvtVll.hh"
31 #include "EvtGenBase/EvtDiracSpinor.hh"
32 #include "EvtGenBase/EvtReport.hh"
33 #include "EvtGenBase/EvtVector4C.hh"
37 std::string EvtVll::getName(){
44 EvtDecayBase* EvtVll::clone(){
52 // check that there are 0 arguments
56 checkSpinParent(EvtSpinType::VECTOR);
58 checkSpinDaughter(0,EvtSpinType::DIRAC);
59 checkSpinDaughter(1,EvtSpinType::DIRAC);
63 void EvtVll::initProbMax(){
69 void EvtVll::decay(EvtParticle *p){
71 p->initializePhaseSpace(getNDaug(),getDaugs());
77 EvtVector4C l11, l12, l21, l22;
78 l11=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(0));
79 l12=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(1));
80 l21=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(0));
81 l22=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(1));
83 EvtVector4C eps0=p->eps(0);
84 EvtVector4C eps1=p->eps(1);
85 EvtVector4C eps2=p->eps(2);
92 double norm=1.0/sqrt(2*M2+4*m2-4*m2*m2/M2);
94 vertex(0,0,0,norm*(eps0*l11));
95 vertex(0,0,1,norm*(eps0*l12));
96 vertex(0,1,0,norm*(eps0*l21));
97 vertex(0,1,1,norm*(eps0*l22));
99 vertex(1,0,0,norm*(eps1*l11));
100 vertex(1,0,1,norm*(eps1*l12));
101 vertex(1,1,0,norm*(eps1*l21));
102 vertex(1,1,1,norm*(eps1*l22));
104 vertex(2,0,0,norm*(eps2*l11));
105 vertex(2,0,1,norm*(eps2*l12));
106 vertex(2,1,0,norm*(eps2*l21));
107 vertex(2,1,1,norm*(eps2*l22));