37 {
38
45
52
53
54
56 double q2 = (
q.mass2() );
57
58 double a1f, a2f, vf, a0f, a3f;
60
62 &a2f, &vf, &a0f );
63
64 double costhl_flag = 1.0;
65
66 if ( parent->
getId() == D0 || parent->
getId() == D0B || parent->
getId() == DP ||
67 parent->
getId() == DM )
68 { costhl_flag = -1.0; }
69 if ( parent->
getId() == DSP || parent->
getId() == DSM ) { costhl_flag = -1.0; }
70 vf = vf * costhl_flag;
71
72 EvtVector4R p4b;
73 p4b.
set( parent->
mass(), 0.0, 0.0, 0.0 );
74
76
77 EvtVector4C l1, l2;
78
81
82 a3f = ( (
m_b + m_meson ) / ( 2.0 * m_meson ) ) * a1f -
83 ( (
m_b - m_meson ) / ( 2.0 * m_meson ) ) * a2f;
84
85 EvtTensor4C tds;
86 if ( l_num == EM || l_num == MUM || l_num == TAUM )
87 {
88
90
91 tds.
addDirProd( ( -a2f / (
m_b + m_meson ) ) * p4b, p4b + p4meson );
92 tds += EvtComplex( 0.0, vf / (
m_b + m_meson ) ) *
94
95 tds.
addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b, p4b - p4meson );
96
101 }
102 else
103 {
104 if ( l_num == EP || l_num == MUP || l_num == TAUP )
105 {
107
108 tds.
addDirProd( ( -a2f / (
m_b + m_meson ) ) * p4b, p4b + p4meson );
109 tds -= EvtComplex( 0.0, vf / (
m_b + m_meson ) ) *
111
112 tds.
addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / q2 ) * p4b, p4b - p4meson );
113
118 }
119 else {
report(
ERROR,
"EvtGen" ) <<
"Wrong lepton number" << endl; }
120 }
121
125
128
131
134
135 return;
136}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
EvtTensor4C dual(const EvtTensor4C &t2)
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_b
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
void vertex(const EvtComplex &)
static EvtId getId(const std::string &name)
virtual EvtVector4C epsParent(int i) const
virtual EvtDiracSpinor spParentNeutrino() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
virtual void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
EvtVector4C cont1(const EvtVector4C &v4) const
static const EvtTensor4C & g()
EvtTensor4C & addDirProd(const EvtVector4R &p1, const EvtVector4R &p2)
EvtComplex cont(const EvtVector4C &v4) const
void set(int i, double d)