14 definition =
'def_snapshot karlwarb-MLTute2019-HDF5_R19-11-18-prod5reco.n_fluxswap' 17 var = [
'rec.sel.cvnloosepreselptp',
'rec.sel.cvnoldpresel']
21 df.append(tables[v][
'nueid'])
22 ret = pd.concat(df, axis=1)
23 ret.columns = [re.sub(
r'rec.sel.',
'', v)
for v
in var]
25 kNewCVNe =
Var(kNewCVNe)
30 df.append(tables[v][
'numuid'])
31 ret = pd.concat(df, axis=1)
32 ret.columns = [re.sub(
r'rec.sel.',
'', v)
for v
in var]
34 kNewCVNm =
Var(kNewCVNm)
39 df.append(tables[v][
'ncid'])
40 ret = pd.concat(df, axis=1)
41 ret.columns = [re.sub(
r'rec.sel.',
'', v)
for v
in var]
43 kNewCVNnc =
Var(kNewCVNnc)
46 cvn_vars[
'nueid'] = kNewCVNe
47 cvn_vars[
'numuid'] = kNewCVNm
48 cvn_vars[
'ncid'] = kNewCVNnc
51 kInelasticity =
Var(
lambda tables: tables[
'rec.mc.nu'][
'y'])
52 kTrueE =
Var(
lambda tables: tables[
'rec.mc.nu'][
'E'])
56 sel = (tables[
'rec.mc'][
'nnu'] == 1)
57 weight[sel] *= tables[
'rec.mc.nu'][
'woscdumb']
61 kPDG =
Var(
lambda tables: tables[
'rec.mc.nu'][
'pdg'])
62 kPDGAbs =
Var(
lambda tables:
abs(tables[
'rec.mc.nu'][
'pdg']))
63 kMode =
Var(
lambda tables: tables[
'rec.mc.nu'][
'mode'])
64 kIsCC =
Cut(
lambda tables: tables[
'rec.mc.nu'][
'iscc'] == 1)
65 kIsNC =
Cut(
lambda tables: tables[
'rec.mc.nu'][
'iscc'] == 0)
69 cut =
Cut(
lambda tables: tables[
'rec.mc'][
'nnu'] == 1)
71 cut = cut & (kPDGAbs == 12) & kIsCC
73 cut = cut & (kPDGAbs == 14) & kIsCC
79 cut =
Cut(
lambda tables: tables[
'rec.mc'][
'nnu'] == 1)
81 cut = cut & ((kPDGAbs != 12) | ~kIsCC)
83 cut = cut & ((kPDGAbs != 14) | ~kIsCC)
89 kNueFDSel = kNueProngContainment & kVeto
91 kNumuFDSel = kNumuBasicQuality & kNumuContainFD
93 kNusFDSel = kNusFDContain & kVeto
95 ids = [
'nueid',
'numuid',
'ncid']
98 sel_cuts[
'nueid'] = kNueFDSel
99 sel_cuts[
'numuid'] = kNumuFDSel
100 sel_cuts[
'ncid'] = kNusFDSel
105 truth_cuts[idx][
'sig'] =
SigCuts(idx)
106 truth_cuts[idx][
'bkg'] =
BkgCuts(idx)
110 cut =
Cut(
lambda tables: tables[
'rec.mc'][
'nnu'] == 1)
112 cut = cut & (kMode == mode)
117 mode_cuts[
'kQE'] =
ModeCuts(mode.kQE)
118 mode_cuts[
'kRes'] =
ModeCuts(mode.kRes)
119 mode_cuts[
'kDIS'] =
ModeCuts(mode.kDIS)
122 parser = argparse.ArgumentParser(
123 description=
'Save CVN distributions for various truth cuts')
125 '--limit', help=(
'Limit of files to run: '),
126 type=int, default=
None)
128 '--stride', help=(
'stride of files to run: '),
131 '--offset', help=(
'offset of files to run: '),
134 '--plot', help=(
'Run plotting part of the code '),
135 action=
'store_true', default=
False)
137 args = parser.parse_args()
139 filename =
'cvn_truth_dist.h5' 141 tables =
loader(definition, limit=args.limit, stride=args.stride, offset=args.offset)
145 for selid, sel_cut
in sel_cuts.items():
146 for ptype, pcut
in truth_cuts[selid].items():
147 for mtype, mcut
in mode_cuts.items():
148 cut = sel_cut & pcut & mcut
149 specid =
'cvn_%s_%s_%s' % (selid, ptype, mtype)
150 specs[specid] =
spectrum(tables, cut, cvn_vars[selid], weight=kWoscDumb)
151 trueEid =
'trueE_%s_%s_%s' % (selid, ptype, mtype)
152 specs[trueEid] =
spectrum(tables, cut, kTrueE, weight=kWoscDumb)
153 trueYid =
'trueY_%s_%s_%s' % (selid, ptype, mtype)
154 specs[trueYid] =
spectrum(tables, cut, kInelasticity, weight=kWoscDumb)
160 save_tree(filename, specs.values(), specs.keys())
164 from tute_plots
import *
166 specs =
load_tree(filename, specs.keys())
168 for selid, sel_cut
in sel_cuts.items():
169 for ptype, pcut
in truth_cuts[selid].items():
170 for mtype, mcut
in mode_cuts.items():
171 cid =
'%s_%s_%s' % (selid, ptype, mtype)
172 cvnid =
'cvn_%s_%s_%s' % (selid, ptype, mtype)
173 trueEid =
'trueE_%s_%s_%s' % (selid, ptype, mtype)
174 trueYid =
'trueY_%s_%s_%s' % (selid, ptype, mtype)
177 combined[cid] = specs[cvnid] & specs[trueEid] & specs[trueYid]
180 MakeCVNDistPlot(combined[
'nueid_sig_kAll'], combined[
'nueid_bkg_kAll'], title=
'nueid', folder=
'plots')
182 MakeDeltaCVNPlots(combined[
'nueid_sig_kAll'], title=
'nueid', slc={
'E':[0, 1, 2, 3, 4, 5]},folder=
'plots')
183 MakeDeltaCVNPlots(combined[
'nueid_sig_kAll'], title=
'nueid', slc={
'y':[0., 0.2, 0.4, 0.6, 0.8]},folder=
'plots')
def MakeCVNDistPlot(sig, bkg, title='test', folder='.')
def kWoscDumb(tables, weight)
def save_tree(fname, spectra, groups, attrs=True)
def MakeDeltaCVNPlots(sig, title='test', color='blue', slc={}, folder='.')
def load_tree(fname, groups, attrs=True)