Merge lp:~maddevelopers/mg5amcnlo/lo_small_width into lp:~mg5core1/mg5amcnlo/2.6.4

Proposed by Olivier Mattelaer
Status: Merged
Merged at revision: 313
Proposed branch: lp:~maddevelopers/mg5amcnlo/lo_small_width
Merge into: lp:~mg5core1/mg5amcnlo/2.6.4
Diff against target: 4339 lines (+323/-3266)
32 files modified
MadSpin/interface_madspin.py (+6/-2)
Template/LO/Source/run.inc (+4/-1)
Template/LO/Source/transpole.f (+20/-1)
Template/LO/SubProcesses/myamp.f (+39/-112)
UpdateNotes.txt (+8/-2)
madgraph/core/helas_objects.py (+7/-0)
madgraph/interface/common_run_interface.py (+37/-1)
madgraph/iolibs/export_v4.py (+54/-4)
madgraph/iolibs/helas_call_writers.py (+23/-0)
madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc (+1/-0)
madgraph/iolibs/template_files/matrix_madevent_group_v4.inc (+18/-0)
madgraph/iolibs/template_files/matrix_madevent_v4.inc (+16/-1)
madgraph/iolibs/template_files/matrix_madweight_group_v4.inc (+1/-0)
madgraph/various/banner.py (+1/-0)
madgraph/various/lhe_parser.py (+13/-8)
tests/acceptance_tests/test_cmd_madloop.py (+2/-2)
tests/acceptance_tests/test_export_fks.py (+1/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f (+0/-748)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f (+3/-11)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f (+1/-1)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f (+0/-748)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f (+3/-11)
tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f (+1/-1)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f (+29/-6)
tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f (+20/-3)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f (+0/-823)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f (+3/-11)
tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f (+1/-1)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f (+0/-755)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f (+3/-11)
tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f (+1/-1)
tests/unit_tests/iolibs/test_export_v4.py (+7/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/lo_small_width
Reviewer Review Type Date Requested Status
Valentin Hirschi Pending
Review via email: mp+357867@code.launchpad.net
To post a comment you must log in.
311. By olivier-mattelaer

better writing of matrix.f to avoid to recompute the fake width systematically

312. By olivier-mattelaer

change small_width default value + Updates notes

313. By olivier-mattelaer

merge with 2.6.4

314. By olivier-mattelaer

fixing an issue with multiple particle with 0 width

315. By olivier-mattelaer

fixing tests

316. By olivier-mattelaer

merging with latest 2.6.4

317. By olivier-mattelaer

secure check in auto/scan case

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'MadSpin/interface_madspin.py'
--- MadSpin/interface_madspin.py 2018-10-31 10:07:53 +0000
+++ MadSpin/interface_madspin.py 2018-11-09 08:24:41 +0000
@@ -1067,8 +1067,13 @@
1067 if len(hepmc_output) == 0:1067 if len(hepmc_output) == 0:
1068 hepmc_output.append(lhe_parser.Particle(event=hepmc_output))1068 hepmc_output.append(lhe_parser.Particle(event=hepmc_output))
1069 hepmc_output[0].color2 = 01069 hepmc_output[0].color2 = 0
1070 hepmc_output[0].status = -1
1071 hepmc_output.nexternal+=1
1070 decayed_particle = lhe_parser.Particle(particle, hepmc_output)1072 decayed_particle = lhe_parser.Particle(particle, hepmc_output)
1073 decayed_particle.mother1 = hepmc_output[0]
1074 decayed_particle.mother2 = hepmc_output[0]
1071 hepmc_output.append(decayed_particle)1075 hepmc_output.append(decayed_particle)
1076 hepmc_output.nexternal+=1
1072 decayed_particle.add_decay(decay)1077 decayed_particle.add_decay(decay)
1073 # change the weight associate to the event1078 # change the weight associate to the event
1074 if self.options['new_wgt'] == 'cross-section':1079 if self.options['new_wgt'] == 'cross-section':
@@ -1086,7 +1091,6 @@
1086 else:1091 else:
1087 hepmc_output.wgt = event.wgt1092 hepmc_output.wgt = event.wgt
1088 hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal1093 hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal
1089 hepmc_output.assign_mother()
1090 output_lhe.write(str(hepmc_output))1094 output_lhe.write(str(hepmc_output))
1091 else:1095 else:
1092 if counter==0:1096 if counter==0:
@@ -1436,7 +1440,7 @@
1436 if self.options['fixed_order']:1440 if self.options['fixed_order']:
1437 production, counterevt= production[0], production[1:]1441 production, counterevt= production[0], production[1:]
1438 if curr_event and curr_event % 1000 == 0 and float(str(curr_event)[1:]) ==0:1442 if curr_event and curr_event % 1000 == 0 and float(str(curr_event)[1:]) ==0:
1439 print "decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start)1443 logger.info("decaying event number %s. Efficiency: %s [%s s]" % (curr_event, 1/self.efficiency, time.time()-start))
1440 while 1:1444 while 1:
1441 nb_try +=11445 nb_try +=1
1442 decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event)1446 decays = self.get_decay_from_file(production, evt_decayfile, nb_event-curr_event)
14431447
=== modified file 'Template/LO/Source/run.inc'
--- Template/LO/Source/run.inc 2018-02-01 22:30:56 +0000
+++ Template/LO/Source/run.inc 2018-11-09 08:24:41 +0000
@@ -91,4 +91,7 @@
91 double precision mxxmin4pdg(0:25) 91 double precision mxxmin4pdg(0:25)
92 logical mxxpart_antipart(1:25)92 logical mxxpart_antipart(1:25)
93 common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg,93 common/TO_PDG_SPECIFIC_CUT/pdg_cut, ptmin4pdg,ptmax4pdg, Emin4pdg, Emax4pdg, etamin4pdg,
94 &etamax4pdg, mxxmin4pdg,mxxpart_antipart
95\ No newline at end of file94\ No newline at end of file
95 &etamax4pdg, mxxmin4pdg,mxxpart_antipart
96
97 double precision small_width_treatment
98 common/narrow_width/small_width_treatment
96\ No newline at end of file99\ No newline at end of file
97100
=== modified file 'Template/LO/Source/transpole.f'
--- Template/LO/Source/transpole.f 2016-06-15 22:46:42 +0000
+++ Template/LO/Source/transpole.f 2018-11-09 08:24:41 +0000
@@ -28,13 +28,24 @@
28 double precision z,zmin,zmax,xmin,xmax,ez28 double precision z,zmin,zmax,xmin,xmax,ez
29 double precision pole1,width1,x,xc29 double precision pole1,width1,x,xc
30 double precision a,b30 double precision a,b
31c
32c small width treatment
33c
34 double precision small_width_treatment
35 common/narrow_width/small_width_treatment
31c-----36c-----
32c Begin Code37c Begin Code
33c-----38c-----
34 pole=pole139 pole=pole1
35 width=width140 width=width1
41
36 x = x142 x = x1
37 if (pole .gt. 0d0) then43 if (pole .gt. 0d0) then
44 if (width.lt.pole*small_width_treatment)then
45 width = pole * small_width_treatment
46 jac = jac * width/width1
47 endif
48
38 zmin = atan((-pole)/width)/width49 zmin = atan((-pole)/width)/width
39 zmax = atan((1d0-pole)/width)/width50 zmax = atan((1d0-pole)/width)/width
40 if (x .gt. del .and. x .lt. 1d0-del) then51 if (x .gt. del .and. x .lt. 1d0-del) then
@@ -175,7 +186,11 @@
175c186c
176 double precision pole1,width1,y1,jac187 double precision pole1,width1,y1,jac
177 real*8 x188 real*8 x
178189c
190c small width treatment
191c
192 double precision small_width_treatment
193 common/narrow_width/small_width_treatment
179c194c
180c Local195c Local
181c196c
@@ -191,6 +206,10 @@
191 width=width1206 width=width1
192 y = y1207 y = y1
193 if (pole .gt. 0d0) then !BW 208 if (pole .gt. 0d0) then !BW
209 if (width.lt.pole*small_width_treatment)then
210 width = pole * small_width_treatment
211 jac = jac * width/width1
212 endif
194 zmin = atan((-pole)/width)/width213 zmin = atan((-pole)/width)/width
195 zmax = atan((1d0-pole)/width)/width214 zmax = atan((1d0-pole)/width)/width
196 z = atan((y-pole)/width)/width215 z = atan((y-pole)/width)/width
197216
=== modified file 'Template/LO/SubProcesses/myamp.f'
--- Template/LO/SubProcesses/myamp.f 2016-12-17 16:26:56 +0000
+++ Template/LO/SubProcesses/myamp.f 2018-11-09 08:24:41 +0000
@@ -1,91 +1,3 @@
1 double precision function testamp(p)
2c*****************************************************************************
3c Approximates matrix element by propagators
4c*****************************************************************************
5 implicit none
6c
7c Constants
8c
9 include 'genps.inc'
10 include 'maxconfigs.inc'
11 include 'nexternal.inc'
12 double precision zero
13 parameter (zero = 0d0)
14c
15c Arguments
16c
17 double precision p(0:3,nexternal)
18c integer iconfig
19c
20c Local
21c
22 double precision xp(0:3,-nexternal:nexternal)
23 double precision mpole(-nexternal:0),shat,tsgn
24 integer i,j,iconfig
25
26 double precision prmass(-nexternal:0,lmaxconfigs)
27 double precision prwidth(-nexternal:0,lmaxconfigs)
28 integer pow(-nexternal:0,lmaxconfigs)
29 logical first_time
30c
31c Global
32c
33 integer iforest(2,-max_branch:-1,lmaxconfigs)
34 common/to_forest/ iforest
35 integer mapconfig(0:lmaxconfigs), this_config
36 common/to_mconfigs/mapconfig, this_config
37
38 include 'coupl.inc'
39c
40c External
41c
42 double precision dot
43
44 save prmass,prwidth,pow
45 data first_time /.true./
46c-----
47c Begin Code
48c-----
49 iconfig = this_config
50 if (first_time) then
51c include 'props.inc'
52 first_time=.false.
53 endif
54
55 do i=1,nexternal
56 mpole(-i)=0d0
57 do j=0,3
58 xp(j,i)=p(j,i)
59 enddo
60 enddo
61c mpole(-3) = 174**2
62c shat = dot(p(0,1),p(0,2))/(1800)**2
63 shat = dot(p(0,1),p(0,2))/(10)**2
64c shat = 1d0
65 testamp = 1d0
66 tsgn = +1d0
67 do i=-1,-(nexternal-3),-1 !Find all the propagotors
68 if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0
69 do j=0,3
70 xp(j,i) = xp(j,iforest(1,i,iconfig))
71 $ +tsgn*xp(j,iforest(2,i,iconfig))
72 enddo
73 if (prwidth(i,iconfig) .ne. 0d0 .and. .false.) then
74 testamp=testamp/((dot(xp(0,i),xp(0,i))
75 $ -prmass(i,iconfig)**2)**2
76 $ -(prmass(i,iconfig)*prwidth(i,iconfig))**2)
77 else
78 testamp = testamp/((dot(xp(0,i),xp(0,i)) -
79 $ prmass(i,iconfig)**2)
80 $ **(pow(i,iconfig)))
81 endif
82 testamp=testamp*shat**(pow(i,iconfig))
83c write(*,*) i,iconfig,pow(i,iconfig),prmass(i,iconfig)
84 enddo
85c testamp = 1d0/dot(xp(0,-1),xp(0,-1))
86 testamp=abs(testamp)
87c testamp = 1d0
88 end
891
90 logical function cut_bw(p)2 logical function cut_bw(p)
91c*****************************************************************************3c*****************************************************************************
@@ -114,6 +26,7 @@
11426
115 double precision prmass(-nexternal:0,lmaxconfigs)27 double precision prmass(-nexternal:0,lmaxconfigs)
116 double precision prwidth(-nexternal:0,lmaxconfigs)28 double precision prwidth(-nexternal:0,lmaxconfigs)
29 double precision prwidth_tmp(-nexternal:0,lmaxconfigs)
117 integer pow(-nexternal:0,lmaxconfigs)30 integer pow(-nexternal:0,lmaxconfigs)
118 logical first_time, onshell31 logical first_time, onshell
119 double precision xmass32 double precision xmass
@@ -152,13 +65,14 @@
152c65c
153 double precision dot66 double precision dot
15467
155 save prmass,prwidth,pow68 save prmass,prwidth,pow,prwidth_tmp
156 data first_time /.true./69 data first_time /.true./
157c-----70c-----
158c Begin Code71c Begin Code
159c----- 72c-----
160 cut_bw = .false. !Default is we passed the cut73 cut_bw = .false. !Default is we passed the cut
161 iconfig = this_config74 iconfig = this_config
75
162 if (first_time) then76 if (first_time) then
163 include 'props.inc'77 include 'props.inc'
164 nbw = 078 nbw = 0
@@ -209,10 +123,12 @@
209c write(*,*) 'xmass',xmass,prmass(i,iconfig)123c write(*,*) 'xmass',xmass,prmass(i,iconfig)
210c124c
211c Here we set if the BW is "on-shell" for LesHouches125c Here we set if the BW is "on-shell" for LesHouches
212c126c
127 prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment)
128
213 onshell = (abs(xmass - prmass(i,iconfig)) .lt.129 onshell = (abs(xmass - prmass(i,iconfig)) .lt.
214 $ bwcutoff*prwidth(i,iconfig).and.130 $ bwcutoff*prwidth_tmp(i,iconfig).and.
215 $ (prwidth(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or.131 $ (prwidth_tmp(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or.
216 $ gForceBW(i,iconfig).eq.1))132 $ gForceBW(i,iconfig).eq.1))
217 if(onshell)then133 if(onshell)then
218c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11)134c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11)
@@ -264,10 +180,10 @@
264c For decay-chain syntax use BWcutoff here too (22/12/14)180c For decay-chain syntax use BWcutoff here too (22/12/14)
265 if (gForceBW(i, iconfig).eq.1) then181 if (gForceBW(i, iconfig).eq.1) then
266 onshell = (abs(xmass - prmass(i,iconfig)) .lt.182 onshell = (abs(xmass - prmass(i,iconfig)) .lt.
267 $ bwcutoff*prwidth(i,iconfig))183 $ bwcutoff*prwidth_tmp(i,iconfig))
268 else184 else
269 onshell = (abs(xmass - prmass(i,iconfig)) .lt.185 onshell = (abs(xmass - prmass(i,iconfig)) .lt.
270 $ 5d0*prwidth(i,iconfig))186 $ 5d0*prwidth_tmp(i,iconfig))
271 endif187 endif
272188
273 if (onshell .and. (lbw(nbw).eq. 2) .or.189 if (onshell .and. (lbw(nbw).eq. 2) .or.
@@ -313,6 +229,7 @@
313229
314 double precision prmass(-nexternal:0,lmaxconfigs)230 double precision prmass(-nexternal:0,lmaxconfigs)
315 double precision prwidth(-nexternal:0,lmaxconfigs)231 double precision prwidth(-nexternal:0,lmaxconfigs)
232 double precision prwidth_tmp(-nexternal:0,lmaxconfigs)
316 integer pow(-nexternal:0,lmaxconfigs)233 integer pow(-nexternal:0,lmaxconfigs)
317234
318 integer idup(nexternal,maxproc,maxsproc)235 integer idup(nexternal,maxproc,maxsproc)
@@ -382,11 +299,21 @@
382299
383c-----300c-----
384c Begin Code301c Begin Code
385c----- 302c-----
303 iconfig = this_config
304c needs to be initialise to avoid segfault
305 do i = -nexternal,-1
306 prwidth(i,iconfig) = 0
307 prmass(i,iconfig) =0
308 enddo
386 include 'props.inc'309 include 'props.inc'
387c etmin = 10310c etmin = 10
388 nt = 0311 nt = 0
389 iconfig = this_config312 do i = -nexternal,-1
313 prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment)
314 enddo
315
316
390 mtot = 0d0317 mtot = 0d0
391 etot = 0d0 !Total energy needed318 etot = 0d0 !Total energy needed
392 spmass = 0d0 !Keep track of BW masses for shat319 spmass = 0d0 !Keep track of BW masses for shat
@@ -423,7 +350,7 @@
423c Look for identical particles to map radiation processes350c Look for identical particles to map radiation processes
424 call idenparts(iden_part, iforest(1,-max_branch,iconfig),351 call idenparts(iden_part, iforest(1,-max_branch,iconfig),
425 $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig),352 $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig),
426 $ prwidth(-nexternal,iconfig))353 $ prwidth_tmp(-nexternal,iconfig))
427354
428c Start loop over propagators355c Start loop over propagators
429 do i=-1,-(nexternal-3),-1356 do i=-1,-(nexternal-3),-1
@@ -446,15 +373,15 @@
446 xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0))373 xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0))
447 endif374 endif
448c write(*,*) 'iconfig,i',iconfig,i375c write(*,*) 'iconfig,i',iconfig,i
449c write(*,*) prwidth(i,iconfig),prmass(i,iconfig)376c write(*,*) prwidth_tmp(i,iconfig),prmass(i,iconfig)
450 if (prwidth(i,iconfig) .gt. 0 ) then377 if (prwidth_tmp(i,iconfig) .gt. 0 ) then
451 nbw=nbw+1378 nbw=nbw+1
452c JA 6/8/2011 Set xe(i) for resonances379c JA 6/8/2011 Set xe(i) for resonances
453 if (gforcebw(i,iconfig).eq.1) then380 if (gforcebw(i,iconfig).eq.1) then
454 xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth(i,iconfig))381 xm(i) = max(xm(i), prmass(i,iconfig)-bwcutoff*prwidth_tmp(i,iconfig))
455 bwcut_for_PS(i) = bwcutoff382 bwcut_for_PS(i) = bwcutoff
456 else if (lbw(nbw).eq.1) then383 else if (lbw(nbw).eq.1) then
457 xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth(i,iconfig))384 xm(i) = max(xm(i), prmass(i,iconfig)-5d0*prwidth_tmp(i,iconfig))
458 bwcut_for_PS(i) = 5d0385 bwcut_for_PS(i) = 5d0
459 else386 else
460 bwcut_for_PS(i) = 5d0387 bwcut_for_PS(i) = 5d0
@@ -465,19 +392,19 @@
465c Either: required onshell and daughter masses too large392c Either: required onshell and daughter masses too large
466c Or: forced and daughter masses too large393c Or: forced and daughter masses too large
467c Or: required offshell and forced394c Or: required offshell and forced
468 if(prwidth(i,iconfig) .gt. 0.and.395 if(prwidth_tmp(i,iconfig) .gt. 0.and.
469 $ (lbw(nbw).eq.1.and.396 $ (lbw(nbw).eq.1.and.
470 $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig).lt.xm(i)397 $ (prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig).lt.xm(i)
471 $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig).gt.dsqrt(stot))398 $ .or.prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig).gt.dsqrt(stot))
472 $ .or.gforcebw(i,iconfig).eq.1.and.399 $ .or.gforcebw(i,iconfig).eq.1.and.
473 $ prmass(i,iconfig)+bwcutoff*prwidth(i,iconfig).lt.xm(i)400 $ prmass(i,iconfig)+bwcutoff*prwidth_tmp(i,iconfig).lt.xm(i)
474 $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1))401 $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1))
475 $ then402 $ then
476c Write results.dat and quit403c Write results.dat and quit
477 call write_null_results()404 call write_null_results()
478 stop405 stop
479 endif406 endif
480 if (prwidth(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W.407 if (prwidth_tmp(i,iconfig) .gt. 0 .and. lbw(nbw) .le. 1) then !B.W.
481 if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat408 if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat
482 j = 3*(nexternal-2)-4+1 !set i to ndim+1409 j = 3*(nexternal-2)-4+1 !set i to ndim+1
483c-----410c-----
@@ -489,14 +416,14 @@
489 $ .or. lbw(nbw).eq.1) then416 $ .or. lbw(nbw).eq.1) then
490 write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig)417 write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig)
491 spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot418 spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot
492 swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot419 swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian)
493 endif420 endif
494 else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth(i,iconfig)).ge.xm(i)421 else if((prmass(i,iconfig)+bwcut_for_PS(i)*prwidth_tmp(i,iconfig)).ge.xm(i)
495 $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then422 $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then
496c JA 02/13 Only allow BW if xm below M+5*Gamma423c JA 02/13 Only allow BW if xm below M+5*Gamma
497 write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig)424 write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig)
498 spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot425 spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot
499 swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot426 swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian)
500 endif427 endif
501c JA 4/1/2011 Set grid in case there is no BW (radiation process)428c JA 4/1/2011 Set grid in case there is no BW (radiation process)
502 if (swidth(-i) .eq. 0d0 .and.429 if (swidth(-i) .eq. 0d0 .and.
@@ -509,7 +436,7 @@
509c Set spmass for BWs436c Set spmass for BWs
510 if (swidth(-i) .ne. 0d0)437 if (swidth(-i) .ne. 0d0)
511 $ spmass=spmass-xm(i) +438 $ spmass=spmass-xm(i) +
512 $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth(i,iconfig))439 $ max(xm(i),prmass(i,iconfig)-bwcut_for_PS(i)*prwidth_tmp(i,iconfig))
513 else !1/x^pow440 else !1/x^pow
514 a=prmass(i,iconfig)**2/stot441 a=prmass(i,iconfig)**2/stot
515c JA 4/1/2011 always set grid442c JA 4/1/2011 always set grid
@@ -530,7 +457,7 @@
530 endif457 endif
531 endif458 endif
532 if (xo.eq.0d0) xo=1d0/stot459 if (xo.eq.0d0) xo=1d0/stot
533c if (prwidth(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then 460c if (prwidth_tmp(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then
534 call setgrid(-i,xo,a,1)461 call setgrid(-i,xo,a,1)
535c else 462c else
536c write(*,*) 'Using flat grid for BW',i,nbw,463c write(*,*) 'Using flat grid for BW',i,nbw,
@@ -610,7 +537,7 @@
610 spole(i)= -2.0d0 ! 1/s pole537 spole(i)= -2.0d0 ! 1/s pole
611 write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot538 write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot
612 else539 else
613 write(*,*) "Transforming s_hat BW ",spole(i),swidth(i)540 write(*,*) "Transforming s_hat BW ",spole(i), max(swidth(i), spole(i)*small_width_treatment)
614 endif541 endif
615 endif542 endif
616543
617544
=== modified file 'UpdateNotes.txt'
--- UpdateNotes.txt 2018-10-17 13:25:07 +0000
+++ UpdateNotes.txt 2018-11-09 08:24:41 +0000
@@ -1,12 +1,18 @@
1Update notes for MadGraph5_aMC@NLO (in reverse time order)1Update notes for MadGraph5_aMC@NLO (in reverse time order)
22
32.6.4 (//)32.6.4 (//)
4 OM: add specific treatement for small width (at LO only and not for loop-induced)
5 if the width is smaller than 1e-6 times the mass, a fake width (at that value) is used for the
6 numerical evaluation of the matrix-element. S-channel resonances are re-scaled according to
7 narrow-width approximation to return the correct total cross-section (the distribution of events
8 will on the other hand follow the new width).
9 The parameter '1e-6' can be changed by adding to (LO) run_card the parameter: "small_width_treatment"
10 OM: add a new command "install looptools" to trigger the question that is automatically trigger
11 the first time a loop computation is needed.
4 RF: Fixed a bug when using TopDrawer plots for f(N)LO runs, where the combination of the plots could lead12 RF: Fixed a bug when using TopDrawer plots for f(N)LO runs, where the combination of the plots could lead
5 to completely wrong histograms/distributions in case of high-precision runs.13 to completely wrong histograms/distributions in case of high-precision runs.
6 OM: Fix some MLM crash for some processes (in particular BSM processes with W'). 14 OM: Fix some MLM crash for some processes (in particular BSM processes with W').
7 OM: Fix a bug in the reweighting due to the new lhe format (the one avoiding some issue with py8)15 OM: Fix a bug in the reweighting due to the new lhe format (the one avoiding some issue with py8)
8 OM: add a new command "install looptools" to trigger the question that is automatically trigger
9 the first time a loop computation is needed.
10 OM: Fix a behavior for negative mass, the width was set to negative in the param_card automatically16 OM: Fix a behavior for negative mass, the width was set to negative in the param_card automatically
11 making the Parton-shower (and other code) to crash since this does not follow the convention.17 making the Parton-shower (and other code) to crash since this does not follow the convention.
12 OM: Change compiler flag to support Mojave.18 OM: Change compiler flag to support Mojave.
1319
=== modified file 'madgraph/core/helas_objects.py'
--- madgraph/core/helas_objects.py 2017-08-10 13:09:28 +0000
+++ madgraph/core/helas_objects.py 2018-11-09 08:24:41 +0000
@@ -4569,6 +4569,13 @@
4569 return sum([d.get('wavefunctions') for d in \4569 return sum([d.get('wavefunctions') for d in \
4570 self.get('diagrams')], [])4570 self.get('diagrams')], [])
45714571
4572
4573 def get_all_mass_widths(self):
4574 """Gives a list of all widths used by this ME (from propagator)"""
4575
4576 return set([(d.get('mass'),d.get('width')) for d in self.get_all_wavefunctions()])
4577
4578
4572 def get_all_amplitudes(self):4579 def get_all_amplitudes(self):
4573 """Gives a list of all amplitudes for this ME"""4580 """Gives a list of all amplitudes for this ME"""
45744581
45754582
=== modified file 'madgraph/interface/common_run_interface.py'
--- madgraph/interface/common_run_interface.py 2018-11-08 22:22:58 +0000
+++ madgraph/interface/common_run_interface.py 2018-11-09 08:24:41 +0000
@@ -3242,7 +3242,19 @@
3242 - Check that no width are too small (raise a warning if this is the case)3242 - Check that no width are too small (raise a warning if this is the case)
3243 3) if dependent is on True check for dependent parameter (automatic for scan)"""3243 3) if dependent is on True check for dependent parameter (automatic for scan)"""
3244 3244
3245 return self.static_check_param_card(path, self, run=run, dependent=dependent)3245 self.static_check_param_card(path, self, run=run, dependent=dependent)
3246
3247 card = param_card_mod.ParamCard(path)
3248 for param in card['decay']:
3249 width = param.value
3250 if width == 0:
3251 continue
3252 try:
3253 mass = card['mass'].get(param.lhacode).value
3254 except Exception:
3255 continue
3256
3257
3246 3258
3247 @staticmethod3259 @staticmethod
3248 def static_check_param_card(path, interface, run=True, dependent=False, 3260 def static_check_param_card(path, interface, run=True, dependent=False,
@@ -5680,6 +5692,30 @@
5680 self.run_card['mass_ion1'] != self.run_card['mass_ion2']):5692 self.run_card['mass_ion1'] != self.run_card['mass_ion2']):
5681 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\"."5693 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\"."
5682 5694
5695 # check the status of small width status from LO
5696 for param in self.param_card['decay']:
5697 width = param.value
5698 if width == 0 or isinstance(width,str):
5699 continue
5700 try:
5701 mass = self.param_card['mass'].get(param.lhacode).value
5702 except Exception:
5703 continue
5704 if isinstance(mass,str):
5705 continue
5706
5707 if mass:
5708 if abs(width/mass) < self.run_card['small_width_treatment']:
5709 logger.warning("Particle %s will use a fake width ( %s instead of %s ).\n" +
5710 "Cross-section will be rescaled according to NWA if needed." +
5711 "To force exact treatment reduce the value of 'small_width_treatment' parameter of the run_card",
5712 param.lhacode[0], mass*self.run_card['small_width_treatment'], width)
5713 elif abs(width/mass) < 1e-12:
5714 logger.error('The width of particle %s is too small for an s-channel resonance (%s). If you have this particle in an s-channel, this is likely to create numerical instabilities .', param.lhacode[0], width)
5715 if CommonRunCmd.sleep_for_error:
5716 time.sleep(5)
5717 CommonRunCmd.sleep_for_error = False
5718
56835719
5684 ########################################################################5720 ########################################################################
5685 # NLO specific check5721 # NLO specific check
56865722
=== modified file 'madgraph/iolibs/export_v4.py'
--- madgraph/iolibs/export_v4.py 2018-11-08 22:22:58 +0000
+++ madgraph/iolibs/export_v4.py 2018-11-09 08:24:41 +0000
@@ -12,6 +12,7 @@
12# For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch12# For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch
13#13#
14################################################################################14################################################################################
15from madgraph.iolibs.helas_call_writers import HelasCallWriter
15"""Methods and classes to export matrix elements to v4 format."""16"""Methods and classes to export matrix elements to v4 format."""
1617
17import copy18import copy
@@ -93,12 +94,28 @@
93 # - None, madgraph do nothing for initialisation94 # - None, madgraph do nothing for initialisation
94 exporter = 'v4'95 exporter = 'v4'
95 # language of the output 'v4' for Fortran output96 # language of the output 'v4' for Fortran output
96 # 'cpp' for C++ output 97 # 'cpp' for C++ output
97 98
98 99
99 def __init__(self, dir_path = "", opt=None):100 def __init__(self, dir_path = "", opt=None):
100 # cmd_options is a dictionary with all the optional argurment passed at output time 101 # cmd_options is a dictionary with all the optional argurment passed at output time
101 return102
103 # Activate some monkey patching for the helas call writer.
104 helas_call_writers.HelasCallWriter.customize_argument_for_all_other_helas_object = \
105 self.helas_call_writer_custom
106
107
108 # helper function for customise helas writter
109 @staticmethod
110 def custom_helas_call(call, arg):
111 """static method to customise the way aloha function call are written
112 call is the default template for the call
113 arg are the dictionary used for the call
114 """
115 return call, arg
116
117 helas_call_writer_custom = lambda x,y,z: x.custom_helas_call(y,z)
118
102119
103 def copy_template(self, model):120 def copy_template(self, model):
104 return121 return
@@ -160,6 +177,9 @@
160 #place holder to pass information to the run_interface177 #place holder to pass information to the run_interface
161 self.proc_characteristic = banner_mod.ProcCharacteristic()178 self.proc_characteristic = banner_mod.ProcCharacteristic()
162 179
180 # call mother class
181 super(ProcessExporterFortran,self).__init__(dir_path, opt)
182
163 183
164 #===========================================================================184 #===========================================================================
165 # process exporter fortran switch between group and not grouped185 # process exporter fortran switch between group and not grouped
@@ -3423,6 +3443,7 @@
3423 return s_and_t_channels3443 return s_and_t_channels
34243444
34253445
3446
3426#===============================================================================3447#===============================================================================
3427# ProcessExporterFortranME3448# ProcessExporterFortranME
3428#===============================================================================3449#===============================================================================
@@ -3431,7 +3452,16 @@
3431 MadEvent format."""3452 MadEvent format."""
34323453
3433 matrix_file = "matrix_madevent_v4.inc"3454 matrix_file = "matrix_madevent_v4.inc"
34343455
3456 # helper function for customise helas writter
3457 @staticmethod
3458 def custom_helas_call(call, arg):
3459 if arg['mass'] == '%(M)s,%(W)s,':
3460 arg['mass'] = '%(M)s, fk_%(W)s,'
3461 elif '%(W)s' in arg['mass']:
3462 raise Exception
3463 return call, arg
3464
3435 def copy_template(self, model):3465 def copy_template(self, model):
3436 """Additional actions needed for setup of Template3466 """Additional actions needed for setup of Template
3437 """3467 """
@@ -3455,6 +3485,7 @@
3455 3485
3456 3486
34573487
3488
34583489
34593490
3460 #===========================================================================3491 #===========================================================================
@@ -3945,10 +3976,29 @@
3945 # Extract helas calls3976 # Extract helas calls
3946 helas_calls = fortran_model.get_matrix_element_calls(\3977 helas_calls = fortran_model.get_matrix_element_calls(\
3947 matrix_element)3978 matrix_element)
3979
39483980
3949 replace_dict['helas_calls'] = "\n".join(helas_calls)3981 replace_dict['helas_calls'] = "\n".join(helas_calls)
39503982
39513983
3984 #adding the support for the fake width (forbidding too small width)
3985 mass_width = matrix_element.get_all_mass_widths()
3986 width_list = set([e[1] for e in mass_width])
3987
3988 replace_dict['fake_width_declaration'] = \
3989 (' double precision fk_%s \n' * len(width_list)) % tuple(width_list)
3990 replace_dict['fake_width_declaration'] += \
3991 (' save fk_%s \n' * len(width_list)) % tuple(width_list)
3992 fk_w_defs = []
3993 one_def = ' fk_%(w)s = SIGN(MAX(ABS(%(w)s), ABS(%(m)s*small_width_treatment)), %(w)s)'
3994 for m, w in mass_width:
3995 if w == 'zero':
3996 if ' fk_zero = 0d0' not in fk_w_defs:
3997 fk_w_defs.append(' fk_zero = 0d0')
3998 continue
3999 fk_w_defs.append(one_def %{'m':m, 'w':w})
4000 replace_dict['fake_width_definitions'] = '\n'.join(fk_w_defs)
4001
3952 # Extract version number and date from VERSION file4002 # Extract version number and date from VERSION file
3953 info_lines = self.get_mg5_info_lines()4003 info_lines = self.get_mg5_info_lines()
3954 replace_dict['info_lines'] = info_lines4004 replace_dict['info_lines'] = info_lines
39554005
=== modified file 'madgraph/iolibs/helas_call_writers.py'
--- madgraph/iolibs/helas_call_writers.py 2016-03-03 23:17:06 +0000
+++ madgraph/iolibs/helas_call_writers.py 2018-11-09 08:24:41 +0000
@@ -21,11 +21,13 @@
21import aloha.aloha_writers as aloha_writers21import aloha.aloha_writers as aloha_writers
22import aloha22import aloha
23from madgraph import MadGraph5Error23from madgraph import MadGraph5Error
24import madgraph.various.misc as misc
2425
25class HelasWriterError(Exception):26class HelasWriterError(Exception):
26 """Class for the error of this module """27 """Class for the error of this module """
27 pass28 pass
2829
30
29#===============================================================================31#===============================================================================
30# HelasCallWriter32# HelasCallWriter
31#===============================================================================33#===============================================================================
@@ -41,6 +43,19 @@
41 # Dictionaries from spin states to letters in Helas call43 # Dictionaries from spin states to letters in Helas call
42 mother_dict = {1: 'S', 2: 'O', -2: 'I', 3: 'V', 5: 'T', 4:'OR', -4:'IR',44 mother_dict = {1: 'S', 2: 'O', -2: 'I', 3: 'V', 5: 'T', 4:'OR', -4:'IR',
43 99:'P'}45 99:'P'}
46
47 @staticmethod
48 def customize_argument_for_all_other_helas_object(call, arg):
49 """ Place holder for PLUGIN/...
50 (used by madevent output for small width handling)
51 """
52 return call, arg
53
54 @staticmethod
55 def default_customize_argument_for_all_other_helas_object(call,arg):
56 return call,arg
57 #customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object
58 #default_customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object
4459
45 def default_setup(self):60 def default_setup(self):
4661
@@ -85,6 +100,11 @@
85100
86 return ['model', 'wavefunctions', 'amplitudes']101 return ['model', 'wavefunctions', 'amplitudes']
87102
103
104
105
106
107
88 def get_loop_amp_helas_calls(self, matrix_element):108 def get_loop_amp_helas_calls(self, matrix_element):
89 """Return a list of strings, corresponding to the Helas calls109 """Return a list of strings, corresponding to the Helas calls
90 for building loop amplitudes (AMPL) only."""110 for building loop amplitudes (AMPL) only."""
@@ -1197,6 +1217,7 @@
1197 arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)" 1217 arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)"
11981218
1199 # ALL ARGUMENT FORMATTED ###############################################1219 # ALL ARGUMENT FORMATTED ###############################################
1220 call, arg = HelasCallWriter.customize_argument_for_all_other_helas_object(call, arg)
1200 # Store the result.1221 # Store the result.
1201 call = call % arg1222 call = call % arg
1202 # Now we have a line correctly formatted1223 # Now we have a line correctly formatted
@@ -1209,6 +1230,8 @@
1209 else:1230 else:
1210 self.add_amplitude(argument.get_call_key(), call_function)1231 self.add_amplitude(argument.get_call_key(), call_function)
12111232
1233
1234
1212 def get_loop_amplitude_helas_calls(self, loop_matrix_element):1235 def get_loop_amplitude_helas_calls(self, loop_matrix_element):
1213 """ Returns a list of strings corresponding to the Helas calls for each 1236 """ Returns a list of strings corresponding to the Helas calls for each
1214 loop amplitude of this loop matrix element. This function is placed in1237 loop amplitude of this loop matrix element. This function is placed in
12151238
=== modified file 'madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc'
--- madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2017-11-01 10:08:52 +0000
+++ madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2018-11-09 08:24:41 +0000
@@ -39,6 +39,7 @@
39C When set negative, the security above is removed39C When set negative, the security above is removed
40 DOUBLE PRECISION MULTICHANNEL_THRES40 DOUBLE PRECISION MULTICHANNEL_THRES
41 PARAMETER (MULTICHANNEL_THRES=1.0d-5)41 PARAMETER (MULTICHANNEL_THRES=1.0d-5)
42
42c43c
43c global (due to reading writting) 44c global (due to reading writting)
44c45c
4546
=== modified file 'madgraph/iolibs/template_files/matrix_madevent_group_v4.inc'
--- madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2017-11-01 10:08:52 +0000
+++ madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2018-11-09 08:24:41 +0000
@@ -68,6 +68,9 @@
68 68
69 REAL*8 POL(2)69 REAL*8 POL(2)
70 COMMON/TO_POLARIZATION/ POL70 COMMON/TO_POLARIZATION/ POL
71
72 double precision small_width_treatment
73 common/narrow_width/small_width_treatment
71 74
72 INTEGER ISUM_HEL75 INTEGER ISUM_HEL
73 LOGICAL MULTI_CHANNEL76 LOGICAL MULTI_CHANNEL
@@ -87,6 +90,7 @@
87C ----------90C ----------
88C BEGIN CODE91C BEGIN CODE
89C ----------92C ----------
93
90 NTRY(IMIRROR)=NTRY(IMIRROR)+194 NTRY(IMIRROR)=NTRY(IMIRROR)+1
91 THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 95 THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1
92 DO I=1,NEXTERNAL96 DO I=1,NEXTERNAL
@@ -255,6 +259,11 @@
255C Needed for v4 models259C Needed for v4 models
256 COMPLEX*16 DUM0,DUM1260 COMPLEX*16 DUM0,DUM1
257 DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/261 DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/
262
263 %(fake_width_declaration)s
264 logical first
265 data first /.true./
266 save first
258C267C
259C FUNCTION268C FUNCTION
260C269C
@@ -265,6 +274,9 @@
265 Double Precision amp2(maxamps), jamp2(0:maxflow)274 Double Precision amp2(maxamps), jamp2(0:maxflow)
266 common/to_amps/ amp2, jamp2275 common/to_amps/ amp2, jamp2
267 include 'coupl.inc'276 include 'coupl.inc'
277
278 double precision small_width_treatment
279 common/narrow_width/small_width_treatment
268C 280C
269C COLOR DATA281C COLOR DATA
270C 282C
@@ -272,6 +284,12 @@
272C ----------284C ----------
273C BEGIN CODE285C BEGIN CODE
274C ----------286C ----------
287if (first) then
288 first=.false.
289 %(fake_width_definitions)s
290endif
291
292
275%(helas_calls)s293%(helas_calls)s
276%(jamp_lines)s294%(jamp_lines)s
277295
278296
=== modified file 'madgraph/iolibs/template_files/matrix_madevent_v4.inc'
--- madgraph/iolibs/template_files/matrix_madevent_v4.inc 2017-11-01 10:08:52 +0000
+++ madgraph/iolibs/template_files/matrix_madevent_v4.inc 2018-11-09 08:24:41 +0000
@@ -49,6 +49,7 @@
49 INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ49 INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ
50 REAL XRAN150 REAL XRAN1
51 EXTERNAL XRAN151 EXTERNAL XRAN1
52
52C 53C
53C GLOBAL VARIABLES54C GLOBAL VARIABLES
54C 55C
@@ -58,7 +59,7 @@
58 CHARACTER*101 HEL_BUFF59 CHARACTER*101 HEL_BUFF
59 COMMON/TO_HELICITY/ HEL_BUFF60 COMMON/TO_HELICITY/ HEL_BUFF
60 61
61 REAL*8 POL(2)62 REAL*8 POL(2)
62 COMMON/TO_POLARIZATION/ POL63 COMMON/TO_POLARIZATION/ POL
63 64
64 INTEGER ISUM_HEL65 INTEGER ISUM_HEL
@@ -68,6 +69,7 @@
68 DATA IDUM /-1/69 DATA IDUM /-1/
69 DATA XTRY, XREJ, NGOOD /0,0,0/70 DATA XTRY, XREJ, NGOOD /0,0,0/
70 SAVE YFRAC, IGOOD, JHEL71 SAVE YFRAC, IGOOD, JHEL
72
71%(helicity_lines)s73%(helicity_lines)s
72%(den_factor_line)s74%(den_factor_line)s
73C ----------75C ----------
@@ -235,6 +237,11 @@
235C Needed for v4 models237C Needed for v4 models
236 COMPLEX*16 DUM0,DUM1238 COMPLEX*16 DUM0,DUM1
237 DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/239 DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/
240
241 %(fake_width_declaration)s
242 logical first
243 data first /.true./
244 save first
238C245C
239C FUNCTION246C FUNCTION
240C247C
@@ -245,6 +252,9 @@
245 Double Precision amp2(maxamps), jamp2(0:maxflow)252 Double Precision amp2(maxamps), jamp2(0:maxflow)
246 common/to_amps/ amp2, jamp2253 common/to_amps/ amp2, jamp2
247 include 'coupl.inc'254 include 'coupl.inc'
255
256 double precision small_width_treatment
257 common/narrow_width/small_width_treatment
248C 258C
249C COLOR DATA259C COLOR DATA
250C 260C
@@ -252,6 +262,11 @@
252C ----------262C ----------
253C BEGIN CODE263C BEGIN CODE
254C ----------264C ----------
265if (first) then
266 first=.false.
267 %(fake_width_definitions)s
268endif
269
255%(helas_calls)s270%(helas_calls)s
256%(jamp_lines)s271%(jamp_lines)s
257272
258273
=== modified file 'madgraph/iolibs/template_files/matrix_madweight_group_v4.inc'
--- madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2012-02-29 12:53:46 +0000
+++ madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2018-11-09 08:24:41 +0000
@@ -22,6 +22,7 @@
22C ARGUMENTS 22C ARGUMENTS
23C 23C
24 REAL*8 P(0:3,NEXTERNAL),ANS24 REAL*8 P(0:3,NEXTERNAL),ANS
25
25C 26C
26C LOCAL VARIABLES 27C LOCAL VARIABLES
27C 28C
2829
=== modified file 'madgraph/various/banner.py'
--- madgraph/various/banner.py 2018-10-19 08:43:52 +0000
+++ madgraph/various/banner.py 2018-11-09 08:24:41 +0000
@@ -2952,6 +2952,7 @@
2952 self.add_param('survey_splitting', -1, hidden=True, include=False, comment="for loop-induced control how many core are used at survey for the computation of a single iteration.")2952 self.add_param('survey_splitting', -1, hidden=True, include=False, comment="for loop-induced control how many core are used at survey for the computation of a single iteration.")
2953 self.add_param('survey_nchannel_per_job', 2, hidden=True, include=False, comment="control how many Channel are integrated inside a single job on cluster/multicore")2953 self.add_param('survey_nchannel_per_job', 2, hidden=True, include=False, comment="control how many Channel are integrated inside a single job on cluster/multicore")
2954 self.add_param('refine_evt_by_job', -1, hidden=True, include=False, comment="control the maximal number of events for the first iteration of the refine (larger means less jobs)")2954 self.add_param('refine_evt_by_job', -1, hidden=True, include=False, comment="control the maximal number of events for the first iteration of the refine (larger means less jobs)")
2955 self.add_param('small_width_treatment', 1e-6, hidden=True, comment="generation where the width is below VALUE times mass will be replace by VALUE times mass for the computation. The cross-section will be corrected assuming NWA. Not used for loop-induced process")
2955 2956
2956 # parameter allowing to define simple cut via the pdg2957 # parameter allowing to define simple cut via the pdg
2957 # Special syntax are related to those. (can not be edit directly)2958 # Special syntax are related to those. (can not be edit directly)
29582959
=== modified file 'madgraph/various/lhe_parser.py'
--- madgraph/various/lhe_parser.py 2018-06-21 08:57:21 +0000
+++ madgraph/various/lhe_parser.py 2018-11-09 08:24:41 +0000
@@ -167,6 +167,7 @@
167 """associate to this particle the decay in the associate event"""167 """associate to this particle the decay in the associate event"""
168 168
169 return self.event.add_decay_to_particle(self.event_id, decay_event)169 return self.event.add_decay_to_particle(self.event_id, decay_event)
170
170 171
171 def __repr__(self):172 def __repr__(self):
172 return 'Particle("%s", event=%s)' % (str(self), self.event)173 return 'Particle("%s", event=%s)' % (str(self), self.event)
@@ -1263,26 +1264,28 @@
1263 1264
1264 if 'part' == status:1265 if 'part' == status:
1265 part = Particle(line, event=self)1266 part = Particle(line, event=self)
1266 if part.E != 0:1267 if part.E != 0 or part.status==-1:
1267 self.append(part)1268 self.append(part)
1268 elif self.nexternal:1269 elif self.nexternal:
1269 self.nexternal-=11270 self.nexternal-=1
1270 else:1271 else:
1271 if '</event>' in line:1272 if '</event>' in line:
1272 line = line.replace('</event>','',1)1273 line = line.replace('</event>','',1)
1273 self.tag += '%s\n' % line1274 self.tag += '%s\n' % line
1274 1275
1275 self.assign_mother()1276 self.assign_mother()
1276 1277
1278
1277 def assign_mother(self):1279 def assign_mother(self):
1278 """convert the number in actual particle"""1280 """convert the number in actual particle"""
1279 #Security if not incoming particle. Define a fake particle and set all particle as 1281 #Security if not incoming particle. Define a fake particle
1280 # decaying from that fake particle
1281 if all(p.status != -1 for p in self):1282 if all(p.status != -1 for p in self):
1283 if not self.nexternal:
1284 return
1282 if self.warning_order:1285 if self.warning_order:
1283 Event.warning_order = False1286 Event.warning_order = False
1284 logger.warning("Weird format for lhe format: no incoming particle... adding a fake one")1287 logger.warning("Weird format for lhe format: no incoming particle... adding a fake one")
1285 1288 raise Exception
1286 mother = Particle(event=self)1289 mother = Particle(event=self)
1287 mother.status = -11290 mother.status = -1
1288 mother.pid = 01291 mother.pid = 0
@@ -1291,8 +1294,10 @@
1291 mother.event_id = 01294 mother.event_id = 0
1292 self.nexternal += 11295 self.nexternal += 1
1293 for p in self[1:]:1296 for p in self[1:]:
1294 p.mother1 = 11297 if isinstance(p.mother1, int) and p.mother1 > 1:
1295 p.mother2 = 11298 p.mother1 += 1
1299 if isinstance(p.mother2, int) and p.mother2 > 1:
1300 p.mother2 += 1
1296 p.event_id += 11301 p.event_id += 1
1297 1302
1298 1303
12991304
=== modified file 'tests/acceptance_tests/test_cmd_madloop.py'
--- tests/acceptance_tests/test_cmd_madloop.py 2018-04-24 22:39:50 +0000
+++ tests/acceptance_tests/test_cmd_madloop.py 2018-11-09 08:24:41 +0000
@@ -492,7 +492,7 @@
492 # Select the Tensor Integral to include in the test492 # Select the Tensor Integral to include in the test
493 misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout')493 misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout')
494 misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout') 494 misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout')
495 misc.activate_dependence('golem', cmd = self.interface, log='stdout')495 misc.deactivate_dependence('golem', cmd = self.interface, log='stdout')
496 misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR)496 misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR)
497 misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR)497 misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR)
498498
@@ -533,7 +533,7 @@
533 # Select the Tensor Integral to include in the test533 # Select the Tensor Integral to include in the test
534 misc.deactivate_dependence('pjfry', cmd = interface, log='stdout')534 misc.deactivate_dependence('pjfry', cmd = interface, log='stdout')
535 misc.deactivate_dependence('samurai', cmd = interface, log='stdout') 535 misc.deactivate_dependence('samurai', cmd = interface, log='stdout')
536 misc.activate_dependence('golem', cmd = interface, log='stdout')536 misc.deactivate_dependence('golem', cmd = interface, log='stdout')
537 misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR)537 misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR)
538538
539 run_cmd('generate g g > t t~ [virt=QCD]')539 run_cmd('generate g g > t t~ [virt=QCD]')
540540
=== modified file 'tests/acceptance_tests/test_export_fks.py'
--- tests/acceptance_tests/test_export_fks.py 2017-05-15 10:39:31 +0000
+++ tests/acceptance_tests/test_export_fks.py 2018-11-09 08:24:41 +0000
@@ -75,7 +75,7 @@
75 # Select the Tensor Integral to include in the test75 # Select the Tensor Integral to include in the test
76 misc.deactivate_dependence('pjfry', cmd = interface, log='stdout')76 misc.deactivate_dependence('pjfry', cmd = interface, log='stdout')
77 misc.deactivate_dependence('samurai', cmd = interface, log='stdout') 77 misc.deactivate_dependence('samurai', cmd = interface, log='stdout')
78 misc.activate_dependence('golem', cmd = interface, log='stdout')78 misc.deactivate_dependence('golem', cmd = interface, log='stdout')
79 misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) 79 misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR)
80 80
81 run_cmd('import model %s' % model)81 run_cmd('import model %s' % model)
8282
=== removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f 2016-08-07 07:16:07 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f 1970-01-01 00:00:00 +0000
@@ -1,748 +0,0 @@
1 SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
2C
3C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4C By the MadGraph5_aMC@NLO Development Team
5C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
6C
7C Interface between MG5 and Golem95.
8C The Golem95 version should be higher than 1.3.0.
9C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 <
10C NLOOPLINE < 6.
11C
12C Process: d~ u > w+ QED<=1 WEIGHTED<=2 [ all = QCD ]
13C Process: s~ c > w+ QED<=1 WEIGHTED<=2 [ all = QCD ]
14C
15C
16C MODULES
17C
18 USE MATRICE_S
19 USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR
20 USE PRECISION_GOLEM, ONLY: KI
21 USE TENS_COMB
22 USE TENS_REC
23 USE FORM_FACTOR_1P, ONLY: A10
24 USE FORM_FACTOR_2P, ONLY: A20
25 USE FORM_FACTOR_3P, ONLY: A30
26 USE FORM_FACTOR_4P, ONLY: A40
27 USE FORM_FACTOR_5P, ONLY: A50
28 USE FORM_FACTOR_6P, ONLY: A60
29 IMPLICIT NONE
30C
31C CONSTANTS
32C
33 INTEGER NEXTERNAL
34 PARAMETER (NEXTERNAL=3)
35 LOGICAL CHECKPCONSERVATION
36 PARAMETER (CHECKPCONSERVATION=.TRUE.)
37 REAL*8 NORMALIZATION
38 PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0*
39 $ *2))
40 REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI
41 $ ,0.0_KI,0.0_KI/)
42C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients
43C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints
44C directly from
45C numerator using golem internal reconstruction routine
46C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients
47C against
48C MadLoop internal ones.
49 INTEGER GOLEM_RUN_MODE
50 PARAMETER (GOLEM_RUN_MODE=1)
51C The following is the acceptance threshold used for
52C GOLEM_RUN_MODE = 3
53 REAL*8 COEF_CHECK_THRS
54 DATA COEF_CHECK_THRS/1.0D-13/
55 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
56
57 LOGICAL PASS_COEF_CHECK
58C
59C ARGUMENTS
60C
61 INTEGER NLOOPLINE, RANK
62 REAL*8 PL(0:3,NLOOPLINE)
63 REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
64 REAL*8 REF_P
65 REAL(KI) PGOLEM(NLOOPLINE,0:3)
66 COMPLEX*16 M2L(NLOOPLINE)
67 COMPLEX(KI) M2LGOLEM(NLOOPLINE)
68 COMPLEX*16 RES(3)
69 LOGICAL STABLE
70C
71C LOCAL VARIABLES
72C
73 INTEGER I, J, K
74 TYPE(FORM_FACTOR)::RES_GOLEM
75
76 COMPLEX(KI)::COEFFS0,COEFFS0_REC
77 TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC
78 TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC
79 TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC
80 TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC
81 TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC
82 TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC
83
84C The pinch propagator optimization is not used, so for now it is
85C always 0.
86 INTEGER PINCH
87C
88C EXTERNAL FUNCTIONS
89C
90 COMPLEX(KI) GOLEM_LOOPNUM
91 EXTERNAL GOLEM_LOOPNUM
92 LOGICAL COMPARE_COEFS_0
93 LOGICAL COMPARE_COEFS_1
94 LOGICAL COMPARE_COEFS_2
95 LOGICAL COMPARE_COEFS_3
96 LOGICAL COMPARE_COEFS_4
97 LOGICAL COMPARE_COEFS_5
98 LOGICAL COMPARE_COEFS_6
99C
100C GLOBAL VARIABLES
101C
102 INCLUDE 'coupl.inc'
103 INTEGER CTMODE
104 REAL*8 LSCALE
105 COMMON/CT/LSCALE,CTMODE
106
107 INTEGER ID,SQSOINDEX,R
108 COMMON/LOOP/ID,SQSOINDEX,R
109
110 LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
111 $ ,COLLIERINIT
112 COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
113 $ ,NINJAINIT,COLLIERINIT
114
115 INTEGER NLOOPGROUPS
116 PARAMETER (NLOOPGROUPS=1)
117 INTEGER NSQUAREDSO
118 PARAMETER (NSQUAREDSO=1)
119 INCLUDE 'loop_max_coefs.inc'
120
121 COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
122 COMMON/LCOEFS/LOOPCOEFS
123C ----------
124C BEGIN CODE
125C ----------
126
127C The CT initialization is also performed here if not done already
128C because it calls MPINIT of OneLOop which is necessary on some
129C system
130 IF (CTINIT) THEN
131 CTINIT=.FALSE.
132 CALL INITCT()
133 ENDIF
134
135C INITIALIZE GOLEM IF NEEDED
136 IF (GOLEMINIT) THEN
137 GOLEMINIT=.FALSE.
138 CALL INITGOLEM()
139 ENDIF
140
141C No stability test intrisic to Golem95 now
142 STABLE=.TRUE.
143
144C This initialization must be done for each reduction because we
145C have not setup anyoptimization using pinched propagators yet.
146 CALL INITGOLEM95(NLOOPLINE)
147 PINCH = 0
148
149C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE
150C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION
151
152C CONVERT THE MASSES TO BE COMPLEX
153 DO I=1,NLOOPLINE
154 M2LGOLEM(I)=M2L(I)
155 ENDDO
156
157C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
158 DO I=0,3
159 ABSPCT(I) = 0.D0
160 DO J=0,(NLOOPLINE-1)
161 PCT(I,J)=0.D0
162 ENDDO
163 ENDDO
164 DO I=0,3
165 DO J=1,NLOOPLINE
166 PCT(I,0)=PCT(I,0)+PL(I,J)
167 ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
168 ENDDO
169 ENDDO
170 REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
171 DO I=0,3
172 ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
173 ENDDO
174 IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
175 IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
176 WRITE(*,*) 'energy is not conserved ',PCT(0,0)
177 STOP 'energy is not conserved'
178 ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
179 WRITE(*,*) 'px is not conserved ',PCT(1,0)
180 STOP 'px is not conserved'
181 ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
182 WRITE(*,*) 'py is not conserved ',PCT(2,0)
183 STOP 'py is not conserved'
184 ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
185 WRITE(*,*) 'pz is not conserved ',PCT(3,0)
186 STOP 'pz is not conserved'
187 ENDIF
188 ENDIF
189 DO I=0,3
190 DO J=1,(NLOOPLINE-1)
191 DO K=1,J
192 PCT(I,J)=PCT(I,J)+PL(I,K)
193 ENDDO
194 ENDDO
195 ENDDO
196
197C Now convert the loop momenta to Golem95 conventions
198 DO I=0,3
199 PGOLEM(1,I)=0.0E0_KI
200 DO J=2,NLOOPLINE
201 PGOLEM(J,I)=PCT(I,J-1)
202 ENDDO
203 ENDDO
204
205C Fill in the kinematic s-matrix while taking care of on-shell
206C limits.
207 CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM)
208C Construct the golem internal matrices derived from the kinetic
209C one.
210 CALL PREPARESMATRIX()
211
212C Fill in the golem coefficents and compute the loop
213 IF(GOLEM_RUN_MODE.EQ.2)THEN
214 RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK)
215 ELSE
216 PASS_COEF_CHECK=.TRUE.
217 SELECT CASE(RANK)
218 CASE(0)
219 CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0)
220 IF(GOLEM_RUN_MODE.EQ.3)THEN
221 COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI)
222 PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC)
223 ENDIF
224 CASE(1)
225 CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1)
226 IF(GOLEM_RUN_MODE.EQ.3)THEN
227 CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC)
228 PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC)
229 ENDIF
230 CASE(2)
231 CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2)
232 IF(GOLEM_RUN_MODE.EQ.3)THEN
233 CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC)
234 PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC)
235 ENDIF
236 CASE(3)
237 CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3)
238 IF(GOLEM_RUN_MODE.EQ.3)THEN
239 CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC)
240 PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC)
241 ENDIF
242 CASE(4)
243 CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4)
244 IF(GOLEM_RUN_MODE.EQ.3)THEN
245 CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC)
246 PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC)
247 ENDIF
248 CASE(5)
249 CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5)
250 IF(GOLEM_RUN_MODE.EQ.3)THEN
251 CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC)
252 PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC)
253 ENDIF
254 CASE(6)
255 CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6)
256 IF(GOLEM_RUN_MODE.EQ.3)THEN
257 CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC)
258 PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC)
259 ENDIF
260 CASE DEFAULT
261 WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK
262 STOP
263 END SELECT
264
265 IF(.NOT.PASS_COEF_CHECK)THEN
266 WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK
267 WRITE(*,*)'Coefs form MadLoop5:'
268 SELECT CASE(RANK)
269 CASE(0)
270 WRITE(*,*)'Constant coef = ',COEFFS0
271 CASE(1)
272 CALL PRINT_COEFFS(COEFFS1)
273 CASE(2)
274 CALL PRINT_COEFFS(COEFFS2)
275 CASE(3)
276 CALL PRINT_COEFFS(COEFFS3)
277 CASE(4)
278 CALL PRINT_COEFFS(COEFFS4)
279 CASE(5)
280 CALL PRINT_COEFFS(COEFFS5)
281 CASE(6)
282 CALL PRINT_COEFFS(COEFFS6)
283 END SELECT
284 WRITE(*,*)'Coefs reconstructed by Golem95:'
285 SELECT CASE(RANK)
286 CASE(0)
287 WRITE(*,*)'Constant coef = ',COEFFS0_REC
288 CASE(1)
289 CALL PRINT_COEFFS(COEFFS1_REC)
290 CASE(2)
291 CALL PRINT_COEFFS(COEFFS2_REC)
292 CASE(3)
293 CALL PRINT_COEFFS(COEFFS3_REC)
294 CASE(4)
295 CALL PRINT_COEFFS(COEFFS4_REC)
296 CASE(5)
297 CALL PRINT_COEFFS(COEFFS5_REC)
298 CASE(6)
299 CALL PRINT_COEFFS(COEFFS6_REC)
300 END SELECT
301 STOP
302 ENDIF
303
304 SELECT CASE(NLOOPLINE)
305 CASE(1)
306 WRITE(*,*)'Golem95 cannot handle with tadpole yet'
307 STOP
308 CASE(2)
309 SELECT CASE(RANK)
310 CASE(0)
311 RES_GOLEM = COEFFS0*A20(PINCH)
312 CASE(1)
313 RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH)
314 CASE(2)
315 RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH)
316 CASE(3)
317 RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH)
318 CASE DEFAULT
319 WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK
320 STOP
321 END SELECT
322 CASE(3)
323 SELECT CASE(RANK)
324 CASE(0)
325 RES_GOLEM = COEFFS0*A30(PINCH)
326 CASE(1)
327 RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH)
328 CASE(2)
329 RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH)
330 CASE(3)
331 RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH)
332 CASE(4)
333 RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH)
334 CASE DEFAULT
335 WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK
336 STOP
337 END SELECT
338 CASE(4)
339 SELECT CASE(RANK)
340 CASE(0)
341 RES_GOLEM = COEFFS0*A40(PINCH)
342 CASE(1)
343 RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH)
344 CASE(2)
345 RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH)
346 CASE(3)
347 RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH)
348 CASE(4)
349 RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH)
350 CASE(5)
351 RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH)
352 CASE DEFAULT
353 WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK
354 STOP
355 END SELECT
356 CASE(5)
357 SELECT CASE(RANK)
358 CASE(0)
359 RES_GOLEM = COEFFS0*A50(PINCH)
360 CASE(1)
361 RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH)
362 CASE(2)
363 RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH)
364 CASE(3)
365 RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH)
366 CASE(4)
367 RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH)
368 CASE(5)
369 RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH)
370 CASE(6)
371 RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH)
372 CASE DEFAULT
373 WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK
374 STOP
375 END SELECT
376 CASE(6)
377 SELECT CASE(RANK)
378 CASE(0)
379 RES_GOLEM = COEFFS0*A60(PINCH)
380 CASE(1)
381 RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH)
382 CASE(2)
383 RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH)
384 CASE(3)
385 RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH)
386 CASE(4)
387 RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH)
388 CASE(5)
389 RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH)
390 CASE(6)
391 RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH)
392 CASE DEFAULT
393 WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK
394 STOP
395 END SELECT
396 CASE DEFAULT
397 WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE
398 STOP
399 END SELECT
400 ENDIF
401
402 RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R)
403 $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A)
404 RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R)
405 $ *RES_GOLEM%%A)
406 RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A)
407C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
408
409C Finally free golem memory and cache
410 CALL EXITGOLEM95()
411
412 END
413
414 FUNCTION GOLEM_LOOPNUM(Q,MU2)
415 USE PRECISION_GOLEM, ONLY: KI
416 REAL(KI),DIMENSION(0:3),INTENT(IN)::Q
417 REAL(KI),INTENT(IN)::MU2
418 COMPLEX(KI)::GOLEM_LOOPNUM
419
420 COMPLEX*16 QQ(0:3),NUM
421 INTEGER I
422
423 DO I=0,3
424 QQ(I)=CMPLX(Q(I),0.0D0,KIND=16)
425 ENDDO
426
427 CALL LOOPNUM(QQ,NUM)
428 GOLEM_LOOPNUM=NUM
429 RETURN
430 END FUNCTION
431
432 SUBROUTINE INITGOLEM()
433C
434C INITIALISATION OF GOLEM
435C
436C
437C MODULE
438C
439 USE PARAMETRE
440C
441C LOCAL VARIABLES
442C
443 REAL*8 THRS
444 LOGICAL EXT_NUM_FOR_R1
445C
446C GLOBAL VARIABLES
447C
448 INCLUDE 'MadLoopParams.inc'
449C ----------
450C BEGIN CODE
451C ----------
452
453C DEFAULT PARAMETERS FOR GOLEM
454C -------------------------------
455C One can chose here to have either just the rational R1 piece
456C or everything but the R2
457 RAT_OR_TOT_PAR = TOT
458
459 END
460
461 SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L)
462C
463C MODULE
464C
465 USE MATRICE_S
466 USE PRECISION_GOLEM, ONLY: KI
467C
468C ARGUMENTS
469C
470 INTEGER NLOOPLINE
471 REAL(KI) PGOLEM(NLOOPLINE,0:3)
472 COMPLEX(KI) M2L(NLOOPLINE)
473C
474C LOCAL VARIABLES
475C
476 INTEGER I,J
477 COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
478C ----------
479C BEGIN CODE
480C ----------
481
482 CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG)
483
484 DO I=1,NLOOPLINE
485 DO J=1,NLOOPLINE
486 S_MAT(I,J)=S_MAT_FROM_MG(I,J)
487 ENDDO
488 ENDDO
489
490 END
491
492 FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B)
493
494 USE PRECISION_GOLEM, ONLY: KI
495 COMPLEX(KI) COEFS_A,COEFS_B
496 REAL*8 COEF_CHECK_THRS
497 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
498 REAL*8 DENOM,NUM
499 LOGICAL COMPARE_COEFS_0
500
501 NUM = ABS(COEFS_A-COEFS_B)
502 DENOM = ABS(COEFS_A+COEFS_B)
503 IF(DENOM.GT.0D0)THEN
504 COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS)
505 ELSE
506 COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS)
507 ENDIF
508
509 END
510
511 FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B)
512
513 USE TENS_REC
514 TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B
515 REAL*8 COEF_CHECK_THRS
516 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
517 REAL*8 DENOM,NUM
518 LOGICAL COMPARE_COEFS_1
519
520 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
521 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
522 $ )
523
524 IF(DENOM.GT.0D0)THEN
525 COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
526 ELSE
527 COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS)
528 ENDIF
529
530 END
531
532 FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B)
533
534 USE TENS_REC
535 TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B
536 REAL*8 COEF_CHECK_THRS
537 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
538 REAL*8 DENOM,NUM
539 LOGICAL COMPARE_COEFS_2
540
541 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
542 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
543 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
544 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
545 IF(DENOM.GT.0D0)THEN
546 COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
547 ELSE
548 COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS)
549 ENDIF
550
551 END
552
553 FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B)
554
555 USE TENS_REC
556 TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B
557 REAL*8 COEF_CHECK_THRS
558 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
559 REAL*8 DENOM,NUM
560 LOGICAL COMPARE_COEFS_3
561
562 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
563 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
564 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
565 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
566 $ )
567 IF(DENOM.GT.0D0)THEN
568 COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
569 ELSE
570 COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS)
571 ENDIF
572
573 END
574
575 FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B)
576
577 USE TENS_REC
578 TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B
579 REAL*8 COEF_CHECK_THRS
580 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
581 REAL*8 DENOM,NUM
582 LOGICAL COMPARE_COEFS_4
583
584 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
585 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
586 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
587 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
588 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
589 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
590 IF(DENOM.GT.0D0)THEN
591 COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
592 ELSE
593 COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS)
594 ENDIF
595
596 END
597
598 FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B)
599
600 USE TENS_REC
601 TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B
602 REAL*8 COEF_CHECK_THRS
603 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
604 REAL*8 DENOM,NUM
605 LOGICAL COMPARE_COEFS_5
606
607 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
608 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
609 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
610 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
611 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
612 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
613 IF(DENOM.GT.0D0)THEN
614 COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
615 ELSE
616 COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS)
617 ENDIF
618
619 END
620
621 FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B)
622
623 USE TENS_REC
624 TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B
625 REAL*8 COEF_CHECK_THRS
626 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
627 REAL*8 DENOM,NUM
628 LOGICAL COMPARE_COEFS_6
629
630 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
631 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
632 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
633 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
634 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
635 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
636 IF(DENOM.GT.0D0)THEN
637 COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
638 ELSE
639 COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS)
640 ENDIF
641
642 END
643
644
645 SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
646 USE PRECISION_GOLEM, ONLY: KI
647 INCLUDE 'coef_specs.inc'
648 INCLUDE 'loop_max_coefs.inc'
649 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
650 COMPLEX(KI) GOLEM_COEFS
651 GOLEM_COEFS=ML_COEFS(0)
652 END
653
654 SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
655 USE TENS_REC, ONLY: COEFF_TYPE_1
656 INCLUDE 'coef_specs.inc'
657 INCLUDE 'loop_max_coefs.inc'
658 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
659 TYPE(COEFF_TYPE_1) GOLEM_COEFS
660C Constant coefficient
661 GOLEM_COEFS%%C0=ML_COEFS(0)
662C Coefficient q(0)
663 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
664C Coefficient q(1)
665 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
666C Coefficient q(2)
667 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
668C Coefficient q(3)
669 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
670 END
671
672 SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
673 USE TENS_REC, ONLY: COEFF_TYPE_2
674 INCLUDE 'coef_specs.inc'
675 INCLUDE 'loop_max_coefs.inc'
676 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
677 TYPE(COEFF_TYPE_2) GOLEM_COEFS
678C Constant coefficient
679 GOLEM_COEFS%%C0=ML_COEFS(0)
680C Coefficient q(0)
681 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
682C Coefficient q(0)^2
683 GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
684C Coefficient q(1)
685 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
686C Coefficient q(1)^2
687 GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
688C Coefficient q(2)
689 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
690C Coefficient q(2)^2
691 GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
692C Coefficient q(3)
693 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
694C Coefficient q(3)^2
695 GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
696C Coefficient q(0)*q(1)
697 GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
698C Coefficient q(0)*q(2)
699 GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
700C Coefficient q(0)*q(3)
701 GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
702C Coefficient q(1)*q(2)
703 GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
704C Coefficient q(1)*q(3)
705 GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
706C Coefficient q(2)*q(3)
707 GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
708 END
709
710 SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
711 USE TENS_REC, ONLY: COEFF_TYPE_3
712 INCLUDE 'coef_specs.inc'
713 INCLUDE 'loop_max_coefs.inc'
714 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
715 TYPE(COEFF_TYPE_3) GOLEM_COEFS
716C Dummy routine for FILL_GOLEM_COEFS_3
717 STOP 'ERROR: 3 > 2'
718 END
719
720 SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
721 USE TENS_REC, ONLY: COEFF_TYPE_4
722 INCLUDE 'coef_specs.inc'
723 INCLUDE 'loop_max_coefs.inc'
724 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
725 TYPE(COEFF_TYPE_4) GOLEM_COEFS
726C Dummy routine for FILL_GOLEM_COEFS_4
727 STOP 'ERROR: 4 > 2'
728 END
729
730 SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
731 USE TENS_REC, ONLY: COEFF_TYPE_5
732 INCLUDE 'coef_specs.inc'
733 INCLUDE 'loop_max_coefs.inc'
734 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
735 TYPE(COEFF_TYPE_5) GOLEM_COEFS
736C Dummy routine for FILL_GOLEM_COEFS_5
737 STOP 'ERROR: 5 > 2'
738 END
739
740 SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
741 USE TENS_REC, ONLY: COEFF_TYPE_6
742 INCLUDE 'coef_specs.inc'
743 INCLUDE 'loop_max_coefs.inc'
744 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
745 TYPE(COEFF_TYPE_6) GOLEM_COEFS
746C Dummy routine for FILL_GOLEM_COEFS_6
747 STOP 'ERROR: 6 > 2'
748 END
7490
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f 2016-08-07 07:16:07 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f 2018-11-09 08:24:41 +0000
@@ -96,17 +96,9 @@
96 ENDIF96 ENDIF
9797
98 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN98 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN
99C Using Golem9599C Golem95 not available
100C PDEN is dummy for Golem95 so we just initialize it to zero100 WRITE(*,*) 'ERROR:: Golem95 is not interfaced.'
101C here so as to use it for the function SWITCHORDER101 STOP
102 DO I=0,3
103 DO J=1,NLOOPLINE-1
104 PDEN(I,J)=0.0D0
105 ENDDO
106 ENDDO
107 CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
108 CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
109 RETURN
110 ENDIF102 ENDIF
111103
112C INITIALIZE TIR IF NEEDED104C INITIALIZE TIR IF NEEDED
113105
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f 2017-08-14 07:04:15 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f 2018-11-09 08:24:41 +0000
@@ -244,7 +244,7 @@
244C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE244C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
245C AVAILABLE OR NOT245C AVAILABLE OR NOT
246 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)246 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)
247 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.247 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.
248 $ ,.TRUE.,.TRUE./248 $ ,.TRUE.,.TRUE./
249 COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE249 COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
250C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS250C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
251251
=== removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f 2016-08-07 07:16:07 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f 1970-01-01 00:00:00 +0000
@@ -1,748 +0,0 @@
1 SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
2C
3C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4C By the MadGraph5_aMC@NLO Development Team
5C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
6C
7C Interface between MG5 and Golem95.
8C The Golem95 version should be higher than 1.3.0.
9C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 <
10C NLOOPLINE < 6.
11C
12C Process: u d~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ]
13C Process: c s~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ]
14C
15C
16C MODULES
17C
18 USE MATRICE_S
19 USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR
20 USE PRECISION_GOLEM, ONLY: KI
21 USE TENS_COMB
22 USE TENS_REC
23 USE FORM_FACTOR_1P, ONLY: A10
24 USE FORM_FACTOR_2P, ONLY: A20
25 USE FORM_FACTOR_3P, ONLY: A30
26 USE FORM_FACTOR_4P, ONLY: A40
27 USE FORM_FACTOR_5P, ONLY: A50
28 USE FORM_FACTOR_6P, ONLY: A60
29 IMPLICIT NONE
30C
31C CONSTANTS
32C
33 INTEGER NEXTERNAL
34 PARAMETER (NEXTERNAL=3)
35 LOGICAL CHECKPCONSERVATION
36 PARAMETER (CHECKPCONSERVATION=.TRUE.)
37 REAL*8 NORMALIZATION
38 PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0*
39 $ *2))
40 REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI
41 $ ,0.0_KI,0.0_KI/)
42C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients
43C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints
44C directly from
45C numerator using golem internal reconstruction routine
46C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients
47C against
48C MadLoop internal ones.
49 INTEGER GOLEM_RUN_MODE
50 PARAMETER (GOLEM_RUN_MODE=1)
51C The following is the acceptance threshold used for
52C GOLEM_RUN_MODE = 3
53 REAL*8 COEF_CHECK_THRS
54 DATA COEF_CHECK_THRS/1.0D-13/
55 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
56
57 LOGICAL PASS_COEF_CHECK
58C
59C ARGUMENTS
60C
61 INTEGER NLOOPLINE, RANK
62 REAL*8 PL(0:3,NLOOPLINE)
63 REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
64 REAL*8 REF_P
65 REAL(KI) PGOLEM(NLOOPLINE,0:3)
66 COMPLEX*16 M2L(NLOOPLINE)
67 COMPLEX(KI) M2LGOLEM(NLOOPLINE)
68 COMPLEX*16 RES(3)
69 LOGICAL STABLE
70C
71C LOCAL VARIABLES
72C
73 INTEGER I, J, K
74 TYPE(FORM_FACTOR)::RES_GOLEM
75
76 COMPLEX(KI)::COEFFS0,COEFFS0_REC
77 TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC
78 TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC
79 TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC
80 TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC
81 TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC
82 TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC
83
84C The pinch propagator optimization is not used, so for now it is
85C always 0.
86 INTEGER PINCH
87C
88C EXTERNAL FUNCTIONS
89C
90 COMPLEX(KI) GOLEM_LOOPNUM
91 EXTERNAL GOLEM_LOOPNUM
92 LOGICAL COMPARE_COEFS_0
93 LOGICAL COMPARE_COEFS_1
94 LOGICAL COMPARE_COEFS_2
95 LOGICAL COMPARE_COEFS_3
96 LOGICAL COMPARE_COEFS_4
97 LOGICAL COMPARE_COEFS_5
98 LOGICAL COMPARE_COEFS_6
99C
100C GLOBAL VARIABLES
101C
102 INCLUDE 'coupl.inc'
103 INTEGER CTMODE
104 REAL*8 LSCALE
105 COMMON/CT/LSCALE,CTMODE
106
107 INTEGER ID,SQSOINDEX,R
108 COMMON/LOOP/ID,SQSOINDEX,R
109
110 LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
111 $ ,COLLIERINIT
112 COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
113 $ ,NINJAINIT,COLLIERINIT
114
115 INTEGER NLOOPGROUPS
116 PARAMETER (NLOOPGROUPS=1)
117 INTEGER NSQUAREDSO
118 PARAMETER (NSQUAREDSO=1)
119 INCLUDE 'loop_max_coefs.inc'
120
121 COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
122 COMMON/LCOEFS/LOOPCOEFS
123C ----------
124C BEGIN CODE
125C ----------
126
127C The CT initialization is also performed here if not done already
128C because it calls MPINIT of OneLOop which is necessary on some
129C system
130 IF (CTINIT) THEN
131 CTINIT=.FALSE.
132 CALL INITCT()
133 ENDIF
134
135C INITIALIZE GOLEM IF NEEDED
136 IF (GOLEMINIT) THEN
137 GOLEMINIT=.FALSE.
138 CALL INITGOLEM()
139 ENDIF
140
141C No stability test intrisic to Golem95 now
142 STABLE=.TRUE.
143
144C This initialization must be done for each reduction because we
145C have not setup anyoptimization using pinched propagators yet.
146 CALL INITGOLEM95(NLOOPLINE)
147 PINCH = 0
148
149C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE
150C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION
151
152C CONVERT THE MASSES TO BE COMPLEX
153 DO I=1,NLOOPLINE
154 M2LGOLEM(I)=M2L(I)
155 ENDDO
156
157C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
158 DO I=0,3
159 ABSPCT(I) = 0.D0
160 DO J=0,(NLOOPLINE-1)
161 PCT(I,J)=0.D0
162 ENDDO
163 ENDDO
164 DO I=0,3
165 DO J=1,NLOOPLINE
166 PCT(I,0)=PCT(I,0)+PL(I,J)
167 ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
168 ENDDO
169 ENDDO
170 REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
171 DO I=0,3
172 ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
173 ENDDO
174 IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
175 IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
176 WRITE(*,*) 'energy is not conserved ',PCT(0,0)
177 STOP 'energy is not conserved'
178 ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
179 WRITE(*,*) 'px is not conserved ',PCT(1,0)
180 STOP 'px is not conserved'
181 ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
182 WRITE(*,*) 'py is not conserved ',PCT(2,0)
183 STOP 'py is not conserved'
184 ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
185 WRITE(*,*) 'pz is not conserved ',PCT(3,0)
186 STOP 'pz is not conserved'
187 ENDIF
188 ENDIF
189 DO I=0,3
190 DO J=1,(NLOOPLINE-1)
191 DO K=1,J
192 PCT(I,J)=PCT(I,J)+PL(I,K)
193 ENDDO
194 ENDDO
195 ENDDO
196
197C Now convert the loop momenta to Golem95 conventions
198 DO I=0,3
199 PGOLEM(1,I)=0.0E0_KI
200 DO J=2,NLOOPLINE
201 PGOLEM(J,I)=PCT(I,J-1)
202 ENDDO
203 ENDDO
204
205C Fill in the kinematic s-matrix while taking care of on-shell
206C limits.
207 CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM)
208C Construct the golem internal matrices derived from the kinetic
209C one.
210 CALL PREPARESMATRIX()
211
212C Fill in the golem coefficents and compute the loop
213 IF(GOLEM_RUN_MODE.EQ.2)THEN
214 RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK)
215 ELSE
216 PASS_COEF_CHECK=.TRUE.
217 SELECT CASE(RANK)
218 CASE(0)
219 CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0)
220 IF(GOLEM_RUN_MODE.EQ.3)THEN
221 COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI)
222 PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC)
223 ENDIF
224 CASE(1)
225 CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1)
226 IF(GOLEM_RUN_MODE.EQ.3)THEN
227 CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC)
228 PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC)
229 ENDIF
230 CASE(2)
231 CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2)
232 IF(GOLEM_RUN_MODE.EQ.3)THEN
233 CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC)
234 PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC)
235 ENDIF
236 CASE(3)
237 CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3)
238 IF(GOLEM_RUN_MODE.EQ.3)THEN
239 CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC)
240 PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC)
241 ENDIF
242 CASE(4)
243 CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4)
244 IF(GOLEM_RUN_MODE.EQ.3)THEN
245 CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC)
246 PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC)
247 ENDIF
248 CASE(5)
249 CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5)
250 IF(GOLEM_RUN_MODE.EQ.3)THEN
251 CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC)
252 PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC)
253 ENDIF
254 CASE(6)
255 CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6)
256 IF(GOLEM_RUN_MODE.EQ.3)THEN
257 CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC)
258 PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC)
259 ENDIF
260 CASE DEFAULT
261 WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK
262 STOP
263 END SELECT
264
265 IF(.NOT.PASS_COEF_CHECK)THEN
266 WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK
267 WRITE(*,*)'Coefs form MadLoop5:'
268 SELECT CASE(RANK)
269 CASE(0)
270 WRITE(*,*)'Constant coef = ',COEFFS0
271 CASE(1)
272 CALL PRINT_COEFFS(COEFFS1)
273 CASE(2)
274 CALL PRINT_COEFFS(COEFFS2)
275 CASE(3)
276 CALL PRINT_COEFFS(COEFFS3)
277 CASE(4)
278 CALL PRINT_COEFFS(COEFFS4)
279 CASE(5)
280 CALL PRINT_COEFFS(COEFFS5)
281 CASE(6)
282 CALL PRINT_COEFFS(COEFFS6)
283 END SELECT
284 WRITE(*,*)'Coefs reconstructed by Golem95:'
285 SELECT CASE(RANK)
286 CASE(0)
287 WRITE(*,*)'Constant coef = ',COEFFS0_REC
288 CASE(1)
289 CALL PRINT_COEFFS(COEFFS1_REC)
290 CASE(2)
291 CALL PRINT_COEFFS(COEFFS2_REC)
292 CASE(3)
293 CALL PRINT_COEFFS(COEFFS3_REC)
294 CASE(4)
295 CALL PRINT_COEFFS(COEFFS4_REC)
296 CASE(5)
297 CALL PRINT_COEFFS(COEFFS5_REC)
298 CASE(6)
299 CALL PRINT_COEFFS(COEFFS6_REC)
300 END SELECT
301 STOP
302 ENDIF
303
304 SELECT CASE(NLOOPLINE)
305 CASE(1)
306 WRITE(*,*)'Golem95 cannot handle with tadpole yet'
307 STOP
308 CASE(2)
309 SELECT CASE(RANK)
310 CASE(0)
311 RES_GOLEM = COEFFS0*A20(PINCH)
312 CASE(1)
313 RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH)
314 CASE(2)
315 RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH)
316 CASE(3)
317 RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH)
318 CASE DEFAULT
319 WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK
320 STOP
321 END SELECT
322 CASE(3)
323 SELECT CASE(RANK)
324 CASE(0)
325 RES_GOLEM = COEFFS0*A30(PINCH)
326 CASE(1)
327 RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH)
328 CASE(2)
329 RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH)
330 CASE(3)
331 RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH)
332 CASE(4)
333 RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH)
334 CASE DEFAULT
335 WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK
336 STOP
337 END SELECT
338 CASE(4)
339 SELECT CASE(RANK)
340 CASE(0)
341 RES_GOLEM = COEFFS0*A40(PINCH)
342 CASE(1)
343 RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH)
344 CASE(2)
345 RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH)
346 CASE(3)
347 RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH)
348 CASE(4)
349 RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH)
350 CASE(5)
351 RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH)
352 CASE DEFAULT
353 WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK
354 STOP
355 END SELECT
356 CASE(5)
357 SELECT CASE(RANK)
358 CASE(0)
359 RES_GOLEM = COEFFS0*A50(PINCH)
360 CASE(1)
361 RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH)
362 CASE(2)
363 RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH)
364 CASE(3)
365 RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH)
366 CASE(4)
367 RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH)
368 CASE(5)
369 RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH)
370 CASE(6)
371 RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH)
372 CASE DEFAULT
373 WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK
374 STOP
375 END SELECT
376 CASE(6)
377 SELECT CASE(RANK)
378 CASE(0)
379 RES_GOLEM = COEFFS0*A60(PINCH)
380 CASE(1)
381 RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH)
382 CASE(2)
383 RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH)
384 CASE(3)
385 RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH)
386 CASE(4)
387 RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH)
388 CASE(5)
389 RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH)
390 CASE(6)
391 RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH)
392 CASE DEFAULT
393 WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK
394 STOP
395 END SELECT
396 CASE DEFAULT
397 WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE
398 STOP
399 END SELECT
400 ENDIF
401
402 RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R)
403 $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A)
404 RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R)
405 $ *RES_GOLEM%%A)
406 RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A)
407C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
408
409C Finally free golem memory and cache
410 CALL EXITGOLEM95()
411
412 END
413
414 FUNCTION GOLEM_LOOPNUM(Q,MU2)
415 USE PRECISION_GOLEM, ONLY: KI
416 REAL(KI),DIMENSION(0:3),INTENT(IN)::Q
417 REAL(KI),INTENT(IN)::MU2
418 COMPLEX(KI)::GOLEM_LOOPNUM
419
420 COMPLEX*16 QQ(0:3),NUM
421 INTEGER I
422
423 DO I=0,3
424 QQ(I)=CMPLX(Q(I),0.0D0,KIND=16)
425 ENDDO
426
427 CALL LOOPNUM(QQ,NUM)
428 GOLEM_LOOPNUM=NUM
429 RETURN
430 END FUNCTION
431
432 SUBROUTINE INITGOLEM()
433C
434C INITIALISATION OF GOLEM
435C
436C
437C MODULE
438C
439 USE PARAMETRE
440C
441C LOCAL VARIABLES
442C
443 REAL*8 THRS
444 LOGICAL EXT_NUM_FOR_R1
445C
446C GLOBAL VARIABLES
447C
448 INCLUDE 'MadLoopParams.inc'
449C ----------
450C BEGIN CODE
451C ----------
452
453C DEFAULT PARAMETERS FOR GOLEM
454C -------------------------------
455C One can chose here to have either just the rational R1 piece
456C or everything but the R2
457 RAT_OR_TOT_PAR = TOT
458
459 END
460
461 SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L)
462C
463C MODULE
464C
465 USE MATRICE_S
466 USE PRECISION_GOLEM, ONLY: KI
467C
468C ARGUMENTS
469C
470 INTEGER NLOOPLINE
471 REAL(KI) PGOLEM(NLOOPLINE,0:3)
472 COMPLEX(KI) M2L(NLOOPLINE)
473C
474C LOCAL VARIABLES
475C
476 INTEGER I,J
477 COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
478C ----------
479C BEGIN CODE
480C ----------
481
482 CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG)
483
484 DO I=1,NLOOPLINE
485 DO J=1,NLOOPLINE
486 S_MAT(I,J)=S_MAT_FROM_MG(I,J)
487 ENDDO
488 ENDDO
489
490 END
491
492 FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B)
493
494 USE PRECISION_GOLEM, ONLY: KI
495 COMPLEX(KI) COEFS_A,COEFS_B
496 REAL*8 COEF_CHECK_THRS
497 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
498 REAL*8 DENOM,NUM
499 LOGICAL COMPARE_COEFS_0
500
501 NUM = ABS(COEFS_A-COEFS_B)
502 DENOM = ABS(COEFS_A+COEFS_B)
503 IF(DENOM.GT.0D0)THEN
504 COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS)
505 ELSE
506 COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS)
507 ENDIF
508
509 END
510
511 FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B)
512
513 USE TENS_REC
514 TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B
515 REAL*8 COEF_CHECK_THRS
516 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
517 REAL*8 DENOM,NUM
518 LOGICAL COMPARE_COEFS_1
519
520 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
521 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
522 $ )
523
524 IF(DENOM.GT.0D0)THEN
525 COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
526 ELSE
527 COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS)
528 ENDIF
529
530 END
531
532 FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B)
533
534 USE TENS_REC
535 TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B
536 REAL*8 COEF_CHECK_THRS
537 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
538 REAL*8 DENOM,NUM
539 LOGICAL COMPARE_COEFS_2
540
541 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
542 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
543 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
544 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
545 IF(DENOM.GT.0D0)THEN
546 COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
547 ELSE
548 COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS)
549 ENDIF
550
551 END
552
553 FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B)
554
555 USE TENS_REC
556 TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B
557 REAL*8 COEF_CHECK_THRS
558 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
559 REAL*8 DENOM,NUM
560 LOGICAL COMPARE_COEFS_3
561
562 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
563 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
564 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
565 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
566 $ )
567 IF(DENOM.GT.0D0)THEN
568 COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
569 ELSE
570 COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS)
571 ENDIF
572
573 END
574
575 FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B)
576
577 USE TENS_REC
578 TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B
579 REAL*8 COEF_CHECK_THRS
580 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
581 REAL*8 DENOM,NUM
582 LOGICAL COMPARE_COEFS_4
583
584 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
585 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
586 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
587 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
588 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
589 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
590 IF(DENOM.GT.0D0)THEN
591 COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
592 ELSE
593 COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS)
594 ENDIF
595
596 END
597
598 FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B)
599
600 USE TENS_REC
601 TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B
602 REAL*8 COEF_CHECK_THRS
603 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
604 REAL*8 DENOM,NUM
605 LOGICAL COMPARE_COEFS_5
606
607 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
608 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
609 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
610 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
611 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
612 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
613 IF(DENOM.GT.0D0)THEN
614 COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
615 ELSE
616 COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS)
617 ENDIF
618
619 END
620
621 FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B)
622
623 USE TENS_REC
624 TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B
625 REAL*8 COEF_CHECK_THRS
626 COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS
627 REAL*8 DENOM,NUM
628 LOGICAL COMPARE_COEFS_6
629
630 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
631 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
632 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
633 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
634 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
635 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
636 IF(DENOM.GT.0D0)THEN
637 COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
638 ELSE
639 COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS)
640 ENDIF
641
642 END
643
644
645 SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
646 USE PRECISION_GOLEM, ONLY: KI
647 INCLUDE 'coef_specs.inc'
648 INCLUDE 'loop_max_coefs.inc'
649 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
650 COMPLEX(KI) GOLEM_COEFS
651 GOLEM_COEFS=ML_COEFS(0)
652 END
653
654 SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
655 USE TENS_REC, ONLY: COEFF_TYPE_1
656 INCLUDE 'coef_specs.inc'
657 INCLUDE 'loop_max_coefs.inc'
658 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
659 TYPE(COEFF_TYPE_1) GOLEM_COEFS
660C Constant coefficient
661 GOLEM_COEFS%%C0=ML_COEFS(0)
662C Coefficient q(0)
663 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
664C Coefficient q(1)
665 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
666C Coefficient q(2)
667 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
668C Coefficient q(3)
669 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
670 END
671
672 SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
673 USE TENS_REC, ONLY: COEFF_TYPE_2
674 INCLUDE 'coef_specs.inc'
675 INCLUDE 'loop_max_coefs.inc'
676 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
677 TYPE(COEFF_TYPE_2) GOLEM_COEFS
678C Constant coefficient
679 GOLEM_COEFS%%C0=ML_COEFS(0)
680C Coefficient q(0)
681 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
682C Coefficient q(0)^2
683 GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
684C Coefficient q(1)
685 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
686C Coefficient q(1)^2
687 GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
688C Coefficient q(2)
689 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
690C Coefficient q(2)^2
691 GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
692C Coefficient q(3)
693 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
694C Coefficient q(3)^2
695 GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
696C Coefficient q(0)*q(1)
697 GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
698C Coefficient q(0)*q(2)
699 GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
700C Coefficient q(0)*q(3)
701 GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
702C Coefficient q(1)*q(2)
703 GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
704C Coefficient q(1)*q(3)
705 GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
706C Coefficient q(2)*q(3)
707 GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
708 END
709
710 SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
711 USE TENS_REC, ONLY: COEFF_TYPE_3
712 INCLUDE 'coef_specs.inc'
713 INCLUDE 'loop_max_coefs.inc'
714 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
715 TYPE(COEFF_TYPE_3) GOLEM_COEFS
716C Dummy routine for FILL_GOLEM_COEFS_3
717 STOP 'ERROR: 3 > 2'
718 END
719
720 SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
721 USE TENS_REC, ONLY: COEFF_TYPE_4
722 INCLUDE 'coef_specs.inc'
723 INCLUDE 'loop_max_coefs.inc'
724 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
725 TYPE(COEFF_TYPE_4) GOLEM_COEFS
726C Dummy routine for FILL_GOLEM_COEFS_4
727 STOP 'ERROR: 4 > 2'
728 END
729
730 SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
731 USE TENS_REC, ONLY: COEFF_TYPE_5
732 INCLUDE 'coef_specs.inc'
733 INCLUDE 'loop_max_coefs.inc'
734 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
735 TYPE(COEFF_TYPE_5) GOLEM_COEFS
736C Dummy routine for FILL_GOLEM_COEFS_5
737 STOP 'ERROR: 5 > 2'
738 END
739
740 SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
741 USE TENS_REC, ONLY: COEFF_TYPE_6
742 INCLUDE 'coef_specs.inc'
743 INCLUDE 'loop_max_coefs.inc'
744 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
745 TYPE(COEFF_TYPE_6) GOLEM_COEFS
746C Dummy routine for FILL_GOLEM_COEFS_6
747 STOP 'ERROR: 6 > 2'
748 END
7490
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f 2016-08-07 07:16:07 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f 2018-11-09 08:24:41 +0000
@@ -96,17 +96,9 @@
96 ENDIF96 ENDIF
9797
98 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN98 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN
99C Using Golem9599C Golem95 not available
100C PDEN is dummy for Golem95 so we just initialize it to zero100 WRITE(*,*) 'ERROR:: Golem95 is not interfaced.'
101C here so as to use it for the function SWITCHORDER101 STOP
102 DO I=0,3
103 DO J=1,NLOOPLINE-1
104 PDEN(I,J)=0.0D0
105 ENDDO
106 ENDDO
107 CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
108 CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
109 RETURN
110 ENDIF102 ENDIF
111103
112C INITIALIZE TIR IF NEEDED104C INITIALIZE TIR IF NEEDED
113105
=== modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f'
--- tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f 2017-08-14 07:04:15 +0000
+++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f 2018-11-09 08:24:41 +0000
@@ -244,7 +244,7 @@
244C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE244C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
245C AVAILABLE OR NOT245C AVAILABLE OR NOT
246 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)246 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)
247 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.247 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.
248 $ ,.TRUE.,.TRUE./248 $ ,.TRUE.,.TRUE./
249 COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE249 COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
250C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS250C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
251251
=== 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 2017-11-24 12:17:04 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2018-11-09 08:24:41 +0000
@@ -73,6 +73,9 @@
73 REAL*8 POL(2)73 REAL*8 POL(2)
74 COMMON/TO_POLARIZATION/ POL74 COMMON/TO_POLARIZATION/ POL
7575
76 DOUBLE PRECISION SMALL_WIDTH_TREATMENT
77 COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT
78
76 INTEGER ISUM_HEL79 INTEGER ISUM_HEL
77 LOGICAL MULTI_CHANNEL80 LOGICAL MULTI_CHANNEL
78 COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL81 COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL
@@ -110,6 +113,7 @@
110C ----------113C ----------
111C BEGIN CODE114C BEGIN CODE
112C ----------115C ----------
116
113 NTRY(IMIRROR)=NTRY(IMIRROR)+1117 NTRY(IMIRROR)=NTRY(IMIRROR)+1
114 THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1118 THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1
115 DO I=1,NEXTERNAL119 DO I=1,NEXTERNAL
@@ -290,6 +294,15 @@
290C Needed for v4 models294C Needed for v4 models
291 COMPLEX*16 DUM0,DUM1295 COMPLEX*16 DUM0,DUM1
292 DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/296 DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/
297
298 DOUBLE PRECISION FK_ZERO
299 DOUBLE PRECISION FK_WZ
300 SAVE FK_ZERO
301 SAVE FK_WZ
302
303 LOGICAL FIRST
304 DATA FIRST /.TRUE./
305 SAVE FIRST
293C 306C
294C FUNCTION307C FUNCTION
295C 308C
@@ -300,6 +313,9 @@
300 DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW)313 DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW)
301 COMMON/TO_AMPS/ AMP2, JAMP2314 COMMON/TO_AMPS/ AMP2, JAMP2
302 INCLUDE 'coupl.inc'315 INCLUDE 'coupl.inc'
316
317 DOUBLE PRECISION SMALL_WIDTH_TREATMENT
318 COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT
303C 319C
304C COLOR DATA320C COLOR DATA
305C 321C
@@ -312,26 +328,33 @@
312C ----------328C ----------
313C BEGIN CODE329C BEGIN CODE
314C ----------330C ----------
331 IF (FIRST) THEN
332 FIRST=.FALSE.
333 FK_WZ = SIGN(MAX(ABS(WZ), ABS(MZ*SMALL_WIDTH_TREATMENT)), WZ)
334 FK_ZERO = 0D0
335 ENDIF
336
337
315 CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))338 CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))
316 CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))339 CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))
317 CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))340 CALL OXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))
318 CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4))341 CALL IXXXXX(P(0,4),ZERO,NHEL(4),-1*IC(4),W(1,4))
319 CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO,ZERO,W(1,5))342 CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO, FK_ZERO,W(1,5))
320C Amplitude(s) for diagram number 1343C Amplitude(s) for diagram number 1
321 CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQQ,AMP(1))344 CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQQ,AMP(1))
322 CALL FFV1_3(W(1,1),W(1,2),GQED,ZERO,ZERO,W(1,5))345 CALL FFV1_3(W(1,1),W(1,2),GQED,ZERO, FK_ZERO,W(1,5))
323C Amplitude(s) for diagram number 2346C Amplitude(s) for diagram number 2
324 CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQED,AMP(2))347 CALL FFV1_0(W(1,4),W(1,3),W(1,5),GQED,AMP(2))
325 CALL FFV1_2_3(W(1,1),W(1,2),GUZ1,GUZ2,MZ,WZ,W(1,5))348 CALL FFV1_2_3(W(1,1),W(1,2),GUZ1,GUZ2,MZ, FK_WZ,W(1,5))
326C Amplitude(s) for diagram number 3349C Amplitude(s) for diagram number 3
327 CALL FFV1_2_0(W(1,4),W(1,3),W(1,5),GUZ1,GUZ2,AMP(3))350 CALL FFV1_2_0(W(1,4),W(1,3),W(1,5),GUZ1,GUZ2,AMP(3))
328 CALL FFV1_3(W(1,1),W(1,3),GQQ,ZERO,ZERO,W(1,5))351 CALL FFV1_3(W(1,1),W(1,3),GQQ,ZERO, FK_ZERO,W(1,5))
329C Amplitude(s) for diagram number 4352C Amplitude(s) for diagram number 4
330 CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQQ,AMP(4))353 CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQQ,AMP(4))
331 CALL FFV1_3(W(1,1),W(1,3),GQED,ZERO,ZERO,W(1,5))354 CALL FFV1_3(W(1,1),W(1,3),GQED,ZERO, FK_ZERO,W(1,5))
332C Amplitude(s) for diagram number 5355C Amplitude(s) for diagram number 5
333 CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQED,AMP(5))356 CALL FFV1_0(W(1,4),W(1,2),W(1,5),GQED,AMP(5))
334 CALL FFV1_2_3(W(1,1),W(1,3),GUZ1,GUZ2,MZ,WZ,W(1,5))357 CALL FFV1_2_3(W(1,1),W(1,3),GUZ1,GUZ2,MZ, FK_WZ,W(1,5))
335C Amplitude(s) for diagram number 6358C Amplitude(s) for diagram number 6
336 CALL FFV1_2_0(W(1,4),W(1,2),W(1,5),GUZ1,GUZ2,AMP(6))359 CALL FFV1_2_0(W(1,4),W(1,2),W(1,5),GUZ1,GUZ2,AMP(6))
337C JAMPs contributing to orders ALL_ORDERS=1360C JAMPs contributing to orders ALL_ORDERS=1
338361
=== 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 2017-11-26 00:21:49 +0000
+++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2018-11-09 08:24:41 +0000
@@ -51,6 +51,7 @@
51 INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ51 INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ
52 REAL XRAN152 REAL XRAN1
53 EXTERNAL XRAN153 EXTERNAL XRAN1
54
54C 55C
55C GLOBAL VARIABLES56C GLOBAL VARIABLES
56C 57C
@@ -71,6 +72,7 @@
71 DATA IDUM /-1/72 DATA IDUM /-1/
72 DATA XTRY, XREJ, NGOOD /0,0,0/73 DATA XTRY, XREJ, NGOOD /0,0,0/
73 SAVE YFRAC, IGOOD, JHEL74 SAVE YFRAC, IGOOD, JHEL
75
74 DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/76 DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/
75 DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/77 DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/
76 DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/78 DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/
@@ -261,6 +263,13 @@
261C Needed for v4 models263C Needed for v4 models
262 COMPLEX*16 DUM0,DUM1264 COMPLEX*16 DUM0,DUM1
263 DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/265 DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/
266
267 DOUBLE PRECISION FK_ZERO
268 SAVE FK_ZERO
269
270 LOGICAL FIRST
271 DATA FIRST /.TRUE./
272 SAVE FIRST
264C 273C
265C FUNCTION274C FUNCTION
266C 275C
@@ -271,6 +280,9 @@
271 DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW)280 DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW)
272 COMMON/TO_AMPS/ AMP2, JAMP2281 COMMON/TO_AMPS/ AMP2, JAMP2
273 INCLUDE 'coupl.inc'282 INCLUDE 'coupl.inc'
283
284 DOUBLE PRECISION SMALL_WIDTH_TREATMENT
285 COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT
274C 286C
275C COLOR DATA287C COLOR DATA
276C 288C
@@ -283,17 +295,22 @@
283C ----------295C ----------
284C BEGIN CODE296C BEGIN CODE
285C ----------297C ----------
298 IF (FIRST) THEN
299 FIRST=.FALSE.
300 FK_ZERO = 0D0
301 ENDIF
302
286 CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))303 CALL IXXXXX(P(0,1),ZERO,NHEL(1),+1*IC(1),W(1,1))
287 CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))304 CALL OXXXXX(P(0,2),ZERO,NHEL(2),-1*IC(2),W(1,2))
288 CALL VXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))305 CALL VXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))
289 CALL VXXXXX(P(0,4),ZERO,NHEL(4),+1*IC(4),W(1,4))306 CALL VXXXXX(P(0,4),ZERO,NHEL(4),+1*IC(4),W(1,4))
290 CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO,ZERO,W(1,5))307 CALL FFV1_3(W(1,1),W(1,2),GQQ,ZERO, FK_ZERO,W(1,5))
291C Amplitude(s) for diagram number 1308C Amplitude(s) for diagram number 1
292 CALL VVV1_0(W(1,3),W(1,4),W(1,5),G,AMP(1))309 CALL VVV1_0(W(1,3),W(1,4),W(1,5),G,AMP(1))
293 CALL FFV1_2(W(1,1),W(1,3),GQQ,ZERO,ZERO,W(1,5))310 CALL FFV1_2(W(1,1),W(1,3),GQQ,ZERO, FK_ZERO,W(1,5))
294C Amplitude(s) for diagram number 2311C Amplitude(s) for diagram number 2
295 CALL FFV1_0(W(1,5),W(1,2),W(1,4),GQQ,AMP(2))312 CALL FFV1_0(W(1,5),W(1,2),W(1,4),GQQ,AMP(2))
296 CALL FFV1_2(W(1,1),W(1,4),GQQ,ZERO,ZERO,W(1,5))313 CALL FFV1_2(W(1,1),W(1,4),GQQ,ZERO, FK_ZERO,W(1,5))
297C Amplitude(s) for diagram number 3314C Amplitude(s) for diagram number 3
298 CALL FFV1_0(W(1,5),W(1,2),W(1,3),GQQ,AMP(3))315 CALL FFV1_0(W(1,5),W(1,2),W(1,3),GQQ,AMP(3))
299C JAMPs contributing to orders ALL_ORDERS=1316C JAMPs contributing to orders ALL_ORDERS=1
300317
=== removed file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f'
--- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f 2016-05-26 03:24:09 +0000
+++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f 1970-01-01 00:00:00 +0000
@@ -1,823 +0,0 @@
1 SUBROUTINE ML5_0_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
2C
3C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4C By the MadGraph5_aMC@NLO Development Team
5C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
6C
7C Interface between MG5 and Golem95.
8C The Golem95 version should be higher than 1.3.0.
9C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 <
10C NLOOPLINE < 6.
11C
12C Process: g g > t t~ [ virt = QCD ]
13C
14C
15C MODULES
16C
17 USE MATRICE_S
18 USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR
19 USE PRECISION_GOLEM, ONLY: KI
20 USE TENS_COMB
21 USE TENS_REC
22 USE FORM_FACTOR_1P, ONLY: A10
23 USE FORM_FACTOR_2P, ONLY: A20
24 USE FORM_FACTOR_3P, ONLY: A30
25 USE FORM_FACTOR_4P, ONLY: A40
26 USE FORM_FACTOR_5P, ONLY: A50
27 USE FORM_FACTOR_6P, ONLY: A60
28 IMPLICIT NONE
29C
30C CONSTANTS
31C
32 INTEGER NEXTERNAL
33 PARAMETER (NEXTERNAL=4)
34 LOGICAL CHECKPCONSERVATION
35 PARAMETER (CHECKPCONSERVATION=.TRUE.)
36 REAL*8 NORMALIZATION
37 PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0*
38 $ *2))
39 REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI
40 $ ,0.0_KI,0.0_KI/)
41C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients
42C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints
43C directly from
44C numerator using golem internal reconstruction routine
45C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients
46C against
47C MadLoop internal ones.
48 INTEGER GOLEM_RUN_MODE
49 PARAMETER (GOLEM_RUN_MODE=1)
50C The following is the acceptance threshold used for
51C GOLEM_RUN_MODE = 3
52 REAL*8 COEF_CHECK_THRS
53 DATA COEF_CHECK_THRS/1.0D-13/
54 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
55
56 LOGICAL PASS_COEF_CHECK
57C
58C ARGUMENTS
59C
60 INTEGER NLOOPLINE, RANK
61 REAL*8 PL(0:3,NLOOPLINE)
62 REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
63 REAL*8 REF_P
64 REAL(KI) PGOLEM(NLOOPLINE,0:3)
65 COMPLEX*16 M2L(NLOOPLINE)
66 COMPLEX(KI) M2LGOLEM(NLOOPLINE)
67 COMPLEX*16 RES(3)
68 LOGICAL STABLE
69C
70C LOCAL VARIABLES
71C
72 INTEGER I, J, K
73 TYPE(FORM_FACTOR)::RES_GOLEM
74
75 COMPLEX(KI)::COEFFS0,COEFFS0_REC
76 TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC
77 TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC
78 TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC
79 TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC
80 TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC
81 TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC
82
83C The pinch propagator optimization is not used, so for now it is
84C always 0.
85 INTEGER PINCH
86C
87C EXTERNAL FUNCTIONS
88C
89 COMPLEX(KI) ML5_0_GOLEM_LOOPNUM
90 EXTERNAL ML5_0_GOLEM_LOOPNUM
91 LOGICAL ML5_0_COMPARE_COEFS_0
92 LOGICAL ML5_0_COMPARE_COEFS_1
93 LOGICAL ML5_0_COMPARE_COEFS_2
94 LOGICAL ML5_0_COMPARE_COEFS_3
95 LOGICAL ML5_0_COMPARE_COEFS_4
96 LOGICAL ML5_0_COMPARE_COEFS_5
97 LOGICAL ML5_0_COMPARE_COEFS_6
98C
99C GLOBAL VARIABLES
100C
101 INCLUDE 'coupl.inc'
102 INTEGER CTMODE
103 REAL*8 LSCALE
104 COMMON/ML5_0_CT/LSCALE,CTMODE
105
106 INTEGER ID,SQSOINDEX,R
107 COMMON/ML5_0_LOOP/ID,SQSOINDEX,R
108
109 LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
110 $ ,COLLIERINIT
111 COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
112 $ ,NINJAINIT,COLLIERINIT
113
114 INTEGER NLOOPGROUPS
115 PARAMETER (NLOOPGROUPS=26)
116 INTEGER NSQUAREDSO
117 PARAMETER (NSQUAREDSO=1)
118 INCLUDE 'loop_max_coefs.inc'
119
120 COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
121 COMMON/ML5_0_LCOEFS/LOOPCOEFS
122C ----------
123C BEGIN CODE
124C ----------
125
126C The CT initialization is also performed here if not done already
127C because it calls MPINIT of OneLOop which is necessary on some
128C system
129 IF (CTINIT) THEN
130 CTINIT=.FALSE.
131 CALL ML5_0_INITCT()
132 ENDIF
133
134C INITIALIZE GOLEM IF NEEDED
135 IF (GOLEMINIT) THEN
136 GOLEMINIT=.FALSE.
137 CALL ML5_0_INITGOLEM()
138 ENDIF
139
140C No stability test intrisic to Golem95 now
141 STABLE=.TRUE.
142
143C This initialization must be done for each reduction because we
144C have not setup anyoptimization using pinched propagators yet.
145 CALL INITGOLEM95(NLOOPLINE)
146 PINCH = 0
147
148C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE
149C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION
150
151C CONVERT THE MASSES TO BE COMPLEX
152 DO I=1,NLOOPLINE
153 M2LGOLEM(I)=M2L(I)
154 ENDDO
155
156C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
157 DO I=0,3
158 ABSPCT(I) = 0.D0
159 DO J=0,(NLOOPLINE-1)
160 PCT(I,J)=0.D0
161 ENDDO
162 ENDDO
163 DO I=0,3
164 DO J=1,NLOOPLINE
165 PCT(I,0)=PCT(I,0)+PL(I,J)
166 ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
167 ENDDO
168 ENDDO
169 REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
170 DO I=0,3
171 ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
172 ENDDO
173 IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
174 IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
175 WRITE(*,*) 'energy is not conserved ',PCT(0,0)
176 STOP 'energy is not conserved'
177 ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
178 WRITE(*,*) 'px is not conserved ',PCT(1,0)
179 STOP 'px is not conserved'
180 ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
181 WRITE(*,*) 'py is not conserved ',PCT(2,0)
182 STOP 'py is not conserved'
183 ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
184 WRITE(*,*) 'pz is not conserved ',PCT(3,0)
185 STOP 'pz is not conserved'
186 ENDIF
187 ENDIF
188 DO I=0,3
189 DO J=1,(NLOOPLINE-1)
190 DO K=1,J
191 PCT(I,J)=PCT(I,J)+PL(I,K)
192 ENDDO
193 ENDDO
194 ENDDO
195
196C Now convert the loop momenta to Golem95 conventions
197 DO I=0,3
198 PGOLEM(1,I)=0.0E0_KI
199 DO J=2,NLOOPLINE
200 PGOLEM(J,I)=PCT(I,J-1)
201 ENDDO
202 ENDDO
203
204C Fill in the kinematic s-matrix while taking care of on-shell
205C limits.
206 CALL ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM)
207C Construct the golem internal matrices derived from the kinetic
208C one.
209 CALL PREPARESMATRIX()
210
211C Fill in the golem coefficents and compute the loop
212 IF(GOLEM_RUN_MODE.EQ.2)THEN
213 RES_GOLEM = EVALUATE_B(ML5_0_GOLEM_LOOPNUM,PGOLEM,0,RANK)
214 ELSE
215 PASS_COEF_CHECK=.TRUE.
216 SELECT CASE(RANK)
217 CASE(0)
218 CALL ML5_0_FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID)
219 $ ,COEFFS0)
220 IF(GOLEM_RUN_MODE.EQ.3)THEN
221 COEFFS0_REC = ML5_0_GOLEM_LOOPNUM(NULL_VEC,0.0_KI)
222 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_0(COEFFS0,COEFFS0_REC)
223 ENDIF
224 CASE(1)
225 CALL ML5_0_FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID)
226 $ ,COEFFS1)
227 IF(GOLEM_RUN_MODE.EQ.3)THEN
228 CALL RECONSTRUCT1(ML5_0_GOLEM_LOOPNUM,COEFFS1_REC)
229 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_1(COEFFS1,COEFFS1_REC)
230 ENDIF
231 CASE(2)
232 CALL ML5_0_FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID)
233 $ ,COEFFS2)
234 IF(GOLEM_RUN_MODE.EQ.3)THEN
235 CALL RECONSTRUCT2(ML5_0_GOLEM_LOOPNUM,COEFFS2_REC)
236 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_2(COEFFS2,COEFFS2_REC)
237 ENDIF
238 CASE(3)
239 CALL ML5_0_FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID)
240 $ ,COEFFS3)
241 IF(GOLEM_RUN_MODE.EQ.3)THEN
242 CALL RECONSTRUCT3(ML5_0_GOLEM_LOOPNUM,COEFFS3_REC)
243 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_3(COEFFS3,COEFFS3_REC)
244 ENDIF
245 CASE(4)
246 CALL ML5_0_FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID)
247 $ ,COEFFS4)
248 IF(GOLEM_RUN_MODE.EQ.3)THEN
249 CALL RECONSTRUCT4(ML5_0_GOLEM_LOOPNUM,COEFFS4_REC)
250 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_4(COEFFS4,COEFFS4_REC)
251 ENDIF
252 CASE(5)
253 CALL ML5_0_FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID)
254 $ ,COEFFS5)
255 IF(GOLEM_RUN_MODE.EQ.3)THEN
256 CALL RECONSTRUCT5(ML5_0_GOLEM_LOOPNUM,COEFFS5_REC)
257 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_5(COEFFS5,COEFFS5_REC)
258 ENDIF
259 CASE(6)
260 CALL ML5_0_FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID)
261 $ ,COEFFS6)
262 IF(GOLEM_RUN_MODE.EQ.3)THEN
263 CALL RECONSTRUCT6(ML5_0_GOLEM_LOOPNUM,COEFFS6_REC)
264 PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_6(COEFFS6,COEFFS6_REC)
265 ENDIF
266 CASE DEFAULT
267 WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK
268 STOP
269 END SELECT
270
271 IF(.NOT.PASS_COEF_CHECK)THEN
272 WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK
273 WRITE(*,*)'Coefs form MadLoop5:'
274 SELECT CASE(RANK)
275 CASE(0)
276 WRITE(*,*)'Constant coef = ',COEFFS0
277 CASE(1)
278 CALL PRINT_COEFFS(COEFFS1)
279 CASE(2)
280 CALL PRINT_COEFFS(COEFFS2)
281 CASE(3)
282 CALL PRINT_COEFFS(COEFFS3)
283 CASE(4)
284 CALL PRINT_COEFFS(COEFFS4)
285 CASE(5)
286 CALL PRINT_COEFFS(COEFFS5)
287 CASE(6)
288 CALL PRINT_COEFFS(COEFFS6)
289 END SELECT
290 WRITE(*,*)'Coefs reconstructed by Golem95:'
291 SELECT CASE(RANK)
292 CASE(0)
293 WRITE(*,*)'Constant coef = ',COEFFS0_REC
294 CASE(1)
295 CALL PRINT_COEFFS(COEFFS1_REC)
296 CASE(2)
297 CALL PRINT_COEFFS(COEFFS2_REC)
298 CASE(3)
299 CALL PRINT_COEFFS(COEFFS3_REC)
300 CASE(4)
301 CALL PRINT_COEFFS(COEFFS4_REC)
302 CASE(5)
303 CALL PRINT_COEFFS(COEFFS5_REC)
304 CASE(6)
305 CALL PRINT_COEFFS(COEFFS6_REC)
306 END SELECT
307 STOP
308 ENDIF
309
310 SELECT CASE(NLOOPLINE)
311 CASE(1)
312 WRITE(*,*)'Golem95 cannot handle with tadpole yet'
313 STOP
314 CASE(2)
315 SELECT CASE(RANK)
316 CASE(0)
317 RES_GOLEM = COEFFS0*A20(PINCH)
318 CASE(1)
319 RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH)
320 CASE(2)
321 RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH)
322 CASE(3)
323 RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH)
324 CASE DEFAULT
325 WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK
326 STOP
327 END SELECT
328 CASE(3)
329 SELECT CASE(RANK)
330 CASE(0)
331 RES_GOLEM = COEFFS0*A30(PINCH)
332 CASE(1)
333 RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH)
334 CASE(2)
335 RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH)
336 CASE(3)
337 RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH)
338 CASE(4)
339 RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH)
340 CASE DEFAULT
341 WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK
342 STOP
343 END SELECT
344 CASE(4)
345 SELECT CASE(RANK)
346 CASE(0)
347 RES_GOLEM = COEFFS0*A40(PINCH)
348 CASE(1)
349 RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH)
350 CASE(2)
351 RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH)
352 CASE(3)
353 RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH)
354 CASE(4)
355 RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH)
356 CASE(5)
357 RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH)
358 CASE DEFAULT
359 WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK
360 STOP
361 END SELECT
362 CASE(5)
363 SELECT CASE(RANK)
364 CASE(0)
365 RES_GOLEM = COEFFS0*A50(PINCH)
366 CASE(1)
367 RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH)
368 CASE(2)
369 RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH)
370 CASE(3)
371 RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH)
372 CASE(4)
373 RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH)
374 CASE(5)
375 RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH)
376 CASE(6)
377 RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH)
378 CASE DEFAULT
379 WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK
380 STOP
381 END SELECT
382 CASE(6)
383 SELECT CASE(RANK)
384 CASE(0)
385 RES_GOLEM = COEFFS0*A60(PINCH)
386 CASE(1)
387 RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH)
388 CASE(2)
389 RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH)
390 CASE(3)
391 RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH)
392 CASE(4)
393 RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH)
394 CASE(5)
395 RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH)
396 CASE(6)
397 RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH)
398 CASE DEFAULT
399 WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK
400 STOP
401 END SELECT
402 CASE DEFAULT
403 WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE
404 STOP
405 END SELECT
406 ENDIF
407
408 RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R)
409 $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A)
410 RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R)
411 $ *RES_GOLEM%%A)
412 RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A)
413C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
414
415C Finally free golem memory and cache
416 CALL EXITGOLEM95()
417
418 END
419
420 FUNCTION ML5_0_GOLEM_LOOPNUM(Q,MU2)
421 USE PRECISION_GOLEM, ONLY: KI
422 REAL(KI),DIMENSION(0:3),INTENT(IN)::Q
423 REAL(KI),INTENT(IN)::MU2
424 COMPLEX(KI)::ML5_0_GOLEM_LOOPNUM
425
426 COMPLEX*16 QQ(0:3),NUM
427 INTEGER I
428
429 DO I=0,3
430 QQ(I)=CMPLX(Q(I),0.0D0,KIND=16)
431 ENDDO
432
433 CALL ML5_0_LOOPNUM(QQ,NUM)
434 ML5_0_GOLEM_LOOPNUM=NUM
435 RETURN
436 END FUNCTION
437
438 SUBROUTINE ML5_0_INITGOLEM()
439C
440C INITIALISATION OF GOLEM
441C
442C
443C MODULE
444C
445 USE PARAMETRE
446C
447C LOCAL VARIABLES
448C
449 REAL*8 THRS
450 LOGICAL EXT_NUM_FOR_R1
451C
452C GLOBAL VARIABLES
453C
454 INCLUDE 'MadLoopParams.inc'
455C ----------
456C BEGIN CODE
457C ----------
458
459C DEFAULT PARAMETERS FOR GOLEM
460C -------------------------------
461C One can chose here to have either just the rational R1 piece
462C or everything but the R2
463 RAT_OR_TOT_PAR = TOT
464
465 END
466
467 SUBROUTINE ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L)
468C
469C MODULE
470C
471 USE MATRICE_S
472 USE PRECISION_GOLEM, ONLY: KI
473C
474C ARGUMENTS
475C
476 INTEGER NLOOPLINE
477 REAL(KI) PGOLEM(NLOOPLINE,0:3)
478 COMPLEX(KI) M2L(NLOOPLINE)
479C
480C LOCAL VARIABLES
481C
482 INTEGER I,J
483 COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
484C ----------
485C BEGIN CODE
486C ----------
487
488 CALL ML5_0_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L
489 $ ,S_MAT_FROM_MG)
490
491 DO I=1,NLOOPLINE
492 DO J=1,NLOOPLINE
493 S_MAT(I,J)=S_MAT_FROM_MG(I,J)
494 ENDDO
495 ENDDO
496
497 END
498
499 FUNCTION ML5_0_COMPARE_COEFS_0(COEFS_A,COEFS_B)
500
501 USE PRECISION_GOLEM, ONLY: KI
502 COMPLEX(KI) COEFS_A,COEFS_B
503 REAL*8 COEF_CHECK_THRS
504 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
505 REAL*8 DENOM,NUM
506 LOGICAL ML5_0_COMPARE_COEFS_0
507
508 NUM = ABS(COEFS_A-COEFS_B)
509 DENOM = ABS(COEFS_A+COEFS_B)
510 IF(DENOM.GT.0D0)THEN
511 ML5_0_COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS)
512 ELSE
513 ML5_0_COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS)
514 ENDIF
515
516 END
517
518 FUNCTION ML5_0_COMPARE_COEFS_1(COEFS_A,COEFS_B)
519
520 USE TENS_REC
521 TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B
522 REAL*8 COEF_CHECK_THRS
523 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
524 REAL*8 DENOM,NUM
525 LOGICAL ML5_0_COMPARE_COEFS_1
526
527 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
528 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
529 $ )
530
531 IF(DENOM.GT.0D0)THEN
532 ML5_0_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
533 ELSE
534 ML5_0_COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS)
535 ENDIF
536
537 END
538
539 FUNCTION ML5_0_COMPARE_COEFS_2(COEFS_A,COEFS_B)
540
541 USE TENS_REC
542 TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B
543 REAL*8 COEF_CHECK_THRS
544 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
545 REAL*8 DENOM,NUM
546 LOGICAL ML5_0_COMPARE_COEFS_2
547
548 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
549 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
550 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
551 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
552 IF(DENOM.GT.0D0)THEN
553 ML5_0_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
554 ELSE
555 ML5_0_COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS)
556 ENDIF
557
558 END
559
560 FUNCTION ML5_0_COMPARE_COEFS_3(COEFS_A,COEFS_B)
561
562 USE TENS_REC
563 TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B
564 REAL*8 COEF_CHECK_THRS
565 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
566 REAL*8 DENOM,NUM
567 LOGICAL ML5_0_COMPARE_COEFS_3
568
569 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
570 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
571 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
572 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
573 $ )
574 IF(DENOM.GT.0D0)THEN
575 ML5_0_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
576 ELSE
577 ML5_0_COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS)
578 ENDIF
579
580 END
581
582 FUNCTION ML5_0_COMPARE_COEFS_4(COEFS_A,COEFS_B)
583
584 USE TENS_REC
585 TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B
586 REAL*8 COEF_CHECK_THRS
587 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
588 REAL*8 DENOM,NUM
589 LOGICAL ML5_0_COMPARE_COEFS_4
590
591 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
592 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
593 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
594 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
595 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
596 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
597 IF(DENOM.GT.0D0)THEN
598 ML5_0_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
599 ELSE
600 ML5_0_COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS)
601 ENDIF
602
603 END
604
605 FUNCTION ML5_0_COMPARE_COEFS_5(COEFS_A,COEFS_B)
606
607 USE TENS_REC
608 TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B
609 REAL*8 COEF_CHECK_THRS
610 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
611 REAL*8 DENOM,NUM
612 LOGICAL ML5_0_COMPARE_COEFS_5
613
614 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
615 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
616 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
617 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
618 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
619 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
620 IF(DENOM.GT.0D0)THEN
621 ML5_0_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
622 ELSE
623 ML5_0_COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS)
624 ENDIF
625
626 END
627
628 FUNCTION ML5_0_COMPARE_COEFS_6(COEFS_A,COEFS_B)
629
630 USE TENS_REC
631 TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B
632 REAL*8 COEF_CHECK_THRS
633 COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS
634 REAL*8 DENOM,NUM
635 LOGICAL ML5_0_COMPARE_COEFS_6
636
637 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
638 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
639 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
640 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
641 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
642 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
643 IF(DENOM.GT.0D0)THEN
644 ML5_0_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
645 ELSE
646 ML5_0_COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS)
647 ENDIF
648
649 END
650
651
652 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
653 USE PRECISION_GOLEM, ONLY: KI
654 INCLUDE 'coef_specs.inc'
655 INCLUDE 'loop_max_coefs.inc'
656 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
657 COMPLEX(KI) GOLEM_COEFS
658 GOLEM_COEFS=ML_COEFS(0)
659 END
660
661 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
662 USE TENS_REC, ONLY: COEFF_TYPE_1
663 INCLUDE 'coef_specs.inc'
664 INCLUDE 'loop_max_coefs.inc'
665 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
666 TYPE(COEFF_TYPE_1) GOLEM_COEFS
667C Constant coefficient
668 GOLEM_COEFS%%C0=ML_COEFS(0)
669C Coefficient q(0)
670 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
671C Coefficient q(1)
672 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
673C Coefficient q(2)
674 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
675C Coefficient q(3)
676 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
677 END
678
679 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
680 USE TENS_REC, ONLY: COEFF_TYPE_2
681 INCLUDE 'coef_specs.inc'
682 INCLUDE 'loop_max_coefs.inc'
683 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
684 TYPE(COEFF_TYPE_2) GOLEM_COEFS
685C Constant coefficient
686 GOLEM_COEFS%%C0=ML_COEFS(0)
687C Coefficient q(0)
688 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
689C Coefficient q(0)^2
690 GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
691C Coefficient q(1)
692 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
693C Coefficient q(1)^2
694 GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
695C Coefficient q(2)
696 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
697C Coefficient q(2)^2
698 GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
699C Coefficient q(3)
700 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
701C Coefficient q(3)^2
702 GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
703C Coefficient q(0)*q(1)
704 GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
705C Coefficient q(0)*q(2)
706 GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
707C Coefficient q(0)*q(3)
708 GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
709C Coefficient q(1)*q(2)
710 GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
711C Coefficient q(1)*q(3)
712 GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
713C Coefficient q(2)*q(3)
714 GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
715 END
716
717 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
718 USE TENS_REC, ONLY: COEFF_TYPE_3
719 INCLUDE 'coef_specs.inc'
720 INCLUDE 'loop_max_coefs.inc'
721 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
722 TYPE(COEFF_TYPE_3) GOLEM_COEFS
723C Constant coefficient
724 GOLEM_COEFS%%C0=ML_COEFS(0)
725C Coefficient q(0)
726 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
727C Coefficient q(0)^2
728 GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
729C Coefficient q(0)^3
730 GOLEM_COEFS%%C1(1,3)=-ML_COEFS(15)
731C Coefficient q(1)
732 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
733C Coefficient q(1)^2
734 GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
735C Coefficient q(1)^3
736 GOLEM_COEFS%%C1(2,3)=-ML_COEFS(18)
737C Coefficient q(2)
738 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
739C Coefficient q(2)^2
740 GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
741C Coefficient q(2)^3
742 GOLEM_COEFS%%C1(3,3)=-ML_COEFS(24)
743C Coefficient q(3)
744 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
745C Coefficient q(3)^2
746 GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
747C Coefficient q(3)^3
748 GOLEM_COEFS%%C1(4,3)=-ML_COEFS(34)
749C Coefficient q(0)*q(1)
750 GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
751C Coefficient q(0)*q(1)^2
752 GOLEM_COEFS%%C2(1,2)=-ML_COEFS(17)
753C Coefficient q(0)^2*q(1)
754 GOLEM_COEFS%%C2(1,3)=-ML_COEFS(16)
755C Coefficient q(0)*q(2)
756 GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
757C Coefficient q(0)*q(2)^2
758 GOLEM_COEFS%%C2(2,2)=-ML_COEFS(22)
759C Coefficient q(0)^2*q(2)
760 GOLEM_COEFS%%C2(2,3)=-ML_COEFS(19)
761C Coefficient q(0)*q(3)
762 GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
763C Coefficient q(0)*q(3)^2
764 GOLEM_COEFS%%C2(3,2)=-ML_COEFS(31)
765C Coefficient q(0)^2*q(3)
766 GOLEM_COEFS%%C2(3,3)=-ML_COEFS(25)
767C Coefficient q(1)*q(2)
768 GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
769C Coefficient q(1)*q(2)^2
770 GOLEM_COEFS%%C2(4,2)=-ML_COEFS(23)
771C Coefficient q(1)^2*q(2)
772 GOLEM_COEFS%%C2(4,3)=-ML_COEFS(21)
773C Coefficient q(1)*q(3)
774 GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
775C Coefficient q(1)*q(3)^2
776 GOLEM_COEFS%%C2(5,2)=-ML_COEFS(32)
777C Coefficient q(1)^2*q(3)
778 GOLEM_COEFS%%C2(5,3)=-ML_COEFS(27)
779C Coefficient q(2)*q(3)
780 GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
781C Coefficient q(2)*q(3)^2
782 GOLEM_COEFS%%C2(6,2)=-ML_COEFS(33)
783C Coefficient q(2)^2*q(3)
784 GOLEM_COEFS%%C2(6,3)=-ML_COEFS(30)
785C Coefficient q(0)*q(1)*q(2)
786 GOLEM_COEFS%%C3(1,1)=-ML_COEFS(20)
787C Coefficient q(0)*q(1)*q(3)
788 GOLEM_COEFS%%C3(2,1)=-ML_COEFS(26)
789C Coefficient q(0)*q(2)*q(3)
790 GOLEM_COEFS%%C3(3,1)=-ML_COEFS(28)
791C Coefficient q(1)*q(2)*q(3)
792 GOLEM_COEFS%%C3(4,1)=-ML_COEFS(29)
793 END
794
795 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
796 USE TENS_REC, ONLY: COEFF_TYPE_4
797 INCLUDE 'coef_specs.inc'
798 INCLUDE 'loop_max_coefs.inc'
799 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
800 TYPE(COEFF_TYPE_4) GOLEM_COEFS
801C Dummy routine for ML5_0_FILL_GOLEM_COEFS_4
802 STOP 'ERROR: 4 > 3'
803 END
804
805 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
806 USE TENS_REC, ONLY: COEFF_TYPE_5
807 INCLUDE 'coef_specs.inc'
808 INCLUDE 'loop_max_coefs.inc'
809 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
810 TYPE(COEFF_TYPE_5) GOLEM_COEFS
811C Dummy routine for ML5_0_FILL_GOLEM_COEFS_5
812 STOP 'ERROR: 5 > 3'
813 END
814
815 SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
816 USE TENS_REC, ONLY: COEFF_TYPE_6
817 INCLUDE 'coef_specs.inc'
818 INCLUDE 'loop_max_coefs.inc'
819 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
820 TYPE(COEFF_TYPE_6) GOLEM_COEFS
821C Dummy routine for ML5_0_FILL_GOLEM_COEFS_6
822 STOP 'ERROR: 6 > 3'
823 END
8240
=== modified file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f'
--- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f 2016-06-28 23:55:35 +0000
+++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%TIR_interface.f 2018-11-09 08:24:41 +0000
@@ -95,17 +95,9 @@
95 ENDIF95 ENDIF
9696
97 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN97 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN
98C Using Golem9598C Golem95 not available
99C PDEN is dummy for Golem95 so we just initialize it to zero99 WRITE(*,*) 'ERROR:: Golem95 is not interfaced.'
100C here so as to use it for the function SWITCHORDER100 STOP
101 DO I=0,3
102 DO J=1,NLOOPLINE-1
103 PDEN(I,J)=0.0D0
104 ENDDO
105 ENDDO
106 CALL ML5_0_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
107 CALL ML5_0_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
108 RETURN
109 ENDIF101 ENDIF
110102
111C INITIALIZE TIR IF NEEDED103C INITIALIZE TIR IF NEEDED
112104
=== modified file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f'
--- tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f 2017-08-14 07:04:15 +0000
+++ tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%loop_matrix.f 2018-11-09 08:24:41 +0000
@@ -243,7 +243,7 @@
243C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE243C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
244C AVAILABLE OR NOT244C AVAILABLE OR NOT
245 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)245 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)
246 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.246 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.
247 $ ,.TRUE.,.TRUE./247 $ ,.TRUE.,.TRUE./
248 COMMON/ML5_0_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE248 COMMON/ML5_0_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
249C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS249C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
250250
=== removed file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f'
--- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f 2016-05-26 03:24:09 +0000
+++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%GOLEM_interface.f 1970-01-01 00:00:00 +0000
@@ -1,755 +0,0 @@
1 SUBROUTINE MG5_1_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
2C
3C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4C By the MadGraph5_aMC@NLO Development Team
5C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
6C
7C Interface between MG5 and Golem95.
8C The Golem95 version should be higher than 1.3.0.
9C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 <
10C NLOOPLINE < 6.
11C
12C Process: u u~ > u u~ [ virt = QCD ] @1
13C
14C
15C MODULES
16C
17 USE MATRICE_S
18 USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR
19 USE PRECISION_GOLEM, ONLY: KI
20 USE TENS_COMB
21 USE TENS_REC
22 USE FORM_FACTOR_1P, ONLY: A10
23 USE FORM_FACTOR_2P, ONLY: A20
24 USE FORM_FACTOR_3P, ONLY: A30
25 USE FORM_FACTOR_4P, ONLY: A40
26 USE FORM_FACTOR_5P, ONLY: A50
27 USE FORM_FACTOR_6P, ONLY: A60
28 IMPLICIT NONE
29C
30C CONSTANTS
31C
32 INTEGER NEXTERNAL
33 PARAMETER (NEXTERNAL=4)
34 LOGICAL CHECKPCONSERVATION
35 PARAMETER (CHECKPCONSERVATION=.TRUE.)
36 REAL*8 NORMALIZATION
37 PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0*
38 $ *2))
39 REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI
40 $ ,0.0_KI,0.0_KI/)
41C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients
42C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints
43C directly from
44C numerator using golem internal reconstruction routine
45C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients
46C against
47C MadLoop internal ones.
48 INTEGER GOLEM_RUN_MODE
49 PARAMETER (GOLEM_RUN_MODE=1)
50C The following is the acceptance threshold used for
51C GOLEM_RUN_MODE = 3
52 REAL*8 COEF_CHECK_THRS
53 DATA COEF_CHECK_THRS/1.0D-13/
54 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
55
56 LOGICAL PASS_COEF_CHECK
57C
58C ARGUMENTS
59C
60 INTEGER NLOOPLINE, RANK
61 REAL*8 PL(0:3,NLOOPLINE)
62 REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3)
63 REAL*8 REF_P
64 REAL(KI) PGOLEM(NLOOPLINE,0:3)
65 COMPLEX*16 M2L(NLOOPLINE)
66 COMPLEX(KI) M2LGOLEM(NLOOPLINE)
67 COMPLEX*16 RES(3)
68 LOGICAL STABLE
69C
70C LOCAL VARIABLES
71C
72 INTEGER I, J, K
73 TYPE(FORM_FACTOR)::RES_GOLEM
74
75 COMPLEX(KI)::COEFFS0,COEFFS0_REC
76 TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC
77 TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC
78 TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC
79 TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC
80 TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC
81 TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC
82
83C The pinch propagator optimization is not used, so for now it is
84C always 0.
85 INTEGER PINCH
86C
87C EXTERNAL FUNCTIONS
88C
89 COMPLEX(KI) MG5_1_GOLEM_LOOPNUM
90 EXTERNAL MG5_1_GOLEM_LOOPNUM
91 LOGICAL MG5_1_COMPARE_COEFS_0
92 LOGICAL MG5_1_COMPARE_COEFS_1
93 LOGICAL MG5_1_COMPARE_COEFS_2
94 LOGICAL MG5_1_COMPARE_COEFS_3
95 LOGICAL MG5_1_COMPARE_COEFS_4
96 LOGICAL MG5_1_COMPARE_COEFS_5
97 LOGICAL MG5_1_COMPARE_COEFS_6
98C
99C GLOBAL VARIABLES
100C
101 INCLUDE 'coupl.inc'
102 INTEGER CTMODE
103 REAL*8 LSCALE
104 COMMON/MG5_1_CT/LSCALE,CTMODE
105
106 INTEGER ID,SQSOINDEX,R
107 COMMON/MG5_1_LOOP/ID,SQSOINDEX,R
108
109 LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT
110 $ ,COLLIERINIT
111 COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT
112 $ ,NINJAINIT,COLLIERINIT
113
114 INTEGER NLOOPGROUPS
115 PARAMETER (NLOOPGROUPS=13)
116 INTEGER NSQUAREDSO
117 PARAMETER (NSQUAREDSO=1)
118 INCLUDE 'loop_max_coefs.inc'
119
120 COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS)
121 COMMON/MG5_1_LCOEFS/LOOPCOEFS
122C ----------
123C BEGIN CODE
124C ----------
125
126C The CT initialization is also performed here if not done already
127C because it calls MPINIT of OneLOop which is necessary on some
128C system
129 IF (CTINIT) THEN
130 CTINIT=.FALSE.
131 CALL MG5_1_INITCT()
132 ENDIF
133
134C INITIALIZE GOLEM IF NEEDED
135 IF (GOLEMINIT) THEN
136 GOLEMINIT=.FALSE.
137 CALL MG5_1_INITGOLEM()
138 ENDIF
139
140C No stability test intrisic to Golem95 now
141 STABLE=.TRUE.
142
143C This initialization must be done for each reduction because we
144C have not setup anyoptimization using pinched propagators yet.
145 CALL INITGOLEM95(NLOOPLINE)
146 PINCH = 0
147
148C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE
149C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION
150
151C CONVERT THE MASSES TO BE COMPLEX
152 DO I=1,NLOOPLINE
153 M2LGOLEM(I)=M2L(I)
154 ENDDO
155
156C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS
157 DO I=0,3
158 ABSPCT(I) = 0.D0
159 DO J=0,(NLOOPLINE-1)
160 PCT(I,J)=0.D0
161 ENDDO
162 ENDDO
163 DO I=0,3
164 DO J=1,NLOOPLINE
165 PCT(I,0)=PCT(I,0)+PL(I,J)
166 ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J))
167 ENDDO
168 ENDDO
169 REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3))
170 DO I=0,3
171 ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I))
172 ENDDO
173 IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN
174 IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN
175 WRITE(*,*) 'energy is not conserved ',PCT(0,0)
176 STOP 'energy is not conserved'
177 ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN
178 WRITE(*,*) 'px is not conserved ',PCT(1,0)
179 STOP 'px is not conserved'
180 ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN
181 WRITE(*,*) 'py is not conserved ',PCT(2,0)
182 STOP 'py is not conserved'
183 ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN
184 WRITE(*,*) 'pz is not conserved ',PCT(3,0)
185 STOP 'pz is not conserved'
186 ENDIF
187 ENDIF
188 DO I=0,3
189 DO J=1,(NLOOPLINE-1)
190 DO K=1,J
191 PCT(I,J)=PCT(I,J)+PL(I,K)
192 ENDDO
193 ENDDO
194 ENDDO
195
196C Now convert the loop momenta to Golem95 conventions
197 DO I=0,3
198 PGOLEM(1,I)=0.0E0_KI
199 DO J=2,NLOOPLINE
200 PGOLEM(J,I)=PCT(I,J-1)
201 ENDDO
202 ENDDO
203
204C Fill in the kinematic s-matrix while taking care of on-shell
205C limits.
206 CALL MG5_1_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM)
207C Construct the golem internal matrices derived from the kinetic
208C one.
209 CALL PREPARESMATRIX()
210
211C Fill in the golem coefficents and compute the loop
212 IF(GOLEM_RUN_MODE.EQ.2)THEN
213 RES_GOLEM = EVALUATE_B(MG5_1_GOLEM_LOOPNUM,PGOLEM,0,RANK)
214 ELSE
215 PASS_COEF_CHECK=.TRUE.
216 SELECT CASE(RANK)
217 CASE(0)
218 CALL MG5_1_FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID)
219 $ ,COEFFS0)
220 IF(GOLEM_RUN_MODE.EQ.3)THEN
221 COEFFS0_REC = MG5_1_GOLEM_LOOPNUM(NULL_VEC,0.0_KI)
222 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_0(COEFFS0,COEFFS0_REC)
223 ENDIF
224 CASE(1)
225 CALL MG5_1_FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID)
226 $ ,COEFFS1)
227 IF(GOLEM_RUN_MODE.EQ.3)THEN
228 CALL RECONSTRUCT1(MG5_1_GOLEM_LOOPNUM,COEFFS1_REC)
229 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_1(COEFFS1,COEFFS1_REC)
230 ENDIF
231 CASE(2)
232 CALL MG5_1_FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID)
233 $ ,COEFFS2)
234 IF(GOLEM_RUN_MODE.EQ.3)THEN
235 CALL RECONSTRUCT2(MG5_1_GOLEM_LOOPNUM,COEFFS2_REC)
236 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_2(COEFFS2,COEFFS2_REC)
237 ENDIF
238 CASE(3)
239 CALL MG5_1_FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID)
240 $ ,COEFFS3)
241 IF(GOLEM_RUN_MODE.EQ.3)THEN
242 CALL RECONSTRUCT3(MG5_1_GOLEM_LOOPNUM,COEFFS3_REC)
243 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_3(COEFFS3,COEFFS3_REC)
244 ENDIF
245 CASE(4)
246 CALL MG5_1_FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID)
247 $ ,COEFFS4)
248 IF(GOLEM_RUN_MODE.EQ.3)THEN
249 CALL RECONSTRUCT4(MG5_1_GOLEM_LOOPNUM,COEFFS4_REC)
250 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_4(COEFFS4,COEFFS4_REC)
251 ENDIF
252 CASE(5)
253 CALL MG5_1_FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID)
254 $ ,COEFFS5)
255 IF(GOLEM_RUN_MODE.EQ.3)THEN
256 CALL RECONSTRUCT5(MG5_1_GOLEM_LOOPNUM,COEFFS5_REC)
257 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_5(COEFFS5,COEFFS5_REC)
258 ENDIF
259 CASE(6)
260 CALL MG5_1_FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID)
261 $ ,COEFFS6)
262 IF(GOLEM_RUN_MODE.EQ.3)THEN
263 CALL RECONSTRUCT6(MG5_1_GOLEM_LOOPNUM,COEFFS6_REC)
264 PASS_COEF_CHECK=MG5_1_COMPARE_COEFS_6(COEFFS6,COEFFS6_REC)
265 ENDIF
266 CASE DEFAULT
267 WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK
268 STOP
269 END SELECT
270
271 IF(.NOT.PASS_COEF_CHECK)THEN
272 WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK
273 WRITE(*,*)'Coefs form MadLoop5:'
274 SELECT CASE(RANK)
275 CASE(0)
276 WRITE(*,*)'Constant coef = ',COEFFS0
277 CASE(1)
278 CALL PRINT_COEFFS(COEFFS1)
279 CASE(2)
280 CALL PRINT_COEFFS(COEFFS2)
281 CASE(3)
282 CALL PRINT_COEFFS(COEFFS3)
283 CASE(4)
284 CALL PRINT_COEFFS(COEFFS4)
285 CASE(5)
286 CALL PRINT_COEFFS(COEFFS5)
287 CASE(6)
288 CALL PRINT_COEFFS(COEFFS6)
289 END SELECT
290 WRITE(*,*)'Coefs reconstructed by Golem95:'
291 SELECT CASE(RANK)
292 CASE(0)
293 WRITE(*,*)'Constant coef = ',COEFFS0_REC
294 CASE(1)
295 CALL PRINT_COEFFS(COEFFS1_REC)
296 CASE(2)
297 CALL PRINT_COEFFS(COEFFS2_REC)
298 CASE(3)
299 CALL PRINT_COEFFS(COEFFS3_REC)
300 CASE(4)
301 CALL PRINT_COEFFS(COEFFS4_REC)
302 CASE(5)
303 CALL PRINT_COEFFS(COEFFS5_REC)
304 CASE(6)
305 CALL PRINT_COEFFS(COEFFS6_REC)
306 END SELECT
307 STOP
308 ENDIF
309
310 SELECT CASE(NLOOPLINE)
311 CASE(1)
312 WRITE(*,*)'Golem95 cannot handle with tadpole yet'
313 STOP
314 CASE(2)
315 SELECT CASE(RANK)
316 CASE(0)
317 RES_GOLEM = COEFFS0*A20(PINCH)
318 CASE(1)
319 RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH)
320 CASE(2)
321 RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH)
322 CASE(3)
323 RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH)
324 CASE DEFAULT
325 WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK
326 STOP
327 END SELECT
328 CASE(3)
329 SELECT CASE(RANK)
330 CASE(0)
331 RES_GOLEM = COEFFS0*A30(PINCH)
332 CASE(1)
333 RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH)
334 CASE(2)
335 RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH)
336 CASE(3)
337 RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH)
338 CASE(4)
339 RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH)
340 CASE DEFAULT
341 WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK
342 STOP
343 END SELECT
344 CASE(4)
345 SELECT CASE(RANK)
346 CASE(0)
347 RES_GOLEM = COEFFS0*A40(PINCH)
348 CASE(1)
349 RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH)
350 CASE(2)
351 RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH)
352 CASE(3)
353 RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH)
354 CASE(4)
355 RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH)
356 CASE(5)
357 RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH)
358 CASE DEFAULT
359 WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK
360 STOP
361 END SELECT
362 CASE(5)
363 SELECT CASE(RANK)
364 CASE(0)
365 RES_GOLEM = COEFFS0*A50(PINCH)
366 CASE(1)
367 RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH)
368 CASE(2)
369 RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH)
370 CASE(3)
371 RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH)
372 CASE(4)
373 RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH)
374 CASE(5)
375 RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH)
376 CASE(6)
377 RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH)
378 CASE DEFAULT
379 WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK
380 STOP
381 END SELECT
382 CASE(6)
383 SELECT CASE(RANK)
384 CASE(0)
385 RES_GOLEM = COEFFS0*A60(PINCH)
386 CASE(1)
387 RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH)
388 CASE(2)
389 RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH)
390 CASE(3)
391 RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH)
392 CASE(4)
393 RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH)
394 CASE(5)
395 RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH)
396 CASE(6)
397 RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH)
398 CASE DEFAULT
399 WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK
400 STOP
401 END SELECT
402 CASE DEFAULT
403 WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE
404 STOP
405 END SELECT
406 ENDIF
407
408 RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R)
409 $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A)
410 RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R)
411 $ *RES_GOLEM%%A)
412 RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A)
413C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3)
414
415C Finally free golem memory and cache
416 CALL EXITGOLEM95()
417
418 END
419
420 FUNCTION MG5_1_GOLEM_LOOPNUM(Q,MU2)
421 USE PRECISION_GOLEM, ONLY: KI
422 REAL(KI),DIMENSION(0:3),INTENT(IN)::Q
423 REAL(KI),INTENT(IN)::MU2
424 COMPLEX(KI)::MG5_1_GOLEM_LOOPNUM
425
426 COMPLEX*16 QQ(0:3),NUM
427 INTEGER I
428
429 DO I=0,3
430 QQ(I)=CMPLX(Q(I),0.0D0,KIND=16)
431 ENDDO
432
433 CALL MG5_1_LOOPNUM(QQ,NUM)
434 MG5_1_GOLEM_LOOPNUM=NUM
435 RETURN
436 END FUNCTION
437
438 SUBROUTINE MG5_1_INITGOLEM()
439C
440C INITIALISATION OF GOLEM
441C
442C
443C MODULE
444C
445 USE PARAMETRE
446C
447C LOCAL VARIABLES
448C
449 REAL*8 THRS
450 LOGICAL EXT_NUM_FOR_R1
451C
452C GLOBAL VARIABLES
453C
454 INCLUDE 'MadLoopParams.inc'
455C ----------
456C BEGIN CODE
457C ----------
458
459C DEFAULT PARAMETERS FOR GOLEM
460C -------------------------------
461C One can chose here to have either just the rational R1 piece
462C or everything but the R2
463 RAT_OR_TOT_PAR = TOT
464
465 END
466
467 SUBROUTINE MG5_1_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L)
468C
469C MODULE
470C
471 USE MATRICE_S
472 USE PRECISION_GOLEM, ONLY: KI
473C
474C ARGUMENTS
475C
476 INTEGER NLOOPLINE
477 REAL(KI) PGOLEM(NLOOPLINE,0:3)
478 COMPLEX(KI) M2L(NLOOPLINE)
479C
480C LOCAL VARIABLES
481C
482 INTEGER I,J
483 COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE)
484C ----------
485C BEGIN CODE
486C ----------
487
488 CALL MG5_1_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L
489 $ ,S_MAT_FROM_MG)
490
491 DO I=1,NLOOPLINE
492 DO J=1,NLOOPLINE
493 S_MAT(I,J)=S_MAT_FROM_MG(I,J)
494 ENDDO
495 ENDDO
496
497 END
498
499 FUNCTION MG5_1_COMPARE_COEFS_0(COEFS_A,COEFS_B)
500
501 USE PRECISION_GOLEM, ONLY: KI
502 COMPLEX(KI) COEFS_A,COEFS_B
503 REAL*8 COEF_CHECK_THRS
504 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
505 REAL*8 DENOM,NUM
506 LOGICAL MG5_1_COMPARE_COEFS_0
507
508 NUM = ABS(COEFS_A-COEFS_B)
509 DENOM = ABS(COEFS_A+COEFS_B)
510 IF(DENOM.GT.0D0)THEN
511 MG5_1_COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS)
512 ELSE
513 MG5_1_COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS)
514 ENDIF
515
516 END
517
518 FUNCTION MG5_1_COMPARE_COEFS_1(COEFS_A,COEFS_B)
519
520 USE TENS_REC
521 TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B
522 REAL*8 COEF_CHECK_THRS
523 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
524 REAL*8 DENOM,NUM
525 LOGICAL MG5_1_COMPARE_COEFS_1
526
527 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
528 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
529 $ )
530
531 IF(DENOM.GT.0D0)THEN
532 MG5_1_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS)
533 ELSE
534 MG5_1_COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS)
535 ENDIF
536
537 END
538
539 FUNCTION MG5_1_COMPARE_COEFS_2(COEFS_A,COEFS_B)
540
541 USE TENS_REC
542 TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B
543 REAL*8 COEF_CHECK_THRS
544 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
545 REAL*8 DENOM,NUM
546 LOGICAL MG5_1_COMPARE_COEFS_2
547
548 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
549 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))
550 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
551 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))
552 IF(DENOM.GT.0D0)THEN
553 MG5_1_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS)
554 ELSE
555 MG5_1_COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS)
556 ENDIF
557
558 END
559
560 FUNCTION MG5_1_COMPARE_COEFS_3(COEFS_A,COEFS_B)
561
562 USE TENS_REC
563 TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B
564 REAL*8 COEF_CHECK_THRS
565 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
566 REAL*8 DENOM,NUM
567 LOGICAL MG5_1_COMPARE_COEFS_3
568
569 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
570 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
571 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
572 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
573 $ )
574 IF(DENOM.GT.0D0)THEN
575 MG5_1_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS)
576 ELSE
577 MG5_1_COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS)
578 ENDIF
579
580 END
581
582 FUNCTION MG5_1_COMPARE_COEFS_4(COEFS_A,COEFS_B)
583
584 USE TENS_REC
585 TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B
586 REAL*8 COEF_CHECK_THRS
587 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
588 REAL*8 DENOM,NUM
589 LOGICAL MG5_1_COMPARE_COEFS_4
590
591 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
592 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
593 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
594 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
595 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
596 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
597 IF(DENOM.GT.0D0)THEN
598 MG5_1_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS)
599 ELSE
600 MG5_1_COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS)
601 ENDIF
602
603 END
604
605 FUNCTION MG5_1_COMPARE_COEFS_5(COEFS_A,COEFS_B)
606
607 USE TENS_REC
608 TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B
609 REAL*8 COEF_CHECK_THRS
610 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
611 REAL*8 DENOM,NUM
612 LOGICAL MG5_1_COMPARE_COEFS_5
613
614 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
615 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
616 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
617 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
618 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
619 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
620 IF(DENOM.GT.0D0)THEN
621 MG5_1_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS)
622 ELSE
623 MG5_1_COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS)
624 ENDIF
625
626 END
627
628 FUNCTION MG5_1_COMPARE_COEFS_6(COEFS_A,COEFS_B)
629
630 USE TENS_REC
631 TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B
632 REAL*8 COEF_CHECK_THRS
633 COMMON/MG5_1_COEF_CHECK_THRS/COEF_CHECK_THRS
634 REAL*8 DENOM,NUM
635 LOGICAL MG5_1_COMPARE_COEFS_6
636
637 NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1))
638 $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3))
639 $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4))
640 DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1)
641 $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3)
642 $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4))
643 IF(DENOM.GT.0D0)THEN
644 MG5_1_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS)
645 ELSE
646 MG5_1_COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS)
647 ENDIF
648
649 END
650
651
652 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS)
653 USE PRECISION_GOLEM, ONLY: KI
654 INCLUDE 'coef_specs.inc'
655 INCLUDE 'loop_max_coefs.inc'
656 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
657 COMPLEX(KI) GOLEM_COEFS
658 GOLEM_COEFS=ML_COEFS(0)
659 END
660
661 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS)
662 USE TENS_REC, ONLY: COEFF_TYPE_1
663 INCLUDE 'coef_specs.inc'
664 INCLUDE 'loop_max_coefs.inc'
665 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
666 TYPE(COEFF_TYPE_1) GOLEM_COEFS
667C Constant coefficient
668 GOLEM_COEFS%%C0=ML_COEFS(0)
669C Coefficient q(0)
670 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
671C Coefficient q(1)
672 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
673C Coefficient q(2)
674 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
675C Coefficient q(3)
676 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
677 END
678
679 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS)
680 USE TENS_REC, ONLY: COEFF_TYPE_2
681 INCLUDE 'coef_specs.inc'
682 INCLUDE 'loop_max_coefs.inc'
683 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
684 TYPE(COEFF_TYPE_2) GOLEM_COEFS
685C Constant coefficient
686 GOLEM_COEFS%%C0=ML_COEFS(0)
687C Coefficient q(0)
688 GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1)
689C Coefficient q(0)^2
690 GOLEM_COEFS%%C1(1,2)= ML_COEFS(5)
691C Coefficient q(1)
692 GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2)
693C Coefficient q(1)^2
694 GOLEM_COEFS%%C1(2,2)= ML_COEFS(7)
695C Coefficient q(2)
696 GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3)
697C Coefficient q(2)^2
698 GOLEM_COEFS%%C1(3,2)= ML_COEFS(10)
699C Coefficient q(3)
700 GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4)
701C Coefficient q(3)^2
702 GOLEM_COEFS%%C1(4,2)= ML_COEFS(14)
703C Coefficient q(0)*q(1)
704 GOLEM_COEFS%%C2(1,1)= ML_COEFS(6)
705C Coefficient q(0)*q(2)
706 GOLEM_COEFS%%C2(2,1)= ML_COEFS(8)
707C Coefficient q(0)*q(3)
708 GOLEM_COEFS%%C2(3,1)= ML_COEFS(11)
709C Coefficient q(1)*q(2)
710 GOLEM_COEFS%%C2(4,1)= ML_COEFS(9)
711C Coefficient q(1)*q(3)
712 GOLEM_COEFS%%C2(5,1)= ML_COEFS(12)
713C Coefficient q(2)*q(3)
714 GOLEM_COEFS%%C2(6,1)= ML_COEFS(13)
715 END
716
717 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS)
718 USE TENS_REC, ONLY: COEFF_TYPE_3
719 INCLUDE 'coef_specs.inc'
720 INCLUDE 'loop_max_coefs.inc'
721 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
722 TYPE(COEFF_TYPE_3) GOLEM_COEFS
723C Dummy routine for MG5_1_FILL_GOLEM_COEFS_3
724 STOP 'ERROR: 3 > 2'
725 END
726
727 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS)
728 USE TENS_REC, ONLY: COEFF_TYPE_4
729 INCLUDE 'coef_specs.inc'
730 INCLUDE 'loop_max_coefs.inc'
731 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
732 TYPE(COEFF_TYPE_4) GOLEM_COEFS
733C Dummy routine for MG5_1_FILL_GOLEM_COEFS_4
734 STOP 'ERROR: 4 > 2'
735 END
736
737 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS)
738 USE TENS_REC, ONLY: COEFF_TYPE_5
739 INCLUDE 'coef_specs.inc'
740 INCLUDE 'loop_max_coefs.inc'
741 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
742 TYPE(COEFF_TYPE_5) GOLEM_COEFS
743C Dummy routine for MG5_1_FILL_GOLEM_COEFS_5
744 STOP 'ERROR: 5 > 2'
745 END
746
747 SUBROUTINE MG5_1_FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS)
748 USE TENS_REC, ONLY: COEFF_TYPE_6
749 INCLUDE 'coef_specs.inc'
750 INCLUDE 'loop_max_coefs.inc'
751 COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1)
752 TYPE(COEFF_TYPE_6) GOLEM_COEFS
753C Dummy routine for MG5_1_FILL_GOLEM_COEFS_6
754 STOP 'ERROR: 6 > 2'
755 END
7560
=== modified file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f'
--- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f 2016-06-28 23:55:35 +0000
+++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%TIR_interface.f 2018-11-09 08:24:41 +0000
@@ -95,17 +95,9 @@
95 ENDIF95 ENDIF
9696
97 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN97 IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN
98C Using Golem9598C Golem95 not available
99C PDEN is dummy for Golem95 so we just initialize it to zero99 WRITE(*,*) 'ERROR:: Golem95 is not interfaced.'
100C here so as to use it for the function SWITCHORDER100 STOP
101 DO I=0,3
102 DO J=1,NLOOPLINE-1
103 PDEN(I,J)=0.0D0
104 ENDDO
105 ENDDO
106 CALL MG5_1_SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L)
107 CALL MG5_1_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE)
108 RETURN
109 ENDIF101 ENDIF
110102
111C INITIALIZE TIR IF NEEDED103C INITIALIZE TIR IF NEEDED
112104
=== modified file 'tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f'
--- tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f 2017-08-15 19:34:40 +0000
+++ tests/input_files/IOTestsComparison/TestCmdMatchBox/MatchBoxOutput/%TEST%SubProcesses%P1_uux_uux%loop_matrix.f 2018-11-09 08:24:41 +0000
@@ -243,7 +243,7 @@
243C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE243C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE
244C AVAILABLE OR NOT244C AVAILABLE OR NOT
245 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)245 LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB)
246 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE.246 DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE.
247 $ ,.TRUE.,.TRUE./247 $ ,.TRUE.,.TRUE./
248 COMMON/MG5_1_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE248 COMMON/MG5_1_LOOPLIBS_AV/ LOOPLIBS_AVAILABLE
249C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS249C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS
250250
=== modified file 'tests/unit_tests/iolibs/test_export_v4.py'
--- tests/unit_tests/iolibs/test_export_v4.py 2018-06-14 20:20:22 +0000
+++ tests/unit_tests/iolibs/test_export_v4.py 2018-11-09 08:24:41 +0000
@@ -2455,6 +2455,13 @@
2455 created_files = ['leshouche'2455 created_files = ['leshouche'
2456 ]2456 ]
24572457
2458
2459 def setUp(self):
2460
2461
2462 helas_call_writers.HelasCallWriter.customize_argument_for_all_other_helas_object =\
2463 staticmethod(helas_call_writers.HelasCallWriter.default_customize_argument_for_all_other_helas_object)
2464
2458 tearDown = test_file_writers.CheckFileCreate.clean_files2465 tearDown = test_file_writers.CheckFileCreate.clean_files
24592466
2460 def test_generate_helas_diagrams_ea_ae(self):2467 def test_generate_helas_diagrams_ea_ae(self):

Subscribers

People subscribed via source and target branches

to all changes: