Skip to content

Commit 3cf696d

Browse files
committed
fixes
1 parent 8408830 commit 3cf696d

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ cd higgstocharm
4646
# Must chose --data or --MC, other options get printed
4747
# python new_Hxx.py --data --unblind --year 2017 --templates n2nano/templates_nskim17_CC.root -o Test17
4848
python new_Hxx.py --data --unblind --year 2017 -t tau/templates_new17_CC.root -o Test17 --degs 0,0 --fast 1
49-
python new_Hxx.py --data --unblind --year 2016 -t temps/templates_preapp16_CC.root --mut temps/templatesmuCR_preapp16_CC.root -o Test16 --degs 0,1
49+
python new_Hxx.py --data --unblind --year 2016 -t temps/templates_corr16_CC.root --mut temps/templatesmuCR_corr16_CC.root -o Correct16 --degs 2,0
5050
```
5151

5252
## Fitting

new_Hxx.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def passfailSF(f, region, sName, ptbin, mask, SF=1, SF_unc=0.1, muon=False):
8989
return 1, 1
9090

9191

92-
def shape_to_num(f, region, sName, ptbin, syst, mask, muon=False):
92+
def shape_to_num(f, region, sName, ptbin, syst, mask, muon=False, bound=0.5):
9393
_nom = get_templ(f, region, sName, ptbin, muon=muon)
9494
if _nom is None:
9595
return None
@@ -110,8 +110,10 @@ def shape_to_num(f, region, sName, ptbin, syst, mask, muon=False):
110110
else:
111111
_up_rate = _nom_rate
112112
_diff = np.abs(_up_rate - _nom_rate) + np.abs(_down_rate - _nom_rate)
113-
return 1.0 + _diff / (2. * _nom_rate)
114-
113+
magnitude = _diff / (2. * _nom_rate)
114+
if bound is not None:
115+
magnitude = min(magnitude, bound)
116+
return 1.0 + magnitude
115117

116118
def get_templ(f, region, sample, ptbin, syst=None, muon=False):
117119
hist_name = '{}_{}'.format(sample, region)
@@ -207,9 +209,12 @@ def dummy_rhalphabet(pseudo,
207209
sys_shape_dict['pileup_weight'] = rl.NuisanceParameter('CMS_gghcc_PU_{}'.format(year), _shape_type)
208210
sys_shape_dict['HEM18'] = rl.NuisanceParameter('CMS_gghcc_HEM_{}'.format(year), _shape_type)
209211
sys_shape_dict['L1Prefiring'] = rl.NuisanceParameter('CMS_gghcc_L1prefire_{}'.format(year), _shape_type)
212+
sys_shape_dict['scalevar_7pt'] = rl.NuisanceParameter('CMS_gghcc_th_scale7pt', _shape_type)
213+
sys_shape_dict['scalevar_3pt'] = rl.NuisanceParameter('CMS_gghcc_th_scale3pt', _shape_type)
214+
210215
for sys in ['btagEffStat', 'btagWeight', 'd1kappa_EW', 'Z_d2kappa_EW', 'Z_d3kappa_EW', 'd1K_NLO', 'd2K_NLO', 'd3K_NLO']:
211216
sys_shape_dict[sys] = rl.NuisanceParameter('CMS_gghcc_{}_{}'.format(sys, year), _shape_type)
212-
217+
213218
sys_ddxeff = rl.NuisanceParameter('CMS_eff_cc_{}'.format(year), 'lnN')
214219
sys_ddxeffbb = rl.NuisanceParameter('CMS_eff_bb_{}'.format(year), 'lnN')
215220
sys_ddxeffw = rl.NuisanceParameter('CMS_eff_w_{}'.format(year), 'lnN')
@@ -226,7 +231,8 @@ def dummy_rhalphabet(pseudo,
226231
sys_scale = rl.NuisanceParameter('CMS_gghcc_scale_{}'.format(year), 'shape')
227232
sys_smear = rl.NuisanceParameter('CMS_gghcc_smear_{}'.format(year), 'shape')
228233

229-
sys_Hpt = rl.NuisanceParameter('CMS_gghcc_ggHpt', 'lnN')
234+
# sys_ggHpt = rl.NuisanceParameter('CMS_gghcc_th_scale7pt', 'lnN')
235+
# sys_VBFpt = rl.NuisanceParameter('CMS_gghcc_th_scale3pt', 'lnN')
230236

231237
# Import binnings
232238
# Hidden away to be available to other functions
@@ -492,16 +498,21 @@ def smorph(templ):
492498
sys_names = [
493499
'JES', 'JER', 'UES', 'jet_trigger', 'btagEffStat', 'btagWeight', 'pileup_weight',
494500
'Z_d2kappa_EW', 'Z_d3kappa_EW', 'd1kappa_EW', 'd1K_NLO', 'd2K_NLO', 'd3K_NLO',
495-
'L1Prefiring',
501+
'L1Prefiring',
502+
'scalevar_7pt', 'scalevar_3pt',
496503
]
497504
for sys_name in sys_names:
498505
if (("NLO" in sys_name) or ("EW" in sys_name)) and not sName in ['zbb', 'zcc', 'zqq', 'wcq', 'wqq']:
499506
continue
500507
if ("Z_d" in sys_name) and sName not in ['zbb', 'zcc', 'zqq']:
501508
continue
509+
if sys_name == 'scalevar_7pt' and sName not in ['hcc', 'hbb']:
510+
continue
511+
if sys_name == 'scalevar_3pt' and sName not in ['vbfhcc', 'vbfhbb', 'whcc', 'zhcc', 'whbb', 'zhbb']:
512+
continue
502513
if opts.fast == 0: # Convert to lnN for faster fitting
503514
_sys_ef = shape_to_num(f, region, sName, ptbin,
504-
sys_name, mask)
515+
sys_name, mask, bound=None if 'scalevar' not in sys_name else 0.25)
505516
if _sys_ef is None:
506517
continue
507518
sample.setParamEffect(sys_shape_dict[sys_name], _sys_ef)
@@ -523,14 +534,6 @@ def smorph(templ):
523534
if badtemp_ma(_up[0]) or badtemp_ma(_dn[0]):
524535
print("Skipping {} for sample {}, shape would be empty".format(sys_name, sName))
525536
continue
526-
# if ptbin == 1:
527-
# sys.exit()
528-
# if sName == 'zll' and sys_name == 'btagEffStat':
529-
# continue
530-
# if sName == 'tqq' and sys_name == 'btagEffStat':
531-
# print("XXXX", np.sum(_up[0]), np.sum(_dn[0]))
532-
# print(_up[0])
533-
# print(_dn[0])
534537
sample.setParamEffect(sys_shape_dict[sys_name], _up[0], _dn[0])
535538
# One sided
536539
for sys_name in ['HEM18']:
@@ -584,8 +587,10 @@ def smorph(templ):
584587
SF[year]['W_SF'], SF[year]['W_SF_ERR'])
585588
sample.scale(_sf)
586589
sample.setParamEffect(sys_ddxeffw, _sfunc)
587-
if sName == 'hcc':
588-
sample.setParamEffect(sys_Hpt, 1.2)
590+
# if sName == 'hcc':
591+
# sample.setParamEffect(sys_ggHpt, 1.2)
592+
# if sName == 'hcc':
593+
# sample.setParamEffect(sys_VBFpt, 1.2)
589594

590595
# Scale and Smear
591596
mtempl = AffineMorphTemplate(templ)

0 commit comments

Comments
 (0)