--- /dev/null
+//--------------------------------------------------------------------------
+//
+// Environment:
+// This software is part of the EvtGen package developed jointly
+// for the BaBar and CLEO collaborations. If you use all or part
+// of it, please give an appropriate acknowledgement.
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+// Copyright (C) 1998 Caltech, UCSB
+//
+// Module: EvtVll.cc
+//
+// Description: The decay of a vector meson to two leptons,
+// or generally, two spin 1/2 particles.
+// E.g., J/psi -> e+ e-
+//
+// Modification history:
+//
+// RYD January 17, 1997 Module created
+//
+//------------------------------------------------------------------------
+//
+#include "EvtGenBase/EvtPatches.hh"
+#include <stdlib.h>
+#include <iostream>
+#include <string>
+#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtPDL.hh"
+#include "EvtGenBase/EvtGenKine.hh"
+#include "EvtGenModels/EvtVll.hh"
+#include "EvtGenBase/EvtDiracSpinor.hh"
+#include "EvtGenBase/EvtReport.hh"
+#include "EvtGenBase/EvtVector4C.hh"
+
+EvtVll::~EvtVll() {}
+
+std::string EvtVll::getName(){
+
+ return "VLL";
+
+}
+
+
+EvtDecayBase* EvtVll::clone(){
+
+ return new EvtVll;
+
+}
+
+void EvtVll::init(){
+
+ // check that there are 0 arguments
+ checkNArg(0);
+ checkNDaug(2);
+
+ checkSpinParent(EvtSpinType::VECTOR);
+
+ checkSpinDaughter(0,EvtSpinType::DIRAC);
+ checkSpinDaughter(1,EvtSpinType::DIRAC);
+
+}
+
+void EvtVll::initProbMax(){
+
+ setProbMax(1.0);
+
+}
+
+void EvtVll::decay(EvtParticle *p){
+
+ p->initializePhaseSpace(getNDaug(),getDaugs());
+
+ EvtParticle *l1, *l2;
+ l1 = p->getDaug(0);
+ l2 = p->getDaug(1);
+
+ EvtVector4C l11, l12, l21, l22;
+ l11=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(0));
+ l12=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(1));
+ l21=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(0));
+ l22=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(1));
+
+ EvtVector4C eps0=p->eps(0);
+ EvtVector4C eps1=p->eps(1);
+ EvtVector4C eps2=p->eps(2);
+
+ double M2=p->mass();
+ M2*=M2;
+ double m2=l1->mass();
+ m2*=m2;
+
+ double norm=1.0/sqrt(2*M2+4*m2-4*m2*m2/M2);
+
+ vertex(0,0,0,norm*(eps0*l11));
+ vertex(0,0,1,norm*(eps0*l12));
+ vertex(0,1,0,norm*(eps0*l21));
+ vertex(0,1,1,norm*(eps0*l22));
+
+ vertex(1,0,0,norm*(eps1*l11));
+ vertex(1,0,1,norm*(eps1*l12));
+ vertex(1,1,0,norm*(eps1*l21));
+ vertex(1,1,1,norm*(eps1*l22));
+
+ vertex(2,0,0,norm*(eps2*l11));
+ vertex(2,0,1,norm*(eps2*l12));
+ vertex(2,1,0,norm*(eps2*l21));
+ vertex(2,1,1,norm*(eps2*l22));
+
+ return;
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
+