38 {
45
52
53
54
57 double q2 = (
q.mass2());
58
59 double hf,kf,bpf,bmf;
60
63 q2,
65 &hf,
66 &kf,
67 &bpf,
68 &bmf);
69
70
71 double costhl_flag = 1.0;
72
75 costhl_flag = -1.0;
76 }
77 if(parent->
getId()==DSP||parent->
getId()==DSM) {
78 costhl_flag = -1.0;
79 }
80 hf = hf * costhl_flag;
81
83 p4b.
set(parent->
mass(),0.0,0.0,0.0);
84
86
88
90
92
93 ep_meson_b[0] = ((parent->
getDaug(0)->epsTensorParent(0)).cont2(p4b)).
conj();
94 ep_meson_b[1] = ((parent->
getDaug(0)->epsTensorParent(1)).cont2(p4b)).
conj();
95 ep_meson_b[2] = ((parent->
getDaug(0)->epsTensorParent(2)).cont2(p4b)).
conj();
96 ep_meson_b[3] = ((parent->
getDaug(0)->epsTensorParent(3)).cont2(p4b)).
conj();
97 ep_meson_b[4] = ((parent->
getDaug(0)->epsTensorParent(4)).cont2(p4b)).
conj();
98
100
101 pp=p4b+p4meson;
102 pm=p4b-p4meson;
103
104
105 double q2max = p4b.
mass2() + p4meson.mass2() - 2.0*p4b.
mass()*p4meson.mass();
106 double q2maxin=1.0/q2max;
107
109
110 ep_meson_bb[0]=ep_meson_b[0]*(p4b);
111 ep_meson_bb[1]=ep_meson_b[1]*(p4b);
112 ep_meson_bb[2]=ep_meson_b[2]*(p4b);
113 ep_meson_bb[3]=ep_meson_b[3]*(p4b);
114 ep_meson_bb[4]=ep_meson_b[4]*(p4b);
115
116
118
120 if (l_num==EM||l_num==MUM||l_num==TAUM){
122 tds0=tdual.
cont2(ep_meson_b[0])
123 -kf*ep_meson_b[0]
124 -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
125 tds0*=q2maxin;
126
127 tds1=tdual.
cont2(ep_meson_b[1])
128 -kf*ep_meson_b[1]
129 -bpf*ep_meson_bb[1]*pp-bmf*ep_meson_bb[1]*pm;
130 tds1*=q2maxin;
131
132 tds2=tdual.
cont2(ep_meson_b[2])
133 -kf*ep_meson_b[2]
134 -bpf*ep_meson_bb[2]*pp-bmf*ep_meson_bb[2]*pm;
135 tds2*=q2maxin;
136
137 tds3=tdual.
cont2(ep_meson_b[3])
138 -kf*ep_meson_b[3]
139 -bpf*ep_meson_bb[3]*pp-bmf*ep_meson_bb[3]*pm;
140 tds3*=q2maxin;
141
142 tds4=tdual.
cont2(ep_meson_b[4])
143 -kf*ep_meson_b[4]
144 -bpf*ep_meson_bb[4]*pp-bmf*ep_meson_bb[4]*pm;
145 tds4*=q2maxin;
146
147
152 }
153 else{
154 if (l_num==EP||l_num==MUP||l_num==TAUP){
156 tds0=tdual.
cont2(ep_meson_b[0])
157 -kf*ep_meson_b[0]
158 -bpf*ep_meson_bb[0]*pp-bmf*ep_meson_bb[0]*pm;
159 tds0*=q2maxin;
160
161 tds1=tdual.
cont2(ep_meson_b[1])
162 -kf*ep_meson_b[1]
163 -bpf*ep_meson_bb[1]*pp-bmf*ep_meson_bb[1]*pm;
164 tds1*=q2maxin;
165
166 tds2=tdual.
cont2(ep_meson_b[2])
167 -kf*ep_meson_b[2]
168 -bpf*ep_meson_bb[2]*pp-bmf*ep_meson_bb[2]*pm;
169 tds2*=q2maxin;
170
171 tds3=tdual.
cont2(ep_meson_b[3])
172 -kf*ep_meson_b[3]
173 -bpf*ep_meson_bb[3]*pp-bmf*ep_meson_bb[3]*pm;
174 tds3*=q2maxin;
175
176 tds4=tdual.
cont2(ep_meson_b[4])
177 -kf*ep_meson_b[4]
178 -bpf*ep_meson_bb[4]*pp-bmf*ep_meson_bb[4]*pm;
179 tds4*=q2maxin;
180
185 }
186 else{
187 report(
ERROR,
"EvtGen") <<
"dfnb89agngri wrong lepton number\n";
188 }
189 }
190
193
196
199
202
205
206 return;
207
208}
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)