Merge lp:~maddevelopers/mg5amcnlo/fix_4F_matching into lp:~madteam/mg5amcnlo/trunk
- fix_4F_matching
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 172 |
Proposed branch: | lp:~maddevelopers/mg5amcnlo/fix_4F_matching |
Merge into: | lp:~madteam/mg5amcnlo/trunk |
Diff against target: |
24022 lines (+10069/-8966) 28 files modified
Template/Source/setrun.f (+2/-0) Template/SubProcesses/addmothers.f (+145/-56) Template/SubProcesses/cluster.f (+106/-60) Template/SubProcesses/cluster.inc (+6/-4) Template/SubProcesses/cuts.f (+14/-5) Template/SubProcesses/initcluster.f (+11/-7) Template/SubProcesses/makefile (+5/-4) Template/SubProcesses/myamp.f (+67/-33) Template/SubProcesses/reweight.f (+435/-251) Template/SubProcesses/setcuts.f (+2/-2) Template/SubProcesses/setscales.f (+1/-0) Template/SubProcesses/status (+0/-1) Template/SubProcesses/symmetry.f (+4/-4) Template/SubProcesses/unwgt.f (+4/-1) Template/bin/survey (+4/-0) UpdateNotes.txt (+45/-1) madgraph/VERSION (+2/-2) madgraph/core/base_objects.py (+11/-2) madgraph/core/diagram_generation.py (+24/-14) madgraph/core/helas_objects.py (+35/-23) madgraph/iolibs/export_v4.py (+64/-4) madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc (+7/-7) tests/acceptance_tests/test_cmd.py (+8/-0) tests/input_files/e+e-_e+e-.pkl (+8427/-8406) tests/unit_tests/core/test_base_objects.py (+4/-2) tests/unit_tests/core/test_diagram_generation.py (+127/-13) tests/unit_tests/core/test_helas_objects.py (+229/-8) tests/unit_tests/iolibs/test_export_v4.py (+280/-56) |
To merge this branch: | bzr merge lp:~maddevelopers/mg5amcnlo/fix_4F_matching |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Olivier Mattelaer | Approve | ||
Review via email: mp+75882@code.launchpad.net |
Commit message
Description of the change
JA: Use model information to determine color of particles
JA: Ensure that factorization scale settings and matching works
- 180. By Johan Alwall
-
Fixed abs(particle id) for t-channel particles in get_color
- 181. By Johan Alwall
-
Offset Pythia PARP(67)=4 for singlet t-channel exchange processes
Johan Alwall (johan-alwall) wrote : | # |
Hi Olivier,
> Even if I would strongly suggest to include some of the remarqs, I already put
> this as ready for merge. Since I will probably not be online for a week don't
> wait for me anymore for a second approval.
Thanks as usual for your excellent points. I'll answer them below, then we can check if we want to include them later.
> concerning the get_color, I have few questions:
> 1) Why define it in each Subprocess directory and not model basis (restricted
> to those used off course)
I was thinking about putting it in the MODEL directory with all particles, but there are two reasons not to: 1) some models might have huge number of particles -> slower execution, 2) I don't want to change the v4 model files (in particular we'd need to modify the makefile if nothing else). We could put it in SubProcesses, but it seemed easier (and slightly more efficient) to just put it in each subprocess directory. I checked that the time to generate the file is truly negligible.
> 2) If this is for speed issue (avoid too long list) then I would avoid to
> order them. (the one comming from the leg are more probable than those of the
> propagators and even more than flipped sign).
Good point - however most processes have a very limited number of particles, so it shouldn't make a big difference. So I preferred to stick to better readability.
> 3) concerning your last modifications, i.e.:
> abs_ids = set([abs(i) for i in wf_ids])
> 1) you should add a comment in the code explaining why you are doing that
> 2) add a test for checking this specific problem
Ok will do.
> concerning:
> JA: Introduce new convention for invariant mass cuts
> - if max < min, exclude intermediate range
> (allows to exclude W/Z dijet resonances in VBF
> processes)
> Did you include a comment on this on the wiki?
Where on the wiki? Point me and I'll be happy to add it.
> concerning:
> write(*
> $ '->',mo_color,' not implemented in addmothers.f'
> This might be written a HUGE number of times shouldn't we
> 1) Put a limit to this number of print (or why not a critical error?)
> 2) Put a warning at the generation level in case if we have interactions with
> un-supported color interactions?
Ok I'll implement that it's written into the error file.
> concerning the removal of the following lines
> c Remove propagator if "decay" to same particle (i.e. radiation of
> g/gamma/higgs)
> ...
> c Always remove if daughter final-state or already removed for this reason
> ...
> c Else remove either this resonance or daughter, which is closer to mass shell
>
> Why did you remove those lines. I also remark that the lines removing the
> propagator if he is too-offshell is commented. If this normal?
This is now all done in myamp.f (where OnBW is defined). So it shouldn't be done again in addmothers.f.
> As I said before, I didn't check carefully the matching modification, but just
> read the modifications of the code.
>
> Also all the parralel test are not working anymore. This should be fixed. This
> forbids all basic checks. If you want I can work on this for PyMadEvent. (With
...
- 182. By Johan Alwall
-
Added test for abs() in get_color.f
- 183. By Johan Alwall
-
Stop execution if color combination not implemented in addmothers.f
- 184. By Johan Alwall
-
Set ptclus for non-matching particles to sqrt(s) (i.e., particles from t-channel color singlet exchange or decays), so Pythia knows not to include them in matching
- 185. By Johan Alwall
-
Fix bug for 2->1 processes
- 186. By Johan Alwall
-
Fixed some minor issues
- 187. By Johan Alwall
-
Change definition for forbidden s-channels to only exclude onshell s-channels at runtime.
- 188. By Johan Alwall
-
Updated UpdateNotes.txt
- 189. By Johan Alwall
-
It turns out that not only abs(pdg) is needed by get_color but all antipdg codes
- 190. By Johan Alwall
-
Updated UpdateNotes. Changed Pythia PS scale to max(scales) instead of average (seems to give better matching both in single top and in Higgs VBF). Also removed factor 1/2 to offset PARP(67) for t-channel singlet exchange, since it doesn't give obviously better results but slightly complicates the code.
- 191. By Johan Alwall
-
Merged with the latest version of trunk (v 1.3.17)
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi Johan,
# Use from_group = None to indicate that this s-channel is forbidden
newleg = copy.copy(
newleg.
I don't really like to re-use from_group. This is in some sense nice because, you limit the use of RAM, but I'm worry about readability of the code (especially in the future)
from_group name is not related at all with forbiden s-channel, so this is quite confusing.
In fact, it will be nicer (but may be harder) to include this in state. Indeed, this variable is nothing else that the fact that the particle is in T or S channel. So it might be natural to modify that variable. Another Solution is to create a new object.
This is off course a point open to discussion. What's your opinion?
Cheers,
Olivier
Johan Alwall (johan-alwall) wrote : | # |
Hello Olivier,
> I don't really like to re-use from_group. This is in some sense nice because, you limit the use of RAM, but I'm worry about readability of the code (especially in the future)
> from_group name is not related at all with forbiden s-channel, so this is quite confusing.
> In fact, it will be nicer (but may be harder) to include this in state. Indeed, this variable is nothing else that the fact that the particle is in T or S channel. So it might be natural to modify that variable. Another Solution is to create a new object.
The most natural would be to have an "onshell" flag for leg (just as
we have for wavefunctions). I'm just worried about memory, since legs
tend to be the most proliferous objects in the code. But if you really
prefer, I'll do that instead.
Cheers,
Johan
- 192. By Johan Alwall
-
Removed the use of from_group in Leg to denote forbidden onshell/decay legs, instead use new flag onshell
- 193. By Johan Alwall
-
Included mention in UpdateNotes.txt of the special process p p > t b~ j $ w+ w- t~ + p p > t b~ j j $ w+ w- t~, where MAXJETS=1 must be set in the pythia_card.dat
- 194. By Johan Alwall
-
F**k I intruduced stupidity when trying to fix the inevitable problem due to the stupid e+e-_e+e-.pkl file before I realized what the problem was. Fixed.
Johan Alwall (johan-alwall) wrote : | # |
Hi Olivier,
I have removed the reuse of from_group and instead use a new flag, "onshell" (rev. 192+194). Please let me know what you think. I'm ready to merge this tomorrow.
Cheers,
Johan
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Perfect,
Just one thing, but this might be done/test later (I'm not 100 percent sure that this is possible) but couldn't we remove completely from_group
I mean something like:
for leg in all_legs:
del leg['from_group']
With a fast grep it looks like a possible thing to do.
But I propose that for a future release.
Thanksa lot,
Olivier
Johan Alwall (johan-alwall) wrote : | # |
Hi Olivier,
> Just one thing, but this might be done/test later (I'm not 100 percent sure that this is possible) but couldn't we remove completely from_group?
It should give an equivalent memory improvement to simply set it to
None after diagram generation, right? That would be less confusing and
less risk for problems later on I think.
Cheers,
Johan
- 195. By Johan Alwall
-
Stop execution if clustering fails (since this indicates a critical bug)
Olivier Mattelaer (olivier-mattelaer) wrote : | # |
Hi Johan,
> Hi Olivier,
>
>> Just one thing, but this might be done/test later (I'm not 100
>> percent sure that this is possible) but couldn't we remove
>> completely from_group?
>
> It should give an equivalent memory improvement to simply set it to
> None after diagram generation, right? That would be less confusing and
> less risk for problems later on I think.
This is not clear for me at all, and depend too much of the internal
optimization of python. So we might try to test it in order to be sure.
Cheers,
Olivier
On 04-oct.-11, at 22:14, Johan Alwall wrote:
> Hi Olivier,
>
>> Just one thing, but this might be done/test later (I'm not 100
>> percent sure that this is possible) but couldn't we remove
>> completely from_group?
>
> It should give an equivalent memory improvement to simply set it to
> None after diagram generation, right? That would be less confusing and
> less risk for problems later on I think.
>
> Cheers,
> Johan
>
> --
> https:/
> +merge/75882
> You are reviewing the proposed merge of lp:~maddevelopers/madgraph5/
> fix_4F_matching into lp:madgraph5.
Preview Diff
1 | === modified file 'Template/Source/setrun.f' |
2 | --- Template/Source/setrun.f 2011-06-01 21:40:33 +0000 |
3 | +++ Template/Source/setrun.f 2011-10-05 03:29:23 +0000 |
4 | @@ -58,6 +58,7 @@ |
5 | integer mothup(2,nexternal) |
6 | integer icolup(2,nexternal,maxflow,maxsproc) |
7 | include 'leshouche.inc' |
8 | + data pdfwgt/.false./ |
9 | c |
10 | c |
11 | c |
12 | @@ -312,6 +313,7 @@ |
13 | |
14 | if(ickkw.gt.0)then |
15 | call get_real (npara,param,value," alpsfact " ,alpsfact , 1d0) |
16 | + call get_logical (npara,param,value," pdfwgt " ,pdfwgt , .true.) |
17 | endif |
18 | if(ickkw.eq.2)then |
19 | call get_integer(npara,param,value," highestmult " ,nhmult, 0) |
20 | |
21 | === modified file 'Template/SubProcesses/addmothers.f' |
22 | --- Template/SubProcesses/addmothers.f 2011-09-11 13:02:35 +0000 |
23 | +++ Template/SubProcesses/addmothers.f 2011-10-05 03:29:23 +0000 |
24 | @@ -6,10 +6,10 @@ |
25 | include 'maxconfigs.inc' |
26 | include 'nexternal.inc' |
27 | include 'coupl.inc' |
28 | + include 'maxamps.inc' |
29 | include 'cluster.inc' |
30 | include 'message.inc' |
31 | include 'run.inc' |
32 | - include 'maxamps.inc' |
33 | |
34 | integer jpart(7,-nexternal+3:2*nexternal-3),npart,ip,numproc |
35 | double precision pb(0:4,-nexternal+3:2*nexternal-3) |
36 | @@ -18,6 +18,7 @@ |
37 | |
38 | integer isym(nexternal,99), jsym |
39 | integer i,j,k,ida(2),ns,nres,ires,icl,ito2,idenpart,nc,ic |
40 | + integer mo_color,da_color(2),itmp |
41 | integer ito(-nexternal+3:nexternal),iseed,maxcolor |
42 | integer icolalt(2,-nexternal+3:2*nexternal-3) |
43 | double precision qicl(-nexternal+3:2*nexternal-3), factpm |
44 | @@ -66,8 +67,9 @@ |
45 | c common/to_colstats/ncols,ncolflow,ncolalt,icorg |
46 | |
47 | double precision pt |
48 | + integer get_color |
49 | real ran1 |
50 | - external pt,ran1 |
51 | + external pt,ran1,get_color |
52 | |
53 | if (first_time) then |
54 | include 'props.inc' |
55 | @@ -121,8 +123,8 @@ |
56 | if(ic.gt.0) then |
57 | icolalt(1,isym(i,jsym))=icolup(1,i,ic,numproc) |
58 | icolalt(2,isym(i,jsym))=icolup(2,i,ic,numproc) |
59 | - if (icolup(1,i,ic, numproc).gt.maxcolor) maxcolor=icolup(1,i,ic, numproc) |
60 | - if (icolup(2,i,ic, numproc).gt.maxcolor) maxcolor=icolup(2,i,ic, numproc) |
61 | + if (abs(icolup(1,i,ic, numproc)).gt.maxcolor) maxcolor=icolup(1,i,ic, numproc) |
62 | + if (abs(icolup(2,i,ic, numproc)).gt.maxcolor) maxcolor=icolup(2,i,ic, numproc) |
63 | endif |
64 | enddo |
65 | |
66 | @@ -182,60 +184,133 @@ |
67 | c jpart(6,i)=3 |
68 | c nres=nres-1 |
69 | c endif |
70 | -c Remove propagator if "decay" to same particle (i.e. radiation of g/gamma/higgs) |
71 | - if(jpart(6,i).eq.2 .and. (jpart(1,i).eq.jpart(1,ida(1)).or. |
72 | - $ jpart(1,i).eq.jpart(1,ida(2)))) then |
73 | - if(jpart(1,i).eq.jpart(1,ida(1))) idenpart=ida(1) |
74 | - if(jpart(1,i).eq.jpart(1,ida(2))) idenpart=ida(2) |
75 | -c Always remove if daughter final-state or already removed for this reason |
76 | - if(idenpart.gt.0.or.jpart(6,idenpart).eq.4) then |
77 | - jpart(6,i)=4 |
78 | - nres=nres-1 |
79 | -c Else remove either this resonance or daughter, which is closer to mass shell |
80 | - elseif(abs(pb(4,i)-pmass(i,iconfig)).gt. |
81 | - $ abs(pb(4,idenpart)-pmass(i,iconfig))) then |
82 | - jpart(6,i)=4 |
83 | - nres=nres-1 |
84 | - else if(jpart(6,idenpart).eq.2) then |
85 | - jpart(6,idenpart)=4 |
86 | - nres=nres-1 |
87 | - endif |
88 | - endif |
89 | c Set color info for all s-channels |
90 | -c Fist set "safe" color info |
91 | - if(icolalt(1,ida(1))+icolalt(1,ida(2))- |
92 | - $ icolalt(2,ida(1))-icolalt(2,ida(2)).eq.0) then ! color singlet |
93 | - icolalt(1,i) = 0 |
94 | - icolalt(2,i) = 0 |
95 | - elseif(icolalt(1,ida(1))-icolalt(2,ida(2)).eq.0) then ! 3bar 3 -> 8 or 8 8 -> 8 |
96 | - icolalt(1,i) = icolalt(1,ida(2)) |
97 | - icolalt(2,i) = icolalt(2,ida(1)) |
98 | - else if(icolalt(1,ida(2))-icolalt(2,ida(1)).eq.0) then ! 3 3bar -> 8 or 8 8 -> 8 |
99 | - icolalt(1,i) = icolalt(1,ida(1)) |
100 | - icolalt(2,i) = icolalt(2,ida(2)) |
101 | - else if(icolalt(1,ida(1)).eq.0.and.icolalt(2,ida(1)).eq.0) then ! 1 3/8 -> 3/8 |
102 | - icolalt(1,i) = icolalt(1,ida(2)) |
103 | - icolalt(2,i) = icolalt(2,ida(2)) |
104 | - else if(icolalt(1,ida(2)).eq.0.and.icolalt(2,ida(2)).eq.0) then ! 3/8 1 -> 3/8 |
105 | - icolalt(1,i) = icolalt(1,ida(1)) |
106 | - icolalt(2,i) = icolalt(2,ida(1)) |
107 | - else if(icolalt(1,ida(2)).gt.0.and.icolalt(1,ida(1)).gt.0.and. |
108 | - $ icolalt(2,ida(2)).le.0.and.icolalt(2,ida(1)).le.0) then ! sextet |
109 | - maxcolor=maxcolor+1 |
110 | - icolalt(1,i) = maxcolor |
111 | - icolalt(2,i) = 0 |
112 | - else if(icolalt(2,ida(2)).gt.0.and.icolalt(2,ida(1)).gt.0.and. |
113 | - $ icolalt(1,ida(2)).le.0.and.icolalt(1,ida(1)).le.0) then ! antisextet |
114 | - maxcolor=maxcolor+1 |
115 | - icolalt(1,i) = 0 |
116 | - icolalt(2,i) = maxcolor |
117 | - else if(jpart(6,i).ge.3) then ! Don't need to match |
118 | - icolalt(1,i) = icolalt(1,ida(1))+icolalt(1,ida(2)) |
119 | - icolalt(2,i) = icolalt(2,ida(1))+icolalt(2,ida(2)) |
120 | + mo_color = get_color(jpart(1,i)) |
121 | + da_color(1) = get_color(jpart(1,ida(1))) |
122 | + da_color(2) = get_color(jpart(1,ida(2))) |
123 | + if(da_color(2).lt.da_color(1))then |
124 | +c Order daughters according to color |
125 | + itmp=ida(1) |
126 | + ida(1)=ida(2) |
127 | + ida(2)=itmp |
128 | + itmp=da_color(1) |
129 | + da_color(1)=da_color(2) |
130 | + da_color(2)=itmp |
131 | + endif |
132 | +c print *,'graph: ',iconfig |
133 | +c print *,'Resonance: ',i,' daughters ',ida(1),ida(2), |
134 | +c $ ' ids ',jpart(1,i),jpart(1,ida(1)),jpart(1,ida(2)), |
135 | +c $ ' colors ',mo_color,da_color(1),da_color(2) |
136 | + |
137 | + if(mo_color.eq.1) then ! color singlet |
138 | + icolalt(1,i) = 0 |
139 | + icolalt(2,i) = 0 |
140 | + elseif(mo_color.eq.-3) then ! color anti-triplet |
141 | + icolalt(1,i) = 0 |
142 | + if(da_color(1).eq.-3.and.da_color(2).eq.1)then |
143 | + icolalt(2,i) = icolalt(2,ida(1)) |
144 | + elseif(da_color(1).eq.-3.and.da_color(2).eq.8)then |
145 | + icolalt(2,i) = icolalt(2,ida(2)) |
146 | + elseif(da_color(1).eq.-6.and.da_color(2).eq.3)then |
147 | + if(-icolalt(1,ida(1)).eq.icolalt(1,ida(2)))then |
148 | + icolalt(2,i) = icolalt(2,ida(1)) |
149 | + else |
150 | + icolalt(2,i) = -icolalt(1,ida(1)) |
151 | + endif |
152 | + elseif(da_color(1).eq.3.and.da_color(2).eq.3)then |
153 | + maxcolor=maxcolor+1 |
154 | + icolalt(2,i) = maxcolor |
155 | + else |
156 | + call write_error(da_color(1), da_color(2), mo_color) |
157 | + endif |
158 | + elseif(mo_color.eq.3) then ! color triplet |
159 | + icolalt(2,i) = 0 |
160 | + if(da_color(1).eq.1.and.da_color(2).eq.3)then |
161 | + icolalt(1,i) = icolalt(1,ida(2)) |
162 | + elseif(da_color(1).eq.3.and.da_color(2).eq.8)then |
163 | + icolalt(1,i) = icolalt(1,ida(2)) |
164 | + elseif(da_color(1).eq.-3.and.da_color(2).eq.6)then |
165 | + if(icolalt(2,ida(1)).eq.icolalt(1,ida(2)))then |
166 | + icolalt(1,i) = -icolalt(2,ida(2)) |
167 | + else |
168 | + icolalt(1,i) = icolalt(1,ida(2)) |
169 | + endif |
170 | + elseif(da_color(1).eq.-3.and.da_color(2).eq.-3)then |
171 | + maxcolor=maxcolor+1 |
172 | + icolalt(1,i) = maxcolor |
173 | + else |
174 | + call write_error(da_color(1), da_color(2), mo_color) |
175 | + endif |
176 | + elseif(mo_color.eq.-6) then ! color anti-sextet |
177 | + if(da_color(1).eq.-6.and.da_color(2).eq.1)then |
178 | + icolalt(1,i) = icolalt(1,ida(1)) |
179 | + icolalt(2,i) = icolalt(2,ida(1)) |
180 | + elseif(da_color(1).eq.-6.and.da_color(2).eq.8)then |
181 | + if(icolalt(2,ida(1)).eq.icolalt(1,ida(2)))then |
182 | + icolalt(1,i) = icolalt(1,ida(1)) |
183 | + icolalt(2,i) = icolalt(2,ida(2)) |
184 | + else |
185 | + icolalt(1,i) = -icolalt(2,ida(2)) |
186 | + icolalt(2,i) = icolalt(2,ida(1)) |
187 | + endif |
188 | + elseif(da_color(1).eq.-3.and.da_color(2).eq.-3)then |
189 | + icolalt(1,i) = -icolalt(2,ida(1)) |
190 | + icolalt(2,i) = icolalt(2,ida(2)) |
191 | + else |
192 | + call write_error(da_color(1), da_color(2), mo_color) |
193 | + endif |
194 | + elseif(mo_color.eq.6) then ! color sextet |
195 | + if(da_color(1).eq.1.and.da_color(2).eq.6)then |
196 | + icolalt(1,i) = icolalt(1,ida(2)) |
197 | + icolalt(2,i) = icolalt(2,ida(2)) |
198 | + elseif(da_color(1).eq.6.and.da_color(2).eq.8)then |
199 | + if(icolalt(1,ida(1)).eq.icolalt(2,ida(2)))then |
200 | + icolalt(1,i) = icolalt(1,ida(2)) |
201 | + icolalt(2,i) = icolalt(2,ida(1)) |
202 | + else |
203 | + icolalt(1,i) = icolalt(1,ida(1)) |
204 | + icolalt(2,i) = -icolalt(1,ida(2)) |
205 | + endif |
206 | + elseif(da_color(1).eq.3.and.da_color(2).eq.3)then |
207 | + icolalt(1,i) = icolalt(1,ida(1)) |
208 | + icolalt(2,i) = -icolalt(1,ida(2)) |
209 | + else |
210 | + call write_error(da_color(1), da_color(2), mo_color) |
211 | + endif |
212 | + elseif(mo_color.eq.8) then ! color octet |
213 | + if(da_color(1).eq.-3.and.da_color(2).eq.3)then |
214 | + icolalt(1,i) = icolalt(1,ida(2)) |
215 | + icolalt(2,i) = icolalt(2,ida(1)) |
216 | + elseif(da_color(1).eq.1.and.da_color(2).eq.8)then |
217 | + icolalt(1,i) = icolalt(1,ida(2)) |
218 | + icolalt(2,i) = icolalt(2,ida(2)) |
219 | + elseif(da_color(1).eq.8.and.da_color(2).eq.8)then |
220 | + if(icolalt(1,ida(1)).eq.icolalt(2,ida(2)))then |
221 | + icolalt(1,i) = icolalt(1,ida(2)) |
222 | + icolalt(2,i) = icolalt(2,ida(1)) |
223 | + else |
224 | + icolalt(1,i) = icolalt(1,ida(1)) |
225 | + icolalt(2,i) = icolalt(2,ida(2)) |
226 | + endif |
227 | + elseif(da_color(1).eq.-6.and.da_color(2).eq.6)then |
228 | + if(-icolalt(1,ida(1)).eq.icolalt(1,ida(2)))then |
229 | + icolalt(1,i) = -icolalt(1,ida(2)) |
230 | + icolalt(2,i) = icolalt(2,ida(1)) |
231 | + elseif(icolalt(1,ida(1)).eq.icolalt(2,ida(2)))then |
232 | + icolalt(1,i) = icolalt(1,ida(2)) |
233 | + icolalt(2,i) = icolalt(2,ida(1)) |
234 | + elseif(icolalt(2,ida(1)).eq.icolalt(1,ida(2)))then |
235 | + icolalt(1,i) = -icolalt(2,ida(2)) |
236 | + icolalt(2,i) = -icolalt(1,ida(1)) |
237 | + else |
238 | + icolalt(1,i) = icolalt(1,ida(2)) |
239 | + icolalt(2,i) = -icolalt(1,ida(1)) |
240 | + endif |
241 | + else |
242 | + call write_error(da_color(1), da_color(2), mo_color) |
243 | + endif |
244 | else |
245 | -c Erraneous color assignment for propagator - set color to 0 |
246 | - icolalt(1,i) = 0 |
247 | - icolalt(2,i) = 0 |
248 | + call write_error(da_color(1), da_color(2), mo_color) |
249 | endif |
250 | c Set tentative mothers |
251 | jpart(2,i) = 1 |
252 | @@ -295,3 +370,17 @@ |
253 | |
254 | return |
255 | end |
256 | + |
257 | + subroutine write_error(ida1,ida2,imo) |
258 | + implicit none |
259 | + integer ida1,ida2,imo |
260 | + |
261 | + open(unit=26,file='../../../error',status='unknown',err=999) |
262 | + write(26,*) 'Error: Color combination ',ida1,ida2, |
263 | + $ '->',imo,' not implemented in addmothers.f' |
264 | + write(*,*) 'Error: Color combination ',ida1,ida2, |
265 | + $ '->',imo,' not implemented in addmothers.f' |
266 | + stop |
267 | + |
268 | + 999 write(*,*) 'error' |
269 | + end |
270 | |
271 | === modified file 'Template/SubProcesses/cluster.f' |
272 | --- Template/SubProcesses/cluster.f 2011-08-27 21:03:09 +0000 |
273 | +++ Template/SubProcesses/cluster.f 2011-10-05 03:29:23 +0000 |
274 | @@ -166,21 +166,22 @@ |
275 | end |
276 | |
277 | |
278 | - subroutine filprp(ignum,idij) |
279 | + subroutine filprp(iproc,ignum,idij) |
280 | c************************************************************************** |
281 | c Include graph ignum in list for propagator idij |
282 | c************************************************************************** |
283 | implicit none |
284 | include 'nexternal.inc' |
285 | + include 'maxamps.inc' |
286 | include 'cluster.inc' |
287 | - integer ignum, idij, i |
288 | + integer ignum, idij, iproc, i |
289 | |
290 | if(idij.gt.n_max_cl) return |
291 | - do i=1,id_cl(idij,0) |
292 | - if (id_cl(idij,i).eq.ignum) return |
293 | + do i=1,id_cl(iproc,idij,0) |
294 | + if (id_cl(iproc,idij,i).eq.ignum) return |
295 | enddo |
296 | - id_cl(idij,0)=id_cl(idij,0)+1 |
297 | - id_cl(idij,id_cl(idij,0))=ignum |
298 | + id_cl(iproc,idij,0)=id_cl(iproc,idij,0)+1 |
299 | + id_cl(iproc,idij,id_cl(iproc,idij,0))=ignum |
300 | c print *,'Adding graph ',ignum,' to prop ',idij |
301 | return |
302 | end |
303 | @@ -200,9 +201,10 @@ |
304 | include 'genps.inc' |
305 | include 'maxconfigs.inc' |
306 | include 'nexternal.inc' |
307 | + include 'maxamps.inc' |
308 | include 'cluster.inc' |
309 | include 'coupl.inc' |
310 | - include 'maxamps.inc' |
311 | + include 'message.inc' |
312 | integer ignum, ipnum, ipids(nexternal,4,2:nexternal) |
313 | C $B$ IFOREST $B$ !this is a tag for MadWeight |
314 | integer i, iforest(2,-max_branch:-1,lmaxconfigs) |
315 | @@ -214,9 +216,8 @@ |
316 | INTEGER n_max_cl_cg |
317 | PARAMETER (n_max_cl_cg=n_max_cl*n_max_cg) |
318 | data resmap/n_max_cl_cg*.false./ |
319 | - |
320 | |
321 | - Integer j, k, l, icmp(2) |
322 | + Integer j, k, l, icmp(2), iproc |
323 | |
324 | double precision ZERO |
325 | parameter (ZERO=0d0) |
326 | @@ -228,21 +229,24 @@ |
327 | data first_time /.true./ |
328 | |
329 | integer combid |
330 | - external combid |
331 | + logical isjet |
332 | + external combid,isjet |
333 | |
334 | if (first_time) then |
335 | include 'props.inc' |
336 | first_time=.false. |
337 | endif |
338 | |
339 | -c write(*,*) 'graph,level,iupdown: ',ignum,ipnum,iupdown |
340 | + if(btest(mlevel,4)) |
341 | + $ write(*,*) 'graph,level: ',ignum,ipnum |
342 | |
343 | filgrp=.false. |
344 | C Follow diagram tree down to last clustering |
345 | do i=1,ipnum |
346 | do j=i+1,ipnum |
347 | -c write(*,*)'at ids (',ipids(i,1,ipnum),',',ipids(i,2,ipnum),'), (', |
348 | -c & ipids(j,1,ipnum),',',ipids(j,2,ipnum),'), ',i,j |
349 | + if(btest(mlevel,4)) |
350 | + $ write(*,*)'at ids (',ipids(i,1,ipnum),',',ipids(i,2,ipnum),'), (', |
351 | + $ ipids(j,1,ipnum),',',ipids(j,2,ipnum),'), ',i,j |
352 | do k=-nexternal+1,-1 |
353 | if ((iforest(1,k,ignum).eq.ipids(i,2,ipnum).and. |
354 | & iforest(2,k,ignum).eq.ipids(j,2,ipnum)).or. |
355 | @@ -254,20 +258,39 @@ |
356 | icmp(2)=ishft(1,nexternal)-1-icmp(1) |
357 | c Set pdg code for propagator |
358 | do l=1,2 |
359 | - ipdgcl(icmp(l),ignum)=sprop(1,k,ignum) |
360 | - if(ipdgcl(icmp(l),ignum).eq.0) |
361 | - $ ipdgcl(icmp(l),ignum)=tprid(k,ignum) |
362 | -c write(*,*) 'add table entry for (',ipids(i,1,ipnum), |
363 | -c & ',',ipids(j,1,ipnum),',',icmp,')','pdg: ', |
364 | -c $ ipdgcl(icmp,ignum) |
365 | - call filprp(ignum,icmp(l)) |
366 | - |
367 | + do iproc=1,maxsproc |
368 | + if(sprop(iproc,k,ignum).ne.0)then |
369 | + ipdgcl(icmp(l),ignum,iproc)=sprop(iproc,k,ignum) |
370 | +c If this is radiation off heavy FS particle, set heavyrad to true |
371 | + if(isjet(ipdgcl(ipids(i,1,ipnum),ignum,iproc)).and. |
372 | + $ .not.isjet(ipdgcl(ipids(j,1,ipnum),ignum,iproc)).and. |
373 | + $ ipdgcl(ipids(j,1,ipnum),ignum,iproc).eq.sprop(iproc,k,ignum).or. |
374 | + $ isjet(ipdgcl(ipids(j,1,ipnum),ignum,iproc)).and. |
375 | + $ .not.isjet(ipdgcl(ipids(i,1,ipnum),ignum,iproc)).and. |
376 | + $ ipdgcl(ipids(i,1,ipnum),ignum,iproc).eq.sprop(iproc,k,ignum))then |
377 | + heavyrad(ignum) = .true. |
378 | + endif |
379 | + else if(tprid(k,ignum).ne.0)then |
380 | + ipdgcl(icmp(l),ignum,iproc)=tprid(k,ignum) |
381 | + else if(ipnum.eq.3)then |
382 | + ipdgcl(icmp(l),ignum,iproc)=ipdgcl(2,ignum,iproc) |
383 | + else |
384 | + ipdgcl(icmp(l),ignum,iproc)=0 |
385 | + cycle |
386 | + endif |
387 | + if(btest(mlevel,4)) |
388 | + $ write(*,*) 'add table entry for (',ipids(i,1,ipnum), |
389 | + & ',',ipids(j,1,ipnum),',',icmp(l),')', |
390 | + $ 'proc: ',iproc, |
391 | + $ ', pdg: ',ipdgcl(icmp(l),ignum,iproc) |
392 | + call filprp(iproc,ignum,icmp(l)) |
393 | c Insert graph in list of propagators |
394 | if(pwidth(k,ignum).gt.ZERO) then |
395 | c write(*,*)'Adding resonance ',ignum,icmp |
396 | resmap(icmp(l),ignum)=.true. |
397 | endif |
398 | enddo |
399 | + enddo |
400 | c proceed w/ next table, since there is no possibility, |
401 | c to combine the same particle in another way in this graph |
402 | ipids(i,1,ipnum-1)=icmp(1) |
403 | @@ -288,11 +311,6 @@ |
404 | ipids(l,3,ipnum)=l+1 |
405 | ipids(l,4,ipnum)=0 |
406 | enddo |
407 | -c do l=1,ipnum |
408 | -c write(*,*) 'new: ipids(',l,') = (',ipids(l,1,ipnum), |
409 | -c & ',',ipids(l,2,ipnum),',',ipids(l,3,ipnum),',',ipids(l,4,ipnum),')', |
410 | -c $ ' pdg: ', ipdgcl(ipids(l,1,ipnum),ignum) |
411 | -c enddo |
412 | if(ipnum.eq.2)then |
413 | c Done with this diagram |
414 | return |
415 | @@ -317,20 +335,21 @@ |
416 | include 'genps.inc' |
417 | include 'maxconfigs.inc' |
418 | include 'nexternal.inc' |
419 | + include 'maxamps.inc' |
420 | include 'cluster.inc' |
421 | include 'run.inc' |
422 | - include 'maxamps.inc' |
423 | + include 'message.inc' |
424 | C $B$ IFOREST $B$ !this is a tag for MadWeight |
425 | integer mapconfig(0:lmaxconfigs), this_config |
426 | common/to_mconfigs/mapconfig, this_config |
427 | C $E$ IFOREST $E$ !this is a tag for MadWeight |
428 | - integer i, j, inpids, ipids(nexternal,4,2:nexternal) |
429 | + integer i, j, inpids, iproc, ipids(nexternal,4,2:nexternal) |
430 | integer start_config,end_config |
431 | integer idup(nexternal,maxproc,maxsproc) |
432 | integer mothup(2,nexternal) |
433 | integer icolup(2,nexternal,maxflow,maxsproc) |
434 | include 'leshouche.inc' |
435 | - |
436 | + |
437 | logical filgrp |
438 | external filgrp |
439 | |
440 | @@ -341,22 +360,41 @@ |
441 | start_config=1 |
442 | end_config=mapconfig(0) |
443 | endif |
444 | - do i=1,n_max_cl |
445 | - id_cl(i,0)=0 |
446 | + do iproc=1,maxsproc |
447 | + do i=1,n_max_cl |
448 | + id_cl(iproc,i,0)=0 |
449 | + enddo |
450 | enddo |
451 | do i=start_config,end_config |
452 | + heavyrad(i)=.false. |
453 | c write (*,*) ' at graph ',i |
454 | do j=1,nexternal |
455 | ipids(j,1,nexternal)=ishft(1,j-1) |
456 | ipids(j,2,nexternal)=j |
457 | ipids(j,3,nexternal)=0 |
458 | ipids(j,4,nexternal)=0 |
459 | - ipdgcl(ipids(j,1,nexternal),i)=idup(j,1,1) |
460 | + do iproc=1,maxsproc |
461 | + ipdgcl(ipids(j,1,nexternal),i,iproc)=idup(j,1,iproc) |
462 | + enddo |
463 | enddo |
464 | inpids=nexternal |
465 | c print *,'Inserting graph ',i |
466 | 10 if (filgrp(i,inpids,ipids)) goto 10 |
467 | - enddo |
468 | + if(btest(mlevel,4).and.heavyrad(i)) then |
469 | + write(*,*)' set heavyrad of ',i,' to T' |
470 | + endif |
471 | + enddo |
472 | +c Ensure that there are some allowed clusterings |
473 | + do i=start_config,end_config |
474 | + if(.not.heavyrad(i)) goto 20 |
475 | + enddo |
476 | + if(btest(mlevel,4)) then |
477 | + write(*,*)' Reset all heavyrad to .false.' |
478 | + endif |
479 | + do i=start_config,end_config |
480 | + heavyrad(i)=.false. |
481 | + enddo |
482 | + 20 continue |
483 | filmap=.true. |
484 | return |
485 | end |
486 | @@ -431,28 +469,35 @@ |
487 | c************************************************************************** |
488 | implicit none |
489 | include 'nexternal.inc' |
490 | + include 'maxamps.inc' |
491 | include 'cluster.inc' |
492 | |
493 | integer idij,nbw,ibwlist(nexternal),icgs(0:n_max_cg) |
494 | logical foundbw |
495 | integer i, ii, j, jj, il, igsbk(0:n_max_cg) |
496 | |
497 | +c IPROC has the present process number |
498 | + INTEGER IMIRROR,IPROC |
499 | + COMMON/TO_MIRROR/IMIRROR, IPROC |
500 | + |
501 | findmt=.false. |
502 | c if first clustering, set possible graphs |
503 | if (icgs(0).eq.0) then |
504 | ii=0 |
505 | - do i=1,id_cl(idij,0) |
506 | + do i=1,id_cl(iproc,idij,0) |
507 | +c check if this diagram has radiation off heavy particle |
508 | + if(heavyrad(id_cl(iproc,idij,i))) cycle |
509 | c check if we have constraint from onshell resonances |
510 | foundbw=.true. |
511 | do j=1,nbw |
512 | - if(resmap(ibwlist(j),id_cl(idij,i)))then |
513 | + if(resmap(ibwlist(j),id_cl(iproc,idij,i)))then |
514 | cycle |
515 | endif |
516 | foundbw=.false. |
517 | 10 enddo |
518 | - if(nbw.eq.0.or.foundbw)then |
519 | + if((nbw.eq.0.or.foundbw))then |
520 | ii=ii+1 |
521 | - icgs(ii)=id_cl(idij,i) |
522 | + icgs(ii)=id_cl(iproc,idij,i) |
523 | endif |
524 | enddo |
525 | icgs(0)=ii |
526 | @@ -465,17 +510,17 @@ |
527 | j=1 |
528 | ii=0 |
529 | do i=1,icgs(0) |
530 | - if(j.le.id_cl(idij,0).and.icgs(i).eq.id_cl(idij,j))then |
531 | + if(j.le.id_cl(iproc,idij,0).and.icgs(i).eq.id_cl(iproc,idij,j))then |
532 | ii=ii+1 |
533 | - icgs(ii)=id_cl(idij,j) |
534 | + icgs(ii)=id_cl(iproc,idij,j) |
535 | j=j+1 |
536 | - else if(j.le.id_cl(idij,0).and.icgs(i).gt.id_cl(idij,j)) then |
537 | - do while(icgs(i).gt.id_cl(idij,j).and.j.le.id_cl(idij,0)) |
538 | + else if(j.le.id_cl(iproc,idij,0).and.icgs(i).gt.id_cl(iproc,idij,j)) then |
539 | + do while(icgs(i).gt.id_cl(iproc,idij,j).and.j.le.id_cl(iproc,idij,0)) |
540 | j=j+1 |
541 | enddo |
542 | - if(j.le.id_cl(idij,0).and.icgs(i).eq.id_cl(idij,j))then |
543 | + if(j.le.id_cl(iproc,idij,0).and.icgs(i).eq.id_cl(iproc,idij,j))then |
544 | ii=ii+1 |
545 | - icgs(ii)=id_cl(idij,j) |
546 | + icgs(ii)=id_cl(iproc,idij,j) |
547 | endif |
548 | endif |
549 | enddo |
550 | @@ -497,9 +542,11 @@ |
551 | include 'run.inc' |
552 | include 'genps.inc' |
553 | include 'nexternal.inc' |
554 | + include 'maxamps.inc' |
555 | include 'cluster.inc' |
556 | include 'message.inc' |
557 | include 'maxconfigs.inc' |
558 | + |
559 | real*8 p(0:3,nexternal), pcmsp(0:3), p1(0:3) |
560 | real*8 pi(0:3), nr(0:3), pz(0:3) |
561 | integer i, j, k, n, idi, idj, idij, icgs(0:n_max_cg) |
562 | @@ -511,7 +558,6 @@ |
563 | common/to_mconfigs/mapconfig, this_config |
564 | |
565 | integer nbw,ibwlist(nexternal) |
566 | - logical isbw(n_max_cl) |
567 | data isbw/n_max_cl*.false./ |
568 | |
569 | data (pz(i),i=0,3)/1d0,0d0,0d0,1d0/ |
570 | @@ -569,7 +615,7 @@ |
571 | if(isbw(idij))then |
572 | pt2ij(idij)=SumDot(pcl(0,idi),pcl(0,idj),1d0) |
573 | if (btest(mlevel,4)) |
574 | - $ print *,'Mother ',idij,' has ptij ', |
575 | + $ write(*,*)'Mother ',idij,' has ptij ', |
576 | $ sqrt(pt2ij(idij)) |
577 | else |
578 | if(ktscheme.eq.2)then |
579 | @@ -578,6 +624,7 @@ |
580 | pt2ij(idij)=dj(pcl(0,idi),pcl(0,idj)) |
581 | endif |
582 | endif |
583 | + zij(idij)=0d0 |
584 | else |
585 | c initial state clustering, only if hadronic collision |
586 | c check whether 2->(n-1) process w/ cms energy > 0 remains |
587 | @@ -585,6 +632,7 @@ |
588 | if(ickkw.eq.2.or.ktscheme.eq.2)then |
589 | pt2ij(idij)=pyjb(pcl(0,idi), |
590 | $ pcl(0,idj),pcl(0,iwinp),zij(idij)) |
591 | + zij(idij)=0d0 |
592 | else |
593 | pt2ij(idij)=djb(pcl(0,idi)) |
594 | zij(idij)=zclus(pcl(0,idi),pcl(0,idj),pcl(0,iwinp)) |
595 | @@ -613,11 +661,14 @@ |
596 | c Take care of special 2 -> 1 case |
597 | if (nexternal.eq.3.and.nincoming.eq.2) then |
598 | n=1 |
599 | - imocl(n)=idij |
600 | - idacl(n,1)=idi |
601 | - idacl(n,2)=idj |
602 | - pt2ijcl(n)=pcl(4,idi) |
603 | +c Make sure that initial-state particles are daughters |
604 | + idacl(n,1)=imap(1,2) |
605 | + idacl(n,2)=imap(2,2) |
606 | + imocl(n)=imap(3,2) |
607 | + pt2ijcl(n)=pcl(4,imocl(n)) |
608 | zcl(n)=0. |
609 | + igraphs(0)=1 |
610 | + igraphs(1)=this_config |
611 | cluster=.true. |
612 | clustered=.true. |
613 | return |
614 | @@ -649,7 +700,7 @@ |
615 | c is clustering |
616 | c Set mt2ij to m^2+pt^2 |
617 | mt2ij(n)=djb(pcl(0,idacl(n,2))) |
618 | - if (btest(mlevel,3)) then |
619 | + if (btest(mlevel,1)) then |
620 | write(*,*)'mtij(',n,') for ',idacl(n,2),' is ',sqrt(mt2ij(n)), |
621 | $ ' (cf ',sqrt(pt2ijcl(n)),')' |
622 | endif |
623 | @@ -699,7 +750,7 @@ |
624 | if(isbw(imocl(n)))then |
625 | pcl(4,imocl(n))=pt2ijcl(n) |
626 | if (btest(mlevel,4)) |
627 | - $ print *,'Mother ',imocl(n),' has mass**2 ', |
628 | + $ write(*,*) 'Mother ',imocl(n),' has mass**2 ', |
629 | $ pcl(4,imocl(n)) |
630 | endif |
631 | endif |
632 | @@ -728,15 +779,10 @@ |
633 | call boostx(p1(0),pcmsp(0),pcl(0,imap(3,2))) |
634 | endif |
635 | endif |
636 | -c Make sure that final-state particle is always among daughters |
637 | +c Make sure that initial-state particle is always among daughters |
638 | idacl(n+1,1)=imap(1,2) |
639 | - idacl(n+1,2)=imap(3,2) |
640 | - imocl(n+1)=imap(2,2) |
641 | -c If mother is initial state leg (2nd beam), chose other leg |
642 | - if (imocl(n+1).eq.4)then |
643 | - idacl(n+1,1)=imap(2,2) |
644 | - imocl(n+1)=imap(1,2) |
645 | - endif |
646 | + idacl(n+1,2)=imap(2,2) |
647 | + imocl(n+1)=imap(3,2) |
648 | |
649 | c if(pcl(0,imocl(n)).gt.0d0)then |
650 | pt2ijcl(n+1)=djb(pcl(0,imap(3,2))) |
651 | @@ -801,7 +847,7 @@ |
652 | if(isbw(idij))then |
653 | pt2ij(idij)=SumDot(pcl(0,idi),pcl(0,idj),1d0) |
654 | if (btest(mlevel,4)) |
655 | - $ print *,'Mother ',idij,' has ptij ', |
656 | + $ write(*,*) 'Mother ',idij,' has ptij ', |
657 | $ sqrt(pt2ij(idij)) |
658 | else |
659 | if(ktscheme.eq.2)then |
660 | |
661 | === modified file 'Template/SubProcesses/cluster.inc' |
662 | --- Template/SubProcesses/cluster.inc 2011-03-09 18:29:27 +0000 |
663 | +++ Template/SubProcesses/cluster.inc 2011-10-05 03:29:23 +0000 |
664 | @@ -5,18 +5,20 @@ |
665 | include 'ngraphs.inc' |
666 | c parameters for clustering: |
667 | c id_cl gives diagrams for propagators |
668 | - integer id_cl(n_max_cl,0:n_max_cg) |
669 | - common/cl_map/id_cl |
670 | + integer id_cl(maxsproc,n_max_cl,0:n_max_cg) |
671 | + logical heavyrad(n_max_cg) |
672 | + common/cl_map/id_cl,heavyrad |
673 | c resmap gives potential resonances for diagrams |
674 | logical resmap(n_max_cl,n_max_cg) |
675 | common/res_map/resmap |
676 | double precision pt2ijcl(nexternal),zcl(nexternal),mt2ij(nexternal),mt2last |
677 | double precision pcl(0:4,n_max_cl) ! 4 is mass**2 |
678 | + logical isbw(n_max_cl) |
679 | integer imocl(nexternal), idacl(nexternal,2), igraphs(0:n_max_cg) |
680 | - integer ipdgcl(n_max_cl,n_max_cg) |
681 | + integer ipdgcl(n_max_cl,n_max_cg,maxsproc) |
682 | logical clustered |
683 | common/cl_val/pcl,pt2ijcl,zcl,mt2ij,mt2last,imocl,idacl,igraphs,ipdgcl, |
684 | - & clustered |
685 | + & isbw,clustered |
686 | c parameters for qcd jets |
687 | double precision ptclus(nexternal) |
688 | common/cl_jets/ptclus |
689 | |
690 | === modified file 'Template/SubProcesses/cuts.f' |
691 | --- Template/SubProcesses/cuts.f 2011-08-07 19:55:37 +0000 |
692 | +++ Template/SubProcesses/cuts.f 2011-10-05 03:29:23 +0000 |
693 | @@ -388,11 +388,20 @@ |
694 | if(debug) write (*,*) dsqrt(s_min(j,i)),dsqrt(s_max(j,i)) |
695 | if(s_min(j,i).gt.0.or.s_max(j,i).lt.1d5) then |
696 | tmp=SumDot(p(0,i),p(0,j),+1d0) |
697 | - notgood=(tmp .lt. s_min(j,i).or.tmp .gt. s_max(j,i)) |
698 | - if (notgood) then |
699 | - if(debug) write (*,*) i,j,' -> fails' |
700 | - passcuts=.false. |
701 | - return |
702 | + if(s_min(j,i).le.s_max(j,i))then |
703 | + notgood=(tmp .lt. s_min(j,i).or.tmp .gt. s_max(j,i)) |
704 | + if (notgood) then |
705 | + if(debug) write (*,*) i,j,' -> fails' |
706 | + passcuts=.false. |
707 | + return |
708 | + endif |
709 | + else |
710 | + notgood=(tmp .lt. s_min(j,i).and.tmp .gt. s_max(j,i)) |
711 | + if (notgood) then |
712 | + if(debug) write (*,*) i,j,' -> fails' |
713 | + passcuts=.false. |
714 | + return |
715 | + endif |
716 | endif |
717 | endif |
718 | enddo |
719 | |
720 | === modified file 'Template/SubProcesses/initcluster.f' |
721 | --- Template/SubProcesses/initcluster.f 2011-03-09 18:29:27 +0000 |
722 | +++ Template/SubProcesses/initcluster.f 2011-10-05 03:29:23 +0000 |
723 | @@ -5,6 +5,7 @@ |
724 | include 'message.inc' |
725 | include 'run.inc' |
726 | include 'nexternal.inc' |
727 | + include 'maxamps.inc' |
728 | include 'cluster.inc' |
729 | C |
730 | C SPECIAL CUTS |
731 | @@ -13,7 +14,7 @@ |
732 | real*8 xetamin,xqcut,deltaeta |
733 | common /to_specxpt/xptj,xptb,xpta,xptl,xmtc,xetamin,xqcut,deltaeta |
734 | |
735 | - integer i,j |
736 | + integer i,j,iproc |
737 | logical filmap, cluster |
738 | external filmap, cluster |
739 | |
740 | @@ -46,13 +47,16 @@ |
741 | stop |
742 | endif |
743 | if (btest(mlevel,3)) then |
744 | - do i=1,n_max_cl |
745 | - write(*,*) 'prop ',i,' in' |
746 | - do j=1,id_cl(i,0) |
747 | - write(*,*) ' graph ',id_cl(i,j) |
748 | - enddo |
749 | + do iproc=1,maxsproc |
750 | + write(*,*)'for proc ',iproc |
751 | + do i=1,n_max_cl |
752 | + write(*,*) 'prop ',i,' in' |
753 | + do j=1,id_cl(iproc,i,0) |
754 | + write(*,*) ' graph ',id_cl(iproc,i,j) |
755 | + enddo |
756 | + enddo |
757 | + write(*,*)'ok' |
758 | enddo |
759 | - write(*,*)'ok' |
760 | endif |
761 | igraphs(0)=0 |
762 | |
763 | |
764 | === modified file 'Template/SubProcesses/makefile' |
765 | --- Template/SubProcesses/makefile 2011-07-10 22:43:49 +0000 |
766 | +++ Template/SubProcesses/makefile 2011-10-05 03:29:23 +0000 |
767 | @@ -13,11 +13,12 @@ |
768 | |
769 | # Source files |
770 | |
771 | -PROCESS= driver.o myamp.o genps.o unwgt.o setcuts.o \ |
772 | +PROCESS= driver.o myamp.o genps.o unwgt.o setcuts.o get_color.o \ |
773 | cuts.o cluster.o reweight.o initcluster.o addmothers.o setscales.o \ |
774 | $(patsubst %.f,%.o,$(wildcard auto_dsig*.f)) \ |
775 | $(patsubst %.f,%.o,$(wildcard matrix*.f)) |
776 | -SYMMETRY = myamp.o genps.o initcluster.o setscales.o reweight.o\ |
777 | +SYMMETRY = symmetry.o genps.inc setcuts.o cuts.o cluster.o \ |
778 | + myamp.o genps.o initcluster.o setscales.o reweight.o get_color.o \ |
779 | $(patsubst %.f,%.o,$(wildcard matrix*.f)) |
780 | |
781 | # Binaries |
782 | @@ -25,8 +26,8 @@ |
783 | $(PROG): $(PROCESS) auto_dsig.o $(LIBS) |
784 | $(FC) $(FFLAGS) -o $(PROG) $(PROCESS) $(LINKLIBS) |
785 | |
786 | -gensym: symmetry.o genps.inc setcuts.o cuts.o cluster.o $(SYMMETRY) configs.inc $(LIBS) |
787 | - $(FC) $(FFLAGS) -o gensym symmetry.o setcuts.o cuts.o cluster.o $(SYMMETRY) $(LINKLIBS) |
788 | +gensym: $(SYMMETRY) configs.inc $(LIBS) |
789 | + $(FC) $(FFLAGS) -o gensym $(SYMMETRY) $(LINKLIBS) |
790 | |
791 | # Dependencies |
792 | |
793 | |
794 | === modified file 'Template/SubProcesses/myamp.f' |
795 | --- Template/SubProcesses/myamp.f 2011-09-05 06:55:55 +0000 |
796 | +++ Template/SubProcesses/myamp.f 2011-10-05 03:29:23 +0000 |
797 | @@ -110,7 +110,7 @@ |
798 | c |
799 | double precision xp(0:3,-nexternal:nexternal) |
800 | double precision mpole(-nexternal:0),shat,tsgn |
801 | - integer i,j,iconfig |
802 | + integer i,j,iconfig,iproc |
803 | |
804 | double precision pmass(-nexternal:0,lmaxconfigs) |
805 | double precision pwidth(-nexternal:0,lmaxconfigs) |
806 | @@ -145,7 +145,7 @@ |
807 | integer icolup(2,nexternal,maxflow,maxsproc) |
808 | include 'leshouche.inc' |
809 | |
810 | - logical gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
811 | + integer gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
812 | include 'decayBW.inc' |
813 | c |
814 | c External |
815 | @@ -190,7 +190,15 @@ |
816 | enddo |
817 | nbw = 0 |
818 | tsgn = +1d0 |
819 | - do i=-1,-(nexternal-3),-1 !Loop over propagators |
820 | +c Find non-zero process number |
821 | + do iproc=1,maxsproc |
822 | + if(sprop(iproc,-1,iconfig).ne.0) goto 10 |
823 | + enddo |
824 | + 10 continue |
825 | +c If no non-zero sprop, set iproc to 1 |
826 | + if(iproc.gt.maxsproc) iproc=1 |
827 | +c Start loop over propagators |
828 | + do i=-1,-(nexternal-3),-1 |
829 | onbw(i) = .false. |
830 | if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0 |
831 | do j=0,3 |
832 | @@ -209,16 +217,21 @@ |
833 | onshell = (abs(xmass - pmass(i,iconfig)) .lt. |
834 | $ bwcutoff*pwidth(i,iconfig)) |
835 | if(onshell)then |
836 | -c Only allow onshell if no "decay" to identical particle |
837 | +c Remove on-shell forbidden s-channels (gForceBW=2) (JA 2/10/11) |
838 | + if(gForceBW(i,iconfig).eq.2) then |
839 | + cut_bw = .true. |
840 | + return |
841 | + endif |
842 | +c Only allow OnBW if no "decay" to identical particle |
843 | OnBW(i) = .true. |
844 | idenpart=0 |
845 | do j=1,2 |
846 | ida(j)=iforest(j,i,iconfig) |
847 | if(ida(j).lt.0) then |
848 | - if(sprop(1,i,iconfig).eq.sprop(1,ida(j),iconfig)) |
849 | + if(sprop(iproc,i,iconfig).eq.sprop(iproc,ida(j),iconfig)) |
850 | $ idenpart=ida(j) |
851 | elseif (ida(j).gt.0) then |
852 | - if(sprop(1,i,iconfig).eq.IDUP(ida(j),1,1)) |
853 | + if(sprop(iproc,i,iconfig).eq.IDUP(ida(j),1,1)) |
854 | $ idenpart=ida(j) |
855 | endif |
856 | enddo |
857 | @@ -227,10 +240,10 @@ |
858 | OnBW(i)=.false. |
859 | c Else remove if daughter forced to be onshell |
860 | elseif(idenpart.lt.0)then |
861 | - if(gForceBW(idenpart, iconfig)) then |
862 | + if(gForceBW(idenpart, iconfig).eq.1) then |
863 | OnBW(i)=.false. |
864 | c Else remove daughter if forced to be onshell |
865 | - elseif(gForceBW(i, iconfig)) then |
866 | + elseif(gForceBW(i, iconfig).eq.1) then |
867 | OnBW(idenpart)=.false. |
868 | c Else remove either this resonance or daughter, which is closer to mass shell |
869 | elseif(abs(xmass-pmass(i,iconfig)).gt. |
870 | @@ -242,13 +255,10 @@ |
871 | OnBW(idenpart)=.false. |
872 | endif |
873 | endif |
874 | - endif |
875 | -c |
876 | -c Check if we are supposed to cut forced bw (JA 4/8/11) |
877 | -c |
878 | - if (gForceBW(i, iconfig) .and. .not. onshell)then |
879 | - cut_bw = .true. |
880 | - return |
881 | + else if (gForceBW(i, iconfig).eq.1) then ! .not. onshell |
882 | +c Check if we are supposed to cut forced bw (JA 4/8/11) |
883 | + cut_bw = .true. |
884 | + return |
885 | endif |
886 | c |
887 | c Here we set onshell for phase space integration (JA 4/8/11) |
888 | @@ -263,7 +273,6 @@ |
889 | return |
890 | endif |
891 | endif |
892 | - |
893 | enddo |
894 | end |
895 | |
896 | @@ -293,7 +302,7 @@ |
897 | double precision tsgn, xo, a |
898 | double precision x1,x2,xk(nexternal) |
899 | double precision dr,mtot,etot,stot,xqfact |
900 | - integer i, iconfig, l1, l2, j, nt, nbw |
901 | + integer i, iconfig, l1, l2, j, nt, nbw, iproc |
902 | integer iden_part(-max_branch:-1) |
903 | |
904 | double precision pmass(-nexternal:0,lmaxconfigs) |
905 | @@ -305,7 +314,7 @@ |
906 | integer icolup(2,nexternal,maxflow,maxsproc) |
907 | include 'leshouche.inc' |
908 | |
909 | - logical gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
910 | + integer gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
911 | include 'decayBW.inc' |
912 | c |
913 | c Global |
914 | @@ -341,7 +350,7 @@ |
915 | common /to_BW/ lbw |
916 | |
917 | include 'coupl.inc' |
918 | - |
919 | + include 'cuts.inc' |
920 | c |
921 | c External |
922 | c |
923 | @@ -377,30 +386,39 @@ |
924 | spole(i)=0 |
925 | swidth(i)=0 |
926 | enddo |
927 | - do i=-1,-(nexternal-3),-1 !Find all the propagotors |
928 | +c Find non-zero process number |
929 | + do iproc=1,maxsproc |
930 | + if(sprop(iproc,-1,iconfig).gt.0) goto 10 |
931 | + enddo |
932 | + 10 continue |
933 | +c If no non-zero sprop, set iproc to 1 |
934 | + if(iproc.ge.maxsproc.and.sprop(maxsproc,-1,iconfig).eq.0) |
935 | + $ iproc=1 |
936 | +c Start loop over propagators |
937 | + do i=-1,-(nexternal-3),-1 |
938 | c JA 3/31/11 Keep track of identical particles (i.e., radiation vertices) |
939 | c by tracing the particle identity from the external particle. |
940 | if(iforest(1,i,iconfig).gt.0) then |
941 | - if (sprop(1,i,iconfig).eq.idup(iforest(1,i,iconfig),1,1)) |
942 | - $ iden_part(i) = sprop(1,i,iconfig) |
943 | + if (sprop(iproc,i,iconfig).eq.idup(iforest(1,i,iconfig),1,1)) |
944 | + $ iden_part(i) = sprop(iproc,i,iconfig) |
945 | endif |
946 | if(iforest(2,i,iconfig).gt.0) then |
947 | - if(sprop(1,i,iconfig).eq.idup(iforest(2,i,iconfig),1,1)) |
948 | - $ iden_part(i) = sprop(1,i,iconfig) |
949 | + if(sprop(iproc,i,iconfig).eq.idup(iforest(2,i,iconfig),1,1)) |
950 | + $ iden_part(i) = sprop(iproc,i,iconfig) |
951 | endif |
952 | if(iforest(1,i,iconfig).lt.0) then |
953 | if((iden_part(iforest(1,i,iconfig)).ne.0.and. |
954 | - $ sprop(1,i,iconfig).eq.iden_part(iforest(1,i,iconfig)) .or. |
955 | - $ gforcebw(iforest(1,i,iconfig),iconfig).and. |
956 | - $ sprop(1,i,iconfig).eq.sprop(1,iforest(1,i,iconfig),iconfig))) |
957 | - $ iden_part(i) = sprop(1,i,iconfig) |
958 | + $ sprop(iproc,i,iconfig).eq.iden_part(iforest(1,i,iconfig)) .or. |
959 | + $ gforcebw(iforest(1,i,iconfig),iconfig).eq.1.and. |
960 | + $ sprop(iproc,i,iconfig).eq.sprop(iproc,iforest(1,i,iconfig),iconfig))) |
961 | + $ iden_part(i) = sprop(iproc,i,iconfig) |
962 | endif |
963 | if(iforest(2,i,iconfig).lt.0) then |
964 | if((iden_part(iforest(2,i,iconfig)).ne.0.and. |
965 | - $ sprop(1,i,iconfig).eq.iden_part(iforest(2,i,iconfig)).or. |
966 | - $ gforcebw(iforest(2,i,iconfig),iconfig).and. |
967 | - $ sprop(1,i,iconfig).eq.sprop(1,iforest(2,i,iconfig),iconfig))) |
968 | - $ iden_part(i) = sprop(1,i,iconfig) |
969 | + $ sprop(iproc,i,iconfig).eq.iden_part(iforest(2,i,iconfig)).or. |
970 | + $ gforcebw(iforest(2,i,iconfig),iconfig).eq.1.and. |
971 | + $ sprop(iproc,i,iconfig).eq.sprop(iproc,iforest(2,i,iconfig),iconfig))) |
972 | + $ iden_part(i) = sprop(iproc,i,iconfig) |
973 | endif |
974 | if (iforest(1,i,iconfig) .eq. 1) tsgn=-1d0 |
975 | if (tsgn .eq. 1d0) then !s channel |
976 | @@ -427,7 +445,7 @@ |
977 | c JA 6/8/2011 Set xe(i) for resonances |
978 | if (lbw(nbw).eq.1) then |
979 | xm(i) = max(xm(i), pmass(i,iconfig)-5d0*pwidth(i,iconfig)) |
980 | - else if (gforcebw(i,iconfig)) then |
981 | + else if (gforcebw(i,iconfig).eq.1) then |
982 | xm(i) = max(xm(i), pmass(i,iconfig)-bwcutoff*pwidth(i,iconfig)) |
983 | endif |
984 | endif |
985 | @@ -529,6 +547,22 @@ |
986 | c Set minimum based on: 1) required energy 2) resonances 3) 1/10000 of sqrt(s) |
987 | i = 3*(nexternal-2) - 4 + 1 |
988 | xo = max(min(etot**2/stot, 1d0-1d-8),1d0/stot) |
989 | +c Take into account special cuts |
990 | + xo = max(xo, xptj*dabs(xptj)/stot) |
991 | + xo = max(xo, xptb*dabs(xptb)/stot) |
992 | + xo = max(xo, xpta*dabs(xpta)/stot) |
993 | + xo = max(xo, xptl*dabs(xptl)/stot) |
994 | + xo = max(xo, xmtc*dabs(xmtc)/stot) |
995 | + xo = max(xo, htjmin**2/stot) |
996 | + xo = max(xo, ptj1min**2/stot) |
997 | + xo = max(xo, ptj2min**2/stot) |
998 | + xo = max(xo, ptj3min**2/stot) |
999 | + xo = max(xo, ptj4min**2/stot) |
1000 | + xo = max(xo, ht2min**2/stot) |
1001 | + xo = max(xo, ht3min**2/stot) |
1002 | + xo = max(xo, ht4min**2/stot) |
1003 | + xo = max(xo, misset**2/stot) |
1004 | + xo = max(xo, ptllmin**2/stot) |
1005 | if (swidth(i).eq.0.and.xo.eq.1d0/stot) then |
1006 | write(*,*) 'Warning: No minimum found for integration' |
1007 | write(*,*) ' Setting minimum to ',1d0/stot |
1008 | |
1009 | === modified file 'Template/SubProcesses/reweight.f' |
1010 | --- Template/SubProcesses/reweight.f 2011-08-27 21:03:09 +0000 |
1011 | +++ Template/SubProcesses/reweight.f 2011-10-05 03:29:23 +0000 |
1012 | @@ -5,6 +5,7 @@ |
1013 | implicit none |
1014 | include 'nexternal.inc' |
1015 | include 'message.inc' |
1016 | + include 'maxamps.inc' |
1017 | include 'cluster.inc' |
1018 | include 'sudakov.inc' |
1019 | include 'run.inc' |
1020 | @@ -76,6 +77,7 @@ |
1021 | implicit none |
1022 | include 'message.inc' |
1023 | include 'nexternal.inc' |
1024 | + include 'maxamps.inc' |
1025 | include 'cluster.inc' |
1026 | integer ipdg,imode |
1027 | double precision q0, Q11 |
1028 | @@ -135,14 +137,9 @@ |
1029 | c************************************************** |
1030 | implicit none |
1031 | integer ipdg, irfl |
1032 | - |
1033 | - isqcd=.true. |
1034 | - |
1035 | -c Assume that QCD particles have pdg codes that are (multiples of 1M) + |
1036 | -c 1-10 or 21 |
1037 | - irfl=mod(abs(ipdg),1000000) |
1038 | - if (irfl.ge.11.and.irfl.ne.21) isqcd=.false. |
1039 | -c write(*,*)'iqcd? pdg = ',ipdg,' -> ',irfl,' -> ',isqcd |
1040 | + integer get_color |
1041 | + |
1042 | + isqcd=(iabs(get_color(ipdg)).gt.1) |
1043 | |
1044 | return |
1045 | end |
1046 | @@ -200,42 +197,33 @@ |
1047 | integer imo,ida1,ida2,i,idmo,idda1,idda2 |
1048 | integer ipdg(n_max_cl),ipart(2,n_max_cl) |
1049 | |
1050 | - do i=1,2 |
1051 | - ipart(i,imo)=0 |
1052 | - enddo |
1053 | - |
1054 | idmo=ipdg(imo) |
1055 | idda1=ipdg(ida1) |
1056 | idda2=ipdg(ida2) |
1057 | |
1058 | - if (btest(mlevel,1)) then |
1059 | - write(*,*) ' updating ipart for: ',ida1,ida2,imo |
1060 | + if (btest(mlevel,4)) then |
1061 | + write(*,*) ' updating ipart for: ',ida1,ida2,' -> ',imo |
1062 | endif |
1063 | |
1064 | - if (btest(mlevel,1)) then |
1065 | - write(*,*) ' daughters: ',(ipart(i,ida1),i=1,2),(ipart(i,ida2),i=1,2) |
1066 | - endif |
1067 | + if (btest(mlevel,4)) then |
1068 | + write(*,*) ' daughters: ',(ipart(i,ida1),i=1,2),(ipart(i,ida2),i=1,2) |
1069 | + endif |
1070 | |
1071 | c IS clustering - just transmit info on incoming line |
1072 | if((ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2).or. |
1073 | $ (ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2))then |
1074 | - if(ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2) |
1075 | - $ ipart(1,imo)=ipart(1,ida2) |
1076 | - if(ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2) |
1077 | - $ ipart(1,imo)=ipart(1,ida1) |
1078 | - if (btest(mlevel,1)) then |
1079 | - write(*,*) ' -> ',(ipart(i,imo),i=1,2) |
1080 | -c Set intermediate particle identity |
1081 | - if(iabs(idmo).lt.6)then |
1082 | - if(iabs(idda1).lt.6) ipdg(imo)=-idda1 |
1083 | - if(iabs(idda2).lt.6) ipdg(imo)=-idda2 |
1084 | - idmo=ipdg(imo) |
1085 | - if (btest(mlevel,1)) then |
1086 | - write(*,*) ' particle identities: ',idda1,idda2,idmo |
1087 | - endif |
1088 | - endif |
1089 | - endif |
1090 | - return |
1091 | + ipart(2,imo)=0 |
1092 | + if(ipart(1,ida1).le.2.and.ipart(1,ida2).le.2)then |
1093 | +c This is last clustering - keep mother ipart |
1094 | + ipart(1,imo)=ipart(1,imo) |
1095 | + elseif(ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2)then |
1096 | + ipart(1,imo)=ipart(1,ida2) |
1097 | + elseif(ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2)then |
1098 | + ipart(1,imo)=ipart(1,ida1) |
1099 | + endif |
1100 | + if (btest(mlevel,4)) |
1101 | + $ write(*,*) ' -> ',(ipart(i,imo),i=1,2) |
1102 | + return |
1103 | endif |
1104 | |
1105 | c FS clustering |
1106 | @@ -262,33 +250,25 @@ |
1107 | else if(idmo.eq.idda1.or.idmo.eq.idda1+sign(1,idda2))then |
1108 | c quark -> quark-gluon or quark-Z or quark-h or quark-W |
1109 | ipart(1,imo)=ipart(1,ida1) |
1110 | + ipart(2,imo)=0 |
1111 | else if(idmo.eq.idda2.or.idmo.eq.idda2+sign(1,idda1))then |
1112 | c quark -> gluon-quark or Z-quark or h-quark or W-quark |
1113 | ipart(1,imo)=ipart(1,ida2) |
1114 | + ipart(2,imo)=0 |
1115 | else |
1116 | c Color singlet |
1117 | ipart(1,imo)=ipart(1,ida1) |
1118 | ipart(2,imo)=ipart(1,ida2) |
1119 | endif |
1120 | |
1121 | - if (btest(mlevel,1)) then |
1122 | + if (btest(mlevel,4)) then |
1123 | write(*,*) ' -> ',(ipart(i,imo),i=1,2) |
1124 | endif |
1125 | |
1126 | -c Set intermediate particle identity |
1127 | - if(iabs(idmo).lt.6)then |
1128 | - if(iabs(idda1).lt.6) ipdg(imo)=idda1 |
1129 | - if(iabs(idda2).lt.6) ipdg(imo)=idda2 |
1130 | - idmo=ipdg(imo) |
1131 | - if (btest(mlevel,1)) then |
1132 | - write(*,*) ' particle identities: ',idda1,idda2,idmo |
1133 | - endif |
1134 | - endif |
1135 | - |
1136 | return |
1137 | end |
1138 | |
1139 | - logical function isjetvx(imo,ida1,ida2,ipdg,ipart) |
1140 | + logical function isjetvx(imo,ida1,ida2,ipdg,ipart,islast) |
1141 | c*************************************************** |
1142 | c Checks if a qcd vertex generates a jet |
1143 | c*************************************************** |
1144 | @@ -299,7 +279,7 @@ |
1145 | |
1146 | integer imo,ida1,ida2,idmo,idda1,idda2,i |
1147 | integer ipdg(n_max_cl),ipart(2,n_max_cl) |
1148 | - logical isqcd,isjet |
1149 | + logical isqcd,isjet,islast |
1150 | external isqcd,isjet |
1151 | |
1152 | idmo=ipdg(imo) |
1153 | @@ -307,7 +287,7 @@ |
1154 | idda2=ipdg(ida2) |
1155 | |
1156 | c Check QCD vertex |
1157 | - if(.not.isqcd(idmo).or..not.isqcd(idda1).or. |
1158 | + if(islast.or..not.isqcd(idmo).or..not.isqcd(idda1).or. |
1159 | & .not.isqcd(idda2)) then |
1160 | isjetvx = .false. |
1161 | return |
1162 | @@ -317,7 +297,7 @@ |
1163 | if((ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2).or. |
1164 | $ (ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2))then |
1165 | c Check if ida1 is outgoing parton or ida2 is outgoing parton |
1166 | - if(ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2.and.isjet(idda1).or. |
1167 | + if(ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2.and.isjet(idda1).or. |
1168 | $ ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2.and.isjet(idda2))then |
1169 | isjetvx=.true. |
1170 | else |
1171 | @@ -336,6 +316,54 @@ |
1172 | return |
1173 | end |
1174 | |
1175 | + logical function ispartonvx(imo,ida1,ida2,ipdg,ipart,islast) |
1176 | +c*************************************************** |
1177 | +c Checks if a qcd vertex generates a jet |
1178 | +c*************************************************** |
1179 | + implicit none |
1180 | + |
1181 | + include 'ncombs.inc' |
1182 | + include 'nexternal.inc' |
1183 | + |
1184 | + integer imo,ida1,ida2,idmo,idda1,idda2,i |
1185 | + integer ipdg(n_max_cl),ipart(2,n_max_cl) |
1186 | + logical isqcd,isparton,islast |
1187 | + external isqcd,isparton |
1188 | + |
1189 | + idmo=ipdg(imo) |
1190 | + idda1=ipdg(ida1) |
1191 | + idda2=ipdg(ida2) |
1192 | + |
1193 | +c Check QCD vertex |
1194 | + if(.not.isqcd(idmo).or..not.isqcd(idda1).or. |
1195 | + & .not.isqcd(idda2)) then |
1196 | + ispartonvx = .false. |
1197 | + return |
1198 | + endif |
1199 | + |
1200 | +c IS clustering |
1201 | + if((ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2).or. |
1202 | + $ (ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2))then |
1203 | +c Check if ida1 is outgoing parton or ida2 is outgoing parton |
1204 | + if(.not.islast.and.ipart(1,ida2).ge.1.and.ipart(1,ida2).le.2.and.isparton(idda1).or. |
1205 | + $ ipart(1,ida1).ge.1.and.ipart(1,ida1).le.2.and.isparton(idda2))then |
1206 | + ispartonvx=.true. |
1207 | + else |
1208 | + ispartonvx=.false. |
1209 | + endif |
1210 | + return |
1211 | + endif |
1212 | + |
1213 | +c FS clustering |
1214 | + if(isparton(idda1).or.isparton(idda2))then |
1215 | + ispartonvx=.true. |
1216 | + else |
1217 | + ispartonvx=.false. |
1218 | + endif |
1219 | + |
1220 | + return |
1221 | + end |
1222 | + |
1223 | logical function setclscales(p) |
1224 | c************************************************** |
1225 | c reweight the hard me according to ckkw |
1226 | @@ -347,6 +375,7 @@ |
1227 | include 'genps.inc' |
1228 | include 'maxconfigs.inc' |
1229 | include 'nexternal.inc' |
1230 | + include 'maxamps.inc' |
1231 | include 'cluster.inc' |
1232 | include 'run.inc' |
1233 | include 'coupl.inc' |
1234 | @@ -355,6 +384,11 @@ |
1235 | C |
1236 | DOUBLE PRECISION P(0:3,NEXTERNAL) |
1237 | |
1238 | +C global variables |
1239 | +C Present process number |
1240 | + INTEGER IMIRROR,IPROC |
1241 | + COMMON/TO_MIRROR/IMIRROR, IPROC |
1242 | + |
1243 | C local variables |
1244 | integer i, j, idi, idj |
1245 | real*8 PI |
1246 | @@ -365,23 +399,23 @@ |
1247 | real*8 xptj,xptb,xpta,xptl,xmtc |
1248 | real*8 xetamin,xqcut,deltaeta |
1249 | common /to_specxpt/xptj,xptb,xpta,xptl,xmtc,xetamin,xqcut,deltaeta |
1250 | +c q2bck holds the central q2fact scales |
1251 | real*8 q2bck(2) |
1252 | - save q2bck |
1253 | - include 'maxamps.inc' |
1254 | + common /to_q2bck/q2bck |
1255 | double precision asref, pt2prev(n_max_cl),pt2min |
1256 | integer n, ibeam(2), iqcd(0:2)!, ilast(0:nexternal) |
1257 | integer idfl, idmap(-nexternal:nexternal) |
1258 | integer ipart(2,n_max_cl) |
1259 | double precision xnow(2) |
1260 | - integer jlast(2),jfirst(2),nwarning |
1261 | - logical qcdline(2),qcdrad(2) |
1262 | + integer jlast(2),jfirst(2),jcentral(2),nwarning |
1263 | + logical qcdline(2),partonline(2) |
1264 | logical failed,first |
1265 | data first/.true./ |
1266 | data nwarning/0/ |
1267 | |
1268 | - logical isqcd,isjet,isparton,isjetvx,cluster |
1269 | + logical isqcd,isjet,isparton,cluster |
1270 | double precision alphas |
1271 | - external isqcd, isjet, isparton, isjetvx, cluster, alphas |
1272 | + external isqcd, isjet, isparton, cluster, alphas |
1273 | |
1274 | setclscales=.true. |
1275 | |
1276 | @@ -391,61 +425,50 @@ |
1277 | c Cluster the configuration |
1278 | c |
1279 | |
1280 | - if (.not.cluster(p(0,1))) then |
1281 | -c if (xqcut.gt.0d0) then |
1282 | -c failed=.false. |
1283 | -cc if(pt2ijcl(1).lt.xqcut**2) failed=.true. |
1284 | -c if(failed) then |
1285 | -c if (btest(mlevel,3)) then |
1286 | -c write(*,*)'q_min = ',pt2ijcl(1),' < ',xqcut**2 |
1287 | -c endif |
1288 | -c setclscales=.false. |
1289 | -c return |
1290 | -c endif |
1291 | -c endif |
1292 | -c else |
1293 | - write(*,*)'setclscales: Error. Clustering failed.' |
1294 | - setclscales=.false. |
1295 | - return |
1296 | - endif |
1297 | +c if (.not.clustered) then |
1298 | + clustered = cluster(p(0,1)) |
1299 | + if(.not.clustered) then |
1300 | + open(unit=26,file='../../../error',status='unknown',err=999) |
1301 | + write(26,*) 'Error: Clustering failed in cluster.f.' |
1302 | + write(*,*) 'Error: Clustering failed in cluster.f.' |
1303 | + stop |
1304 | + 999 write(*,*) 'error' |
1305 | + setclscales=.false. |
1306 | + clustered = .false. |
1307 | + return |
1308 | + endif |
1309 | +c endif |
1310 | |
1311 | if (btest(mlevel,1)) then |
1312 | write(*,*)'setclscales: identified tree {' |
1313 | do i=1,nexternal-2 |
1314 | - write(*,*)' ',i,': ',idacl(i,1),'(',ipdgcl(idacl(i,1),igraphs(1)),')', |
1315 | - $ '&',idacl(i,2),'(',ipdgcl(idacl(i,2),igraphs(1)),')', |
1316 | - $ ' -> ',imocl(i),', ptij = ',dsqrt(pt2ijcl(i)), |
1317 | - $ '(',ipdgcl(imocl(i),igraphs(1)),')' |
1318 | + write(*,*)' ',i,': ',idacl(i,1),'(',ipdgcl(idacl(i,1),igraphs(1),iproc),')', |
1319 | + $ '&',idacl(i,2),'(',ipdgcl(idacl(i,2),igraphs(1),iproc),')', |
1320 | + $ ' -> ',imocl(i),'(',ipdgcl(imocl(i),igraphs(1),iproc),')', |
1321 | + $ ', ptij = ',dsqrt(pt2ijcl(i)) |
1322 | enddo |
1323 | + write(*,*)' process: ',iproc |
1324 | write(*,*)' graphs (',igraphs(0),'):',(igraphs(i),i=1,igraphs(0)) |
1325 | write(*,*)'}' |
1326 | endif |
1327 | |
1328 | -cc |
1329 | -cc Set factorization scale as for the MLM case |
1330 | -cc |
1331 | -c if(xqcut.gt.0) then |
1332 | -cc Using last clustering value |
1333 | -c if(pt2ijcl(nexternal-2).lt.max(4d0,xqcut**2))then |
1334 | -c setclscales=.false. |
1335 | -c return |
1336 | -c endif |
1337 | - |
1338 | c If last clustering is s-channel QCD (e.g. ttbar) use mt2last instead |
1339 | c (i.e. geom. average of transverse mass of t and t~) |
1340 | - if(mt2last.gt.4d0 .and. nexternal.gt.3 .and. isqcd(ipdgcl(idacl(nexternal-3,1),igraphs(1))) |
1341 | - $ .and. isqcd(ipdgcl(idacl(nexternal-3,2),igraphs(1))) |
1342 | - $ .and. isqcd(ipdgcl(imocl(nexternal-3),igraphs(1))))then |
1343 | - mt2ij(nexternal-2)=mt2last |
1344 | - mt2ij(nexternal-3)=mt2last |
1345 | - if (btest(mlevel,3)) then |
1346 | - write(*,*)' setclscales: set last vertices to mtlast: ',sqrt(mt2last) |
1347 | + if(mt2last.gt.4d0 .and. nexternal.gt.3) then |
1348 | + if(isqcd(ipdgcl(idacl(nexternal-3,1),igraphs(1),iproc)) |
1349 | + $ .and. isqcd(ipdgcl(idacl(nexternal-3,2),igraphs(1),iproc)) |
1350 | + $ .and. isqcd(ipdgcl(imocl(nexternal-3),igraphs(1),iproc)))then |
1351 | + mt2ij(nexternal-2)=mt2last |
1352 | + mt2ij(nexternal-3)=mt2last |
1353 | + if (btest(mlevel,3)) then |
1354 | + write(*,*)' setclscales: set last vertices to mtlast: ',sqrt(mt2last) |
1355 | + endif |
1356 | endif |
1357 | endif |
1358 | |
1359 | C If we have fixed factorization scale, for ickkw>0 means central |
1360 | C scale, i.e. last two scales (ren. scale for these vertices are |
1361 | -C anyway already set by "scale" above |
1362 | +C anyway already set by "scale" above) |
1363 | if(ickkw.gt.0) then |
1364 | if(fixed_fac_scale.and.first)then |
1365 | q2bck(1)=q2fact(1) |
1366 | @@ -461,97 +484,142 @@ |
1367 | |
1368 | ibeam(1)=ishft(1,0) |
1369 | ibeam(2)=ishft(1,1) |
1370 | - jlast(1)=0 |
1371 | - jlast(2)=0 |
1372 | - qcdline(1)=.false. |
1373 | - qcdline(2)=.false. |
1374 | - qcdrad(1)=.true. |
1375 | - qcdrad(2)=.true. |
1376 | + jlast(1)=1 |
1377 | + jlast(2)=1 |
1378 | + jcentral(1)=1 |
1379 | + jcentral(2)=1 |
1380 | + partonline(1)=isjet(ipdgcl(ibeam(1),igraphs(1),iproc)) |
1381 | + partonline(2)=isjet(ipdgcl(ibeam(2),igraphs(1),iproc)) |
1382 | + qcdline(1)=isqcd(ipdgcl(ibeam(1),igraphs(1),iproc)) |
1383 | + qcdline(2)=isqcd(ipdgcl(ibeam(2),igraphs(1),iproc)) |
1384 | |
1385 | c Go through clusterings and set factorization scales for use in dsig |
1386 | + if (nexternal.eq.3) goto 10 |
1387 | do n=1,nexternal-2 |
1388 | do i=1,2 |
1389 | - if (isqcd(ipdgcl(idacl(n,i),igraphs(1)))) then |
1390 | do j=1,2 |
1391 | - if ((isparton(ipdgcl(idacl(n,i),igraphs(1))).and.idacl(n,i).eq.ibeam(j).or. |
1392 | - $ isparton(ipdgcl(imocl(n),igraphs(1))).and.imocl(n).eq.ibeam(j)) |
1393 | - $ .and.qcdrad(j)) then |
1394 | + if (isqcd(ipdgcl(idacl(n,i),igraphs(1),iproc)).and. |
1395 | + $ idacl(n,i).eq.ibeam(j).and.qcdline(j)) then |
1396 | c is emission - this is what we want |
1397 | c Total pdf weight is f1(x1,pt2E)*fj(x1*z,Q)/fj(x1*z,pt2E) |
1398 | c f1(x1,pt2E) is given by DSIG, just need to set scale. |
1399 | ibeam(j)=imocl(n) |
1400 | - if(ickkw.eq.0.or.jfirst(j).eq.0) jfirst(j)=n |
1401 | - jlast(j)=n |
1402 | - qcdline(j)=isqcd(ipdgcl(imocl(n),igraphs(1))) |
1403 | - if(n.lt.nexternal-2)then |
1404 | - qcdrad(j)=isqcd(ipdgcl(idacl(n,3-i),igraphs(1))) |
1405 | - endif |
1406 | - else |
1407 | - qcdline(j)=isqcd(ipdgcl(imocl(n),igraphs(1))) |
1408 | + if(jfirst(j).eq.0)then |
1409 | + if(isjet(ipdgcl(imocl(n),igraphs(1),iproc))) then |
1410 | + jfirst(j)=n |
1411 | + else |
1412 | + jfirst(j)=-1 |
1413 | + endif |
1414 | + endif |
1415 | + if(partonline(j))then |
1416 | +c Stop fact scale where parton line stops |
1417 | + jlast(j)=n |
1418 | + partonline(j)=isjet(ipdgcl(imocl(n),igraphs(1),iproc)) |
1419 | + endif |
1420 | +c Trace QCD line through event |
1421 | + jcentral(j)=n |
1422 | + qcdline(j)=isqcd(ipdgcl(imocl(n),igraphs(1),iproc)) |
1423 | endif |
1424 | enddo |
1425 | - endif |
1426 | enddo |
1427 | enddo |
1428 | + |
1429 | + 10 if(jfirst(1).le.0) jfirst(1)=jlast(1) |
1430 | + if(jfirst(2).le.0) jfirst(2)=jlast(2) |
1431 | |
1432 | if (btest(mlevel,3)) |
1433 | $ write(*,*) 'jfirst is ',jfirst(1),jfirst(2), |
1434 | - $ ' and jlast is ',jlast(1),jlast(2) |
1435 | + $ ' jlast is ',jlast(1),jlast(2), |
1436 | + $ ' and jcentral is ',jcentral(1),jcentral(2) |
1437 | |
1438 | -c Set central scale to mT2 and multiply with scalefact |
1439 | - if(jlast(1).gt.0.and.mt2ij(jlast(1)).gt.0d0) |
1440 | - $ pt2ijcl(jlast(1))=mt2ij(jlast(1)) |
1441 | - if(jlast(2).gt.0.and.mt2ij(jlast(2)).gt.0d0) |
1442 | - $ pt2ijcl(jlast(2))=mt2ij(jlast(2)) |
1443 | +c Set central scale to mT2 |
1444 | + if(jcentral(1).gt.0.and.mt2ij(jcentral(1)).gt.0d0) |
1445 | + $ pt2ijcl(jcentral(1))=mt2ij(jcentral(1)) |
1446 | + if(jcentral(2).gt.0.and.mt2ij(jcentral(2)).gt.0d0) |
1447 | + $ pt2ijcl(jcentral(2))=mt2ij(jcentral(2)) |
1448 | if(btest(mlevel,4)) |
1449 | - $ print *,'pt2ijcl is: ',jlast(1), sqrt(pt2ijcl(jlast(1))), |
1450 | - $ jlast(2), sqrt(pt2ijcl(jlast(2))) |
1451 | - if(qcdline(1).and.qcdline(2).and.jlast(1).ne.jlast(2)) then |
1452 | -c If not WBF or similar, set uniform scale to be maximum |
1453 | - pt2ijcl(jlast(1))=max(pt2ijcl(jlast(1)),pt2ijcl(jlast(2))) |
1454 | - pt2ijcl(jlast(2))=pt2ijcl(jlast(1)) |
1455 | - endif |
1456 | - if(jlast(1).gt.0) pt2ijcl(jlast(1))=scalefact**2*pt2ijcl(jlast(1)) |
1457 | - if(jlast(2).gt.0) pt2ijcl(jlast(2))=scalefact**2*pt2ijcl(jlast(2)) |
1458 | - if(lpp(1).eq.0.and.lpp(2).eq.0)then |
1459 | - pt2ijcl(nexternal-2)=scalefact**2*pt2ijcl(nexternal-2) |
1460 | - pt2ijcl(nexternal-3)=pt2ijcl(nexternal-2) |
1461 | - endif |
1462 | + $ write(*,*)'pt2ijcl is: ',jlast(1), sqrt(pt2ijcl(jlast(1))), |
1463 | + $ jlast(2), sqrt(pt2ijcl(jlast(2))), |
1464 | + $ jcentral(1), sqrt(pt2ijcl(jcentral(1))), |
1465 | + $ jcentral(2), sqrt(pt2ijcl(jcentral(2))) |
1466 | |
1467 | c Check xqcut for vertices with jet daughters only |
1468 | + ibeam(1)=ishft(1,0) |
1469 | + ibeam(2)=ishft(1,1) |
1470 | if(xqcut.gt.0) then |
1471 | do n=1,nexternal-2 |
1472 | - if (n.lt.nexternal-2.and.n.ne.jlast(1).and.n.ne.jlast(2).and. |
1473 | - $ (isjet(ipdgcl(idacl(n,1),igraphs(1))).or.isjet(ipdgcl(idacl(n,2),igraphs(1)))).and. |
1474 | + do j=1,2 |
1475 | + if (btest(mlevel,4)) |
1476 | + $ write(*,*) 'ibeam(1,2), daughter, mother:', |
1477 | + $ ibeam(1),ibeam(2),idacl(n,j),imocl(n) |
1478 | + if (n.lt.nexternal-2) then |
1479 | + if(n.ne.jlast(1).and.n.ne.jlast(2).and. |
1480 | + $ isjet(ipdgcl(idacl(n,j),igraphs(1),iproc)).and. |
1481 | + $ (idacl(n,3-j).eq.ibeam(1).or. |
1482 | + $ idacl(n,3-j).eq.ibeam(2)).and. |
1483 | + $ sqrt(pt2ijcl(n)).lt.xqcut)then |
1484 | +c ISR |
1485 | + if (btest(mlevel,3)) |
1486 | + $ write(*,*) 'Failed xqcut: ',n, ipdgcl(idacl(n,1),igraphs(1),iproc), |
1487 | + $ ipdgcl(idacl(n,2),igraphs(1),iproc), xqcut |
1488 | + setclscales=.false. |
1489 | + clustered = .false. |
1490 | + return |
1491 | + endif |
1492 | + endif |
1493 | + if (idacl(n,j).eq.ibeam(1).and.imocl(n).ne.ibeam(2)) |
1494 | + $ ibeam(1)=imocl(n) |
1495 | + if (idacl(n,j).eq.ibeam(2).and.imocl(n).ne.ibeam(1)) |
1496 | + $ ibeam(2)=imocl(n) |
1497 | + enddo |
1498 | + if (n.lt.nexternal-2) then |
1499 | + if(n.ne.jlast(1).and.n.ne.jlast(2).and. |
1500 | + $ isjet(ipdgcl(idacl(n,1),igraphs(1),iproc)).and. |
1501 | + $ isjet(ipdgcl(idacl(n,2),igraphs(1),iproc)).and. |
1502 | + $ idacl(n,1).ne.ibeam(1).and.idacl(n,1).ne.ibeam(2).and. |
1503 | + $ idacl(n,2).ne.ibeam(1).and.idacl(n,2).ne.ibeam(2).and. |
1504 | $ sqrt(pt2ijcl(n)).lt.xqcut)then |
1505 | - setclscales=.false. |
1506 | - return |
1507 | +c FSR |
1508 | + if (btest(mlevel,3)) |
1509 | + $ write(*,*) 'Failed xqcut: ',n, ipdgcl(idacl(n,1),igraphs(1),iproc), |
1510 | + $ ipdgcl(idacl(n,2),igraphs(1),iproc), xqcut |
1511 | + setclscales=.false. |
1512 | + clustered = .false. |
1513 | + return |
1514 | + endif |
1515 | endif |
1516 | enddo |
1517 | endif |
1518 | |
1519 | c JA: Check xmtc cut for central process |
1520 | - if(pt2ijcl(jlast(1)).lt.xmtc**2.or.pt2ijcl(jlast(2)).lt.xmtc**2)then |
1521 | + if(pt2ijcl(jcentral(1)).lt.xmtc**2.or.pt2ijcl(jcentral(2)).lt.xmtc**2)then |
1522 | setclscales=.false. |
1523 | + clustered = .false. |
1524 | if(btest(mlevel,3)) write(*,*)'Failed xmtc cut ', |
1525 | - $ sqrt(pt2ijcl(jlast(1))),sqrt(pt2ijcl(jlast(1))),' < ',xmtc |
1526 | + $ sqrt(pt2ijcl(jcentral(1))),sqrt(pt2ijcl(jcentral(1))), |
1527 | + $ ' < ',xmtc |
1528 | return |
1529 | endif |
1530 | |
1531 | if(ickkw.eq.0.and.(fixed_fac_scale.or.q2fact(1).gt.0).and. |
1532 | $ (fixed_ren_scale.or.scale.gt.0)) return |
1533 | |
1534 | -c Set renormalization scale to geom. aver. of factorization scales |
1535 | +c Ensure that last scales are at least as big as first scales |
1536 | + pt2ijcl(jlast(1))=max(pt2ijcl(jlast(1)),pt2ijcl(jfirst(1))) |
1537 | + pt2ijcl(jlast(2))=max(pt2ijcl(jlast(2)),pt2ijcl(jfirst(2))) |
1538 | + |
1539 | +c Set renormalization scale to geom. aver. of central scales |
1540 | if(scale.eq.0d0) then |
1541 | - if(jlast(1).gt.0.and.jlast(2).gt.0) then |
1542 | - scale=(pt2ijcl(jlast(1))*pt2ijcl(jlast(2)))**0.25d0 |
1543 | - elseif(jlast(1).gt.0) then |
1544 | - scale=sqrt(pt2ijcl(jlast(1))) |
1545 | - elseif(jlast(2).gt.0) then |
1546 | - scale=sqrt(pt2ijcl(jlast(2))) |
1547 | + if(jcentral(1).gt.0.and.jcentral(2).gt.0) then |
1548 | + scale=(pt2ijcl(jcentral(1))*pt2ijcl(jcentral(2)))**0.25d0 |
1549 | + elseif(jcentral(1).gt.0) then |
1550 | + scale=sqrt(pt2ijcl(jcentral(1))) |
1551 | + elseif(jcentral(2).gt.0) then |
1552 | + scale=sqrt(pt2ijcl(jcentral(2))) |
1553 | elseif(lpp(1).eq.0.and.lpp(2).eq.0) then |
1554 | scale=sqrt(pt2ijcl(nexternal-2)) |
1555 | endif |
1556 | + scale = scalefact*scale |
1557 | if(scale.gt.0) |
1558 | $ G = SQRT(4d0*PI*ALPHAS(scale)) |
1559 | endif |
1560 | @@ -560,10 +628,35 @@ |
1561 | |
1562 | if(ickkw.gt.0.and.q2fact(1).gt.0) then |
1563 | c Use the fixed or previously set scale for central scale |
1564 | - if(jlast(1).gt.0) pt2ijcl(jlast(1))=q2fact(1) |
1565 | - if(jlast(2).gt.0) pt2ijcl(jlast(2))=q2fact(2) |
1566 | - endif |
1567 | - |
1568 | + if(jcentral(1).gt.0) pt2ijcl(jcentral(1))=q2fact(1) |
1569 | + if(jcentral(2).gt.0.and.jcentral(2).ne.jcentral(1)) |
1570 | + $ pt2ijcl(jcentral(2))=q2fact(2) |
1571 | + endif |
1572 | + |
1573 | + if(nexternal.eq.3.and.nincoming.eq.2.and.q2fact(1).eq.0) then |
1574 | + q2fact(1)=pt2ijcl(nexternal-2) |
1575 | + q2fact(2)=pt2ijcl(nexternal-2) |
1576 | + endif |
1577 | + |
1578 | + if(q2fact(1).eq.0d0) then |
1579 | +c Use the geom. average of central scale and first non-radiation vertex |
1580 | + if(jlast(1).gt.0) q2fact(1)=sqrt(pt2ijcl(jlast(1))*pt2ijcl(jcentral(1))) |
1581 | + if(jlast(2).gt.0) q2fact(2)=sqrt(pt2ijcl(jlast(2))*pt2ijcl(jcentral(2))) |
1582 | + if(jcentral(1).eq.jcentral(2))then |
1583 | +c We have a qcd line going through the whole event, use single scale |
1584 | + q2fact(1)=max(q2fact(1),q2fact(2)) |
1585 | + q2fact(2)=q2fact(1) |
1586 | + endif |
1587 | + endif |
1588 | + if(.not. fixed_fac_scale) then |
1589 | + q2fact(1)=scalefact**2*q2fact(1) |
1590 | + q2fact(2)=scalefact**2*q2fact(2) |
1591 | + q2bck(1)=q2fact(1) |
1592 | + q2bck(2)=q2fact(2) |
1593 | + if (btest(mlevel,3)) |
1594 | + $ write(*,*) 'Set central fact scales to ',sqrt(q2bck(1)),sqrt(q2bck(2)) |
1595 | + endif |
1596 | + |
1597 | if(lpp(1).eq.0.and.lpp(2).eq.0)then |
1598 | if(q2fact(1).gt.0)then |
1599 | pt2ijcl(nexternal-2)=q2fact(1) |
1600 | @@ -574,18 +667,10 @@ |
1601 | endif |
1602 | elseif(ickkw.eq.2.or.pdfwgt)then |
1603 | c Use the minimum scale found for fact scale in ME |
1604 | - if(jlast(1).gt.0) q2fact(1)=min(pt2ijcl(jfirst(1)),pt2ijcl(jlast(1))) |
1605 | - if(jlast(2).gt.0) q2fact(2)=min(pt2ijcl(jfirst(2)),pt2ijcl(jlast(2))) |
1606 | - else if(q2fact(1).eq.0d0) then |
1607 | - if(jlast(1).gt.0) q2fact(1)=pt2ijcl(jlast(1)) |
1608 | - if(jlast(2).gt.0) q2fact(2)=pt2ijcl(jlast(2)) |
1609 | - endif |
1610 | - |
1611 | - if(nexternal.eq.3.and.nincoming.eq.2) then |
1612 | - if(q2fact(1).eq.0) |
1613 | - $ q2fact(1)=pt2ijcl(nexternal-2) |
1614 | - if(q2fact(2).eq.0) |
1615 | - $ q2fact(2)=pt2ijcl(nexternal-2) |
1616 | + if(jlast(1).gt.0.and.jfirst(1).lt.jlast(1)) |
1617 | + $ q2fact(1)=min(pt2ijcl(jfirst(1)),q2fact(1)) |
1618 | + if(jlast(2).gt.0.and.jfirst(2).lt.jlast(2)) |
1619 | + $ q2fact(2)=min(pt2ijcl(jfirst(2)),q2fact(2)) |
1620 | endif |
1621 | |
1622 | c Check that factorization scale is >= 2 GeV |
1623 | @@ -601,6 +686,7 @@ |
1624 | write(*,*) 'No more warnings written out this run.' |
1625 | endif |
1626 | setclscales=.false. |
1627 | + clustered = .false. |
1628 | return |
1629 | endif |
1630 | |
1631 | @@ -620,19 +706,26 @@ |
1632 | include 'genps.inc' |
1633 | include 'maxconfigs.inc' |
1634 | include 'nexternal.inc' |
1635 | + include 'maxamps.inc' |
1636 | include 'cluster.inc' |
1637 | include 'run.inc' |
1638 | include 'coupl.inc' |
1639 | - include 'maxamps.inc' |
1640 | C |
1641 | C ARGUMENTS |
1642 | C |
1643 | DOUBLE PRECISION P(0:3,NEXTERNAL) |
1644 | |
1645 | C global variables |
1646 | - integer IPROC |
1647 | +C global variables |
1648 | +C Present process number |
1649 | + INTEGER IMIRROR,IPROC |
1650 | + COMMON/TO_MIRROR/IMIRROR, IPROC |
1651 | + integer ISPROC |
1652 | DOUBLE PRECISION PD(0:MAXPROC) |
1653 | - COMMON /SubProc/ PD, IPROC |
1654 | + COMMON /SubProc/ PD, ISPROC |
1655 | +c q2bck holds the central q2fact scales |
1656 | + real*8 q2bck(2) |
1657 | + common /to_q2bck/q2bck |
1658 | |
1659 | C local variables |
1660 | integer i, j, idi, idj |
1661 | @@ -653,27 +746,28 @@ |
1662 | c ipart gives external particle number chain |
1663 | integer ipart(2,n_max_cl) |
1664 | double precision xnow(2) |
1665 | - double precision xtarget, tmp |
1666 | + double precision xtarget,tmp,pdfj1,pdfj2,q2now,etot |
1667 | integer iseed,np |
1668 | data iseed/0/ |
1669 | logical isvx |
1670 | |
1671 | - logical isqcd,isjet,isparton,isjetvx |
1672 | + logical isqcd,isjet,isparton,isjetvx,ispartonvx |
1673 | double precision alphas,getissud,pdg2pdf, sudwgt |
1674 | real xran1 |
1675 | - external isqcd,isjet,isparton |
1676 | + external isqcd,isjet,isparton,ispartonvx |
1677 | external alphas, isjetvx, getissud, pdg2pdf, xran1, sudwgt |
1678 | |
1679 | rewgt=1.0d0 |
1680 | |
1681 | - if(ickkw.le.0) return |
1682 | - |
1683 | - if(.not.clustered)then |
1684 | + if((ickkw.gt.0.or..not.fixed_fac_scale.or..not.fixed_ren_scale) |
1685 | + $ .and..not.clustered)then |
1686 | write(*,*)'Error: No clustering done when calling rewgt!' |
1687 | stop |
1688 | endif |
1689 | clustered=.false. |
1690 | |
1691 | + if(ickkw.le.0) return |
1692 | + |
1693 | c Set mimimum kt scale, depending on highest mult or not |
1694 | if(hmult.or.ickkw.eq.1)then |
1695 | pt2min=0 |
1696 | @@ -683,9 +777,12 @@ |
1697 | if (btest(mlevel,3)) |
1698 | $ write(*,*) 'pt2min set to ',pt2min |
1699 | |
1700 | +c Set etot, used for non-radiating partons |
1701 | + etot=2d0*sqrt(ebeam(1)*ebeam(2)) |
1702 | + |
1703 | c Since we use pdf reweighting, need to know particle identities |
1704 | iprocset=1 |
1705 | - np = iproc |
1706 | + np = isproc |
1707 | xtarget=xran1(iseed)*pd(np) |
1708 | iprocset = 1 |
1709 | do while (pd(iprocset) .lt. xtarget .and. iprocset .lt. np) |
1710 | @@ -699,15 +796,24 @@ |
1711 | c external particle clustering scales) |
1712 | do i=1,nexternal |
1713 | c ilast(i)=ishft(1,i) |
1714 | - if(pt2min.gt.0)then |
1715 | - pt2prev(ishft(1,i-1))=max(pt2min,p(0,i)**2-p(1,i)**2-p(2,i)**2-p(3,i)**2) |
1716 | - else |
1717 | - pt2prev(ishft(1,i-1))=0d0 |
1718 | + pt2prev(ishft(1,i-1))=0d0 |
1719 | + if (ickkw.eq.2) then |
1720 | + if(pt2min.gt.0)then |
1721 | + pt2prev(ishft(1,i-1))= |
1722 | + $ max(pt2min,p(0,i)**2-p(1,i)**2-p(2,i)**2-p(3,i)**2) |
1723 | + endif |
1724 | + pt2pdf(ishft(1,i-1))=pt2prev(ishft(1,i-1)) |
1725 | + else if(pdfwgt) then |
1726 | + pt2pdf(ishft(1,i-1))=0d0 |
1727 | endif |
1728 | - pt2pdf(ishft(1,i-1))=pt2prev(ishft(1,i-1)) |
1729 | ptclus(i)=sqrt(pt2prev(ishft(1,i-1))) |
1730 | + if (btest(mlevel,3)) |
1731 | + $ write(*,*) 'Set ptclus for ',i,' to ', ptclus(i) |
1732 | ipart(1,ishft(1,i-1))=i |
1733 | ipart(2,ishft(1,i-1))=0 |
1734 | + if (btest(mlevel,4)) |
1735 | + $ write(*,*) 'Set ipart for ',ishft(1,i-1),' to ', |
1736 | + $ ipart(1,ishft(1,i-1)),ipart(2,ishft(1,i-1)) |
1737 | enddo |
1738 | c ilast(0)=nexternal |
1739 | ibeam(1)=ishft(1,0) |
1740 | @@ -715,8 +821,10 @@ |
1741 | if (btest(mlevel,1)) then |
1742 | write(*,*)'rewgt: identified tree {' |
1743 | do i=1,nexternal-2 |
1744 | - write(*,*)' ',i,': ',idacl(i,1),'&',idacl(i,2), |
1745 | - & ' -> ',imocl(i),', ptij = ',dsqrt(pt2ijcl(i)) |
1746 | + write(*,*)' ',i,': ',idacl(i,1),'(',ipdgcl(idacl(i,1),igraphs(1),iproc),')', |
1747 | + $ '&',idacl(i,2),'(',ipdgcl(idacl(i,2),igraphs(1),iproc),')', |
1748 | + $ ' -> ',imocl(i),'(',ipdgcl(imocl(i),igraphs(1),iproc),')', |
1749 | + $ ', ptij = ',dsqrt(pt2ijcl(i)) |
1750 | enddo |
1751 | write(*,*)' graphs (',igraphs(0),'):',(igraphs(i),i=1,igraphs(0)) |
1752 | write(*,*)'}' |
1753 | @@ -730,7 +838,7 @@ |
1754 | endif |
1755 | |
1756 | c Prepare for resetting q2fact based on PDF reweighting |
1757 | - if(ickkw.eq.2.or.pdfwgt)then |
1758 | + if(ickkw.eq.2)then |
1759 | q2fact(1)=0d0 |
1760 | q2fact(2)=0d0 |
1761 | endif |
1762 | @@ -741,102 +849,181 @@ |
1763 | |
1764 | c Perform alpha_s reweighting based on type of vertex |
1765 | do n=1,nexternal-2 |
1766 | +c scale for alpha_s reweighting |
1767 | + q2now=pt2ijcl(n) |
1768 | + if(n.eq.nexternal-2) then |
1769 | + q2now = scale**2 |
1770 | + endif |
1771 | if (btest(mlevel,3)) then |
1772 | - write(*,*)' ',n,': ',idacl(n,1),'(',ipdgcl(idacl(n,1),igraphs(1)), |
1773 | - & ')&',idacl(n,2),'(',ipdgcl(idacl(n,2),igraphs(1)),') -> ', |
1774 | - & imocl(n),'(',ipdgcl(imocl(n),igraphs(1)),'), ptij = ', |
1775 | - & dsqrt(pt2ijcl(n)) |
1776 | + write(*,*)' ',n,': ',idacl(n,1),'(',ipdgcl(idacl(n,1),igraphs(1),iproc), |
1777 | + & ')&',idacl(n,2),'(',ipdgcl(idacl(n,2),igraphs(1),iproc), |
1778 | + & ') -> ',imocl(n),'(',ipdgcl(imocl(n),igraphs(1),iproc), |
1779 | + & '), ptij = ',dsqrt(q2now) |
1780 | endif |
1781 | -c perform alpha_s reweighting only for vertices where a jet is produced |
1782 | +c perform alpha_s reweighting only for vertices where a parton is produced |
1783 | c and not for the last clustering (use non-fixed ren. scale for these) |
1784 | - if (n.lt.nexternal-2.and. |
1785 | - $ isjetvx(imocl(n),idacl(n,1),idacl(n,2),ipdgcl(1,igraphs(1)),ipart)) then |
1786 | + if (n.lt.nexternal-2)then |
1787 | + if(ispartonvx(imocl(n),idacl(n,1),idacl(n,2), |
1788 | + $ ipdgcl(1,igraphs(1),iproc),ipart,.false.)) then |
1789 | c alpha_s weight |
1790 | - rewgt=rewgt*alphas(alpsfact*sqrt(pt2ijcl(n)))/asref |
1791 | - if (btest(mlevel,3)) then |
1792 | - write(*,*)' reweight vertex: ',ipdgcl(imocl(n),igraphs(1)),ipdgcl(idacl(n,1),igraphs(1)),ipdgcl(idacl(n,2),igraphs(1)) |
1793 | - write(*,*)' as: ',alphas(alpsfact*dsqrt(pt2ijcl(n))), |
1794 | - & '/',asref,' -> ',alphas(alpsfact*dsqrt(pt2ijcl(n)))/asref |
1795 | - write(*,*)' and G=',SQRT(4d0*PI*ALPHAS(scale)) |
1796 | - endif |
1797 | + rewgt=rewgt*alphas(alpsfact*sqrt(q2now))/asref |
1798 | + if (btest(mlevel,3)) then |
1799 | + write(*,*)' reweight vertex: ',ipdgcl(imocl(n),igraphs(1),iproc), |
1800 | + $ ipdgcl(idacl(n,1),igraphs(1),iproc),ipdgcl(idacl(n,2),igraphs(1),iproc) |
1801 | + write(*,*)' as: ',alphas(alpsfact*dsqrt(q2now)), |
1802 | + & '/',asref,' -> ',alphas(alpsfact*dsqrt(q2now))/asref |
1803 | + write(*,*)' and G=',SQRT(4d0*PI*ALPHAS(scale)) |
1804 | + endif |
1805 | + endif |
1806 | endif |
1807 | c Update starting values for FS parton showering |
1808 | do i=1,2 |
1809 | do j=1,2 |
1810 | - if(ipart(j,idacl(n,i)).gt.0)then |
1811 | - ptclus(ipart(j,idacl(n,i)))=dsqrt(pt2ijcl(n)) |
1812 | + if(ipart(j,idacl(n,i)).gt.0.and.ipart(j,idacl(n,i)).gt.2)then |
1813 | + ptclus(ipart(j,idacl(n,i)))= |
1814 | + $ max(ptclus(ipart(j,idacl(n,i))),dsqrt(pt2ijcl(n))) |
1815 | + if(ickkw.ne.2.and. |
1816 | + $ (.not.isqcd(ipdgcl(imocl(n),igraphs(1),iproc)).or. |
1817 | + $ ipart(1,idacl(n,3-i)).le.2.and. |
1818 | + $ .not.isqcd(ipdgcl(idacl(n,3-i),igraphs(1),iproc)).or. |
1819 | + $ isbw(imocl(n))))then |
1820 | +c For particles originating in non-qcd t-channel vertices or decay vertices, |
1821 | +c set origination scale to machine energy since we don't want these |
1822 | +c to be included in matching. |
1823 | + ptclus(ipart(j,idacl(n,i)))=etot |
1824 | + endif |
1825 | + if (btest(mlevel,3)) |
1826 | + $ write(*,*) 'Set ptclus for ',ipart(j,idacl(n,i)), |
1827 | + $ ' to ', ptclus(ipart(j,idacl(n,i))), |
1828 | + $ ipdgcl(imocl(n),igraphs(1),iproc), |
1829 | + $ isqcd(ipdgcl(imocl(n),igraphs(1),iproc)),isbw(imocl(n)) |
1830 | endif |
1831 | enddo |
1832 | enddo |
1833 | +c Special case for last 1,2->i vertex |
1834 | + if(n.eq.nexternal-2)then |
1835 | + ptclus(ipart(1,imocl(n)))= |
1836 | + $ max(ptclus(ipart(1,imocl(n))),dsqrt(pt2ijcl(n))) |
1837 | + if(ickkw.ne.2.and. |
1838 | + $ (.not.isqcd(ipdgcl(idacl(n,1),igraphs(1),iproc)).or. |
1839 | + $ .not.isqcd(ipdgcl(idacl(n,2),igraphs(1),iproc))))then |
1840 | +c For particles originating in non-qcd vertices or decay vertices, |
1841 | +c set origination scale to machine energy since we don't want these |
1842 | +c to be included in matching. |
1843 | + ptclus(ipart(1,imocl(n)))=etot |
1844 | + endif |
1845 | + if (btest(mlevel,3)) |
1846 | + $ write(*,*) 'Set ptclus for ',ipart(1,imocl(n)), |
1847 | + $ ' to ', ptclus(ipart(1,imocl(n))), |
1848 | + $ ipdgcl(idacl(n,1),igraphs(1),iproc), |
1849 | + $ ipdgcl(idacl(n,2),igraphs(1),iproc) |
1850 | + endif |
1851 | c Update particle tree map |
1852 | - call ipartupdate(p,imocl(n),idacl(n,1),idacl(n,2),ipdgcl(1,igraphs(1)),ipart) |
1853 | + call ipartupdate(p,imocl(n),idacl(n,1),idacl(n,2), |
1854 | + $ ipdgcl(1,igraphs(1),iproc),ipart) |
1855 | if(ickkw.eq.2.or.pdfwgt) then |
1856 | c Perform PDF and, if ickkw=2, Sudakov reweighting |
1857 | isvx=.false. |
1858 | do i=1,2 |
1859 | c write(*,*)'weight ',idacl(n,i),', ptij=',pt2prev(idacl(n,i)) |
1860 | - if (isqcd(ipdgcl(idacl(n,i),igraphs(1)))) then |
1861 | - if(pt2min.eq.0d0) then |
1862 | + if (isqcd(ipdgcl(idacl(n,i),igraphs(1),iproc))) then |
1863 | + if(ickkw.eq.2.and.pt2min.eq.0d0) then |
1864 | pt2min=pt2ijcl(n) |
1865 | if (btest(mlevel,3)) |
1866 | $ write(*,*) 'pt2min set to ',pt2min |
1867 | endif |
1868 | - if(pt2prev(idacl(n,i)).eq.0d0) pt2prev(idacl(n,i))= |
1869 | + if(ickkw.eq.2.and.pt2prev(idacl(n,i)).eq.0d0) |
1870 | + $ pt2prev(idacl(n,i))= |
1871 | $ max(pt2min,p(0,i)**2-p(1,i)**2-p(2,i)**2-p(3,i)**2) |
1872 | do j=1,2 |
1873 | - if (isparton(ipdgcl(idacl(n,i),igraphs(1))).and |
1874 | + if (isparton(ipdgcl(idacl(n,i),igraphs(1),iproc)).and |
1875 | $ .idacl(n,i).eq.ibeam(j)) then |
1876 | c is sudakov weight - calculate only once for each parton |
1877 | c line where parton line ends with change of parton id or |
1878 | c non-radiation vertex |
1879 | isvx=.true. |
1880 | ibeam(j)=imocl(n) |
1881 | - if(pt2pdf(idacl(n,i)).eq.0d0) pt2pdf(idacl(n,i))=pt2prev(idacl(n,i)) |
1882 | - if(ickkw.eq.2.and.(ipdgcl(idacl(n,i),igraphs(1)).ne. |
1883 | - $ ipdgcl(imocl(n),igraphs(1)).or. |
1884 | +c Perform Sudakov reweighting if ickkw=2 |
1885 | + if(ickkw.eq.2.and.(ipdgcl(idacl(n,i),igraphs(1),iproc).ne. |
1886 | + $ ipdgcl(imocl(n),igraphs(1),iproc).or. |
1887 | $ .not.isjetvx(imocl(n),idacl(n,1),idacl(n,2), |
1888 | - $ ipdgcl(1,igraphs(1)),ipart)).and. |
1889 | - $ pt2prev(idacl(n,i)).lt.pt2ijcl(n).and.zcl(n).gt.1d-20)then |
1890 | + $ ipdgcl(1,igraphs(1),iproc),ipart,n.eq.nexternal-2)).and. |
1891 | + $ pt2prev(idacl(n,i)).lt.pt2ijcl(n))then |
1892 | tmp=min(1d0,max(getissud(ibeam(j),ipdgcl(idacl(n,i), |
1893 | - $ igraphs(1)),xnow(j),xnow(3-j),pt2ijcl(n)),1d-20)/ |
1894 | + $ igraphs(1),iproc),xnow(j),xnow(3-j),pt2ijcl(n)),1d-20)/ |
1895 | $ max(getissud(ibeam(j),ipdgcl(idacl(n,i), |
1896 | - $ igraphs(1)),xnow(j),xnow(3-j),pt2prev(idacl(n,i))),1d-20)) |
1897 | + $ igraphs(1),iproc),xnow(j),xnow(3-j),pt2prev(idacl(n,i))),1d-20)) |
1898 | rewgt=rewgt*tmp |
1899 | pt2prev(imocl(n))=pt2ijcl(n) |
1900 | if (btest(mlevel,3)) then |
1901 | - write(*,*)' reweight line: ',ipdgcl(idacl(n,i),igraphs(1)), idacl(n,i) |
1902 | + write(*,*)' reweight line: ',ipdgcl(idacl(n,i),igraphs(1),iproc), idacl(n,i) |
1903 | write(*,*)' pt2prev, pt2new, x1, x2: ',pt2prev(idacl(n,i)),pt2ijcl(n),xnow(j),xnow(3-j) |
1904 | write(*,*)' Sud: ',tmp |
1905 | write(*,*)' -> rewgt: ',rewgt |
1906 | endif |
1907 | - else |
1908 | + else if(ickkw.eq.2) then |
1909 | pt2prev(imocl(n))=pt2prev(idacl(n,i)) |
1910 | endif |
1911 | +c End Sudakov reweighting when we reach a non-radiation vertex |
1912 | + if(ickkw.eq.2.and..not. |
1913 | + $ ispartonvx(imocl(n),idacl(n,1),idacl(n,2), |
1914 | + $ ipdgcl(1,igraphs(1),iproc),ipart,n.eq.nexternal-2)) then |
1915 | + pt2prev(imocl(n))=1d30 |
1916 | + if (btest(mlevel,3)) then |
1917 | + write(*,*)' rewgt: ending reweighting for vx ', |
1918 | + $ idacl(n,1),idacl(n,2),imocl(n), |
1919 | + $ ' with ids ',ipdgcl(idacl(n,1),igraphs(1),iproc), |
1920 | + $ ipdgcl(idacl(n,2),igraphs(1),iproc),ipdgcl(imocl(n),igraphs(1),iproc) |
1921 | + endif |
1922 | + endif |
1923 | +c PDF reweighting |
1924 | c Total pdf weight is f1(x1,pt2E)*fj(x1*z,Q)/fj(x1*z,pt2E) |
1925 | c f1(x1,pt2E) is given by DSIG, already set scale for that |
1926 | - xnow(j)=xnow(j)*zcl(n) |
1927 | + if (zcl(n).gt.0d0.and.zcl(n).lt.1d0) then |
1928 | + xnow(j)=xnow(j)*zcl(n) |
1929 | + endif |
1930 | +c PDF scale |
1931 | + q2now=min(pt2ijcl(n), q2bck(j)) |
1932 | +c Set PDF scale to central factorization scale |
1933 | +c if non-radiating vertex or last 2->2 |
1934 | + if(.not.isjetvx(imocl(n),idacl(n,1),idacl(n,2), |
1935 | + $ ipdgcl(1,igraphs(1),iproc),ipart,n.eq.nexternal-2)) then |
1936 | + q2now=q2bck(j) |
1937 | + endif |
1938 | + if (btest(mlevel,3)) |
1939 | + $ write(*,*)' set q2now for pdf to ',sqrt(q2now) |
1940 | if(q2fact(j).eq.0d0.and.ickkw.eq.2)then |
1941 | q2fact(j)=pt2min ! Starting scale for PS |
1942 | - if (btest(mlevel,3)) then |
1943 | - write(*,*)' reweight: set fact scale ',j,' for PS scale to: ',q2fact(j) |
1944 | + pt2pdf(imocl(n))=q2now |
1945 | + if (btest(mlevel,3)) |
1946 | + $ write(*,*)' set fact scale ',j, |
1947 | + $ ' for PS scale to: ',sqrt(q2fact(j)) |
1948 | + else if(pt2pdf(idacl(n,i)).eq.0d0)then |
1949 | + pt2pdf(imocl(n))=q2now |
1950 | + if (btest(mlevel,3)) |
1951 | + $ write(*,*)' set pt2pdf for ',imocl(n), |
1952 | + $ ' to: ',sqrt(pt2pdf(imocl(n))) |
1953 | + else if(pt2pdf(idacl(n,i)).lt.q2now |
1954 | + $ .and.isjet(ipdgcl(idacl(n,i),igraphs(1),iproc))) then |
1955 | + pdfj1=pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1956 | + $ igraphs(1),iproc)*sign(1,ibeam(j)),xnow(j),sqrt(q2now)) |
1957 | + pdfj2=pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1958 | + $ igraphs(1),iproc)*sign(1,ibeam(j)),xnow(j), |
1959 | + $ sqrt(pt2pdf(idacl(n,i)))) |
1960 | + if(pdfj2.lt.1d-10)then |
1961 | +c Scale too low for heavy quark |
1962 | + rewgt=0d0 |
1963 | + if (btest(mlevel,3)) |
1964 | + $ write(*,*) 'Too low scale for quark pdf: ', |
1965 | + $ sqrt(pt2pdf(idacl(n,i))),pdfj2,pdfj1 |
1966 | + return |
1967 | endif |
1968 | - else if(q2fact(j).eq.0d0)then |
1969 | - q2fact(j)=pt2ijcl(n) |
1970 | - else if(pt2pdf(idacl(n,i)).lt.pt2ijcl(n).and.zcl(n).gt.1d-20) then |
1971 | - if(ickkw.eq.1) q2fact(j)=pt2ijcl(n) |
1972 | - rewgt=rewgt*max(pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1973 | - $ igraphs(1))*sign(1,ibeam(j)),xnow(j),sqrt(pt2ijcl(n))),1d-20)/ |
1974 | - $ max(pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1975 | - $ igraphs(1))*sign(1,ibeam(j)),xnow(j), |
1976 | - $ sqrt(pt2pdf(idacl(n,i)))),1d-20) |
1977 | + rewgt=rewgt*pdfj1/pdfj2 |
1978 | if (btest(mlevel,3)) then |
1979 | - write(*,*)' reweight ',ipdgcl(idacl(n,i),igraphs(1)),' by pdfs: ' |
1980 | - write(*,*)' x, pt2prev, ptnew: ',xnow(j),pt2pdf(idacl(n,i)),pt2ijcl(n) |
1981 | - write(*,*)' PDF: ', |
1982 | - $ pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1983 | - $ igraphs(1))*sign(1,ibeam(j)),xnow(j),sqrt(pt2ijcl(n))),' / ', |
1984 | - $ pdg2pdf(abs(ibeam(j)),ipdgcl(idacl(n,i), |
1985 | - $ igraphs(1))*sign(1,ibeam(j)),xnow(j),sqrt(pt2pdf(idacl(n,i)))) |
1986 | + write(*,*)' reweight ',n,i,ipdgcl(idacl(n,i),igraphs(1),iproc),' by pdfs: ' |
1987 | + write(*,*)' x, ptprev, ptnew: ',xnow(j), |
1988 | + $ sqrt(pt2pdf(idacl(n,i))),sqrt(q2now) |
1989 | + write(*,*)' PDF: ',pdfj1,' / ',pdfj2 |
1990 | write(*,*)' -> rewgt: ',rewgt |
1991 | c write(*,*)' (compare for glue: ', |
1992 | c $ pdg2pdf(ibeam(j),21,xbk(j),sqrt(pt2pdf(idacl(n,i)))),' / ', |
1993 | @@ -846,35 +1033,26 @@ |
1994 | c write(*,*)' -> ',pdg2pdf(ibeam(j),21,xbk(j),sqrt(pt2pdf(idacl(n,i))))/ |
1995 | c $ pdg2pdf(ibeam(j),21,xbk(j),sqrt(pt2ijcl(n)))*rewgt,' )' |
1996 | endif |
1997 | - endif |
1998 | -c End both Sudakov and pdf reweighting when we reach a |
1999 | -c non-radiation vertex |
2000 | - if(isjetvx(imocl(n),idacl(n,1),idacl(n,2),ipdgcl(1,igraphs(1)),ipart)) then |
2001 | - pt2pdf(imocl(n))=pt2ijcl(n) |
2002 | - else |
2003 | - pt2pdf(imocl(n))=1d30 |
2004 | - pt2prev(imocl(n))=1d30 |
2005 | - if (btest(mlevel,3)) then |
2006 | - write(*,*)' rewgt: for vertex ',idacl(n,1),idacl(n,2),imocl(n), |
2007 | - $ ' with ids ',ipdgcl(idacl(n,1),igraphs(1)), |
2008 | - $ ipdgcl(idacl(n,2),igraphs(1)),ipdgcl(imocl(n),igraphs(1)) |
2009 | - write(*,*)' set pt2prev, pt2pdf: ',pt2prev(imocl(n)),pt2pdf(imocl(n)) |
2010 | - endif |
2011 | +c Set scale for mother as this scale |
2012 | + pt2pdf(imocl(n))=q2now |
2013 | + else if(pt2pdf(idacl(n,i)).ge.q2now) then |
2014 | +c If no reweighting, just copy daughter scale for mother |
2015 | + pt2pdf(imocl(n))=pt2pdf(idacl(n,i)) |
2016 | endif |
2017 | goto 10 |
2018 | endif |
2019 | enddo |
2020 | c fs sudakov weight |
2021 | if(ickkw.eq.2.and.pt2prev(idacl(n,i)).lt.pt2ijcl(n).and. |
2022 | - $ (isvx.or.ipdgcl(idacl(n,i),igraphs(1)).ne.ipdgcl(imocl(n),igraphs(1)).or. |
2023 | - $ (ipdgcl(idacl(n,i),igraphs(1)).ne. |
2024 | - $ ipdgcl(idacl(n,3-i),igraphs(1)).and. |
2025 | + $ (isvx.or.ipdgcl(idacl(n,i),igraphs(1),iproc).ne.ipdgcl(imocl(n),igraphs(1),iproc).or. |
2026 | + $ (ipdgcl(idacl(n,i),igraphs(1),iproc).ne. |
2027 | + $ ipdgcl(idacl(n,3-i),igraphs(1),iproc).and. |
2028 | $ pt2prev(idacl(n,i)).gt.pt2prev(idacl(n,3-i))))) then |
2029 | tmp=sudwgt(sqrt(pt2min),sqrt(pt2prev(idacl(n,i))), |
2030 | - & dsqrt(pt2ijcl(n)),ipdgcl(idacl(n,i),igraphs(1)),1) |
2031 | + & dsqrt(pt2ijcl(n)),ipdgcl(idacl(n,i),igraphs(1),iproc),1) |
2032 | rewgt=rewgt*tmp |
2033 | if (btest(mlevel,3)) then |
2034 | - write(*,*)' reweight fs line: ',ipdgcl(idacl(n,i),igraphs(1)), idacl(n,i) |
2035 | + write(*,*)' reweight fs line: ',ipdgcl(idacl(n,i),igraphs(1),iproc), idacl(n,i) |
2036 | write(*,*)' pt2prev, pt2new: ',pt2prev(idacl(n,i)),pt2ijcl(n) |
2037 | write(*,*)' Sud: ',tmp |
2038 | write(*,*)' -> rewgt: ',rewgt |
2039 | @@ -886,13 +1064,13 @@ |
2040 | endif |
2041 | 10 continue |
2042 | enddo |
2043 | - if (ickkw.eq.2.and.n.eq.nexternal-2.and.isqcd(ipdgcl(imocl(n),igraphs(1))).and. |
2044 | + if (ickkw.eq.2.and.n.eq.nexternal-2.and.isqcd(ipdgcl(imocl(n),igraphs(1),iproc)).and. |
2045 | $ pt2prev(imocl(n)).lt.pt2ijcl(n)) then |
2046 | tmp=sudwgt(sqrt(pt2min),sqrt(pt2prev(imocl(n))), |
2047 | - & dsqrt(pt2ijcl(n)),ipdgcl(imocl(n),igraphs(1)),1) |
2048 | + & dsqrt(pt2ijcl(n)),ipdgcl(imocl(n),igraphs(1),iproc),1) |
2049 | rewgt=rewgt*tmp |
2050 | if (btest(mlevel,3)) then |
2051 | - write(*,*)' reweight last fs line: ',ipdgcl(imocl(n),igraphs(1)), imocl(n) |
2052 | + write(*,*)' reweight last fs line: ',ipdgcl(imocl(n),igraphs(1),iproc), imocl(n) |
2053 | write(*,*)' pt2prev, pt2new: ',pt2prev(imocl(n)),pt2ijcl(n) |
2054 | write(*,*)' Sud: ',tmp |
2055 | write(*,*)' -> rewgt: ',rewgt |
2056 | @@ -901,9 +1079,15 @@ |
2057 | endif |
2058 | enddo |
2059 | |
2060 | - if((ickkw.eq.2.or.pdfwgt).and.lpp(1).eq.0.and.lpp(2).eq.0)then |
2061 | + if(ickkw.eq.2.and.lpp(1).eq.0.and.lpp(2).eq.0)then |
2062 | q2fact(1)=pt2min |
2063 | q2fact(2)=q2fact(1) |
2064 | + else if (ickkw.eq.1.and.pdfwgt) then |
2065 | + q2fact(1)=q2bck(1) |
2066 | + q2fact(2)=q2bck(2) |
2067 | + if (btest(mlevel,3)) |
2068 | + $ write(*,*)' set fact scales for PS to ', |
2069 | + $ sqrt(q2fact(1)),sqrt(q2fact(2)) |
2070 | endif |
2071 | |
2072 | if (btest(mlevel,3)) then |
2073 | |
2074 | === modified file 'Template/SubProcesses/setcuts.f' |
2075 | --- Template/SubProcesses/setcuts.f 2011-09-04 14:11:41 +0000 |
2076 | +++ Template/SubProcesses/setcuts.f 2011-10-05 03:29:23 +0000 |
2077 | @@ -566,7 +566,7 @@ |
2078 | integer sprop(maxsproc,-max_branch:-1,lmaxconfigs) |
2079 | integer tprid(-max_branch:-1,lmaxconfigs) |
2080 | common/to_sprop/sprop,tprid |
2081 | - logical gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
2082 | + integer gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
2083 | include 'decayBW.inc' |
2084 | |
2085 | c |
2086 | @@ -580,7 +580,7 @@ |
2087 | |
2088 | c Set who comes from decay based on forced BW |
2089 | do i=-(nexternal-3),-1 |
2090 | - if(tprid(i,1).eq.0.and.gForceBW(i,1).or. |
2091 | + if(tprid(i,1).eq.0.and.gForceBW(i,1).eq.1.or. |
2092 | $ from_decay(i)) then |
2093 | from_decay(i)=.true. |
2094 | from_decay(iforest(1,i,1))=.true. |
2095 | |
2096 | === modified file 'Template/SubProcesses/setscales.f' |
2097 | --- Template/SubProcesses/setscales.f 2010-11-02 20:52:12 +0000 |
2098 | +++ Template/SubProcesses/setscales.f 2011-10-05 03:29:23 +0000 |
2099 | @@ -132,6 +132,7 @@ |
2100 | |
2101 | |
2102 | q2fact(1)=0d0 !factorization scale**2 for pdf1 |
2103 | + q2fact(2)=0d0 !factorization scale**2 for pdf2 |
2104 | |
2105 | c call set_ren_scale(P,q2fact(1)) |
2106 | c |
2107 | |
2108 | === removed file 'Template/SubProcesses/status' |
2109 | --- Template/SubProcesses/status 2010-10-30 03:26:37 +0000 |
2110 | +++ Template/SubProcesses/status 1970-01-01 00:00:00 +0000 |
2111 | @@ -1,1 +0,0 @@ |
2112 | - 0 / 1 |
2113 | |
2114 | === modified file 'Template/SubProcesses/symmetry.f' |
2115 | --- Template/SubProcesses/symmetry.f 2011-08-27 21:03:09 +0000 |
2116 | +++ Template/SubProcesses/symmetry.f 2011-10-05 03:29:23 +0000 |
2117 | @@ -233,7 +233,7 @@ |
2118 | integer iarray(imax) |
2119 | logical lconflict(-max_branch:nexternal) |
2120 | logical done |
2121 | - logical gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
2122 | + integer gForceBW(-max_branch:-1,lmaxconfigs) ! Forced BW |
2123 | include 'decayBW.inc' |
2124 | |
2125 | c----- |
2126 | @@ -373,7 +373,7 @@ |
2127 | integer itree(2,-max_branch:-1),iconfig |
2128 | logical lconflict(-max_branch:nexternal) |
2129 | integer sprop(maxsproc,-max_branch:-1) ! Propagator id |
2130 | - logical forcebw(-max_branch:-1) ! Forced BW, for identical particle conflicts |
2131 | + integer forcebw(-max_branch:-1) ! Forced BW, for identical particle conflicts |
2132 | c |
2133 | c local |
2134 | c |
2135 | @@ -428,14 +428,14 @@ |
2136 | if(itree(1,-i).lt.0) then |
2137 | if(iden_part(itree(1,-i)).ne.0.and. |
2138 | $ sprop(1,-i).eq.iden_part(itree(1,-i)) .or. |
2139 | - $ forcebw(itree(1,-i)).and. |
2140 | + $ forcebw(itree(1,-i)).eq.1.and. |
2141 | $ sprop(1,-i).eq.sprop(1,itree(1,-i))) |
2142 | $ iden_part(-i) = sprop(1,-i) |
2143 | endif |
2144 | if(itree(2,-i).lt.0) then |
2145 | if(iden_part(itree(2,-i)).ne.0.and. |
2146 | $ sprop(1,-i).eq.iden_part(itree(2,-i)).or. |
2147 | - $ forcebw(itree(2,-i)).and. |
2148 | + $ forcebw(itree(2,-i)).eq.1.and. |
2149 | $ sprop(1,-i).eq.sprop(1,itree(2,-i))) |
2150 | $ iden_part(-i) = sprop(1,-i) |
2151 | endif |
2152 | |
2153 | === modified file 'Template/SubProcesses/unwgt.f' |
2154 | --- Template/SubProcesses/unwgt.f 2011-09-11 13:02:35 +0000 |
2155 | +++ Template/SubProcesses/unwgt.f 2011-10-05 03:29:23 +0000 |
2156 | @@ -476,6 +476,9 @@ |
2157 | jpart(1,isym(i,jsym)) = idup(i,ip,numproc) |
2158 | jpart(2,isym(i,jsym)) = mothup(1,i) |
2159 | jpart(3,isym(i,jsym)) = mothup(2,i) |
2160 | +c Color info is filled in mothup |
2161 | + jpart(4,isym(i,jsym)) = 0 |
2162 | + jpart(5,isym(i,jsym)) = 0 |
2163 | jpart(6,isym(i,jsym)) = 1 |
2164 | enddo |
2165 | do i=1,nincoming |
2166 | @@ -550,7 +553,7 @@ |
2167 | c |
2168 | c write(*,*) 'Writing event' |
2169 | if(q2fact(1).gt.0.and.q2fact(2).gt.0)then |
2170 | - sscale = (q2fact(1)*q2fact(2))**0.25 |
2171 | + sscale = sqrt(max(q2fact(1),q2fact(2))) |
2172 | else if(q2fact(1).gt.0)then |
2173 | sscale = sqrt(q2fact(1)) |
2174 | else if(q2fact(2).gt.0)then |
2175 | |
2176 | === modified file 'Template/bin/survey' |
2177 | --- Template/bin/survey 2011-08-24 23:38:57 +0000 |
2178 | +++ Template/bin/survey 2011-10-05 03:29:23 +0000 |
2179 | @@ -122,6 +122,10 @@ |
2180 | time nice ./$job >/dev/null |
2181 | ../../bin/sum_html >/dev/null |
2182 | fi |
2183 | + if [[ -e ../../error ]]; then |
2184 | + echo "File error present, stop execution" |
2185 | + exit |
2186 | + fi |
2187 | done |
2188 | cd .. |
2189 | if [[ $mode == 0 ]]; then |
2190 | |
2191 | === modified file 'UpdateNotes.txt' |
2192 | --- UpdateNotes.txt 2011-09-30 13:55:43 +0000 |
2193 | +++ UpdateNotes.txt 2011-10-05 03:29:23 +0000 |
2194 | @@ -1,6 +1,50 @@ |
2195 | Update notes for MadGraph 5 (in reverse time order) |
2196 | |
2197 | -1.3.17 (30/10/11) OM: Fix a crash created by ALOHA when it tries to create the full |
2198 | +1.3.18 (04/10/11) JA: Use model information to determine color of particles |
2199 | + for reweighting and propagator color info. |
2200 | + JA: Changed the definition of "forbidden s-channels" |
2201 | + denoted by "$" to exclude on-shell s-channels while |
2202 | + keeping all diagrams (i.e., complemetary to the decay |
2203 | + chain formalism). This reduces the problems with |
2204 | + gauge invariance compared to previously. |
2205 | + "Onshell" is as usual defined by the "bwcutoff" flag |
2206 | + in the run_card.dat. |
2207 | + JA: Enable proper 4-flavor matching (such as gg>hbb~+jets) |
2208 | + Note that you need the Pythia/PGS package v. 2.1.9 or |
2209 | + later to use with 4F matching. |
2210 | + Changes include: alpha_s reweighting also for b vertices, |
2211 | + new scale treatment (mu_F for pp>hbb~ is (pT_b^max*m_Th)), |
2212 | + no clustering of gluons to final-state massive particles |
2213 | + in MadEvent. |
2214 | + JA: Ensure that factorization scale settings and matching works |
2215 | + also in singlet t-channel exchange processes like |
2216 | + single top and VBF. The dynamic factorization |
2217 | + scale is given by the pT of the scattered quark |
2218 | + (on each side of the event). |
2219 | + Note: You need the Pythia/PGS package v. 2.1.10 or later |
2220 | + to use with VBF matching, to ensure that both radiated |
2221 | + and scattered partons are treated correctly |
2222 | + - scattered partons need to be excluded from the matching, |
2223 | + since their pT can be below QCUT. An even better |
2224 | + treatment would require to individually shower and match |
2225 | + the two sides in Pythia, which is not presently possible. |
2226 | + Note: In the matched 4-flavor process p p > t b~ j $ w+ w- t~ + |
2227 | + p p > t b~ j j $ w+ w- t~, there is an admixture |
2228 | + of t-channel single top (with up to 1 radiated jet) |
2229 | + and s-channel single top (with up to 2 radiated jets). |
2230 | + In this case, the automatic determination of maximum |
2231 | + multiplicity sample doesn't work (since max in the file |
2232 | + will be 2 jets, but for t-channel max is 1 jet). |
2233 | + So MAXJETS=1 must be specified in the pythia_card.dat. |
2234 | + JA: Fixed pdf reweighting for matching, which due to a mistake |
2235 | + had never been activated. |
2236 | + JA: Improved phase space integration presetting further by |
2237 | + taking into account special cuts like xpt, ht etc. |
2238 | + JA: Introduce new convention for invariant mass cuts |
2239 | + - if max < min, exclude intermediate range |
2240 | + (allows to exclude W/Z dijet resonances in VBF processes) |
2241 | + |
2242 | +1.3.17 (30/09/11) OM: Fix a crash created by ALOHA when it tries to create the full |
2243 | set of ALOHA routines (pythia8 output only). |
2244 | |
2245 | 1.3.16 (11/09/11) JA: Fixed the problem from 1.3.12. |
2246 | |
2247 | === modified file 'madgraph/VERSION' |
2248 | --- madgraph/VERSION 2011-09-30 13:55:43 +0000 |
2249 | +++ madgraph/VERSION 2011-10-05 03:29:23 +0000 |
2250 | @@ -1,3 +1,3 @@ |
2251 | -version = 1.3.17 |
2252 | -date = 2011-09-30 |
2253 | +version = 1.3.18 |
2254 | +date = 2011-10-04 |
2255 | |
2256 | |
2257 | === modified file 'madgraph/core/base_objects.py' |
2258 | --- madgraph/core/base_objects.py 2011-08-27 02:01:27 +0000 |
2259 | +++ madgraph/core/base_objects.py 2011-10-05 03:29:23 +0000 |
2260 | @@ -1051,9 +1051,12 @@ |
2261 | |
2262 | self['id'] = 0 |
2263 | self['number'] = 0 |
2264 | - # True = final, False = initial (boolean to save memory) |
2265 | + # state: True = final, False = initial (boolean to save memory) |
2266 | self['state'] = True |
2267 | + # from_group: Used in diagram generation |
2268 | self['from_group'] = True |
2269 | + # onshell: decaying leg (True), forbidden s-channel (False), none (None) |
2270 | + self['onshell'] = None |
2271 | |
2272 | def filter(self, name, value): |
2273 | """Filter for valid leg property values.""" |
2274 | @@ -1075,12 +1078,18 @@ |
2275 | "%s is not a valid boolean for leg flag from_group" % \ |
2276 | str(value) |
2277 | |
2278 | + if name == 'onshell': |
2279 | + if not isinstance(value, bool) and value != None: |
2280 | + raise self.PhysicsObjectError, \ |
2281 | + "%s is not a valid boolean for leg flag onshell" % \ |
2282 | + str(value) |
2283 | + |
2284 | return True |
2285 | |
2286 | def get_sorted_keys(self): |
2287 | """Return particle property names as a nicely sorted list.""" |
2288 | |
2289 | - return ['id', 'number', 'state', 'from_group'] |
2290 | + return ['id', 'number', 'state', 'from_group', 'onshell'] |
2291 | |
2292 | def is_fermion(self, model): |
2293 | """Returns True if the particle corresponding to the leg is a |
2294 | |
2295 | === modified file 'madgraph/core/diagram_generation.py' |
2296 | --- madgraph/core/diagram_generation.py 2011-07-22 19:48:59 +0000 |
2297 | +++ madgraph/core/diagram_generation.py 2011-10-05 03:29:23 +0000 |
2298 | @@ -546,14 +546,18 @@ |
2299 | if process.get('forbidden_s_channels'): |
2300 | ninitial = len(filter(lambda leg: leg.get('state') == False, |
2301 | process.get('legs'))) |
2302 | - res = base_objects.DiagramList(\ |
2303 | - filter(lambda diagram: \ |
2304 | - not any([vertex.get_s_channel_id(\ |
2305 | - process.get('model'), ninitial) \ |
2306 | - in process.get('forbidden_s_channels') |
2307 | - for vertex in diagram.get('vertices')[:-1]]), |
2308 | - res)) |
2309 | - |
2310 | + verts = base_objects.VertexList(sum([[vertex for vertex \ |
2311 | + in diagram.get('vertices')[:-1] |
2312 | + if vertex.get_s_channel_id(\ |
2313 | + process.get('model'), ninitial) \ |
2314 | + in process.get('forbidden_s_channels')] \ |
2315 | + for diagram in res], [])) |
2316 | + for vert in verts: |
2317 | + # Use onshell = False to indicate that this s-channel is forbidden |
2318 | + newleg = copy.copy(vert.get('legs').pop(-1)) |
2319 | + newleg.set('onshell', False) |
2320 | + vert.get('legs').append(newleg) |
2321 | + |
2322 | # Set diagrams to res |
2323 | self['diagrams'] = res |
2324 | |
2325 | @@ -577,6 +581,9 @@ |
2326 | ntlnumber = legs[-1].get('number') |
2327 | lastleg = filter(lambda leg: leg.get('number') != ntlnumber, |
2328 | lastvx.get('legs'))[0] |
2329 | + # Reset onshell in case we have forbidden s-channels |
2330 | + if lastleg.get('onshell') == False: |
2331 | + lastleg.set('onshell', None) |
2332 | # Replace the last leg of nexttolastvertex |
2333 | legs[-1] = lastleg |
2334 | nexttolastvertex.set('legs', legs) |
2335 | @@ -908,15 +915,17 @@ |
2336 | vertices = [] |
2337 | |
2338 | for diagram in self.get('diagrams'): |
2339 | + # Keep track of external legs (leg numbers already used) |
2340 | + leg_external = set() |
2341 | for ivx, vertex in enumerate(diagram.get('vertices')): |
2342 | for ileg, leg in enumerate(vertex.get('legs')): |
2343 | - if leg.get('state') and leg.get('id') in decay_ids: |
2344 | - # Use from_group to indicate decaying legs, |
2345 | + # Ensure that only external legs get decay flag |
2346 | + if leg.get('state') and leg.get('id') in decay_ids and \ |
2347 | + leg.get('number') not in leg_external: |
2348 | + # Use onshell to indicate decaying legs, |
2349 | # i.e. legs that have decay chains |
2350 | leg = copy.copy(leg) |
2351 | - leg.set('from_group', True) |
2352 | - else: |
2353 | - leg.set('from_group', False) |
2354 | + leg.set('onshell', True) |
2355 | try: |
2356 | index = legs.index(leg) |
2357 | except ValueError: |
2358 | @@ -924,6 +933,7 @@ |
2359 | legs.append(leg) |
2360 | else: # Found a leg |
2361 | vertex.get('legs')[ileg] = legs[index] |
2362 | + leg_external.add(leg.get('number')) |
2363 | try: |
2364 | index = vertices.index(vertex) |
2365 | diagram.get('vertices')[ivx] = vertices[index] |
2366 | @@ -986,7 +996,7 @@ |
2367 | self['decay_chains'].append(\ |
2368 | DecayChainAmplitude(process, collect_mirror_procs, |
2369 | ignore_six_quark_processes)) |
2370 | - # Flag decaying legs in the core process by from_group = True |
2371 | + # Flag decaying legs in the core process by onshell = True |
2372 | decay_ids = sum([[a.get('process').get('legs')[0].get('id') \ |
2373 | for a in dec.get('amplitudes')] for dec in \ |
2374 | self['decay_chains']], []) |
2375 | |
2376 | === modified file 'madgraph/core/helas_objects.py' |
2377 | --- madgraph/core/helas_objects.py 2011-09-11 13:02:35 +0000 |
2378 | +++ madgraph/core/helas_objects.py 2011-10-05 03:29:23 +0000 |
2379 | @@ -85,12 +85,13 @@ |
2380 | part = model.get_particle(leg.get('id')) |
2381 | |
2382 | # For legs with decay chains defined, include leg id (don't combine) |
2383 | - if leg.get('from_group'): id = leg.get('id') |
2384 | + if leg.get('onshell'): id = leg.get('id') |
2385 | else: id = 0 |
2386 | # For FS legs, don't care about number (but do for IS legs) |
2387 | if leg.get('state'): number = 0 |
2388 | else: number = leg.get('number') |
2389 | - return [((number, id, part.get('spin'), |
2390 | + # Include also onshell, since this specifies forbidden s-channel |
2391 | + return [((number, id, part.get('spin'), leg.get('onshell'), |
2392 | part.get('is_part'), part.get('self_antipart'), |
2393 | part.get('mass'), part.get('width'), part.get('color')), |
2394 | leg.get('number'))] |
2395 | @@ -191,7 +192,7 @@ |
2396 | # fermionflow = 1 fermions have +-1 for flow (bosons always +1), |
2397 | # -1 is used only if there is a fermion flow clash |
2398 | # due to a Majorana particle |
2399 | - self['state'] = 'incoming' |
2400 | + self['state'] = 'initial' |
2401 | self['leg_state'] = True |
2402 | self['mothers'] = HelasWavefunctionList() |
2403 | self['number_external'] = 0 |
2404 | @@ -202,8 +203,9 @@ |
2405 | self['decay'] = False |
2406 | # The onshell flag is used in processes with defined decay |
2407 | # chains, to indicate that this wavefunction is decayed and |
2408 | - # should be onshell |
2409 | - self['onshell'] = False |
2410 | + # should be onshell (True), as well as for forbidden s-channels (False). |
2411 | + # Default is None |
2412 | + self['onshell'] = None |
2413 | |
2414 | # Customized constructor |
2415 | def __init__(self, *arguments): |
2416 | @@ -227,6 +229,9 @@ |
2417 | self.set('number_external', leg.get('number')) |
2418 | self.set('number', leg.get('number')) |
2419 | self.set('state', {False: 'initial', True: 'final'}[leg.get('state')]) |
2420 | + if leg.get('onshell') == False: |
2421 | + # Denotes forbidden s-channel |
2422 | + self.set('onshell', leg.get('onshell')) |
2423 | self.set('leg_state', leg.get('state')) |
2424 | # Need to set 'decay' to True for particles which will be |
2425 | # decayed later, in order to not combine such processes |
2426 | @@ -365,11 +370,17 @@ |
2427 | "%s is not a valid list of mothers for wavefunction" % \ |
2428 | str(value) |
2429 | |
2430 | - if name in ['decay', 'onshell']: |
2431 | + if name in ['decay']: |
2432 | if not isinstance(value, bool): |
2433 | raise self.PhysicsObjectError, \ |
2434 | "%s is not a valid bool" % str(value) + \ |
2435 | - " for decay or onshell" |
2436 | + " for decay" |
2437 | + |
2438 | + if name in ['onshell']: |
2439 | + if not isinstance(value, bool) and value != None: |
2440 | + raise self.PhysicsObjectError, \ |
2441 | + "%s is not a valid bool" % str(value) + \ |
2442 | + " for onshell" |
2443 | |
2444 | return True |
2445 | |
2446 | @@ -933,32 +944,33 @@ |
2447 | # Generate last vertex |
2448 | legs = base_objects.LegList() |
2449 | |
2450 | - # We use the from_group flag to indicate whether this outgoing |
2451 | - # leg corresponds to a decaying (onshell) particle or not |
2452 | + # We use the onshell flag to indicate whether this outgoing |
2453 | + # leg corresponds to a decaying (onshell) particle, forbidden |
2454 | + # s-channel, or regular |
2455 | try: |
2456 | - lastleg = wf_dict[self.get('number')] |
2457 | + lastleg = wf_dict[(self.get('number'),self.get('onshell'))] |
2458 | except KeyError: |
2459 | lastleg = base_objects.Leg({ |
2460 | 'id': self.get_pdg_code(), |
2461 | 'number': self.get('number_external'), |
2462 | 'state': self.get('leg_state'), |
2463 | - 'from_group': self.get('onshell') |
2464 | + 'onshell': self.get('onshell') |
2465 | }) |
2466 | if optimization != 0: |
2467 | - wf_dict[self.get('number')] = lastleg |
2468 | + wf_dict[(self.get('number'),self.get('onshell'))] = lastleg |
2469 | |
2470 | for mother in self.get('mothers'): |
2471 | try: |
2472 | - leg = wf_dict[mother.get('number')] |
2473 | + leg = wf_dict[(mother.get('number'),False)] |
2474 | except KeyError: |
2475 | leg = base_objects.Leg({ |
2476 | 'id': mother.get_pdg_code(), |
2477 | 'number': mother.get('number_external'), |
2478 | 'state': mother.get('leg_state'), |
2479 | - 'from_group': mother.get('onshell') |
2480 | + 'onshell': None |
2481 | }) |
2482 | if optimization != 0: |
2483 | - wf_dict[mother.get('number')] = leg |
2484 | + wf_dict[(mother.get('number'),False)] = leg |
2485 | legs.append(leg) |
2486 | |
2487 | legs.append(lastleg) |
2488 | @@ -1025,7 +1037,7 @@ |
2489 | 'id': mother.get_pdg_code(), |
2490 | 'number': mother.get('number_external'), |
2491 | 'state': mother.get('leg_state'), |
2492 | - 'from_group': False |
2493 | + 'onshell': mother.get('onshell') |
2494 | })) |
2495 | |
2496 | if init_mothers[0].get('number_external') == 1 and \ |
2497 | @@ -1091,7 +1103,7 @@ |
2498 | 'id': mother.get_pdg_code(), |
2499 | 'number': mother.get('number_external'), |
2500 | 'state': mother.get('leg_state'), |
2501 | - 'from_group': False |
2502 | + 'onshell': mother.get('onshell') |
2503 | })) |
2504 | legs.insert(0, mother_leg) |
2505 | |
2506 | @@ -1729,16 +1741,16 @@ |
2507 | legs = base_objects.LegList() |
2508 | for mother in self.get('mothers'): |
2509 | try: |
2510 | - leg = wf_dict[mother.get('number')] |
2511 | + leg = wf_dict[(mother.get('number'),False)] |
2512 | except KeyError: |
2513 | leg = base_objects.Leg({ |
2514 | 'id': mother.get_pdg_code(), |
2515 | 'number': mother.get('number_external'), |
2516 | 'state': mother.get('leg_state'), |
2517 | - 'from_group': mother.get('onshell') |
2518 | + 'onshell': None |
2519 | }) |
2520 | if optimization != 0: |
2521 | - wf_dict[mother.get('number')] = leg |
2522 | + wf_dict[(mother.get('number'),False)] = leg |
2523 | legs.append(leg) |
2524 | |
2525 | return base_objects.Vertex({ |
2526 | @@ -1781,7 +1793,7 @@ |
2527 | 'id': mother.get_pdg_code(), |
2528 | 'number': mother.get('number_external'), |
2529 | 'state': mother.get('leg_state'), |
2530 | - 'from_group': False |
2531 | + 'onshell': mother.get('onshell') |
2532 | })) |
2533 | |
2534 | # Renumber resulting leg according to minimum leg number |
2535 | @@ -1815,7 +1827,7 @@ |
2536 | 'id': mother.get_pdg_code(), |
2537 | 'number': mother.get('number_external'), |
2538 | 'state': mother.get('leg_state'), |
2539 | - 'from_group': False |
2540 | + 'onshell': mother.get('onshell') |
2541 | })) |
2542 | # Renumber resulting leg according to minimum leg number |
2543 | legs[-1].set('number', min([l.get('number') for l in legs[:-1]])) |
2544 | @@ -1857,7 +1869,7 @@ |
2545 | popped_legs.append(base_objects.Leg({'id': 21, |
2546 | 'number': min([l.get('number') for l in popped_legs]), |
2547 | 'state': True, |
2548 | - 'from_group': False})) |
2549 | + 'onshell': None})) |
2550 | |
2551 | new_vertex = base_objects.Vertex({ |
2552 | 'id': vertex.get('id'), |
2553 | |
2554 | === modified file 'madgraph/iolibs/export_v4.py' |
2555 | --- madgraph/iolibs/export_v4.py 2011-09-11 13:02:35 +0000 |
2556 | +++ madgraph/iolibs/export_v4.py 2011-10-05 03:29:23 +0000 |
2557 | @@ -621,7 +621,7 @@ |
2558 | if subproc_group: |
2559 | pdf_lines = pdf_lines + \ |
2560 | ("%s%d=PDG2PDF(ABS(LPP(IB(%d))),%d*LP," + \ |
2561 | - "XBK(IB(%d)),DSQRT(Q2FACT(IB(%d))))\n") % \ |
2562 | + "XBK(IB(%d)),DSQRT(Q2FACT(%d)))\n") % \ |
2563 | (pdf_codes[initial_state], |
2564 | i + 1, i + 1, pdgtopdf[initial_state], |
2565 | i + 1, i + 1) |
2566 | @@ -1006,6 +1006,10 @@ |
2567 | mapconfigs, |
2568 | matrix_element) |
2569 | |
2570 | + filename = 'get_color.f' |
2571 | + self.write_colors_file(writers.FortranWriter(filename), |
2572 | + matrix_element) |
2573 | + |
2574 | filename = 'decayBW.inc' |
2575 | self.write_decayBW_file(writers.FortranWriter(filename), |
2576 | s_and_t_channels) |
2577 | @@ -1410,6 +1414,58 @@ |
2578 | return True |
2579 | |
2580 | #=========================================================================== |
2581 | + # write_coloramps_file |
2582 | + #=========================================================================== |
2583 | + def write_colors_file(self, writer, matrix_elements): |
2584 | + """Write the get_color.f file for MadEvent, which returns color |
2585 | + for all particles used in the matrix element.""" |
2586 | + |
2587 | + if isinstance(matrix_elements, helas_objects.HelasMatrixElement): |
2588 | + matrix_elements = [matrix_elements] |
2589 | + |
2590 | + model = matrix_elements[0].get('processes')[0].get('model') |
2591 | + |
2592 | + # We need the both particle and antiparticle wf_ids, since the identity |
2593 | + # depends on the direction of the wf. |
2594 | + wf_ids = set(sum([sum([sum([[wf.get_pdg_code(),wf.get_anti_pdg_code()] \ |
2595 | + for wf in d.get('wavefunctions')],[]) \ |
2596 | + for d in me.get('diagrams')], []) \ |
2597 | + for me in matrix_elements], [])) |
2598 | + |
2599 | + leg_ids = set(sum([sum([[l.get('id') for l in \ |
2600 | + p.get_legs_with_decays()] for p in \ |
2601 | + me.get('processes')], []) for me in |
2602 | + matrix_elements], [])) |
2603 | + particle_ids = sorted(list(wf_ids.union(leg_ids))) |
2604 | + |
2605 | + lines = """function get_color(ipdg) |
2606 | + implicit none |
2607 | + integer get_color, ipdg |
2608 | + |
2609 | + if(ipdg.eq.%d)then |
2610 | + get_color=%d |
2611 | + return |
2612 | + """ % (particle_ids[0], model.get_particle(particle_ids[0]).get_color()) |
2613 | + |
2614 | + for part_id in particle_ids[1:]: |
2615 | + lines += """else if(ipdg.eq.%d)then |
2616 | + get_color=%d |
2617 | + return |
2618 | + """ % (part_id, model.get_particle(part_id).get_color()) |
2619 | + lines += """else |
2620 | + write(*,*)'Error: No color given for pdg ',ipdg |
2621 | + get_color=0 |
2622 | + return |
2623 | + endif |
2624 | + end |
2625 | + """ |
2626 | + |
2627 | + # Write the file |
2628 | + writer.writelines(lines) |
2629 | + |
2630 | + return True |
2631 | + |
2632 | + #=========================================================================== |
2633 | # write_maxconfigs_file |
2634 | #=========================================================================== |
2635 | def write_maxconfigs_file(self, writer, matrix_elements): |
2636 | @@ -1591,17 +1647,17 @@ |
2637 | |
2638 | lines = [] |
2639 | |
2640 | - booldict = {False: ".false.", True: ".true."} |
2641 | + booldict = {None: "0", True: "1", False: "2"} |
2642 | |
2643 | for iconf, config in enumerate(s_and_t_channels): |
2644 | schannels = config[0] |
2645 | for vertex in schannels: |
2646 | # For the resulting leg, pick out whether it comes from |
2647 | - # decay or not, as given by the from_group flag |
2648 | + # decay or not, as given by the onshell flag |
2649 | leg = vertex.get('legs')[-1] |
2650 | lines.append("data gForceBW(%d,%d)/%s/" % \ |
2651 | (leg.get('number'), iconf + 1, |
2652 | - booldict[leg.get('from_group')])) |
2653 | + booldict[leg.get('onshell')])) |
2654 | |
2655 | # Write the file |
2656 | writer.writelines(lines) |
2657 | @@ -2067,6 +2123,10 @@ |
2658 | maxflows, |
2659 | matrix_elements) |
2660 | |
2661 | + filename = 'get_color.f' |
2662 | + self.write_colors_file(writers.FortranWriter(filename), |
2663 | + matrix_elements) |
2664 | + |
2665 | filename = 'config_subproc_map.inc' |
2666 | self.write_config_subproc_map_file(writers.FortranWriter(filename), |
2667 | subproc_diagrams_for_config) |
2668 | |
2669 | === modified file 'madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc' |
2670 | --- madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc 2011-05-18 02:29:29 +0000 |
2671 | +++ madgraph/iolibs/template_files/super_auto_dsig_group_v4.inc 2011-10-05 03:29:23 +0000 |
2672 | @@ -149,14 +149,14 @@ |
2673 | C Select among the subprocesses based on PDF weight |
2674 | SUMPROB=0D0 |
2675 | DO J=1,SYMCONF(0) |
2676 | - DO I=1,MAXSPROC |
2677 | - IF(CONFSUB(I,SYMCONF(J)).NE.0) THEN |
2678 | - DO K=1,2 |
2679 | - IF(K.EQ.1.OR.MIRRORPROCS(I))THEN |
2680 | + DO IPROC=1,MAXSPROC |
2681 | + IF(CONFSUB(IPROC,SYMCONF(J)).NE.0) THEN |
2682 | + DO IMIRROR=1,2 |
2683 | + IF(IMIRROR.EQ.1.OR.MIRRORPROCS(IPROC))THEN |
2684 | C Calculate PDF weight for all subprocesses |
2685 | - SELPROC(K,I,J)=DSIGPROC(PP,J,I,K,SYMCONF,CONFSUB,1d0,4) |
2686 | - SUMPROB=SUMPROB+SELPROC(K,I,J) |
2687 | - IF(K.EQ.2)THEN |
2688 | + SELPROC(IMIRROR,IPROC,J)=DSIGPROC(PP,J,IPROC,IMIRROR,SYMCONF,CONFSUB,1d0,4) |
2689 | + SUMPROB=SUMPROB+SELPROC(IMIRROR,IPROC,J) |
2690 | + IF(IMIRROR.EQ.2)THEN |
2691 | C Need to flip back x values |
2692 | XDUM=XBK(1) |
2693 | XBK(1)=XBK(2) |
2694 | |
2695 | === modified file 'tests/acceptance_tests/test_cmd.py' |
2696 | --- tests/acceptance_tests/test_cmd.py 2011-08-07 19:55:37 +0000 |
2697 | +++ tests/acceptance_tests/test_cmd.py 2011-10-05 03:29:23 +0000 |
2698 | @@ -182,6 +182,10 @@ |
2699 | 'SubProcesses', |
2700 | 'P0_epem_epem', |
2701 | 'maxconfigs.inc'))) |
2702 | + self.assertTrue(os.path.exists(os.path.join(self.out_dir, |
2703 | + 'SubProcesses', |
2704 | + 'P0_epem_epem', |
2705 | + 'get_color.f'))) |
2706 | self.assertFalse(os.path.exists(os.path.join(self.out_dir, |
2707 | 'SubProcesses', |
2708 | 'P0_epem_epem', |
2709 | @@ -613,6 +617,10 @@ |
2710 | 'SubProcesses', |
2711 | 'P2_gg_qq', |
2712 | 'maxconfigs.inc'))) |
2713 | + self.assertTrue(os.path.exists(os.path.join(self.out_dir, |
2714 | + 'SubProcesses', |
2715 | + 'P2_gg_qq', |
2716 | + 'get_color.f'))) |
2717 | # Check that the Source directory compiles |
2718 | status = subprocess.call(['make'], |
2719 | stdout=devnull, |
2720 | |
2721 | === modified file 'tests/input_files/e+e-_e+e-.pkl' |
2722 | --- tests/input_files/e+e-_e+e-.pkl 2011-07-21 04:45:53 +0000 |
2723 | +++ tests/input_files/e+e-_e+e-.pkl 2011-10-05 03:29:23 +0000 |
2724 | @@ -41,11982 +41,12003 @@ |
2725 | p14 |
2726 | g5 |
2727 | (dp15 |
2728 | -S'state' |
2729 | +S'onshell' |
2730 | p16 |
2731 | +NsS'state' |
2732 | +p17 |
2733 | I00 |
2734 | sS'id' |
2735 | -p17 |
2736 | +p18 |
2737 | I-11 |
2738 | sS'from_group' |
2739 | -p18 |
2740 | +p19 |
2741 | I01 |
2742 | sS'number' |
2743 | -p19 |
2744 | +p20 |
2745 | I1 |
2746 | -stp20 |
2747 | -Rp21 |
2748 | +stp21 |
2749 | +Rp22 |
2750 | ag0 |
2751 | (g14 |
2752 | g5 |
2753 | -(dp22 |
2754 | +(dp23 |
2755 | g16 |
2756 | +Nsg17 |
2757 | I00 |
2758 | -sg17 |
2759 | +sg18 |
2760 | I11 |
2761 | -sg18 |
2762 | +sg19 |
2763 | I01 |
2764 | -sg19 |
2765 | +sg20 |
2766 | I2 |
2767 | -stp23 |
2768 | -Rp24 |
2769 | +stp24 |
2770 | +Rp25 |
2771 | ag0 |
2772 | (g14 |
2773 | g5 |
2774 | -(dp25 |
2775 | +(dp26 |
2776 | g16 |
2777 | +Nsg17 |
2778 | I01 |
2779 | -sg17 |
2780 | +sg18 |
2781 | I-11 |
2782 | -sg18 |
2783 | +sg19 |
2784 | I01 |
2785 | -sg19 |
2786 | +sg20 |
2787 | I3 |
2788 | -stp26 |
2789 | -Rp27 |
2790 | +stp27 |
2791 | +Rp28 |
2792 | ag0 |
2793 | (g14 |
2794 | g5 |
2795 | -(dp28 |
2796 | +(dp29 |
2797 | g16 |
2798 | +Nsg17 |
2799 | I01 |
2800 | -sg17 |
2801 | +sg18 |
2802 | I11 |
2803 | -sg18 |
2804 | -I01 |
2805 | sg19 |
2806 | +I01 |
2807 | +sg20 |
2808 | I4 |
2809 | -stp29 |
2810 | -Rp30 |
2811 | -atp31 |
2812 | -Rp32 |
2813 | +stp30 |
2814 | +Rp31 |
2815 | +atp32 |
2816 | +Rp33 |
2817 | sS'uid' |
2818 | -p33 |
2819 | +p34 |
2820 | I0 |
2821 | sS'forbidden_particles' |
2822 | -p34 |
2823 | -(lp35 |
2824 | +p35 |
2825 | +(lp36 |
2826 | sS'orders' |
2827 | -p36 |
2828 | -(dp37 |
2829 | +p37 |
2830 | +(dp38 |
2831 | S'WEIGHTED' |
2832 | -p38 |
2833 | +p39 |
2834 | I4 |
2835 | ssS'forbidden_s_channels' |
2836 | -p39 |
2837 | -(lp40 |
2838 | +p40 |
2839 | +(lp41 |
2840 | sS'required_s_channels' |
2841 | -p41 |
2842 | -(lp42 |
2843 | +p42 |
2844 | +(lp43 |
2845 | sS'model' |
2846 | -p43 |
2847 | +p44 |
2848 | g0 |
2849 | (cmadgraph.core.base_objects |
2850 | Model |
2851 | -p44 |
2852 | +p45 |
2853 | g5 |
2854 | -(dp45 |
2855 | +(dp46 |
2856 | S'ref_dict_to0' |
2857 | -p46 |
2858 | -(dp47 |
2859 | +p47 |
2860 | +(dp48 |
2861 | (I-4 |
2862 | I4 |
2863 | I21 |
2864 | -tp48 |
2865 | -(lp49 |
2866 | +tp49 |
2867 | +(lp50 |
2868 | I4 |
2869 | as(I-24 |
2870 | I24 |
2871 | -tp50 |
2872 | -(lp51 |
2873 | +tp51 |
2874 | +(lp52 |
2875 | I0 |
2876 | as(I-1 |
2877 | I1 |
2878 | I23 |
2879 | -tp52 |
2880 | -(lp53 |
2881 | +tp53 |
2882 | +(lp54 |
2883 | I18 |
2884 | as(I-5 |
2885 | I5 |
2886 | I23 |
2887 | -tp54 |
2888 | -(lp55 |
2889 | +tp55 |
2890 | +(lp56 |
2891 | I22 |
2892 | as(I-15 |
2893 | I15 |
2894 | I25 |
2895 | -tp56 |
2896 | -(lp57 |
2897 | +tp57 |
2898 | +(lp58 |
2899 | I42 |
2900 | as(I-24 |
2901 | I-11 |
2902 | I12 |
2903 | -tp58 |
2904 | -(lp59 |
2905 | +tp59 |
2906 | +(lp60 |
2907 | I39 |
2908 | as(I-24 |
2909 | I-15 |
2910 | I16 |
2911 | -tp60 |
2912 | -(lp61 |
2913 | +tp61 |
2914 | +(lp62 |
2915 | I41 |
2916 | as(I21 |
2917 | I21 |
2918 | I21 |
2919 | I21 |
2920 | -tp62 |
2921 | -(lp63 |
2922 | +tp63 |
2923 | +(lp64 |
2924 | I8 |
2925 | as(I11 |
2926 | I-11 |
2927 | -tp64 |
2928 | -(lp65 |
2929 | +tp65 |
2930 | +(lp66 |
2931 | I0 |
2932 | as(I-13 |
2933 | I13 |
2934 | I22 |
2935 | -tp66 |
2936 | -(lp67 |
2937 | +tp67 |
2938 | +(lp68 |
2939 | I16 |
2940 | as(I-4 |
2941 | I4 |
2942 | -tp68 |
2943 | -(lp69 |
2944 | +tp69 |
2945 | +(lp70 |
2946 | I0 |
2947 | as(I-5 |
2948 | I5 |
2949 | -tp70 |
2950 | -(lp71 |
2951 | +tp71 |
2952 | +(lp72 |
2953 | I0 |
2954 | as(I-1 |
2955 | I1 |
2956 | I21 |
2957 | -tp72 |
2958 | -(lp73 |
2959 | +tp73 |
2960 | +(lp74 |
2961 | I1 |
2962 | as(I-3 |
2963 | I3 |
2964 | I21 |
2965 | -tp74 |
2966 | -(lp75 |
2967 | +tp75 |
2968 | +(lp76 |
2969 | I3 |
2970 | as(I-2 |
2971 | I2 |
2972 | -tp76 |
2973 | -(lp77 |
2974 | +tp77 |
2975 | +(lp78 |
2976 | I0 |
2977 | as(I5 |
2978 | I-5 |
2979 | -tp78 |
2980 | -(lp79 |
2981 | +tp79 |
2982 | +(lp80 |
2983 | I0 |
2984 | as(I-6 |
2985 | I5 |
2986 | I24 |
2987 | -tp80 |
2988 | -(lp81 |
2989 | +tp81 |
2990 | +(lp82 |
2991 | I35 |
2992 | as(I-13 |
2993 | I13 |
2994 | I23 |
2995 | -tp82 |
2996 | -(lp83 |
2997 | +tp83 |
2998 | +(lp84 |
2999 | I25 |
3000 | as(I1 |
3001 | I-1 |
3002 | -tp84 |
3003 | -(lp85 |
3004 | +tp85 |
3005 | +(lp86 |
3006 | I0 |
3007 | as(I-24 |
3008 | I-3 |
3009 | I4 |
3010 | -tp86 |
3011 | -(lp87 |
3012 | +tp87 |
3013 | +(lp88 |
3014 | I31 |
3015 | as(I21 |
3016 | I21 |
3017 | -tp88 |
3018 | -(lp89 |
3019 | +tp89 |
3020 | +(lp90 |
3021 | I0 |
3022 | as(I-1 |
3023 | I1 |
3024 | -tp90 |
3025 | -(lp91 |
3026 | +tp91 |
3027 | +(lp92 |
3028 | I0 |
3029 | as(I16 |
3030 | I-16 |
3031 | -tp92 |
3032 | -(lp93 |
3033 | +tp93 |
3034 | +(lp94 |
3035 | I0 |
3036 | as(I-3 |
3037 | I3 |
3038 | I23 |
3039 | -tp94 |
3040 | -(lp95 |
3041 | +tp95 |
3042 | +(lp96 |
3043 | I20 |
3044 | as(I-2 |
3045 | I1 |
3046 | I24 |
3047 | -tp96 |
3048 | -(lp97 |
3049 | +tp97 |
3050 | +(lp98 |
3051 | I33 |
3052 | as(I12 |
3053 | I-12 |
3054 | -tp98 |
3055 | -(lp99 |
3056 | +tp99 |
3057 | +(lp100 |
3058 | I0 |
3059 | as(I-2 |
3060 | I2 |
3061 | I23 |
3062 | -tp100 |
3063 | -(lp101 |
3064 | +tp101 |
3065 | +(lp102 |
3066 | I19 |
3067 | as(I4 |
3068 | I-4 |
3069 | -tp102 |
3070 | -(lp103 |
3071 | +tp103 |
3072 | +(lp104 |
3073 | I0 |
3074 | as(I-16 |
3075 | I16 |
3076 | I23 |
3077 | -tp104 |
3078 | -(lp105 |
3079 | +tp105 |
3080 | +(lp106 |
3081 | I29 |
3082 | as(I-13 |
3083 | I13 |
3084 | -tp106 |
3085 | -(lp107 |
3086 | +tp107 |
3087 | +(lp108 |
3088 | I0 |
3089 | as(I23 |
3090 | I23 |
3091 | I25 |
3092 | I25 |
3093 | -tp108 |
3094 | -(lp109 |
3095 | +tp109 |
3096 | +(lp110 |
3097 | I55 |
3098 | as(I-2 |
3099 | I2 |
3100 | I22 |
3101 | -tp110 |
3102 | -(lp111 |
3103 | +tp111 |
3104 | +(lp112 |
3105 | I10 |
3106 | as(I-24 |
3107 | I23 |
3108 | I24 |
3109 | -tp112 |
3110 | -(lp113 |
3111 | +tp113 |
3112 | +(lp114 |
3113 | I46 |
3114 | as(I-24 |
3115 | I23 |
3116 | I23 |
3117 | I24 |
3118 | -tp114 |
3119 | -(lp115 |
3120 | +tp115 |
3121 | +(lp116 |
3122 | I52 |
3123 | as(I-24 |
3124 | I24 |
3125 | I25 |
3126 | -tp116 |
3127 | -(lp117 |
3128 | +tp117 |
3129 | +(lp118 |
3130 | I47 |
3131 | as(I-15 |
3132 | I15 |
3133 | I23 |
3134 | -tp118 |
3135 | -(lp119 |
3136 | +tp119 |
3137 | +(lp120 |
3138 | I26 |
3139 | as(I-11 |
3140 | I11 |
3141 | -tp120 |
3142 | -(lp121 |
3143 | +tp121 |
3144 | +(lp122 |
3145 | I0 |
3146 | as(I-2 |
3147 | I2 |
3148 | I21 |
3149 | -tp122 |
3150 | -(lp123 |
3151 | +tp123 |
3152 | +(lp124 |
3153 | I2 |
3154 | as(I23 |
3155 | I23 |
3156 | -tp124 |
3157 | -(lp125 |
3158 | +tp125 |
3159 | +(lp126 |
3160 | I0 |
3161 | as(I-5 |
3162 | I5 |
3163 | I22 |
3164 | -tp126 |
3165 | -(lp127 |
3166 | +tp127 |
3167 | +(lp128 |
3168 | I13 |
3169 | as(I-14 |
3170 | I14 |
3171 | -tp128 |
3172 | -(lp129 |
3173 | +tp129 |
3174 | +(lp130 |
3175 | I0 |
3176 | as(I6 |
3177 | I-6 |
3178 | -tp130 |
3179 | -(lp131 |
3180 | +tp131 |
3181 | +(lp132 |
3182 | I0 |
3183 | as(I-5 |
3184 | I5 |
3185 | I25 |
3186 | -tp132 |
3187 | -(lp133 |
3188 | +tp133 |
3189 | +(lp134 |
3190 | I43 |
3191 | as(I23 |
3192 | I23 |
3193 | I25 |
3194 | -tp134 |
3195 | -(lp135 |
3196 | +tp135 |
3197 | +(lp136 |
3198 | I48 |
3199 | as(I14 |
3200 | I-14 |
3201 | -tp136 |
3202 | -(lp137 |
3203 | +tp137 |
3204 | +(lp138 |
3205 | I0 |
3206 | as(I-16 |
3207 | I15 |
3208 | I24 |
3209 | -tp138 |
3210 | -(lp139 |
3211 | +tp139 |
3212 | +(lp140 |
3213 | I38 |
3214 | as(I-24 |
3215 | I-13 |
3216 | I14 |
3217 | -tp140 |
3218 | -(lp141 |
3219 | +tp141 |
3220 | +(lp142 |
3221 | I40 |
3222 | as(I-3 |
3223 | I3 |
3224 | -tp142 |
3225 | -(lp143 |
3226 | +tp143 |
3227 | +(lp144 |
3228 | I0 |
3229 | as(I22 |
3230 | I22 |
3231 | -tp144 |
3232 | -(lp145 |
3233 | +tp145 |
3234 | +(lp146 |
3235 | I0 |
3236 | as(I24 |
3237 | I-24 |
3238 | -tp146 |
3239 | -(lp147 |
3240 | +tp147 |
3241 | +(lp148 |
3242 | I0 |
3243 | as(I2 |
3244 | I-2 |
3245 | -tp148 |
3246 | -(lp149 |
3247 | +tp149 |
3248 | +(lp150 |
3249 | I0 |
3250 | as(I-6 |
3251 | I6 |
3252 | I25 |
3253 | -tp150 |
3254 | -(lp151 |
3255 | +tp151 |
3256 | +(lp152 |
3257 | I44 |
3258 | as(I25 |
3259 | I25 |
3260 | -tp152 |
3261 | -(lp153 |
3262 | +tp153 |
3263 | +(lp154 |
3264 | I0 |
3265 | as(I-3 |
3266 | I3 |
3267 | I22 |
3268 | -tp154 |
3269 | -(lp155 |
3270 | +tp155 |
3271 | +(lp156 |
3272 | I11 |
3273 | as(I-12 |
3274 | I12 |
3275 | I23 |
3276 | -tp156 |
3277 | -(lp157 |
3278 | +tp157 |
3279 | +(lp158 |
3280 | I27 |
3281 | as(I-16 |
3282 | I16 |
3283 | -tp158 |
3284 | -(lp159 |
3285 | +tp159 |
3286 | +(lp160 |
3287 | I0 |
3288 | as(I-5 |
3289 | I5 |
3290 | I21 |
3291 | -tp160 |
3292 | -(lp161 |
3293 | +tp161 |
3294 | +(lp162 |
3295 | I5 |
3296 | as(I-12 |
3297 | I12 |
3298 | -tp162 |
3299 | -(lp163 |
3300 | +tp163 |
3301 | +(lp164 |
3302 | I0 |
3303 | as(I-6 |
3304 | I6 |
3305 | I23 |
3306 | -tp164 |
3307 | -(lp165 |
3308 | +tp165 |
3309 | +(lp166 |
3310 | I23 |
3311 | as(I-24 |
3312 | I22 |
3313 | I24 |
3314 | -tp166 |
3315 | -(lp167 |
3316 | +tp167 |
3317 | +(lp168 |
3318 | I45 |
3319 | as(I-12 |
3320 | I11 |
3321 | I24 |
3322 | -tp168 |
3323 | -(lp169 |
3324 | +tp169 |
3325 | +(lp170 |
3326 | I36 |
3327 | as(I21 |
3328 | I21 |
3329 | I21 |
3330 | -tp170 |
3331 | -(lp171 |
3332 | +tp171 |
3333 | +(lp172 |
3334 | I7 |
3335 | as(I-15 |
3336 | I15 |
3337 | -tp172 |
3338 | -(lp173 |
3339 | +tp173 |
3340 | +(lp174 |
3341 | I0 |
3342 | as(I3 |
3343 | I-3 |
3344 | -tp174 |
3345 | -(lp175 |
3346 | +tp175 |
3347 | +(lp176 |
3348 | I0 |
3349 | as(I-6 |
3350 | I6 |
3351 | I22 |
3352 | -tp176 |
3353 | -(lp177 |
3354 | +tp177 |
3355 | +(lp178 |
3356 | I14 |
3357 | as(I25 |
3358 | I25 |
3359 | I25 |
3360 | -tp178 |
3361 | -(lp179 |
3362 | +tp179 |
3363 | +(lp180 |
3364 | I49 |
3365 | as(I-24 |
3366 | I-24 |
3367 | I24 |
3368 | I24 |
3369 | -tp180 |
3370 | -(lp181 |
3371 | +tp181 |
3372 | +(lp182 |
3373 | I53 |
3374 | as(I-15 |
3375 | I15 |
3376 | I22 |
3377 | -tp182 |
3378 | -(lp183 |
3379 | +tp183 |
3380 | +(lp184 |
3381 | I17 |
3382 | as(I-11 |
3383 | I11 |
3384 | I23 |
3385 | -tp184 |
3386 | -(lp185 |
3387 | +tp185 |
3388 | +(lp186 |
3389 | I24 |
3390 | as(I-24 |
3391 | I24 |
3392 | I25 |
3393 | I25 |
3394 | -tp186 |
3395 | -(lp187 |
3396 | +tp187 |
3397 | +(lp188 |
3398 | I54 |
3399 | as(I-6 |
3400 | I6 |
3401 | I21 |
3402 | -tp188 |
3403 | -(lp189 |
3404 | +tp189 |
3405 | +(lp190 |
3406 | I6 |
3407 | as(I-24 |
3408 | I-1 |
3409 | I2 |
3410 | -tp190 |
3411 | -(lp191 |
3412 | +tp191 |
3413 | +(lp192 |
3414 | I30 |
3415 | as(I-11 |
3416 | I11 |
3417 | I22 |
3418 | -tp192 |
3419 | -(lp193 |
3420 | +tp193 |
3421 | +(lp194 |
3422 | I15 |
3423 | as(I-14 |
3424 | I13 |
3425 | I24 |
3426 | -tp194 |
3427 | -(lp195 |
3428 | +tp195 |
3429 | +(lp196 |
3430 | I37 |
3431 | as(I-4 |
3432 | I4 |
3433 | I23 |
3434 | -tp196 |
3435 | -(lp197 |
3436 | +tp197 |
3437 | +(lp198 |
3438 | I21 |
3439 | as(I-24 |
3440 | I22 |
3441 | I22 |
3442 | I24 |
3443 | -tp198 |
3444 | -(lp199 |
3445 | +tp199 |
3446 | +(lp200 |
3447 | I50 |
3448 | as(I-24 |
3449 | I22 |
3450 | I23 |
3451 | I24 |
3452 | -tp200 |
3453 | -(lp201 |
3454 | +tp201 |
3455 | +(lp202 |
3456 | I51 |
3457 | as(I-24 |
3458 | I-5 |
3459 | I6 |
3460 | -tp202 |
3461 | -(lp203 |
3462 | +tp203 |
3463 | +(lp204 |
3464 | I32 |
3465 | as(I13 |
3466 | I-13 |
3467 | -tp204 |
3468 | -(lp205 |
3469 | +tp205 |
3470 | +(lp206 |
3471 | I0 |
3472 | as(I-4 |
3473 | I4 |
3474 | I22 |
3475 | -tp206 |
3476 | -(lp207 |
3477 | +tp207 |
3478 | +(lp208 |
3479 | I12 |
3480 | as(I-6 |
3481 | I6 |
3482 | -tp208 |
3483 | -(lp209 |
3484 | +tp209 |
3485 | +(lp210 |
3486 | I0 |
3487 | as(I-4 |
3488 | I3 |
3489 | I24 |
3490 | -tp210 |
3491 | -(lp211 |
3492 | +tp211 |
3493 | +(lp212 |
3494 | I34 |
3495 | as(I-14 |
3496 | I14 |
3497 | I23 |
3498 | -tp212 |
3499 | -(lp213 |
3500 | +tp213 |
3501 | +(lp214 |
3502 | I28 |
3503 | as(I-1 |
3504 | I1 |
3505 | I22 |
3506 | -tp214 |
3507 | -(lp215 |
3508 | +tp215 |
3509 | +(lp216 |
3510 | I9 |
3511 | as(I15 |
3512 | I-15 |
3513 | -tp216 |
3514 | -(lp217 |
3515 | +tp217 |
3516 | +(lp218 |
3517 | I0 |
3518 | assS'interactions' |
3519 | -p218 |
3520 | +p219 |
3521 | g0 |
3522 | (cmadgraph.core.base_objects |
3523 | InteractionList |
3524 | -p219 |
3525 | +p220 |
3526 | g2 |
3527 | -(lp220 |
3528 | +(lp221 |
3529 | g0 |
3530 | (cmadgraph.core.base_objects |
3531 | Interaction |
3532 | -p221 |
3533 | +p222 |
3534 | g5 |
3535 | -(dp222 |
3536 | +(dp223 |
3537 | S'particles' |
3538 | -p223 |
3539 | +p224 |
3540 | g0 |
3541 | (cmadgraph.core.base_objects |
3542 | ParticleList |
3543 | -p224 |
3544 | +p225 |
3545 | g2 |
3546 | -(lp225 |
3547 | +(lp226 |
3548 | g0 |
3549 | (cmadgraph.core.base_objects |
3550 | Particle |
3551 | -p226 |
3552 | +p227 |
3553 | g5 |
3554 | -(dp227 |
3555 | +(dp228 |
3556 | S'texname' |
3557 | -p228 |
3558 | -S'd' |
3559 | p229 |
3560 | +S'd' |
3561 | +p230 |
3562 | sS'is_part' |
3563 | -p230 |
3564 | +p231 |
3565 | I00 |
3566 | sS'name' |
3567 | -p231 |
3568 | -S'd' |
3569 | p232 |
3570 | +S'd' |
3571 | +p233 |
3572 | sS'self_antipart' |
3573 | -p233 |
3574 | +p234 |
3575 | I00 |
3576 | sS'color' |
3577 | -p234 |
3578 | +p235 |
3579 | I3 |
3580 | sS'width' |
3581 | -p235 |
3582 | -S'ZERO' |
3583 | p236 |
3584 | +S'ZERO' |
3585 | +p237 |
3586 | sS'charge' |
3587 | -p237 |
3588 | +p238 |
3589 | F0.0 |
3590 | sS'mass' |
3591 | -p238 |
3592 | -S'ZERO' |
3593 | p239 |
3594 | +S'ZERO' |
3595 | +p240 |
3596 | sS'antiname' |
3597 | -p240 |
3598 | +p241 |
3599 | S'd~' |
3600 | -p241 |
3601 | +p242 |
3602 | sS'line' |
3603 | -p242 |
3604 | +p243 |
3605 | S'straight' |
3606 | -p243 |
3607 | +p244 |
3608 | sS'propagating' |
3609 | -p244 |
3610 | +p245 |
3611 | I01 |
3612 | sS'spin' |
3613 | -p245 |
3614 | +p246 |
3615 | I2 |
3616 | sS'antitexname' |
3617 | -p246 |
3618 | -g229 |
3619 | +p247 |
3620 | +g230 |
3621 | sS'pdg_code' |
3622 | -p247 |
3623 | +p248 |
3624 | I1 |
3625 | -stp248 |
3626 | -Rp249 |
3627 | +stp249 |
3628 | +Rp250 |
3629 | ag0 |
3630 | -(g226 |
3631 | +(g227 |
3632 | g5 |
3633 | -(dp250 |
3634 | -g228 |
3635 | +(dp251 |
3636 | g229 |
3637 | -sg230 |
3638 | -I01 |
3639 | +g230 |
3640 | sg231 |
3641 | -g232 |
3642 | -sg233 |
3643 | +I01 |
3644 | +sg232 |
3645 | +g233 |
3646 | +sg234 |
3647 | I00 |
3648 | -sg234 |
3649 | +sg235 |
3650 | I3 |
3651 | -sg235 |
3652 | -g236 |
3653 | -sg237 |
3654 | +sg236 |
3655 | +g237 |
3656 | +sg238 |
3657 | F0.0 |
3658 | -sg238 |
3659 | -g239 |
3660 | -sg240 |
3661 | -g241 |
3662 | -sg242 |
3663 | -g243 |
3664 | -sg244 |
3665 | -I01 |
3666 | +sg239 |
3667 | +g240 |
3668 | +sg241 |
3669 | +g242 |
3670 | +sg243 |
3671 | +g244 |
3672 | sg245 |
3673 | +I01 |
3674 | +sg246 |
3675 | I2 |
3676 | -sg246 |
3677 | -g229 |
3678 | sg247 |
3679 | +g230 |
3680 | +sg248 |
3681 | I1 |
3682 | -stp251 |
3683 | -Rp252 |
3684 | +stp252 |
3685 | +Rp253 |
3686 | ag0 |
3687 | -(g226 |
3688 | +(g227 |
3689 | g5 |
3690 | -(dp253 |
3691 | -g228 |
3692 | +(dp254 |
3693 | +g229 |
3694 | S'_' |
3695 | -p254 |
3696 | -sg230 |
3697 | -I01 |
3698 | -sg231 |
3699 | -S'g' |
3700 | p255 |
3701 | -sg233 |
3702 | +sg231 |
3703 | I01 |
3704 | -sg234 |
3705 | -I8 |
3706 | -sg235 |
3707 | -S'ZERO' |
3708 | +sg232 |
3709 | +S'g' |
3710 | p256 |
3711 | -sg237 |
3712 | -F0.0 |
3713 | -sg238 |
3714 | +sg234 |
3715 | +I01 |
3716 | +sg235 |
3717 | +I8 |
3718 | +sg236 |
3719 | S'ZERO' |
3720 | p257 |
3721 | -sg240 |
3722 | -S'g' |
3723 | +sg238 |
3724 | +F0.0 |
3725 | +sg239 |
3726 | +S'ZERO' |
3727 | p258 |
3728 | -sg242 |
3729 | +sg241 |
3730 | +S'g' |
3731 | +p259 |
3732 | +sg243 |
3733 | S'curly' |
3734 | -p259 |
3735 | -sg244 |
3736 | +p260 |
3737 | +sg245 |
3738 | I01 |
3739 | -sg245 |
3740 | +sg246 |
3741 | I3 |
3742 | -sg246 |
3743 | -g254 |
3744 | sg247 |
3745 | +g255 |
3746 | +sg248 |
3747 | I21 |
3748 | -stp260 |
3749 | -Rp261 |
3750 | -atp262 |
3751 | -Rp263 |
3752 | +stp261 |
3753 | +Rp262 |
3754 | +atp263 |
3755 | +Rp264 |
3756 | sS'lorentz' |
3757 | -p264 |
3758 | -(lp265 |
3759 | +p265 |
3760 | +(lp266 |
3761 | S'' |
3762 | -p266 |
3763 | -asg234 |
3764 | -(lp267 |
3765 | +p267 |
3766 | +asg235 |
3767 | +(lp268 |
3768 | g0 |
3769 | (cmadgraph.core.color_algebra |
3770 | ColorString |
3771 | -p268 |
3772 | +p269 |
3773 | g2 |
3774 | -(lp269 |
3775 | +(lp270 |
3776 | cmadgraph.core.color_algebra |
3777 | T |
3778 | -p270 |
3779 | +p271 |
3780 | (I2 |
3781 | I1 |
3782 | I0 |
3783 | -tp271 |
3784 | -Rp272 |
3785 | -atp273 |
3786 | -Rp274 |
3787 | -(dp275 |
3788 | +tp272 |
3789 | +Rp273 |
3790 | +atp274 |
3791 | +Rp275 |
3792 | +(dp276 |
3793 | S'coeff' |
3794 | -p276 |
3795 | +p277 |
3796 | cfractions |
3797 | Fraction |
3798 | -p277 |
3799 | +p278 |
3800 | (S'1' |
3801 | -p278 |
3802 | -tp279 |
3803 | -Rp280 |
3804 | +p279 |
3805 | +tp280 |
3806 | +Rp281 |
3807 | sS'canonical' |
3808 | -p281 |
3809 | +p282 |
3810 | (((S'T' |
3811 | -p282 |
3812 | +p283 |
3813 | (I1 |
3814 | I2 |
3815 | I3 |
3816 | -tp283 |
3817 | tp284 |
3818 | tp285 |
3819 | -(dp286 |
3820 | +tp286 |
3821 | +(dp287 |
3822 | I0 |
3823 | I3 |
3824 | sI1 |
3825 | I2 |
3826 | sI2 |
3827 | I1 |
3828 | -stp287 |
3829 | +stp288 |
3830 | sS'immutable' |
3831 | -p288 |
3832 | -((g282 |
3833 | +p289 |
3834 | +((g283 |
3835 | (I2 |
3836 | I1 |
3837 | I0 |
3838 | -tp289 |
3839 | tp290 |
3840 | tp291 |
3841 | +tp292 |
3842 | sS'is_imaginary' |
3843 | -p292 |
3844 | +p293 |
3845 | I00 |
3846 | sS'Nc_power' |
3847 | -p293 |
3848 | +p294 |
3849 | I0 |
3850 | -sbasg17 |
3851 | +sbasg18 |
3852 | I1 |
3853 | -sg36 |
3854 | -(dp294 |
3855 | +sg37 |
3856 | +(dp295 |
3857 | S'QCD' |
3858 | -p295 |
3859 | +p296 |
3860 | I1 |
3861 | ssS'couplings' |
3862 | -p296 |
3863 | -(dp297 |
3864 | +p297 |
3865 | +(dp298 |
3866 | (I0 |
3867 | I0 |
3868 | -tp298 |
3869 | +tp299 |
3870 | S'GG' |
3871 | -p299 |
3872 | -sstp300 |
3873 | -Rp301 |
3874 | +p300 |
3875 | +sstp301 |
3876 | +Rp302 |
3877 | ag0 |
3878 | -(g221 |
3879 | +(g222 |
3880 | g5 |
3881 | -(dp302 |
3882 | -g223 |
3883 | +(dp303 |
3884 | +g224 |
3885 | g0 |
3886 | -(g224 |
3887 | +(g225 |
3888 | g2 |
3889 | -(lp303 |
3890 | +(lp304 |
3891 | g0 |
3892 | -(g226 |
3893 | +(g227 |
3894 | g5 |
3895 | -(dp304 |
3896 | -g228 |
3897 | -S'u' |
3898 | -p305 |
3899 | -sg230 |
3900 | -I00 |
3901 | -sg231 |
3902 | +(dp305 |
3903 | +g229 |
3904 | S'u' |
3905 | p306 |
3906 | -sg233 |
3907 | +sg231 |
3908 | I00 |
3909 | -sg234 |
3910 | -I3 |
3911 | -sg235 |
3912 | -S'ZERO' |
3913 | +sg232 |
3914 | +S'u' |
3915 | p307 |
3916 | -sg237 |
3917 | -F0.0 |
3918 | -sg238 |
3919 | +sg234 |
3920 | +I00 |
3921 | +sg235 |
3922 | +I3 |
3923 | +sg236 |
3924 | S'ZERO' |
3925 | p308 |
3926 | -sg240 |
3927 | +sg238 |
3928 | +F0.0 |
3929 | +sg239 |
3930 | +S'ZERO' |
3931 | +p309 |
3932 | +sg241 |
3933 | S'u~' |
3934 | -p309 |
3935 | -sg242 |
3936 | -g243 |
3937 | -sg244 |
3938 | -I01 |
3939 | +p310 |
3940 | +sg243 |
3941 | +g244 |
3942 | sg245 |
3943 | -I2 |
3944 | +I01 |
3945 | sg246 |
3946 | -g305 |
3947 | +I2 |
3948 | sg247 |
3949 | +g306 |
3950 | +sg248 |
3951 | I2 |
3952 | -stp310 |
3953 | -Rp311 |
3954 | +stp311 |
3955 | +Rp312 |
3956 | ag0 |
3957 | -(g226 |
3958 | +(g227 |
3959 | g5 |
3960 | -(dp312 |
3961 | -g228 |
3962 | -g305 |
3963 | -sg230 |
3964 | -I01 |
3965 | +(dp313 |
3966 | +g229 |
3967 | +g306 |
3968 | sg231 |
3969 | -g306 |
3970 | -sg233 |
3971 | +I01 |
3972 | +sg232 |
3973 | +g307 |
3974 | +sg234 |
3975 | I00 |
3976 | -sg234 |
3977 | +sg235 |
3978 | I3 |
3979 | -sg235 |
3980 | -g307 |
3981 | -sg237 |
3982 | -F0.0 |
3983 | -sg238 |
3984 | +sg236 |
3985 | g308 |
3986 | -sg240 |
3987 | +sg238 |
3988 | +F0.0 |
3989 | +sg239 |
3990 | g309 |
3991 | -sg242 |
3992 | -g243 |
3993 | -sg244 |
3994 | -I01 |
3995 | +sg241 |
3996 | +g310 |
3997 | +sg243 |
3998 | +g244 |
3999 | sg245 |
4000 | -I2 |
4001 | +I01 |
4002 | sg246 |
4003 | -g305 |
4004 | +I2 |
4005 | sg247 |
4006 | +g306 |
4007 | +sg248 |
4008 | I2 |
4009 | -stp313 |
4010 | -Rp314 |
4011 | +stp314 |
4012 | +Rp315 |
4013 | ag0 |
4014 | -(g226 |
4015 | +(g227 |
4016 | g5 |
4017 | -(dp315 |
4018 | -g228 |
4019 | -g254 |
4020 | -sg230 |
4021 | -I01 |
4022 | +(dp316 |
4023 | +g229 |
4024 | +g255 |
4025 | sg231 |
4026 | -g255 |
4027 | -sg233 |
4028 | I01 |
4029 | +sg232 |
4030 | +g256 |
4031 | sg234 |
4032 | +I01 |
4033 | +sg235 |
4034 | I8 |
4035 | -sg235 |
4036 | -g256 |
4037 | -sg237 |
4038 | -F0.0 |
4039 | -sg238 |
4040 | +sg236 |
4041 | g257 |
4042 | -sg240 |
4043 | +sg238 |
4044 | +F0.0 |
4045 | +sg239 |
4046 | g258 |
4047 | -sg242 |
4048 | +sg241 |
4049 | g259 |
4050 | -sg244 |
4051 | +sg243 |
4052 | +g260 |
4053 | +sg245 |
4054 | I01 |
4055 | -sg245 |
4056 | +sg246 |
4057 | I3 |
4058 | -sg246 |
4059 | -g254 |
4060 | sg247 |
4061 | +g255 |
4062 | +sg248 |
4063 | I21 |
4064 | -stp316 |
4065 | -Rp317 |
4066 | -atp318 |
4067 | -Rp319 |
4068 | -sg264 |
4069 | -(lp320 |
4070 | -g266 |
4071 | -asg234 |
4072 | +stp317 |
4073 | +Rp318 |
4074 | +atp319 |
4075 | +Rp320 |
4076 | +sg265 |
4077 | (lp321 |
4078 | -g0 |
4079 | -(g268 |
4080 | -g2 |
4081 | +g267 |
4082 | +asg235 |
4083 | (lp322 |
4084 | -g270 |
4085 | +g0 |
4086 | +(g269 |
4087 | +g2 |
4088 | +(lp323 |
4089 | +g271 |
4090 | (I2 |
4091 | I1 |
4092 | I0 |
4093 | -tp323 |
4094 | -Rp324 |
4095 | -atp325 |
4096 | -Rp326 |
4097 | -(dp327 |
4098 | -g276 |
4099 | -g280 |
4100 | -sg281 |
4101 | -(((g282 |
4102 | +tp324 |
4103 | +Rp325 |
4104 | +atp326 |
4105 | +Rp327 |
4106 | +(dp328 |
4107 | +g277 |
4108 | +g281 |
4109 | +sg282 |
4110 | +(((g283 |
4111 | (I1 |
4112 | I2 |
4113 | I3 |
4114 | -tp328 |
4115 | tp329 |
4116 | tp330 |
4117 | -(dp331 |
4118 | +tp331 |
4119 | +(dp332 |
4120 | I0 |
4121 | I3 |
4122 | sI1 |
4123 | I2 |
4124 | sI2 |
4125 | I1 |
4126 | -stp332 |
4127 | -sg288 |
4128 | -((g282 |
4129 | +stp333 |
4130 | +sg289 |
4131 | +((g283 |
4132 | (I2 |
4133 | I1 |
4134 | I0 |
4135 | -tp333 |
4136 | tp334 |
4137 | tp335 |
4138 | -sg292 |
4139 | -I00 |
4140 | +tp336 |
4141 | sg293 |
4142 | +I00 |
4143 | +sg294 |
4144 | I0 |
4145 | -sbasg17 |
4146 | +sbasg18 |
4147 | I2 |
4148 | -sg36 |
4149 | -(dp336 |
4150 | +sg37 |
4151 | +(dp337 |
4152 | S'QCD' |
4153 | -p337 |
4154 | +p338 |
4155 | I1 |
4156 | -ssg296 |
4157 | -(dp338 |
4158 | -g298 |
4159 | +ssg297 |
4160 | +(dp339 |
4161 | +g299 |
4162 | S'GG' |
4163 | -p339 |
4164 | -sstp340 |
4165 | -Rp341 |
4166 | +p340 |
4167 | +sstp341 |
4168 | +Rp342 |
4169 | ag0 |
4170 | -(g221 |
4171 | +(g222 |
4172 | g5 |
4173 | -(dp342 |
4174 | -g223 |
4175 | +(dp343 |
4176 | +g224 |
4177 | g0 |
4178 | -(g224 |
4179 | +(g225 |
4180 | g2 |
4181 | -(lp343 |
4182 | +(lp344 |
4183 | g0 |
4184 | -(g226 |
4185 | +(g227 |
4186 | g5 |
4187 | -(dp344 |
4188 | -g228 |
4189 | -S's' |
4190 | -p345 |
4191 | -sg230 |
4192 | -I00 |
4193 | -sg231 |
4194 | +(dp345 |
4195 | +g229 |
4196 | S's' |
4197 | p346 |
4198 | -sg233 |
4199 | +sg231 |
4200 | I00 |
4201 | -sg234 |
4202 | -I3 |
4203 | -sg235 |
4204 | -S'ZERO' |
4205 | +sg232 |
4206 | +S's' |
4207 | p347 |
4208 | -sg237 |
4209 | -F0.0 |
4210 | -sg238 |
4211 | +sg234 |
4212 | +I00 |
4213 | +sg235 |
4214 | +I3 |
4215 | +sg236 |
4216 | S'ZERO' |
4217 | p348 |
4218 | -sg240 |
4219 | +sg238 |
4220 | +F0.0 |
4221 | +sg239 |
4222 | +S'ZERO' |
4223 | +p349 |
4224 | +sg241 |
4225 | S's~' |
4226 | -p349 |
4227 | -sg242 |
4228 | -g243 |
4229 | -sg244 |
4230 | -I01 |
4231 | +p350 |
4232 | +sg243 |
4233 | +g244 |
4234 | sg245 |
4235 | +I01 |
4236 | +sg246 |
4237 | I2 |
4238 | -sg246 |
4239 | -g345 |
4240 | sg247 |
4241 | +g346 |
4242 | +sg248 |
4243 | I3 |
4244 | -stp350 |
4245 | -Rp351 |
4246 | +stp351 |
4247 | +Rp352 |
4248 | ag0 |
4249 | -(g226 |
4250 | +(g227 |
4251 | g5 |
4252 | -(dp352 |
4253 | -g228 |
4254 | -g345 |
4255 | -sg230 |
4256 | -I01 |
4257 | +(dp353 |
4258 | +g229 |
4259 | +g346 |
4260 | sg231 |
4261 | -g346 |
4262 | -sg233 |
4263 | +I01 |
4264 | +sg232 |
4265 | +g347 |
4266 | +sg234 |
4267 | I00 |
4268 | -sg234 |
4269 | +sg235 |
4270 | I3 |
4271 | -sg235 |
4272 | -g347 |
4273 | -sg237 |
4274 | -F0.0 |
4275 | -sg238 |
4276 | +sg236 |
4277 | g348 |
4278 | -sg240 |
4279 | +sg238 |
4280 | +F0.0 |
4281 | +sg239 |
4282 | g349 |
4283 | -sg242 |
4284 | -g243 |
4285 | -sg244 |
4286 | -I01 |
4287 | +sg241 |
4288 | +g350 |
4289 | +sg243 |
4290 | +g244 |
4291 | sg245 |
4292 | +I01 |
4293 | +sg246 |
4294 | I2 |
4295 | -sg246 |
4296 | -g345 |
4297 | sg247 |
4298 | +g346 |
4299 | +sg248 |
4300 | I3 |
4301 | -stp353 |
4302 | -Rp354 |
4303 | +stp354 |
4304 | +Rp355 |
4305 | ag0 |
4306 | -(g226 |
4307 | +(g227 |
4308 | g5 |
4309 | -(dp355 |
4310 | -g228 |
4311 | -g254 |
4312 | -sg230 |
4313 | -I01 |
4314 | +(dp356 |
4315 | +g229 |
4316 | +g255 |
4317 | sg231 |
4318 | -g255 |
4319 | -sg233 |
4320 | I01 |
4321 | +sg232 |
4322 | +g256 |
4323 | sg234 |
4324 | +I01 |
4325 | +sg235 |
4326 | I8 |
4327 | -sg235 |
4328 | -g256 |
4329 | -sg237 |
4330 | -F0.0 |
4331 | -sg238 |
4332 | +sg236 |
4333 | g257 |
4334 | -sg240 |
4335 | +sg238 |
4336 | +F0.0 |
4337 | +sg239 |
4338 | g258 |
4339 | -sg242 |
4340 | +sg241 |
4341 | g259 |
4342 | -sg244 |
4343 | +sg243 |
4344 | +g260 |
4345 | +sg245 |
4346 | I01 |
4347 | -sg245 |
4348 | +sg246 |
4349 | I3 |
4350 | -sg246 |
4351 | -g254 |
4352 | sg247 |
4353 | +g255 |
4354 | +sg248 |
4355 | I21 |
4356 | -stp356 |
4357 | -Rp357 |
4358 | -atp358 |
4359 | -Rp359 |
4360 | -sg264 |
4361 | -(lp360 |
4362 | -g266 |
4363 | -asg234 |
4364 | +stp357 |
4365 | +Rp358 |
4366 | +atp359 |
4367 | +Rp360 |
4368 | +sg265 |
4369 | (lp361 |
4370 | -g0 |
4371 | -(g268 |
4372 | -g2 |
4373 | +g267 |
4374 | +asg235 |
4375 | (lp362 |
4376 | -g270 |
4377 | +g0 |
4378 | +(g269 |
4379 | +g2 |
4380 | +(lp363 |
4381 | +g271 |
4382 | (I2 |
4383 | I1 |
4384 | I0 |
4385 | -tp363 |
4386 | -Rp364 |
4387 | -atp365 |
4388 | -Rp366 |
4389 | -(dp367 |
4390 | -g276 |
4391 | -g280 |
4392 | -sg281 |
4393 | -(((g282 |
4394 | +tp364 |
4395 | +Rp365 |
4396 | +atp366 |
4397 | +Rp367 |
4398 | +(dp368 |
4399 | +g277 |
4400 | +g281 |
4401 | +sg282 |
4402 | +(((g283 |
4403 | (I1 |
4404 | I2 |
4405 | I3 |
4406 | -tp368 |
4407 | tp369 |
4408 | tp370 |
4409 | -(dp371 |
4410 | +tp371 |
4411 | +(dp372 |
4412 | I0 |
4413 | I3 |
4414 | sI1 |
4415 | I2 |
4416 | sI2 |
4417 | I1 |
4418 | -stp372 |
4419 | -sg288 |
4420 | -((g282 |
4421 | +stp373 |
4422 | +sg289 |
4423 | +((g283 |
4424 | (I2 |
4425 | I1 |
4426 | I0 |
4427 | -tp373 |
4428 | tp374 |
4429 | tp375 |
4430 | -sg292 |
4431 | -I00 |
4432 | +tp376 |
4433 | sg293 |
4434 | +I00 |
4435 | +sg294 |
4436 | I0 |
4437 | -sbasg17 |
4438 | +sbasg18 |
4439 | I3 |
4440 | -sg36 |
4441 | -(dp376 |
4442 | +sg37 |
4443 | +(dp377 |
4444 | S'QCD' |
4445 | -p377 |
4446 | +p378 |
4447 | I1 |
4448 | -ssg296 |
4449 | -(dp378 |
4450 | -g298 |
4451 | +ssg297 |
4452 | +(dp379 |
4453 | +g299 |
4454 | S'GG' |
4455 | -p379 |
4456 | -sstp380 |
4457 | -Rp381 |
4458 | +p380 |
4459 | +sstp381 |
4460 | +Rp382 |
4461 | ag0 |
4462 | -(g221 |
4463 | +(g222 |
4464 | g5 |
4465 | -(dp382 |
4466 | -g223 |
4467 | +(dp383 |
4468 | +g224 |
4469 | g0 |
4470 | -(g224 |
4471 | +(g225 |
4472 | g2 |
4473 | -(lp383 |
4474 | +(lp384 |
4475 | g0 |
4476 | -(g226 |
4477 | +(g227 |
4478 | g5 |
4479 | -(dp384 |
4480 | -g228 |
4481 | -S'c' |
4482 | -p385 |
4483 | -sg230 |
4484 | -I00 |
4485 | -sg231 |
4486 | +(dp385 |
4487 | +g229 |
4488 | S'c' |
4489 | p386 |
4490 | -sg233 |
4491 | +sg231 |
4492 | I00 |
4493 | -sg234 |
4494 | -I3 |
4495 | -sg235 |
4496 | -S'ZERO' |
4497 | +sg232 |
4498 | +S'c' |
4499 | p387 |
4500 | -sg237 |
4501 | -F0.0 |
4502 | -sg238 |
4503 | +sg234 |
4504 | +I00 |
4505 | +sg235 |
4506 | +I3 |
4507 | +sg236 |
4508 | S'ZERO' |
4509 | p388 |
4510 | -sg240 |
4511 | +sg238 |
4512 | +F0.0 |
4513 | +sg239 |
4514 | +S'ZERO' |
4515 | +p389 |
4516 | +sg241 |
4517 | S'c~' |
4518 | -p389 |
4519 | -sg242 |
4520 | -g243 |
4521 | -sg244 |
4522 | -I01 |
4523 | +p390 |
4524 | +sg243 |
4525 | +g244 |
4526 | sg245 |
4527 | +I01 |
4528 | +sg246 |
4529 | I2 |
4530 | -sg246 |
4531 | -g385 |
4532 | sg247 |
4533 | +g386 |
4534 | +sg248 |
4535 | I4 |
4536 | -stp390 |
4537 | -Rp391 |
4538 | +stp391 |
4539 | +Rp392 |
4540 | ag0 |
4541 | -(g226 |
4542 | +(g227 |
4543 | g5 |
4544 | -(dp392 |
4545 | -g228 |
4546 | -g385 |
4547 | -sg230 |
4548 | -I01 |
4549 | +(dp393 |
4550 | +g229 |
4551 | +g386 |
4552 | sg231 |
4553 | -g386 |
4554 | -sg233 |
4555 | +I01 |
4556 | +sg232 |
4557 | +g387 |
4558 | +sg234 |
4559 | I00 |
4560 | -sg234 |
4561 | +sg235 |
4562 | I3 |
4563 | -sg235 |
4564 | -g387 |
4565 | -sg237 |
4566 | -F0.0 |
4567 | -sg238 |
4568 | +sg236 |
4569 | g388 |
4570 | -sg240 |
4571 | +sg238 |
4572 | +F0.0 |
4573 | +sg239 |
4574 | g389 |
4575 | -sg242 |
4576 | -g243 |
4577 | -sg244 |
4578 | -I01 |
4579 | +sg241 |
4580 | +g390 |
4581 | +sg243 |
4582 | +g244 |
4583 | sg245 |
4584 | +I01 |
4585 | +sg246 |
4586 | I2 |
4587 | -sg246 |
4588 | -g385 |
4589 | sg247 |
4590 | +g386 |
4591 | +sg248 |
4592 | I4 |
4593 | -stp393 |
4594 | -Rp394 |
4595 | +stp394 |
4596 | +Rp395 |
4597 | ag0 |
4598 | -(g226 |
4599 | +(g227 |
4600 | g5 |
4601 | -(dp395 |
4602 | -g228 |
4603 | -g254 |
4604 | -sg230 |
4605 | -I01 |
4606 | +(dp396 |
4607 | +g229 |
4608 | +g255 |
4609 | sg231 |
4610 | -g255 |
4611 | -sg233 |
4612 | I01 |
4613 | +sg232 |
4614 | +g256 |
4615 | sg234 |
4616 | +I01 |
4617 | +sg235 |
4618 | I8 |
4619 | -sg235 |
4620 | -g256 |
4621 | -sg237 |
4622 | -F0.0 |
4623 | -sg238 |
4624 | +sg236 |
4625 | g257 |
4626 | -sg240 |
4627 | +sg238 |
4628 | +F0.0 |
4629 | +sg239 |
4630 | g258 |
4631 | -sg242 |
4632 | +sg241 |
4633 | g259 |
4634 | -sg244 |
4635 | +sg243 |
4636 | +g260 |
4637 | +sg245 |
4638 | I01 |
4639 | -sg245 |
4640 | +sg246 |
4641 | I3 |
4642 | -sg246 |
4643 | -g254 |
4644 | sg247 |
4645 | +g255 |
4646 | +sg248 |
4647 | I21 |
4648 | -stp396 |
4649 | -Rp397 |
4650 | -atp398 |
4651 | -Rp399 |
4652 | -sg264 |
4653 | -(lp400 |
4654 | -g266 |
4655 | -asg234 |
4656 | +stp397 |
4657 | +Rp398 |
4658 | +atp399 |
4659 | +Rp400 |
4660 | +sg265 |
4661 | (lp401 |
4662 | -g0 |
4663 | -(g268 |
4664 | -g2 |
4665 | +g267 |
4666 | +asg235 |
4667 | (lp402 |
4668 | -g270 |
4669 | +g0 |
4670 | +(g269 |
4671 | +g2 |
4672 | +(lp403 |
4673 | +g271 |
4674 | (I2 |
4675 | I1 |
4676 | I0 |
4677 | -tp403 |
4678 | -Rp404 |
4679 | -atp405 |
4680 | -Rp406 |
4681 | -(dp407 |
4682 | -g276 |
4683 | -g280 |
4684 | -sg281 |
4685 | -(((g282 |
4686 | +tp404 |
4687 | +Rp405 |
4688 | +atp406 |
4689 | +Rp407 |
4690 | +(dp408 |
4691 | +g277 |
4692 | +g281 |
4693 | +sg282 |
4694 | +(((g283 |
4695 | (I1 |
4696 | I2 |
4697 | I3 |
4698 | -tp408 |
4699 | tp409 |
4700 | tp410 |
4701 | -(dp411 |
4702 | +tp411 |
4703 | +(dp412 |
4704 | I0 |
4705 | I3 |
4706 | sI1 |
4707 | I2 |
4708 | sI2 |
4709 | I1 |
4710 | -stp412 |
4711 | -sg288 |
4712 | -((g282 |
4713 | +stp413 |
4714 | +sg289 |
4715 | +((g283 |
4716 | (I2 |
4717 | I1 |
4718 | I0 |
4719 | -tp413 |
4720 | tp414 |
4721 | tp415 |
4722 | -sg292 |
4723 | -I00 |
4724 | +tp416 |
4725 | sg293 |
4726 | +I00 |
4727 | +sg294 |
4728 | I0 |
4729 | -sbasg17 |
4730 | +sbasg18 |
4731 | I4 |
4732 | -sg36 |
4733 | -(dp416 |
4734 | +sg37 |
4735 | +(dp417 |
4736 | S'QCD' |
4737 | -p417 |
4738 | +p418 |
4739 | I1 |
4740 | -ssg296 |
4741 | -(dp418 |
4742 | -g298 |
4743 | +ssg297 |
4744 | +(dp419 |
4745 | +g299 |
4746 | S'GG' |
4747 | -p419 |
4748 | -sstp420 |
4749 | -Rp421 |
4750 | +p420 |
4751 | +sstp421 |
4752 | +Rp422 |
4753 | ag0 |
4754 | -(g221 |
4755 | +(g222 |
4756 | g5 |
4757 | -(dp422 |
4758 | -g223 |
4759 | +(dp423 |
4760 | +g224 |
4761 | g0 |
4762 | -(g224 |
4763 | +(g225 |
4764 | g2 |
4765 | -(lp423 |
4766 | +(lp424 |
4767 | g0 |
4768 | -(g226 |
4769 | +(g227 |
4770 | g5 |
4771 | -(dp424 |
4772 | -g228 |
4773 | -S'b' |
4774 | -p425 |
4775 | -sg230 |
4776 | -I00 |
4777 | -sg231 |
4778 | +(dp425 |
4779 | +g229 |
4780 | S'b' |
4781 | p426 |
4782 | -sg233 |
4783 | +sg231 |
4784 | I00 |
4785 | -sg234 |
4786 | -I3 |
4787 | -sg235 |
4788 | -S'ZERO' |
4789 | +sg232 |
4790 | +S'b' |
4791 | p427 |
4792 | -sg237 |
4793 | +sg234 |
4794 | +I00 |
4795 | +sg235 |
4796 | +I3 |
4797 | +sg236 |
4798 | +S'ZERO' |
4799 | +p428 |
4800 | +sg238 |
4801 | F0.0 |
4802 | -sg238 |
4803 | +sg239 |
4804 | S'BMASS' |
4805 | -p428 |
4806 | -sg240 |
4807 | +p429 |
4808 | +sg241 |
4809 | S'b~' |
4810 | -p429 |
4811 | -sg242 |
4812 | -g243 |
4813 | -sg244 |
4814 | -I01 |
4815 | +p430 |
4816 | +sg243 |
4817 | +g244 |
4818 | sg245 |
4819 | +I01 |
4820 | +sg246 |
4821 | I2 |
4822 | -sg246 |
4823 | -g425 |
4824 | sg247 |
4825 | +g426 |
4826 | +sg248 |
4827 | I5 |
4828 | -stp430 |
4829 | -Rp431 |
4830 | +stp431 |
4831 | +Rp432 |
4832 | ag0 |
4833 | -(g226 |
4834 | +(g227 |
4835 | g5 |
4836 | -(dp432 |
4837 | -g228 |
4838 | -g425 |
4839 | -sg230 |
4840 | -I01 |
4841 | +(dp433 |
4842 | +g229 |
4843 | +g426 |
4844 | sg231 |
4845 | -g426 |
4846 | -sg233 |
4847 | +I01 |
4848 | +sg232 |
4849 | +g427 |
4850 | +sg234 |
4851 | I00 |
4852 | -sg234 |
4853 | +sg235 |
4854 | I3 |
4855 | -sg235 |
4856 | -g427 |
4857 | -sg237 |
4858 | -F0.0 |
4859 | -sg238 |
4860 | +sg236 |
4861 | g428 |
4862 | -sg240 |
4863 | +sg238 |
4864 | +F0.0 |
4865 | +sg239 |
4866 | g429 |
4867 | -sg242 |
4868 | -g243 |
4869 | -sg244 |
4870 | -I01 |
4871 | +sg241 |
4872 | +g430 |
4873 | +sg243 |
4874 | +g244 |
4875 | sg245 |
4876 | +I01 |
4877 | +sg246 |
4878 | I2 |
4879 | -sg246 |
4880 | -g425 |
4881 | sg247 |
4882 | +g426 |
4883 | +sg248 |
4884 | I5 |
4885 | -stp433 |
4886 | -Rp434 |
4887 | +stp434 |
4888 | +Rp435 |
4889 | ag0 |
4890 | -(g226 |
4891 | +(g227 |
4892 | g5 |
4893 | -(dp435 |
4894 | -g228 |
4895 | -g254 |
4896 | -sg230 |
4897 | -I01 |
4898 | +(dp436 |
4899 | +g229 |
4900 | +g255 |
4901 | sg231 |
4902 | -g255 |
4903 | -sg233 |
4904 | I01 |
4905 | +sg232 |
4906 | +g256 |
4907 | sg234 |
4908 | +I01 |
4909 | +sg235 |
4910 | I8 |
4911 | -sg235 |
4912 | -g256 |
4913 | -sg237 |
4914 | -F0.0 |
4915 | -sg238 |
4916 | +sg236 |
4917 | g257 |
4918 | -sg240 |
4919 | +sg238 |
4920 | +F0.0 |
4921 | +sg239 |
4922 | g258 |
4923 | -sg242 |
4924 | +sg241 |
4925 | g259 |
4926 | -sg244 |
4927 | +sg243 |
4928 | +g260 |
4929 | +sg245 |
4930 | I01 |
4931 | -sg245 |
4932 | +sg246 |
4933 | I3 |
4934 | -sg246 |
4935 | -g254 |
4936 | sg247 |
4937 | +g255 |
4938 | +sg248 |
4939 | I21 |
4940 | -stp436 |
4941 | -Rp437 |
4942 | -atp438 |
4943 | -Rp439 |
4944 | -sg264 |
4945 | -(lp440 |
4946 | -g266 |
4947 | -asg234 |
4948 | +stp437 |
4949 | +Rp438 |
4950 | +atp439 |
4951 | +Rp440 |
4952 | +sg265 |
4953 | (lp441 |
4954 | -g0 |
4955 | -(g268 |
4956 | -g2 |
4957 | +g267 |
4958 | +asg235 |
4959 | (lp442 |
4960 | -g270 |
4961 | +g0 |
4962 | +(g269 |
4963 | +g2 |
4964 | +(lp443 |
4965 | +g271 |
4966 | (I2 |
4967 | I1 |
4968 | I0 |
4969 | -tp443 |
4970 | -Rp444 |
4971 | -atp445 |
4972 | -Rp446 |
4973 | -(dp447 |
4974 | -g276 |
4975 | -g280 |
4976 | -sg281 |
4977 | -(((g282 |
4978 | +tp444 |
4979 | +Rp445 |
4980 | +atp446 |
4981 | +Rp447 |
4982 | +(dp448 |
4983 | +g277 |
4984 | +g281 |
4985 | +sg282 |
4986 | +(((g283 |
4987 | (I1 |
4988 | I2 |
4989 | I3 |
4990 | -tp448 |
4991 | tp449 |
4992 | tp450 |
4993 | -(dp451 |
4994 | +tp451 |
4995 | +(dp452 |
4996 | I0 |
4997 | I3 |
4998 | sI1 |
4999 | I2 |
5000 | sI2 |
Hi Johan,
This is very good as usual, this is few points open for discussion.
Even if I would strongly suggest to include some of the remarqs, I already put this as ready for merge. Since I will probably not be online for a week don't wait for me anymore for a second approval.
concerning the get_color, I have few questions:
1) Why define it in each Subprocess directory and not model basis (restricted to those used off course)
2) If this is for speed issue (avoid too long list) then I would avoid to order them. (the one comming from the leg are more probable than those of the propagators and even more than flipped sign).
3) concerning your last modifications, i.e.:
abs_ids = set([abs(i) for i in wf_ids])
1) you should add a comment in the code explaining why you are doing that
2) add a test for checking this specific problem
concerning:
- if max < min, exclude intermediate range
(allows to exclude W/Z dijet resonances in VBF processes)
JA: Introduce new convention for invariant mass cuts
Did you include a comment on this on the wiki?
concerning: *,*)'Error: Color combination' ,da_color( 1),da_color( 2),
write(
$ '->',mo_color,' not implemented in addmothers.f'
This might be written a HUGE number of times shouldn't we
1) Put a limit to this number of print (or why not a critical error?)
2) Put a warning at the generation level in case if we have interactions with un-supported color interactions?
concerning the removal of the following lines
c Remove propagator if "decay" to same particle (i.e. radiation of g/gamma/higgs)
...
c Always remove if daughter final-state or already removed for this reason
...
c Else remove either this resonance or daughter, which is closer to mass shell
Why did you remove those lines. I also remark that the lines removing the propagator if he is too-offshell is commented. If this normal?
As I said before, I didn't check carefully the matching modification, but just read the modifications of the code.
Also all the parralel test are not working anymore. This should be fixed. This forbids all basic checks. If you want I can work on this for PyMadEvent. (With maybe a re-definition of the parralel tests suite.