Merge lp:~mg5core1/mg5amcnlo/2.6.4 into lp:mg5amcnlo/lts
- 2.6.4
- Merge into series2.0
Proposed by
Olivier Mattelaer
Status: | Merged |
---|---|
Merged at revision: | 280 |
Proposed branch: | lp:~mg5core1/mg5amcnlo/2.6.4 |
Merge into: | lp:mg5amcnlo/lts |
Diff against target: |
5979 lines (+775/-3545) 68 files modified
MadSpin/decay.py (+12/-3) MadSpin/interface_madspin.py (+23/-8) MadSpin/src/driver.f (+5/-5) Template/LO/Source/run.inc (+4/-1) Template/LO/Source/transpole.f (+20/-1) Template/LO/SubProcesses/genps.f (+2/-2) Template/LO/SubProcesses/myamp.f (+39/-112) Template/LO/SubProcesses/reweight.f (+21/-7) Template/NLO/MCatNLO/Makefile_MadFKS (+1/-1) Template/NLO/SubProcesses/check_poles.f (+2/-2) Template/NLO/SubProcesses/combine_plots_FO.sh (+56/-110) Template/NLO/SubProcesses/driver_mintFO.f (+1/-1) Template/NLO/SubProcesses/driver_mintMC.f (+1/-1) Template/NLO/SubProcesses/makefile (+0/-6) Template/NLO/SubProcesses/mint-integrator2.f (+3/-3) Template/NLO/SubProcesses/read40.for (+1/-1) Template/NLO/SubProcesses/split40.f (+0/-51) UpdateNotes.txt (+17/-0) VERSION (+2/-2) aloha/aloha_writers.py (+3/-1) madgraph/core/base_objects.py (+8/-2) madgraph/core/helas_objects.py (+7/-0) madgraph/interface/amcatnlo_interface.py (+4/-0) madgraph/interface/amcatnlo_run_interface.py (+16/-2) madgraph/interface/common_run_interface.py (+103/-13) madgraph/interface/extended_cmd.py (+8/-0) madgraph/interface/loop_interface.py (+13/-5) madgraph/interface/madevent_interface.py (+16/-8) madgraph/interface/madgraph_interface.py (+17/-5) madgraph/interface/reweight_interface.py (+5/-4) madgraph/iolibs/export_v4.py (+67/-5) 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/madevent/sum_html.py (+1/-1) madgraph/various/banner.py (+10/-6) madgraph/various/lhe_parser.py (+13/-8) madgraph/various/systematics.py (+1/-0) models/check_param_card.py (+9/-5) models/import_ufo.py (+41/-9) tests/IOTests.py (+11/-5) tests/acceptance_tests/test_cmd_madloop.py (+2/-2) tests/acceptance_tests/test_export_fks.py (+1/-1) tests/acceptance_tests/test_madspin.py (+54/-2) tests/acceptance_tests/test_model_equivalence.py (+3/-4) 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/test_manager.py (+1/-1) tests/unit_tests/iolibs/test_export_v4.py (+7/-0) tests/unit_tests/madspin/test_madspin.py (+7/-0) vendor/CutTools/src/makefile (+10/-4) vendor/CutTools/src/qcdloop/aaxex.f (+1/-1) vendor/IREGI/src/qcdloop/ff/aaxex.f (+1/-1) vendor/IREGI/src/qcdloop/ff/makefile (+1/-1) |
To merge this branch: | bzr merge lp:~mg5core1/mg5amcnlo/2.6.4 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
MadTeam | Pending | ||
Review via email: mp+358542@code.launchpad.net |
Commit message
2.6.4 is now ready. I will procede to merging it.
Description of the change
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'MadSpin/decay.py' | |||
2 | --- MadSpin/decay.py 2018-03-22 14:00:54 +0000 | |||
3 | +++ MadSpin/decay.py 2018-11-09 10:32:12 +0000 | |||
4 | @@ -3963,14 +3963,23 @@ | |||
5 | 3963 | elif mode=='full': | 3963 | elif mode=='full': |
6 | 3964 | stdin_text="5 0 0 0 \n" # before closing, write down the seed | 3964 | stdin_text="5 0 0 0 \n" # before closing, write down the seed |
7 | 3965 | external = self.calculator[('full',path)] | 3965 | external = self.calculator[('full',path)] |
9 | 3966 | external.stdin.write(stdin_text) | 3966 | try: |
10 | 3967 | external.stdin.write(stdin_text) | ||
11 | 3968 | except Exception: | ||
12 | 3969 | continue | ||
13 | 3967 | ranmar_state=external.stdout.readline() | 3970 | ranmar_state=external.stdout.readline() |
14 | 3968 | ranmar_file=pjoin(path,'ranmar_state.dat') | 3971 | ranmar_file=pjoin(path,'ranmar_state.dat') |
15 | 3969 | ranmar=open(ranmar_file, 'w') | 3972 | ranmar=open(ranmar_file, 'w') |
16 | 3970 | ranmar.write(ranmar_state) | 3973 | ranmar.write(ranmar_state) |
17 | 3971 | ranmar.close() | 3974 | ranmar.close() |
20 | 3972 | external.stdin.close() | 3975 | try: |
21 | 3973 | external.stdout.close() | 3976 | external.stdin.close() |
22 | 3977 | except Exception: | ||
23 | 3978 | continue | ||
24 | 3979 | try: | ||
25 | 3980 | external.stdout.close() | ||
26 | 3981 | except Exception: | ||
27 | 3982 | continue | ||
28 | 3974 | external.terminate() | 3983 | external.terminate() |
29 | 3975 | del external | 3984 | del external |
30 | 3976 | else: | 3985 | else: |
31 | 3977 | 3986 | ||
32 | === modified file 'MadSpin/interface_madspin.py' | |||
33 | --- MadSpin/interface_madspin.py 2018-06-22 06:52:02 +0000 | |||
34 | +++ MadSpin/interface_madspin.py 2018-11-09 10:32:12 +0000 | |||
35 | @@ -199,10 +199,11 @@ | |||
36 | 199 | 199 | ||
37 | 200 | self.inputfile = inputfile | 200 | self.inputfile = inputfile |
38 | 201 | if self.options['spinmode'] == 'none' and \ | 201 | if self.options['spinmode'] == 'none' and \ |
40 | 202 | (self.options['input_format'] != 'lhe' or (self.options['input_format'] == 'auto' and '.lhe' in inputfile[:-5])): | 202 | (self.options['input_format'] not in ['lhe','auto'] or |
41 | 203 | (self.options['input_format'] == 'auto' and '.lhe' not in inputfile[-7:])): | ||
42 | 203 | self.banner = banner.Banner() | 204 | self.banner = banner.Banner() |
43 | 204 | self.setup_for_pure_decay() | 205 | self.setup_for_pure_decay() |
45 | 205 | return | 206 | return |
46 | 206 | 207 | ||
47 | 207 | if inputfile.endswith('.gz'): | 208 | if inputfile.endswith('.gz'): |
48 | 208 | misc.gunzip(inputfile) | 209 | misc.gunzip(inputfile) |
49 | @@ -984,8 +985,11 @@ | |||
50 | 984 | #misc.sprint(i, particle.pdg, particle.pid) | 985 | #misc.sprint(i, particle.pdg, particle.pid) |
51 | 985 | #misc.sprint(self.final_state, evt_decayfile) | 986 | #misc.sprint(self.final_state, evt_decayfile) |
52 | 986 | # check if we need to decay the particle | 987 | # check if we need to decay the particle |
55 | 987 | if not (particle.pdg in self.final_state or particle.pdg in evt_decayfile): | 988 | if self.final_state and particle.pdg not in self.final_state: |
56 | 988 | continue # nothing to do for this particle | 989 | continue # nothing to do for this particle |
57 | 990 | if particle.pdg not in evt_decayfile: | ||
58 | 991 | continue # nothing to do for this particle | ||
59 | 992 | |||
60 | 989 | # check how the decay need to be done | 993 | # check how the decay need to be done |
61 | 990 | nb_decay = len(evt_decayfile[particle.pdg]) | 994 | nb_decay = len(evt_decayfile[particle.pdg]) |
62 | 991 | if nb_decay == 0: | 995 | if nb_decay == 0: |
63 | @@ -1004,11 +1008,18 @@ | |||
64 | 1004 | cumul = 0 | 1008 | cumul = 0 |
65 | 1005 | for j,events in evt_decayfile[particle.pdg].items(): | 1009 | for j,events in evt_decayfile[particle.pdg].items(): |
66 | 1006 | cumul += events.cross | 1010 | cumul += events.cross |
68 | 1007 | if r < cumul: | 1011 | if r <= cumul: |
69 | 1008 | decay_file = events | 1012 | decay_file = events |
70 | 1009 | decay_file_nb = j | 1013 | decay_file_nb = j |
71 | 1010 | else: | ||
72 | 1011 | break | 1014 | break |
73 | 1015 | else: | ||
74 | 1016 | # security for numerical accuracy issue... (unlikely but better safe) | ||
75 | 1017 | if (cumul-tot)/tot < 1e-5: | ||
76 | 1018 | decay_file = events | ||
77 | 1019 | decay_file_nb = j | ||
78 | 1020 | else: | ||
79 | 1021 | misc.sprint(j,cumul, events.cross, tot, (tot-cumul)/tot) | ||
80 | 1022 | raise Exception | ||
81 | 1012 | 1023 | ||
82 | 1013 | if self.options['new_wgt'] == 'BR': | 1024 | if self.options['new_wgt'] == 'BR': |
83 | 1014 | tot_width = float(self.banner.get('param', 'decay', abs(pdg)).value) | 1025 | tot_width = float(self.banner.get('param', 'decay', abs(pdg)).value) |
84 | @@ -1056,8 +1067,13 @@ | |||
85 | 1056 | if len(hepmc_output) == 0: | 1067 | if len(hepmc_output) == 0: |
86 | 1057 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) | 1068 | hepmc_output.append(lhe_parser.Particle(event=hepmc_output)) |
87 | 1058 | hepmc_output[0].color2 = 0 | 1069 | hepmc_output[0].color2 = 0 |
88 | 1070 | hepmc_output[0].status = -1 | ||
89 | 1071 | hepmc_output.nexternal+=1 | ||
90 | 1059 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) | 1072 | decayed_particle = lhe_parser.Particle(particle, hepmc_output) |
91 | 1073 | decayed_particle.mother1 = hepmc_output[0] | ||
92 | 1074 | decayed_particle.mother2 = hepmc_output[0] | ||
93 | 1060 | hepmc_output.append(decayed_particle) | 1075 | hepmc_output.append(decayed_particle) |
94 | 1076 | hepmc_output.nexternal+=1 | ||
95 | 1061 | decayed_particle.add_decay(decay) | 1077 | decayed_particle.add_decay(decay) |
96 | 1062 | # change the weight associate to the event | 1078 | # change the weight associate to the event |
97 | 1063 | if self.options['new_wgt'] == 'cross-section': | 1079 | if self.options['new_wgt'] == 'cross-section': |
98 | @@ -1075,7 +1091,6 @@ | |||
99 | 1075 | else: | 1091 | else: |
100 | 1076 | hepmc_output.wgt = event.wgt | 1092 | hepmc_output.wgt = event.wgt |
101 | 1077 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal | 1093 | hepmc_output.nexternal = len(hepmc_output) # the append does not update nexternal |
102 | 1078 | hepmc_output.assign_mother() | ||
103 | 1079 | output_lhe.write(str(hepmc_output)) | 1094 | output_lhe.write(str(hepmc_output)) |
104 | 1080 | else: | 1095 | else: |
105 | 1081 | if counter==0: | 1096 | if counter==0: |
106 | @@ -1425,7 +1440,7 @@ | |||
107 | 1425 | if self.options['fixed_order']: | 1440 | if self.options['fixed_order']: |
108 | 1426 | production, counterevt= production[0], production[1:] | 1441 | production, counterevt= production[0], production[1:] |
109 | 1427 | 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: |
111 | 1428 | 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)) |
112 | 1429 | while 1: | 1444 | while 1: |
113 | 1430 | nb_try +=1 | 1445 | nb_try +=1 |
114 | 1431 | 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) |
115 | 1432 | 1447 | ||
116 | === modified file 'MadSpin/src/driver.f' | |||
117 | --- MadSpin/src/driver.f 2017-08-03 18:49:25 +0000 | |||
118 | +++ MadSpin/src/driver.f 2018-11-09 10:32:12 +0000 | |||
119 | @@ -340,10 +340,10 @@ | |||
120 | 340 | if (jac.lt.0d0) then | 340 | if (jac.lt.0d0) then |
121 | 341 | counter2=counter2+1 | 341 | counter2=counter2+1 |
122 | 342 | counter3=counter3+1 | 342 | counter3=counter3+1 |
127 | 343 | c if (counter3.gt.500) then | 343 | if (counter3.gt.500*8*100) then |
128 | 344 | c write(*,*) "500_pts_failed_stop_executation" | 344 | write(*,*) "500_pts_failed_stop_executation" |
129 | 345 | c stop | 345 | stop |
130 | 346 | c endif | 346 | endif |
131 | 347 | if (counter2.ge.8) then ! use another topology to generate PS points | 347 | if (counter2.ge.8) then ! use another topology to generate PS points |
132 | 348 | do k=1,n_max_cg | 348 | do k=1,n_max_cg |
133 | 349 | amp2(k)=0d0 | 349 | amp2(k)=0d0 |
134 | @@ -960,7 +960,7 @@ | |||
135 | 960 | include 'nexternal_prod.inc' | 960 | include 'nexternal_prod.inc' |
136 | 961 | !include 'run.inc' | 961 | !include 'run.inc' |
137 | 962 | c arguments | 962 | c arguments |
139 | 963 | double precision jac,x(36),p(0:3,nexternal), p_prod(0:3,nexternal) | 963 | double precision jac,x(36),p(0:3,nexternal), p_prod(0:3,nexternal_prod) |
140 | 964 | integer itree(2,-nexternal:-1) | 964 | integer itree(2,-nexternal:-1) |
141 | 965 | double precision qmass(-nexternal:0),qwidth(-nexternal:0) | 965 | double precision qmass(-nexternal:0),qwidth(-nexternal:0) |
142 | 966 | c common | 966 | c common |
143 | 967 | 967 | ||
144 | === modified file 'Template/LO/Source/run.inc' | |||
145 | --- Template/LO/Source/run.inc 2018-02-01 22:30:56 +0000 | |||
146 | +++ Template/LO/Source/run.inc 2018-11-09 10:32:12 +0000 | |||
147 | @@ -91,4 +91,7 @@ | |||
148 | 91 | double precision mxxmin4pdg(0:25) | 91 | double precision mxxmin4pdg(0:25) |
149 | 92 | logical mxxpart_antipart(1:25) | 92 | logical mxxpart_antipart(1:25) |
150 | 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, |
151 | 94 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
152 | 95 | \ No newline at end of file | 94 | \ No newline at end of file |
153 | 95 | &etamax4pdg, mxxmin4pdg,mxxpart_antipart | ||
154 | 96 | |||
155 | 97 | double precision small_width_treatment | ||
156 | 98 | common/narrow_width/small_width_treatment | ||
157 | 96 | \ No newline at end of file | 99 | \ No newline at end of file |
158 | 97 | 100 | ||
159 | === modified file 'Template/LO/Source/transpole.f' | |||
160 | --- Template/LO/Source/transpole.f 2016-06-15 22:46:42 +0000 | |||
161 | +++ Template/LO/Source/transpole.f 2018-11-09 10:32:12 +0000 | |||
162 | @@ -28,13 +28,24 @@ | |||
163 | 28 | double precision z,zmin,zmax,xmin,xmax,ez | 28 | double precision z,zmin,zmax,xmin,xmax,ez |
164 | 29 | double precision pole1,width1,x,xc | 29 | double precision pole1,width1,x,xc |
165 | 30 | double precision a,b | 30 | double precision a,b |
166 | 31 | c | ||
167 | 32 | c small width treatment | ||
168 | 33 | c | ||
169 | 34 | double precision small_width_treatment | ||
170 | 35 | common/narrow_width/small_width_treatment | ||
171 | 31 | c----- | 36 | c----- |
172 | 32 | c Begin Code | 37 | c Begin Code |
173 | 33 | c----- | 38 | c----- |
174 | 34 | pole=pole1 | 39 | pole=pole1 |
175 | 35 | width=width1 | 40 | width=width1 |
176 | 41 | |||
177 | 36 | x = x1 | 42 | x = x1 |
178 | 37 | if (pole .gt. 0d0) then | 43 | if (pole .gt. 0d0) then |
179 | 44 | if (width.lt.pole*small_width_treatment)then | ||
180 | 45 | width = pole * small_width_treatment | ||
181 | 46 | jac = jac * width/width1 | ||
182 | 47 | endif | ||
183 | 48 | |||
184 | 38 | zmin = atan((-pole)/width)/width | 49 | zmin = atan((-pole)/width)/width |
185 | 39 | zmax = atan((1d0-pole)/width)/width | 50 | zmax = atan((1d0-pole)/width)/width |
186 | 40 | if (x .gt. del .and. x .lt. 1d0-del) then | 51 | if (x .gt. del .and. x .lt. 1d0-del) then |
187 | @@ -175,7 +186,11 @@ | |||
188 | 175 | c | 186 | c |
189 | 176 | double precision pole1,width1,y1,jac | 187 | double precision pole1,width1,y1,jac |
190 | 177 | real*8 x | 188 | real*8 x |
192 | 178 | 189 | c | |
193 | 190 | c small width treatment | ||
194 | 191 | c | ||
195 | 192 | double precision small_width_treatment | ||
196 | 193 | common/narrow_width/small_width_treatment | ||
197 | 179 | c | 194 | c |
198 | 180 | c Local | 195 | c Local |
199 | 181 | c | 196 | c |
200 | @@ -191,6 +206,10 @@ | |||
201 | 191 | width=width1 | 206 | width=width1 |
202 | 192 | y = y1 | 207 | y = y1 |
203 | 193 | if (pole .gt. 0d0) then !BW | 208 | if (pole .gt. 0d0) then !BW |
204 | 209 | if (width.lt.pole*small_width_treatment)then | ||
205 | 210 | width = pole * small_width_treatment | ||
206 | 211 | jac = jac * width/width1 | ||
207 | 212 | endif | ||
208 | 194 | zmin = atan((-pole)/width)/width | 213 | zmin = atan((-pole)/width)/width |
209 | 195 | zmax = atan((1d0-pole)/width)/width | 214 | zmax = atan((1d0-pole)/width)/width |
210 | 196 | z = atan((y-pole)/width)/width | 215 | z = atan((y-pole)/width)/width |
211 | 197 | 216 | ||
212 | === modified file 'Template/LO/SubProcesses/genps.f' | |||
213 | --- Template/LO/SubProcesses/genps.f 2018-06-20 11:54:42 +0000 | |||
214 | +++ Template/LO/SubProcesses/genps.f 2018-11-09 10:32:12 +0000 | |||
215 | @@ -41,7 +41,7 @@ | |||
216 | 41 | integer mincfig,maxcfig !Range of configurations | 41 | integer mincfig,maxcfig !Range of configurations |
217 | 42 | integer invar | 42 | integer invar |
218 | 43 | double precision wgt !(input and output) | 43 | double precision wgt !(input and output) |
220 | 44 | double precision x(maxdim),p(maxdim) !x,p (output) [p(0:3,nexternal)] | 44 | double precision x(*),p(*) !x,p (output) [p(0:3,nexternal)] |
221 | 45 | c | 45 | c |
222 | 46 | c Local | 46 | c Local |
223 | 47 | c | 47 | c |
224 | @@ -568,7 +568,7 @@ | |||
225 | 568 | if (abs(lpp(1)) .eq. 3) m1 = 0.000511d0 | 568 | if (abs(lpp(1)) .eq. 3) m1 = 0.000511d0 |
226 | 569 | if (abs(lpp(2)) .eq. 3) m2 = 0.000511d0 | 569 | if (abs(lpp(2)) .eq. 3) m2 = 0.000511d0 |
227 | 570 | if (mass_ion(1).ge.0d0) m1 = mass_ion(1) | 570 | if (mass_ion(1).ge.0d0) m1 = mass_ion(1) |
229 | 571 | if (mass_ion(2).ge.0d0) m1 = mass_ion(2) | 571 | if (mass_ion(2).ge.0d0) m2 = mass_ion(2) |
230 | 572 | if(ebeam(1).lt.m1.and.lpp(1).ne.9) ebeam(1)=m1 | 572 | if(ebeam(1).lt.m1.and.lpp(1).ne.9) ebeam(1)=m1 |
231 | 573 | if(ebeam(2).lt.m2.and.lpp(2).ne.9) ebeam(2)=m2 | 573 | if(ebeam(2).lt.m2.and.lpp(2).ne.9) ebeam(2)=m2 |
232 | 574 | pi1(0)=ebeam(1) | 574 | pi1(0)=ebeam(1) |
233 | 575 | 575 | ||
234 | === modified file 'Template/LO/SubProcesses/myamp.f' | |||
235 | --- Template/LO/SubProcesses/myamp.f 2016-12-17 16:26:56 +0000 | |||
236 | +++ Template/LO/SubProcesses/myamp.f 2018-11-09 10:32:12 +0000 | |||
237 | @@ -1,91 +1,3 @@ | |||
238 | 1 | double precision function testamp(p) | ||
239 | 2 | c***************************************************************************** | ||
240 | 3 | c Approximates matrix element by propagators | ||
241 | 4 | c***************************************************************************** | ||
242 | 5 | implicit none | ||
243 | 6 | c | ||
244 | 7 | c Constants | ||
245 | 8 | c | ||
246 | 9 | include 'genps.inc' | ||
247 | 10 | include 'maxconfigs.inc' | ||
248 | 11 | include 'nexternal.inc' | ||
249 | 12 | double precision zero | ||
250 | 13 | parameter (zero = 0d0) | ||
251 | 14 | c | ||
252 | 15 | c Arguments | ||
253 | 16 | c | ||
254 | 17 | double precision p(0:3,nexternal) | ||
255 | 18 | c integer iconfig | ||
256 | 19 | c | ||
257 | 20 | c Local | ||
258 | 21 | c | ||
259 | 22 | double precision xp(0:3,-nexternal:nexternal) | ||
260 | 23 | double precision mpole(-nexternal:0),shat,tsgn | ||
261 | 24 | integer i,j,iconfig | ||
262 | 25 | |||
263 | 26 | double precision prmass(-nexternal:0,lmaxconfigs) | ||
264 | 27 | double precision prwidth(-nexternal:0,lmaxconfigs) | ||
265 | 28 | integer pow(-nexternal:0,lmaxconfigs) | ||
266 | 29 | logical first_time | ||
267 | 30 | c | ||
268 | 31 | c Global | ||
269 | 32 | c | ||
270 | 33 | integer iforest(2,-max_branch:-1,lmaxconfigs) | ||
271 | 34 | common/to_forest/ iforest | ||
272 | 35 | integer mapconfig(0:lmaxconfigs), this_config | ||
273 | 36 | common/to_mconfigs/mapconfig, this_config | ||
274 | 37 | |||
275 | 38 | include 'coupl.inc' | ||
276 | 39 | c | ||
277 | 40 | c External | ||
278 | 41 | c | ||
279 | 42 | double precision dot | ||
280 | 43 | |||
281 | 44 | save prmass,prwidth,pow | ||
282 | 45 | data first_time /.true./ | ||
283 | 46 | c----- | ||
284 | 47 | c Begin Code | ||
285 | 48 | c----- | ||
286 | 49 | iconfig = this_config | ||
287 | 50 | if (first_time) then | ||
288 | 51 | c include 'props.inc' | ||
289 | 52 | first_time=.false. | ||
290 | 53 | endif | ||
291 | 54 | |||
292 | 55 | do i=1,nexternal | ||
293 | 56 | mpole(-i)=0d0 | ||
294 | 57 | do j=0,3 | ||
295 | 58 | xp(j,i)=p(j,i) | ||
296 | 59 | enddo | ||
297 | 60 | enddo | ||
298 | 61 | c mpole(-3) = 174**2 | ||
299 | 62 | c shat = dot(p(0,1),p(0,2))/(1800)**2 | ||
300 | 63 | shat = dot(p(0,1),p(0,2))/(10)**2 | ||
301 | 64 | c shat = 1d0 | ||
302 | 65 | testamp = 1d0 | ||
303 | 66 | tsgn = +1d0 | ||
304 | 67 | do i=-1,-(nexternal-3),-1 !Find all the propagotors | ||
305 | 68 | if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0 | ||
306 | 69 | do j=0,3 | ||
307 | 70 | xp(j,i) = xp(j,iforest(1,i,iconfig)) | ||
308 | 71 | $ +tsgn*xp(j,iforest(2,i,iconfig)) | ||
309 | 72 | enddo | ||
310 | 73 | if (prwidth(i,iconfig) .ne. 0d0 .and. .false.) then | ||
311 | 74 | testamp=testamp/((dot(xp(0,i),xp(0,i)) | ||
312 | 75 | $ -prmass(i,iconfig)**2)**2 | ||
313 | 76 | $ -(prmass(i,iconfig)*prwidth(i,iconfig))**2) | ||
314 | 77 | else | ||
315 | 78 | testamp = testamp/((dot(xp(0,i),xp(0,i)) - | ||
316 | 79 | $ prmass(i,iconfig)**2) | ||
317 | 80 | $ **(pow(i,iconfig))) | ||
318 | 81 | endif | ||
319 | 82 | testamp=testamp*shat**(pow(i,iconfig)) | ||
320 | 83 | c write(*,*) i,iconfig,pow(i,iconfig),prmass(i,iconfig) | ||
321 | 84 | enddo | ||
322 | 85 | c testamp = 1d0/dot(xp(0,-1),xp(0,-1)) | ||
323 | 86 | testamp=abs(testamp) | ||
324 | 87 | c testamp = 1d0 | ||
325 | 88 | end | ||
326 | 89 | 1 | ||
327 | 90 | logical function cut_bw(p) | 2 | logical function cut_bw(p) |
328 | 91 | c***************************************************************************** | 3 | c***************************************************************************** |
329 | @@ -114,6 +26,7 @@ | |||
330 | 114 | 26 | ||
331 | 115 | double precision prmass(-nexternal:0,lmaxconfigs) | 27 | double precision prmass(-nexternal:0,lmaxconfigs) |
332 | 116 | double precision prwidth(-nexternal:0,lmaxconfigs) | 28 | double precision prwidth(-nexternal:0,lmaxconfigs) |
333 | 29 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
334 | 117 | integer pow(-nexternal:0,lmaxconfigs) | 30 | integer pow(-nexternal:0,lmaxconfigs) |
335 | 118 | logical first_time, onshell | 31 | logical first_time, onshell |
336 | 119 | double precision xmass | 32 | double precision xmass |
337 | @@ -152,13 +65,14 @@ | |||
338 | 152 | c | 65 | c |
339 | 153 | double precision dot | 66 | double precision dot |
340 | 154 | 67 | ||
342 | 155 | save prmass,prwidth,pow | 68 | save prmass,prwidth,pow,prwidth_tmp |
343 | 156 | data first_time /.true./ | 69 | data first_time /.true./ |
344 | 157 | c----- | 70 | c----- |
345 | 158 | c Begin Code | 71 | c Begin Code |
346 | 159 | c----- | 72 | c----- |
347 | 160 | cut_bw = .false. !Default is we passed the cut | 73 | cut_bw = .false. !Default is we passed the cut |
348 | 161 | iconfig = this_config | 74 | iconfig = this_config |
349 | 75 | |||
350 | 162 | if (first_time) then | 76 | if (first_time) then |
351 | 163 | include 'props.inc' | 77 | include 'props.inc' |
352 | 164 | nbw = 0 | 78 | nbw = 0 |
353 | @@ -209,10 +123,12 @@ | |||
354 | 209 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) | 123 | c write(*,*) 'xmass',xmass,prmass(i,iconfig) |
355 | 210 | c | 124 | c |
356 | 211 | c Here we set if the BW is "on-shell" for LesHouches | 125 | c Here we set if the BW is "on-shell" for LesHouches |
358 | 212 | c | 126 | c |
359 | 127 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
360 | 128 | |||
361 | 213 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 129 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
364 | 214 | $ bwcutoff*prwidth(i,iconfig).and. | 130 | $ bwcutoff*prwidth_tmp(i,iconfig).and. |
365 | 215 | $ (prwidth(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. | 131 | $ (prwidth_tmp(i,iconfig)/prmass(i,iconfig).lt.0.1d0.or. |
366 | 216 | $ gForceBW(i,iconfig).eq.1)) | 132 | $ gForceBW(i,iconfig).eq.1)) |
367 | 217 | if(onshell)then | 133 | if(onshell)then |
368 | 218 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) | 134 | c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) |
369 | @@ -264,10 +180,10 @@ | |||
370 | 264 | c For decay-chain syntax use BWcutoff here too (22/12/14) | 180 | c For decay-chain syntax use BWcutoff here too (22/12/14) |
371 | 265 | if (gForceBW(i, iconfig).eq.1) then | 181 | if (gForceBW(i, iconfig).eq.1) then |
372 | 266 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 182 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
374 | 267 | $ bwcutoff*prwidth(i,iconfig)) | 183 | $ bwcutoff*prwidth_tmp(i,iconfig)) |
375 | 268 | else | 184 | else |
376 | 269 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. | 185 | onshell = (abs(xmass - prmass(i,iconfig)) .lt. |
378 | 270 | $ 5d0*prwidth(i,iconfig)) | 186 | $ 5d0*prwidth_tmp(i,iconfig)) |
379 | 271 | endif | 187 | endif |
380 | 272 | 188 | ||
381 | 273 | if (onshell .and. (lbw(nbw).eq. 2) .or. | 189 | if (onshell .and. (lbw(nbw).eq. 2) .or. |
382 | @@ -313,6 +229,7 @@ | |||
383 | 313 | 229 | ||
384 | 314 | double precision prmass(-nexternal:0,lmaxconfigs) | 230 | double precision prmass(-nexternal:0,lmaxconfigs) |
385 | 315 | double precision prwidth(-nexternal:0,lmaxconfigs) | 231 | double precision prwidth(-nexternal:0,lmaxconfigs) |
386 | 232 | double precision prwidth_tmp(-nexternal:0,lmaxconfigs) | ||
387 | 316 | integer pow(-nexternal:0,lmaxconfigs) | 233 | integer pow(-nexternal:0,lmaxconfigs) |
388 | 317 | 234 | ||
389 | 318 | integer idup(nexternal,maxproc,maxsproc) | 235 | integer idup(nexternal,maxproc,maxsproc) |
390 | @@ -382,11 +299,21 @@ | |||
391 | 382 | 299 | ||
392 | 383 | c----- | 300 | c----- |
393 | 384 | c Begin Code | 301 | c Begin Code |
395 | 385 | c----- | 302 | c----- |
396 | 303 | iconfig = this_config | ||
397 | 304 | c needs to be initialise to avoid segfault | ||
398 | 305 | do i = -nexternal,-1 | ||
399 | 306 | prwidth(i,iconfig) = 0 | ||
400 | 307 | prmass(i,iconfig) =0 | ||
401 | 308 | enddo | ||
402 | 386 | include 'props.inc' | 309 | include 'props.inc' |
403 | 387 | c etmin = 10 | 310 | c etmin = 10 |
404 | 388 | nt = 0 | 311 | nt = 0 |
406 | 389 | iconfig = this_config | 312 | do i = -nexternal,-1 |
407 | 313 | prwidth_tmp(i,iconfig) = max(prwidth(i,iconfig), prmass(i,iconfig)*small_width_treatment) | ||
408 | 314 | enddo | ||
409 | 315 | |||
410 | 316 | |||
411 | 390 | mtot = 0d0 | 317 | mtot = 0d0 |
412 | 391 | etot = 0d0 !Total energy needed | 318 | etot = 0d0 !Total energy needed |
413 | 392 | spmass = 0d0 !Keep track of BW masses for shat | 319 | spmass = 0d0 !Keep track of BW masses for shat |
414 | @@ -423,7 +350,7 @@ | |||
415 | 423 | c Look for identical particles to map radiation processes | 350 | c Look for identical particles to map radiation processes |
416 | 424 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), | 351 | call idenparts(iden_part, iforest(1,-max_branch,iconfig), |
417 | 425 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), | 352 | $ sprop(1,-max_branch,iconfig), gForceBW(-max_branch,iconfig), |
419 | 426 | $ prwidth(-nexternal,iconfig)) | 353 | $ prwidth_tmp(-nexternal,iconfig)) |
420 | 427 | 354 | ||
421 | 428 | c Start loop over propagators | 355 | c Start loop over propagators |
422 | 429 | do i=-1,-(nexternal-3),-1 | 356 | do i=-1,-(nexternal-3),-1 |
423 | @@ -446,15 +373,15 @@ | |||
424 | 446 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) | 373 | xm(i)=max(xm(i),max(xqcutij(l1,l2),0d0)) |
425 | 447 | endif | 374 | endif |
426 | 448 | c write(*,*) 'iconfig,i',iconfig,i | 375 | c write(*,*) 'iconfig,i',iconfig,i |
429 | 449 | c write(*,*) prwidth(i,iconfig),prmass(i,iconfig) | 376 | c write(*,*) prwidth_tmp(i,iconfig),prmass(i,iconfig) |
430 | 450 | if (prwidth(i,iconfig) .gt. 0 ) then | 377 | if (prwidth_tmp(i,iconfig) .gt. 0 ) then |
431 | 451 | nbw=nbw+1 | 378 | nbw=nbw+1 |
432 | 452 | c JA 6/8/2011 Set xe(i) for resonances | 379 | c JA 6/8/2011 Set xe(i) for resonances |
433 | 453 | if (gforcebw(i,iconfig).eq.1) then | 380 | if (gforcebw(i,iconfig).eq.1) then |
435 | 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)) |
436 | 455 | bwcut_for_PS(i) = bwcutoff | 382 | bwcut_for_PS(i) = bwcutoff |
437 | 456 | else if (lbw(nbw).eq.1) then | 383 | else if (lbw(nbw).eq.1) then |
439 | 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)) |
440 | 458 | bwcut_for_PS(i) = 5d0 | 385 | bwcut_for_PS(i) = 5d0 |
441 | 459 | else | 386 | else |
442 | 460 | bwcut_for_PS(i) = 5d0 | 387 | bwcut_for_PS(i) = 5d0 |
443 | @@ -465,19 +392,19 @@ | |||
444 | 465 | c Either: required onshell and daughter masses too large | 392 | c Either: required onshell and daughter masses too large |
445 | 466 | c Or: forced and daughter masses too large | 393 | c Or: forced and daughter masses too large |
446 | 467 | c Or: required offshell and forced | 394 | c Or: required offshell and forced |
448 | 468 | if(prwidth(i,iconfig) .gt. 0.and. | 395 | if(prwidth_tmp(i,iconfig) .gt. 0.and. |
449 | 469 | $ (lbw(nbw).eq.1.and. | 396 | $ (lbw(nbw).eq.1.and. |
452 | 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) |
453 | 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)) |
454 | 472 | $ .or.gforcebw(i,iconfig).eq.1.and. | 399 | $ .or.gforcebw(i,iconfig).eq.1.and. |
456 | 473 | $ prmass(i,iconfig)+bwcutoff*prwidth(i,iconfig).lt.xm(i) | 400 | $ prmass(i,iconfig)+bwcutoff*prwidth_tmp(i,iconfig).lt.xm(i) |
457 | 474 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) | 401 | $ .or.lbw(nbw).eq.2.and.gforcebw(i,iconfig).eq.1)) |
458 | 475 | $ then | 402 | $ then |
459 | 476 | c Write results.dat and quit | 403 | c Write results.dat and quit |
460 | 477 | call write_null_results() | 404 | call write_null_results() |
461 | 478 | stop | 405 | stop |
462 | 479 | endif | 406 | endif |
464 | 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. |
465 | 481 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat | 408 | if (i .eq. -(nexternal-(nincoming+1))) then !This is s-hat |
466 | 482 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 | 409 | j = 3*(nexternal-2)-4+1 !set i to ndim+1 |
467 | 483 | c----- | 410 | c----- |
468 | @@ -489,14 +416,14 @@ | |||
469 | 489 | $ .or. lbw(nbw).eq.1) then | 416 | $ .or. lbw(nbw).eq.1) then |
470 | 490 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) | 417 | write(*,*) 'Setting PDF BW',j,nbw,prmass(i,iconfig) |
471 | 491 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 418 | spole(j)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
473 | 492 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 419 | swidth(j) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
474 | 493 | endif | 420 | endif |
476 | 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) |
477 | 495 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then | 422 | $ .and. iden_part(i).eq.0 .or. lbw(nbw).eq.1) then |
478 | 496 | c JA 02/13 Only allow BW if xm below M+5*Gamma | 423 | c JA 02/13 Only allow BW if xm below M+5*Gamma |
479 | 497 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) | 424 | write(*,*) 'Setting BW',i,nbw,prmass(i,iconfig) |
480 | 498 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot | 425 | spole(-i)=prmass(i,iconfig)*prmass(i,iconfig)/stot |
482 | 499 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot | 426 | swidth(-i) = prwidth(i,iconfig)*prmass(i,iconfig)/stot ! keep the real width here (important for the jacobian) |
483 | 500 | endif | 427 | endif |
484 | 501 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) | 428 | c JA 4/1/2011 Set grid in case there is no BW (radiation process) |
485 | 502 | if (swidth(-i) .eq. 0d0 .and. | 429 | if (swidth(-i) .eq. 0d0 .and. |
486 | @@ -509,7 +436,7 @@ | |||
487 | 509 | c Set spmass for BWs | 436 | c Set spmass for BWs |
488 | 510 | if (swidth(-i) .ne. 0d0) | 437 | if (swidth(-i) .ne. 0d0) |
489 | 511 | $ spmass=spmass-xm(i) + | 438 | $ spmass=spmass-xm(i) + |
491 | 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)) |
492 | 513 | else !1/x^pow | 440 | else !1/x^pow |
493 | 514 | a=prmass(i,iconfig)**2/stot | 441 | a=prmass(i,iconfig)**2/stot |
494 | 515 | c JA 4/1/2011 always set grid | 442 | c JA 4/1/2011 always set grid |
495 | @@ -530,7 +457,7 @@ | |||
496 | 530 | endif | 457 | endif |
497 | 531 | endif | 458 | endif |
498 | 532 | if (xo.eq.0d0) xo=1d0/stot | 459 | if (xo.eq.0d0) xo=1d0/stot |
500 | 533 | c if (prwidth(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then | 460 | c if (prwidth_tmp(i, iconfig) .eq. 0d0.or.iden_part(i).gt.0) then |
501 | 534 | call setgrid(-i,xo,a,1) | 461 | call setgrid(-i,xo,a,1) |
502 | 535 | c else | 462 | c else |
503 | 536 | c write(*,*) 'Using flat grid for BW',i,nbw, | 463 | c write(*,*) 'Using flat grid for BW',i,nbw, |
504 | @@ -610,7 +537,7 @@ | |||
505 | 610 | spole(i)= -2.0d0 ! 1/s pole | 537 | spole(i)= -2.0d0 ! 1/s pole |
506 | 611 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot | 538 | write(*,*) "Transforming s_hat 1/s ",i,xo, smin, stot |
507 | 612 | else | 539 | else |
509 | 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) |
510 | 614 | endif | 541 | endif |
511 | 615 | endif | 542 | endif |
512 | 616 | 543 | ||
513 | 617 | 544 | ||
514 | === modified file 'Template/LO/SubProcesses/reweight.f' | |||
515 | --- Template/LO/SubProcesses/reweight.f 2018-06-08 14:42:29 +0000 | |||
516 | +++ Template/LO/SubProcesses/reweight.f 2018-11-09 10:32:12 +0000 | |||
517 | @@ -6,6 +6,7 @@ | |||
518 | 6 | c ---- | 6 | c ---- |
519 | 7 | c p p > t t~ (up to 2jet) | 7 | c p p > t t~ (up to 2jet) |
520 | 8 | c p p > w+ (up to 3 jet) | 8 | c p p > w+ (up to 3 jet) |
521 | 9 | c p p > j j w+ (ordering seems important) | ||
522 | 9 | c p p > z t t~ j j (no MLM needed) | 10 | c p p > z t t~ j j (no MLM needed) |
523 | 10 | c | 11 | c |
524 | 11 | c | 12 | c |
525 | @@ -243,13 +244,15 @@ | |||
526 | 243 | integer iddgluon, iddother, idgluon, idother | 244 | integer iddgluon, iddother, idgluon, idother |
527 | 244 | logical isqcd | 245 | logical isqcd |
528 | 245 | external isqcd | 246 | external isqcd |
529 | 247 | integer get_color | ||
530 | 248 | external get_color | ||
531 | 246 | 249 | ||
532 | 247 | idmo=ipdg(imo) | 250 | idmo=ipdg(imo) |
533 | 248 | idda1=ipdg(ida1) | 251 | idda1=ipdg(ida1) |
534 | 249 | idda2=ipdg(ida2) | 252 | idda2=ipdg(ida2) |
535 | 250 | 253 | ||
536 | 251 | if (btest(mlevel,4)) then | 254 | if (btest(mlevel,4)) then |
538 | 252 | write(*,*) ' updating ipart for: ',ida1,ida2,' -> ',imo | 255 | write(*,*) 'updating ipart for: ',ida1,ida2,' -> ',imo |
539 | 253 | endif | 256 | endif |
540 | 254 | 257 | ||
541 | 255 | if (btest(mlevel,4)) then | 258 | if (btest(mlevel,4)) then |
542 | @@ -291,7 +294,6 @@ | |||
543 | 291 | $ ' (',ipdg(imo),')' | 294 | $ ' (',ipdg(imo),')' |
544 | 292 | return | 295 | return |
545 | 293 | endif | 296 | endif |
546 | 294 | |||
547 | 295 | c FS clustering | 297 | c FS clustering |
548 | 296 | c Transmit parton PDG code for parton vertex | 298 | c Transmit parton PDG code for parton vertex |
549 | 297 | if(isjet(idmo)) then | 299 | if(isjet(idmo)) then |
550 | @@ -370,14 +372,26 @@ | |||
551 | 370 | c quark -> gluon-quark or Z-quark or h-quark or W-quark | 372 | c quark -> gluon-quark or Z-quark or h-quark or W-quark |
552 | 371 | ipart(1,imo)=ipart(1,ida2) | 373 | ipart(1,imo)=ipart(1,ida2) |
553 | 372 | ipart(2,imo)=0 | 374 | ipart(2,imo)=0 |
555 | 373 | else | 375 | else if(iabs(get_color(idmo)).eq.3.and.iabs(get_color(idda1)).eq.3.and.get_color(idda2).eq.1) then |
556 | 376 | c exotic q > q' Scalar | ||
557 | 377 | ipart(1,imo)=ipart(1,ida1) | ||
558 | 378 | ipart(2,imo)=0 | ||
559 | 379 | else if(iabs(get_color(idmo)).eq.3.and.iabs(get_color(idda2)).eq.3.and.get_color(idda1).eq.1) then | ||
560 | 380 | c exotic q > Scalar q' | ||
561 | 381 | ipart(1,imo)=ipart(1,ida2) | ||
562 | 382 | ipart(2,imo)=0 | ||
563 | 383 | else if (get_color(idmo).eq.1) then | ||
564 | 374 | c Color singlet | 384 | c Color singlet |
565 | 375 | ipart(1,imo)=ipart(1,ida1) | 385 | ipart(1,imo)=ipart(1,ida1) |
566 | 376 | ipart(2,imo)=ipart(1,ida2) | 386 | ipart(2,imo)=ipart(1,ida2) |
567 | 387 | else | ||
568 | 388 | write(*,*) idmo,'>', idda1, idda2, 'color', get_color(idmo),'>', get_color(idda1), get_color(idda2) | ||
569 | 389 | write(*,*) "failed for ipartupdate. Please retry without MLM/default dynamical scale" | ||
570 | 390 | stop 3 | ||
571 | 377 | endif | 391 | endif |
572 | 378 | 392 | ||
573 | 379 | if (btest(mlevel,4)) then | 393 | if (btest(mlevel,4)) then |
575 | 380 | write(*,*) ' -> ',(ipart(i,imo),i=1,2),' (',ipdg(imo),')' | 394 | write(*,*) 'XY -> ',(ipart(i,imo),i=1,2),' (',ipdg(imo),')' |
576 | 381 | endif | 395 | endif |
577 | 382 | 396 | ||
578 | 383 | return | 397 | return |
579 | @@ -695,6 +709,7 @@ | |||
580 | 695 | c increasecode gives whether we should increase jcode at next vertex | 709 | c increasecode gives whether we should increase jcode at next vertex |
581 | 696 | increasecode=.false. | 710 | increasecode=.false. |
582 | 697 | do n=1,nexternal-2 | 711 | do n=1,nexternal-2 |
583 | 712 | c write(*,*) 'QCD jet status (before n= ',n,'):',(iqjets(i),i=3,nexternal) | ||
584 | 698 | do i=1,2 ! index of the child in the interaction | 713 | do i=1,2 ! index of the child in the interaction |
585 | 699 | do j=1,2 ! j index of the beam | 714 | do j=1,2 ! j index of the beam |
586 | 700 | if(idacl(n,i).eq.ibeam(j))then | 715 | if(idacl(n,i).eq.ibeam(j))then |
587 | @@ -769,7 +784,6 @@ | |||
588 | 769 | pdgm = ipdgcl(imocl(n),igraphs(1),iproc) | 784 | pdgm = ipdgcl(imocl(n),igraphs(1),iproc) |
589 | 770 | pdgid1 = ipdgcl(idacl(n,1),igraphs(1),iproc) | 785 | pdgid1 = ipdgcl(idacl(n,1),igraphs(1),iproc) |
590 | 771 | pdgid2 = ipdgcl(idacl(n,2),igraphs(1),iproc) | 786 | pdgid2 = ipdgcl(idacl(n,2),igraphs(1),iproc) |
591 | 772 | |||
592 | 773 | if (.not.isqcd(pdgm).and..not.isqcd(pdgid1).and..not.isqcd(pdgid2)) then | 787 | if (.not.isqcd(pdgm).and..not.isqcd(pdgid1).and..not.isqcd(pdgid2)) then |
593 | 774 | ! this is to avoid to do weird stuff for w+ w- z (or h h h) | 788 | ! this is to avoid to do weird stuff for w+ w- z (or h h h) |
594 | 775 | ! this fix an issue for qq_zttxqq G1594.08 | 789 | ! this fix an issue for qq_zttxqq G1594.08 |
595 | @@ -914,8 +928,8 @@ | |||
596 | 914 | endif | 928 | endif |
597 | 915 | enddo | 929 | enddo |
598 | 916 | njetstore(iconfig)=njets | 930 | njetstore(iconfig)=njets |
601 | 917 | if (btest(mlevel,4)) | 931 | if (btest(mlevel,4)) |
602 | 918 | $ write(*,*) 'Storing jets: ',(iqjetstore(i,iconfig),i=1,njets) | 932 | $ write(*,*) 'Storing jets: ',(iqjetstore(i,iconfig),i=1,njets) |
603 | 919 | c Recluster without requiring chcluster | 933 | c Recluster without requiring chcluster |
604 | 920 | goto 100 | 934 | goto 100 |
605 | 921 | else | 935 | else |
606 | 922 | 936 | ||
607 | === modified file 'Template/NLO/MCatNLO/Makefile_MadFKS' | |||
608 | --- Template/NLO/MCatNLO/Makefile_MadFKS 2016-02-24 00:19:50 +0000 | |||
609 | +++ Template/NLO/MCatNLO/Makefile_MadFKS 2018-11-09 10:32:12 +0000 | |||
610 | @@ -1,7 +1,7 @@ | |||
611 | 1 | -include ../../Source/make_opts | 1 | -include ../../Source/make_opts |
612 | 2 | 2 | ||
613 | 3 | DEBUG= | 3 | DEBUG= |
615 | 4 | FF=$(FC) $(FFLAGS) $(DEBUG) | 4 | FF=$(FC) $(FFLAGS) $(DEBUG) -std=legacy |
616 | 5 | CPP=$(CXX) $(CXXFLAGS) $(DEBUG) $(INCLOPTION) | 5 | CPP=$(CXX) $(CXXFLAGS) $(DEBUG) $(INCLOPTION) |
617 | 6 | CC=$(CXX) $(CFLAGS) $(DEBUG) $(INCLOPTION) | 6 | CC=$(CXX) $(CFLAGS) $(DEBUG) $(INCLOPTION) |
618 | 7 | 7 | ||
619 | 8 | 8 | ||
620 | === modified file 'Template/NLO/SubProcesses/check_poles.f' | |||
621 | --- Template/NLO/SubProcesses/check_poles.f 2017-06-18 20:58:19 +0000 | |||
622 | +++ Template/NLO/SubProcesses/check_poles.f 2018-11-09 10:32:12 +0000 | |||
623 | @@ -19,7 +19,7 @@ | |||
624 | 19 | include 'genps.inc' | 19 | include 'genps.inc' |
625 | 20 | include 'nexternal.inc' | 20 | include 'nexternal.inc' |
626 | 21 | include 'nFKSconfigs.inc' | 21 | include 'nFKSconfigs.inc' |
628 | 22 | double precision p(0:3, nexternal), prambo(0:3, nexternal) | 22 | double precision p(0:3, nexternal), prambo(0:3,100) |
629 | 23 | double precision p_born(0:3,nexternal-1) | 23 | double precision p_born(0:3,nexternal-1) |
630 | 24 | common/pborn/p_born | 24 | common/pborn/p_born |
631 | 25 | double precision pswgt | 25 | double precision pswgt |
632 | @@ -49,7 +49,7 @@ | |||
633 | 49 | include 'coupl.inc' | 49 | include 'coupl.inc' |
634 | 50 | include 'q_es.inc' | 50 | include 'q_es.inc' |
635 | 51 | integer nsqso | 51 | integer nsqso |
637 | 52 | double precision pmass(nexternal), pmass_rambo(nexternal) | 52 | double precision pmass(nexternal), pmass_rambo(100) |
638 | 53 | integer nfail | 53 | integer nfail |
639 | 54 | logical first_time | 54 | logical first_time |
640 | 55 | data first_time/.TRUE./ | 55 | data first_time/.TRUE./ |
641 | 56 | 56 | ||
642 | === modified file 'Template/NLO/SubProcesses/combine_plots_FO.sh' | |||
643 | --- Template/NLO/SubProcesses/combine_plots_FO.sh 2013-05-25 12:52:41 +0000 | |||
644 | +++ Template/NLO/SubProcesses/combine_plots_FO.sh 2018-11-09 10:32:12 +0000 | |||
645 | @@ -1,6 +1,4 @@ | |||
646 | 1 | #!/bin/bash | 1 | #!/bin/bash |
647 | 2 | TD=td_mac_intel | ||
648 | 3 | PSOPEN=open | ||
649 | 4 | 2 | ||
650 | 5 | # $? is the value of last executed command. A call to this function | 3 | # $? is the value of last executed command. A call to this function |
651 | 6 | # after a failure will cause the program to quit the script | 4 | # after a failure will cause the program to quit the script |
652 | @@ -15,126 +13,74 @@ | |||
653 | 15 | fi | 13 | fi |
654 | 16 | } | 14 | } |
655 | 17 | 15 | ||
663 | 18 | thisdir=`pwd` | 16 | function combine { |
664 | 19 | if [ -f $thisdir/MADatNLO.top ] | 17 | counter=0 |
665 | 20 | then | 18 | i=1 |
659 | 21 | rm -f $thisdir/MADatNLO*.top | ||
660 | 22 | fi | ||
661 | 23 | make read40 | ||
662 | 24 | EXENAME=$thisdir/read40 | ||
666 | 25 | echo -n "" > dir | 19 | echo -n "" > dir |
700 | 26 | counterp=0 | 20 | for plot_file in "${@:2}" ; do |
701 | 27 | for p in P* ; do | 21 | counter=$(($counter + 1)) |
702 | 28 | cd $thisdir | 22 | echo $plot_file >> dir |
703 | 29 | cd $p | 23 | if [[ $(($counter % 40)) == 0 ]]; then |
704 | 30 | rm -f MADatNLO* | 24 | echo -n "" > dir2 |
705 | 31 | rm -f *read40*.out | 25 | echo "40" > dir2 |
673 | 32 | echo -n "" > dir | ||
674 | 33 | counter=0 | ||
675 | 34 | i=1 | ||
676 | 35 | for g in $* ; do | ||
677 | 36 | if [ ! -f $g/MADatNLO*.top ] | ||
678 | 37 | then | ||
679 | 38 | echo "No topdrawer file in $p/$g" | ||
680 | 39 | else | ||
681 | 40 | counter=$(($counter + 1)) | ||
682 | 41 | echo $g"/MADatNLO.top" >> dir | ||
683 | 42 | if [[ $(($counter % 40)) == 0 ]]; then | ||
684 | 43 | echo -n "" > dir2 | ||
685 | 44 | echo "40" > dir2 | ||
686 | 45 | cat dir >> dir2 | ||
687 | 46 | $EXENAME < dir2 | ||
688 | 47 | teststatus Failure in step 1 | ||
689 | 48 | rm -f dir | ||
690 | 49 | rm -f dir2 | ||
691 | 50 | mv fort.88 MADatNLO$i\.top | ||
692 | 51 | mv read40.out "S1read40_"$i\.out | ||
693 | 52 | i=$(($i + 1)) | ||
694 | 53 | echo -n "" > dir | ||
695 | 54 | fi | ||
696 | 55 | fi | ||
697 | 56 | done | ||
698 | 57 | if [[ $(($counter % 40)) != 0 ]] ; then | ||
699 | 58 | echo $(($counter % 40)) > dir2 | ||
706 | 59 | cat dir >> dir2 | 26 | cat dir >> dir2 |
712 | 60 | while [[ $(($counter % 40)) -ne 0 ]]; do | 27 | ./read40 < dir2 |
713 | 61 | counter=$[$counter-1] | 28 | teststatus Failure in step 1 |
709 | 62 | done | ||
710 | 63 | $EXENAME < dir2 | ||
711 | 64 | teststatus Failure in step 2 | ||
714 | 65 | rm -f dir | 29 | rm -f dir |
715 | 66 | rm -f dir2 | 30 | rm -f dir2 |
766 | 67 | mv fort.88 MADatNLO$i\.top | 31 | mv fort.88 $1_$i\.top |
767 | 68 | mv read40.out "S2read40_"$i\.out | 32 | mv read40.out "S1read40_"$1_$i\.out |
768 | 69 | fi | 33 | i=$(($i + 1)) |
769 | 70 | 34 | echo -n "" > dir | |
770 | 71 | counter=0 | 35 | fi |
771 | 72 | for m in MADatNLO*.top ; do | 36 | done |
772 | 73 | counter=$[$counter+1] | 37 | if [[ $(($counter % 40)) != 0 ]] ; then |
773 | 74 | echo $m >> dir | 38 | echo $(($counter % 40)) > dir2 |
774 | 75 | done | 39 | cat dir >> dir2 |
775 | 76 | if [[ $counter -gt 1 ]] ; then | 40 | ./read40 < dir2 |
776 | 77 | echo $counter > dir2 | 41 | teststatus Failure in step 2 |
727 | 78 | cat dir >> dir2 | ||
728 | 79 | $EXENAME < dir2 | ||
729 | 80 | teststatus Failure in step 3 | ||
730 | 81 | rm -f dir2 | ||
731 | 82 | mv fort.88 MADatNLO.top | ||
732 | 83 | mv read40.out S3read40.out | ||
733 | 84 | else | ||
734 | 85 | mv MADatNLO1.top MADatNLO.top | ||
735 | 86 | fi | ||
736 | 87 | rm -f dir | ||
737 | 88 | cd $thisdir | ||
738 | 89 | counterp=$(($counterp + 1)) | ||
739 | 90 | echo $p"/MADatNLO.top" >> dir | ||
740 | 91 | echo $counterp $p "done" | ||
741 | 92 | done | ||
742 | 93 | |||
743 | 94 | cd $thisdir | ||
744 | 95 | make split40 | ||
745 | 96 | ./split40 | ||
746 | 97 | |||
747 | 98 | i=0 | ||
748 | 99 | #pdir* are created by split | ||
749 | 100 | for p in pdir* ; do | ||
750 | 101 | i=$(($i+1)) | ||
751 | 102 | $EXENAME < $p | ||
752 | 103 | teststatus Failure in step 4 | ||
753 | 104 | mv fort.88 MADatNLO$i\.top | ||
754 | 105 | mv read40.out "S4read40_"$i\.out | ||
755 | 106 | rm $p | ||
756 | 107 | echo $i $p "done" | ||
757 | 108 | done | ||
758 | 109 | |||
759 | 110 | if [[ $i -gt 1 ]] ; then | ||
760 | 111 | echo $i > dir2 | ||
761 | 112 | for p in MADatNLO*.top ; do | ||
762 | 113 | echo $p >>dir2 | ||
763 | 114 | done | ||
764 | 115 | $EXENAME < dir2 | ||
765 | 116 | teststatus Failure in step 5 | ||
777 | 117 | rm -f dir | 42 | rm -f dir |
778 | 118 | rm -f dir2 | 43 | rm -f dir2 |
781 | 119 | mv fort.88 MADatNLO.top | 44 | mv fort.88 $1_$i\.top |
782 | 120 | mv read40.out S5read40.out | 45 | mv read40.out "S2read40_"$1_$i\.out |
783 | 46 | fi | ||
784 | 47 | } | ||
785 | 48 | |||
786 | 49 | make read40 | ||
787 | 50 | rm -f MADatNLO*.top | ||
788 | 51 | |||
789 | 52 | if [ "$#" -gt 64000 ]; then | ||
790 | 53 | combine "MADatNLO_A" "$@" | ||
791 | 54 | combine "MADatNLO_B" MADatNLO_A*.top | ||
792 | 55 | combine "MADatNLO_C" MADatNLO_B*.top | ||
793 | 56 | combine "MADatNLO_D" MADatNLO_C*.top | ||
794 | 57 | mv MADatNLO_D_1.top MADatNLO.top | ||
795 | 58 | elif [ "$#" -gt 1600 ]; then | ||
796 | 59 | combine "MADatNLO_A" "$@" | ||
797 | 60 | combine "MADatNLO_B" MADatNLO_A*.top | ||
798 | 61 | combine "MADatNLO_C" MADatNLO_B*.top | ||
799 | 62 | mv MADatNLO_C_1.top MADatNLO.top | ||
800 | 63 | elif [ "$#" -gt 40 ]; then | ||
801 | 64 | combine "MADatNLO_A" "$@" | ||
802 | 65 | combine "MADatNLO_B" MADatNLO_A*.top | ||
803 | 66 | mv MADatNLO_B_1.top MADatNLO.top | ||
804 | 67 | elif [ "$#" -gt 1 ]; then | ||
805 | 68 | combine "MADatNLO_A" "$@" | ||
806 | 69 | mv MADatNLO_A_1.top MADatNLO.top | ||
807 | 121 | else | 70 | else |
809 | 122 | mv MADatNLO1.top MADatNLO.top | 71 | cp $1 MADatNLO.top |
810 | 123 | fi | 72 | fi |
811 | 124 | 73 | ||
813 | 125 | if [ -f $thisdir/read40.errors ] | 74 | |
814 | 75 | if [ -f read40.errors ] | ||
815 | 126 | then | 76 | then |
817 | 127 | rm -f $thisdir/read40.errors | 77 | rm -f read40.errors |
818 | 128 | fi | 78 | fi |
822 | 129 | find . -name S"*"read40"*".out -exec fgrep -il "READ40 ERROR READ40 ERROR" {} \; > $thisdir/read40.errors | 79 | |
823 | 130 | 80 | find . -name S"*"read40"*".out -exec fgrep -il "READ40 ERROR READ40 ERROR" {} \; > read40.errors | |
824 | 131 | if [ ! -s $thisdir/read40.errors ] ; then | 81 | |
825 | 82 | if [ ! -s read40.errors ] ; then | ||
826 | 132 | echo 'no errors found' | 83 | echo 'no errors found' |
827 | 133 | else | 84 | else |
828 | 134 | echo 'ERRORS! see read40.errors for details' | 85 | echo 'ERRORS! see read40.errors for details' |
829 | 135 | fi | 86 | fi |
830 | 136 | |||
831 | 137 | #./NLO_Born3.py | ||
832 | 138 | #$TD MADatNLO_combined.top "POSTSCR,ORIENT=3" | ||
833 | 139 | #$PSOPEN MADatNLO_combined.ps | ||
834 | 140 | ##td2pdf MADatNLO_con | ||
835 | 141 | 87 | ||
836 | === modified file 'Template/NLO/SubProcesses/driver_mintFO.f' | |||
837 | --- Template/NLO/SubProcesses/driver_mintFO.f 2017-09-21 13:47:31 +0000 | |||
838 | +++ Template/NLO/SubProcesses/driver_mintFO.f 2018-11-09 10:32:12 +0000 | |||
839 | @@ -48,7 +48,7 @@ | |||
840 | 48 | include "mint.inc" | 48 | include "mint.inc" |
841 | 49 | integer nhits_in_grids(maxchannels) | 49 | integer nhits_in_grids(maxchannels) |
842 | 50 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals | 50 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals |
844 | 51 | $ ,ndimmax,maxchannels),ymax_virt(maxchannels),ans(nintegrals | 51 | $ ,ndimmax,maxchannels),ymax_virt(0:maxchannels),ans(nintegrals |
845 | 52 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals | 52 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals |
846 | 53 | $ ,0:maxchannels),x(ndimmax),itmax_fl | 53 | $ ,0:maxchannels),x(ndimmax),itmax_fl |
847 | 54 | integer ixi_i,iphi_i,iy_ij,vn | 54 | integer ixi_i,iphi_i,iy_ij,vn |
848 | 55 | 55 | ||
849 | === modified file 'Template/NLO/SubProcesses/driver_mintMC.f' | |||
850 | --- Template/NLO/SubProcesses/driver_mintMC.f 2017-09-21 13:47:31 +0000 | |||
851 | +++ Template/NLO/SubProcesses/driver_mintMC.f 2018-11-09 10:32:12 +0000 | |||
852 | @@ -55,7 +55,7 @@ | |||
853 | 55 | common /event_normalisation/event_norm | 55 | common /event_normalisation/event_norm |
854 | 56 | c For MINT: | 56 | c For MINT: |
855 | 57 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals | 57 | real* 8 xgrid(0:nintervals,ndimmax,maxchannels),ymax(nintervals |
857 | 58 | $ ,ndimmax,maxchannels),ymax_virt(maxchannels),ans(nintegrals | 58 | $ ,ndimmax,maxchannels),ymax_virt(0:maxchannels),ans(nintegrals |
858 | 59 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals | 59 | $ ,0:maxchannels),unc(nintegrals,0:maxchannels),chi2(nintegrals |
859 | 60 | $ ,0:maxchannels),x(ndimmax) | 60 | $ ,0:maxchannels),x(ndimmax) |
860 | 61 | integer ixi_i,iphi_i,iy_ij,vn,nhits_in_grids(maxchannels) | 61 | integer ixi_i,iphi_i,iy_ij,vn,nhits_in_grids(maxchannels) |
861 | 62 | 62 | ||
862 | === modified file 'Template/NLO/SubProcesses/makefile' | |||
863 | --- Template/NLO/SubProcesses/makefile 2017-06-15 16:22:23 +0000 | |||
864 | +++ Template/NLO/SubProcesses/makefile 2018-11-09 10:32:12 +0000 | |||
865 | @@ -7,9 +7,6 @@ | |||
866 | 7 | # Files for the read40 combiner of top drawer files | 7 | # Files for the read40 combiner of top drawer files |
867 | 8 | READ40=read40.o | 8 | READ40=read40.o |
868 | 9 | 9 | ||
869 | 10 | # Files for the split40 splitter of top drawer files | ||
870 | 11 | SPLIT40=split40.o | ||
871 | 12 | |||
872 | 13 | # Files to collect all the events in the separate integration channels into a single file | 10 | # Files to collect all the events in the separate integration channels into a single file |
873 | 14 | COLLECT_EVENTS=collect_events.o handling_lhe_events.o fill_MC_mshell.o | 11 | COLLECT_EVENTS=collect_events.o handling_lhe_events.o fill_MC_mshell.o |
874 | 15 | 12 | ||
875 | @@ -21,9 +18,6 @@ | |||
876 | 21 | read40: $(READ40) | 18 | read40: $(READ40) |
877 | 22 | $(FC) $(LDFLAGS) -o read40 $(READ40) | 19 | $(FC) $(LDFLAGS) -o read40 $(READ40) |
878 | 23 | 20 | ||
879 | 24 | split40: $(SPLIT40) | ||
880 | 25 | $(FC) $(LDFLAGS) -o split40 $(SPLIT40) | ||
881 | 26 | |||
882 | 27 | collect_events: $(COLLECT_EVENTS) $(LIBS) | 21 | collect_events: $(COLLECT_EVENTS) $(LIBS) |
883 | 28 | $(FC) -o collect_events $(COLLECT_EVENTS) $(LINKLIBS) $(LDFLAGS) | 22 | $(FC) -o collect_events $(COLLECT_EVENTS) $(LINKLIBS) $(LDFLAGS) |
884 | 29 | rm handling_lhe_events.o | 23 | rm handling_lhe_events.o |
885 | 30 | 24 | ||
886 | === modified file 'Template/NLO/SubProcesses/mint-integrator2.f' | |||
887 | --- Template/NLO/SubProcesses/mint-integrator2.f 2017-05-09 14:07:18 +0000 | |||
888 | +++ Template/NLO/SubProcesses/mint-integrator2.f 2018-11-09 10:32:12 +0000 | |||
889 | @@ -77,7 +77,7 @@ | |||
890 | 77 | $ ,ans(nintegrals,0:maxchannels),unc(nintegrals,0:maxchannels) | 77 | $ ,ans(nintegrals,0:maxchannels),unc(nintegrals,0:maxchannels) |
891 | 78 | $ ,ans3(nintegrals,3),unc3(nintegrals,3),ans_l3(nintegrals) | 78 | $ ,ans3(nintegrals,3),unc3(nintegrals,3),ans_l3(nintegrals) |
892 | 79 | $ ,unc_l3(nintegrals),chi2_l3(nintegrals),vol_chan | 79 | $ ,unc_l3(nintegrals),chi2_l3(nintegrals),vol_chan |
894 | 80 | real * 8 xint_virt(maxchannels),ymax_virt(maxchannels) | 80 | real * 8 xint_virt(maxchannels),ymax_virt(0:maxchannels) |
895 | 81 | $ ,ans_chan(0:maxchannels) | 81 | $ ,ans_chan(0:maxchannels) |
896 | 82 | real * 8 x(ndimmax),vol | 82 | real * 8 x(ndimmax),vol |
897 | 83 | real * 8 xacc(0:nintervals,ndimmax,maxchannels) | 83 | real * 8 xacc(0:nintervals,ndimmax,maxchannels) |
898 | @@ -985,8 +985,8 @@ | |||
899 | 985 | integer ndim,imode | 985 | integer ndim,imode |
900 | 986 | include "mint.inc" | 986 | include "mint.inc" |
901 | 987 | real * 8 fun,xgrid(0:nintervals,ndimmax,maxchannels) | 987 | real * 8 fun,xgrid(0:nintervals,ndimmax,maxchannels) |
904 | 988 | $ ,ymax(nintervals,ndimmax,maxchannels),ymax_virt(maxchannels) | 988 | $ ,ymax(nintervals,ndimmax,maxchannels) |
905 | 989 | $ ,x(ndimmax) | 989 | $ ,ymax_virt(0:maxchannels),x(ndimmax) |
906 | 990 | real * 8 dx(ndimmax),xx(ndimmax),vol_chan,dummy | 990 | real * 8 dx(ndimmax),xx(ndimmax),vol_chan,dummy |
907 | 991 | integer icell(ndimmax),ncell(ndimmax),ncell_virt | 991 | integer icell(ndimmax),ncell(ndimmax),ncell_virt |
908 | 992 | integer ifold(ndimmax),kfold(ndimmax) | 992 | integer ifold(ndimmax),kfold(ndimmax) |
909 | 993 | 993 | ||
910 | === modified file 'Template/NLO/SubProcesses/read40.for' | |||
911 | --- Template/NLO/SubProcesses/read40.for 2012-08-28 21:06:34 +0000 | |||
912 | +++ Template/NLO/SubProcesses/read40.for 2018-11-09 10:32:12 +0000 | |||
913 | @@ -5,7 +5,7 @@ | |||
914 | 5 | real * 8 xfacts(1:40),step(1:40) | 5 | real * 8 xfacts(1:40),step(1:40) |
915 | 6 | real * 8 xv(1:40,1:1000),yv(1:40,1:1000),er(1:40,1:1000) | 6 | real * 8 xv(1:40,1:1000),yv(1:40,1:1000),er(1:40,1:1000) |
916 | 7 | real * 8 xa(1:1000),ya(1:1000),ea(1:1000) | 7 | real * 8 xa(1:1000),ya(1:1000),ea(1:1000) |
918 | 8 | character * 70 file,file1,filename(1:40) | 8 | character * 700 file,file1,filename(1:40) |
919 | 9 | character * 70 line,vartype,vartype2 | 9 | character * 70 line,vartype,vartype2 |
920 | 10 | character * 70 strscale,strlimx,strlimy,strtit | 10 | character * 70 strscale,strlimx,strlimy,strtit |
921 | 11 | character * 11 chref1,chref7 | 11 | character * 11 chref1,chref7 |
922 | 12 | 12 | ||
923 | === removed file 'Template/NLO/SubProcesses/split40.f' | |||
924 | --- Template/NLO/SubProcesses/split40.f 2012-08-28 21:06:34 +0000 | |||
925 | +++ Template/NLO/SubProcesses/split40.f 1970-01-01 00:00:00 +0000 | |||
926 | @@ -1,51 +0,0 @@ | |||
927 | 1 | PROGRAM SPLIT | ||
928 | 2 | IMPLICIT NONE | ||
929 | 3 | character*80 buff | ||
930 | 4 | integer number,i,j | ||
931 | 5 | |||
932 | 6 | open (unit=1, file="dir", status="old") | ||
933 | 7 | |||
934 | 8 | number=0 | ||
935 | 9 | do | ||
936 | 10 | read(1,*,end=99,err=99) buff | ||
937 | 11 | number=number+1 | ||
938 | 12 | enddo | ||
939 | 13 | 99 continue | ||
940 | 14 | rewind(1) | ||
941 | 15 | i=1 | ||
942 | 16 | do while (number.gt.40) | ||
943 | 17 | open(unit=2,file='pdir'//char(48+i),status='unknown') | ||
944 | 18 | write (2,'(i3)') 40 | ||
945 | 19 | do j=1,40 | ||
946 | 20 | read(1,'(a)',end=98,err=98) buff | ||
947 | 21 | write (2,'(a)') buff | ||
948 | 22 | enddo | ||
949 | 23 | c do j=1,9 | ||
950 | 24 | c write (2,'(i1)') 1 | ||
951 | 25 | c enddo | ||
952 | 26 | close(2) | ||
953 | 27 | i=i+1 | ||
954 | 28 | number=number-40 | ||
955 | 29 | enddo | ||
956 | 30 | if (number.gt.0) then | ||
957 | 31 | open(unit=2,file='pdir'//char(48+i),status='unknown') | ||
958 | 32 | if (number.gt.99) then | ||
959 | 33 | write (2,'(i3)') number | ||
960 | 34 | elseif(number.gt.9)then | ||
961 | 35 | write (2,'(i2)') number | ||
962 | 36 | else | ||
963 | 37 | write (2,'(i1)') number | ||
964 | 38 | endif | ||
965 | 39 | do j=1,number | ||
966 | 40 | read(1,'(a)',end=98,err=98) buff | ||
967 | 41 | write (2,'(a)') buff | ||
968 | 42 | enddo | ||
969 | 43 | c do j=1,number | ||
970 | 44 | c write (2,'(i1)') 1 | ||
971 | 45 | c enddo | ||
972 | 46 | close(2) | ||
973 | 47 | endif | ||
974 | 48 | |||
975 | 49 | |||
976 | 50 | 98 return | ||
977 | 51 | end | ||
978 | 52 | 0 | ||
979 | === modified file 'UpdateNotes.txt' | |||
980 | --- UpdateNotes.txt 2018-06-22 06:52:02 +0000 | |||
981 | +++ UpdateNotes.txt 2018-11-09 10:32:12 +0000 | |||
982 | @@ -1,5 +1,22 @@ | |||
983 | 1 | Update notes for MadGraph5_aMC@NLO (in reverse time order) | 1 | Update notes for MadGraph5_aMC@NLO (in reverse time order) |
984 | 2 | 2 | ||
985 | 3 | 2.6.4 (//) | ||
986 | 4 | OM: add specific treatement for small width (at LO only and not for loop-induced) | ||
987 | 5 | if the width is smaller than 1e-6 times the mass, a fake width (at that value) is used for the | ||
988 | 6 | numerical evaluation of the matrix-element. S-channel resonances are re-scaled according to | ||
989 | 7 | narrow-width approximation to return the correct total cross-section (the distribution of events | ||
990 | 8 | will on the other hand follow the new width). | ||
991 | 9 | The parameter '1e-6' can be changed by adding to (LO) run_card the parameter: "small_width_treatment" | ||
992 | 10 | OM: add a new command "install looptools" to trigger the question that is automatically trigger | ||
993 | 11 | the first time a loop computation is needed. | ||
994 | 12 | RF: Fixed a bug when using TopDrawer plots for f(N)LO runs, where the combination of the plots could lead | ||
995 | 13 | to completely wrong histograms/distributions in case of high-precision runs. | ||
996 | 14 | OM: Fix some MLM crash for some processes (in particular BSM processes with W'). | ||
997 | 15 | OM: Fix a bug in the reweighting due to the new lhe format (the one avoiding some issue with py8) | ||
998 | 16 | OM: Fix a behavior for negative mass, the width was set to negative in the param_card automatically | ||
999 | 17 | making the Parton-shower (and other code) to crash since this does not follow the convention. | ||
1000 | 18 | OM: Change compiler flag to support Mojave. | ||
1001 | 19 | |||
1002 | 3 | 2.6.3.2 (22/06/18) | 20 | 2.6.3.2 (22/06/18) |
1003 | 4 | OM: Fix a bug in auto-width when mass are below QCD scale. | 21 | OM: Fix a bug in auto-width when mass are below QCD scale. |
1004 | 5 | OM: Fix a bug for g b initial state where the mass in the lhe file was not always correctly assigned | 22 | OM: Fix a bug for g b initial state where the mass in the lhe file was not always correctly assigned |
1005 | 6 | 23 | ||
1006 | === modified file 'VERSION' | |||
1007 | --- VERSION 2018-06-22 06:52:02 +0000 | |||
1008 | +++ VERSION 2018-11-09 10:32:12 +0000 | |||
1009 | @@ -1,5 +1,5 @@ | |||
1012 | 1 | version = 2.6.3.2 | 1 | version = 2.6.4 |
1013 | 2 | date = 2018-06-22 | 2 | date = 2018-11-30 |
1014 | 3 | 3 | ||
1015 | 4 | 4 | ||
1016 | 5 | 5 | ||
1017 | 6 | 6 | ||
1018 | === modified file 'aloha/aloha_writers.py' | |||
1019 | --- aloha/aloha_writers.py 2018-05-23 14:15:47 +0000 | |||
1020 | +++ aloha/aloha_writers.py 2018-11-09 10:32:12 +0000 | |||
1021 | @@ -523,7 +523,7 @@ | |||
1022 | 523 | if 'MP' in self.tag: | 523 | if 'MP' in self.tag: |
1023 | 524 | out.write(' complex*32 CI\n') | 524 | out.write(' complex*32 CI\n') |
1024 | 525 | if KERNEL.has_pi: | 525 | if KERNEL.has_pi: |
1026 | 526 | out.write(' double*16 PI\n') | 526 | out.write(' REAL ( KIND = 16 ) PI\n') |
1027 | 527 | else: | 527 | else: |
1028 | 528 | out.write(' complex*16 CI\n') | 528 | out.write(' complex*16 CI\n') |
1029 | 529 | if KERNEL.has_pi: | 529 | if KERNEL.has_pi: |
1030 | @@ -673,6 +673,8 @@ | |||
1031 | 673 | self.has_model_parameter = True | 673 | self.has_model_parameter = True |
1032 | 674 | if name.lower() in ['pi', 'as', 'mu_r', 'aewm1','g']: | 674 | if name.lower() in ['pi', 'as', 'mu_r', 'aewm1','g']: |
1033 | 675 | return name | 675 | return name |
1034 | 676 | if name.startswith(aloha.aloha_prefix): | ||
1035 | 677 | return name | ||
1036 | 676 | return '%s%s' % (aloha.aloha_prefix, name) | 678 | return '%s%s' % (aloha.aloha_prefix, name) |
1037 | 677 | 679 | ||
1038 | 678 | if '_' in name: | 680 | if '_' in name: |
1039 | 679 | 681 | ||
1040 | === modified file 'madgraph/core/base_objects.py' | |||
1041 | --- madgraph/core/base_objects.py 2018-04-23 20:23:22 +0000 | |||
1042 | +++ madgraph/core/base_objects.py 2018-11-09 10:32:12 +0000 | |||
1043 | @@ -1487,7 +1487,7 @@ | |||
1044 | 1487 | def change_parameter_name_with_prefix(self, prefix='mdl_'): | 1487 | def change_parameter_name_with_prefix(self, prefix='mdl_'): |
1045 | 1488 | """ Change all model parameter by a given prefix. | 1488 | """ Change all model parameter by a given prefix. |
1046 | 1489 | Modify the parameter if some of them are identical up to the case""" | 1489 | Modify the parameter if some of them are identical up to the case""" |
1048 | 1490 | 1490 | ||
1049 | 1491 | lower_dict={} | 1491 | lower_dict={} |
1050 | 1492 | duplicate = set() | 1492 | duplicate = set() |
1051 | 1493 | keys = self.get('parameters').keys() | 1493 | keys = self.get('parameters').keys() |
1052 | @@ -1568,7 +1568,13 @@ | |||
1053 | 1568 | for key in self['couplings'].keys(): | 1568 | for key in self['couplings'].keys(): |
1054 | 1569 | for coup in self['couplings'][key]: | 1569 | for coup in self['couplings'][key]: |
1055 | 1570 | coup.expr = rep_pattern.sub(replace, coup.expr) | 1570 | coup.expr = rep_pattern.sub(replace, coup.expr) |
1057 | 1571 | 1571 | ||
1058 | 1572 | # change form-factor | ||
1059 | 1573 | ff = [l.formfactors for l in self['lorentz'] if hasattr(l, 'formfactors')] | ||
1060 | 1574 | ff = set(sum(ff,[])) # here we have the list of ff used in the model | ||
1061 | 1575 | for f in ff: | ||
1062 | 1576 | f.value = rep_pattern.sub(replace, f.value) | ||
1063 | 1577 | |||
1064 | 1572 | # change mass/width | 1578 | # change mass/width |
1065 | 1573 | for part in self['particles']: | 1579 | for part in self['particles']: |
1066 | 1574 | if str(part.get('mass')) in one_change: | 1580 | if str(part.get('mass')) in one_change: |
1067 | 1575 | 1581 | ||
1068 | === modified file 'madgraph/core/helas_objects.py' | |||
1069 | --- madgraph/core/helas_objects.py 2017-08-10 13:09:28 +0000 | |||
1070 | +++ madgraph/core/helas_objects.py 2018-11-09 10:32:12 +0000 | |||
1071 | @@ -4569,6 +4569,13 @@ | |||
1072 | 4569 | return sum([d.get('wavefunctions') for d in \ | 4569 | return sum([d.get('wavefunctions') for d in \ |
1073 | 4570 | self.get('diagrams')], []) | 4570 | self.get('diagrams')], []) |
1074 | 4571 | 4571 | ||
1075 | 4572 | |||
1076 | 4573 | def get_all_mass_widths(self): | ||
1077 | 4574 | """Gives a list of all widths used by this ME (from propagator)""" | ||
1078 | 4575 | |||
1079 | 4576 | return set([(d.get('mass'),d.get('width')) for d in self.get_all_wavefunctions()]) | ||
1080 | 4577 | |||
1081 | 4578 | |||
1082 | 4572 | def get_all_amplitudes(self): | 4579 | def get_all_amplitudes(self): |
1083 | 4573 | """Gives a list of all amplitudes for this ME""" | 4580 | """Gives a list of all amplitudes for this ME""" |
1084 | 4574 | 4581 | ||
1085 | 4575 | 4582 | ||
1086 | === modified file 'madgraph/interface/amcatnlo_interface.py' | |||
1087 | --- madgraph/interface/amcatnlo_interface.py 2018-06-08 13:35:22 +0000 | |||
1088 | +++ madgraph/interface/amcatnlo_interface.py 2018-11-09 10:32:12 +0000 | |||
1089 | @@ -445,7 +445,11 @@ | |||
1090 | 445 | proc_type=self.extract_process_type(line) | 445 | proc_type=self.extract_process_type(line) |
1091 | 446 | if proc_type[1] not in ['real', 'LOonly']: | 446 | if proc_type[1] not in ['real', 'LOonly']: |
1092 | 447 | run_interface.check_compiler(self.options, block=False) | 447 | run_interface.check_compiler(self.options, block=False) |
1093 | 448 | #validate_model will reset self._generate_info; to avoid | ||
1094 | 449 | #this store it | ||
1095 | 450 | geninfo = self._generate_info | ||
1096 | 448 | self.validate_model(proc_type[1], coupling_type=proc_type[2]) | 451 | self.validate_model(proc_type[1], coupling_type=proc_type[2]) |
1097 | 452 | self._generate_info = geninfo | ||
1098 | 449 | 453 | ||
1099 | 450 | #now generate the amplitudes as usual | 454 | #now generate the amplitudes as usual |
1100 | 451 | #self.options['group_subprocesses'] = 'False' | 455 | #self.options['group_subprocesses'] = 'False' |
1101 | 452 | 456 | ||
1102 | === modified file 'madgraph/interface/amcatnlo_run_interface.py' | |||
1103 | --- madgraph/interface/amcatnlo_run_interface.py 2018-06-14 15:24:33 +0000 | |||
1104 | +++ madgraph/interface/amcatnlo_run_interface.py 2018-11-09 10:32:12 +0000 | |||
1105 | @@ -1053,7 +1053,10 @@ | |||
1106 | 1053 | 1053 | ||
1107 | 1054 | if self.last_mode in ['LO', 'NLO']: | 1054 | if self.last_mode in ['LO', 'NLO']: |
1108 | 1055 | self.switch['fixed_order'] = 'ON' | 1055 | self.switch['fixed_order'] = 'ON' |
1110 | 1056 | self.switch['fixed_order'] = 'OFF' | 1056 | if self.proc_characteristics['ninitial'] == 1: |
1111 | 1057 | self.switch['fixed_order'] = 'ON' | ||
1112 | 1058 | else: | ||
1113 | 1059 | self.switch['fixed_order'] = 'OFF' | ||
1114 | 1057 | 1060 | ||
1115 | 1058 | def color_for_fixed_order(self, switch_value): | 1061 | def color_for_fixed_order(self, switch_value): |
1116 | 1059 | 1062 | ||
1117 | @@ -1158,6 +1161,11 @@ | |||
1118 | 1158 | if self.last_mode in ['LO', 'NLO', 'noshower', 'noshowerLO']: | 1161 | if self.last_mode in ['LO', 'NLO', 'noshower', 'noshowerLO']: |
1119 | 1159 | self.switch['shower'] = 'OFF' | 1162 | self.switch['shower'] = 'OFF' |
1120 | 1160 | return | 1163 | return |
1121 | 1164 | |||
1122 | 1165 | if self.proc_characteristics['ninitial'] == 1: | ||
1123 | 1166 | self.switch['shower'] = 'OFF' | ||
1124 | 1167 | return | ||
1125 | 1168 | |||
1126 | 1161 | 1169 | ||
1127 | 1162 | if os.path.exists(pjoin(self.me_dir, 'Cards', 'shower_card.dat')): | 1170 | if os.path.exists(pjoin(self.me_dir, 'Cards', 'shower_card.dat')): |
1128 | 1163 | self.switch['shower'] = self.run_card['parton_shower'] | 1171 | self.switch['shower'] = self.run_card['parton_shower'] |
1129 | @@ -2603,7 +2611,13 @@ | |||
1130 | 2603 | devnull = open(os.devnull, 'w') | 2611 | devnull = open(os.devnull, 'w') |
1131 | 2604 | 2612 | ||
1132 | 2605 | if self.analyse_card['fo_analysis_format'].lower() == 'topdrawer': | 2613 | if self.analyse_card['fo_analysis_format'].lower() == 'topdrawer': |
1134 | 2606 | misc.call(['./combine_plots_FO.sh'] + folder_name, \ | 2614 | topfiles = [] |
1135 | 2615 | for job in jobs: | ||
1136 | 2616 | if job['dirname'].endswith('.top'): | ||
1137 | 2617 | topfiles.append(job['dirname']) | ||
1138 | 2618 | else: | ||
1139 | 2619 | topfiles.append(pjoin(job['dirname'],'MADatNLO.top')) | ||
1140 | 2620 | misc.call(['./combine_plots_FO.sh'] + topfiles, \ | ||
1141 | 2607 | stdout=devnull, | 2621 | stdout=devnull, |
1142 | 2608 | cwd=pjoin(self.me_dir, 'SubProcesses')) | 2622 | cwd=pjoin(self.me_dir, 'SubProcesses')) |
1143 | 2609 | files.cp(pjoin(self.me_dir, 'SubProcesses', 'MADatNLO.top'), | 2623 | files.cp(pjoin(self.me_dir, 'SubProcesses', 'MADatNLO.top'), |
1144 | 2610 | 2624 | ||
1145 | === modified file 'madgraph/interface/common_run_interface.py' | |||
1146 | --- madgraph/interface/common_run_interface.py 2018-06-22 06:52:02 +0000 | |||
1147 | +++ madgraph/interface/common_run_interface.py 2018-11-09 10:32:12 +0000 | |||
1148 | @@ -963,13 +963,15 @@ | |||
1149 | 963 | else: | 963 | else: |
1150 | 964 | return None | 964 | return None |
1151 | 965 | 965 | ||
1153 | 966 | def ask_edit_cards(self, cards, mode='fixed', plot=True, first_cmd=None): | 966 | def ask_edit_cards(self, cards, mode='fixed', plot=True, first_cmd=None, from_banner=None, |
1154 | 967 | banner=None): | ||
1155 | 967 | """ """ | 968 | """ """ |
1156 | 968 | if not self.options['madanalysis_path']: | 969 | if not self.options['madanalysis_path']: |
1157 | 969 | plot = False | 970 | plot = False |
1158 | 970 | 971 | ||
1159 | 971 | self.ask_edit_card_static(cards, mode, plot, self.options['timeout'], | 972 | self.ask_edit_card_static(cards, mode, plot, self.options['timeout'], |
1161 | 972 | self.ask, first_cmd=first_cmd) | 973 | self.ask, first_cmd=first_cmd, from_banner=from_banner, |
1162 | 974 | banner=banner) | ||
1163 | 973 | 975 | ||
1164 | 974 | for c in cards: | 976 | for c in cards: |
1165 | 975 | if not os.path.isabs(c): | 977 | if not os.path.isabs(c): |
1166 | @@ -3240,7 +3242,19 @@ | |||
1167 | 3240 | - 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) |
1168 | 3241 | 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)""" |
1169 | 3242 | 3244 | ||
1171 | 3243 | return self.static_check_param_card(path, self, run=run, dependent=dependent) | 3245 | self.static_check_param_card(path, self, run=run, dependent=dependent) |
1172 | 3246 | |||
1173 | 3247 | card = param_card_mod.ParamCard(path) | ||
1174 | 3248 | for param in card['decay']: | ||
1175 | 3249 | width = param.value | ||
1176 | 3250 | if width == 0: | ||
1177 | 3251 | continue | ||
1178 | 3252 | try: | ||
1179 | 3253 | mass = card['mass'].get(param.lhacode).value | ||
1180 | 3254 | except Exception: | ||
1181 | 3255 | continue | ||
1182 | 3256 | |||
1183 | 3257 | |||
1184 | 3244 | 3258 | ||
1185 | 3245 | @staticmethod | 3259 | @staticmethod |
1186 | 3246 | def static_check_param_card(path, interface, run=True, dependent=False, | 3260 | def static_check_param_card(path, interface, run=True, dependent=False, |
1187 | @@ -4138,6 +4152,21 @@ | |||
1188 | 4138 | return CommonRunCmd.install_lhapdf_pdfset_static(lhapdf_config, pdfsets_dir, | 4152 | return CommonRunCmd.install_lhapdf_pdfset_static(lhapdf_config, pdfsets_dir, |
1189 | 4139 | filename.replace('.LHgrid',''), | 4153 | filename.replace('.LHgrid',''), |
1190 | 4140 | lhapdf_version, alternate_path) | 4154 | lhapdf_version, alternate_path) |
1191 | 4155 | elif lhapdf_version.startswith('6.'): | ||
1192 | 4156 | # try to do a simple wget | ||
1193 | 4157 | wwwpath = "http://www.hepforge.org/archive/lhapdf/pdfsets/%s/%s.tar.gz" | ||
1194 | 4158 | wwwpath %= ('.'.join(lhapdf_version.split('.')[:2]), filename) | ||
1195 | 4159 | misc.wget(wwwpath, pjoin(pdfsets_dir, '%s.tar.gz' %filename)) | ||
1196 | 4160 | misc.call(['tar', '-xzpvf', '%s.tar.gz' %filename], | ||
1197 | 4161 | cwd=pdfsets_dir) | ||
1198 | 4162 | if os.path.exists(pjoin(pdfsets_dir, filename)) or \ | ||
1199 | 4163 | os.path.isdir(pjoin(pdfsets_dir, filename)): | ||
1200 | 4164 | logger.info('%s successfully downloaded and stored in %s' \ | ||
1201 | 4165 | % (filename, pdfsets_dir)) | ||
1202 | 4166 | else: | ||
1203 | 4167 | raise MadGraph5Error, \ | ||
1204 | 4168 | 'Could not download %s into %s. Please try to install it manually.' \ | ||
1205 | 4169 | % (filename, pdfsets_dir) | ||
1206 | 4141 | 4170 | ||
1207 | 4142 | else: | 4171 | else: |
1208 | 4143 | raise MadGraph5Error, \ | 4172 | raise MadGraph5Error, \ |
1209 | @@ -4342,7 +4371,7 @@ | |||
1210 | 4342 | 4371 | ||
1211 | 4343 | 4372 | ||
1212 | 4344 | 4373 | ||
1214 | 4345 | def __init__(self, question, cards=[], mode='auto', *args, **opt): | 4374 | def __init__(self, question, cards=[], from_banner=None, banner=None, mode='auto', *args, **opt): |
1215 | 4346 | 4375 | ||
1216 | 4347 | 4376 | ||
1217 | 4348 | self.load_default() | 4377 | self.load_default() |
1218 | @@ -4365,7 +4394,8 @@ | |||
1219 | 4365 | self.all_vars = set() | 4394 | self.all_vars = set() |
1220 | 4366 | self.modified_card = set() #set of cards not in sync with filesystem | 4395 | self.modified_card = set() #set of cards not in sync with filesystem |
1221 | 4367 | # need to sync them before editing/leaving | 4396 | # need to sync them before editing/leaving |
1223 | 4368 | 4397 | self.init_from_banner(from_banner, banner) | |
1224 | 4398 | |||
1225 | 4369 | #update default path by custom one if specify in cards | 4399 | #update default path by custom one if specify in cards |
1226 | 4370 | for card in cards: | 4400 | for card in cards: |
1227 | 4371 | if os.path.exists(card) and os.path.sep in cards: | 4401 | if os.path.exists(card) and os.path.sep in cards: |
1228 | @@ -4379,11 +4409,31 @@ | |||
1229 | 4379 | new_conflict = self.all_vars.intersection(new_vars) | 4409 | new_conflict = self.all_vars.intersection(new_vars) |
1230 | 4380 | self.conflict.union(new_conflict) | 4410 | self.conflict.union(new_conflict) |
1231 | 4381 | self.all_vars.union(new_vars) | 4411 | self.all_vars.union(new_vars) |
1232 | 4412 | |||
1233 | 4413 | |||
1234 | 4414 | def init_from_banner(self, from_banner, banner): | ||
1235 | 4415 | """ defined card that need to be initialized from the banner file | ||
1236 | 4416 | from_banner should be a list of card to load from the banner object | ||
1237 | 4417 | """ | ||
1238 | 4418 | |||
1239 | 4419 | if from_banner is None: | ||
1240 | 4420 | self.from_banner = {} | ||
1241 | 4421 | return | ||
1242 | 4422 | misc.sprint(from_banner) | ||
1243 | 4423 | self.from_banner = {} | ||
1244 | 4424 | for card in from_banner: | ||
1245 | 4425 | self.from_banner[card] = banner.charge_card(card) | ||
1246 | 4426 | return self.from_banner | ||
1247 | 4427 | |||
1248 | 4382 | 4428 | ||
1249 | 4383 | def get_path(self, name, cards): | 4429 | def get_path(self, name, cards): |
1250 | 4384 | """initialise the path if requested""" | 4430 | """initialise the path if requested""" |
1251 | 4385 | 4431 | ||
1252 | 4386 | defname = '%s_default' % name | 4432 | defname = '%s_default' % name |
1253 | 4433 | |||
1254 | 4434 | if name in self.from_banner: | ||
1255 | 4435 | return self.from_banner[name] | ||
1256 | 4436 | |||
1257 | 4387 | if isinstance(cards, list): | 4437 | if isinstance(cards, list): |
1258 | 4388 | if name in cards: | 4438 | if name in cards: |
1259 | 4389 | return True | 4439 | return True |
1260 | @@ -4417,7 +4467,13 @@ | |||
1261 | 4417 | self.pname2block = {} | 4467 | self.pname2block = {} |
1262 | 4418 | self.restricted_value = {} | 4468 | self.restricted_value = {} |
1263 | 4419 | self.param_card = {} | 4469 | self.param_card = {} |
1265 | 4420 | if not self.get_path('param', cards): | 4470 | |
1266 | 4471 | is_valid_path = self.get_path('param', cards) | ||
1267 | 4472 | if not is_valid_path: | ||
1268 | 4473 | self.param_consistency = False | ||
1269 | 4474 | return [] | ||
1270 | 4475 | if isinstance(is_valid_path, param_card_mod.ParamCard): | ||
1271 | 4476 | self.param_card = is_valid_path | ||
1272 | 4421 | self.param_consistency = False | 4477 | self.param_consistency = False |
1273 | 4422 | return [] | 4478 | return [] |
1274 | 4423 | 4479 | ||
1275 | @@ -4441,10 +4497,15 @@ | |||
1276 | 4441 | return self.pname2block.keys() | 4497 | return self.pname2block.keys() |
1277 | 4442 | 4498 | ||
1278 | 4443 | def init_run(self, cards): | 4499 | def init_run(self, cards): |
1280 | 4444 | 4500 | ||
1281 | 4445 | self.run_set = [] | 4501 | self.run_set = [] |
1284 | 4446 | if not self.get_path('run', cards): | 4502 | is_valid_path = self.get_path('run', cards) |
1285 | 4447 | return [] | 4503 | if not is_valid_path: |
1286 | 4504 | return [] | ||
1287 | 4505 | if isinstance(is_valid_path, banner_mod.RunCard): | ||
1288 | 4506 | self.run_card = is_valid_path | ||
1289 | 4507 | return [] | ||
1290 | 4508 | |||
1291 | 4448 | 4509 | ||
1292 | 4449 | try: | 4510 | try: |
1293 | 4450 | self.run_card = banner_mod.RunCard(self.paths['run'], consistency='warning') | 4511 | self.run_card = banner_mod.RunCard(self.paths['run'], consistency='warning') |
1294 | @@ -4455,6 +4516,7 @@ | |||
1295 | 4455 | except IOError: | 4516 | except IOError: |
1296 | 4456 | run_card_def = {} | 4517 | run_card_def = {} |
1297 | 4457 | 4518 | ||
1298 | 4519 | |||
1299 | 4458 | if run_card_def: | 4520 | if run_card_def: |
1300 | 4459 | if self.run_card: | 4521 | if self.run_card: |
1301 | 4460 | self.run_set = run_card_def.keys() + self.run_card.hidden_param | 4522 | self.run_set = run_card_def.keys() + self.run_card.hidden_param |
1302 | @@ -5129,7 +5191,6 @@ | |||
1303 | 5129 | logger.warning(str(e)) | 5191 | logger.warning(str(e)) |
1304 | 5130 | return | 5192 | return |
1305 | 5131 | 5193 | ||
1306 | 5132 | |||
1307 | 5133 | start = 0 | 5194 | start = 0 |
1308 | 5134 | if len(args) < 2: | 5195 | if len(args) < 2: |
1309 | 5135 | logger.warning('Invalid set command %s (need two arguments)' % line) | 5196 | logger.warning('Invalid set command %s (need two arguments)' % line) |
1310 | @@ -5206,6 +5267,7 @@ | |||
1311 | 5206 | 5267 | ||
1312 | 5207 | if args[0] in ['run_card', 'param_card', 'MadWeight_card', 'shower_card', | 5268 | if args[0] in ['run_card', 'param_card', 'MadWeight_card', 'shower_card', |
1313 | 5208 | 'delphes_card','madanalysis5_hadron_card','madanalysis5_parton_card']: | 5269 | 'delphes_card','madanalysis5_hadron_card','madanalysis5_parton_card']: |
1314 | 5270 | |||
1315 | 5209 | if args[1] == 'default': | 5271 | if args[1] == 'default': |
1316 | 5210 | logger.info('replace %s by the default card' % args[0],'$MG:BOLD') | 5272 | logger.info('replace %s by the default card' % args[0],'$MG:BOLD') |
1317 | 5211 | files.cp(self.paths['%s_default' %args[0][:-5]], self.paths[args[0][:-5]]) | 5273 | files.cp(self.paths['%s_default' %args[0][:-5]], self.paths[args[0][:-5]]) |
1318 | @@ -5262,7 +5324,10 @@ | |||
1319 | 5262 | 5324 | ||
1320 | 5263 | #### RUN CARD | 5325 | #### RUN CARD |
1321 | 5264 | if args[start] in [l.lower() for l in self.run_card.keys()] and card in ['', 'run_card']: | 5326 | if args[start] in [l.lower() for l in self.run_card.keys()] and card in ['', 'run_card']: |
1322 | 5327 | |||
1323 | 5265 | if args[start] not in self.run_set: | 5328 | if args[start] not in self.run_set: |
1324 | 5329 | if card in self.from_banner or 'run' in self.from_banner: | ||
1325 | 5330 | raise Exception, "change not allowed for this card: event already generated!" | ||
1326 | 5266 | args[start] = [l for l in self.run_set if l.lower() == args[start]][0] | 5331 | args[start] = [l for l in self.run_set if l.lower() == args[start]][0] |
1327 | 5267 | 5332 | ||
1328 | 5268 | if args[start] in self.conflict and card == '': | 5333 | if args[start] in self.conflict and card == '': |
1329 | @@ -5279,9 +5344,10 @@ | |||
1330 | 5279 | logger.info('remove information %s from the run_card' % args[start],'$MG:BOLD') | 5344 | logger.info('remove information %s from the run_card' % args[start],'$MG:BOLD') |
1331 | 5280 | del self.run_card[args[start]] | 5345 | del self.run_card[args[start]] |
1332 | 5281 | else: | 5346 | else: |
1336 | 5282 | if args[0].startswith('sys_') or \ | 5347 | lower_name = args[0].lower() |
1337 | 5283 | args[0] in self.run_card.list_parameter or \ | 5348 | if lower_name.startswith('sys_') or \ |
1338 | 5284 | args[0] in self.run_card.dict_parameter: | 5349 | lower_name in self.run_card.list_parameter or \ |
1339 | 5350 | lower_name in self.run_card.dict_parameter: | ||
1340 | 5285 | val = ' '.join(args[start+1:]) | 5351 | val = ' '.join(args[start+1:]) |
1341 | 5286 | val = val.split('#')[0] | 5352 | val = val.split('#')[0] |
1342 | 5287 | else: | 5353 | else: |
1343 | @@ -5626,6 +5692,30 @@ | |||
1344 | 5626 | self.run_card['mass_ion1'] != self.run_card['mass_ion2']): | 5692 | self.run_card['mass_ion1'] != self.run_card['mass_ion2']): |
1345 | 5627 | 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\"." |
1346 | 5628 | 5694 | ||
1347 | 5695 | # check the status of small width status from LO | ||
1348 | 5696 | for param in self.param_card['decay']: | ||
1349 | 5697 | width = param.value | ||
1350 | 5698 | if width == 0 or isinstance(width,str): | ||
1351 | 5699 | continue | ||
1352 | 5700 | try: | ||
1353 | 5701 | mass = self.param_card['mass'].get(param.lhacode).value | ||
1354 | 5702 | except Exception: | ||
1355 | 5703 | continue | ||
1356 | 5704 | if isinstance(mass,str): | ||
1357 | 5705 | continue | ||
1358 | 5706 | |||
1359 | 5707 | if mass: | ||
1360 | 5708 | if abs(width/mass) < self.run_card['small_width_treatment']: | ||
1361 | 5709 | logger.warning("Particle %s will use a fake width ( %s instead of %s ).\n" + | ||
1362 | 5710 | "Cross-section will be rescaled according to NWA if needed." + | ||
1363 | 5711 | "To force exact treatment reduce the value of 'small_width_treatment' parameter of the run_card", | ||
1364 | 5712 | param.lhacode[0], mass*self.run_card['small_width_treatment'], width) | ||
1365 | 5713 | elif abs(width/mass) < 1e-12: | ||
1366 | 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) | ||
1367 | 5715 | if CommonRunCmd.sleep_for_error: | ||
1368 | 5716 | time.sleep(5) | ||
1369 | 5717 | CommonRunCmd.sleep_for_error = False | ||
1370 | 5718 | |||
1371 | 5629 | 5719 | ||
1372 | 5630 | ######################################################################## | 5720 | ######################################################################## |
1373 | 5631 | # NLO specific check | 5721 | # NLO specific check |
1374 | 5632 | 5722 | ||
1375 | === modified file 'madgraph/interface/extended_cmd.py' | |||
1376 | --- madgraph/interface/extended_cmd.py 2018-05-16 08:43:26 +0000 | |||
1377 | +++ madgraph/interface/extended_cmd.py 2018-11-09 10:32:12 +0000 | |||
1378 | @@ -2618,6 +2618,13 @@ | |||
1379 | 2618 | 2618 | ||
1380 | 2619 | def postcmd(self, stop, line): | 2619 | def postcmd(self, stop, line): |
1381 | 2620 | 2620 | ||
1382 | 2621 | # for diamond class arch where both branch defines the postcmd | ||
1383 | 2622 | # set it up to be in coop mode | ||
1384 | 2623 | try: | ||
1385 | 2624 | out = super(ControlSwitch,self).postcmd(stop, line) | ||
1386 | 2625 | except AttributeError: | ||
1387 | 2626 | pass | ||
1388 | 2627 | |||
1389 | 2621 | line = line.strip() | 2628 | line = line.strip() |
1390 | 2622 | if ';' in line: | 2629 | if ';' in line: |
1391 | 2623 | line= [l for l in line.split(';') if l][-1] | 2630 | line= [l for l in line.split(';') if l][-1] |
1392 | @@ -2676,6 +2683,7 @@ | |||
1393 | 2676 | def check_consistency(self, key, value): | 2683 | def check_consistency(self, key, value): |
1394 | 2677 | """check the consistency of the new flag with the old ones""" | 2684 | """check the consistency of the new flag with the old ones""" |
1395 | 2678 | 2685 | ||
1396 | 2686 | |||
1397 | 2679 | if key in self.last_changed: | 2687 | if key in self.last_changed: |
1398 | 2680 | self.last_changed.remove(key) | 2688 | self.last_changed.remove(key) |
1399 | 2681 | self.last_changed.append(key) | 2689 | self.last_changed.append(key) |
1400 | 2682 | 2690 | ||
1401 | === modified file 'madgraph/interface/loop_interface.py' | |||
1402 | --- madgraph/interface/loop_interface.py 2018-03-22 14:00:54 +0000 | |||
1403 | +++ madgraph/interface/loop_interface.py 2018-11-09 10:32:12 +0000 | |||
1404 | @@ -21,6 +21,7 @@ | |||
1405 | 21 | import time | 21 | import time |
1406 | 22 | import logging | 22 | import logging |
1407 | 23 | import re | 23 | import re |
1408 | 24 | import sys | ||
1409 | 24 | 25 | ||
1410 | 25 | import madgraph | 26 | import madgraph |
1411 | 26 | from madgraph import MG4DIR, MG5DIR, MadGraph5Error | 27 | from madgraph import MG4DIR, MG5DIR, MadGraph5Error |
1412 | @@ -494,14 +495,19 @@ | |||
1413 | 494 | aloha.mp_precision = aloha_original_quad_mode | 495 | aloha.mp_precision = aloha_original_quad_mode |
1414 | 495 | 496 | ||
1415 | 496 | 497 | ||
1417 | 497 | def install_reduction_library(self): | 498 | def install_reduction_library(self, force=False): |
1418 | 498 | """Code to install the reduction library if needed""" | 499 | """Code to install the reduction library if needed""" |
1419 | 499 | 500 | ||
1420 | 500 | opt = self.options | 501 | opt = self.options |
1422 | 501 | 502 | ||
1423 | 502 | # Check if first time: | 503 | # Check if first time: |
1425 | 503 | if (opt['ninja'] is None) or (os.path.isfile(pjoin(MG5DIR, opt['ninja'],'libninja.a'))): | 504 | if not force and ((opt['ninja'] is None) or (os.path.isfile(pjoin(MG5DIR, opt['ninja'],'libninja.a')))): |
1426 | 504 | return | 505 | return |
1427 | 506 | |||
1428 | 507 | # do not trigger the question for tests | ||
1429 | 508 | if 'test_manager.py' in sys.argv[0]: | ||
1430 | 509 | from unittest.case import SkipTest | ||
1431 | 510 | raise SkipTest | ||
1432 | 505 | 511 | ||
1433 | 506 | logger.info("First output using loop matrix-elements has been detected. Now asking for loop reduction:", '$MG:BOLD') | 512 | logger.info("First output using loop matrix-elements has been detected. Now asking for loop reduction:", '$MG:BOLD') |
1434 | 507 | to_install = self.ask('install', '0', ask_class=AskLoopInstaller, timeout=300, | 513 | to_install = self.ask('install', '0', ask_class=AskLoopInstaller, timeout=300, |
1435 | @@ -950,9 +956,11 @@ | |||
1436 | 950 | if os.path.exists(pjoin(install_dir1, 'collier')): | 956 | if os.path.exists(pjoin(install_dir1, 'collier')): |
1437 | 951 | self.code['collier'] = pjoin(install_dir1, 'collier') | 957 | self.code['collier'] = pjoin(install_dir1, 'collier') |
1438 | 952 | if os.path.exists(pjoin(install_dir2, 'PJFry','bin','qd-config')): | 958 | if os.path.exists(pjoin(install_dir2, 'PJFry','bin','qd-config')): |
1440 | 953 | self.code['collier'] = pjoin(install_dir2, 'PJFry') | 959 | self.code['pjfry'] = pjoin(install_dir2, 'PJFry') |
1441 | 954 | if os.path.exists(pjoin(install_dir2, 'golem95')): | 960 | if os.path.exists(pjoin(install_dir2, 'golem95')): |
1443 | 955 | self.code['collier'] = pjoin(install_dir2, 'golem95') | 961 | self.code['glem'] = pjoin(install_dir2, 'golem95') |
1444 | 962 | if os.path.exists(pjoin(install_dir1, 'ninja')): | ||
1445 | 963 | self.code['ninja'] = pjoin(install_dir2, 'ninja','lib') | ||
1446 | 956 | 964 | ||
1447 | 957 | # 1. create the question | 965 | # 1. create the question |
1448 | 958 | question, allowed_answer = self.create_question(first=True) | 966 | question, allowed_answer = self.create_question(first=True) |
1449 | 959 | 967 | ||
1450 | === modified file 'madgraph/interface/madevent_interface.py' | |||
1451 | --- madgraph/interface/madevent_interface.py 2018-06-08 13:35:22 +0000 | |||
1452 | +++ madgraph/interface/madevent_interface.py 2018-11-09 10:32:12 +0000 | |||
1453 | @@ -4142,9 +4142,14 @@ | |||
1454 | 4142 | self.configure_directory(html_opening =False) | 4142 | self.configure_directory(html_opening =False) |
1455 | 4143 | self.check_pythia8(args) | 4143 | self.check_pythia8(args) |
1456 | 4144 | 4144 | ||
1457 | 4145 | # Update the banner with the pythia card | ||
1458 | 4146 | if not self.banner or len(self.banner) <=1: | ||
1459 | 4147 | # Here the level keyword 'pythia' must not be changed to 'pythia8'. | ||
1460 | 4148 | self.banner = banner_mod.recover_banner(self.results, 'pythia') | ||
1461 | 4149 | |||
1462 | 4145 | # the args are modify and the last arg is always the mode | 4150 | # the args are modify and the last arg is always the mode |
1463 | 4146 | if not no_default: | 4151 | if not no_default: |
1465 | 4147 | self.ask_pythia_run_configuration(args[-1], pythia_version=8) | 4152 | self.ask_pythia_run_configuration(args[-1], pythia_version=8, banner=self.banner) |
1466 | 4148 | 4153 | ||
1467 | 4149 | if self.options['automatic_html_opening']: | 4154 | if self.options['automatic_html_opening']: |
1468 | 4150 | misc.open_file(os.path.join(self.me_dir, 'crossx.html')) | 4155 | misc.open_file(os.path.join(self.me_dir, 'crossx.html')) |
1469 | @@ -4157,10 +4162,7 @@ | |||
1470 | 4157 | #"The normalisation of the hepmc output file will be wrong (i.e. non-standard).\n"+\ | 4162 | #"The normalisation of the hepmc output file will be wrong (i.e. non-standard).\n"+\ |
1471 | 4158 | #"Please use 'event_norm = average' in the run_card to avoid this problem.") | 4163 | #"Please use 'event_norm = average' in the run_card to avoid this problem.") |
1472 | 4159 | 4164 | ||
1477 | 4160 | # Update the banner with the pythia card | 4165 | |
1474 | 4161 | if not self.banner or len(self.banner) <=1: | ||
1475 | 4162 | # Here the level keyword 'pythia' must not be changed to 'pythia8'. | ||
1476 | 4163 | self.banner = banner_mod.recover_banner(self.results, 'pythia') | ||
1478 | 4164 | 4166 | ||
1479 | 4165 | if not self.options['mg5amc_py8_interface_path'] or not \ | 4167 | if not self.options['mg5amc_py8_interface_path'] or not \ |
1480 | 4166 | os.path.exists(pjoin(self.options['mg5amc_py8_interface_path'], | 4168 | os.path.exists(pjoin(self.options['mg5amc_py8_interface_path'], |
1481 | @@ -6126,7 +6128,7 @@ | |||
1482 | 6126 | return switch | 6128 | return switch |
1483 | 6127 | 6129 | ||
1484 | 6128 | ############################################################################ | 6130 | ############################################################################ |
1486 | 6129 | def ask_pythia_run_configuration(self, mode=None, pythia_version=6): | 6131 | def ask_pythia_run_configuration(self, mode=None, pythia_version=6, banner=None): |
1487 | 6130 | """Ask the question when launching pythia""" | 6132 | """Ask the question when launching pythia""" |
1488 | 6131 | 6133 | ||
1489 | 6132 | pythia_suffix = '' if pythia_version==6 else '%d'%pythia_version | 6134 | pythia_suffix = '' if pythia_version==6 else '%d'%pythia_version |
1490 | @@ -6187,10 +6189,16 @@ | |||
1491 | 6187 | if self.force: | 6189 | if self.force: |
1492 | 6188 | return mode | 6190 | return mode |
1493 | 6189 | 6191 | ||
1494 | 6192 | if not banner: | ||
1495 | 6193 | banner = self.banner | ||
1496 | 6194 | |||
1497 | 6190 | if auto: | 6195 | if auto: |
1499 | 6191 | self.ask_edit_cards(cards, mode='auto', plot=(pythia_version==6)) | 6196 | self.ask_edit_cards(cards, from_banner=['param', 'run'], |
1500 | 6197 | mode='auto', plot=(pythia_version==6), banner=banner | ||
1501 | 6198 | ) | ||
1502 | 6192 | else: | 6199 | else: |
1504 | 6193 | self.ask_edit_cards(cards, plot=(pythia_version==6)) | 6200 | self.ask_edit_cards(cards, from_banner=['param', 'run'], |
1505 | 6201 | plot=(pythia_version==6), banner=banner) | ||
1506 | 6194 | 6202 | ||
1507 | 6195 | return mode | 6203 | return mode |
1508 | 6196 | 6204 | ||
1509 | 6197 | 6205 | ||
1510 | === modified file 'madgraph/interface/madgraph_interface.py' | |||
1511 | --- madgraph/interface/madgraph_interface.py 2018-06-22 06:52:02 +0000 | |||
1512 | +++ madgraph/interface/madgraph_interface.py 2018-11-09 10:32:12 +0000 | |||
1513 | @@ -2782,7 +2782,8 @@ | |||
1514 | 2782 | 'gauge','lorentz', 'brs', 'cms'] | 2782 | 'gauge','lorentz', 'brs', 'cms'] |
1515 | 2783 | _import_formats = ['model_v4', 'model', 'proc_v4', 'command', 'banner'] | 2783 | _import_formats = ['model_v4', 'model', 'proc_v4', 'command', 'banner'] |
1516 | 2784 | _install_opts = ['Delphes', 'MadAnalysis4', 'ExRootAnalysis', | 2784 | _install_opts = ['Delphes', 'MadAnalysis4', 'ExRootAnalysis', |
1518 | 2785 | 'update', 'Golem95', 'PJFry', 'QCDLoop', 'maddm', 'maddump'] | 2785 | 'update', 'Golem95', 'PJFry', 'QCDLoop', 'maddm', 'maddump', |
1519 | 2786 | 'looptools'] | ||
1520 | 2786 | 2787 | ||
1521 | 2787 | # The targets below are installed using the HEPToolsInstaller.py script | 2788 | # The targets below are installed using the HEPToolsInstaller.py script |
1522 | 2788 | _advanced_install_opts = ['pythia8','zlib','boost','lhapdf6','lhapdf5','collier', | 2789 | _advanced_install_opts = ['pythia8','zlib','boost','lhapdf6','lhapdf5','collier', |
1523 | @@ -5840,7 +5841,7 @@ | |||
1524 | 5840 | function will overwrite any existing installation of the tool without | 5841 | function will overwrite any existing installation of the tool without |
1525 | 5841 | warnings. | 5842 | warnings. |
1526 | 5842 | """ | 5843 | """ |
1528 | 5843 | 5844 | ||
1529 | 5844 | # Make sure to avoid any border effect on custom_additional_options | 5845 | # Make sure to avoid any border effect on custom_additional_options |
1530 | 5845 | add_options = list(additional_options) | 5846 | add_options = list(additional_options) |
1531 | 5846 | 5847 | ||
1532 | @@ -5857,6 +5858,10 @@ | |||
1533 | 5857 | if args[0] == 'update': | 5858 | if args[0] == 'update': |
1534 | 5858 | self.install_update(['update']+install_options['update_options'],wget=program) | 5859 | self.install_update(['update']+install_options['update_options'],wget=program) |
1535 | 5859 | return | 5860 | return |
1536 | 5861 | elif args[0] == 'looptools': | ||
1537 | 5862 | self.install_reduction_library(force=True) | ||
1538 | 5863 | return | ||
1539 | 5864 | |||
1540 | 5860 | 5865 | ||
1541 | 5861 | plugin = self.install_plugin | 5866 | plugin = self.install_plugin |
1542 | 5862 | 5867 | ||
1543 | @@ -5903,12 +5908,20 @@ | |||
1544 | 5903 | data = urllib.urlopen(cluster_path) | 5908 | data = urllib.urlopen(cluster_path) |
1545 | 5904 | except Exception: | 5909 | except Exception: |
1546 | 5905 | continue | 5910 | continue |
1547 | 5911 | if data.getcode() != 200: | ||
1548 | 5912 | continue | ||
1549 | 5913 | |||
1550 | 5906 | break | 5914 | break |
1551 | 5915 | |||
1552 | 5907 | else: | 5916 | else: |
1553 | 5908 | raise MadGraph5Error, '''Impossible to connect any of us servers. | 5917 | raise MadGraph5Error, '''Impossible to connect any of us servers. |
1554 | 5909 | Please check your internet connection or retry later''' | 5918 | Please check your internet connection or retry later''' |
1557 | 5910 | for line in data: | 5919 | for wwwline in data: |
1558 | 5911 | split = line.split() | 5920 | split = wwwline.split() |
1559 | 5921 | if len(split)!=2: | ||
1560 | 5922 | if '--source' not in line: | ||
1561 | 5923 | source = {0:'uiuc',1:'ucl'}[index] | ||
1562 | 5924 | return self.do_install(line+' --source='+source, paths=paths, additional_options=additional_options) | ||
1563 | 5912 | path[split[0]] = split[1] | 5925 | path[split[0]] = split[1] |
1564 | 5913 | 5926 | ||
1565 | 5914 | ################################################################################ | 5927 | ################################################################################ |
1566 | @@ -7037,7 +7050,6 @@ | |||
1567 | 7037 | param_card = check_param_card.ParamCard(out_path.getvalue().split('\n')) | 7050 | param_card = check_param_card.ParamCard(out_path.getvalue().split('\n')) |
1568 | 7038 | 7051 | ||
1569 | 7039 | for (block, lhacode) in put_to_one: | 7052 | for (block, lhacode) in put_to_one: |
1570 | 7040 | misc.sprint(block, lhacode) | ||
1571 | 7041 | try: | 7053 | try: |
1572 | 7042 | param_card[block].get(lhacode).value = 1 | 7054 | param_card[block].get(lhacode).value = 1 |
1573 | 7043 | except: | 7055 | except: |
1574 | 7044 | 7056 | ||
1575 | === modified file 'madgraph/interface/reweight_interface.py' | |||
1576 | --- madgraph/interface/reweight_interface.py 2018-06-15 15:10:56 +0000 | |||
1577 | +++ madgraph/interface/reweight_interface.py 2018-11-09 10:32:12 +0000 | |||
1578 | @@ -233,8 +233,8 @@ | |||
1579 | 233 | 233 | ||
1580 | 234 | if '=' in order: | 234 | if '=' in order: |
1581 | 235 | # get the type NLO QCD/QED/... | 235 | # get the type NLO QCD/QED/... |
1584 | 236 | order = order.split('=',1)[1] | 236 | order = order.split('=',1)[1].strip() |
1585 | 237 | 237 | ||
1586 | 238 | # define the list of particles that are needed for the radiation | 238 | # define the list of particles that are needed for the radiation |
1587 | 239 | pert = fks_common.find_pert_particles_interactions(model, | 239 | pert = fks_common.find_pert_particles_interactions(model, |
1588 | 240 | pert_order = order)['soft_particles'] | 240 | pert_order = order)['soft_particles'] |
1589 | @@ -746,7 +746,8 @@ | |||
1590 | 746 | # Find new tag in the banner and add information if needed | 746 | # Find new tag in the banner and add information if needed |
1591 | 747 | if 'initrwgt' in self.banner and self.output_type == 'default': | 747 | if 'initrwgt' in self.banner and self.output_type == 'default': |
1592 | 748 | if 'name=\'mg_reweighting\'' in self.banner['initrwgt']: | 748 | if 'name=\'mg_reweighting\'' in self.banner['initrwgt']: |
1594 | 749 | blockpat = re.compile(r'''<weightgroup name=\'mg_reweighting\'\s*>(?P<text>.*?)</weightgroup>''', re.I+re.M+re.S) | 749 | blockpat = re.compile(r'''<weightgroup name=\'mg_reweighting\'\s*weight_name_strategy=\'includeIdInWeightName\'>(?P<text>.*?)</weightgroup>''', re.I+re.M+re.S) |
1595 | 750 | misc.sprint(blockpat, self.banner['initrwgt']) | ||
1596 | 750 | before, content, after = blockpat.split(self.banner['initrwgt']) | 751 | before, content, after = blockpat.split(self.banner['initrwgt']) |
1597 | 751 | header_rwgt_other = before + after | 752 | header_rwgt_other = before + after |
1598 | 752 | pattern = re.compile('<weight id=\'(?:rwgt_(?P<id>\d+)|(?P<id2>[_\w]+))(?P<rwgttype>\s*|_\w+)\'>(?P<info>.*?)</weight>', re.S+re.I+re.M) | 753 | pattern = re.compile('<weight id=\'(?:rwgt_(?P<id>\d+)|(?P<id2>[_\w]+))(?P<rwgttype>\s*|_\w+)\'>(?P<info>.*?)</weight>', re.S+re.I+re.M) |
1599 | @@ -1787,7 +1788,7 @@ | |||
1600 | 1787 | for i in range(len(pdg)): | 1788 | for i in range(len(pdg)): |
1601 | 1788 | if pdg[i] == oldpdg[i]: | 1789 | if pdg[i] == oldpdg[i]: |
1602 | 1789 | continue | 1790 | continue |
1604 | 1790 | if not self.model or not getattr(self.model, 'get_mass'): | 1791 | if not self.model or not hasattr(self.model, 'get_mass'): |
1605 | 1791 | continue | 1792 | continue |
1606 | 1792 | if self.model.get_mass(int(pdg[i])) == self.model.get_mass(int(oldpdg[i])): | 1793 | if self.model.get_mass(int(pdg[i])) == self.model.get_mass(int(oldpdg[i])): |
1607 | 1793 | continue | 1794 | continue |
1608 | 1794 | 1795 | ||
1609 | === modified file 'madgraph/iolibs/export_v4.py' | |||
1610 | --- madgraph/iolibs/export_v4.py 2018-06-07 13:31:42 +0000 | |||
1611 | +++ madgraph/iolibs/export_v4.py 2018-11-09 10:32:12 +0000 | |||
1612 | @@ -12,6 +12,7 @@ | |||
1613 | 12 | # For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch | 12 | # For more information, visit madgraph.phys.ucl.ac.be and amcatnlo.web.cern.ch |
1614 | 13 | # | 13 | # |
1615 | 14 | ################################################################################ | 14 | ################################################################################ |
1616 | 15 | from madgraph.iolibs.helas_call_writers import HelasCallWriter | ||
1617 | 15 | """Methods and classes to export matrix elements to v4 format.""" | 16 | """Methods and classes to export matrix elements to v4 format.""" |
1618 | 16 | 17 | ||
1619 | 17 | import copy | 18 | import copy |
1620 | @@ -93,12 +94,28 @@ | |||
1621 | 93 | # - None, madgraph do nothing for initialisation | 94 | # - None, madgraph do nothing for initialisation |
1622 | 94 | exporter = 'v4' | 95 | exporter = 'v4' |
1623 | 95 | # language of the output 'v4' for Fortran output | 96 | # language of the output 'v4' for Fortran output |
1625 | 96 | # 'cpp' for C++ output | 97 | # 'cpp' for C++ output |
1626 | 97 | 98 | ||
1627 | 98 | 99 | ||
1628 | 99 | def __init__(self, dir_path = "", opt=None): | 100 | def __init__(self, dir_path = "", opt=None): |
1631 | 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 |
1632 | 101 | return | 102 | |
1633 | 103 | # Activate some monkey patching for the helas call writer. | ||
1634 | 104 | helas_call_writers.HelasCallWriter.customize_argument_for_all_other_helas_object = \ | ||
1635 | 105 | self.helas_call_writer_custom | ||
1636 | 106 | |||
1637 | 107 | |||
1638 | 108 | # helper function for customise helas writter | ||
1639 | 109 | @staticmethod | ||
1640 | 110 | def custom_helas_call(call, arg): | ||
1641 | 111 | """static method to customise the way aloha function call are written | ||
1642 | 112 | call is the default template for the call | ||
1643 | 113 | arg are the dictionary used for the call | ||
1644 | 114 | """ | ||
1645 | 115 | return call, arg | ||
1646 | 116 | |||
1647 | 117 | helas_call_writer_custom = lambda x,y,z: x.custom_helas_call(y,z) | ||
1648 | 118 | |||
1649 | 102 | 119 | ||
1650 | 103 | def copy_template(self, model): | 120 | def copy_template(self, model): |
1651 | 104 | return | 121 | return |
1652 | @@ -160,6 +177,9 @@ | |||
1653 | 160 | #place holder to pass information to the run_interface | 177 | #place holder to pass information to the run_interface |
1654 | 161 | self.proc_characteristic = banner_mod.ProcCharacteristic() | 178 | self.proc_characteristic = banner_mod.ProcCharacteristic() |
1655 | 162 | 179 | ||
1656 | 180 | # call mother class | ||
1657 | 181 | super(ProcessExporterFortran,self).__init__(dir_path, opt) | ||
1658 | 182 | |||
1659 | 163 | 183 | ||
1660 | 164 | #=========================================================================== | 184 | #=========================================================================== |
1661 | 165 | # process exporter fortran switch between group and not grouped | 185 | # process exporter fortran switch between group and not grouped |
1662 | @@ -1834,13 +1854,25 @@ | |||
1663 | 1834 | is_clang = misc.detect_if_cpp_compiler_is_clang(compiler) | 1854 | is_clang = misc.detect_if_cpp_compiler_is_clang(compiler) |
1664 | 1835 | is_lc = misc.detect_cpp_std_lib_dependence(compiler) == '-lc++' | 1855 | is_lc = misc.detect_cpp_std_lib_dependence(compiler) == '-lc++' |
1665 | 1836 | 1856 | ||
1666 | 1857 | |||
1667 | 1837 | # list of the variable to set in the make_opts file | 1858 | # list of the variable to set in the make_opts file |
1668 | 1838 | for_update= {'DEFAULT_CPP_COMPILER':compiler, | 1859 | for_update= {'DEFAULT_CPP_COMPILER':compiler, |
1669 | 1839 | 'MACFLAG':'-mmacosx-version-min=10.7' if is_clang and is_lc else '', | 1860 | 'MACFLAG':'-mmacosx-version-min=10.7' if is_clang and is_lc else '', |
1670 | 1840 | 'STDLIB': '-lc++' if is_lc else '-lstdc++', | 1861 | 'STDLIB': '-lc++' if is_lc else '-lstdc++', |
1671 | 1841 | 'STDLIB_FLAG': '-stdlib=libc++' if is_lc and is_clang else '' | 1862 | 'STDLIB_FLAG': '-stdlib=libc++' if is_lc and is_clang else '' |
1672 | 1842 | } | 1863 | } |
1674 | 1843 | 1864 | ||
1675 | 1865 | # for MOJAVE remove the MACFLAG: | ||
1676 | 1866 | if is_clang: | ||
1677 | 1867 | import platform | ||
1678 | 1868 | version, _, _ = platform.mac_ver() | ||
1679 | 1869 | if not version:# not linux | ||
1680 | 1870 | version = 14 # set version to remove MACFLAG | ||
1681 | 1871 | else: | ||
1682 | 1872 | version = int(version.split('.')[1]) | ||
1683 | 1873 | if version >= 14: | ||
1684 | 1874 | for_update['MACFLAG'] = '-mmacosx-version-min=10.8' if is_lc else '' | ||
1685 | 1875 | |||
1686 | 1844 | if not root_dir: | 1876 | if not root_dir: |
1687 | 1845 | root_dir = self.dir_path | 1877 | root_dir = self.dir_path |
1688 | 1846 | make_opts = pjoin(root_dir, 'Source', 'make_opts') | 1878 | make_opts = pjoin(root_dir, 'Source', 'make_opts') |
1689 | @@ -3411,6 +3443,7 @@ | |||
1690 | 3411 | return s_and_t_channels | 3443 | return s_and_t_channels |
1691 | 3412 | 3444 | ||
1692 | 3413 | 3445 | ||
1693 | 3446 | |||
1694 | 3414 | #=============================================================================== | 3447 | #=============================================================================== |
1695 | 3415 | # ProcessExporterFortranME | 3448 | # ProcessExporterFortranME |
1696 | 3416 | #=============================================================================== | 3449 | #=============================================================================== |
1697 | @@ -3419,7 +3452,16 @@ | |||
1698 | 3419 | MadEvent format.""" | 3452 | MadEvent format.""" |
1699 | 3420 | 3453 | ||
1700 | 3421 | matrix_file = "matrix_madevent_v4.inc" | 3454 | matrix_file = "matrix_madevent_v4.inc" |
1702 | 3422 | 3455 | ||
1703 | 3456 | # helper function for customise helas writter | ||
1704 | 3457 | @staticmethod | ||
1705 | 3458 | def custom_helas_call(call, arg): | ||
1706 | 3459 | if arg['mass'] == '%(M)s,%(W)s,': | ||
1707 | 3460 | arg['mass'] = '%(M)s, fk_%(W)s,' | ||
1708 | 3461 | elif '%(W)s' in arg['mass']: | ||
1709 | 3462 | raise Exception | ||
1710 | 3463 | return call, arg | ||
1711 | 3464 | |||
1712 | 3423 | def copy_template(self, model): | 3465 | def copy_template(self, model): |
1713 | 3424 | """Additional actions needed for setup of Template | 3466 | """Additional actions needed for setup of Template |
1714 | 3425 | """ | 3467 | """ |
1715 | @@ -3443,6 +3485,7 @@ | |||
1716 | 3443 | 3485 | ||
1717 | 3444 | 3486 | ||
1718 | 3445 | 3487 | ||
1719 | 3488 | |||
1720 | 3446 | 3489 | ||
1721 | 3447 | 3490 | ||
1722 | 3448 | #=========================================================================== | 3491 | #=========================================================================== |
1723 | @@ -3933,10 +3976,29 @@ | |||
1724 | 3933 | # Extract helas calls | 3976 | # Extract helas calls |
1725 | 3934 | helas_calls = fortran_model.get_matrix_element_calls(\ | 3977 | helas_calls = fortran_model.get_matrix_element_calls(\ |
1726 | 3935 | matrix_element) | 3978 | matrix_element) |
1727 | 3979 | |||
1728 | 3936 | 3980 | ||
1729 | 3937 | replace_dict['helas_calls'] = "\n".join(helas_calls) | 3981 | replace_dict['helas_calls'] = "\n".join(helas_calls) |
1730 | 3938 | 3982 | ||
1731 | 3939 | 3983 | ||
1732 | 3984 | #adding the support for the fake width (forbidding too small width) | ||
1733 | 3985 | mass_width = matrix_element.get_all_mass_widths() | ||
1734 | 3986 | width_list = set([e[1] for e in mass_width]) | ||
1735 | 3987 | |||
1736 | 3988 | replace_dict['fake_width_declaration'] = \ | ||
1737 | 3989 | (' double precision fk_%s \n' * len(width_list)) % tuple(width_list) | ||
1738 | 3990 | replace_dict['fake_width_declaration'] += \ | ||
1739 | 3991 | (' save fk_%s \n' * len(width_list)) % tuple(width_list) | ||
1740 | 3992 | fk_w_defs = [] | ||
1741 | 3993 | one_def = ' fk_%(w)s = SIGN(MAX(ABS(%(w)s), ABS(%(m)s*small_width_treatment)), %(w)s)' | ||
1742 | 3994 | for m, w in mass_width: | ||
1743 | 3995 | if w == 'zero': | ||
1744 | 3996 | if ' fk_zero = 0d0' not in fk_w_defs: | ||
1745 | 3997 | fk_w_defs.append(' fk_zero = 0d0') | ||
1746 | 3998 | continue | ||
1747 | 3999 | fk_w_defs.append(one_def %{'m':m, 'w':w}) | ||
1748 | 4000 | replace_dict['fake_width_definitions'] = '\n'.join(fk_w_defs) | ||
1749 | 4001 | |||
1750 | 3940 | # Extract version number and date from VERSION file | 4002 | # Extract version number and date from VERSION file |
1751 | 3941 | info_lines = self.get_mg5_info_lines() | 4003 | info_lines = self.get_mg5_info_lines() |
1752 | 3942 | replace_dict['info_lines'] = info_lines | 4004 | replace_dict['info_lines'] = info_lines |
1753 | 3943 | 4005 | ||
1754 | === modified file 'madgraph/iolibs/helas_call_writers.py' | |||
1755 | --- madgraph/iolibs/helas_call_writers.py 2016-03-03 23:17:06 +0000 | |||
1756 | +++ madgraph/iolibs/helas_call_writers.py 2018-11-09 10:32:12 +0000 | |||
1757 | @@ -21,11 +21,13 @@ | |||
1758 | 21 | import aloha.aloha_writers as aloha_writers | 21 | import aloha.aloha_writers as aloha_writers |
1759 | 22 | import aloha | 22 | import aloha |
1760 | 23 | from madgraph import MadGraph5Error | 23 | from madgraph import MadGraph5Error |
1761 | 24 | import madgraph.various.misc as misc | ||
1762 | 24 | 25 | ||
1763 | 25 | class HelasWriterError(Exception): | 26 | class HelasWriterError(Exception): |
1764 | 26 | """Class for the error of this module """ | 27 | """Class for the error of this module """ |
1765 | 27 | pass | 28 | pass |
1766 | 28 | 29 | ||
1767 | 30 | |||
1768 | 29 | #=============================================================================== | 31 | #=============================================================================== |
1769 | 30 | # HelasCallWriter | 32 | # HelasCallWriter |
1770 | 31 | #=============================================================================== | 33 | #=============================================================================== |
1771 | @@ -41,6 +43,19 @@ | |||
1772 | 41 | # Dictionaries from spin states to letters in Helas call | 43 | # Dictionaries from spin states to letters in Helas call |
1773 | 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', |
1774 | 43 | 99:'P'} | 45 | 99:'P'} |
1775 | 46 | |||
1776 | 47 | @staticmethod | ||
1777 | 48 | def customize_argument_for_all_other_helas_object(call, arg): | ||
1778 | 49 | """ Place holder for PLUGIN/... | ||
1779 | 50 | (used by madevent output for small width handling) | ||
1780 | 51 | """ | ||
1781 | 52 | return call, arg | ||
1782 | 53 | |||
1783 | 54 | @staticmethod | ||
1784 | 55 | def default_customize_argument_for_all_other_helas_object(call,arg): | ||
1785 | 56 | return call,arg | ||
1786 | 57 | #customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object | ||
1787 | 58 | #default_customize_argument_for_all_other_helas_object = fct_customize_argument_for_all_other_helas_object | ||
1788 | 44 | 59 | ||
1789 | 45 | def default_setup(self): | 60 | def default_setup(self): |
1790 | 46 | 61 | ||
1791 | @@ -85,6 +100,11 @@ | |||
1792 | 85 | 100 | ||
1793 | 86 | return ['model', 'wavefunctions', 'amplitudes'] | 101 | return ['model', 'wavefunctions', 'amplitudes'] |
1794 | 87 | 102 | ||
1795 | 103 | |||
1796 | 104 | |||
1797 | 105 | |||
1798 | 106 | |||
1799 | 107 | |||
1800 | 88 | def get_loop_amp_helas_calls(self, matrix_element): | 108 | def get_loop_amp_helas_calls(self, matrix_element): |
1801 | 89 | """Return a list of strings, corresponding to the Helas calls | 109 | """Return a list of strings, corresponding to the Helas calls |
1802 | 90 | for building loop amplitudes (AMPL) only.""" | 110 | for building loop amplitudes (AMPL) only.""" |
1803 | @@ -1197,6 +1217,7 @@ | |||
1804 | 1197 | arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)" | 1217 | arg['second_line'] = ampl+"="+ampl+"*(%(uvct)s)" |
1805 | 1198 | 1218 | ||
1806 | 1199 | # ALL ARGUMENT FORMATTED ############################################### | 1219 | # ALL ARGUMENT FORMATTED ############################################### |
1807 | 1220 | call, arg = HelasCallWriter.customize_argument_for_all_other_helas_object(call, arg) | ||
1808 | 1200 | # Store the result. | 1221 | # Store the result. |
1809 | 1201 | call = call % arg | 1222 | call = call % arg |
1810 | 1202 | # Now we have a line correctly formatted | 1223 | # Now we have a line correctly formatted |
1811 | @@ -1209,6 +1230,8 @@ | |||
1812 | 1209 | else: | 1230 | else: |
1813 | 1210 | self.add_amplitude(argument.get_call_key(), call_function) | 1231 | self.add_amplitude(argument.get_call_key(), call_function) |
1814 | 1211 | 1232 | ||
1815 | 1233 | |||
1816 | 1234 | |||
1817 | 1212 | def get_loop_amplitude_helas_calls(self, loop_matrix_element): | 1235 | def get_loop_amplitude_helas_calls(self, loop_matrix_element): |
1818 | 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 |
1819 | 1214 | loop amplitude of this loop matrix element. This function is placed in | 1237 | loop amplitude of this loop matrix element. This function is placed in |
1820 | 1215 | 1238 | ||
1821 | === modified file 'madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc' | |||
1822 | --- madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2017-11-01 10:08:52 +0000 | |||
1823 | +++ madgraph/iolibs/template_files/matrix_loop_induced_madevent_group.inc 2018-11-09 10:32:12 +0000 | |||
1824 | @@ -39,6 +39,7 @@ | |||
1825 | 39 | C When set negative, the security above is removed | 39 | C When set negative, the security above is removed |
1826 | 40 | DOUBLE PRECISION MULTICHANNEL_THRES | 40 | DOUBLE PRECISION MULTICHANNEL_THRES |
1827 | 41 | PARAMETER (MULTICHANNEL_THRES=1.0d-5) | 41 | PARAMETER (MULTICHANNEL_THRES=1.0d-5) |
1828 | 42 | |||
1829 | 42 | c | 43 | c |
1830 | 43 | c global (due to reading writting) | 44 | c global (due to reading writting) |
1831 | 44 | c | 45 | c |
1832 | 45 | 46 | ||
1833 | === modified file 'madgraph/iolibs/template_files/matrix_madevent_group_v4.inc' | |||
1834 | --- madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2017-11-01 10:08:52 +0000 | |||
1835 | +++ madgraph/iolibs/template_files/matrix_madevent_group_v4.inc 2018-11-09 10:32:12 +0000 | |||
1836 | @@ -68,6 +68,9 @@ | |||
1837 | 68 | 68 | ||
1838 | 69 | REAL*8 POL(2) | 69 | REAL*8 POL(2) |
1839 | 70 | COMMON/TO_POLARIZATION/ POL | 70 | COMMON/TO_POLARIZATION/ POL |
1840 | 71 | |||
1841 | 72 | double precision small_width_treatment | ||
1842 | 73 | common/narrow_width/small_width_treatment | ||
1843 | 71 | 74 | ||
1844 | 72 | INTEGER ISUM_HEL | 75 | INTEGER ISUM_HEL |
1845 | 73 | LOGICAL MULTI_CHANNEL | 76 | LOGICAL MULTI_CHANNEL |
1846 | @@ -87,6 +90,7 @@ | |||
1847 | 87 | C ---------- | 90 | C ---------- |
1848 | 88 | C BEGIN CODE | 91 | C BEGIN CODE |
1849 | 89 | C ---------- | 92 | C ---------- |
1850 | 93 | |||
1851 | 90 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 | 94 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 |
1852 | 91 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 | 95 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 |
1853 | 92 | DO I=1,NEXTERNAL | 96 | DO I=1,NEXTERNAL |
1854 | @@ -255,6 +259,11 @@ | |||
1855 | 255 | C Needed for v4 models | 259 | C Needed for v4 models |
1856 | 256 | COMPLEX*16 DUM0,DUM1 | 260 | COMPLEX*16 DUM0,DUM1 |
1857 | 257 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ | 261 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ |
1858 | 262 | |||
1859 | 263 | %(fake_width_declaration)s | ||
1860 | 264 | logical first | ||
1861 | 265 | data first /.true./ | ||
1862 | 266 | save first | ||
1863 | 258 | C | 267 | C |
1864 | 259 | C FUNCTION | 268 | C FUNCTION |
1865 | 260 | C | 269 | C |
1866 | @@ -265,6 +274,9 @@ | |||
1867 | 265 | Double Precision amp2(maxamps), jamp2(0:maxflow) | 274 | Double Precision amp2(maxamps), jamp2(0:maxflow) |
1868 | 266 | common/to_amps/ amp2, jamp2 | 275 | common/to_amps/ amp2, jamp2 |
1869 | 267 | include 'coupl.inc' | 276 | include 'coupl.inc' |
1870 | 277 | |||
1871 | 278 | double precision small_width_treatment | ||
1872 | 279 | common/narrow_width/small_width_treatment | ||
1873 | 268 | C | 280 | C |
1874 | 269 | C COLOR DATA | 281 | C COLOR DATA |
1875 | 270 | C | 282 | C |
1876 | @@ -272,6 +284,12 @@ | |||
1877 | 272 | C ---------- | 284 | C ---------- |
1878 | 273 | C BEGIN CODE | 285 | C BEGIN CODE |
1879 | 274 | C ---------- | 286 | C ---------- |
1880 | 287 | if (first) then | ||
1881 | 288 | first=.false. | ||
1882 | 289 | %(fake_width_definitions)s | ||
1883 | 290 | endif | ||
1884 | 291 | |||
1885 | 292 | |||
1886 | 275 | %(helas_calls)s | 293 | %(helas_calls)s |
1887 | 276 | %(jamp_lines)s | 294 | %(jamp_lines)s |
1888 | 277 | 295 | ||
1889 | 278 | 296 | ||
1890 | === modified file 'madgraph/iolibs/template_files/matrix_madevent_v4.inc' | |||
1891 | --- madgraph/iolibs/template_files/matrix_madevent_v4.inc 2017-11-01 10:08:52 +0000 | |||
1892 | +++ madgraph/iolibs/template_files/matrix_madevent_v4.inc 2018-11-09 10:32:12 +0000 | |||
1893 | @@ -49,6 +49,7 @@ | |||
1894 | 49 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ | 49 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ |
1895 | 50 | REAL XRAN1 | 50 | REAL XRAN1 |
1896 | 51 | EXTERNAL XRAN1 | 51 | EXTERNAL XRAN1 |
1897 | 52 | |||
1898 | 52 | C | 53 | C |
1899 | 53 | C GLOBAL VARIABLES | 54 | C GLOBAL VARIABLES |
1900 | 54 | C | 55 | C |
1901 | @@ -58,7 +59,7 @@ | |||
1902 | 58 | CHARACTER*101 HEL_BUFF | 59 | CHARACTER*101 HEL_BUFF |
1903 | 59 | COMMON/TO_HELICITY/ HEL_BUFF | 60 | COMMON/TO_HELICITY/ HEL_BUFF |
1904 | 60 | 61 | ||
1906 | 61 | REAL*8 POL(2) | 62 | REAL*8 POL(2) |
1907 | 62 | COMMON/TO_POLARIZATION/ POL | 63 | COMMON/TO_POLARIZATION/ POL |
1908 | 63 | 64 | ||
1909 | 64 | INTEGER ISUM_HEL | 65 | INTEGER ISUM_HEL |
1910 | @@ -68,6 +69,7 @@ | |||
1911 | 68 | DATA IDUM /-1/ | 69 | DATA IDUM /-1/ |
1912 | 69 | DATA XTRY, XREJ, NGOOD /0,0,0/ | 70 | DATA XTRY, XREJ, NGOOD /0,0,0/ |
1913 | 70 | SAVE YFRAC, IGOOD, JHEL | 71 | SAVE YFRAC, IGOOD, JHEL |
1914 | 72 | |||
1915 | 71 | %(helicity_lines)s | 73 | %(helicity_lines)s |
1916 | 72 | %(den_factor_line)s | 74 | %(den_factor_line)s |
1917 | 73 | C ---------- | 75 | C ---------- |
1918 | @@ -235,6 +237,11 @@ | |||
1919 | 235 | C Needed for v4 models | 237 | C Needed for v4 models |
1920 | 236 | COMPLEX*16 DUM0,DUM1 | 238 | COMPLEX*16 DUM0,DUM1 |
1921 | 237 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ | 239 | DATA DUM0, DUM1/(0d0, 0d0), (1d0, 0d0)/ |
1922 | 240 | |||
1923 | 241 | %(fake_width_declaration)s | ||
1924 | 242 | logical first | ||
1925 | 243 | data first /.true./ | ||
1926 | 244 | save first | ||
1927 | 238 | C | 245 | C |
1928 | 239 | C FUNCTION | 246 | C FUNCTION |
1929 | 240 | C | 247 | C |
1930 | @@ -245,6 +252,9 @@ | |||
1931 | 245 | Double Precision amp2(maxamps), jamp2(0:maxflow) | 252 | Double Precision amp2(maxamps), jamp2(0:maxflow) |
1932 | 246 | common/to_amps/ amp2, jamp2 | 253 | common/to_amps/ amp2, jamp2 |
1933 | 247 | include 'coupl.inc' | 254 | include 'coupl.inc' |
1934 | 255 | |||
1935 | 256 | double precision small_width_treatment | ||
1936 | 257 | common/narrow_width/small_width_treatment | ||
1937 | 248 | C | 258 | C |
1938 | 249 | C COLOR DATA | 259 | C COLOR DATA |
1939 | 250 | C | 260 | C |
1940 | @@ -252,6 +262,11 @@ | |||
1941 | 252 | C ---------- | 262 | C ---------- |
1942 | 253 | C BEGIN CODE | 263 | C BEGIN CODE |
1943 | 254 | C ---------- | 264 | C ---------- |
1944 | 265 | if (first) then | ||
1945 | 266 | first=.false. | ||
1946 | 267 | %(fake_width_definitions)s | ||
1947 | 268 | endif | ||
1948 | 269 | |||
1949 | 255 | %(helas_calls)s | 270 | %(helas_calls)s |
1950 | 256 | %(jamp_lines)s | 271 | %(jamp_lines)s |
1951 | 257 | 272 | ||
1952 | 258 | 273 | ||
1953 | === modified file 'madgraph/iolibs/template_files/matrix_madweight_group_v4.inc' | |||
1954 | --- madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2012-02-29 12:53:46 +0000 | |||
1955 | +++ madgraph/iolibs/template_files/matrix_madweight_group_v4.inc 2018-11-09 10:32:12 +0000 | |||
1956 | @@ -22,6 +22,7 @@ | |||
1957 | 22 | C ARGUMENTS | 22 | C ARGUMENTS |
1958 | 23 | C | 23 | C |
1959 | 24 | REAL*8 P(0:3,NEXTERNAL),ANS | 24 | REAL*8 P(0:3,NEXTERNAL),ANS |
1960 | 25 | |||
1961 | 25 | C | 26 | C |
1962 | 26 | C LOCAL VARIABLES | 27 | C LOCAL VARIABLES |
1963 | 27 | C | 28 | C |
1964 | 28 | 29 | ||
1965 | === modified file 'madgraph/madevent/sum_html.py' | |||
1966 | --- madgraph/madevent/sum_html.py 2018-05-25 09:13:24 +0000 | |||
1967 | +++ madgraph/madevent/sum_html.py 2018-11-09 10:32:12 +0000 | |||
1968 | @@ -699,7 +699,7 @@ | |||
1969 | 699 | P_comb = Combine_results(Pdir) | 699 | P_comb = Combine_results(Pdir) |
1970 | 700 | 700 | ||
1971 | 701 | if jobs: | 701 | if jobs: |
1973 | 702 | for job in filter(lambda j: j['p_dir'] == Pdir, jobs): | 702 | for job in filter(lambda j: j['p_dir'] in Pdir, jobs): |
1974 | 703 | P_comb.add_results(os.path.basename(job['dirname']),\ | 703 | P_comb.add_results(os.path.basename(job['dirname']),\ |
1975 | 704 | pjoin(job['dirname'],'results.dat')) | 704 | pjoin(job['dirname'],'results.dat')) |
1976 | 705 | elif folder_names: | 705 | elif folder_names: |
1977 | 706 | 706 | ||
1978 | === modified file 'madgraph/various/banner.py' | |||
1979 | --- madgraph/various/banner.py 2018-05-17 13:55:48 +0000 | |||
1980 | +++ madgraph/various/banner.py 2018-11-09 10:32:12 +0000 | |||
1981 | @@ -483,9 +483,9 @@ | |||
1982 | 483 | def charge_card(self, tag): | 483 | def charge_card(self, tag): |
1983 | 484 | """Build the python object associated to the card""" | 484 | """Build the python object associated to the card""" |
1984 | 485 | 485 | ||
1986 | 486 | if tag == 'param_card': | 486 | if tag in ['param_card', 'param']: |
1987 | 487 | tag = 'slha' | 487 | tag = 'slha' |
1989 | 488 | elif tag == 'run_card': | 488 | elif tag in ['run_card', 'run']: |
1990 | 489 | tag = 'mgruncard' | 489 | tag = 'mgruncard' |
1991 | 490 | elif tag == 'proc_card': | 490 | elif tag == 'proc_card': |
1992 | 491 | tag = 'mg5proccard' | 491 | tag = 'mg5proccard' |
1993 | @@ -905,7 +905,10 @@ | |||
1994 | 905 | out = [] | 905 | out = [] |
1995 | 906 | for line in self: | 906 | for line in self: |
1996 | 907 | if line.startswith('define'): | 907 | if line.startswith('define'): |
1998 | 908 | name, content = line[7:].split('=',1) | 908 | try: |
1999 | 909 | name, content = line[7:].split('=',1) | ||
2000 | 910 | except ValueError: | ||
2001 | 911 | name, content = line[7:].split(None,1) | ||
2002 | 909 | out.append((name, content)) | 912 | out.append((name, content)) |
2003 | 910 | return out | 913 | return out |
2004 | 911 | else: | 914 | else: |
2005 | @@ -2372,9 +2375,9 @@ | |||
2006 | 2372 | else: | 2375 | else: |
2007 | 2373 | this_group = this_group[0] | 2376 | this_group = this_group[0] |
2008 | 2374 | if block_name in write_block: | 2377 | if block_name in write_block: |
2010 | 2375 | text += this_group.on_template % self | 2378 | text += this_group.template_on % self |
2011 | 2376 | for name in this_group.fields: | 2379 | for name in this_group.fields: |
2013 | 2377 | written.add(f) | 2380 | written.add(name) |
2014 | 2378 | if name in to_write: | 2381 | if name in to_write: |
2015 | 2379 | to_write.remove(name) | 2382 | to_write.remove(name) |
2016 | 2380 | else: | 2383 | else: |
2017 | @@ -2949,6 +2952,7 @@ | |||
2018 | 2949 | 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.") |
2019 | 2950 | 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") |
2020 | 2951 | 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)") |
2021 | 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") | ||
2022 | 2952 | 2956 | ||
2023 | 2953 | # parameter allowing to define simple cut via the pdg | 2957 | # parameter allowing to define simple cut via the pdg |
2024 | 2954 | # Special syntax are related to those. (can not be edit directly) | 2958 | # Special syntax are related to those. (can not be edit directly) |
2025 | @@ -2970,7 +2974,7 @@ | |||
2026 | 2970 | self.add_param('etamax4pdg',[-1.], system=True) | 2974 | self.add_param('etamax4pdg',[-1.], system=True) |
2027 | 2971 | self.add_param('mxxmin4pdg',[-1.], system=True) | 2975 | self.add_param('mxxmin4pdg',[-1.], system=True) |
2028 | 2972 | self.add_param('mxxpart_antipart', [False], system=True) | 2976 | self.add_param('mxxpart_antipart', [False], system=True) |
2030 | 2973 | 2977 | ||
2031 | 2974 | 2978 | ||
2032 | 2975 | def check_validity(self): | 2979 | def check_validity(self): |
2033 | 2976 | """ """ | 2980 | """ """ |
2034 | 2977 | 2981 | ||
2035 | === modified file 'madgraph/various/lhe_parser.py' | |||
2036 | --- madgraph/various/lhe_parser.py 2018-06-21 08:57:21 +0000 | |||
2037 | +++ madgraph/various/lhe_parser.py 2018-11-09 10:32:12 +0000 | |||
2038 | @@ -167,6 +167,7 @@ | |||
2039 | 167 | """associate to this particle the decay in the associate event""" | 167 | """associate to this particle the decay in the associate event""" |
2040 | 168 | 168 | ||
2041 | 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) |
2042 | 170 | |||
2043 | 170 | 171 | ||
2044 | 171 | def __repr__(self): | 172 | def __repr__(self): |
2045 | 172 | return 'Particle("%s", event=%s)' % (str(self), self.event) | 173 | return 'Particle("%s", event=%s)' % (str(self), self.event) |
2046 | @@ -1263,26 +1264,28 @@ | |||
2047 | 1263 | 1264 | ||
2048 | 1264 | if 'part' == status: | 1265 | if 'part' == status: |
2049 | 1265 | part = Particle(line, event=self) | 1266 | part = Particle(line, event=self) |
2051 | 1266 | if part.E != 0: | 1267 | if part.E != 0 or part.status==-1: |
2052 | 1267 | self.append(part) | 1268 | self.append(part) |
2053 | 1268 | elif self.nexternal: | 1269 | elif self.nexternal: |
2055 | 1269 | self.nexternal-=1 | 1270 | self.nexternal-=1 |
2056 | 1270 | else: | 1271 | else: |
2057 | 1271 | if '</event>' in line: | 1272 | if '</event>' in line: |
2058 | 1272 | line = line.replace('</event>','',1) | 1273 | line = line.replace('</event>','',1) |
2059 | 1273 | self.tag += '%s\n' % line | 1274 | self.tag += '%s\n' % line |
2060 | 1274 | 1275 | ||
2061 | 1275 | self.assign_mother() | 1276 | self.assign_mother() |
2063 | 1276 | 1277 | ||
2064 | 1278 | |||
2065 | 1277 | def assign_mother(self): | 1279 | def assign_mother(self): |
2066 | 1278 | """convert the number in actual particle""" | 1280 | """convert the number in actual particle""" |
2069 | 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 |
2068 | 1280 | # decaying from that fake particle | ||
2070 | 1281 | if all(p.status != -1 for p in self): | 1282 | if all(p.status != -1 for p in self): |
2071 | 1283 | if not self.nexternal: | ||
2072 | 1284 | return | ||
2073 | 1282 | if self.warning_order: | 1285 | if self.warning_order: |
2074 | 1283 | Event.warning_order = False | 1286 | Event.warning_order = False |
2075 | 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") |
2077 | 1285 | 1288 | raise Exception | |
2078 | 1286 | mother = Particle(event=self) | 1289 | mother = Particle(event=self) |
2079 | 1287 | mother.status = -1 | 1290 | mother.status = -1 |
2080 | 1288 | mother.pid = 0 | 1291 | mother.pid = 0 |
2081 | @@ -1291,8 +1294,10 @@ | |||
2082 | 1291 | mother.event_id = 0 | 1294 | mother.event_id = 0 |
2083 | 1292 | self.nexternal += 1 | 1295 | self.nexternal += 1 |
2084 | 1293 | for p in self[1:]: | 1296 | for p in self[1:]: |
2087 | 1294 | p.mother1 = 1 | 1297 | if isinstance(p.mother1, int) and p.mother1 > 1: |
2088 | 1295 | p.mother2 = 1 | 1298 | p.mother1 += 1 |
2089 | 1299 | if isinstance(p.mother2, int) and p.mother2 > 1: | ||
2090 | 1300 | p.mother2 += 1 | ||
2091 | 1296 | p.event_id += 1 | 1301 | p.event_id += 1 |
2092 | 1297 | 1302 | ||
2093 | 1298 | 1303 | ||
2094 | 1299 | 1304 | ||
2095 | === modified file 'madgraph/various/systematics.py' | |||
2096 | --- madgraph/various/systematics.py 2018-03-25 08:30:56 +0000 | |||
2097 | +++ madgraph/various/systematics.py 2018-11-09 10:32:12 +0000 | |||
2098 | @@ -885,6 +885,7 @@ | |||
2099 | 885 | for onewgt in cevent.wgts: | 885 | for onewgt in cevent.wgts: |
2100 | 886 | if not __debug__ and (dyn== -1 and Dmur==1 and Dmuf==1 and pdf==self.orig_pdf): | 886 | if not __debug__ and (dyn== -1 and Dmur==1 and Dmuf==1 and pdf==self.orig_pdf): |
2101 | 887 | wgt += onewgt.ref_wgt | 887 | wgt += onewgt.ref_wgt |
2102 | 888 | continue | ||
2103 | 888 | 889 | ||
2104 | 889 | if dyn == -1: | 890 | if dyn == -1: |
2105 | 890 | mur2 = onewgt.scales2[1] | 891 | mur2 = onewgt.scales2[1] |
2106 | 891 | 892 | ||
2107 | === modified file 'models/check_param_card.py' | |||
2108 | --- models/check_param_card.py 2018-04-26 14:24:04 +0000 | |||
2109 | +++ models/check_param_card.py 2018-11-09 10:32:12 +0000 | |||
2110 | @@ -178,7 +178,7 @@ | |||
2111 | 178 | 178 | ||
2112 | 179 | def rename_keys(self, change_keys): | 179 | def rename_keys(self, change_keys): |
2113 | 180 | 180 | ||
2115 | 181 | misc.sprint(self.param_dict, change_keys, [p.lhacode for p in self]) | 181 | |
2116 | 182 | for old_key, new_key in change_keys.items(): | 182 | for old_key, new_key in change_keys.items(): |
2117 | 183 | 183 | ||
2118 | 184 | assert old_key in self.param_dict | 184 | assert old_key in self.param_dict |
2119 | @@ -509,15 +509,15 @@ | |||
2120 | 509 | if model_value.imag > 1e-5 * model_value.real: | 509 | if model_value.imag > 1e-5 * model_value.real: |
2121 | 510 | raise Exception, "Width should be real number: particle %s (%s) has mass: %s" | 510 | raise Exception, "Width should be real number: particle %s (%s) has mass: %s" |
2122 | 511 | model_value = model_value.real | 511 | model_value = model_value.real |
2124 | 512 | if not misc.equal(model_value, param_value, 4): | 512 | if not misc.equal(abs(model_value), param_value, 4): |
2125 | 513 | modify = True | 513 | modify = True |
2126 | 514 | if loglevel == 20: | 514 | if loglevel == 20: |
2127 | 515 | logger.info('For consistency, the width of particle %s (%s) is changed to %s.' % (lhacode, particle.get('name'), model_value), '$MG:BOLD') | 515 | logger.info('For consistency, the width of particle %s (%s) is changed to %s.' % (lhacode, particle.get('name'), model_value), '$MG:BOLD') |
2128 | 516 | else: | 516 | else: |
2129 | 517 | logger.log(loglevel,'For consistency, the width of particle %s (%s) is changed to %s.' % (lhacode, particle.get('name'), model_value)) | 517 | logger.log(loglevel,'For consistency, the width of particle %s (%s) is changed to %s.' % (lhacode, particle.get('name'), model_value)) |
2130 | 518 | #logger.debug('was %s', param_value) | 518 | #logger.debug('was %s', param_value) |
2133 | 519 | if model_value != param_value: | 519 | if abs(model_value) != param_value: |
2134 | 520 | self.get('decay').get(abs(particle.get_pdg_code())).value = model_value | 520 | self.get('decay').get(abs(particle.get_pdg_code())).value = abs(model_value) |
2135 | 521 | 521 | ||
2136 | 522 | return modify | 522 | return modify |
2137 | 523 | 523 | ||
2138 | @@ -640,6 +640,11 @@ | |||
2139 | 640 | logger.warning('information about \"%s %s" is missing (full block missing) using default value: %s.' %\ | 640 | logger.warning('information about \"%s %s" is missing (full block missing) using default value: %s.' %\ |
2140 | 641 | (block, lhaid, value)) | 641 | (block, lhaid, value)) |
2141 | 642 | value = str(value).lower() | 642 | value = str(value).lower() |
2142 | 643 | #special handling for negative mass -> set width negative | ||
2143 | 644 | if block == 'decay': | ||
2144 | 645 | if self['mass'].get(tuple(lhaid)).value < 0: | ||
2145 | 646 | value = '-%s' % value | ||
2146 | 647 | |||
2147 | 643 | fout.writelines(' %s = %s' % (variable, ('%e'%float(value)).replace('e','d'))) | 648 | fout.writelines(' %s = %s' % (variable, ('%e'%float(value)).replace('e','d'))) |
2148 | 644 | if need_mp: | 649 | if need_mp: |
2149 | 645 | fout.writelines(' mp__%s = %s_16' % (variable, value)) | 650 | fout.writelines(' mp__%s = %s_16' % (variable, value)) |
2150 | @@ -1036,7 +1041,6 @@ | |||
2151 | 1036 | data.append(info[k]) | 1041 | data.append(info[k]) |
2152 | 1037 | else: | 1042 | else: |
2153 | 1038 | data.append(0.) | 1043 | data.append(0.) |
2154 | 1039 | misc.sprint(name, bench, data) | ||
2155 | 1040 | ff.write(formatting % tuple([name] + bench + data)) | 1044 | ff.write(formatting % tuple([name] + bench + data)) |
2156 | 1041 | 1045 | ||
2157 | 1042 | if not path: | 1046 | if not path: |
2158 | 1043 | 1047 | ||
2159 | === modified file 'models/import_ufo.py' | |||
2160 | --- models/import_ufo.py 2018-06-15 13:28:53 +0000 | |||
2161 | +++ models/import_ufo.py 2018-11-09 10:32:12 +0000 | |||
2162 | @@ -112,6 +112,8 @@ | |||
2163 | 112 | data = urllib.urlopen(cluster_path) | 112 | data = urllib.urlopen(cluster_path) |
2164 | 113 | except Exception: | 113 | except Exception: |
2165 | 114 | continue | 114 | continue |
2166 | 115 | if data.getcode() != 200: | ||
2167 | 116 | continue | ||
2168 | 115 | break | 117 | break |
2169 | 116 | else: | 118 | else: |
2170 | 117 | raise MadGraph5Error, '''Model not found locally and Impossible to connect any of us servers. | 119 | raise MadGraph5Error, '''Model not found locally and Impossible to connect any of us servers. |
2171 | @@ -138,7 +140,8 @@ | |||
2172 | 138 | target = None | 140 | target = None |
2173 | 139 | if 'PYTHONPATH' in os.environ and not local_dir: | 141 | if 'PYTHONPATH' in os.environ and not local_dir: |
2174 | 140 | for directory in os.environ['PYTHONPATH'].split(':'): | 142 | for directory in os.environ['PYTHONPATH'].split(':'): |
2176 | 141 | if 'UFO' in os.path.basename(directory) and os.path.exists(directory): | 143 | if 'UFO' in os.path.basename(directory) and os.path.exists(directory) and\ |
2177 | 144 | misc.glob('*/couplings.py', path=directory): | ||
2178 | 142 | target= directory | 145 | target= directory |
2179 | 143 | if target is None: | 146 | if target is None: |
2180 | 144 | target = pjoin(MG5DIR, 'models') | 147 | target = pjoin(MG5DIR, 'models') |
2181 | @@ -646,14 +649,15 @@ | |||
2182 | 646 | continue | 649 | continue |
2183 | 647 | names = [interaction['lorentz'][i] for i in to_lor[key]] | 650 | names = [interaction['lorentz'][i] for i in to_lor[key]] |
2184 | 648 | names.sort() | 651 | names.sort() |
2186 | 649 | 652 | if self.lorentz_info[names[0]].get('structure') == 'external': | |
2187 | 653 | continue | ||
2188 | 650 | # get name of the new lorentz | 654 | # get name of the new lorentz |
2189 | 651 | if tuple(names) in self.lorentz_combine: | 655 | if tuple(names) in self.lorentz_combine: |
2190 | 652 | # already created new loretnz | 656 | # already created new loretnz |
2191 | 653 | new_name = self.lorentz_combine[tuple(names)] | 657 | new_name = self.lorentz_combine[tuple(names)] |
2192 | 654 | else: | 658 | else: |
2193 | 655 | new_name = self.add_merge_lorentz(names) | 659 | new_name = self.add_merge_lorentz(names) |
2195 | 656 | 660 | ||
2196 | 657 | # remove the old couplings | 661 | # remove the old couplings |
2197 | 658 | color, coup = key | 662 | color, coup = key |
2198 | 659 | to_remove = [(color, lor) for lor in to_lor[key]] | 663 | to_remove = [(color, lor) for lor in to_lor[key]] |
2199 | @@ -696,7 +700,12 @@ | |||
2200 | 696 | # load the associate lorentz expression | 700 | # load the associate lorentz expression |
2201 | 697 | new_struct = ' + '.join([self.lorentz_info[n].get('structure') for n in names]) | 701 | new_struct = ' + '.join([self.lorentz_info[n].get('structure') for n in names]) |
2202 | 698 | spins = self.lorentz_info[names[0]].get('spins') | 702 | spins = self.lorentz_info[names[0]].get('spins') |
2204 | 699 | new_lor = self.add_lorentz(new_name, spins, new_struct) | 703 | formfactors = sum([ self.lorentz_info[n].get('formfactors') for n in names \ |
2205 | 704 | if hasattr(self.lorentz_info[n], 'formfactors') \ | ||
2206 | 705 | and self.lorentz_info[n].get('formfactors') \ | ||
2207 | 706 | ],[]) | ||
2208 | 707 | |||
2209 | 708 | new_lor = self.add_lorentz(new_name, spins, new_struct, formfactors) | ||
2210 | 700 | self.lorentz_info[new_name] = new_lor | 709 | self.lorentz_info[new_name] = new_lor |
2211 | 701 | 710 | ||
2212 | 702 | return new_name | 711 | return new_name |
2213 | @@ -1368,15 +1377,19 @@ | |||
2214 | 1368 | 1377 | ||
2215 | 1369 | return '' if sign ==1 else '-' | 1378 | return '' if sign ==1 else '-' |
2216 | 1370 | 1379 | ||
2218 | 1371 | def add_lorentz(self, name, spins , expr): | 1380 | def add_lorentz(self, name, spins , expr, formfact=None): |
2219 | 1372 | """ Add a Lorentz expression which is not present in the UFO """ | 1381 | """ Add a Lorentz expression which is not present in the UFO """ |
2220 | 1373 | 1382 | ||
2221 | 1383 | logger.debug('MG5 converter defines %s to %s', name, expr) | ||
2222 | 1374 | assert name not in [l.name for l in self.model['lorentz']] | 1384 | assert name not in [l.name for l in self.model['lorentz']] |
2223 | 1375 | with misc.TMP_variable(self.ufomodel.object_library, 'all_lorentz', | 1385 | with misc.TMP_variable(self.ufomodel.object_library, 'all_lorentz', |
2224 | 1376 | self.model['lorentz']): | 1386 | self.model['lorentz']): |
2225 | 1377 | new = self.model['lorentz'][0].__class__(name = name, | 1387 | new = self.model['lorentz'][0].__class__(name = name, |
2226 | 1378 | spins = spins, | 1388 | spins = spins, |
2227 | 1379 | structure = expr) | 1389 | structure = expr) |
2228 | 1390 | if formfact: | ||
2229 | 1391 | new.formfactors = formfact | ||
2230 | 1392 | |||
2231 | 1380 | assert name in [l.name for l in self.model['lorentz']] | 1393 | assert name in [l.name for l in self.model['lorentz']] |
2232 | 1381 | assert name not in [l.name for l in self.ufomodel.all_lorentz] | 1394 | assert name not in [l.name for l in self.ufomodel.all_lorentz] |
2233 | 1382 | #self.model['lorentz'].append(new) # already done by above command | 1395 | #self.model['lorentz'].append(new) # already done by above command |
2234 | @@ -1973,7 +1986,7 @@ | |||
2235 | 1973 | null_parameters.append(name) | 1986 | null_parameters.append(name) |
2236 | 1974 | elif value == 1: | 1987 | elif value == 1: |
2237 | 1975 | one_parameters.append(name) | 1988 | one_parameters.append(name) |
2239 | 1976 | 1989 | ||
2240 | 1977 | return null_parameters, one_parameters | 1990 | return null_parameters, one_parameters |
2241 | 1978 | 1991 | ||
2242 | 1979 | def apply_conditional_simplifications(self, modified_params, | 1992 | def apply_conditional_simplifications(self, modified_params, |
2243 | @@ -2301,7 +2314,9 @@ | |||
2244 | 2301 | particle['width'] = 'ZERO' | 2314 | particle['width'] = 'ZERO' |
2245 | 2302 | if particle['width'] in one_parameters: | 2315 | if particle['width'] in one_parameters: |
2246 | 2303 | one_parameters.remove(particle['width']) | 2316 | one_parameters.remove(particle['width']) |
2248 | 2304 | 2317 | if particle['mass'] in one_parameters: | |
2249 | 2318 | one_parameters.remove(particle['mass']) | ||
2250 | 2319 | |||
2251 | 2305 | for pdg, particle in self['particle_dict'].items(): | 2320 | for pdg, particle in self['particle_dict'].items(): |
2252 | 2306 | if particle['mass'] in zero_parameters: | 2321 | if particle['mass'] in zero_parameters: |
2253 | 2307 | particle['mass'] = 'ZERO' | 2322 | particle['mass'] = 'ZERO' |
2254 | @@ -2340,6 +2355,13 @@ | |||
2255 | 2340 | for coupling in coupling_list: | 2355 | for coupling in coupling_list: |
2256 | 2341 | for use in re_pat.findall(coupling.expr): | 2356 | for use in re_pat.findall(coupling.expr): |
2257 | 2342 | used.add(use) | 2357 | used.add(use) |
2258 | 2358 | |||
2259 | 2359 | # check in form-factor | ||
2260 | 2360 | for lor in self['lorentz']: | ||
2261 | 2361 | if hasattr(lor, 'formfactors') and lor.formfactors: | ||
2262 | 2362 | for ff in lor.formfactors: | ||
2263 | 2363 | for use in re_pat.findall(ff.value): | ||
2264 | 2364 | used.add(use) | ||
2265 | 2343 | else: | 2365 | else: |
2266 | 2344 | used = set([i for i in special_parameters if i]) | 2366 | used = set([i for i in special_parameters if i]) |
2267 | 2345 | 2367 | ||
2268 | @@ -2484,16 +2506,26 @@ | |||
2269 | 2484 | if any( n.startswith('d') for n in names ): | 2506 | if any( n.startswith('d') for n in names ): |
2270 | 2485 | new_struct += '-' + ' - '.join(['1.*(%s)' %self.lorentz_info[n[1:]].get('structure') for n in names if n.startswith('d')]) | 2507 | new_struct += '-' + ' - '.join(['1.*(%s)' %self.lorentz_info[n[1:]].get('structure') for n in names if n.startswith('d')]) |
2271 | 2486 | spins = self.lorentz_info[names[0][1:]].get('spins') | 2508 | spins = self.lorentz_info[names[0][1:]].get('spins') |
2273 | 2487 | new_lor = self.add_lorentz(new_name, spins, new_struct) | 2509 | formfact = sum([ self.lorentz_info[n[1:]].get('formfactors') for n in names \ |
2274 | 2510 | if hasattr(self.lorentz_info[n[1:]], 'formfactors') \ | ||
2275 | 2511 | and self.lorentz_info[n[1:]].get('formfactors') \ | ||
2276 | 2512 | ],[]) | ||
2277 | 2513 | |||
2278 | 2514 | |||
2279 | 2515 | |||
2280 | 2516 | |||
2281 | 2517 | new_lor = self.add_lorentz(new_name, spins, new_struct, formfact) | ||
2282 | 2488 | self.lorentz_info[new_name] = new_lor | 2518 | self.lorentz_info[new_name] = new_lor |
2283 | 2489 | 2519 | ||
2284 | 2490 | return new_name | 2520 | return new_name |
2285 | 2491 | 2521 | ||
2287 | 2492 | def add_lorentz(self, name, spin, struct): | 2522 | def add_lorentz(self, name, spin, struct, formfact=None): |
2288 | 2493 | """adding lorentz structure to the current model""" | 2523 | """adding lorentz structure to the current model""" |
2289 | 2494 | new = self['lorentz'][0].__class__(name = name, | 2524 | new = self['lorentz'][0].__class__(name = name, |
2290 | 2495 | spins = spin, | 2525 | spins = spin, |
2291 | 2496 | structure = struct) | 2526 | structure = struct) |
2292 | 2527 | if formfact: | ||
2293 | 2528 | new.formfactors = formfact | ||
2294 | 2497 | self['lorentz'].append(new) | 2529 | self['lorentz'].append(new) |
2295 | 2498 | self.create_lorentz_dict() | 2530 | self.create_lorentz_dict() |
2296 | 2499 | 2531 | ||
2297 | 2500 | 2532 | ||
2298 | === modified file 'tests/IOTests.py' | |||
2299 | --- tests/IOTests.py 2016-09-07 13:39:06 +0000 | |||
2300 | +++ tests/IOTests.py 2018-11-09 10:32:12 +0000 | |||
2301 | @@ -296,20 +296,26 @@ | |||
2302 | 296 | """Clean up the file created. Called at the end of the test run.""" | 296 | """Clean up the file created. Called at the end of the test run.""" |
2303 | 297 | 297 | ||
2304 | 298 | pathsToClean = [self.temporary_folder] | 298 | pathsToClean = [self.temporary_folder] |
2306 | 299 | 299 | ||
2307 | 300 | if not self.clean_function is None: | 300 | if not self.clean_function is None: |
2308 | 301 | paths, prevent_cleanUp = self.clean_function(*args, **kwargs) | 301 | paths, prevent_cleanUp = self.clean_function(*args, **kwargs) |
2310 | 302 | pathsToClean.extend(paths) | 302 | if isinstance(paths, str): |
2311 | 303 | pathsToClean.append(paths) | ||
2312 | 304 | else: | ||
2313 | 305 | pathsToClean.extend(paths) | ||
2314 | 303 | if prevent_cleanUp: | 306 | if prevent_cleanUp: |
2315 | 304 | print colored%(31, | 307 | print colored%(31, |
2316 | 305 | "Clean up of the following of temporary folders prevented:") | 308 | "Clean up of the following of temporary folders prevented:") |
2317 | 306 | for path in pathsToClean: | 309 | for path in pathsToClean: |
2318 | 307 | print colored%(31," > %s"%str(path)) | 310 | print colored%(31," > %s"%str(path)) |
2320 | 308 | 311 | ||
2321 | 309 | try: | 312 | try: |
2322 | 310 | for path in pathsToClean: | 313 | for path in pathsToClean: |
2325 | 311 | shutil.rmtree(path) | 314 | if os.path.isdir(path): |
2326 | 312 | except OSError: | 315 | shutil.rmtree(path) |
2327 | 316 | else: | ||
2328 | 317 | os.remove(path) | ||
2329 | 318 | except OSError,error: | ||
2330 | 313 | pass | 319 | pass |
2331 | 314 | 320 | ||
2332 | 315 | #=============================================================================== | 321 | #=============================================================================== |
2333 | 316 | 322 | ||
2334 | === modified file 'tests/acceptance_tests/test_cmd_madloop.py' | |||
2335 | --- tests/acceptance_tests/test_cmd_madloop.py 2018-04-24 22:39:50 +0000 | |||
2336 | +++ tests/acceptance_tests/test_cmd_madloop.py 2018-11-09 10:32:12 +0000 | |||
2337 | @@ -492,7 +492,7 @@ | |||
2338 | 492 | # Select the Tensor Integral to include in the test | 492 | # Select the Tensor Integral to include in the test |
2339 | 493 | misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout') | 493 | misc.deactivate_dependence('pjfry', cmd = self.interface, log='stdout') |
2340 | 494 | misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout') | 494 | misc.deactivate_dependence('samurai', cmd = self.interface, log='stdout') |
2342 | 495 | misc.activate_dependence('golem', cmd = self.interface, log='stdout') | 495 | misc.deactivate_dependence('golem', cmd = self.interface, log='stdout') |
2343 | 496 | misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR) | 496 | misc.activate_dependence('ninja', cmd = self.interface, log='stdout',MG5dir=MG5DIR) |
2344 | 497 | misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR) | 497 | misc.activate_dependence('collier', cmd = self.interface, log='stdout',MG5dir=MG5DIR) |
2345 | 498 | 498 | ||
2346 | @@ -533,7 +533,7 @@ | |||
2347 | 533 | # Select the Tensor Integral to include in the test | 533 | # Select the Tensor Integral to include in the test |
2348 | 534 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') | 534 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') |
2349 | 535 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') | 535 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') |
2351 | 536 | misc.activate_dependence('golem', cmd = interface, log='stdout') | 536 | misc.deactivate_dependence('golem', cmd = interface, log='stdout') |
2352 | 537 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) | 537 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) |
2353 | 538 | 538 | ||
2354 | 539 | run_cmd('generate g g > t t~ [virt=QCD]') | 539 | run_cmd('generate g g > t t~ [virt=QCD]') |
2355 | 540 | 540 | ||
2356 | === modified file 'tests/acceptance_tests/test_export_fks.py' | |||
2357 | --- tests/acceptance_tests/test_export_fks.py 2017-05-15 10:39:31 +0000 | |||
2358 | +++ tests/acceptance_tests/test_export_fks.py 2018-11-09 10:32:12 +0000 | |||
2359 | @@ -75,7 +75,7 @@ | |||
2360 | 75 | # Select the Tensor Integral to include in the test | 75 | # Select the Tensor Integral to include in the test |
2361 | 76 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') | 76 | misc.deactivate_dependence('pjfry', cmd = interface, log='stdout') |
2362 | 77 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') | 77 | misc.deactivate_dependence('samurai', cmd = interface, log='stdout') |
2364 | 78 | misc.activate_dependence('golem', cmd = interface, log='stdout') | 78 | misc.deactivate_dependence('golem', cmd = interface, log='stdout') |
2365 | 79 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) | 79 | misc.activate_dependence('ninja', cmd = interface, log='stdout',MG5dir=MG5DIR) |
2366 | 80 | 80 | ||
2367 | 81 | run_cmd('import model %s' % model) | 81 | run_cmd('import model %s' % model) |
2368 | 82 | 82 | ||
2369 | === modified file 'tests/acceptance_tests/test_madspin.py' | |||
2370 | --- tests/acceptance_tests/test_madspin.py 2018-05-25 09:13:24 +0000 | |||
2371 | +++ tests/acceptance_tests/test_madspin.py 2018-11-09 10:32:12 +0000 | |||
2372 | @@ -93,7 +93,7 @@ | |||
2373 | 93 | subprocess.call([pjoin(MG5DIR, 'MadSpin', 'madspin'), | 93 | subprocess.call([pjoin(MG5DIR, 'MadSpin', 'madspin'), |
2374 | 94 | pjoin(self.path, 'test_hepmc')], | 94 | pjoin(self.path, 'test_hepmc')], |
2375 | 95 | cwd=pjoin(self.path), | 95 | cwd=pjoin(self.path), |
2377 | 96 | stdout=stdout,stderr=stdout) | 96 | stdout=stdout,stderr=stderr) |
2378 | 97 | self.assertTrue(os.path.exists(pjoin(self.path, 'test_decayed.lhe.gz'))) | 97 | self.assertTrue(os.path.exists(pjoin(self.path, 'test_decayed.lhe.gz'))) |
2379 | 98 | lhe = lhe_parser.EventFile(pjoin(self.path, 'test_decayed.lhe.gz')) | 98 | lhe = lhe_parser.EventFile(pjoin(self.path, 'test_decayed.lhe.gz')) |
2380 | 99 | self.assertEqual(10, len(lhe)) | 99 | self.assertEqual(10, len(lhe)) |
2381 | @@ -111,4 +111,56 @@ | |||
2382 | 111 | 111 | ||
2383 | 112 | self.assertEqual(nb_dec, 116) | 112 | self.assertEqual(nb_dec, 116) |
2384 | 113 | self.assertEqual(nb_photon, 116) | 113 | self.assertEqual(nb_photon, 116) |
2385 | 114 | |||
2386 | 115 | \ No newline at end of file | 114 | \ No newline at end of file |
2387 | 115 | |||
2388 | 116 | def test_lhe_none_decay(self): | ||
2389 | 117 | """ """ | ||
2390 | 118 | |||
2391 | 119 | cwd = os.getcwd() | ||
2392 | 120 | |||
2393 | 121 | files.cp(pjoin(MG5DIR, 'tests', 'input_files', 'test_spinmode_none.lhe.gz'), self.path) | ||
2394 | 122 | |||
2395 | 123 | |||
2396 | 124 | fsock = open(pjoin(self.path, 'test_hepmc'),'w') | ||
2397 | 125 | text = """ | ||
2398 | 126 | set spinmode none | ||
2399 | 127 | import ./test_spinmode_none.lhe.gz | ||
2400 | 128 | decay z > mu+ mu- | ||
2401 | 129 | launch | ||
2402 | 130 | """ | ||
2403 | 131 | |||
2404 | 132 | fsock.write(text) | ||
2405 | 133 | fsock.close() | ||
2406 | 134 | |||
2407 | 135 | import subprocess | ||
2408 | 136 | if logging.getLogger('madgraph').level <= 20: | ||
2409 | 137 | stdout=None | ||
2410 | 138 | stderr=None | ||
2411 | 139 | else: | ||
2412 | 140 | devnull =open(os.devnull,'w') | ||
2413 | 141 | stdout=devnull | ||
2414 | 142 | stderr=devnull | ||
2415 | 143 | |||
2416 | 144 | subprocess.call([pjoin(MG5DIR, 'MadSpin', 'madspin'), | ||
2417 | 145 | pjoin(self.path, 'test_hepmc')], | ||
2418 | 146 | cwd=pjoin(self.path), | ||
2419 | 147 | stdout=stdout,stderr=stderr) | ||
2420 | 148 | |||
2421 | 149 | self.assertTrue(os.path.exists(pjoin(self.path, 'test_spinmode_none_decayed.lhe.gz'))) | ||
2422 | 150 | lhe = lhe_parser.EventFile(pjoin(self.path, 'test_spinmode_none_decayed.lhe.gz')) | ||
2423 | 151 | self.assertEqual(100, len(lhe)) | ||
2424 | 152 | |||
2425 | 153 | nb_dec = 0 | ||
2426 | 154 | nb_muon = 0 | ||
2427 | 155 | for event in lhe: | ||
2428 | 156 | muon_in = 0 | ||
2429 | 157 | self.assertEqual(event.nexternal, len(event)) | ||
2430 | 158 | for particle in event: | ||
2431 | 159 | if particle.pdg == 23: | ||
2432 | 160 | self.assertEqual(particle.status,2) | ||
2433 | 161 | nb_dec += 1 | ||
2434 | 162 | if particle.pdg == 13: | ||
2435 | 163 | nb_muon += 1 | ||
2436 | 164 | muon_in +=1 | ||
2437 | 165 | self.assertEqual(muon_in, 1) | ||
2438 | 166 | self.assertEqual(nb_dec, 189) | ||
2439 | 167 | self.assertEqual(nb_muon, 100) | ||
2440 | 116 | \ No newline at end of file | 168 | \ No newline at end of file |
2441 | 117 | 169 | ||
2442 | === modified file 'tests/acceptance_tests/test_model_equivalence.py' | |||
2443 | --- tests/acceptance_tests/test_model_equivalence.py 2018-06-15 08:18:31 +0000 | |||
2444 | +++ tests/acceptance_tests/test_model_equivalence.py 2018-11-09 10:32:12 +0000 | |||
2445 | @@ -146,15 +146,14 @@ | |||
2446 | 146 | ufo_model.pass_particles_name_in_mg_default() | 146 | ufo_model.pass_particles_name_in_mg_default() |
2447 | 147 | 147 | ||
2448 | 148 | # import MG4 model | 148 | # import MG4 model |
2449 | 149 | |||
2450 | 149 | model = base_objects.Model() | 150 | model = base_objects.Model() |
2451 | 150 | if not MG4DIR: | 151 | if not MG4DIR: |
2452 | 151 | raise MadGraph5Error, "Please provide a valid MG/ME path with -d" | 152 | raise MadGraph5Error, "Please provide a valid MG/ME path with -d" |
2453 | 152 | v4_path = os.path.join(MG4DIR, 'models', 'mssm_v4') | 153 | v4_path = os.path.join(MG4DIR, 'models', 'mssm_v4') |
2454 | 153 | if not os.path.isdir(v4_path): | 154 | if not os.path.isdir(v4_path): |
2459 | 154 | v4_path = os.path.join(MG4DIR, 'Models', 'mssm') | 155 | import_ufo.import_model_from_db('mssm_v4', local_dir=True) |
2460 | 155 | if not os.path.isdir(v4_path): | 156 | |
2457 | 156 | raise MadGraph5Error, \ | ||
2458 | 157 | "Please provide a valid MG/ME path with -d" | ||
2461 | 158 | 157 | ||
2462 | 159 | model.set('particles', files.read_from_file( | 158 | model.set('particles', files.read_from_file( |
2463 | 160 | os.path.join(v4_path,'particles.dat'), | 159 | os.path.join(v4_path,'particles.dat'), |
2464 | 161 | 160 | ||
2465 | === removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%GOLEM_interface.f' | |||
2466 | --- 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 | |||
2467 | +++ 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 | |||
2468 | @@ -1,748 +0,0 @@ | |||
2469 | 1 | SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
2470 | 2 | C | ||
2471 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
2472 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
2473 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
2474 | 6 | C | ||
2475 | 7 | C Interface between MG5 and Golem95. | ||
2476 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
2477 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
2478 | 10 | C NLOOPLINE < 6. | ||
2479 | 11 | C | ||
2480 | 12 | C Process: d~ u > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
2481 | 13 | C Process: s~ c > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
2482 | 14 | C | ||
2483 | 15 | C | ||
2484 | 16 | C MODULES | ||
2485 | 17 | C | ||
2486 | 18 | USE MATRICE_S | ||
2487 | 19 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
2488 | 20 | USE PRECISION_GOLEM, ONLY: KI | ||
2489 | 21 | USE TENS_COMB | ||
2490 | 22 | USE TENS_REC | ||
2491 | 23 | USE FORM_FACTOR_1P, ONLY: A10 | ||
2492 | 24 | USE FORM_FACTOR_2P, ONLY: A20 | ||
2493 | 25 | USE FORM_FACTOR_3P, ONLY: A30 | ||
2494 | 26 | USE FORM_FACTOR_4P, ONLY: A40 | ||
2495 | 27 | USE FORM_FACTOR_5P, ONLY: A50 | ||
2496 | 28 | USE FORM_FACTOR_6P, ONLY: A60 | ||
2497 | 29 | IMPLICIT NONE | ||
2498 | 30 | C | ||
2499 | 31 | C CONSTANTS | ||
2500 | 32 | C | ||
2501 | 33 | INTEGER NEXTERNAL | ||
2502 | 34 | PARAMETER (NEXTERNAL=3) | ||
2503 | 35 | LOGICAL CHECKPCONSERVATION | ||
2504 | 36 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
2505 | 37 | REAL*8 NORMALIZATION | ||
2506 | 38 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
2507 | 39 | $ *2)) | ||
2508 | 40 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
2509 | 41 | $ ,0.0_KI,0.0_KI/) | ||
2510 | 42 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
2511 | 43 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
2512 | 44 | C directly from | ||
2513 | 45 | C numerator using golem internal reconstruction routine | ||
2514 | 46 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
2515 | 47 | C against | ||
2516 | 48 | C MadLoop internal ones. | ||
2517 | 49 | INTEGER GOLEM_RUN_MODE | ||
2518 | 50 | PARAMETER (GOLEM_RUN_MODE=1) | ||
2519 | 51 | C The following is the acceptance threshold used for | ||
2520 | 52 | C GOLEM_RUN_MODE = 3 | ||
2521 | 53 | REAL*8 COEF_CHECK_THRS | ||
2522 | 54 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
2523 | 55 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2524 | 56 | |||
2525 | 57 | LOGICAL PASS_COEF_CHECK | ||
2526 | 58 | C | ||
2527 | 59 | C ARGUMENTS | ||
2528 | 60 | C | ||
2529 | 61 | INTEGER NLOOPLINE, RANK | ||
2530 | 62 | REAL*8 PL(0:3,NLOOPLINE) | ||
2531 | 63 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
2532 | 64 | REAL*8 REF_P | ||
2533 | 65 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
2534 | 66 | COMPLEX*16 M2L(NLOOPLINE) | ||
2535 | 67 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
2536 | 68 | COMPLEX*16 RES(3) | ||
2537 | 69 | LOGICAL STABLE | ||
2538 | 70 | C | ||
2539 | 71 | C LOCAL VARIABLES | ||
2540 | 72 | C | ||
2541 | 73 | INTEGER I, J, K | ||
2542 | 74 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
2543 | 75 | |||
2544 | 76 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
2545 | 77 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
2546 | 78 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
2547 | 79 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
2548 | 80 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
2549 | 81 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
2550 | 82 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
2551 | 83 | |||
2552 | 84 | C The pinch propagator optimization is not used, so for now it is | ||
2553 | 85 | C always 0. | ||
2554 | 86 | INTEGER PINCH | ||
2555 | 87 | C | ||
2556 | 88 | C EXTERNAL FUNCTIONS | ||
2557 | 89 | C | ||
2558 | 90 | COMPLEX(KI) GOLEM_LOOPNUM | ||
2559 | 91 | EXTERNAL GOLEM_LOOPNUM | ||
2560 | 92 | LOGICAL COMPARE_COEFS_0 | ||
2561 | 93 | LOGICAL COMPARE_COEFS_1 | ||
2562 | 94 | LOGICAL COMPARE_COEFS_2 | ||
2563 | 95 | LOGICAL COMPARE_COEFS_3 | ||
2564 | 96 | LOGICAL COMPARE_COEFS_4 | ||
2565 | 97 | LOGICAL COMPARE_COEFS_5 | ||
2566 | 98 | LOGICAL COMPARE_COEFS_6 | ||
2567 | 99 | C | ||
2568 | 100 | C GLOBAL VARIABLES | ||
2569 | 101 | C | ||
2570 | 102 | INCLUDE 'coupl.inc' | ||
2571 | 103 | INTEGER CTMODE | ||
2572 | 104 | REAL*8 LSCALE | ||
2573 | 105 | COMMON/CT/LSCALE,CTMODE | ||
2574 | 106 | |||
2575 | 107 | INTEGER ID,SQSOINDEX,R | ||
2576 | 108 | COMMON/LOOP/ID,SQSOINDEX,R | ||
2577 | 109 | |||
2578 | 110 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
2579 | 111 | $ ,COLLIERINIT | ||
2580 | 112 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
2581 | 113 | $ ,NINJAINIT,COLLIERINIT | ||
2582 | 114 | |||
2583 | 115 | INTEGER NLOOPGROUPS | ||
2584 | 116 | PARAMETER (NLOOPGROUPS=1) | ||
2585 | 117 | INTEGER NSQUAREDSO | ||
2586 | 118 | PARAMETER (NSQUAREDSO=1) | ||
2587 | 119 | INCLUDE 'loop_max_coefs.inc' | ||
2588 | 120 | |||
2589 | 121 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
2590 | 122 | COMMON/LCOEFS/LOOPCOEFS | ||
2591 | 123 | C ---------- | ||
2592 | 124 | C BEGIN CODE | ||
2593 | 125 | C ---------- | ||
2594 | 126 | |||
2595 | 127 | C The CT initialization is also performed here if not done already | ||
2596 | 128 | C because it calls MPINIT of OneLOop which is necessary on some | ||
2597 | 129 | C system | ||
2598 | 130 | IF (CTINIT) THEN | ||
2599 | 131 | CTINIT=.FALSE. | ||
2600 | 132 | CALL INITCT() | ||
2601 | 133 | ENDIF | ||
2602 | 134 | |||
2603 | 135 | C INITIALIZE GOLEM IF NEEDED | ||
2604 | 136 | IF (GOLEMINIT) THEN | ||
2605 | 137 | GOLEMINIT=.FALSE. | ||
2606 | 138 | CALL INITGOLEM() | ||
2607 | 139 | ENDIF | ||
2608 | 140 | |||
2609 | 141 | C No stability test intrisic to Golem95 now | ||
2610 | 142 | STABLE=.TRUE. | ||
2611 | 143 | |||
2612 | 144 | C This initialization must be done for each reduction because we | ||
2613 | 145 | C have not setup anyoptimization using pinched propagators yet. | ||
2614 | 146 | CALL INITGOLEM95(NLOOPLINE) | ||
2615 | 147 | PINCH = 0 | ||
2616 | 148 | |||
2617 | 149 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
2618 | 150 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
2619 | 151 | |||
2620 | 152 | C CONVERT THE MASSES TO BE COMPLEX | ||
2621 | 153 | DO I=1,NLOOPLINE | ||
2622 | 154 | M2LGOLEM(I)=M2L(I) | ||
2623 | 155 | ENDDO | ||
2624 | 156 | |||
2625 | 157 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
2626 | 158 | DO I=0,3 | ||
2627 | 159 | ABSPCT(I) = 0.D0 | ||
2628 | 160 | DO J=0,(NLOOPLINE-1) | ||
2629 | 161 | PCT(I,J)=0.D0 | ||
2630 | 162 | ENDDO | ||
2631 | 163 | ENDDO | ||
2632 | 164 | DO I=0,3 | ||
2633 | 165 | DO J=1,NLOOPLINE | ||
2634 | 166 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
2635 | 167 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
2636 | 168 | ENDDO | ||
2637 | 169 | ENDDO | ||
2638 | 170 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
2639 | 171 | DO I=0,3 | ||
2640 | 172 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
2641 | 173 | ENDDO | ||
2642 | 174 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
2643 | 175 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
2644 | 176 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
2645 | 177 | STOP 'energy is not conserved' | ||
2646 | 178 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
2647 | 179 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
2648 | 180 | STOP 'px is not conserved' | ||
2649 | 181 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
2650 | 182 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
2651 | 183 | STOP 'py is not conserved' | ||
2652 | 184 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
2653 | 185 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
2654 | 186 | STOP 'pz is not conserved' | ||
2655 | 187 | ENDIF | ||
2656 | 188 | ENDIF | ||
2657 | 189 | DO I=0,3 | ||
2658 | 190 | DO J=1,(NLOOPLINE-1) | ||
2659 | 191 | DO K=1,J | ||
2660 | 192 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
2661 | 193 | ENDDO | ||
2662 | 194 | ENDDO | ||
2663 | 195 | ENDDO | ||
2664 | 196 | |||
2665 | 197 | C Now convert the loop momenta to Golem95 conventions | ||
2666 | 198 | DO I=0,3 | ||
2667 | 199 | PGOLEM(1,I)=0.0E0_KI | ||
2668 | 200 | DO J=2,NLOOPLINE | ||
2669 | 201 | PGOLEM(J,I)=PCT(I,J-1) | ||
2670 | 202 | ENDDO | ||
2671 | 203 | ENDDO | ||
2672 | 204 | |||
2673 | 205 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
2674 | 206 | C limits. | ||
2675 | 207 | CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
2676 | 208 | C Construct the golem internal matrices derived from the kinetic | ||
2677 | 209 | C one. | ||
2678 | 210 | CALL PREPARESMATRIX() | ||
2679 | 211 | |||
2680 | 212 | C Fill in the golem coefficents and compute the loop | ||
2681 | 213 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
2682 | 214 | RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
2683 | 215 | ELSE | ||
2684 | 216 | PASS_COEF_CHECK=.TRUE. | ||
2685 | 217 | SELECT CASE(RANK) | ||
2686 | 218 | CASE(0) | ||
2687 | 219 | CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0) | ||
2688 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2689 | 221 | COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
2690 | 222 | PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
2691 | 223 | ENDIF | ||
2692 | 224 | CASE(1) | ||
2693 | 225 | CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1) | ||
2694 | 226 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2695 | 227 | CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC) | ||
2696 | 228 | PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
2697 | 229 | ENDIF | ||
2698 | 230 | CASE(2) | ||
2699 | 231 | CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2) | ||
2700 | 232 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2701 | 233 | CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC) | ||
2702 | 234 | PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
2703 | 235 | ENDIF | ||
2704 | 236 | CASE(3) | ||
2705 | 237 | CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3) | ||
2706 | 238 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2707 | 239 | CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC) | ||
2708 | 240 | PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
2709 | 241 | ENDIF | ||
2710 | 242 | CASE(4) | ||
2711 | 243 | CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4) | ||
2712 | 244 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2713 | 245 | CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC) | ||
2714 | 246 | PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
2715 | 247 | ENDIF | ||
2716 | 248 | CASE(5) | ||
2717 | 249 | CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5) | ||
2718 | 250 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2719 | 251 | CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC) | ||
2720 | 252 | PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
2721 | 253 | ENDIF | ||
2722 | 254 | CASE(6) | ||
2723 | 255 | CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6) | ||
2724 | 256 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
2725 | 257 | CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC) | ||
2726 | 258 | PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
2727 | 259 | ENDIF | ||
2728 | 260 | CASE DEFAULT | ||
2729 | 261 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
2730 | 262 | STOP | ||
2731 | 263 | END SELECT | ||
2732 | 264 | |||
2733 | 265 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
2734 | 266 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
2735 | 267 | WRITE(*,*)'Coefs form MadLoop5:' | ||
2736 | 268 | SELECT CASE(RANK) | ||
2737 | 269 | CASE(0) | ||
2738 | 270 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
2739 | 271 | CASE(1) | ||
2740 | 272 | CALL PRINT_COEFFS(COEFFS1) | ||
2741 | 273 | CASE(2) | ||
2742 | 274 | CALL PRINT_COEFFS(COEFFS2) | ||
2743 | 275 | CASE(3) | ||
2744 | 276 | CALL PRINT_COEFFS(COEFFS3) | ||
2745 | 277 | CASE(4) | ||
2746 | 278 | CALL PRINT_COEFFS(COEFFS4) | ||
2747 | 279 | CASE(5) | ||
2748 | 280 | CALL PRINT_COEFFS(COEFFS5) | ||
2749 | 281 | CASE(6) | ||
2750 | 282 | CALL PRINT_COEFFS(COEFFS6) | ||
2751 | 283 | END SELECT | ||
2752 | 284 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
2753 | 285 | SELECT CASE(RANK) | ||
2754 | 286 | CASE(0) | ||
2755 | 287 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
2756 | 288 | CASE(1) | ||
2757 | 289 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
2758 | 290 | CASE(2) | ||
2759 | 291 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
2760 | 292 | CASE(3) | ||
2761 | 293 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
2762 | 294 | CASE(4) | ||
2763 | 295 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
2764 | 296 | CASE(5) | ||
2765 | 297 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
2766 | 298 | CASE(6) | ||
2767 | 299 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
2768 | 300 | END SELECT | ||
2769 | 301 | STOP | ||
2770 | 302 | ENDIF | ||
2771 | 303 | |||
2772 | 304 | SELECT CASE(NLOOPLINE) | ||
2773 | 305 | CASE(1) | ||
2774 | 306 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
2775 | 307 | STOP | ||
2776 | 308 | CASE(2) | ||
2777 | 309 | SELECT CASE(RANK) | ||
2778 | 310 | CASE(0) | ||
2779 | 311 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
2780 | 312 | CASE(1) | ||
2781 | 313 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
2782 | 314 | CASE(2) | ||
2783 | 315 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
2784 | 316 | CASE(3) | ||
2785 | 317 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
2786 | 318 | CASE DEFAULT | ||
2787 | 319 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
2788 | 320 | STOP | ||
2789 | 321 | END SELECT | ||
2790 | 322 | CASE(3) | ||
2791 | 323 | SELECT CASE(RANK) | ||
2792 | 324 | CASE(0) | ||
2793 | 325 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
2794 | 326 | CASE(1) | ||
2795 | 327 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
2796 | 328 | CASE(2) | ||
2797 | 329 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
2798 | 330 | CASE(3) | ||
2799 | 331 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
2800 | 332 | CASE(4) | ||
2801 | 333 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
2802 | 334 | CASE DEFAULT | ||
2803 | 335 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
2804 | 336 | STOP | ||
2805 | 337 | END SELECT | ||
2806 | 338 | CASE(4) | ||
2807 | 339 | SELECT CASE(RANK) | ||
2808 | 340 | CASE(0) | ||
2809 | 341 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
2810 | 342 | CASE(1) | ||
2811 | 343 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
2812 | 344 | CASE(2) | ||
2813 | 345 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
2814 | 346 | CASE(3) | ||
2815 | 347 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
2816 | 348 | CASE(4) | ||
2817 | 349 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
2818 | 350 | CASE(5) | ||
2819 | 351 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
2820 | 352 | CASE DEFAULT | ||
2821 | 353 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
2822 | 354 | STOP | ||
2823 | 355 | END SELECT | ||
2824 | 356 | CASE(5) | ||
2825 | 357 | SELECT CASE(RANK) | ||
2826 | 358 | CASE(0) | ||
2827 | 359 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
2828 | 360 | CASE(1) | ||
2829 | 361 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
2830 | 362 | CASE(2) | ||
2831 | 363 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
2832 | 364 | CASE(3) | ||
2833 | 365 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
2834 | 366 | CASE(4) | ||
2835 | 367 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
2836 | 368 | CASE(5) | ||
2837 | 369 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
2838 | 370 | CASE(6) | ||
2839 | 371 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
2840 | 372 | CASE DEFAULT | ||
2841 | 373 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
2842 | 374 | STOP | ||
2843 | 375 | END SELECT | ||
2844 | 376 | CASE(6) | ||
2845 | 377 | SELECT CASE(RANK) | ||
2846 | 378 | CASE(0) | ||
2847 | 379 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
2848 | 380 | CASE(1) | ||
2849 | 381 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
2850 | 382 | CASE(2) | ||
2851 | 383 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
2852 | 384 | CASE(3) | ||
2853 | 385 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
2854 | 386 | CASE(4) | ||
2855 | 387 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
2856 | 388 | CASE(5) | ||
2857 | 389 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
2858 | 390 | CASE(6) | ||
2859 | 391 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
2860 | 392 | CASE DEFAULT | ||
2861 | 393 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
2862 | 394 | STOP | ||
2863 | 395 | END SELECT | ||
2864 | 396 | CASE DEFAULT | ||
2865 | 397 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
2866 | 398 | STOP | ||
2867 | 399 | END SELECT | ||
2868 | 400 | ENDIF | ||
2869 | 401 | |||
2870 | 402 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
2871 | 403 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
2872 | 404 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
2873 | 405 | $ *RES_GOLEM%%A) | ||
2874 | 406 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
2875 | 407 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
2876 | 408 | |||
2877 | 409 | C Finally free golem memory and cache | ||
2878 | 410 | CALL EXITGOLEM95() | ||
2879 | 411 | |||
2880 | 412 | END | ||
2881 | 413 | |||
2882 | 414 | FUNCTION GOLEM_LOOPNUM(Q,MU2) | ||
2883 | 415 | USE PRECISION_GOLEM, ONLY: KI | ||
2884 | 416 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
2885 | 417 | REAL(KI),INTENT(IN)::MU2 | ||
2886 | 418 | COMPLEX(KI)::GOLEM_LOOPNUM | ||
2887 | 419 | |||
2888 | 420 | COMPLEX*16 QQ(0:3),NUM | ||
2889 | 421 | INTEGER I | ||
2890 | 422 | |||
2891 | 423 | DO I=0,3 | ||
2892 | 424 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
2893 | 425 | ENDDO | ||
2894 | 426 | |||
2895 | 427 | CALL LOOPNUM(QQ,NUM) | ||
2896 | 428 | GOLEM_LOOPNUM=NUM | ||
2897 | 429 | RETURN | ||
2898 | 430 | END FUNCTION | ||
2899 | 431 | |||
2900 | 432 | SUBROUTINE INITGOLEM() | ||
2901 | 433 | C | ||
2902 | 434 | C INITIALISATION OF GOLEM | ||
2903 | 435 | C | ||
2904 | 436 | C | ||
2905 | 437 | C MODULE | ||
2906 | 438 | C | ||
2907 | 439 | USE PARAMETRE | ||
2908 | 440 | C | ||
2909 | 441 | C LOCAL VARIABLES | ||
2910 | 442 | C | ||
2911 | 443 | REAL*8 THRS | ||
2912 | 444 | LOGICAL EXT_NUM_FOR_R1 | ||
2913 | 445 | C | ||
2914 | 446 | C GLOBAL VARIABLES | ||
2915 | 447 | C | ||
2916 | 448 | INCLUDE 'MadLoopParams.inc' | ||
2917 | 449 | C ---------- | ||
2918 | 450 | C BEGIN CODE | ||
2919 | 451 | C ---------- | ||
2920 | 452 | |||
2921 | 453 | C DEFAULT PARAMETERS FOR GOLEM | ||
2922 | 454 | C ------------------------------- | ||
2923 | 455 | C One can chose here to have either just the rational R1 piece | ||
2924 | 456 | C or everything but the R2 | ||
2925 | 457 | RAT_OR_TOT_PAR = TOT | ||
2926 | 458 | |||
2927 | 459 | END | ||
2928 | 460 | |||
2929 | 461 | SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
2930 | 462 | C | ||
2931 | 463 | C MODULE | ||
2932 | 464 | C | ||
2933 | 465 | USE MATRICE_S | ||
2934 | 466 | USE PRECISION_GOLEM, ONLY: KI | ||
2935 | 467 | C | ||
2936 | 468 | C ARGUMENTS | ||
2937 | 469 | C | ||
2938 | 470 | INTEGER NLOOPLINE | ||
2939 | 471 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
2940 | 472 | COMPLEX(KI) M2L(NLOOPLINE) | ||
2941 | 473 | C | ||
2942 | 474 | C LOCAL VARIABLES | ||
2943 | 475 | C | ||
2944 | 476 | INTEGER I,J | ||
2945 | 477 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
2946 | 478 | C ---------- | ||
2947 | 479 | C BEGIN CODE | ||
2948 | 480 | C ---------- | ||
2949 | 481 | |||
2950 | 482 | CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG) | ||
2951 | 483 | |||
2952 | 484 | DO I=1,NLOOPLINE | ||
2953 | 485 | DO J=1,NLOOPLINE | ||
2954 | 486 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
2955 | 487 | ENDDO | ||
2956 | 488 | ENDDO | ||
2957 | 489 | |||
2958 | 490 | END | ||
2959 | 491 | |||
2960 | 492 | FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
2961 | 493 | |||
2962 | 494 | USE PRECISION_GOLEM, ONLY: KI | ||
2963 | 495 | COMPLEX(KI) COEFS_A,COEFS_B | ||
2964 | 496 | REAL*8 COEF_CHECK_THRS | ||
2965 | 497 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2966 | 498 | REAL*8 DENOM,NUM | ||
2967 | 499 | LOGICAL COMPARE_COEFS_0 | ||
2968 | 500 | |||
2969 | 501 | NUM = ABS(COEFS_A-COEFS_B) | ||
2970 | 502 | DENOM = ABS(COEFS_A+COEFS_B) | ||
2971 | 503 | IF(DENOM.GT.0D0)THEN | ||
2972 | 504 | COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2973 | 505 | ELSE | ||
2974 | 506 | COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
2975 | 507 | ENDIF | ||
2976 | 508 | |||
2977 | 509 | END | ||
2978 | 510 | |||
2979 | 511 | FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
2980 | 512 | |||
2981 | 513 | USE TENS_REC | ||
2982 | 514 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
2983 | 515 | REAL*8 COEF_CHECK_THRS | ||
2984 | 516 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
2985 | 517 | REAL*8 DENOM,NUM | ||
2986 | 518 | LOGICAL COMPARE_COEFS_1 | ||
2987 | 519 | |||
2988 | 520 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
2989 | 521 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
2990 | 522 | $ ) | ||
2991 | 523 | |||
2992 | 524 | IF(DENOM.GT.0D0)THEN | ||
2993 | 525 | COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
2994 | 526 | ELSE | ||
2995 | 527 | COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
2996 | 528 | ENDIF | ||
2997 | 529 | |||
2998 | 530 | END | ||
2999 | 531 | |||
3000 | 532 | FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
3001 | 533 | |||
3002 | 534 | USE TENS_REC | ||
3003 | 535 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
3004 | 536 | REAL*8 COEF_CHECK_THRS | ||
3005 | 537 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3006 | 538 | REAL*8 DENOM,NUM | ||
3007 | 539 | LOGICAL COMPARE_COEFS_2 | ||
3008 | 540 | |||
3009 | 541 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3010 | 542 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
3011 | 543 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3012 | 544 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
3013 | 545 | IF(DENOM.GT.0D0)THEN | ||
3014 | 546 | COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3015 | 547 | ELSE | ||
3016 | 548 | COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
3017 | 549 | ENDIF | ||
3018 | 550 | |||
3019 | 551 | END | ||
3020 | 552 | |||
3021 | 553 | FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
3022 | 554 | |||
3023 | 555 | USE TENS_REC | ||
3024 | 556 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
3025 | 557 | REAL*8 COEF_CHECK_THRS | ||
3026 | 558 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3027 | 559 | REAL*8 DENOM,NUM | ||
3028 | 560 | LOGICAL COMPARE_COEFS_3 | ||
3029 | 561 | |||
3030 | 562 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3031 | 563 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3032 | 564 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3033 | 565 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3034 | 566 | $ ) | ||
3035 | 567 | IF(DENOM.GT.0D0)THEN | ||
3036 | 568 | COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3037 | 569 | ELSE | ||
3038 | 570 | COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
3039 | 571 | ENDIF | ||
3040 | 572 | |||
3041 | 573 | END | ||
3042 | 574 | |||
3043 | 575 | FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
3044 | 576 | |||
3045 | 577 | USE TENS_REC | ||
3046 | 578 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
3047 | 579 | REAL*8 COEF_CHECK_THRS | ||
3048 | 580 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3049 | 581 | REAL*8 DENOM,NUM | ||
3050 | 582 | LOGICAL COMPARE_COEFS_4 | ||
3051 | 583 | |||
3052 | 584 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3053 | 585 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3054 | 586 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3055 | 587 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3056 | 588 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3057 | 589 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3058 | 590 | IF(DENOM.GT.0D0)THEN | ||
3059 | 591 | COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3060 | 592 | ELSE | ||
3061 | 593 | COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
3062 | 594 | ENDIF | ||
3063 | 595 | |||
3064 | 596 | END | ||
3065 | 597 | |||
3066 | 598 | FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
3067 | 599 | |||
3068 | 600 | USE TENS_REC | ||
3069 | 601 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
3070 | 602 | REAL*8 COEF_CHECK_THRS | ||
3071 | 603 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3072 | 604 | REAL*8 DENOM,NUM | ||
3073 | 605 | LOGICAL COMPARE_COEFS_5 | ||
3074 | 606 | |||
3075 | 607 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3076 | 608 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3077 | 609 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3078 | 610 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3079 | 611 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3080 | 612 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3081 | 613 | IF(DENOM.GT.0D0)THEN | ||
3082 | 614 | COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3083 | 615 | ELSE | ||
3084 | 616 | COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
3085 | 617 | ENDIF | ||
3086 | 618 | |||
3087 | 619 | END | ||
3088 | 620 | |||
3089 | 621 | FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
3090 | 622 | |||
3091 | 623 | USE TENS_REC | ||
3092 | 624 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
3093 | 625 | REAL*8 COEF_CHECK_THRS | ||
3094 | 626 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3095 | 627 | REAL*8 DENOM,NUM | ||
3096 | 628 | LOGICAL COMPARE_COEFS_6 | ||
3097 | 629 | |||
3098 | 630 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3099 | 631 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3100 | 632 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3101 | 633 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3102 | 634 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3103 | 635 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3104 | 636 | IF(DENOM.GT.0D0)THEN | ||
3105 | 637 | COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3106 | 638 | ELSE | ||
3107 | 639 | COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
3108 | 640 | ENDIF | ||
3109 | 641 | |||
3110 | 642 | END | ||
3111 | 643 | |||
3112 | 644 | |||
3113 | 645 | SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
3114 | 646 | USE PRECISION_GOLEM, ONLY: KI | ||
3115 | 647 | INCLUDE 'coef_specs.inc' | ||
3116 | 648 | INCLUDE 'loop_max_coefs.inc' | ||
3117 | 649 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3118 | 650 | COMPLEX(KI) GOLEM_COEFS | ||
3119 | 651 | GOLEM_COEFS=ML_COEFS(0) | ||
3120 | 652 | END | ||
3121 | 653 | |||
3122 | 654 | SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
3123 | 655 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
3124 | 656 | INCLUDE 'coef_specs.inc' | ||
3125 | 657 | INCLUDE 'loop_max_coefs.inc' | ||
3126 | 658 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3127 | 659 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
3128 | 660 | C Constant coefficient | ||
3129 | 661 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3130 | 662 | C Coefficient q(0) | ||
3131 | 663 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3132 | 664 | C Coefficient q(1) | ||
3133 | 665 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3134 | 666 | C Coefficient q(2) | ||
3135 | 667 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3136 | 668 | C Coefficient q(3) | ||
3137 | 669 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3138 | 670 | END | ||
3139 | 671 | |||
3140 | 672 | SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
3141 | 673 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
3142 | 674 | INCLUDE 'coef_specs.inc' | ||
3143 | 675 | INCLUDE 'loop_max_coefs.inc' | ||
3144 | 676 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3145 | 677 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
3146 | 678 | C Constant coefficient | ||
3147 | 679 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3148 | 680 | C Coefficient q(0) | ||
3149 | 681 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3150 | 682 | C Coefficient q(0)^2 | ||
3151 | 683 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
3152 | 684 | C Coefficient q(1) | ||
3153 | 685 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3154 | 686 | C Coefficient q(1)^2 | ||
3155 | 687 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
3156 | 688 | C Coefficient q(2) | ||
3157 | 689 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3158 | 690 | C Coefficient q(2)^2 | ||
3159 | 691 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
3160 | 692 | C Coefficient q(3) | ||
3161 | 693 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3162 | 694 | C Coefficient q(3)^2 | ||
3163 | 695 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
3164 | 696 | C Coefficient q(0)*q(1) | ||
3165 | 697 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
3166 | 698 | C Coefficient q(0)*q(2) | ||
3167 | 699 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
3168 | 700 | C Coefficient q(0)*q(3) | ||
3169 | 701 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
3170 | 702 | C Coefficient q(1)*q(2) | ||
3171 | 703 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
3172 | 704 | C Coefficient q(1)*q(3) | ||
3173 | 705 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
3174 | 706 | C Coefficient q(2)*q(3) | ||
3175 | 707 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
3176 | 708 | END | ||
3177 | 709 | |||
3178 | 710 | SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
3179 | 711 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
3180 | 712 | INCLUDE 'coef_specs.inc' | ||
3181 | 713 | INCLUDE 'loop_max_coefs.inc' | ||
3182 | 714 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3183 | 715 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
3184 | 716 | C Dummy routine for FILL_GOLEM_COEFS_3 | ||
3185 | 717 | STOP 'ERROR: 3 > 2' | ||
3186 | 718 | END | ||
3187 | 719 | |||
3188 | 720 | SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
3189 | 721 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
3190 | 722 | INCLUDE 'coef_specs.inc' | ||
3191 | 723 | INCLUDE 'loop_max_coefs.inc' | ||
3192 | 724 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3193 | 725 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
3194 | 726 | C Dummy routine for FILL_GOLEM_COEFS_4 | ||
3195 | 727 | STOP 'ERROR: 4 > 2' | ||
3196 | 728 | END | ||
3197 | 729 | |||
3198 | 730 | SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
3199 | 731 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
3200 | 732 | INCLUDE 'coef_specs.inc' | ||
3201 | 733 | INCLUDE 'loop_max_coefs.inc' | ||
3202 | 734 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3203 | 735 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
3204 | 736 | C Dummy routine for FILL_GOLEM_COEFS_5 | ||
3205 | 737 | STOP 'ERROR: 5 > 2' | ||
3206 | 738 | END | ||
3207 | 739 | |||
3208 | 740 | SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
3209 | 741 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
3210 | 742 | INCLUDE 'coef_specs.inc' | ||
3211 | 743 | INCLUDE 'loop_max_coefs.inc' | ||
3212 | 744 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3213 | 745 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
3214 | 746 | C Dummy routine for FILL_GOLEM_COEFS_6 | ||
3215 | 747 | STOP 'ERROR: 6 > 2' | ||
3216 | 748 | END | ||
3217 | 749 | 0 | ||
3218 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f' | |||
3219 | --- 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 | |||
3220 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%TIR_interface.f 2018-11-09 10:32:12 +0000 | |||
3221 | @@ -96,17 +96,9 @@ | |||
3222 | 96 | ENDIF | 96 | ENDIF |
3223 | 97 | 97 | ||
3224 | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
3236 | 99 | C Using Golem95 | 99 | C Golem95 not available |
3237 | 100 | C PDEN is dummy for Golem95 so we just initialize it to zero | 100 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
3238 | 101 | C here so as to use it for the function SWITCHORDER | 101 | STOP |
3228 | 102 | DO I=0,3 | ||
3229 | 103 | DO J=1,NLOOPLINE-1 | ||
3230 | 104 | PDEN(I,J)=0.0D0 | ||
3231 | 105 | ENDDO | ||
3232 | 106 | ENDDO | ||
3233 | 107 | CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
3234 | 108 | CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
3235 | 109 | RETURN | ||
3239 | 110 | ENDIF | 102 | ENDIF |
3240 | 111 | 103 | ||
3241 | 112 | C INITIALIZE TIR IF NEEDED | 104 | C INITIALIZE TIR IF NEEDED |
3242 | 113 | 105 | ||
3243 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f' | |||
3244 | --- 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 | |||
3245 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_dxu_wp%V0_dxu_wp%loop_matrix.f 2018-11-09 10:32:12 +0000 | |||
3246 | @@ -244,7 +244,7 @@ | |||
3247 | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
3248 | 245 | C AVAILABLE OR NOT | 245 | C AVAILABLE OR NOT |
3249 | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
3251 | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
3252 | 248 | $ ,.TRUE.,.TRUE./ | 248 | $ ,.TRUE.,.TRUE./ |
3253 | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
3254 | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
3255 | 251 | 251 | ||
3256 | === removed file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%GOLEM_interface.f' | |||
3257 | --- 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 | |||
3258 | +++ 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 | |||
3259 | @@ -1,748 +0,0 @@ | |||
3260 | 1 | SUBROUTINE GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
3261 | 2 | C | ||
3262 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
3263 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
3264 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
3265 | 6 | C | ||
3266 | 7 | C Interface between MG5 and Golem95. | ||
3267 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
3268 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
3269 | 10 | C NLOOPLINE < 6. | ||
3270 | 11 | C | ||
3271 | 12 | C Process: u d~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
3272 | 13 | C Process: c s~ > w+ QED<=1 WEIGHTED<=2 [ all = QCD ] | ||
3273 | 14 | C | ||
3274 | 15 | C | ||
3275 | 16 | C MODULES | ||
3276 | 17 | C | ||
3277 | 18 | USE MATRICE_S | ||
3278 | 19 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
3279 | 20 | USE PRECISION_GOLEM, ONLY: KI | ||
3280 | 21 | USE TENS_COMB | ||
3281 | 22 | USE TENS_REC | ||
3282 | 23 | USE FORM_FACTOR_1P, ONLY: A10 | ||
3283 | 24 | USE FORM_FACTOR_2P, ONLY: A20 | ||
3284 | 25 | USE FORM_FACTOR_3P, ONLY: A30 | ||
3285 | 26 | USE FORM_FACTOR_4P, ONLY: A40 | ||
3286 | 27 | USE FORM_FACTOR_5P, ONLY: A50 | ||
3287 | 28 | USE FORM_FACTOR_6P, ONLY: A60 | ||
3288 | 29 | IMPLICIT NONE | ||
3289 | 30 | C | ||
3290 | 31 | C CONSTANTS | ||
3291 | 32 | C | ||
3292 | 33 | INTEGER NEXTERNAL | ||
3293 | 34 | PARAMETER (NEXTERNAL=3) | ||
3294 | 35 | LOGICAL CHECKPCONSERVATION | ||
3295 | 36 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
3296 | 37 | REAL*8 NORMALIZATION | ||
3297 | 38 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
3298 | 39 | $ *2)) | ||
3299 | 40 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
3300 | 41 | $ ,0.0_KI,0.0_KI/) | ||
3301 | 42 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
3302 | 43 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
3303 | 44 | C directly from | ||
3304 | 45 | C numerator using golem internal reconstruction routine | ||
3305 | 46 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
3306 | 47 | C against | ||
3307 | 48 | C MadLoop internal ones. | ||
3308 | 49 | INTEGER GOLEM_RUN_MODE | ||
3309 | 50 | PARAMETER (GOLEM_RUN_MODE=1) | ||
3310 | 51 | C The following is the acceptance threshold used for | ||
3311 | 52 | C GOLEM_RUN_MODE = 3 | ||
3312 | 53 | REAL*8 COEF_CHECK_THRS | ||
3313 | 54 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
3314 | 55 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3315 | 56 | |||
3316 | 57 | LOGICAL PASS_COEF_CHECK | ||
3317 | 58 | C | ||
3318 | 59 | C ARGUMENTS | ||
3319 | 60 | C | ||
3320 | 61 | INTEGER NLOOPLINE, RANK | ||
3321 | 62 | REAL*8 PL(0:3,NLOOPLINE) | ||
3322 | 63 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
3323 | 64 | REAL*8 REF_P | ||
3324 | 65 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
3325 | 66 | COMPLEX*16 M2L(NLOOPLINE) | ||
3326 | 67 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
3327 | 68 | COMPLEX*16 RES(3) | ||
3328 | 69 | LOGICAL STABLE | ||
3329 | 70 | C | ||
3330 | 71 | C LOCAL VARIABLES | ||
3331 | 72 | C | ||
3332 | 73 | INTEGER I, J, K | ||
3333 | 74 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
3334 | 75 | |||
3335 | 76 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
3336 | 77 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
3337 | 78 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
3338 | 79 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
3339 | 80 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
3340 | 81 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
3341 | 82 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
3342 | 83 | |||
3343 | 84 | C The pinch propagator optimization is not used, so for now it is | ||
3344 | 85 | C always 0. | ||
3345 | 86 | INTEGER PINCH | ||
3346 | 87 | C | ||
3347 | 88 | C EXTERNAL FUNCTIONS | ||
3348 | 89 | C | ||
3349 | 90 | COMPLEX(KI) GOLEM_LOOPNUM | ||
3350 | 91 | EXTERNAL GOLEM_LOOPNUM | ||
3351 | 92 | LOGICAL COMPARE_COEFS_0 | ||
3352 | 93 | LOGICAL COMPARE_COEFS_1 | ||
3353 | 94 | LOGICAL COMPARE_COEFS_2 | ||
3354 | 95 | LOGICAL COMPARE_COEFS_3 | ||
3355 | 96 | LOGICAL COMPARE_COEFS_4 | ||
3356 | 97 | LOGICAL COMPARE_COEFS_5 | ||
3357 | 98 | LOGICAL COMPARE_COEFS_6 | ||
3358 | 99 | C | ||
3359 | 100 | C GLOBAL VARIABLES | ||
3360 | 101 | C | ||
3361 | 102 | INCLUDE 'coupl.inc' | ||
3362 | 103 | INTEGER CTMODE | ||
3363 | 104 | REAL*8 LSCALE | ||
3364 | 105 | COMMON/CT/LSCALE,CTMODE | ||
3365 | 106 | |||
3366 | 107 | INTEGER ID,SQSOINDEX,R | ||
3367 | 108 | COMMON/LOOP/ID,SQSOINDEX,R | ||
3368 | 109 | |||
3369 | 110 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
3370 | 111 | $ ,COLLIERINIT | ||
3371 | 112 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
3372 | 113 | $ ,NINJAINIT,COLLIERINIT | ||
3373 | 114 | |||
3374 | 115 | INTEGER NLOOPGROUPS | ||
3375 | 116 | PARAMETER (NLOOPGROUPS=1) | ||
3376 | 117 | INTEGER NSQUAREDSO | ||
3377 | 118 | PARAMETER (NSQUAREDSO=1) | ||
3378 | 119 | INCLUDE 'loop_max_coefs.inc' | ||
3379 | 120 | |||
3380 | 121 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
3381 | 122 | COMMON/LCOEFS/LOOPCOEFS | ||
3382 | 123 | C ---------- | ||
3383 | 124 | C BEGIN CODE | ||
3384 | 125 | C ---------- | ||
3385 | 126 | |||
3386 | 127 | C The CT initialization is also performed here if not done already | ||
3387 | 128 | C because it calls MPINIT of OneLOop which is necessary on some | ||
3388 | 129 | C system | ||
3389 | 130 | IF (CTINIT) THEN | ||
3390 | 131 | CTINIT=.FALSE. | ||
3391 | 132 | CALL INITCT() | ||
3392 | 133 | ENDIF | ||
3393 | 134 | |||
3394 | 135 | C INITIALIZE GOLEM IF NEEDED | ||
3395 | 136 | IF (GOLEMINIT) THEN | ||
3396 | 137 | GOLEMINIT=.FALSE. | ||
3397 | 138 | CALL INITGOLEM() | ||
3398 | 139 | ENDIF | ||
3399 | 140 | |||
3400 | 141 | C No stability test intrisic to Golem95 now | ||
3401 | 142 | STABLE=.TRUE. | ||
3402 | 143 | |||
3403 | 144 | C This initialization must be done for each reduction because we | ||
3404 | 145 | C have not setup anyoptimization using pinched propagators yet. | ||
3405 | 146 | CALL INITGOLEM95(NLOOPLINE) | ||
3406 | 147 | PINCH = 0 | ||
3407 | 148 | |||
3408 | 149 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
3409 | 150 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
3410 | 151 | |||
3411 | 152 | C CONVERT THE MASSES TO BE COMPLEX | ||
3412 | 153 | DO I=1,NLOOPLINE | ||
3413 | 154 | M2LGOLEM(I)=M2L(I) | ||
3414 | 155 | ENDDO | ||
3415 | 156 | |||
3416 | 157 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
3417 | 158 | DO I=0,3 | ||
3418 | 159 | ABSPCT(I) = 0.D0 | ||
3419 | 160 | DO J=0,(NLOOPLINE-1) | ||
3420 | 161 | PCT(I,J)=0.D0 | ||
3421 | 162 | ENDDO | ||
3422 | 163 | ENDDO | ||
3423 | 164 | DO I=0,3 | ||
3424 | 165 | DO J=1,NLOOPLINE | ||
3425 | 166 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
3426 | 167 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
3427 | 168 | ENDDO | ||
3428 | 169 | ENDDO | ||
3429 | 170 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
3430 | 171 | DO I=0,3 | ||
3431 | 172 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
3432 | 173 | ENDDO | ||
3433 | 174 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
3434 | 175 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
3435 | 176 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
3436 | 177 | STOP 'energy is not conserved' | ||
3437 | 178 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
3438 | 179 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
3439 | 180 | STOP 'px is not conserved' | ||
3440 | 181 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
3441 | 182 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
3442 | 183 | STOP 'py is not conserved' | ||
3443 | 184 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
3444 | 185 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
3445 | 186 | STOP 'pz is not conserved' | ||
3446 | 187 | ENDIF | ||
3447 | 188 | ENDIF | ||
3448 | 189 | DO I=0,3 | ||
3449 | 190 | DO J=1,(NLOOPLINE-1) | ||
3450 | 191 | DO K=1,J | ||
3451 | 192 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
3452 | 193 | ENDDO | ||
3453 | 194 | ENDDO | ||
3454 | 195 | ENDDO | ||
3455 | 196 | |||
3456 | 197 | C Now convert the loop momenta to Golem95 conventions | ||
3457 | 198 | DO I=0,3 | ||
3458 | 199 | PGOLEM(1,I)=0.0E0_KI | ||
3459 | 200 | DO J=2,NLOOPLINE | ||
3460 | 201 | PGOLEM(J,I)=PCT(I,J-1) | ||
3461 | 202 | ENDDO | ||
3462 | 203 | ENDDO | ||
3463 | 204 | |||
3464 | 205 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
3465 | 206 | C limits. | ||
3466 | 207 | CALL SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
3467 | 208 | C Construct the golem internal matrices derived from the kinetic | ||
3468 | 209 | C one. | ||
3469 | 210 | CALL PREPARESMATRIX() | ||
3470 | 211 | |||
3471 | 212 | C Fill in the golem coefficents and compute the loop | ||
3472 | 213 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
3473 | 214 | RES_GOLEM = EVALUATE_B(GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
3474 | 215 | ELSE | ||
3475 | 216 | PASS_COEF_CHECK=.TRUE. | ||
3476 | 217 | SELECT CASE(RANK) | ||
3477 | 218 | CASE(0) | ||
3478 | 219 | CALL FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS0) | ||
3479 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3480 | 221 | COEFFS0_REC = GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
3481 | 222 | PASS_COEF_CHECK=COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
3482 | 223 | ENDIF | ||
3483 | 224 | CASE(1) | ||
3484 | 225 | CALL FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS1) | ||
3485 | 226 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3486 | 227 | CALL RECONSTRUCT1(GOLEM_LOOPNUM,COEFFS1_REC) | ||
3487 | 228 | PASS_COEF_CHECK=COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
3488 | 229 | ENDIF | ||
3489 | 230 | CASE(2) | ||
3490 | 231 | CALL FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS2) | ||
3491 | 232 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3492 | 233 | CALL RECONSTRUCT2(GOLEM_LOOPNUM,COEFFS2_REC) | ||
3493 | 234 | PASS_COEF_CHECK=COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
3494 | 235 | ENDIF | ||
3495 | 236 | CASE(3) | ||
3496 | 237 | CALL FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS3) | ||
3497 | 238 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3498 | 239 | CALL RECONSTRUCT3(GOLEM_LOOPNUM,COEFFS3_REC) | ||
3499 | 240 | PASS_COEF_CHECK=COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
3500 | 241 | ENDIF | ||
3501 | 242 | CASE(4) | ||
3502 | 243 | CALL FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS4) | ||
3503 | 244 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3504 | 245 | CALL RECONSTRUCT4(GOLEM_LOOPNUM,COEFFS4_REC) | ||
3505 | 246 | PASS_COEF_CHECK=COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
3506 | 247 | ENDIF | ||
3507 | 248 | CASE(5) | ||
3508 | 249 | CALL FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS5) | ||
3509 | 250 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3510 | 251 | CALL RECONSTRUCT5(GOLEM_LOOPNUM,COEFFS5_REC) | ||
3511 | 252 | PASS_COEF_CHECK=COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
3512 | 253 | ENDIF | ||
3513 | 254 | CASE(6) | ||
3514 | 255 | CALL FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID),COEFFS6) | ||
3515 | 256 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
3516 | 257 | CALL RECONSTRUCT6(GOLEM_LOOPNUM,COEFFS6_REC) | ||
3517 | 258 | PASS_COEF_CHECK=COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
3518 | 259 | ENDIF | ||
3519 | 260 | CASE DEFAULT | ||
3520 | 261 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
3521 | 262 | STOP | ||
3522 | 263 | END SELECT | ||
3523 | 264 | |||
3524 | 265 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
3525 | 266 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
3526 | 267 | WRITE(*,*)'Coefs form MadLoop5:' | ||
3527 | 268 | SELECT CASE(RANK) | ||
3528 | 269 | CASE(0) | ||
3529 | 270 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
3530 | 271 | CASE(1) | ||
3531 | 272 | CALL PRINT_COEFFS(COEFFS1) | ||
3532 | 273 | CASE(2) | ||
3533 | 274 | CALL PRINT_COEFFS(COEFFS2) | ||
3534 | 275 | CASE(3) | ||
3535 | 276 | CALL PRINT_COEFFS(COEFFS3) | ||
3536 | 277 | CASE(4) | ||
3537 | 278 | CALL PRINT_COEFFS(COEFFS4) | ||
3538 | 279 | CASE(5) | ||
3539 | 280 | CALL PRINT_COEFFS(COEFFS5) | ||
3540 | 281 | CASE(6) | ||
3541 | 282 | CALL PRINT_COEFFS(COEFFS6) | ||
3542 | 283 | END SELECT | ||
3543 | 284 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
3544 | 285 | SELECT CASE(RANK) | ||
3545 | 286 | CASE(0) | ||
3546 | 287 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
3547 | 288 | CASE(1) | ||
3548 | 289 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
3549 | 290 | CASE(2) | ||
3550 | 291 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
3551 | 292 | CASE(3) | ||
3552 | 293 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
3553 | 294 | CASE(4) | ||
3554 | 295 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
3555 | 296 | CASE(5) | ||
3556 | 297 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
3557 | 298 | CASE(6) | ||
3558 | 299 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
3559 | 300 | END SELECT | ||
3560 | 301 | STOP | ||
3561 | 302 | ENDIF | ||
3562 | 303 | |||
3563 | 304 | SELECT CASE(NLOOPLINE) | ||
3564 | 305 | CASE(1) | ||
3565 | 306 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
3566 | 307 | STOP | ||
3567 | 308 | CASE(2) | ||
3568 | 309 | SELECT CASE(RANK) | ||
3569 | 310 | CASE(0) | ||
3570 | 311 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
3571 | 312 | CASE(1) | ||
3572 | 313 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
3573 | 314 | CASE(2) | ||
3574 | 315 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
3575 | 316 | CASE(3) | ||
3576 | 317 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
3577 | 318 | CASE DEFAULT | ||
3578 | 319 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
3579 | 320 | STOP | ||
3580 | 321 | END SELECT | ||
3581 | 322 | CASE(3) | ||
3582 | 323 | SELECT CASE(RANK) | ||
3583 | 324 | CASE(0) | ||
3584 | 325 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
3585 | 326 | CASE(1) | ||
3586 | 327 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
3587 | 328 | CASE(2) | ||
3588 | 329 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
3589 | 330 | CASE(3) | ||
3590 | 331 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
3591 | 332 | CASE(4) | ||
3592 | 333 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
3593 | 334 | CASE DEFAULT | ||
3594 | 335 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
3595 | 336 | STOP | ||
3596 | 337 | END SELECT | ||
3597 | 338 | CASE(4) | ||
3598 | 339 | SELECT CASE(RANK) | ||
3599 | 340 | CASE(0) | ||
3600 | 341 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
3601 | 342 | CASE(1) | ||
3602 | 343 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
3603 | 344 | CASE(2) | ||
3604 | 345 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
3605 | 346 | CASE(3) | ||
3606 | 347 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
3607 | 348 | CASE(4) | ||
3608 | 349 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
3609 | 350 | CASE(5) | ||
3610 | 351 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
3611 | 352 | CASE DEFAULT | ||
3612 | 353 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
3613 | 354 | STOP | ||
3614 | 355 | END SELECT | ||
3615 | 356 | CASE(5) | ||
3616 | 357 | SELECT CASE(RANK) | ||
3617 | 358 | CASE(0) | ||
3618 | 359 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
3619 | 360 | CASE(1) | ||
3620 | 361 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
3621 | 362 | CASE(2) | ||
3622 | 363 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
3623 | 364 | CASE(3) | ||
3624 | 365 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
3625 | 366 | CASE(4) | ||
3626 | 367 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
3627 | 368 | CASE(5) | ||
3628 | 369 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
3629 | 370 | CASE(6) | ||
3630 | 371 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
3631 | 372 | CASE DEFAULT | ||
3632 | 373 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
3633 | 374 | STOP | ||
3634 | 375 | END SELECT | ||
3635 | 376 | CASE(6) | ||
3636 | 377 | SELECT CASE(RANK) | ||
3637 | 378 | CASE(0) | ||
3638 | 379 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
3639 | 380 | CASE(1) | ||
3640 | 381 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
3641 | 382 | CASE(2) | ||
3642 | 383 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
3643 | 384 | CASE(3) | ||
3644 | 385 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
3645 | 386 | CASE(4) | ||
3646 | 387 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
3647 | 388 | CASE(5) | ||
3648 | 389 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
3649 | 390 | CASE(6) | ||
3650 | 391 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
3651 | 392 | CASE DEFAULT | ||
3652 | 393 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
3653 | 394 | STOP | ||
3654 | 395 | END SELECT | ||
3655 | 396 | CASE DEFAULT | ||
3656 | 397 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
3657 | 398 | STOP | ||
3658 | 399 | END SELECT | ||
3659 | 400 | ENDIF | ||
3660 | 401 | |||
3661 | 402 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
3662 | 403 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
3663 | 404 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
3664 | 405 | $ *RES_GOLEM%%A) | ||
3665 | 406 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
3666 | 407 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
3667 | 408 | |||
3668 | 409 | C Finally free golem memory and cache | ||
3669 | 410 | CALL EXITGOLEM95() | ||
3670 | 411 | |||
3671 | 412 | END | ||
3672 | 413 | |||
3673 | 414 | FUNCTION GOLEM_LOOPNUM(Q,MU2) | ||
3674 | 415 | USE PRECISION_GOLEM, ONLY: KI | ||
3675 | 416 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
3676 | 417 | REAL(KI),INTENT(IN)::MU2 | ||
3677 | 418 | COMPLEX(KI)::GOLEM_LOOPNUM | ||
3678 | 419 | |||
3679 | 420 | COMPLEX*16 QQ(0:3),NUM | ||
3680 | 421 | INTEGER I | ||
3681 | 422 | |||
3682 | 423 | DO I=0,3 | ||
3683 | 424 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
3684 | 425 | ENDDO | ||
3685 | 426 | |||
3686 | 427 | CALL LOOPNUM(QQ,NUM) | ||
3687 | 428 | GOLEM_LOOPNUM=NUM | ||
3688 | 429 | RETURN | ||
3689 | 430 | END FUNCTION | ||
3690 | 431 | |||
3691 | 432 | SUBROUTINE INITGOLEM() | ||
3692 | 433 | C | ||
3693 | 434 | C INITIALISATION OF GOLEM | ||
3694 | 435 | C | ||
3695 | 436 | C | ||
3696 | 437 | C MODULE | ||
3697 | 438 | C | ||
3698 | 439 | USE PARAMETRE | ||
3699 | 440 | C | ||
3700 | 441 | C LOCAL VARIABLES | ||
3701 | 442 | C | ||
3702 | 443 | REAL*8 THRS | ||
3703 | 444 | LOGICAL EXT_NUM_FOR_R1 | ||
3704 | 445 | C | ||
3705 | 446 | C GLOBAL VARIABLES | ||
3706 | 447 | C | ||
3707 | 448 | INCLUDE 'MadLoopParams.inc' | ||
3708 | 449 | C ---------- | ||
3709 | 450 | C BEGIN CODE | ||
3710 | 451 | C ---------- | ||
3711 | 452 | |||
3712 | 453 | C DEFAULT PARAMETERS FOR GOLEM | ||
3713 | 454 | C ------------------------------- | ||
3714 | 455 | C One can chose here to have either just the rational R1 piece | ||
3715 | 456 | C or everything but the R2 | ||
3716 | 457 | RAT_OR_TOT_PAR = TOT | ||
3717 | 458 | |||
3718 | 459 | END | ||
3719 | 460 | |||
3720 | 461 | SUBROUTINE SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
3721 | 462 | C | ||
3722 | 463 | C MODULE | ||
3723 | 464 | C | ||
3724 | 465 | USE MATRICE_S | ||
3725 | 466 | USE PRECISION_GOLEM, ONLY: KI | ||
3726 | 467 | C | ||
3727 | 468 | C ARGUMENTS | ||
3728 | 469 | C | ||
3729 | 470 | INTEGER NLOOPLINE | ||
3730 | 471 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
3731 | 472 | COMPLEX(KI) M2L(NLOOPLINE) | ||
3732 | 473 | C | ||
3733 | 474 | C LOCAL VARIABLES | ||
3734 | 475 | C | ||
3735 | 476 | INTEGER I,J | ||
3736 | 477 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
3737 | 478 | C ---------- | ||
3738 | 479 | C BEGIN CODE | ||
3739 | 480 | C ---------- | ||
3740 | 481 | |||
3741 | 482 | CALL BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L,S_MAT_FROM_MG) | ||
3742 | 483 | |||
3743 | 484 | DO I=1,NLOOPLINE | ||
3744 | 485 | DO J=1,NLOOPLINE | ||
3745 | 486 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
3746 | 487 | ENDDO | ||
3747 | 488 | ENDDO | ||
3748 | 489 | |||
3749 | 490 | END | ||
3750 | 491 | |||
3751 | 492 | FUNCTION COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
3752 | 493 | |||
3753 | 494 | USE PRECISION_GOLEM, ONLY: KI | ||
3754 | 495 | COMPLEX(KI) COEFS_A,COEFS_B | ||
3755 | 496 | REAL*8 COEF_CHECK_THRS | ||
3756 | 497 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3757 | 498 | REAL*8 DENOM,NUM | ||
3758 | 499 | LOGICAL COMPARE_COEFS_0 | ||
3759 | 500 | |||
3760 | 501 | NUM = ABS(COEFS_A-COEFS_B) | ||
3761 | 502 | DENOM = ABS(COEFS_A+COEFS_B) | ||
3762 | 503 | IF(DENOM.GT.0D0)THEN | ||
3763 | 504 | COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3764 | 505 | ELSE | ||
3765 | 506 | COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
3766 | 507 | ENDIF | ||
3767 | 508 | |||
3768 | 509 | END | ||
3769 | 510 | |||
3770 | 511 | FUNCTION COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
3771 | 512 | |||
3772 | 513 | USE TENS_REC | ||
3773 | 514 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
3774 | 515 | REAL*8 COEF_CHECK_THRS | ||
3775 | 516 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3776 | 517 | REAL*8 DENOM,NUM | ||
3777 | 518 | LOGICAL COMPARE_COEFS_1 | ||
3778 | 519 | |||
3779 | 520 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3780 | 521 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3781 | 522 | $ ) | ||
3782 | 523 | |||
3783 | 524 | IF(DENOM.GT.0D0)THEN | ||
3784 | 525 | COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3785 | 526 | ELSE | ||
3786 | 527 | COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
3787 | 528 | ENDIF | ||
3788 | 529 | |||
3789 | 530 | END | ||
3790 | 531 | |||
3791 | 532 | FUNCTION COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
3792 | 533 | |||
3793 | 534 | USE TENS_REC | ||
3794 | 535 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
3795 | 536 | REAL*8 COEF_CHECK_THRS | ||
3796 | 537 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3797 | 538 | REAL*8 DENOM,NUM | ||
3798 | 539 | LOGICAL COMPARE_COEFS_2 | ||
3799 | 540 | |||
3800 | 541 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3801 | 542 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
3802 | 543 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3803 | 544 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
3804 | 545 | IF(DENOM.GT.0D0)THEN | ||
3805 | 546 | COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3806 | 547 | ELSE | ||
3807 | 548 | COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
3808 | 549 | ENDIF | ||
3809 | 550 | |||
3810 | 551 | END | ||
3811 | 552 | |||
3812 | 553 | FUNCTION COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
3813 | 554 | |||
3814 | 555 | USE TENS_REC | ||
3815 | 556 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
3816 | 557 | REAL*8 COEF_CHECK_THRS | ||
3817 | 558 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3818 | 559 | REAL*8 DENOM,NUM | ||
3819 | 560 | LOGICAL COMPARE_COEFS_3 | ||
3820 | 561 | |||
3821 | 562 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3822 | 563 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3823 | 564 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3824 | 565 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3825 | 566 | $ ) | ||
3826 | 567 | IF(DENOM.GT.0D0)THEN | ||
3827 | 568 | COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3828 | 569 | ELSE | ||
3829 | 570 | COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
3830 | 571 | ENDIF | ||
3831 | 572 | |||
3832 | 573 | END | ||
3833 | 574 | |||
3834 | 575 | FUNCTION COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
3835 | 576 | |||
3836 | 577 | USE TENS_REC | ||
3837 | 578 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
3838 | 579 | REAL*8 COEF_CHECK_THRS | ||
3839 | 580 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3840 | 581 | REAL*8 DENOM,NUM | ||
3841 | 582 | LOGICAL COMPARE_COEFS_4 | ||
3842 | 583 | |||
3843 | 584 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3844 | 585 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3845 | 586 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3846 | 587 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3847 | 588 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3848 | 589 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3849 | 590 | IF(DENOM.GT.0D0)THEN | ||
3850 | 591 | COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3851 | 592 | ELSE | ||
3852 | 593 | COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
3853 | 594 | ENDIF | ||
3854 | 595 | |||
3855 | 596 | END | ||
3856 | 597 | |||
3857 | 598 | FUNCTION COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
3858 | 599 | |||
3859 | 600 | USE TENS_REC | ||
3860 | 601 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
3861 | 602 | REAL*8 COEF_CHECK_THRS | ||
3862 | 603 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3863 | 604 | REAL*8 DENOM,NUM | ||
3864 | 605 | LOGICAL COMPARE_COEFS_5 | ||
3865 | 606 | |||
3866 | 607 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3867 | 608 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3868 | 609 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3869 | 610 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3870 | 611 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3871 | 612 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3872 | 613 | IF(DENOM.GT.0D0)THEN | ||
3873 | 614 | COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3874 | 615 | ELSE | ||
3875 | 616 | COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
3876 | 617 | ENDIF | ||
3877 | 618 | |||
3878 | 619 | END | ||
3879 | 620 | |||
3880 | 621 | FUNCTION COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
3881 | 622 | |||
3882 | 623 | USE TENS_REC | ||
3883 | 624 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
3884 | 625 | REAL*8 COEF_CHECK_THRS | ||
3885 | 626 | COMMON/COEF_CHECK_THRS/COEF_CHECK_THRS | ||
3886 | 627 | REAL*8 DENOM,NUM | ||
3887 | 628 | LOGICAL COMPARE_COEFS_6 | ||
3888 | 629 | |||
3889 | 630 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
3890 | 631 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
3891 | 632 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
3892 | 633 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
3893 | 634 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
3894 | 635 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
3895 | 636 | IF(DENOM.GT.0D0)THEN | ||
3896 | 637 | COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
3897 | 638 | ELSE | ||
3898 | 639 | COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
3899 | 640 | ENDIF | ||
3900 | 641 | |||
3901 | 642 | END | ||
3902 | 643 | |||
3903 | 644 | |||
3904 | 645 | SUBROUTINE FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
3905 | 646 | USE PRECISION_GOLEM, ONLY: KI | ||
3906 | 647 | INCLUDE 'coef_specs.inc' | ||
3907 | 648 | INCLUDE 'loop_max_coefs.inc' | ||
3908 | 649 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3909 | 650 | COMPLEX(KI) GOLEM_COEFS | ||
3910 | 651 | GOLEM_COEFS=ML_COEFS(0) | ||
3911 | 652 | END | ||
3912 | 653 | |||
3913 | 654 | SUBROUTINE FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
3914 | 655 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
3915 | 656 | INCLUDE 'coef_specs.inc' | ||
3916 | 657 | INCLUDE 'loop_max_coefs.inc' | ||
3917 | 658 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3918 | 659 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
3919 | 660 | C Constant coefficient | ||
3920 | 661 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3921 | 662 | C Coefficient q(0) | ||
3922 | 663 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3923 | 664 | C Coefficient q(1) | ||
3924 | 665 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3925 | 666 | C Coefficient q(2) | ||
3926 | 667 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3927 | 668 | C Coefficient q(3) | ||
3928 | 669 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3929 | 670 | END | ||
3930 | 671 | |||
3931 | 672 | SUBROUTINE FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
3932 | 673 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
3933 | 674 | INCLUDE 'coef_specs.inc' | ||
3934 | 675 | INCLUDE 'loop_max_coefs.inc' | ||
3935 | 676 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3936 | 677 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
3937 | 678 | C Constant coefficient | ||
3938 | 679 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
3939 | 680 | C Coefficient q(0) | ||
3940 | 681 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
3941 | 682 | C Coefficient q(0)^2 | ||
3942 | 683 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
3943 | 684 | C Coefficient q(1) | ||
3944 | 685 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
3945 | 686 | C Coefficient q(1)^2 | ||
3946 | 687 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
3947 | 688 | C Coefficient q(2) | ||
3948 | 689 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
3949 | 690 | C Coefficient q(2)^2 | ||
3950 | 691 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
3951 | 692 | C Coefficient q(3) | ||
3952 | 693 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
3953 | 694 | C Coefficient q(3)^2 | ||
3954 | 695 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
3955 | 696 | C Coefficient q(0)*q(1) | ||
3956 | 697 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
3957 | 698 | C Coefficient q(0)*q(2) | ||
3958 | 699 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
3959 | 700 | C Coefficient q(0)*q(3) | ||
3960 | 701 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
3961 | 702 | C Coefficient q(1)*q(2) | ||
3962 | 703 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
3963 | 704 | C Coefficient q(1)*q(3) | ||
3964 | 705 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
3965 | 706 | C Coefficient q(2)*q(3) | ||
3966 | 707 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
3967 | 708 | END | ||
3968 | 709 | |||
3969 | 710 | SUBROUTINE FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
3970 | 711 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
3971 | 712 | INCLUDE 'coef_specs.inc' | ||
3972 | 713 | INCLUDE 'loop_max_coefs.inc' | ||
3973 | 714 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3974 | 715 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
3975 | 716 | C Dummy routine for FILL_GOLEM_COEFS_3 | ||
3976 | 717 | STOP 'ERROR: 3 > 2' | ||
3977 | 718 | END | ||
3978 | 719 | |||
3979 | 720 | SUBROUTINE FILL_GOLEM_COEFFS_4(ML_COEFS,GOLEM_COEFS) | ||
3980 | 721 | USE TENS_REC, ONLY: COEFF_TYPE_4 | ||
3981 | 722 | INCLUDE 'coef_specs.inc' | ||
3982 | 723 | INCLUDE 'loop_max_coefs.inc' | ||
3983 | 724 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3984 | 725 | TYPE(COEFF_TYPE_4) GOLEM_COEFS | ||
3985 | 726 | C Dummy routine for FILL_GOLEM_COEFS_4 | ||
3986 | 727 | STOP 'ERROR: 4 > 2' | ||
3987 | 728 | END | ||
3988 | 729 | |||
3989 | 730 | SUBROUTINE FILL_GOLEM_COEFFS_5(ML_COEFS,GOLEM_COEFS) | ||
3990 | 731 | USE TENS_REC, ONLY: COEFF_TYPE_5 | ||
3991 | 732 | INCLUDE 'coef_specs.inc' | ||
3992 | 733 | INCLUDE 'loop_max_coefs.inc' | ||
3993 | 734 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
3994 | 735 | TYPE(COEFF_TYPE_5) GOLEM_COEFS | ||
3995 | 736 | C Dummy routine for FILL_GOLEM_COEFS_5 | ||
3996 | 737 | STOP 'ERROR: 5 > 2' | ||
3997 | 738 | END | ||
3998 | 739 | |||
3999 | 740 | SUBROUTINE FILL_GOLEM_COEFFS_6(ML_COEFS,GOLEM_COEFS) | ||
4000 | 741 | USE TENS_REC, ONLY: COEFF_TYPE_6 | ||
4001 | 742 | INCLUDE 'coef_specs.inc' | ||
4002 | 743 | INCLUDE 'loop_max_coefs.inc' | ||
4003 | 744 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4004 | 745 | TYPE(COEFF_TYPE_6) GOLEM_COEFS | ||
4005 | 746 | C Dummy routine for FILL_GOLEM_COEFS_6 | ||
4006 | 747 | STOP 'ERROR: 6 > 2' | ||
4007 | 748 | END | ||
4008 | 749 | 0 | ||
4009 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f' | |||
4010 | --- 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 | |||
4011 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%TIR_interface.f 2018-11-09 10:32:12 +0000 | |||
4012 | @@ -96,17 +96,9 @@ | |||
4013 | 96 | ENDIF | 96 | ENDIF |
4014 | 97 | 97 | ||
4015 | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN | 98 | IF (MLREDUCTIONLIB(I_LIB).EQ.4) THEN |
4027 | 99 | C Using Golem95 | 99 | C Golem95 not available |
4028 | 100 | C PDEN is dummy for Golem95 so we just initialize it to zero | 100 | WRITE(*,*) 'ERROR:: Golem95 is not interfaced.' |
4029 | 101 | C here so as to use it for the function SWITCHORDER | 101 | STOP |
4019 | 102 | DO I=0,3 | ||
4020 | 103 | DO J=1,NLOOPLINE-1 | ||
4021 | 104 | PDEN(I,J)=0.0D0 | ||
4022 | 105 | ENDDO | ||
4023 | 106 | ENDDO | ||
4024 | 107 | CALL SWITCH_ORDER(CTMODE,NLOOPLINE,PL,PDEN,M2L) | ||
4025 | 108 | CALL GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
4026 | 109 | RETURN | ||
4030 | 110 | ENDIF | 102 | ENDIF |
4031 | 111 | 103 | ||
4032 | 112 | C INITIALIZE TIR IF NEEDED | 104 | C INITIALIZE TIR IF NEEDED |
4033 | 113 | 105 | ||
4034 | === modified file 'tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f' | |||
4035 | --- 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 | |||
4036 | +++ tests/input_files/IOTestsComparison/IOExportFKSTest/test_ppw_fksall/%SubProcesses%P0_udx_wp%V0_udx_wp%loop_matrix.f 2018-11-09 10:32:12 +0000 | |||
4037 | @@ -244,7 +244,7 @@ | |||
4038 | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE | 244 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING LOOPLIBS ARE |
4039 | 245 | C AVAILABLE OR NOT | 245 | C AVAILABLE OR NOT |
4040 | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) | 246 | LOGICAL LOOPLIBS_AVAILABLE(NLOOPLIB) |
4042 | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.TRUE.,.FALSE. | 247 | DATA LOOPLIBS_AVAILABLE/.TRUE.,.FALSE.,.TRUE.,.FALSE.,.FALSE. |
4043 | 248 | $ ,.TRUE.,.TRUE./ | 248 | $ ,.TRUE.,.TRUE./ |
4044 | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE | 249 | COMMON/LOOPLIBS_AV/ LOOPLIBS_AVAILABLE |
4045 | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS | 250 | C A FLAG TO DENOTE WHETHER THE CORRESPONDING DIRECTION TESTS |
4046 | 251 | 251 | ||
4047 | === modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f' | |||
4048 | --- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2017-11-24 12:17:04 +0000 | |||
4049 | +++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_group/matrix1.f 2018-11-09 10:32:12 +0000 | |||
4050 | @@ -73,6 +73,9 @@ | |||
4051 | 73 | REAL*8 POL(2) | 73 | REAL*8 POL(2) |
4052 | 74 | COMMON/TO_POLARIZATION/ POL | 74 | COMMON/TO_POLARIZATION/ POL |
4053 | 75 | 75 | ||
4054 | 76 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
4055 | 77 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
4056 | 78 | |||
4057 | 76 | INTEGER ISUM_HEL | 79 | INTEGER ISUM_HEL |
4058 | 77 | LOGICAL MULTI_CHANNEL | 80 | LOGICAL MULTI_CHANNEL |
4059 | 78 | COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL | 81 | COMMON/TO_MATRIX/ISUM_HEL, MULTI_CHANNEL |
4060 | @@ -110,6 +113,7 @@ | |||
4061 | 110 | C ---------- | 113 | C ---------- |
4062 | 111 | C BEGIN CODE | 114 | C BEGIN CODE |
4063 | 112 | C ---------- | 115 | C ---------- |
4064 | 116 | |||
4065 | 113 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 | 117 | NTRY(IMIRROR)=NTRY(IMIRROR)+1 |
4066 | 114 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 | 118 | THIS_NTRY(IMIRROR) = THIS_NTRY(IMIRROR)+1 |
4067 | 115 | DO I=1,NEXTERNAL | 119 | DO I=1,NEXTERNAL |
4068 | @@ -290,6 +294,15 @@ | |||
4069 | 290 | C Needed for v4 models | 294 | C Needed for v4 models |
4070 | 291 | COMPLEX*16 DUM0,DUM1 | 295 | COMPLEX*16 DUM0,DUM1 |
4071 | 292 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ | 296 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ |
4072 | 297 | |||
4073 | 298 | DOUBLE PRECISION FK_ZERO | ||
4074 | 299 | DOUBLE PRECISION FK_WZ | ||
4075 | 300 | SAVE FK_ZERO | ||
4076 | 301 | SAVE FK_WZ | ||
4077 | 302 | |||
4078 | 303 | LOGICAL FIRST | ||
4079 | 304 | DATA FIRST /.TRUE./ | ||
4080 | 305 | SAVE FIRST | ||
4081 | 293 | C | 306 | C |
4082 | 294 | C FUNCTION | 307 | C FUNCTION |
4083 | 295 | C | 308 | C |
4084 | @@ -300,6 +313,9 @@ | |||
4085 | 300 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) | 313 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) |
4086 | 301 | COMMON/TO_AMPS/ AMP2, JAMP2 | 314 | COMMON/TO_AMPS/ AMP2, JAMP2 |
4087 | 302 | INCLUDE 'coupl.inc' | 315 | INCLUDE 'coupl.inc' |
4088 | 316 | |||
4089 | 317 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
4090 | 318 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
4091 | 303 | C | 319 | C |
4092 | 304 | C COLOR DATA | 320 | C COLOR DATA |
4093 | 305 | C | 321 | C |
4094 | @@ -312,26 +328,33 @@ | |||
4095 | 312 | C ---------- | 328 | C ---------- |
4096 | 313 | C BEGIN CODE | 329 | C BEGIN CODE |
4097 | 314 | C ---------- | 330 | C ---------- |
4098 | 331 | IF (FIRST) THEN | ||
4099 | 332 | FIRST=.FALSE. | ||
4100 | 333 | FK_WZ = SIGN(MAX(ABS(WZ), ABS(MZ*SMALL_WIDTH_TREATMENT)), WZ) | ||
4101 | 334 | FK_ZERO = 0D0 | ||
4102 | 335 | ENDIF | ||
4103 | 336 | |||
4104 | 337 | |||
4105 | 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)) |
4106 | 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)) |
4107 | 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)) |
4108 | 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)) |
4110 | 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)) |
4111 | 320 | C Amplitude(s) for diagram number 1 | 343 | C Amplitude(s) for diagram number 1 |
4112 | 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)) |
4114 | 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)) |
4115 | 323 | C Amplitude(s) for diagram number 2 | 346 | C Amplitude(s) for diagram number 2 |
4116 | 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)) |
4118 | 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)) |
4119 | 326 | C Amplitude(s) for diagram number 3 | 349 | C Amplitude(s) for diagram number 3 |
4120 | 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)) |
4122 | 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)) |
4123 | 329 | C Amplitude(s) for diagram number 4 | 352 | C Amplitude(s) for diagram number 4 |
4124 | 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)) |
4126 | 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)) |
4127 | 332 | C Amplitude(s) for diagram number 5 | 355 | C Amplitude(s) for diagram number 5 |
4128 | 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)) |
4130 | 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)) |
4131 | 335 | C Amplitude(s) for diagram number 6 | 358 | C Amplitude(s) for diagram number 6 |
4132 | 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)) |
4133 | 337 | C JAMPs contributing to orders ALL_ORDERS=1 | 360 | C JAMPs contributing to orders ALL_ORDERS=1 |
4134 | 338 | 361 | ||
4135 | === modified file 'tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f' | |||
4136 | --- tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2017-11-26 00:21:49 +0000 | |||
4137 | +++ tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_madevent_nogroup/matrix.f 2018-11-09 10:32:12 +0000 | |||
4138 | @@ -51,6 +51,7 @@ | |||
4139 | 51 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ | 51 | INTEGER IDUM, NGOOD, IGOOD(NCOMB), JHEL, J, JJ |
4140 | 52 | REAL XRAN1 | 52 | REAL XRAN1 |
4141 | 53 | EXTERNAL XRAN1 | 53 | EXTERNAL XRAN1 |
4142 | 54 | |||
4143 | 54 | C | 55 | C |
4144 | 55 | C GLOBAL VARIABLES | 56 | C GLOBAL VARIABLES |
4145 | 56 | C | 57 | C |
4146 | @@ -71,6 +72,7 @@ | |||
4147 | 71 | DATA IDUM /-1/ | 72 | DATA IDUM /-1/ |
4148 | 72 | DATA XTRY, XREJ, NGOOD /0,0,0/ | 73 | DATA XTRY, XREJ, NGOOD /0,0,0/ |
4149 | 73 | SAVE YFRAC, IGOOD, JHEL | 74 | SAVE YFRAC, IGOOD, JHEL |
4150 | 75 | |||
4151 | 74 | DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/ | 76 | DATA (NHEL(I, 1),I=1,4) / 1,-1,-1,-1/ |
4152 | 75 | DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/ | 77 | DATA (NHEL(I, 2),I=1,4) / 1,-1,-1, 1/ |
4153 | 76 | DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/ | 78 | DATA (NHEL(I, 3),I=1,4) / 1,-1, 1,-1/ |
4154 | @@ -261,6 +263,13 @@ | |||
4155 | 261 | C Needed for v4 models | 263 | C Needed for v4 models |
4156 | 262 | COMPLEX*16 DUM0,DUM1 | 264 | COMPLEX*16 DUM0,DUM1 |
4157 | 263 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ | 265 | DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/ |
4158 | 266 | |||
4159 | 267 | DOUBLE PRECISION FK_ZERO | ||
4160 | 268 | SAVE FK_ZERO | ||
4161 | 269 | |||
4162 | 270 | LOGICAL FIRST | ||
4163 | 271 | DATA FIRST /.TRUE./ | ||
4164 | 272 | SAVE FIRST | ||
4165 | 264 | C | 273 | C |
4166 | 265 | C FUNCTION | 274 | C FUNCTION |
4167 | 266 | C | 275 | C |
4168 | @@ -271,6 +280,9 @@ | |||
4169 | 271 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) | 280 | DOUBLE PRECISION AMP2(MAXAMPS), JAMP2(0:MAXFLOW) |
4170 | 272 | COMMON/TO_AMPS/ AMP2, JAMP2 | 281 | COMMON/TO_AMPS/ AMP2, JAMP2 |
4171 | 273 | INCLUDE 'coupl.inc' | 282 | INCLUDE 'coupl.inc' |
4172 | 283 | |||
4173 | 284 | DOUBLE PRECISION SMALL_WIDTH_TREATMENT | ||
4174 | 285 | COMMON/NARROW_WIDTH/SMALL_WIDTH_TREATMENT | ||
4175 | 274 | C | 286 | C |
4176 | 275 | C COLOR DATA | 287 | C COLOR DATA |
4177 | 276 | C | 288 | C |
4178 | @@ -283,17 +295,22 @@ | |||
4179 | 283 | C ---------- | 295 | C ---------- |
4180 | 284 | C BEGIN CODE | 296 | C BEGIN CODE |
4181 | 285 | C ---------- | 297 | C ---------- |
4182 | 298 | IF (FIRST) THEN | ||
4183 | 299 | FIRST=.FALSE. | ||
4184 | 300 | FK_ZERO = 0D0 | ||
4185 | 301 | ENDIF | ||
4186 | 302 | |||
4187 | 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)) |
4188 | 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)) |
4189 | 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)) |
4190 | 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)) |
4192 | 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)) |
4193 | 291 | C Amplitude(s) for diagram number 1 | 308 | C Amplitude(s) for diagram number 1 |
4194 | 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)) |
4196 | 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)) |
4197 | 294 | C Amplitude(s) for diagram number 2 | 311 | C Amplitude(s) for diagram number 2 |
4198 | 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)) |
4200 | 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)) |
4201 | 297 | C Amplitude(s) for diagram number 3 | 314 | C Amplitude(s) for diagram number 3 |
4202 | 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)) |
4203 | 299 | C JAMPs contributing to orders ALL_ORDERS=1 | 316 | C JAMPs contributing to orders ALL_ORDERS=1 |
4204 | 300 | 317 | ||
4205 | === removed file 'tests/input_files/IOTestsComparison/MadLoop_output_from_the_interface/TIR_output/%ggttx_IOTest%SubProcesses%P0_gg_ttx%GOLEM_interface.f' | |||
4206 | --- 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 | |||
4207 | +++ 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 | |||
4208 | @@ -1,823 +0,0 @@ | |||
4209 | 1 | SUBROUTINE ML5_0_GOLEMLOOP(NLOOPLINE,PL,M2L,RANK,RES,STABLE) | ||
4210 | 2 | C | ||
4211 | 3 | C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s | ||
4212 | 4 | C By the MadGraph5_aMC@NLO Development Team | ||
4213 | 5 | C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch | ||
4214 | 6 | C | ||
4215 | 7 | C Interface between MG5 and Golem95. | ||
4216 | 8 | C The Golem95 version should be higher than 1.3.0. | ||
4217 | 9 | C It supports RANK = NLOOPLINE + 1 tensor integrals when 1 < | ||
4218 | 10 | C NLOOPLINE < 6. | ||
4219 | 11 | C | ||
4220 | 12 | C Process: g g > t t~ [ virt = QCD ] | ||
4221 | 13 | C | ||
4222 | 14 | C | ||
4223 | 15 | C MODULES | ||
4224 | 16 | C | ||
4225 | 17 | USE MATRICE_S | ||
4226 | 18 | USE FORM_FACTOR_TYPE, ONLY: FORM_FACTOR | ||
4227 | 19 | USE PRECISION_GOLEM, ONLY: KI | ||
4228 | 20 | USE TENS_COMB | ||
4229 | 21 | USE TENS_REC | ||
4230 | 22 | USE FORM_FACTOR_1P, ONLY: A10 | ||
4231 | 23 | USE FORM_FACTOR_2P, ONLY: A20 | ||
4232 | 24 | USE FORM_FACTOR_3P, ONLY: A30 | ||
4233 | 25 | USE FORM_FACTOR_4P, ONLY: A40 | ||
4234 | 26 | USE FORM_FACTOR_5P, ONLY: A50 | ||
4235 | 27 | USE FORM_FACTOR_6P, ONLY: A60 | ||
4236 | 28 | IMPLICIT NONE | ||
4237 | 29 | C | ||
4238 | 30 | C CONSTANTS | ||
4239 | 31 | C | ||
4240 | 32 | INTEGER NEXTERNAL | ||
4241 | 33 | PARAMETER (NEXTERNAL=4) | ||
4242 | 34 | LOGICAL CHECKPCONSERVATION | ||
4243 | 35 | PARAMETER (CHECKPCONSERVATION=.TRUE.) | ||
4244 | 36 | REAL*8 NORMALIZATION | ||
4245 | 37 | PARAMETER (NORMALIZATION = 1.D0/(16.D0*3.14159265358979323846D0* | ||
4246 | 38 | $ *2)) | ||
4247 | 39 | REAL(KI),DIMENSION(0:3),PARAMETER::NULL_VEC = (/0.0_KI,0.0_KI | ||
4248 | 40 | $ ,0.0_KI,0.0_KI/) | ||
4249 | 41 | C GOLEM_RUN_MODE = 1: Use directly MadLoop tensorial coefficients | ||
4250 | 42 | C GOLEM_RUN_MODE = 2: Reconstruct the tensorial coefficeints | ||
4251 | 43 | C directly from | ||
4252 | 44 | C numerator using golem internal reconstruction routine | ||
4253 | 45 | C GOLEM_RUN_MODE = 3: Cross-checked reconstructed coefficients | ||
4254 | 46 | C against | ||
4255 | 47 | C MadLoop internal ones. | ||
4256 | 48 | INTEGER GOLEM_RUN_MODE | ||
4257 | 49 | PARAMETER (GOLEM_RUN_MODE=1) | ||
4258 | 50 | C The following is the acceptance threshold used for | ||
4259 | 51 | C GOLEM_RUN_MODE = 3 | ||
4260 | 52 | REAL*8 COEF_CHECK_THRS | ||
4261 | 53 | DATA COEF_CHECK_THRS/1.0D-13/ | ||
4262 | 54 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4263 | 55 | |||
4264 | 56 | LOGICAL PASS_COEF_CHECK | ||
4265 | 57 | C | ||
4266 | 58 | C ARGUMENTS | ||
4267 | 59 | C | ||
4268 | 60 | INTEGER NLOOPLINE, RANK | ||
4269 | 61 | REAL*8 PL(0:3,NLOOPLINE) | ||
4270 | 62 | REAL*8 PCT(0:3,0:NLOOPLINE-1), ABSPCT(0:3) | ||
4271 | 63 | REAL*8 REF_P | ||
4272 | 64 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
4273 | 65 | COMPLEX*16 M2L(NLOOPLINE) | ||
4274 | 66 | COMPLEX(KI) M2LGOLEM(NLOOPLINE) | ||
4275 | 67 | COMPLEX*16 RES(3) | ||
4276 | 68 | LOGICAL STABLE | ||
4277 | 69 | C | ||
4278 | 70 | C LOCAL VARIABLES | ||
4279 | 71 | C | ||
4280 | 72 | INTEGER I, J, K | ||
4281 | 73 | TYPE(FORM_FACTOR)::RES_GOLEM | ||
4282 | 74 | |||
4283 | 75 | COMPLEX(KI)::COEFFS0,COEFFS0_REC | ||
4284 | 76 | TYPE(COEFF_TYPE_1)::COEFFS1,COEFFS1_REC | ||
4285 | 77 | TYPE(COEFF_TYPE_2)::COEFFS2,COEFFS2_REC | ||
4286 | 78 | TYPE(COEFF_TYPE_3)::COEFFS3,COEFFS3_REC | ||
4287 | 79 | TYPE(COEFF_TYPE_4)::COEFFS4,COEFFS4_REC | ||
4288 | 80 | TYPE(COEFF_TYPE_5)::COEFFS5,COEFFS5_REC | ||
4289 | 81 | TYPE(COEFF_TYPE_6)::COEFFS6,COEFFS6_REC | ||
4290 | 82 | |||
4291 | 83 | C The pinch propagator optimization is not used, so for now it is | ||
4292 | 84 | C always 0. | ||
4293 | 85 | INTEGER PINCH | ||
4294 | 86 | C | ||
4295 | 87 | C EXTERNAL FUNCTIONS | ||
4296 | 88 | C | ||
4297 | 89 | COMPLEX(KI) ML5_0_GOLEM_LOOPNUM | ||
4298 | 90 | EXTERNAL ML5_0_GOLEM_LOOPNUM | ||
4299 | 91 | LOGICAL ML5_0_COMPARE_COEFS_0 | ||
4300 | 92 | LOGICAL ML5_0_COMPARE_COEFS_1 | ||
4301 | 93 | LOGICAL ML5_0_COMPARE_COEFS_2 | ||
4302 | 94 | LOGICAL ML5_0_COMPARE_COEFS_3 | ||
4303 | 95 | LOGICAL ML5_0_COMPARE_COEFS_4 | ||
4304 | 96 | LOGICAL ML5_0_COMPARE_COEFS_5 | ||
4305 | 97 | LOGICAL ML5_0_COMPARE_COEFS_6 | ||
4306 | 98 | C | ||
4307 | 99 | C GLOBAL VARIABLES | ||
4308 | 100 | C | ||
4309 | 101 | INCLUDE 'coupl.inc' | ||
4310 | 102 | INTEGER CTMODE | ||
4311 | 103 | REAL*8 LSCALE | ||
4312 | 104 | COMMON/ML5_0_CT/LSCALE,CTMODE | ||
4313 | 105 | |||
4314 | 106 | INTEGER ID,SQSOINDEX,R | ||
4315 | 107 | COMMON/ML5_0_LOOP/ID,SQSOINDEX,R | ||
4316 | 108 | |||
4317 | 109 | LOGICAL CTINIT, TIRINIT, GOLEMINIT, SAMURAIINIT, NINJAINIT | ||
4318 | 110 | $ ,COLLIERINIT | ||
4319 | 111 | COMMON/REDUCTIONCODEINIT/CTINIT, TIRINIT,GOLEMINIT,SAMURAIINIT | ||
4320 | 112 | $ ,NINJAINIT,COLLIERINIT | ||
4321 | 113 | |||
4322 | 114 | INTEGER NLOOPGROUPS | ||
4323 | 115 | PARAMETER (NLOOPGROUPS=26) | ||
4324 | 116 | INTEGER NSQUAREDSO | ||
4325 | 117 | PARAMETER (NSQUAREDSO=1) | ||
4326 | 118 | INCLUDE 'loop_max_coefs.inc' | ||
4327 | 119 | |||
4328 | 120 | COMPLEX*16 LOOPCOEFS(0:LOOPMAXCOEFS-1,NSQUAREDSO,NLOOPGROUPS) | ||
4329 | 121 | COMMON/ML5_0_LCOEFS/LOOPCOEFS | ||
4330 | 122 | C ---------- | ||
4331 | 123 | C BEGIN CODE | ||
4332 | 124 | C ---------- | ||
4333 | 125 | |||
4334 | 126 | C The CT initialization is also performed here if not done already | ||
4335 | 127 | C because it calls MPINIT of OneLOop which is necessary on some | ||
4336 | 128 | C system | ||
4337 | 129 | IF (CTINIT) THEN | ||
4338 | 130 | CTINIT=.FALSE. | ||
4339 | 131 | CALL ML5_0_INITCT() | ||
4340 | 132 | ENDIF | ||
4341 | 133 | |||
4342 | 134 | C INITIALIZE GOLEM IF NEEDED | ||
4343 | 135 | IF (GOLEMINIT) THEN | ||
4344 | 136 | GOLEMINIT=.FALSE. | ||
4345 | 137 | CALL ML5_0_INITGOLEM() | ||
4346 | 138 | ENDIF | ||
4347 | 139 | |||
4348 | 140 | C No stability test intrisic to Golem95 now | ||
4349 | 141 | STABLE=.TRUE. | ||
4350 | 142 | |||
4351 | 143 | C This initialization must be done for each reduction because we | ||
4352 | 144 | C have not setup anyoptimization using pinched propagators yet. | ||
4353 | 145 | CALL INITGOLEM95(NLOOPLINE) | ||
4354 | 146 | PINCH = 0 | ||
4355 | 147 | |||
4356 | 148 | C YOU CAN FIND THE DETAILS ABOUT THE DIFFERENT CTMODE AT THE | ||
4357 | 149 | C BEGINNING OF THE FILE CTS_CUTS.F90 IN THE CUTTOOLS DISTRIBUTION | ||
4358 | 150 | |||
4359 | 151 | C CONVERT THE MASSES TO BE COMPLEX | ||
4360 | 152 | DO I=1,NLOOPLINE | ||
4361 | 153 | M2LGOLEM(I)=M2L(I) | ||
4362 | 154 | ENDDO | ||
4363 | 155 | |||
4364 | 156 | C CONVERT THE MOMENTA FLOWING IN THE LOOP LINES TO CT CONVENTIONS | ||
4365 | 157 | DO I=0,3 | ||
4366 | 158 | ABSPCT(I) = 0.D0 | ||
4367 | 159 | DO J=0,(NLOOPLINE-1) | ||
4368 | 160 | PCT(I,J)=0.D0 | ||
4369 | 161 | ENDDO | ||
4370 | 162 | ENDDO | ||
4371 | 163 | DO I=0,3 | ||
4372 | 164 | DO J=1,NLOOPLINE | ||
4373 | 165 | PCT(I,0)=PCT(I,0)+PL(I,J) | ||
4374 | 166 | ABSPCT(I)=ABSPCT(I)+ABS(PL(I,J)) | ||
4375 | 167 | ENDDO | ||
4376 | 168 | ENDDO | ||
4377 | 169 | REF_P = MAX(ABSPCT(0), ABSPCT(1),ABSPCT(2),ABSPCT(3)) | ||
4378 | 170 | DO I=0,3 | ||
4379 | 171 | ABSPCT(I) = MAX(REF_P*1E-6, ABSPCT(I)) | ||
4380 | 172 | ENDDO | ||
4381 | 173 | IF (CHECKPCONSERVATION.AND.REF_P.GT.1D-8) THEN | ||
4382 | 174 | IF ((PCT(0,0)/ABSPCT(0)).GT.1.D-6) THEN | ||
4383 | 175 | WRITE(*,*) 'energy is not conserved ',PCT(0,0) | ||
4384 | 176 | STOP 'energy is not conserved' | ||
4385 | 177 | ELSEIF ((PCT(1,0)/ABSPCT(1)).GT.1.D-6) THEN | ||
4386 | 178 | WRITE(*,*) 'px is not conserved ',PCT(1,0) | ||
4387 | 179 | STOP 'px is not conserved' | ||
4388 | 180 | ELSEIF ((PCT(2,0)/ABSPCT(2)).GT.1.D-6) THEN | ||
4389 | 181 | WRITE(*,*) 'py is not conserved ',PCT(2,0) | ||
4390 | 182 | STOP 'py is not conserved' | ||
4391 | 183 | ELSEIF ((PCT(3,0)/ABSPCT(3)).GT.1.D-6) THEN | ||
4392 | 184 | WRITE(*,*) 'pz is not conserved ',PCT(3,0) | ||
4393 | 185 | STOP 'pz is not conserved' | ||
4394 | 186 | ENDIF | ||
4395 | 187 | ENDIF | ||
4396 | 188 | DO I=0,3 | ||
4397 | 189 | DO J=1,(NLOOPLINE-1) | ||
4398 | 190 | DO K=1,J | ||
4399 | 191 | PCT(I,J)=PCT(I,J)+PL(I,K) | ||
4400 | 192 | ENDDO | ||
4401 | 193 | ENDDO | ||
4402 | 194 | ENDDO | ||
4403 | 195 | |||
4404 | 196 | C Now convert the loop momenta to Golem95 conventions | ||
4405 | 197 | DO I=0,3 | ||
4406 | 198 | PGOLEM(1,I)=0.0E0_KI | ||
4407 | 199 | DO J=2,NLOOPLINE | ||
4408 | 200 | PGOLEM(J,I)=PCT(I,J-1) | ||
4409 | 201 | ENDDO | ||
4410 | 202 | ENDDO | ||
4411 | 203 | |||
4412 | 204 | C Fill in the kinematic s-matrix while taking care of on-shell | ||
4413 | 205 | C limits. | ||
4414 | 206 | CALL ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2LGOLEM) | ||
4415 | 207 | C Construct the golem internal matrices derived from the kinetic | ||
4416 | 208 | C one. | ||
4417 | 209 | CALL PREPARESMATRIX() | ||
4418 | 210 | |||
4419 | 211 | C Fill in the golem coefficents and compute the loop | ||
4420 | 212 | IF(GOLEM_RUN_MODE.EQ.2)THEN | ||
4421 | 213 | RES_GOLEM = EVALUATE_B(ML5_0_GOLEM_LOOPNUM,PGOLEM,0,RANK) | ||
4422 | 214 | ELSE | ||
4423 | 215 | PASS_COEF_CHECK=.TRUE. | ||
4424 | 216 | SELECT CASE(RANK) | ||
4425 | 217 | CASE(0) | ||
4426 | 218 | CALL ML5_0_FILL_GOLEM_COEFFS_0(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4427 | 219 | $ ,COEFFS0) | ||
4428 | 220 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4429 | 221 | COEFFS0_REC = ML5_0_GOLEM_LOOPNUM(NULL_VEC,0.0_KI) | ||
4430 | 222 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_0(COEFFS0,COEFFS0_REC) | ||
4431 | 223 | ENDIF | ||
4432 | 224 | CASE(1) | ||
4433 | 225 | CALL ML5_0_FILL_GOLEM_COEFFS_1(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4434 | 226 | $ ,COEFFS1) | ||
4435 | 227 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4436 | 228 | CALL RECONSTRUCT1(ML5_0_GOLEM_LOOPNUM,COEFFS1_REC) | ||
4437 | 229 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_1(COEFFS1,COEFFS1_REC) | ||
4438 | 230 | ENDIF | ||
4439 | 231 | CASE(2) | ||
4440 | 232 | CALL ML5_0_FILL_GOLEM_COEFFS_2(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4441 | 233 | $ ,COEFFS2) | ||
4442 | 234 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4443 | 235 | CALL RECONSTRUCT2(ML5_0_GOLEM_LOOPNUM,COEFFS2_REC) | ||
4444 | 236 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_2(COEFFS2,COEFFS2_REC) | ||
4445 | 237 | ENDIF | ||
4446 | 238 | CASE(3) | ||
4447 | 239 | CALL ML5_0_FILL_GOLEM_COEFFS_3(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4448 | 240 | $ ,COEFFS3) | ||
4449 | 241 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4450 | 242 | CALL RECONSTRUCT3(ML5_0_GOLEM_LOOPNUM,COEFFS3_REC) | ||
4451 | 243 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_3(COEFFS3,COEFFS3_REC) | ||
4452 | 244 | ENDIF | ||
4453 | 245 | CASE(4) | ||
4454 | 246 | CALL ML5_0_FILL_GOLEM_COEFFS_4(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4455 | 247 | $ ,COEFFS4) | ||
4456 | 248 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4457 | 249 | CALL RECONSTRUCT4(ML5_0_GOLEM_LOOPNUM,COEFFS4_REC) | ||
4458 | 250 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_4(COEFFS4,COEFFS4_REC) | ||
4459 | 251 | ENDIF | ||
4460 | 252 | CASE(5) | ||
4461 | 253 | CALL ML5_0_FILL_GOLEM_COEFFS_5(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4462 | 254 | $ ,COEFFS5) | ||
4463 | 255 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4464 | 256 | CALL RECONSTRUCT5(ML5_0_GOLEM_LOOPNUM,COEFFS5_REC) | ||
4465 | 257 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_5(COEFFS5,COEFFS5_REC) | ||
4466 | 258 | ENDIF | ||
4467 | 259 | CASE(6) | ||
4468 | 260 | CALL ML5_0_FILL_GOLEM_COEFFS_6(LOOPCOEFS(0,SQSOINDEX,ID) | ||
4469 | 261 | $ ,COEFFS6) | ||
4470 | 262 | IF(GOLEM_RUN_MODE.EQ.3)THEN | ||
4471 | 263 | CALL RECONSTRUCT6(ML5_0_GOLEM_LOOPNUM,COEFFS6_REC) | ||
4472 | 264 | PASS_COEF_CHECK=ML5_0_COMPARE_COEFS_6(COEFFS6,COEFFS6_REC) | ||
4473 | 265 | ENDIF | ||
4474 | 266 | CASE DEFAULT | ||
4475 | 267 | WRITE(*,*)'Not yet implemented in Golem95 for rank= ',RANK | ||
4476 | 268 | STOP | ||
4477 | 269 | END SELECT | ||
4478 | 270 | |||
4479 | 271 | IF(.NOT.PASS_COEF_CHECK)THEN | ||
4480 | 272 | WRITE(*,*)'Coefs mismatch for ID ',ID,' and rank ',RANK | ||
4481 | 273 | WRITE(*,*)'Coefs form MadLoop5:' | ||
4482 | 274 | SELECT CASE(RANK) | ||
4483 | 275 | CASE(0) | ||
4484 | 276 | WRITE(*,*)'Constant coef = ',COEFFS0 | ||
4485 | 277 | CASE(1) | ||
4486 | 278 | CALL PRINT_COEFFS(COEFFS1) | ||
4487 | 279 | CASE(2) | ||
4488 | 280 | CALL PRINT_COEFFS(COEFFS2) | ||
4489 | 281 | CASE(3) | ||
4490 | 282 | CALL PRINT_COEFFS(COEFFS3) | ||
4491 | 283 | CASE(4) | ||
4492 | 284 | CALL PRINT_COEFFS(COEFFS4) | ||
4493 | 285 | CASE(5) | ||
4494 | 286 | CALL PRINT_COEFFS(COEFFS5) | ||
4495 | 287 | CASE(6) | ||
4496 | 288 | CALL PRINT_COEFFS(COEFFS6) | ||
4497 | 289 | END SELECT | ||
4498 | 290 | WRITE(*,*)'Coefs reconstructed by Golem95:' | ||
4499 | 291 | SELECT CASE(RANK) | ||
4500 | 292 | CASE(0) | ||
4501 | 293 | WRITE(*,*)'Constant coef = ',COEFFS0_REC | ||
4502 | 294 | CASE(1) | ||
4503 | 295 | CALL PRINT_COEFFS(COEFFS1_REC) | ||
4504 | 296 | CASE(2) | ||
4505 | 297 | CALL PRINT_COEFFS(COEFFS2_REC) | ||
4506 | 298 | CASE(3) | ||
4507 | 299 | CALL PRINT_COEFFS(COEFFS3_REC) | ||
4508 | 300 | CASE(4) | ||
4509 | 301 | CALL PRINT_COEFFS(COEFFS4_REC) | ||
4510 | 302 | CASE(5) | ||
4511 | 303 | CALL PRINT_COEFFS(COEFFS5_REC) | ||
4512 | 304 | CASE(6) | ||
4513 | 305 | CALL PRINT_COEFFS(COEFFS6_REC) | ||
4514 | 306 | END SELECT | ||
4515 | 307 | STOP | ||
4516 | 308 | ENDIF | ||
4517 | 309 | |||
4518 | 310 | SELECT CASE(NLOOPLINE) | ||
4519 | 311 | CASE(1) | ||
4520 | 312 | WRITE(*,*)'Golem95 cannot handle with tadpole yet' | ||
4521 | 313 | STOP | ||
4522 | 314 | CASE(2) | ||
4523 | 315 | SELECT CASE(RANK) | ||
4524 | 316 | CASE(0) | ||
4525 | 317 | RES_GOLEM = COEFFS0*A20(PINCH) | ||
4526 | 318 | CASE(1) | ||
4527 | 319 | RES_GOLEM = CONTRACT2_1(COEFFS1,PGOLEM,PINCH) | ||
4528 | 320 | CASE(2) | ||
4529 | 321 | RES_GOLEM = CONTRACT2_2(COEFFS2,PGOLEM,PINCH) | ||
4530 | 322 | CASE(3) | ||
4531 | 323 | RES_GOLEM = CONTRACT2_3(COEFFS3,PGOLEM,PINCH) | ||
4532 | 324 | CASE DEFAULT | ||
4533 | 325 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',2,RANK | ||
4534 | 326 | STOP | ||
4535 | 327 | END SELECT | ||
4536 | 328 | CASE(3) | ||
4537 | 329 | SELECT CASE(RANK) | ||
4538 | 330 | CASE(0) | ||
4539 | 331 | RES_GOLEM = COEFFS0*A30(PINCH) | ||
4540 | 332 | CASE(1) | ||
4541 | 333 | RES_GOLEM = CONTRACT3_1(COEFFS1,PGOLEM,PINCH) | ||
4542 | 334 | CASE(2) | ||
4543 | 335 | RES_GOLEM = CONTRACT3_2(COEFFS2,PGOLEM,PINCH) | ||
4544 | 336 | CASE(3) | ||
4545 | 337 | RES_GOLEM = CONTRACT3_3(COEFFS3,PGOLEM,PINCH) | ||
4546 | 338 | CASE(4) | ||
4547 | 339 | RES_GOLEM = CONTRACT3_4(COEFFS4,PGOLEM,PINCH) | ||
4548 | 340 | CASE DEFAULT | ||
4549 | 341 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',3,RANK | ||
4550 | 342 | STOP | ||
4551 | 343 | END SELECT | ||
4552 | 344 | CASE(4) | ||
4553 | 345 | SELECT CASE(RANK) | ||
4554 | 346 | CASE(0) | ||
4555 | 347 | RES_GOLEM = COEFFS0*A40(PINCH) | ||
4556 | 348 | CASE(1) | ||
4557 | 349 | RES_GOLEM = CONTRACT4_1(COEFFS1,PGOLEM,PINCH) | ||
4558 | 350 | CASE(2) | ||
4559 | 351 | RES_GOLEM = CONTRACT4_2(COEFFS2,PGOLEM,PINCH) | ||
4560 | 352 | CASE(3) | ||
4561 | 353 | RES_GOLEM = CONTRACT4_3(COEFFS3,PGOLEM,PINCH) | ||
4562 | 354 | CASE(4) | ||
4563 | 355 | RES_GOLEM = CONTRACT4_4(COEFFS4,PGOLEM,PINCH) | ||
4564 | 356 | CASE(5) | ||
4565 | 357 | RES_GOLEM = CONTRACT4_5(COEFFS5,PGOLEM,PINCH) | ||
4566 | 358 | CASE DEFAULT | ||
4567 | 359 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',4,RANK | ||
4568 | 360 | STOP | ||
4569 | 361 | END SELECT | ||
4570 | 362 | CASE(5) | ||
4571 | 363 | SELECT CASE(RANK) | ||
4572 | 364 | CASE(0) | ||
4573 | 365 | RES_GOLEM = COEFFS0*A50(PINCH) | ||
4574 | 366 | CASE(1) | ||
4575 | 367 | RES_GOLEM = CONTRACT5_1(COEFFS1,PGOLEM,PINCH) | ||
4576 | 368 | CASE(2) | ||
4577 | 369 | RES_GOLEM = CONTRACT5_2(COEFFS2,PGOLEM,PINCH) | ||
4578 | 370 | CASE(3) | ||
4579 | 371 | RES_GOLEM = CONTRACT5_3(COEFFS3,PGOLEM,PINCH) | ||
4580 | 372 | CASE(4) | ||
4581 | 373 | RES_GOLEM = CONTRACT5_4(COEFFS4,PGOLEM,PINCH) | ||
4582 | 374 | CASE(5) | ||
4583 | 375 | RES_GOLEM = CONTRACT5_5(COEFFS5,PGOLEM,PINCH) | ||
4584 | 376 | CASE(6) | ||
4585 | 377 | RES_GOLEM = CONTRACT5_6(COEFFS6,PGOLEM,PINCH) | ||
4586 | 378 | CASE DEFAULT | ||
4587 | 379 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',5,RANK | ||
4588 | 380 | STOP | ||
4589 | 381 | END SELECT | ||
4590 | 382 | CASE(6) | ||
4591 | 383 | SELECT CASE(RANK) | ||
4592 | 384 | CASE(0) | ||
4593 | 385 | RES_GOLEM = COEFFS0*A60(PINCH) | ||
4594 | 386 | CASE(1) | ||
4595 | 387 | RES_GOLEM = CONTRACT6_1(COEFFS1,PGOLEM,PINCH) | ||
4596 | 388 | CASE(2) | ||
4597 | 389 | RES_GOLEM = CONTRACT6_2(COEFFS2,PGOLEM,PINCH) | ||
4598 | 390 | CASE(3) | ||
4599 | 391 | RES_GOLEM = CONTRACT6_3(COEFFS3,PGOLEM,PINCH) | ||
4600 | 392 | CASE(4) | ||
4601 | 393 | RES_GOLEM = CONTRACT6_4(COEFFS4,PGOLEM,PINCH) | ||
4602 | 394 | CASE(5) | ||
4603 | 395 | RES_GOLEM = CONTRACT6_5(COEFFS5,PGOLEM,PINCH) | ||
4604 | 396 | CASE(6) | ||
4605 | 397 | RES_GOLEM = CONTRACT6_6(COEFFS6,PGOLEM,PINCH) | ||
4606 | 398 | CASE DEFAULT | ||
4607 | 399 | WRITE(*,*)'Golem95 cannot handle with: N,r = ',6,RANK | ||
4608 | 400 | STOP | ||
4609 | 401 | END SELECT | ||
4610 | 402 | CASE DEFAULT | ||
4611 | 403 | WRITE(*,*)'Golem95 cannot handle with: N = ',NLOOPLINE | ||
4612 | 404 | STOP | ||
4613 | 405 | END SELECT | ||
4614 | 406 | ENDIF | ||
4615 | 407 | |||
4616 | 408 | RES(1)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%C+2.0*LOG(MU_R) | ||
4617 | 409 | $ *RES_GOLEM%%B+2.0*LOG(MU_R)**2*RES_GOLEM%%A) | ||
4618 | 410 | RES(2)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%B+2.0*LOG(MU_R) | ||
4619 | 411 | $ *RES_GOLEM%%A) | ||
4620 | 412 | RES(3)=NORMALIZATION*2.0D0*DBLE(RES_GOLEM%%A) | ||
4621 | 413 | C WRITE(*,*) 'Loop ID',ID,' =',RES(1),RES(2),RES(3) | ||
4622 | 414 | |||
4623 | 415 | C Finally free golem memory and cache | ||
4624 | 416 | CALL EXITGOLEM95() | ||
4625 | 417 | |||
4626 | 418 | END | ||
4627 | 419 | |||
4628 | 420 | FUNCTION ML5_0_GOLEM_LOOPNUM(Q,MU2) | ||
4629 | 421 | USE PRECISION_GOLEM, ONLY: KI | ||
4630 | 422 | REAL(KI),DIMENSION(0:3),INTENT(IN)::Q | ||
4631 | 423 | REAL(KI),INTENT(IN)::MU2 | ||
4632 | 424 | COMPLEX(KI)::ML5_0_GOLEM_LOOPNUM | ||
4633 | 425 | |||
4634 | 426 | COMPLEX*16 QQ(0:3),NUM | ||
4635 | 427 | INTEGER I | ||
4636 | 428 | |||
4637 | 429 | DO I=0,3 | ||
4638 | 430 | QQ(I)=CMPLX(Q(I),0.0D0,KIND=16) | ||
4639 | 431 | ENDDO | ||
4640 | 432 | |||
4641 | 433 | CALL ML5_0_LOOPNUM(QQ,NUM) | ||
4642 | 434 | ML5_0_GOLEM_LOOPNUM=NUM | ||
4643 | 435 | RETURN | ||
4644 | 436 | END FUNCTION | ||
4645 | 437 | |||
4646 | 438 | SUBROUTINE ML5_0_INITGOLEM() | ||
4647 | 439 | C | ||
4648 | 440 | C INITIALISATION OF GOLEM | ||
4649 | 441 | C | ||
4650 | 442 | C | ||
4651 | 443 | C MODULE | ||
4652 | 444 | C | ||
4653 | 445 | USE PARAMETRE | ||
4654 | 446 | C | ||
4655 | 447 | C LOCAL VARIABLES | ||
4656 | 448 | C | ||
4657 | 449 | REAL*8 THRS | ||
4658 | 450 | LOGICAL EXT_NUM_FOR_R1 | ||
4659 | 451 | C | ||
4660 | 452 | C GLOBAL VARIABLES | ||
4661 | 453 | C | ||
4662 | 454 | INCLUDE 'MadLoopParams.inc' | ||
4663 | 455 | C ---------- | ||
4664 | 456 | C BEGIN CODE | ||
4665 | 457 | C ---------- | ||
4666 | 458 | |||
4667 | 459 | C DEFAULT PARAMETERS FOR GOLEM | ||
4668 | 460 | C ------------------------------- | ||
4669 | 461 | C One can chose here to have either just the rational R1 piece | ||
4670 | 462 | C or everything but the R2 | ||
4671 | 463 | RAT_OR_TOT_PAR = TOT | ||
4672 | 464 | |||
4673 | 465 | END | ||
4674 | 466 | |||
4675 | 467 | SUBROUTINE ML5_0_SETUP_KIN_MATRIX(NLOOPLINE,PGOLEM,M2L) | ||
4676 | 468 | C | ||
4677 | 469 | C MODULE | ||
4678 | 470 | C | ||
4679 | 471 | USE MATRICE_S | ||
4680 | 472 | USE PRECISION_GOLEM, ONLY: KI | ||
4681 | 473 | C | ||
4682 | 474 | C ARGUMENTS | ||
4683 | 475 | C | ||
4684 | 476 | INTEGER NLOOPLINE | ||
4685 | 477 | REAL(KI) PGOLEM(NLOOPLINE,0:3) | ||
4686 | 478 | COMPLEX(KI) M2L(NLOOPLINE) | ||
4687 | 479 | C | ||
4688 | 480 | C LOCAL VARIABLES | ||
4689 | 481 | C | ||
4690 | 482 | INTEGER I,J | ||
4691 | 483 | COMPLEX*16 S_MAT_FROM_MG(NLOOPLINE,NLOOPLINE) | ||
4692 | 484 | C ---------- | ||
4693 | 485 | C BEGIN CODE | ||
4694 | 486 | C ---------- | ||
4695 | 487 | |||
4696 | 488 | CALL ML5_0_BUILD_KINEMATIC_MATRIX(NLOOPLINE,PGOLEM,M2L | ||
4697 | 489 | $ ,S_MAT_FROM_MG) | ||
4698 | 490 | |||
4699 | 491 | DO I=1,NLOOPLINE | ||
4700 | 492 | DO J=1,NLOOPLINE | ||
4701 | 493 | S_MAT(I,J)=S_MAT_FROM_MG(I,J) | ||
4702 | 494 | ENDDO | ||
4703 | 495 | ENDDO | ||
4704 | 496 | |||
4705 | 497 | END | ||
4706 | 498 | |||
4707 | 499 | FUNCTION ML5_0_COMPARE_COEFS_0(COEFS_A,COEFS_B) | ||
4708 | 500 | |||
4709 | 501 | USE PRECISION_GOLEM, ONLY: KI | ||
4710 | 502 | COMPLEX(KI) COEFS_A,COEFS_B | ||
4711 | 503 | REAL*8 COEF_CHECK_THRS | ||
4712 | 504 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4713 | 505 | REAL*8 DENOM,NUM | ||
4714 | 506 | LOGICAL ML5_0_COMPARE_COEFS_0 | ||
4715 | 507 | |||
4716 | 508 | NUM = ABS(COEFS_A-COEFS_B) | ||
4717 | 509 | DENOM = ABS(COEFS_A+COEFS_B) | ||
4718 | 510 | IF(DENOM.GT.0D0)THEN | ||
4719 | 511 | ML5_0_COMPARE_COEFS_0=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4720 | 512 | ELSE | ||
4721 | 513 | ML5_0_COMPARE_COEFS_0=(NUM.LT.COEF_CHECK_THRS) | ||
4722 | 514 | ENDIF | ||
4723 | 515 | |||
4724 | 516 | END | ||
4725 | 517 | |||
4726 | 518 | FUNCTION ML5_0_COMPARE_COEFS_1(COEFS_A,COEFS_B) | ||
4727 | 519 | |||
4728 | 520 | USE TENS_REC | ||
4729 | 521 | TYPE(COEFF_TYPE_1)COEFS_A,COEFS_B | ||
4730 | 522 | REAL*8 COEF_CHECK_THRS | ||
4731 | 523 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4732 | 524 | REAL*8 DENOM,NUM | ||
4733 | 525 | LOGICAL ML5_0_COMPARE_COEFS_1 | ||
4734 | 526 | |||
4735 | 527 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4736 | 528 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4737 | 529 | $ ) | ||
4738 | 530 | |||
4739 | 531 | IF(DENOM.GT.0D0)THEN | ||
4740 | 532 | ML5_0_COMPARE_COEFS_1=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4741 | 533 | ELSE | ||
4742 | 534 | ML5_0_COMPARE_COEFS_1=(NUM.LT.COEF_CHECK_THRS) | ||
4743 | 535 | ENDIF | ||
4744 | 536 | |||
4745 | 537 | END | ||
4746 | 538 | |||
4747 | 539 | FUNCTION ML5_0_COMPARE_COEFS_2(COEFS_A,COEFS_B) | ||
4748 | 540 | |||
4749 | 541 | USE TENS_REC | ||
4750 | 542 | TYPE(COEFF_TYPE_2) COEFS_A,COEFS_B | ||
4751 | 543 | REAL*8 COEF_CHECK_THRS | ||
4752 | 544 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4753 | 545 | REAL*8 DENOM,NUM | ||
4754 | 546 | LOGICAL ML5_0_COMPARE_COEFS_2 | ||
4755 | 547 | |||
4756 | 548 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4757 | 549 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2)) | ||
4758 | 550 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4759 | 551 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2)) | ||
4760 | 552 | IF(DENOM.GT.0D0)THEN | ||
4761 | 553 | ML5_0_COMPARE_COEFS_2=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4762 | 554 | ELSE | ||
4763 | 555 | ML5_0_COMPARE_COEFS_2=(NUM.LT.COEF_CHECK_THRS) | ||
4764 | 556 | ENDIF | ||
4765 | 557 | |||
4766 | 558 | END | ||
4767 | 559 | |||
4768 | 560 | FUNCTION ML5_0_COMPARE_COEFS_3(COEFS_A,COEFS_B) | ||
4769 | 561 | |||
4770 | 562 | USE TENS_REC | ||
4771 | 563 | TYPE(COEFF_TYPE_3) COEFS_A, COEFS_B | ||
4772 | 564 | REAL*8 COEF_CHECK_THRS | ||
4773 | 565 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4774 | 566 | REAL*8 DENOM,NUM | ||
4775 | 567 | LOGICAL ML5_0_COMPARE_COEFS_3 | ||
4776 | 568 | |||
4777 | 569 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4778 | 570 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4779 | 571 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4780 | 572 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4781 | 573 | $ ) | ||
4782 | 574 | IF(DENOM.GT.0D0)THEN | ||
4783 | 575 | ML5_0_COMPARE_COEFS_3=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4784 | 576 | ELSE | ||
4785 | 577 | ML5_0_COMPARE_COEFS_3=(NUM.LT.COEF_CHECK_THRS) | ||
4786 | 578 | ENDIF | ||
4787 | 579 | |||
4788 | 580 | END | ||
4789 | 581 | |||
4790 | 582 | FUNCTION ML5_0_COMPARE_COEFS_4(COEFS_A,COEFS_B) | ||
4791 | 583 | |||
4792 | 584 | USE TENS_REC | ||
4793 | 585 | TYPE(COEFF_TYPE_4) COEFS_A, COEFS_B | ||
4794 | 586 | REAL*8 COEF_CHECK_THRS | ||
4795 | 587 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4796 | 588 | REAL*8 DENOM,NUM | ||
4797 | 589 | LOGICAL ML5_0_COMPARE_COEFS_4 | ||
4798 | 590 | |||
4799 | 591 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4800 | 592 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4801 | 593 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4802 | 594 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4803 | 595 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4804 | 596 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4805 | 597 | IF(DENOM.GT.0D0)THEN | ||
4806 | 598 | ML5_0_COMPARE_COEFS_4=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4807 | 599 | ELSE | ||
4808 | 600 | ML5_0_COMPARE_COEFS_4=(NUM.LT.COEF_CHECK_THRS) | ||
4809 | 601 | ENDIF | ||
4810 | 602 | |||
4811 | 603 | END | ||
4812 | 604 | |||
4813 | 605 | FUNCTION ML5_0_COMPARE_COEFS_5(COEFS_A,COEFS_B) | ||
4814 | 606 | |||
4815 | 607 | USE TENS_REC | ||
4816 | 608 | TYPE(COEFF_TYPE_5) COEFS_A,COEFS_B | ||
4817 | 609 | REAL*8 COEF_CHECK_THRS | ||
4818 | 610 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4819 | 611 | REAL*8 DENOM,NUM | ||
4820 | 612 | LOGICAL ML5_0_COMPARE_COEFS_5 | ||
4821 | 613 | |||
4822 | 614 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4823 | 615 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4824 | 616 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4825 | 617 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4826 | 618 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4827 | 619 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4828 | 620 | IF(DENOM.GT.0D0)THEN | ||
4829 | 621 | ML5_0_COMPARE_COEFS_5=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4830 | 622 | ELSE | ||
4831 | 623 | ML5_0_COMPARE_COEFS_5=(NUM.LT.COEF_CHECK_THRS) | ||
4832 | 624 | ENDIF | ||
4833 | 625 | |||
4834 | 626 | END | ||
4835 | 627 | |||
4836 | 628 | FUNCTION ML5_0_COMPARE_COEFS_6(COEFS_A,COEFS_B) | ||
4837 | 629 | |||
4838 | 630 | USE TENS_REC | ||
4839 | 631 | TYPE(COEFF_TYPE_6) COEFS_A,COEFS_B | ||
4840 | 632 | REAL*8 COEF_CHECK_THRS | ||
4841 | 633 | COMMON/ML5_0_COEF_CHECK_THRS/COEF_CHECK_THRS | ||
4842 | 634 | REAL*8 DENOM,NUM | ||
4843 | 635 | LOGICAL ML5_0_COMPARE_COEFS_6 | ||
4844 | 636 | |||
4845 | 637 | NUM = ABS(COEFS_A%%C0-COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1-COEFS_B%%C1)) | ||
4846 | 638 | $ +SUM(ABS(COEFS_A%%C2-COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3-COEFS_B%%C3)) | ||
4847 | 639 | $ +SUM(ABS(COEFS_A%%C4-COEFS_B%%C4)) | ||
4848 | 640 | DENOM = ABS(COEFS_A%%C0+COEFS_B%%C0)+SUM(ABS(COEFS_A%%C1+COEFS_B%%C1) | ||
4849 | 641 | $ )+SUM(ABS(COEFS_A%%C2+COEFS_B%%C2))+SUM(ABS(COEFS_A%%C3+COEFS_B%%C3) | ||
4850 | 642 | $ )+SUM(ABS(COEFS_A%%C4+COEFS_B%%C4)) | ||
4851 | 643 | IF(DENOM.GT.0D0)THEN | ||
4852 | 644 | ML5_0_COMPARE_COEFS_6=((NUM/DENOM).LT.COEF_CHECK_THRS) | ||
4853 | 645 | ELSE | ||
4854 | 646 | ML5_0_COMPARE_COEFS_6=(NUM.LT.COEF_CHECK_THRS) | ||
4855 | 647 | ENDIF | ||
4856 | 648 | |||
4857 | 649 | END | ||
4858 | 650 | |||
4859 | 651 | |||
4860 | 652 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_0(ML_COEFS,GOLEM_COEFS) | ||
4861 | 653 | USE PRECISION_GOLEM, ONLY: KI | ||
4862 | 654 | INCLUDE 'coef_specs.inc' | ||
4863 | 655 | INCLUDE 'loop_max_coefs.inc' | ||
4864 | 656 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4865 | 657 | COMPLEX(KI) GOLEM_COEFS | ||
4866 | 658 | GOLEM_COEFS=ML_COEFS(0) | ||
4867 | 659 | END | ||
4868 | 660 | |||
4869 | 661 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_1(ML_COEFS,GOLEM_COEFS) | ||
4870 | 662 | USE TENS_REC, ONLY: COEFF_TYPE_1 | ||
4871 | 663 | INCLUDE 'coef_specs.inc' | ||
4872 | 664 | INCLUDE 'loop_max_coefs.inc' | ||
4873 | 665 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4874 | 666 | TYPE(COEFF_TYPE_1) GOLEM_COEFS | ||
4875 | 667 | C Constant coefficient | ||
4876 | 668 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
4877 | 669 | C Coefficient q(0) | ||
4878 | 670 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
4879 | 671 | C Coefficient q(1) | ||
4880 | 672 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
4881 | 673 | C Coefficient q(2) | ||
4882 | 674 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
4883 | 675 | C Coefficient q(3) | ||
4884 | 676 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
4885 | 677 | END | ||
4886 | 678 | |||
4887 | 679 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_2(ML_COEFS,GOLEM_COEFS) | ||
4888 | 680 | USE TENS_REC, ONLY: COEFF_TYPE_2 | ||
4889 | 681 | INCLUDE 'coef_specs.inc' | ||
4890 | 682 | INCLUDE 'loop_max_coefs.inc' | ||
4891 | 683 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4892 | 684 | TYPE(COEFF_TYPE_2) GOLEM_COEFS | ||
4893 | 685 | C Constant coefficient | ||
4894 | 686 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
4895 | 687 | C Coefficient q(0) | ||
4896 | 688 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
4897 | 689 | C Coefficient q(0)^2 | ||
4898 | 690 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
4899 | 691 | C Coefficient q(1) | ||
4900 | 692 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
4901 | 693 | C Coefficient q(1)^2 | ||
4902 | 694 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
4903 | 695 | C Coefficient q(2) | ||
4904 | 696 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
4905 | 697 | C Coefficient q(2)^2 | ||
4906 | 698 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
4907 | 699 | C Coefficient q(3) | ||
4908 | 700 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
4909 | 701 | C Coefficient q(3)^2 | ||
4910 | 702 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
4911 | 703 | C Coefficient q(0)*q(1) | ||
4912 | 704 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
4913 | 705 | C Coefficient q(0)*q(2) | ||
4914 | 706 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
4915 | 707 | C Coefficient q(0)*q(3) | ||
4916 | 708 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
4917 | 709 | C Coefficient q(1)*q(2) | ||
4918 | 710 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
4919 | 711 | C Coefficient q(1)*q(3) | ||
4920 | 712 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
4921 | 713 | C Coefficient q(2)*q(3) | ||
4922 | 714 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
4923 | 715 | END | ||
4924 | 716 | |||
4925 | 717 | SUBROUTINE ML5_0_FILL_GOLEM_COEFFS_3(ML_COEFS,GOLEM_COEFS) | ||
4926 | 718 | USE TENS_REC, ONLY: COEFF_TYPE_3 | ||
4927 | 719 | INCLUDE 'coef_specs.inc' | ||
4928 | 720 | INCLUDE 'loop_max_coefs.inc' | ||
4929 | 721 | COMPLEX*16 ML_COEFS(0:LOOPMAXCOEFS-1) | ||
4930 | 722 | TYPE(COEFF_TYPE_3) GOLEM_COEFS | ||
4931 | 723 | C Constant coefficient | ||
4932 | 724 | GOLEM_COEFS%%C0=ML_COEFS(0) | ||
4933 | 725 | C Coefficient q(0) | ||
4934 | 726 | GOLEM_COEFS%%C1(1,1)=-ML_COEFS(1) | ||
4935 | 727 | C Coefficient q(0)^2 | ||
4936 | 728 | GOLEM_COEFS%%C1(1,2)= ML_COEFS(5) | ||
4937 | 729 | C Coefficient q(0)^3 | ||
4938 | 730 | GOLEM_COEFS%%C1(1,3)=-ML_COEFS(15) | ||
4939 | 731 | C Coefficient q(1) | ||
4940 | 732 | GOLEM_COEFS%%C1(2,1)=-ML_COEFS(2) | ||
4941 | 733 | C Coefficient q(1)^2 | ||
4942 | 734 | GOLEM_COEFS%%C1(2,2)= ML_COEFS(7) | ||
4943 | 735 | C Coefficient q(1)^3 | ||
4944 | 736 | GOLEM_COEFS%%C1(2,3)=-ML_COEFS(18) | ||
4945 | 737 | C Coefficient q(2) | ||
4946 | 738 | GOLEM_COEFS%%C1(3,1)=-ML_COEFS(3) | ||
4947 | 739 | C Coefficient q(2)^2 | ||
4948 | 740 | GOLEM_COEFS%%C1(3,2)= ML_COEFS(10) | ||
4949 | 741 | C Coefficient q(2)^3 | ||
4950 | 742 | GOLEM_COEFS%%C1(3,3)=-ML_COEFS(24) | ||
4951 | 743 | C Coefficient q(3) | ||
4952 | 744 | GOLEM_COEFS%%C1(4,1)=-ML_COEFS(4) | ||
4953 | 745 | C Coefficient q(3)^2 | ||
4954 | 746 | GOLEM_COEFS%%C1(4,2)= ML_COEFS(14) | ||
4955 | 747 | C Coefficient q(3)^3 | ||
4956 | 748 | GOLEM_COEFS%%C1(4,3)=-ML_COEFS(34) | ||
4957 | 749 | C Coefficient q(0)*q(1) | ||
4958 | 750 | GOLEM_COEFS%%C2(1,1)= ML_COEFS(6) | ||
4959 | 751 | C Coefficient q(0)*q(1)^2 | ||
4960 | 752 | GOLEM_COEFS%%C2(1,2)=-ML_COEFS(17) | ||
4961 | 753 | C Coefficient q(0)^2*q(1) | ||
4962 | 754 | GOLEM_COEFS%%C2(1,3)=-ML_COEFS(16) | ||
4963 | 755 | C Coefficient q(0)*q(2) | ||
4964 | 756 | GOLEM_COEFS%%C2(2,1)= ML_COEFS(8) | ||
4965 | 757 | C Coefficient q(0)*q(2)^2 | ||
4966 | 758 | GOLEM_COEFS%%C2(2,2)=-ML_COEFS(22) | ||
4967 | 759 | C Coefficient q(0)^2*q(2) | ||
4968 | 760 | GOLEM_COEFS%%C2(2,3)=-ML_COEFS(19) | ||
4969 | 761 | C Coefficient q(0)*q(3) | ||
4970 | 762 | GOLEM_COEFS%%C2(3,1)= ML_COEFS(11) | ||
4971 | 763 | C Coefficient q(0)*q(3)^2 | ||
4972 | 764 | GOLEM_COEFS%%C2(3,2)=-ML_COEFS(31) | ||
4973 | 765 | C Coefficient q(0)^2*q(3) | ||
4974 | 766 | GOLEM_COEFS%%C2(3,3)=-ML_COEFS(25) | ||
4975 | 767 | C Coefficient q(1)*q(2) | ||
4976 | 768 | GOLEM_COEFS%%C2(4,1)= ML_COEFS(9) | ||
4977 | 769 | C Coefficient q(1)*q(2)^2 | ||
4978 | 770 | GOLEM_COEFS%%C2(4,2)=-ML_COEFS(23) | ||
4979 | 771 | C Coefficient q(1)^2*q(2) | ||
4980 | 772 | GOLEM_COEFS%%C2(4,3)=-ML_COEFS(21) | ||
4981 | 773 | C Coefficient q(1)*q(3) | ||
4982 | 774 | GOLEM_COEFS%%C2(5,1)= ML_COEFS(12) | ||
4983 | 775 | C Coefficient q(1)*q(3)^2 | ||
4984 | 776 | GOLEM_COEFS%%C2(5,2)=-ML_COEFS(32) | ||
4985 | 777 | C Coefficient q(1)^2*q(3) | ||
4986 | 778 | GOLEM_COEFS%%C2(5,3)=-ML_COEFS(27) | ||
4987 | 779 | C Coefficient q(2)*q(3) | ||
4988 | 780 | GOLEM_COEFS%%C2(6,1)= ML_COEFS(13) | ||
4989 | 781 | C Coefficient q(2)*q(3)^2 | ||
4990 | 782 | GOLEM_COEFS%%C2(6,2)=-ML_COEFS(33) | ||
4991 | 783 | C Coefficient q(2)^2*q(3) | ||
4992 | 784 | GOLEM_COEFS%%C2(6,3)=-ML_COEFS(30) | ||
4993 | 785 | C Coefficient q(0)*q(1)*q(2) | ||
4994 | 786 | GOLEM_COEFS%%C3(1,1)=-ML_COEFS(20) | ||
4995 | 787 | C Coefficient q(0)*q(1)*q(3) | ||
4996 | 788 | GOLEM_COEFS%%C3(2,1)=-ML_COEFS(26) | ||
4997 | 789 | C Coefficient q(0)*q(2)*q(3) | ||
4998 | 790 | GOLEM_COEFS%%C3(3,1)=-ML_COEFS(28) | ||
4999 | 791 | C Coefficient q(1)*q(2)*q(3) | ||
5000 | 792 | GOLEM_COEFS%%C3(4,1)=-ML_COEFS(29) |
The diff has been truncated for viewing.