Skip to content

Commit 245f05f

Browse files
committed
replace systematic covariance by breakdown of systematics to include their inter spectra correlations
1 parent a074579 commit 245f05f

File tree

6 files changed

+4791
-549
lines changed

6 files changed

+4791
-549
lines changed
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
data_central:
2-
- 2.428255
3-
- 3.158267
4-
- 1.798348
5-
- 8.55532100e-01
6-
- 3.51296300e-01
7-
- 0.146552
8-
- 5.69739800e-02
9-
- 1.90445000e-02
10-
- 4.88248800e-03
2+
- 2.50408940e+00
3+
- 3.13037950e+00
4+
- 1.75617674e+00
5+
- 8.48910282e-01
6+
- 3.59374358e-01
7+
- 1.59687456e-01
8+
- 5.72135556e-02
9+
- 2.18712751e-02
10+
- 3.51971236e-03

nnpdf_data/nnpdf_data/commondata/ATLAS_TTBAR_13TEV_LJ_DIF/filter.py

Lines changed: 102 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,6 @@ def processData():
8484
covMatArray_dSig_dyttBar_total = []
8585
covMatArray_dSig_dyttBar_total_norm = []
8686

87-
# mttbar(9)| pTt (8)| yt(5)| yttbar(7)
88-
# mttbar| 803 801 802 810
89-
# pTt | 801t 798 799 808
90-
# yt | 802t 799t 800 809
91-
# yttbar| 810t 808t 809t 812
9287
covMat_stat, artUnc_stat = artunc_1d.artunc()
9388
n_artUnc_stat = len(artUnc_stat)
9489

@@ -104,11 +99,11 @@ def processData():
10499
covMatEl = input2['dependent_variables'][0]['values'][i]['value']
105100
covMatArray_dSig_dmttBar_total.append(covMatEl)
106101

107-
covMatArray_dSig_dmttBar_total = np.array(covMatArray_dSig_dmttBar_total)
108-
covMatArray_dSig_dmttBar_stat = covMat_stat[:ndata_dSig_dmttBar, :ndata_dSig_dmttBar].flatten()
109-
covMatArray_dSig_dmttBar_sys = covMatArray_dSig_dmttBar_total - covMatArray_dSig_dmttBar_stat
102+
# covMatArray_dSig_dmttBar_total = np.array(covMatArray_dSig_dmttBar_total)
103+
# covMatArray_dSig_dmttBar_stat = covMat_stat[:ndata_dSig_dmttBar, :ndata_dSig_dmttBar].flatten()
104+
# covMatArray_dSig_dmttBar_sys = covMatArray_dSig_dmttBar_total - covMatArray_dSig_dmttBar_stat
110105

111-
artUncMat_dSig_dmttBar_sys = cta(ndata_dSig_dmttBar, covMatArray_dSig_dmttBar_sys)
106+
# artUncMat_dSig_dmttBar_sys = cta(ndata_dSig_dmttBar, covMatArray_dSig_dmttBar_sys)
112107
artUncMat_dSig_dmttBar_lumiless = cta(ndata_dSig_dmttBar, llcm_mtt)
113108

114109
sqrts = float(input['dependent_variables'][0]['qualifiers'][0]['value'])
@@ -121,19 +116,21 @@ def processData():
121116
value_delta = 0
122117
error_value = {}
123118
error_value_lumiless = {}
119+
# stat error is in the covariance matrix, so we skip the first error in the list, which is the total stat error
124120
# error_label = str(values[i]['errors'][0]['label'])
125121
# error_value[error_label] = pta(values[i]['errors'][0]['symerror'], values[i]['value'])
126-
# for j in range(1, len(values[i]['errors'])):
127-
# plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
128-
# minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
129-
# se_delta, se_sigma = se(plus, minus)
130-
# value_delta = value_delta + se_delta
131-
# error_label = values[i]['errors'][j]['label']
132-
# error_value[error_label] = se_sigma
133-
data_central_value = values[i]['value'] # + value_delta
122+
for j in range(1, len(values[i]['errors'])):
123+
plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
124+
minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
125+
se_delta, se_sigma = se(plus, minus)
126+
value_delta = value_delta + se_delta
127+
error_label = values[i]['errors'][j]['label']
128+
error_value[error_label] = se_sigma
129+
data_central_value = values[i]['value'] + value_delta
130+
134131
data_central_dSig_dmttBar.append(data_central_value)
135132
for j in range(ndata_dSig_dmttBar):
136-
error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dmttBar_sys[i][j])
133+
# error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dmttBar_sys[i][j])
137134
error_value_lumiless['ArtUnc_' + str(j + 1)] = float(
138135
artUncMat_dSig_dmttBar_lumiless[i][j]
139136
)
@@ -151,15 +148,19 @@ def processData():
151148
error_definition_dSig_dmttBar = {}
152149
error_definition_dSig_dmttBar_wo_lumi = {}
153150
# error_definition_dSig_dmttBar['stat'] = {'description': 'total statistical uncertainty', 'treatment': 'ADD', 'type': 'UNCORR'}
154-
# for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
155-
# error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
156-
# error_definition_dSig_dmttBar[error_name] = {'description': '', 'treatment': 'MULT', 'type': 'CORR'}
157-
for i in range(ndata_dSig_dmttBar):
158-
error_definition_dSig_dmttBar['ArtUnc_sys_' + str(i + 1)] = {
159-
'definition': 'artificial uncertainty ' + str(i + 1),
160-
'treatment': 'ADD',
151+
for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
152+
error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
153+
error_definition_dSig_dmttBar[error_name] = {
154+
'description': '',
155+
'treatment': 'MULT',
161156
'type': 'CORR',
162157
}
158+
for i in range(ndata_dSig_dmttBar):
159+
# error_definition_dSig_dmttBar['ArtUnc_sys_' + str(i + 1)] = {
160+
# 'definition': 'artificial uncertainty ' + str(i + 1),
161+
# 'treatment': 'ADD',
162+
# 'type': 'CORR',
163+
# }
163164
error_definition_dSig_dmttBar_wo_lumi['ArtUnc_' + str(i + 1)] = {
164165
'definition': 'artificial uncertainty ' + str(i + 1),
165166
'treatment': 'ADD',
@@ -169,7 +170,7 @@ def processData():
169170
error_definition_dSig_dmttBar['ArtUnc_stat_' + str(i + 1)] = {
170171
'definition': 'artificial uncertainty ' + str(i + 1),
171172
'treatment': 'ADD',
172-
'type': 'CORR',
173+
'type': 'ATLAS13TEVTTBAR190807305unc' + str(i + 1),
173174
}
174175

175176
data_central_dSig_dmttBar_yaml = {'data_central': data_central_dSig_dmttBar}
@@ -278,11 +279,11 @@ def processData():
278279
covMatEl = input2['dependent_variables'][0]['values'][i]['value']
279280
covMatArray_dSig_dpTt_total.append(covMatEl)
280281

281-
covMatArray_dSig_dpTt_total = np.array(covMatArray_dSig_dpTt_total)
282-
covMatArray_dSig_dpTt_stat = covMat_stat[9:17, 9:17].flatten()
283-
covMatArray_dSig_dpTt_sys = covMatArray_dSig_dpTt_total - covMatArray_dSig_dpTt_stat
282+
# covMatArray_dSig_dpTt_total = np.array(covMatArray_dSig_dpTt_total)
283+
# covMatArray_dSig_dpTt_stat = covMat_stat[9:17, 9:17].flatten()
284+
# covMatArray_dSig_dpTt_sys = covMatArray_dSig_dpTt_total - covMatArray_dSig_dpTt_stat
284285

285-
artUncMat_dSig_dpTt_sys = cta(ndata_dSig_dpTt, covMatArray_dSig_dpTt_sys)
286+
# artUncMat_dSig_dpTt_sys = cta(ndata_dSig_dpTt, covMatArray_dSig_dpTt_sys)
286287
artUncMat_dSig_dpTt_lumiless = cta(ndata_dSig_dpTt, llcm_ptt)
287288

288289
sqrts = float(input['dependent_variables'][0]['qualifiers'][0]['value'])
@@ -297,17 +298,17 @@ def processData():
297298
error_value_lumiless = {}
298299
# error_label = str(values[i]['errors'][0]['label'])
299300
# error_value[error_label] = pta(values[i]['errors'][0]['symerror'], values[i]['value'])
300-
# for j in range(1, len(values[i]['errors'])):
301-
# plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
302-
# minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
303-
# se_delta, se_sigma = se(plus, minus)
304-
# value_delta = value_delta + se_delta
305-
# error_label = values[i]['errors'][j]['label']
306-
# error_value[error_label] = se_sigma
301+
for j in range(1, len(values[i]['errors'])):
302+
plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
303+
minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
304+
se_delta, se_sigma = se(plus, minus)
305+
value_delta = value_delta + se_delta
306+
error_label = values[i]['errors'][j]['label']
307+
error_value[error_label] = se_sigma
307308
data_central_value = values[i]['value'] # + value_delta
308309
data_central_dSig_dpTt.append(data_central_value)
309310
for j in range(ndata_dSig_dpTt):
310-
error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dpTt_sys[i][j])
311+
# error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dpTt_sys[i][j])
311312
error_value_lumiless['ArtUnc_' + str(j + 1)] = float(artUncMat_dSig_dpTt_lumiless[i][j])
312313
for j in range(n_artUnc_stat):
313314
error_value['ArtUnc_stat_' + str(j + 1)] = float(
@@ -325,15 +326,19 @@ def processData():
325326
error_definition_dSig_dpTt = {}
326327
error_definition_dSig_dpTt_wo_lumi = {}
327328
# error_definition_dSig_dpTt['stat'] = {'description': 'total statistical uncertainty', 'treatment': 'ADD', 'type': 'UNCORR'}
328-
# for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
329-
# error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
330-
# error_definition_dSig_dpTt[error_name] = {'description': '', 'treatment': 'MULT', 'type': 'CORR'}
331-
for i in range(ndata_dSig_dpTt):
332-
error_definition_dSig_dpTt['ArtUnc_sys_' + str(i + 1)] = {
333-
'definition': 'artificial uncertainty ' + str(i + 1),
334-
'treatment': 'ADD',
329+
for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
330+
error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
331+
error_definition_dSig_dpTt[error_name] = {
332+
'description': '',
333+
'treatment': 'MULT',
335334
'type': 'CORR',
336335
}
336+
for i in range(ndata_dSig_dpTt):
337+
# error_definition_dSig_dpTt['ArtUnc_sys_' + str(i + 1)] = {
338+
# 'definition': 'artificial uncertainty ' + str(i + 1),
339+
# 'treatment': 'ADD',
340+
# 'type': 'CORR',
341+
# }
337342
error_definition_dSig_dpTt_wo_lumi['ArtUnc_' + str(i + 1)] = {
338343
'definition': 'artificial uncertainty ' + str(i + 1),
339344
'treatment': 'ADD',
@@ -343,7 +348,7 @@ def processData():
343348
error_definition_dSig_dpTt['ArtUnc_stat_' + str(i + 1)] = {
344349
'definition': 'artificial uncertainty ' + str(i + 1),
345350
'treatment': 'ADD',
346-
'type': 'CORR',
351+
'type': 'ATLAS13TEVTTBAR190807305unc' + str(i + 1),
347352
}
348353

349354
data_central_dSig_dpTt_yaml = {'data_central': data_central_dSig_dpTt}
@@ -452,11 +457,11 @@ def processData():
452457
covMatEl = input2['dependent_variables'][0]['values'][i]['value']
453458
covMatArray_dSig_dyt_total.append(covMatEl)
454459

455-
covMatArray_dSig_dyt_total = np.array(covMatArray_dSig_dyt_total)
456-
covMatArray_dSig_dyt_stat = covMat_stat[17:22, 17:22].flatten()
457-
covMatArray_dSig_dyt_sys = covMatArray_dSig_dyt_total - covMatArray_dSig_dyt_stat
458-
459-
artUncMat_dSig_dyt_sys = cta(ndata_dSig_dyt, covMatArray_dSig_dyt_sys)
460+
# covMatArray_dSig_dyt_total = np.array(covMatArray_dSig_dyt_total)
461+
# covMatArray_dSig_dyt_stat = covMat_stat[17:22, 17:22].flatten()
462+
# covMatArray_dSig_dyt_sys = covMatArray_dSig_dyt_total - covMatArray_dSig_dyt_stat
463+
#
464+
# artUncMat_dSig_dyt_sys = cta(ndata_dSig_dyt, covMatArray_dSig_dyt_sys)
460465
artUncMat_dSig_dyt_lumiless = cta(ndata_dSig_dyt, llcm_yt)
461466

462467
sqrts = float(input['dependent_variables'][0]['qualifiers'][0]['value'])
@@ -471,17 +476,17 @@ def processData():
471476
error_value_lumiless = {}
472477
# error_label = str(values[i]['errors'][0]['label'])
473478
# error_value[error_label] = pta(values[i]['errors'][0]['symerror'], values[i]['value'])
474-
# for j in range(1, len(values[i]['errors'])):
475-
# plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
476-
# minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
477-
# se_delta, se_sigma = se(plus, minus)
478-
# value_delta = value_delta + se_delta
479-
# error_label = values[i]['errors'][j]['label']
480-
# error_value[error_label] = se_sigma
479+
for j in range(1, len(values[i]['errors'])):
480+
plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
481+
minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
482+
se_delta, se_sigma = se(plus, minus)
483+
value_delta = value_delta + se_delta
484+
error_label = values[i]['errors'][j]['label']
485+
error_value[error_label] = se_sigma
481486
data_central_value = values[i]['value'] # + value_delta
482487
data_central_dSig_dyt.append(data_central_value)
483488
for j in range(ndata_dSig_dyt):
484-
error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dyt_sys[i][j])
489+
# error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dyt_sys[i][j])
485490
error_value_lumiless['ArtUnc_' + str(j + 1)] = float(artUncMat_dSig_dyt_lumiless[i][j])
486491
for j in range(n_artUnc_stat):
487492
error_value['ArtUnc_stat_' + str(j + 1)] = float(
@@ -499,25 +504,29 @@ def processData():
499504
error_definition_dSig_dyt = {}
500505
error_definition_dSig_dyt_wo_lumi = {}
501506
# error_definition_dSig_dyt['stat'] = {'description': 'total statistical uncertainty', 'treatment': 'ADD', 'type': 'UNCORR'}
502-
# for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
503-
# error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
504-
# error_definition_dSig_dyt[error_name] = {'description': '', 'treatment': 'MULT', 'type': 'CORR'}
505-
for i in range(ndata_dSig_dyt):
506-
error_definition_dSig_dyt['ArtUnc_sys_' + str(i + 1)] = {
507-
'definition': 'artificial uncertainty ' + str(i + 1),
508-
'treatment': 'ADD',
507+
for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
508+
error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
509+
error_definition_dSig_dyt[error_name] = {
510+
'description': '',
511+
'treatment': 'MULT',
509512
'type': 'CORR',
510513
}
514+
for i in range(ndata_dSig_dyt):
515+
# error_definition_dSig_dyt['ArtUnc_sys_' + str(i + 1)] = {
516+
# 'definition': 'artificial uncertainty ' + str(i + 1),
517+
# 'treatment': 'ADD',
518+
# 'type': 'CORR',
519+
# }
511520
error_definition_dSig_dyt_wo_lumi['ArtUnc_' + str(i + 1)] = {
512521
'definition': 'artificial uncertainty ' + str(i + 1),
513522
'treatment': 'ADD',
514523
'type': 'CORR',
515524
}
516525
for i in range(n_artUnc_stat):
517-
error_definition_dSig_dmttBar['ArtUnc_stat_' + str(i + 1)] = {
526+
error_definition_dSig_dpTt['ArtUnc_stat_' + str(i + 1)] = {
518527
'definition': 'artificial uncertainty ' + str(i + 1),
519528
'treatment': 'ADD',
520-
'type': 'CORR',
529+
'type': 'ATLAS13TEVTTBAR190807305unc' + str(i + 1),
521530
}
522531

523532
data_central_dSig_dyt_yaml = {'data_central': data_central_dSig_dyt}
@@ -623,11 +632,11 @@ def processData():
623632
covMatEl = input2['dependent_variables'][0]['values'][i]['value']
624633
covMatArray_dSig_dyttBar_total.append(covMatEl)
625634

626-
covMatArray_dSig_dyttBar_total = np.array(covMatArray_dSig_dyttBar_total)
627-
covMatArray_dSig_dyttBar_stat = covMat_stat[22:, 22:].flatten()
628-
covMatArray_dSig_dyttBar_sys = covMatArray_dSig_dyttBar_total - covMatArray_dSig_dyttBar_stat
635+
# covMatArray_dSig_dyttBar_total = np.array(covMatArray_dSig_dyttBar_total)
636+
# covMatArray_dSig_dyttBar_stat = covMat_stat[22:, 22:].flatten()
637+
# covMatArray_dSig_dyttBar_sys = covMatArray_dSig_dyttBar_total - covMatArray_dSig_dyttBar_stat
629638

630-
artUncMat_dSig_dyttBar_sys = cta(ndata_dSig_dyttBar, covMatArray_dSig_dyttBar_sys)
639+
# artUncMat_dSig_dyttBar_sys = cta(ndata_dSig_dyttBar, covMatArray_dSig_dyttBar_sys)
631640
artUncMat_dSig_dyttBar_lumiless = cta(ndata_dSig_dyttBar, llcm_ytt)
632641

633642
sqrts = float(input['dependent_variables'][0]['qualifiers'][0]['value'])
@@ -642,17 +651,17 @@ def processData():
642651
error_value_lumiless = {}
643652
# error_label = str(values[i]['errors'][0]['label'])
644653
# error_value[error_label] = pta(values[i]['errors'][0]['symerror'], values[i]['value'])
645-
# for j in range(1, len(values[i]['errors'])):
646-
# plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
647-
# minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
648-
# se_delta, se_sigma = se(plus, minus)
649-
# value_delta = value_delta + se_delta
650-
# error_label = values[i]['errors'][j]['label']
651-
# error_value[error_label] = se_sigma
654+
for j in range(1, len(values[i]['errors'])):
655+
plus = pta(values[i]['errors'][j]['asymerror']['plus'], values[i]['value'])
656+
minus = pta(values[i]['errors'][j]['asymerror']['minus'], values[i]['value'])
657+
se_delta, se_sigma = se(plus, minus)
658+
value_delta = value_delta + se_delta
659+
error_label = values[i]['errors'][j]['label']
660+
error_value[error_label] = se_sigma
652661
data_central_value = values[i]['value'] # + value_delta
653662
data_central_dSig_dyttBar.append(data_central_value)
654663
for j in range(ndata_dSig_dyttBar):
655-
error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dyttBar_sys[i][j])
664+
# error_value['ArtUnc_sys_' + str(j + 1)] = float(artUncMat_dSig_dyttBar_sys[i][j])
656665
error_value_lumiless['ArtUnc_' + str(j + 1)] = float(
657666
artUncMat_dSig_dyttBar_lumiless[i][j]
658667
)
@@ -672,25 +681,29 @@ def processData():
672681
error_definition_dSig_dyttBar = {}
673682
error_definition_dSig_dyttBar_wo_lumi = {}
674683
# error_definition_dSig_dyttBar['stat'] = {'description': 'total statistical uncertainty', 'treatment': 'ADD', 'type': 'UNCORR'}
675-
# for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
676-
# error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
677-
# error_definition_dSig_dyttBar[error_name] = {'description': '', 'treatment': 'MULT', 'type': 'CORR'}
678-
for i in range(ndata_dSig_dyttBar):
679-
error_definition_dSig_dyttBar['ArtUnc_sys_' + str(i + 1)] = {
680-
'definition': 'artificial uncertainty ' + str(i + 1),
681-
'treatment': 'ADD',
684+
for i in range(1, len(input['dependent_variables'][0]['values'][0]['errors'])):
685+
error_name = input['dependent_variables'][0]['values'][0]['errors'][i]['label']
686+
error_definition_dSig_dyttBar[error_name] = {
687+
'description': '',
688+
'treatment': 'MULT',
682689
'type': 'CORR',
683690
}
691+
for i in range(ndata_dSig_dyttBar):
692+
# error_definition_dSig_dyttBar['ArtUnc_sys_' + str(i + 1)] = {
693+
# 'definition': 'artificial uncertainty ' + str(i + 1),
694+
# 'treatment': 'ADD',
695+
# 'type': 'CORR',
696+
# }
684697
error_definition_dSig_dyttBar_wo_lumi['ArtUnc_' + str(i + 1)] = {
685698
'definition': 'artificial uncertainty ' + str(i + 1),
686699
'treatment': 'ADD',
687700
'type': 'CORR',
688701
}
689702
for i in range(n_artUnc_stat):
690-
error_definition_dSig_dyttBar['ArtUnc_stat_' + str(i + 1)] = {
703+
error_definition_dSig_dpTt['ArtUnc_stat_' + str(i + 1)] = {
691704
'definition': 'artificial uncertainty ' + str(i + 1),
692705
'treatment': 'ADD',
693-
'type': 'CORR',
706+
'type': 'ATLAS13TEVTTBAR190807305unc' + str(i + 1),
694707
}
695708

696709
data_central_dSig_dyttBar_yaml = {'data_central': data_central_dSig_dyttBar}

0 commit comments

Comments
 (0)