5
import loop_me_comparator
10
from madgraph import MG5DIR
11
from madgraph import MadGraph5Error
12
from madgraph.iolibs.files import cp
14
#Look for MG5/MG4 path
15
_mg5_path = os.sep.join(os.path.realpath(__file__).split(os.sep)[:-3])
16
_file_path = os.path.dirname(os.path.realpath(__file__))
17
_pickle_path = os.path.join(_file_path, 'input_files', 'ML_parallel_saved_runs')
19
# The processes below are treated all together because they are relatively quick
21
ML4_processes_short = [('u u~ > d d~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
22
('d g > d g',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
23
('g g > d d~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
24
('e+ e- > d d~',{'QED':2,'QCD':0},['QCD'],{'QCD':2,'QED':4}),
25
('g g > t t~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
26
('d~ d > g a',{'QED':1,'QCD':1},['QCD'],{'QCD':4,'QED':2}),
27
('d~ d > g z',{'QED':1,'QCD':1},['QCD'],{'QCD':4,'QED':2})]
29
ML5_processes_short = [('u u~ > d d~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
30
('d g > d g',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
31
('d~ u~ > d~ u~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
32
('g u~ > g u~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
33
('g g > d d~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
34
('g g > t t~',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
35
('g g > g g',{'QCD':2,'QED':0},['QCD'],{'QCD':6,'QED':0}),
36
('d~ d > g a',{'QED':1,'QCD':1},['QCD'],{'QCD':4,'QED':2}),
37
('u~ u > g z',{'QED':1,'QCD':1},['QCD'],{'QCD':4,'QED':2}),
38
('e+ e- > d d~',{'QED':2,'QCD':0},['QCD'],{'QCD':2,'QED':4}),
39
('d u~ > w- g',{'QED':1,'QCD':1},['QCD'],{'QCD':4,'QED':2})]
41
def procToFolderName(proc):
42
""" Transform a string proc like 'u u~ > e+ e-' to a string for a folder name
43
which would be uux_epem"""
44
res=''.join(proc.split(' '))
45
equiv_strings = [('+','p'),('-','m'),('~','x'),('>','_')]
46
for eq in equiv_strings:
47
res=res.replace(eq[0],eq[1])
50
# The longer processes below are treated one by one so that they can be better
51
# independently checked/updated (especially the corresponding reference pickle.)
53
ML4_processes_long = [
54
# The process below is for testing the parallel tests only
55
('e+ e- > d d~',{'QCD':0,'QED':2},['QCD'],{'QCD':2,'QED':4}),
56
# Below are the processes really tested
57
('g g > h t t~',{'QCD':2,'QED':2},['QCD'],{'QCD':6,'QED':4}),
58
('d d~ > w+ w- g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
59
('d~ d > z z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
60
('d~ d > z g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
61
('d~ d > a g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
62
('g g > z t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
63
('g g > a t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})]
65
ML4_processes_long_dic = dict((procToFolderName(elem[0]),elem) for elem in \
68
ML5_processes_long = [('g g > h t t~',{'QCD':2,'QED':1},['QCD'],{'QCD':6,'QED':2}),
69
('d d~ > w+ w- g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
70
('d~ d > z z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
71
('s s~ > a z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
72
('d~ d > z g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
73
('d~ d > a g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
74
('d~ u > w+ g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
75
('g g > w- d~ u',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
76
('g g > z t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
77
('g g > a t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2}),
78
('g g > h h t t~',{'QCD':2,'QED':2},['QCD'],{'QCD':6,'QED':4}),
79
('u u~ > w+ w- b b~',{'QCD':2,'QED':2},['QCD'],{'QCD':6,'QED':4}),
80
('g g > g g g',{'QCD':3,'QED':0},['QCD'],{'QCD':8,'QED':0}),
81
('u u~ > z z z',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6}),
82
('u d~ > h t b~',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6}),
83
('u u~ > w+ w- z',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6}),
84
('g g > g t t~',{'QED':0,'QCD':3},['QCD'],{'QCD':8,'QED':0}),
85
('g s > e- ve~ c',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4}),
86
('g g > z c c~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})]
88
ML5_processes_long_dic = dict((procToFolderName(elem[0]),elem) for elem in \
91
class ML5Test(unittest.TestCase):
92
""" A class to test ML5 versus runs from older versions or ML4 """
94
test_model_name = 'loop_sm-parallel_test'
95
test_model_name_c_massive = 'loop_sm-parallel_test_c_massive'
98
""" Here we just copy the hidden restrict_card to a regular one.
99
And we don't bother making it hidden again after the test."""
100
cp(os.path.join(_mg5_path,'models','loop_sm','.restrict_parallel_test.dat'),
101
os.path.join(_mg5_path,'models','loop_sm','restrict_parallel_test.dat'))
102
cp(os.path.join(_mg5_path,'models','loop_sm',
103
'.restrict_parallel_test_c_massive.dat'),
104
os.path.join(_mg5_path,'models','loop_sm',
105
'restrict_parallel_test_c_massive.dat'))
108
def create_pickle(my_proc_list, pickle_file, runner, ref_runner=None,
109
model = 'loop_sm-parallel_test', energy = 2000):
110
""" Create a pickle with name 'pickle_file' on the specified processes
111
and also possibly using the PS points provided by the reference runner """
113
my_comp = loop_me_comparator.LoopMEComparator()
114
if not ref_runner is None:
115
my_comp.set_me_runners(ref_runner,runner)
117
my_comp.set_me_runners(runner)
118
my_comp.run_comparison(my_proc_list,model=model,energy=energy)
120
loop_me_comparator.LoopPickleRunner.store_comparison(
121
os.path.join(_pickle_path,pickle_file),
122
[runner.proc_list,runner.res_list],
123
runner.model,runner.name,energy=runner.energy)
125
def compare_processes(self, my_proc_list = [], model = 'loop_sm-parallel_test',
126
pickle_file = "", energy = 2000, tolerance = 1e-06, filename = "",
127
chosen_runner = "ML5_opt"):
128
""" A helper function to compare processes.
129
Note that the chosen_runner is what runner should to create the reference
132
# Print out progress if it is a run for an individual process
133
if len(my_proc_list)==1:
134
print "\n== %s =="%my_proc_list[0][0]
136
print "\n== %s =="%filename
138
# Check if pickle exists, if not create it
139
if pickle_file!="" and not os.path.isfile(os.path.join(_pickle_path,pickle_file)):
140
print " => Computing reference evaluation with %s"%chosen_runner
141
self.create_loop_pickle(my_proc_list, model,
142
pickle_file, energy, chosen_runner)
143
print "\n => Done with %s evaluation"%chosen_runner
144
# Load the stored runner
145
if pickle_file != "":
146
stored_runner = me_comparator.PickleRunner.find_comparisons(
147
os.path.join(_pickle_path,pickle_file))[0]
149
# Create a MERunner object for MadLoop 5 optimized
150
ML5_opt = loop_me_comparator.LoopMG5Runner()
151
ML5_opt.setup(_mg5_path, optimized_output=True, temp_dir=filename)
153
# Create a MERunner object for MadLoop 5 default
154
ML5_default = loop_me_comparator.LoopMG5Runner()
155
ML5_default.setup(_mg5_path, optimized_output=False, temp_dir=filename)
157
# Create and setup a comparator
158
my_comp = loop_me_comparator.LoopMEComparator()
160
# Always put the saved run first if you use it, so that the corresponding PS
161
# points will be used.
162
if pickle_file != "":
163
my_comp.set_me_runners(stored_runner,ML5_opt,ML5_default)
165
my_comp.set_me_runners(ML5_opt,ML5_default)
167
# Run the actual comparison
168
my_comp.run_comparison(my_proc_list,
173
my_comp.output_result(filename=os.path.join(_mg5_path,filename+'.log'))
175
# Assert that all process comparisons passed the tolerance cut
176
my_comp.assert_processes(self, tolerance)
181
def create_loop_pickle(self, my_proc_list, model, pickle_file, energy, \
183
""" Create the pickle file for reference for the arguments here."""
184
# print "Creating loop pickle for chosen_runner=",chosen_runner
185
allowed_chosen_runners = ['ML4','ML5_opt','ML5_default']
186
if chosen_runner not in allowed_chosen_runners:
187
raise MadGraph5Error, 'The reference runner can only be in %s.'%\
188
allowed_chosen_runners
191
if chosen_runner == 'ML5_opt':
192
runner = loop_me_comparator.LoopMG5Runner()
193
runner.setup(_mg5_path, optimized_output=True)
194
if chosen_runner == 'ML5_default':
195
runner = loop_me_comparator.LoopMG5Runner()
196
runner.setup(_mg5_path, optimized_output=False)
197
if chosen_runner == 'ML4':
198
runner = loop_me_comparator.LoopMG4Runner()
199
# Replace here the path of your ML4 installation
200
runner.setup('/Users/valentin/Documents/Work/aMC@NLO_v4/ML4ParrallelTest/NLOComp')
202
self.create_pickle(my_proc_list,pickle_file, runner, ref_runner=None, \
203
model=model,energy=energy)
204
# Clean up the runner only if it is not ML4
205
if chosen_runner != 'ML4':
208
#===========================================================================
209
# First tests consisting in a list of quick 2>2 processes to be run together
210
#===========================================================================
212
def test_short_ML5_sm_vs_stored_ML5(self):
213
self.compare_processes(ML5_processes_short,model = self.test_model_name,
214
pickle_file = 'ml5_short_parallel_tests.pkl',
215
filename = 'ptest_short_ml5_vs_old_ml5',
218
# In principle since previous version of ML5 has been validated against ML4,
219
# it is not necessary to test both against ML4 and the old ML5.
220
def test_short_ML5_sm_vs_stored_ML4(self):
221
self.compare_processes(ML4_processes_short,model = self.test_model_name,
222
pickle_file = 'ml4_short_parallel_test.pkl',
223
filename = 'ptest_short_ml5_vs_ml4',
226
# The tests below probe one quite long process at a time individually, so
227
# one can better manage them.
229
#===========================================================================
230
# First the long checks against results available in MadLoop4
231
#===========================================================================
233
# Use the quick process below for testing the parallel test
234
def notest_long_sm_vs_stored_ML4_epem_ddx(self):
236
self.compare_processes([ML4_processes_long_dic[proc]],
237
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
238
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
240
# ('g g > h t t~',{'QCD':2,'QED':1},['QCD'],{'QCD':6,'QED':2})
241
def test_long_sm_vs_stored_ML4_gg_httx(self):
243
self.compare_processes([ML4_processes_long_dic[proc]],
244
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
245
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
247
# ('d d~ > w+ w- g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4})
248
def test_long_sm_vs_stored_ML4_ddx_wpwmg(self):
250
self.compare_processes([ML4_processes_long_dic[proc]],
251
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
252
filename = 'ptest_long_sm_vs_ml4_%s'%proc)
254
# ('d~ d > z z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4})
255
def test_long_sm_vs_stored_ML4_dxd_zzg(self):
257
self.compare_processes([ML4_processes_long_dic[proc]],
258
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
259
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
261
# ('d~ d > z g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
262
def test_long_sm_vs_stored_ML4_dxd_zgg(self):
264
self.compare_processes([ML4_processes_long_dic[proc]],
265
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
266
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
268
# ('d~ d > a g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
269
def test_long_sm_vs_stored_ML4_dxd_agg(self):
271
self.compare_processes([ML4_processes_long_dic[proc]],
272
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
273
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
275
# ('g g > z t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
276
def test_long_sm_vs_stored_ML4_gg_zttx(self):
278
self.compare_processes([ML4_processes_long_dic[proc]],
279
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
280
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
282
# ('g g > a t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
283
def test_long_sm_vs_stored_ML4_gg_attx(self):
285
self.compare_processes([ML4_processes_long_dic[proc]],
286
model = self.test_model_name, pickle_file = 'ml4_sm_%s.pkl'%proc,
287
filename = 'ptest_long_sm_vs_ml4_%s'%proc, chosen_runner = 'ML4')
289
#===========================================================================
290
# Now the long checks against results previsouly generated in MadLoop 5.
291
#===========================================================================
293
# ('g g > g t t~ ',{'QED':0,'QCD':3},['QCD'],{'QCD':8,'QED':0})
294
def test_long_sm_vs_stored_ML5_gg_gttx(self):
296
self.compare_processes([ML5_processes_long_dic[proc]],
297
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
298
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
299
chosen_runner = 'ML5_opt')
301
# ('g g > h t t~',{'QCD':2,'QED':1},['QCD'],{'QCD':6,'QED':2})
302
def test_long_sm_vs_stored_ML5_gg_httx(self):
304
self.compare_processes([ML5_processes_long_dic[proc]],
305
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
306
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
307
chosen_runner = 'ML5_opt')
309
# ('d d~ > w+ w- g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4})
310
def test_long_sm_vs_stored_ML5_ddx_wpwmg(self):
312
self.compare_processes([ML5_processes_long_dic[proc]],
313
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
314
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
315
chosen_runner = 'ML5_opt')
317
# ('d~ d > z z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4})
318
def test_long_sm_vs_stored_ML5_dxd_zzg(self):
320
self.compare_processes([ML5_processes_long_dic[proc]],
321
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
322
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
323
chosen_runner = 'ML5_opt')
325
# ('s s~ > a z g',{'QED':2,'QCD':1},['QCD'],{'QCD':4,'QED':4})
326
def test_long_sm_vs_stored_ML5_ssx_azg(self):
328
self.compare_processes([ML5_processes_long_dic[proc]],
329
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
330
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
331
chosen_runner = 'ML5_opt')
333
# ('d~ d > z g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
334
def test_long_sm_vs_stored_ML5_dxd_zgg(self):
336
self.compare_processes([ML5_processes_long_dic[proc]],
337
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
338
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
339
chosen_runner = 'ML5_opt')
341
# ('d~ d > a g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
342
def test_long_sm_vs_stored_ML5_dxd_agg(self):
344
self.compare_processes([ML5_processes_long_dic[proc]],
345
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
346
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
347
chosen_runner = 'ML5_opt')
349
# ('d~ u > w+ g g',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
350
def test_long_sm_vs_stored_ML5_dxu_wpgg(self):
352
self.compare_processes([ML5_processes_long_dic[proc]],
353
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
354
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
355
chosen_runner = 'ML5_opt')
357
# ('g g > w- d~ u',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
358
def test_long_sm_vs_stored_ML5_gg_wmdxu(self):
360
self.compare_processes([ML5_processes_long_dic[proc]],
361
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
362
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
363
chosen_runner = 'ML5_opt')
365
# ('g g > z t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
366
def test_long_sm_vs_stored_ML5_gg_zttx(self):
368
self.compare_processes([ML5_processes_long_dic[proc]],
369
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
370
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
371
chosen_runner = 'ML5_opt')
373
# ('g g > a t t~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
374
def test_long_sm_vs_stored_ML5_gg_attx(self):
376
self.compare_processes([ML5_processes_long_dic[proc]],
377
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
378
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
379
chosen_runner = 'ML5_opt')
381
# ('g g > h h t t~',{'QCD':2,'QED':2},['QCD'],{'QCD':6,'QED':4})
382
def test_long_sm_vs_stored_ML5_gg_hhttx(self):
384
self.compare_processes([ML5_processes_long_dic[proc]],
385
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
386
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
387
chosen_runner = 'ML5_opt')
389
# ('u u~ > w+ w- b b~',{'QCD':2,'QED':2},['QCD'],{'QCD':6,'QED':4})
390
def test_long_sm_vs_stored_ML5_uux_wpwmbbx(self):
392
self.compare_processes([ML5_processes_long_dic[proc]],
393
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
394
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
395
chosen_runner = 'ML5_opt')
397
# ('g g > g g g',{'QCD':3,'QED':0},['QCD'],{'QCD':8,'QED':0})
398
# The chosen PS point for this process turns out to be unstable, so that
399
# MadLoop goes to quadruple precision. The agreement is then fine (10e-14!)
400
# but it takes several hours for the non-optimized evaluation. So better skip
401
# it unless you explicitly want to try out quad prec behaviors.
402
def notest_long_sm_vs_stored_ML5_gg_ggg(self):
404
self.compare_processes([ML5_processes_long_dic[proc]],
405
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
406
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
407
chosen_runner = 'ML5_opt')
409
# ('u u~ > z z z',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6})
410
def test_long_sm_vs_stored_ML5_uux_zzz(self):
412
self.compare_processes([ML5_processes_long_dic[proc]],
413
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
414
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
415
chosen_runner = 'ML5_opt')
417
# ('u d~ > h t b~',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6}),
418
def test_long_sm_vs_stored_ML5_udx_htbx(self):
420
self.compare_processes([ML5_processes_long_dic[proc]],
421
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
422
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
423
chosen_runner = 'ML5_opt')
425
# ('u u~ > w+ w- z',{'QED':3,'QCD':0},['QCD'],{'QCD':2,'QED':6})
426
def test_long_sm_vs_stored_ML5_uux_wpwmz(self):
428
self.compare_processes([ML5_processes_long_dic[proc]],
429
model = self.test_model_name, pickle_file = 'ml5_sm_%s.pkl'%proc,
430
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
431
chosen_runner = 'ML5_opt')
433
# ('g s > e- ve~ c',{'QED':2,'QCD':1},['QCD'],{'QCD':3,'QED':2})
434
def test_long_sm_vs_stored_ML5_gs_emvexc(self):
436
self.compare_processes([ML5_processes_long_dic[proc]],
437
model = self.test_model_name_c_massive,
438
pickle_file = 'ml5_sm_%s.pkl'%proc,
439
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
440
chosen_runner = 'ML5_opt')
442
# ('g g > z c c~',{'QED':1,'QCD':2},['QCD'],{'QCD':6,'QED':2})
443
def test_long_sm_vs_stored_ML5_gg_zccx(self):
445
self.compare_processes([ML5_processes_long_dic[proc]],
446
model = self.test_model_name_c_massive,
447
pickle_file = 'ml5_sm_%s.pkl'%proc,
448
filename = 'ptest_long_sm_vs_old_ml5_%s'%proc,
449
chosen_runner = 'ML5_opt')