]>
Commit | Line | Data |
---|---|---|
0795afa3 | 1 | #include "isajet/pilot.h" |
2 | C ********************************************************************* | |
3 | C *** *** | |
4 | C *** coded by H. Murayama & I. Watanabe *** | |
5 | C *** For the formalism and notations, see the following reference: *** | |
6 | C *** H. Murayama, I. Watanabe and K. Hagiwara *** | |
7 | C *** "HELAS: HELicity Amplitude Subroutines *** | |
8 | C *** for Feynman diagram evaluation" *** | |
9 | C *** KEK Report 91-11, December 1991 *** | |
10 | C *** *** | |
11 | C ********************************************************************* | |
12 | C | |
13 | C Converted to double precision by W. Long and T. Seltzer for MadGraph. | |
14 | C | |
15 | C Minor changes for portability by FEP, July 1999. The code is not ANSI | |
16 | C standard, but that cannot be helped if MadGraph compatibility is to | |
17 | C be maintained. | |
18 | C | |
19 | C ====================================================================== | |
20 | C | |
21 | SUBROUTINE BOOSTX(P,Q , PBOOST) | |
22 | C | |
23 | C this subroutine performs the lorentz boost of a four-momentum. the | |
24 | C momentum p is assumed to be given in the rest frame of q. pboost is | |
25 | C the momentum p boosted to the frame in which q is given. q must be a | |
26 | C timelike momentum. | |
27 | C | |
28 | C input: | |
29 | C real p(0:3) : four-momentum p in the q rest frame | |
30 | C real q(0:3) : four-momentum q in the boosted frame | |
31 | C | |
32 | C output: | |
33 | C real pboost(0:3) : four-momentum p in the boosted frame | |
34 | C | |
35 | #if defined(CERNLIB_IMPNONE) | |
36 | IMPLICIT NONE | |
37 | #endif | |
38 | REAL*8 P(0:3),Q(0:3),PBOOST(0:3),PQ,QQ,M,LF | |
39 | REAL*8 RXZERO | |
40 | PARAMETER( RXZERO=0.0D0 ) | |
41 | C | |
42 | QQ=Q(1)**2+Q(2)**2+Q(3)**2 | |
43 | C | |
44 | IF ( QQ .NE. RXZERO ) THEN | |
45 | PQ=P(1)*Q(1)+P(2)*Q(2)+P(3)*Q(3) | |
46 | M=SQRT(Q(0)**2-QQ) | |
47 | LF=((Q(0)-M)*PQ/QQ+P(0))/M | |
48 | PBOOST(0) = (P(0)*Q(0)+PQ)/M | |
49 | PBOOST(1) = P(1)+Q(1)*LF | |
50 | PBOOST(2) = P(2)+Q(2)*LF | |
51 | PBOOST(3) = P(3)+Q(3)*LF | |
52 | ELSE | |
53 | PBOOST(0)=P(0) | |
54 | PBOOST(1)=P(1) | |
55 | PBOOST(2)=P(2) | |
56 | PBOOST(3)=P(3) | |
57 | ENDIF | |
58 | C | |
59 | RETURN | |
60 | END | |
61 | C | |
62 | C ********************************************************************** | |
63 | C | |
64 | SUBROUTINE COUP1X(SW2 , GW,GWWA,GWWZ) | |
65 | C | |
66 | C this subroutine sets up the coupling constants of the gauge bosons in | |
67 | C the standard model. | |
68 | C | |
69 | C input: | |
70 | C real sw2 : square of sine of the weak angle | |
71 | C | |
72 | C output: | |
73 | C real gw : weak coupling constant | |
74 | C real gwwa : dimensionless coupling of w-,w+,a | |
75 | C real gwwz : dimensionless coupling of w-,w+,z | |
76 | C | |
77 | #if defined(CERNLIB_IMPNONE) | |
78 | IMPLICIT NONE | |
79 | #endif | |
80 | REAL*8 SW2,GW,GWWA,GWWZ,ALPHA,FOURPI,EE,SW,CW | |
81 | REAL*8 RXONE, RXFOUR, RXOTE, RXPI, RIALPH | |
82 | PARAMETER( RXONE=1.0D0, RXFOUR=4.0D0, RXOTE=128.0D0 ) | |
83 | PARAMETER( RXPI=3.14159265358979323846D0, RIALPH=137.0359895D0 ) | |
84 | C | |
85 | ALPHA = RXONE / RXOTE | |
86 | C alpha = r_one / r_ialph | |
87 | FOURPI = RXFOUR * RXPI | |
88 | EE=SQRT( ALPHA * FOURPI ) | |
89 | SW=SQRT( SW2 ) | |
90 | CW=SQRT( RXONE - SW2 ) | |
91 | C | |
92 | GW = EE/SW | |
93 | GWWA = EE | |
94 | GWWZ = EE*CW/SW | |
95 | C | |
96 | RETURN | |
97 | END | |
98 | C | |
99 | C ---------------------------------------------------------------------- | |
100 | C | |
101 | SUBROUTINE COUP2X(SW2 , GAL,GAU,GAD,GWF,GZN,GZL,GZU,GZD,G1) | |
102 | C | |
103 | C this subroutine sets up the coupling constants for the fermion- | |
104 | C fermion-vector vertices in the standard model. the array of the | |
105 | C couplings specifies the chirality of the flowing-in fermion. g??(1) | |
106 | C denotes a left-handed coupling, and g??(2) a right-handed coupling. | |
107 | C | |
108 | C input: | |
109 | C real sw2 : square of sine of the weak angle | |
110 | C | |
111 | C output: | |
112 | C real gal(2) : coupling with a of charged leptons | |
113 | C real gau(2) : coupling with a of up-type quarks | |
114 | C real gad(2) : coupling with a of down-type quarks | |
115 | C real gwf(2) : coupling with w-,w+ of fermions | |
116 | C real gzn(2) : coupling with z of neutrinos | |
117 | C real gzl(2) : coupling with z of charged leptons | |
118 | C real gzu(2) : coupling with z of up-type quarks | |
119 | C real gzd(2) : coupling with z of down-type quarks | |
120 | C real g1(2) : unit coupling of fermions | |
121 | C | |
122 | #if defined(CERNLIB_IMPNONE) | |
123 | IMPLICIT NONE | |
124 | #endif | |
125 | REAL*8 GAL(2),GAU(2),GAD(2),GWF(2),GZN(2),GZL(2),GZU(2),GZD(2), | |
126 | & G1(2),SW2,ALPHA,FOURPI,EE,SW,CW,EZ,EY | |
127 | C | |
128 | REAL*8 RXZERO, RXHALF, RXONE, RXTWO, RTHREE, RXFOUR, RXOTE | |
129 | REAL*8 RXPI, RIALPH | |
130 | PARAMETER( RXZERO=0.0D0, RXHALF=0.5D0, RXONE=1.0D0, RXTWO=2.0D0, | |
131 | $ RTHREE=3.0D0 ) | |
132 | PARAMETER( RXFOUR=4.0D0, RXOTE=128.0D0 ) | |
133 | PARAMETER( RXPI=3.14159265358979323846D0, RIALPH=137.0359895D0 ) | |
134 | C | |
135 | ALPHA = RXONE / RXOTE | |
136 | C alpha = r_one / r_ialph | |
137 | FOURPI = RXFOUR * RXPI | |
138 | EE=SQRT( ALPHA * FOURPI ) | |
139 | SW=SQRT( SW2 ) | |
140 | CW=SQRT( RXONE - SW2 ) | |
141 | EZ=EE/(SW*CW) | |
142 | EY=EE*(SW/CW) | |
143 | C | |
144 | GAL(1) = EE | |
145 | GAL(2) = EE | |
146 | GAU(1) = -EE*RXTWO/RTHREE | |
147 | GAU(2) = -EE*RXTWO/RTHREE | |
148 | GAD(1) = EE /RTHREE | |
149 | GAD(2) = EE /RTHREE | |
150 | GWF(1) = -EE/SQRT(RXTWO*SW2) | |
151 | GWF(2) = RXZERO | |
152 | GZN(1) = -EZ* RXHALF | |
153 | GZN(2) = RXZERO | |
154 | GZL(1) = -EZ*(-RXHALF+SW2) | |
155 | GZL(2) = -EY | |
156 | GZU(1) = -EZ*( RXHALF-SW2*RXTWO/RTHREE) | |
157 | GZU(2) = EY* RXTWO/RTHREE | |
158 | GZD(1) = -EZ*(-RXHALF+SW2 /RTHREE) | |
159 | GZD(2) = -EY /RTHREE | |
160 | G1(1) = RXONE | |
161 | G1(2) = RXONE | |
162 | C | |
163 | RETURN | |
164 | END | |
165 | C | |
166 | C ---------------------------------------------------------------------- | |
167 | C | |
168 | SUBROUTINE COUP3X(SW2,ZMASS,HMASS , | |
169 | & GWWH,GZZH,GHHH,GWWHH,GZZHH,GHHHH) | |
170 | C | |
171 | C this subroutine sets up the coupling constants of the gauge bosons and | |
172 | C higgs boson in the standard model. | |
173 | C | |
174 | C input: | |
175 | C real sw2 : square of sine of the weak angle | |
176 | C real zmass : mass of z | |
177 | C real hmass : mass of higgs | |
178 | C | |
179 | C output: | |
180 | C real gwwh : dimensionful coupling of w-,w+,h | |
181 | C real gzzh : dimensionful coupling of z, z, h | |
182 | C real ghhh : dimensionful coupling of h, h, h | |
183 | C real gwwhh : dimensionful coupling of w-,w+,h, h | |
184 | C real gzzhh : dimensionful coupling of z, z, h, h | |
185 | C real ghhhh : dimensionless coupling of h, h, h, h | |
186 | C | |
187 | #if defined(CERNLIB_IMPNONE) | |
188 | IMPLICIT NONE | |
189 | #endif | |
190 | REAL*8 SW2,ZMASS,HMASS,GWWH,GZZH,GHHH,GWWHH,GZZHH,GHHHH, | |
191 | & ALPHA,FOURPI,EE2,SC2,V | |
192 | C | |
193 | REAL*8 RXHALF, RXONE, RXTWO, RTHREE, RXFOUR, RXOTE | |
194 | REAL*8 RXPI, RIALPH | |
195 | PARAMETER( RXHALF=0.5D0, RXONE=1.0D0, RXTWO=2.0D0, RTHREE=3.0D0 ) | |
196 | PARAMETER( RXFOUR=4.0D0, RXOTE=128.0D0 ) | |
197 | PARAMETER( RXPI=3.14159265358979323846D0, RIALPH=137.0359895D0 ) | |
198 | C | |
199 | ALPHA = RXONE / RXOTE | |
200 | C alpha = r_one / r_ialph | |
201 | FOURPI = RXFOUR * RXPI | |
202 | EE2=ALPHA*FOURPI | |
203 | SC2=SW2*( RXONE - SW2 ) | |
204 | V = RXTWO * ZMASS*SQRT(SC2)/SQRT(EE2) | |
205 | C | |
206 | GWWH = EE2/SW2*RXHALF*V | |
207 | GZZH = EE2/SC2*RXHALF*V | |
208 | GHHH = -HMASS**2/V*RTHREE | |
209 | GWWHH = EE2/SW2*RXHALF | |
210 | GZZHH = EE2/SC2*RXHALF | |
211 | GHHHH = -(HMASS/V)**2*RTHREE | |
212 | C | |
213 | RETURN | |
214 | END | |
215 | C | |
216 | C ---------------------------------------------------------------------- | |
217 | C | |
218 | SUBROUTINE COUP4X(SW2,ZMASS,FMASS , GCHF) | |
219 | C | |
220 | C This subroutine sets up the coupling constant for the fermion-fermion- | |
221 | C Higgs vertex in the STANDARD MODEL. The coupling is COMPLEX and the | |
222 | C array of the coupling specifies the chirality of the flowing-IN | |
223 | C fermion. GCHF(1) denotes a left-handed coupling, and GCHF(2) a right- | |
224 | C handed coupling. | |
225 | C | |
226 | C INPUT: | |
227 | C real SW2 : square of sine of the weak angle | |
228 | C real ZMASS : Z mass | |
229 | C real FMASS : fermion mass | |
230 | C | |
231 | C OUTPUT: | |
232 | C complex GCHF(2) : coupling of fermion and Higgs | |
233 | C | |
234 | #if defined(CERNLIB_IMPNONE) | |
235 | IMPLICIT NONE | |
236 | #endif | |
237 | COMPLEX*16 GCHF(2) | |
238 | REAL*8 SW2,ZMASS,FMASS,ALPHA,FOURPI,EZ,G | |
239 | C | |
240 | ALPHA=1.D0/128.D0 | |
241 | C ALPHA=1./REAL(137.0359895) | |
242 | FOURPI=4.D0*3.14159265358979323846D0 | |
243 | EZ=SQRT(ALPHA*FOURPI)/SQRT(SW2*(1.D0-SW2)) | |
244 | G=EZ*FMASS*0.5D0/ZMASS | |
245 | C | |
246 | GCHF(1) = DCMPLX( -G ) | |
247 | GCHF(2) = DCMPLX( -G ) | |
248 | C | |
249 | RETURN | |
250 | END | |
251 | C | |
252 | C ====================================================================== | |
253 | C | |
254 | SUBROUTINE EAIXXX(EB,EA,SHLF,CHLF,PHI,NHE,NHA , EAI) | |
255 | C | |
256 | C This subroutine computes an off-shell electron wavefunction after | |
257 | C emitting a photon from the electron beam, with a special care for the | |
258 | C small angle region. The momenta are measured in the laboratory frame, | |
259 | C where the e- beam is along the positive z axis. | |
260 | C | |
261 | C INPUT: | |
262 | C real EB : energy (GeV) of beam e- | |
263 | C real EA : energy (GeV) of final photon | |
264 | C real SHLF : sin(theta/2) of final photon | |
265 | C real CHLF : cos(theta/2) of final photon | |
266 | C real PHI : azimuthal angle of final photon | |
267 | C integer NHE = -1 or 1 : helicity of beam e- | |
268 | C integer NHA = -1 or 1 : helicity of final photon | |
269 | C | |
270 | C OUTPUT: | |
271 | C complex EAI(6) : off-shell electron |e',A,e> | |
272 | C | |
273 | #if defined(CERNLIB_IMPNONE) | |
274 | IMPLICIT NONE | |
275 | #endif | |
276 | COMPLEX*16 EAI(6),PHS | |
277 | REAL*8 EB,EA,SHLF,CHLF,PHI,ME,ALPHA,GAL,RNHE,X,C,S,D,COEFF, | |
278 | & XNNP,XNNM,SNP,CSP | |
279 | INTEGER NHE,NHA,NN | |
280 | C | |
281 | ME = 0.51099906D-3 | |
282 | ALPHA=1./128. | |
283 | GAL =SQRT(ALPHA*4.*3.14159265D0) | |
284 | C | |
285 | NN=NHA*NHE | |
286 | RNHE=NHE | |
287 | X=EA/EB | |
288 | C=(CHLF+SHLF)*(CHLF-SHLF) | |
289 | S=2.*CHLF*SHLF | |
290 | D=-1./(EA*EB*(4.*SHLF**2+(ME/EB)**2*C)) | |
291 | COEFF=-NN*GAL*SQRT(EB)*D | |
292 | XNNP=X*(1+NN) | |
293 | XNNM=X*(1-NN) | |
294 | SNP=SIN(PHI) | |
295 | CSP=COS(PHI) | |
296 | PHS=DCMPLX( CSP , RNHE*SNP ) | |
297 | C | |
298 | EAI((5-3*NHE)/2) = -RNHE*COEFF*ME*S*(1.+XNNP*.5) | |
299 | EAI((5-NHE)/2) = XNNP*COEFF*ME*CHLF**2*PHS | |
300 | EAI((5+NHE)/2) = RNHE*COEFF*EB*S*(-2.+XNNM) | |
301 | EAI((5+3*NHE)/2) = XNNM*COEFF*EB*SHLF**2*PHS*2. | |
302 | C | |
303 | EAI(5) = EB*DCMPLX( 1.-X , 1.-X*C ) | |
304 | EAI(6) = -EB*X*S*DCMPLX( CSP , SNP ) | |
305 | C | |
306 | RETURN | |
307 | END | |
308 | C | |
309 | C ---------------------------------------------------------------------- | |
310 | C | |
311 | SUBROUTINE EAOXXX(EB,EA,SHLF,CHLF,PHI,NHE,NHA , EAO) | |
312 | C | |
313 | C This subroutine computes an off-shell positron wavefunction after | |
314 | C emitting a photon from the positron beam, with a special care for the | |
315 | C small angle region. The momenta are measured in the laboratory frame, | |
316 | C where the e+ beam is along the negative z axis. | |
317 | C | |
318 | C INPUT: | |
319 | C real EB : energy (GeV) of beam e+ | |
320 | C real EA : energy (GeV) of final photon | |
321 | C real SHLF : sin(theta/2) of final photon | |
322 | C real CHLF : cos(theta/2) of final photon | |
323 | C real PHI : azimuthal angle of final photon | |
324 | C integer NHE = -1 or 1 : helicity of beam e+ | |
325 | C integer NHA = -1 or 1 : helicity of final photon | |
326 | C | |
327 | C OUTPUT: | |
328 | C complex EAO(6) : off-shell positron <e,A,e'| | |
329 | C | |
330 | #if defined(CERNLIB_IMPNONE) | |
331 | IMPLICIT NONE | |
332 | #endif | |
333 | COMPLEX*16 EAO(6),PHS | |
334 | REAL*8 EB,EA,SHLF,CHLF,PHI,ME,ALPHA,GAL,RNHE,X,C,S,D,COEFF, | |
335 | & XNNP,XNNM,SNP,CSP | |
336 | INTEGER NHE,NHA,NN | |
337 | C | |
338 | ME = 0.51099906D-3 | |
339 | ALPHA=1./128. | |
340 | GAL =SQRT(ALPHA*4.*3.14159265D0) | |
341 | C | |
342 | NN=NHA*NHE | |
343 | RNHE=NHE | |
344 | X=EA/EB | |
345 | C=(CHLF+SHLF)*(CHLF-SHLF) | |
346 | S=2.*CHLF*SHLF | |
347 | D=-1./(EA*EB*(4.*CHLF**2-(ME/EB)**2*C)) | |
348 | COEFF=NN*GAL*SQRT(EB)*D | |
349 | XNNP=X*(1+NN) | |
350 | XNNM=X*(1-NN) | |
351 | SNP=SIN(PHI) | |
352 | CSP=COS(PHI) | |
353 | PHS=DCMPLX( CSP ,-RNHE*SNP ) | |
354 | C | |
355 | EAO((5-3*NHE)/2) = COEFF*ME*S*(1.+XNNP*.5) | |
356 | EAO((5-NHE)/2) = RNHE*XNNP *COEFF*ME*SHLF**2*PHS | |
357 | EAO((5+NHE)/2) = COEFF*EB*S*(-2.+XNNM) | |
358 | EAO((5+3*NHE)/2) = REAL(NHA-NHE)*COEFF*EB*X*CHLF**2*PHS*2. | |
359 | C | |
360 | EAO(5) = EB*DCMPLX( X-1. , X*C+1. ) | |
361 | EAO(6) = EB*X*S*DCMPLX( CSP , SNP ) | |
362 | C | |
363 | RETURN | |
364 | END | |
365 | C | |
366 | C ---------------------------------------------------------------------- | |
367 | C | |
368 | SUBROUTINE FSIXXX(FI,SC,GC,FMASS,FWIDTH , FSI) | |
369 | C | |
370 | C this subroutine computes an off-shell fermion wavefunction from a | |
371 | C flowing-in external fermion and a vector boson. | |
372 | C | |
373 | C input: | |
374 | C complex*16 fi(6) : flow-in fermion |fi> | |
375 | C complex*16 sc(3) : input scalar s | |
376 | C complex*16 gc(2) : coupling constants gchf | |
377 | C real*8 fmass : mass of output fermion f' | |
378 | C real*8 fwidth : width of output fermion f' | |
379 | C | |
380 | C output: | |
381 | C complex fsi(6) : off-shell fermion |f',s,fi> | |
382 | C | |
383 | #if defined(CERNLIB_IMPNONE) | |
384 | IMPLICIT NONE | |
385 | #endif | |
386 | COMPLEX*16 FI(6),SC(3),FSI(6),GC(2),SL1,SL2,SR1,SR2,DS | |
387 | REAL*8 PF(0:3),FMASS,FWIDTH,PF2,P0P3,P0M3 | |
388 | C | |
389 | FSI(5) = FI(5)-SC(2) | |
390 | FSI(6) = FI(6)-SC(3) | |
391 | C | |
392 | PF(0)=DBLE( FSI(5)) | |
393 | PF(1)=DBLE( FSI(6)) | |
394 | PF(2)=DIMAG(FSI(6)) | |
395 | PF(3)=DIMAG(FSI(5)) | |
396 | PF2=PF(0)**2-(PF(1)**2+PF(2)**2+PF(3)**2) | |
397 | C | |
398 | DS=-SC(1)/DCMPLX(PF2-FMASS**2,MAX(DSIGN(FMASS*FWIDTH ,PF2),0D0)) | |
399 | P0P3=PF(0)+PF(3) | |
400 | P0M3=PF(0)-PF(3) | |
401 | SL1=GC(1)*(P0P3*FI(1)+DCONJG(FSI(6))*FI(2)) | |
402 | SL2=GC(1)*(P0M3*FI(2) +FSI(6) *FI(1)) | |
403 | SR1=GC(2)*(P0M3*FI(3)-DCONJG(FSI(6))*FI(4)) | |
404 | SR2=GC(2)*(P0P3*FI(4) -FSI(6) *FI(3)) | |
405 | C | |
406 | FSI(1) = ( GC(1)*FMASS*FI(1) + SR1 )*DS | |
407 | FSI(2) = ( GC(1)*FMASS*FI(2) + SR2 )*DS | |
408 | FSI(3) = ( GC(2)*FMASS*FI(3) + SL1 )*DS | |
409 | FSI(4) = ( GC(2)*FMASS*FI(4) + SL2 )*DS | |
410 | C | |
411 | RETURN | |
412 | END | |
413 | C | |
414 | C ---------------------------------------------------------------------- | |
415 | C | |
416 | SUBROUTINE FSOXXX(FO,SC,GC,FMASS,FWIDTH , FSO) | |
417 | C | |
418 | C this subroutine computes an off-shell fermion wavefunction from a | |
419 | C flowing-out external fermion and a vector boson. | |
420 | C | |
421 | C input: | |
422 | C complex*16 fo(6) : flow-out fermion <fo| | |
423 | C complex*16 sc(6) : input scalar s | |
424 | C complex*16 gc(2) : coupling constants gchf | |
425 | C real*8 fmass : mass of output fermion f' | |
426 | C real*8 fwidth : width of output fermion f' | |
427 | C | |
428 | C output: | |
429 | C complex fso(6) : off-shell fermion <fo,s,f'| | |
430 | C | |
431 | #if defined(CERNLIB_IMPNONE) | |
432 | IMPLICIT NONE | |
433 | #endif | |
434 | COMPLEX*16 FO(6),SC(6),FSO(6),GC(2),SL1,SL2,SR1,SR2,DS | |
435 | REAL*8 PF(0:3),FMASS,FWIDTH,PF2,P0P3,P0M3 | |
436 | C | |
437 | FSO(5) = FO(5)+SC(2) | |
438 | FSO(6) = FO(6)+SC(3) | |
439 | C | |
440 | PF(0)=DBLE( FSO(5)) | |
441 | PF(1)=DBLE( FSO(6)) | |
442 | PF(2)=DIMAG(FSO(6)) | |
443 | PF(3)=DIMAG(FSO(5)) | |
444 | PF2=PF(0)**2-(PF(1)**2+PF(2)**2+PF(3)**2) | |
445 | C | |
446 | DS=-SC(1)/DCMPLX(PF2-FMASS**2,MAX(DSIGN(FMASS*FWIDTH ,PF2),0D0)) | |
447 | P0P3=PF(0)+PF(3) | |
448 | P0M3=PF(0)-PF(3) | |
449 | SL1=GC(2)*(P0P3*FO(3) +FSO(6) *FO(4)) | |
450 | SL2=GC(2)*(P0M3*FO(4)+DCONJG(FSO(6))*FO(3)) | |
451 | SR1=GC(1)*(P0M3*FO(1) -FSO(6) *FO(2)) | |
452 | SR2=GC(1)*(P0P3*FO(2)-DCONJG(FSO(6))*FO(1)) | |
453 | C | |
454 | FSO(1) = ( GC(1)*FMASS*FO(1) + SL1 )*DS | |
455 | FSO(2) = ( GC(1)*FMASS*FO(2) + SL2 )*DS | |
456 | FSO(3) = ( GC(2)*FMASS*FO(3) + SR1 )*DS | |
457 | FSO(4) = ( GC(2)*FMASS*FO(4) + SR2 )*DS | |
458 | C | |
459 | RETURN | |
460 | END | |
461 | C | |
462 | C ---------------------------------------------------------------------- | |
463 | C | |
464 | SUBROUTINE FVIXXX(FI,VC,G,FMASS,FWIDTH , FVI) | |
465 | C | |
466 | C this subroutine computes an off-shell fermion wavefunction from a | |
467 | C flowing-in external fermion and a vector boson. | |
468 | C | |
469 | C input: | |
470 | C complex fi(6) : flow-in fermion |fi> | |
471 | C complex vc(6) : input vector v | |
472 | C real g(2) : coupling constants gvf | |
473 | C real fmass : mass of output fermion f' | |
474 | C real fwidth : width of output fermion f' | |
475 | C | |
476 | C output: | |
477 | C complex fvi(6) : off-shell fermion |f',v,fi> | |
478 | C | |
479 | #if defined(CERNLIB_IMPNONE) | |
480 | IMPLICIT NONE | |
481 | #endif | |
482 | COMPLEX*16 FI(6),VC(6),FVI(6),SL1,SL2,SR1,SR2,D | |
483 | REAL*8 G(2),PF(0:3),FMASS,FWIDTH,PF2 | |
484 | REAL*8 RXZERO, RXONE | |
485 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
486 | COMPLEX*16 CXIMAG | |
487 | C | |
488 | LOGICAL FIRST | |
489 | SAVE CXIMAG,FIRST | |
490 | DATA FIRST/.TRUE./ | |
491 | C | |
492 | C Fix compilation with g77 | |
493 | IF(FIRST) THEN | |
494 | FIRST=.FALSE. | |
495 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
496 | ENDIF | |
497 | C | |
498 | FVI(5) = FI(5)-VC(5) | |
499 | FVI(6) = FI(6)-VC(6) | |
500 | C | |
501 | PF(0)=DBLE( FVI(5)) | |
502 | PF(1)=DBLE( FVI(6)) | |
503 | PF(2)=DIMAG(FVI(6)) | |
504 | PF(3)=DIMAG(FVI(5)) | |
505 | PF2=PF(0)**2-(PF(1)**2+PF(2)**2+PF(3)**2) | |
506 | C | |
507 | D=-RXONE/DCMPLX( PF2-FMASS**2,MAX(SIGN(FMASS*FWIDTH,PF2),RXZERO)) | |
508 | SL1= (VC(1)+ VC(4))*FI(1) | |
509 | & +(VC(2)-CXIMAG*VC(3))*FI(2) | |
510 | SL2= (VC(2)+CXIMAG*VC(3))*FI(1) | |
511 | & +(VC(1)- VC(4))*FI(2) | |
512 | C | |
513 | IF ( G(2) .NE. RXZERO ) THEN | |
514 | SR1= (VC(1)- VC(4))*FI(3) | |
515 | & -(VC(2)-CXIMAG*VC(3))*FI(4) | |
516 | SR2=-(VC(2)+CXIMAG*VC(3))*FI(3) | |
517 | & +(VC(1)+ VC(4))*FI(4) | |
518 | C | |
519 | FVI(1) = ( G(1)*((PF(0)-PF(3))*SL1 -DCONJG(FVI(6))*SL2) | |
520 | & +G(2)*FMASS*SR1)*D | |
521 | FVI(2) = ( G(1)*( -FVI(6)*SL1 +(PF(0)+PF(3))*SL2) | |
522 | & +G(2)*FMASS*SR2)*D | |
523 | FVI(3) = ( G(2)*((PF(0)+PF(3))*SR1 +DCONJG(FVI(6))*SR2) | |
524 | & +G(1)*FMASS*SL1)*D | |
525 | FVI(4) = ( G(2)*( FVI(6)*SR1 +(PF(0)-PF(3))*SR2) | |
526 | & +G(1)*FMASS*SL2)*D | |
527 | C | |
528 | ELSE | |
529 | FVI(1) = G(1)*((PF(0)-PF(3))*SL1 -DCONJG(FVI(6))*SL2)*D | |
530 | FVI(2) = G(1)*( -FVI(6)*SL1 +(PF(0)+PF(3))*SL2)*D | |
531 | FVI(3) = G(1)*FMASS*SL1*D | |
532 | FVI(4) = G(1)*FMASS*SL2*D | |
533 | END IF | |
534 | C | |
535 | RETURN | |
536 | END | |
537 | C | |
538 | C ---------------------------------------------------------------------- | |
539 | C | |
540 | SUBROUTINE FVOXXX(FO,VC,G,FMASS,FWIDTH , FVO) | |
541 | C | |
542 | C this subroutine computes an off-shell fermion wavefunction from a | |
543 | C flowing-out external fermion and a vector boson. | |
544 | C | |
545 | C input: | |
546 | C complex fo(6) : flow-out fermion <fo| | |
547 | C complex vc(6) : input vector v | |
548 | C real g(2) : coupling constants gvf | |
549 | C real fmass : mass of output fermion f' | |
550 | C real fwidth : width of output fermion f' | |
551 | C | |
552 | C output: | |
553 | C complex fvo(6) : off-shell fermion <fo,v,f'| | |
554 | C | |
555 | #if defined(CERNLIB_IMPNONE) | |
556 | IMPLICIT NONE | |
557 | #endif | |
558 | COMPLEX*16 FO(6),VC(6),FVO(6),SL1,SL2,SR1,SR2,D | |
559 | REAL*8 G(2),PF(0:3),FMASS,FWIDTH,PF2 | |
560 | REAL*8 RXZERO, RXONE | |
561 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
562 | COMPLEX*16 CXIMAG | |
563 | LOGICAL FIRST | |
564 | SAVE CXIMAG,FIRST | |
565 | DATA FIRST/.TRUE./ | |
566 | C | |
567 | C Fix compilation with g77 | |
568 | IF(FIRST) THEN | |
569 | FIRST=.FALSE. | |
570 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
571 | ENDIF | |
572 | C | |
573 | FVO(5) = FO(5)+VC(5) | |
574 | FVO(6) = FO(6)+VC(6) | |
575 | C | |
576 | PF(0)=DBLE( FVO(5)) | |
577 | PF(1)=DBLE( FVO(6)) | |
578 | PF(2)=DIMAG(FVO(6)) | |
579 | PF(3)=DIMAG(FVO(5)) | |
580 | PF2=PF(0)**2-(PF(1)**2+PF(2)**2+PF(3)**2) | |
581 | C | |
582 | D=-RXONE/DCMPLX( PF2-FMASS**2,MAX(SIGN(FMASS*FWIDTH,PF2),RXZERO)) | |
583 | SL1= (VC(1)+ VC(4))*FO(3) | |
584 | & +(VC(2)+CXIMAG*VC(3))*FO(4) | |
585 | SL2= (VC(2)-CXIMAG*VC(3))*FO(3) | |
586 | & +(VC(1)- VC(4))*FO(4) | |
587 | C | |
588 | IF ( G(2) .NE. RXZERO ) THEN | |
589 | SR1= (VC(1)- VC(4))*FO(1) | |
590 | & -(VC(2)+CXIMAG*VC(3))*FO(2) | |
591 | SR2=-(VC(2)-CXIMAG*VC(3))*FO(1) | |
592 | & +(VC(1)+ VC(4))*FO(2) | |
593 | C | |
594 | FVO(1) = ( G(2)*( (PF(0)+PF(3))*SR1 +FVO(6)*SR2) | |
595 | & +G(1)*FMASS*SL1)*D | |
596 | FVO(2) = ( G(2)*( DCONJG(FVO(6))*SR1 +(PF(0)-PF(3))*SR2) | |
597 | & +G(1)*FMASS*SL2)*D | |
598 | FVO(3) = ( G(1)*( (PF(0)-PF(3))*SL1 -FVO(6)*SL2) | |
599 | & +G(2)*FMASS*SR1)*D | |
600 | FVO(4) = ( G(1)*(-DCONJG(FVO(6))*SL1 +(PF(0)+PF(3))*SL2) | |
601 | & +G(2)*FMASS*SR2)*D | |
602 | C | |
603 | ELSE | |
604 | FVO(1) = G(1)*FMASS*SL1*D | |
605 | FVO(2) = G(1)*FMASS*SL2*D | |
606 | FVO(3) = G(1)*( (PF(0)-PF(3))*SL1 -FVO(6)*SL2)*D | |
607 | FVO(4) = G(1)*(-DCONJG(FVO(6))*SL1 +(PF(0)+PF(3))*SL2)*D | |
608 | END IF | |
609 | C | |
610 | RETURN | |
611 | END | |
612 | C | |
613 | C ---------------------------------------------------------------------- | |
614 | C | |
615 | SUBROUTINE GGGGXX(WM,W31,WP,W32,G, VERTEX) | |
616 | C | |
617 | C this subroutine computes an amplitude of the four-point coupling of | |
618 | C the w-, w+ and two w3/z/a. the amplitude includes the contributions | |
619 | C of w exchange diagrams. the internal w propagator is given in unitary | |
620 | C gauge. if one sets wmass=0.0, then the gggg vertex is given (see sect | |
621 | C 2.9.1 of the manual). | |
622 | C | |
623 | C input: | |
624 | C complex wm(0:3) : flow-out w- wm | |
625 | C complex w31(0:3) : first w3/z/a w31 | |
626 | C complex wp(0:3) : flow-out w+ wp | |
627 | C complex w32(0:3) : second w3/z/a w32 | |
628 | C real g : coupling of w31 with w-/w+ | |
629 | C (see the table below) | |
630 | C | |
631 | C the possible sets of the inputs are as follows: | |
632 | C ------------------------------------------- | |
633 | C | wm | w31 | wp | w32 | g31 | g32 | | |
634 | C ------------------------------------------- | |
635 | C | w- | w3 | w+ | w3 | gw | gw | | |
636 | C | w- | w3 | w+ | z | gw | gwwz | | |
637 | C | w- | w3 | w+ | a | gw | gwwa | | |
638 | C | w- | z | w+ | z | gwwz | gwwz | | |
639 | C | w- | z | w+ | a | gwwz | gwwa | | |
640 | C | w- | a | w+ | a | gwwa | gwwa | | |
641 | C ------------------------------------------- | |
642 | C where all the bosons are defined by the flowing-out quantum number. | |
643 | C | |
644 | C output: | |
645 | C complex vertex : amplitude gamma(wm,w31,wp,w32) | |
646 | C | |
647 | #if defined(CERNLIB_IMPNONE) | |
648 | IMPLICIT NONE | |
649 | #endif | |
650 | COMPLEX*16 WM(6),W31(6),WP(6),W32(6),VERTEX | |
651 | COMPLEX*16 DV1(0:3),DV2(0:3),DV3(0:3),DV4(0:3), | |
652 | & DVERTX,V12,V13,V14,V23,V24,V34 | |
653 | REAL*8 PWM(0:3),PW31(0:3),PWP(0:3),PW32(0:3),G | |
654 | REAL*8 DP1(0:3),DP2(0:3),DP3(0:3),DP4(0:3) | |
655 | REAL*8 RXZERO, RXONE | |
656 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
657 | C | |
658 | PWM(0)=DBLE( WM(5)) | |
659 | PWM(1)=DBLE( WM(6)) | |
660 | PWM(2)=DIMAG(WM(6)) | |
661 | PWM(3)=DIMAG(WM(5)) | |
662 | PWP(0)=DBLE( WP(5)) | |
663 | PWP(1)=DBLE( WP(6)) | |
664 | PWP(2)=DIMAG(WP(6)) | |
665 | PWP(3)=DIMAG(WP(5)) | |
666 | PW31(0)=DBLE( W31(5)) | |
667 | PW31(1)=DBLE( W31(6)) | |
668 | PW31(2)=DIMAG(W31(6)) | |
669 | PW31(3)=DIMAG(W31(5)) | |
670 | PW32(0)=DBLE( W32(5)) | |
671 | PW32(1)=DBLE( W32(6)) | |
672 | PW32(2)=DIMAG(W32(6)) | |
673 | PW32(3)=DIMAG(W32(5)) | |
674 | C | |
675 | DV1(0)=DCMPLX(WM(1)) | |
676 | DV1(1)=DCMPLX(WM(2)) | |
677 | DV1(2)=DCMPLX(WM(3)) | |
678 | DV1(3)=DCMPLX(WM(4)) | |
679 | DP1(0)=DBLE(PWM(0)) | |
680 | DP1(1)=DBLE(PWM(1)) | |
681 | DP1(2)=DBLE(PWM(2)) | |
682 | DP1(3)=DBLE(PWM(3)) | |
683 | DV2(0)=DCMPLX(W31(1)) | |
684 | DV2(1)=DCMPLX(W31(2)) | |
685 | DV2(2)=DCMPLX(W31(3)) | |
686 | DV2(3)=DCMPLX(W31(4)) | |
687 | DP2(0)=DBLE(PW31(0)) | |
688 | DP2(1)=DBLE(PW31(1)) | |
689 | DP2(2)=DBLE(PW31(2)) | |
690 | DP2(3)=DBLE(PW31(3)) | |
691 | DV3(0)=DCMPLX(WP(1)) | |
692 | DV3(1)=DCMPLX(WP(2)) | |
693 | DV3(2)=DCMPLX(WP(3)) | |
694 | DV3(3)=DCMPLX(WP(4)) | |
695 | DP3(0)=DBLE(PWP(0)) | |
696 | DP3(1)=DBLE(PWP(1)) | |
697 | DP3(2)=DBLE(PWP(2)) | |
698 | DP3(3)=DBLE(PWP(3)) | |
699 | DV4(0)=DCMPLX(W32(1)) | |
700 | DV4(1)=DCMPLX(W32(2)) | |
701 | DV4(2)=DCMPLX(W32(3)) | |
702 | DV4(3)=DCMPLX(W32(4)) | |
703 | DP4(0)=DBLE(PW32(0)) | |
704 | DP4(1)=DBLE(PW32(1)) | |
705 | DP4(2)=DBLE(PW32(2)) | |
706 | DP4(3)=DBLE(PW32(3)) | |
707 | C | |
708 | V12= DV1(0)*DV2(0)-DV1(1)*DV2(1)-DV1(2)*DV2(2)-DV1(3)*DV2(3) | |
709 | V13= DV1(0)*DV3(0)-DV1(1)*DV3(1)-DV1(2)*DV3(2)-DV1(3)*DV3(3) | |
710 | V14= DV1(0)*DV4(0)-DV1(1)*DV4(1)-DV1(2)*DV4(2)-DV1(3)*DV4(3) | |
711 | V23= DV2(0)*DV3(0)-DV2(1)*DV3(1)-DV2(2)*DV3(2)-DV2(3)*DV3(3) | |
712 | V24= DV2(0)*DV4(0)-DV2(1)*DV4(1)-DV2(2)*DV4(2)-DV2(3)*DV4(3) | |
713 | V34= DV3(0)*DV4(0)-DV3(1)*DV4(1)-DV3(2)*DV4(2)-DV3(3)*DV4(3) | |
714 | ||
715 | DVERTX = V14*V23 -V13*V24 | |
716 | C | |
717 | VERTEX = DCMPLX( DVERTX ) * (G*G) | |
718 | C | |
719 | RETURN | |
720 | END | |
721 | C | |
722 | C ====================================================================== | |
723 | C | |
724 | SUBROUTINE GGGXXX(WM,WP,W3,G , VERTEX) | |
725 | C | |
726 | C this subroutine computes an amplitude of the three-point coupling of | |
727 | C the gauge bosons. | |
728 | C | |
729 | C input: | |
730 | C complex wm(6) : vector flow-out w- | |
731 | C complex wp(6) : vector flow-out w+ | |
732 | C complex w3(6) : vector j3 or a or z | |
733 | C real g : coupling constant gw or gwwa or gwwz | |
734 | C | |
735 | C output: | |
736 | C complex vertex : amplitude gamma(wm,wp,w3) | |
737 | C | |
738 | #if defined(CERNLIB_IMPNONE) | |
739 | IMPLICIT NONE | |
740 | #endif | |
741 | COMPLEX*16 WM(6),WP(6),W3(6),VERTEX, | |
742 | & XV1,XV2,XV3,V12,V23,V31,P12,P13,P21,P23,P31,P32 | |
743 | REAL*8 PWM(0:3),PWP(0:3),PW3(0:3),G | |
744 | REAL*8 RXZERO, RTENTH | |
745 | PARAMETER( RXZERO=0.0D0, RTENTH=0.1D0 ) | |
746 | C | |
747 | PWM(0)=DBLE( WM(5)) | |
748 | PWM(1)=DBLE( WM(6)) | |
749 | PWM(2)=DIMAG(WM(6)) | |
750 | PWM(3)=DIMAG(WM(5)) | |
751 | PWP(0)=DBLE( WP(5)) | |
752 | PWP(1)=DBLE( WP(6)) | |
753 | PWP(2)=DIMAG(WP(6)) | |
754 | PWP(3)=DIMAG(WP(5)) | |
755 | PW3(0)=DBLE( W3(5)) | |
756 | PW3(1)=DBLE( W3(6)) | |
757 | PW3(2)=DIMAG(W3(6)) | |
758 | PW3(3)=DIMAG(W3(5)) | |
759 | C | |
760 | V12=WM(1)*WP(1)-WM(2)*WP(2)-WM(3)*WP(3)-WM(4)*WP(4) | |
761 | V23=WP(1)*W3(1)-WP(2)*W3(2)-WP(3)*W3(3)-WP(4)*W3(4) | |
762 | V31=W3(1)*WM(1)-W3(2)*WM(2)-W3(3)*WM(3)-W3(4)*WM(4) | |
763 | XV1=RXZERO | |
764 | XV2=RXZERO | |
765 | XV3=RXZERO | |
766 | IF ( ABS(WM(1)) .NE. RXZERO ) THEN | |
767 | IF (ABS(WM(1)).GE.MAX(ABS(WM(2)),ABS(WM(3)),ABS(WM(4))) | |
768 | $ *RTENTH) | |
769 | & XV1=PWM(0)/WM(1) | |
770 | ENDIF | |
771 | IF ( ABS(WP(1)) .NE. RXZERO) THEN | |
772 | IF (ABS(WP(1)).GE.MAX(ABS(WP(2)),ABS(WP(3)),ABS(WP(4))) | |
773 | $ *RTENTH) | |
774 | & XV2=PWP(0)/WP(1) | |
775 | ENDIF | |
776 | IF ( ABS(W3(1)) .NE. RXZERO) THEN | |
777 | IF ( ABS(W3(1)).GE.MAX(ABS(W3(2)),ABS(W3(3)),ABS(W3(4))) | |
778 | $ *RTENTH) | |
779 | & XV3=PW3(0)/W3(1) | |
780 | ENDIF | |
781 | P12= (PWM(0)-XV1*WM(1))*WP(1)-(PWM(1)-XV1*WM(2))*WP(2) | |
782 | & -(PWM(2)-XV1*WM(3))*WP(3)-(PWM(3)-XV1*WM(4))*WP(4) | |
783 | P13= (PWM(0)-XV1*WM(1))*W3(1)-(PWM(1)-XV1*WM(2))*W3(2) | |
784 | & -(PWM(2)-XV1*WM(3))*W3(3)-(PWM(3)-XV1*WM(4))*W3(4) | |
785 | P21= (PWP(0)-XV2*WP(1))*WM(1)-(PWP(1)-XV2*WP(2))*WM(2) | |
786 | & -(PWP(2)-XV2*WP(3))*WM(3)-(PWP(3)-XV2*WP(4))*WM(4) | |
787 | P23= (PWP(0)-XV2*WP(1))*W3(1)-(PWP(1)-XV2*WP(2))*W3(2) | |
788 | & -(PWP(2)-XV2*WP(3))*W3(3)-(PWP(3)-XV2*WP(4))*W3(4) | |
789 | P31= (PW3(0)-XV3*W3(1))*WM(1)-(PW3(1)-XV3*W3(2))*WM(2) | |
790 | & -(PW3(2)-XV3*W3(3))*WM(3)-(PW3(3)-XV3*W3(4))*WM(4) | |
791 | P32= (PW3(0)-XV3*W3(1))*WP(1)-(PW3(1)-XV3*W3(2))*WP(2) | |
792 | & -(PW3(2)-XV3*W3(3))*WP(3)-(PW3(3)-XV3*W3(4))*WP(4) | |
793 | C | |
794 | VERTEX = -(V12*(P13-P23)+V23*(P21-P31)+V31*(P32-P12))*G | |
795 | C | |
796 | RETURN | |
797 | END | |
798 | SUBROUTINE HIOXXX(FI,FO,GC,SMASS,SWIDTH , HIO) | |
799 | C | |
800 | C this subroutine computes an off-shell scalar current from an external | |
801 | C fermion pair. | |
802 | C | |
803 | C input: | |
804 | C complex fi(6) : flow-in fermion |fi> | |
805 | C complex fo(6) : flow-out fermion <fo| | |
806 | C complex gc(2) : coupling constants gchf | |
807 | C real smass : mass of output scalar s | |
808 | C real swidth : width of output scalar s | |
809 | C | |
810 | C output: | |
811 | C complex hio(3) : scalar current j(<fi|s|fo>) | |
812 | C | |
813 | #if defined(CERNLIB_IMPNONE) | |
814 | IMPLICIT NONE | |
815 | #endif | |
816 | COMPLEX*16 FI(6),FO(6),HIO(3),GC(2),DN | |
817 | REAL*8 Q(0:3),SMASS,SWIDTH,Q2 | |
818 | C | |
819 | HIO(2) = FO(5)-FI(5) | |
820 | HIO(3) = FO(6)-FI(6) | |
821 | C | |
822 | Q(0)=DBLE( HIO(2)) | |
823 | Q(1)=DBLE( HIO(3)) | |
824 | Q(2)=DIMAG(HIO(3)) | |
825 | Q(3)=DIMAG(HIO(2)) | |
826 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
827 | C | |
828 | DN=-DCMPLX(Q2-SMASS**2,DMAX1(DSIGN(SMASS*SWIDTH,Q2),0.D0)) | |
829 | C | |
830 | HIO(1) = ( GC(1)*(FO(1)*FI(1)+FO(2)*FI(2)) | |
831 | & +GC(2)*(FO(3)*FI(3)+FO(4)*FI(4)) )/DN | |
832 | C | |
833 | RETURN | |
834 | END | |
835 | C ---------------------------------------------------------------------- | |
836 | C | |
837 | SUBROUTINE HSSSXX(S1,S2,S3,G,SMASS,SWIDTH , HSSS) | |
838 | C | |
839 | C This subroutine computes an off-shell scalar current from the four- | |
840 | C scalar coupling. | |
841 | C | |
842 | C INPUT: | |
843 | C complex S1(3) : first scalar S1 | |
844 | C complex S2(3) : second scalar S2 | |
845 | C complex S3(3) : third scalar S3 | |
846 | C real G : coupling constant GHHHH | |
847 | C real SMASS : mass of OUTPUT scalar S' | |
848 | C real SWIDTH : width of OUTPUT scalar S' | |
849 | C | |
850 | C OUTPUT: | |
851 | C complex HSSS(3) : scalar current J(S':S1,S2,S3) | |
852 | C | |
853 | #if defined(CERNLIB_IMPNONE) | |
854 | IMPLICIT NONE | |
855 | #endif | |
856 | COMPLEX*16 S1(3),S2(3),S3(3),HSSS(3),DG | |
857 | REAL*8 Q(0:3),G,SMASS,SWIDTH,Q2 | |
858 | C | |
859 | HSSS(2) = S1(2)+S2(2)+S3(2) | |
860 | HSSS(3) = S1(3)+S2(3)+S3(3) | |
861 | C | |
862 | Q(0)=DBLE( HSSS(2)) | |
863 | Q(1)=DBLE( HSSS(3)) | |
864 | Q(2)=DIMAG(HSSS(3)) | |
865 | Q(3)=DIMAG(HSSS(2)) | |
866 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
867 | C | |
868 | DG=-G/DCMPLX( Q2-SMASS**2,MAX(SIGN(SMASS*SWIDTH ,Q2),0.D0)) | |
869 | C | |
870 | HSSS(1) = DG * S1(1)*S2(1)*S3(1) | |
871 | C | |
872 | RETURN | |
873 | END | |
874 | C ---------------------------------------------------------------------- | |
875 | C | |
876 | SUBROUTINE HSSXXX(S1,S2,G,SMASS,SWIDTH , HSS) | |
877 | C | |
878 | C This subroutine computes an off-shell scalar current from the three- | |
879 | C scalar coupling. | |
880 | C | |
881 | C INPUT: | |
882 | C complex S1(3) : first scalar S1 | |
883 | C complex S2(3) : second scalar S2 | |
884 | C real G : coupling constant GHHH | |
885 | C real SMASS : mass of OUTPUT scalar S' | |
886 | C real SWIDTH : width of OUTPUT scalar S' | |
887 | C | |
888 | C OUTPUT: | |
889 | C complex HSS(3) : scalar current J(S':S1,S2) | |
890 | C | |
891 | #if defined(CERNLIB_IMPNONE) | |
892 | IMPLICIT NONE | |
893 | #endif | |
894 | COMPLEX*16 S1(3),S2(3),HSS(3),DG | |
895 | REAL*8 Q(0:3),G,SMASS,SWIDTH,Q2 | |
896 | C | |
897 | HSS(2) = S1(2)+S2(2) | |
898 | HSS(3) = S1(3)+S2(3) | |
899 | C | |
900 | Q(0)=DBLE( HSS(2)) | |
901 | Q(1)=DBLE( HSS(3)) | |
902 | Q(2)=DIMAG(HSS(3)) | |
903 | Q(3)=DIMAG(HSS(2)) | |
904 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
905 | C | |
906 | DG=-G/DCMPLX( Q2-SMASS**2, MAX(SIGN(SMASS*SWIDTH ,Q2),0.D0)) | |
907 | C | |
908 | HSS(1) = DG*S1(1)*S2(1) | |
909 | C | |
910 | RETURN | |
911 | END | |
912 | C | |
913 | C ====================================================================== | |
914 | C ---------------------------------------------------------------------- | |
915 | C | |
916 | SUBROUTINE HVSXXX(VC,SC,G,SMASS,SWIDTH , HVS) | |
917 | C | |
918 | C this subroutine computes an off-shell scalar current from the vector- | |
919 | C scalar-scalar coupling. the coupling is absent in the minimal sm in | |
920 | C unitary gauge. | |
921 | C | |
922 | C input: | |
923 | C complex vc(6) : input vector v | |
924 | C complex sc(3) : input scalar s | |
925 | C complex g : coupling constant (s charge) | |
926 | C real smass : mass of output scalar s' | |
927 | C real swidth : width of output scalar s' | |
928 | C | |
929 | C examples of the coupling constant g for susy particles are as follows: | |
930 | C ----------------------------------------------------------- | |
931 | C | s1 | (q,i3) of s1 || v=a | v=z | v=w | | |
932 | C ----------------------------------------------------------- | |
933 | C | nu~_l | ( 0 , +1/2) || --- | gzn(1) | gwf(1) | | |
934 | C | e~_l | ( -1 , -1/2) || gal(1) | gzl(1) | gwf(1) | | |
935 | C | u~_l | (+2/3 , +1/2) || gau(1) | gzu(1) | gwf(1) | | |
936 | C | d~_l | (-1/3 , -1/2) || gad(1) | gzd(1) | gwf(1) | | |
937 | C ----------------------------------------------------------- | |
938 | C | e~_r-bar | ( +1 , 0 ) || -gal(2) | -gzl(2) | -gwf(2) | | |
939 | C | u~_r-bar | (-2/3 , 0 ) || -gau(2) | -gzu(2) | -gwf(2) | | |
940 | C | d~_r-bar | (+1/3 , 0 ) || -gad(2) | -gzd(2) | -gwf(2) | | |
941 | C ----------------------------------------------------------- | |
942 | C where the sc charge is defined by the flowing-out quantum number. | |
943 | C | |
944 | C output: | |
945 | C complex hvs(3) : scalar current j(s':v,s) | |
946 | C | |
947 | #if defined(CERNLIB_IMPNONE) | |
948 | IMPLICIT NONE | |
949 | #endif | |
950 | COMPLEX*16 VC(6),SC(3),HVS(3),DG,QVV,QPV,G | |
951 | REAL*8 QV(0:3),QP(0:3),QA(0:3),SMASS,SWIDTH,Q2 | |
952 | C | |
953 | HVS(2) = VC(5)+SC(2) | |
954 | HVS(3) = VC(6)+SC(3) | |
955 | C | |
956 | QV(0)=DBLE( VC(5)) | |
957 | QV(1)=DBLE( VC(6)) | |
958 | QV(2)=DIMAG( VC(6)) | |
959 | QV(3)=DIMAG( VC(5)) | |
960 | QP(0)=DBLE( SC(2)) | |
961 | QP(1)=DBLE( SC(3)) | |
962 | QP(2)=DIMAG( SC(3)) | |
963 | QP(3)=DIMAG( SC(2)) | |
964 | QA(0)=DBLE( HVS(2)) | |
965 | QA(1)=DBLE( HVS(3)) | |
966 | QA(2)=DIMAG(HVS(3)) | |
967 | QA(3)=DIMAG(HVS(2)) | |
968 | Q2=QA(0)**2-(QA(1)**2+QA(2)**2+QA(3)**2) | |
969 | C | |
970 | DG=-G/DCMPLX( Q2-SMASS**2 , MAX(DSIGN( SMASS*SWIDTH ,Q2),0D0) ) | |
971 | QVV=QV(0)*VC(1)-QV(1)*VC(2)-QV(2)*VC(3)-QV(3)*VC(4) | |
972 | QPV=QP(0)*VC(1)-QP(1)*VC(2)-QP(2)*VC(3)-QP(3)*VC(4) | |
973 | C | |
974 | HVS(1) = DG*(2D0*QPV+QVV)*SC(1) | |
975 | C | |
976 | RETURN | |
977 | END | |
978 | C | |
979 | C ---------------------------------------------------------------------- | |
980 | C | |
981 | SUBROUTINE HVVXXX(V1,V2,G,SMASS,SWIDTH , HVV) | |
982 | C | |
983 | C this subroutine computes an off-shell scalar current from the vector- | |
984 | C vector-scalar coupling. | |
985 | C | |
986 | C input: | |
987 | C complex v1(6) : first vector v1 | |
988 | C complex v2(6) : second vector v2 | |
989 | C real g : coupling constant gvvh | |
990 | C real smass : mass of output scalar s | |
991 | C real swidth : width of output scalar s | |
992 | C | |
993 | C output: | |
994 | C complex hvv(3) : off-shell scalar current j(s:v1,v2) | |
995 | C | |
996 | #if defined(CERNLIB_IMPNONE) | |
997 | IMPLICIT NONE | |
998 | #endif | |
999 | COMPLEX*16 V1(6),V2(6),HVV(3),DG | |
1000 | REAL*8 Q(0:3),G,SMASS,SWIDTH,Q2 | |
1001 | REAL*8 RXZERO | |
1002 | PARAMETER( RXZERO=0.0D0 ) | |
1003 | C | |
1004 | HVV(2) = V1(5)+V2(5) | |
1005 | HVV(3) = V1(6)+V2(6) | |
1006 | C | |
1007 | Q(0)=DBLE( HVV(2)) | |
1008 | Q(1)=DBLE( HVV(3)) | |
1009 | Q(2)=DIMAG(HVV(3)) | |
1010 | Q(3)=DIMAG(HVV(2)) | |
1011 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
1012 | C | |
1013 | DG=-G/DCMPLX( Q2-SMASS**2 , MAX(SIGN( SMASS*SWIDTH ,Q2),RXZERO) ) | |
1014 | C | |
1015 | HVV(1) = DG*(V1(1)*V2(1)-V1(2)*V2(2)-V1(3)*V2(3)-V1(4)*V2(4)) | |
1016 | C | |
1017 | RETURN | |
1018 | END | |
1019 | C | |
1020 | C ====================================================================== | |
1021 | C | |
1022 | SUBROUTINE IOSXXX(FI,FO,SC,GC , VERTEX) | |
1023 | C | |
1024 | C This subroutine computes an amplitude of the fermion-fermion-scalar | |
1025 | C coupling. | |
1026 | C | |
1027 | C INPUT: | |
1028 | C complex FI(6) : flow-in fermion |FI> | |
1029 | C complex FO(6) : flow-out fermion <FO| | |
1030 | C complex SC(3) : input scalar S | |
1031 | C complex GC(2) : coupling constants GCHF | |
1032 | C | |
1033 | C OUTPUT: | |
1034 | C complex VERTEX : amplitude <FO|S|FI> | |
1035 | C | |
1036 | #if defined(CERNLIB_IMPNONE) | |
1037 | IMPLICIT NONE | |
1038 | #endif | |
1039 | COMPLEX*16 FI(6),FO(6),SC(3),GC(2),VERTEX | |
1040 | C | |
1041 | VERTEX = SC(1)*( GC(1)*(FI(1)*FO(1)+FI(2)*FO(2)) | |
1042 | & +GC(2)*(FI(3)*FO(3)+FI(4)*FO(4)) ) | |
1043 | C | |
1044 | RETURN | |
1045 | END | |
1046 | C | |
1047 | C ====================================================================== | |
1048 | C | |
1049 | SUBROUTINE IOVXXX(FI,FO,VC,G , VERTEX) | |
1050 | C | |
1051 | C this subroutine computes an amplitude of the fermion-fermion-vector | |
1052 | C coupling. | |
1053 | C | |
1054 | C input: | |
1055 | C complex fi(6) : flow-in fermion |fi> | |
1056 | C complex fo(6) : flow-out fermion <fo| | |
1057 | C complex vc(6) : input vector v | |
1058 | C real g(2) : coupling constants gvf | |
1059 | C | |
1060 | C output: | |
1061 | C complex vertex : amplitude <fo|v|fi> | |
1062 | C | |
1063 | #if defined(CERNLIB_IMPNONE) | |
1064 | IMPLICIT NONE | |
1065 | #endif | |
1066 | COMPLEX*16 FI(6),FO(6),VC(6),VERTEX | |
1067 | REAL*8 G(2) | |
1068 | REAL*8 RXZERO, RXONE | |
1069 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
1070 | COMPLEX*16 CXIMAG | |
1071 | LOGICAL FIRST | |
1072 | SAVE CXIMAG,FIRST | |
1073 | DATA FIRST/.TRUE./ | |
1074 | C | |
1075 | C Fix compilation with g77 | |
1076 | IF(FIRST) THEN | |
1077 | FIRST=.FALSE. | |
1078 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
1079 | ENDIF | |
1080 | C | |
1081 | ||
1082 | VERTEX = G(1)*( (FO(3)*FI(1)+FO(4)*FI(2))*VC(1) | |
1083 | & +(FO(3)*FI(2)+FO(4)*FI(1))*VC(2) | |
1084 | & -(FO(3)*FI(2)-FO(4)*FI(1))*VC(3)*CXIMAG | |
1085 | & +(FO(3)*FI(1)-FO(4)*FI(2))*VC(4) ) | |
1086 | C | |
1087 | IF ( G(2) .NE. RXZERO ) THEN | |
1088 | VERTEX = VERTEX | |
1089 | & + G(2)*( (FO(1)*FI(3)+FO(2)*FI(4))*VC(1) | |
1090 | & -(FO(1)*FI(4)+FO(2)*FI(3))*VC(2) | |
1091 | & +(FO(1)*FI(4)-FO(2)*FI(3))*VC(3)*CXIMAG | |
1092 | & -(FO(1)*FI(3)-FO(2)*FI(4))*VC(4) ) | |
1093 | END IF | |
1094 | C | |
1095 | RETURN | |
1096 | END | |
1097 | C | |
1098 | C Subroutine returns the desired fermion or | |
1099 | C anti-fermion spinor. ie., |f> | |
1100 | C A replacement for the HELAS routine IXXXXX | |
1101 | C | |
1102 | C Adam Duff, 1992 August 31 | |
1103 | C <duff@phenom.physics.wisc.edu> | |
1104 | C | |
1105 | SUBROUTINE IXXXXX(P,FMASS,NHEL,NSF,FI) | |
1106 | C P IN: FOUR VECTOR MOMENTUM | |
1107 | C FMASS IN: FERMION MASS | |
1108 | C NHEL IN: SPINOR HELICITY, -1 OR 1 | |
1109 | C NSF IN: -1=ANTIFERMION, 1=FERMION | |
1110 | C FI OUT: FERMION WAVEFUNCTION | |
1111 | C | |
1112 | C declare input/output variables | |
1113 | C | |
1114 | #if defined(CERNLIB_IMPNONE) | |
1115 | IMPLICIT NONE | |
1116 | #endif | |
1117 | COMPLEX*16 FI(6) | |
1118 | INTEGER*4 NHEL, NSF | |
1119 | REAL*8 P(0:3), FMASS | |
1120 | REAL*8 RXZERO, RXONE, RXTWO | |
1121 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0, RXTWO=2.0D0 ) | |
1122 | REAL*8 PLAT, PABS, OMEGAP, OMEGAM, RS2PA, SPAZ | |
1123 | COMPLEX*16 CXZERO | |
1124 | C | |
1125 | C declare local variables | |
1126 | C | |
1127 | LOGICAL FIRST | |
1128 | SAVE CXZERO,FIRST | |
1129 | DATA FIRST/.TRUE./ | |
1130 | C | |
1131 | C Fix compilation with g77 | |
1132 | IF(FIRST) THEN | |
1133 | FIRST=.FALSE. | |
1134 | CXZERO=DCMPLX( RXZERO, RXZERO ) | |
1135 | ENDIF | |
1136 | C | |
1137 | C define kinematic parameters | |
1138 | C | |
1139 | FI(5) = DCMPLX( P(0), P(3) ) * NSF | |
1140 | FI(6) = DCMPLX( P(1), P(2) ) * NSF | |
1141 | PLAT = SQRT( P(1)**2 + P(2)**2 ) | |
1142 | PABS = SQRT( P(1)**2 + P(2)**2 + P(3)**2 ) | |
1143 | OMEGAP = SQRT( P(0) + PABS ) | |
1144 | C | |
1145 | C do massive fermion case | |
1146 | C | |
1147 | IF ( FMASS .NE. RXZERO ) THEN | |
1148 | OMEGAM = FMASS / OMEGAP | |
1149 | IF ( NSF .EQ. 1 ) THEN | |
1150 | IF ( NHEL .EQ. 1 ) THEN | |
1151 | IF ( P(3) .GE. RXZERO ) THEN | |
1152 | IF ( PLAT .EQ. RXZERO ) THEN | |
1153 | FI(1) = DCMPLX( OMEGAM, RXZERO ) | |
1154 | FI(2) = CXZERO | |
1155 | FI(3) = DCMPLX( OMEGAP, RXZERO ) | |
1156 | FI(4) = CXZERO | |
1157 | ELSE | |
1158 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1159 | SPAZ = SQRT( PABS + P(3) ) | |
1160 | FI(1) = OMEGAM * RS2PA | |
1161 | & * DCMPLX( SPAZ, RXZERO ) | |
1162 | FI(2) = OMEGAM * RS2PA / SPAZ | |
1163 | & * DCMPLX( P(1), P(2) ) | |
1164 | FI(3) = OMEGAP * RS2PA | |
1165 | & * DCMPLX( SPAZ, RXZERO ) | |
1166 | FI(4) = OMEGAP * RS2PA / SPAZ | |
1167 | & * DCMPLX( P(1), P(2) ) | |
1168 | END IF | |
1169 | ELSE | |
1170 | IF ( PLAT .EQ. RXZERO ) THEN | |
1171 | FI(1) = CXZERO | |
1172 | FI(2) = DCMPLX( OMEGAM, RXZERO ) | |
1173 | FI(3) = CXZERO | |
1174 | FI(4) = DCMPLX( OMEGAP, RXZERO ) | |
1175 | ELSE | |
1176 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1177 | SPAZ = SQRT( PABS - P(3) ) | |
1178 | FI(1) = OMEGAM * RS2PA / SPAZ | |
1179 | & * DCMPLX( PLAT, RXZERO ) | |
1180 | FI(2) = OMEGAM * RS2PA * SPAZ / PLAT | |
1181 | & * DCMPLX( P(1), P(2) ) | |
1182 | FI(3) = OMEGAP * RS2PA / SPAZ | |
1183 | & * DCMPLX( PLAT, RXZERO ) | |
1184 | FI(4) = OMEGAP * RS2PA * SPAZ / PLAT | |
1185 | & * DCMPLX( P(1), P(2) ) | |
1186 | END IF | |
1187 | END IF | |
1188 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
1189 | IF ( P(3) .GE. RXZERO ) THEN | |
1190 | IF ( PLAT .EQ. RXZERO ) THEN | |
1191 | FI(1) = CXZERO | |
1192 | FI(2) = DCMPLX( OMEGAP, RXZERO ) | |
1193 | FI(3) = CXZERO | |
1194 | FI(4) = DCMPLX( OMEGAM, RXZERO ) | |
1195 | ELSE | |
1196 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1197 | SPAZ = SQRT( PABS + P(3) ) | |
1198 | FI(1) = OMEGAP * RS2PA / SPAZ | |
1199 | & * DCMPLX( -P(1), P(2) ) | |
1200 | FI(2) = OMEGAP * RS2PA | |
1201 | & * DCMPLX( SPAZ, RXZERO ) | |
1202 | FI(3) = OMEGAM * RS2PA / SPAZ | |
1203 | & * DCMPLX( -P(1), P(2) ) | |
1204 | FI(4) = OMEGAM * RS2PA | |
1205 | & * DCMPLX( SPAZ, RXZERO ) | |
1206 | END IF | |
1207 | ELSE | |
1208 | IF ( PLAT .EQ. RXZERO ) THEN | |
1209 | FI(1) = DCMPLX( -OMEGAP, RXZERO ) | |
1210 | FI(2) = CXZERO | |
1211 | FI(3) = DCMPLX( -OMEGAM, RXZERO ) | |
1212 | FI(4) = CXZERO | |
1213 | ELSE | |
1214 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1215 | SPAZ = SQRT( PABS - P(3) ) | |
1216 | FI(1) = OMEGAP * RS2PA * SPAZ / PLAT | |
1217 | & * DCMPLX( -P(1), P(2) ) | |
1218 | FI(2) = OMEGAP * RS2PA / SPAZ | |
1219 | & * DCMPLX( PLAT, RXZERO ) | |
1220 | FI(3) = OMEGAM * RS2PA * SPAZ / PLAT | |
1221 | & * DCMPLX( -P(1), P(2) ) | |
1222 | FI(4) = OMEGAM * RS2PA / SPAZ | |
1223 | & * DCMPLX( PLAT, RXZERO ) | |
1224 | END IF | |
1225 | END IF | |
1226 | ELSE | |
1227 | STOP 'IXXXXX: FERMION HELICITY MUST BE +1,-1' | |
1228 | END IF | |
1229 | ELSE IF ( NSF .EQ. -1 ) THEN | |
1230 | IF ( NHEL .EQ. 1 ) THEN | |
1231 | IF ( P(3) .GE. RXZERO ) THEN | |
1232 | IF ( PLAT .EQ. RXZERO ) THEN | |
1233 | FI(1) = CXZERO | |
1234 | FI(2) = DCMPLX( -OMEGAP, RXZERO ) | |
1235 | FI(3) = CXZERO | |
1236 | FI(4) = DCMPLX( OMEGAM, RXZERO ) | |
1237 | ELSE | |
1238 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1239 | SPAZ = SQRT( PABS + P(3) ) | |
1240 | FI(1) = -OMEGAP * RS2PA / SPAZ | |
1241 | & * DCMPLX( -P(1), P(2) ) | |
1242 | FI(2) = -OMEGAP * RS2PA | |
1243 | & * DCMPLX( SPAZ, RXZERO ) | |
1244 | FI(3) = OMEGAM * RS2PA / SPAZ | |
1245 | & * DCMPLX( -P(1), P(2) ) | |
1246 | FI(4) = OMEGAM * RS2PA | |
1247 | & * DCMPLX( SPAZ, RXZERO ) | |
1248 | END IF | |
1249 | ELSE | |
1250 | IF ( PLAT .EQ. RXZERO ) THEN | |
1251 | FI(1) = DCMPLX( OMEGAP, RXZERO ) | |
1252 | FI(2) = CXZERO | |
1253 | FI(3) = DCMPLX( -OMEGAM, RXZERO ) | |
1254 | FI(4) = CXZERO | |
1255 | ELSE | |
1256 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1257 | SPAZ = SQRT( PABS - P(3) ) | |
1258 | FI(1) = -OMEGAP * RS2PA * SPAZ / PLAT | |
1259 | & * DCMPLX( -P(1), P(2) ) | |
1260 | FI(2) = -OMEGAP * RS2PA / SPAZ | |
1261 | & * DCMPLX( PLAT, RXZERO ) | |
1262 | FI(3) = OMEGAM * RS2PA * SPAZ / PLAT | |
1263 | & * DCMPLX( -P(1), P(2) ) | |
1264 | FI(4) = OMEGAM * RS2PA / SPAZ | |
1265 | & * DCMPLX( PLAT, RXZERO ) | |
1266 | END IF | |
1267 | END IF | |
1268 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
1269 | IF ( P(3) .GE. RXZERO ) THEN | |
1270 | IF ( PLAT .EQ. RXZERO ) THEN | |
1271 | FI(1) = DCMPLX( OMEGAM, RXZERO ) | |
1272 | FI(2) = CXZERO | |
1273 | FI(3) = DCMPLX( -OMEGAP, RXZERO ) | |
1274 | FI(4) = CXZERO | |
1275 | ELSE | |
1276 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1277 | SPAZ = SQRT( PABS + P(3) ) | |
1278 | FI(1) = OMEGAM * RS2PA | |
1279 | & * DCMPLX( SPAZ, RXZERO ) | |
1280 | FI(2) = OMEGAM * RS2PA / SPAZ | |
1281 | & * DCMPLX( P(1), P(2) ) | |
1282 | FI(3) = -OMEGAP * RS2PA | |
1283 | & * DCMPLX( SPAZ, RXZERO ) | |
1284 | FI(4) = -OMEGAP * RS2PA / SPAZ | |
1285 | & * DCMPLX( P(1), P(2) ) | |
1286 | END IF | |
1287 | ELSE | |
1288 | IF ( PLAT .EQ. RXZERO ) THEN | |
1289 | FI(1) = CXZERO | |
1290 | FI(2) = DCMPLX( OMEGAM, RXZERO ) | |
1291 | FI(3) = CXZERO | |
1292 | FI(4) = DCMPLX( -OMEGAP, RXZERO ) | |
1293 | ELSE | |
1294 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
1295 | SPAZ = SQRT( PABS - P(3) ) | |
1296 | FI(1) = OMEGAM * RS2PA / SPAZ | |
1297 | & * DCMPLX( PLAT, RXZERO ) | |
1298 | FI(2) = OMEGAM * RS2PA * SPAZ / PLAT | |
1299 | & * DCMPLX( P(1), P(2) ) | |
1300 | FI(3) = -OMEGAP * RS2PA / SPAZ | |
1301 | & * DCMPLX( PLAT, RXZERO ) | |
1302 | FI(4) = -OMEGAP * RS2PA * SPAZ / PLAT | |
1303 | & * DCMPLX( P(1), P(2) ) | |
1304 | END IF | |
1305 | END IF | |
1306 | ELSE | |
1307 | STOP 'IXXXXX: FERMION HELICITY MUST BE +1,-1' | |
1308 | END IF | |
1309 | ELSE | |
1310 | STOP 'IXXXXX: FERMION TYPE MUST BE +1,-1' | |
1311 | END IF | |
1312 | C | |
1313 | C do massless fermion case | |
1314 | C | |
1315 | ELSE | |
1316 | IF ( NSF .EQ. 1 ) THEN | |
1317 | IF ( NHEL .EQ. 1 ) THEN | |
1318 | IF ( P(3) .GE. RXZERO ) THEN | |
1319 | IF ( PLAT .EQ. RXZERO ) THEN | |
1320 | FI(1) = CXZERO | |
1321 | FI(2) = CXZERO | |
1322 | FI(3) = DCMPLX( OMEGAP, RXZERO ) | |
1323 | FI(4) = CXZERO | |
1324 | ELSE | |
1325 | SPAZ = SQRT( PABS + P(3) ) | |
1326 | FI(1) = CXZERO | |
1327 | FI(2) = CXZERO | |
1328 | FI(3) = DCMPLX( SPAZ, RXZERO ) | |
1329 | FI(4) = RXONE / SPAZ | |
1330 | & * DCMPLX( P(1), P(2) ) | |
1331 | END IF | |
1332 | ELSE | |
1333 | IF ( PLAT .EQ. RXZERO ) THEN | |
1334 | FI(1) = CXZERO | |
1335 | FI(2) = CXZERO | |
1336 | FI(3) = CXZERO | |
1337 | FI(4) = DCMPLX( OMEGAP, RXZERO ) | |
1338 | ELSE | |
1339 | SPAZ = SQRT( PABS - P(3) ) | |
1340 | FI(1) = CXZERO | |
1341 | FI(2) = CXZERO | |
1342 | FI(3) = RXONE / SPAZ | |
1343 | & * DCMPLX( PLAT, RXZERO ) | |
1344 | FI(4) = SPAZ / PLAT | |
1345 | & * DCMPLX( P(1), P(2) ) | |
1346 | END IF | |
1347 | END IF | |
1348 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
1349 | IF ( P(3) .GE. RXZERO ) THEN | |
1350 | IF ( PLAT .EQ. RXZERO ) THEN | |
1351 | FI(1) = CXZERO | |
1352 | FI(2) = DCMPLX( OMEGAP, RXZERO ) | |
1353 | FI(3) = CXZERO | |
1354 | FI(4) = CXZERO | |
1355 | ELSE | |
1356 | SPAZ = SQRT( PABS + P(3) ) | |
1357 | FI(1) = RXONE / SPAZ | |
1358 | & * DCMPLX( -P(1), P(2) ) | |
1359 | FI(2) = DCMPLX( SPAZ, RXZERO ) | |
1360 | FI(3) = CXZERO | |
1361 | FI(4) = CXZERO | |
1362 | END IF | |
1363 | ELSE | |
1364 | IF ( PLAT .EQ. RXZERO ) THEN | |
1365 | FI(1) = DCMPLX( -OMEGAP, RXZERO ) | |
1366 | FI(2) = CXZERO | |
1367 | FI(3) = CXZERO | |
1368 | FI(4) = CXZERO | |
1369 | ELSE | |
1370 | SPAZ = SQRT( PABS - P(3) ) | |
1371 | FI(1) = SPAZ / PLAT | |
1372 | & * DCMPLX( -P(1), P(2) ) | |
1373 | FI(2) = RXONE / SPAZ | |
1374 | & * DCMPLX( PLAT, RXZERO ) | |
1375 | FI(3) = CXZERO | |
1376 | FI(4) = CXZERO | |
1377 | END IF | |
1378 | END IF | |
1379 | ELSE | |
1380 | STOP 'IXXXXX: FERMION HELICITY MUST BE +1,-1' | |
1381 | END IF | |
1382 | ELSE IF ( NSF .EQ. -1 ) THEN | |
1383 | IF ( NHEL .EQ. 1 ) THEN | |
1384 | IF ( P(3) .GE. RXZERO ) THEN | |
1385 | IF ( PLAT .EQ. RXZERO ) THEN | |
1386 | FI(1) = CXZERO | |
1387 | FI(2) = DCMPLX( -OMEGAP, RXZERO ) | |
1388 | FI(3) = CXZERO | |
1389 | FI(4) = CXZERO | |
1390 | ELSE | |
1391 | SPAZ = SQRT( PABS + P(3) ) | |
1392 | FI(1) = -RXONE / SPAZ | |
1393 | & * DCMPLX( -P(1), P(2) ) | |
1394 | FI(2) = DCMPLX( -SPAZ, RXZERO ) | |
1395 | FI(3) = CXZERO | |
1396 | FI(4) = CXZERO | |
1397 | END IF | |
1398 | ELSE | |
1399 | IF ( PLAT .EQ. RXZERO ) THEN | |
1400 | FI(1) = DCMPLX( OMEGAP, RXZERO ) | |
1401 | FI(2) = CXZERO | |
1402 | FI(3) = CXZERO | |
1403 | FI(4) = CXZERO | |
1404 | ELSE | |
1405 | SPAZ = SQRT( PABS - P(3) ) | |
1406 | FI(1) = -SPAZ / PLAT | |
1407 | & * DCMPLX( -P(1), P(2) ) | |
1408 | FI(2) = -RXONE / SPAZ | |
1409 | & * DCMPLX( PLAT, RXZERO ) | |
1410 | FI(3) = CXZERO | |
1411 | FI(4) = CXZERO | |
1412 | END IF | |
1413 | END IF | |
1414 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
1415 | IF ( P(3) .GE. RXZERO ) THEN | |
1416 | IF ( PLAT .EQ. RXZERO ) THEN | |
1417 | FI(1) = CXZERO | |
1418 | FI(2) = CXZERO | |
1419 | FI(3) = DCMPLX( -OMEGAP, RXZERO ) | |
1420 | FI(4) = CXZERO | |
1421 | ELSE | |
1422 | SPAZ = SQRT( PABS + P(3) ) | |
1423 | FI(1) = CXZERO | |
1424 | FI(2) = CXZERO | |
1425 | FI(3) = DCMPLX( -SPAZ, RXZERO ) | |
1426 | FI(4) = -RXONE / SPAZ | |
1427 | & * DCMPLX( P(1), P(2) ) | |
1428 | END IF | |
1429 | ELSE | |
1430 | IF ( PLAT .EQ. RXZERO ) THEN | |
1431 | FI(1) = CXZERO | |
1432 | FI(2) = CXZERO | |
1433 | FI(3) = CXZERO | |
1434 | FI(4) = DCMPLX( -OMEGAP, RXZERO ) | |
1435 | ELSE | |
1436 | SPAZ = SQRT( PABS - P(3) ) | |
1437 | FI(1) = CXZERO | |
1438 | FI(2) = CXZERO | |
1439 | FI(3) = -RXONE / SPAZ | |
1440 | & * DCMPLX( PLAT, RXZERO ) | |
1441 | FI(4) = -SPAZ / PLAT | |
1442 | & * DCMPLX( P(1), P(2) ) | |
1443 | END IF | |
1444 | END IF | |
1445 | ELSE | |
1446 | STOP 'IXXXXX: FERMION HELICITY MUST BE +1,-1' | |
1447 | END IF | |
1448 | ELSE | |
1449 | STOP 'IXXXXX: FERMION TYPE MUST BE +1,-1' | |
1450 | END IF | |
1451 | END IF | |
1452 | C | |
1453 | C done | |
1454 | C | |
1455 | RETURN | |
1456 | END | |
1457 | C | |
1458 | C ---------------------------------------------------------------------- | |
1459 | C | |
1460 | SUBROUTINE J3XXXX(FI,FO,GAF,GZF,ZMASS,ZWIDTH , J3) | |
1461 | C | |
1462 | C this subroutine computes the sum of photon and z currents with the | |
1463 | C suitable weights ( j(w3) = cos(theta_w) j(z) + sin(theta_w) j(a) ). | |
1464 | C the output j3 is useful as an input of vvvxxx, jvvxxx or w3w3xx. | |
1465 | C the photon propagator is given in feynman gauge, and the z propagator | |
1466 | C is given in unitary gauge. | |
1467 | C | |
1468 | C input: | |
1469 | C complex fi(6) : flow-in fermion |fi> | |
1470 | C complex fo(6) : flow-out fermion <fo| | |
1471 | C real gaf(2) : fi couplings with a gaf | |
1472 | C real gzf(2) : fi couplings with z gzf | |
1473 | C real zmass : mass of z | |
1474 | C real zwidth : width of z | |
1475 | C | |
1476 | C output: | |
1477 | C complex j3(6) : w3 current j^mu(<fo|w3|fi>) | |
1478 | C | |
1479 | #if defined(CERNLIB_IMPNONE) | |
1480 | IMPLICIT NONE | |
1481 | #endif | |
1482 | COMPLEX*16 FI(6),FO(6),J3(6), | |
1483 | & C0L,C1L,C2L,C3L,CSL,C0R,C1R,C2R,C3R,CSR,DZ,DDIF | |
1484 | REAL*8 GAF(2),GZF(2),Q(0:3),ZMASS,ZWIDTH,ZM2,ZMW,Q2,DA,WW, | |
1485 | & CW,SW,GN,GZ3L,GA3L | |
1486 | C | |
1487 | REAL*8 RXZERO, RXONE | |
1488 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
1489 | COMPLEX*16 CXIMAG | |
1490 | LOGICAL FIRST | |
1491 | SAVE CXIMAG,FIRST | |
1492 | DATA FIRST/.TRUE./ | |
1493 | C | |
1494 | C Fix compilation with g77 | |
1495 | IF(FIRST) THEN | |
1496 | FIRST=.FALSE. | |
1497 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
1498 | ENDIF | |
1499 | C | |
1500 | J3(5) = FO(5)-FI(5) | |
1501 | J3(6) = FO(6)-FI(6) | |
1502 | C | |
1503 | Q(0)=-DBLE( J3(5)) | |
1504 | Q(1)=-DBLE( J3(6)) | |
1505 | Q(2)=-DIMAG(J3(6)) | |
1506 | Q(3)=-DIMAG(J3(5)) | |
1507 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
1508 | ZM2=ZMASS**2 | |
1509 | ZMW=ZMASS*ZWIDTH | |
1510 | C | |
1511 | DA=RXONE/Q2 | |
1512 | WW=MAX(DSIGN( ZMW ,Q2),RXZERO) | |
1513 | DZ=RXONE/DCMPLX( Q2-ZM2 , WW ) | |
1514 | DDIF=DCMPLX( -ZM2 , WW )*DA*DZ | |
1515 | C | |
1516 | C ddif is the difference : ddif=da-dz | |
1517 | C for the running width, use below instead of the above ww,dz and ddif. | |
1518 | C ww=max( zwidth*q2/zmass ,r_zero) | |
1519 | C dz=r_one/dcmplx( q2-zm2 , ww ) | |
1520 | C ddif=dcmplx( -zm2 , ww )*da*dz | |
1521 | C | |
1522 | CW=RXONE/SQRT(RXONE+(GZF(2)/GAF(2))**2) | |
1523 | SW=SQRT((RXONE-CW)*(RXONE+CW)) | |
1524 | GN=GAF(2)*SW | |
1525 | GZ3L=GZF(1)*CW | |
1526 | GA3L=GAF(1)*SW | |
1527 | C0L= FO(3)*FI(1)+FO(4)*FI(2) | |
1528 | C0R= FO(1)*FI(3)+FO(2)*FI(4) | |
1529 | C1L=-(FO(3)*FI(2)+FO(4)*FI(1)) | |
1530 | C1R= FO(1)*FI(4)+FO(2)*FI(3) | |
1531 | C2L= (FO(3)*FI(2)-FO(4)*FI(1))*CXIMAG | |
1532 | C2R=(-FO(1)*FI(4)+FO(2)*FI(3))*CXIMAG | |
1533 | C3L= -FO(3)*FI(1)+FO(4)*FI(2) | |
1534 | C3R= FO(1)*FI(3)-FO(2)*FI(4) | |
1535 | CSL=(Q(0)*C0L-Q(1)*C1L-Q(2)*C2L-Q(3)*C3L)/ZM2 | |
1536 | CSR=(Q(0)*C0R-Q(1)*C1R-Q(2)*C2R-Q(3)*C3R)/ZM2 | |
1537 | C | |
1538 | J3(1) = GZ3L*DZ*(C0L-CSL*Q(0))+GA3L*C0L*DA | |
1539 | & + GN*(C0R*DDIF-CSR*Q(0)*DZ) | |
1540 | J3(2) = GZ3L*DZ*(C1L-CSL*Q(1))+GA3L*C1L*DA | |
1541 | & + GN*(C1R*DDIF-CSR*Q(1)*DZ) | |
1542 | J3(3) = GZ3L*DZ*(C2L-CSL*Q(2))+GA3L*C2L*DA | |
1543 | & + GN*(C2R*DDIF-CSR*Q(2)*DZ) | |
1544 | J3(4) = GZ3L*DZ*(C3L-CSL*Q(3))+GA3L*C3L*DA | |
1545 | & + GN*(C3R*DDIF-CSR*Q(3)*DZ) | |
1546 | C | |
1547 | RETURN | |
1548 | END | |
1549 | C | |
1550 | C ---------------------------------------------------------------------- | |
1551 | C | |
1552 | SUBROUTINE JEEXXX(EB,EF,SHLF,CHLF,PHI,NHB,NHF,NSF , JEE) | |
1553 | C | |
1554 | C This subroutine computes an off-shell photon wavefunction emitted from | |
1555 | C the electron or positron beam, with a special care for the small angle | |
1556 | C region. The momenta are measured in the laboratory frame, where the | |
1557 | C e- (e+) beam is along the positive (negative) z axis. | |
1558 | C | |
1559 | C INPUT: | |
1560 | C real EB : energy (GeV) of beam e-/e+ | |
1561 | C real EF : energy (GeV) of final e-/e+ | |
1562 | C real SHLF : sin(theta/2) of final e-/e+ | |
1563 | C real CHLF : cos(theta/2) of final e-/e+ | |
1564 | C real PHI : azimuthal angle of final e-/e+ | |
1565 | C integer NHB = -1 or 1 : helicity of beam e-/e+ | |
1566 | C integer NHF = -1 or 1 : helicity of final e-/e+ | |
1567 | C integer NSF = -1 or 1 : +1 for electron, -1 for positron | |
1568 | C | |
1569 | C OUTPUT: | |
1570 | C complex JEE(6) : off-shell photon J^mu(<e|A|e>) | |
1571 | C | |
1572 | #if defined(CERNLIB_IMPNONE) | |
1573 | IMPLICIT NONE | |
1574 | #endif | |
1575 | COMPLEX*16 JEE(6),COEFF | |
1576 | REAL*8 CS(2),EB,EF,SHLF,CHLF,PHI,ME,ALPHA,GAL,HI,SF,SFH,X,ME2,Q2, | |
1577 | & RFP,RFM,SNP,CSP,RXC,C,S | |
1578 | INTEGER NHB,NHF,NSF | |
1579 | C | |
1580 | ME =0.51099906D-3 | |
1581 | ALPHA=1./128. | |
1582 | GAL =SQRT(ALPHA*4.*3.14159265D0) | |
1583 | C | |
1584 | HI =NHB | |
1585 | SF =NSF | |
1586 | SFH=NHB*NSF | |
1587 | CS((3+NSF)/2)=SHLF | |
1588 | CS((3-NSF)/2)=CHLF | |
1589 | C CS(1)=CHLF and CS(2)=SHLF for electron | |
1590 | C CS(1)=SHLF and CS(2)=CHLF for positron | |
1591 | X=EF/EB | |
1592 | ME2=ME**2 | |
1593 | Q2=-4.*CS(2)**2*(EF*EB-ME2) | |
1594 | & +SF*(1.-X)**2/X*(SHLF+CHLF)*(SHLF-CHLF)*ME2 | |
1595 | RFP=(1+NSF) | |
1596 | RFM=(1-NSF) | |
1597 | SNP=SIN(PHI) | |
1598 | CSP=COS(PHI) | |
1599 | C | |
1600 | IF (NHB.EQ.NHF) THEN | |
1601 | RXC=2.*X/(1.-X)*CS(1)**2 | |
1602 | COEFF= GAL*2.*EB*SQRT(X)*CS(2)/Q2 | |
1603 | & *(DCMPLX( RFP )-RFM*DCMPLX( CSP ,-SNP*HI ))*.5 | |
1604 | JEE(1) = DCMPLX( 0.D0 ) | |
1605 | JEE(2) = COEFF*DCMPLX( (1.+RXC)*CSP ,-SFH*SNP ) | |
1606 | JEE(3) = COEFF*DCMPLX( (1.+RXC)*SNP , SFH*CSP ) | |
1607 | JEE(4) = COEFF*(-SF*RXC/CS(1)*CS(2)) | |
1608 | ELSE | |
1609 | COEFF= GAL*ME/Q2/SQRT(X) | |
1610 | & *(DCMPLX( RFP )+RFM*DCMPLX( CSP , SNP*HI ))*.5*HI | |
1611 | JEE(1) = -COEFF*(1.+X)*CS(2)*DCMPLX( CSP , SFH*SNP ) | |
1612 | JEE(2) = COEFF*(1.-X)*CS(1) | |
1613 | JEE(3) = JEE(2)*DCMPLX( 0.D0 , SFH ) | |
1614 | JEE(4) = JEE(1)*SF*(1.-X)/(1.+X) | |
1615 | ENDIF | |
1616 | C | |
1617 | C=(CHLF+SHLF)*(CHLF-SHLF) | |
1618 | S=2.*CHLF*SHLF | |
1619 | C | |
1620 | JEE(5) = -EB*DCMPLX( 1.-X , SF-X*C ) | |
1621 | JEE(6) = EB*X*S*DCMPLX( CSP , SNP ) | |
1622 | C | |
1623 | RETURN | |
1624 | END | |
1625 | C | |
1626 | C | |
1627 | C ---------------------------------------------------------------------- | |
1628 | C | |
1629 | SUBROUTINE JGGGXX(W1,W2,W3,G, JW3W) | |
1630 | C | |
1631 | C this subroutine computes an off-shell w+, w-, w3, z or photon current | |
1632 | C from the four-point gauge boson coupling, including the contributions | |
1633 | C of w exchange diagrams. the vector propagator is given in feynman | |
1634 | C gauge for a photon and in unitary gauge for w and z bosons. if one | |
1635 | C sets wmass=0.0, then the ggg-->g current is given (see sect 2.9.1 of | |
1636 | C the manual). | |
1637 | C | |
1638 | C input: | |
1639 | C complex w1(6) : first vector w1 | |
1640 | C complex w2(6) : second vector w2 | |
1641 | C complex w3(6) : third vector w3 | |
1642 | C real g : first coupling constant | |
1643 | C (see the table below) | |
1644 | C | |
1645 | C output: | |
1646 | C complex jw3w(6) : w current j^mu(w':w1,w2,w3) | |
1647 | C | |
1648 | #if defined(CERNLIB_IMPNONE) | |
1649 | IMPLICIT NONE | |
1650 | #endif | |
1651 | COMPLEX*16 W1(6),W2(6),W3(6),JW3W(6) | |
1652 | COMPLEX*16 DW1(0:3),DW2(0:3),DW3(0:3), | |
1653 | & JJ(0:3),DV,W32,W13 | |
1654 | REAL*8 P1(0:3),P2(0:3),P3(0:3),Q(0:3),G,DG2,Q2 | |
1655 | C | |
1656 | REAL*8 RXZERO | |
1657 | PARAMETER( RXZERO=0.0D0 ) | |
1658 | C | |
1659 | JW3W(5) = W1(5)+W2(5)+W3(5) | |
1660 | JW3W(6) = W1(6)+W2(6)+W3(6) | |
1661 | C | |
1662 | DW1(0)=DCMPLX(W1(1)) | |
1663 | DW1(1)=DCMPLX(W1(2)) | |
1664 | DW1(2)=DCMPLX(W1(3)) | |
1665 | DW1(3)=DCMPLX(W1(4)) | |
1666 | DW2(0)=DCMPLX(W2(1)) | |
1667 | DW2(1)=DCMPLX(W2(2)) | |
1668 | DW2(2)=DCMPLX(W2(3)) | |
1669 | DW2(3)=DCMPLX(W2(4)) | |
1670 | DW3(0)=DCMPLX(W3(1)) | |
1671 | DW3(1)=DCMPLX(W3(2)) | |
1672 | DW3(2)=DCMPLX(W3(3)) | |
1673 | DW3(3)=DCMPLX(W3(4)) | |
1674 | P1(0)=DBLE( W1(5)) | |
1675 | P1(1)=DBLE( W1(6)) | |
1676 | P1(2)=DBLE(DIMAG(W1(6))) | |
1677 | P1(3)=DBLE(DIMAG(W1(5))) | |
1678 | P2(0)=DBLE( W2(5)) | |
1679 | P2(1)=DBLE( W2(6)) | |
1680 | P2(2)=DBLE(DIMAG(W2(6))) | |
1681 | P2(3)=DBLE(DIMAG(W2(5))) | |
1682 | P3(0)=DBLE( W3(5)) | |
1683 | P3(1)=DBLE( W3(6)) | |
1684 | P3(2)=DBLE(DIMAG(W3(6))) | |
1685 | P3(3)=DBLE(DIMAG(W3(5))) | |
1686 | Q(0)=-(P1(0)+P2(0)+P3(0)) | |
1687 | Q(1)=-(P1(1)+P2(1)+P3(1)) | |
1688 | Q(2)=-(P1(2)+P2(2)+P3(2)) | |
1689 | Q(3)=-(P1(3)+P2(3)+P3(3)) | |
1690 | ||
1691 | Q2 =Q(0)**2 -(Q(1)**2 +Q(2)**2 +Q(3)**2) | |
1692 | ||
1693 | DG2=DBLE(G)*DBLE(G) | |
1694 | C | |
1695 | DV = 1.0D0/DCMPLX( Q2 ) | |
1696 | ||
1697 | C for the running width, use below instead of the above dv. | |
1698 | C dv = 1.0d0/dcmplx( q2 -mv2 , dmax1(dwv*q2/dmv,0.d0) ) | |
1699 | C | |
1700 | W32=DW3(0)*DW2(0)-DW3(1)*DW2(1)-DW3(2)*DW2(2)-DW3(3)*DW2(3) | |
1701 | C | |
1702 | C | |
1703 | W13=DW1(0)*DW3(0)-DW1(1)*DW3(1)-DW1(2)*DW3(2)-DW1(3)*DW3(3) | |
1704 | C | |
1705 | JJ(0)=DG2*( DW1(0)*W32 - DW2(0)*W13 ) | |
1706 | JJ(1)=DG2*( DW1(1)*W32 - DW2(1)*W13 ) | |
1707 | JJ(2)=DG2*( DW1(2)*W32 - DW2(2)*W13 ) | |
1708 | JJ(3)=DG2*( DW1(3)*W32 - DW2(3)*W13 ) | |
1709 | C | |
1710 | JW3W(1) = DCMPLX( JJ(0)*DV ) | |
1711 | JW3W(2) = DCMPLX( JJ(1)*DV ) | |
1712 | JW3W(3) = DCMPLX( JJ(2)*DV ) | |
1713 | JW3W(4) = DCMPLX( JJ(3)*DV ) | |
1714 | C | |
1715 | RETURN | |
1716 | END | |
1717 | C | |
1718 | C ---------------------------------------------------------------------- | |
1719 | C | |
1720 | SUBROUTINE JGGXXX(V1,V2,G, JVV) | |
1721 | C | |
1722 | C this subroutine computes an off-shell vector current from the three- | |
1723 | C point gauge boson coupling. the vector propagator is given in feynman | |
1724 | C gauge for a massless vector and in unitary gauge for a massive vector. | |
1725 | C | |
1726 | C input: | |
1727 | C complex v1(6) : first vector v1 | |
1728 | C complex v2(6) : second vector v2 | |
1729 | C real g : coupling constant (see the table below) | |
1730 | C | |
1731 | C output: | |
1732 | C complex jvv(6) : vector current j^mu(v:v1,v2) | |
1733 | C | |
1734 | #if defined(CERNLIB_IMPNONE) | |
1735 | IMPLICIT NONE | |
1736 | #endif | |
1737 | COMPLEX*16 V1(6),V2(6),JVV(6),J12(0:3), | |
1738 | & SV1,SV2,V12 | |
1739 | REAL*8 P1(0:3),P2(0:3),Q(0:3),G,GS,S | |
1740 | C | |
1741 | REAL*8 RXZERO | |
1742 | PARAMETER( RXZERO=0.0D0 ) | |
1743 | C | |
1744 | JVV(5) = V1(5)+V2(5) | |
1745 | JVV(6) = V1(6)+V2(6) | |
1746 | C | |
1747 | P1(0)=DBLE( V1(5)) | |
1748 | P1(1)=DBLE( V1(6)) | |
1749 | P1(2)=DIMAG(V1(6)) | |
1750 | P1(3)=DIMAG(V1(5)) | |
1751 | P2(0)=DBLE( V2(5)) | |
1752 | P2(1)=DBLE( V2(6)) | |
1753 | P2(2)=DIMAG(V2(6)) | |
1754 | P2(3)=DIMAG(V2(5)) | |
1755 | Q(0)=-DBLE( JVV(5)) | |
1756 | Q(1)=-DBLE( JVV(6)) | |
1757 | Q(2)=-DIMAG(JVV(6)) | |
1758 | Q(3)=-DIMAG(JVV(5)) | |
1759 | S=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
1760 | C | |
1761 | V12=V1(1)*V2(1)-V1(2)*V2(2)-V1(3)*V2(3)-V1(4)*V2(4) | |
1762 | SV1= (P2(0)-Q(0))*V1(1) -(P2(1)-Q(1))*V1(2) | |
1763 | & -(P2(2)-Q(2))*V1(3) -(P2(3)-Q(3))*V1(4) | |
1764 | SV2=-(P1(0)-Q(0))*V2(1) +(P1(1)-Q(1))*V2(2) | |
1765 | & +(P1(2)-Q(2))*V2(3) +(P1(3)-Q(3))*V2(4) | |
1766 | J12(0)=(P1(0)-P2(0))*V12 +SV1*V2(1) +SV2*V1(1) | |
1767 | J12(1)=(P1(1)-P2(1))*V12 +SV1*V2(2) +SV2*V1(2) | |
1768 | J12(2)=(P1(2)-P2(2))*V12 +SV1*V2(3) +SV2*V1(3) | |
1769 | J12(3)=(P1(3)-P2(3))*V12 +SV1*V2(4) +SV2*V1(4) | |
1770 | C | |
1771 | GS=-G/S | |
1772 | C | |
1773 | JVV(1) = GS*J12(0) | |
1774 | JVV(2) = GS*J12(1) | |
1775 | JVV(3) = GS*J12(2) | |
1776 | JVV(4) = GS*J12(3) | |
1777 | C | |
1778 | RETURN | |
1779 | END | |
1780 | C | |
1781 | C ---------------------------------------------------------------------- | |
1782 | C | |
1783 | SUBROUTINE JIOXXX(FI,FO,G,VMASS,VWIDTH , JIO) | |
1784 | C | |
1785 | C this subroutine computes an off-shell vector current from an external | |
1786 | C fermion pair. the vector boson propagator is given in feynman gauge | |
1787 | C for a massless vector and in unitary gauge for a massive vector. | |
1788 | C | |
1789 | C input: | |
1790 | C complex fi(6) : flow-in fermion |fi> | |
1791 | C complex fo(6) : flow-out fermion <fo| | |
1792 | C real g(2) : coupling constants gvf | |
1793 | C real vmass : mass of output vector v | |
1794 | C real vwidth : width of output vector v | |
1795 | C | |
1796 | C output: | |
1797 | C complex jio(6) : vector current j^mu(<fo|v|fi>) | |
1798 | C | |
1799 | #if defined(CERNLIB_IMPNONE) | |
1800 | IMPLICIT NONE | |
1801 | #endif | |
1802 | COMPLEX*16 FI(6),FO(6),JIO(6),C0,C1,C2,C3,CS,D | |
1803 | REAL*8 G(2),Q(0:3),VMASS,VWIDTH,Q2,VM2,DD | |
1804 | C | |
1805 | REAL*8 RXZERO, RXONE | |
1806 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
1807 | COMPLEX*16 CXIMAG | |
1808 | LOGICAL FIRST | |
1809 | SAVE CXIMAG,FIRST | |
1810 | DATA FIRST/.TRUE./ | |
1811 | C | |
1812 | C Fix compilation with g77 | |
1813 | IF(FIRST) THEN | |
1814 | FIRST=.FALSE. | |
1815 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
1816 | ENDIF | |
1817 | C | |
1818 | JIO(5) = FO(5)-FI(5) | |
1819 | JIO(6) = FO(6)-FI(6) | |
1820 | C | |
1821 | Q(0)=DBLE( JIO(5)) | |
1822 | Q(1)=DBLE( JIO(6)) | |
1823 | Q(2)=DIMAG(JIO(6)) | |
1824 | Q(3)=DIMAG(JIO(5)) | |
1825 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
1826 | VM2=VMASS**2 | |
1827 | C | |
1828 | IF (VMASS.NE.RXZERO) THEN | |
1829 | C | |
1830 | D=RXONE/DCMPLX( Q2-VM2 , MAX(SIGN( VMASS*VWIDTH ,Q2),RXZERO) ) | |
1831 | C for the running width, use below instead of the above d. | |
1832 | C d=r_one/dcmplx( q2-vm2 , max( vwidth*q2/vmass ,r_zero) ) | |
1833 | C | |
1834 | IF (G(2).NE.RXZERO) THEN | |
1835 | C | |
1836 | C0= G(1)*( FO(3)*FI(1)+FO(4)*FI(2)) | |
1837 | & +G(2)*( FO(1)*FI(3)+FO(2)*FI(4)) | |
1838 | C1= -G(1)*( FO(3)*FI(2)+FO(4)*FI(1)) | |
1839 | & +G(2)*( FO(1)*FI(4)+FO(2)*FI(3)) | |
1840 | C2=( G(1)*( FO(3)*FI(2)-FO(4)*FI(1)) | |
1841 | & +G(2)*(-FO(1)*FI(4)+FO(2)*FI(3)))*CXIMAG | |
1842 | C3= G(1)*(-FO(3)*FI(1)+FO(4)*FI(2)) | |
1843 | & +G(2)*( FO(1)*FI(3)-FO(2)*FI(4)) | |
1844 | ELSE | |
1845 | C | |
1846 | D=D*G(1) | |
1847 | C0= FO(3)*FI(1)+FO(4)*FI(2) | |
1848 | C1= -FO(3)*FI(2)-FO(4)*FI(1) | |
1849 | C2=( FO(3)*FI(2)-FO(4)*FI(1))*CXIMAG | |
1850 | C3= -FO(3)*FI(1)+FO(4)*FI(2) | |
1851 | END IF | |
1852 | C | |
1853 | CS=(Q(0)*C0-Q(1)*C1-Q(2)*C2-Q(3)*C3)/VM2 | |
1854 | C | |
1855 | JIO(1) = (C0-CS*Q(0))*D | |
1856 | JIO(2) = (C1-CS*Q(1))*D | |
1857 | JIO(3) = (C2-CS*Q(2))*D | |
1858 | JIO(4) = (C3-CS*Q(3))*D | |
1859 | C | |
1860 | ELSE | |
1861 | DD=RXONE/Q2 | |
1862 | C | |
1863 | IF (G(2).NE.RXZERO) THEN | |
1864 | JIO(1) = ( G(1)*( FO(3)*FI(1)+FO(4)*FI(2)) | |
1865 | & +G(2)*( FO(1)*FI(3)+FO(2)*FI(4)) )*DD | |
1866 | JIO(2) = (-G(1)*( FO(3)*FI(2)+FO(4)*FI(1)) | |
1867 | & +G(2)*( FO(1)*FI(4)+FO(2)*FI(3)) )*DD | |
1868 | JIO(3) = ( G(1)*( FO(3)*FI(2)-FO(4)*FI(1)) | |
1869 | & +G(2)*(-FO(1)*FI(4)+FO(2)*FI(3))) | |
1870 | $ *DCMPLX(RXZERO,DD) | |
1871 | JIO(4) = ( G(1)*(-FO(3)*FI(1)+FO(4)*FI(2)) | |
1872 | & +G(2)*( FO(1)*FI(3)-FO(2)*FI(4)) )*DD | |
1873 | C | |
1874 | ELSE | |
1875 | DD=DD*G(1) | |
1876 | C | |
1877 | JIO(1) = ( FO(3)*FI(1)+FO(4)*FI(2))*DD | |
1878 | JIO(2) = -( FO(3)*FI(2)+FO(4)*FI(1))*DD | |
1879 | JIO(3) = ( FO(3)*FI(2)-FO(4)*FI(1))*DCMPLX(RXZERO,DD) | |
1880 | JIO(4) = (-FO(3)*FI(1)+FO(4)*FI(2))*DD | |
1881 | END IF | |
1882 | END IF | |
1883 | C | |
1884 | RETURN | |
1885 | END | |
1886 | C ---------------------------------------------------------------------- | |
1887 | C | |
1888 | SUBROUTINE JSSXXX(S1,S2,G,VMASS,VWIDTH , JSS) | |
1889 | C | |
1890 | C This subroutine computes an off-shell vector current from the vector- | |
1891 | C scalar-scalar coupling. The coupling is absent in the minimal SM in | |
1892 | C unitary gauge. The propagator is given in Feynman gauge for a | |
1893 | C massless vector and in unitary gauge for a massive vector. | |
1894 | C | |
1895 | C INPUT: | |
1896 | C complex S1(3) : first scalar S1 | |
1897 | C complex S2(3) : second scalar S2 | |
1898 | C real G : coupling constant (S1 charge) | |
1899 | C real VMASS : mass of OUTPUT vector V | |
1900 | C real VWIDTH : width of OUTPUT vector V | |
1901 | C | |
1902 | C Examples of the coupling constant G for SUSY particles are as follows: | |
1903 | C ----------------------------------------------------------- | |
1904 | C | S1 | (Q,I3) of S1 || V=A | V=Z | V=W | | |
1905 | C ----------------------------------------------------------- | |
1906 | C | nu~_L | ( 0 , +1/2) || --- | GZN(1) | GWF(1) | | |
1907 | C | e~_L | ( -1 , -1/2) || GAL(1) | GZL(1) | GWF(1) | | |
1908 | C | u~_L | (+2/3 , +1/2) || GAU(1) | GZU(1) | GWF(1) | | |
1909 | C | d~_L | (-1/3 , -1/2) || GAD(1) | GZD(1) | GWF(1) | | |
1910 | C ----------------------------------------------------------- | |
1911 | C | e~_R-bar | ( +1 , 0 ) || -GAL(2) | -GZL(2) | -GWF(2) | | |
1912 | C | u~_R-bar | (-2/3 , 0 ) || -GAU(2) | -GZU(2) | -GWF(2) | | |
1913 | C | d~_R-bar | (+1/3 , 0 ) || -GAD(2) | -GZD(2) | -GWF(2) | | |
1914 | C ----------------------------------------------------------- | |
1915 | C where the S1 charge is defined by the flowing-OUT quantum number. | |
1916 | C | |
1917 | C OUTPUT: | |
1918 | C complex JSS(6) : vector current J^mu(V:S1,S2) | |
1919 | C | |
1920 | #if defined(CERNLIB_IMPNONE) | |
1921 | IMPLICIT NONE | |
1922 | #endif | |
1923 | COMPLEX*16 S1(3),S2(3),JSS(6),DG,ADG | |
1924 | REAL*8 PP(0:3),PA(0:3),Q(0:3),G,VMASS,VWIDTH,Q2,VM2,MP2,MA2,M2D | |
1925 | C | |
1926 | JSS(5) = S1(2)+S2(2) | |
1927 | JSS(6) = S1(3)+S2(3) | |
1928 | C | |
1929 | Q(0)=DBLE( JSS(5)) | |
1930 | Q(1)=DBLE( JSS(6)) | |
1931 | Q(2)=DIMAG(JSS(6)) | |
1932 | Q(3)=DIMAG(JSS(5)) | |
1933 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
1934 | VM2=VMASS**2 | |
1935 | C | |
1936 | IF (VMASS.EQ.0.) GOTO 10 | |
1937 | C | |
1938 | DG=G/DCMPLX( Q2-VM2, MAX(SIGN( VMASS*VWIDTH ,Q2),0.D0)) | |
1939 | C For the running width, use below instead of the above DG. | |
1940 | C DG=G/dCMPLX( Q2-VM2 , MAX( VWIDTH*Q2/VMASS ,0.) ) | |
1941 | C | |
1942 | ADG=DG*S1(1)*S2(1) | |
1943 | C | |
1944 | PP(0)=DBLE( S1(2)) | |
1945 | PP(1)=DBLE( S1(3)) | |
1946 | PP(2)=DIMAG(S1(3)) | |
1947 | PP(3)=DIMAG(S1(2)) | |
1948 | PA(0)=DBLE( S2(2)) | |
1949 | PA(1)=DBLE( S2(3)) | |
1950 | PA(2)=DIMAG(S2(3)) | |
1951 | PA(3)=DIMAG(S2(2)) | |
1952 | MP2=PP(0)**2-(PP(1)**2+PP(2)**2+PP(3)**2) | |
1953 | MA2=PA(0)**2-(PA(1)**2+PA(2)**2+PA(3)**2) | |
1954 | M2D=MP2-MA2 | |
1955 | C | |
1956 | JSS(1) = ADG*( (PP(0)-PA(0)) - Q(0)*M2D/VM2) | |
1957 | JSS(2) = ADG*( (PP(1)-PA(1)) - Q(1)*M2D/VM2) | |
1958 | JSS(3) = ADG*( (PP(2)-PA(2)) - Q(2)*M2D/VM2) | |
1959 | JSS(4) = ADG*( (PP(3)-PA(3)) - Q(3)*M2D/VM2) | |
1960 | C | |
1961 | RETURN | |
1962 | C | |
1963 | 10 ADG=G*S1(1)*S2(1)/Q2 | |
1964 | C | |
1965 | JSS(1) = ADG*DBLE( S1(2)-S2(2)) | |
1966 | JSS(2) = ADG*DBLE( S1(3)-S2(3)) | |
1967 | JSS(3) = ADG*DIMAG(S1(3)-S2(3)) | |
1968 | JSS(4) = ADG*DIMAG(S1(2)-S2(2)) | |
1969 | C | |
1970 | RETURN | |
1971 | END | |
1972 | C | |
1973 | C | |
1974 | C ---------------------------------------------------------------------- | |
1975 | C | |
1976 | SUBROUTINE JTIOXX(FI,FO,G , JIO) | |
1977 | C | |
1978 | C this subroutine computes an off-shell vector current from an external | |
1979 | C fermion pair. the vector boson propagator is not included in this | |
1980 | C routine. | |
1981 | C | |
1982 | C input: | |
1983 | C complex fi(6) : flow-in fermion |fi> | |
1984 | C complex fo(6) : flow-out fermion <fo| | |
1985 | C real g(2) : coupling constants gvf | |
1986 | C | |
1987 | C output: | |
1988 | C complex jio(6) : vector current j^mu(<fo|v|fi>) | |
1989 | C | |
1990 | #if defined(CERNLIB_IMPNONE) | |
1991 | IMPLICIT NONE | |
1992 | #endif | |
1993 | COMPLEX*16 FI(6),FO(6),JIO(6) | |
1994 | REAL*8 G(2) | |
1995 | C | |
1996 | REAL*8 RXZERO, RXONE | |
1997 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
1998 | COMPLEX*16 CXIMAG | |
1999 | LOGICAL FIRST | |
2000 | SAVE CXIMAG,FIRST | |
2001 | DATA FIRST/.TRUE./ | |
2002 | C | |
2003 | C Fix compilation with g77 | |
2004 | IF(FIRST) THEN | |
2005 | FIRST=.FALSE. | |
2006 | CXIMAG=DCMPLX( RXZERO, RXONE ) | |
2007 | ENDIF | |
2008 | C | |
2009 | JIO(5) = FO(5)-FI(5) | |
2010 | JIO(6) = FO(6)-FI(6) | |
2011 | C | |
2012 | IF ( G(2) .NE. RXZERO ) THEN | |
2013 | JIO(1) = ( G(1)*( FO(3)*FI(1)+FO(4)*FI(2)) | |
2014 | & +G(2)*( FO(1)*FI(3)+FO(2)*FI(4)) ) | |
2015 | JIO(2) = (-G(1)*( FO(3)*FI(2)+FO(4)*FI(1)) | |
2016 | & +G(2)*( FO(1)*FI(4)+FO(2)*FI(3)) ) | |
2017 | JIO(3) = ( G(1)*( FO(3)*FI(2)-FO(4)*FI(1)) | |
2018 | & +G(2)*(-FO(1)*FI(4)+FO(2)*FI(3)) )*CXIMAG | |
2019 | JIO(4) = ( G(1)*(-FO(3)*FI(1)+FO(4)*FI(2)) | |
2020 | & +G(2)*( FO(1)*FI(3)-FO(2)*FI(4)) ) | |
2021 | C | |
2022 | ELSE | |
2023 | JIO(1) = ( FO(3)*FI(1)+FO(4)*FI(2))*G(1) | |
2024 | JIO(2) = -( FO(3)*FI(2)+FO(4)*FI(1))*G(1) | |
2025 | JIO(3) = ( FO(3)*FI(2)-FO(4)*FI(1))*DCMPLX(RXZERO,G(1)) | |
2026 | JIO(4) = (-FO(3)*FI(1)+FO(4)*FI(2))*G(1) | |
2027 | END IF | |
2028 | C | |
2029 | RETURN | |
2030 | END | |
2031 | C ---------------------------------------------------------------------- | |
2032 | C | |
2033 | SUBROUTINE JVSSXX(VC,S1,S2,G,VMASS,VWIDTH , JVSS) | |
2034 | C | |
2035 | C This subroutine computes an off-shell vector current from the vector- | |
2036 | C vector-scalar-scalar coupling. The vector propagator is given in | |
2037 | C Feynman gauge for a massless vector and in unitary gauge for a massive | |
2038 | C vector. | |
2039 | C | |
2040 | C INPUT: | |
2041 | C complex VC(6) : input vector V | |
2042 | C complex S1(3) : first scalar S1 | |
2043 | C complex S2(3) : second scalar S2 | |
2044 | C real G : coupling constant GVVHH | |
2045 | C real VMASS : mass of OUTPUT vector V' | |
2046 | C real VWIDTH : width of OUTPUT vector V' | |
2047 | C | |
2048 | C OUTPUT: | |
2049 | C complex JVSS(6) : vector current J^mu(V':V,S1,S2) | |
2050 | C | |
2051 | #if defined(CERNLIB_IMPNONE) | |
2052 | IMPLICIT NONE | |
2053 | #endif | |
2054 | COMPLEX*16 VC(6),S1(3),S2(3),JVSS(6),DG | |
2055 | REAL*8 Q(0:3),G,VMASS,VWIDTH,Q2,VK,VM2 | |
2056 | C | |
2057 | JVSS(5) = VC(5)+S1(2)+S2(2) | |
2058 | JVSS(6) = VC(6)+S1(3)+S2(3) | |
2059 | C | |
2060 | Q(0)=DBLE( JVSS(5)) | |
2061 | Q(1)=DBLE( JVSS(6)) | |
2062 | Q(2)=DIMAG(JVSS(6)) | |
2063 | Q(3)=DIMAG(JVSS(5)) | |
2064 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
2065 | VM2=VMASS**2 | |
2066 | C | |
2067 | IF (VMASS.EQ.0.) GOTO 10 | |
2068 | C | |
2069 | DG=G*S1(1)*S2(1)/DCMPLX( Q2-VM2,MAX(SIGN( VMASS*VWIDTH,Q2),0.D0)) | |
2070 | C For the running width, use below instead of the above DG. | |
2071 | C DG=G*S1(1)*S2(1)/CMPLX( Q2-VM2 , MAX( VWIDTH*Q2/VMASS ,0.)) | |
2072 | C | |
2073 | VK=(Q(0)*VC(1)-Q(1)*VC(2)-Q(2)*VC(3)-Q(3)*VC(4))/VM2 | |
2074 | C | |
2075 | JVSS(1) = DG*(VC(1)-VK*Q(0)) | |
2076 | JVSS(2) = DG*(VC(2)-VK*Q(1)) | |
2077 | JVSS(3) = DG*(VC(3)-VK*Q(2)) | |
2078 | JVSS(4) = DG*(VC(4)-VK*Q(3)) | |
2079 | C | |
2080 | RETURN | |
2081 | C | |
2082 | 10 DG= G*S1(1)*S2(1)/Q2 | |
2083 | C | |
2084 | JVSS(1) = DG*VC(1) | |
2085 | JVSS(2) = DG*VC(2) | |
2086 | JVSS(3) = DG*VC(3) | |
2087 | JVSS(4) = DG*VC(4) | |
2088 | C | |
2089 | RETURN | |
2090 | END | |
2091 | C | |
2092 | C | |
2093 | C ---------------------------------------------------------------------- | |
2094 | C | |
2095 | SUBROUTINE JVSXXX(VC,SC,G,VMASS,VWIDTH , JVS) | |
2096 | C | |
2097 | C this subroutine computes an off-shell vector current from the vector- | |
2098 | C vector-scalar coupling. the vector propagator is given in feynman | |
2099 | C gauge for a massless vector and in unitary gauge for a massive vector. | |
2100 | C | |
2101 | C input: | |
2102 | C complex vc(6) : input vector v | |
2103 | C complex sc(3) : input scalar s | |
2104 | C real g : coupling constant gvvh | |
2105 | C real vmass : mass of output vector v' | |
2106 | C real vwidth : width of output vector v' | |
2107 | C | |
2108 | C output: | |
2109 | C complex jvs(6) : vector current j^mu(v':v,s) | |
2110 | C | |
2111 | #if defined(CERNLIB_IMPNONE) | |
2112 | IMPLICIT NONE | |
2113 | #endif | |
2114 | COMPLEX*16 VC(6),SC(3),JVS(6),DG,VK | |
2115 | REAL*8 Q(0:3),VMASS,VWIDTH,Q2,VM2,G | |
2116 | C | |
2117 | JVS(5) = VC(5)+SC(2) | |
2118 | JVS(6) = VC(6)+SC(3) | |
2119 | C | |
2120 | Q(0)=DBLE( JVS(5)) | |
2121 | Q(1)=DBLE( JVS(6)) | |
2122 | Q(2)=DIMAG(JVS(6)) | |
2123 | Q(3)=DIMAG(JVS(5)) | |
2124 | Q2=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
2125 | VM2=VMASS**2 | |
2126 | C | |
2127 | IF (VMASS.EQ.0.) GOTO 10 | |
2128 | C | |
2129 | DG=G*SC(1)/DCMPLX( Q2-VM2 , MAX(DSIGN( VMASS*VWIDTH ,Q2),0.D0) ) | |
2130 | C for the running width, use below instead of the above dg. | |
2131 | C dg=g*sc(1)/dcmplx( q2-vm2 , max( vwidth*q2/vmass ,0.) ) | |
2132 | C | |
2133 | VK=(-Q(0)*VC(1)+Q(1)*VC(2)+Q(2)*VC(3)+Q(3)*VC(4))/VM2 | |
2134 | C | |
2135 | JVS(1) = DG*(Q(0)*VK+VC(1)) | |
2136 | JVS(2) = DG*(Q(1)*VK+VC(2)) | |
2137 | JVS(3) = DG*(Q(2)*VK+VC(3)) | |
2138 | JVS(4) = DG*(Q(3)*VK+VC(4)) | |
2139 | C | |
2140 | RETURN | |
2141 | C | |
2142 | 10 DG=G*SC(1)/Q2 | |
2143 | C | |
2144 | JVS(1) = DG*VC(1) | |
2145 | JVS(2) = DG*VC(2) | |
2146 | JVS(3) = DG*VC(3) | |
2147 | JVS(4) = DG*VC(4) | |
2148 | C | |
2149 | RETURN | |
2150 | END | |
2151 | ||
2152 | ||
2153 | C | |
2154 | C ---------------------------------------------------------------------- | |
2155 | C | |
2156 | SUBROUTINE JVVXXX(V1,V2,G,VMASS,VWIDTH , JVV) | |
2157 | C | |
2158 | C this subroutine computes an off-shell vector current from the three- | |
2159 | C point gauge boson coupling. the vector propagator is given in feynman | |
2160 | C gauge for a massless vector and in unitary gauge for a massive vector. | |
2161 | C | |
2162 | C input: | |
2163 | C complex v1(6) : first vector v1 | |
2164 | C complex v2(6) : second vector v2 | |
2165 | C real g : coupling constant (see the table below) | |
2166 | C real vmass : mass of output vector v | |
2167 | C real vwidth : width of output vector v | |
2168 | C | |
2169 | C the possible sets of the inputs are as follows: | |
2170 | C ------------------------------------------------------------------ | |
2171 | C | v1 | v2 | jvv | g | vmass | vwidth | | |
2172 | C ------------------------------------------------------------------ | |
2173 | C | w- | w+ | a/z | gwwa/gwwz | 0./zmass | 0./zwidth | | |
2174 | C | w3/a/z | w- | w+ | gw/gwwa/gwwz | wmass | wwidth | | |
2175 | C | w+ | w3/a/z | w- | gw/gwwa/gwwz | wmass | wwidth | | |
2176 | C ------------------------------------------------------------------ | |
2177 | C where all the bosons are defined by the flowing-out quantum number. | |
2178 | C | |
2179 | C output: | |
2180 | C complex jvv(6) : vector current j^mu(v:v1,v2) | |
2181 | C | |
2182 | #if defined(CERNLIB_IMPNONE) | |
2183 | IMPLICIT NONE | |
2184 | #endif | |
2185 | COMPLEX*16 V1(6),V2(6),JVV(6),J12(0:3),JS,DG, | |
2186 | & SV1,SV2,S11,S12,S21,S22,V12 | |
2187 | REAL*8 P1(0:3),P2(0:3),Q(0:3),G,VMASS,VWIDTH,GS,S,VM2,M1,M2 | |
2188 | C | |
2189 | REAL*8 RXZERO | |
2190 | PARAMETER( RXZERO=0.0D0 ) | |
2191 | C | |
2192 | JVV(5) = V1(5)+V2(5) | |
2193 | JVV(6) = V1(6)+V2(6) | |
2194 | C | |
2195 | P1(0)=DBLE( V1(5)) | |
2196 | P1(1)=DBLE( V1(6)) | |
2197 | P1(2)=DIMAG(V1(6)) | |
2198 | P1(3)=DIMAG(V1(5)) | |
2199 | P2(0)=DBLE( V2(5)) | |
2200 | P2(1)=DBLE( V2(6)) | |
2201 | P2(2)=DIMAG(V2(6)) | |
2202 | P2(3)=DIMAG(V2(5)) | |
2203 | Q(0)=-DBLE( JVV(5)) | |
2204 | Q(1)=-DBLE( JVV(6)) | |
2205 | Q(2)=-DIMAG(JVV(6)) | |
2206 | Q(3)=-DIMAG(JVV(5)) | |
2207 | S=Q(0)**2-(Q(1)**2+Q(2)**2+Q(3)**2) | |
2208 | C | |
2209 | V12=V1(1)*V2(1)-V1(2)*V2(2)-V1(3)*V2(3)-V1(4)*V2(4) | |
2210 | SV1= (P2(0)-Q(0))*V1(1) -(P2(1)-Q(1))*V1(2) | |
2211 | & -(P2(2)-Q(2))*V1(3) -(P2(3)-Q(3))*V1(4) | |
2212 | SV2=-(P1(0)-Q(0))*V2(1) +(P1(1)-Q(1))*V2(2) | |
2213 | & +(P1(2)-Q(2))*V2(3) +(P1(3)-Q(3))*V2(4) | |
2214 | J12(0)=(P1(0)-P2(0))*V12 +SV1*V2(1) +SV2*V1(1) | |
2215 | J12(1)=(P1(1)-P2(1))*V12 +SV1*V2(2) +SV2*V1(2) | |
2216 | J12(2)=(P1(2)-P2(2))*V12 +SV1*V2(3) +SV2*V1(3) | |
2217 | J12(3)=(P1(3)-P2(3))*V12 +SV1*V2(4) +SV2*V1(4) | |
2218 | C | |
2219 | IF ( VMASS .NE. RXZERO ) THEN | |
2220 | VM2=VMASS**2 | |
2221 | M1=P1(0)**2-(P1(1)**2+P1(2)**2+P1(3)**2) | |
2222 | M2=P2(0)**2-(P2(1)**2+P2(2)**2+P2(3)**2) | |
2223 | S11=P1(0)*V1(1)-P1(1)*V1(2)-P1(2)*V1(3)-P1(3)*V1(4) | |
2224 | S12=P1(0)*V2(1)-P1(1)*V2(2)-P1(2)*V2(3)-P1(3)*V2(4) | |
2225 | S21=P2(0)*V1(1)-P2(1)*V1(2)-P2(2)*V1(3)-P2(3)*V1(4) | |
2226 | S22=P2(0)*V2(1)-P2(1)*V2(2)-P2(2)*V2(3)-P2(3)*V2(4) | |
2227 | JS=(V12*(-M1+M2) +S11*S12 -S21*S22)/VM2 | |
2228 | C | |
2229 | DG=-G/DCMPLX( S-VM2 , MAX(SIGN( VMASS*VWIDTH ,S),RXZERO) ) | |
2230 | C | |
2231 | C for the running width, use below instead of the above dg. | |
2232 | C dg=-g/dcmplx( s-vm2 , max( vwidth*s/vmass ,r_zero) ) | |
2233 | C | |
2234 | JVV(1) = DG*(J12(0)-Q(0)*JS) | |
2235 | JVV(2) = DG*(J12(1)-Q(1)*JS) | |
2236 | JVV(3) = DG*(J12(2)-Q(2)*JS) | |
2237 | JVV(4) = DG*(J12(3)-Q(3)*JS) | |
2238 | C | |
2239 | ELSE | |
2240 | GS=-G/S | |
2241 | C | |
2242 | JVV(1) = GS*J12(0) | |
2243 | JVV(2) = GS*J12(1) | |
2244 | JVV(3) = GS*J12(2) | |
2245 | JVV(4) = GS*J12(3) | |
2246 | END IF | |
2247 | C | |
2248 | RETURN | |
2249 | END | |
2250 | C | |
2251 | C ---------------------------------------------------------------------- | |
2252 | C | |
2253 | SUBROUTINE JW3WXX(W1,W2,W3,G1,G2,WMASS,WWIDTH,VMASS,VWIDTH , JW3W) | |
2254 | C | |
2255 | C this subroutine computes an off-shell w+, w-, w3, z or photon current | |
2256 | C from the four-point gauge boson coupling, including the contributions | |
2257 | C of w exchange diagrams. the vector propagator is given in feynman | |
2258 | C gauge for a photon and in unitary gauge for w and z bosons. if one | |
2259 | C sets wmass=0.0, then the ggg-->g current is given (see sect 2.9.1 of | |
2260 | C the manual). | |
2261 | C | |
2262 | C input: | |
2263 | C complex w1(6) : first vector w1 | |
2264 | C complex w2(6) : second vector w2 | |
2265 | C complex w3(6) : third vector w3 | |
2266 | C real g1 : first coupling constant | |
2267 | C real g2 : second coupling constant | |
2268 | C (see the table below) | |
2269 | C real wmass : mass of internal w | |
2270 | C real wwidth : width of internal w | |
2271 | C real vmass : mass of output w' | |
2272 | C real vwidth : width of output w' | |
2273 | C | |
2274 | C the possible sets of the inputs are as follows: | |
2275 | C ------------------------------------------------------------------- | |
2276 | C | w1 | w2 | w3 | g1 | g2 |wmass|wwidth|vmass|vwidth || jw3w | | |
2277 | C ------------------------------------------------------------------- | |
2278 | C | w- | w3 | w+ | gw |gwwz|wmass|wwidth|zmass|zwidth || z | | |
2279 | C | w- | w3 | w+ | gw |gwwa|wmass|wwidth| 0. | 0. || a | | |
2280 | C | w- | z | w+ |gwwz|gwwz|wmass|wwidth|zmass|zwidth || z | | |
2281 | C | w- | z | w+ |gwwz|gwwa|wmass|wwidth| 0. | 0. || a | | |
2282 | C | w- | a | w+ |gwwa|gwwz|wmass|wwidth|zmass|zwidth || z | | |
2283 | C | w- | a | w+ |gwwa|gwwa|wmass|wwidth| 0. | 0. || a | | |
2284 | C ------------------------------------------------------------------- | |
2285 | C | w3 | w- | w3 | gw | gw |wmass|wwidth|wmass|wwidth || w+ | | |
2286 | C | w3 | w+ | w3 | gw | gw |wmass|wwidth|wmass|wwidth || w- | | |
2287 | C | w3 | w- | z | gw |gwwz|wmass|wwidth|wmass|wwidth || w+ | | |
2288 | C | w3 | w+ | z | gw |gwwz|wmass|wwidth|wmass|wwidth || w- | | |
2289 | C | w3 | w- | a | gw |gwwa|wmass|wwidth|wmass|wwidth || w+ | | |
2290 | C | w3 | w+ | a | gw |gwwa|wmass|wwidth|wmass|wwidth || w- | | |
2291 | C | z | w- | z |gwwz|gwwz|wmass|wwidth|wmass|wwidth || w+ | | |
2292 | C | z | w+ | z |gwwz|gwwz|wmass|wwidth|wmass|wwidth || w- | | |
2293 | C | z | w- | a |gwwz|gwwa|wmass|wwidth|wmass|wwidth || w+ | | |
2294 | C | z | w+ | a |gwwz|gwwa|wmass|wwidth|wmass|wwidth || w- | | |
2295 | C | a | w- | a |gwwa|gwwa|wmass|wwidth|wmass|wwidth || w+ | | |
2296 | C | a | w+ | a |gwwa|gwwa|wmass|wwidth|wmass|wwidth || w- | | |
2297 | C ------------------------------------------------------------------- | |
2298 | C where all the bosons are defined by the flowing-out quantum number. | |
2299 | C | |
2300 | C output: | |
2301 | C complex jw3w(6) : w current j^mu(w':w1,w2,w3) | |
2302 | C | |
2303 | #if defined(CERNLIB_IMPNONE) | |
2304 | IMPLICIT NONE | |
2305 | #endif | |
2306 | COMPLEX*16 W1(6),W2(6),W3(6),JW3W(6) | |
2307 | COMPLEX*16 DW1(0:3),DW2(0:3),DW3(0:3), | |
2308 | & JJ(0:3),J4(0:3), | |
2309 | & DV,W12,W32,W13, | |
2310 | & JQ | |
2311 | REAL*8 G1,G2,WMASS,WWIDTH,VMASS,VWIDTH | |
2312 | REAL*8 P1(0:3),P2(0:3),P3(0:3),Q(0:3), | |
2313 | & DG2,DMV,DWV,MV2,Q2 | |
2314 | C | |
2315 | REAL*8 RXZERO | |
2316 | PARAMETER( RXZERO=0.0D0 ) | |
2317 | C | |
2318 | JW3W(5) = W1(5)+W2(5)+W3(5) | |
2319 | JW3W(6) = W1(6)+W2(6)+W3(6) | |
2320 | C | |
2321 | DW1(0)=DCMPLX(W1(1)) | |
2322 | DW1(1)=DCMPLX(W1(2)) | |
2323 | DW1(2)=DCMPLX(W1(3)) | |
2324 | DW1(3)=DCMPLX(W1(4)) | |
2325 | DW2(0)=DCMPLX(W2(1)) | |
2326 | DW2(1)=DCMPLX(W2(2)) | |
2327 | DW2(2)=DCMPLX(W2(3)) | |
2328 | DW2(3)=DCMPLX(W2(4)) | |
2329 | DW3(0)=DCMPLX(W3(1)) | |
2330 | DW3(1)=DCMPLX(W3(2)) | |
2331 | DW3(2)=DCMPLX(W3(3)) | |
2332 | DW3(3)=DCMPLX(W3(4)) | |
2333 | P1(0)=DBLE( W1(5)) | |
2334 | P1(1)=DBLE( W1(6)) | |
2335 | P1(2)=DBLE(DIMAG(W1(6))) | |
2336 | P1(3)=DBLE(DIMAG(W1(5))) | |
2337 | P2(0)=DBLE( W2(5)) | |
2338 | P2(1)=DBLE( W2(6)) | |
2339 | P2(2)=DBLE(DIMAG(W2(6))) | |
2340 | P2(3)=DBLE(DIMAG(W2(5))) | |
2341 | P3(0)=DBLE( W3(5)) | |
2342 | P3(1)=DBLE( W3(6)) | |
2343 | P3(2)=DBLE(DIMAG(W3(6))) | |
2344 | P3(3)=DBLE(DIMAG(W3(5))) | |
2345 | Q(0)=-(P1(0)+P2(0)+P3(0)) | |
2346 | Q(1)=-(P1(1)+P2(1)+P3(1)) | |
2347 | Q(2)=-(P1(2)+P2(2)+P3(2)) | |
2348 | Q(3)=-(P1(3)+P2(3)+P3(3)) | |
2349 | ||
2350 | ||
2351 | Q2 =Q(0)**2 -(Q(1)**2 +Q(2)**2 +Q(3)**2) | |
2352 | DG2=DBLE(G1)*DBLE(G2) | |
2353 | DMV=DBLE(VMASS) | |
2354 | DWV=DBLE(VWIDTH) | |
2355 | MV2=DMV**2 | |
2356 | IF (VMASS.EQ. RXZERO) THEN | |
2357 | DV = 1.0D0/DCMPLX( Q2 ) | |
2358 | ELSE | |
2359 | DV = 1.0D0/DCMPLX( Q2 -MV2 , DMAX1(DSIGN(DMV*DWV,Q2 ),0.D0) ) | |
2360 | ENDIF | |
2361 | C for the running width, use below instead of the above dv. | |
2362 | C dv = 1.0d0/dcmplx( q2 -mv2 , dmax1(dwv*q2/dmv,0.d0) ) | |
2363 | C | |
2364 | W12=DW1(0)*DW2(0)-DW1(1)*DW2(1)-DW1(2)*DW2(2)-DW1(3)*DW2(3) | |
2365 | W32=DW3(0)*DW2(0)-DW3(1)*DW2(1)-DW3(2)*DW2(2)-DW3(3)*DW2(3) | |
2366 | C | |
2367 | IF ( WMASS .NE. RXZERO ) THEN | |
2368 | W13=DW1(0)*DW3(0)-DW1(1)*DW3(1)-DW1(2)*DW3(2)-DW1(3)*DW3(3) | |
2369 | C | |
2370 | J4(0)=DG2*( DW1(0)*W32 + DW3(0)*W12 - 2.D0*DW2(0)*W13 ) | |
2371 | J4(1)=DG2*( DW1(1)*W32 + DW3(1)*W12 - 2.D0*DW2(1)*W13 ) | |
2372 | J4(2)=DG2*( DW1(2)*W32 + DW3(2)*W12 - 2.D0*DW2(2)*W13 ) | |
2373 | J4(3)=DG2*( DW1(3)*W32 + DW3(3)*W12 - 2.D0*DW2(3)*W13 ) | |
2374 | C | |
2375 | JJ(0)=J4(0) | |
2376 | JJ(1)=J4(1) | |
2377 | JJ(2)=J4(2) | |
2378 | JJ(3)=J4(3) | |
2379 | ||
2380 | ELSE | |
2381 | C | |
2382 | W12=DW1(0)*DW2(0)-DW1(1)*DW2(1)-DW1(2)*DW2(2)-DW1(3)*DW2(3) | |
2383 | W32=DW3(0)*DW2(0)-DW3(1)*DW2(1)-DW3(2)*DW2(2)-DW3(3)*DW2(3) | |
2384 | W13=DW1(0)*DW3(0)-DW1(1)*DW3(1)-DW1(2)*DW3(2)-DW1(3)*DW3(3) | |
2385 | C | |
2386 | J4(0)=DG2*( DW1(0)*W32 - DW2(0)*W13 ) | |
2387 | J4(1)=DG2*( DW1(1)*W32 - DW2(1)*W13 ) | |
2388 | J4(2)=DG2*( DW1(2)*W32 - DW2(2)*W13 ) | |
2389 | J4(3)=DG2*( DW1(3)*W32 - DW2(3)*W13 ) | |
2390 | C | |
2391 | JJ(0)=J4(0) | |
2392 | JJ(1)=J4(1) | |
2393 | JJ(2)=J4(2) | |
2394 | JJ(3)=J4(3) | |
2395 | ||
2396 | END IF | |
2397 | C | |
2398 | IF ( VMASS .NE. RXZERO ) THEN | |
2399 | C | |
2400 | JQ=(JJ(0)*Q(0)-JJ(1)*Q(1)-JJ(2)*Q(2)-JJ(3)*Q(3))/MV2 | |
2401 | C | |
2402 | JW3W(1) = DCMPLX( (JJ(0)-JQ*Q(0))*DV ) | |
2403 | JW3W(2) = DCMPLX( (JJ(1)-JQ*Q(1))*DV ) | |
2404 | JW3W(3) = DCMPLX( (JJ(2)-JQ*Q(2))*DV ) | |
2405 | JW3W(4) = DCMPLX( (JJ(3)-JQ*Q(3))*DV ) | |
2406 | C | |
2407 | ELSE | |
2408 | C | |
2409 | JW3W(1) = DCMPLX( JJ(0)*DV ) | |
2410 | JW3W(2) = DCMPLX( JJ(1)*DV ) | |
2411 | JW3W(3) = DCMPLX( JJ(2)*DV ) | |
2412 | JW3W(4) = DCMPLX( JJ(3)*DV ) | |
2413 | END IF | |
2414 | C | |
2415 | RETURN | |
2416 | END | |
2417 | C | |
2418 | C ---------------------------------------------------------------------- | |
2419 | C | |
2420 | SUBROUTINE JWWWXX(W1,W2,W3,GWWA,GWWZ,ZMASS,ZWIDTH,WMASS,WWIDTH , | |
2421 | & JWWW) | |
2422 | C | |
2423 | C this subroutine computes an off-shell w+/w- current from the four- | |
2424 | C point gauge boson coupling, including the contributions of photon and | |
2425 | C z exchanges. the vector propagators for the output w and the internal | |
2426 | C z bosons are given in unitary gauge, and that of the internal photon | |
2427 | C is given in feynman gauge. | |
2428 | C | |
2429 | C input: | |
2430 | C complex w1(6) : first vector w1 | |
2431 | C complex w2(6) : second vector w2 | |
2432 | C complex w3(6) : third vector w3 | |
2433 | C real gwwa : coupling constant of w and a gwwa | |
2434 | C real gwwz : coupling constant of w and z gwwz | |
2435 | C real zmass : mass of internal z | |
2436 | C real zwidth : width of internal z | |
2437 | C real wmass : mass of output w | |
2438 | C real wwidth : width of output w | |
2439 | C | |
2440 | C the possible sets of the inputs are as follows: | |
2441 | C ------------------------------------------------------------------- | |
2442 | C | w1 | w2 | w3 |gwwa|gwwz|zmass|zwidth|wmass|wwidth || jwww | | |
2443 | C ------------------------------------------------------------------- | |
2444 | C | w- | w+ | w- |gwwa|gwwz|zmass|zwidth|wmass|wwidth || w+ | | |
2445 | C | w+ | w- | w+ |gwwa|gwwz|zmass|zwidth|wmass|wwidth || w- | | |
2446 | C ------------------------------------------------------------------- | |
2447 | C where all the bosons are defined by the flowing-out quantum number. | |
2448 | C | |
2449 | C output: | |
2450 | C complex jwww(6) : w current j^mu(w':w1,w2,w3) | |
2451 | C | |
2452 | #if defined(CERNLIB_IMPNONE) | |
2453 | IMPLICIT NONE | |
2454 | #endif | |
2455 | COMPLEX*16 W1(6),W2(6),W3(6),JWWW(6) | |
2456 | COMPLEX*16 DW1(0:3),DW2(0:3),DW3(0:3), | |
2457 | & JJ(0:3),JS(0:3),JT(0:3),J4(0:3), | |
2458 | & JT12(0:3),JT32(0:3),J12(0:3),J32(0:3), | |
2459 | & DZS,DZT,DW,W12,W32,W13,P1W2,P2W1,P3W2,P2W3, | |
2460 | & JK12,JK32,JSW3,JTW1,P3JS,KSW3,P1JT,KTW1,JQ | |
2461 | REAL*8 GWWA,GWWZ,ZMASS,ZWIDTH,WMASS,WWIDTH | |
2462 | REAL*8 P1(0:3),P2(0:3),P3(0:3),Q(0:3),KS(0:3),KT(0:3), | |
2463 | & DGWWA2,DGWWZ2,DGW2,DMZ,DWZ,DMW,DWW,MZ2,MW2,Q2,KS2,KT2, | |
2464 | & DAS,DAT | |
2465 | C | |
2466 | JWWW(5) = W1(5)+W2(5)+W3(5) | |
2467 | JWWW(6) = W1(6)+W2(6)+W3(6) | |
2468 | C | |
2469 | DW1(0)=DCMPLX(W1(1)) | |
2470 | DW1(1)=DCMPLX(W1(2)) | |
2471 | DW1(2)=DCMPLX(W1(3)) | |
2472 | DW1(3)=DCMPLX(W1(4)) | |
2473 | DW2(0)=DCMPLX(W2(1)) | |
2474 | DW2(1)=DCMPLX(W2(2)) | |
2475 | DW2(2)=DCMPLX(W2(3)) | |
2476 | DW2(3)=DCMPLX(W2(4)) | |
2477 | DW3(0)=DCMPLX(W3(1)) | |
2478 | DW3(1)=DCMPLX(W3(2)) | |
2479 | DW3(2)=DCMPLX(W3(3)) | |
2480 | DW3(3)=DCMPLX(W3(4)) | |
2481 | P1(0)=DBLE( W1(5)) | |
2482 | P1(1)=DBLE( W1(6)) | |
2483 | P1(2)=DBLE(DIMAG(W1(6))) | |
2484 | P1(3)=DBLE(DIMAG(W1(5))) | |
2485 | P2(0)=DBLE( W2(5)) | |
2486 | P2(1)=DBLE( W2(6)) | |
2487 | P2(2)=DBLE(DIMAG(W2(6))) | |
2488 | P2(3)=DBLE(DIMAG(W2(5))) | |
2489 | P3(0)=DBLE( W3(5)) | |
2490 | P3(1)=DBLE( W3(6)) | |
2491 | P3(2)=DBLE(DIMAG(W3(6))) | |
2492 | P3(3)=DBLE(DIMAG(W3(5))) | |
2493 | Q(0)=-(P1(0)+P2(0)+P3(0)) | |
2494 | Q(1)=-(P1(1)+P2(1)+P3(1)) | |
2495 | Q(2)=-(P1(2)+P2(2)+P3(2)) | |
2496 | Q(3)=-(P1(3)+P2(3)+P3(3)) | |
2497 | KS(0)=P1(0)+P2(0) | |
2498 | KS(1)=P1(1)+P2(1) | |
2499 | KS(2)=P1(2)+P2(2) | |
2500 | KS(3)=P1(3)+P2(3) | |
2501 | KT(0)=P2(0)+P3(0) | |
2502 | KT(1)=P2(1)+P3(1) | |
2503 | KT(2)=P2(2)+P3(2) | |
2504 | KT(3)=P2(3)+P3(3) | |
2505 | Q2 =Q(0)**2 -(Q(1)**2 +Q(2)**2 +Q(3)**2) | |
2506 | KS2=KS(0)**2-(KS(1)**2+KS(2)**2+KS(3)**2) | |
2507 | KT2=KT(0)**2-(KT(1)**2+KT(2)**2+KT(3)**2) | |
2508 | DGWWA2=DBLE(GWWA)**2 | |
2509 | DGWWZ2=DBLE(GWWZ)**2 | |
2510 | DGW2 =DGWWA2+DGWWZ2 | |
2511 | DMZ=DBLE(ZMASS) | |
2512 | DWZ=DBLE(ZWIDTH) | |
2513 | DMW=DBLE(WMASS) | |
2514 | DWW=DBLE(WWIDTH) | |
2515 | MZ2=DMZ**2 | |
2516 | MW2=DMW**2 | |
2517 | C | |
2518 | DAS=-DGWWA2/KS2 | |
2519 | DAT=-DGWWA2/KT2 | |
2520 | DZS=-DGWWZ2/DCMPLX( KS2-MZ2 , DMAX1(DSIGN(DMZ*DWZ,KS2),0.D0) ) | |
2521 | DZT=-DGWWZ2/DCMPLX( KT2-MZ2 , DMAX1(DSIGN(DMZ*DWZ,KT2),0.D0) ) | |
2522 | DW =-1.0D0/DCMPLX( Q2 -MW2 , DMAX1(DSIGN(DMW*DWW,Q2 ),0.D0) ) | |
2523 | C for the running width, use below instead of the above dw. | |
2524 | C dw =-1.0d0/dcmplx( q2 -mw2 , dmax1(dww*q2/dmw,0.d0) ) | |
2525 | C | |
2526 | W12=DW1(0)*DW2(0)-DW1(1)*DW2(1)-DW1(2)*DW2(2)-DW1(3)*DW2(3) | |
2527 | W32=DW3(0)*DW2(0)-DW3(1)*DW2(1)-DW3(2)*DW2(2)-DW3(3)*DW2(3) | |
2528 | C | |
2529 | P1W2= (P1(0)+KS(0))*DW2(0)-(P1(1)+KS(1))*DW2(1) | |
2530 | & -(P1(2)+KS(2))*DW2(2)-(P1(3)+KS(3))*DW2(3) | |
2531 | P2W1= (P2(0)+KS(0))*DW1(0)-(P2(1)+KS(1))*DW1(1) | |
2532 | & -(P2(2)+KS(2))*DW1(2)-(P2(3)+KS(3))*DW1(3) | |
2533 | P3W2= (P3(0)+KT(0))*DW2(0)-(P3(1)+KT(1))*DW2(1) | |
2534 | & -(P3(2)+KT(2))*DW2(2)-(P3(3)+KT(3))*DW2(3) | |
2535 | P2W3= (P2(0)+KT(0))*DW3(0)-(P2(1)+KT(1))*DW3(1) | |
2536 | & -(P2(2)+KT(2))*DW3(2)-(P2(3)+KT(3))*DW3(3) | |
2537 | C | |
2538 | JT12(0)= (P1(0)-P2(0))*W12 + P2W1*DW2(0) - P1W2*DW1(0) | |
2539 | JT12(1)= (P1(1)-P2(1))*W12 + P2W1*DW2(1) - P1W2*DW1(1) | |
2540 | JT12(2)= (P1(2)-P2(2))*W12 + P2W1*DW2(2) - P1W2*DW1(2) | |
2541 | JT12(3)= (P1(3)-P2(3))*W12 + P2W1*DW2(3) - P1W2*DW1(3) | |
2542 | JT32(0)= (P3(0)-P2(0))*W32 + P2W3*DW2(0) - P3W2*DW3(0) | |
2543 | JT32(1)= (P3(1)-P2(1))*W32 + P2W3*DW2(1) - P3W2*DW3(1) | |
2544 | JT32(2)= (P3(2)-P2(2))*W32 + P2W3*DW2(2) - P3W2*DW3(2) | |
2545 | JT32(3)= (P3(3)-P2(3))*W32 + P2W3*DW2(3) - P3W2*DW3(3) | |
2546 | C | |
2547 | JK12=(JT12(0)*KS(0)-JT12(1)*KS(1)-JT12(2)*KS(2)-JT12(3)*KS(3))/MZ2 | |
2548 | JK32=(JT32(0)*KT(0)-JT32(1)*KT(1)-JT32(2)*KT(2)-JT32(3)*KT(3))/MZ2 | |
2549 | C | |
2550 | J12(0)=JT12(0)*(DAS+DZS)-KS(0)*JK12*DZS | |
2551 | J12(1)=JT12(1)*(DAS+DZS)-KS(1)*JK12*DZS | |
2552 | J12(2)=JT12(2)*(DAS+DZS)-KS(2)*JK12*DZS | |
2553 | J12(3)=JT12(3)*(DAS+DZS)-KS(3)*JK12*DZS | |
2554 | J32(0)=JT32(0)*(DAT+DZT)-KT(0)*JK32*DZT | |
2555 | J32(1)=JT32(1)*(DAT+DZT)-KT(1)*JK32*DZT | |
2556 | J32(2)=JT32(2)*(DAT+DZT)-KT(2)*JK32*DZT | |
2557 | J32(3)=JT32(3)*(DAT+DZT)-KT(3)*JK32*DZT | |
2558 | C | |
2559 | JSW3=J12(0)*DW3(0)-J12(1)*DW3(1)-J12(2)*DW3(2)-J12(3)*DW3(3) | |
2560 | JTW1=J32(0)*DW1(0)-J32(1)*DW1(1)-J32(2)*DW1(2)-J32(3)*DW1(3) | |
2561 | C | |
2562 | P3JS= (P3(0)-Q(0))*J12(0)-(P3(1)-Q(1))*J12(1) | |
2563 | & -(P3(2)-Q(2))*J12(2)-(P3(3)-Q(3))*J12(3) | |
2564 | KSW3= (KS(0)-Q(0))*DW3(0)-(KS(1)-Q(1))*DW3(1) | |
2565 | & -(KS(2)-Q(2))*DW3(2)-(KS(3)-Q(3))*DW3(3) | |
2566 | P1JT= (P1(0)-Q(0))*J32(0)-(P1(1)-Q(1))*J32(1) | |
2567 | & -(P1(2)-Q(2))*J32(2)-(P1(3)-Q(3))*J32(3) | |
2568 | KTW1= (KT(0)-Q(0))*DW1(0)-(KT(1)-Q(1))*DW1(1) | |
2569 | & -(KT(2)-Q(2))*DW1(2)-(KT(3)-Q(3))*DW1(3) | |
2570 | C | |
2571 | JS(0)= (KS(0)-P3(0))*JSW3 + P3JS*DW3(0) - KSW3*J12(0) | |
2572 | JS(1)= (KS(1)-P3(1))*JSW3 + P3JS*DW3(1) - KSW3*J12(1) | |
2573 | JS(2)= (KS(2)-P3(2))*JSW3 + P3JS*DW3(2) - KSW3*J12(2) | |
2574 | JS(3)= (KS(3)-P3(3))*JSW3 + P3JS*DW3(3) - KSW3*J12(3) | |
2575 | JT(0)= (KT(0)-P1(0))*JTW1 + P1JT*DW1(0) - KTW1*J32(0) | |
2576 | JT(1)= (KT(1)-P1(1))*JTW1 + P1JT*DW1(1) - KTW1*J32(1) | |
2577 | JT(2)= (KT(2)-P1(2))*JTW1 + P1JT*DW1(2) - KTW1*J32(2) | |
2578 | JT(3)= (KT(3)-P1(3))*JTW1 + P1JT*DW1(3) - KTW1*J32(3) | |
2579 | C | |
2580 | W13=DW1(0)*DW3(0)-DW1(1)*DW3(1)-DW1(2)*DW3(2)-DW1(3)*DW3(3) | |
2581 | C | |
2582 | J4(0)=DGW2*( DW1(0)*W32 + DW3(0)*W12 - 2.D0*DW2(0)*W13 ) | |
2583 | J4(1)=DGW2*( DW1(1)*W32 + DW3(1)*W12 - 2.D0*DW2(1)*W13 ) | |
2584 | J4(2)=DGW2*( DW1(2)*W32 + DW3(2)*W12 - 2.D0*DW2(2)*W13 ) | |
2585 | J4(3)=DGW2*( DW1(3)*W32 + DW3(3)*W12 - 2.D0*DW2(3)*W13 ) | |
2586 | C | |
2587 | C jj(0)=js(0)+jt(0)+j4(0) | |
2588 | C jj(1)=js(1)+jt(1)+j4(1) | |
2589 | C jj(2)=js(2)+jt(2)+j4(2) | |
2590 | C jj(3)=js(3)+jt(3)+j4(3) | |
2591 | ||
2592 | JJ(0)=J4(0) | |
2593 | JJ(1)=J4(1) | |
2594 | JJ(2)=J4(2) | |
2595 | JJ(3)=J4(3) | |
2596 | C | |
2597 | JQ=(JJ(0)*Q(0)-JJ(1)*Q(1)-JJ(2)*Q(2)-JJ(3)*Q(3))/MW2 | |
2598 | C | |
2599 | ||
2600 | JWWW(1) = DCMPLX( (JJ(0)-JQ*Q(0))*DW ) | |
2601 | JWWW(2) = DCMPLX( (JJ(1)-JQ*Q(1))*DW ) | |
2602 | JWWW(3) = DCMPLX( (JJ(2)-JQ*Q(2))*DW ) | |
2603 | JWWW(4) = DCMPLX( (JJ(3)-JQ*Q(3))*DW ) | |
2604 | C | |
2605 | RETURN | |
2606 | END | |
2607 | ||
2608 | C | |
2609 | C ---------------------------------------------------------------------- | |
2610 | C | |
2611 | SUBROUTINE MOM2CX(ESUM,MASS1,MASS2,COSTH1,PHI1 , P1,P2) | |
2612 | C | |
2613 | C This subroutine sets up two four-momenta in the two particle rest | |
2614 | C frame. | |
2615 | C | |
2616 | C INPUT: | |
2617 | C real ESUM : energy sum of particle 1 and 2 | |
2618 | C real MASS1 : mass of particle 1 | |
2619 | C real MASS2 : mass of particle 2 | |
2620 | C real COSTH1 : cos(theta) of particle 1 | |
2621 | C real PHI1 : azimuthal angle of particle 1 | |
2622 | C | |
2623 | C OUTPUT: | |
2624 | C real P1(0:3) : four-momentum of particle 1 | |
2625 | C real P2(0:3) : four-momentum of particle 2 | |
2626 | C | |
2627 | #if defined(CERNLIB_IMPNONE) | |
2628 | IMPLICIT NONE | |
2629 | #endif | |
2630 | REAL*8 P1(0:3),P2(0:3), | |
2631 | & ESUM,MASS1,MASS2,COSTH1,PHI1,MD2,ED,PP,SINTH1 | |
2632 | C | |
2633 | MD2=(MASS1-MASS2)*(MASS1+MASS2) | |
2634 | ED=MD2/ESUM | |
2635 | IF (MASS1*MASS2.EQ.0.) THEN | |
2636 | PP=(ESUM-ABS(ED))*0.5D0 | |
2637 | C | |
2638 | ELSE | |
2639 | PP=SQRT((MD2/ESUM)**2-2.0D0*(MASS1**2+MASS2**2)+ESUM**2)*0.5D0 | |
2640 | ENDIF | |
2641 | SINTH1=SQRT((1.0D0-COSTH1)*(1.0D0+COSTH1)) | |
2642 | C | |
2643 | P1(0) = MAX((ESUM+ED)*0.5D0,0.D0) | |
2644 | P1(1) = PP*SINTH1*COS(PHI1) | |
2645 | P1(2) = PP*SINTH1*SIN(PHI1) | |
2646 | P1(3) = PP*COSTH1 | |
2647 | C | |
2648 | P2(0) = MAX((ESUM-ED)*0.5D0,0.D0) | |
2649 | P2(1) = -P1(1) | |
2650 | P2(2) = -P1(2) | |
2651 | P2(3) = -P1(3) | |
2652 | C | |
2653 | RETURN | |
2654 | END | |
2655 | C ********************************************************************** | |
2656 | C | |
2657 | SUBROUTINE MOMNTX(ENERGY,MASS,COSTH,PHI , P) | |
2658 | C | |
2659 | C This subroutine sets up a four-momentum from the four inputs. | |
2660 | C | |
2661 | C INPUT: | |
2662 | C real ENERGY : energy | |
2663 | C real MASS : mass | |
2664 | C real COSTH : cos(theta) | |
2665 | C real PHI : azimuthal angle | |
2666 | C | |
2667 | C OUTPUT: | |
2668 | C real P(0:3) : four-momentum | |
2669 | C | |
2670 | #if defined(CERNLIB_IMPNONE) | |
2671 | IMPLICIT NONE | |
2672 | #endif | |
2673 | REAL*8 P(0:3),ENERGY,MASS,COSTH,PHI,PP,SINTH | |
2674 | C | |
2675 | P(0) = ENERGY | |
2676 | IF (ENERGY.EQ.MASS) THEN | |
2677 | P(1) = 0. | |
2678 | P(2) = 0. | |
2679 | P(3) = 0. | |
2680 | ELSE | |
2681 | PP=SQRT((ENERGY-MASS)*(ENERGY+MASS)) | |
2682 | SINTH=SQRT((1.-COSTH)*(1.+COSTH)) | |
2683 | P(3) = PP*COSTH | |
2684 | IF (PHI.EQ.0.) THEN | |
2685 | P(1) = PP*SINTH | |
2686 | P(2) = 0. | |
2687 | ELSE | |
2688 | P(1) = PP*SINTH*COS(PHI) | |
2689 | P(2) = PP*SINTH*SIN(PHI) | |
2690 | ENDIF | |
2691 | ENDIF | |
2692 | RETURN | |
2693 | END | |
2694 | C | |
2695 | C | |
2696 | C | |
2697 | C Subroutine returns the desired fermion or | |
2698 | C anti-fermion anti-spinor. ie., <f| | |
2699 | C A replacement for the HELAS routine OXXXXX | |
2700 | C | |
2701 | C Adam Duff, 1992 August 31 | |
2702 | C <duff@phenom.physics.wisc.edu> | |
2703 | C | |
2704 | SUBROUTINE OXXXXX(P,FMASS,NHEL,NSF,FO) | |
2705 | C | |
2706 | C P IN: FOUR VECTOR MOMENTUM | |
2707 | C FMASS IN: FERMION MASS | |
2708 | C NHEL IN: ANTI-SPINOR HELICITY, -1 OR 1 | |
2709 | C NSF IN: -1=ANTIFERMION, 1=FERMION | |
2710 | C FO OUT: FERMION WAVEFUNCTION | |
2711 | C | |
2712 | C declare input/output variables | |
2713 | C | |
2714 | #if defined(CERNLIB_IMPNONE) | |
2715 | IMPLICIT NONE | |
2716 | #endif | |
2717 | COMPLEX*16 FO(6) | |
2718 | INTEGER*4 NHEL, NSF | |
2719 | REAL*8 P(0:3), FMASS | |
2720 | C | |
2721 | C declare local variables | |
2722 | C | |
2723 | REAL*8 RXZERO, RXONE, RXTWO | |
2724 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0, RXTWO=2.0D0 ) | |
2725 | REAL*8 PLAT, PABS, OMEGAP, OMEGAM, RS2PA, SPAZ | |
2726 | COMPLEX*16 CXZERO | |
2727 | LOGICAL FIRST | |
2728 | SAVE CXZERO,FIRST | |
2729 | DATA FIRST/.TRUE./ | |
2730 | C | |
2731 | C Fix compilation with g77 | |
2732 | IF(FIRST) THEN | |
2733 | FIRST=.FALSE. | |
2734 | CXZERO=DCMPLX( RXZERO, RXZERO ) | |
2735 | ENDIF | |
2736 | C | |
2737 | C define kinematic parameters | |
2738 | C | |
2739 | FO(5) = DCMPLX( P(0), P(3) ) * NSF | |
2740 | FO(6) = DCMPLX( P(1), P(2) ) * NSF | |
2741 | PLAT = SQRT( P(1)**2 + P(2)**2 ) | |
2742 | PABS = SQRT( P(1)**2 + P(2)**2 + P(3)**2 ) | |
2743 | OMEGAP = SQRT( P(0) + PABS ) | |
2744 | C | |
2745 | C do massive fermion case | |
2746 | C | |
2747 | IF ( FMASS .NE. RXZERO ) THEN | |
2748 | OMEGAM = FMASS / OMEGAP | |
2749 | IF ( NSF .EQ. 1 ) THEN | |
2750 | IF ( NHEL .EQ. 1 ) THEN | |
2751 | IF ( P(3) .GE. RXZERO ) THEN | |
2752 | IF ( PLAT .EQ. RXZERO ) THEN | |
2753 | FO(1) = DCMPLX( OMEGAP, RXZERO ) | |
2754 | FO(2) = CXZERO | |
2755 | FO(3) = DCMPLX( OMEGAM, RXZERO ) | |
2756 | FO(4) = CXZERO | |
2757 | ELSE | |
2758 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2759 | SPAZ = SQRT( PABS + P(3) ) | |
2760 | FO(1) = OMEGAP * RS2PA | |
2761 | & * DCMPLX( SPAZ, RXZERO ) | |
2762 | FO(2) = OMEGAP * RS2PA / SPAZ | |
2763 | & * DCMPLX( P(1), -P(2) ) | |
2764 | FO(3) = OMEGAM * RS2PA | |
2765 | & * DCMPLX( SPAZ, RXZERO ) | |
2766 | FO(4) = OMEGAM * RS2PA / SPAZ | |
2767 | & * DCMPLX( P(1), -P(2) ) | |
2768 | END IF | |
2769 | ELSE | |
2770 | IF ( PLAT .EQ. RXZERO ) THEN | |
2771 | FO(1) = CXZERO | |
2772 | FO(2) = DCMPLX( OMEGAP, RXZERO ) | |
2773 | FO(3) = CXZERO | |
2774 | FO(4) = DCMPLX( OMEGAM, RXZERO ) | |
2775 | ELSE | |
2776 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2777 | SPAZ = SQRT( PABS - P(3) ) | |
2778 | FO(1) = OMEGAP * RS2PA / SPAZ | |
2779 | & * DCMPLX( PLAT, RXZERO ) | |
2780 | FO(2) = OMEGAP * RS2PA * SPAZ / PLAT | |
2781 | & * DCMPLX( P(1), -P(2) ) | |
2782 | FO(3) = OMEGAM * RS2PA / SPAZ | |
2783 | & * DCMPLX( PLAT, RXZERO ) | |
2784 | FO(4) = OMEGAM * RS2PA * SPAZ / PLAT | |
2785 | & * DCMPLX( P(1), -P(2) ) | |
2786 | END IF | |
2787 | END IF | |
2788 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
2789 | IF ( P(3) .GE. RXZERO ) THEN | |
2790 | IF ( PLAT .EQ. RXZERO ) THEN | |
2791 | FO(1) = CXZERO | |
2792 | FO(2) = DCMPLX( OMEGAM, RXZERO ) | |
2793 | FO(3) = CXZERO | |
2794 | FO(4) = DCMPLX( OMEGAP, RXZERO ) | |
2795 | ELSE | |
2796 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2797 | SPAZ = SQRT( PABS + P(3) ) | |
2798 | FO(1) = OMEGAM * RS2PA / SPAZ | |
2799 | & * DCMPLX( -P(1), -P(2) ) | |
2800 | FO(2) = OMEGAM * RS2PA | |
2801 | & * DCMPLX( SPAZ, RXZERO ) | |
2802 | FO(3) = OMEGAP * RS2PA / SPAZ | |
2803 | & * DCMPLX( -P(1), -P(2) ) | |
2804 | FO(4) = OMEGAP * RS2PA | |
2805 | & * DCMPLX( SPAZ, RXZERO ) | |
2806 | END IF | |
2807 | ELSE | |
2808 | IF ( PLAT .EQ. RXZERO ) THEN | |
2809 | FO(1) = DCMPLX( -OMEGAM, RXZERO ) | |
2810 | FO(2) = CXZERO | |
2811 | FO(3) = DCMPLX( -OMEGAP, RXZERO ) | |
2812 | FO(4) = CXZERO | |
2813 | ELSE | |
2814 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2815 | SPAZ = SQRT( PABS - P(3) ) | |
2816 | FO(1) = OMEGAM * RS2PA * SPAZ / PLAT | |
2817 | & * DCMPLX( -P(1), -P(2) ) | |
2818 | FO(2) = OMEGAM * RS2PA / SPAZ | |
2819 | & * DCMPLX( PLAT, RXZERO ) | |
2820 | FO(3) = OMEGAP * RS2PA * SPAZ / PLAT | |
2821 | & * DCMPLX( -P(1), -P(2) ) | |
2822 | FO(4) = OMEGAP * RS2PA / SPAZ | |
2823 | & * DCMPLX( PLAT, RXZERO ) | |
2824 | END IF | |
2825 | END IF | |
2826 | ELSE | |
2827 | STOP 'OXXXXX: FERMION HELICITY MUST BE +1,-1' | |
2828 | END IF | |
2829 | ELSE IF ( NSF .EQ. -1 ) THEN | |
2830 | IF ( NHEL .EQ. 1 ) THEN | |
2831 | IF ( P(3) .GE. RXZERO ) THEN | |
2832 | IF ( PLAT .EQ. RXZERO ) THEN | |
2833 | FO(1) = CXZERO | |
2834 | FO(2) = DCMPLX( OMEGAM, RXZERO ) | |
2835 | FO(3) = CXZERO | |
2836 | FO(4) = DCMPLX( -OMEGAP, RXZERO ) | |
2837 | ELSE | |
2838 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2839 | SPAZ = SQRT( PABS + P(3) ) | |
2840 | FO(1) = OMEGAM * RS2PA / SPAZ | |
2841 | & * DCMPLX( -P(1), -P(2) ) | |
2842 | FO(2) = OMEGAM * RS2PA | |
2843 | & * DCMPLX( SPAZ, RXZERO ) | |
2844 | FO(3) = -OMEGAP * RS2PA / SPAZ | |
2845 | & * DCMPLX( -P(1), -P(2) ) | |
2846 | FO(4) = -OMEGAP * RS2PA | |
2847 | & * DCMPLX( SPAZ, RXZERO ) | |
2848 | END IF | |
2849 | ELSE | |
2850 | IF ( PLAT .EQ. RXZERO ) THEN | |
2851 | FO(1) = DCMPLX( -OMEGAM, RXZERO ) | |
2852 | FO(2) = CXZERO | |
2853 | FO(3) = DCMPLX( OMEGAP, RXZERO ) | |
2854 | FO(4) = CXZERO | |
2855 | ELSE | |
2856 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2857 | SPAZ = SQRT( PABS - P(3) ) | |
2858 | FO(1) = OMEGAM * RS2PA * SPAZ / PLAT | |
2859 | & * DCMPLX( -P(1), -P(2) ) | |
2860 | FO(2) = OMEGAM * RS2PA / SPAZ | |
2861 | & * DCMPLX( PLAT, RXZERO ) | |
2862 | FO(3) = -OMEGAP * RS2PA * SPAZ / PLAT | |
2863 | & * DCMPLX( -P(1), -P(2) ) | |
2864 | FO(4) = -OMEGAP * RS2PA / SPAZ | |
2865 | & * DCMPLX( PLAT, RXZERO ) | |
2866 | END IF | |
2867 | END IF | |
2868 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
2869 | IF ( P(3) .GE. RXZERO ) THEN | |
2870 | IF ( PLAT .EQ. RXZERO ) THEN | |
2871 | FO(1) = DCMPLX( -OMEGAP, RXZERO ) | |
2872 | FO(2) = CXZERO | |
2873 | FO(3) = DCMPLX( OMEGAM, RXZERO ) | |
2874 | FO(4) = CXZERO | |
2875 | ELSE | |
2876 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2877 | SPAZ = SQRT( PABS + P(3) ) | |
2878 | FO(1) = -OMEGAP * RS2PA | |
2879 | & * DCMPLX( SPAZ, RXZERO ) | |
2880 | FO(2) = -OMEGAP * RS2PA / SPAZ | |
2881 | & * DCMPLX( P(1), -P(2) ) | |
2882 | FO(3) = OMEGAM * RS2PA | |
2883 | & * DCMPLX( SPAZ, RXZERO ) | |
2884 | FO(4) = OMEGAM * RS2PA / SPAZ | |
2885 | & * DCMPLX( P(1), -P(2) ) | |
2886 | END IF | |
2887 | ELSE | |
2888 | IF ( PLAT .EQ. RXZERO ) THEN | |
2889 | FO(1) = CXZERO | |
2890 | FO(2) = DCMPLX( -OMEGAP, RXZERO ) | |
2891 | FO(3) = CXZERO | |
2892 | FO(4) = DCMPLX( OMEGAM, RXZERO ) | |
2893 | ELSE | |
2894 | RS2PA = RXONE / SQRT( RXTWO * PABS ) | |
2895 | SPAZ = SQRT( PABS - P(3) ) | |
2896 | FO(1) = -OMEGAP * RS2PA / SPAZ | |
2897 | & * DCMPLX( PLAT, RXZERO ) | |
2898 | FO(2) = -OMEGAP * RS2PA * SPAZ / PLAT | |
2899 | & * DCMPLX( P(1), -P(2) ) | |
2900 | FO(3) = OMEGAM * RS2PA / SPAZ | |
2901 | & * DCMPLX( PLAT, RXZERO ) | |
2902 | FO(4) = OMEGAM * RS2PA * SPAZ / PLAT | |
2903 | & * DCMPLX( P(1), -P(2) ) | |
2904 | END IF | |
2905 | END IF | |
2906 | ELSE | |
2907 | STOP 'OXXXXX: FERMION HELICITY MUST BE +1,-1' | |
2908 | END IF | |
2909 | ELSE | |
2910 | STOP 'OXXXXX: FERMION TYPE MUST BE +1,-1' | |
2911 | END IF | |
2912 | C | |
2913 | C do massless case | |
2914 | C | |
2915 | ELSE | |
2916 | IF ( NSF .EQ. 1 ) THEN | |
2917 | IF ( NHEL .EQ. 1 ) THEN | |
2918 | IF ( P(3) .GE. RXZERO ) THEN | |
2919 | IF ( PLAT .EQ. RXZERO ) THEN | |
2920 | FO(1) = DCMPLX( OMEGAP, RXZERO ) | |
2921 | FO(2) = CXZERO | |
2922 | FO(3) = CXZERO | |
2923 | FO(4) = CXZERO | |
2924 | ELSE | |
2925 | SPAZ = SQRT( PABS + P(3) ) | |
2926 | FO(1) = DCMPLX( SPAZ, RXZERO ) | |
2927 | FO(2) = RXONE / SPAZ | |
2928 | & * DCMPLX( P(1), -P(2) ) | |
2929 | FO(3) = CXZERO | |
2930 | FO(4) = CXZERO | |
2931 | END IF | |
2932 | ELSE | |
2933 | IF ( PLAT .EQ. RXZERO ) THEN | |
2934 | FO(1) = CXZERO | |
2935 | FO(2) = DCMPLX( OMEGAP, RXZERO ) | |
2936 | FO(3) = CXZERO | |
2937 | FO(4) = CXZERO | |
2938 | ELSE | |
2939 | SPAZ = SQRT( PABS - P(3) ) | |
2940 | FO(1) = RXONE / SPAZ | |
2941 | & * DCMPLX( PLAT, RXZERO ) | |
2942 | FO(2) = SPAZ / PLAT | |
2943 | & * DCMPLX( P(1), -P(2) ) | |
2944 | FO(3) = CXZERO | |
2945 | FO(4) = CXZERO | |
2946 | END IF | |
2947 | END IF | |
2948 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
2949 | IF ( P(3) .GE. RXZERO ) THEN | |
2950 | IF ( PLAT .EQ. RXZERO ) THEN | |
2951 | FO(1) = CXZERO | |
2952 | FO(2) = CXZERO | |
2953 | FO(3) = CXZERO | |
2954 | FO(4) = DCMPLX( OMEGAP, RXZERO ) | |
2955 | ELSE | |
2956 | SPAZ = SQRT( PABS + P(3) ) | |
2957 | FO(1) = CXZERO | |
2958 | FO(2) = CXZERO | |
2959 | FO(3) = RXONE / SPAZ | |
2960 | & * DCMPLX( -P(1), -P(2) ) | |
2961 | FO(4) = DCMPLX( SPAZ, RXZERO ) | |
2962 | END IF | |
2963 | ELSE | |
2964 | IF ( PLAT .EQ. RXZERO ) THEN | |
2965 | FO(1) = CXZERO | |
2966 | FO(2) = CXZERO | |
2967 | FO(3) = DCMPLX( -OMEGAP, RXZERO ) | |
2968 | FO(4) = CXZERO | |
2969 | ELSE | |
2970 | SPAZ = SQRT( PABS - P(3) ) | |
2971 | FO(1) = CXZERO | |
2972 | FO(2) = CXZERO | |
2973 | FO(3) = SPAZ / PLAT | |
2974 | & * DCMPLX( -P(1), -P(2) ) | |
2975 | FO(4) = RXONE / SPAZ | |
2976 | & * DCMPLX( PLAT, RXZERO ) | |
2977 | END IF | |
2978 | END IF | |
2979 | ELSE | |
2980 | STOP 'OXXXXX: FERMION HELICITY MUST BE +1,-1' | |
2981 | END IF | |
2982 | ELSE IF ( NSF .EQ. -1 ) THEN | |
2983 | IF ( NHEL .EQ. 1 ) THEN | |
2984 | IF ( P(3) .GE. RXZERO ) THEN | |
2985 | IF ( PLAT .EQ. RXZERO ) THEN | |
2986 | FO(1) = CXZERO | |
2987 | FO(2) = CXZERO | |
2988 | FO(3) = CXZERO | |
2989 | FO(4) = DCMPLX( -OMEGAP, RXZERO ) | |
2990 | ELSE | |
2991 | SPAZ = SQRT( PABS + P(3) ) | |
2992 | FO(1) = CXZERO | |
2993 | FO(2) = CXZERO | |
2994 | FO(3) = -RXONE / SPAZ | |
2995 | & * DCMPLX( -P(1), -P(2) ) | |
2996 | FO(4) = DCMPLX( -SPAZ, RXZERO ) | |
2997 | END IF | |
2998 | ELSE | |
2999 | IF ( PLAT .EQ. RXZERO ) THEN | |
3000 | FO(1) = CXZERO | |
3001 | FO(2) = CXZERO | |
3002 | FO(3) = DCMPLX( OMEGAP, RXZERO ) | |
3003 | FO(4) = CXZERO | |
3004 | ELSE | |
3005 | SPAZ = SQRT( PABS - P(3) ) | |
3006 | FO(1) = CXZERO | |
3007 | FO(2) = CXZERO | |
3008 | FO(3) = -SPAZ / PLAT | |
3009 | & * DCMPLX( -P(1), -P(2) ) | |
3010 | FO(4) = -RXONE / SPAZ | |
3011 | & * DCMPLX( PLAT, RXZERO ) | |
3012 | END IF | |
3013 | END IF | |
3014 | ELSE IF ( NHEL .EQ. -1 ) THEN | |
3015 | IF ( P(3) .GE. RXZERO ) THEN | |
3016 | IF ( PLAT .EQ. RXZERO ) THEN | |
3017 | FO(1) = DCMPLX( -OMEGAP, RXZERO ) | |
3018 | FO(2) = CXZERO | |
3019 | FO(3) = CXZERO | |
3020 | FO(4) = CXZERO | |
3021 | ELSE | |
3022 | SPAZ = SQRT( PABS + P(3) ) | |
3023 | FO(1) = DCMPLX( -SPAZ, RXZERO ) | |
3024 | FO(2) = -RXONE / SPAZ | |
3025 | & * DCMPLX( P(1), -P(2) ) | |
3026 | FO(3) = CXZERO | |
3027 | FO(4) = CXZERO | |
3028 | END IF | |
3029 | ELSE | |
3030 | IF ( PLAT .EQ. RXZERO ) THEN | |
3031 | FO(1) = CXZERO | |
3032 | FO(2) = DCMPLX( -OMEGAP, RXZERO ) | |
3033 | FO(3) = CXZERO | |
3034 | FO(4) = CXZERO | |
3035 | ELSE | |
3036 | SPAZ = SQRT( PABS - P(3) ) | |
3037 | FO(1) = -RXONE / SPAZ | |
3038 | & * DCMPLX( PLAT, RXZERO ) | |
3039 | FO(2) = -SPAZ / PLAT | |
3040 | & * DCMPLX( P(1), -P(2) ) | |
3041 | FO(3) = CXZERO | |
3042 | FO(4) = CXZERO | |
3043 | END IF | |
3044 | END IF | |
3045 | ELSE | |
3046 | STOP 'OXXXXX: FERMION HELICITY MUST BE +1,-1' | |
3047 | END IF | |
3048 | ELSE | |
3049 | STOP 'OXXXXX: FERMION TYPE MUST BE +1,-1' | |
3050 | END IF | |
3051 | END IF | |
3052 | C | |
3053 | C done | |
3054 | C | |
3055 | RETURN | |
3056 | END | |
3057 | C | |
3058 | C ---------------------------------------------------------------------- | |
3059 | C | |
3060 | SUBROUTINE ROTXXX(P,Q , PROT) | |
3061 | C | |
3062 | C this subroutine performs the spacial rotation of a four-momentum. | |
3063 | C the momentum p is assumed to be given in the frame where the spacial | |
3064 | C component of q points the positive z-axis. prot is the momentum p | |
3065 | C rotated to the frame where q is given. | |
3066 | C | |
3067 | C input: | |
3068 | C real p(0:3) : four-momentum p in q(1)=q(2)=0 frame | |
3069 | C real q(0:3) : four-momentum q in the rotated frame | |
3070 | C | |
3071 | C output: | |
3072 | C real prot(0:3) : four-momentum p in the rotated frame | |
3073 | C | |
3074 | #if defined(CERNLIB_IMPNONE) | |
3075 | IMPLICIT NONE | |
3076 | #endif | |
3077 | REAL*8 P(0:3),Q(0:3),PROT(0:3),QT2,QT,PSGN,QQ,P1 | |
3078 | C | |
3079 | REAL*8 RXZERO, RXONE | |
3080 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
3081 | C | |
3082 | PROT(0) = P(0) | |
3083 | C | |
3084 | QT2=Q(1)**2+Q(2)**2 | |
3085 | C | |
3086 | IF ( QT2 .EQ. RXZERO ) THEN | |
3087 | IF ( Q(3) .EQ. RXZERO ) THEN | |
3088 | PROT(1) = P(1) | |
3089 | PROT(2) = P(2) | |
3090 | PROT(3) = P(3) | |
3091 | ELSE | |
3092 | PSGN=DSIGN(RXONE,Q(3)) | |
3093 | PROT(1) = P(1)*PSGN | |
3094 | PROT(2) = P(2)*PSGN | |
3095 | PROT(3) = P(3)*PSGN | |
3096 | ENDIF | |
3097 | ELSE | |
3098 | QQ=SQRT(QT2+Q(3)**2) | |
3099 | QT=SQRT(QT2) | |
3100 | P1=P(1) | |
3101 | PROT(1) = Q(1)*Q(3)/QQ/QT*P1 -Q(2)/QT*P(2) +Q(1)/QQ*P(3) | |
3102 | PROT(2) = Q(2)*Q(3)/QQ/QT*P1 +Q(1)/QT*P(2) +Q(2)/QQ*P(3) | |
3103 | PROT(3) = -QT/QQ*P1 +Q(3)/QQ*P(3) | |
3104 | ENDIF | |
3105 | C | |
3106 | RETURN | |
3107 | END | |
3108 | C ====================================================================== | |
3109 | C | |
3110 | SUBROUTINE SSSSXX(S1,S2,S3,S4,G , VERTEX) | |
3111 | C | |
3112 | C This subroutine computes an amplitude of the four-scalar coupling. | |
3113 | C | |
3114 | C INPUT: | |
3115 | C complex S1(3) : first scalar S1 | |
3116 | C complex S2(3) : second scalar S2 | |
3117 | C complex S3(3) : third scalar S3 | |
3118 | C complex S4(3) : fourth scalar S4 | |
3119 | C real G : coupling constant GHHHH | |
3120 | C | |
3121 | C OUTPUT: | |
3122 | C complex VERTEX : amplitude Gamma(S1,S2,S3,S4) | |
3123 | C | |
3124 | #if defined(CERNLIB_IMPNONE) | |
3125 | IMPLICIT NONE | |
3126 | #endif | |
3127 | COMPLEX*16 S1(3),S2(3),S3(3),S4(3),VERTEX | |
3128 | REAL*8 G | |
3129 | C | |
3130 | VERTEX = G*S1(1)*S2(1)*S3(1)*S4(1) | |
3131 | C | |
3132 | RETURN | |
3133 | END | |
3134 | C | |
3135 | C ====================================================================== | |
3136 | C | |
3137 | SUBROUTINE SSSXXX(S1,S2,S3,G , VERTEX) | |
3138 | C | |
3139 | C This subroutine computes an amplitude of the three-scalar coupling. | |
3140 | C | |
3141 | C INPUT: | |
3142 | C complex S1(3) : first scalar S1 | |
3143 | C complex S2(3) : second scalar S2 | |
3144 | C complex S3(3) : third scalar S3 | |
3145 | C real G : coupling constant GHHH | |
3146 | C | |
3147 | C OUTPUT: | |
3148 | C complex VERTEX : amplitude Gamma(S1,S2,S3) | |
3149 | C | |
3150 | #if defined(CERNLIB_IMPNONE) | |
3151 | IMPLICIT NONE | |
3152 | #endif | |
3153 | COMPLEX*16 S1(3),S2(3),S3(3),VERTEX | |
3154 | REAL*8 G | |
3155 | C | |
3156 | VERTEX = G*S1(1)*S2(1)*S3(1) | |
3157 | C | |
3158 | RETURN | |
3159 | END | |
3160 | C | |
3161 | C | |
3162 | C ---------------------------------------------------------------------- | |
3163 | C | |
3164 | SUBROUTINE SXXXXX(P,NSS , SC) | |
3165 | C | |
3166 | C This subroutine computes a complex SCALAR wavefunction. | |
3167 | C | |
3168 | C INPUT: | |
3169 | C real P(0:3) : four-momentum of scalar boson | |
3170 | C integer NSS = -1 or 1 : +1 for final, -1 for initial | |
3171 | C | |
3172 | C OUTPUT: | |
3173 | C complex SC(3) : scalar wavefunction S | |
3174 | C | |
3175 | #if defined(CERNLIB_IMPNONE) | |
3176 | IMPLICIT NONE | |
3177 | #endif | |
3178 | COMPLEX*16 SC(3) | |
3179 | REAL*8 P(0:3) | |
3180 | INTEGER NSS | |
3181 | C | |
3182 | SC(1) = DCMPLX( 1.0 ) | |
3183 | SC(2) = DCMPLX(P(0),P(3))*NSS | |
3184 | SC(3) = DCMPLX(P(1),P(2))*NSS | |
3185 | C | |
3186 | RETURN | |
3187 | END | |
3188 | C | |
3189 | C ====================================================================== | |
3190 | C | |
3191 | SUBROUTINE VSSXXX(VC,S1,S2,G , VERTEX) | |
3192 | C | |
3193 | C this subroutine computes an amplitude from the vector-scalar-scalar | |
3194 | C coupling. the coupling is absent in the minimal sm in unitary gauge. | |
3195 | C | |
3196 | C complex vc(6) : input vector v | |
3197 | C complex s1(3) : first scalar s1 | |
3198 | C complex s2(3) : second scalar s2 | |
3199 | C complex g : coupling constant (s1 charge) | |
3200 | C | |
3201 | C examples of the coupling constant g for susy particles are as follows: | |
3202 | C ----------------------------------------------------------- | |
3203 | C | s1 | (q,i3) of s1 || v=a | v=z | v=w | | |
3204 | C ----------------------------------------------------------- | |
3205 | C | nu~_l | ( 0 , +1/2) || --- | gzn(1) | gwf(1) | | |
3206 | C | e~_l | ( -1 , -1/2) || gal(1) | gzl(1) | gwf(1) | | |
3207 | C | u~_l | (+2/3 , +1/2) || gau(1) | gzu(1) | gwf(1) | | |
3208 | C | d~_l | (-1/3 , -1/2) || gad(1) | gzd(1) | gwf(1) | | |
3209 | C ----------------------------------------------------------- | |
3210 | C | e~_r-bar | ( +1 , 0 ) || -gal(2) | -gzl(2) | -gwf(2) | | |
3211 | C | u~_r-bar | (-2/3 , 0 ) || -gau(2) | -gzu(2) | -gwf(2) | | |
3212 | C | d~_r-bar | (+1/3 , 0 ) || -gad(2) | -gzd(2) | -gwf(2) | | |
3213 | C ----------------------------------------------------------- | |
3214 | C where the s1 charge is defined by the flowing-out quantum number. | |
3215 | C | |
3216 | C output: | |
3217 | C complex vertex : amplitude gamma(v,s1,s2) | |
3218 | C | |
3219 | #if defined(CERNLIB_IMPNONE) | |
3220 | IMPLICIT NONE | |
3221 | #endif | |
3222 | COMPLEX*16 VC(6),S1(3),S2(3),VERTEX,G | |
3223 | REAL*8 P(0:3) | |
3224 | C | |
3225 | P(0)=DBLE( S1(2)-S2(2)) | |
3226 | P(1)=DBLE( S1(3)-S2(3)) | |
3227 | P(2)=DIMAG(S1(3)-S2(3)) | |
3228 | P(3)=DIMAG(S1(2)-S2(2)) | |
3229 | C | |
3230 | VERTEX = G*S1(1)*S2(1) | |
3231 | & *(VC(1)*P(0)-VC(2)*P(1)-VC(3)*P(2)-VC(4)*P(3)) | |
3232 | C | |
3233 | RETURN | |
3234 | END | |
3235 | C | |
3236 | SUBROUTINE VVSSXX(V1,V2,S1,S2,G , VERTEX) | |
3237 | C | |
3238 | C This subroutine computes an amplitude of the vector-vector-scalar- | |
3239 | C scalar coupling. | |
3240 | C | |
3241 | C INPUT: | |
3242 | C complex V1(6) : first vector V1 | |
3243 | C complex V2(6) : second vector V2 | |
3244 | C complex S1(3) : first scalar S1 | |
3245 | C complex S2(3) : second scalar S2 | |
3246 | C real G : coupling constant GVVHH | |
3247 | C | |
3248 | C OUTPUT: | |
3249 | C complex VERTEX : amplitude Gamma(V1,V2,S1,S2) | |
3250 | C | |
3251 | #if defined(CERNLIB_IMPNONE) | |
3252 | IMPLICIT NONE | |
3253 | #endif | |
3254 | COMPLEX*16 V1(6),V2(6),S1(3),S2(3),VERTEX | |
3255 | REAL*8 G | |
3256 | C | |
3257 | VERTEX = G*S1(1)*S2(1) | |
3258 | & *(V1(1)*V2(1)-V1(2)*V2(2)-V1(3)*V2(3)-V1(4)*V2(4)) | |
3259 | C | |
3260 | RETURN | |
3261 | END | |
3262 | C | |
3263 | C | |
3264 | C ====================================================================== | |
3265 | C | |
3266 | SUBROUTINE VVSXXX(V1,V2,SC,G , VERTEX) | |
3267 | C | |
3268 | C this subroutine computes an amplitude of the vector-vector-scalar | |
3269 | C coupling. | |
3270 | C | |
3271 | C input: | |
3272 | C complex v1(6) : first vector v1 | |
3273 | C complex v2(6) : second vector v2 | |
3274 | C complex sc(3) : input scalar s | |
3275 | C real g : coupling constant gvvh | |
3276 | C | |
3277 | C output: | |
3278 | C complex vertex : amplitude gamma(v1,v2,s) | |
3279 | C | |
3280 | #if defined(CERNLIB_IMPNONE) | |
3281 | IMPLICIT NONE | |
3282 | #endif | |
3283 | COMPLEX*16 V1(6),V2(6),SC(3),VERTEX | |
3284 | REAL*8 G | |
3285 | C | |
3286 | VERTEX = G*SC(1)*(V1(1)*V2(1)-V1(2)*V2(2)-V1(3)*V2(3)-V1(4)*V2(4)) | |
3287 | C | |
3288 | RETURN | |
3289 | END | |
3290 | C | |
3291 | C ====================================================================== | |
3292 | C | |
3293 | SUBROUTINE VVVXXX(WM,WP,W3,G , VERTEX) | |
3294 | C | |
3295 | C this subroutine computes an amplitude of the three-point coupling of | |
3296 | C the gauge bosons. | |
3297 | C | |
3298 | C input: | |
3299 | C complex wm(6) : vector flow-out w- | |
3300 | C complex wp(6) : vector flow-out w+ | |
3301 | C complex w3(6) : vector j3 or a or z | |
3302 | C real g : coupling constant gw or gwwa or gwwz | |
3303 | C | |
3304 | C output: | |
3305 | C complex vertex : amplitude gamma(wm,wp,w3) | |
3306 | C | |
3307 | #if defined(CERNLIB_IMPNONE) | |
3308 | IMPLICIT NONE | |
3309 | #endif | |
3310 | COMPLEX*16 WM(6),WP(6),W3(6),VERTEX, | |
3311 | & XV1,XV2,XV3,V12,V23,V31,P12,P13,P21,P23,P31,P32 | |
3312 | REAL*8 PWM(0:3),PWP(0:3),PW3(0:3),G | |
3313 | C | |
3314 | REAL*8 RXZERO, RTENTH | |
3315 | PARAMETER( RXZERO=0.0D0, RTENTH=0.1D0 ) | |
3316 | C | |
3317 | PWM(0)=DBLE( WM(5)) | |
3318 | PWM(1)=DBLE( WM(6)) | |
3319 | PWM(2)=DIMAG(WM(6)) | |
3320 | PWM(3)=DIMAG(WM(5)) | |
3321 | PWP(0)=DBLE( WP(5)) | |
3322 | PWP(1)=DBLE( WP(6)) | |
3323 | PWP(2)=DIMAG(WP(6)) | |
3324 | PWP(3)=DIMAG(WP(5)) | |
3325 | PW3(0)=DBLE( W3(5)) | |
3326 | PW3(1)=DBLE( W3(6)) | |
3327 | PW3(2)=DIMAG(W3(6)) | |
3328 | PW3(3)=DIMAG(W3(5)) | |
3329 | C | |
3330 | V12=WM(1)*WP(1)-WM(2)*WP(2)-WM(3)*WP(3)-WM(4)*WP(4) | |
3331 | V23=WP(1)*W3(1)-WP(2)*W3(2)-WP(3)*W3(3)-WP(4)*W3(4) | |
3332 | V31=W3(1)*WM(1)-W3(2)*WM(2)-W3(3)*WM(3)-W3(4)*WM(4) | |
3333 | XV1=RXZERO | |
3334 | XV2=RXZERO | |
3335 | XV3=RXZERO | |
3336 | IF ( ABS(WM(1)) .NE. RXZERO ) THEN | |
3337 | IF (ABS(WM(1)).GE.MAX(ABS(WM(2)),ABS(WM(3)),ABS(WM(4))) | |
3338 | $ *RTENTH) | |
3339 | & XV1=PWM(0)/WM(1) | |
3340 | ENDIF | |
3341 | IF ( ABS(WP(1)) .NE. RXZERO) THEN | |
3342 | IF (ABS(WP(1)).GE.MAX(ABS(WP(2)),ABS(WP(3)),ABS(WP(4))) | |
3343 | $ *RTENTH) | |
3344 | & XV2=PWP(0)/WP(1) | |
3345 | ENDIF | |
3346 | IF ( ABS(W3(1)) .NE. RXZERO) THEN | |
3347 | IF ( ABS(W3(1)).GE.MAX(ABS(W3(2)),ABS(W3(3)),ABS(W3(4))) | |
3348 | $ *RTENTH) | |
3349 | & XV3=PW3(0)/W3(1) | |
3350 | ENDIF | |
3351 | P12= (PWM(0)-XV1*WM(1))*WP(1)-(PWM(1)-XV1*WM(2))*WP(2) | |
3352 | & -(PWM(2)-XV1*WM(3))*WP(3)-(PWM(3)-XV1*WM(4))*WP(4) | |
3353 | P13= (PWM(0)-XV1*WM(1))*W3(1)-(PWM(1)-XV1*WM(2))*W3(2) | |
3354 | & -(PWM(2)-XV1*WM(3))*W3(3)-(PWM(3)-XV1*WM(4))*W3(4) | |
3355 | P21= (PWP(0)-XV2*WP(1))*WM(1)-(PWP(1)-XV2*WP(2))*WM(2) | |
3356 | & -(PWP(2)-XV2*WP(3))*WM(3)-(PWP(3)-XV2*WP(4))*WM(4) | |
3357 | P23= (PWP(0)-XV2*WP(1))*W3(1)-(PWP(1)-XV2*WP(2))*W3(2) | |
3358 | & -(PWP(2)-XV2*WP(3))*W3(3)-(PWP(3)-XV2*WP(4))*W3(4) | |
3359 | P31= (PW3(0)-XV3*W3(1))*WM(1)-(PW3(1)-XV3*W3(2))*WM(2) | |
3360 | & -(PW3(2)-XV3*W3(3))*WM(3)-(PW3(3)-XV3*W3(4))*WM(4) | |
3361 | P32= (PW3(0)-XV3*W3(1))*WP(1)-(PW3(1)-XV3*W3(2))*WP(2) | |
3362 | & -(PW3(2)-XV3*W3(3))*WP(3)-(PW3(3)-XV3*W3(4))*WP(4) | |
3363 | C | |
3364 | VERTEX = -(V12*(P13-P23)+V23*(P21-P31)+V31*(P32-P12))*G | |
3365 | C | |
3366 | RETURN | |
3367 | END | |
3368 | C | |
3369 | C | |
3370 | C Subroutine returns the value of evaluated | |
3371 | C helicity basis boson polarisation wavefunction. | |
3372 | C Replaces the HELAS routine VXXXXX | |
3373 | C | |
3374 | C Adam Duff, 1992 September 3 | |
3375 | C <duff@phenom.physics.wisc.edu> | |
3376 | C | |
3377 | SUBROUTINE VXXXXX(P,VMASS,NHEL,NSV,VC) | |
3378 | C | |
3379 | C P IN: BOSON FOUR MOMENTUM | |
3380 | C VMASS IN: BOSON MASS | |
3381 | C NHEL IN: BOSON HELICITY | |
3382 | C NSV IN: INCOMING (-1) OR OUTGOING (+1) | |
3383 | C VC OUT: BOSON WAVEFUNCTION | |
3384 | C | |
3385 | C declare input/output variables | |
3386 | C | |
3387 | #if defined(CERNLIB_IMPNONE) | |
3388 | IMPLICIT NONE | |
3389 | #endif | |
3390 | COMPLEX*16 VC(6) | |
3391 | INTEGER*4 NHEL, NSV | |
3392 | REAL*8 P(0:3), VMASS | |
3393 | C | |
3394 | C declare local variables | |
3395 | C | |
3396 | REAL*8 RXZERO, RXONE, RXTWO | |
3397 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0, RXTWO=2.0D0 ) | |
3398 | REAL*8 PLAT, PABS, RS2, RPLAT, RPABS, RDEN | |
3399 | COMPLEX*16 CXZERO | |
3400 | LOGICAL FIRST | |
3401 | SAVE CXZERO,FIRST | |
3402 | DATA FIRST/.TRUE./ | |
3403 | C | |
3404 | C Fix compilation with g77 | |
3405 | IF(FIRST) THEN | |
3406 | FIRST=.FALSE. | |
3407 | CXZERO=DCMPLX( RXZERO, RXZERO ) | |
3408 | ENDIF | |
3409 | C | |
3410 | C define internal/external momenta | |
3411 | C | |
3412 | IF ( NSV**2 .NE. 1 ) THEN | |
3413 | STOP 'VXXXXX: NSV IS NOT ONE OF -1, +1' | |
3414 | END IF | |
3415 | C | |
3416 | RS2 = SQRT( RXONE / RXTWO ) | |
3417 | VC(5) = DCMPLX( P(0), P(3) ) * NSV | |
3418 | VC(6) = DCMPLX( P(1), P(2) ) * NSV | |
3419 | PLAT = SQRT( P(1)**2 + P(2)**2 ) | |
3420 | PABS = SQRT( P(1)**2 + P(2)**2 + P(3)**2 ) | |
3421 | C | |
3422 | C calculate polarisation four vectors | |
3423 | C | |
3424 | IF ( NHEL**2 .EQ. 1 ) THEN | |
3425 | IF ( (PABS .EQ. RXZERO) .OR. (PLAT .EQ. RXZERO) ) THEN | |
3426 | VC(1) = CXZERO | |
3427 | VC(2) = DCMPLX( -NHEL * RS2 * DSIGN( RXONE, P(3) ), RXZERO ) | |
3428 | VC(3) = DCMPLX( RXZERO, NSV * RS2 ) | |
3429 | VC(4) = CXZERO | |
3430 | ELSE | |
3431 | RPLAT = RXONE / PLAT | |
3432 | RPABS = RXONE / PABS | |
3433 | VC(1) = CXZERO | |
3434 | VC(2) = DCMPLX( -NHEL * RS2 * RPABS * RPLAT * P(1) * P(3), | |
3435 | & -NSV * RS2 * RPLAT * P(2) ) | |
3436 | VC(3) = DCMPLX( -NHEL * RS2 * RPABS * RPLAT * P(2) * P(3), | |
3437 | & NSV * RS2 * RPLAT * P(1) ) | |
3438 | VC(4) = DCMPLX( NHEL * RS2 * RPABS * PLAT, | |
3439 | & RXZERO ) | |
3440 | END IF | |
3441 | ELSE IF ( NHEL .EQ. 0 ) THEN | |
3442 | IF ( VMASS .GT. RXZERO ) THEN | |
3443 | IF ( PABS .EQ. RXZERO ) THEN | |
3444 | VC(1) = CXZERO | |
3445 | VC(2) = CXZERO | |
3446 | VC(3) = CXZERO | |
3447 | VC(4) = DCMPLX( RXONE, RXZERO ) | |
3448 | ELSE | |
3449 | RDEN = P(0) / ( VMASS * PABS ) | |
3450 | VC(1) = DCMPLX( PABS / VMASS, RXZERO ) | |
3451 | VC(2) = DCMPLX( RDEN * P(1), RXZERO ) | |
3452 | VC(3) = DCMPLX( RDEN * P(2), RXZERO ) | |
3453 | VC(4) = DCMPLX( RDEN * P(3), RXZERO ) | |
3454 | END IF | |
3455 | ELSE | |
3456 | STOP 'VXXXXX: NHEL = 0 IS ONLY FOR MASSIVE BOSONS' | |
3457 | END IF | |
3458 | ELSE IF ( NHEL .EQ. 4 ) THEN | |
3459 | IF ( VMASS .GT. RXZERO ) THEN | |
3460 | RDEN = RXONE / VMASS | |
3461 | VC(1) = DCMPLX( RDEN * P(0), RXZERO ) | |
3462 | VC(2) = DCMPLX( RDEN * P(1), RXZERO ) | |
3463 | VC(3) = DCMPLX( RDEN * P(2), RXZERO ) | |
3464 | VC(4) = DCMPLX( RDEN * P(3), RXZERO ) | |
3465 | ELSEIF (VMASS .EQ. RXZERO) THEN | |
3466 | RDEN = RXONE / P(0) | |
3467 | VC(1) = DCMPLX( RDEN * P(0), RXZERO ) | |
3468 | VC(2) = DCMPLX( RDEN * P(1), RXZERO ) | |
3469 | VC(3) = DCMPLX( RDEN * P(2), RXZERO ) | |
3470 | VC(4) = DCMPLX( RDEN * P(3), RXZERO ) | |
3471 | ELSE | |
3472 | STOP 'VXXXXX: NHEL = 4 IS ONLY FOR M>=0' | |
3473 | END IF | |
3474 | ELSE | |
3475 | STOP 'VXXXXX: NHEL IS NOT ONE OF -1, 0, 1 OR 4' | |
3476 | END IF | |
3477 | C | |
3478 | C done | |
3479 | C | |
3480 | RETURN | |
3481 | END | |
3482 | C | |
3483 | C ---------------------------------------------------------------------- | |
3484 | C | |
3485 | SUBROUTINE W3W3XX(WM,W31,WP,W32,G31,G32,WMASS,WWIDTH , VERTEX) | |
3486 | C | |
3487 | C this subroutine computes an amplitude of the four-point coupling of | |
3488 | C the w-, w+ and two w3/z/a. the amplitude includes the contributions | |
3489 | C of w exchange diagrams. the internal w propagator is given in unitary | |
3490 | C gauge. if one sets wmass=0.0, then the gggg vertex is given (see sect | |
3491 | C 2.9.1 of the manual). | |
3492 | C | |
3493 | C input: | |
3494 | C complex wm(0:3) : flow-out w- wm | |
3495 | C complex w31(0:3) : first w3/z/a w31 | |
3496 | C complex wp(0:3) : flow-out w+ wp | |
3497 | C complex w32(0:3) : second w3/z/a w32 | |
3498 | C real g31 : coupling of w31 with w-/w+ | |
3499 | C real g32 : coupling of w32 with w-/w+ | |
3500 | C (see the table below) | |
3501 | C real wmass : mass of w | |
3502 | C real wwidth : width of w | |
3503 | C | |
3504 | C the possible sets of the inputs are as follows: | |
3505 | C ------------------------------------------- | |
3506 | C | wm | w31 | wp | w32 | g31 | g32 | | |
3507 | C ------------------------------------------- | |
3508 | C | w- | w3 | w+ | w3 | gw | gw | | |
3509 | C | w- | w3 | w+ | z | gw | gwwz | | |
3510 | C | w- | w3 | w+ | a | gw | gwwa | | |
3511 | C | w- | z | w+ | z | gwwz | gwwz | | |
3512 | C | w- | z | w+ | a | gwwz | gwwa | | |
3513 | C | w- | a | w+ | a | gwwa | gwwa | | |
3514 | C ------------------------------------------- | |
3515 | C where all the bosons are defined by the flowing-out quantum number. | |
3516 | C | |
3517 | C output: | |
3518 | C complex vertex : amplitude gamma(wm,w31,wp,w32) | |
3519 | C | |
3520 | #if defined(CERNLIB_IMPNONE) | |
3521 | IMPLICIT NONE | |
3522 | #endif | |
3523 | COMPLEX*16 WM(6),W31(6),WP(6),W32(6),VERTEX | |
3524 | COMPLEX*16 DV1(0:3),DV2(0:3),DV3(0:3),DV4(0:3),DVERTX, | |
3525 | & V12,V13,V14,V23,V24,V34 | |
3526 | REAL*8 G31,G32,WMASS,WWIDTH | |
3527 | C | |
3528 | REAL*8 RXZERO, RXONE | |
3529 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0 ) | |
3530 | ||
3531 | DV1(0)=DCMPLX(WM(1)) | |
3532 | DV1(1)=DCMPLX(WM(2)) | |
3533 | DV1(2)=DCMPLX(WM(3)) | |
3534 | DV1(3)=DCMPLX(WM(4)) | |
3535 | DV2(0)=DCMPLX(W31(1)) | |
3536 | DV2(1)=DCMPLX(W31(2)) | |
3537 | DV2(2)=DCMPLX(W31(3)) | |
3538 | DV2(3)=DCMPLX(W31(4)) | |
3539 | DV3(0)=DCMPLX(WP(1)) | |
3540 | DV3(1)=DCMPLX(WP(2)) | |
3541 | DV3(2)=DCMPLX(WP(3)) | |
3542 | DV3(3)=DCMPLX(WP(4)) | |
3543 | DV4(0)=DCMPLX(W32(1)) | |
3544 | DV4(1)=DCMPLX(W32(2)) | |
3545 | DV4(2)=DCMPLX(W32(3)) | |
3546 | DV4(3)=DCMPLX(W32(4)) | |
3547 | C | |
3548 | IF ( DBLE(WMASS) .NE. RXZERO ) THEN | |
3549 | C dm2inv = r_one / dmw2 | |
3550 | C | |
3551 | V12= DV1(0)*DV2(0)-DV1(1)*DV2(1)-DV1(2)*DV2(2)-DV1(3)*DV2(3) | |
3552 | V13= DV1(0)*DV3(0)-DV1(1)*DV3(1)-DV1(2)*DV3(2)-DV1(3)*DV3(3) | |
3553 | V14= DV1(0)*DV4(0)-DV1(1)*DV4(1)-DV1(2)*DV4(2)-DV1(3)*DV4(3) | |
3554 | V23= DV2(0)*DV3(0)-DV2(1)*DV3(1)-DV2(2)*DV3(2)-DV2(3)*DV3(3) | |
3555 | V24= DV2(0)*DV4(0)-DV2(1)*DV4(1)-DV2(2)*DV4(2)-DV2(3)*DV4(3) | |
3556 | V34= DV3(0)*DV4(0)-DV3(1)*DV4(1)-DV3(2)*DV4(2)-DV3(3)*DV4(3) | |
3557 | C | |
3558 | DVERTX = V12*V34 +V14*V23 -2.D0*V13*V24 | |
3559 | C | |
3560 | VERTEX = DCMPLX( DVERTX ) * (G31*G32) | |
3561 | C | |
3562 | ELSE | |
3563 | V12= DV1(0)*DV2(0)-DV1(1)*DV2(1)-DV1(2)*DV2(2)-DV1(3)*DV2(3) | |
3564 | V13= DV1(0)*DV3(0)-DV1(1)*DV3(1)-DV1(2)*DV3(2)-DV1(3)*DV3(3) | |
3565 | V14= DV1(0)*DV4(0)-DV1(1)*DV4(1)-DV1(2)*DV4(2)-DV1(3)*DV4(3) | |
3566 | V23= DV2(0)*DV3(0)-DV2(1)*DV3(1)-DV2(2)*DV3(2)-DV2(3)*DV3(3) | |
3567 | V24= DV2(0)*DV4(0)-DV2(1)*DV4(1)-DV2(2)*DV4(2)-DV2(3)*DV4(3) | |
3568 | V34= DV3(0)*DV4(0)-DV3(1)*DV4(1)-DV3(2)*DV4(2)-DV3(3)*DV4(3) | |
3569 | C | |
3570 | ||
3571 | DVERTX = V14*V23 -V13*V24 | |
3572 | C | |
3573 | VERTEX = DCMPLX( DVERTX ) * (G31*G32) | |
3574 | END IF | |
3575 | C | |
3576 | RETURN | |
3577 | END | |
3578 | C | |
3579 | C ====================================================================== | |
3580 | C | |
3581 | SUBROUTINE WWWWXX(WM1,WP1,WM2,WP2,GWWA,GWWZ,ZMASS,ZWIDTH , VERTEX) | |
3582 | C | |
3583 | C this subroutine computes an amplitude of the four-point w-/w+ | |
3584 | C coupling, including the contributions of photon and z exchanges. the | |
3585 | C photon propagator is given in feynman gauge and the z propagator is | |
3586 | C given in unitary gauge. | |
3587 | C | |
3588 | C input: | |
3589 | C complex wm1(0:3) : first flow-out w- wm1 | |
3590 | C complex wp1(0:3) : first flow-out w+ wp1 | |
3591 | C complex wm2(0:3) : second flow-out w- wm2 | |
3592 | C complex wp2(0:3) : second flow-out w+ wp2 | |
3593 | C real gwwa : coupling constant of w and a gwwa | |
3594 | C real gwwz : coupling constant of w and z gwwz | |
3595 | C real zmass : mass of z | |
3596 | C real zwidth : width of z | |
3597 | C | |
3598 | C output: | |
3599 | C complex vertex : amplitude gamma(wm1,wp1,wm2,wp2) | |
3600 | C | |
3601 | #if defined(CERNLIB_IMPNONE) | |
3602 | IMPLICIT NONE | |
3603 | #endif | |
3604 | COMPLEX*16 WM1(6),WP1(6),WM2(6),WP2(6),VERTEX | |
3605 | COMPLEX*16 DV1(0:3),DV2(0:3),DV3(0:3),DV4(0:3), | |
3606 | & J12(0:3),J34(0:3),J14(0:3),J32(0:3),DVERTX, | |
3607 | & SV1,SV2,SV3,SV4,TV1,TV2,TV3,TV4,DZS,DZT, | |
3608 | & V12,V13,V14,V23,V24,V34,JS12,JS34,JS14,JS32,JS,JT | |
3609 | REAL*8 PWM1(0:3),PWP1(0:3),PWM2(0:3),PWP2(0:3), | |
3610 | & GWWA,GWWZ,ZMASS,ZWIDTH | |
3611 | REAL*8 Q(0:3),K(0:3),DP1(0:3),DP2(0:3),DP3(0:3),DP4(0:3), | |
3612 | & DGWWA2,DGWWZ2,DGW2,DMZ,DWIDTH,S,T,DAS,DAT | |
3613 | C | |
3614 | REAL*8 RXZERO, RXONE, RXTWO | |
3615 | PARAMETER( RXZERO=0.0D0, RXONE=1.0D0, RXTWO=2.0D0 ) | |
3616 | C | |
3617 | PWM1(0)=DBLE( WM1(5)) | |
3618 | PWM1(1)=DBLE( WM1(6)) | |
3619 | PWM1(2)=DIMAG(WM1(6)) | |
3620 | PWM1(3)=DIMAG(WM1(5)) | |
3621 | PWP1(0)=DBLE( WP1(5)) | |
3622 | PWP1(1)=DBLE( WP1(6)) | |
3623 | PWP1(2)=DIMAG(WP1(6)) | |
3624 | PWP1(3)=DIMAG(WP1(5)) | |
3625 | PWM2(0)=DBLE( WM2(5)) | |
3626 | PWM2(1)=DBLE( WM2(6)) | |
3627 | PWM2(2)=DIMAG(WM2(6)) | |
3628 | PWM2(3)=DIMAG(WM2(5)) | |
3629 | PWP2(0)=DBLE( WP2(5)) | |
3630 | PWP2(1)=DBLE( WP2(6)) | |
3631 | PWP2(2)=DIMAG(WP2(6)) | |
3632 | PWP2(3)=DIMAG(WP2(5)) | |
3633 | C | |
3634 | DV1(0)=DCMPLX(WM1(1)) | |
3635 | DV1(1)=DCMPLX(WM1(2)) | |
3636 | DV1(2)=DCMPLX(WM1(3)) | |
3637 | DV1(3)=DCMPLX(WM1(4)) | |
3638 | DP1(0)=DBLE(PWM1(0)) | |
3639 | DP1(1)=DBLE(PWM1(1)) | |
3640 | DP1(2)=DBLE(PWM1(2)) | |
3641 | DP1(3)=DBLE(PWM1(3)) | |
3642 | DV2(0)=DCMPLX(WP1(1)) | |
3643 | DV2(1)=DCMPLX(WP1(2)) | |
3644 | DV2(2)=DCMPLX(WP1(3)) | |
3645 | DV2(3)=DCMPLX(WP1(4)) | |
3646 | DP2(0)=DBLE(PWP1(0)) | |
3647 | DP2(1)=DBLE(PWP1(1)) | |
3648 | DP2(2)=DBLE(PWP1(2)) | |
3649 | DP2(3)=DBLE(PWP1(3)) | |
3650 | DV3(0)=DCMPLX(WM2(1)) | |
3651 | DV3(1)=DCMPLX(WM2(2)) | |
3652 | DV3(2)=DCMPLX(WM2(3)) | |
3653 | DV3(3)=DCMPLX(WM2(4)) | |
3654 | DP3(0)=DBLE(PWM2(0)) | |
3655 | DP3(1)=DBLE(PWM2(1)) | |
3656 | DP3(2)=DBLE(PWM2(2)) | |
3657 | DP3(3)=DBLE(PWM2(3)) | |
3658 | DV4(0)=DCMPLX(WP2(1)) | |
3659 | DV4(1)=DCMPLX(WP2(2)) | |
3660 | DV4(2)=DCMPLX(WP2(3)) | |
3661 | DV4(3)=DCMPLX(WP2(4)) | |
3662 | DP4(0)=DBLE(PWP2(0)) | |
3663 | DP4(1)=DBLE(PWP2(1)) | |
3664 | DP4(2)=DBLE(PWP2(2)) | |
3665 | DP4(3)=DBLE(PWP2(3)) | |
3666 | DGWWA2=DBLE(GWWA)**2 | |
3667 | DGWWZ2=DBLE(GWWZ)**2 | |
3668 | DGW2 =DGWWA2+DGWWZ2 | |
3669 | DMZ =DBLE(ZMASS) | |
3670 | DWIDTH=DBLE(ZWIDTH) | |
3671 | C | |
3672 | V12= DV1(0)*DV2(0)-DV1(1)*DV2(1)-DV1(2)*DV2(2)-DV1(3)*DV2(3) | |
3673 | V13= DV1(0)*DV3(0)-DV1(1)*DV3(1)-DV1(2)*DV3(2)-DV1(3)*DV3(3) | |
3674 | V14= DV1(0)*DV4(0)-DV1(1)*DV4(1)-DV1(2)*DV4(2)-DV1(3)*DV4(3) | |
3675 | V23= DV2(0)*DV3(0)-DV2(1)*DV3(1)-DV2(2)*DV3(2)-DV2(3)*DV3(3) | |
3676 | V24= DV2(0)*DV4(0)-DV2(1)*DV4(1)-DV2(2)*DV4(2)-DV2(3)*DV4(3) | |
3677 | V34= DV3(0)*DV4(0)-DV3(1)*DV4(1)-DV3(2)*DV4(2)-DV3(3)*DV4(3) | |
3678 | C | |
3679 | Q(0)=DP1(0)+DP2(0) | |
3680 | Q(1)=DP1(1)+DP2(1) | |
3681 | Q(2)=DP1(2)+DP2(2) | |
3682 | Q(3)=DP1(3)+DP2(3) | |
3683 | K(0)=DP1(0)+DP4(0) | |
3684 | K(1)=DP1(1)+DP4(1) | |
3685 | K(2)=DP1(2)+DP4(2) | |
3686 | K(3)=DP1(3)+DP4(3) | |
3687 | C | |
3688 | S=Q(0)**2-Q(1)**2-Q(2)**2-Q(3)**2 | |
3689 | T=K(0)**2-K(1)**2-K(2)**2-K(3)**2 | |
3690 | C | |
3691 | DAS=-RXONE/S | |
3692 | DAT=-RXONE/T | |
3693 | DZS=-RXONE/DCMPLX( S-DMZ**2 , DMAX1(DSIGN(DMZ*DWIDTH,S),RXZERO) ) | |
3694 | DZT=-RXONE/DCMPLX( T-DMZ**2 , DMAX1(DSIGN(DMZ*DWIDTH,T),RXZERO) ) | |
3695 | C | |
3696 | SV1= (DP2(0)+Q(0))*DV1(0) -(DP2(1)+Q(1))*DV1(1) | |
3697 | & -(DP2(2)+Q(2))*DV1(2) -(DP2(3)+Q(3))*DV1(3) | |
3698 | SV2=-(DP1(0)+Q(0))*DV2(0) +(DP1(1)+Q(1))*DV2(1) | |
3699 | & +(DP1(2)+Q(2))*DV2(2) +(DP1(3)+Q(3))*DV2(3) | |
3700 | SV3= (DP4(0)-Q(0))*DV3(0) -(DP4(1)-Q(1))*DV3(1) | |
3701 | & -(DP4(2)-Q(2))*DV3(2) -(DP4(3)-Q(3))*DV3(3) | |
3702 | SV4=-(DP3(0)-Q(0))*DV4(0) +(DP3(1)-Q(1))*DV4(1) | |
3703 | & +(DP3(2)-Q(2))*DV4(2) +(DP3(3)-Q(3))*DV4(3) | |
3704 | C | |
3705 | TV1= (DP4(0)+K(0))*DV1(0) -(DP4(1)+K(1))*DV1(1) | |
3706 | & -(DP4(2)+K(2))*DV1(2) -(DP4(3)+K(3))*DV1(3) | |
3707 | TV2=-(DP3(0)-K(0))*DV2(0) +(DP3(1)-K(1))*DV2(1) | |
3708 | & +(DP3(2)-K(2))*DV2(2) +(DP3(3)-K(3))*DV2(3) | |
3709 | TV3= (DP2(0)-K(0))*DV3(0) -(DP2(1)-K(1))*DV3(1) | |
3710 | & -(DP2(2)-K(2))*DV3(2) -(DP2(3)-K(3))*DV3(3) | |
3711 | TV4=-(DP1(0)+K(0))*DV4(0) +(DP1(1)+K(1))*DV4(1) | |
3712 | & +(DP1(2)+K(2))*DV4(2) +(DP1(3)+K(3))*DV4(3) | |
3713 | C | |
3714 | J12(0)=(DP1(0)-DP2(0))*V12 +SV1*DV2(0) +SV2*DV1(0) | |
3715 | J12(1)=(DP1(1)-DP2(1))*V12 +SV1*DV2(1) +SV2*DV1(1) | |
3716 | J12(2)=(DP1(2)-DP2(2))*V12 +SV1*DV2(2) +SV2*DV1(2) | |
3717 | J12(3)=(DP1(3)-DP2(3))*V12 +SV1*DV2(3) +SV2*DV1(3) | |
3718 | J34(0)=(DP3(0)-DP4(0))*V34 +SV3*DV4(0) +SV4*DV3(0) | |
3719 | J34(1)=(DP3(1)-DP4(1))*V34 +SV3*DV4(1) +SV4*DV3(1) | |
3720 | J34(2)=(DP3(2)-DP4(2))*V34 +SV3*DV4(2) +SV4*DV3(2) | |
3721 | J34(3)=(DP3(3)-DP4(3))*V34 +SV3*DV4(3) +SV4*DV3(3) | |
3722 | C | |
3723 | J14(0)=(DP1(0)-DP4(0))*V14 +TV1*DV4(0) +TV4*DV1(0) | |
3724 | J14(1)=(DP1(1)-DP4(1))*V14 +TV1*DV4(1) +TV4*DV1(1) | |
3725 | J14(2)=(DP1(2)-DP4(2))*V14 +TV1*DV4(2) +TV4*DV1(2) | |
3726 | J14(3)=(DP1(3)-DP4(3))*V14 +TV1*DV4(3) +TV4*DV1(3) | |
3727 | J32(0)=(DP3(0)-DP2(0))*V23 +TV3*DV2(0) +TV2*DV3(0) | |
3728 | J32(1)=(DP3(1)-DP2(1))*V23 +TV3*DV2(1) +TV2*DV3(1) | |
3729 | J32(2)=(DP3(2)-DP2(2))*V23 +TV3*DV2(2) +TV2*DV3(2) | |
3730 | J32(3)=(DP3(3)-DP2(3))*V23 +TV3*DV2(3) +TV2*DV3(3) | |
3731 | C | |
3732 | JS12=Q(0)*J12(0)-Q(1)*J12(1)-Q(2)*J12(2)-Q(3)*J12(3) | |
3733 | JS34=Q(0)*J34(0)-Q(1)*J34(1)-Q(2)*J34(2)-Q(3)*J34(3) | |
3734 | JS14=K(0)*J14(0)-K(1)*J14(1)-K(2)*J14(2)-K(3)*J14(3) | |
3735 | JS32=K(0)*J32(0)-K(1)*J32(1)-K(2)*J32(2)-K(3)*J32(3) | |
3736 | C | |
3737 | JS=J12(0)*J34(0)-J12(1)*J34(1)-J12(2)*J34(2)-J12(3)*J34(3) | |
3738 | JT=J14(0)*J32(0)-J14(1)*J32(1)-J14(2)*J32(2)-J14(3)*J32(3) | |
3739 | C | |
3740 | DVERTX = (V12*V34 +V14*V23 -RXTWO*V13*V24)*DGW2 | |
3741 | ||
3742 | C & +(dzs*dgwwz2+das*dgwwa2)*js -dzs*dgwwz2*js12*js34/dmz**2 | |
3743 | C & +(dzt*dgwwz2+dat*dgwwa2)*jt -dzt*dgwwz2*js14*js32/dmz**2 | |
3744 | C | |
3745 | VERTEX = -DCMPLX( DVERTX ) | |
3746 | C | |
3747 | RETURN | |
3748 | END |