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