36 {
43
50
51
52
54 double q2 = (
q.mass2() );
55
56 double hf, kf, bpf, bmf;
57
59 parent->
getDaug( 0 )->
mass(), &hf, &kf, &bpf, &bmf );
60
61 double costhl_flag = 1.0;
62
63 if ( parent->
getId() == D0 || parent->
getId() == D0B || parent->
getId() == DP ||
64 parent->
getId() == DM )
65 { costhl_flag = -1.0; }
66 if ( parent->
getId() == DSP || parent->
getId() == DSM ) { costhl_flag = -1.0; }
67 hf = hf * costhl_flag;
68
69 EvtVector4R p4b;
70 p4b.
set( parent->
mass(), 0.0, 0.0, 0.0 );
71
73
74 EvtVector4C l1, l2;
75
77
78 EvtVector4C ep_meson_b[5];
79
80 ep_meson_b[0] = ( ( parent->
getDaug( 0 )->epsTensorParent( 0 ) ).cont2( p4b ) ).
conj();
81 ep_meson_b[1] = ( ( parent->
getDaug( 0 )->epsTensorParent( 1 ) ).cont2( p4b ) ).
conj();
82 ep_meson_b[2] = ( ( parent->
getDaug( 0 )->epsTensorParent( 2 ) ).cont2( p4b ) ).
conj();
83 ep_meson_b[3] = ( ( parent->
getDaug( 0 )->epsTensorParent( 3 ) ).cont2( p4b ) ).
conj();
84 ep_meson_b[4] = ( ( parent->
getDaug( 0 )->epsTensorParent( 4 ) ).cont2( p4b ) ).
conj();
85
86 EvtVector4R pp, pm;
87
88 pp = p4b + p4meson;
89 pm = p4b - p4meson;
90
91
92 double q2max = p4b.
mass2() + p4meson.mass2() - 2.0 * p4b.
mass() * p4meson.mass();
93 double q2maxin = 1.0 / q2max;
94
95 EvtComplex ep_meson_bb[5];
96
97 ep_meson_bb[0] = ep_meson_b[0] * ( p4b );
98 ep_meson_bb[1] = ep_meson_b[1] * ( p4b );
99 ep_meson_bb[2] = ep_meson_b[2] * ( p4b );
100 ep_meson_bb[3] = ep_meson_b[3] * ( p4b );
101 ep_meson_bb[4] = ep_meson_b[4] * ( p4b );
102
103 EvtVector4C tds0, tds1, tds2, tds3, tds4;
104
105 EvtTensor4C tds;
106 if ( l_num == EM || l_num == MUM || l_num == TAUM )
107 {
108 EvtTensor4C tdual = EvtComplex( 0.0, hf ) *
dual(
directProd( pp, pm ) );
109 tds0 = tdual.
cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] - bpf * ep_meson_bb[0] * pp -
110 bmf * ep_meson_bb[0] * pm;
111 tds0 *= q2maxin;
112
113 tds1 = tdual.
cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] - bpf * ep_meson_bb[1] * pp -
114 bmf * ep_meson_bb[1] * pm;
115 tds1 *= q2maxin;
116
117 tds2 = tdual.
cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] - bpf * ep_meson_bb[2] * pp -
118 bmf * ep_meson_bb[2] * pm;
119 tds2 *= q2maxin;
120
121 tds3 = tdual.
cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] - bpf * ep_meson_bb[3] * pp -
122 bmf * ep_meson_bb[3] * pm;
123 tds3 *= q2maxin;
124
125 tds4 = tdual.
cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] - bpf * ep_meson_bb[4] * pp -
126 bmf * ep_meson_bb[4] * pm;
127 tds4 *= q2maxin;
128
133 }
134 else
135 {
136 if ( l_num == EP || l_num == MUP || l_num == TAUP )
137 {
138 EvtTensor4C tdual = EvtComplex( 0.0, -hf ) *
dual(
directProd( pp, pm ) );
139 tds0 = tdual.
cont2( ep_meson_b[0] ) - kf * ep_meson_b[0] - bpf * ep_meson_bb[0] * pp -
140 bmf * ep_meson_bb[0] * pm;
141 tds0 *= q2maxin;
142
143 tds1 = tdual.
cont2( ep_meson_b[1] ) - kf * ep_meson_b[1] - bpf * ep_meson_bb[1] * pp -
144 bmf * ep_meson_bb[1] * pm;
145 tds1 *= q2maxin;
146
147 tds2 = tdual.
cont2( ep_meson_b[2] ) - kf * ep_meson_b[2] - bpf * ep_meson_bb[2] * pp -
148 bmf * ep_meson_bb[2] * pm;
149 tds2 *= q2maxin;
150
151 tds3 = tdual.
cont2( ep_meson_b[3] ) - kf * ep_meson_b[3] - bpf * ep_meson_bb[3] * pp -
152 bmf * ep_meson_bb[3] * pm;
153 tds3 *= q2maxin;
154
155 tds4 = tdual.
cont2( ep_meson_b[4] ) - kf * ep_meson_b[4] - bpf * ep_meson_bb[4] * pp -
156 bmf * ep_meson_bb[4] * pm;
157 tds4 *= q2maxin;
158
163 }
164 else {
report(
ERROR,
"EvtGen" ) <<
"dfnb89agngri wrong lepton number\n"; }
165 }
166
167 amp.
vertex( 0, 0, l1 * tds0 );
168 amp.
vertex( 0, 1, l2 * tds0 );
169
170 amp.
vertex( 1, 0, l1 * tds1 );
171 amp.
vertex( 1, 1, l2 * tds1 );
172
173 amp.
vertex( 2, 0, l1 * tds2 );
174 amp.
vertex( 2, 1, l2 * tds2 );
175
176 amp.
vertex( 3, 0, l1 * tds3 );
177 amp.
vertex( 3, 1, l2 * tds3 );
178
179 amp.
vertex( 4, 0, l1 * tds4 );
180 amp.
vertex( 4, 1, l2 * tds4 );
181
182 return;
183}
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)
****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 EvtDiracSpinor spParentNeutrino() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
virtual void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
EvtVector4C cont2(const EvtVector4C &v4) const
void set(int i, double d)