28 runcard_systematics_arguments={}
30 basefragment_settings={}
31 basefragment_settings[
'central_pdf']=
None
32 basefragment_settings[
'alternative_pdfs']=
None
33 basefragment_settings[
'pdf_variations']=
None
34 basefragment_settings[
'scale_variations']=
None
35 basefragment_settings[
'alternative_dynamic_scales']=
None
36 for s
in basefragment_settings:
37 if s
in the_base_fragment:
38 if isinstance(basefragment_settings[s],list)
and len(basefragment_settings[s])==0:
40 basefragment_settings[s]=the_base_fragment[s]
43 raise RuntimeError(
'No "central_pdf" configured in base fragment')
44 if s==
'alternative_dynamic_scales':
46 mgsyslog.warning(
'base fragment or pdf settings does not define "'+s+
'"')
49 for s
in basefragment_settings:
51 if not isinstance(basefragment_settings[s],int):
52 raise RuntimeError(s+
', configured in base fragment, has to be an integer')
54 if basefragment_settings[s]
is None:
56 if s==
'scale_variations':
57 if not isinstance(basefragment_settings[s],list):
58 raise RuntimeError(s+
', configured in base fragment, has to be a list of numbers')
59 for pdf
in basefragment_settings[s]:
60 if not isinstance(pdf,float)
and not isinstance(pdf,int):
61 raise RuntimeError(s+
', configured in base fragment, has to be a list of numbers')
63 if not isinstance(basefragment_settings[s],list):
64 raise RuntimeError(s+
', configured in base fragment, has to be a list of integers')
65 for element
in basefragment_settings[s]:
66 if not isinstance(element,int)
or not element>0:
67 raise RuntimeError(s+
', configured in base fragment, has to be a list of positive integers')
70 if basefragment_settings[
'alternative_pdfs']
is not None:
72 if basefragment_settings[
'pdf_variations']
is not None:
73 basefragment_settings[
'alternative_pdfs']=[ a
for a
in basefragment_settings[
'alternative_pdfs']
if a
not in basefragment_settings[
'pdf_variations'] ]
75 if basefragment_settings[
'central_pdf']
in basefragment_settings[
'alternative_pdfs']:
76 basefragment_settings[
'alternative_pdfs'].remove(basefragment_settings[
'central_pdf'])
79 runcard_settings[
'pdlabel']=
'lhapdf'
80 runcard_settings[
'lhaid']=str(basefragment_settings[
'central_pdf'])
84 if basefragment_settings[
'alternative_dynamic_scales']
is not None:
85 runcard_systematics_arguments[
'weight_info']=SYSTEMATICS_WEIGHT_INFO_ALTDYNSCALES
87 runcard_systematics_arguments[
'weight_info']=SYSTEMATICS_WEIGHT_INFO
88 runcard_systematics_arguments[
'remove_wgts']=
'".*MUR0.5_MUF2.0.*|.*MUR2.0_MUF0.5.*"'
90 runcard_settings[
'systematics_program']=
'none'
91 for s
in [
'alternative_pdfs',
'pdf_variations',
'scale_variations']:
92 if basefragment_settings[s]
is not None and len(basefragment_settings[s])>0:
95 runcard_settings[
'store_rwgt_info']=
'True'
97 runcard_settings[
'use_syst']=
'True'
99 runcard_settings[
'systematics_program']=
'systematics'
105 if basefragment_settings[
'pdf_variations']
is not None and basefragment_settings[
'central_pdf']
in basefragment_settings[
'pdf_variations']:
106 runcard_settings[
'reweight_PDF']=
'True'
108 runcard_settings[
'reweight_PDF']=
'False'
109 if basefragment_settings[
'pdf_variations']
is not None:
110 for v
in basefragment_settings[
'pdf_variations']:
111 if v==basefragment_settings[
'central_pdf']:
113 runcard_settings[
'lhaid']+=
' '+str(v)
114 runcard_settings[
'reweight_PDF']+=
' True'
115 if basefragment_settings[
'alternative_pdfs']
is not None:
116 for a
in basefragment_settings[
'alternative_pdfs']:
117 runcard_settings[
'lhaid']+=
' '+str(a)
118 runcard_settings[
'reweight_PDF']+=
' False'
122 if basefragment_settings[
'pdf_variations']
is not None:
123 for v
in basefragment_settings[
'pdf_variations']:
124 sys_pdfs.append(get_lhapdf_id_and_name(v)[1])
125 if basefragment_settings[
'alternative_pdfs']
is not None:
126 for a
in basefragment_settings[
'alternative_pdfs']:
127 sys_pdfs.append(get_lhapdf_id_and_name(a)[1]+
'@0')
129 runcard_systematics_arguments[
'pdf']=
','.join(sys_pdfs)
131 runcard_settings[
'reweight_PDF']=
'False'
135 if basefragment_settings[
'scale_variations']
is None and isNLO:
136 runcard_settings[
'reweight_scale']=
'False'
137 if basefragment_settings[
'scale_variations']
is not None:
139 runcard_settings[
'reweight_scale']=
'True'
140 runcard_settings[
'rw_rscale']=
' '.join([str(s)
for s
in basefragment_settings[
'scale_variations']])
141 runcard_settings[
'rw_fscale']=
' '.join([str(s)
for s
in basefragment_settings[
'scale_variations']])
143 runcard_systematics_arguments[
'muf']=
','.join([str(s)
for s
in basefragment_settings[
'scale_variations']])
144 runcard_systematics_arguments[
'mur']=
','.join([str(s)
for s
in basefragment_settings[
'scale_variations']])
145 runcard_systematics_arguments[
'dyn']=
'-1'
147 runcard_settings[
'reweight_scale']=
'False'
149 if basefragment_settings[
'alternative_dynamic_scales']
is not None:
151 raise RuntimeError(
'Cannot reweight to alternative dynamic scales using the NLO OTF module')
153 runcard_systematics_arguments[
'dyn']=
','.join([str(s)
for s
in [-1]+basefragment_settings[
'alternative_dynamic_scales']])
158 return runcard_settings