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

Proposed by Johan Alwall
Status: Merged
Merged at revision: 149
Proposed branch: lp:~maddevelopers/mg5amcnlo/symfact4vertex
Merge into: lp:~madteam/mg5amcnlo/trunk
Diff against target: 187 lines (+94/-11)
5 files modified
Template/SubProcesses/cuts.f (+1/-1)
UpdateNotes.txt (+3/-0)
madgraph/VERSION (+2/-2)
madgraph/various/diagram_symmetry.py (+9/-8)
tests/unit_tests/various/test_4fermion_models.py (+79/-0)
To merge this branch: bzr merge lp:~maddevelopers/mg5amcnlo/symfact4vertex
Reviewer Review Type Date Requested Status
Olivier Mattelaer Pending
Review via email: mp+63329@code.launchpad.net

Description of the change

- Fixed diagram symmetry for processes with no pure-3-vertex diagrams (e.g., pure 4-particle vertex processes)

To post a comment you must log in.
Revision history for this message
Johan Alwall (johan-alwall) wrote :

Olivier, please feel free to add also other modifications to this branch.
Thanks,
Johan

147. By Johan Alwall

Moved debug writeout in cuts.f into debug

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

Hi Johan,

I'm working on the problem of the restriction model on the format of
the param_card.
(I'm adding a check of coherence of the card to ensure that all pythia
parameter are coherent
with the mg5 model)

This is also smtg important for the card translation to SLAH1

So What is the time scale for this merge? in order to see if I include
it inside that one or not?

Cheers,

Olivier

On 03-juin-11, at 06:45, Johan Alwall wrote:

> Olivier, please feel free to add also other modifications to this
> branch.
> Thanks,
> Johan
> --
> https://code.launchpad.net/~maddevelopers/madgraph5/symfact4vertex/
> +merge/63329
> You are requested to review the proposed merge of lp:~maddevelopers/
> madgraph5/symfact4vertex into lp:madgraph5.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Template/SubProcesses/cuts.f'
--- Template/SubProcesses/cuts.f 2011-06-01 21:40:33 +0000
+++ Template/SubProcesses/cuts.f 2011-06-03 05:01:17 +0000
@@ -517,7 +517,7 @@
517 endif !if there are heavyjets517 endif !if there are heavyjets
518518
519 if(inclht.lt.inclHtmin.or.inclht.gt.inclHtmax)then519 if(inclht.lt.inclHtmin.or.inclht.gt.inclHtmax)then
520 write (*,*) ' inclhtmin=',inclHtmin,' -> fails'520 if(debug) write (*,*) ' inclhtmin=',inclHtmin,' -> fails'
521 passcuts=.false.521 passcuts=.false.
522 return522 return
523 endif523 endif
524524
=== modified file 'UpdateNotes.txt'
--- UpdateNotes.txt 2011-06-02 20:40:32 +0000
+++ UpdateNotes.txt 2011-06-03 05:01:17 +0000
@@ -1,5 +1,8 @@
1Update notes for MadGraph 5 (in reverse time order)1Update notes for MadGraph 5 (in reverse time order)
22
31.3.2 (03/06/11): JA: Fixed diagram symmetry for case when there are
4 no 3-vertex-only diagrams
5
31.3.1 (02/06/11): JA: Fixed missing file bug with the introduction of61.3.1 (02/06/11): JA: Fixed missing file bug with the introduction of
4 inclusive HT cut7 inclusive HT cut
58
69
=== modified file 'madgraph/VERSION'
--- madgraph/VERSION 2011-06-02 20:40:32 +0000
+++ madgraph/VERSION 2011-06-03 05:01:17 +0000
@@ -1,2 +1,2 @@
1version = 1.3.11version = 1.3.2
2date = 2011-06-022date = 2011-06-03
33
=== modified file 'madgraph/various/diagram_symmetry.py'
--- madgraph/various/diagram_symmetry.py 2011-06-01 21:18:40 +0000
+++ madgraph/various/diagram_symmetry.py 2011-06-03 05:01:17 +0000
@@ -87,10 +87,15 @@
87 symmetry = []87 symmetry = []
88 permutations = []88 permutations = []
89 ident_perms = []89 ident_perms = []
90 process = matrix_element.get('processes')[0]
91 base_model = process.get('model')
92 diagrams = matrix_element.get('diagrams')
93 base_diagrams = matrix_element.get_base_amplitude().get('diagrams')
94 min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
90 for diag in matrix_element.get('diagrams'):95 for diag in matrix_element.get('diagrams'):
91 diagram_numbers.append(diag.get('number'))96 diagram_numbers.append(diag.get('number'))
92 permutations.append(range(nexternal))97 permutations.append(range(nexternal))
93 if max(diag.get_vertex_leg_numbers()) > 3:98 if max(diag.get_vertex_leg_numbers()) > min_vert:
94 # Ignore any diagrams with 4-particle vertices99 # Ignore any diagrams with 4-particle vertices
95 symmetry.append(0)100 symmetry.append(0)
96 else:101 else:
@@ -106,11 +111,6 @@
106 matrix_element.get('processes')[0].nice_string().\111 matrix_element.get('processes')[0].nice_string().\
107 replace("Process: ", ""))112 replace("Process: ", ""))
108113
109 process = matrix_element.get('processes')[0]
110 base_model = process.get('model')
111 diagrams = matrix_element.get('diagrams')
112 base_diagrams = matrix_element.get_base_amplitude().get('diagrams')
113 min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
114 # diagram_tags is a list of unique tags114 # diagram_tags is a list of unique tags
115 diagram_tags = []115 diagram_tags = []
116 # diagram_classes is a list of lists of diagram numbers belonging116 # diagram_classes is a list of lists of diagram numbers belonging
@@ -358,10 +358,12 @@
358 subproc_group.get('matrix_elements')[0].get_nexternal_ninitial()358 subproc_group.get('matrix_elements')[0].get_nexternal_ninitial()
359 model = subproc_group.get('matrix_elements')[0].get('processes')[0].\359 model = subproc_group.get('matrix_elements')[0].get('processes')[0].\
360 get('model')360 get('model')
361 min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
362
361 for idiag,diag in enumerate(diagrams):363 for idiag,diag in enumerate(diagrams):
362 diagram_numbers.append(idiag+1)364 diagram_numbers.append(idiag+1)
363 permutations.append(range(nexternal))365 permutations.append(range(nexternal))
364 if max(diag.get_vertex_leg_numbers()) > 3:366 if max(diag.get_vertex_leg_numbers()) > min_vert:
365 # Ignore any diagrams with 4-particle vertices367 # Ignore any diagrams with 4-particle vertices
366 symmetry.append(0)368 symmetry.append(0)
367 else:369 else:
@@ -370,7 +372,6 @@
370 logger.info("Finding symmetric diagrams for subprocess group %s" % \372 logger.info("Finding symmetric diagrams for subprocess group %s" % \
371 subproc_group.get('name'))373 subproc_group.get('name'))
372374
373 min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
374 # diagram_tags is a list of unique tags375 # diagram_tags is a list of unique tags
375 diagram_tags = []376 diagram_tags = []
376 # diagram_classes is a list of lists of diagram numbers belonging377 # diagram_classes is a list of lists of diagram numbers belonging
377378
=== modified file 'tests/unit_tests/various/test_4fermion_models.py'
--- tests/unit_tests/various/test_4fermion_models.py 2011-04-20 22:34:17 +0000
+++ tests/unit_tests/various/test_4fermion_models.py 2011-06-03 05:01:17 +0000
@@ -26,7 +26,9 @@
26import madgraph.core.diagram_generation as diagram_generation26import madgraph.core.diagram_generation as diagram_generation
27import madgraph.core.helas_objects as helas_objects27import madgraph.core.helas_objects as helas_objects
28import madgraph.iolibs.helas_call_writers as helas_call_writers28import madgraph.iolibs.helas_call_writers as helas_call_writers
29import madgraph.iolibs.group_subprocs as group_subprocs
29import madgraph.various.process_checks as process_checks30import madgraph.various.process_checks as process_checks
31import madgraph.various.diagram_symmetry as diagram_symmetry
30import models.import_ufo as import_ufo32import models.import_ufo as import_ufo
31import models.model_reader as model_reader33import models.model_reader as model_reader
3234
@@ -104,6 +106,83 @@
104 def test_uu_to_ttg_sch(self):106 def test_uu_to_ttg_sch(self):
105 """Test the process u u > t t g between s-channel and 4fermion vertex"""107 """Test the process u u > t t g between s-channel and 4fermion vertex"""
106 self.uu_to_ttng_test(1)108 self.uu_to_ttng_test(1)
109
110
111 def test_find_symmetry_uu_tt(self):
112 """Test the find_symmetry function"""
113
114 myleglist = base_objects.LegList()
115
116 myleglist.append(base_objects.Leg({'id':2,
117 'state':False}))
118 myleglist.append(base_objects.Leg({'id':2,
119 'state':False}))
120 myleglist.append(base_objects.Leg({'id':6,
121 'state':True}))
122 myleglist.append(base_objects.Leg({'id':6,
123 'state':True}))
124
125 myproc = base_objects.Process({'legs':myleglist,
126 'model':self.base_model_4ferm})
127
128 myamplitude = diagram_generation.Amplitude(myproc)
129
130 matrix_element = helas_objects.HelasMatrixElement(myamplitude)
131
132 symmetry, perms, ident_perms = diagram_symmetry.find_symmetry(matrix_element)
133
134 self.assertEqual(symmetry, [1])
135
136 # Check that the momentum assignments work
137 process = matrix_element.get('processes')[0]
138
139 evaluator = process_checks.MatrixElementEvaluator(self.base_model_4ferm,
140 auth_skipping = True,
141 reuse = True)
142
143 p, w_rambo = evaluator.get_momenta(process)
144 me_value, amp2_org = evaluator.evaluate_matrix_element(\
145 matrix_element, p)
146
147 for isym, (sym, perm) in enumerate(zip(symmetry, perms)):
148 new_p = [p[i] for i in perm]
149 if sym >= 0:
150 continue
151 me_value, amp2 = evaluator.evaluate_matrix_element(matrix_element,
152 new_p)
153 self.assertAlmostEqual(amp2[isym], amp2_org[-sym-1])
154
155 def test_find_symmetry_uu_tt_with_subprocess_group(self):
156 """Test the find_symmetry function for subprocess groups"""
157
158 procs = [[2,2,6,6]]
159 amplitudes = diagram_generation.AmplitudeList()
160
161 for proc in procs:
162 # Define the multiprocess
163 my_leglist = base_objects.LegList([\
164 base_objects.Leg({'id': id, 'state': True}) for id in proc])
165
166 my_leglist[0].set('state', False)
167 my_leglist[1].set('state', False)
168
169 my_process = base_objects.Process({'legs':my_leglist,
170 'model':self.base_model_4ferm})
171 my_amplitude = diagram_generation.Amplitude(my_process)
172 amplitudes.append(my_amplitude)
173
174 subproc_group = \
175 group_subprocs.SubProcessGroup.group_amplitudes(amplitudes)[0]
176
177 symmetry, perms, ident_perms = diagram_symmetry.find_symmetry(\
178 subproc_group)
179
180 self.assertEqual(len([s for s in symmetry if s > 0]), 1)
181
182 self.assertEqual(symmetry,
183 [1])
184
185 return
107 186
108#===============================================================================187#===============================================================================
109# TestTchannelModels188# TestTchannelModels

Subscribers

People subscribed via source and target branches