Merge lp:~maddevelopers/mg5amcnlo/fix_decay_chain_problem into lp:~madteam/mg5amcnlo/trunk

Proposed by Johan Alwall
Status: Merged
Merged at revision: 165
Proposed branch: lp:~maddevelopers/mg5amcnlo/fix_decay_chain_problem
Merge into: lp:~madteam/mg5amcnlo/trunk
Diff against target: 2919 lines (+807/-613)
17 files modified
Template/SubProcesses/addmothers.f (+3/-8)
Template/SubProcesses/cluster.f (+3/-2)
Template/SubProcesses/genps.f (+2/-1)
Template/SubProcesses/myamp.f (+14/-14)
Template/SubProcesses/reweight.f (+1/-1)
Template/SubProcesses/setcuts.f (+2/-1)
Template/SubProcesses/symmetry.f (+20/-18)
Template/SubProcesses/unwgt.f (+0/-19)
UpdateNotes.txt (+11/-0)
madgraph/VERSION (+2/-2)
madgraph/core/base_objects.py (+25/-32)
madgraph/core/helas_objects.py (+9/-0)
madgraph/interface/cmd_interface.py (+0/-8)
madgraph/iolibs/export_v4.py (+87/-29)
madgraph/iolibs/group_subprocs.py (+5/-1)
tests/unit_tests/iolibs/test_export_v4.py (+390/-477)
tests/unit_tests/iolibs/test_group_subprocs.py (+233/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/fix_decay_chain_problem
Reviewer Review Type Date Requested Status
Olivier Mattelaer Approve
FabioMaltoni Pending
Review via email: mp+73158@code.launchpad.net

Description of the change

- Fixed problem with decay chains when different decays result in identical final states, such as
p p > go go, (go > b1/b1~ b/b~, b1/b1~ > b/b~ n1)
(only one of the decay chains was chosen, instead of all 3 combinations (b1,b1), (b1,b1~), (b1~,b1~))
- Allow for overall orders also with grouped subprocesses
- Ensure that only leading color flows are included in event output (so no singlet flows from color octets).

To post a comment you must log in.
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) wrote :

Is this normal?
(at the beginning of this diff)
I suppose not, ...

Template/SubProcesses/addmothers.f
@@ -126,10 +126,8 @@
17 - icolalt(1,i)=jpart(4,i)
18 - icolalt(2,i)=jpart(5,i)
19 - if (jpart(4,i).gt.maxcolor) maxcolor=jpart(4,i)
20 - if (jpart(5,i).gt.maxcolor) maxcolor=jpart(5,i)
21 + print *,'NONONO'
22 + stop

Otherwise very nice!

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

Could you also put gfortran as the default compiler.
(at least when gfortran and g77 are both define)
they are a lot of trouble with g77. see https://answers.launchpad.net/madgraph5/+question/169739

Cheers,

Olivier

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Hello Olivier,

The reason we use g77 as default is only that one of the clusters
didn't work (I think UIUC, the problem was that it had gfortran on the
server node but not on the cluster nodes, if I remember correctly, or
that the gfortran was too old). If this is fixed, then I'd be happy to
change.

Cheers,
Johan

170. By Johan Alwall

Removed debug output in addmothers, fixed multifermion problem in helas_objects.py

171. By Johan Alwall

Updated UpdateNotes

Revision history for this message
Johan Alwall (johan-alwall) wrote :

Thanks, no that was indeed not supposed to be there :-)

Cheers,
Johan

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Template/SubProcesses/addmothers.f'
2--- Template/SubProcesses/addmothers.f 2011-08-25 21:54:53 +0000
3+++ Template/SubProcesses/addmothers.f 2011-09-01 14:57:19 +0000
4@@ -42,7 +42,7 @@
5
6 integer iforest(2,-max_branch:-1,lmaxconfigs)
7 common/to_forest/ iforest
8- integer sprop(-max_branch:-1,lmaxconfigs)
9+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
10 integer tprid(-max_branch:-1,lmaxconfigs)
11 common/to_sprop/sprop,tprid
12 integer mapconfig(0:lmaxconfigs), iconfig
13@@ -125,11 +125,6 @@
14 icolalt(2,isym(i,jsym))=icolup(2,i,ic,numproc)
15 if (icolup(1,i,ic, numproc).gt.maxcolor) maxcolor=icolup(1,i,ic, numproc)
16 if (icolup(2,i,ic, numproc).gt.maxcolor) maxcolor=icolup(2,i,ic, numproc)
17- else
18- icolalt(1,i)=jpart(4,i)
19- icolalt(2,i)=jpart(5,i)
20- if (jpart(4,i).gt.maxcolor) maxcolor=jpart(4,i)
21- if (jpart(5,i).gt.maxcolor) maxcolor=jpart(5,i)
22 endif
23 enddo
24
25@@ -159,8 +154,8 @@
26 if(ida(j).gt.0) ida(j)=isym(ida(j),jsym)
27 enddo
28 c Decide s- or t-channel
29- if(iabs(sprop(i,iconfig)).gt.0) then ! s-channel propagator
30- jpart(1,i)=sprop(i,iconfig)
31+ if(iabs(sprop(numproc,i,iconfig)).gt.0) then ! s-channel propagator
32+ jpart(1,i)=sprop(numproc,i,iconfig)
33 ns=ns+1
34 else
35 c Don't care about t-channel propagators
36
37=== modified file 'Template/SubProcesses/cluster.f'
38--- Template/SubProcesses/cluster.f 2011-05-10 22:00:41 +0000
39+++ Template/SubProcesses/cluster.f 2011-09-01 14:57:19 +0000
40@@ -202,11 +202,12 @@
41 include 'nexternal.inc'
42 include 'cluster.inc'
43 include 'coupl.inc'
44+ include 'maxamps.inc'
45 integer ignum, ipnum, ipids(nexternal,4,2:nexternal)
46 C $B$ IFOREST $B$ !this is a tag for MadWeight
47 integer i, iforest(2,-max_branch:-1,lmaxconfigs)
48 common/to_forest/iforest
49- integer sprop(-max_branch:-1,lmaxconfigs)
50+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
51 integer tprid(-max_branch:-1,lmaxconfigs)
52 common/to_sprop/sprop,tprid
53 C $E$ IFOREST $E$ !this is a tag for MadWeight
54@@ -253,7 +254,7 @@
55 icmp(2)=ishft(1,nexternal)-1-icmp(1)
56 c Set pdg code for propagator
57 do l=1,2
58- ipdgcl(icmp(l),ignum)=sprop(k,ignum)
59+ ipdgcl(icmp(l),ignum)=sprop(1,k,ignum)
60 if(ipdgcl(icmp(l),ignum).eq.0)
61 $ ipdgcl(icmp(l),ignum)=tprid(k,ignum)
62 c write(*,*) 'add table entry for (',ipids(i,1,ipnum),
63
64=== modified file 'Template/SubProcesses/genps.f'
65--- Template/SubProcesses/genps.f 2011-05-29 07:23:58 +0000
66+++ Template/SubProcesses/genps.f 2011-09-01 14:57:19 +0000
67@@ -85,6 +85,7 @@
68 include 'genps.inc'
69 include 'maxconfigs.inc'
70 include 'nexternal.inc'
71+ include 'maxamps.inc'
72 double precision pi
73 parameter (pi=3.1415926d0)
74 c
75@@ -107,7 +108,7 @@
76 double precision tprb, mtot
77 double precision stot, xtau, dum
78
79- integer sprop(-max_branch:-1,lmaxconfigs)
80+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
81 integer tprid(-max_branch:-1,lmaxconfigs)
82 common/to_sprop/sprop,tprid
83 integer lwgt(0:maxconfigs,maxinvar)
84
85=== modified file 'Template/SubProcesses/myamp.f'
86--- Template/SubProcesses/myamp.f 2011-08-25 15:57:21 +0000
87+++ Template/SubProcesses/myamp.f 2011-09-01 14:57:19 +0000
88@@ -126,7 +126,7 @@
89 include 'maxamps.inc'
90 integer iforest(2,-max_branch:-1,lmaxconfigs)
91 common/to_forest/ iforest
92- integer sprop(-max_branch:-1,lmaxconfigs)
93+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
94 integer tprid(-max_branch:-1,lmaxconfigs)
95 common/to_sprop/sprop,tprid
96 integer mapconfig(0:lmaxconfigs), this_config
97@@ -215,10 +215,10 @@
98 do j=1,2
99 ida(j)=iforest(j,i,iconfig)
100 if(ida(j).lt.0) then
101- if(sprop(i,iconfig).eq.sprop(ida(j),iconfig))
102+ if(sprop(1,i,iconfig).eq.sprop(1,ida(j),iconfig))
103 $ idenpart=ida(j)
104 elseif (ida(j).gt.0) then
105- if(sprop(i,iconfig).eq.IDUP(ida(j),1,1))
106+ if(sprop(1,i,iconfig).eq.IDUP(ida(j),1,1))
107 $ idenpart=ida(j)
108 endif
109 enddo
110@@ -313,7 +313,7 @@
111 integer iforest(2,-max_branch:-1,lmaxconfigs)
112 common/to_forest/ iforest
113
114- integer sprop(-max_branch:-1,lmaxconfigs)
115+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
116 integer tprid(-max_branch:-1,lmaxconfigs)
117 common/to_sprop/sprop,tprid
118
119@@ -381,26 +381,26 @@
120 c JA 3/31/11 Keep track of identical particles (i.e., radiation vertices)
121 c by tracing the particle identity from the external particle.
122 if(iforest(1,i,iconfig).gt.0) then
123- if (sprop(i,iconfig).eq.idup(iforest(1,i,iconfig),1,1))
124- $ iden_part(i) = sprop(i,iconfig)
125+ if (sprop(1,i,iconfig).eq.idup(iforest(1,i,iconfig),1,1))
126+ $ iden_part(i) = sprop(1,i,iconfig)
127 endif
128 if(iforest(2,i,iconfig).gt.0) then
129- if(sprop(i,iconfig).eq.idup(iforest(2,i,iconfig),1,1))
130- $ iden_part(i) = sprop(i,iconfig)
131+ if(sprop(1,i,iconfig).eq.idup(iforest(2,i,iconfig),1,1))
132+ $ iden_part(i) = sprop(1,i,iconfig)
133 endif
134 if(iforest(1,i,iconfig).lt.0) then
135 if((iden_part(iforest(1,i,iconfig)).ne.0.and.
136- $ sprop(i,iconfig).eq.iden_part(iforest(1,i,iconfig)) .or.
137+ $ sprop(1,i,iconfig).eq.iden_part(iforest(1,i,iconfig)) .or.
138 $ gforcebw(iforest(1,i,iconfig),iconfig).and.
139- $ sprop(i,iconfig).eq.sprop(iforest(1,i,iconfig),iconfig)))
140- $ iden_part(i) = sprop(i,iconfig)
141+ $ sprop(1,i,iconfig).eq.sprop(1,iforest(1,i,iconfig),iconfig)))
142+ $ iden_part(i) = sprop(1,i,iconfig)
143 endif
144 if(iforest(2,i,iconfig).lt.0) then
145 if((iden_part(iforest(2,i,iconfig)).ne.0.and.
146- $ sprop(i,iconfig).eq.iden_part(iforest(2,i,iconfig)).or.
147+ $ sprop(1,i,iconfig).eq.iden_part(iforest(2,i,iconfig)).or.
148 $ gforcebw(iforest(2,i,iconfig),iconfig).and.
149- $ sprop(i,iconfig).eq.sprop(iforest(2,i,iconfig),iconfig)))
150- $ iden_part(i) = sprop(i,iconfig)
151+ $ sprop(1,i,iconfig).eq.sprop(1,iforest(2,i,iconfig),iconfig)))
152+ $ iden_part(i) = sprop(1,i,iconfig)
153 endif
154 if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0
155 if (tsgn .eq. 1d0) then !s channel
156
157=== modified file 'Template/SubProcesses/reweight.f'
158--- Template/SubProcesses/reweight.f 2011-05-10 22:00:41 +0000
159+++ Template/SubProcesses/reweight.f 2011-09-01 14:57:19 +0000
160@@ -641,7 +641,7 @@
161
162 integer mapconfig(0:lmaxconfigs), this_config
163 integer iforest(2,-max_branch:-1,lmaxconfigs)
164- integer sprop(-max_branch:-1,lmaxconfigs)
165+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
166 integer tprid(-max_branch:-1,lmaxconfigs)
167 include 'configs.inc'
168 real*8 xptj,xptb,xpta,xptl,xmtc
169
170=== modified file 'Template/SubProcesses/setcuts.f'
171--- Template/SubProcesses/setcuts.f 2011-06-01 21:40:33 +0000
172+++ Template/SubProcesses/setcuts.f 2011-09-01 14:57:19 +0000
173@@ -553,6 +553,7 @@
174 include 'nexternal.inc'
175 include 'maxconfigs.inc'
176 include 'genps.inc'
177+ include 'maxamps.inc'
178 c
179 c Arguments
180 c
181@@ -562,7 +563,7 @@
182 c
183 integer iforest(2,-max_branch:-1,lmaxconfigs)
184 common/to_forest/ iforest
185- integer sprop(-max_branch:-1,lmaxconfigs)
186+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
187 integer tprid(-max_branch:-1,lmaxconfigs)
188 common/to_sprop/sprop,tprid
189 logical gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW
190
191=== modified file 'Template/SubProcesses/symmetry.f'
192--- Template/SubProcesses/symmetry.f 2011-08-07 19:55:37 +0000
193+++ Template/SubProcesses/symmetry.f 2011-09-01 14:57:19 +0000
194@@ -10,6 +10,7 @@
195 include 'genps.inc'
196 include 'maxconfigs.inc'
197 include '../../Source/run_config.inc'
198+ include 'maxamps.inc'
199
200 double precision ZERO
201 parameter (ZERO = 0d0)
202@@ -36,7 +37,7 @@
203 c DATA
204 c
205 integer iforest(2,-max_branch:-1,lmaxconfigs)
206- integer sprop(-max_branch:-1,lmaxconfigs)
207+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
208 integer tprid(-max_branch:-1,lmaxconfigs)
209 include 'configs.inc'
210 data use_config/0,lmaxconfigs*0/
211@@ -210,6 +211,7 @@
212 include 'maxconfigs.inc'
213 include 'nexternal.inc'
214 include '../../Source/run_config.inc'
215+ include 'maxamps.inc'
216 integer imax, ibase
217 parameter (imax=max_branch-1, ibase=3)
218 c
219@@ -218,7 +220,7 @@
220 integer mapconfig(0:lmaxconfigs),use_config(0:lmaxconfigs)
221 double precision pwidth(-max_branch:-1,lmaxconfigs) !Propagotor width
222 integer iforest(2,-max_branch:-1,lmaxconfigs)
223- integer sprop(-max_branch:-1,lmaxconfigs)
224+ integer sprop(maxsproc,-max_branch:-1,lmaxconfigs)
225 integer jcomp
226
227 c
228@@ -244,7 +246,7 @@
229 do i=1,mapconfig(0)
230 if (use_config(i) .gt. 0) then
231 call bw_conflict(i,iforest(1,-max_branch,i),lconflict,
232- $ sprop(-max_branch,i), gForceBW(-max_branch,i))
233+ $ sprop(1,-max_branch,i), gForceBW(-max_branch,i))
234 nbw=0 !Look for B.W. resonances
235 if (jcomp .eq. 0 .or. jcomp .eq. 1 .or. .true.) then
236 do j=1,imax
237@@ -253,7 +255,7 @@
238 do j=1,nexternal-3
239 c write(*,*) 'Width',pwidth(-j,i),j,i
240 nbw=nbw+1
241- if (pwidth(-j,i) .gt. 1d-20 .and. sprop(-j,i).ne.0) then
242+ if (pwidth(-j,i) .gt. 1d-20 .and. sprop(1,-j,i).ne.0) then
243 write(*,*) 'Got bw',-nbw,j
244 c JA 4/8/11 don't treat forced BW differently
245 if(lconflict(-j)) then
246@@ -309,7 +311,7 @@
247 c same thing as above for the bash file
248 c
249 call bw_conflict(i,iforest(1,-max_branch,i),lconflict,
250- $ sprop(-max_branch,i), gForceBW(-max_branch,i))
251+ $ sprop(1,-max_branch,i), gForceBW(-max_branch,i))
252 nbw=0 !Look for B.W. resonances
253 if (jcomp .eq. 0 .or. jcomp .eq. 1 .or. .true.) then
254 do j=1,imax
255@@ -317,7 +319,7 @@
256 enddo
257 do j=1,nexternal-3
258 nbw=nbw+1
259- if (pwidth(-j,i) .gt. 1d-20 .and. sprop(-j,i).ne.0) then
260+ if (pwidth(-j,i) .gt. 1d-20 .and. sprop(1,-j,i).ne.0) then
261 write(*,*) 'Got bw',nbw,j
262 c JA 4/8/11 don't treat forced BW differently
263 if(lconflict(-j)) then
264@@ -360,6 +362,7 @@
265 c
266 include 'genps.inc'
267 include 'maxconfigs.inc'
268+ include 'maxamps.inc'
269 include 'nexternal.inc'
270 double precision zero
271 parameter (zero=0d0)
272@@ -369,7 +372,7 @@
273 c
274 integer itree(2,-max_branch:-1),iconfig
275 logical lconflict(-max_branch:nexternal)
276- integer sprop(-max_branch:-1) ! Propagator id
277+ integer sprop(maxsproc,-max_branch:-1) ! Propagator id
278 logical forcebw(-max_branch:-1) ! Forced BW, for identical particle conflicts
279 c
280 c local
281@@ -380,7 +383,6 @@
282 double precision pmass(-max_branch:-1,lmaxconfigs) !Propagator mass
283 double precision pow(-max_branch:-1,lmaxconfigs) !Not used, in props.inc
284 double precision xmass(-max_branch:nexternal)
285- include 'maxamps.inc'
286 integer idup(nexternal,maxproc,maxsproc)
287 integer mothup(2,nexternal)
288 integer icolup(2,nexternal,maxflow,maxsproc)
289@@ -416,26 +418,26 @@
290 c JA 3/31/11 Keep track of identical particles (i.e., radiation vertices)
291 c by tracing the particle identity from the external particle.
292 if(itree(1,-i).gt.0) then
293- if(sprop(-i).eq.idup(itree(1,-i),1,1))
294- $ iden_part(-i) = sprop(-i)
295+ if(sprop(1,-i).eq.idup(itree(1,-i),1,1))
296+ $ iden_part(-i) = sprop(1,-i)
297 endif
298 if(itree(2,-i).gt.0) then
299- if(sprop(-i).eq.idup(itree(2,-i),1,1))
300- $ iden_part(-i) = sprop(-i)
301+ if(sprop(1,-i).eq.idup(itree(2,-i),1,1))
302+ $ iden_part(-i) = sprop(1,-i)
303 endif
304 if(itree(1,-i).lt.0) then
305 if(iden_part(itree(1,-i)).ne.0.and.
306- $ sprop(-i).eq.iden_part(itree(1,-i)) .or.
307+ $ sprop(1,-i).eq.iden_part(itree(1,-i)) .or.
308 $ forcebw(itree(1,-i)).and.
309- $ sprop(-i).eq.sprop(itree(1,-i)))
310- $ iden_part(-i) = sprop(-i)
311+ $ sprop(1,-i).eq.sprop(1,itree(1,-i)))
312+ $ iden_part(-i) = sprop(1,-i)
313 endif
314 if(itree(2,-i).lt.0) then
315 if(iden_part(itree(2,-i)).ne.0.and.
316- $ sprop(-i).eq.iden_part(itree(2,-i)).or.
317+ $ sprop(1,-i).eq.iden_part(itree(2,-i)).or.
318 $ forcebw(itree(2,-i)).and.
319- $ sprop(-i).eq.sprop(itree(2,-i)))
320- $ iden_part(-i) = sprop(-i)
321+ $ sprop(1,-i).eq.sprop(1,itree(2,-i)))
322+ $ iden_part(-i) = sprop(1,-i)
323 endif
324 if (xmass(-i) .gt. pmass(-i,iconfig) .and.
325 $ iden_part(-i).eq.0) then !Can't be on shell, and not radiation
326
327=== modified file 'Template/SubProcesses/unwgt.f'
328--- Template/SubProcesses/unwgt.f 2011-08-19 00:06:00 +0000
329+++ Template/SubProcesses/unwgt.f 2011-09-01 14:57:19 +0000
330@@ -462,23 +462,6 @@
331 endif
332
333 c
334-c Now choose a color flow
335-c
336- nc = jamp2(0)
337-c ncols=jamp2(0)
338- if(nc.gt.0)then
339- targetamp(1)=jamp2(1)
340- do ic =2,nc
341- targetamp(ic) = jamp2(ic)+targetamp(ic-1)
342- enddo
343- xtarget=ran1(iseed)*targetamp(nc)
344- ic = 1
345- do while (targetamp(ic) .lt. xtarget .and. ic .lt. nc)
346- ic=ic+1
347- enddo
348-c ncolflow(ic)=ncolflow(ic)+1
349- endif
350-c
351 c In case of identical particles symmetry, choose assignment
352 c
353 xtarget = ran1(iseed)*nsym
354@@ -493,8 +476,6 @@
355 jpart(1,isym(i,jsym)) = idup(i,ip,numproc)
356 jpart(2,isym(i,jsym)) = mothup(1,i)
357 jpart(3,isym(i,jsym)) = mothup(2,i)
358- jpart(4,isym(i,jsym)) = icolup(1,i,ic,numproc)
359- jpart(5,isym(i,jsym)) = icolup(2,i,ic,numproc)
360 jpart(6,isym(i,jsym)) = 1
361 enddo
362 do i=1,nincoming
363
364=== modified file 'UpdateNotes.txt'
365--- UpdateNotes.txt 2011-08-26 14:39:45 +0000
366+++ UpdateNotes.txt 2011-09-01 14:57:19 +0000
367@@ -1,5 +1,16 @@
368 Update notes for MadGraph 5 (in reverse time order)
369
370+1.3.12 (01/09/11) JA: Fixed problem with decay chains when different decays
371+ result in identical final states, such as
372+ p p > go go, (go > b1/b1~ b/b~, b1/b1~ > b/b~ n1)
373+ (only one of the decay chains was chosen, instead of
374+ all 3 combinations (b1,b1), (b1,b1~), (b1~,b1~))
375+ JA: Allow for overall orders also with grouped subprocesses
376+ JA: Ensure that only leading color flows are included in event
377+ output (so no singlet flows from color octets).
378+ JA: Fixed small bug in fermion flow determination for multifermion
379+ vertices.
380+
381 1.3.11 (26/08/11) JA: Improved precision of "survey" by allowing 4th and 5th
382 iteration if accuracy after 3 iterations < 10%.
383 JA: Subdivide BW in phase space integration for conflicting BWs
384
385=== modified file 'madgraph/VERSION'
386--- madgraph/VERSION 2011-08-26 14:39:45 +0000
387+++ madgraph/VERSION 2011-09-01 14:57:19 +0000
388@@ -1,3 +1,3 @@
389-version = 1.3.11
390-date = 2011-08-26
391+version = 1.3.12
392+date = 2011-08-27
393
394
395=== modified file 'madgraph/core/base_objects.py'
396--- madgraph/core/base_objects.py 2011-07-22 20:03:49 +0000
397+++ madgraph/core/base_objects.py 2011-09-01 14:57:19 +0000
398@@ -1864,11 +1864,16 @@
399 self.get('legs'))[0].get('id')
400
401 def get_final_legs(self):
402- """Gives the pdg codes for initial state particles"""
403+ """Gives the final state legs"""
404
405 return filter(lambda leg: leg.get('state') == True,
406 self.get('legs'))
407
408+ def get_final_ids(self):
409+ """Gives the pdg codes for final state particles"""
410+
411+ return [l.get('id') for l in self.get_final_legs()]
412+
413 def get_legs_with_decays(self):
414 """Return process with all decay chains substituted in."""
415
416@@ -1889,41 +1894,29 @@
417
418 return LegList(legs)
419
420+ def list_for_sort(self):
421+ """Output a list that can be compared to other processes as:
422+ [id, sorted(initial leg ids), sorted(final leg ids),
423+ sorted(decay list_for_sorts)]"""
424+
425+ sorted_list = [self.get('id'),
426+ sorted(self.get_initial_ids()),
427+ sorted(self.get_final_ids())]
428+
429+ if self.get('decay_chains'):
430+ sorted_list.extend(sorted([d.list_for_sort() for d in \
431+ self.get('decay_chains')]))
432+
433+ return sorted_list
434+
435 def compare_for_sort(self, other):
436 """Sorting routine which allows to sort processes for
437 comparison. Compare only process id and legs."""
438
439- if self['id'] != other['id']:
440- return self['id'] - other['id']
441-
442- initlegs = sorted([l.get('id') for l in \
443- filter(lambda leg: not leg.get('state'),
444- self['legs'])])
445- otherinitlegs = sorted([l.get('id') for l in \
446- filter(lambda leg: not leg.get('state'),
447- self['legs'])])
448-
449- if len(initlegs) != len(otherinitlegs):
450- return len(initlegs) - len(otherinitlegs)
451-
452- for leg, otherleg in zip(initlegs, otherinitlegs):
453- if leg != otherleg:
454- return leg - otherleg
455-
456- legs = sorted([l.get('id') for l in \
457- filter(lambda leg: leg.get('state'),
458- self.get_legs_with_decays())])
459- otherlegs = sorted([l.get('id') for l in \
460- filter(lambda leg: leg.get('state'),
461- other.get_legs_with_decays())])
462-
463- if len(legs) != len(otherlegs):
464- return len(legs) - len(otherlegs)
465-
466- for leg, otherleg in zip(legs, otherlegs):
467- if leg != otherleg:
468- return leg - otherleg
469-
470+ if self.list_for_sort() > other.list_for_sort():
471+ return 1
472+ if self.list_for_sort() < other.list_for_sort():
473+ return -1
474 return 0
475
476 def identical_particle_factor(self):
477
478=== modified file 'madgraph/core/helas_objects.py'
479--- madgraph/core/helas_objects.py 2011-06-01 21:18:40 +0000
480+++ madgraph/core/helas_objects.py 2011-09-01 14:57:19 +0000
481@@ -32,6 +32,8 @@
482 import madgraph.core.color_amp as color_amp
483 import madgraph.core.color_algebra as color
484
485+from madgraph import MadGraph5Error
486+
487 #===============================================================================
488 #
489 #===============================================================================
490@@ -1304,6 +1306,8 @@
491 wf_number,
492 force_flip_flow,
493 number_to_wavefunctions)
494+ # Already ran for all clashes, abort loop
495+ break
496
497 return wf_number
498
499@@ -3736,6 +3740,7 @@
500 decay_chain = dc_amplitude.get('decay_chains').pop(0)
501 self['decay_chains'].append(HelasDecayChainProcess(\
502 decay_chain))
503+
504
505 def combine_decay_chain_processes(self):
506 """Recursive function to generate complete
507@@ -4125,6 +4130,10 @@
508 matrix_element.set('color_matrix',
509 list_color_matrices[col_index])
510
511+ if not matrix_elements:
512+ raise MadGraph5Error, \
513+ "No matrix elements generated, check overall coupling orders"
514+
515 return matrix_elements
516
517 @staticmethod
518
519=== modified file 'madgraph/interface/cmd_interface.py'
520--- madgraph/interface/cmd_interface.py 2011-07-09 15:50:23 +0000
521+++ madgraph/interface/cmd_interface.py 2011-09-01 14:57:19 +0000
522@@ -2039,14 +2039,6 @@
523 required_schannel_ids = [required_schannel_ids]
524
525
526- #decay_process = len(filter(lambda leg: \
527- # leg.get('state') == False,
528- # myleglist)) == 1
529-
530- if overall_orders and self._options['group_subprocesses']:
531- raise MadGraph5Error, \
532- "For grouped subprocess output, orders should be specified for each process (no overall orders after @N)"
533-
534 return \
535 base_objects.ProcessDefinition({'legs': myleglist,
536 'model': self._curr_model,
537
538=== modified file 'madgraph/iolibs/export_v4.py'
539--- madgraph/iolibs/export_v4.py 2011-07-18 16:03:16 +0000
540+++ madgraph/iolibs/export_v4.py 2011-09-01 14:57:19 +0000
541@@ -445,15 +445,22 @@
542 # There is a color basis - create a list showing which JAMPs have
543 # contributions to which configs
544
545+ # Only want to include leading color flows, so find max_Nc
546+ color_basis = matrix_element.get('color_basis')
547+ max_Nc = max(sum([[v[4] for v in val] for val in color_basis.values()],
548+ []))
549+
550 # Crate dictionary between diagram number and JAMP number
551 diag_jamp = {}
552 for ijamp, col_basis_elem in \
553 enumerate(sorted(matrix_element.get('color_basis').keys())):
554 for diag_tuple in matrix_element.get('color_basis')[col_basis_elem]:
555- diag_num = diag_tuple[0] + 1
556- # Add this JAMP number to this diag_num
557- diag_jamp[diag_num] = diag_jamp.setdefault(diag_num, []) + \
558- [ijamp+1]
559+ # Only use color flows with Nc == max_Nc
560+ if diag_tuple[4] == max_Nc:
561+ diag_num = diag_tuple[0] + 1
562+ # Add this JAMP number to this diag_num
563+ diag_jamp[diag_num] = diag_jamp.setdefault(diag_num, []) + \
564+ [ijamp+1]
565
566 colamps = ijamp + 1
567
568@@ -1455,7 +1462,7 @@
569 configs = [(i+1, d) for i,d in enumerate(matrix_element.get('diagrams'))]
570 mapconfigs = [c[0] for c in configs]
571 return mapconfigs, self.write_configs_file_from_diagrams(writer,
572- [c[1] for c in configs],
573+ [[c[1]] for c in configs],
574 mapconfigs,
575 nexternal, ninitial)
576
577@@ -1465,31 +1472,65 @@
578 def write_configs_file_from_diagrams(self, writer, configs, mapconfigs,
579 nexternal, ninitial):
580 """Write the actual configs.inc file.
581- configs is the diagrams corresponding to configs,
582- mapconfigs gives the diagram number for each config."""
583+
584+ configs is the diagrams corresponding to configs (each
585+ diagrams is a list of corresponding diagrams for all
586+ subprocesses, with None if there is no corresponding diagrams
587+ for a given process).
588+ mapconfigs gives the diagram number for each config.
589+
590+ For s-channels, we need to output one PDG for each subprocess in
591+ the subprocess group, in order to be able to pick the right
592+ one for multiprocesses."""
593
594 lines = []
595
596 s_and_t_channels = []
597
598- minvert = min([max(diag.get_vertex_leg_numbers()) for diag in configs])
599+ minvert = min([max([d for d in config if d][0].get_vertex_leg_numbers()) \
600+ for config in configs])
601+
602+ # Number of subprocesses
603+ nsubprocs = len(configs[0])
604
605 nconfigs = 0
606
607- for iconfig, helas_diag in enumerate(configs):
608+ for iconfig, helas_diags in enumerate(configs):
609 if any([vert > minvert for vert in
610- helas_diag.get_vertex_leg_numbers()]):
611+ [d for d in helas_diags if d][0].get_vertex_leg_numbers()]):
612 # Only 3-vertices allowed in configs.inc
613 continue
614 nconfigs += 1
615
616- # Need to reorganize the topology so that we start with all
617- # final state external particles and work our way inwards
618-
619- schannels, tchannels = helas_diag.get('amplitudes')[0].\
620- get_s_and_t_channels(ninitial)
621-
622- s_and_t_channels.append([schannels, tchannels])
623+ # Need s- and t-channels for all subprocesses, including
624+ # those that don't contribute to this config
625+ empty_verts = []
626+ stchannels = []
627+ for h in helas_diags:
628+ if h:
629+ # get_s_and_t_channels gives vertices starting from
630+ # final state external particles and working inwards
631+ stchannels.append(h.get('amplitudes')[0].\
632+ get_s_and_t_channels(ninitial))
633+ else:
634+ stchannels.append((empty_verts, None))
635+
636+ # For t-channels, just need the first non-empty one
637+ tchannels = [t for s,t in stchannels if t != None][0]
638+
639+ # For s_and_t_channels (to be used later) use only first config
640+ s_and_t_channels.append([[s for s,t in stchannels if t != None][0],
641+ tchannels])
642+
643+ # Make sure empty_verts is same length as real vertices
644+ if any([s for s,t in stchannels]):
645+ empty_verts[:] = [None]*max([len(s) for s,t in stchannels])
646+
647+ # Reorganize s-channel vertices to get a list of all
648+ # subprocesses for each vertex
649+ schannels = zip(*[s for s,t in stchannels])
650+ else:
651+ schannels = []
652
653 allchannels = schannels
654 if len(tchannels) > 1:
655@@ -1503,24 +1544,35 @@
656 lines.append("data mapconfig(%d)/%d/" % (nconfigs,
657 mapconfigs[iconfig]))
658
659- for vert in allchannels:
660+ for verts in allchannels:
661+ if verts in schannels:
662+ vert = [v for v in verts if v][0]
663+ else:
664+ vert = verts
665 daughters = [leg.get('number') for leg in vert.get('legs')[:-1]]
666 last_leg = vert.get('legs')[-1]
667 lines.append("data (iforest(i,%d,%d),i=1,%d)/%s/" % \
668 (last_leg.get('number'), nconfigs, len(daughters),
669 ",".join([str(d) for d in daughters])))
670- if vert in schannels:
671- lines.append("data sprop(%d,%d)/%d/" % \
672- (last_leg.get('number'), nconfigs,
673- last_leg.get('id')))
674+ if verts in schannels:
675+ pdgs = []
676+ for v in verts:
677+ if v:
678+ pdgs.append(v.get('legs')[-1].get('id'))
679+ else:
680+ pdgs.append(0)
681+ lines.append("data (sprop(i,%d,%d),i=1,%d)/%s/" % \
682+ (last_leg.get('number'), nconfigs, nsubprocs,
683+ ",".join([str(d) for d in pdgs])))
684 lines.append("data tprid(%d,%d)/0/" % \
685 (last_leg.get('number'), nconfigs))
686- elif vert in tchannels[:-1]:
687+ elif verts in tchannels[:-1]:
688 lines.append("data tprid(%d,%d)/%d/" % \
689 (last_leg.get('number'), nconfigs,
690 abs(last_leg.get('id'))))
691- lines.append("data sprop(%d,%d)/0/" % \
692- (last_leg.get('number'), nconfigs))
693+ lines.append("data (sprop(i,%d,%d),i=1,%d)/%s/" % \
694+ (last_leg.get('number'), nconfigs, nsubprocs,
695+ ",".join(['0'] * nsubprocs)))
696
697 # Write out number of configs
698 lines.append("# Number of configs")
699@@ -2223,7 +2275,8 @@
700 matrix_elements):
701 """Write the coloramps.inc file for MadEvent in Subprocess group mode"""
702
703- # Create a map from subprocess (matrix element) to a list of the diagrams corresponding to each config
704+ # Create a map from subprocess (matrix element) to a list of
705+ # the diagrams corresponding to each config
706
707 lines = []
708
709@@ -2287,9 +2340,14 @@
710 # Check if any diagrams correspond to this config
711 if set(config) == set([0]):
712 continue
713- subproc, diag = [(i,d - 1) for (i,d) in enumerate(config) \
714- if d > 0][0]
715- diagrams.append(matrix_elements[subproc].get('diagrams')[diag])
716+ subproc_diags = []
717+ for s,d in enumerate(config):
718+ if d:
719+ subproc_diags.append(matrix_elements[s].\
720+ get('diagrams')[d-1])
721+ else:
722+ subproc_diags.append(None)
723+ diagrams.append(subproc_diags)
724 config_numbers.append(iconfig + 1)
725
726 # Extract number of external particles
727
728=== modified file 'madgraph/iolibs/group_subprocs.py'
729--- madgraph/iolibs/group_subprocs.py 2011-06-01 21:18:40 +0000
730+++ madgraph/iolibs/group_subprocs.py 2011-09-01 14:57:19 +0000
731@@ -556,7 +556,11 @@
732 for a in g.get('amplitudes')] \
733 for g in group.get('core_groups')])]
734
735- assert len(decay_group) == 1
736+ assert len(decay_group) > 0
737+
738+ for i in range(1,len(decay_group)):
739+ assert decay_group[i-1][1] == decay_group[i][1]
740+
741 decay_group = decay_group[0]
742
743 group_assignment = \
744
745=== modified file 'tests/unit_tests/iolibs/test_export_v4.py'
746--- tests/unit_tests/iolibs/test_export_v4.py 2011-07-22 12:29:10 +0000
747+++ tests/unit_tests/iolibs/test_export_v4.py 2011-09-01 14:57:19 +0000
748@@ -619,41 +619,40 @@
749 goal_configs = """C Diagram 1
750 DATA MAPCONFIG(1)/1/
751 DATA (IFOREST(I,-1,1),I=1,2)/4,3/
752- DATA SPROP(-1,1)/21/
753+ DATA (SPROP(I,-1,1),I=1,2)/21,21/
754 DATA TPRID(-1,1)/0/
755 C Diagram 2
756 DATA MAPCONFIG(2)/2/
757 DATA (IFOREST(I,-1,2),I=1,2)/4,3/
758- DATA SPROP(-1,2)/22/
759+ DATA (SPROP(I,-1,2),I=1,2)/22,22/
760 DATA TPRID(-1,2)/0/
761 C Diagram 3
762 DATA MAPCONFIG(3)/3/
763 DATA (IFOREST(I,-1,3),I=1,2)/4,3/
764- DATA SPROP(-1,3)/23/
765+ DATA (SPROP(I,-1,3),I=1,2)/23,23/
766 DATA TPRID(-1,3)/0/
767 C Diagram 4
768 DATA MAPCONFIG(4)/4/
769 DATA (IFOREST(I,-1,4),I=1,2)/1,3/
770 DATA TPRID(-1,4)/21/
771- DATA SPROP(-1,4)/0/
772+ DATA (SPROP(I,-1,4),I=1,2)/0,0/
773 DATA (IFOREST(I,-2,4),I=1,2)/-1,4/
774 C Diagram 5
775 DATA MAPCONFIG(5)/5/
776 DATA (IFOREST(I,-1,5),I=1,2)/1,3/
777 DATA TPRID(-1,5)/22/
778- DATA SPROP(-1,5)/0/
779+ DATA (SPROP(I,-1,5),I=1,2)/0,0/
780 DATA (IFOREST(I,-2,5),I=1,2)/-1,4/
781 C Diagram 6
782 DATA MAPCONFIG(6)/6/
783 DATA (IFOREST(I,-1,6),I=1,2)/1,3/
784 DATA TPRID(-1,6)/23/
785- DATA SPROP(-1,6)/0/
786+ DATA (SPROP(I,-1,6),I=1,2)/0,0/
787 DATA (IFOREST(I,-2,6),I=1,2)/-1,4/
788 C Number of configs
789 DATA MAPCONFIG(0)/6/
790 """
791 #print open(self.give_pos('test')).read()
792-
793 self.assertFileContains('test', goal_configs)
794
795 # Test config_subproc_map.inc
796@@ -682,15 +681,16 @@
797 matrix_elements)
798
799 #print open(self.give_pos('test')).read()
800+
801 self.assertFileContains('test',
802 """ LOGICAL ICOLAMP(2,6,2)
803- DATA(ICOLAMP(I,1,1),I=1,2)/.TRUE.,.TRUE./
804+ DATA(ICOLAMP(I,1,1),I=1,2)/.FALSE.,.TRUE./
805 DATA(ICOLAMP(I,2,1),I=1,2)/.TRUE.,.FALSE./
806 DATA(ICOLAMP(I,3,1),I=1,2)/.TRUE.,.FALSE./
807- DATA(ICOLAMP(I,4,1),I=1,2)/.TRUE.,.TRUE./
808+ DATA(ICOLAMP(I,4,1),I=1,2)/.TRUE.,.FALSE./
809 DATA(ICOLAMP(I,5,1),I=1,2)/.FALSE.,.TRUE./
810 DATA(ICOLAMP(I,6,1),I=1,2)/.FALSE.,.TRUE./
811- DATA(ICOLAMP(I,1,2),I=1,2)/.TRUE.,.TRUE./
812+ DATA(ICOLAMP(I,1,2),I=1,2)/.FALSE.,.TRUE./
813 DATA(ICOLAMP(I,2,2),I=1,2)/.TRUE.,.FALSE./
814 DATA(ICOLAMP(I,3,2),I=1,2)/.TRUE.,.FALSE./
815 """)
816@@ -1749,151 +1749,150 @@
817 subprocess_group.get('diagrams_for_configs'))
818
819 #print open(self.give_pos('test')).read()
820-
821 self.assertFileContains('test',
822 """C Diagram 1
823 DATA MAPCONFIG(1)/1/
824 DATA (IFOREST(I,-1,1),I=1,2)/8,6/
825- DATA SPROP(-1,1)/1/
826+ DATA (SPROP(I,-1,1),I=1,2)/1,1/
827 DATA TPRID(-1,1)/0/
828 DATA (IFOREST(I,-2,1),I=1,2)/7,-1/
829- DATA SPROP(-2,1)/23/
830+ DATA (SPROP(I,-2,1),I=1,2)/23,23/
831 DATA TPRID(-2,1)/0/
832 DATA (IFOREST(I,-3,1),I=1,2)/5,3/
833- DATA SPROP(-3,1)/1/
834+ DATA (SPROP(I,-3,1),I=1,2)/1,1/
835 DATA TPRID(-3,1)/0/
836 DATA (IFOREST(I,-4,1),I=1,2)/4,-3/
837- DATA SPROP(-4,1)/23/
838+ DATA (SPROP(I,-4,1),I=1,2)/23,23/
839 DATA TPRID(-4,1)/0/
840 DATA (IFOREST(I,-5,1),I=1,2)/1,-4/
841 DATA TPRID(-5,1)/2/
842- DATA SPROP(-5,1)/0/
843+ DATA (SPROP(I,-5,1),I=1,2)/0,0/
844 DATA (IFOREST(I,-6,1),I=1,2)/-5,-2/
845 C Diagram 2
846 DATA MAPCONFIG(2)/2/
847 DATA (IFOREST(I,-1,2),I=1,2)/8,7/
848- DATA SPROP(-1,2)/-1/
849+ DATA (SPROP(I,-1,2),I=1,2)/-1,-1/
850 DATA TPRID(-1,2)/0/
851 DATA (IFOREST(I,-2,2),I=1,2)/-1,6/
852- DATA SPROP(-2,2)/23/
853+ DATA (SPROP(I,-2,2),I=1,2)/23,23/
854 DATA TPRID(-2,2)/0/
855 DATA (IFOREST(I,-3,2),I=1,2)/5,3/
856- DATA SPROP(-3,2)/1/
857+ DATA (SPROP(I,-3,2),I=1,2)/1,1/
858 DATA TPRID(-3,2)/0/
859 DATA (IFOREST(I,-4,2),I=1,2)/4,-3/
860- DATA SPROP(-4,2)/23/
861+ DATA (SPROP(I,-4,2),I=1,2)/23,23/
862 DATA TPRID(-4,2)/0/
863 DATA (IFOREST(I,-5,2),I=1,2)/1,-4/
864 DATA TPRID(-5,2)/2/
865- DATA SPROP(-5,2)/0/
866+ DATA (SPROP(I,-5,2),I=1,2)/0,0/
867 DATA (IFOREST(I,-6,2),I=1,2)/-5,-2/
868 C Diagram 3
869 DATA MAPCONFIG(3)/3/
870 DATA (IFOREST(I,-1,3),I=1,2)/8,6/
871- DATA SPROP(-1,3)/1/
872+ DATA (SPROP(I,-1,3),I=1,2)/1,1/
873 DATA TPRID(-1,3)/0/
874 DATA (IFOREST(I,-2,3),I=1,2)/7,-1/
875- DATA SPROP(-2,3)/23/
876+ DATA (SPROP(I,-2,3),I=1,2)/23,23/
877 DATA TPRID(-2,3)/0/
878 DATA (IFOREST(I,-3,3),I=1,2)/5,4/
879- DATA SPROP(-3,3)/-1/
880+ DATA (SPROP(I,-3,3),I=1,2)/-1,-1/
881 DATA TPRID(-3,3)/0/
882 DATA (IFOREST(I,-4,3),I=1,2)/-3,3/
883- DATA SPROP(-4,3)/23/
884+ DATA (SPROP(I,-4,3),I=1,2)/23,23/
885 DATA TPRID(-4,3)/0/
886 DATA (IFOREST(I,-5,3),I=1,2)/1,-4/
887 DATA TPRID(-5,3)/2/
888- DATA SPROP(-5,3)/0/
889+ DATA (SPROP(I,-5,3),I=1,2)/0,0/
890 DATA (IFOREST(I,-6,3),I=1,2)/-5,-2/
891 C Diagram 4
892 DATA MAPCONFIG(4)/4/
893 DATA (IFOREST(I,-1,4),I=1,2)/8,7/
894- DATA SPROP(-1,4)/-1/
895+ DATA (SPROP(I,-1,4),I=1,2)/-1,-1/
896 DATA TPRID(-1,4)/0/
897 DATA (IFOREST(I,-2,4),I=1,2)/-1,6/
898- DATA SPROP(-2,4)/23/
899+ DATA (SPROP(I,-2,4),I=1,2)/23,23/
900 DATA TPRID(-2,4)/0/
901 DATA (IFOREST(I,-3,4),I=1,2)/5,4/
902- DATA SPROP(-3,4)/-1/
903+ DATA (SPROP(I,-3,4),I=1,2)/-1,-1/
904 DATA TPRID(-3,4)/0/
905 DATA (IFOREST(I,-4,4),I=1,2)/-3,3/
906- DATA SPROP(-4,4)/23/
907+ DATA (SPROP(I,-4,4),I=1,2)/23,23/
908 DATA TPRID(-4,4)/0/
909 DATA (IFOREST(I,-5,4),I=1,2)/1,-4/
910 DATA TPRID(-5,4)/2/
911- DATA SPROP(-5,4)/0/
912+ DATA (SPROP(I,-5,4),I=1,2)/0,0/
913 DATA (IFOREST(I,-6,4),I=1,2)/-5,-2/
914 C Diagram 5
915 DATA MAPCONFIG(5)/5/
916 DATA (IFOREST(I,-1,5),I=1,2)/5,3/
917- DATA SPROP(-1,5)/1/
918+ DATA (SPROP(I,-1,5),I=1,2)/1,1/
919 DATA TPRID(-1,5)/0/
920 DATA (IFOREST(I,-2,5),I=1,2)/4,-1/
921- DATA SPROP(-2,5)/23/
922+ DATA (SPROP(I,-2,5),I=1,2)/23,23/
923 DATA TPRID(-2,5)/0/
924 DATA (IFOREST(I,-3,5),I=1,2)/8,6/
925- DATA SPROP(-3,5)/1/
926+ DATA (SPROP(I,-3,5),I=1,2)/1,1/
927 DATA TPRID(-3,5)/0/
928 DATA (IFOREST(I,-4,5),I=1,2)/7,-3/
929- DATA SPROP(-4,5)/23/
930+ DATA (SPROP(I,-4,5),I=1,2)/23,23/
931 DATA TPRID(-4,5)/0/
932 DATA (IFOREST(I,-5,5),I=1,2)/1,-4/
933 DATA TPRID(-5,5)/2/
934- DATA SPROP(-5,5)/0/
935+ DATA (SPROP(I,-5,5),I=1,2)/0,0/
936 DATA (IFOREST(I,-6,5),I=1,2)/-5,-2/
937 C Diagram 6
938 DATA MAPCONFIG(6)/6/
939 DATA (IFOREST(I,-1,6),I=1,2)/5,3/
940- DATA SPROP(-1,6)/1/
941+ DATA (SPROP(I,-1,6),I=1,2)/1,1/
942 DATA TPRID(-1,6)/0/
943 DATA (IFOREST(I,-2,6),I=1,2)/4,-1/
944- DATA SPROP(-2,6)/23/
945+ DATA (SPROP(I,-2,6),I=1,2)/23,23/
946 DATA TPRID(-2,6)/0/
947 DATA (IFOREST(I,-3,6),I=1,2)/8,7/
948- DATA SPROP(-3,6)/-1/
949+ DATA (SPROP(I,-3,6),I=1,2)/-1,-1/
950 DATA TPRID(-3,6)/0/
951 DATA (IFOREST(I,-4,6),I=1,2)/-3,6/
952- DATA SPROP(-4,6)/23/
953+ DATA (SPROP(I,-4,6),I=1,2)/23,23/
954 DATA TPRID(-4,6)/0/
955 DATA (IFOREST(I,-5,6),I=1,2)/1,-4/
956 DATA TPRID(-5,6)/2/
957- DATA SPROP(-5,6)/0/
958+ DATA (SPROP(I,-5,6),I=1,2)/0,0/
959 DATA (IFOREST(I,-6,6),I=1,2)/-5,-2/
960 C Diagram 7
961 DATA MAPCONFIG(7)/7/
962 DATA (IFOREST(I,-1,7),I=1,2)/5,4/
963- DATA SPROP(-1,7)/-1/
964+ DATA (SPROP(I,-1,7),I=1,2)/-1,-1/
965 DATA TPRID(-1,7)/0/
966 DATA (IFOREST(I,-2,7),I=1,2)/-1,3/
967- DATA SPROP(-2,7)/23/
968+ DATA (SPROP(I,-2,7),I=1,2)/23,23/
969 DATA TPRID(-2,7)/0/
970 DATA (IFOREST(I,-3,7),I=1,2)/8,6/
971- DATA SPROP(-3,7)/1/
972+ DATA (SPROP(I,-3,7),I=1,2)/1,1/
973 DATA TPRID(-3,7)/0/
974 DATA (IFOREST(I,-4,7),I=1,2)/7,-3/
975- DATA SPROP(-4,7)/23/
976+ DATA (SPROP(I,-4,7),I=1,2)/23,23/
977 DATA TPRID(-4,7)/0/
978 DATA (IFOREST(I,-5,7),I=1,2)/1,-4/
979 DATA TPRID(-5,7)/2/
980- DATA SPROP(-5,7)/0/
981+ DATA (SPROP(I,-5,7),I=1,2)/0,0/
982 DATA (IFOREST(I,-6,7),I=1,2)/-5,-2/
983 C Diagram 8
984 DATA MAPCONFIG(8)/8/
985 DATA (IFOREST(I,-1,8),I=1,2)/5,4/
986- DATA SPROP(-1,8)/-1/
987+ DATA (SPROP(I,-1,8),I=1,2)/-1,-1/
988 DATA TPRID(-1,8)/0/
989 DATA (IFOREST(I,-2,8),I=1,2)/-1,3/
990- DATA SPROP(-2,8)/23/
991+ DATA (SPROP(I,-2,8),I=1,2)/23,23/
992 DATA TPRID(-2,8)/0/
993 DATA (IFOREST(I,-3,8),I=1,2)/8,7/
994- DATA SPROP(-3,8)/-1/
995+ DATA (SPROP(I,-3,8),I=1,2)/-1,-1/
996 DATA TPRID(-3,8)/0/
997 DATA (IFOREST(I,-4,8),I=1,2)/-3,6/
998- DATA SPROP(-4,8)/23/
999+ DATA (SPROP(I,-4,8),I=1,2)/23,23/
1000 DATA TPRID(-4,8)/0/
1001 DATA (IFOREST(I,-5,8),I=1,2)/1,-4/
1002 DATA TPRID(-5,8)/2/
1003- DATA SPROP(-5,8)/0/
1004+ DATA (SPROP(I,-5,8),I=1,2)/0,0/
1005 DATA (IFOREST(I,-6,8),I=1,2)/-5,-2/
1006 C Number of configs
1007 DATA MAPCONFIG(0)/8/
1008@@ -2282,210 +2281,212 @@
1009 subprocess_group,
1010 subprocess_group.get('diagrams_for_configs'))
1011
1012+ #print open(self.give_pos('test')).read()
1013+
1014 self.assertFileContains('test',
1015 """C Diagram 1
1016 DATA MAPCONFIG(1)/1/
1017 DATA (IFOREST(I,-1,1),I=1,2)/5,3/
1018- DATA SPROP(-1,1)/1000001/
1019+ DATA (SPROP(I,-1,1),I=1,3)/1000001,0,0/
1020 DATA TPRID(-1,1)/0/
1021 DATA (IFOREST(I,-2,1),I=1,2)/4,-1/
1022- DATA SPROP(-2,1)/1000021/
1023+ DATA (SPROP(I,-2,1),I=1,3)/1000021,0,0/
1024 DATA TPRID(-2,1)/0/
1025 DATA (IFOREST(I,-3,1),I=1,2)/8,6/
1026- DATA SPROP(-3,1)/1000001/
1027+ DATA (SPROP(I,-3,1),I=1,3)/1000001,0,0/
1028 DATA TPRID(-3,1)/0/
1029 DATA (IFOREST(I,-4,1),I=1,2)/7,-3/
1030- DATA SPROP(-4,1)/1000021/
1031+ DATA (SPROP(I,-4,1),I=1,3)/1000021,0,0/
1032 DATA TPRID(-4,1)/0/
1033 DATA (IFOREST(I,-5,1),I=1,2)/-4,-2/
1034- DATA SPROP(-5,1)/21/
1035+ DATA (SPROP(I,-5,1),I=1,3)/21,0,0/
1036 DATA TPRID(-5,1)/0/
1037 C Diagram 2
1038 DATA MAPCONFIG(2)/2/
1039 DATA (IFOREST(I,-1,2),I=1,2)/5,3/
1040- DATA SPROP(-1,2)/1000001/
1041+ DATA (SPROP(I,-1,2),I=1,3)/1000001,0,0/
1042 DATA TPRID(-1,2)/0/
1043 DATA (IFOREST(I,-2,2),I=1,2)/4,-1/
1044- DATA SPROP(-2,2)/1000021/
1045+ DATA (SPROP(I,-2,2),I=1,3)/1000021,0,0/
1046 DATA TPRID(-2,2)/0/
1047 DATA (IFOREST(I,-3,2),I=1,2)/8,7/
1048- DATA SPROP(-3,2)/-1000001/
1049+ DATA (SPROP(I,-3,2),I=1,3)/-1000001,0,0/
1050 DATA TPRID(-3,2)/0/
1051 DATA (IFOREST(I,-4,2),I=1,2)/-3,6/
1052- DATA SPROP(-4,2)/1000021/
1053+ DATA (SPROP(I,-4,2),I=1,3)/1000021,0,0/
1054 DATA TPRID(-4,2)/0/
1055 DATA (IFOREST(I,-5,2),I=1,2)/-4,-2/
1056- DATA SPROP(-5,2)/21/
1057+ DATA (SPROP(I,-5,2),I=1,3)/21,0,0/
1058 DATA TPRID(-5,2)/0/
1059 C Diagram 3
1060 DATA MAPCONFIG(3)/3/
1061 DATA (IFOREST(I,-1,3),I=1,2)/5,4/
1062- DATA SPROP(-1,3)/-1000001/
1063+ DATA (SPROP(I,-1,3),I=1,3)/-1000001,0,0/
1064 DATA TPRID(-1,3)/0/
1065 DATA (IFOREST(I,-2,3),I=1,2)/-1,3/
1066- DATA SPROP(-2,3)/1000021/
1067+ DATA (SPROP(I,-2,3),I=1,3)/1000021,0,0/
1068 DATA TPRID(-2,3)/0/
1069 DATA (IFOREST(I,-3,3),I=1,2)/8,6/
1070- DATA SPROP(-3,3)/1000001/
1071+ DATA (SPROP(I,-3,3),I=1,3)/1000001,0,0/
1072 DATA TPRID(-3,3)/0/
1073 DATA (IFOREST(I,-4,3),I=1,2)/7,-3/
1074- DATA SPROP(-4,3)/1000021/
1075+ DATA (SPROP(I,-4,3),I=1,3)/1000021,0,0/
1076 DATA TPRID(-4,3)/0/
1077 DATA (IFOREST(I,-5,3),I=1,2)/-4,-2/
1078- DATA SPROP(-5,3)/21/
1079+ DATA (SPROP(I,-5,3),I=1,3)/21,0,0/
1080 DATA TPRID(-5,3)/0/
1081 C Diagram 4
1082 DATA MAPCONFIG(4)/4/
1083 DATA (IFOREST(I,-1,4),I=1,2)/5,4/
1084- DATA SPROP(-1,4)/-1000001/
1085+ DATA (SPROP(I,-1,4),I=1,3)/-1000001,0,0/
1086 DATA TPRID(-1,4)/0/
1087 DATA (IFOREST(I,-2,4),I=1,2)/-1,3/
1088- DATA SPROP(-2,4)/1000021/
1089+ DATA (SPROP(I,-2,4),I=1,3)/1000021,0,0/
1090 DATA TPRID(-2,4)/0/
1091 DATA (IFOREST(I,-3,4),I=1,2)/8,7/
1092- DATA SPROP(-3,4)/-1000001/
1093+ DATA (SPROP(I,-3,4),I=1,3)/-1000001,0,0/
1094 DATA TPRID(-3,4)/0/
1095 DATA (IFOREST(I,-4,4),I=1,2)/-3,6/
1096- DATA SPROP(-4,4)/1000021/
1097+ DATA (SPROP(I,-4,4),I=1,3)/1000021,0,0/
1098 DATA TPRID(-4,4)/0/
1099 DATA (IFOREST(I,-5,4),I=1,2)/-4,-2/
1100- DATA SPROP(-5,4)/21/
1101+ DATA (SPROP(I,-5,4),I=1,3)/21,0,0/
1102 DATA TPRID(-5,4)/0/
1103 C Diagram 5
1104 DATA MAPCONFIG(5)/5/
1105 DATA (IFOREST(I,-1,5),I=1,2)/5,3/
1106- DATA SPROP(-1,5)/1000001/
1107+ DATA (SPROP(I,-1,5),I=1,3)/0,1000001,0/
1108 DATA TPRID(-1,5)/0/
1109 DATA (IFOREST(I,-2,5),I=1,2)/4,-1/
1110- DATA SPROP(-2,5)/1000021/
1111+ DATA (SPROP(I,-2,5),I=1,3)/0,1000021,0/
1112 DATA TPRID(-2,5)/0/
1113 DATA (IFOREST(I,-3,5),I=1,2)/8,6/
1114- DATA SPROP(-3,5)/1000002/
1115+ DATA (SPROP(I,-3,5),I=1,3)/0,1000002,0/
1116 DATA TPRID(-3,5)/0/
1117 DATA (IFOREST(I,-4,5),I=1,2)/7,-3/
1118- DATA SPROP(-4,5)/1000021/
1119+ DATA (SPROP(I,-4,5),I=1,3)/0,1000021,0/
1120 DATA TPRID(-4,5)/0/
1121 DATA (IFOREST(I,-5,5),I=1,2)/-4,-2/
1122- DATA SPROP(-5,5)/21/
1123+ DATA (SPROP(I,-5,5),I=1,3)/0,21,0/
1124 DATA TPRID(-5,5)/0/
1125 C Diagram 6
1126 DATA MAPCONFIG(6)/6/
1127 DATA (IFOREST(I,-1,6),I=1,2)/5,3/
1128- DATA SPROP(-1,6)/1000001/
1129+ DATA (SPROP(I,-1,6),I=1,3)/0,1000001,0/
1130 DATA TPRID(-1,6)/0/
1131 DATA (IFOREST(I,-2,6),I=1,2)/4,-1/
1132- DATA SPROP(-2,6)/1000021/
1133+ DATA (SPROP(I,-2,6),I=1,3)/0,1000021,0/
1134 DATA TPRID(-2,6)/0/
1135 DATA (IFOREST(I,-3,6),I=1,2)/8,7/
1136- DATA SPROP(-3,6)/-1000002/
1137+ DATA (SPROP(I,-3,6),I=1,3)/0,-1000002,0/
1138 DATA TPRID(-3,6)/0/
1139 DATA (IFOREST(I,-4,6),I=1,2)/-3,6/
1140- DATA SPROP(-4,6)/1000021/
1141+ DATA (SPROP(I,-4,6),I=1,3)/0,1000021,0/
1142 DATA TPRID(-4,6)/0/
1143 DATA (IFOREST(I,-5,6),I=1,2)/-4,-2/
1144- DATA SPROP(-5,6)/21/
1145+ DATA (SPROP(I,-5,6),I=1,3)/0,21,0/
1146 DATA TPRID(-5,6)/0/
1147 C Diagram 7
1148 DATA MAPCONFIG(7)/7/
1149 DATA (IFOREST(I,-1,7),I=1,2)/5,4/
1150- DATA SPROP(-1,7)/-1000001/
1151+ DATA (SPROP(I,-1,7),I=1,3)/0,-1000001,0/
1152 DATA TPRID(-1,7)/0/
1153 DATA (IFOREST(I,-2,7),I=1,2)/-1,3/
1154- DATA SPROP(-2,7)/1000021/
1155+ DATA (SPROP(I,-2,7),I=1,3)/0,1000021,0/
1156 DATA TPRID(-2,7)/0/
1157 DATA (IFOREST(I,-3,7),I=1,2)/8,6/
1158- DATA SPROP(-3,7)/1000002/
1159+ DATA (SPROP(I,-3,7),I=1,3)/0,1000002,0/
1160 DATA TPRID(-3,7)/0/
1161 DATA (IFOREST(I,-4,7),I=1,2)/7,-3/
1162- DATA SPROP(-4,7)/1000021/
1163+ DATA (SPROP(I,-4,7),I=1,3)/0,1000021,0/
1164 DATA TPRID(-4,7)/0/
1165 DATA (IFOREST(I,-5,7),I=1,2)/-4,-2/
1166- DATA SPROP(-5,7)/21/
1167+ DATA (SPROP(I,-5,7),I=1,3)/0,21,0/
1168 DATA TPRID(-5,7)/0/
1169 C Diagram 8
1170 DATA MAPCONFIG(8)/8/
1171 DATA (IFOREST(I,-1,8),I=1,2)/5,4/
1172- DATA SPROP(-1,8)/-1000001/
1173+ DATA (SPROP(I,-1,8),I=1,3)/0,-1000001,0/
1174 DATA TPRID(-1,8)/0/
1175 DATA (IFOREST(I,-2,8),I=1,2)/-1,3/
1176- DATA SPROP(-2,8)/1000021/
1177+ DATA (SPROP(I,-2,8),I=1,3)/0,1000021,0/
1178 DATA TPRID(-2,8)/0/
1179 DATA (IFOREST(I,-3,8),I=1,2)/8,7/
1180- DATA SPROP(-3,8)/-1000002/
1181+ DATA (SPROP(I,-3,8),I=1,3)/0,-1000002,0/
1182 DATA TPRID(-3,8)/0/
1183 DATA (IFOREST(I,-4,8),I=1,2)/-3,6/
1184- DATA SPROP(-4,8)/1000021/
1185+ DATA (SPROP(I,-4,8),I=1,3)/0,1000021,0/
1186 DATA TPRID(-4,8)/0/
1187 DATA (IFOREST(I,-5,8),I=1,2)/-4,-2/
1188- DATA SPROP(-5,8)/21/
1189+ DATA (SPROP(I,-5,8),I=1,3)/0,21,0/
1190 DATA TPRID(-5,8)/0/
1191 C Diagram 9
1192 DATA MAPCONFIG(9)/9/
1193 DATA (IFOREST(I,-1,9),I=1,2)/5,3/
1194- DATA SPROP(-1,9)/1000002/
1195+ DATA (SPROP(I,-1,9),I=1,3)/0,0,1000002/
1196 DATA TPRID(-1,9)/0/
1197 DATA (IFOREST(I,-2,9),I=1,2)/4,-1/
1198- DATA SPROP(-2,9)/1000021/
1199+ DATA (SPROP(I,-2,9),I=1,3)/0,0,1000021/
1200 DATA TPRID(-2,9)/0/
1201 DATA (IFOREST(I,-3,9),I=1,2)/8,6/
1202- DATA SPROP(-3,9)/1000002/
1203+ DATA (SPROP(I,-3,9),I=1,3)/0,0,1000002/
1204 DATA TPRID(-3,9)/0/
1205 DATA (IFOREST(I,-4,9),I=1,2)/7,-3/
1206- DATA SPROP(-4,9)/1000021/
1207+ DATA (SPROP(I,-4,9),I=1,3)/0,0,1000021/
1208 DATA TPRID(-4,9)/0/
1209 DATA (IFOREST(I,-5,9),I=1,2)/-4,-2/
1210- DATA SPROP(-5,9)/21/
1211+ DATA (SPROP(I,-5,9),I=1,3)/0,0,21/
1212 DATA TPRID(-5,9)/0/
1213 C Diagram 10
1214 DATA MAPCONFIG(10)/10/
1215 DATA (IFOREST(I,-1,10),I=1,2)/5,3/
1216- DATA SPROP(-1,10)/1000002/
1217+ DATA (SPROP(I,-1,10),I=1,3)/0,0,1000002/
1218 DATA TPRID(-1,10)/0/
1219 DATA (IFOREST(I,-2,10),I=1,2)/4,-1/
1220- DATA SPROP(-2,10)/1000021/
1221+ DATA (SPROP(I,-2,10),I=1,3)/0,0,1000021/
1222 DATA TPRID(-2,10)/0/
1223 DATA (IFOREST(I,-3,10),I=1,2)/8,7/
1224- DATA SPROP(-3,10)/-1000002/
1225+ DATA (SPROP(I,-3,10),I=1,3)/0,0,-1000002/
1226 DATA TPRID(-3,10)/0/
1227 DATA (IFOREST(I,-4,10),I=1,2)/-3,6/
1228- DATA SPROP(-4,10)/1000021/
1229+ DATA (SPROP(I,-4,10),I=1,3)/0,0,1000021/
1230 DATA TPRID(-4,10)/0/
1231 DATA (IFOREST(I,-5,10),I=1,2)/-4,-2/
1232- DATA SPROP(-5,10)/21/
1233+ DATA (SPROP(I,-5,10),I=1,3)/0,0,21/
1234 DATA TPRID(-5,10)/0/
1235 C Diagram 11
1236 DATA MAPCONFIG(11)/11/
1237 DATA (IFOREST(I,-1,11),I=1,2)/5,4/
1238- DATA SPROP(-1,11)/-1000002/
1239+ DATA (SPROP(I,-1,11),I=1,3)/0,0,-1000002/
1240 DATA TPRID(-1,11)/0/
1241 DATA (IFOREST(I,-2,11),I=1,2)/-1,3/
1242- DATA SPROP(-2,11)/1000021/
1243+ DATA (SPROP(I,-2,11),I=1,3)/0,0,1000021/
1244 DATA TPRID(-2,11)/0/
1245 DATA (IFOREST(I,-3,11),I=1,2)/8,6/
1246- DATA SPROP(-3,11)/1000002/
1247+ DATA (SPROP(I,-3,11),I=1,3)/0,0,1000002/
1248 DATA TPRID(-3,11)/0/
1249 DATA (IFOREST(I,-4,11),I=1,2)/7,-3/
1250- DATA SPROP(-4,11)/1000021/
1251+ DATA (SPROP(I,-4,11),I=1,3)/0,0,1000021/
1252 DATA TPRID(-4,11)/0/
1253 DATA (IFOREST(I,-5,11),I=1,2)/-4,-2/
1254- DATA SPROP(-5,11)/21/
1255+ DATA (SPROP(I,-5,11),I=1,3)/0,0,21/
1256 DATA TPRID(-5,11)/0/
1257 C Diagram 12
1258 DATA MAPCONFIG(12)/12/
1259 DATA (IFOREST(I,-1,12),I=1,2)/5,4/
1260- DATA SPROP(-1,12)/-1000002/
1261+ DATA (SPROP(I,-1,12),I=1,3)/0,0,-1000002/
1262 DATA TPRID(-1,12)/0/
1263 DATA (IFOREST(I,-2,12),I=1,2)/-1,3/
1264- DATA SPROP(-2,12)/1000021/
1265+ DATA (SPROP(I,-2,12),I=1,3)/0,0,1000021/
1266 DATA TPRID(-2,12)/0/
1267 DATA (IFOREST(I,-3,12),I=1,2)/8,7/
1268- DATA SPROP(-3,12)/-1000002/
1269+ DATA (SPROP(I,-3,12),I=1,3)/0,0,-1000002/
1270 DATA TPRID(-3,12)/0/
1271 DATA (IFOREST(I,-4,12),I=1,2)/-3,6/
1272- DATA SPROP(-4,12)/1000021/
1273+ DATA (SPROP(I,-4,12),I=1,3)/0,0,1000021/
1274 DATA TPRID(-4,12)/0/
1275 DATA (IFOREST(I,-5,12),I=1,2)/-4,-2/
1276- DATA SPROP(-5,12)/21/
1277+ DATA (SPROP(I,-5,12),I=1,3)/0,0,21/
1278 DATA TPRID(-5,12)/0/
1279 C Number of configs
1280 DATA MAPCONFIG(0)/12/
1281@@ -2850,507 +2851,508 @@
1282 JAMP(5)=+1./4.*(+AMP(2)-AMP(3)+1./3.*AMP(7)+1./3.*AMP(8)+AMP(9)+1./3.*AMP(11)+1./3.*AMP(12)+1./9.*AMP(14)+1./9.*AMP(15)+1./9.*AMP(17)+1./9.*AMP(18)+1./3.*AMP(19)+1./3.*AMP(20)+AMP(21)+AMP(23)+1./3.*AMP(24)+1./3.*AMP(25)+AMP(30)+AMP(32)+1./3.*AMP(35)+1./3.*AMP(36)+1./9.*AMP(37)+1./9.*AMP(38)+AMP(39)+1./3.*AMP(41)+1./3.*AMP(42))
1283 JAMP(6)=+1./4.*(-1./3.*AMP(1)-1./3.*AMP(2)-AMP(5)-AMP(6)-AMP(8)-AMP(11)-AMP(13)-1./3.*AMP(14)-1./3.*AMP(15)-AMP(20)-1./3.*AMP(21)-1./3.*AMP(22)-1./9.*AMP(24)-1./9.*AMP(25)-1./9.*AMP(27)-1./9.*AMP(28)-1./3.*AMP(29)-1./3.*AMP(30)-AMP(34)-1./9.*AMP(35)-1./9.*AMP(36)-1./3.*AMP(37)-1./3.*AMP(38)-1./3.*AMP(39)-1./3.*AMP(40)-AMP(42))""")
1284
1285- # Test configs file
1286+ # Test configs.inc file
1287 writer = writers.FortranWriter(self.give_pos('test'))
1288 mapconfigs, s_and_t_channels = exporter.write_configs_file(writer,
1289 matrix_element)
1290-
1291 writer.close()
1292
1293+ #print open(self.give_pos('test')).read()
1294+
1295 self.assertFileContains('test',
1296 """C Diagram 1
1297 DATA MAPCONFIG(1)/1/
1298 DATA (IFOREST(I,-1,1),I=1,2)/4,3/
1299- DATA SPROP(-1,1)/21/
1300+ DATA (SPROP(I,-1,1),I=1,1)/21/
1301 DATA TPRID(-1,1)/0/
1302 DATA (IFOREST(I,-2,1),I=1,2)/6,-1/
1303- DATA SPROP(-2,1)/-2/
1304+ DATA (SPROP(I,-2,1),I=1,1)/-2/
1305 DATA TPRID(-2,1)/0/
1306 DATA (IFOREST(I,-3,1),I=1,2)/5,-2/
1307- DATA SPROP(-3,1)/21/
1308+ DATA (SPROP(I,-3,1),I=1,1)/21/
1309 DATA TPRID(-3,1)/0/
1310 C Diagram 2
1311 DATA MAPCONFIG(2)/2/
1312 DATA (IFOREST(I,-1,2),I=1,2)/4,3/
1313- DATA SPROP(-1,2)/21/
1314+ DATA (SPROP(I,-1,2),I=1,1)/21/
1315 DATA TPRID(-1,2)/0/
1316 DATA (IFOREST(I,-2,2),I=1,2)/5,-1/
1317- DATA SPROP(-2,2)/2/
1318+ DATA (SPROP(I,-2,2),I=1,1)/2/
1319 DATA TPRID(-2,2)/0/
1320 DATA (IFOREST(I,-3,2),I=1,2)/6,-2/
1321- DATA SPROP(-3,2)/21/
1322+ DATA (SPROP(I,-3,2),I=1,1)/21/
1323 DATA TPRID(-3,2)/0/
1324 C Diagram 3
1325 DATA MAPCONFIG(3)/3/
1326 DATA (IFOREST(I,-1,3),I=1,2)/4,3/
1327- DATA SPROP(-1,3)/21/
1328+ DATA (SPROP(I,-1,3),I=1,1)/21/
1329 DATA TPRID(-1,3)/0/
1330 DATA (IFOREST(I,-2,3),I=1,2)/6,5/
1331- DATA SPROP(-2,3)/21/
1332+ DATA (SPROP(I,-2,3),I=1,1)/21/
1333 DATA TPRID(-2,3)/0/
1334 DATA (IFOREST(I,-3,3),I=1,2)/-2,-1/
1335- DATA SPROP(-3,3)/21/
1336+ DATA (SPROP(I,-3,3),I=1,1)/21/
1337 DATA TPRID(-3,3)/0/
1338 C Diagram 4
1339 DATA MAPCONFIG(4)/4/
1340 DATA (IFOREST(I,-1,4),I=1,2)/6,3/
1341- DATA SPROP(-1,4)/21/
1342+ DATA (SPROP(I,-1,4),I=1,1)/21/
1343 DATA TPRID(-1,4)/0/
1344 DATA (IFOREST(I,-2,4),I=1,2)/5,-1/
1345- DATA SPROP(-2,4)/2/
1346+ DATA (SPROP(I,-2,4),I=1,1)/2/
1347 DATA TPRID(-2,4)/0/
1348 DATA (IFOREST(I,-3,4),I=1,2)/4,-2/
1349- DATA SPROP(-3,4)/21/
1350+ DATA (SPROP(I,-3,4),I=1,1)/21/
1351 DATA TPRID(-3,4)/0/
1352 C Diagram 5
1353 DATA MAPCONFIG(5)/5/
1354 DATA (IFOREST(I,-1,5),I=1,2)/6,3/
1355- DATA SPROP(-1,5)/21/
1356+ DATA (SPROP(I,-1,5),I=1,1)/21/
1357 DATA TPRID(-1,5)/0/
1358 DATA (IFOREST(I,-2,5),I=1,2)/4,-1/
1359- DATA SPROP(-2,5)/-2/
1360+ DATA (SPROP(I,-2,5),I=1,1)/-2/
1361 DATA TPRID(-2,5)/0/
1362 DATA (IFOREST(I,-3,5),I=1,2)/5,-2/
1363- DATA SPROP(-3,5)/21/
1364+ DATA (SPROP(I,-3,5),I=1,1)/21/
1365 DATA TPRID(-3,5)/0/
1366 C Diagram 6
1367 DATA MAPCONFIG(6)/6/
1368 DATA (IFOREST(I,-1,6),I=1,2)/6,3/
1369- DATA SPROP(-1,6)/21/
1370+ DATA (SPROP(I,-1,6),I=1,1)/21/
1371 DATA TPRID(-1,6)/0/
1372 DATA (IFOREST(I,-2,6),I=1,2)/5,4/
1373- DATA SPROP(-2,6)/21/
1374+ DATA (SPROP(I,-2,6),I=1,1)/21/
1375 DATA TPRID(-2,6)/0/
1376 DATA (IFOREST(I,-3,6),I=1,2)/-2,-1/
1377- DATA SPROP(-3,6)/21/
1378+ DATA (SPROP(I,-3,6),I=1,1)/21/
1379 DATA TPRID(-3,6)/0/
1380 C Diagram 7
1381 DATA MAPCONFIG(7)/7/
1382 DATA (IFOREST(I,-1,7),I=1,2)/5,4/
1383- DATA SPROP(-1,7)/21/
1384+ DATA (SPROP(I,-1,7),I=1,1)/21/
1385 DATA TPRID(-1,7)/0/
1386 DATA (IFOREST(I,-2,7),I=1,2)/6,-1/
1387- DATA SPROP(-2,7)/-2/
1388+ DATA (SPROP(I,-2,7),I=1,1)/-2/
1389 DATA TPRID(-2,7)/0/
1390 DATA (IFOREST(I,-3,7),I=1,2)/-2,3/
1391- DATA SPROP(-3,7)/21/
1392+ DATA (SPROP(I,-3,7),I=1,1)/21/
1393 DATA TPRID(-3,7)/0/
1394 C Diagram 8
1395 DATA MAPCONFIG(8)/8/
1396 DATA (IFOREST(I,-1,8),I=1,2)/5,4/
1397- DATA SPROP(-1,8)/21/
1398+ DATA (SPROP(I,-1,8),I=1,1)/21/
1399 DATA TPRID(-1,8)/0/
1400 DATA (IFOREST(I,-2,8),I=1,2)/-1,3/
1401- DATA SPROP(-2,8)/2/
1402+ DATA (SPROP(I,-2,8),I=1,1)/2/
1403 DATA TPRID(-2,8)/0/
1404 DATA (IFOREST(I,-3,8),I=1,2)/6,-2/
1405- DATA SPROP(-3,8)/21/
1406+ DATA (SPROP(I,-3,8),I=1,1)/21/
1407 DATA TPRID(-3,8)/0/
1408 C Diagram 9
1409 DATA MAPCONFIG(9)/9/
1410 DATA (IFOREST(I,-1,9),I=1,2)/6,5/
1411- DATA SPROP(-1,9)/21/
1412+ DATA (SPROP(I,-1,9),I=1,1)/21/
1413 DATA TPRID(-1,9)/0/
1414 DATA (IFOREST(I,-2,9),I=1,2)/-1,4/
1415- DATA SPROP(-2,9)/-2/
1416+ DATA (SPROP(I,-2,9),I=1,1)/-2/
1417 DATA TPRID(-2,9)/0/
1418 DATA (IFOREST(I,-3,9),I=1,2)/-2,3/
1419- DATA SPROP(-3,9)/21/
1420+ DATA (SPROP(I,-3,9),I=1,1)/21/
1421 DATA TPRID(-3,9)/0/
1422 C Diagram 10
1423 DATA MAPCONFIG(10)/10/
1424 DATA (IFOREST(I,-1,10),I=1,2)/6,5/
1425- DATA SPROP(-1,10)/21/
1426+ DATA (SPROP(I,-1,10),I=1,1)/21/
1427 DATA TPRID(-1,10)/0/
1428 DATA (IFOREST(I,-2,10),I=1,2)/-1,3/
1429- DATA SPROP(-2,10)/2/
1430+ DATA (SPROP(I,-2,10),I=1,1)/2/
1431 DATA TPRID(-2,10)/0/
1432 DATA (IFOREST(I,-3,10),I=1,2)/4,-2/
1433- DATA SPROP(-3,10)/21/
1434+ DATA (SPROP(I,-3,10),I=1,1)/21/
1435 DATA TPRID(-3,10)/0/
1436 C Diagram 11
1437 DATA MAPCONFIG(11)/11/
1438 DATA (IFOREST(I,-1,11),I=1,2)/1,3/
1439 DATA TPRID(-1,11)/21/
1440- DATA SPROP(-1,11)/0/
1441+ DATA (SPROP(I,-1,11),I=1,1)/0/
1442 DATA (IFOREST(I,-2,11),I=1,2)/-1,5/
1443 DATA TPRID(-2,11)/2/
1444- DATA SPROP(-2,11)/0/
1445+ DATA (SPROP(I,-2,11),I=1,1)/0/
1446 DATA (IFOREST(I,-3,11),I=1,2)/-2,6/
1447 DATA TPRID(-3,11)/21/
1448- DATA SPROP(-3,11)/0/
1449+ DATA (SPROP(I,-3,11),I=1,1)/0/
1450 DATA (IFOREST(I,-4,11),I=1,2)/-3,4/
1451 C Diagram 12
1452 DATA MAPCONFIG(12)/12/
1453 DATA (IFOREST(I,-1,12),I=1,2)/1,3/
1454 DATA TPRID(-1,12)/21/
1455- DATA SPROP(-1,12)/0/
1456+ DATA (SPROP(I,-1,12),I=1,1)/0/
1457 DATA (IFOREST(I,-2,12),I=1,2)/-1,6/
1458 DATA TPRID(-2,12)/2/
1459- DATA SPROP(-2,12)/0/
1460+ DATA (SPROP(I,-2,12),I=1,1)/0/
1461 DATA (IFOREST(I,-3,12),I=1,2)/-2,5/
1462 DATA TPRID(-3,12)/21/
1463- DATA SPROP(-3,12)/0/
1464+ DATA (SPROP(I,-3,12),I=1,1)/0/
1465 DATA (IFOREST(I,-4,12),I=1,2)/-3,4/
1466 C Diagram 13
1467 DATA MAPCONFIG(13)/13/
1468 DATA (IFOREST(I,-1,13),I=1,2)/6,5/
1469- DATA SPROP(-1,13)/21/
1470+ DATA (SPROP(I,-1,13),I=1,1)/21/
1471 DATA TPRID(-1,13)/0/
1472 DATA (IFOREST(I,-2,13),I=1,2)/1,3/
1473 DATA TPRID(-2,13)/21/
1474- DATA SPROP(-2,13)/0/
1475+ DATA (SPROP(I,-2,13),I=1,1)/0/
1476 DATA (IFOREST(I,-3,13),I=1,2)/-2,-1/
1477 DATA TPRID(-3,13)/21/
1478- DATA SPROP(-3,13)/0/
1479+ DATA (SPROP(I,-3,13),I=1,1)/0/
1480 DATA (IFOREST(I,-4,13),I=1,2)/-3,4/
1481 C Diagram 14
1482 DATA MAPCONFIG(14)/14/
1483 DATA (IFOREST(I,-1,14),I=1,2)/1,3/
1484 DATA TPRID(-1,14)/21/
1485- DATA SPROP(-1,14)/0/
1486+ DATA (SPROP(I,-1,14),I=1,1)/0/
1487 DATA (IFOREST(I,-2,14),I=1,2)/-1,4/
1488 DATA TPRID(-2,14)/2/
1489- DATA SPROP(-2,14)/0/
1490+ DATA (SPROP(I,-2,14),I=1,1)/0/
1491 DATA (IFOREST(I,-3,14),I=1,2)/-2,5/
1492 DATA TPRID(-3,14)/21/
1493- DATA SPROP(-3,14)/0/
1494+ DATA (SPROP(I,-3,14),I=1,1)/0/
1495 DATA (IFOREST(I,-4,14),I=1,2)/-3,6/
1496 C Diagram 15
1497 DATA MAPCONFIG(15)/15/
1498 DATA (IFOREST(I,-1,15),I=1,2)/1,3/
1499 DATA TPRID(-1,15)/21/
1500- DATA SPROP(-1,15)/0/
1501+ DATA (SPROP(I,-1,15),I=1,1)/0/
1502 DATA (IFOREST(I,-2,15),I=1,2)/-1,5/
1503 DATA TPRID(-2,15)/2/
1504- DATA SPROP(-2,15)/0/
1505+ DATA (SPROP(I,-2,15),I=1,1)/0/
1506 DATA (IFOREST(I,-3,15),I=1,2)/-2,4/
1507 DATA TPRID(-3,15)/21/
1508- DATA SPROP(-3,15)/0/
1509+ DATA (SPROP(I,-3,15),I=1,1)/0/
1510 DATA (IFOREST(I,-4,15),I=1,2)/-3,6/
1511 C Diagram 16
1512 DATA MAPCONFIG(16)/16/
1513 DATA (IFOREST(I,-1,16),I=1,2)/5,4/
1514- DATA SPROP(-1,16)/21/
1515+ DATA (SPROP(I,-1,16),I=1,1)/21/
1516 DATA TPRID(-1,16)/0/
1517 DATA (IFOREST(I,-2,16),I=1,2)/1,3/
1518 DATA TPRID(-2,16)/21/
1519- DATA SPROP(-2,16)/0/
1520+ DATA (SPROP(I,-2,16),I=1,1)/0/
1521 DATA (IFOREST(I,-3,16),I=1,2)/-2,-1/
1522 DATA TPRID(-3,16)/21/
1523- DATA SPROP(-3,16)/0/
1524+ DATA (SPROP(I,-3,16),I=1,1)/0/
1525 DATA (IFOREST(I,-4,16),I=1,2)/-3,6/
1526 C Diagram 17
1527 DATA MAPCONFIG(17)/17/
1528 DATA (IFOREST(I,-1,17),I=1,2)/5,4/
1529- DATA SPROP(-1,17)/21/
1530+ DATA (SPROP(I,-1,17),I=1,1)/21/
1531 DATA TPRID(-1,17)/0/
1532 DATA (IFOREST(I,-2,17),I=1,2)/6,-1/
1533- DATA SPROP(-2,17)/-2/
1534+ DATA (SPROP(I,-2,17),I=1,1)/-2/
1535 DATA TPRID(-2,17)/0/
1536 DATA (IFOREST(I,-3,17),I=1,2)/1,3/
1537 DATA TPRID(-3,17)/21/
1538- DATA SPROP(-3,17)/0/
1539+ DATA (SPROP(I,-3,17),I=1,1)/0/
1540 DATA (IFOREST(I,-4,17),I=1,2)/-3,-2/
1541 C Diagram 18
1542 DATA MAPCONFIG(18)/18/
1543 DATA (IFOREST(I,-1,18),I=1,2)/5,4/
1544- DATA SPROP(-1,18)/21/
1545+ DATA (SPROP(I,-1,18),I=1,1)/21/
1546 DATA TPRID(-1,18)/0/
1547 DATA (IFOREST(I,-2,18),I=1,2)/1,3/
1548 DATA TPRID(-2,18)/21/
1549- DATA SPROP(-2,18)/0/
1550+ DATA (SPROP(I,-2,18),I=1,1)/0/
1551 DATA (IFOREST(I,-3,18),I=1,2)/-2,6/
1552 DATA TPRID(-3,18)/2/
1553- DATA SPROP(-3,18)/0/
1554+ DATA (SPROP(I,-3,18),I=1,1)/0/
1555 DATA (IFOREST(I,-4,18),I=1,2)/-3,-1/
1556 C Diagram 19
1557 DATA MAPCONFIG(19)/19/
1558 DATA (IFOREST(I,-1,19),I=1,2)/6,5/
1559- DATA SPROP(-1,19)/21/
1560+ DATA (SPROP(I,-1,19),I=1,1)/21/
1561 DATA TPRID(-1,19)/0/
1562 DATA (IFOREST(I,-2,19),I=1,2)/-1,4/
1563- DATA SPROP(-2,19)/-2/
1564+ DATA (SPROP(I,-2,19),I=1,1)/-2/
1565 DATA TPRID(-2,19)/0/
1566 DATA (IFOREST(I,-3,19),I=1,2)/1,3/
1567 DATA TPRID(-3,19)/21/
1568- DATA SPROP(-3,19)/0/
1569+ DATA (SPROP(I,-3,19),I=1,1)/0/
1570 DATA (IFOREST(I,-4,19),I=1,2)/-3,-2/
1571 C Diagram 20
1572 DATA MAPCONFIG(20)/20/
1573 DATA (IFOREST(I,-1,20),I=1,2)/6,5/
1574- DATA SPROP(-1,20)/21/
1575+ DATA (SPROP(I,-1,20),I=1,1)/21/
1576 DATA TPRID(-1,20)/0/
1577 DATA (IFOREST(I,-2,20),I=1,2)/1,3/
1578 DATA TPRID(-2,20)/21/
1579- DATA SPROP(-2,20)/0/
1580+ DATA (SPROP(I,-2,20),I=1,1)/0/
1581 DATA (IFOREST(I,-3,20),I=1,2)/-2,4/
1582 DATA TPRID(-3,20)/2/
1583- DATA SPROP(-3,20)/0/
1584+ DATA (SPROP(I,-3,20),I=1,1)/0/
1585 DATA (IFOREST(I,-4,20),I=1,2)/-3,-1/
1586 C Diagram 21
1587 DATA MAPCONFIG(21)/21/
1588 DATA (IFOREST(I,-1,21),I=1,2)/1,5/
1589 DATA TPRID(-1,21)/21/
1590- DATA SPROP(-1,21)/0/
1591+ DATA (SPROP(I,-1,21),I=1,1)/0/
1592 DATA (IFOREST(I,-2,21),I=1,2)/-1,3/
1593 DATA TPRID(-2,21)/2/
1594- DATA SPROP(-2,21)/0/
1595+ DATA (SPROP(I,-2,21),I=1,1)/0/
1596 DATA (IFOREST(I,-3,21),I=1,2)/-2,6/
1597 DATA TPRID(-3,21)/21/
1598- DATA SPROP(-3,21)/0/
1599+ DATA (SPROP(I,-3,21),I=1,1)/0/
1600 DATA (IFOREST(I,-4,21),I=1,2)/-3,4/
1601 C Diagram 22
1602 DATA MAPCONFIG(22)/22/
1603 DATA (IFOREST(I,-1,22),I=1,2)/1,5/
1604 DATA TPRID(-1,22)/21/
1605- DATA SPROP(-1,22)/0/
1606+ DATA (SPROP(I,-1,22),I=1,1)/0/
1607 DATA (IFOREST(I,-2,22),I=1,2)/-1,6/
1608 DATA TPRID(-2,22)/2/
1609- DATA SPROP(-2,22)/0/
1610+ DATA (SPROP(I,-2,22),I=1,1)/0/
1611 DATA (IFOREST(I,-3,22),I=1,2)/-2,3/
1612 DATA TPRID(-3,22)/21/
1613- DATA SPROP(-3,22)/0/
1614+ DATA (SPROP(I,-3,22),I=1,1)/0/
1615 DATA (IFOREST(I,-4,22),I=1,2)/-3,4/
1616 C Diagram 23
1617 DATA MAPCONFIG(23)/23/
1618 DATA (IFOREST(I,-1,23),I=1,2)/6,3/
1619- DATA SPROP(-1,23)/21/
1620+ DATA (SPROP(I,-1,23),I=1,1)/21/
1621 DATA TPRID(-1,23)/0/
1622 DATA (IFOREST(I,-2,23),I=1,2)/1,5/
1623 DATA TPRID(-2,23)/21/
1624- DATA SPROP(-2,23)/0/
1625+ DATA (SPROP(I,-2,23),I=1,1)/0/
1626 DATA (IFOREST(I,-3,23),I=1,2)/-2,-1/
1627 DATA TPRID(-3,23)/21/
1628- DATA SPROP(-3,23)/0/
1629+ DATA (SPROP(I,-3,23),I=1,1)/0/
1630 DATA (IFOREST(I,-4,23),I=1,2)/-3,4/
1631 C Diagram 24
1632 DATA MAPCONFIG(24)/24/
1633 DATA (IFOREST(I,-1,24),I=1,2)/1,5/
1634 DATA TPRID(-1,24)/21/
1635- DATA SPROP(-1,24)/0/
1636+ DATA (SPROP(I,-1,24),I=1,1)/0/
1637 DATA (IFOREST(I,-2,24),I=1,2)/-1,3/
1638 DATA TPRID(-2,24)/2/
1639- DATA SPROP(-2,24)/0/
1640+ DATA (SPROP(I,-2,24),I=1,1)/0/
1641 DATA (IFOREST(I,-3,24),I=1,2)/-2,4/
1642 DATA TPRID(-3,24)/21/
1643- DATA SPROP(-3,24)/0/
1644+ DATA (SPROP(I,-3,24),I=1,1)/0/
1645 DATA (IFOREST(I,-4,24),I=1,2)/-3,6/
1646 C Diagram 25
1647 DATA MAPCONFIG(25)/25/
1648 DATA (IFOREST(I,-1,25),I=1,2)/1,5/
1649 DATA TPRID(-1,25)/21/
1650- DATA SPROP(-1,25)/0/
1651+ DATA (SPROP(I,-1,25),I=1,1)/0/
1652 DATA (IFOREST(I,-2,25),I=1,2)/-1,4/
1653 DATA TPRID(-2,25)/2/
1654- DATA SPROP(-2,25)/0/
1655+ DATA (SPROP(I,-2,25),I=1,1)/0/
1656 DATA (IFOREST(I,-3,25),I=1,2)/-2,3/
1657 DATA TPRID(-3,25)/21/
1658- DATA SPROP(-3,25)/0/
1659+ DATA (SPROP(I,-3,25),I=1,1)/0/
1660 DATA (IFOREST(I,-4,25),I=1,2)/-3,6/
1661 C Diagram 26
1662 DATA MAPCONFIG(26)/26/
1663 DATA (IFOREST(I,-1,26),I=1,2)/4,3/
1664- DATA SPROP(-1,26)/21/
1665+ DATA (SPROP(I,-1,26),I=1,1)/21/
1666 DATA TPRID(-1,26)/0/
1667 DATA (IFOREST(I,-2,26),I=1,2)/1,5/
1668 DATA TPRID(-2,26)/21/
1669- DATA SPROP(-2,26)/0/
1670+ DATA (SPROP(I,-2,26),I=1,1)/0/
1671 DATA (IFOREST(I,-3,26),I=1,2)/-2,-1/
1672 DATA TPRID(-3,26)/21/
1673- DATA SPROP(-3,26)/0/
1674+ DATA (SPROP(I,-3,26),I=1,1)/0/
1675 DATA (IFOREST(I,-4,26),I=1,2)/-3,6/
1676 C Diagram 27
1677 DATA MAPCONFIG(27)/27/
1678 DATA (IFOREST(I,-1,27),I=1,2)/4,3/
1679- DATA SPROP(-1,27)/21/
1680+ DATA (SPROP(I,-1,27),I=1,1)/21/
1681 DATA TPRID(-1,27)/0/
1682 DATA (IFOREST(I,-2,27),I=1,2)/6,-1/
1683- DATA SPROP(-2,27)/-2/
1684+ DATA (SPROP(I,-2,27),I=1,1)/-2/
1685 DATA TPRID(-2,27)/0/
1686 DATA (IFOREST(I,-3,27),I=1,2)/1,5/
1687 DATA TPRID(-3,27)/21/
1688- DATA SPROP(-3,27)/0/
1689+ DATA (SPROP(I,-3,27),I=1,1)/0/
1690 DATA (IFOREST(I,-4,27),I=1,2)/-3,-2/
1691 C Diagram 28
1692 DATA MAPCONFIG(28)/28/
1693 DATA (IFOREST(I,-1,28),I=1,2)/4,3/
1694- DATA SPROP(-1,28)/21/
1695+ DATA (SPROP(I,-1,28),I=1,1)/21/
1696 DATA TPRID(-1,28)/0/
1697 DATA (IFOREST(I,-2,28),I=1,2)/1,5/
1698 DATA TPRID(-2,28)/21/
1699- DATA SPROP(-2,28)/0/
1700+ DATA (SPROP(I,-2,28),I=1,1)/0/
1701 DATA (IFOREST(I,-3,28),I=1,2)/-2,6/
1702 DATA TPRID(-3,28)/2/
1703- DATA SPROP(-3,28)/0/
1704+ DATA (SPROP(I,-3,28),I=1,1)/0/
1705 DATA (IFOREST(I,-4,28),I=1,2)/-3,-1/
1706 C Diagram 29
1707 DATA MAPCONFIG(29)/29/
1708 DATA (IFOREST(I,-1,29),I=1,2)/6,3/
1709- DATA SPROP(-1,29)/21/
1710+ DATA (SPROP(I,-1,29),I=1,1)/21/
1711 DATA TPRID(-1,29)/0/
1712 DATA (IFOREST(I,-2,29),I=1,2)/4,-1/
1713- DATA SPROP(-2,29)/-2/
1714+ DATA (SPROP(I,-2,29),I=1,1)/-2/
1715 DATA TPRID(-2,29)/0/
1716 DATA (IFOREST(I,-3,29),I=1,2)/1,5/
1717 DATA TPRID(-3,29)/21/
1718- DATA SPROP(-3,29)/0/
1719+ DATA (SPROP(I,-3,29),I=1,1)/0/
1720 DATA (IFOREST(I,-4,29),I=1,2)/-3,-2/
1721 C Diagram 30
1722 DATA MAPCONFIG(30)/30/
1723 DATA (IFOREST(I,-1,30),I=1,2)/6,3/
1724- DATA SPROP(-1,30)/21/
1725+ DATA (SPROP(I,-1,30),I=1,1)/21/
1726 DATA TPRID(-1,30)/0/
1727 DATA (IFOREST(I,-2,30),I=1,2)/1,5/
1728 DATA TPRID(-2,30)/21/
1729- DATA SPROP(-2,30)/0/
1730+ DATA (SPROP(I,-2,30),I=1,1)/0/
1731 DATA (IFOREST(I,-3,30),I=1,2)/-2,4/
1732 DATA TPRID(-3,30)/2/
1733- DATA SPROP(-3,30)/0/
1734+ DATA (SPROP(I,-3,30),I=1,1)/0/
1735 DATA (IFOREST(I,-4,30),I=1,2)/-3,-1/
1736 C Diagram 31
1737 DATA MAPCONFIG(31)/31/
1738 DATA (IFOREST(I,-1,31),I=1,2)/6,3/
1739- DATA SPROP(-1,31)/21/
1740+ DATA (SPROP(I,-1,31),I=1,1)/21/
1741 DATA TPRID(-1,31)/0/
1742 DATA (IFOREST(I,-2,31),I=1,2)/5,-1/
1743- DATA SPROP(-2,31)/2/
1744+ DATA (SPROP(I,-2,31),I=1,1)/2/
1745 DATA TPRID(-2,31)/0/
1746 DATA (IFOREST(I,-3,31),I=1,2)/1,-2/
1747 DATA TPRID(-3,31)/21/
1748- DATA SPROP(-3,31)/0/
1749+ DATA (SPROP(I,-3,31),I=1,1)/0/
1750 DATA (IFOREST(I,-4,31),I=1,2)/-3,4/
1751 C Diagram 32
1752 DATA MAPCONFIG(32)/32/
1753 DATA (IFOREST(I,-1,32),I=1,2)/6,3/
1754- DATA SPROP(-1,32)/21/
1755+ DATA (SPROP(I,-1,32),I=1,1)/21/
1756 DATA TPRID(-1,32)/0/
1757 DATA (IFOREST(I,-2,32),I=1,2)/1,-1/
1758 DATA TPRID(-2,32)/2/
1759- DATA SPROP(-2,32)/0/
1760+ DATA (SPROP(I,-2,32),I=1,1)/0/
1761 DATA (IFOREST(I,-3,32),I=1,2)/-2,5/
1762 DATA TPRID(-3,32)/21/
1763- DATA SPROP(-3,32)/0/
1764+ DATA (SPROP(I,-3,32),I=1,1)/0/
1765 DATA (IFOREST(I,-4,32),I=1,2)/-3,4/
1766 C Diagram 33
1767 DATA MAPCONFIG(33)/33/
1768 DATA (IFOREST(I,-1,33),I=1,2)/6,5/
1769- DATA SPROP(-1,33)/21/
1770+ DATA (SPROP(I,-1,33),I=1,1)/21/
1771 DATA TPRID(-1,33)/0/
1772 DATA (IFOREST(I,-2,33),I=1,2)/-1,3/
1773- DATA SPROP(-2,33)/2/
1774+ DATA (SPROP(I,-2,33),I=1,1)/2/
1775 DATA TPRID(-2,33)/0/
1776 DATA (IFOREST(I,-3,33),I=1,2)/1,-2/
1777 DATA TPRID(-3,33)/21/
1778- DATA SPROP(-3,33)/0/
1779+ DATA (SPROP(I,-3,33),I=1,1)/0/
1780 DATA (IFOREST(I,-4,33),I=1,2)/-3,4/
1781 C Diagram 34
1782 DATA MAPCONFIG(34)/34/
1783 DATA (IFOREST(I,-1,34),I=1,2)/6,5/
1784- DATA SPROP(-1,34)/21/
1785+ DATA (SPROP(I,-1,34),I=1,1)/21/
1786 DATA TPRID(-1,34)/0/
1787 DATA (IFOREST(I,-2,34),I=1,2)/1,-1/
1788 DATA TPRID(-2,34)/2/
1789- DATA SPROP(-2,34)/0/
1790+ DATA (SPROP(I,-2,34),I=1,1)/0/
1791 DATA (IFOREST(I,-3,34),I=1,2)/-2,3/
1792 DATA TPRID(-3,34)/21/
1793- DATA SPROP(-3,34)/0/
1794+ DATA (SPROP(I,-3,34),I=1,1)/0/
1795 DATA (IFOREST(I,-4,34),I=1,2)/-3,4/
1796 C Diagram 35
1797 DATA MAPCONFIG(35)/35/
1798 DATA (IFOREST(I,-1,35),I=1,2)/4,3/
1799- DATA SPROP(-1,35)/21/
1800+ DATA (SPROP(I,-1,35),I=1,1)/21/
1801 DATA TPRID(-1,35)/0/
1802 DATA (IFOREST(I,-2,35),I=1,2)/5,-1/
1803- DATA SPROP(-2,35)/2/
1804+ DATA (SPROP(I,-2,35),I=1,1)/2/
1805 DATA TPRID(-2,35)/0/
1806 DATA (IFOREST(I,-3,35),I=1,2)/1,-2/
1807 DATA TPRID(-3,35)/21/
1808- DATA SPROP(-3,35)/0/
1809+ DATA (SPROP(I,-3,35),I=1,1)/0/
1810 DATA (IFOREST(I,-4,35),I=1,2)/-3,6/
1811 C Diagram 36
1812 DATA MAPCONFIG(36)/36/
1813 DATA (IFOREST(I,-1,36),I=1,2)/4,3/
1814- DATA SPROP(-1,36)/21/
1815+ DATA (SPROP(I,-1,36),I=1,1)/21/
1816 DATA TPRID(-1,36)/0/
1817 DATA (IFOREST(I,-2,36),I=1,2)/1,-1/
1818 DATA TPRID(-2,36)/2/
1819- DATA SPROP(-2,36)/0/
1820+ DATA (SPROP(I,-2,36),I=1,1)/0/
1821 DATA (IFOREST(I,-3,36),I=1,2)/-2,5/
1822 DATA TPRID(-3,36)/21/
1823- DATA SPROP(-3,36)/0/
1824+ DATA (SPROP(I,-3,36),I=1,1)/0/
1825 DATA (IFOREST(I,-4,36),I=1,2)/-3,6/
1826 C Diagram 37
1827 DATA MAPCONFIG(37)/37/
1828 DATA (IFOREST(I,-1,37),I=1,2)/5,4/
1829- DATA SPROP(-1,37)/21/
1830+ DATA (SPROP(I,-1,37),I=1,1)/21/
1831 DATA TPRID(-1,37)/0/
1832 DATA (IFOREST(I,-2,37),I=1,2)/-1,3/
1833- DATA SPROP(-2,37)/2/
1834+ DATA (SPROP(I,-2,37),I=1,1)/2/
1835 DATA TPRID(-2,37)/0/
1836 DATA (IFOREST(I,-3,37),I=1,2)/1,-2/
1837 DATA TPRID(-3,37)/21/
1838- DATA SPROP(-3,37)/0/
1839+ DATA (SPROP(I,-3,37),I=1,1)/0/
1840 DATA (IFOREST(I,-4,37),I=1,2)/-3,6/
1841 C Diagram 38
1842 DATA MAPCONFIG(38)/38/
1843 DATA (IFOREST(I,-1,38),I=1,2)/5,4/
1844- DATA SPROP(-1,38)/21/
1845+ DATA (SPROP(I,-1,38),I=1,1)/21/
1846 DATA TPRID(-1,38)/0/
1847 DATA (IFOREST(I,-2,38),I=1,2)/1,-1/
1848 DATA TPRID(-2,38)/2/
1849- DATA SPROP(-2,38)/0/
1850+ DATA (SPROP(I,-2,38),I=1,1)/0/
1851 DATA (IFOREST(I,-3,38),I=1,2)/-2,3/
1852 DATA TPRID(-3,38)/21/
1853- DATA SPROP(-3,38)/0/
1854+ DATA (SPROP(I,-3,38),I=1,1)/0/
1855 DATA (IFOREST(I,-4,38),I=1,2)/-3,6/
1856 C Diagram 39
1857 DATA MAPCONFIG(39)/39/
1858 DATA (IFOREST(I,-1,39),I=1,2)/6,5/
1859- DATA SPROP(-1,39)/21/
1860+ DATA (SPROP(I,-1,39),I=1,1)/21/
1861 DATA TPRID(-1,39)/0/
1862 DATA (IFOREST(I,-2,39),I=1,2)/4,3/
1863- DATA SPROP(-2,39)/21/
1864+ DATA (SPROP(I,-2,39),I=1,1)/21/
1865 DATA TPRID(-2,39)/0/
1866 DATA (IFOREST(I,-3,39),I=1,2)/1,-2/
1867 DATA TPRID(-3,39)/2/
1868- DATA SPROP(-3,39)/0/
1869+ DATA (SPROP(I,-3,39),I=1,1)/0/
1870 DATA (IFOREST(I,-4,39),I=1,2)/-3,-1/
1871 C Diagram 40
1872 DATA MAPCONFIG(40)/40/
1873 DATA (IFOREST(I,-1,40),I=1,2)/4,3/
1874- DATA SPROP(-1,40)/21/
1875+ DATA (SPROP(I,-1,40),I=1,1)/21/
1876 DATA TPRID(-1,40)/0/
1877 DATA (IFOREST(I,-2,40),I=1,2)/6,5/
1878- DATA SPROP(-2,40)/21/
1879+ DATA (SPROP(I,-2,40),I=1,1)/21/
1880 DATA TPRID(-2,40)/0/
1881 DATA (IFOREST(I,-3,40),I=1,2)/1,-2/
1882 DATA TPRID(-3,40)/2/
1883- DATA SPROP(-3,40)/0/
1884+ DATA (SPROP(I,-3,40),I=1,1)/0/
1885 DATA (IFOREST(I,-4,40),I=1,2)/-3,-1/
1886 C Diagram 41
1887 DATA MAPCONFIG(41)/41/
1888 DATA (IFOREST(I,-1,41),I=1,2)/5,4/
1889- DATA SPROP(-1,41)/21/
1890+ DATA (SPROP(I,-1,41),I=1,1)/21/
1891 DATA TPRID(-1,41)/0/
1892 DATA (IFOREST(I,-2,41),I=1,2)/6,3/
1893- DATA SPROP(-2,41)/21/
1894+ DATA (SPROP(I,-2,41),I=1,1)/21/
1895 DATA TPRID(-2,41)/0/
1896 DATA (IFOREST(I,-3,41),I=1,2)/1,-2/
1897 DATA TPRID(-3,41)/2/
1898- DATA SPROP(-3,41)/0/
1899+ DATA (SPROP(I,-3,41),I=1,1)/0/
1900 DATA (IFOREST(I,-4,41),I=1,2)/-3,-1/
1901 C Diagram 42
1902 DATA MAPCONFIG(42)/42/
1903 DATA (IFOREST(I,-1,42),I=1,2)/6,3/
1904- DATA SPROP(-1,42)/21/
1905+ DATA (SPROP(I,-1,42),I=1,1)/21/
1906 DATA TPRID(-1,42)/0/
1907 DATA (IFOREST(I,-2,42),I=1,2)/5,4/
1908- DATA SPROP(-2,42)/21/
1909+ DATA (SPROP(I,-2,42),I=1,1)/21/
1910 DATA TPRID(-2,42)/0/
1911 DATA (IFOREST(I,-3,42),I=1,2)/1,-2/
1912 DATA TPRID(-3,42)/2/
1913- DATA SPROP(-3,42)/0/
1914+ DATA (SPROP(I,-3,42),I=1,1)/0/
1915 DATA (IFOREST(I,-4,42),I=1,2)/-3,-1/
1916 C Number of configs
1917 DATA MAPCONFIG(0)/42/
1918@@ -3360,48 +3362,48 @@
1919 self.assertEqual("\n".join(\
1920 exporter.get_icolamp_lines(mapconfigs,
1921 matrix_element, 1)),
1922- """DATA(icolamp(i,1,1),i=1,6)/.true.,.true.,.false.,.true.,.false.,.true./
1923-DATA(icolamp(i,2,1),i=1,6)/.true.,.true.,.false.,.false.,.true.,.true./
1924+ """DATA(icolamp(i,1,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1925+DATA(icolamp(i,2,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1926 DATA(icolamp(i,3,1),i=1,6)/.false.,.false.,.false.,.true.,.true.,.false./
1927-DATA(icolamp(i,4,1),i=1,6)/.true.,.true.,.true.,.true.,.false.,.false./
1928-DATA(icolamp(i,5,1),i=1,6)/.true.,.true.,.false.,.true.,.false.,.true./
1929+DATA(icolamp(i,4,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1930+DATA(icolamp(i,5,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./
1931 DATA(icolamp(i,6,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.true./
1932-DATA(icolamp(i,7,1),i=1,6)/.true.,.true.,.true.,.false.,.true.,.false./
1933-DATA(icolamp(i,8,1),i=1,6)/.true.,.true.,.false.,.false.,.true.,.true./
1934-DATA(icolamp(i,9,1),i=1,6)/.true.,.true.,.true.,.false.,.true.,.false./
1935-DATA(icolamp(i,10,1),i=1,6)/.true.,.true.,.true.,.true.,.false.,.false./
1936-DATA(icolamp(i,11,1),i=1,6)/.false.,.false.,.true.,.true.,.true.,.true./
1937-DATA(icolamp(i,12,1),i=1,6)/.false.,.true.,.true.,.true.,.true.,.false./
1938+DATA(icolamp(i,7,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1939+DATA(icolamp(i,8,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./
1940+DATA(icolamp(i,9,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1941+DATA(icolamp(i,10,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1942+DATA(icolamp(i,11,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./
1943+DATA(icolamp(i,12,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1944 DATA(icolamp(i,13,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.true./
1945-DATA(icolamp(i,14,1),i=1,6)/.true.,.false.,.true.,.false.,.true.,.true./
1946-DATA(icolamp(i,15,1),i=1,6)/.false.,.false.,.true.,.true.,.true.,.true./
1947+DATA(icolamp(i,14,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1948+DATA(icolamp(i,15,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1949 DATA(icolamp(i,16,1),i=1,6)/.true.,.false.,.false.,.true.,.false.,.false./
1950-DATA(icolamp(i,17,1),i=1,6)/.true.,.true.,.true.,.false.,.true.,.false./
1951-DATA(icolamp(i,18,1),i=1,6)/.false.,.true.,.true.,.true.,.true.,.false./
1952-DATA(icolamp(i,19,1),i=1,6)/.true.,.true.,.true.,.false.,.true.,.false./
1953-DATA(icolamp(i,20,1),i=1,6)/.true.,.false.,.true.,.false.,.true.,.true./
1954-DATA(icolamp(i,21,1),i=1,6)/.false.,.false.,.true.,.true.,.true.,.true./
1955-DATA(icolamp(i,22,1),i=1,6)/.true.,.false.,.true.,.true.,.false.,.true./
1956+DATA(icolamp(i,17,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1957+DATA(icolamp(i,18,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1958+DATA(icolamp(i,19,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1959+DATA(icolamp(i,20,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./
1960+DATA(icolamp(i,21,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1961+DATA(icolamp(i,22,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1962 DATA(icolamp(i,23,1),i=1,6)/.true.,.false.,.false.,.false.,.true.,.false./
1963-DATA(icolamp(i,24,1),i=1,6)/.false.,.false.,.true.,.true.,.true.,.true./
1964-DATA(icolamp(i,25,1),i=1,6)/.false.,.true.,.false.,.true.,.true.,.true./
1965+DATA(icolamp(i,24,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1966+DATA(icolamp(i,25,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1967 DATA(icolamp(i,26,1),i=1,6)/.false.,.true.,.true.,.false.,.false.,.false./
1968-DATA(icolamp(i,27,1),i=1,6)/.true.,.true.,.false.,.true.,.false.,.true./
1969-DATA(icolamp(i,28,1),i=1,6)/.true.,.false.,.true.,.true.,.false.,.true./
1970-DATA(icolamp(i,29,1),i=1,6)/.true.,.true.,.false.,.true.,.false.,.true./
1971-DATA(icolamp(i,30,1),i=1,6)/.false.,.true.,.false.,.true.,.true.,.true./
1972-DATA(icolamp(i,31,1),i=1,6)/.true.,.true.,.true.,.true.,.false.,.false./
1973-DATA(icolamp(i,32,1),i=1,6)/.false.,.true.,.true.,.true.,.true.,.false./
1974-DATA(icolamp(i,33,1),i=1,6)/.true.,.true.,.true.,.true.,.false.,.false./
1975-DATA(icolamp(i,34,1),i=1,6)/.true.,.false.,.true.,.true.,.false.,.true./
1976-DATA(icolamp(i,35,1),i=1,6)/.true.,.true.,.false.,.false.,.true.,.true./
1977-DATA(icolamp(i,36,1),i=1,6)/.true.,.false.,.true.,.false.,.true.,.true./
1978-DATA(icolamp(i,37,1),i=1,6)/.true.,.true.,.false.,.false.,.true.,.true./
1979-DATA(icolamp(i,38,1),i=1,6)/.false.,.true.,.false.,.true.,.true.,.true./
1980-DATA(icolamp(i,39,1),i=1,6)/.true.,.false.,.true.,.false.,.true.,.true./
1981-DATA(icolamp(i,40,1),i=1,6)/.true.,.false.,.true.,.true.,.false.,.true./
1982-DATA(icolamp(i,41,1),i=1,6)/.false.,.true.,.true.,.true.,.true.,.false./
1983-DATA(icolamp(i,42,1),i=1,6)/.false.,.true.,.false.,.true.,.true.,.true./"""
1984+DATA(icolamp(i,27,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1985+DATA(icolamp(i,28,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1986+DATA(icolamp(i,29,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1987+DATA(icolamp(i,30,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1988+DATA(icolamp(i,31,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1989+DATA(icolamp(i,32,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1990+DATA(icolamp(i,33,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1991+DATA(icolamp(i,34,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./
1992+DATA(icolamp(i,35,1),i=1,6)/.false.,.true.,.false.,.false.,.false.,.false./
1993+DATA(icolamp(i,36,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1994+DATA(icolamp(i,37,1),i=1,6)/.true.,.false.,.false.,.false.,.false.,.false./
1995+DATA(icolamp(i,38,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1996+DATA(icolamp(i,39,1),i=1,6)/.false.,.false.,.false.,.false.,.true.,.false./
1997+DATA(icolamp(i,40,1),i=1,6)/.false.,.false.,.false.,.true.,.false.,.false./
1998+DATA(icolamp(i,41,1),i=1,6)/.false.,.false.,.true.,.false.,.false.,.false./
1999+DATA(icolamp(i,42,1),i=1,6)/.false.,.false.,.false.,.false.,.false.,.true./"""
2000 )
2001
2002 # Test leshouche.inc output
2003@@ -3602,28 +3604,29 @@
2004 'AMP2(3)=AMP2(3)+AMP(5)*dconjg(AMP(5))',
2005 'AMP2(4)=AMP2(4)+AMP(6)*dconjg(AMP(6))'])
2006
2007- # Test configs file
2008+ # Test configs.inc file
2009 writer = writers.FortranWriter(self.give_pos('test'))
2010 nconfig, s_and_t_channels = exporter.write_configs_file(writer,
2011 matrix_element)
2012 writer.close()
2013+ #print open(self.give_pos('test')).read()
2014 self.assertFileContains('test',
2015 """C Diagram 2
2016 DATA MAPCONFIG(1)/2/
2017 DATA (IFOREST(I,-1,1),I=1,2)/4,3/
2018- DATA SPROP(-1,1)/21/
2019+ DATA (SPROP(I,-1,1),I=1,1)/21/
2020 DATA TPRID(-1,1)/0/
2021 C Diagram 3
2022 DATA MAPCONFIG(2)/3/
2023 DATA (IFOREST(I,-1,2),I=1,2)/1,3/
2024 DATA TPRID(-1,2)/21/
2025- DATA SPROP(-1,2)/0/
2026+ DATA (SPROP(I,-1,2),I=1,1)/0/
2027 DATA (IFOREST(I,-2,2),I=1,2)/-1,4/
2028 C Diagram 4
2029 DATA MAPCONFIG(3)/4/
2030 DATA (IFOREST(I,-1,3),I=1,2)/1,4/
2031 DATA TPRID(-1,3)/21/
2032- DATA SPROP(-1,3)/0/
2033+ DATA (SPROP(I,-1,3),I=1,1)/0/
2034 DATA (IFOREST(I,-2,3),I=1,2)/-1,3/
2035 C Number of configs
2036 DATA MAPCONFIG(0)/3/
2037@@ -4741,29 +4744,30 @@
2038 'AMP2(2)=AMP2(2)+AMP(2)*dconjg(AMP(2))',
2039 'AMP2(3)=AMP2(3)+AMP(3)*dconjg(AMP(3))'])
2040
2041- # Test configs file
2042+ # Test configs.inc file
2043 writer = writers.FortranWriter(self.give_pos('test'))
2044 nconfig, s_and_t_channels = exporter.write_configs_file(writer,
2045 matrix_element)
2046 writer.close()
2047+ #print open(self.give_pos('test')).read()
2048
2049 self.assertFileContains('test',
2050 """C Diagram 1
2051 DATA MAPCONFIG(1)/1/
2052 DATA (IFOREST(I,-1,1),I=1,2)/4,3/
2053- DATA SPROP(-1,1)/45/
2054+ DATA (SPROP(I,-1,1),I=1,1)/45/
2055 DATA TPRID(-1,1)/0/
2056 C Diagram 2
2057 DATA MAPCONFIG(2)/2/
2058 DATA (IFOREST(I,-1,2),I=1,2)/1,3/
2059 DATA TPRID(-1,2)/45/
2060- DATA SPROP(-1,2)/0/
2061+ DATA (SPROP(I,-1,2),I=1,1)/0/
2062 DATA (IFOREST(I,-2,2),I=1,2)/-1,4/
2063 C Diagram 3
2064 DATA MAPCONFIG(3)/3/
2065 DATA (IFOREST(I,-1,3),I=1,2)/1,4/
2066 DATA TPRID(-1,3)/45/
2067- DATA SPROP(-1,3)/0/
2068+ DATA (SPROP(I,-1,3),I=1,1)/0/
2069 DATA (IFOREST(I,-2,3),I=1,2)/-1,3/
2070 C Number of configs
2071 DATA MAPCONFIG(0)/3/
2072@@ -5129,46 +5133,47 @@
2073 writer = writers.FortranWriter(self.give_pos('test'))
2074 myfortranmodel = helas_call_writers.FortranHelasCallWriter(mybasemodel)
2075
2076- # Test configs file
2077+ # Test configs.inc file
2078 nconfig, s_and_t_channels = exporter.write_configs_file(writer,
2079 matrix_element)
2080 writer.close()
2081
2082 #print open(self.give_pos('test')).read()
2083+
2084 self.assertFileContains('test',
2085 """C Diagram 1
2086 DATA MAPCONFIG(1)/1/
2087 DATA (IFOREST(I,-1,1),I=1,2)/4,3/
2088- DATA SPROP(-1,1)/21/
2089+ DATA (SPROP(I,-1,1),I=1,1)/21/
2090 DATA TPRID(-1,1)/0/
2091 DATA (IFOREST(I,-2,1),I=1,2)/1,5/
2092 DATA TPRID(-2,1)/2/
2093- DATA SPROP(-2,1)/0/
2094+ DATA (SPROP(I,-2,1),I=1,1)/0/
2095 DATA (IFOREST(I,-3,1),I=1,2)/-2,-1/
2096 C Diagram 2
2097 DATA MAPCONFIG(2)/2/
2098 DATA (IFOREST(I,-1,2),I=1,2)/5,4/
2099- DATA SPROP(-1,2)/6/
2100+ DATA (SPROP(I,-1,2),I=1,1)/6/
2101 DATA TPRID(-1,2)/0/
2102 DATA (IFOREST(I,-2,2),I=1,2)/-1,3/
2103- DATA SPROP(-2,2)/21/
2104+ DATA (SPROP(I,-2,2),I=1,1)/21/
2105 DATA TPRID(-2,2)/0/
2106 C Diagram 3
2107 DATA MAPCONFIG(3)/3/
2108 DATA (IFOREST(I,-1,3),I=1,2)/5,3/
2109- DATA SPROP(-1,3)/6/
2110+ DATA (SPROP(I,-1,3),I=1,1)/6/
2111 DATA TPRID(-1,3)/0/
2112 DATA (IFOREST(I,-2,3),I=1,2)/4,-1/
2113- DATA SPROP(-2,3)/21/
2114+ DATA (SPROP(I,-2,3),I=1,1)/21/
2115 DATA TPRID(-2,3)/0/
2116 C Diagram 4
2117 DATA MAPCONFIG(4)/4/
2118 DATA (IFOREST(I,-1,4),I=1,2)/4,3/
2119- DATA SPROP(-1,4)/21/
2120+ DATA (SPROP(I,-1,4),I=1,1)/21/
2121 DATA TPRID(-1,4)/0/
2122 DATA (IFOREST(I,-2,4),I=1,2)/1,-1/
2123 DATA TPRID(-2,4)/2/
2124- DATA SPROP(-2,4)/0/
2125+ DATA (SPROP(I,-2,4),I=1,1)/0/
2126 DATA (IFOREST(I,-3,4),I=1,2)/-2,5/
2127 C Number of configs
2128 DATA MAPCONFIG(0)/4/
2129@@ -6863,155 +6868,156 @@
2130
2131 writer = writers.FortranWriter(self.give_pos('test'))
2132
2133- # Test configs file
2134+ # Test configs.inc file
2135 mapconfigs, s_and_t_channels = exporter.write_configs_file(writer,
2136 me)
2137 writer.close()
2138+ #print open(self.give_pos('test')).read()
2139
2140 self.assertFileContains('test',
2141 """C Diagram 1
2142 DATA MAPCONFIG(1)/1/
2143 DATA (IFOREST(I,-1,1),I=1,2)/8,6/
2144- DATA SPROP(-1,1)/11/
2145+ DATA (SPROP(I,-1,1),I=1,1)/11/
2146 DATA TPRID(-1,1)/0/
2147 DATA (IFOREST(I,-2,1),I=1,2)/7,-1/
2148- DATA SPROP(-2,1)/1000022/
2149+ DATA (SPROP(I,-2,1),I=1,1)/1000022/
2150 DATA TPRID(-2,1)/0/
2151 DATA (IFOREST(I,-3,1),I=1,2)/5,3/
2152- DATA SPROP(-3,1)/11/
2153+ DATA (SPROP(I,-3,1),I=1,1)/11/
2154 DATA TPRID(-3,1)/0/
2155 DATA (IFOREST(I,-4,1),I=1,2)/4,-3/
2156- DATA SPROP(-4,1)/1000022/
2157+ DATA (SPROP(I,-4,1),I=1,1)/1000022/
2158 DATA TPRID(-4,1)/0/
2159 DATA (IFOREST(I,-5,1),I=1,2)/1,-4/
2160 DATA TPRID(-5,1)/1000011/
2161- DATA SPROP(-5,1)/0/
2162+ DATA (SPROP(I,-5,1),I=1,1)/0/
2163 DATA (IFOREST(I,-6,1),I=1,2)/-5,-2/
2164 C Diagram 2
2165 DATA MAPCONFIG(2)/2/
2166 DATA (IFOREST(I,-1,2),I=1,2)/8,7/
2167- DATA SPROP(-1,2)/-1000011/
2168+ DATA (SPROP(I,-1,2),I=1,1)/-1000011/
2169 DATA TPRID(-1,2)/0/
2170 DATA (IFOREST(I,-2,2),I=1,2)/-1,6/
2171- DATA SPROP(-2,2)/1000022/
2172+ DATA (SPROP(I,-2,2),I=1,1)/1000022/
2173 DATA TPRID(-2,2)/0/
2174 DATA (IFOREST(I,-3,2),I=1,2)/5,3/
2175- DATA SPROP(-3,2)/11/
2176+ DATA (SPROP(I,-3,2),I=1,1)/11/
2177 DATA TPRID(-3,2)/0/
2178 DATA (IFOREST(I,-4,2),I=1,2)/4,-3/
2179- DATA SPROP(-4,2)/1000022/
2180+ DATA (SPROP(I,-4,2),I=1,1)/1000022/
2181 DATA TPRID(-4,2)/0/
2182 DATA (IFOREST(I,-5,2),I=1,2)/1,-4/
2183 DATA TPRID(-5,2)/1000011/
2184- DATA SPROP(-5,2)/0/
2185+ DATA (SPROP(I,-5,2),I=1,1)/0/
2186 DATA (IFOREST(I,-6,2),I=1,2)/-5,-2/
2187 C Diagram 3
2188 DATA MAPCONFIG(3)/3/
2189 DATA (IFOREST(I,-1,3),I=1,2)/8,6/
2190- DATA SPROP(-1,3)/11/
2191+ DATA (SPROP(I,-1,3),I=1,1)/11/
2192 DATA TPRID(-1,3)/0/
2193 DATA (IFOREST(I,-2,3),I=1,2)/7,-1/
2194- DATA SPROP(-2,3)/1000022/
2195+ DATA (SPROP(I,-2,3),I=1,1)/1000022/
2196 DATA TPRID(-2,3)/0/
2197 DATA (IFOREST(I,-3,3),I=1,2)/5,4/
2198- DATA SPROP(-3,3)/-1000011/
2199+ DATA (SPROP(I,-3,3),I=1,1)/-1000011/
2200 DATA TPRID(-3,3)/0/
2201 DATA (IFOREST(I,-4,3),I=1,2)/-3,3/
2202- DATA SPROP(-4,3)/1000022/
2203+ DATA (SPROP(I,-4,3),I=1,1)/1000022/
2204 DATA TPRID(-4,3)/0/
2205 DATA (IFOREST(I,-5,3),I=1,2)/1,-4/
2206 DATA TPRID(-5,3)/1000011/
2207- DATA SPROP(-5,3)/0/
2208+ DATA (SPROP(I,-5,3),I=1,1)/0/
2209 DATA (IFOREST(I,-6,3),I=1,2)/-5,-2/
2210 C Diagram 4
2211 DATA MAPCONFIG(4)/4/
2212 DATA (IFOREST(I,-1,4),I=1,2)/8,7/
2213- DATA SPROP(-1,4)/-1000011/
2214+ DATA (SPROP(I,-1,4),I=1,1)/-1000011/
2215 DATA TPRID(-1,4)/0/
2216 DATA (IFOREST(I,-2,4),I=1,2)/-1,6/
2217- DATA SPROP(-2,4)/1000022/
2218+ DATA (SPROP(I,-2,4),I=1,1)/1000022/
2219 DATA TPRID(-2,4)/0/
2220 DATA (IFOREST(I,-3,4),I=1,2)/5,4/
2221- DATA SPROP(-3,4)/-1000011/
2222+ DATA (SPROP(I,-3,4),I=1,1)/-1000011/
2223 DATA TPRID(-3,4)/0/
2224 DATA (IFOREST(I,-4,4),I=1,2)/-3,3/
2225- DATA SPROP(-4,4)/1000022/
2226+ DATA (SPROP(I,-4,4),I=1,1)/1000022/
2227 DATA TPRID(-4,4)/0/
2228 DATA (IFOREST(I,-5,4),I=1,2)/1,-4/
2229 DATA TPRID(-5,4)/1000011/
2230- DATA SPROP(-5,4)/0/
2231+ DATA (SPROP(I,-5,4),I=1,1)/0/
2232 DATA (IFOREST(I,-6,4),I=1,2)/-5,-2/
2233 C Diagram 5
2234 DATA MAPCONFIG(5)/5/
2235 DATA (IFOREST(I,-1,5),I=1,2)/5,3/
2236- DATA SPROP(-1,5)/11/
2237+ DATA (SPROP(I,-1,5),I=1,1)/11/
2238 DATA TPRID(-1,5)/0/
2239 DATA (IFOREST(I,-2,5),I=1,2)/4,-1/
2240- DATA SPROP(-2,5)/1000022/
2241+ DATA (SPROP(I,-2,5),I=1,1)/1000022/
2242 DATA TPRID(-2,5)/0/
2243 DATA (IFOREST(I,-3,5),I=1,2)/8,6/
2244- DATA SPROP(-3,5)/11/
2245+ DATA (SPROP(I,-3,5),I=1,1)/11/
2246 DATA TPRID(-3,5)/0/
2247 DATA (IFOREST(I,-4,5),I=1,2)/7,-3/
2248- DATA SPROP(-4,5)/1000022/
2249+ DATA (SPROP(I,-4,5),I=1,1)/1000022/
2250 DATA TPRID(-4,5)/0/
2251 DATA (IFOREST(I,-5,5),I=1,2)/1,-4/
2252 DATA TPRID(-5,5)/1000011/
2253- DATA SPROP(-5,5)/0/
2254+ DATA (SPROP(I,-5,5),I=1,1)/0/
2255 DATA (IFOREST(I,-6,5),I=1,2)/-5,-2/
2256 C Diagram 6
2257 DATA MAPCONFIG(6)/6/
2258 DATA (IFOREST(I,-1,6),I=1,2)/5,3/
2259- DATA SPROP(-1,6)/11/
2260+ DATA (SPROP(I,-1,6),I=1,1)/11/
2261 DATA TPRID(-1,6)/0/
2262 DATA (IFOREST(I,-2,6),I=1,2)/4,-1/
2263- DATA SPROP(-2,6)/1000022/
2264+ DATA (SPROP(I,-2,6),I=1,1)/1000022/
2265 DATA TPRID(-2,6)/0/
2266 DATA (IFOREST(I,-3,6),I=1,2)/8,7/
2267- DATA SPROP(-3,6)/-1000011/
2268+ DATA (SPROP(I,-3,6),I=1,1)/-1000011/
2269 DATA TPRID(-3,6)/0/
2270 DATA (IFOREST(I,-4,6),I=1,2)/-3,6/
2271- DATA SPROP(-4,6)/1000022/
2272+ DATA (SPROP(I,-4,6),I=1,1)/1000022/
2273 DATA TPRID(-4,6)/0/
2274 DATA (IFOREST(I,-5,6),I=1,2)/1,-4/
2275 DATA TPRID(-5,6)/1000011/
2276- DATA SPROP(-5,6)/0/
2277+ DATA (SPROP(I,-5,6),I=1,1)/0/
2278 DATA (IFOREST(I,-6,6),I=1,2)/-5,-2/
2279 C Diagram 7
2280 DATA MAPCONFIG(7)/7/
2281 DATA (IFOREST(I,-1,7),I=1,2)/5,4/
2282- DATA SPROP(-1,7)/-1000011/
2283+ DATA (SPROP(I,-1,7),I=1,1)/-1000011/
2284 DATA TPRID(-1,7)/0/
2285 DATA (IFOREST(I,-2,7),I=1,2)/-1,3/
2286- DATA SPROP(-2,7)/1000022/
2287+ DATA (SPROP(I,-2,7),I=1,1)/1000022/
2288 DATA TPRID(-2,7)/0/
2289 DATA (IFOREST(I,-3,7),I=1,2)/8,6/
2290- DATA SPROP(-3,7)/11/
2291+ DATA (SPROP(I,-3,7),I=1,1)/11/
2292 DATA TPRID(-3,7)/0/
2293 DATA (IFOREST(I,-4,7),I=1,2)/7,-3/
2294- DATA SPROP(-4,7)/1000022/
2295+ DATA (SPROP(I,-4,7),I=1,1)/1000022/
2296 DATA TPRID(-4,7)/0/
2297 DATA (IFOREST(I,-5,7),I=1,2)/1,-4/
2298 DATA TPRID(-5,7)/1000011/
2299- DATA SPROP(-5,7)/0/
2300+ DATA (SPROP(I,-5,7),I=1,1)/0/
2301 DATA (IFOREST(I,-6,7),I=1,2)/-5,-2/
2302 C Diagram 8
2303 DATA MAPCONFIG(8)/8/
2304 DATA (IFOREST(I,-1,8),I=1,2)/5,4/
2305- DATA SPROP(-1,8)/-1000011/
2306+ DATA (SPROP(I,-1,8),I=1,1)/-1000011/
2307 DATA TPRID(-1,8)/0/
2308 DATA (IFOREST(I,-2,8),I=1,2)/-1,3/
2309- DATA SPROP(-2,8)/1000022/
2310+ DATA (SPROP(I,-2,8),I=1,1)/1000022/
2311 DATA TPRID(-2,8)/0/
2312 DATA (IFOREST(I,-3,8),I=1,2)/8,7/
2313- DATA SPROP(-3,8)/-1000011/
2314+ DATA (SPROP(I,-3,8),I=1,1)/-1000011/
2315 DATA TPRID(-3,8)/0/
2316 DATA (IFOREST(I,-4,8),I=1,2)/-3,6/
2317- DATA SPROP(-4,8)/1000022/
2318+ DATA (SPROP(I,-4,8),I=1,1)/1000022/
2319 DATA TPRID(-4,8)/0/
2320 DATA (IFOREST(I,-5,8),I=1,2)/1,-4/
2321 DATA TPRID(-5,8)/1000011/
2322- DATA SPROP(-5,8)/0/
2323+ DATA (SPROP(I,-5,8),I=1,1)/0/
2324 DATA (IFOREST(I,-6,8),I=1,2)/-5,-2/
2325 C Number of configs
2326 DATA MAPCONFIG(0)/8/
2327@@ -8051,6 +8057,7 @@
2328 nconfig, s_and_t_channels = exporter.write_configs_file(writer,
2329 me)
2330 writer.close()
2331+ #print open(self.give_pos('test')).read()
2332
2333 # 2 21 > 6 -6 23 2
2334 # 1 2 3 4 5 6
2335@@ -8058,220 +8065,124 @@
2336 """C Diagram 1
2337 DATA MAPCONFIG(1)/1/
2338 DATA (IFOREST(I,-1,1),I=1,2)/5,3/
2339- DATA SPROP(-1,1)/6/
2340+ DATA (SPROP(I,-1,1),I=1,1)/6/
2341 DATA TPRID(-1,1)/0/
2342 DATA (IFOREST(I,-2,1),I=1,2)/4,-1/
2343- DATA SPROP(-2,1)/21/
2344+ DATA (SPROP(I,-2,1),I=1,1)/21/
2345 DATA TPRID(-2,1)/0/
2346 DATA (IFOREST(I,-3,1),I=1,2)/6,-2/
2347- DATA SPROP(-3,1)/2/
2348+ DATA (SPROP(I,-3,1),I=1,1)/2/
2349 DATA TPRID(-3,1)/0/
2350 C Diagram 2
2351 DATA MAPCONFIG(2)/2/
2352 DATA (IFOREST(I,-1,2),I=1,2)/5,4/
2353- DATA SPROP(-1,2)/-6/
2354+ DATA (SPROP(I,-1,2),I=1,1)/-6/
2355 DATA TPRID(-1,2)/0/
2356 DATA (IFOREST(I,-2,2),I=1,2)/-1,3/
2357- DATA SPROP(-2,2)/21/
2358+ DATA (SPROP(I,-2,2),I=1,1)/21/
2359 DATA TPRID(-2,2)/0/
2360 DATA (IFOREST(I,-3,2),I=1,2)/6,-2/
2361- DATA SPROP(-3,2)/2/
2362+ DATA (SPROP(I,-3,2),I=1,1)/2/
2363 DATA TPRID(-3,2)/0/
2364 C Diagram 3
2365 DATA MAPCONFIG(3)/3/
2366 DATA (IFOREST(I,-1,3),I=1,2)/1,6/
2367 DATA TPRID(-1,3)/21/
2368- DATA SPROP(-1,3)/0/
2369+ DATA (SPROP(I,-1,3),I=1,1)/0/
2370 DATA (IFOREST(I,-2,3),I=1,2)/-1,4/
2371 DATA TPRID(-2,3)/6/
2372- DATA SPROP(-2,3)/0/
2373+ DATA (SPROP(I,-2,3),I=1,1)/0/
2374 DATA (IFOREST(I,-3,3),I=1,2)/-2,5/
2375 DATA TPRID(-3,3)/6/
2376- DATA SPROP(-3,3)/0/
2377+ DATA (SPROP(I,-3,3),I=1,1)/0/
2378 DATA (IFOREST(I,-4,3),I=1,2)/-3,3/
2379 C Diagram 4
2380 DATA MAPCONFIG(4)/4/
2381 DATA (IFOREST(I,-1,4),I=1,2)/5,4/
2382- DATA SPROP(-1,4)/-6/
2383+ DATA (SPROP(I,-1,4),I=1,1)/-6/
2384 DATA TPRID(-1,4)/0/
2385 DATA (IFOREST(I,-2,4),I=1,2)/1,6/
2386 DATA TPRID(-2,4)/21/
2387- DATA SPROP(-2,4)/0/
2388+ DATA (SPROP(I,-2,4),I=1,1)/0/
2389 DATA (IFOREST(I,-3,4),I=1,2)/-2,-1/
2390 DATA TPRID(-3,4)/6/
2391- DATA SPROP(-3,4)/0/
2392+ DATA (SPROP(I,-3,4),I=1,1)/0/
2393 DATA (IFOREST(I,-4,4),I=1,2)/-3,3/
2394 C Diagram 5
2395 DATA MAPCONFIG(5)/5/
2396 DATA (IFOREST(I,-1,5),I=1,2)/1,6/
2397 DATA TPRID(-1,5)/21/
2398- DATA SPROP(-1,5)/0/
2399+ DATA (SPROP(I,-1,5),I=1,1)/0/
2400 DATA (IFOREST(I,-2,5),I=1,2)/-1,3/
2401 DATA TPRID(-2,5)/6/
2402- DATA SPROP(-2,5)/0/
2403+ DATA (SPROP(I,-2,5),I=1,1)/0/
2404 DATA (IFOREST(I,-3,5),I=1,2)/-2,5/
2405 DATA TPRID(-3,5)/6/
2406- DATA SPROP(-3,5)/0/
2407+ DATA (SPROP(I,-3,5),I=1,1)/0/
2408 DATA (IFOREST(I,-4,5),I=1,2)/-3,4/
2409 C Diagram 6
2410 DATA MAPCONFIG(6)/6/
2411 DATA (IFOREST(I,-1,6),I=1,2)/5,3/
2412- DATA SPROP(-1,6)/6/
2413+ DATA (SPROP(I,-1,6),I=1,1)/6/
2414 DATA TPRID(-1,6)/0/
2415 DATA (IFOREST(I,-2,6),I=1,2)/1,6/
2416 DATA TPRID(-2,6)/21/
2417- DATA SPROP(-2,6)/0/
2418+ DATA (SPROP(I,-2,6),I=1,1)/0/
2419 DATA (IFOREST(I,-3,6),I=1,2)/-2,-1/
2420 DATA TPRID(-3,6)/6/
2421- DATA SPROP(-3,6)/0/
2422+ DATA (SPROP(I,-3,6),I=1,1)/0/
2423 DATA (IFOREST(I,-4,6),I=1,2)/-3,4/
2424 C Diagram 7
2425 DATA MAPCONFIG(7)/7/
2426 DATA (IFOREST(I,-1,7),I=1,2)/5,3/
2427- DATA SPROP(-1,7)/6/
2428+ DATA (SPROP(I,-1,7),I=1,1)/6/
2429 DATA TPRID(-1,7)/0/
2430 DATA (IFOREST(I,-2,7),I=1,2)/1,6/
2431 DATA TPRID(-2,7)/21/
2432- DATA SPROP(-2,7)/0/
2433+ DATA (SPROP(I,-2,7),I=1,1)/0/
2434 DATA (IFOREST(I,-3,7),I=1,2)/-2,4/
2435 DATA TPRID(-3,7)/6/
2436- DATA SPROP(-3,7)/0/
2437+ DATA (SPROP(I,-3,7),I=1,1)/0/
2438 DATA (IFOREST(I,-4,7),I=1,2)/-3,-1/
2439 C Diagram 8
2440 DATA MAPCONFIG(8)/8/
2441 DATA (IFOREST(I,-1,8),I=1,2)/5,4/
2442- DATA SPROP(-1,8)/-6/
2443+ DATA (SPROP(I,-1,8),I=1,1)/-6/
2444 DATA TPRID(-1,8)/0/
2445 DATA (IFOREST(I,-2,8),I=1,2)/1,6/
2446 DATA TPRID(-2,8)/21/
2447- DATA SPROP(-2,8)/0/
2448+ DATA (SPROP(I,-2,8),I=1,1)/0/
2449 DATA (IFOREST(I,-3,8),I=1,2)/-2,3/
2450 DATA TPRID(-3,8)/6/
2451- DATA SPROP(-3,8)/0/
2452+ DATA (SPROP(I,-3,8),I=1,1)/0/
2453 DATA (IFOREST(I,-4,8),I=1,2)/-3,-1/
2454 C Diagram 9
2455 DATA MAPCONFIG(9)/9/
2456 DATA (IFOREST(I,-1,9),I=1,2)/5,3/
2457- DATA SPROP(-1,9)/6/
2458+ DATA (SPROP(I,-1,9),I=1,1)/6/
2459 DATA TPRID(-1,9)/0/
2460 DATA (IFOREST(I,-2,9),I=1,2)/4,-1/
2461- DATA SPROP(-2,9)/21/
2462+ DATA (SPROP(I,-2,9),I=1,1)/21/
2463 DATA TPRID(-2,9)/0/
2464 DATA (IFOREST(I,-3,9),I=1,2)/1,-2/
2465 DATA TPRID(-3,9)/2/
2466- DATA SPROP(-3,9)/0/
2467+ DATA (SPROP(I,-3,9),I=1,1)/0/
2468 DATA (IFOREST(I,-4,9),I=1,2)/-3,6/
2469 C Diagram 10
2470 DATA MAPCONFIG(10)/10/
2471 DATA (IFOREST(I,-1,10),I=1,2)/5,4/
2472- DATA SPROP(-1,10)/-6/
2473+ DATA (SPROP(I,-1,10),I=1,1)/-6/
2474 DATA TPRID(-1,10)/0/
2475 DATA (IFOREST(I,-2,10),I=1,2)/-1,3/
2476- DATA SPROP(-2,10)/21/
2477+ DATA (SPROP(I,-2,10),I=1,1)/21/
2478 DATA TPRID(-2,10)/0/
2479 DATA (IFOREST(I,-3,10),I=1,2)/1,-2/
2480 DATA TPRID(-3,10)/2/
2481- DATA SPROP(-3,10)/0/
2482+ DATA (SPROP(I,-3,10),I=1,1)/0/
2483 DATA (IFOREST(I,-4,10),I=1,2)/-3,6/
2484 C Number of configs
2485 DATA MAPCONFIG(0)/10/
2486 """)
2487- # Test props.inc
2488- writer = writers.FortranWriter(self.give_pos('test'))
2489- exporter.write_props_file(writer, me, s_and_t_channels)
2490- writer.close()
2491- self.assertFileContains('test',
2492-""" PMASS(-1,1) = ABS(MT)
2493- PWIDTH(-1,1) = ABS(WT)
2494- POW(-1,1) = 1
2495- PMASS(-2,1) = ZERO
2496- PWIDTH(-2,1) = ZERO
2497- POW(-2,1) = 2
2498- PMASS(-3,1) = ZERO
2499- PWIDTH(-3,1) = ZERO
2500- POW(-3,1) = 1
2501- PMASS(-1,2) = ABS(MT)
2502- PWIDTH(-1,2) = ABS(WT)
2503- POW(-1,2) = 1
2504- PMASS(-2,2) = ZERO
2505- PWIDTH(-2,2) = ZERO
2506- POW(-2,2) = 2
2507- PMASS(-3,2) = ZERO
2508- PWIDTH(-3,2) = ZERO
2509- POW(-3,2) = 1
2510- PMASS(-1,3) = ZERO
2511- PWIDTH(-1,3) = ZERO
2512- POW(-1,3) = 2
2513- PMASS(-2,3) = ABS(MT)
2514- PWIDTH(-2,3) = ABS(WT)
2515- POW(-2,3) = 1
2516- PMASS(-3,3) = ABS(MT)
2517- PWIDTH(-3,3) = ABS(WT)
2518- POW(-3,3) = 1
2519- PMASS(-1,4) = ABS(MT)
2520- PWIDTH(-1,4) = ABS(WT)
2521- POW(-1,4) = 1
2522- PMASS(-2,4) = ZERO
2523- PWIDTH(-2,4) = ZERO
2524- POW(-2,4) = 2
2525- PMASS(-3,4) = ABS(MT)
2526- PWIDTH(-3,4) = ABS(WT)
2527- POW(-3,4) = 1
2528- PMASS(-1,5) = ZERO
2529- PWIDTH(-1,5) = ZERO
2530- POW(-1,5) = 2
2531- PMASS(-2,5) = ABS(MT)
2532- PWIDTH(-2,5) = ABS(WT)
2533- POW(-2,5) = 1
2534- PMASS(-3,5) = ABS(MT)
2535- PWIDTH(-3,5) = ABS(WT)
2536- POW(-3,5) = 1
2537- PMASS(-1,6) = ABS(MT)
2538- PWIDTH(-1,6) = ABS(WT)
2539- POW(-1,6) = 1
2540- PMASS(-2,6) = ZERO
2541- PWIDTH(-2,6) = ZERO
2542- POW(-2,6) = 2
2543- PMASS(-3,6) = ABS(MT)
2544- PWIDTH(-3,6) = ABS(WT)
2545- POW(-3,6) = 1
2546- PMASS(-1,7) = ABS(MT)
2547- PWIDTH(-1,7) = ABS(WT)
2548- POW(-1,7) = 1
2549- PMASS(-2,7) = ZERO
2550- PWIDTH(-2,7) = ZERO
2551- POW(-2,7) = 2
2552- PMASS(-3,7) = ABS(MT)
2553- PWIDTH(-3,7) = ABS(WT)
2554- POW(-3,7) = 1
2555- PMASS(-1,8) = ABS(MT)
2556- PWIDTH(-1,8) = ABS(WT)
2557- POW(-1,8) = 1
2558- PMASS(-2,8) = ZERO
2559- PWIDTH(-2,8) = ZERO
2560- POW(-2,8) = 2
2561- PMASS(-3,8) = ABS(MT)
2562- PWIDTH(-3,8) = ABS(WT)
2563- POW(-3,8) = 1
2564- PMASS(-1,9) = ABS(MT)
2565- PWIDTH(-1,9) = ABS(WT)
2566- POW(-1,9) = 1
2567- PMASS(-2,9) = ZERO
2568- PWIDTH(-2,9) = ZERO
2569- POW(-2,9) = 2
2570- PMASS(-3,9) = ZERO
2571- PWIDTH(-3,9) = ZERO
2572- POW(-3,9) = 1
2573- PMASS(-1,10) = ABS(MT)
2574- PWIDTH(-1,10) = ABS(WT)
2575- POW(-1,10) = 1
2576- PMASS(-2,10) = ZERO
2577- PWIDTH(-2,10) = ZERO
2578- POW(-2,10) = 2
2579- PMASS(-3,10) = ZERO
2580- PWIDTH(-3,10) = ZERO
2581- POW(-3,10) = 1
2582-""")
2583
2584 def test_configs_long_decay(self):
2585 """Test configs.inc which previously failed.
2586@@ -8428,72 +8339,74 @@
2587 nconfig, s_and_t_channels = exporter.write_configs_file(writer, me)
2588 writer.close()
2589
2590+ #print open(self.give_pos('test')).read()
2591+
2592 self.assertFileContains('test',
2593 """C Diagram 1
2594 DATA MAPCONFIG(1)/1/
2595 DATA (IFOREST(I,-1,1),I=1,2)/3,2/
2596- DATA SPROP(-1,1)/5/
2597+ DATA (SPROP(I,-1,1),I=1,1)/5/
2598 DATA TPRID(-1,1)/0/
2599 DATA (IFOREST(I,-2,1),I=1,2)/4,-1/
2600- DATA SPROP(-2,1)/6/
2601+ DATA (SPROP(I,-2,1),I=1,1)/6/
2602 DATA TPRID(-2,1)/0/
2603 DATA (IFOREST(I,-3,1),I=1,2)/5,-2/
2604- DATA SPROP(-3,1)/6/
2605+ DATA (SPROP(I,-3,1),I=1,1)/6/
2606 DATA TPRID(-3,1)/0/
2607 C Diagram 2
2608 DATA MAPCONFIG(2)/2/
2609 DATA (IFOREST(I,-1,2),I=1,2)/3,2/
2610- DATA SPROP(-1,2)/5/
2611+ DATA (SPROP(I,-1,2),I=1,1)/5/
2612 DATA TPRID(-1,2)/0/
2613 DATA (IFOREST(I,-2,2),I=1,2)/5,-1/
2614- DATA SPROP(-2,2)/5/
2615+ DATA (SPROP(I,-2,2),I=1,1)/5/
2616 DATA TPRID(-2,2)/0/
2617 DATA (IFOREST(I,-3,2),I=1,2)/4,-2/
2618- DATA SPROP(-3,2)/6/
2619+ DATA (SPROP(I,-3,2),I=1,1)/6/
2620 DATA TPRID(-3,2)/0/
2621 C Diagram 3
2622 DATA MAPCONFIG(3)/3/
2623 DATA (IFOREST(I,-1,3),I=1,2)/4,3/
2624- DATA SPROP(-1,3)/6/
2625+ DATA (SPROP(I,-1,3),I=1,1)/6/
2626 DATA TPRID(-1,3)/0/
2627 DATA (IFOREST(I,-2,3),I=1,2)/-1,2/
2628- DATA SPROP(-2,3)/6/
2629+ DATA (SPROP(I,-2,3),I=1,1)/6/
2630 DATA TPRID(-2,3)/0/
2631 DATA (IFOREST(I,-3,3),I=1,2)/5,-2/
2632- DATA SPROP(-3,3)/6/
2633+ DATA (SPROP(I,-3,3),I=1,1)/6/
2634 DATA TPRID(-3,3)/0/
2635 C Diagram 4
2636 DATA MAPCONFIG(4)/4/
2637 DATA (IFOREST(I,-1,4),I=1,2)/4,3/
2638- DATA SPROP(-1,4)/6/
2639+ DATA (SPROP(I,-1,4),I=1,1)/6/
2640 DATA TPRID(-1,4)/0/
2641 DATA (IFOREST(I,-2,4),I=1,2)/5,-1/
2642- DATA SPROP(-2,4)/6/
2643+ DATA (SPROP(I,-2,4),I=1,1)/6/
2644 DATA TPRID(-2,4)/0/
2645 DATA (IFOREST(I,-3,4),I=1,2)/-2,2/
2646- DATA SPROP(-3,4)/6/
2647+ DATA (SPROP(I,-3,4),I=1,1)/6/
2648 DATA TPRID(-3,4)/0/
2649 C Diagram 5
2650 DATA MAPCONFIG(5)/5/
2651 DATA (IFOREST(I,-1,5),I=1,2)/5,3/
2652- DATA SPROP(-1,5)/5/
2653+ DATA (SPROP(I,-1,5),I=1,1)/5/
2654 DATA TPRID(-1,5)/0/
2655 DATA (IFOREST(I,-2,5),I=1,2)/-1,2/
2656- DATA SPROP(-2,5)/5/
2657+ DATA (SPROP(I,-2,5),I=1,1)/5/
2658 DATA TPRID(-2,5)/0/
2659 DATA (IFOREST(I,-3,5),I=1,2)/4,-2/
2660- DATA SPROP(-3,5)/6/
2661+ DATA (SPROP(I,-3,5),I=1,1)/6/
2662 DATA TPRID(-3,5)/0/
2663 C Diagram 6
2664 DATA MAPCONFIG(6)/6/
2665 DATA (IFOREST(I,-1,6),I=1,2)/5,3/
2666- DATA SPROP(-1,6)/5/
2667+ DATA (SPROP(I,-1,6),I=1,1)/5/
2668 DATA TPRID(-1,6)/0/
2669 DATA (IFOREST(I,-2,6),I=1,2)/4,-1/
2670- DATA SPROP(-2,6)/6/
2671+ DATA (SPROP(I,-2,6),I=1,1)/6/
2672 DATA TPRID(-2,6)/0/
2673 DATA (IFOREST(I,-3,6),I=1,2)/-2,2/
2674- DATA SPROP(-3,6)/6/
2675+ DATA (SPROP(I,-3,6),I=1,1)/6/
2676 DATA TPRID(-3,6)/0/
2677 C Number of configs
2678 DATA MAPCONFIG(0)/6/
2679
2680=== modified file 'tests/unit_tests/iolibs/test_group_subprocs.py'
2681--- tests/unit_tests/iolibs/test_group_subprocs.py 2011-07-21 15:36:06 +0000
2682+++ tests/unit_tests/iolibs/test_group_subprocs.py 2011-09-01 14:57:19 +0000
2683@@ -531,3 +531,236 @@
2684 self.assertEqual(group.get('name'),
2685 group_names[igroup])
2686
2687+ def test_special_group_decay_chain(self):
2688+ """Test group_amplitudes for special decay chains."""
2689+
2690+ mypartlist = base_objects.ParticleList()
2691+ myinterlist = base_objects.InteractionList()
2692+
2693+ # A gluon
2694+ mypartlist.append(base_objects.Particle({'name':'g',
2695+ 'antiname':'g',
2696+ 'spin':3,
2697+ 'color':1,
2698+ 'mass':'zero',
2699+ 'width':'zero',
2700+ 'texname':'g',
2701+ 'antitexname':'g',
2702+ 'line':'curly',
2703+ 'charge':0.,
2704+ 'pdg_code':21,
2705+ 'propagating':True,
2706+ 'is_part':True,
2707+ 'self_antipart':True}))
2708+ g = mypartlist[-1]
2709+
2710+ # A gluino
2711+ mypartlist.append(base_objects.Particle({'name':'go',
2712+ 'antiname':'go',
2713+ 'spin':2,
2714+ 'color':1,
2715+ 'mass':'MGO',
2716+ 'width':'WGO',
2717+ 'texname':'go',
2718+ 'antitexname':'go',
2719+ 'line':'curly',
2720+ 'charge':0.,
2721+ 'pdg_code':1000021,
2722+ 'propagating':True,
2723+ 'is_part':True,
2724+ 'self_antipart':True}))
2725+ go = mypartlist[-1]
2726+
2727+ # A quark D and its antiparticle
2728+ mypartlist.append(base_objects.Particle({'name':'d',
2729+ 'antiname':'d~',
2730+ 'spin':2,
2731+ 'color':1,
2732+ 'mass':'zero',
2733+ 'width':'zero',
2734+ 'texname':'d',
2735+ 'antitexname':'\bar d',
2736+ 'line':'straight',
2737+ 'charge':-1. / 3.,
2738+ 'pdg_code':1,
2739+ 'propagating':True,
2740+ 'is_part':True,
2741+ 'self_antipart':False}))
2742+ d = mypartlist[-1]
2743+ antid = copy.copy(d)
2744+ antid.set('is_part', False)
2745+
2746+ # A d squark and its antiparticle
2747+ mypartlist.append(base_objects.Particle({'name':'dl',
2748+ 'antiname':'dl~',
2749+ 'spin':0,
2750+ 'color':1,
2751+ 'mass':'MDL',
2752+ 'width':'WDL',
2753+ 'texname':'dl',
2754+ 'antitexname':'\bar dl',
2755+ 'line':'straight',
2756+ 'charge':-1. / 3.,
2757+ 'pdg_code':1000001,
2758+ 'propagating':True,
2759+ 'is_part':True,
2760+ 'self_antipart':False}))
2761+ dl = mypartlist[-1]
2762+ antidl = copy.copy(dl)
2763+ antidl.set('is_part', False)
2764+
2765+ # A neutralino
2766+ mypartlist.append(base_objects.Particle({'name':'n1',
2767+ 'antiname':'n1',
2768+ 'spin':2,
2769+ 'color':1,
2770+ 'mass':'MN1',
2771+ 'width':'WN1',
2772+ 'texname':'n1',
2773+ 'antitexname':'n1',
2774+ 'line':'wavy',
2775+ 'charge':0.,
2776+ 'pdg_code':1000022,
2777+ 'propagating':True,
2778+ 'is_part':True,
2779+ 'self_antipart':True}))
2780+ n1 = mypartlist[-1]
2781+
2782+ # 3 gluon vertiex
2783+ myinterlist.append(base_objects.Interaction({
2784+ 'id': 1,
2785+ 'particles': base_objects.ParticleList(\
2786+ [g] * 3),
2787+ 'color': [],
2788+ 'lorentz':['L1'],
2789+ 'couplings':{(0, 0):'G'},
2790+ 'orders':{'QCD':1}}))
2791+
2792+ # Gluon couplings to gluinos
2793+ myinterlist.append(base_objects.Interaction({
2794+ 'id': 3,
2795+ 'particles': base_objects.ParticleList(\
2796+ [go, \
2797+ go, \
2798+ g]),
2799+ 'color': [],
2800+ 'lorentz':['L1'],
2801+ 'couplings':{(0, 0):'GQQ'},
2802+ 'orders':{'QCD':1}}))
2803+
2804+ # Gluino and neutralino couplings to quarks and squarks
2805+ myinterlist.append(base_objects.Interaction({
2806+ 'id': 4,
2807+ 'particles': base_objects.ParticleList(\
2808+ [go,
2809+ d,
2810+ antidl]),
2811+ 'color': [],
2812+ 'lorentz':['L1'],
2813+ 'couplings':{(0, 0):'GQED'},
2814+ 'orders':{'QCD':1}}))
2815+
2816+ myinterlist.append(base_objects.Interaction({
2817+ 'id': 5,
2818+ 'particles': base_objects.ParticleList(\
2819+ [antid,
2820+ go,
2821+ dl]),
2822+ 'color': [],
2823+ 'lorentz':['L1'],
2824+ 'couplings':{(0, 0):'GQED'},
2825+ 'orders':{'QCD':1}}))
2826+
2827+ myinterlist.append(base_objects.Interaction({
2828+ 'id': 6,
2829+ 'particles': base_objects.ParticleList(\
2830+ [n1, \
2831+ d, \
2832+ antidl]),
2833+ 'color': [],
2834+ 'lorentz':['L1'],
2835+ 'couplings':{(0, 0):'GQQ'},
2836+ 'orders':{'QED':1}}))
2837+
2838+ myinterlist.append(base_objects.Interaction({
2839+ 'id': 7,
2840+ 'particles': base_objects.ParticleList(\
2841+ [antid, \
2842+ n1, \
2843+ dl]),
2844+ 'color': [],
2845+ 'lorentz':['L1'],
2846+ 'couplings':{(0, 0):'GQQ'},
2847+ 'orders':{'QED':1}}))
2848+
2849+
2850+ mymodel = base_objects.Model()
2851+ mymodel.set('particles', mypartlist)
2852+ mymodel.set('interactions', myinterlist)
2853+ mymodel.set('name', 'sm')
2854+
2855+ # Multiparticle labels
2856+ ds = [1,-1]
2857+ dls = [1000001,-1000001]
2858+
2859+ proc = [21,21,1000021,1000021]
2860+
2861+ my_leglist = base_objects.MultiLegList([\
2862+ base_objects.MultiLeg({'ids': [id]}) for id in proc])
2863+ my_leglist[0].set('state', False)
2864+ my_leglist[1].set('state', False)
2865+
2866+ process = base_objects.ProcessDefinition({'legs':my_leglist,
2867+ 'model':mymodel})
2868+
2869+ decayproc1 = [[1000021],ds,dls]
2870+ my_leglist = base_objects.MultiLegList([\
2871+ base_objects.MultiLeg({'ids': id}) for id in decayproc1])
2872+ my_leglist[0].set('state', False)
2873+ decayprocess1 = base_objects.ProcessDefinition({'legs':my_leglist,
2874+ 'model':mymodel})
2875+
2876+ decayproc2 = [dls,ds,[1000022]]
2877+ my_leglist = base_objects.MultiLegList([\
2878+ base_objects.MultiLeg({'ids': id}) for id in decayproc2])
2879+ my_leglist[0].set('state', False)
2880+ decayprocess2 = base_objects.ProcessDefinition({'legs':my_leglist,
2881+ 'model':mymodel})
2882+
2883+ decayprocess1.get('decay_chains').append(decayprocess2)
2884+ process.get('decay_chains').append(decayprocess1)
2885+ process.get('decay_chains').append(decayprocess1)
2886+
2887+ my_amplitude = diagram_generation.DecayChainAmplitude(process)
2888+
2889+ dc_subproc_group = group_subprocs.DecayChainSubProcessGroup.\
2890+ group_amplitudes(my_amplitude)
2891+
2892+ subproc_groups = \
2893+ dc_subproc_group.generate_helas_decay_chain_subproc_groups()
2894+
2895+ self.assertEqual(len(subproc_groups), 1)
2896+
2897+ self.assertEqual(len(subproc_groups[0].get('matrix_elements')),3)
2898+
2899+ me_strings = ["""Process: g g > go go WEIGHTED=2
2900+ Decay: go > d dl~ WEIGHTED=1
2901+ Decay: dl~ > d~ n1 WEIGHTED=2
2902+ Decay: go > d dl~ WEIGHTED=1
2903+ Decay: dl~ > d~ n1 WEIGHTED=2""",
2904+ """Process: g g > go go WEIGHTED=2
2905+ Decay: go > d dl~ WEIGHTED=1
2906+ Decay: dl~ > d~ n1 WEIGHTED=2
2907+ Decay: go > d~ dl WEIGHTED=1
2908+ Decay: dl > d n1 WEIGHTED=2""",
2909+ """Process: g g > go go WEIGHTED=2
2910+ Decay: go > d~ dl WEIGHTED=1
2911+ Decay: dl > d n1 WEIGHTED=2
2912+ Decay: go > d~ dl WEIGHTED=1
2913+ Decay: dl > d n1 WEIGHTED=2"""]
2914+
2915+
2916+ for i,me in enumerate(subproc_groups[0].get('matrix_elements')):
2917+ self.assertEqual(me.get('processes')[0].nice_string(),
2918+ me_strings[i])
2919+

Subscribers

People subscribed via source and target branches