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
1=== modified file 'Template/SubProcesses/cuts.f'
2--- Template/SubProcesses/cuts.f 2011-06-01 21:40:33 +0000
3+++ Template/SubProcesses/cuts.f 2011-06-03 05:01:17 +0000
4@@ -517,7 +517,7 @@
5 endif !if there are heavyjets
6
7 if(inclht.lt.inclHtmin.or.inclht.gt.inclHtmax)then
8- write (*,*) ' inclhtmin=',inclHtmin,' -> fails'
9+ if(debug) write (*,*) ' inclhtmin=',inclHtmin,' -> fails'
10 passcuts=.false.
11 return
12 endif
13
14=== modified file 'UpdateNotes.txt'
15--- UpdateNotes.txt 2011-06-02 20:40:32 +0000
16+++ UpdateNotes.txt 2011-06-03 05:01:17 +0000
17@@ -1,5 +1,8 @@
18 Update notes for MadGraph 5 (in reverse time order)
19
20+1.3.2 (03/06/11): JA: Fixed diagram symmetry for case when there are
21+ no 3-vertex-only diagrams
22+
23 1.3.1 (02/06/11): JA: Fixed missing file bug with the introduction of
24 inclusive HT cut
25
26
27=== modified file 'madgraph/VERSION'
28--- madgraph/VERSION 2011-06-02 20:40:32 +0000
29+++ madgraph/VERSION 2011-06-03 05:01:17 +0000
30@@ -1,2 +1,2 @@
31-version = 1.3.1
32-date = 2011-06-02
33+version = 1.3.2
34+date = 2011-06-03
35
36=== modified file 'madgraph/various/diagram_symmetry.py'
37--- madgraph/various/diagram_symmetry.py 2011-06-01 21:18:40 +0000
38+++ madgraph/various/diagram_symmetry.py 2011-06-03 05:01:17 +0000
39@@ -87,10 +87,15 @@
40 symmetry = []
41 permutations = []
42 ident_perms = []
43+ process = matrix_element.get('processes')[0]
44+ base_model = process.get('model')
45+ diagrams = matrix_element.get('diagrams')
46+ base_diagrams = matrix_element.get_base_amplitude().get('diagrams')
47+ min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
48 for diag in matrix_element.get('diagrams'):
49 diagram_numbers.append(diag.get('number'))
50 permutations.append(range(nexternal))
51- if max(diag.get_vertex_leg_numbers()) > 3:
52+ if max(diag.get_vertex_leg_numbers()) > min_vert:
53 # Ignore any diagrams with 4-particle vertices
54 symmetry.append(0)
55 else:
56@@ -106,11 +111,6 @@
57 matrix_element.get('processes')[0].nice_string().\
58 replace("Process: ", ""))
59
60- process = matrix_element.get('processes')[0]
61- base_model = process.get('model')
62- diagrams = matrix_element.get('diagrams')
63- base_diagrams = matrix_element.get_base_amplitude().get('diagrams')
64- min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
65 # diagram_tags is a list of unique tags
66 diagram_tags = []
67 # diagram_classes is a list of lists of diagram numbers belonging
68@@ -358,10 +358,12 @@
69 subproc_group.get('matrix_elements')[0].get_nexternal_ninitial()
70 model = subproc_group.get('matrix_elements')[0].get('processes')[0].\
71 get('model')
72+ min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
73+
74 for idiag,diag in enumerate(diagrams):
75 diagram_numbers.append(idiag+1)
76 permutations.append(range(nexternal))
77- if max(diag.get_vertex_leg_numbers()) > 3:
78+ if max(diag.get_vertex_leg_numbers()) > min_vert:
79 # Ignore any diagrams with 4-particle vertices
80 symmetry.append(0)
81 else:
82@@ -370,7 +372,6 @@
83 logger.info("Finding symmetric diagrams for subprocess group %s" % \
84 subproc_group.get('name'))
85
86- min_vert = min([max(diag.get_vertex_leg_numbers()) for diag in diagrams])
87 # diagram_tags is a list of unique tags
88 diagram_tags = []
89 # diagram_classes is a list of lists of diagram numbers belonging
90
91=== modified file 'tests/unit_tests/various/test_4fermion_models.py'
92--- tests/unit_tests/various/test_4fermion_models.py 2011-04-20 22:34:17 +0000
93+++ tests/unit_tests/various/test_4fermion_models.py 2011-06-03 05:01:17 +0000
94@@ -26,7 +26,9 @@
95 import madgraph.core.diagram_generation as diagram_generation
96 import madgraph.core.helas_objects as helas_objects
97 import madgraph.iolibs.helas_call_writers as helas_call_writers
98+import madgraph.iolibs.group_subprocs as group_subprocs
99 import madgraph.various.process_checks as process_checks
100+import madgraph.various.diagram_symmetry as diagram_symmetry
101 import models.import_ufo as import_ufo
102 import models.model_reader as model_reader
103
104@@ -104,6 +106,83 @@
105 def test_uu_to_ttg_sch(self):
106 """Test the process u u > t t g between s-channel and 4fermion vertex"""
107 self.uu_to_ttng_test(1)
108+
109+
110+ def test_find_symmetry_uu_tt(self):
111+ """Test the find_symmetry function"""
112+
113+ myleglist = base_objects.LegList()
114+
115+ myleglist.append(base_objects.Leg({'id':2,
116+ 'state':False}))
117+ myleglist.append(base_objects.Leg({'id':2,
118+ 'state':False}))
119+ myleglist.append(base_objects.Leg({'id':6,
120+ 'state':True}))
121+ myleglist.append(base_objects.Leg({'id':6,
122+ 'state':True}))
123+
124+ myproc = base_objects.Process({'legs':myleglist,
125+ 'model':self.base_model_4ferm})
126+
127+ myamplitude = diagram_generation.Amplitude(myproc)
128+
129+ matrix_element = helas_objects.HelasMatrixElement(myamplitude)
130+
131+ symmetry, perms, ident_perms = diagram_symmetry.find_symmetry(matrix_element)
132+
133+ self.assertEqual(symmetry, [1])
134+
135+ # Check that the momentum assignments work
136+ process = matrix_element.get('processes')[0]
137+
138+ evaluator = process_checks.MatrixElementEvaluator(self.base_model_4ferm,
139+ auth_skipping = True,
140+ reuse = True)
141+
142+ p, w_rambo = evaluator.get_momenta(process)
143+ me_value, amp2_org = evaluator.evaluate_matrix_element(\
144+ matrix_element, p)
145+
146+ for isym, (sym, perm) in enumerate(zip(symmetry, perms)):
147+ new_p = [p[i] for i in perm]
148+ if sym >= 0:
149+ continue
150+ me_value, amp2 = evaluator.evaluate_matrix_element(matrix_element,
151+ new_p)
152+ self.assertAlmostEqual(amp2[isym], amp2_org[-sym-1])
153+
154+ def test_find_symmetry_uu_tt_with_subprocess_group(self):
155+ """Test the find_symmetry function for subprocess groups"""
156+
157+ procs = [[2,2,6,6]]
158+ amplitudes = diagram_generation.AmplitudeList()
159+
160+ for proc in procs:
161+ # Define the multiprocess
162+ my_leglist = base_objects.LegList([\
163+ base_objects.Leg({'id': id, 'state': True}) for id in proc])
164+
165+ my_leglist[0].set('state', False)
166+ my_leglist[1].set('state', False)
167+
168+ my_process = base_objects.Process({'legs':my_leglist,
169+ 'model':self.base_model_4ferm})
170+ my_amplitude = diagram_generation.Amplitude(my_process)
171+ amplitudes.append(my_amplitude)
172+
173+ subproc_group = \
174+ group_subprocs.SubProcessGroup.group_amplitudes(amplitudes)[0]
175+
176+ symmetry, perms, ident_perms = diagram_symmetry.find_symmetry(\
177+ subproc_group)
178+
179+ self.assertEqual(len([s for s in symmetry if s > 0]), 1)
180+
181+ self.assertEqual(symmetry,
182+ [1])
183+
184+ return
185
186 #===============================================================================
187 # TestTchannelModels

Subscribers

People subscribed via source and target branches