Merge lp:~maddevelopers/mg5amcnlo/2.6.5_ewa into lp:~mg5core1/mg5amcnlo/2.7.4

Proposed by Olivier Mattelaer
Status: Work in progress
Proposed branch: lp:~maddevelopers/mg5amcnlo/2.6.5_ewa
Merge into: lp:~mg5core1/mg5amcnlo/2.7.4
Diff against target: 2653 lines (+2102/-87)
24 files modified
Template/LO/Source/PDF/ElectroweakFlux.f (+1484/-0)
Template/LO/Source/PDF/ElectroweakFlux.inc (+38/-0)
Template/LO/Source/PDF/PhotonFlux.f (+6/-4)
Template/LO/Source/PDF/makefile (+4/-3)
Template/LO/Source/PDF/pdg2pdf.f (+110/-16)
Template/LO/Source/PDF/pdg2pdf_lhapdf6.f (+110/-10)
Template/LO/Source/setrun.f (+2/-3)
Template/LO/SubProcesses/genps.f (+1/-0)
Template/MadWeight/src/setrun.f (+8/-0)
madgraph/core/base_objects.py (+3/-2)
madgraph/interface/common_run_interface.py (+15/-0)
madgraph/interface/madevent_interface.py (+3/-2)
madgraph/iolibs/export_v4.py (+60/-3)
madgraph/iolibs/template_files/auto_dsig_v4.inc (+15/-0)
madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+2/-15)
madgraph/iolibs/template_files/matrix_madevent_v4.inc (+2/-14)
madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc (+7/-2)
madgraph/various/banner.py (+89/-7)
madgraph/various/cluster.py (+68/-4)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/auto_dsig.f (+30/-0)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f (+3/-0)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/super_auto_dsig.f (+8/-2)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/auto_dsig.f (+30/-0)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f (+4/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/2.6.5_ewa
Reviewer Review Type Date Requested Status
mg5core1 Pending
Review via email: mp+397567@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

put comment for richard

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

so the important changes are
1) forcing MC over helicity [here simple copy-paste]
2) moving polarization from the parton to the PDF section (when needed--not perfectly done here due to DIS lack of support)
3) include the new PDF [here you should be ok, be carefull with the POL() normalization]
4) will need to worry about the number of helicty allowed for the W (what if only transverse)

Unmerged revisions

307. By olivier-mattelaer

merge with 2.7.4

306. By olivier-mattelaer

merge with 2.7.2

305. By olivier-mattelaer

merge with latest 2.6.7

304. By olivier-mattelaer

fix the helicity factor for the Z boson in EWA

303. By olivier-mattelaer

allow lhapdf + EWA for pW initial state

302. By olivier-mattelaer

merge with latest 2.6.6

301. By olivier-mattelaer

fixing some tests

300. By olivier-mattelaer

merge with latest 2.6.6

299. By olivier-mattelaer

implement EWA for proton collision --thanks to xiaoran

298. By olivier-mattelaer

allow EWA for proton

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'Template/LO/Source/PDF/ElectroweakFlux.f'
--- Template/LO/Source/PDF/ElectroweakFlux.f 1970-01-01 00:00:00 +0000
+++ Template/LO/Source/PDF/ElectroweakFlux.f 2021-02-05 11:45:49 +0000
@@ -0,0 +1,1484 @@
1c/* ********************************************************* */
2c/* Effective W Approximation Splitting Functions */
3c/* Pulled from Barger and Phillips, pg 276 */
4c/* ********************************************************* */
5c
6c List of functions:
7c ewa_wX_ByPID,ewa_wX,ewa_wT,ewa_w0
8c ewa_zX_ByPID,ewa_zT,ewa_z0
9c
10c Input for ewa_vX_ByPID:
11c x: longitudinal momentum fraction carried by boson v
12c q2max: scale^2 of v boson pdf
13c pol: polarization of v boson (pol = +1,-1,0)
14c ppid: pid of v boson's parent fermion
15c/* ********************************************************* */
16
17c/* ********************************************************* */
18c return ewa splitting function for w boson by parent PID
19 double precision function ewa_wX_ByPID(x,q2max,pol,ppid)
20 implicit none
21 integer pol,ppid
22 double precision x,q2max
23 double precision ewa_wX
24 double precision ewa_wp_p, ewa_wm_p
25 external ewa_wX, ewa_wp_p, ewa_wm_p
26
27 include 'ElectroweakFlux.inc'
28
29 if(q2max.lt.ewa_mw2) then
30c write (*,*) 'ERROR: q2max below MW2',q2max,ewa_mw2
31 ewa_wX_ByPID = 0d0
32 return
33 endif
34 if(x.lt.eps .or. x.gt.(1.d0-eps)) then
35c write (*,*) 'ERROR: x out of range',x
36 ewa_wX_ByPID =0d0
37 return
38 endif
39
40c is parent a proton (unbroken)
41 if(ppid.eq.2212) then
42 ewa_wX_ByPID = ewa_wp_p(x,q2max,pol)
43 return
44 else if(ppid.eq.-2212) then
45 ewa_wX_ByPID = ewa_wm_p(x,q2max,pol)
46 return
47c other particle
48 else
49 ewa_wX_ByPID = ewa_wX(x,q2max,pol)
50 endif
51 return
52 end
53c/* ********************************************************* */
54c return ewa splitting function for w boson
55 double precision function ewa_wX(x,q2max,pol)
56 implicit none
57 integer pol
58 double precision x,q2max
59 double precision ewa_wT,ewa_w0
60 external ewa_wT,ewa_w0
61
62 if(abs(pol).gt.0) then
63 ewa_wX = ewa_wT(x,q2max,pol)
64 else
65 ewa_wX = ewa_w0(x)
66 endif
67 return
68 end
69c/* ********************************************************* */
70c return ewa splitting function for z boson by parent PID
71 double precision function ewa_zX_ByPID(x,q2max,pol,ppid)
72 implicit none
73 integer pol,ppid
74 double precision x,q2max
75 double precision ewa_zT,ewa_z0, ewa_z_p
76 external ewa_zT,ewa_z0,ewa_z_p
77
78 include 'ElectroweakFlux.inc'
79
80 if(q2max.lt.ewa_mz2) then
81c write (*,*) 'ERROR: q2max below MZ2',q2max,ewa_mz2
82 ewa_zX_ByPID = 0d0
83 return
84 endif
85 if(x.lt.eps .or. x.gt.(1.d0-eps))then
86c write (*,*) 'ERROR: x out of range',x
87 ewa_zX_ByPID = 0d0
88 return
89 endif
90
91c is parent a charged lepton?
92 if( abs(ppid).eq.11
93 & .or. abs(ppid).eq.13
94 & .or. abs(ppid).eq.15) then
95 if(abs(pol).gt.0) then
96 ewa_zX_ByPID = ewa_zT(x,q2max,pol,ewa_gVl,ewa_gAl)
97 else
98 ewa_zX_ByPID = ewa_z0(x,ewa_gVl,ewa_gAl)
99 endif
100 return
101c is parent a proton (unbroken)
102 elseif(ppid.eq.2212) then
103 ewa_zX_ByPID = ewa_Z_p(x,q2max,pol)
104 return
105c is parent a neutrino?
106 elseif( abs(ppid).eq.12
107 & .or. abs(ppid).eq.14
108 & .or. abs(ppid).eq.16) then
109 if(abs(pol).gt.0) then
110 ewa_zX_ByPID = ewa_zT(x,q2max,pol,ewa_gVv,ewa_gAv)
111 else
112 ewa_zX_ByPID = ewa_z0(x,ewa_gVv,ewa_gAv)
113 endif
114 return
115c is parent an up-type quark?
116 elseif( abs(ppid).eq.2
117 & .or. abs(ppid).eq.4
118 & .or. abs(ppid).eq.6) then
119 if(abs(pol).gt.0) then
120 ewa_zX_ByPID = ewa_zT(x,q2max,pol,ewa_gVu,ewa_gAu)
121 else
122 ewa_zX_ByPID = ewa_z0(x,ewa_gVu,ewa_gAu)
123 endif
124 return
125c is parent a down-type quark?
126 elseif( abs(ppid).eq.1
127 & .or. abs(ppid).eq.3
128 & .or. abs(ppid).eq.5) then
129 if(abs(pol).gt.0) then
130 ewa_zX_ByPID = ewa_zT(x,q2max,pol,ewa_gVd,ewa_gAd)
131 else
132 ewa_zX_ByPID = ewa_z0(x,ewa_gVd,ewa_gAd)
133 endif
134 return
135c or something else?
136 else
137 ewa_zX_ByPID = 0d0
138 return
139 endif
140 end
141c/* ********************************************************* */
142c w boson splitting function: longitudinal polarization
143 double precision function ewa_w0(x)
144 implicit none
145 double precision x
146 double precision coup
147
148 include 'ElectroweakFlux.inc'
149
150c P_W(x,lambda=0) = (gW/4pi)**2 (1-x)/x
151 coup = ewa_gW2/(16d0*pi2)
152 ewa_w0 = coup * (1d0-x)/x
153 return
154 end
155c/* ********************************************************* */
156c z boson splitting function: longitudinal polarization
157 double precision function ewa_z0(x,gV,gA)
158 implicit none
159 double precision x,gV,gA
160 double precision coup
161
162 include 'ElectroweakFlux.inc'
163
164c P_Z(x,lambda=0) = (gW2/cw2*4pi2) * (gV2 + gA2) (1-x)/x
165 coup = ewa_gW2/(ewa_cw2*4d0*pi2) * (gV**2 + gA**2)
166 ewa_z0 = coup * (1d0-x)/x
167 return
168 end
169c/* ********************************************************* */
170c w boson splitting function: transverse polarization
171 double precision function ewa_wT(x,q2max,pol)
172 implicit none
173 integer pol
174 double precision x,q2max
175 double precision coup,numer
176
177 include 'ElectroweakFlux.inc'
178
179c P_W(x,lambda=\pm) = coup * [(gV \mp gA)^2 + (gV \pm gA)^2 (1-x)^2] * log(Q2/MV2)
180 coup = ewa_gW2/(8d0*16d0*pi2)
181 numer = (ewa_gV-pol*ewa_gA)**2
182 & + (ewa_gV+pol*ewa_gA)**2 * (1d0-x)**2
183 ewa_wT = coup * numer * log(q2max/ewa_mw2) / x
184 return
185 end
186c/* ********************************************************* */
187c z boson splitting function: transverse polarization
188 double precision function ewa_zT(x,q2max,pol,gV,gA)
189 implicit none
190 integer pol
191 double precision x,q2max,gV,gA
192 double precision coup,numer
193
194 include 'ElectroweakFlux.inc'
195
196c P_Z(x,lambda=\pm) = coup * [(gV \mp gA)^2 + (gV \pm gA)^2 (1-x)^2] * log(Q2/MV2)
197 coup = ewa_gW2/(ewa_cw2*16d0*pi2)
198 numer = (gV-pol*gA)**2
199 & + (gV+pol*gA)**2 * (1d0-x)**2
200 ewa_zT = coup * numer * log(q2max/ewa_mz2) / x
201 return
202 end
203 FUNCTION dFINT(NARG,ARG,NENT,ENT,TABLE)
204C
205C INTERPOLATION ROUTINE. AUTHOR C. LETERTRE.
206C MODIFIED BY B. SCHORR, 1.07.1982.
207C
208 implicit real * 8 (a-h,o-z)
209 INTEGER NENT(*)
210 REAL*8 ARG(*), ENT(*), TABLE(*)
211 INTEGER INDEX(32)
212 REAL*8 WEIGHT(32)
213 LOGICAL MFLAG, RFLAG
214 DFINT = 0.
215 IF(NARG .LT. 1 .OR. NARG .GT. 5) GOTO 300
216 LMAX = 0
217 ISTEP = 1
218 KNOTS = 1
219 INDEX(1) = 1
220 WEIGHT(1) = 1.
221 DO 100 N = 1, NARG
222 X = ARG(N)
223 NDIM = NENT(N)
224 LOCA = LMAX
225 LMIN = LMAX + 1
226 LMAX = LMAX + NDIM
227 IF(NDIM .GT. 2) GOTO 10
228 IF(NDIM .EQ. 1) GOTO 100
229 H = X - ENT(LMIN)
230 IF(H .EQ. 0.) GOTO 90
231 ISHIFT = ISTEP
232 IF(X-ENT(LMIN+1) .EQ. 0.) GOTO 21
233 ISHIFT = 0
234 ETA = H / (ENT(LMIN+1) - ENT(LMIN))
235 GOTO 30
236 10 LOCB = LMAX + 1
237 11 LOCC = (LOCA+LOCB) / 2
238 IF(X-ENT(LOCC)) 12, 20, 13
239 12 LOCB = LOCC
240 GOTO 14
241 13 LOCA = LOCC
242 14 IF(LOCB-LOCA .GT. 1) GOTO 11
243 LOCA = MIN0( MAX0(LOCA,LMIN), LMAX-1 )
244 ISHIFT = (LOCA - LMIN) * ISTEP
245 ETA = (X - ENT(LOCA)) / (ENT(LOCA+1) - ENT(LOCA))
246 GOTO 30
247 20 ISHIFT = (LOCC - LMIN) * ISTEP
248 21 DO 22 K = 1, KNOTS
249 INDEX(K) = INDEX(K) + ISHIFT
250 22 CONTINUE
251 GOTO 90
252 30 DO 31 K = 1, KNOTS
253 INDEX(K) = INDEX(K) + ISHIFT
254 INDEX(K+KNOTS) = INDEX(K) + ISTEP
255 WEIGHT(K+KNOTS) = WEIGHT(K) * ETA
256 WEIGHT(K) = WEIGHT(K) - WEIGHT(K+KNOTS)
257 31 CONTINUE
258 KNOTS = 2*KNOTS
259 90 ISTEP = ISTEP * NDIM
260 100 CONTINUE
261 DO 200 K = 1, KNOTS
262 I = INDEX(K)
263 DFINT = DFINT + WEIGHT(K) * TABLE(I)
264 200 CONTINUE
265 RETURN
266 300 CALL KERMTR('E104.1',LGFILE,MFLAG,RFLAG)
267 IF(MFLAG) THEN
268 IF(LGFILE .EQ. 0) THEN
269 WRITE(*,1000) NARG
270 ELSE
271 WRITE(LGFILE,1000) NARG
272 ENDIF
273 ENDIF
274 IF(.NOT. RFLAG) CALL ABEND
275 RETURN
2761000 FORMAT( 7X, 25HFUNCTION DFINT ... NARG =,I6,
277 + 17H NOT WITHIN RANGE)
278 END
279 SUBROUTINE KERSET(ERCODE,LGFILE,LIMITM,LIMITR)
280 PARAMETER(KOUNTE = 28)
281 CHARACTER*6 ERCODE, CODE(KOUNTE)
282 LOGICAL MFLAG, RFLAG
283 INTEGER KNTM(KOUNTE), KNTR(KOUNTE)
284 DATA LOGF / 0 /
285 DATA CODE(1), KNTM(1), KNTR(1) / 'C204.1', 100, 100 /
286 DATA CODE(2), KNTM(2), KNTR(2) / 'C204.2', 100, 100 /
287 DATA CODE(3), KNTM(3), KNTR(3) / 'C204.3', 100, 100 /
288 DATA CODE(4), KNTM(4), KNTR(4) / 'C205.1', 100, 100 /
289 DATA CODE(5), KNTM(5), KNTR(5) / 'C205.2', 100, 100 /
290 DATA CODE(6), KNTM(6), KNTR(6) / 'C205.3', 100, 100 /
291 DATA CODE(7), KNTM(7), KNTR(7) / 'C305.1', 100, 100 /
292 DATA CODE(8), KNTM(8), KNTR(8) / 'C308.1', 100, 100 /
293 DATA CODE(9), KNTM(9), KNTR(9) / 'C312.1', 100, 100 /
294 DATA CODE(10),KNTM(10),KNTR(10) / 'C313.1', 100, 100 /
295 DATA CODE(11),KNTM(11),KNTR(11) / 'C336.1', 100, 100 /
296 DATA CODE(12),KNTM(12),KNTR(12) / 'C337.1', 100, 100 /
297 DATA CODE(13),KNTM(13),KNTR(13) / 'C341.1', 100, 100 /
298 DATA CODE(14),KNTM(14),KNTR(14) / 'D103.1', 100, 100 /
299 DATA CODE(15),KNTM(15),KNTR(15) / 'D106.1', 100, 100 /
300 DATA CODE(16),KNTM(16),KNTR(16) / 'D209.1', 100, 100 /
301 DATA CODE(17),KNTM(17),KNTR(17) / 'D509.1', 100, 100 /
302 DATA CODE(18),KNTM(18),KNTR(18) / 'E100.1', 100, 100 /
303 DATA CODE(19),KNTM(19),KNTR(19) / 'E104.1', 100, 100 /
304 DATA CODE(20),KNTM(20),KNTR(20) / 'E105.1', 100, 100 /
305 DATA CODE(21),KNTM(21),KNTR(21) / 'E208.1', 100, 100 /
306 DATA CODE(22),KNTM(22),KNTR(22) / 'E208.2', 100, 100 /
307 DATA CODE(23),KNTM(23),KNTR(23) / 'F010.1', 100, 0 /
308 DATA CODE(24),KNTM(24),KNTR(24) / 'F011.1', 100, 0 /
309 DATA CODE(25),KNTM(25),KNTR(25) / 'F012.1', 100, 0 /
310 DATA CODE(26),KNTM(26),KNTR(26) / 'F406.1', 100, 0 /
311 DATA CODE(27),KNTM(27),KNTR(27) / 'G100.1', 100, 100 /
312 DATA CODE(28),KNTM(28),KNTR(28) / 'G100.2', 100, 100 /
313 LOGF = LGFILE
314 IF(ERCODE .EQ. ' ') THEN
315 L = 0
316 ELSE
317 DO 10 L = 1, 6
318 IF(ERCODE(1:L) .EQ. ERCODE) GOTO 12
319 10 CONTINUE
320 12 CONTINUE
321 ENDIF
322 DO 14 I = 1, KOUNTE
323 IF(L .EQ. 0) GOTO 13
324 IF(CODE(I)(1:L) .NE. ERCODE(1:L)) GOTO 14
325 13 KNTM(I) = LIMITM
326 KNTR(I) = LIMITR
327 14 CONTINUE
328 RETURN
329 ENTRY KERMTR(ERCODE,LOG,MFLAG,RFLAG)
330 LOG = LOGF
331 DO 20 I = 1, KOUNTE
332 IF(ERCODE .EQ. CODE(I)) GOTO 21
333 20 CONTINUE
334 WRITE(*,1000) ERCODE
335 CALL ABEND
336 RETURN
337 21 RFLAG = KNTR(I) .GE. 1
338 IF(RFLAG .AND. (KNTR(I) .LT. 100)) KNTR(I) = KNTR(I) - 1
339 MFLAG = KNTM(I) .GE. 1
340 IF(MFLAG .AND. (KNTM(I) .LT. 100)) KNTM(I) = KNTM(I) - 1
341 IF(.NOT. RFLAG) THEN
342 IF(LOGF .LT. 1) THEN
343 WRITE(*,1001) CODE(I)
344 ELSE
345 WRITE(LOGF,1001) CODE(I)
346 ENDIF
347 ENDIF
348 IF(MFLAG .AND. RFLAG) THEN
349 IF(LOGF .LT. 1) THEN
350 WRITE(*,1002) CODE(I)
351 ELSE
352 WRITE(LOGF,1002) CODE(I)
353 ENDIF
354 ENDIF
355 RETURN
3561000 FORMAT(' KERNLIB LIBRARY ERROR. ' /
357 + ' ERROR CODE ',A6,' NOT RECOGNIZED BY KERMTR',
358 + ' ERROR MONITOR. RUN ABORTED.')
3591001 FORMAT(/' ***** RUN TERMINATED BY CERN LIBRARY ERROR ',
360 + 'CONDITION ',A6)
3611002 FORMAT(/' ***** CERN LIBRARY ERROR CONDITION ',A6)
362 END
363 SUBROUTINE ABEND
364C
365C CERN PROGLIB# Z035 ABEND .VERSION KERNVAX 1.10 811126
366
367 STOP '*** ABEND ***'
368 END
369 function ewa_wp_p(x,Q2,pol)
370 implicit none
371 real*8 ewa_wp_p
372 real*8 x,Q2
373 integer pol
374 real*8 tmp
375 real*8 y,z
376 real*8 ylow,yupp,zlow,zupp
377 parameter (ylow=-16.1181,yupp=-1e-07)
378 parameter (zlow=4.38683,zupp=13.8155)
379 real*8 ewa_wp_p_1p
380 real*8 ewa_wp_p_1m
381 real*8 ewa_wp_p_0
382 y=log(x)
383 z=0.5*log(Q2)
384 if(pol.eq.1)then
385 tmp=ewa_wp_p_1p(y,z)
386 else if(pol.eq.-1)then
387 tmp=ewa_wp_p_1m(y,z)
388 else
389 tmp=ewa_wp_p_0(y,z)
390 endif
391 ewa_wp_p=tmp/x*y*y
392 end
393 function ewa_wp_p_1p(y,z)
394 implicit none
395 real*8 ewa_wp_p_1p,y,z
396 integer narg,nny,nnz
397 parameter (narg=2)
398 parameter (nny=32)
399 parameter (nnz=8)
400 integer iny,inz,nent(narg)
401 real*8 tmp,dfint,ymap,zmap
402 real*8 arg(narg),ent(nny+nnz)
403 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
404 logical firsttime
405 external dfint,ymap,zmap
406 data yv/
407 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
408 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
409 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
410 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
411 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
412 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
413 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
414 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
415 data zv/
416 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
417 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
418 data (gridv(iny, 1),iny=1,32)/
419 # 3.5423305e-07, 2.8295336e-07, 2.2903220e-07, 1.8758200e-07,
420 # 1.5559163e-07, 1.3038773e-07, 1.1025515e-07, 9.4027921e-08,
421 # 8.0829168e-08, 7.0061706e-08, 6.1294211e-08, 5.4182560e-08,
422 # 4.8450890e-08, 4.3888687e-08, 4.0319491e-08, 3.7580596e-08,
423 # 3.5520713e-08, 3.3952301e-08, 3.2625426e-08, 3.1187707e-08,
424 # 2.9181849e-08, 2.6154236e-08, 2.1900372e-08, 1.6640020e-08,
425 # 1.1099066e-08, 6.2780040e-09, 2.8842540e-09, 1.0025616e-09,
426 # 2.4219639e-10, 3.2430180e-11, 1.7122412e-12, 4.1237372e-12/
427 data (gridv(iny, 2),iny=1,32)/
428 # 9.6800285e-03, 7.5895745e-03, 6.0144129e-03, 4.8116391e-03,
429 # 3.8906828e-03, 3.1743361e-03, 2.6106310e-03, 2.1637757e-03,
430 # 1.8068388e-03, 1.5208169e-03, 1.2917371e-03, 1.1084546e-03,
431 # 9.6221855e-04, 8.4652524e-04, 7.5595982e-04, 6.8586986e-04,
432 # 6.3206533e-04, 5.8999236e-04, 5.5430903e-04, 5.1815672e-04,
433 # 4.7362998e-04, 4.1384517e-04, 3.3686600e-04, 2.4790947e-04,
434 # 1.5951917e-04, 8.6605399e-05, 3.7927081e-05, 1.2444648e-05,
435 # 2.7972986e-06, 3.3735215e-07, 1.3499999e-08, 3.8170248e-08/
436 data (gridv(iny, 3),iny=1,32)/
437 # 2.6802909e-02, 2.0666858e-02, 1.6084293e-02, 1.2619023e-02,
438 # 9.9957736e-03, 7.9819494e-03, 6.4206742e-03, 5.2026236e-03,
439 # 4.2458765e-03, 3.4918949e-03, 2.8976082e-03, 2.4290655e-03,
440 # 2.0601111e-03, 1.7714145e-03, 1.5472491e-03, 1.3744754e-03,
441 # 1.2417664e-03, 1.1376810e-03, 1.0498817e-03, 9.6384193e-04,
442 # 8.6434504e-04, 7.3958460e-04, 5.8805171e-04, 4.2143198e-04,
443 # 2.6317925e-04, 1.3808501e-04, 5.8100243e-05, 1.8168748e-05,
444 # 3.8451248e-06, 4.2503569e-07, 1.2748665e-08, 4.3387870e-08/
445 data (gridv(iny, 4),iny=1,32)/
446 # 5.2421053e-02, 3.9824965e-02, 3.0512558e-02, 2.3545386e-02,
447 # 1.8330098e-02, 1.4377269e-02, 1.1354532e-02, 9.0302263e-03,
448 # 7.2316381e-03, 5.8351965e-03, 4.7504014e-03, 3.9068753e-03,
449 # 3.2509450e-03, 2.7436667e-03, 2.3536072e-03, 2.0551591e-03,
450 # 1.8269264e-03, 1.6483845e-03, 1.4987780e-03, 1.3553122e-03,
451 # 1.1959351e-03, 1.0052207e-03, 7.8338419e-04, 5.4881055e-04,
452 # 3.3404786e-04, 1.7020660e-04, 6.9197187e-05, 2.0763953e-05,
453 # 4.1724093e-06, 4.2803444e-07, 9.3531305e-09, 3.9817765e-08/
454 data (gridv(iny, 5),iny=1,32)/
455 # 8.7314473e-02, 6.5462234e-02, 4.9470387e-02, 3.7629031e-02,
456 # 2.8860417e-02, 2.2292410e-02, 1.7332180e-02, 1.3567321e-02,
457 # 1.0692431e-02, 8.4897045e-03, 6.8007137e-03, 5.5036549e-03,
458 # 4.5068644e-03, 3.7444546e-03, 3.1638216e-03, 2.7231011e-03,
459 # 2.3880260e-03, 2.1270240e-03, 1.9097372e-03, 1.7046592e-03,
460 # 1.4833082e-03, 1.2275453e-03, 9.4002916e-04, 6.4560015e-04,
461 # 3.8423698e-04, 1.9081605e-04, 7.5273640e-05, 2.1785061e-05,
462 # 4.1829038e-06, 4.0198589e-07, 6.0711799e-09, 3.4349528e-08/
463 data (gridv(iny, 6),iny=1,32)/
464 # 1.3235511e-01, 9.8047579e-02, 7.3187600e-02, 5.4960335e-02,
465 # 4.1600160e-02, 3.1701979e-02, 2.4311750e-02, 1.8768166e-02,
466 # 1.4585527e-02, 1.1418854e-02, 9.0192598e-03, 7.1973844e-03,
467 # 5.8123298e-03, 4.7637364e-03, 3.9726338e-03, 3.3768371e-03,
468 # 2.9266403e-03, 2.5776574e-03, 2.2889023e-03, 2.0198147e-03,
469 # 1.7358250e-03, 1.4167343e-03, 1.0680290e-03, 7.2056798e-04,
470 # 4.2032019e-04, 2.0398263e-04, 7.8308169e-05, 2.1899198e-05,
471 # 4.0241531e-06, 3.6414048e-07, 3.7675413e-09, 2.9031813e-08/
472 data (gridv(iny, 7),iny=1,32)/
473 # 1.9057983e-01, 1.3957407e-01, 1.0297250e-01, 7.6391524e-02,
474 # 5.7105084e-02, 4.2965226e-02, 3.2523923e-02, 2.4779895e-02,
475 # 1.9003972e-02, 1.4680964e-02, 1.1442346e-02, 9.0104755e-03,
476 # 7.1810453e-03, 5.8100245e-03, 4.7852651e-03, 4.0196945e-03,
477 # 3.4450331e-03, 3.0020034e-03, 2.6377816e-03, 2.3022876e-03,
478 # 1.9551214e-03, 1.5745712e-03, 1.1692227e-03, 7.7537535e-04,
479 # 4.4359770e-04, 2.1050710e-04, 7.8557363e-05, 2.0871834e-05,
480 # 3.5743974e-06, 2.9762988e-07, 2.7844229e-09, 2.2782149e-08/
481 data (gridv(iny, 8),iny=1,32)/
482 # 2.6712405e-01, 1.9341146e-01, 1.4102973e-01, 1.0336364e-01,
483 # 7.6305708e-02, 5.6682239e-02, 4.2352056e-02, 3.1846115e-02,
484 # 2.4101065e-02, 1.8371384e-02, 1.4128575e-02, 1.0978416e-02,
485 # 8.6341061e-03, 6.8955860e-03, 5.6086588e-03, 4.6555113e-03,
486 # 3.9452818e-03, 3.4012072e-03, 2.9571084e-03, 2.5527100e-03,
487 # 2.1419401e-03, 1.7020208e-03, 1.2447953e-03, 8.1123628e-04,
488 # 4.5515586e-04, 2.1111600e-04, 7.6224092e-05, 1.8396998e-05,
489 # 2.7018652e-06, 1.8403044e-07, 1.1449565e-09, 1.2394449e-08/
490 data firsttime/.true./
491 save
492 if(firsttime)then
493 firsttime=.false.
494 nent(1)=nny
495 nent(2)=nnz
496 do iny=1,nny
497 ent(iny)=(yv(iny))
498 enddo
499 do inz=1,nnz
500 ent(nny+inz)=(zv(inz))
501 enddo
502 endif
503 arg(1)=(y)
504 arg(2)=(z)
505 tmp=dfint(narg,arg,nent,ent,gridv)
506 ewa_wp_p_1p=tmp
507 return
508 end
509 function ewa_wp_p_1m(y,z)
510 implicit none
511 real*8 ewa_wp_p_1m,y,z
512 integer narg,nny,nnz
513 parameter (narg=2)
514 parameter (nny=32)
515 parameter (nnz=8)
516 integer iny,inz,nent(narg)
517 real*8 tmp,dfint,ymap,zmap
518 real*8 arg(narg),ent(nny+nnz)
519 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
520 logical firsttime
521 external dfint,ymap,zmap
522 data yv/
523 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
524 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
525 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
526 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
527 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
528 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
529 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
530 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
531 data zv/
532 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
533 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
534 data (gridv(iny, 1),iny=1,32)/
535 # 2.2352243e-07, 1.7777182e-07, 1.4298652e-07, 1.1622085e-07,
536 # 9.5328508e-08, 7.8759840e-08, 6.5499586e-08, 5.4802442e-08,
537 # 4.6136489e-08, 3.9104599e-08, 3.3386967e-08, 2.8725277e-08,
538 # 2.4905274e-08, 2.1731925e-08, 1.9030359e-08, 1.6631364e-08,
539 # 1.4386235e-08, 1.2169804e-08, 9.9111740e-09, 7.6254325e-09,
540 # 5.4230477e-09, 3.4799784e-09, 1.9601523e-09, 9.3903981e-10,
541 # 3.6862928e-10, 1.1297902e-10, 2.5188758e-11, 3.6724956e-12,
542 # 2.9351639e-13, 8.1701272e-15, 7.6912480e-17, 6.8729255e-27/
543 data (gridv(iny, 2),iny=1,32)/
544 # 5.9726888e-03, 4.6455606e-03, 3.6455128e-03, 2.8853282e-03,
545 # 2.3012642e-03, 1.8468005e-03, 1.4906859e-03, 1.2098779e-03,
546 # 9.8764085e-04, 8.1150430e-04, 6.7166904e-04, 5.6040282e-04,
547 # 4.7152850e-04, 3.9983688e-04, 3.4081959e-04, 2.9051542e-04,
548 # 2.4549043e-04, 2.0307075e-04, 1.6177240e-04, 1.2167096e-04,
549 # 8.4473943e-05, 5.2813192e-05, 2.8909650e-05, 1.3417511e-05,
550 # 5.0832560e-06, 1.4959648e-06, 3.1801753e-07, 4.3791104e-08,
551 # 3.2498348e-09, 8.1063886e-11, 6.0039546e-13, 6.3617388e-23/
552 data (gridv(iny, 3),iny=1,32)/
553 # 1.6219214e-02, 1.2379365e-02, 9.5193091e-03, 7.3739795e-03,
554 # 5.7510065e-03, 4.5098861e-03, 3.5553416e-03, 2.8172455e-03,
555 # 2.2446775e-03, 1.7999287e-03, 1.4539007e-03, 1.1841462e-03,
556 # 9.7322588e-04, 8.0691077e-04, 6.7339686e-04, 5.6275965e-04,
557 # 4.6677178e-04, 3.7925827e-04, 2.9674760e-04, 2.1907115e-04,
558 # 1.4910620e-04, 9.1228668e-05, 4.8765008e-05, 2.2043195e-05,
559 # 8.1072382e-06, 2.3064166e-06, 4.7120345e-07, 6.1862016e-08,
560 # 4.3153587e-09, 9.8155908e-11, 5.5917625e-13, 7.2313499e-23/
561 data (gridv(iny, 4),iny=1,32)/
562 # 3.1188696e-02, 2.3420186e-02, 1.7702079e-02, 1.3467734e-02,
563 # 1.0309782e-02, 7.9318460e-03, 6.1325773e-03, 4.7646388e-03,
564 # 3.7215358e-03, 2.9251760e-03, 2.3161962e-03, 1.8496758e-03,
565 # 1.4912341e-03, 1.2139639e-03, 9.9569551e-04, 8.1869337e-04,
566 # 6.6868465e-04, 5.3525022e-04, 4.1252936e-04, 2.9977979e-04,
567 # 2.0061564e-04, 1.2049765e-04, 6.3112103e-05, 2.7890159e-05,
568 # 1.0000143e-05, 2.7633522e-06, 5.4561380e-07, 6.8754820e-08,
569 # 4.5477918e-09, 9.5512862e-11, 4.0175364e-13, 6.6363321e-23/
570 data (gridv(iny, 5),iny=1,32)/
571 # 5.1182299e-02, 3.7889407e-02, 2.8215137e-02, 2.1136435e-02,
572 # 1.5925131e-02, 1.2054633e-02, 9.1677464e-03, 7.0050385e-03,
573 # 5.3803216e-03, 4.1584009e-03, 3.2378903e-03, 2.5431829e-03,
574 # 2.0176932e-03, 1.6173071e-03, 1.3073170e-03, 1.0602661e-03,
575 # 8.5475523e-04, 6.7549247e-04, 5.1388835e-04, 3.6836179e-04,
576 # 2.4290493e-04, 1.4356363e-04, 7.3865824e-05, 3.2002011e-05,
577 # 1.1221536e-05, 3.0227536e-06, 5.7924224e-07, 7.0416470e-08,
578 # 4.4455239e-09, 8.7027993e-11, 2.5174163e-13, 5.7249565e-23/
579 data (gridv(iny, 6),iny=1,32)/
580 # 7.6557895e-02, 5.5955076e-02, 4.1120172e-02, 3.0385490e-02,
581 # 2.2576036e-02, 1.6847439e-02, 1.2629288e-02, 9.5105660e-03,
582 # 7.1985244e-03, 5.4827229e-03, 4.2072308e-03, 3.2573133e-03,
583 # 2.5483598e-03, 2.0155007e-03, 1.6086767e-03, 1.2891809e-03,
584 # 1.0274915e-03, 8.0291084e-04, 6.0382880e-04, 4.2759547e-04,
585 # 2.7827791e-04, 1.6211285e-04, 8.2090171e-05, 3.4938634e-05,
586 # 1.2008139e-05, 3.1607346e-06, 5.8901727e-07, 6.9129330e-08,
587 # 4.1796650e-09, 7.6790396e-11, 1.4801921e-13, 4.8386670e-23/
588 data (gridv(iny, 7),iny=1,32)/
589 # 1.0885701e-01, 7.8595632e-02, 5.7044003e-02, 4.1606207e-02,
590 # 3.0510595e-02, 2.2464186e-02, 1.6611725e-02, 1.2338586e-02,
591 # 9.2105421e-03, 6.9185264e-03, 5.2361582e-03, 3.9989670e-03,
592 # 3.0873318e-03, 2.4109199e-03, 1.9013023e-03, 1.5064199e-03,
593 # 1.1876339e-03, 9.1812852e-04, 6.8290918e-04, 4.7797892e-04,
594 # 3.0715516e-04, 1.7645732e-04, 8.7991353e-05, 3.6807315e-05,
595 # 1.2399813e-05, 3.1850040e-06, 5.7189229e-07, 6.3166456e-08,
596 # 3.5998373e-09, 6.0994275e-11, 1.0798487e-13, 3.7970497e-23/
597 data (gridv(iny, 8),iny=1,32)/
598 # 1.5068353e-01, 1.0749621e-01, 7.7041842e-02, 5.5476031e-02,
599 # 4.0143008e-02, 2.9160969e-02, 2.1271437e-02, 1.5583408e-02,
600 # 1.1472391e-02, 8.4985083e-03, 6.3433700e-03, 4.7785683e-03,
601 # 3.6402566e-03, 2.8065350e-03, 2.1865589e-03, 1.7127763e-03,
602 # 1.3356279e-03, 1.0214490e-03, 7.5140048e-04, 5.1978083e-04,
603 # 3.2977123e-04, 1.8681197e-04, 9.1728471e-05, 3.7697570e-05,
604 # 1.2430821e-05, 3.1016518e-06, 5.2367878e-07, 5.0603141e-08,
605 # 2.5423963e-09, 3.4635376e-11, 4.1186342e-14, 2.0657555e-23/
606 data firsttime/.true./
607 save
608 if(firsttime)then
609 firsttime=.false.
610 nent(1)=nny
611 nent(2)=nnz
612 do iny=1,nny
613 ent(iny)=(yv(iny))
614 enddo
615 do inz=1,nnz
616 ent(nny+inz)=(zv(inz))
617 enddo
618 endif
619 arg(1)=(y)
620 arg(2)=(z)
621 tmp=dfint(narg,arg,nent,ent,gridv)
622 ewa_wp_p_1m=tmp
623 return
624 end
625 function ewa_wp_p_0(y,z)
626 implicit none
627 real*8 ewa_wp_p_0,y,z
628 integer narg,nny,nnz
629 parameter (narg=2)
630 parameter (nny=32)
631 parameter (nnz=8)
632 integer iny,inz,nent(narg)
633 real*8 tmp,dfint,ymap,zmap
634 real*8 arg(narg),ent(nny+nnz)
635 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
636 logical firsttime
637 external dfint,ymap,zmap
638 data yv/
639 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
640 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
641 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
642 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
643 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
644 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
645 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
646 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
647 data zv/
648 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
649 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
650 data (gridv(iny, 1),iny=1,32)/
651 # 3.5187008e-03, 2.8034859e-03, 2.2605790e-03, 1.8430659e-03,
652 # 1.5186478e-03, 1.2616393e-03, 1.0560624e-03, 8.9012320e-04,
653 # 7.5538508e-04, 6.4582892e-04, 5.5671967e-04, 4.8420795e-04,
654 # 4.2519673e-04, 3.7700036e-04, 3.3717825e-04, 3.0339543e-04,
655 # 2.7329402e-04, 2.4447706e-04, 2.1469168e-04, 1.8222898e-04,
656 # 1.4664818e-04, 1.0943422e-04, 7.3828376e-05, 4.3723959e-05,
657 # 2.1983802e-05, 9.0102753e-06, 2.8448697e-06, 6.3299117e-07,
658 # 8.7487931e-08, 5.2831049e-09, 1.1568847e-10, 1.8415286e-15/
659 data (gridv(iny, 2),iny=1,32)/
660 # 5.2548138e-03, 4.0999760e-03, 3.2295174e-03, 2.5667153e-03,
661 # 2.0584664e-03, 1.6625476e-03, 1.3517402e-03, 1.1060358e-03,
662 # 9.1078460e-04, 7.5538896e-04, 6.3160108e-04, 5.3288902e-04,
663 # 4.5415547e-04, 3.9119341e-04, 3.4038971e-04, 2.9850573e-04,
664 # 2.6252377e-04, 2.2960220e-04, 1.9724634e-04, 1.6373150e-04,
665 # 1.2870167e-04, 9.3622734e-05, 6.1405954e-05, 3.5240336e-05,
666 # 1.7102418e-05, 6.7317976e-06, 2.0267789e-06, 4.2595999e-07,
667 # 5.4725748e-08, 2.9719851e-09, 4.8981810e-11, 9.4455659e-16/
668 data (gridv(iny, 3),iny=1,32)/
669 # 7.1876070e-03, 5.5076672e-03, 4.2546965e-03, 3.3120537e-03,
670 # 2.5990113e-03, 2.0524391e-03, 1.6307512e-03, 1.3034276e-03,
671 # 1.0481689e-03, 8.4882548e-04, 6.9291048e-04, 5.7083971e-04,
672 # 4.7522642e-04, 4.0016654e-04, 3.4076979e-04, 2.9285118e-04,
673 # 2.5271536e-04, 2.1707747e-04, 1.8321030e-04, 1.4933939e-04,
674 # 1.1513883e-04, 8.2005502e-05, 5.2541044e-05, 2.9373325e-05,
675 # 1.3840817e-05, 5.2672006e-06, 1.5241105e-06, 3.0542392e-07,
676 # 3.6915891e-08, 1.8347912e-09, 2.2114402e-11, 5.3685066e-16/
677 data (gridv(iny, 4),iny=1,32)/
678 # 9.2731430e-03, 6.9948236e-03, 5.3144732e-03, 4.0652903e-03,
679 # 3.1328132e-03, 2.4282484e-03, 1.8929862e-03, 1.4841263e-03,
680 # 1.1704474e-03, 9.2943341e-04, 7.4399977e-04, 6.0109301e-04,
681 # 4.9092271e-04, 4.0580385e-04, 3.3953903e-04, 2.8700023e-04,
682 # 2.4383801e-04, 2.0634913e-04, 1.7159359e-04, 1.3773971e-04,
683 # 1.0446314e-04, 7.3071554e-05, 4.5887405e-05, 2.5084061e-05,
684 # 1.1524443e-05, 4.2604502e-06, 1.1914778e-06, 2.2920043e-07,
685 # 2.6286612e-08, 1.2107299e-09, 1.0080946e-11, 3.2845426e-16/
686 data (gridv(iny, 5),iny=1,32)/
687 # 1.1477138e-02, 8.5381747e-03, 6.3939961e-03, 4.8178867e-03,
688 # 3.6556258e-03, 2.7887348e-03, 2.1392407e-03, 1.6500181e-03,
689 # 1.2800074e-03, 9.9975891e-04, 7.8717888e-04, 6.2562654e-04,
690 # 5.0280633e-04, 4.0921770e-04, 3.3736136e-04, 2.8121172e-04,
691 # 2.3579394e-04, 1.9702349e-04, 1.6176823e-04, 1.2814066e-04,
692 # 9.5802895e-05, 6.5966820e-05, 4.0705648e-05, 2.1818543e-05,
693 # 9.8043554e-06, 3.5336308e-06, 9.5911504e-07, 1.7800578e-07,
694 # 1.9496528e-08, 8.4002050e-10, 4.3204403e-12, 2.1251138e-16/
695 data (gridv(iny, 6),iny=1,32)/
696 # 1.3802612e-02, 1.0141026e-02, 7.4971127e-03, 5.5741476e-03,
697 # 4.1720271e-03, 3.1386776e-03, 2.3737894e-03, 1.8049673e-03,
698 # 1.3802137e-03, 1.0625971e-03, 8.2471236e-04, 6.4617450e-04,
699 # 5.1210721e-04, 4.1120934e-04, 3.3467950e-04, 2.7561780e-04,
700 # 2.2846603e-04, 1.8878732e-04, 1.5327653e-04, 1.1999194e-04,
701 # 8.8573452e-05, 6.0136140e-05, 3.6529669e-05, 1.9238247e-05,
702 # 8.4746327e-06, 2.9853000e-06, 7.8837418e-07, 1.4128313e-07,
703 # 1.4820095e-08, 6.0070190e-10, 1.7185758e-12, 1.4369011e-16/
704 data (gridv(iny, 7),iny=1,32)/
705 # 1.6432308e-02, 1.1930946e-02, 8.7133575e-03, 6.3970356e-03,
706 # 4.7264435e-03, 3.5091707e-03, 2.6187361e-03, 1.9645111e-03,
707 # 1.4819077e-03, 1.1254264e-03, 8.6166780e-04, 6.6606423e-04,
708 # 5.2091794e-04, 4.1296488e-04, 3.3203523e-04, 2.7031018e-04,
709 # 2.2163224e-04, 1.8120725e-04, 1.4555330e-04, 1.1266604e-04,
710 # 8.2152609e-05, 5.5024591e-05, 3.2922540e-05, 1.7044970e-05,
711 # 7.3639505e-06, 2.5349841e-06, 6.4817141e-07, 1.0938699e-07,
712 # 1.0789142e-08, 4.0267815e-10, 9.9738412e-13, 9.3965182e-17/
713 data (gridv(iny, 8),iny=1,32)/
714 # 1.9588443e-02, 1.4054534e-02, 1.0140342e-02, 7.3511754e-03,
715 # 5.3617513e-03, 3.9285711e-03, 2.8927241e-03, 2.1409034e-03,
716 # 1.5930991e-03, 1.1934393e-03, 9.0134688e-04, 6.8734040e-04,
717 # 5.3043871e-04, 4.1513075e-04, 3.2970284e-04, 2.6531895e-04,
718 # 2.1516289e-04, 1.7405250e-04, 1.3830950e-04, 1.0585100e-04,
719 # 7.6238215e-05, 5.0368640e-05, 2.9681423e-05, 1.5103253e-05,
720 # 6.3960840e-06, 2.1473293e-06, 5.2444493e-07, 7.7848289e-08,
721 # 6.7448840e-09, 2.0379331e-10, 2.3209743e-13, 4.3818080e-17/
722 data firsttime/.true./
723 save
724 if(firsttime)then
725 firsttime=.false.
726 nent(1)=nny
727 nent(2)=nnz
728 do iny=1,nny
729 ent(iny)=(yv(iny))
730 enddo
731 do inz=1,nnz
732 ent(nny+inz)=(zv(inz))
733 enddo
734 endif
735 arg(1)=(y)
736 arg(2)=(z)
737 tmp=dfint(narg,arg,nent,ent,gridv)
738 ewa_wp_p_0=tmp
739 return
740 end
741 function ewa_wm_p(x,Q2,pol)
742 implicit none
743 real*8 ewa_wm_p
744 real*8 x,Q2
745 integer pol
746 real*8 tmp
747 real*8 y,z
748 real*8 ylow,yupp,zlow,zupp
749 parameter (ylow=-16.1181,yupp=-1e-07)
750 parameter (zlow=4.38683,zupp=13.8155)
751 real*8 ewa_wm_p_1p
752 real*8 ewa_wm_p_1m
753 real*8 ewa_wm_p_0
754 y=log(x)
755 z=0.5*log(Q2)
756 if(pol.eq.1)then
757 tmp=ewa_wm_p_1p(y,z)
758 else if(pol.eq.-1)then
759 tmp=ewa_wm_p_1m(y,z)
760 else
761 tmp=ewa_wm_p_0(y,z)
762 endif
763 ewa_wm_p=tmp/x*y*y
764 end
765 function ewa_wm_p_1p(y,z)
766 implicit none
767 real*8 ewa_wm_p_1p,y,z
768 integer narg,nny,nnz
769 parameter (narg=2)
770 parameter (nny=32)
771 parameter (nnz=8)
772 integer iny,inz,nent(narg)
773 real*8 tmp,dfint,ymap,zmap
774 real*8 arg(narg),ent(nny+nnz)
775 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
776 logical firsttime
777 external dfint,ymap,zmap
778 data yv/
779 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
780 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
781 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
782 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
783 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
784 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
785 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
786 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
787 data zv/
788 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
789 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
790 data (gridv(iny, 1),iny=1,32)/
791 # 3.5423305e-07, 2.8295336e-07, 2.2903220e-07, 1.8758200e-07,
792 # 1.5559163e-07, 1.3038773e-07, 1.1025515e-07, 9.4027921e-08,
793 # 8.0829168e-08, 7.0061706e-08, 6.1294211e-08, 5.4182560e-08,
794 # 4.8450890e-08, 4.3888687e-08, 4.0319491e-08, 3.7580596e-08,
795 # 3.5520713e-08, 3.3952301e-08, 3.2625426e-08, 3.1187707e-08,
796 # 2.9181849e-08, 2.6154236e-08, 2.1900372e-08, 1.6640020e-08,
797 # 1.1099066e-08, 6.2780040e-09, 2.8842540e-09, 1.0025616e-09,
798 # 2.4219639e-10, 3.2430180e-11, 1.7122412e-12, 4.1237372e-12/
799 data (gridv(iny, 2),iny=1,32)/
800 # 9.6800285e-03, 7.5895745e-03, 6.0144129e-03, 4.8116391e-03,
801 # 3.8906828e-03, 3.1743361e-03, 2.6106310e-03, 2.1637757e-03,
802 # 1.8068388e-03, 1.5208169e-03, 1.2917371e-03, 1.1084546e-03,
803 # 9.6221855e-04, 8.4652524e-04, 7.5595982e-04, 6.8586986e-04,
804 # 6.3206533e-04, 5.8999236e-04, 5.5430903e-04, 5.1815672e-04,
805 # 4.7362998e-04, 4.1384517e-04, 3.3686600e-04, 2.4790947e-04,
806 # 1.5951917e-04, 8.6605399e-05, 3.7927081e-05, 1.2444648e-05,
807 # 2.7972986e-06, 3.3735215e-07, 1.3499999e-08, 3.8170248e-08/
808 data (gridv(iny, 3),iny=1,32)/
809 # 2.6802909e-02, 2.0666858e-02, 1.6084293e-02, 1.2619023e-02,
810 # 9.9957736e-03, 7.9819494e-03, 6.4206742e-03, 5.2026236e-03,
811 # 4.2458765e-03, 3.4918949e-03, 2.8976082e-03, 2.4290655e-03,
812 # 2.0601111e-03, 1.7714145e-03, 1.5472491e-03, 1.3744754e-03,
813 # 1.2417664e-03, 1.1376810e-03, 1.0498817e-03, 9.6384193e-04,
814 # 8.6434504e-04, 7.3958460e-04, 5.8805171e-04, 4.2143198e-04,
815 # 2.6317925e-04, 1.3808501e-04, 5.8100243e-05, 1.8168748e-05,
816 # 3.8451248e-06, 4.2503569e-07, 1.2748665e-08, 4.3387870e-08/
817 data (gridv(iny, 4),iny=1,32)/
818 # 5.2421053e-02, 3.9824965e-02, 3.0512558e-02, 2.3545386e-02,
819 # 1.8330098e-02, 1.4377269e-02, 1.1354532e-02, 9.0302263e-03,
820 # 7.2316381e-03, 5.8351965e-03, 4.7504014e-03, 3.9068753e-03,
821 # 3.2509450e-03, 2.7436667e-03, 2.3536072e-03, 2.0551591e-03,
822 # 1.8269264e-03, 1.6483845e-03, 1.4987780e-03, 1.3553122e-03,
823 # 1.1959351e-03, 1.0052207e-03, 7.8338419e-04, 5.4881055e-04,
824 # 3.3404786e-04, 1.7020660e-04, 6.9197187e-05, 2.0763953e-05,
825 # 4.1724093e-06, 4.2803444e-07, 9.3531305e-09, 3.9817765e-08/
826 data (gridv(iny, 5),iny=1,32)/
827 # 8.7314473e-02, 6.5462234e-02, 4.9470387e-02, 3.7629031e-02,
828 # 2.8860417e-02, 2.2292410e-02, 1.7332180e-02, 1.3567321e-02,
829 # 1.0692431e-02, 8.4897045e-03, 6.8007137e-03, 5.5036549e-03,
830 # 4.5068644e-03, 3.7444546e-03, 3.1638216e-03, 2.7231011e-03,
831 # 2.3880260e-03, 2.1270240e-03, 1.9097372e-03, 1.7046592e-03,
832 # 1.4833082e-03, 1.2275453e-03, 9.4002916e-04, 6.4560015e-04,
833 # 3.8423698e-04, 1.9081605e-04, 7.5273640e-05, 2.1785061e-05,
834 # 4.1829038e-06, 4.0198589e-07, 6.0711799e-09, 3.4349528e-08/
835 data (gridv(iny, 6),iny=1,32)/
836 # 1.3235511e-01, 9.8047579e-02, 7.3187600e-02, 5.4960335e-02,
837 # 4.1600160e-02, 3.1701979e-02, 2.4311750e-02, 1.8768166e-02,
838 # 1.4585527e-02, 1.1418854e-02, 9.0192598e-03, 7.1973844e-03,
839 # 5.8123298e-03, 4.7637364e-03, 3.9726338e-03, 3.3768371e-03,
840 # 2.9266403e-03, 2.5776574e-03, 2.2889023e-03, 2.0198147e-03,
841 # 1.7358250e-03, 1.4167343e-03, 1.0680290e-03, 7.2056798e-04,
842 # 4.2032019e-04, 2.0398263e-04, 7.8308169e-05, 2.1899198e-05,
843 # 4.0241531e-06, 3.6414048e-07, 3.7675413e-09, 2.9031813e-08/
844 data (gridv(iny, 7),iny=1,32)/
845 # 1.9057983e-01, 1.3957407e-01, 1.0297250e-01, 7.6391524e-02,
846 # 5.7105084e-02, 4.2965226e-02, 3.2523923e-02, 2.4779895e-02,
847 # 1.9003972e-02, 1.4680964e-02, 1.1442346e-02, 9.0104755e-03,
848 # 7.1810453e-03, 5.8100245e-03, 4.7852651e-03, 4.0196945e-03,
849 # 3.4450331e-03, 3.0020034e-03, 2.6377816e-03, 2.3022876e-03,
850 # 1.9551214e-03, 1.5745712e-03, 1.1692227e-03, 7.7537535e-04,
851 # 4.4359770e-04, 2.1050710e-04, 7.8557363e-05, 2.0871834e-05,
852 # 3.5743974e-06, 2.9762988e-07, 2.7844229e-09, 2.2782149e-08/
853 data (gridv(iny, 8),iny=1,32)/
854 # 2.6712405e-01, 1.9341146e-01, 1.4102973e-01, 1.0336364e-01,
855 # 7.6305708e-02, 5.6682239e-02, 4.2352056e-02, 3.1846115e-02,
856 # 2.4101065e-02, 1.8371384e-02, 1.4128575e-02, 1.0978416e-02,
857 # 8.6341061e-03, 6.8955860e-03, 5.6086588e-03, 4.6555113e-03,
858 # 3.9452818e-03, 3.4012072e-03, 2.9571084e-03, 2.5527100e-03,
859 # 2.1419401e-03, 1.7020208e-03, 1.2447953e-03, 8.1123628e-04,
860 # 4.5515586e-04, 2.1111600e-04, 7.6224092e-05, 1.8396998e-05,
861 # 2.7018652e-06, 1.8403044e-07, 1.1449565e-09, 1.2394449e-08/
862 data firsttime/.true./
863 save
864 if(firsttime)then
865 firsttime=.false.
866 nent(1)=nny
867 nent(2)=nnz
868 do iny=1,nny
869 ent(iny)=(yv(iny))
870 enddo
871 do inz=1,nnz
872 ent(nny+inz)=(zv(inz))
873 enddo
874 endif
875 arg(1)=(y)
876 arg(2)=(z)
877 tmp=dfint(narg,arg,nent,ent,gridv)
878 ewa_wm_p_1p=tmp
879 return
880 end
881 function ewa_wm_p_1m(y,z)
882 implicit none
883 real*8 ewa_wm_p_1m,y,z
884 integer narg,nny,nnz
885 parameter (narg=2)
886 parameter (nny=32)
887 parameter (nnz=8)
888 integer iny,inz,nent(narg)
889 real*8 tmp,dfint,ymap,zmap
890 real*8 arg(narg),ent(nny+nnz)
891 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
892 logical firsttime
893 external dfint,ymap,zmap
894 data yv/
895 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
896 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
897 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
898 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
899 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
900 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
901 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
902 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
903 data zv/
904 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
905 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
906 data (gridv(iny, 1),iny=1,32)/
907 # 2.2352243e-07, 1.7777182e-07, 1.4298652e-07, 1.1622085e-07,
908 # 9.5328508e-08, 7.8759840e-08, 6.5499586e-08, 5.4802442e-08,
909 # 4.6136489e-08, 3.9104599e-08, 3.3386967e-08, 2.8725277e-08,
910 # 2.4905274e-08, 2.1731925e-08, 1.9030359e-08, 1.6631364e-08,
911 # 1.4386235e-08, 1.2169804e-08, 9.9111740e-09, 7.6254325e-09,
912 # 5.4230477e-09, 3.4799784e-09, 1.9601523e-09, 9.3903981e-10,
913 # 3.6862928e-10, 1.1297902e-10, 2.5188758e-11, 3.6724956e-12,
914 # 2.9351639e-13, 8.1701272e-15, 7.6912480e-17, 6.8729255e-27/
915 data (gridv(iny, 2),iny=1,32)/
916 # 5.9726888e-03, 4.6455606e-03, 3.6455128e-03, 2.8853282e-03,
917 # 2.3012642e-03, 1.8468005e-03, 1.4906859e-03, 1.2098779e-03,
918 # 9.8764085e-04, 8.1150430e-04, 6.7166904e-04, 5.6040282e-04,
919 # 4.7152850e-04, 3.9983688e-04, 3.4081959e-04, 2.9051542e-04,
920 # 2.4549043e-04, 2.0307075e-04, 1.6177240e-04, 1.2167096e-04,
921 # 8.4473943e-05, 5.2813192e-05, 2.8909650e-05, 1.3417511e-05,
922 # 5.0832560e-06, 1.4959648e-06, 3.1801753e-07, 4.3791104e-08,
923 # 3.2498348e-09, 8.1063886e-11, 6.0039546e-13, 6.3617388e-23/
924 data (gridv(iny, 3),iny=1,32)/
925 # 1.6219214e-02, 1.2379365e-02, 9.5193091e-03, 7.3739795e-03,
926 # 5.7510065e-03, 4.5098861e-03, 3.5553416e-03, 2.8172455e-03,
927 # 2.2446775e-03, 1.7999287e-03, 1.4539007e-03, 1.1841462e-03,
928 # 9.7322588e-04, 8.0691077e-04, 6.7339686e-04, 5.6275965e-04,
929 # 4.6677178e-04, 3.7925827e-04, 2.9674760e-04, 2.1907115e-04,
930 # 1.4910620e-04, 9.1228668e-05, 4.8765008e-05, 2.2043195e-05,
931 # 8.1072382e-06, 2.3064166e-06, 4.7120345e-07, 6.1862016e-08,
932 # 4.3153587e-09, 9.8155908e-11, 5.5917625e-13, 7.2313499e-23/
933 data (gridv(iny, 4),iny=1,32)/
934 # 3.1188696e-02, 2.3420186e-02, 1.7702079e-02, 1.3467734e-02,
935 # 1.0309782e-02, 7.9318460e-03, 6.1325773e-03, 4.7646388e-03,
936 # 3.7215358e-03, 2.9251760e-03, 2.3161962e-03, 1.8496758e-03,
937 # 1.4912341e-03, 1.2139639e-03, 9.9569551e-04, 8.1869337e-04,
938 # 6.6868465e-04, 5.3525022e-04, 4.1252936e-04, 2.9977979e-04,
939 # 2.0061564e-04, 1.2049765e-04, 6.3112103e-05, 2.7890159e-05,
940 # 1.0000143e-05, 2.7633522e-06, 5.4561380e-07, 6.8754820e-08,
941 # 4.5477918e-09, 9.5512862e-11, 4.0175364e-13, 6.6363321e-23/
942 data (gridv(iny, 5),iny=1,32)/
943 # 5.1182299e-02, 3.7889407e-02, 2.8215137e-02, 2.1136435e-02,
944 # 1.5925131e-02, 1.2054633e-02, 9.1677464e-03, 7.0050385e-03,
945 # 5.3803216e-03, 4.1584009e-03, 3.2378903e-03, 2.5431829e-03,
946 # 2.0176932e-03, 1.6173071e-03, 1.3073170e-03, 1.0602661e-03,
947 # 8.5475523e-04, 6.7549247e-04, 5.1388835e-04, 3.6836179e-04,
948 # 2.4290493e-04, 1.4356363e-04, 7.3865824e-05, 3.2002011e-05,
949 # 1.1221536e-05, 3.0227536e-06, 5.7924224e-07, 7.0416470e-08,
950 # 4.4455239e-09, 8.7027993e-11, 2.5174163e-13, 5.7249565e-23/
951 data (gridv(iny, 6),iny=1,32)/
952 # 7.6557895e-02, 5.5955076e-02, 4.1120172e-02, 3.0385490e-02,
953 # 2.2576036e-02, 1.6847439e-02, 1.2629288e-02, 9.5105660e-03,
954 # 7.1985244e-03, 5.4827229e-03, 4.2072308e-03, 3.2573133e-03,
955 # 2.5483598e-03, 2.0155007e-03, 1.6086767e-03, 1.2891809e-03,
956 # 1.0274915e-03, 8.0291084e-04, 6.0382880e-04, 4.2759547e-04,
957 # 2.7827791e-04, 1.6211285e-04, 8.2090171e-05, 3.4938634e-05,
958 # 1.2008139e-05, 3.1607346e-06, 5.8901727e-07, 6.9129330e-08,
959 # 4.1796650e-09, 7.6790396e-11, 1.4801921e-13, 4.8386670e-23/
960 data (gridv(iny, 7),iny=1,32)/
961 # 1.0885701e-01, 7.8595632e-02, 5.7044003e-02, 4.1606207e-02,
962 # 3.0510595e-02, 2.2464186e-02, 1.6611725e-02, 1.2338586e-02,
963 # 9.2105421e-03, 6.9185264e-03, 5.2361582e-03, 3.9989670e-03,
964 # 3.0873318e-03, 2.4109199e-03, 1.9013023e-03, 1.5064199e-03,
965 # 1.1876339e-03, 9.1812852e-04, 6.8290918e-04, 4.7797892e-04,
966 # 3.0715516e-04, 1.7645732e-04, 8.7991353e-05, 3.6807315e-05,
967 # 1.2399813e-05, 3.1850040e-06, 5.7189229e-07, 6.3166456e-08,
968 # 3.5998373e-09, 6.0994275e-11, 1.0798487e-13, 3.7970497e-23/
969 data (gridv(iny, 8),iny=1,32)/
970 # 1.5068353e-01, 1.0749621e-01, 7.7041842e-02, 5.5476031e-02,
971 # 4.0143008e-02, 2.9160969e-02, 2.1271437e-02, 1.5583408e-02,
972 # 1.1472391e-02, 8.4985083e-03, 6.3433700e-03, 4.7785683e-03,
973 # 3.6402566e-03, 2.8065350e-03, 2.1865589e-03, 1.7127763e-03,
974 # 1.3356279e-03, 1.0214490e-03, 7.5140048e-04, 5.1978083e-04,
975 # 3.2977123e-04, 1.8681197e-04, 9.1728471e-05, 3.7697570e-05,
976 # 1.2430821e-05, 3.1016518e-06, 5.2367878e-07, 5.0603141e-08,
977 # 2.5423963e-09, 3.4635376e-11, 4.1186342e-14, 2.0657555e-23/
978 data firsttime/.true./
979 save
980 if(firsttime)then
981 firsttime=.false.
982 nent(1)=nny
983 nent(2)=nnz
984 do iny=1,nny
985 ent(iny)=(yv(iny))
986 enddo
987 do inz=1,nnz
988 ent(nny+inz)=(zv(inz))
989 enddo
990 endif
991 arg(1)=(y)
992 arg(2)=(z)
993 tmp=dfint(narg,arg,nent,ent,gridv)
994 ewa_wm_p_1m=tmp
995 return
996 end
997 function ewa_wm_p_0(y,z)
998 implicit none
999 real*8 ewa_wm_p_0,y,z
1000 integer narg,nny,nnz
1001 parameter (narg=2)
1002 parameter (nny=32)
1003 parameter (nnz=8)
1004 integer iny,inz,nent(narg)
1005 real*8 tmp,dfint,ymap,zmap
1006 real*8 arg(narg),ent(nny+nnz)
1007 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
1008 logical firsttime
1009 external dfint,ymap,zmap
1010 data yv/
1011 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
1012 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
1013 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
1014 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
1015 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
1016 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
1017 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
1018 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
1019 data zv/
1020 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
1021 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
1022 data (gridv(iny, 1),iny=1,32)/
1023 # 3.5187008e-03, 2.8034859e-03, 2.2605790e-03, 1.8430659e-03,
1024 # 1.5186478e-03, 1.2616393e-03, 1.0560624e-03, 8.9012320e-04,
1025 # 7.5538508e-04, 6.4582892e-04, 5.5671967e-04, 4.8420795e-04,
1026 # 4.2519673e-04, 3.7700036e-04, 3.3717825e-04, 3.0339543e-04,
1027 # 2.7329402e-04, 2.4447706e-04, 2.1469168e-04, 1.8222898e-04,
1028 # 1.4664818e-04, 1.0943422e-04, 7.3828376e-05, 4.3723959e-05,
1029 # 2.1983802e-05, 9.0102753e-06, 2.8448697e-06, 6.3299117e-07,
1030 # 8.7487931e-08, 5.2831049e-09, 1.1568847e-10, 1.8415286e-15/
1031 data (gridv(iny, 2),iny=1,32)/
1032 # 5.2548138e-03, 4.0999760e-03, 3.2295174e-03, 2.5667153e-03,
1033 # 2.0584664e-03, 1.6625476e-03, 1.3517402e-03, 1.1060358e-03,
1034 # 9.1078460e-04, 7.5538896e-04, 6.3160108e-04, 5.3288902e-04,
1035 # 4.5415547e-04, 3.9119341e-04, 3.4038971e-04, 2.9850573e-04,
1036 # 2.6252377e-04, 2.2960220e-04, 1.9724634e-04, 1.6373150e-04,
1037 # 1.2870167e-04, 9.3622734e-05, 6.1405954e-05, 3.5240336e-05,
1038 # 1.7102418e-05, 6.7317976e-06, 2.0267789e-06, 4.2595999e-07,
1039 # 5.4725748e-08, 2.9719851e-09, 4.8981810e-11, 9.4455659e-16/
1040 data (gridv(iny, 3),iny=1,32)/
1041 # 7.1876070e-03, 5.5076672e-03, 4.2546965e-03, 3.3120537e-03,
1042 # 2.5990113e-03, 2.0524391e-03, 1.6307512e-03, 1.3034276e-03,
1043 # 1.0481689e-03, 8.4882548e-04, 6.9291048e-04, 5.7083971e-04,
1044 # 4.7522642e-04, 4.0016654e-04, 3.4076979e-04, 2.9285118e-04,
1045 # 2.5271536e-04, 2.1707747e-04, 1.8321030e-04, 1.4933939e-04,
1046 # 1.1513883e-04, 8.2005502e-05, 5.2541044e-05, 2.9373325e-05,
1047 # 1.3840817e-05, 5.2672006e-06, 1.5241105e-06, 3.0542392e-07,
1048 # 3.6915891e-08, 1.8347912e-09, 2.2114402e-11, 5.3685066e-16/
1049 data (gridv(iny, 4),iny=1,32)/
1050 # 9.2731430e-03, 6.9948236e-03, 5.3144732e-03, 4.0652903e-03,
1051 # 3.1328132e-03, 2.4282484e-03, 1.8929862e-03, 1.4841263e-03,
1052 # 1.1704474e-03, 9.2943341e-04, 7.4399977e-04, 6.0109301e-04,
1053 # 4.9092271e-04, 4.0580385e-04, 3.3953903e-04, 2.8700023e-04,
1054 # 2.4383801e-04, 2.0634913e-04, 1.7159359e-04, 1.3773971e-04,
1055 # 1.0446314e-04, 7.3071554e-05, 4.5887405e-05, 2.5084061e-05,
1056 # 1.1524443e-05, 4.2604502e-06, 1.1914778e-06, 2.2920043e-07,
1057 # 2.6286612e-08, 1.2107299e-09, 1.0080946e-11, 3.2845426e-16/
1058 data (gridv(iny, 5),iny=1,32)/
1059 # 1.1477138e-02, 8.5381747e-03, 6.3939961e-03, 4.8178867e-03,
1060 # 3.6556258e-03, 2.7887348e-03, 2.1392407e-03, 1.6500181e-03,
1061 # 1.2800074e-03, 9.9975891e-04, 7.8717888e-04, 6.2562654e-04,
1062 # 5.0280633e-04, 4.0921770e-04, 3.3736136e-04, 2.8121172e-04,
1063 # 2.3579394e-04, 1.9702349e-04, 1.6176823e-04, 1.2814066e-04,
1064 # 9.5802895e-05, 6.5966820e-05, 4.0705648e-05, 2.1818543e-05,
1065 # 9.8043554e-06, 3.5336308e-06, 9.5911504e-07, 1.7800578e-07,
1066 # 1.9496528e-08, 8.4002050e-10, 4.3204403e-12, 2.1251138e-16/
1067 data (gridv(iny, 6),iny=1,32)/
1068 # 1.3802612e-02, 1.0141026e-02, 7.4971127e-03, 5.5741476e-03,
1069 # 4.1720271e-03, 3.1386776e-03, 2.3737894e-03, 1.8049673e-03,
1070 # 1.3802137e-03, 1.0625971e-03, 8.2471236e-04, 6.4617450e-04,
1071 # 5.1210721e-04, 4.1120934e-04, 3.3467950e-04, 2.7561780e-04,
1072 # 2.2846603e-04, 1.8878732e-04, 1.5327653e-04, 1.1999194e-04,
1073 # 8.8573452e-05, 6.0136140e-05, 3.6529669e-05, 1.9238247e-05,
1074 # 8.4746327e-06, 2.9853000e-06, 7.8837418e-07, 1.4128313e-07,
1075 # 1.4820095e-08, 6.0070190e-10, 1.7185758e-12, 1.4369011e-16/
1076 data (gridv(iny, 7),iny=1,32)/
1077 # 1.6432308e-02, 1.1930946e-02, 8.7133575e-03, 6.3970356e-03,
1078 # 4.7264435e-03, 3.5091707e-03, 2.6187361e-03, 1.9645111e-03,
1079 # 1.4819077e-03, 1.1254264e-03, 8.6166780e-04, 6.6606423e-04,
1080 # 5.2091794e-04, 4.1296488e-04, 3.3203523e-04, 2.7031018e-04,
1081 # 2.2163224e-04, 1.8120725e-04, 1.4555330e-04, 1.1266604e-04,
1082 # 8.2152609e-05, 5.5024591e-05, 3.2922540e-05, 1.7044970e-05,
1083 # 7.3639505e-06, 2.5349841e-06, 6.4817141e-07, 1.0938699e-07,
1084 # 1.0789142e-08, 4.0267815e-10, 9.9738412e-13, 9.3965182e-17/
1085 data (gridv(iny, 8),iny=1,32)/
1086 # 1.9588443e-02, 1.4054534e-02, 1.0140342e-02, 7.3511754e-03,
1087 # 5.3617513e-03, 3.9285711e-03, 2.8927241e-03, 2.1409034e-03,
1088 # 1.5930991e-03, 1.1934393e-03, 9.0134688e-04, 6.8734040e-04,
1089 # 5.3043871e-04, 4.1513075e-04, 3.2970284e-04, 2.6531895e-04,
1090 # 2.1516289e-04, 1.7405250e-04, 1.3830950e-04, 1.0585100e-04,
1091 # 7.6238215e-05, 5.0368640e-05, 2.9681423e-05, 1.5103253e-05,
1092 # 6.3960840e-06, 2.1473293e-06, 5.2444493e-07, 7.7848289e-08,
1093 # 6.7448840e-09, 2.0379331e-10, 2.3209743e-13, 4.3818080e-17/
1094 data firsttime/.true./
1095 save
1096 if(firsttime)then
1097 firsttime=.false.
1098 nent(1)=nny
1099 nent(2)=nnz
1100 do iny=1,nny
1101 ent(iny)=(yv(iny))
1102 enddo
1103 do inz=1,nnz
1104 ent(nny+inz)=(zv(inz))
1105 enddo
1106 endif
1107 arg(1)=(y)
1108 arg(2)=(z)
1109 tmp=dfint(narg,arg,nent,ent,gridv)
1110 ewa_wm_p_0=tmp
1111 return
1112 end
1113 function ewa_z_p(x,Q2,pol)
1114 implicit none
1115 real*8 ewa_z_p
1116 real*8 x,Q2
1117 integer pol
1118 real*8 tmp
1119 real*8 y,z
1120 real*8 ylow,yupp,zlow,zupp
1121 parameter (ylow=-16.1181,yupp=-1e-07)
1122 parameter (zlow=4.38683,zupp=13.8155)
1123 real*8 ewa_z_p_1p
1124 real*8 ewa_z_p_1m
1125 real*8 ewa_z_p_0
1126 y=log(x)
1127 z=0.5*log(Q2)
1128 if(pol.eq.1)then
1129 tmp=ewa_z_p_1p(y,z)
1130 else if(pol.eq.-1)then
1131 tmp=ewa_z_p_1m(y,z)
1132 else
1133 tmp=ewa_z_p_0(y,z)
1134 endif
1135 ewa_z_p=tmp/x*y*y
1136 end
1137 function ewa_z_p_1p(y,z)
1138 implicit none
1139 real*8 ewa_z_p_1p,y,z
1140 integer narg,nny,nnz
1141 parameter (narg=2)
1142 parameter (nny=32)
1143 parameter (nnz=8)
1144 integer iny,inz,nent(narg)
1145 real*8 tmp,dfint,ymap,zmap
1146 real*8 arg(narg),ent(nny+nnz)
1147 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
1148 logical firsttime
1149 external dfint,ymap,zmap
1150 data yv/
1151 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
1152 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
1153 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
1154 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
1155 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
1156 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
1157 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
1158 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
1159 data zv/
1160 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
1161 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
1162 data (gridv(iny, 1),iny=1,32)/
1163 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1164 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1165 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1166 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1167 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1168 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1169 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1170 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00/
1171 data (gridv(iny, 2),iny=1,32)/
1172 # 3.7303045e-03, 2.9227921e-03, 2.3141955e-03, 1.8493581e-03,
1173 # 1.4933843e-03, 1.2162782e-03, 9.9810630e-04, 8.2501787e-04,
1174 # 6.8659282e-04, 5.7544120e-04, 4.8609674e-04, 4.1418784e-04,
1175 # 3.5626496e-04, 3.0973606e-04, 2.7244727e-04, 2.4257706e-04,
1176 # 2.1854792e-04, 1.9876081e-04, 1.8151373e-04, 1.6480475e-04,
1177 # 1.4652391e-04, 1.2495404e-04, 9.9767621e-05, 7.2413235e-05,
1178 # 4.6189116e-05, 2.4986033e-05, 1.0981613e-05, 3.6318686e-06,
1179 # 8.2837802e-07, 1.0232602e-07, 4.9850666e-09, 1.2419766e-08/
1180 data (gridv(iny, 3),iny=1,32)/
1181 # 1.0860874e-02, 8.3686491e-03, 6.5072730e-03, 5.1000356e-03,
1182 # 4.0344753e-03, 3.2163074e-03, 2.5819036e-03, 2.0867745e-03,
1183 # 1.6975997e-03, 1.3904974e-03, 1.1478197e-03, 9.5566048e-04,
1184 # 8.0324203e-04, 6.8259459e-04, 5.8722232e-04, 5.1178459e-04,
1185 # 4.5182361e-04, 4.0308935e-04, 3.6137523e-04, 3.2211460e-04,
1186 # 2.8093250e-04, 2.3463440e-04, 1.8303741e-04, 1.2940501e-04,
1187 # 8.0128195e-05, 4.1902153e-05, 1.7698447e-05, 5.5786779e-06,
1188 # 1.1982518e-06, 1.3567906e-07, 5.1862975e-09, 1.4921624e-08/
1189 data (gridv(iny, 4),iny=1,32)/
1190 # 2.1582709e-02, 1.6384815e-02, 1.2542453e-02, 9.6686760e-03,
1191 # 7.5174482e-03, 5.8869725e-03, 4.6402349e-03, 3.6814614e-03,
1192 # 2.9392736e-03, 2.3625196e-03, 1.9136197e-03, 1.5633551e-03,
1193 # 1.2894368e-03, 1.0755569e-03, 9.0867962e-04, 7.7828223e-04,
1194 # 6.7581905e-04, 5.9350250e-04, 5.2402918e-04, 4.5996420e-04,
1195 # 3.9470912e-04, 3.2387169e-04, 2.4768512e-04, 1.7121604e-04,
1196 # 1.0335642e-04, 5.2501923e-05, 2.1430744e-05, 6.4822592e-06,
1197 # 1.3222258e-06, 1.3895999e-07, 4.1233808e-09, 1.3983723e-08/
1198 data (gridv(iny, 5),iny=1,32)/
1199 # 3.6225205e-02, 2.7139223e-02, 2.0491247e-02, 1.5570792e-02,
1200 # 1.1927494e-02, 9.1990020e-03, 7.1389947e-03, 5.5752406e-03,
1201 # 4.3810786e-03, 3.4655687e-03, 2.7625306e-03, 2.2211128e-03,
1202 # 1.8030325e-03, 1.4806433e-03, 1.2320561e-03, 1.0399620e-03,
1203 # 8.9058578e-04, 7.7179147e-04, 6.7267988e-04, 5.8270496e-04,
1204 # 4.9308080e-04, 3.9840200e-04, 2.9945131e-04, 2.0297089e-04,
1205 # 1.1982930e-04, 5.9340172e-05, 2.3506889e-05, 6.8579981e-06,
1206 # 1.3368364e-06, 1.3162902e-07, 2.9711215e-09, 1.2215759e-08/
1207 data (gridv(iny, 6),iny=1,32)/
1208 # 5.5154342e-02, 4.0827860e-02, 3.0449006e-02, 2.2843096e-02,
1209 # 1.7269263e-02, 1.3140804e-02, 1.0059401e-02, 7.7483419e-03,
1210 # 6.0046554e-03, 4.6839966e-03, 3.6820525e-03, 2.9195345e-03,
1211 # 2.3374414e-03, 1.8936267e-03, 1.5550949e-03, 1.2961420e-03,
1212 # 1.0966733e-03, 9.3947224e-04, 8.0960033e-04, 6.9320130e-04,
1213 # 5.7933366e-04, 4.6170562e-04, 3.4169800e-04, 2.2756193e-04,
1214 # 1.3169713e-04, 6.3745564e-05, 2.4577867e-05, 6.9293186e-06,
1215 # 1.2930488e-06, 1.1992460e-07, 2.0948206e-09, 1.0413998e-08/
1216 data (gridv(iny, 7),iny=1,32)/
1217 # 7.9641332e-02, 5.8283390e-02, 4.2961224e-02, 3.1840880e-02,
1218 # 2.3773251e-02, 1.7861019e-02, 1.3496990e-02, 1.0261222e-02,
1219 # 7.8482212e-03, 6.0415388e-03, 4.6867971e-03, 3.6676358e-03,
1220 # 2.8981380e-03, 2.3178462e-03, 1.8798546e-03, 1.5481330e-03,
1221 # 1.2949777e-03, 1.0972312e-03, 9.3539626e-04, 7.9205439e-04,
1222 # 6.5410473e-04, 5.1445082e-04, 3.7509234e-04, 2.4557633e-04,
1223 # 1.3941666e-04, 6.6000870e-05, 2.4739779e-05, 6.6282306e-06,
1224 # 1.1538853e-06, 9.8657074e-08, 1.5984130e-09, 8.2433190e-09/
1225 data (gridv(iny, 8),iny=1,32)/
1226 # 1.1184163e-01, 8.0917333e-02, 5.8950236e-02, 4.3164542e-02,
1227 # 3.1828151e-02, 2.3609789e-02, 1.7611453e-02, 1.3215123e-02,
1228 # 9.9748771e-03, 7.5776696e-03, 5.8010863e-03, 4.4800093e-03,
1229 # 3.4937519e-03, 2.7582893e-03, 2.2091448e-03, 1.7974773e-03,
1230 # 1.4863368e-03, 1.2455380e-03, 1.0503765e-03, 8.7953603e-04,
1231 # 7.1769738e-04, 5.5700142e-04, 4.0005545e-04, 2.5742663e-04,
1232 # 1.4335613e-04, 6.6352481e-05, 2.4061846e-05, 5.8581041e-06,
1233 # 8.7686172e-07, 6.1694293e-08, 7.6078967e-10, 4.5762876e-09/
1234 data firsttime/.true./
1235 save
1236 if(firsttime)then
1237 firsttime=.false.
1238 nent(1)=nny
1239 nent(2)=nnz
1240 do iny=1,nny
1241 ent(iny)=(yv(iny))
1242 enddo
1243 do inz=1,nnz
1244 ent(nny+inz)=(zv(inz))
1245 enddo
1246 endif
1247 arg(1)=(y)
1248 arg(2)=(z)
1249 tmp=dfint(narg,arg,nent,ent,gridv)
1250 ewa_z_p_1p=tmp
1251 return
1252 end
1253 function ewa_z_p_1m(y,z)
1254 implicit none
1255 real*8 ewa_z_p_1m,y,z
1256 integer narg,nny,nnz
1257 parameter (narg=2)
1258 parameter (nny=32)
1259 parameter (nnz=8)
1260 integer iny,inz,nent(narg)
1261 real*8 tmp,dfint,ymap,zmap
1262 real*8 arg(narg),ent(nny+nnz)
1263 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
1264 logical firsttime
1265 external dfint,ymap,zmap
1266 data yv/
1267 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
1268 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
1269 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
1270 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
1271 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
1272 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
1273 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
1274 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
1275 data zv/
1276 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
1277 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
1278 data (gridv(iny, 1),iny=1,32)/
1279 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1280 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1281 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1282 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1283 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1284 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1285 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1286 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00/
1287 data (gridv(iny, 2),iny=1,32)/
1288 # 2.4722465e-03, 1.9238378e-03, 1.5105106e-03, 1.1960749e-03,
1289 # 9.5450636e-04, 7.6644980e-04, 6.1891326e-04, 5.0238454e-04,
1290 # 4.0993066e-04, 3.3642652e-04, 2.7788916e-04, 2.3119738e-04,
1291 # 1.9389505e-04, 1.6397539e-04, 1.3974473e-04, 1.1973970e-04,
1292 # 1.0268876e-04, 8.7531986e-05, 7.3507411e-05, 6.0200203e-05,
1293 # 4.7561978e-05, 3.5825675e-05, 2.5363959e-05, 1.6554077e-05,
1294 # 9.6919422e-06, 4.9066425e-06, 2.0356874e-06, 6.4136541e-07,
1295 # 1.3870147e-07, 1.5934953e-08, 3.8134239e-10, 1.5583767e-09/
1296 data (gridv(iny, 3),iny=1,32)/
1297 # 7.0798337e-03, 5.4081649e-03, 4.1625029e-03, 3.2271346e-03,
1298 # 2.5192925e-03, 1.9775657e-03, 1.5603254e-03, 1.2371174e-03,
1299 # 9.8575176e-04, 7.8989545e-04, 6.3703740e-04, 5.1756292e-04,
1300 # 4.2407586e-04, 3.5069124e-04, 2.9260099e-04, 2.4581210e-04,
1301 # 2.0699146e-04, 1.7346123e-04, 1.4331114e-04, 1.1548538e-04,
1302 # 8.9728440e-05, 6.6379120e-05, 4.6055769e-05, 2.9366897e-05,
1303 # 1.6731521e-05, 8.2008648e-06, 3.2726090e-06, 9.8342622e-07,
1304 # 2.0024596e-07, 2.1085367e-08, 3.1115922e-10, 1.8414779e-09/
1305 data (gridv(iny, 4),iny=1,32)/
1306 # 1.3868555e-02, 1.0425215e-02, 7.8892735e-03, 6.0089146e-03,
1307 # 4.6057219e-03, 3.5480566e-03, 2.7464613e-03, 2.1359653e-03,
1308 # 1.6689984e-03, 1.3114613e-03, 1.0371878e-03, 8.2648300e-04,
1309 # 6.6446546e-04, 5.3953412e-04, 4.4244464e-04, 3.6574043e-04,
1310 # 3.0339116e-04, 2.5068534e-04, 2.0431482e-04, 1.6241791e-04,
1311 # 1.2441356e-04, 9.0628951e-05, 6.1799132e-05, 3.8623433e-05,
1312 # 2.1495349e-05, 1.0246602e-05, 3.9545153e-06, 1.1410065e-06,
1313 # 2.2060684e-07, 2.1556121e-08, 1.5852146e-10, 1.6987942e-09/
1314 data (gridv(iny, 5),iny=1,32)/
1315 # 2.2986936e-02, 1.7037927e-02, 1.2705430e-02, 9.5306823e-03,
1316 # 7.1915567e-03, 5.4521722e-03, 4.1524897e-03, 3.1768102e-03,
1317 # 2.4418608e-03, 1.8873270e-03, 1.4682359e-03, 1.1510039e-03,
1318 # 9.1077042e-04, 7.2826552e-04, 5.8860114e-04, 4.7999193e-04,
1319 # 3.9314928e-04, 3.2098035e-04, 2.5857717e-04, 2.0315066e-04,
1320 # 1.5370454e-04, 1.1046511e-04, 7.4187115e-05, 4.5556559e-05,
1321 # 2.4836768e-05, 1.1553471e-05, 4.3299295e-06, 1.2055759e-06,
1322 # 2.2273199e-07, 2.0385221e-08, 2.5365287e-11, 1.4614457e-09/
1323 data (gridv(iny, 6),iny=1,32)/
1324 # 3.4607710e-02, 2.5329231e-02, 1.8643112e-02, 1.3797244e-02,
1325 # 1.0268406e-02, 7.6763540e-03, 5.7640388e-03, 4.3470540e-03,
1326 # 3.2936565e-03, 2.5093254e-03, 1.9243527e-03, 1.4874209e-03,
1327 # 1.1607380e-03, 9.1588915e-04, 7.3097517e-04, 5.8910398e-04,
1328 # 4.7722044e-04, 3.8555267e-04, 3.0742488e-04, 2.3902283e-04,
1329 # 1.7886336e-04, 1.2700213e-04, 8.4135064e-05, 5.0853622e-05,
1330 # 2.7216172e-05, 1.2384960e-05, 4.5198910e-06, 1.2164900e-06,
1331 # 2.1505007e-07, 1.8520572e-08, -5.3697542e-11, 1.2296759e-09/
1332 data (gridv(iny, 7),iny=1,32)/
1333 # 4.9445135e-02, 3.5757010e-02, 2.5994493e-02, 1.8993674e-02,
1334 # 1.3952679e-02, 1.0293089e-02, 7.6258392e-03, 5.6738387e-03,
1335 # 4.2408262e-03, 3.1872474e-03, 2.4113098e-03, 1.8389250e-03,
1336 # 1.4163575e-03, 1.1035738e-03, 8.7029523e-04, 6.9356210e-04,
1337 # 5.5597102e-04, 4.4470895e-04, 3.5113742e-04, 2.7029621e-04,
1338 # 2.0013417e-04, 1.4045648e-04, 9.1828197e-05, 5.4657353e-05,
1339 # 2.8729898e-05, 1.2794546e-05, 4.5409281e-06, 1.1613608e-06,
1340 # 1.9109911e-07, 1.5092145e-08, -5.2811872e-11, 9.5507973e-10/
1341 data (gridv(iny, 8),iny=1,32)/
1342 # 6.8709761e-02, 4.9096606e-02, 3.5253307e-02, 2.5432125e-02,
1343 # 1.8440272e-02, 1.3424173e-02, 9.8127739e-03, 7.2026791e-03,
1344 # 5.3106334e-03, 3.9371633e-03, 2.9384004e-03, 2.2109274e-03,
1345 # 1.6805250e-03, 1.2928794e-03, 1.0073789e-03, 7.9380317e-04,
1346 # 6.2964750e-04, 4.9861161e-04, 3.8984865e-04, 2.9710009e-04,
1347 # 2.1764892e-04, 1.5095775e-04, 9.7391148e-05, 5.7072702e-05,
1348 # 2.9454329e-05, 1.2827026e-05, 4.4049387e-06, 1.0235568e-06,
1349 # 1.4395353e-07, 9.1928386e-09, -5.1047909e-11, 4.9741292e-10/
1350 data firsttime/.true./
1351 save
1352 if(firsttime)then
1353 firsttime=.false.
1354 nent(1)=nny
1355 nent(2)=nnz
1356 do iny=1,nny
1357 ent(iny)=(yv(iny))
1358 enddo
1359 do inz=1,nnz
1360 ent(nny+inz)=(zv(inz))
1361 enddo
1362 endif
1363 arg(1)=(y)
1364 arg(2)=(z)
1365 tmp=dfint(narg,arg,nent,ent,gridv)
1366 ewa_z_p_1m=tmp
1367 return
1368 end
1369 function ewa_z_p_0(y,z)
1370 implicit none
1371 real*8 ewa_z_p_0,y,z
1372 integer narg,nny,nnz
1373 parameter (narg=2)
1374 parameter (nny=32)
1375 parameter (nnz=8)
1376 integer iny,inz,nent(narg)
1377 real*8 tmp,dfint,ymap,zmap
1378 real*8 arg(narg),ent(nny+nnz)
1379 real*8 yv(nny),zv(nnz),gridv(nny,nnz)
1380 logical firsttime
1381 external dfint,ymap,zmap
1382 data yv/
1383 # -1.6118096e+01, -1.5094991e+01, -1.4105430e+01, -1.3149414e+01,
1384 # -1.2226943e+01, -1.1338015e+01, -1.0482632e+01, -9.6607941e+00,
1385 # -8.8725001e+00, -8.1177506e+00, -7.3965455e+00, -6.7088848e+00,
1386 # -6.0547686e+00, -5.4341967e+00, -4.8471693e+00, -4.2936863e+00,
1387 # -3.7737478e+00, -3.2873536e+00, -2.8345039e+00, -2.4151986e+00,
1388 # -2.0294377e+00, -1.6772213e+00, -1.3585493e+00, -1.0734217e+00,
1389 # -8.2183848e-01, -6.0379973e-01, -4.1930540e-01, -2.6835549e-01,
1390 # -1.5095001e-01, -6.7088947e-02, -1.6772312e-02, -1.0000000e-07/
1391 data zv/
1392 # 4.3868276e+00, 5.7337823e+00, 7.0807370e+00, 8.4276917e+00,
1393 # 9.7746464e+00, 1.1121601e+01, 1.2468556e+01, 1.3815511e+01/
1394 data (gridv(iny, 1),iny=1,32)/
1395 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1396 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1397 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1398 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1399 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1400 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1401 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00,
1402 # 0.0000000e+00, 0.0000000e+00, 0.0000000e+00, 0.0000000e+00/
1403 data (gridv(iny, 2),iny=1,32)/
1404 # 2.2972746e-03, 1.7917254e-03, 1.4105851e-03, 1.1202991e-03,
1405 # 8.9758753e-04, 7.2401692e-04, 5.8765422e-04, 4.7973220e-04,
1406 # 3.9382732e-04, 3.2529169e-04, 2.7051159e-04, 2.2663375e-04,
1407 # 1.9144281e-04, 1.6313368e-04, 1.4017673e-04, 1.2123763e-04,
1408 # 1.0509369e-04, 9.0611789e-05, 7.6817182e-05, 6.3022584e-05,
1409 # 4.9058611e-05, 3.5418441e-05, 2.3106352e-05, 1.3215971e-05,
1410 # 6.4045348e-06, 2.5232862e-06, 7.6274114e-07, 1.6120969e-07,
1411 # 2.0920899e-08, 1.1554945e-09, 2.1846051e-11, 3.8164747e-16/
1412 data (gridv(iny, 3),iny=1,32)/
1413 # 3.1443709e-03, 2.4086938e-03, 1.8599149e-03, 1.4469692e-03,
1414 # 1.1345306e-03, 8.9494004e-04, 7.0998827e-04, 5.6630210e-04,
1415 # 4.5410728e-04, 3.6631536e-04, 2.9748449e-04, 2.4339831e-04,
1416 # 2.0085187e-04, 1.6729924e-04, 1.4065172e-04, 1.1916159e-04,
1417 # 1.0130455e-04, 8.5745522e-05, 7.1384433e-05, 5.7493734e-05,
1418 # 4.3890462e-05, 3.1023010e-05, 1.9770186e-05, 1.1015777e-05,
1419 # 5.1834875e-06, 1.9746473e-06, 5.7369065e-07, 1.1562072e-07,
1420 # 1.4116885e-08, 7.1378361e-10, 1.0286193e-11, 2.1760568e-16/
1421 data (gridv(iny, 4),iny=1,32)/
1422 # 4.0583782e-03, 3.0604630e-03, 2.3243967e-03, 1.7771165e-03,
1423 # 1.3685115e-03, 1.0596807e-03, 8.2496027e-04, 6.4554632e-04,
1424 # 5.0775614e-04, 4.0172285e-04, 3.1996314e-04, 2.5677121e-04,
1425 # 2.0788121e-04, 1.6996988e-04, 1.4037525e-04, 1.1693715e-04,
1426 # 9.7839570e-05, 8.1555616e-05, 6.6877295e-05, 5.3032557e-05,
1427 # 3.9820348e-05, 2.7642036e-05, 1.7265954e-05, 9.4071798e-06,
1428 # 4.3162443e-06, 1.5974573e-06, 4.4856401e-07, 8.6784619e-08,
1429 # 1.0054849e-08, 4.7125287e-10, 5.0055779e-12, 1.3353325e-16/
1430 data (gridv(iny, 5),iny=1,32)/
1431 # 5.0242808e-03, 3.7368538e-03, 2.7975112e-03, 2.1069870e-03,
1432 # 1.5976618e-03, 1.2178011e-03, 9.3297051e-04, 7.1829351e-04,
1433 # 5.5582318e-04, 4.3260555e-04, 3.3896481e-04, 2.6762365e-04,
1434 # 2.1321911e-04, 1.7163549e-04, 1.3964927e-04, 1.1469329e-04,
1435 # 9.4678118e-05, 7.7901482e-05, 6.3058870e-05, 4.9337909e-05,
1436 # 3.6517503e-05, 2.4952978e-05, 1.5315618e-05, 8.1824913e-06,
1437 # 3.6722130e-06, 1.3251079e-06, 3.6114078e-07, 6.7413213e-08,
1438 # 7.4593247e-09, 3.2711613e-10, 2.4150815e-12, 8.6646158e-17/
1439 data (gridv(iny, 6),iny=1,32)/
1440 # 6.0434242e-03, 4.4393078e-03, 3.2809706e-03, 2.4384204e-03,
1441 # 1.8240018e-03, 1.3711741e-03, 1.0357484e-03, 7.8624158e-04,
1442 # 5.9978597e-04, 4.6020082e-04, 3.5548403e-04, 2.7671910e-04,
1443 # 2.1741591e-04, 1.7266372e-04, 1.3867688e-04, 1.1250016e-04,
1444 # 9.1784840e-05, 7.4666871e-05, 5.9754966e-05, 4.6199819e-05,
1445 # 3.3759746e-05, 2.2745966e-05, 1.3743797e-05, 7.2147556e-06,
1446 # 3.1743092e-06, 1.1196153e-06, 2.9689509e-07, 5.3518235e-08,
1447 # 5.6721821e-09, 2.3409415e-10, 1.1787607e-12, 5.8729404e-17/
1448 data (gridv(iny, 7),iny=1,32)/
1449 # 7.1959867e-03, 5.2238170e-03, 3.8140515e-03, 2.7991324e-03,
1450 # 2.0670251e-03, 1.5335081e-03, 1.1431466e-03, 8.5620909e-04,
1451 # 6.4440376e-04, 4.8779317e-04, 3.7174709e-04, 2.8552072e-04,
1452 # 2.2138742e-04, 1.7357728e-04, 1.3770573e-04, 1.1041226e-04,
1453 # 8.9081969e-05, 7.1687010e-05, 5.6748485e-05, 4.3377928e-05,
1454 # 3.1310191e-05, 2.0811054e-05, 1.2385981e-05, 6.3920772e-06,
1455 # 2.7583999e-06, 9.5083600e-07, 2.4412955e-07, 4.1454456e-08,
1456 # 4.1336315e-09, 1.5732057e-10, 7.2362906e-13, 3.8540532e-17/
1457 data (gridv(iny, 8),iny=1,32)/
1458 # 8.5794573e-03, 6.1549995e-03, 4.4395854e-03, 3.2173803e-03,
1459 # 2.3455029e-03, 1.7173947e-03, 1.2632918e-03, 9.3357781e-04,
1460 # 6.9319431e-04, 5.1766046e-04, 3.8920495e-04, 2.9492776e-04,
1461 # 2.2566512e-04, 1.7466681e-04, 1.3686160e-04, 1.0845033e-04,
1462 # 8.6522845e-05, 6.8873718e-05, 5.3928273e-05, 4.0752757e-05,
1463 # 2.9053811e-05, 1.9048548e-05, 1.1165828e-05, 5.6636607e-06,
1464 # 2.3959922e-06, 8.0553030e-07, 1.9753531e-07, 2.9524070e-08,
1465 # 2.5899490e-09, 8.0207162e-11, 2.5018623e-13, 1.8180313e-17/
1466 data firsttime/.true./
1467 save
1468 if(firsttime)then
1469 firsttime=.false.
1470 nent(1)=nny
1471 nent(2)=nnz
1472 do iny=1,nny
1473 ent(iny)=(yv(iny))
1474 enddo
1475 do inz=1,nnz
1476 ent(nny+inz)=(zv(inz))
1477 enddo
1478 endif
1479 arg(1)=(y)
1480 arg(2)=(z)
1481 tmp=dfint(narg,arg,nent,ent,gridv)
1482 ewa_z_p_0=tmp
1483 return
1484 end
01485
=== added file 'Template/LO/Source/PDF/ElectroweakFlux.inc'
--- Template/LO/Source/PDF/ElectroweakFlux.inc 1970-01-01 00:00:00 +0000
+++ Template/LO/Source/PDF/ElectroweakFlux.inc 2021-02-05 11:45:49 +0000
@@ -0,0 +1,38 @@
1 double precision pi, pi2, sqrt2, eps
2 double precision ewa_mw2, ewa_mz2, ewa_gf
3 double precision ewa_qu,ewa_qd,ewa_qv,ewa_ql,ewa_t3u,ewa_t3d
4 double precision ewa_cw2,ewa_sw2,ewa_gW2
5 double precision ewa_gV,ewa_gVu,ewa_gVd,ewa_gVv,ewa_gVl
6 double precision ewa_gA,ewa_gAu,ewa_gAd,ewa_gAv,ewa_gAl
7c Math
8 parameter (pi=3.141592653589793d0)
9 parameter (pi2=9.869604401089358d0)
10 parameter (sqrt2=1.4142135623730951d0)
11 parameter (eps=1d-16)
12c Input EW parameters
13 parameter (ewa_mw2 = 80.379d0**2) ! [GeV]^2 PDG 2018
14 parameter (ewa_mz2 = 91.1876d0**2) ! [GeV]^2 PDG 2018
15 parameter (ewa_gf = 1.1663787d-5) ! [GeV]^-2 PDG 2018
16 parameter (ewa_qu = 2d0/3d0)
17 parameter (ewa_qd = -1d0/3d0)
18 parameter (ewa_qv = 0d0)
19 parameter (ewa_ql = -1d0)
20 parameter (ewa_t3u = 0.5d0)
21 parameter (ewa_t3d = -0.5d0)
22c Derived EW parameters
23 parameter (ewa_cw2 = ewa_mw2/ewa_mz2)
24 parameter (ewa_sw2 = 1d0 - ewa_mw2/ewa_mz2)
25 parameter (ewa_gW2 = sqrt2*4d0*ewa_gf*ewa_mw2)
26c Weak Vector Couplings
27 parameter (ewa_gV = 1d0)
28 parameter (ewa_gVu = 0.5d0*ewa_t3u - ewa_qu*ewa_sw2)
29 parameter (ewa_gVd = 0.5d0*ewa_t3d - ewa_qd*ewa_sw2)
30 parameter (ewa_gVv = 0.5d0*ewa_t3u)
31 parameter (ewa_gVl = 0.5d0*ewa_t3d - ewa_ql*ewa_sw2)
32c Weak Axialvector Couplings
33 parameter (ewa_gA = -1d0)
34 parameter (ewa_gAu = -0.5d0*ewa_t3u)
35 parameter (ewa_gAd = -0.5d0*ewa_t3d)
36 parameter (ewa_gAv = -0.5d0*ewa_t3u)
37 parameter (ewa_gAl = -0.5d0*ewa_t3d)
38c
0\ No newline at end of file39\ No newline at end of file
140
=== modified file 'Template/LO/Source/PDF/PhotonFlux.f'
--- Template/LO/Source/PDF/PhotonFlux.f 2020-08-07 14:49:25 +0000
+++ Template/LO/Source/PDF/PhotonFlux.f 2021-02-05 11:45:49 +0000
@@ -1,8 +1,10 @@
1c/* ********************************************************* */1c/* ********************************************************* */
2c/* Equivalent photon approximation structure function. * */2c/* Equivalent photon approximation structure function. * */
3c/* V.M.Budnev et al., Phys.Rep. 15C (1975) 181 * */3c/* V.M.Budnev et al., Phys.Rep. 15C (1975) 181 * */
4c/* Improved Weizsaecker-Williams formula * */4c/* * */
5c/* http://inspirehep.net/record/359425 * */ 5c/* Improved Weizsaecker-Williams formula * */
6c/* S. Frixione et al. hep-ph/9310350 * */
7c/* * */
6c/* ********************************************************* */8c/* ********************************************************* */
7c provided by Tomasz Pierzchala - UCL9c provided by Tomasz Pierzchala - UCL
810
911
=== modified file 'Template/LO/Source/PDF/makefile'
--- Template/LO/Source/PDF/makefile 2020-04-08 19:22:14 +0000
+++ Template/LO/Source/PDF/makefile 2021-02-05 11:45:49 +0000
@@ -14,15 +14,16 @@
14 ifeq ($(lhapdfversion),5)14 ifeq ($(lhapdfversion),5)
15 $(error Bad lhadpfversion version 6 is now required)15 $(error Bad lhadpfversion version 6 is now required)
16 else16 else
17 PDF = pdfwrap_lhapdf.o pdf_lhapdf6.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o ElectroweakFlux.o
17 ifeq ($(lhapdfsubversion),1) # 6.1.X18 ifeq ($(lhapdfsubversion),1) # 6.1.X
18 PDF = pdfwrap_lhapdf.o pdf_lhapdf6.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o19 PDF = pdfwrap_lhapdf.o pdf_lhapdf6.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o ElectroweakFlux.o
19 else # 6.2.X20 else # 6.2.X
20 CXXFLAGS+=-std=c++1121 CXXFLAGS+=-std=c++11
21 PDF = pdfwrap_lhapdf.o pdf_lhapdf62.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o22 PDF = pdfwrap_lhapdf.o pdf_lhapdf62.o pdg2pdf_lhapdf6.o opendata.o PhotonFlux.o ElectroweakFlux.o
22 endif 23 endif
23 endif24 endif
24else25else
25 PDF = Ctq6Pdf.o pdfwrap.o opendata.o pdf.o PhotonFlux.o pdg2pdf.o NNPDFDriver.o26 PDF = Ctq6Pdf.o pdfwrap.o opendata.o pdf.o PhotonFlux.o pdg2pdf.o NNPDFDriver.o ElectroweakFlux.o
26endif27endif
2728
28all: $(LIBDIR)$(LIBRARY)29all: $(LIBDIR)$(LIBRARY)
2930
=== modified file 'Template/LO/Source/PDF/pdg2pdf.f'
--- Template/LO/Source/PDF/pdg2pdf.f 2020-08-07 14:49:25 +0000
+++ Template/LO/Source/PDF/pdg2pdf.f 2021-02-05 11:45:49 +0000
@@ -32,7 +32,29 @@
32 data pdflast/30*-99d9/32 data pdflast/30*-99d9/
33 data pdlabellast/2*'abcdefg'/33 data pdlabellast/2*'abcdefg'/
34 data ihlast/2*-99/34 data ihlast/2*-99/
3535c
36c Special for EWA (need to know current helicity)
37c
38 double precision ewa_wX_ByPID, ewa_zX_ByPID
39 external ewa_wX_ByPID, ewa_zX_ByPID
40 integer hel, ppid
41 double precision hel_jacobian
42 INTEGER HEL_PICKED
43 COMMON/HEL_PICKED/HEL_PICKED,hel_jacobian
44 integer get_nhel
45 external get_nhel
46 REAL*8 POL(2)
47 common/to_polarization/ POL
48c
49c Collider
50c
51 integer lpp(2)
52 double precision ebeam(2), xbk(2),q2fact(2)
53 common/to_collider/ ebeam , xbk ,q2fact, lpp
54c
55c
56c
57 double precision factor
36 if (ih.eq.9) then58 if (ih.eq.9) then
37 pdg2pdf = 1d059 pdg2pdf = 1d0
38 return60 return
@@ -66,12 +88,14 @@
66 ipart=788 ipart=7
67c This will be called for any PDG code, but we only support up to 789c This will be called for any PDG code, but we only support up to 7
68 else if(iabs(ipart).gt.7)then90 else if(iabs(ipart).gt.7)then
69 write(*,*) 'PDF not supported for pdg ',ipdg91 if(iabs(ih).lt.2)then
70 write(*,*) 'For lepton colliders, please set the lpp* '//92 write(*,*) 'PDF not supported for pdg ',ipdg
71 $ 'variables to 0 in the run_card' 93 write(*,*) 'For lepton colliders, please set the lpp* '//
72 open(unit=26,file='../../../error',status='unknown')94 $ 'variables to 0 in the run_card current is' , ih
73 write(26,*) 'Error: PDF not supported for pdg ',ipdg95 open(unit=26,file='../../../error',status='unknown')
74 stop 196 write(26,*) 'Error: PDF not supported for pdg ',ipdg
97 stop 1
98 endif
75 endif99 endif
76100
77 iporg=ipart101 iporg=ipart
@@ -85,7 +109,7 @@
85 enddo109 enddo
86110
87c Reuse previous result, if possible111c Reuse previous result, if possible
88 if (ireuse.gt.0.)then112 if (ireuse.gt.0.and.iabs(iporg).lt.8)then
89 if (pdflast(iporg,ireuse).ne.-99d9) then113 if (pdflast(iporg,ireuse).ne.-99d9) then
90 pdg2pdf = get_ion_pdf(pdflast(-7, ireuse), iporg, nb_proton(beamid),114 pdg2pdf = get_ion_pdf(pdflast(-7, ireuse), iporg, nb_proton(beamid),
91 $ nb_neutron(beamid))115 $ nb_neutron(beamid))
@@ -129,15 +153,85 @@
129 pdlabellast(ireuse)=pdlabel153 pdlabellast(ireuse)=pdlabel
130 ihlast(ireuse)=ih154 ihlast(ireuse)=ih
131155
132 if(iabs(ipart).eq.7.and.ih.gt.1) then156c
157c Special mode for Improved Weizsacker-Williams,
158c Equivalent photon, and Effective W/Z Approximations
159c
160 if (ih.gt.1.and.ih.ne.9) then
161c Effective photon approximation
133 q2max=xmu*xmu162 q2max=xmu*xmu
134 if(abs(ih).eq.3.or.abs(ih).eq.4) then !from the electron or muonn163 if (iabs(ipart).eq.7) then
135 pdg2pdf=epa_lepton(x,q2max, ih)164 if(abs(ih).eq.3.or.abs(ih).eq.4) then !from the electron or muonn
136 elseif(ih .eq. 2) then !from a proton without breaking165 pdg2pdf=epa_lepton(x,q2max, ih)
137 pdg2pdf=epa_proton(x,q2max,beamid)166 elseif(ih .eq. 2) then !from a proton without breaking
138 endif 167 pdg2pdf=epa_proton(x,q2max,beamid)
139 pdflast(iporg,ireuse)=pdg2pdf168 endif
140 return169 pdflast(iporg,ireuse)=pdg2pdf
170 return
171 elseif(iabs(ipart).eq.23) then ! z boson
172 factor = 3d0 ! 3 to cancel the average over W helicities´
173 if (ABS(ih).eq.3) then
174 ppid = 11
175 elseif(ABS(ih).eq.4) then
176 ppid = 13
177 elseif(ABS(ih).eq.2) then
178 ppid = 2212
179 else
180 write(*,*) "type of beam not yet supported for EWA"
181 stop 4
182 endif
183 hel = GET_NHEL(HEL_PICKED, beamid)
184 pdg2pdf = factor * ewa_zX_ByPID(x,q2max,hel,ppid)
185 if (ABS(POL(beamid)).ne.1d0) then
186 write(*,*) 'beam polarization not supported for EWA with Z'
187 stop 33
188 endif
189
190 return
191 elseif(ipart.eq.24) then ! w+ boson
192 factor = 3d0 ! 3 to cancel the average over W helicities´
193 if (ih.eq.-3) then ! from e+
194 ppid = -11
195 elseif(ih.eq.-4) then ! from mu+
196 ppid = -13
197 elseif(ih.eq.2) then
198 ppid = 2212
199 else
200 write(*,*) "type of beam not yet supported for EWA"
201 stop 4
202 endif
203 hel = GET_NHEL(HEL_PICKED, beamid)
204 pdg2pdf = factor*ewa_wX_ByPID(x,q2max,hel,ppid)
205 if(pol(beamid).lt.0d0)then
206 pdg2pdf = pdg2pdf * (2-ABS(POL(beamid)))/2d0 ! couple only to right handed componenta
207 else
208 pdg2pdf = pdg2pdf * ABS(POL(beamid))/2d0 ! couple only to right handed componenta
209 endif
210 return
211 elseif(ipart.eq.-24) then ! w- boson
212 factor = 3d0 ! 3 to cancel the average over W helicities´
213 if (ih.eq.3) then ! from e-
214 ppid = 11
215 elseif(ih.eq.4) then ! from mu-
216 ppid = 13
217 elseif(ih.eq.2) then
218 ppid = -2212
219 else
220 write(*,*) "type of beam not yet supported for EWA"
221 stop 4
222 endif
223
224 hel = GET_NHEL(HEL_PICKED, beamid)
225 pdg2pdf = factor*ewa_wX_ByPID(x,q2max,hel,ppid)
226 if(pol(beamid)*lpp(beamid).lt.0d0)then
227 pdg2pdf = pdg2pdf * ABS(POL(beamid))/2d0 ! couple only to left handed componenta
228 else
229 pdg2pdf = pdg2pdf * (2-ABS(POL(beamid)))/2d0 ! couple only to left handed componenta
230 endif
231
232
233 return
234 endif
141 endif235 endif
142 236
143 if (pdlabel(1:5) .eq. 'cteq6') then237 if (pdlabel(1:5) .eq. 'cteq6') then
144238
=== modified file 'Template/LO/Source/PDF/pdg2pdf_lhapdf6.f'
--- Template/LO/Source/PDF/pdg2pdf_lhapdf6.f 2020-08-07 14:49:25 +0000
+++ Template/LO/Source/PDF/pdg2pdf_lhapdf6.f 2021-02-05 11:45:49 +0000
@@ -33,6 +33,37 @@
33 data pdflast/300*-99d9/33 data pdflast/300*-99d9/
34 data imemlast/20*-99/34 data imemlast/20*-99/
35 data i_replace/20/35 data i_replace/20/
36c
37c Special for EWA (need to know current helicity)
38c
39 double precision ewa_wX_ByPID, ewa_zX_ByPID
40 external ewa_wX_ByPID, ewa_zX_ByPID
41 integer hel, ppid
42 double precision hel_jacobian
43 INTEGER HEL_PICKED
44 COMMON/HEL_PICKED/HEL_PICKED,hel_jacobian
45 integer get_nhel
46 external get_nhel
47 REAL*8 POL(2)
48 common/to_polarization/ POL
49 double precision q2max
50 double precision epa_electron
51c
52c Collider
53c
54 integer lpp(2)
55 double precision ebeam(2), xbk(2),q2fact(2)
56 common/to_collider/ ebeam , xbk ,q2fact, lpp
57c
58c
59c
60 double precision factor
61
62 if (ih.eq.9) then
63 pdg2pdf = 1d0
64 return
65 endif
66
3667
37 nb_hadron = (nb_proton(beamid)+nb_neutron(beamid))68 nb_hadron = (nb_proton(beamid)+nb_neutron(beamid))
38c Make sure we have a reasonable Bjorken x. Note that even though69c Make sure we have a reasonable Bjorken x. Note that even though
@@ -62,12 +93,14 @@
62 ipart=793 ipart=7
63c This will be called for any PDG code, but we only support up to 794c This will be called for any PDG code, but we only support up to 7
64 else if(iabs(ipart).gt.7)then95 else if(iabs(ipart).gt.7)then
65 write(*,*) 'PDF not supported for pdg ',ipdg96 if(iabs(ih).lt.2)then
66 write(*,*) 'For lepton colliders, please set the lpp* '//97 write(*,*) 'PDF not supported for pdg ',ipdg
67 $ 'variables to 0 in the run_card' 98 write(*,*) 'For lepton colliders, please set the lpp* '//
68 open(unit=26,file='../../../error',status='unknown')99 $ 'variables to 0 in the run_card'
69 write(26,*) 'Error: PDF not supported for pdg ',ipdg100 open(unit=26,file='../../../error',status='unknown')
70 stop 1101 write(26,*) 'Error: PDF not supported for pdg ',ipdg
102 stop 1
103 endif
71 endif104 endif
72105
73 iporg=ipart106 iporg=ipart
@@ -139,10 +172,77 @@
139 pdg2pdf = get_ion_pdf(pdflast(-7, i_replace), ipart, nb_proton(beamid), nb_neutron(beamid))172 pdg2pdf = get_ion_pdf(pdflast(-7, i_replace), ipart, nb_proton(beamid), nb_neutron(beamid))
140 endif173 endif
141 pdg2pdf=pdg2pdf/x174 pdg2pdf=pdg2pdf/x
142 else if(abs(ih).eq.3.or.abs(ih).eq.4) then !from the electron175 else if(ih.gt.1.and.ih.ne.9) then ! photon from a proton without breaking
143 pdg2pdf=epa_lepton(x,xmu*xmu, ih)176c Effective photon approximation
144 else if(ih.eq.2) then ! photon from a proton without breaking177 q2max=xmu*xmu
145 pdg2pdf = epa_proton(x,xmu*xmu)178 if (iabs(ipart).eq.7) then
179 if(abs(ih).eq.3.or.abs(ih).eq.4) then !from the electron
180 pdg2pdf=epa_lepton(x,xmu*xmu, ih)
181 elseif(ih .eq. 2) then !from a proton without breaking
182 pdg2pdf=epa_proton(x,q2max,beamid)
183 endif
184 pdflast(iporg,ireuse)=pdg2pdf
185 return
186 elseif(iabs(ipart).eq.23) then ! z boson
187 if (ih.eq.3) then
188 ppid = 11
189 elseif(ih.eq.4) then
190 ppid = 13
191 elseif(ih.eq.2) then
192 ppid = 2212
193 else
194 write(*,*) "type of beam not yet supported for EWA"
195 stop 4
196 endif
197 hel = GET_NHEL(HEL_PICKED, beamid)
198 pdg2pdf = ewa_zX_ByPID(x,q2max,hel,ppid)
199 if (ABS(POL(beamid)).ne.1d0) then
200 write(*,*)
201 & 'beam polarization not supported for EWA with Z'
202 stop 33
203 endif
204 return
205 elseif(ipart.eq.24) then ! w+ boson
206 factor = 3d0 ! 3 to cancel the average over W helicities´
207 if (ih.eq.-3) then ! from e+
208 ppid = -11
209 elseif(ih.eq.-4) then ! from mu+
210 ppid = -13
211 elseif(ih.eq.2) then
212 ppid = 2212
213 else
214 write(*,*) "type of beam not yet supported for EWA"
215 stop 4
216 endif
217 hel = GET_NHEL(HEL_PICKED, beamid)
218 pdg2pdf = factor*ewa_wX_ByPID(x,q2max,hel,ppid)
219 if(pol(beamid).lt.0d0)then
220 pdg2pdf = pdg2pdf * (2-ABS(POL(beamid)))/2d0 ! couple only to right handed componenta
221 else
222 pdg2pdf = pdg2pdf * ABS(POL(beamid))/2d0 ! couple only to right handed componenta
223 endif
224 return
225 elseif(ipart.eq.-24) then ! w- boson
226 factor = 3d0 ! 3 to cancel the average over W helicities´
227 if (ih.eq.3) then ! from e-
228 ppid = 11
229 elseif(ih.eq.4) then ! from mu-
230 ppid = 13
231 elseif(ih.eq.2) then
232 ppid = -2212
233 else
234 write(*,*) "type of beam not yet supported for EWA"
235 stop 4
236 endif
237
238 hel = GET_NHEL(HEL_PICKED, beamid)
239 pdg2pdf = factor*ewa_wX_ByPID(x,q2max,hel,ppid)
240 if(pol(beamid)*lpp(beamid).lt.0d0)then
241 pdg2pdf = pdg2pdf * ABS(POL(beamid))/2d0 ! couple only to left handed componenta
242 else
243 pdg2pdf = pdg2pdf * (2-ABS(POL(beamid)))/2d0 ! couple only to left handed componenta
244 endif
245 endif
146 else246 else
147 write (*,*) 'beam type not supported in lhadpf'247 write (*,*) 'beam type not supported in lhadpf'
148 stop 1248 stop 1
149249
=== modified file 'Template/LO/Source/setrun.f'
--- Template/LO/Source/setrun.f 2020-08-07 14:49:25 +0000
+++ Template/LO/Source/setrun.f 2021-02-05 11:45:49 +0000
@@ -97,14 +97,13 @@
97 endif97 endif
98 pol(2)=sign(1+abs(pb2)/100d0,pb2)98 pol(2)=sign(1+abs(pb2)/100d0,pb2)
99 endif99 endif
100
101 100
102 if(pb1.ne.0d0.and.lpp(1).eq.0) pol(1)=sign(1+abs(pb1)/100d0,pb1)101 if(pb1.ne.0d0.and.lpp(1).eq.0) pol(1)=sign(1+abs(pb1)/100d0,pb1)
103 if(pb2.ne.0d0.and.lpp(2).eq.0) pol(2)=sign(1+abs(pb2)/100d0,pb2)102 if(pb2.ne.0d0.and.lpp(2).eq.0) pol(2)=sign(1+abs(pb2)/100d0,pb2)
104103
105 if(pb1.ne.0.or.pb2.ne.0) write(*,*) 'Setting beam polarization ',104 if(pb1.ne.0.or.pb2.ne.0) write(*,*) 'Setting beam polarization ',
106 $ sign((abs(pol(1))-1)*100,pol(1)),105 $ pol(1), pol(2)
107 $ sign((abs(pol(2))-1)*100,pol(2))106
108107
109c !!! Default behavior changed (MH, Aug. 07) !!!108c !!! Default behavior changed (MH, Aug. 07) !!!
110c If no pdf, read the param_card and use the value from there and109c If no pdf, read the param_card and use the value from there and
111110
=== modified file 'Template/LO/SubProcesses/genps.f'
--- Template/LO/SubProcesses/genps.f 2020-08-10 19:06:52 +0000
+++ Template/LO/SubProcesses/genps.f 2021-02-05 11:45:49 +0000
@@ -572,6 +572,7 @@
572 if (abs(lpp(2)) .eq. 1 .or. abs(lpp(2)) .eq. 2) m2 = 0.938d0572 if (abs(lpp(2)) .eq. 1 .or. abs(lpp(2)) .eq. 2) m2 = 0.938d0
573 if (abs(lpp(1)) .eq. 3) m1 = 0.000511d0573 if (abs(lpp(1)) .eq. 3) m1 = 0.000511d0
574 if (abs(lpp(2)) .eq. 3) m2 = 0.000511d0574 if (abs(lpp(2)) .eq. 3) m2 = 0.000511d0
575 if (abs(lpp(1)) .eq. 4) m1 = 0.000511d0
575 if (abs(lpp(1)) .eq. 4) m1 = 0.105658d0576 if (abs(lpp(1)) .eq. 4) m1 = 0.105658d0
576 if (abs(lpp(2)) .eq. 4) m2 = 0.105658d0577 if (abs(lpp(2)) .eq. 4) m2 = 0.105658d0
577 if (mass_ion(1).ge.0d0) m1 = mass_ion(1)578 if (mass_ion(1).ge.0d0) m1 = mass_ion(1)
578579
=== modified file 'Template/MadWeight/src/setrun.f'
--- Template/MadWeight/src/setrun.f 2018-04-27 21:01:37 +0000
+++ Template/MadWeight/src/setrun.f 2021-02-05 11:45:49 +0000
@@ -536,3 +536,11 @@
536536
537 return537 return
538 end538 end
539
540 INTEGER FUNCTION GET_NHEL(HEL, IPART)
541 implicit none
542 integer hel
543 integer ipart
544 get_nhel = 99
545 return
546 end
539547
=== modified file 'madgraph/core/base_objects.py'
--- madgraph/core/base_objects.py 2020-08-20 15:12:34 +0000
+++ madgraph/core/base_objects.py 2021-02-05 11:45:49 +0000
@@ -1222,7 +1222,8 @@
12221222
1223 if name == 'particles':1223 if name == 'particles':
1224 # Ensure no doublets in particle list1224 # Ensure no doublets in particle list
1225 make_unique(value)1225 if value:
1226 make_unique(value)
1226 # Reset dictionaries1227 # Reset dictionaries
1227 self['particle_dict'] = {}1228 self['particle_dict'] = {}
1228 self['ref_dict_to0'] = {}1229 self['ref_dict_to0'] = {}
@@ -4068,7 +4069,7 @@
4068 is needed"""4069 is needed"""
40694070
4070 assert isinstance(doubletlist, list), \4071 assert isinstance(doubletlist, list), \
4071 "Argument to make_unique must be list"4072 "Argument to make_unique must be list not %s" % type(doubletlist)
4072 4073
40734074
4074 uniquelist = []4075 uniquelist = []
40754076
=== modified file 'madgraph/interface/common_run_interface.py'
--- madgraph/interface/common_run_interface.py 2020-08-17 22:31:42 +0000
+++ madgraph/interface/common_run_interface.py 2021-02-05 11:45:49 +0000
@@ -5839,6 +5839,21 @@
5839 self.run_card['mass_ion1'] != self.run_card['mass_ion2']):5839 self.run_card['mass_ion1'] != self.run_card['mass_ion2']):
5840 raise Exception, "Heavy ion profile for both beam are different but the symmetry used forbids it. \n Please generate your process with \"set group_subprocesses False\"."5840 raise Exception, "Heavy ion profile for both beam are different but the symmetry used forbids it. \n Please generate your process with \"set group_subprocesses False\"."
5841 5841
5842 # EWA mode should use MC over polarization and no systematics (due to pdf call inreweight)
5843 if self.run_card['lpp1'] in [2,3,4,-3,-4] or self.run_card['lpp2'] in [2,3,4,-3,-4]:
5844 if any(pdg in proc_charac['pdg_initial1']+ proc_charac['pdg_initial2']
5845 for pdg in [24, -24, 23]):
5846 if self.run_card['nhel'] == 0:
5847 logger.warning("only MC over polarization supported for EWA mode")
5848 self.do_set('run_card nhel 1')
5849 if self.run_card['use_syst']:
5850 logger.warning("evaluation of systematics not allowed in EWA mode. set use_syst to False")
5851 self.do_set('run_card use_syst False')
5852
5853 if self.run_card['lpp1'] in [4,-4] or self.run_card['lpp2'] in [4,-4]:
5854 if 22 in proc_charac['pdg_initial1']+ proc_charac['pdg_initial2']:
5855 raise Exception, "EPA not implemented from muon beam. (please open a ticket and we will do it)"
5856
5842 # check the status of small width status from LO5857 # check the status of small width status from LO
5843 for param in self.param_card['decay']:5858 for param in self.param_card['decay']:
5844 width = param.value5859 width = param.value
58455860
=== modified file 'madgraph/interface/madevent_interface.py'
--- madgraph/interface/madevent_interface.py 2020-06-18 20:23:25 +0000
+++ madgraph/interface/madevent_interface.py 2021-02-05 11:45:49 +0000
@@ -5414,6 +5414,7 @@
5414 elif mode in [1,2]:5414 elif mode in [1,2]:
5415 exename = os.path.basename(exe)5415 exename = os.path.basename(exe)
5416 # For condor cluster, create the input/output files5416 # For condor cluster, create the input/output files
5417 misc.sprint(exename)
5417 if 'ajob' in exename: 5418 if 'ajob' in exename:
5418 input_files = ['madevent','input_app.txt','symfact.dat','iproc.dat','dname.mg',5419 input_files = ['madevent','input_app.txt','symfact.dat','iproc.dat','dname.mg',
5419 pjoin(self.me_dir, 'SubProcesses','randinit')]5420 pjoin(self.me_dir, 'SubProcesses','randinit')]
@@ -5509,7 +5510,7 @@
5509 #submitting5510 #submitting
5510 self.cluster.cluster_submit(exe, stdout=stdout, cwd=cwd, argument=argument, 5511 self.cluster.cluster_submit(exe, stdout=stdout, cwd=cwd, argument=argument,
5511 input_files=input_files, output_files=output_files,5512 input_files=input_files, output_files=output_files,
5512 required_output=required_output, **opt)5513 required_output=required_output, allow_array=True, **opt)
5513 elif "refine_splitted.sh" in exename:5514 elif "refine_splitted.sh" in exename:
5514 input_files = ['madevent','symfact.dat','iproc.dat', 'dname.mg',5515 input_files = ['madevent','symfact.dat','iproc.dat', 'dname.mg',
5515 pjoin(self.me_dir, 'SubProcesses','randinit')] 5516 pjoin(self.me_dir, 'SubProcesses','randinit')]
@@ -5533,7 +5534,7 @@
5533 #submitting5534 #submitting
5534 self.cluster.cluster_submit(exe, stdout=stdout, cwd=cwd, argument=argument, 5535 self.cluster.cluster_submit(exe, stdout=stdout, cwd=cwd, argument=argument,
5535 input_files=input_files, output_files=output_files,5536 input_files=input_files, output_files=output_files,
5536 required_output=required_output, **opt) 5537 required_output=required_output,allow_array=True, **opt)
55375538
5538 5539
5539 5540
55405541
=== modified file 'madgraph/iolibs/export_v4.py'
--- madgraph/iolibs/export_v4.py 2020-08-20 13:17:30 +0000
+++ madgraph/iolibs/export_v4.py 2021-02-05 11:45:49 +0000
@@ -166,6 +166,7 @@
166 self.mgme_dir = MG5DIR166 self.mgme_dir = MG5DIR
167 self.dir_path = dir_path167 self.dir_path = dir_path
168 self.model = None168 self.model = None
169 self.beam_polarization = True
169170
170 self.opt = dict(self.default_opt)171 self.opt = dict(self.default_opt)
171 if opt:172 if opt:
@@ -185,12 +186,48 @@
185 def export_processes(self, matrix_elements, fortran_model):186 def export_processes(self, matrix_elements, fortran_model):
186 """Make the switch between grouped and not grouped output"""187 """Make the switch between grouped and not grouped output"""
187 188
189
188 calls = 0190 calls = 0
189 if isinstance(matrix_elements, group_subprocs.SubProcessGroupList):191 if isinstance(matrix_elements, group_subprocs.SubProcessGroupList):
192 # check handling for the polarization
193 for m in matrix_elements:
194 for me in m.get('matrix_elements'):
195 for p in me.get('processes'):
196 for pid in p.get_initial_ids():
197 spin = p.get('model').get_particle(pid).get('spin')
198 if spin != 2:
199 self.beam_polarization = False
200 break
201 else:
202 continue
203 break
204 else:
205 continue
206 break
207 else:
208 continue
209 break
210
190 for (group_number, me_group) in enumerate(matrix_elements):211 for (group_number, me_group) in enumerate(matrix_elements):
191 calls = calls + self.generate_subprocess_directory(\212 calls = calls + self.generate_subprocess_directory(\
192 me_group, fortran_model, group_number)213 me_group, fortran_model, group_number)
193 else:214 else:
215 # check handling for the polarization
216 self.beam_polarization = True
217 for me in matrix_elements.get_matrix_elements():
218 for p in me.get('processes'):
219 for pid in p.get_initial_ids():
220 spin = p.get('model').get_particle(pid).get('spin')
221 if spin != 2:
222 self.beam_polarization = False
223 break
224 else:
225 continue
226 break
227 else:
228 continue
229 break
230
194 for me_number, me in enumerate(matrix_elements.get_matrix_elements()):231 for me_number, me in enumerate(matrix_elements.get_matrix_elements()):
195 calls = calls + self.generate_subprocess_directory(\232 calls = calls + self.generate_subprocess_directory(\
196 me, fortran_model, me_number) 233 me, fortran_model, me_number)
@@ -4197,11 +4234,24 @@
4197 split_orders if len(split_orders)>0 else ['ALL_ORDERS'])4234 split_orders if len(split_orders)>0 else ['ALL_ORDERS'])
4198 replace_dict['jamp_lines'] = '\n'.join(jamp_lines)4235 replace_dict['jamp_lines'] = '\n'.join(jamp_lines)
41994236
4237 if self.beam_polarization:
4238 replace_dict['beam_polarization'] = """
4239 DO JJ=1,nincoming
4240 IF(POL(JJ).NE.1d0.AND.NHEL(JJ,I).EQ.INT(SIGN(1d0,POL(JJ)))) THEN
4241 T=T*ABS(POL(JJ))
4242 ELSE IF(POL(JJ).NE.1d0)THEN
4243 T=T*(2d0-ABS(POL(JJ)))
4244 ENDIF
4245 ENDDO
4246 """
4247 else:
4248 replace_dict['beam_polarization'] = ""
4249
4250
4200 replace_dict['template_file'] = pjoin(_file_path, \4251 replace_dict['template_file'] = pjoin(_file_path, \
4201 'iolibs/template_files/%s' % self.matrix_file)4252 'iolibs/template_files/%s' % self.matrix_file)
4202 replace_dict['template_file2'] = pjoin(_file_path, \4253 replace_dict['template_file2'] = pjoin(_file_path, \
4203 'iolibs/template_files/split_orders_helping_functions.inc') 4254 'iolibs/template_files/split_orders_helping_functions.inc')
4204
4205 s1,s2 = matrix_element.get_spin_state_initial()4255 s1,s2 = matrix_element.get_spin_state_initial()
4206 replace_dict['nb_spin_state1'] = s14256 replace_dict['nb_spin_state1'] = s1
4207 replace_dict['nb_spin_state2'] = s24257 replace_dict['nb_spin_state2'] = s2
@@ -4308,14 +4358,21 @@
4308 replace_dict['define_subdiag_lines'] = ""4358 replace_dict['define_subdiag_lines'] = ""
4309 replace_dict['cutsdone'] = " cutsdone=.false.\n cutspassed=.false."4359 replace_dict['cutsdone'] = " cutsdone=.false.\n cutspassed=.false."
43104360
4361 ncomb=matrix_element.get_helicity_combinations()
4362
4363 replace_dict['ncomb']= ncomb
4364 helicity_lines = self.get_helicity_lines(matrix_element)
4365 replace_dict['helicity_lines'] = helicity_lines
4366
4311 if not isinstance(self, ProcessExporterFortranMEGroup):4367 if not isinstance(self, ProcessExporterFortranMEGroup):
4312 ncomb=matrix_element.get_helicity_combinations()
4313 replace_dict['read_write_good_hel'] = self.read_write_good_hel(ncomb)4368 replace_dict['read_write_good_hel'] = self.read_write_good_hel(ncomb)
4314 else:4369 else:
4315 replace_dict['read_write_good_hel'] = ""4370 replace_dict['read_write_good_hel'] = ""
4371 # Extract helicity lines
4316 4372
4317 context = {'read_write_good_hel':True}4373 context = {'read_write_good_hel':True}
4318 4374
4375
4319 if writer:4376 if writer:
4320 file = open(pjoin(_file_path, \4377 file = open(pjoin(_file_path, \
4321 'iolibs/template_files/auto_dsig_v4.inc')).read()4378 'iolibs/template_files/auto_dsig_v4.inc')).read()
43224379
=== modified file 'madgraph/iolibs/template_files/auto_dsig_v4.inc'
--- madgraph/iolibs/template_files/auto_dsig_v4.inc 2019-06-10 19:05:58 +0000
+++ madgraph/iolibs/template_files/auto_dsig_v4.inc 2021-02-05 11:45:49 +0000
@@ -156,3 +156,18 @@
156%(read_write_good_hel)s156%(read_write_good_hel)s
157157
158## }158## }
159
160
161 integer FUNCTION GET_NHEL%(proc_id)s(hel, ipart)
162 implicit none
163 integer hel,i, ipart
164 Include 'nexternal.inc'
165 integer one_nhel(nexternal)
166 INTEGER NCOMB
167 PARAMETER ( NCOMB=%(ncomb)d)
168 INTEGER NHEL(NEXTERNAL,NCOMB)
169 %(helicity_lines)s
170
171 get_nhel%(proc_id)s = nhel(ipart, hel)
172 return
173 end
159174
=== modified file 'madgraph/iolibs/template_files/matrix_madevent_group_v4.inc'
--- madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2020-05-18 19:26:16 +0000
+++ madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2021-02-05 11:45:49 +0000
@@ -127,13 +127,7 @@
127 DO I=1,NCOMB127 DO I=1,NCOMB
128 IF (GOODHEL(I,IMIRROR) .OR. NTRY(IMIRROR).LE.MAXTRIES.or.(ISUM_HEL.NE.0).or.THIS_NTRY(IMIRROR).le.2) THEN128 IF (GOODHEL(I,IMIRROR) .OR. NTRY(IMIRROR).LE.MAXTRIES.or.(ISUM_HEL.NE.0).or.THIS_NTRY(IMIRROR).le.2) THEN
129 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))129 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))
130 DO JJ=1,nincoming130 %(beam_polarization)s
131 IF(POL(JJ).NE.1d0.AND.NHEL(JJ,I).EQ.INT(SIGN(1d0,POL(JJ)))) THEN
132 T=T*ABS(POL(JJ))*NB_SPIN_STATE_IN(JJ)/2d0 ! NB_SPIN_STATE(JJ)/2d0 is added for polarised beam
133 ELSE IF(POL(JJ).NE.1d0)THEN
134 T=T*(2d0-ABS(POL(JJ)))*NB_SPIN_STATE_IN(JJ)/2d0
135 ENDIF
136 ENDDO
137 IF (ISUM_HEL.NE.0.and.DS_get_dim_status('Helicity').eq.0.and.ALLOW_HELICITY_GRID_ENTRIES) then131 IF (ISUM_HEL.NE.0.and.DS_get_dim_status('Helicity').eq.0.and.ALLOW_HELICITY_GRID_ENTRIES) then
138 call DS_add_entry('Helicity',I,T)132 call DS_add_entry('Helicity',I,T)
139 endif133 endif
@@ -178,14 +172,7 @@
178 I = HEL_PICKED172 I = HEL_PICKED
179173
180 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))174 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))
181175 %(beam_polarization)s
182 DO JJ=1,nincoming
183 IF(POL(JJ).NE.1d0.AND.NHEL(JJ,I).EQ.INT(SIGN(1d0,POL(JJ)))) THEN
184 T=T*ABS(POL(JJ))
185 ELSE IF(POL(JJ).NE.1d0)THEN
186 T=T*(2d0-ABS(POL(JJ)))
187 ENDIF
188 ENDDO
189c Always one helicity at a time176c Always one helicity at a time
190 ANS = T177 ANS = T
191c Include the Jacobian from helicity sampling178c Include the Jacobian from helicity sampling
192179
=== modified file 'madgraph/iolibs/template_files/matrix_madevent_v4.inc'
--- madgraph/iolibs/template_files/matrix_madevent_v4.inc 2019-09-26 11:09:58 +0000
+++ madgraph/iolibs/template_files/matrix_madevent_v4.inc 2021-02-05 11:45:49 +0000
@@ -103,13 +103,7 @@
103 DO I=1,NCOMB103 DO I=1,NCOMB
104 IF (GOODHEL(I) .OR. NTRY .LE. MAXTRIES.OR.(ISUM_HEL.NE.0)) THEN104 IF (GOODHEL(I) .OR. NTRY .LE. MAXTRIES.OR.(ISUM_HEL.NE.0)) THEN
105 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1)) 105 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))
106 DO JJ=1,nincoming106 %(beam_polarization)s
107 IF(POL(JJ).NE.1d0.AND.NHEL(JJ,I).EQ.INT(SIGN(1d0,POL(JJ)))) THEN
108 T=T*ABS(POL(JJ))*NB_SPIN_STATE(JJ)/2d0 ! NB_SPIN_STATE(JJ)/2d0 is added for polarised beam
109 ELSE IF(POL(JJ).NE.1d0)THEN
110 T=T*(2d0-ABS(POL(JJ)))*NB_SPIN_STATE(JJ)/2d0
111 ENDIF
112 ENDDO
113 IF (ISUM_HEL.NE.0) then107 IF (ISUM_HEL.NE.0) then
114 call DS_add_entry('Helicity',I,T)108 call DS_add_entry('Helicity',I,T)
115 endif109 endif
@@ -153,13 +147,7 @@
153 I = HEL_PICKED147 I = HEL_PICKED
154 148
155 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1)) 149 T=MATRIX%(proc_id)s(P ,NHEL(1,I),JC(1))
156 DO JJ=1,nincoming150 %(beam_polarization)s
157 IF(POL(JJ).NE.1d0.AND.NHEL(JJ,I).EQ.INT(SIGN(1d0,POL(JJ)))) THEN
158 T=T*ABS(POL(JJ))
159 ELSE IF(POL(JJ).NE.1d0)THEN
160 T=T*(2d0-ABS(POL(JJ)))
161 ENDIF
162 ENDDO
163c Always one helicity at a time151c Always one helicity at a time
164 ANS = T152 ANS = T
165c Include the Jacobian from helicity sampling153c Include the Jacobian from helicity sampling
166154
=== modified file 'madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc'
--- madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc 2020-01-16 07:19:30 +0000
+++ madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc 2021-02-05 11:45:49 +0000
@@ -506,5 +506,10 @@
506C506C
507%(read_write_good_hel)s507%(read_write_good_hel)s
508508
509509 integer function get_nhel(hel, partid)
510510 implicit none
511 integer hel, partid
512 write(*,*) "do not support this type of pdf with group_subprocess=True"
513 stop 1
514 return
515 end
511516
=== modified file 'madgraph/various/banner.py'
--- madgraph/various/banner.py 2020-08-21 07:00:01 +0000
+++ madgraph/various/banner.py 2021-02-05 11:45:49 +0000
@@ -2897,10 +2897,10 @@
2897 self.add_param("nevents", 10000) 2897 self.add_param("nevents", 10000)
2898 self.add_param("iseed", 0)2898 self.add_param("iseed", 0)
2899 self.add_param("python_seed", -2, include=False, hidden=True, comment="controlling python seed [handling in particular the final unweighting].\n -1 means use default from random module.\n -2 means set to same value as iseed")2899 self.add_param("python_seed", -2, include=False, hidden=True, comment="controlling python seed [handling in particular the final unweighting].\n -1 means use default from random module.\n -2 means set to same value as iseed")
2900 self.add_param("lpp1", 1, fortran_name="lpp(1)", allowed=[-1,1,0,2,3,9, -2,-3,4,-4],2900 self.add_param("lpp1", 1, fortran_name="lpp(1)", allowed=[-1,1,0,2,3,4,9,-2,-3,-4],
2901 comment='first beam energy distribution:\n 0: fixed energy\n 1: PDF from proton\n -1: PDF from anti-proton\n 2:photon from proton, 3:photon from electron, 4: photon from muon, 9: PLUGIN MODE')2901 comment='first beam energy distribution:\n 0: fixed energy\n 1: PDF from proton\n -1: PDF from anti-proton\n 2:photon from proton, 3:photon/W/Z from electron, 4:photon/W/Z from muon,\n 9: PLUGIN MODE')
2902 self.add_param("lpp2", 1, fortran_name="lpp(2)", allowed=[-1,1,0,2,3,9,4,-4],2902 self.add_param("lpp2", 1, fortran_name="lpp(2)", allowed=[-1,1,0,2,3,4,9,-3,-4],
2903 comment='first beam energy distribution:\n 0: fixed energy\n 1: PDF from proton\n -1: PDF from anti-proton\n 2:photon from proton, 3:photon from electron, 4: photon from muon, 9: PLUGIN MODE')2903 comment='first beam energy distribution:\n 0: fixed energy\n 1: PDF from proton\n -1: PDF from anti-proton\n 2:photon from proton, 3:photon/W/Z from electron, 4:photon/W/Z from muon,\n 9: PLUGIN MODE')
2904 self.add_param("ebeam1", 6500.0, fortran_name="ebeam(1)")2904 self.add_param("ebeam1", 6500.0, fortran_name="ebeam(1)")
2905 self.add_param("ebeam2", 6500.0, fortran_name="ebeam(2)")2905 self.add_param("ebeam2", 6500.0, fortran_name="ebeam(2)")
2906 self.add_param("polbeam1", 0.0, fortran_name="pb1", hidden=True,2906 self.add_param("polbeam1", 0.0, fortran_name="pb1", hidden=True,
@@ -3296,8 +3296,11 @@
3296 process 1->N all cut set on off.3296 process 1->N all cut set on off.
3297 loop_induced -> MC over helicity3297 loop_induced -> MC over helicity
3298 e+ e- beam -> lpp:0 ebeam:5003298 e+ e- beam -> lpp:0 ebeam:500
3299 P X beam (X: neutrino, lepton, EWA)
3300 support of EWA beam [ZW] (from proton by default -> 100TeV)
3299 p p beam -> set maxjetflavor automatically3301 p p beam -> set maxjetflavor automatically
3300 more than one multiplicity: ickkw=1 xqcut=30 use_syst=F3302 more than one multiplicity: ickkw=1 xqcut=30 use_syst=F
3303 interference module -> no systematics
3301 """3304 """
33023305
3303 if proc_characteristic['loop_induced']:3306 if proc_characteristic['loop_induced']:
@@ -3321,11 +3324,87 @@
3321 beam_id.add(leg['id'])3324 beam_id.add(leg['id'])
33223325
3323 if any(i in beam_id for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21,22]):3326 if any(i in beam_id for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21,22]):
3324 maxjetflavor = max([4]+[abs(i) for i in beam_id if -7< i < 7])3327 maxjetflavor = max([3]+[abs(i) for i in beam_id if -7< i < 7])
3325 self['maxjetflavor'] = maxjetflavor3328 self['maxjetflavor'] = maxjetflavor
3326 self['asrwgtflavor'] = maxjetflavor3329 self['asrwgtflavor'] = maxjetflavor
3327 3330
3328 if any(i in beam_id for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21,22]):3331 # check EWA case -> for pp at 100TeV or EWA-lepton (1+1 TeV)
3332 if any(i in beam_id for i in [23,24,-24]):
3333
3334 self['use_syst'] = False
3335 self['nhel'] = 1
3336
3337 # check where the W/Z are (on which beam)
3338 EWA_in1 = any(i in beam_id_split[0] for i in [23,24,-24])
3339 EWA_in2 = any(i in beam_id_split[1] for i in [23,24,-24])
3340 p_in1 = any(i in beam_id_split[0] for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21])
3341 p_in2 = any(i in beam_id_split[1] for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21])
3342
3343
3344 # case1 W W collision
3345 if EWA_in1 and EWA_in2:
3346 self['lpp1'] = 2
3347 self['lpp2'] = 2
3348 self['ebeam1'] = '50k'
3349 self['ebeam2'] = '50k'
3350 # case2 p W collision
3351 elif p_in1 and EWA_in2:
3352 self['lpp1'] = 1
3353 self['lpp2'] = 2
3354 self['ebeam1'] = '50k'
3355 self['ebeam2'] = '50k'
3356 # case3 W p collision
3357 elif p_in2 and EWA_in1:
3358 self['lpp1'] = 2
3359 self['lpp2'] = 1
3360 self['ebeam1'] = '50k'
3361 self['ebeam2'] = '50k'
3362 # case3 W X collision (mainly for X=lepton)
3363 elif EWA_in1:
3364 self['ebeam1'] = '1k'
3365 self['ebeam2'] = '1k'
3366 if 11 in beam_id_split[1]:
3367 self['lpp1'] = -3
3368 self['lpp2'] = 0
3369 elif -11 in beam_id_split[1]:
3370 self['lpp1'] = 3
3371 self['lpp2'] = 0
3372 elif 13 in beam_id_split[1]:
3373 self['lpp1'] = -4
3374 self['lpp2'] = 0
3375 elif -13 in beam_id_split[1]:
3376 self['lpp1'] = 4
3377 self['lpp2'] = 0
3378 else:
3379 self['lpp1'] = 0
3380 self['lpp2'] = 0
3381 # case3 X W collision (mainly for X=lepton)
3382 elif EWA_in2:
3383 self['ebeam1'] = '1k'
3384 self['ebeam2'] = '1k'
3385 if 11 in beam_id_split[0]:
3386 self['lpp1'] = 0
3387 self['lpp2'] = -3
3388 elif -11 in beam_id_split[0]:
3389 self['lpp1'] = 0
3390 self['lpp2'] = 3
3391 elif 13 in beam_id_split[0]:
3392 self['lpp1'] = 0
3393 self['lpp2'] = -4
3394 elif -13 in beam_id_split[0]:
3395 self['lpp1'] = 0
3396 self['lpp2'] = 4
3397 else:
3398 self['lpp1'] = 0
3399 self['lpp2'] = 0
3400 # anything else should it happen?
3401 else:
3402 self['nhel'] = 1
3403 self['lpp1'] = 0
3404 self['lpp2'] = 0
3405 self['ebeam1'] = '1k'
3406 self['ebeam2'] = '1k'
3407 elif any(i in beam_id for i in [1,-1,2,-2,3,-3,4,-4,5,-5,21,22]):
3329 # check for e p collision3408 # check for e p collision
3330 if any(id in beam_id for id in [11,-11,13,-13]):3409 if any(id in beam_id for id in [11,-11,13,-13]):
3331 self.display_block.append('beam_pol')3410 self.display_block.append('beam_pol')
@@ -3339,7 +3418,7 @@
3339 self['lpp2'] = 0 3418 self['lpp2'] = 0
3340 self['ebeam1'] = '6500' 3419 self['ebeam1'] = '6500'
3341 self['ebeam2'] = '1k' 3420 self['ebeam2'] = '1k'
3342 3421
3343 elif any(id in beam_id for id in [11,-11,13,-13]):3422 elif any(id in beam_id for id in [11,-11,13,-13]):
3344 self['lpp1'] = 03423 self['lpp1'] = 0
3345 self['lpp2'] = 03424 self['lpp2'] = 0
@@ -3349,6 +3428,9 @@
3349 if set([ abs(i) for i in beam_id_split[0]]) == set([ abs(i) for i in beam_id_split[1]]):3428 if set([ abs(i) for i in beam_id_split[0]]) == set([ abs(i) for i in beam_id_split[1]]):
3350 self.display_block.append('ecut')3429 self.display_block.append('ecut')
3351 self.display_block.append('beam_pol')3430 self.display_block.append('beam_pol')
3431
3432 if beam_id_split[0] == beam_id_split[1]:
3433 self.display_block.append('ecut')
3352 else:3434 else:
3353 self['lpp1'] = 03435 self['lpp1'] = 0
3354 self['lpp2'] = 0 3436 self['lpp2'] = 0
33553437
=== modified file 'madgraph/various/cluster.py'
--- madgraph/various/cluster.py 2017-11-17 14:15:01 +0000
+++ madgraph/various/cluster.py 2021-02-05 11:45:49 +0000
@@ -87,6 +87,7 @@
87 """Basic Class for all cluster type submission"""87 """Basic Class for all cluster type submission"""
88 name = 'mother class'88 name = 'mother class'
89 identifier_length = 1489 identifier_length = 14
90 allow_arrays = False
9091
91 def __init__(self,*args, **opts):92 def __init__(self,*args, **opts):
92 """Init the cluster"""93 """Init the cluster"""
@@ -97,6 +98,8 @@
97 self.submitted_dirs = [] #HTCaaS98 self.submitted_dirs = [] #HTCaaS
98 self.submitted_exes = [] #HTCaaS99 self.submitted_exes = [] #HTCaaS
99 self.submitted_args = [] #HTCaaS100 self.submitted_args = [] #HTCaaS
101 self.waiting_array_job = [] # for job array submission
102
100103
101 if 'cluster_queue' in opts:104 if 'cluster_queue' in opts:
102 self.cluster_queue = opts['cluster_queue']105 self.cluster_queue = opts['cluster_queue']
@@ -122,7 +125,6 @@
122 """How to make one submission. Return status id on the cluster."""125 """How to make one submission. Return status id on the cluster."""
123 raise NotImplemented, 'No implementation of how to submit a job to cluster \'%s\'' % self.name126 raise NotImplemented, 'No implementation of how to submit a job to cluster \'%s\'' % self.name
124127
125
126 @store_input()128 @store_input()
127 def submit2(self, prog, argument=[], cwd=None, stdout=None, stderr=None, 129 def submit2(self, prog, argument=[], cwd=None, stdout=None, stderr=None,
128 log=None, input_files=[], output_files=[], required_output=[],130 log=None, input_files=[], output_files=[], required_output=[],
@@ -199,10 +201,15 @@
199201
200 def cluster_submit(self, prog, argument=[], cwd=None, stdout=None, stderr=None, 202 def cluster_submit(self, prog, argument=[], cwd=None, stdout=None, stderr=None,
201 log=None, input_files=[], output_files=[], required_output=[],203 log=None, input_files=[], output_files=[], required_output=[],
202 nb_submit=0, packet_member=None):204 nb_submit=0, packet_member=None, allow_array=False):
203 """This function wrap the cluster submition with cluster independant205 """This function wrap the cluster submition with cluster independant
204 method should not be overwritten (but for DAG type submission)"""206 method should not be overwritten (but for DAG type submission)"""
205 207
208 if allow_array and self.allow_array:
209 self.add_into_array(prog, argument, cwd, stdout, stderr, log, input_files,
210 output_files, required_output, nb_submit)
211 return None
212
206 id = self.submit2(prog, argument, cwd, stdout, stderr, log, input_files, 213 id = self.submit2(prog, argument, cwd, stdout, stderr, log, input_files,
207 output_files, required_output, nb_submit) 214 output_files, required_output, nb_submit)
208 215
@@ -458,7 +465,27 @@
458 self.submit2(**args)465 self.submit2(**args)
459 return 'resubmit'466 return 'resubmit'
460 return 'done'467 return 'done'
461 468
469 def add_into_array(self,*args, **opts):
470 """ """
471 raise NotImplemented, 'No implementation of how to submit with a job array to cluster \'%s\'' % self.name
472
473 def submit_array(self, list_of_args):
474 """ """
475 raise NotImplemented, 'No implementation of how to submit with a job array to cluster \'%s\'' % self.name
476
477
478 def release_array(self):
479
480 if not self.allow_arrays:
481 if self.waiting_array_jobs:
482 raise NotImplemented, 'No implementation of how to submit with a job array to cluster \'%s\'' % self.name
483 return None
484 elif self.waiting_array_jobs:
485 return self.submit_array(self.waiting_array_jobs)
486 else:
487 return None
488
462 @check_interupt()489 @check_interupt()
463 def launch_and_wait(self, prog, argument=[], cwd=None, stdout=None, 490 def launch_and_wait(self, prog, argument=[], cwd=None, stdout=None,
464 stderr=None, log=None, required_output=[], nb_submit=0,491 stderr=None, log=None, required_output=[], nb_submit=0,
@@ -1648,6 +1675,7 @@
1648 running_tag = ['R', 'CG']1675 running_tag = ['R', 'CG']
1649 complete_tag = ['C']1676 complete_tag = ['C']
1650 identifier_length = 81677 identifier_length = 8
1678 allow_arrays = True
16511679
1652 @multiple_try()1680 @multiple_try()
1653 def submit(self, prog, argument=[], cwd=None, stdout=None, stderr=None, log=None,1681 def submit(self, prog, argument=[], cwd=None, stdout=None, stderr=None, log=None,
@@ -1692,6 +1720,42 @@
1692 self.submitted_ids.append(id)1720 self.submitted_ids.append(id)
1693 return id1721 return id
16941722
1723 def add_into_array(prog, argument, cwd, stdout, stderr, log, input_files,
1724 output_files, required_output, nb_submit):
1725
1726 self.waiting_array_job.append((prog, argument, cwd, stdout, stderr, log, input_files,
1727 output_files, required_output, nb_submit))
1728
1729
1730 def submit_array(self, waiting_array_jobs):
1731 """write a temporary file in order to submit an array of jobs"""
1732
1733 for arg in waiting_array_jobs):
1734 print( arg)
1735 misc.sprint(waiting_array_jobs)
1736 template= """
1737#SBATCH --job-name=%(job_name)s # Job name
1738#SBATCH --mail-type=NONE # Mail events (NONE, BEGIN, END, FAIL, ALL)
1739#SBATCH --mail-user=gatorlink@ufl.edu # Where to send mail
1740#SBATCH --nodes=1 # Use one node
1741#SBATCH --ntasks=1 # Run a single task
1742#SBATCH --output=array_%A-%a.out # Standard output and error log
1743#SBATCH --array=1-5 # Array range
1744 """
1745
1746 import os
1747 import tempfile
1748
1749 fd, path = tempfile.mkstemp()
1750 try:
1751 with os.fdopen(fd, 'w') as tmp:
1752 # do stuff with temp file
1753 tmp.write('stuff')
1754 finally:
1755 os.remove(path)
1756
1757
1758
1695 @multiple_try()1759 @multiple_try()
1696 def control_one_job(self, id):1760 def control_one_job(self, id):
1697 """ control the status of a single job with it's cluster id """1761 """ control the status of a single job with it's cluster id """
16981762
=== modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/auto_dsig.f'
--- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/auto_dsig.f 2019-06-17 21:29:56 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/auto_dsig.f 2021-02-05 11:45:49 +0000
@@ -174,3 +174,33 @@
174174
175175
176176
177
178 INTEGER FUNCTION GET_NHEL1(HEL, IPART)
179 IMPLICIT NONE
180 INTEGER HEL,I, IPART
181 INCLUDE 'nexternal.inc'
182 INTEGER ONE_NHEL(NEXTERNAL)
183 INTEGER NCOMB
184 PARAMETER ( NCOMB=16)
185 INTEGER NHEL(NEXTERNAL,NCOMB)
186 DATA (NHEL(I, 1),I=1,4) / 1,-1,-1, 1/
187 DATA (NHEL(I, 2),I=1,4) / 1,-1,-1,-1/
188 DATA (NHEL(I, 3),I=1,4) / 1,-1, 1, 1/
189 DATA (NHEL(I, 4),I=1,4) / 1,-1, 1,-1/
190 DATA (NHEL(I, 5),I=1,4) / 1, 1,-1, 1/
191 DATA (NHEL(I, 6),I=1,4) / 1, 1,-1,-1/
192 DATA (NHEL(I, 7),I=1,4) / 1, 1, 1, 1/
193 DATA (NHEL(I, 8),I=1,4) / 1, 1, 1,-1/
194 DATA (NHEL(I, 9),I=1,4) /-1,-1,-1, 1/
195 DATA (NHEL(I, 10),I=1,4) /-1,-1,-1,-1/
196 DATA (NHEL(I, 11),I=1,4) /-1,-1, 1, 1/
197 DATA (NHEL(I, 12),I=1,4) /-1,-1, 1,-1/
198 DATA (NHEL(I, 13),I=1,4) /-1, 1,-1, 1/
199 DATA (NHEL(I, 14),I=1,4) /-1, 1,-1,-1/
200 DATA (NHEL(I, 15),I=1,4) /-1, 1, 1, 1/
201 DATA (NHEL(I, 16),I=1,4) /-1, 1, 1,-1/
202
203 GET_NHEL1 = NHEL(IPART, HEL)
204 RETURN
205 END
206
177207
=== modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f'
--- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2020-08-20 15:12:34 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2021-02-05 11:45:49 +0000
@@ -154,6 +154,7 @@
154 $ .LE.MAXTRIES.OR.(ISUM_HEL.NE.0).OR.THIS_NTRY(IMIRROR).LE.2)154 $ .LE.MAXTRIES.OR.(ISUM_HEL.NE.0).OR.THIS_NTRY(IMIRROR).LE.2)
155 $ THEN155 $ THEN
156 T=MATRIX1(P ,NHEL(1,I),JC(1))156 T=MATRIX1(P ,NHEL(1,I),JC(1))
157
157 DO JJ=1,NINCOMING158 DO JJ=1,NINCOMING
158 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))159 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))
159 $ )) THEN160 $ )) THEN
@@ -162,6 +163,7 @@
162 T=T*(2D0-ABS(POL(JJ)))*NB_SPIN_STATE_IN(JJ)/2D0163 T=T*(2D0-ABS(POL(JJ)))*NB_SPIN_STATE_IN(JJ)/2D0
163 ENDIF164 ENDIF
164 ENDDO165 ENDDO
166
165 IF (ISUM_HEL.NE.0.AND.DS_GET_DIM_STATUS('Helicity')167 IF (ISUM_HEL.NE.0.AND.DS_GET_DIM_STATUS('Helicity')
166 $ .EQ.0.AND.ALLOW_HELICITY_GRID_ENTRIES) THEN168 $ .EQ.0.AND.ALLOW_HELICITY_GRID_ENTRIES) THEN
167 CALL DS_ADD_ENTRY('Helicity',I,T)169 CALL DS_ADD_ENTRY('Helicity',I,T)
@@ -220,6 +222,7 @@
220 T=T*(2D0-ABS(POL(JJ)))222 T=T*(2D0-ABS(POL(JJ)))
221 ENDIF223 ENDIF
222 ENDDO224 ENDDO
225
223C Always one helicity at a time226C Always one helicity at a time
224 ANS = T227 ANS = T
225C Include the Jacobian from helicity sampling228C Include the Jacobian from helicity sampling
226229
=== modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/super_auto_dsig.f'
--- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/super_auto_dsig.f 2020-01-19 16:22:42 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/super_auto_dsig.f 2021-02-05 11:45:49 +0000
@@ -595,6 +595,12 @@
595595
596596
597597
598598 INTEGER FUNCTION GET_NHEL(HEL, PARTID)
599599 IMPLICIT NONE
600 INTEGER HEL, PARTID
601 WRITE(*,*) 'do not support this type of pdf with'
602 $ //' group_subprocess=True'
603 STOP 1
604 RETURN
605 END
600606
601607
=== modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/auto_dsig.f'
--- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/auto_dsig.f 2019-06-17 21:29:56 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/auto_dsig.f 2021-02-05 11:45:49 +0000
@@ -221,3 +221,33 @@
221221
222222
223223
224
225 INTEGER FUNCTION GET_NHEL(HEL, IPART)
226 IMPLICIT NONE
227 INTEGER HEL,I, IPART
228 INCLUDE 'nexternal.inc'
229 INTEGER ONE_NHEL(NEXTERNAL)
230 INTEGER NCOMB
231 PARAMETER ( NCOMB=16)
232 INTEGER NHEL(NEXTERNAL,NCOMB)
233 DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/
234 DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/
235 DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/
236 DATA (NHEL(I, 4),I=1,4) / 1,-1, 1, 1/
237 DATA (NHEL(I, 5),I=1,4) / 1, 1,-1,-1/
238 DATA (NHEL(I, 6),I=1,4) / 1, 1,-1, 1/
239 DATA (NHEL(I, 7),I=1,4) / 1, 1, 1,-1/
240 DATA (NHEL(I, 8),I=1,4) / 1, 1, 1, 1/
241 DATA (NHEL(I, 9),I=1,4) /-1,-1,-1,-1/
242 DATA (NHEL(I, 10),I=1,4) /-1,-1,-1, 1/
243 DATA (NHEL(I, 11),I=1,4) /-1,-1, 1,-1/
244 DATA (NHEL(I, 12),I=1,4) /-1,-1, 1, 1/
245 DATA (NHEL(I, 13),I=1,4) /-1, 1,-1,-1/
246 DATA (NHEL(I, 14),I=1,4) /-1, 1,-1, 1/
247 DATA (NHEL(I, 15),I=1,4) /-1, 1, 1,-1/
248 DATA (NHEL(I, 16),I=1,4) /-1, 1, 1, 1/
249
250 GET_NHEL = NHEL(IPART, HEL)
251 RETURN
252 END
253
224254
=== modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f'
--- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2020-06-20 21:10:10 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2021-02-05 11:45:49 +0000
@@ -122,6 +122,7 @@
122 IF (GOODHEL(I) .OR. NTRY .LE. MAXTRIES.OR.(ISUM_HEL.NE.0))122 IF (GOODHEL(I) .OR. NTRY .LE. MAXTRIES.OR.(ISUM_HEL.NE.0))
123 $ THEN123 $ THEN
124 T=MATRIX(P ,NHEL(1,I),JC(1))124 T=MATRIX(P ,NHEL(1,I),JC(1))
125
125 DO JJ=1,NINCOMING126 DO JJ=1,NINCOMING
126 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))127 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))
127 $ )) THEN128 $ )) THEN
@@ -130,6 +131,7 @@
130 T=T*(2D0-ABS(POL(JJ)))*NB_SPIN_STATE(JJ)/2D0131 T=T*(2D0-ABS(POL(JJ)))*NB_SPIN_STATE(JJ)/2D0
131 ENDIF132 ENDIF
132 ENDDO133 ENDDO
134
133 IF (ISUM_HEL.NE.0) THEN135 IF (ISUM_HEL.NE.0) THEN
134 CALL DS_ADD_ENTRY('Helicity',I,T)136 CALL DS_ADD_ENTRY('Helicity',I,T)
135 ENDIF137 ENDIF
@@ -175,6 +177,7 @@
175 I = HEL_PICKED177 I = HEL_PICKED
176178
177 T=MATRIX(P ,NHEL(1,I),JC(1))179 T=MATRIX(P ,NHEL(1,I),JC(1))
180
178 DO JJ=1,NINCOMING181 DO JJ=1,NINCOMING
179 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))))182 IF(POL(JJ).NE.1D0.AND.NHEL(JJ,I).EQ.INT(SIGN(1D0,POL(JJ))))
180 $ THEN183 $ THEN
@@ -183,6 +186,7 @@
183 T=T*(2D0-ABS(POL(JJ)))186 T=T*(2D0-ABS(POL(JJ)))
184 ENDIF187 ENDIF
185 ENDDO188 ENDDO
189
186C Always one helicity at a time190C Always one helicity at a time
187 ANS = T191 ANS = T
188C Include the Jacobian from helicity sampling192C Include the Jacobian from helicity sampling

Subscribers

People subscribed via source and target branches

to all changes: