1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 from __future__ import absolute_import
141 from __future__ import print_function
142 import os
143 import sys
144 import re
145 import shutil
146 import string
147 from time import time
148 from six.moves import range
149
150
151 -def mod_file(mod_file,rule_file='',write='',opt={}):
152
153 if rule_file:
154 if type(mod_file)!=list:
155 mod_obj=Mod_file(opt=opt)
156 mod_obj.mod_one_file(mod_file,rule_file,write)
157 elif type(mod_file)==list:
158
159 if write=='':
160 write=['']*len(mod_file)
161
162 if type(rule_file)!=list:
163 rule_file=[rule_file]*len(mod_file)
164 if type(rule_file)==str:
165 mod_obj=Mod_file(rule_file=rule_file,opt=opt)
166 for i in range(0,len(mod_file)):
167 mod_obj.mod_one_file(mod_file[i],mod_obj.dico,write[i])
168 else:
169 mod_obj=Mod_file(opt=opt)
170 for i in range(0,len(mod_file)):
171 mod_obj.mod_one_file(mod_file[i],rule_file[i],write[i])
172 else:
173 mod_obj=Mod_file(mod_file,opt=opt)
174
175
176 -def mod_text(text,rule_file='',write=''):
177
178
179 mod_obj=Mod_file()
180 mod_obj.file='input text'
181 text=mod_obj.mod_one_text(text,rule_file,write)
182 return text
183
184
185
186
188
189
190 nowarning=[]
191
192
193 - def __init__(self,main_file='',rule_file='',opt={}):
194 """ start the instruction of modification present in the main file if present """
195
196 self.d_init=os.getcwd()
197 self.d_rule=os.getcwd()
198 self.d_main=os.getcwd()
199
200 self.failed=0
201
202 if opt:
203 for key,value in opt.items():
204 exec('self.'+key+'='+str(value)+'')
205
206 if main_file:
207
208 self.d_rule=os.path.dirname(os.path.realpath(main_file))
209 self.d_main=self.d_rule
210 self.mod_all_file(os.path.basename(main_file))
211 if rule_file:
212 self.extract_modif(rule_file)
213
214
215
216
218 """ apply modification following manager main_file """
219
220 self.go_to_main_dir()
221
222
223 opt_pattern=re.compile(r'''^\s*(?P<opt>\S+)\s*=\s*(?P<value>\S+)''')
224 Pattern=re.compile(r'''^\s*(?P<file>\S+)\s+(?P<rule>\S+)\s+(?P<write>\S*)\s*$''')
225 ff=open(rule_pos,'r')
226
227 while 1:
228 line=ff.readline()
229 if line=='':
230 break
231 if line[0]=='#':
232 continue
233 obj_opt=opt_pattern.search(line)
234 if obj_opt:
235 if obj_opt.group('opt')=='main_dir':
236 self.d_main=os.path.join(self.d_main,obj_opt.group('value'))
237 self.go_to_main_dir()
238
239 obj_pat=Pattern.search(line)
240 if obj_pat:
241 self.mod_one_file(obj_pat.group('file'),obj_pat.group('rule'),obj_pat.group('write'))
242
243 self.back_to_init_dir()
244
245
263
264
265 - def mod_one_text(self,text,rule_file='',write=''):
266 """ modify the text with rule_file instruction output will be place in write (same file by default)"""
267
268 self.go_to_main_dir()
269
270
271 if rule_file=='':
272 dico=self.dico
273 elif type(rule_file)!=dict:
274 self.extract_modif(rule_file)
275 else:
276 dico=rule_file
277 self.dico=dico
278
279
280 begin_end=re.compile(r'''\$(?P<maj>B)\$\s?(?P<tag>\S+)\s?\$B\$(?P<text>.*)\$E\$\s?(?P=tag)\s?\$E\$''',re.S+re.I)
281 end_file=re.compile(r'''\$\$\s*END\s+FILE\s*\$\$''')
282 replace=re.compile(r'''\$(?P<maj>B)\$[ \t]*(?P<tag>\S+)[ \t]*\$E\$''',re.I)
283 end_begin=re.compile(r'''\$(?P<maj>E)\$\s?(?P<tag>\S+)\s?\$E\$(?P<text>.*)\$B\$\s?(?P=tag)\s?\$B\$''',re.S+re.I)
284
285
286 for key in self.dico.keys():
287 if key.startswith('S-REGEXP'):
288 text=self.return_mod_text(key,text)
289
290
291 for key in self.dico.keys():
292 if key.startswith('S-DECOMMENT_'):
293 text=self.return_mod_text(key,text)
294
295
296 text_list=replace.split(text)
297 text_to_write=text_list.pop(0)
298 while len(text_list)>1:
299 maj=text_list.pop(0).isupper()
300 tag=text_list.pop(0)
301 text_to_write2=self.return_mod_text(tag,'')
302 text_to_write3=text_list.pop(0)
303 text_to_write=self.treat_begin_end_line(maj,text_to_write,text_to_write2,text_to_write3)
304
305
306 text_list=begin_end.split(text_to_write)
307 text_to_write=text_list.pop(0)
308 multiple=0
309 while len(text_list)>2:
310 maj=text_list.pop(0).isupper()
311 tag=text_list.pop(0)
312 text=text_list.pop(0)
313 if end_begin.search(text) and end_begin.search(text).group('tag')==tag:
314 mod_text=self.treat_multiple_tag(text,maj,tag)
315 else:
316 mod_text=self.return_mod_text(tag,text)
317 text_next=text_list.pop(0)
318 text_to_write=self.treat_begin_end_line(maj,text_to_write,mod_text,text_next)
319
320
321
322 if "S-END" in self.dico:
323 if not end_file.search(text_to_write):
324 text_to_write+=self.dico["S-END"]
325
326
327 text_to_write=text_to_write.replace('$B-DIFF$','$B$')
328 text_to_write=text_to_write.replace('$E-DIFF$','$E$')
329
330
331 text_to_write=text_to_write.replace('\r\n','\n')
332
333
334 if write:
335 ff=open(write,'w')
336 ff.writelines(text_to_write)
337 ff.close()
338
339 self.back_to_init_dir()
340 return text_to_write
341
342
344
345
346 if clearline and not self.failed:
347 output=text_to_write=text_before[:text_before.rfind('\n')]+'\n'
348 output+=text
349 output+='\n'+text_after[text_after.find('\n'):]
350 else:
351 output=text_before+text+text_after
352
353 self.failed=0
354 return output
355
356
373
374
375
376
377
378
379
380
381
382
384 """put the information in a dictionary"""
385 try:
386 ff=open(rule_file,'r')
387 except:
388 ff=open(os.path.join(self.d_rule,rule_file),'r')
389 begin=re.compile(r'''^\$B\$\s?(?P<tag>\S+)\s?\$B\$''')
390 end=re.compile(r'''^\$E\$\s?(?P<tag>\S+)\s?\$E\$''')
391 comment=re.compile(r'''^##\**\s*$''')
392 special_begin=re.compile(r'''^\$(?P<tag>S-\S+)-B\$''')
393 special_end=re.compile(r'''^\$(?P<tag>S-\S+)-E\$''')
394 special=re.compile(r'''^\$(?P<tag>S-\S+)\$''')
395 self.dico={}
396 tag=""
397 replace_text=""
398 rec_mode=0
399
400 while 1:
401 line=ff.readline()
402 if line=='':
403 break
404 if comment.search(line):
405 continue
406 if special.search(line):
407 tag=special.search(line).group('tag')
408 self.dico[tag]=''
409 if begin.search(line) or special_begin.search(line):
410 try:
411 tag=begin.search(line).group('tag')
412 except:
413 tag=special_begin.search(line).group('tag')
414 if rec_mode:
415 print('error in ',rule_file,' wrong termination for ',tag,' rule')
416 sys.exit()
417 rec_mode=1
418 continue
419 if end.search(line) or special_end.search(line):
420 try:
421 tag=end.search(line).group('tag')
422 except:
423 tag=special_end.search(line).group('tag')
424 if rec_mode==0:
425 print('error in ',rule_file,'no initial tag:', tag)
426 sys.exit()
427
428 if replace_text.count('\n')==1:
429 replace_text=replace_text[:-1]
430 while replace_text.endswith(' '):
431 replace_text=replace_text[:-1]
432 self.dico[tag]=replace_text
433 tag=""
434 replace_text=""
435 rec_mode=0
436 continue
437
438 if rec_mode:
439 replace_text+=line
440
441 if rec_mode:
442 print('error in ',rule_file,' wrong end-file termination ')
443 sys.exit()
444 return self.dico
445
446
447
448
449
450
451
452
453 - def return_mod_text(self,tag,text):
454 """ by default return the text linked to tag
455 special tag are S-TAG_OPT: OPT=OPT1+OPT2+OPT3+..."""
456
457 special_tag=re.compile(r'''S-(?P<tag>[^ \t\n\r\f\v_]+)_?(?P<opt>[^\t\n\r\f\v]*)''')
458
459 if not special_tag.search(tag):
460 try:
461 return self.dico[tag]
462 except:
463 if tag not in self.nowarning and self.nowarning != 'all':
464 print('WARNING: tag:',tag,' not defined in file ',self.file)
465 print('no modification done for this tag')
466 if text:
467 output = '$B$ '+tag+' $B$'+ self.mod_one_text(text)+' $E$ '+tag+' $E$'
468 else:
469 output = '$B$ '+tag+' $E$'
470 self.failed=1
471 return output
472
473
474 short_tag=special_tag.search(tag).group('tag')
475 opt=special_tag.search(tag).group('opt').split('+')
476
477 old=''
478 opt2=[]
479 for part in opt:
480 if len(part) and part[-1]=='\\' :
481 old=part[:-1]+'+'
482 else:
483 opt2.append(old+part)
484 old=''
485 opt=opt2
486
487 tag=short_tag.lower()
488 if tag=='comment':
489 text=self.comment_text(text,opt[0])
490 elif tag=='del':
491 text=self.del_text(text)
492 elif tag=='regexp':
493 if len(opt)==2:
494 text=self.regexp_text(text,opt[0],opt[1])
495 elif len(opt)==3:
496 text=self.regexp_text(text,opt[0],opt[1],opt[2])
497 elif tag=='decomment':
498 text=self.decomment_text(text,opt[0])
499
500 return text
501
502
504 """ add comment_tag before each line """
505 end_line=re.compile(r''' ''')
506
507
508
509
510
511 text=comment_tag+'|\t'+text.replace('\n','\n'+comment_tag+'|\t')
512 if text[-3:]=="|\t\n":
513 text=text[-3:]
514 text=text.replace('\t',' ')
515 text2=''
516 for line in text.split('\n'):
517 if line=='':
518 continue
519 if len(line)<74:
520 if line[-1]=='\n':
521 line=line[:-1]
522 for i in range(len(line),73):
523 line+=' '
524 line+='|\n'
525 else:
526 line+='\n'
527 text2+=line
528
529 line=comment_tag+'+'+71*'-'+'+\n'
530
531 return line+text2+line+'\n'
532
533
535 """ remove comment inserted by comment_text """
536
537 carac_line=re.compile(comment_tag+'\+'+71*'-'+'\+')
538
539 def decomment_line(line,comment_tag):
540 if line[:6]==comment_tag+'| ':
541 line=line[6:]
542 else:
543 print([line[:6]])
544 print('failed decomment')
545
546 if line[-1]=='|':
547 line=line[:-1]
548 return line
549
550 decomment=0
551 init_text=text.split('\n')
552 end_text=''
553 for line in init_text:
554 if carac_line.search(line):
555 decomment=not decomment
556 if decomment:
557 end_text+=comment_tag+' $B-DIFF$ S-COMMENT_'+comment_tag+' $B-DIFF$\n'
558 continue
559 else:
560 end_text+=comment_tag+' $E-DIFF$ S-COMMENT_'+comment_tag+' $E-DIFF$\n'
561 continue
562 if decomment:
563
564 end_text+=decomment_line(line,comment_tag)+'\n'
565 else:
566 end_text+=line+'\n'
567
568 return end_text
569 return end_text
570
571
572 - def del_text(self,text):
574
575
576 - def regexp_text(self,text,exp,new,opt=''):
577 """ replace the text exp (python regular expression) with new"""
578
579
580
581
582
583
584 exp=exp.replace('\\\\','@888@')
585 exp=exp.replace('\_','_').replace('\+','+')
586 exp=exp.replace('@888@','\\\\')
587
588
589
590 pattern=re.compile(exp,eval(opt))
591 text=pattern.sub(new, text)
592
593
594 return text
595
596
597
598
599
600
602 os.chdir(self.d_init)
603
604
605 - def go_to_main_dir(self):
606 os.chdir(self.d_main)
607
608
609
610
611
612 if '__main__' == __name__:
613
614 import sys
615 sys.path.append('./Source/MadWeight/Python')
616 from . import create_run
617 import unittest
618 import os, shutil
619
620
622 """ Test the the mod routines works correctly on MadWeight """
623
625 """ create a copy of the original file """
626 shutil.copyfile('../Template/SubProcesses/cuts.f', './SubProcesses/cuts.bk')
627
629 os.system('rm -f ./SubProcesses/cuts.mod')
630 os.system('rm -f ./SubProcesses/cuts.bk')
631 os.system('rm -f ./SubProcesses/cuts.o')
632
633
635 """ test if we can activate/desactivate the cuts """
636
637 self.assertEqual(create_run.cut_is_active('cuts.bk'), 1)
638 self.assertEqual(create_run.bw_cut_is_active('cuts.bk'),1)
639
640 file_to_mod='./SubProcesses/cuts.bk'
641 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
642
643 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
644 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
645 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
646 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
647
648 file_to_mod='./SubProcesses/cuts.mod'
649 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
650 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
651 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
652 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
653
654 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
655 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
656 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
657 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
658
659 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
660 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
661 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
662 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
663
665
666 file_to_mod ='./SubProcesses/cuts.bk'
667 rule= './Source/MadWeight/mod_file/mod_cuts'
668 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
669 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
670 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
671 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
672
673 file_to_mod='./SubProcesses/cuts.mod'
674 rule = './Source/MadWeight/mod_file/suppress_cuts_MW'
675
676 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
677 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
678 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
679 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
680
681 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
682 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
683 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
684 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
685
686 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
687 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
688 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
689 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
690
691 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
692 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
693 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
694 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
695
697
698 self.assertEqual(create_run.cut_is_active('cuts.bk'), 1)
699 self.assertEqual(create_run.bw_cut_is_active('cuts.bk'),1)
700
701 file_to_mod='./SubProcesses/cuts.bk'
702 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
703
704 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
705 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
706 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
707 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
708
709 file_to_mod='./SubProcesses/cuts.mod'
710 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
711 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
712 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
713 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
714
715 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
716 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
717 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
718 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
719 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
720
721 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
722 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
723 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
724 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
725 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
726
727 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
728 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
729 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
730 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
731 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
732
733 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
734 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
735 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
736 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
737 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
738
739 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
740 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
741 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
742 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
743 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
744
745 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
746 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
747 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
748 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
749 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
750
751 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
752 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
753 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
754 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
755 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
756
757
758
759
760
761
762
763
765
766 self.assertEqual(create_run.cut_is_active('cuts.bk'), 1)
767 self.assertEqual(create_run.bw_cut_is_active('cuts.bk'),1)
768
769 file_to_mod='./SubProcesses/cuts.bk'
770 rule= './Source/MadWeight/mod_file/mod_cuts'
771 mod_file(file_to_mod,rule, write='./SubProcesses/cuts.mod')
772 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
773 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'),1)
774 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
775
776 file_to_mod='./SubProcesses/cuts.mod'
777 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
778
779 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
780 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
781 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
782 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
783
784 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
785 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
786 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
787 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
788
789 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
790 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
791 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
792 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
793 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
794
795 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
796 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
797 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
798 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
799 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
800
801 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
802 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
803 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
804 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
805 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
806
807 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
808 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
809 self.assertEqual(create_run.cut_is_active('cuts.mod'), 1)
810 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
811 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
812
813 rule='./Source/MadWeight/mod_file/suppress_cuts_MG'
814 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
815 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
816 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 1)
817 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
818
819 rule='./Source/MadWeight/mod_file/suppress_BW_cuts'
820 mod_file(file_to_mod,rule,opt={'nowarning':"""['PASSCUTS','MW_NEW_DEF','DESACTIVATE_BW_CUT']"""}, write='./SubProcesses/cuts.mod')
821 self.assertEqual(create_run.cut_is_active('cuts.mod'), 0)
822 self.assertEqual(create_run.bw_cut_is_active('cuts.mod'), 0)
823 self.assertFalse('\n$B$' in open('./SubProcesses/cuts.mod').read())
824
825
826
827 unittest.main()
828