HDF5Record.cxx
Go to the documentation of this file.
1 // This file was auto-generated by gen_hdf5record.py.
2 // DO NOT EDIT IT DIRECTLY.
3 // For documentation of the fields see the regular StandardRecord.h
4 
5 #include "HDF5Maker/HDF5Record.h"
6 
7 #include <tuple>
8 
9 namespace hdf5
10 {
11 template<class... Tidx> template<class... Cols> HDF5Record<Tidx...>::HDF5Record(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
12  : hdr(std::make_unique<HDF5Header<Tidx...>>(f, Join(name, "hdr"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
13  spill(std::make_unique<HDF5Spill<Tidx...>>(f, Join(name, "spill"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
14  slc(std::make_unique<HDF5Slice<Tidx...>>(f, Join(name, "slc"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
15  trk(std::make_unique<HDF5TrackBranch<Tidx...>>(f, Join(name, "trk"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
16  vtx(std::make_unique<HDF5VertexBranch<Tidx...>>(f, Join(name, "vtx"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
17  me(std::make_unique<HDF5MichelE<Tidx...>>(f, Join(name, "me"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
18  energy(std::make_unique<HDF5EnergyBranch<Tidx...>>(f, Join(name, "energy"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
19  sel(std::make_unique<HDF5IDBranch<Tidx...>>(f, Join(name, "sel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
20  mc(std::make_unique<HDF5TruthBranch<Tidx...>>(f, Join(name, "mc"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
21  parent(std::make_unique<HDF5ParentBranch<Tidx...>>(f, Join(name, "parent"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
22  training(std::make_unique<HDF5TrainingBranch<Tidx...>>(f, Join(name, "training"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
23 {
24 }
25 
26 template<class... Tidx> void HDF5Record<Tidx...>::Fill(Tidx... idxs, const caf::StandardRecord& sr)
27 {
28  hdr->Fill(idxs..., sr.hdr);
29  spill->Fill(idxs..., sr.spill);
30  slc->Fill(idxs..., sr.slc);
31  trk->Fill(idxs..., sr.trk);
32  vtx->Fill(idxs..., sr.vtx);
33  me->Fill(idxs..., sr.me);
34  energy->Fill(idxs..., sr.energy);
35  sel->Fill(idxs..., sr.sel);
36  mc->Fill(idxs..., sr.mc);
37  parent->Fill(idxs..., sr.parent);
38  training->Fill(idxs..., sr.training);
39 }
40 
41 template<class... Tidx> template<class... Cols> HDF5TrainingBranch<Tidx...>::HDF5TrainingBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
42  : cvnfeatures(std::make_unique<HDF5CVNFeatures<Tidx...>>(f, Join(name, "cvnfeatures"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
43  cvnmaps(std::make_unique<HDF5PixelObjMap<Tidx..., unsigned int>>(f, Join(name, "cvnmaps"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "cvnmaps")+"_idx")),
44  slicemaps(std::make_unique<HDF5SliceMap<Tidx..., unsigned int>>(f, Join(name, "slicemaps"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "slicemaps")+"_idx")),
45  trainingdata(std::make_unique<HDF5TrainingData<Tidx..., unsigned int>>(f, Join(name, "trainingdata"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "trainingdata")+"_idx")),
46  vals(f, name, make_cols<Tidx..., unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "cvnmapsfilled"))
47 {
48 }
49 
50 template<class... Tidx> void HDF5TrainingBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRTrainingBranch& sr)
51 {
52  cvnfeatures->Fill(idxs..., sr.cvnfeatures);
53  for(unsigned int i = 0; i < sr.cvnmaps.size(); ++i) cvnmaps->Fill(idxs..., i, sr.cvnmaps[i]);
54  for(unsigned int i = 0; i < sr.slicemaps.size(); ++i) slicemaps->Fill(idxs..., i, sr.slicemaps[i]);
55  for(unsigned int i = 0; i < sr.trainingdata.size(); ++i) trainingdata->Fill(idxs..., i, sr.trainingdata[i]);
56  vals.insert(idxs..., sr.cvnmapsfilled);
57 }
58 
59 template<class... Tidx> template<class... Cols> HDF5TrainingData<Tidx...>::HDF5TrainingData(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
60  : vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, double, double, double>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "parent", "interaction", "finalstate", "finalstateprong", "particles", "nuenergy", "lepenergy", "vtxx", "vtxy", "vtxz"))
61 {
62 }
63 
64 template<class... Tidx> void HDF5TrainingData<Tidx...>::Fill(Tidx... idxs, const caf::SRTrainingData& sr)
65 {
66  vals.insert(idxs..., sr.parent, sr.interaction, sr.finalstate, sr.finalstateprong, sr.particles, sr.nuenergy, sr.lepenergy, sr.vtxx, sr.vtxy, sr.vtxz);
67 }
68 
69 template<class... Tidx> template<class... Cols> HDF5SliceMap<Tidx...>::HDF5SliceMap(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
70  : vals(f, name, make_cols<Tidx..., unsigned char[344064]>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "slicemap"))
71 {
72 }
73 
74 template<class... Tidx> void HDF5SliceMap<Tidx...>::Fill(Tidx... idxs, const caf::SRSliceMap& sr)
75 {
76  vals.insert(idxs..., sr.slicemap);
77 }
78 
79 template<class... Tidx> template<class... Cols> HDF5PixelObjMap<Tidx...>::HDF5PixelObjMap(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
80  : vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, unsigned char[16000], unsigned char[16000], unsigned char[16000]>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nplanes", "ncells", "nchan", "firstplane", "lastplane", "firstcellx", "lastcellx", "firstcelly", "lastcelly", "hitfracx", "hitfracy", "cvnmap", "cvnlabmap", "cvnobjmap"))
81 {
82 }
83 
84 template<class... Tidx> void HDF5PixelObjMap<Tidx...>::Fill(Tidx... idxs, const caf::SRPixelObjMap& sr)
85 {
86  vals.insert(idxs..., sr.nplanes, sr.ncells, sr.nchan, sr.firstplane, sr.lastplane, sr.firstcellx, sr.lastcellx, sr.firstcelly, sr.lastcelly, sr.hitfracx, sr.hitfracy, sr.cvnmap, sr.cvnlabmap, sr.cvnobjmap);
87 }
88 
89 template<class... Tidx> template<class... Cols> HDF5CVNFeatures<Tidx...>::HDF5CVNFeatures(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
90  : output(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "output"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "output")+"_idx")),
91  components(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "components"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "components")+"_idx")),
92  vals(f, name, make_cols<Tidx..., unsigned int, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "noutput", "ncomponents"))
93 {
94 }
95 
96 template<class... Tidx> void HDF5CVNFeatures<Tidx...>::Fill(Tidx... idxs, const caf::SRCVNFeatures& sr)
97 {
98  for(unsigned int i = 0; i < sr.output.size(); ++i) output->Fill(idxs..., i, sr.output[i]);
99  for(unsigned int i = 0; i < sr.components.size(); ++i) components->Fill(idxs..., i, sr.components[i]);
100  vals.insert(idxs..., sr.noutput, sr.ncomponents);
101 }
102 
103 template<class... Tidx> template<class... Cols> HDF5ParentBranch<Tidx...>::HDF5ParentBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
104  : mrccpar(std::make_unique<HDF5MRCCParent<Tidx...>>(f, Join(name, "mrccpar"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
105 {
106 }
107 
108 template<class... Tidx> void HDF5ParentBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRParentBranch& sr)
109 {
110  mrccpar->Fill(idxs..., sr.mrccpar);
111 }
112 
113 template<class... Tidx> template<class... Cols> HDF5MRCCParent<Tidx...>::HDF5MRCCParent(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
114  : vals(f, name, make_cols<Tidx..., int, float, float, int, int, int, int, int, float, float, float, float, float, float, float, float, float, int, int, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "slcidx", "eff", "pur", "nhit", "contplanes", "ncellsfromedge", "firstplane", "lastplane", "remid", "cvnm", "muonstart.x", "muonstart.y", "muonstart.z", "muonstop.x", "muonstop.y", "muonstop.z", "muonyattrans", "muonfwdcell", "muonbkcell", "numuE", "muE", "hadEinmucat"))
115 {
116 }
117 
118 template<class... Tidx> void HDF5MRCCParent<Tidx...>::Fill(Tidx... idxs, const caf::SRMRCCParent& sr)
119 {
120  vals.insert(idxs..., sr.slcidx, sr.eff, sr.pur, sr.nhit, sr.contplanes, sr.ncellsfromedge, sr.firstplane, sr.lastplane, sr.remid, sr.cvnm, sr.muonstart.x, sr.muonstart.y, sr.muonstart.z, sr.muonstop.x, sr.muonstop.y, sr.muonstop.z, sr.muonyattrans, sr.muonfwdcell, sr.muonbkcell, sr.numuE, sr.muE, sr.hadEinmucat);
121 }
122 
123 template<class... Tidx> template<class... Cols> HDF5Sandbox<Tidx...>::HDF5Sandbox(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
124  : nue(std::make_unique<HDF5NueSandbox<Tidx...>>(f, Join(name, "nue"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
125  numu(std::make_unique<HDF5NumuSandbox<Tidx...>>(f, Join(name, "numu"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
126  nus(std::make_unique<HDF5NusSandbox<Tidx...>>(f, Join(name, "nus"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
127  nd(std::make_unique<HDF5NDSandbox<Tidx...>>(f, Join(name, "nd"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
128 {
129 }
130 
131 template<class... Tidx> void HDF5Sandbox<Tidx...>::Fill(Tidx... idxs, const caf::SRSandbox& sr)
132 {
133  nue->Fill(idxs..., sr.nue);
134  numu->Fill(idxs..., sr.numu);
135  nus->Fill(idxs..., sr.nus);
136  nd->Fill(idxs..., sr.nd);
137 }
138 
139 template<class... Tidx> template<class... Cols> HDF5NDSandbox<Tidx...>::HDF5NDSandbox(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
140  : vals(f, name, make_cols<Tidx..., float, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "cvnFSNDccPi", "cvnFSNDccPiNoutput"))
141 {
142 }
143 
144 template<class... Tidx> void HDF5NDSandbox<Tidx...>::Fill(Tidx... idxs, const caf::SRNDSandbox& sr)
145 {
146  vals.insert(idxs..., sr.cvnFSNDccPi, sr.cvnFSNDccPiNoutput);
147 }
148 
149 template<class... Tidx> template<class... Cols> HDF5NumuSandbox<Tidx...>::HDF5NumuSandbox(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
150  : vals(f, name, make_cols<Tidx..., int, int, int, int, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pimudecay", "nprotons", "nmutrks", "nhadHits", "nhadCellsFromEdge", "offTrkFra", "actVtx", "avedEdxtrk1", "avedEdxtrk2", "avedEdxtrk1Last4Cells", "avedEdxtrk2Last4Cells", "avedEdxtrk1Last6Cells", "avedEdxtrk2Last6Cells", "avedEdxtrk1Last8Cells", "avedEdxtrk2Last8Cells", "scattAngtrk1", "scattAngtrk2", "vtxE20", "vtxE40", "vtxE60"))
151 {
152 }
153 
154 template<class... Tidx> void HDF5NumuSandbox<Tidx...>::Fill(Tidx... idxs, const caf::SRNumuSandbox& sr)
155 {
157 }
158 
159 template<class... Tidx> template<class... Cols> HDF5NueSandbox<Tidx...>::HDF5NueSandbox(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
160  : jm(std::make_unique<HDF5JMShower<Tidx..., unsigned int>>(f, Join(name, "jm"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "jm")+"_idx")),
161  jmid(std::make_unique<HDF5JMEid<Tidx...>>(f, Join(name, "jmid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
162  vals(f, name, make_cols<Tidx..., unsigned short, float, float, float, int, int, int, float, float, float, float, float, float, float, float, float, float, float, int, unsigned int, unsigned int, int, int, float, float, int, float, float, float, float, float, float, float, unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, int, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, int, int, float, float, float, float, float, size_t, float, float, float, float, float, float, float, float, float, float, float, float, int, int, int, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "infid", "slicemeanx", "slicemeany", "slicemeanz", "npi0", "npip", "npim", "pi0E", "pipE", "pimE", "phot0E", "phot1E", "opencos", "conv0", "conv1", "mincellcosmic", "mincellwallcosmic", "anglecosmic", "nplanesfilled", "nxplanes", "nyplanes", "ncellrow", "ncellsum", "mincellavg", "mincellkalman", "nmiphits", "mipmin.x", "mipmin.y", "mipmin.z", "ecfNu", "mipmax.x", "mipmax.y", "mipmax.z", "evtncell", "evtsumcostheta", "evtsump", "evtsumpt", "evtsump0", "evtsumpt0", "evtetot", "evtminx", "evtminy", "evtminz", "evtmaxx", "evtmaxy", "evtmaxz", "evtgaptns", "evtncelltoedge", "sh1energy", "sh1exclenergy", "sh1totalL", "sh1start.x", "sh1start.y", "sh1start.z", "sh1stop.x", "sh1stop.y", "sh1stop.z", "sh1dir.x", "sh1dir.y", "sh1dir.z", "sh1vtxdoca", "sh1gap", "sh1nplane", "sh1xnplane", "sh1ynplane", "sh1ncell", "sh1xncell", "sh1yncell", "sh1pid", "sh1ncelltoedge", "sh1sh2dang", "sh2energy", "sh2exclenergy", "sh2totalL", "sh2start.x", "sh2start.y", "sh2start.z", "sh2stop.x", "sh2stop.y", "sh2stop.z", "sh2dir.x", "sh2dir.y", "sh2dir.z", "sh2vtxdoca", "sh2gap", "sh2nplane", "sh2xnplane", "sh2ynplane", "sh2ncell", "sh2xncell", "sh2yncell", "sh2pid", "sh2ncelltoedge", "elll", "sh1d2edge", "eedge2cell", "eedge5cell", "eedge10cell", "njm", "vtx.x", "vtx.y", "vtx.z", "time", "E", "depE", "shwE", "fracangchanges", "fracangchangesloose", "fracmodalhits", "fracnoncontig", "fracnoncontigloose", "maxgap", "maxhitsx", "maxhitsy", "dedxpng1", "dedxpng2"))
163 {
164 }
165 
166 template<class... Tidx> void HDF5NueSandbox<Tidx...>::Fill(Tidx... idxs, const caf::SRNueSandbox& sr)
167 {
168  for(unsigned int i = 0; i < sr.jm.size(); ++i) jm->Fill(idxs..., i, sr.jm[i]);
169  jmid->Fill(idxs..., sr.jmid);
170  vals.insert(idxs..., sr.infid, sr.slicemeanx, sr.slicemeany, sr.slicemeanz, sr.npi0, sr.npip, sr.npim, sr.pi0E, sr.pipE, sr.pimE, sr.phot0E, sr.phot1E, sr.opencos, sr.conv0, sr.conv1, sr.mincellcosmic, sr.mincellwallcosmic, sr.anglecosmic, sr.nplanesfilled, sr.nxplanes, sr.nyplanes, sr.ncellrow, sr.ncellsum, sr.mincellavg, sr.mincellkalman, sr.nmiphits, sr.mipmin.x, sr.mipmin.y, sr.mipmin.z, sr.ecfNu, sr.mipmax.x, sr.mipmax.y, sr.mipmax.z, sr.evtncell, sr.evtsumcostheta, sr.evtsump, sr.evtsumpt, sr.evtsump0, sr.evtsumpt0, sr.evtetot, sr.evtminx, sr.evtminy, sr.evtminz, sr.evtmaxx, sr.evtmaxy, sr.evtmaxz, sr.evtgaptns, sr.evtncelltoedge, sr.sh1energy, sr.sh1exclenergy, sr.sh1totalL, sr.sh1start.x, sr.sh1start.y, sr.sh1start.z, sr.sh1stop.x, sr.sh1stop.y, sr.sh1stop.z, sr.sh1dir.x, sr.sh1dir.y, sr.sh1dir.z, sr.sh1vtxdoca, sr.sh1gap, sr.sh1nplane, sr.sh1xnplane, sr.sh1ynplane, sr.sh1ncell, sr.sh1xncell, sr.sh1yncell, sr.sh1pid, sr.sh1ncelltoedge, sr.sh1sh2dang, sr.sh2energy, sr.sh2exclenergy, sr.sh2totalL, sr.sh2start.x, sr.sh2start.y, sr.sh2start.z, sr.sh2stop.x, sr.sh2stop.y, sr.sh2stop.z, sr.sh2dir.x, sr.sh2dir.y, sr.sh2dir.z, sr.sh2vtxdoca, sr.sh2gap, sr.sh2nplane, sr.sh2xnplane, sr.sh2ynplane, sr.sh2ncell, sr.sh2xncell, sr.sh2yncell, sr.sh2pid, sr.sh2ncelltoedge, sr.elll, sr.sh1d2edge, sr.eedge2cell, sr.eedge5cell, sr.eedge10cell, sr.njm, sr.vtx.x, sr.vtx.y, sr.vtx.z, sr.time, sr.E, sr.depE, sr.shwE, sr.fracangchanges, sr.fracangchangesloose, sr.fracmodalhits, sr.fracnoncontig, sr.fracnoncontigloose, sr.maxgap, sr.maxhitsx, sr.maxhitsy, sr.dedxpng1, sr.dedxpng2);
171 }
172 
173 template<class... Tidx> template<class... Cols> HDF5JMShower<Tidx...>::HDF5JMShower(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
174  : vals(f, name, make_cols<Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, unsigned short, float, short unsigned int, short unsigned int, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "len", "view", "width", "nplanex", "nplaney", "gap", "stop.x", "stop.y", "stop.z", "shwE", "vtxE"))
175 {
176 }
177 
178 template<class... Tidx> void HDF5JMShower<Tidx...>::Fill(Tidx... idxs, const caf::SRJMShower& sr)
179 {
180  vals.insert(idxs..., sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.len, sr.view, sr.width, sr.nplanex, sr.nplaney, sr.gap, sr.stop.x, sr.stop.y, sr.stop.z, sr.shwE, sr.vtxE);
181 }
182 
183 template<class... Tidx> template<class... Cols> HDF5JMEid<Tidx...>::HDF5JMEid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
184  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ann", "annE", "annEL", "annEPi0", "annEPi0EL", "annNoCos", "annENoCos", "ismuon", "dedx0", "dedx1", "dedx2", "dedx3", "dedx4", "dedx5", "eglll", "egllt", "emulll", "emullt", "epi0lll", "epi0llt", "eplll", "epllt", "enlll", "enllt", "epilll", "epillt", "vtxgev", "pi0mass", "shwEFrac", "gap", "costheta", "elll", "ellt", "eellll", "eelllt", "mulll", "mullt"))
185 {
186 }
187 
188 template<class... Tidx> void HDF5JMEid<Tidx...>::Fill(Tidx... idxs, const caf::SRJMEid& sr)
189 {
190  vals.insert(idxs..., sr.ann, sr.annE, sr.annEL, sr.annEPi0, sr.annEPi0EL, sr.annNoCos, sr.annENoCos, sr.ismuon, sr.dedx0, sr.dedx1, sr.dedx2, sr.dedx3, sr.dedx4, sr.dedx5, sr.eglll, sr.egllt, sr.emulll, sr.emullt, sr.epi0lll, sr.epi0llt, sr.eplll, sr.epllt, sr.enlll, sr.enllt, sr.epilll, sr.epillt, sr.vtxgev, sr.pi0mass, sr.shwEFrac, sr.gap, sr.costheta, sr.elll, sr.ellt, sr.eellll, sr.eelllt, sr.mulll, sr.mullt);
191 }
192 
193 template<class... Tidx> template<class... Cols> HDF5NusSandbox<Tidx...>::HDF5NusSandbox(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
194  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "sumtx", "sumty", "ewsumtx", "ewsumty", "cossumtx", "cossumty", "cosewsumtx", "cosewsumty", "angsumtx", "angsumty", "angewsumtx", "angewsumty"))
195 {
196 }
197 
198 template<class... Tidx> void HDF5NusSandbox<Tidx...>::Fill(Tidx... idxs, const caf::SRNusSandbox& sr)
199 {
200  vals.insert(idxs..., sr.sumtx, sr.sumty, sr.ewsumtx, sr.ewsumty, sr.cossumtx, sr.cossumty, sr.cosewsumtx, sr.cosewsumty, sr.angsumtx, sr.angsumty, sr.angewsumtx, sr.angewsumty);
201 }
202 
203 template<class... Tidx> template<class... Cols> HDF5TruthBranch<Tidx...>::HDF5TruthBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
204  : nu(std::make_unique<HDF5Neutrino<Tidx..., unsigned int>>(f, Join(name, "nu"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "nu")+"_idx")),
205  cosmic(std::make_unique<HDF5Cosmic<Tidx..., unsigned int>>(f, Join(name, "cosmic"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "cosmic")+"_idx")),
206  allnus(std::make_unique<HDF5Neutrino<Tidx..., unsigned int>>(f, Join(name, "allnus"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "allnus")+"_idx")),
207  allcosmics(std::make_unique<HDF5Cosmic<Tidx..., unsigned int>>(f, Join(name, "allcosmics"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "allcosmics")+"_idx")),
208  global(std::make_unique<HDF5GlobalTruth<Tidx...>>(f, Join(name, "global"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
209  vals(f, name, make_cols<Tidx..., short int, short int, short int, short int, short int, short int, short int, short int, short int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "faveidxeff", "faveidxenergy", "faveidxpur", "faveidxeffpur", "faveidxeffthenpur", "nnu", "ncosmic", "nallnus", "nallcosmics"))
210 {
211 }
212 
213 template<class... Tidx> void HDF5TruthBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRTruthBranch& sr)
214 {
215  for(unsigned int i = 0; i < sr.nu.size(); ++i) nu->Fill(idxs..., i, sr.nu[i]);
216  for(unsigned int i = 0; i < sr.cosmic.size(); ++i) cosmic->Fill(idxs..., i, sr.cosmic[i]);
217  for(unsigned int i = 0; i < sr.allnus.size(); ++i) allnus->Fill(idxs..., i, sr.allnus[i]);
218  for(unsigned int i = 0; i < sr.allcosmics.size(); ++i) allcosmics->Fill(idxs..., i, sr.allcosmics[i]);
219  global->Fill(idxs..., sr.global);
220  vals.insert(idxs..., sr.faveidxeff, sr.faveidxenergy, sr.faveidxpur, sr.faveidxeffpur, sr.faveidxeffthenpur, sr.nnu, sr.ncosmic, sr.nallnus, sr.nallcosmics);
221 }
222 
223 template<class... Tidx> template<class... Cols> HDF5GlobalTruth<Tidx...>::HDF5GlobalTruth(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
224  : vals(f, name, make_cols<Tidx..., unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nnu"))
225 {
226 }
227 
228 template<class... Tidx> void HDF5GlobalTruth<Tidx...>::Fill(Tidx... idxs, const caf::SRGlobalTruth& sr)
229 {
230  vals.insert(idxs..., sr.nnu);
231 }
232 
233 template<class... Tidx> template<class... Cols> HDF5Neutrino<Tidx...>::HDF5Neutrino(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
234  : michel(std::make_unique<HDF5TrueMichelE<Tidx..., unsigned int>>(f, Join(name, "michel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "michel")+"_idx")),
235  prim(std::make_unique<HDF5TrueParticle<Tidx..., unsigned int>>(f, Join(name, "prim"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "prim")+"_idx")),
236  prefsi(std::make_unique<HDF5NuGenParticle<Tidx..., unsigned int>>(f, Join(name, "prefsi"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "prefsi")+"_idx")),
237  genVersion(std::make_unique<Wrapped<unsigned int, Tidx..., unsigned int>>(f, Join(name, "genVersion"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "genVersion")+"_idx")),
238  rwgt(std::make_unique<HDF5MCReweight<Tidx...>>(f, Join(name, "rwgt"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
239  beam(std::make_unique<HDF5Beam<Tidx...>>(f, Join(name, "beam"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
240  vals(f, name, make_cols<Tidx..., short int, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, unsigned int, unsigned int, float, float, float, float, float, float, float, float, short int, int, float, float, float, float, float, int, unsigned short, int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned short, unsigned short, int, float, int, int, float, float, float, float, float, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "E", "visE", "visEinslc", "visENeutron", "visEinslcNeutron", "visEBirks", "visEinslcBirks", "visENeutronBirks", "visEinslcNeutronBirks", "L", "isvtxcont", "eff", "pur", "nhitslc", "nhittot", "time", "p.E", "p.px", "p.py", "p.pz", "vtx.x", "vtx.y", "vtx.z", "pdgorig", "hitnuc", "hitnucp.E", "hitnucp.px", "hitnucp.py", "hitnucp.pz", "woscdumb", "mode", "iscc", "inttype", "npiplus", "npiminus", "npizero", "nproton", "nneutron", "ischarm", "isseaquark", "resnum", "xsec", "tgtZ", "tgtA", "q2", "x", "y", "W2", "genweight", "generator", "isFHC", "is0HC", "isRHC", "det"))
241 {
242 }
243 
244 template<class... Tidx> void HDF5Neutrino<Tidx...>::Fill(Tidx... idxs, const caf::SRNeutrino& sr)
245 {
246  for(unsigned int i = 0; i < sr.michel.size(); ++i) michel->Fill(idxs..., i, sr.michel[i]);
247  for(unsigned int i = 0; i < sr.prim.size(); ++i) prim->Fill(idxs..., i, sr.prim[i]);
248  for(unsigned int i = 0; i < sr.prefsi.size(); ++i) prefsi->Fill(idxs..., i, sr.prefsi[i]);
249  for(unsigned int i = 0; i < sr.genVersion.size(); ++i) genVersion->Fill(idxs..., i, sr.genVersion[i]);
250  rwgt->Fill(idxs..., sr.rwgt);
251  beam->Fill(idxs..., sr.beam);
252  vals.insert(idxs..., sr.pdg, sr.E, sr.visE, sr.visEinslc, sr.visENeutron, sr.visEinslcNeutron, sr.visEBirks, sr.visEinslcBirks, sr.visENeutronBirks, sr.visEinslcNeutronBirks, sr.L, sr.isvtxcont, sr.eff, sr.pur, sr.nhitslc, sr.nhittot, sr.time, sr.p.E, sr.p.px, sr.p.py, sr.p.pz, sr.vtx.x, sr.vtx.y, sr.vtx.z, sr.pdgorig, sr.hitnuc, sr.hitnucp.E, sr.hitnucp.px, sr.hitnucp.py, sr.hitnucp.pz, sr.woscdumb, sr.mode, sr.iscc, sr.inttype, sr.npiplus, sr.npiminus, sr.npizero, sr.nproton, sr.nneutron, sr.ischarm, sr.isseaquark, sr.resnum, sr.xsec, sr.tgtZ, sr.tgtA, sr.q2, sr.x, sr.y, sr.W2, sr.genweight, sr.generator, sr.isFHC, sr.is0HC, sr.isRHC, sr.det);
253 }
254 
255 template<class... Tidx> template<class... Cols> HDF5MCReweight<Tidx...>::HDF5MCReweight(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
256  : genie(std::make_unique<HDF5GenieWeights<Tidx..., unsigned int>>(f, Join(name, "genie"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "genie")+"_idx")),
257  ppfx(std::make_unique<HDF5FluxWeights<Tidx...>>(f, Join(name, "ppfx"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
258  geant4(std::make_unique<HDF5Geant4Weights<Tidx...>>(f, Join(name, "geant4"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
259 {
260 }
261 
262 template<class... Tidx> void HDF5MCReweight<Tidx...>::Fill(Tidx... idxs, const caf::SRMCReweight& sr)
263 {
264  for(unsigned int i = 0; i < sr.genie.size(); ++i) genie->Fill(idxs..., i, sr.genie[i]);
265  ppfx->Fill(idxs..., sr.ppfx);
266  geant4->Fill(idxs..., sr.geant4);
267 }
268 
269 template<class... Tidx> template<class... Cols> HDF5Geant4Weights<Tidx...>::HDF5Geant4Weights(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
270  : piplus_univ(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "piplus_univ"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "piplus_univ")+"_idx")),
271  piminus_univ(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "piminus_univ"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "piminus_univ")+"_idx")),
272  proton_univ(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "proton_univ"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "proton_univ")+"_idx")),
273  vals(f, name, make_cols<Tidx..., float, float, float, unsigned int, unsigned int, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "piplus_cv", "piminus_cv", "proton_cv", "npiplus_univ", "npiminus_univ", "nproton_univ"))
274 {
275 }
276 
277 template<class... Tidx> void HDF5Geant4Weights<Tidx...>::Fill(Tidx... idxs, const caf::SRGeant4Weights& sr)
278 {
279  for(unsigned int i = 0; i < sr.piplus_univ.size(); ++i) piplus_univ->Fill(idxs..., i, sr.piplus_univ[i]);
280  for(unsigned int i = 0; i < sr.piminus_univ.size(); ++i) piminus_univ->Fill(idxs..., i, sr.piminus_univ[i]);
281  for(unsigned int i = 0; i < sr.proton_univ.size(); ++i) proton_univ->Fill(idxs..., i, sr.proton_univ[i]);
282  vals.insert(idxs..., sr.piplus_cv, sr.piminus_cv, sr.proton_cv, sr.npiplus_univ, sr.npiminus_univ, sr.nproton_univ);
283 }
284 
285 template<class... Tidx> template<class... Cols> HDF5FluxWeights<Tidx...>::HDF5FluxWeights(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
286  : vuniv(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "vuniv"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "vuniv")+"_idx")),
287  vals(f, name, make_cols<Tidx..., float, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "cv", "nvuniv"))
288 {
289 }
290 
291 template<class... Tidx> void HDF5FluxWeights<Tidx...>::Fill(Tidx... idxs, const caf::SRFluxWeights& sr)
292 {
293  for(unsigned int i = 0; i < sr.vuniv.size(); ++i) vuniv->Fill(idxs..., i, sr.vuniv[i]);
294  vals.insert(idxs..., sr.cv, sr.nvuniv);
295 }
296 
297 template<class... Tidx> template<class... Cols> HDF5GenieWeights<Tidx...>::HDF5GenieWeights(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
298  : vals(f, name, make_cols<Tidx..., float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "minus2sigma", "minus1sigma", "plus1sigma", "plus2sigma"))
299 {
300 }
301 
302 template<class... Tidx> void HDF5GenieWeights<Tidx...>::Fill(Tidx... idxs, const caf::SRGenieWeights& sr)
303 {
304  vals.insert(idxs..., sr.minus2sigma, sr.minus1sigma, sr.plus1sigma, sr.plus2sigma);
305 }
306 
307 template<class... Tidx> template<class... Cols> HDF5NuGenParticle<Tidx...>::HDF5NuGenParticle(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
308  : primList(std::make_unique<Wrapped<unsigned int, Tidx..., unsigned int>>(f, Join(name, "primList"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "primList")+"_idx")),
309  vals(f, name, make_cols<Tidx..., short int, int, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "status", "p.E", "p.px", "p.py", "p.pz"))
310 {
311 }
312 
313 template<class... Tidx> void HDF5NuGenParticle<Tidx...>::Fill(Tidx... idxs, const caf::SRNuGenParticle& sr)
314 {
315  for(unsigned int i = 0; i < sr.primList.size(); ++i) primList->Fill(idxs..., i, sr.primList[i]);
316  vals.insert(idxs..., sr.pdg, sr.status, sr.p.E, sr.p.px, sr.p.py, sr.p.pz);
317 }
318 
319 template<class... Tidx> template<class... Cols> HDF5TrueParticle<Tidx...>::HDF5TrueParticle(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
320  : daughterlist(std::make_unique<Wrapped<int, Tidx..., unsigned int>>(f, Join(name, "daughterlist"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "daughterlist")+"_idx")),
321  daughterEnergies(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "daughterEnergies"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "daughterEnergies")+"_idx")),
322  vals(f, name, make_cols<Tidx..., int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, int, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "visE", "visEinslc", "daughterVisE", "daughterVisEinslc", "visEBirks", "visEinslcBirks", "daughterVisEBirks", "daughterVisEinslcBirks", "enteringE", "totEscE", "time", "p.E", "p.px", "p.py", "p.pz", "trkID", "prefsiID", "elasticProtonSumVisE", "inelasticProtonSumVisE", "inelasticPhotonSumVisE", "elasticProtonSumVisEinslc", "inelasticProtonSumVisEinslc", "inelasticPhotonSumVisEinslc", "elasticProtonMaxVisE", "inelasticProtonMaxVisE", "inelasticPhotonMaxVisE", "elasticProtonMaxVisEinslc", "inelasticProtonMaxVisEinslc", "inelasticPhotonMaxVisEinslc", "maxInelasticProtonTrueE", "maxInelasticPhotonTrueE", "maxElasticProtonTrueE"))
323 {
324 }
325 
326 template<class... Tidx> void HDF5TrueParticle<Tidx...>::Fill(Tidx... idxs, const caf::SRTrueParticle& sr)
327 {
328  for(unsigned int i = 0; i < sr.daughterlist.size(); ++i) daughterlist->Fill(idxs..., i, sr.daughterlist[i]);
329  for(unsigned int i = 0; i < sr.daughterEnergies.size(); ++i) daughterEnergies->Fill(idxs..., i, sr.daughterEnergies[i]);
331 }
332 
333 template<class... Tidx> template<class... Cols> HDF5Beam<Tidx...>::HDF5Beam(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
334  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, int, int, float, int, float, float, float, float, float, float, float, float, float, float, int, int, float, float, float, float, float, float, float, float, int, int, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "tv.x", "tv.y", "tv.z", "tp.x", "tp.y", "tp.z", "runjob", "potnum", "tptype", "nimpwt", "ndecay", "v.x", "v.y", "v.z", "pdp.x", "pdp.y", "pdp.z", "ppdxdz", "ppdydz", "pppz", "ppenergy", "ppmedium", "ptype", "ppv.x", "ppv.y", "ppv.z", "muparp.x", "muparp.y", "muparp.z", "mupare", "necm", "tgen", "tgptype", "dk2gen", "gen2vtx", "dk2vtx"))
335 {
336 }
337 
338 template<class... Tidx> void HDF5Beam<Tidx...>::Fill(Tidx... idxs, const caf::SRBeam& sr)
339 {
340  vals.insert(idxs..., sr.tv.x, sr.tv.y, sr.tv.z, sr.tp.x, sr.tp.y, sr.tp.z, sr.runjob, sr.potnum, sr.tptype, sr.nimpwt, sr.ndecay, sr.v.x, sr.v.y, sr.v.z, sr.pdp.x, sr.pdp.y, sr.pdp.z, sr.ppdxdz, sr.ppdydz, sr.pppz, sr.ppenergy, sr.ppmedium, sr.ptype, sr.ppv.x, sr.ppv.y, sr.ppv.z, sr.muparp.x, sr.muparp.y, sr.muparp.z, sr.mupare, sr.necm, sr.tgen, sr.tgptype, sr.dk2gen, sr.gen2vtx, sr.dk2vtx);
341 }
342 
343 template<class... Tidx> template<class... Cols> HDF5Cosmic<Tidx...>::HDF5Cosmic(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
344  : michel(std::make_unique<HDF5TrueMichelE<Tidx..., unsigned int>>(f, Join(name, "michel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "michel")+"_idx")),
345  vals(f, name, make_cols<Tidx..., short int, float, float, float, float, float, unsigned int, unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "E", "visE", "visEinslc", "eff", "pur", "nhitslc", "nhittot", "time", "p.E", "p.px", "p.py", "p.pz", "penter.E", "penter.px", "penter.py", "penter.pz", "vtx.x", "vtx.y", "vtx.z", "azimuth", "zenith", "enter.x", "enter.y", "enter.z", "exit.x", "exit.y", "exit.z", "stop.x", "stop.y", "stop.z"))
346 {
347 }
348 
349 template<class... Tidx> void HDF5Cosmic<Tidx...>::Fill(Tidx... idxs, const caf::SRCosmic& sr)
350 {
351  for(unsigned int i = 0; i < sr.michel.size(); ++i) michel->Fill(idxs..., i, sr.michel[i]);
352  vals.insert(idxs..., sr.pdg, sr.E, sr.visE, sr.visEinslc, sr.eff, sr.pur, sr.nhitslc, sr.nhittot, sr.time, sr.p.E, sr.p.px, sr.p.py, sr.p.pz, sr.penter.E, sr.penter.px, sr.penter.py, sr.penter.pz, sr.vtx.x, sr.vtx.y, sr.vtx.z, sr.azimuth, sr.zenith, sr.enter.x, sr.enter.y, sr.enter.z, sr.exit.x, sr.exit.y, sr.exit.z, sr.stop.x, sr.stop.y, sr.stop.z);
353 }
354 
355 template<class... Tidx> template<class... Cols> HDF5Truth<Tidx...>::HDF5Truth(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
356  : michel(std::make_unique<HDF5TrueMichelE<Tidx..., unsigned int>>(f, Join(name, "michel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "michel")+"_idx")),
357  vals(f, name, make_cols<Tidx..., short int, float, float, float, float, float, unsigned int, unsigned int, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "E", "visE", "visEinslc", "eff", "pur", "nhitslc", "nhittot", "time", "p.E", "p.px", "p.py", "p.pz", "vtx.x", "vtx.y", "vtx.z"))
358 {
359 }
360 
361 template<class... Tidx> void HDF5Truth<Tidx...>::Fill(Tidx... idxs, const caf::SRTruth& sr)
362 {
363  for(unsigned int i = 0; i < sr.michel.size(); ++i) michel->Fill(idxs..., i, sr.michel[i]);
364  vals.insert(idxs..., sr.pdg, sr.E, sr.visE, sr.visEinslc, sr.eff, sr.pur, sr.nhitslc, sr.nhittot, sr.time, sr.p.E, sr.p.px, sr.p.py, sr.p.pz, sr.vtx.x, sr.vtx.y, sr.vtx.z);
365 }
366 
367 template<class... Tidx> template<class... Cols> HDF5TrueMichelE<Tidx...>::HDF5TrueMichelE(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
368  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "E", "visE", "time", "mustop.E", "mustop.px", "mustop.py", "mustop.pz", "p.E", "p.px", "p.py", "p.pz"))
369 {
370 }
371 
372 template<class... Tidx> void HDF5TrueMichelE<Tidx...>::Fill(Tidx... idxs, const caf::SRTrueMichelE& sr)
373 {
374  vals.insert(idxs..., sr.E, sr.visE, sr.time, sr.mustop.E, sr.mustop.px, sr.mustop.py, sr.mustop.pz, sr.p.E, sr.p.px, sr.p.py, sr.p.pz);
375 }
376 
377 template<class... Tidx> template<class... Cols> HDF5IDBranch<Tidx...>::HDF5IDBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
378  : remid(std::make_unique<HDF5Remid<Tidx...>>(f, Join(name, "remid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
379  muonid(std::make_unique<HDF5MuonID<Tidx...>>(f, Join(name, "muonid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
380  bpfid(std::make_unique<HDF5BpfId<Tidx...>>(f, Join(name, "bpfid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
381  lid(std::make_unique<HDF5ELid<Tidx...>>(f, Join(name, "lid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
382  lem(std::make_unique<HDF5Lem<Tidx...>>(f, Join(name, "lem"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
383  nuepre(std::make_unique<HDF5Presel<Tidx...>>(f, Join(name, "nuepre"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
384  rockpre(std::make_unique<HDF5Presel<Tidx...>>(f, Join(name, "rockpre"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
385  rvp(std::make_unique<HDF5Rvp<Tidx...>>(f, Join(name, "rvp"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
386  cosrej(std::make_unique<HDF5CosRej<Tidx...>>(f, Join(name, "cosrej"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
387  nuecosrej(std::make_unique<HDF5NueCosRej<Tidx...>>(f, Join(name, "nuecosrej"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
388  nccosrej(std::make_unique<HDF5NCCosRej<Tidx...>>(f, Join(name, "nccosrej"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
389  ncpi0bkgrej(std::make_unique<HDF5NCPi0BkgRej<Tidx...>>(f, Join(name, "ncpi0bkgrej"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
390  contain(std::make_unique<HDF5Contain<Tidx...>>(f, Join(name, "contain"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
391  veto(std::make_unique<HDF5Veto<Tidx...>>(f, Join(name, "veto"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
392  cvn(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
393  cvnloosepreselptp(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnloosepreselptp"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
394  cvnoldpresel(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnoldpresel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
395  cvnnocosmics(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnnocosmics"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
396  xnuepid(std::make_unique<HDF5Xnue<Tidx...>>(f, Join(name, "xnuepid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
397  slicelid(std::make_unique<HDF5SliceLID<Tidx...>>(f, Join(name, "slicelid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
398  nuone(std::make_unique<HDF5NuonEResult<Tidx...>>(f, Join(name, "nuone"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
399  cvnloosepreselptp_opphorn(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnloosepreselptp_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
400  cvnoldpresel_opphorn(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnoldpresel_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
401  cvnnocosmics_opphorn(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnnocosmics_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
402  slicelid_opphorn(std::make_unique<HDF5SliceLID<Tidx...>>(f, Join(name, "slicelid_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
403  nuone_opphorn(std::make_unique<HDF5NuonEResult<Tidx...>>(f, Join(name, "nuone_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
404  vals(f, name, make_cols<Tidx..., double>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "wsid"))
405 {
406 }
407 
408 template<class... Tidx> void HDF5IDBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRIDBranch& sr)
409 {
410  remid->Fill(idxs..., sr.remid);
411  muonid->Fill(idxs..., sr.muonid);
412  bpfid->Fill(idxs..., sr.bpfid);
413  lid->Fill(idxs..., sr.lid);
414  lem->Fill(idxs..., sr.lem);
415  nuepre->Fill(idxs..., sr.nuepre);
416  rockpre->Fill(idxs..., sr.rockpre);
417  rvp->Fill(idxs..., sr.rvp);
418  cosrej->Fill(idxs..., sr.cosrej);
419  nuecosrej->Fill(idxs..., sr.nuecosrej);
420  nccosrej->Fill(idxs..., sr.nccosrej);
421  ncpi0bkgrej->Fill(idxs..., sr.ncpi0bkgrej);
422  contain->Fill(idxs..., sr.contain);
423  veto->Fill(idxs..., sr.veto);
424  cvn->Fill(idxs..., sr.cvn);
425  cvnloosepreselptp->Fill(idxs..., sr.cvnloosepreselptp);
426  cvnoldpresel->Fill(idxs..., sr.cvnoldpresel);
427  cvnnocosmics->Fill(idxs..., sr.cvnnocosmics);
428  xnuepid->Fill(idxs..., sr.xnuepid);
429  slicelid->Fill(idxs..., sr.slicelid);
430  nuone->Fill(idxs..., sr.nuone);
432  cvnoldpresel_opphorn->Fill(idxs..., sr.cvnoldpresel_opphorn);
433  cvnnocosmics_opphorn->Fill(idxs..., sr.cvnnocosmics_opphorn);
434  slicelid_opphorn->Fill(idxs..., sr.slicelid_opphorn);
435  nuone_opphorn->Fill(idxs..., sr.nuone_opphorn);
436  vals.insert(idxs..., sr.wsid);
437 }
438 
439 template<class... Tidx> template<class... Cols> HDF5NuonEResult<Tidx...>::HDF5NuonEResult(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
440  : output(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "output"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "output")+"_idx")),
441  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "rawgevslice", "nuoneid", "pi0id", "nueccid", "otherid", "epi0nuoneid", "epi0pi0id", "noutput"))
442 {
443 }
444 
445 template<class... Tidx> void HDF5NuonEResult<Tidx...>::Fill(Tidx... idxs, const caf::SRNuonEResult& sr)
446 {
447  for(unsigned int i = 0; i < sr.output.size(); ++i) output->Fill(idxs..., i, sr.output[i]);
448  vals.insert(idxs..., sr.rawgevslice, sr.nuoneid, sr.pi0id, sr.nueccid, sr.otherid, sr.epi0nuoneid, sr.epi0pi0id, sr.noutput);
449 }
450 
451 template<class... Tidx> template<class... Cols> HDF5SliceLID<Tidx...>::HDF5SliceLID(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
452  : vals(f, name, make_cols<Tidx..., float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ncid", "numuid", "nueid", "nutauid", "cosmicid"))
453 {
454 }
455 
456 template<class... Tidx> void HDF5SliceLID<Tidx...>::Fill(Tidx... idxs, const caf::SRSliceLID& sr)
457 {
458  vals.insert(idxs..., sr.ncid, sr.numuid, sr.nueid, sr.nutauid, sr.cosmicid);
459 }
460 
461 template<class... Tidx> template<class... Cols> HDF5Xnue<Tidx...>::HDF5Xnue(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
462  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, double>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "p1energy", "p1Fmip", "p2Fmip", "emaxfrac6p", "efrac10p", "efracp2", "efracp3", "efracp4", "efrac2sig", "bdt"))
463 {
464 }
465 
466 template<class... Tidx> void HDF5Xnue<Tidx...>::Fill(Tidx... idxs, const caf::SRXnue& sr)
467 {
468  vals.insert(idxs..., sr.p1energy, sr.p1Fmip, sr.p2Fmip, sr.emaxfrac6p, sr.efrac10p, sr.efracp2, sr.efracp3, sr.efracp4, sr.efrac2sig, sr.bdt);
469 }
470 
471 template<class... Tidx> template<class... Cols> HDF5Veto<Tidx...>::HDF5Veto(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
472  : vals(f, name, make_cols<Tidx..., int, float, float, float, float, float, float, float, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ncell", "fwddist", "bakdist", "ratio", "diry", "angle", "anglevar", "anglevarold", "passthru", "passthruold", "passangle", "passanglefirstana", "passnumicut", "keep", "keepnue"))
473 {
474 }
475 
476 template<class... Tidx> void HDF5Veto<Tidx...>::Fill(Tidx... idxs, const caf::SRVeto& sr)
477 {
478  vals.insert(idxs..., sr.ncell, sr.fwddist, sr.bakdist, sr.ratio, sr.diry, sr.angle, sr.anglevar, sr.anglevarold, sr.passthru, sr.passthruold, sr.passangle, sr.passanglefirstana, sr.passnumicut, sr.keep, sr.keepnue);
479 }
480 
481 template<class... Tidx> template<class... Cols> HDF5Contain<Tidx...>::HDF5Contain(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
482  : vals(f, name, make_cols<Tidx..., unsigned short, unsigned short, float, int, int, float, float, float, int, int, float, float, float, int, int, float, float, float, int, int, float, float, float, int, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "numucontain", "numucontainSA", "missE", "nplanestofront", "nplanestoback", "vtxdist", "enddist", "cosfwddist", "cosfwdcell", "cosfwdcellnd", "cosfwdair", "cosfwdsteel", "cosbakdist", "cosbakcell", "cosbakcellnd", "cosbakair", "cosbaksteel", "kalfwddist", "kalfwdcell", "kalfwdcellnd", "kalfwdair", "kalfwdsteel", "kalbakdist", "kalbakcell", "kalbakcellnd", "kalbakair", "kalbaksteel", "cosyposattrans", "kalyposattrans", "xmin2", "ymin2", "zmin2", "xmax2", "ymax2", "zmax2", "xmint", "ymint", "zmint", "xmaxt", "ymaxt", "zmaxt"))
483 {
484 }
485 
486 template<class... Tidx> void HDF5Contain<Tidx...>::Fill(Tidx... idxs, const caf::SRContain& sr)
487 {
489 }
490 
491 template<class... Tidx> template<class... Cols> HDF5NCPi0BkgRej<Tidx...>::HDF5NCPi0BkgRej(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
492  : vals(f, name, make_cols<Tidx..., double, double>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ncpidbdtg", "ncpidbdtglt"))
493 {
494 }
495 
496 template<class... Tidx> void HDF5NCPi0BkgRej<Tidx...>::Fill(Tidx... idxs, const caf::SRNCPi0BkgRej& sr)
497 {
498  vals.insert(idxs..., sr.ncpidbdtg, sr.ncpidbdtglt);
499 }
500 
501 template<class... Tidx> template<class... Cols> HDF5NCCosRej<Tidx...>::HDF5NCCosRej(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
502  : vals(f, name, make_cols<Tidx..., float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pngptp", "cospidbdt", "cospidbdtg"))
503 {
504 }
505 
506 template<class... Tidx> void HDF5NCCosRej<Tidx...>::Fill(Tidx... idxs, const caf::SRNCCosRej& sr)
507 {
508  vals.insert(idxs..., sr.pngptp, sr.cospidbdt, sr.cospidbdtg);
509 }
510 
511 template<class... Tidx> template<class... Cols> HDF5NueCosRej<Tidx...>::HDF5NueCosRej(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
512  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, int, float, float, float, int, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "hitsperplane", "pngptp", "partptp", "photptp", "photpxp", "photpyp", "starttop", "startbottom", "startfront", "startback", "startwest", "starteast", "stoptop", "stopbottom", "stopfront", "stopback", "stopwest", "stopeast", "distallpngtop", "distallpngbottom", "distallpngfront", "distallpngback", "distallpngwest", "distallpngeast", "cospidcontain", "cospidcontainxy", "cospidlight", "cospidperibdt", "cospidcorebdt", "cosdang", "vtxdoca", "prongmaxx", "prongmaxy", "prongmaxz", "prongminx", "prongminy", "prongminz", "sparsenessasymm", "hitsperplaneasymm", "sparsenessasymmslice", "hitsperplaneasymmslice", "musliceidxbydist", "muanglediffbydist", "mutimediffbydist", "muclosestapproachbydist", "musliceidxbytime", "muanglediffbytime", "mutimediffbytime", "muclosestapproachbytime"))
513 {
514 }
515 
516 template<class... Tidx> void HDF5NueCosRej<Tidx...>::Fill(Tidx... idxs, const caf::SRNueCosRej& sr)
517 {
519 }
520 
521 template<class... Tidx> template<class... Cols> HDF5CosRej<Tidx...>::HDF5CosRej(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
522  : vals(f, name, make_cols<Tidx..., float, int, float, float, int, float, float, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "mindist", "mincell", "anglekal", "anglecos", "nkal3d", "costhetatrue", "kalthetatrue", "pdgbest", "numucontpid2020", "numucontpid2019", "numuunconttunedpid", "scatt", "fscattmax", "fscattsum", "fscattext", "fscattsig", "eratio", "hadE", "kfitspeed", "cfitspeed", "kdirscore", "cdirscore", "kscorediff", "cscorediff", "kalslope", "kalchisq", "kalchidiff", "cosslope", "coschisq", "coschidiff"))
523 {
524 }
525 
526 template<class... Tidx> void HDF5CosRej<Tidx...>::Fill(Tidx... idxs, const caf::SRCosRej& sr)
527 {
529 }
530 
531 template<class... Tidx> template<class... Cols> HDF5Rvp<Tidx...>::HDF5Rvp(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
532  : vals(f, name, make_cols<Tidx..., float, int, float, float, float, float, float, float, float, float, float, int, float, int, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pid", "ncell", "recoE", "longtr", "longtrfrac", "mipfrac", "miphits", "epl20frac", "efrac2plwin", "efrac6plwin", "efrac2sigrd", "prongs3D", "prongEbal3D", "prongs2D", "prongEbal2D", "eiso3sig", "rvp12"))
533 {
534 }
535 
536 template<class... Tidx> void HDF5Rvp<Tidx...>::Fill(Tidx... idxs, const caf::SRRvp& sr)
537 {
538  vals.insert(idxs..., sr.pid, sr.ncell, sr.recoE, sr.longtr, sr.longtrfrac, sr.mipfrac, sr.miphits, sr.epl20frac, sr.efrac2plwin, sr.efrac6plwin, sr.efrac2sigrd, sr.prongs3D, sr.prongEbal3D, sr.prongs2D, sr.prongEbal2D, sr.eiso3sig, sr.rvp12);
539 }
540 
541 template<class... Tidx> template<class... Cols> HDF5Presel<Tidx...>::HDF5Presel(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
542  : vals(f, name, make_cols<Tidx..., unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "passpre"))
543 {
544 }
545 
546 template<class... Tidx> void HDF5Presel<Tidx...>::Fill(Tidx... idxs, const caf::SRPresel& sr)
547 {
548  vals.insert(idxs..., sr.passpre);
549 }
550 
551 template<class... Tidx> template<class... Cols> HDF5Lem<Tidx...>::HDF5Lem(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
552  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pid", "pidfit", "pidexp", "pidexpfit", "meany", "meanyfit", "meanyexp", "meanysig", "meanysigexp", "meanqfrac", "meanqfracfit", "meanqfracexp", "meanqfracsig", "meanqfracsigexp", "meanqfracbkg", "meanqfracbkgexp", "energydiff", "energydiffexp", "enrichfrac", "enrichfracexp", "fannid", "fannidenrich", "chisig", "chibkg", "chisigexp", "chibkgexp", "avginvE", "avgexpE", "avgsigE", "tmvabdtg", "tmvabdt", "tmvabdtd", "tmvabdtmf", "tmvamlp", "dectree"))
553 {
554 }
555 
556 template<class... Tidx> void HDF5Lem<Tidx...>::Fill(Tidx... idxs, const caf::SRLem& sr)
557 {
559 }
560 
561 template<class... Tidx> template<class... Cols> HDF5ELid<Tidx...>::HDF5ELid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
562  : vals(f, name, make_cols<Tidx..., float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ann", "rnn", "anne", "annepi0", "annecos"))
563 {
564 }
565 
566 template<class... Tidx> void HDF5ELid<Tidx...>::Fill(Tidx... idxs, const caf::SRELid& sr)
567 {
568  vals.insert(idxs..., sr.ann, sr.rnn, sr.anne, sr.annepi0, sr.annecos);
569 }
570 
571 template<class... Tidx> template<class... Cols> HDF5Qepid<Tidx...>::HDF5Qepid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
572  : vals(f, name, make_cols<Tidx..., int, int, int, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "mode", "ntrk", "pid", "offE", "ediff", "ediffz", "dedx"))
573 {
574 }
575 
576 template<class... Tidx> void HDF5Qepid<Tidx...>::Fill(Tidx... idxs, const caf::SRQepid& sr)
577 {
578  vals.insert(idxs..., sr.pdg, sr.mode, sr.ntrk, sr.pid, sr.offE, sr.ediff, sr.ediffz, sr.dedx);
579 }
580 
581 template<class... Tidx> template<class... Cols> HDF5BpfId<Tidx...>::HDF5BpfId(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
582  : vals(f, name, make_cols<Tidx..., int, int, int, int, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "bestVtxIdx", "bestPngIdx", "bestBpfIdx", "pdg", "pid", "chi2T", "dEdXLL", "hitRatio", "momentum.x", "momentum.y", "momentum.z", "energy", "len"))
583 {
584 }
585 
586 template<class... Tidx> void HDF5BpfId<Tidx...>::Fill(Tidx... idxs, const caf::SRBpfId& sr)
587 {
588  vals.insert(idxs..., sr.bestVtxIdx, sr.bestPngIdx, sr.bestBpfIdx, sr.pdg, sr.pid, sr.chi2T, sr.dEdXLL, sr.hitRatio, sr.momentum.x, sr.momentum.y, sr.momentum.z, sr.energy, sr.len);
589 }
590 
591 template<class... Tidx> template<class... Cols> HDF5MuonID<Tidx...>::HDF5MuonID(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
592  : vals(f, name, make_cols<Tidx..., float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pid"))
593 {
594 }
595 
596 template<class... Tidx> void HDF5MuonID<Tidx...>::Fill(Tidx... idxs, const caf::SRMuonID& sr)
597 {
598  vals.insert(idxs..., sr.pid);
599 }
600 
601 template<class... Tidx> template<class... Cols> HDF5Remid<Tidx...>::HDF5Remid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
602  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pid", "scatllh", "dedxllh", "len", "measfrac", "cont"))
603 {
604 }
605 
606 template<class... Tidx> void HDF5Remid<Tidx...>::Fill(Tidx... idxs, const caf::SRRemid& sr)
607 {
608  vals.insert(idxs..., sr.pid, sr.scatllh, sr.dedxllh, sr.len, sr.measfrac, sr.cont);
609 }
610 
611 template<class... Tidx> template<class... Cols> HDF5MuId<Tidx...>::HDF5MuId(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
612  : vals(f, name, make_cols<Tidx..., int, float, float, float, float, float, int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "pid", "scatllh", "dedxllh", "len", "measfrac", "cont"))
613 {
614 }
615 
616 template<class... Tidx> void HDF5MuId<Tidx...>::Fill(Tidx... idxs, const caf::SRMuId& sr)
617 {
618  vals.insert(idxs..., sr.pdg, sr.pid, sr.scatllh, sr.dedxllh, sr.len, sr.measfrac, sr.cont);
619 }
620 
621 template<class... Tidx> template<class... Cols> HDF5EnergyBranch<Tidx...>::HDF5EnergyBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
622  : nue(std::make_unique<HDF5NueEnergy<Tidx...>>(f, Join(name, "nue"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
623  numu(std::make_unique<HDF5NumuEnergy<Tidx...>>(f, Join(name, "numu"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
624 {
625 }
626 
627 template<class... Tidx> void HDF5EnergyBranch<Tidx...>::Fill(Tidx... idxs, const caf::SREnergyBranch& sr)
628 {
629  nue->Fill(idxs..., sr.nue);
630  numu->Fill(idxs..., sr.numu);
631 }
632 
633 template<class... Tidx> template<class... Cols> HDF5Energy<Tidx...>::HDF5Energy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
634  : vals(f, name, make_cols<Tidx..., float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "E"))
635 {
636 }
637 
638 template<class... Tidx> void HDF5Energy<Tidx...>::Fill(Tidx... idxs, const caf::SREnergy& sr)
639 {
640  vals.insert(idxs..., sr.E);
641 }
642 
643 template<class... Tidx> template<class... Cols> HDF5NumuEnergy<Tidx...>::HDF5NumuEnergy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
644  : hadclust(std::make_unique<HDF5HadClust<Tidx...>>(f, Join(name, "hadclust"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
645  mc(std::make_unique<HDF5TrueNumuEnergy<Tidx...>>(f, Join(name, "mc"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
646  bpfenergy(std::make_unique<HDF5BPFEnergy<Tidx...>>(f, Join(name, "bpfenergy"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
647  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "E", "calccE", "trkqeE", "trknonqeE", "trkccE", "shiftedtrkccE", "angleE", "angleerror", "recomuonE", "ucrecomuonE1trk", "ucrecomuonE", "recotrkcchadE", "hadcalE", "hadtrkE", "ndtrklenact", "ndtrklencat", "ndtrkcalactE", "ndtrkcaltranE", "ndtrkcalcatE", "ndhadcalactE", "ndhadcaltranE", "ndhadcalcatE", "ndhadtrkactE", "ndhadtrktranE", "ndhadtrkcatE", "ndtrktranx", "ndtrktrany", "lstmmuon", "lstmnu", "lstmmuon_opphorn", "lstmnu_opphorn", "regcvnhadE", "regcvnhadE_opphorn"))
648 {
649 }
650 
651 template<class... Tidx> void HDF5NumuEnergy<Tidx...>::Fill(Tidx... idxs, const caf::SRNumuEnergy& sr)
652 {
653  hadclust->Fill(idxs..., sr.hadclust);
654  mc->Fill(idxs..., sr.mc);
655  bpfenergy->Fill(idxs..., sr.bpfenergy);
657 }
658 
659 template<class... Tidx> template<class... Cols> HDF5BPFEnergy<Tidx...>::HDF5BPFEnergy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
660  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "E1", "Eres1", "E2", "Eres2", "E3", "Eres3", "EventID", "PMuon", "DirZMuon", "N3DProngs", "EFuzzyK3D", "ERemain", "SumPE"))
661 {
662 }
663 
664 template<class... Tidx> void HDF5BPFEnergy<Tidx...>::Fill(Tidx... idxs, const caf::SRBPFEnergy& sr)
665 {
666  vals.insert(idxs..., sr.E1, sr.Eres1, sr.E2, sr.Eres2, sr.E3, sr.Eres3, sr.EventID, sr.PMuon, sr.DirZMuon, sr.N3DProngs, sr.EFuzzyK3D, sr.ERemain, sr.SumPE);
667 }
668 
669 template<class... Tidx> template<class... Cols> HDF5TrueNumuEnergy<Tidx...>::HDF5TrueNumuEnergy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
670  : vals(f, name, make_cols<Tidx..., float, float, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "truemuonE", "truemuoncatcherE", "truegoodmuon"))
671 {
672 }
673 
674 template<class... Tidx> void HDF5TrueNumuEnergy<Tidx...>::Fill(Tidx... idxs, const caf::SRTrueNumuEnergy& sr)
675 {
676  vals.insert(idxs..., sr.truemuonE, sr.truemuoncatcherE, sr.truegoodmuon);
677 }
678 
679 template<class... Tidx> template<class... Cols> HDF5HadClust<Tidx...>::HDF5HadClust(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
680  : vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "ncalhit", "nmiphit", "ncontplanes", "firstplane", "lastplane", "firstcell", "lastcell", "ncellsfromedge", "calE", "boxmin.x", "boxmin.y", "boxmin.z", "boxmax.x", "boxmax.y", "boxmax.z", "meanpos.x", "meanpos.y", "meanpos.z"))
681 {
682 }
683 
684 template<class... Tidx> void HDF5HadClust<Tidx...>::Fill(Tidx... idxs, const caf::SRHadClust& sr)
685 {
686  vals.insert(idxs..., sr.nhit, sr.ncalhit, sr.nmiphit, sr.ncontplanes, sr.firstplane, sr.lastplane, sr.firstcell, sr.lastcell, sr.ncellsfromedge, sr.calE, sr.boxmin.x, sr.boxmin.y, sr.boxmin.z, sr.boxmax.x, sr.boxmax.y, sr.boxmax.z, sr.meanpos.x, sr.meanpos.y, sr.meanpos.z);
687 }
688 
689 template<class... Tidx> template<class... Cols> HDF5NueEnergy<Tidx...>::HDF5NueEnergy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
690  : lid(std::make_unique<HDF5SLidEnergy<Tidx...>>(f, Join(name, "lid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
691  vals(f, name, make_cols<Tidx..., float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "rawgevshw", "rawgevhad", "rawgevslice", "regcvnEvtE", "regcvnEvtE_opphorn"))
692 {
693 }
694 
695 template<class... Tidx> void HDF5NueEnergy<Tidx...>::Fill(Tidx... idxs, const caf::SRNueEnergy& sr)
696 {
697  lid->Fill(idxs..., sr.lid);
698  vals.insert(idxs..., sr.rawgevshw, sr.rawgevhad, sr.rawgevslice, sr.regcvnEvtE, sr.regcvnEvtE_opphorn);
699 }
700 
701 template<class... Tidx> template<class... Cols> HDF5MichelE<Tidx...>::HDF5MichelE(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
702  : trkkalman(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "trkkalman"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "trkkalman")+"_idx")),
703  trkdiscrete(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "trkdiscrete"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "trkdiscrete")+"_idx")),
704  trkcosmic(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "trkcosmic"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "trkcosmic")+"_idx")),
705  trkbpf(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "trkbpf"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "trkbpf")+"_idx")),
706  slc(std::make_unique<HDF5SlcME<Tidx..., unsigned int>>(f, Join(name, "slc"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "slc")+"_idx")),
707  vals(f, name, make_cols<Tidx..., size_t, size_t, size_t, size_t, size_t>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nkalman", "ndiscrete", "ncosmic", "nbpf", "nslc"))
708 {
709 }
710 
711 template<class... Tidx> void HDF5MichelE<Tidx...>::Fill(Tidx... idxs, const caf::SRMichelE& sr)
712 {
713  for(unsigned int i = 0; i < sr.trkkalman.size(); ++i) trkkalman->Fill(idxs..., i, sr.trkkalman[i]);
714  for(unsigned int i = 0; i < sr.trkdiscrete.size(); ++i) trkdiscrete->Fill(idxs..., i, sr.trkdiscrete[i]);
715  for(unsigned int i = 0; i < sr.trkcosmic.size(); ++i) trkcosmic->Fill(idxs..., i, sr.trkcosmic[i]);
716  for(unsigned int i = 0; i < sr.trkbpf.size(); ++i) trkbpf->Fill(idxs..., i, sr.trkbpf[i]);
717  for(unsigned int i = 0; i < sr.slc.size(); ++i) slc->Fill(idxs..., i, sr.slc[i]);
718  vals.insert(idxs..., sr.nkalman, sr.ndiscrete, sr.ncosmic, sr.nbpf, sr.nslc);
719 }
720 
721 template<class... Tidx> template<class... Cols> HDF5SlcME<Tidx...>::HDF5SlcME(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
722  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
723  vals(f, name, make_cols<Tidx..., float, short unsigned int, short unsigned int, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "mid", "nhitx", "nhity", "calE", "deltat", "adc", "disttoslc", "meanpos.x", "meanpos.y", "meanpos.z"))
724 {
725 }
726 
727 template<class... Tidx> void HDF5SlcME<Tidx...>::Fill(Tidx... idxs, const caf::SRSlcME& sr)
728 {
729  truth->Fill(idxs..., sr.truth);
730  vals.insert(idxs..., sr.mid, sr.nhitx, sr.nhity, sr.calE, sr.deltat, sr.adc, sr.disttoslc, sr.meanpos.x, sr.meanpos.y, sr.meanpos.z);
731 }
732 
733 template<class... Tidx> template<class... Cols> HDF5VertexBranch<Tidx...>::HDF5VertexBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
734  : elastic(std::make_unique<HDF5Elastic<Tidx...>>(f, Join(name, "elastic"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
735  hough(std::make_unique<HDF5HoughVertex<Tidx..., unsigned int>>(f, Join(name, "hough"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "hough")+"_idx")),
736  vdt(std::make_unique<HDF5VertexDT<Tidx..., unsigned int>>(f, Join(name, "vdt"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "vdt")+"_idx")),
737  vals(f, name, make_cols<Tidx..., size_t, size_t>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhough", "nvdt"))
738 {
739 }
740 
741 template<class... Tidx> void HDF5VertexBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRVertexBranch& sr)
742 {
743  elastic->Fill(idxs..., sr.elastic);
744  for(unsigned int i = 0; i < sr.hough.size(); ++i) hough->Fill(idxs..., i, sr.hough[i]);
745  for(unsigned int i = 0; i < sr.vdt.size(); ++i) vdt->Fill(idxs..., i, sr.vdt[i]);
746  vals.insert(idxs..., sr.nhough, sr.nvdt);
747 }
748 
749 template<class... Tidx> template<class... Cols> HDF5VertexDT<Tidx...>::HDF5VertexDT(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
750  : vals(f, name, make_cols<Tidx..., float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "time", "vtx.x", "vtx.y", "vtx.z"))
751 {
752 }
753 
754 template<class... Tidx> void HDF5VertexDT<Tidx...>::Fill(Tidx... idxs, const caf::SRVertexDT& sr)
755 {
756  vals.insert(idxs..., sr.time, sr.vtx.x, sr.vtx.y, sr.vtx.z);
757 }
758 
759 template<class... Tidx> template<class... Cols> HDF5Vertex<Tidx...>::HDF5Vertex(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
760  : vals(f, name, make_cols<Tidx..., float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "time", "vtx.x", "vtx.y", "vtx.z"))
761 {
762 }
763 
764 template<class... Tidx> void HDF5Vertex<Tidx...>::Fill(Tidx... idxs, const caf::SRVertex& sr)
765 {
766  vals.insert(idxs..., sr.time, sr.vtx.x, sr.vtx.y, sr.vtx.z);
767 }
768 
769 template<class... Tidx> template<class... Cols> HDF5HoughVertex<Tidx...>::HDF5HoughVertex(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
770  : fuzzyk(std::make_unique<HDF5FuzzyK<Tidx...>>(f, Join(name, "fuzzyk"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
771  vals(f, name, make_cols<Tidx..., float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "time", "vtx.x", "vtx.y", "vtx.z"))
772 {
773 }
774 
775 template<class... Tidx> void HDF5HoughVertex<Tidx...>::Fill(Tidx... idxs, const caf::SRHoughVertex& sr)
776 {
777  fuzzyk->Fill(idxs..., sr.fuzzyk);
778  vals.insert(idxs..., sr.time, sr.vtx.x, sr.vtx.y, sr.vtx.z);
779 }
780 
781 template<class... Tidx> template<class... Cols> HDF5Elastic<Tidx...>::HDF5Elastic(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
782  : fuzzyk(std::make_unique<HDF5FuzzyK<Tidx...>>(f, Join(name, "fuzzyk"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
783  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "time", "slicevertexenergyvolume10", "slicevertexenergyvolume20", "slicevertexenergyvolume30", "slicevertexenergyvolume40", "prong3dvertexenergyvolume10", "prong3dvertexenergyvolume20", "prong3dvertexenergyvolume30", "prong3dvertexenergyvolume40", "prong2dvertexenergyvolume10", "prong2dvertexenergyvolume20", "prong2dvertexenergyvolume30", "prong2dvertexenergyvolume40", "vtx.x", "vtx.y", "vtx.z", "IsValid"))
784 {
785 }
786 
787 template<class... Tidx> void HDF5Elastic<Tidx...>::Fill(Tidx... idxs, const caf::SRElastic& sr)
788 {
789  fuzzyk->Fill(idxs..., sr.fuzzyk);
791 }
792 
793 template<class... Tidx> template<class... Cols> HDF5FuzzyK<Tidx...>::HDF5FuzzyK(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
794  : png(std::make_unique<HDF5FuzzyKProng<Tidx..., unsigned int>>(f, Join(name, "png"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "png")+"_idx")),
795  png2d(std::make_unique<HDF5Prong<Tidx..., unsigned int>>(f, Join(name, "png2d"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "png2d")+"_idx")),
796  vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, size_t, size_t, size_t, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "longestidx", "nshwlid", "npng", "npng2d", "ntot", "orphCalE"))
797 {
798 }
799 
800 template<class... Tidx> void HDF5FuzzyK<Tidx...>::Fill(Tidx... idxs, const caf::SRFuzzyK& sr)
801 {
802  for(unsigned int i = 0; i < sr.png.size(); ++i) png->Fill(idxs..., i, sr.png[i]);
803  for(unsigned int i = 0; i < sr.png2d.size(); ++i) png2d->Fill(idxs..., i, sr.png2d[i]);
804  vals.insert(idxs..., sr.longestidx, sr.nshwlid, sr.npng, sr.npng2d, sr.ntot, sr.orphCalE);
805 }
806 
807 template<class... Tidx> template<class... Cols> HDF5FuzzyKProng<Tidx...>::HDF5FuzzyKProng(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
808  : shwlid(std::make_unique<HDF5ShowerLID<Tidx...>>(f, Join(name, "shwlid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
809  bpf(std::make_unique<HDF5Bpf<Tidx...>>(f, Join(name, "bpf"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
810  regcvn(std::make_unique<HDF5RegCVNResult<Tidx...>>(f, Join(name, "regcvn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
811  truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
812  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
813  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
814  cvnneutron(std::make_unique<HDF5CVNNeutronDaughterResult<Tidx...>>(f, Join(name, "cvnneutron"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
815  cvnpart(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "cvnpart"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
816  cvnpart_opphorn(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "cvnpart_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
817  spprongcvnpart5label(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "spprongcvnpart5label"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
818  spprongcvnpartnumuccemid(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "spprongcvnpartnumuccemid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
819  cvnmaps(std::make_unique<HDF5PixelMap<Tidx..., unsigned int>>(f, Join(name, "cvnmaps"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "cvnmaps")+"_idx")),
820  prongtrainingdata(std::make_unique<HDF5ProngTrainingData<Tidx..., unsigned int>>(f, Join(name, "prongtrainingdata"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "prongtrainingdata")+"_idx")),
821  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "dedx15", "dedx30", "activity15", "activity30", "activity45", "prox15", "prox30", "mvapiE", "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "weightedCalE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "pngminx", "pngmaxx", "pngminy", "pngmaxy", "len", "view", "meantime", "maxtime", "mintime", "meantimeRes"))
822 {
823 }
824 
825 template<class... Tidx> void HDF5FuzzyKProng<Tidx...>::Fill(Tidx... idxs, const caf::SRFuzzyKProng& sr)
826 {
827  shwlid->Fill(idxs..., sr.shwlid);
828  bpf->Fill(idxs..., sr.bpf);
829  regcvn->Fill(idxs..., sr.regcvn);
830  truth->Fill(idxs..., sr.truth);
831  truthXView->Fill(idxs..., sr.truthXView);
832  truthYView->Fill(idxs..., sr.truthYView);
833  cvnneutron->Fill(idxs..., sr.cvnneutron);
834  cvnpart->Fill(idxs..., sr.cvnpart);
835  cvnpart_opphorn->Fill(idxs..., sr.cvnpart_opphorn);
836  spprongcvnpart5label->Fill(idxs..., sr.spprongcvnpart5label);
838  for(unsigned int i = 0; i < sr.cvnmaps.size(); ++i) cvnmaps->Fill(idxs..., i, sr.cvnmaps[i]);
839  for(unsigned int i = 0; i < sr.prongtrainingdata.size(); ++i) prongtrainingdata->Fill(idxs..., i, sr.prongtrainingdata[i]);
840  vals.insert(idxs..., sr.dedx15, sr.dedx30, sr.activity15, sr.activity30, sr.activity45, sr.prox15, sr.prox30, sr.mvapiE, sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.weightedCalE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.pngminx, sr.pngmaxx, sr.pngminy, sr.pngmaxy, sr.len, sr.view, sr.meantime, sr.maxtime, sr.mintime, sr.meantimeRes);
841 }
842 
843 template<class... Tidx> template<class... Cols> HDF5ProngXSec<Tidx...>::HDF5ProngXSec(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
844  : vals(f, name, make_cols<Tidx..., float, float, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ccpi0bpi", "ccpi0phll", "ccpi0ismu"))
845 {
846 }
847 
848 template<class... Tidx> void HDF5ProngXSec<Tidx...>::Fill(Tidx... idxs, const caf::SRProngXSec& sr)
849 {
850  vals.insert(idxs..., sr.ccpi0bpi, sr.ccpi0phll, sr.ccpi0ismu);
851 }
852 
853 template<class... Tidx> template<class... Cols> HDF5RegCVNResult<Tidx...>::HDF5RegCVNResult(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
854  : vals(f, name, make_cols<Tidx..., float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "prongE"))
855 {
856 }
857 
858 template<class... Tidx> void HDF5RegCVNResult<Tidx...>::Fill(Tidx... idxs, const caf::SRRegCVNResult& sr)
859 {
860  vals.insert(idxs..., sr.prongE);
861 }
862 
863 template<class... Tidx> template<class... Cols> HDF5Bpf<Tidx...>::HDF5Bpf(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
864  : muon(std::make_unique<HDF5BpfTrack<Tidx...>>(f, Join(name, "muon"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
865  pion(std::make_unique<HDF5BpfTrack<Tidx...>>(f, Join(name, "pion"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
866  proton(std::make_unique<HDF5BpfTrack<Tidx...>>(f, Join(name, "proton"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
867 {
868 }
869 
870 template<class... Tidx> void HDF5Bpf<Tidx...>::Fill(Tidx... idxs, const caf::SRBpf& sr)
871 {
872  muon->Fill(idxs..., sr.muon);
873  pion->Fill(idxs..., sr.pion);
874  proton->Fill(idxs..., sr.proton);
875 }
876 
877 template<class... Tidx> template<class... Cols> HDF5BpfTrack<Tidx...>::HDF5BpfTrack(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
878  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
879  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
880  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
881  me(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "me"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "me")+"_idx")),
882  mrdif(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrdif"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrdif")+"_idx")),
883  mrbrem(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrbrem"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrbrem")+"_idx")),
884  vals(f, name, make_cols<Tidx..., unsigned short, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, float, float, float, float, float, float, int, int, int, int, double, double, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "IsValid", "pdg", "pid", "chi2T", "chi2Hit", "chi2Scat", "dEdXLL", "hitRatio", "momentum.x", "momentum.y", "momentum.z", "energy", "scatt15", "scatt30", "dedx15", "dedx30", "activity15", "activity30", "activity45", "prox15", "prox30", "mvapiE", "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "nplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "pngminx", "pngmaxx", "pngminy", "pngmaxy", "len", "view", "lenE", "overlapE", "stop.x", "stop.y", "stop.z", "stopdir.x", "stopdir.y", "stopdir.z", "trkfwdcell", "trkfwdcellnd", "trkbakcell", "trkbakcellnd", "leninact", "lenincat", "trkyposattrans", "vtxdist", "enddist", "trkfwddist", "trkfwdair", "trkfwdsteel", "trkbakdist", "trkbakair", "trkbaksteel", "avedEdxlast10cm", "avedEdxlast20cm", "avedEdxlast30cm", "avedEdxlast40cm", "meantime", "maxtime", "mintime", "meantimeRes"))
885 {
886 }
887 
888 template<class... Tidx> void HDF5BpfTrack<Tidx...>::Fill(Tidx... idxs, const caf::SRBpfTrack& sr)
889 {
890  truth->Fill(idxs..., sr.truth);
891  truthXView->Fill(idxs..., sr.truthXView);
892  truthYView->Fill(idxs..., sr.truthYView);
893  for(unsigned int i = 0; i < sr.me.size(); ++i) me->Fill(idxs..., i, sr.me[i]);
894  for(unsigned int i = 0; i < sr.mrdif.size(); ++i) mrdif->Fill(idxs..., i, sr.mrdif[i]);
895  for(unsigned int i = 0; i < sr.mrbrem.size(); ++i) mrbrem->Fill(idxs..., i, sr.mrbrem[i]);
896  vals.insert(idxs..., sr.IsValid, sr.pdg, sr.pid, sr.chi2T, sr.chi2Hit, sr.chi2Scat, sr.dEdXLL, sr.hitRatio, sr.momentum.x, sr.momentum.y, sr.momentum.z, sr.energy, sr.scatt15, sr.scatt30, sr.dedx15, sr.dedx30, sr.activity15, sr.activity30, sr.activity45, sr.prox15, sr.prox30, sr.mvapiE, sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.nplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.pngminx, sr.pngmaxx, sr.pngminy, sr.pngmaxy, sr.len, sr.view, sr.lenE, sr.overlapE, sr.stop.x, sr.stop.y, sr.stop.z, sr.stopdir.x, sr.stopdir.y, sr.stopdir.z, sr.trkfwdcell, sr.trkfwdcellnd, sr.trkbakcell, sr.trkbakcellnd, sr.leninact, sr.lenincat, sr.trkyposattrans, sr.vtxdist, sr.enddist, sr.trkfwddist, sr.trkfwdair, sr.trkfwdsteel, sr.trkbakdist, sr.trkbakair, sr.trkbaksteel, sr.avedEdxlast10cm, sr.avedEdxlast20cm, sr.avedEdxlast30cm, sr.avedEdxlast40cm, sr.meantime, sr.maxtime, sr.mintime, sr.meantimeRes);
897 }
898 
899 template<class... Tidx> template<class... Cols> HDF5ShowerBranch<Tidx...>::HDF5ShowerBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
900  : shwlid(std::make_unique<HDF5Shower<Tidx..., unsigned int>>(f, Join(name, "shwlid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "shwlid")+"_idx")),
901  vals(f, name, make_cols<Tidx..., size_t>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nshwlid"))
902 {
903 }
904 
905 template<class... Tidx> void HDF5ShowerBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRShowerBranch& sr)
906 {
907  for(unsigned int i = 0; i < sr.shwlid.size(); ++i) shwlid->Fill(idxs..., i, sr.shwlid[i]);
908  vals.insert(idxs..., sr.nshwlid);
909 }
910 
911 template<class... Tidx> template<class... Cols> HDF5TrackBranch<Tidx...>::HDF5TrackBranch(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
912  : kalman(std::make_unique<HDF5Kalman<Tidx...>>(f, Join(name, "kalman"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
913  discrete(std::make_unique<HDF5TrackBase<Tidx...>>(f, Join(name, "discrete"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
914  cosmic(std::make_unique<HDF5TrackBase<Tidx...>>(f, Join(name, "cosmic"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
915  window(std::make_unique<HDF5TrackBase<Tidx...>>(f, Join(name, "window"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...))
916 {
917 }
918 
919 template<class... Tidx> void HDF5TrackBranch<Tidx...>::Fill(Tidx... idxs, const caf::SRTrackBranch& sr)
920 {
921  kalman->Fill(idxs..., sr.kalman);
922  discrete->Fill(idxs..., sr.discrete);
923  cosmic->Fill(idxs..., sr.cosmic);
924  window->Fill(idxs..., sr.window);
925 }
926 
927 template<class... Tidx> template<class... Cols> HDF5TrackBase<Tidx...>::HDF5TrackBase(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
928  : tracks(std::make_unique<HDF5Track<Tidx..., unsigned int>>(f, Join(name, "tracks"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "tracks")+"_idx")),
929  vals(f, name, make_cols<Tidx..., size_t>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ntracks"))
930 {
931 }
932 
933 template<class... Tidx> void HDF5TrackBase<Tidx...>::Fill(Tidx... idxs, const caf::SRTrackBase& sr)
934 {
935  for(unsigned int i = 0; i < sr.tracks.size(); ++i) tracks->Fill(idxs..., i, sr.tracks[i]);
936  vals.insert(idxs..., sr.ntracks);
937 }
938 
939 template<class... Tidx> template<class... Cols> HDF5Kalman<Tidx...>::HDF5Kalman(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
940  : tracks(std::make_unique<HDF5KalmanTrack<Tidx..., unsigned int>>(f, Join(name, "tracks"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "tracks")+"_idx")),
941  tracks2d(std::make_unique<HDF5Track<Tidx..., unsigned int>>(f, Join(name, "tracks2d"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "tracks2d")+"_idx")),
942  vals(f, name, make_cols<Tidx..., size_t, size_t, unsigned int, unsigned int, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ntracks", "ntracks2d", "idxremid", "idxmuonid", "idxlongest"))
943 {
944 }
945 
946 template<class... Tidx> void HDF5Kalman<Tidx...>::Fill(Tidx... idxs, const caf::SRKalman& sr)
947 {
948  for(unsigned int i = 0; i < sr.tracks.size(); ++i) tracks->Fill(idxs..., i, sr.tracks[i]);
949  for(unsigned int i = 0; i < sr.tracks2d.size(); ++i) tracks2d->Fill(idxs..., i, sr.tracks2d[i]);
950  vals.insert(idxs..., sr.ntracks, sr.ntracks2d, sr.idxremid, sr.idxmuonid, sr.idxlongest);
951 }
952 
953 template<class... Tidx> template<class... Cols> HDF5KalmanTrack<Tidx...>::HDF5KalmanTrack(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
954  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
955  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
956  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
957  me(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "me"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "me")+"_idx")),
958  mrdif(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrdif"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrdif")+"_idx")),
959  mrbrem(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrbrem"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrbrem")+"_idx")),
960  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, int, float, float, float, float, float, float, float, float, float, float, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, float, float, float, float, float, float, int, int, int, int, double, double, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "remavededx", "rempid", "muonid", "scatllh", "dedxllh", "measfrac", "remcont", "scatt15", "scatt30", "dedx15", "dedx30", "activity15", "activity30", "activity45", "prox15", "prox30", "mvapiE", "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "nplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "pngminx", "pngmaxx", "pngminy", "pngmaxy", "len", "view", "lenE", "overlapE", "stop.x", "stop.y", "stop.z", "stopdir.x", "stopdir.y", "stopdir.z", "trkfwdcell", "trkfwdcellnd", "trkbakcell", "trkbakcellnd", "leninact", "lenincat", "trkyposattrans", "vtxdist", "enddist", "trkfwddist", "trkfwdair", "trkfwdsteel", "trkbakdist", "trkbakair", "trkbaksteel", "avedEdxlast10cm", "avedEdxlast20cm", "avedEdxlast30cm", "avedEdxlast40cm", "meantime", "maxtime", "mintime", "meantimeRes"))
961 {
962 }
963 
964 template<class... Tidx> void HDF5KalmanTrack<Tidx...>::Fill(Tidx... idxs, const caf::SRKalmanTrack& sr)
965 {
966  truth->Fill(idxs..., sr.truth);
967  truthXView->Fill(idxs..., sr.truthXView);
968  truthYView->Fill(idxs..., sr.truthYView);
969  for(unsigned int i = 0; i < sr.me.size(); ++i) me->Fill(idxs..., i, sr.me[i]);
970  for(unsigned int i = 0; i < sr.mrdif.size(); ++i) mrdif->Fill(idxs..., i, sr.mrdif[i]);
971  for(unsigned int i = 0; i < sr.mrbrem.size(); ++i) mrbrem->Fill(idxs..., i, sr.mrbrem[i]);
972  vals.insert(idxs..., sr.remavededx, sr.rempid, sr.muonid, sr.scatllh, sr.dedxllh, sr.measfrac, sr.remcont, sr.scatt15, sr.scatt30, sr.dedx15, sr.dedx30, sr.activity15, sr.activity30, sr.activity45, sr.prox15, sr.prox30, sr.mvapiE, sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.nplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.pngminx, sr.pngmaxx, sr.pngminy, sr.pngmaxy, sr.len, sr.view, sr.lenE, sr.overlapE, sr.stop.x, sr.stop.y, sr.stop.z, sr.stopdir.x, sr.stopdir.y, sr.stopdir.z, sr.trkfwdcell, sr.trkfwdcellnd, sr.trkbakcell, sr.trkbakcellnd, sr.leninact, sr.lenincat, sr.trkyposattrans, sr.vtxdist, sr.enddist, sr.trkfwddist, sr.trkfwdair, sr.trkfwdsteel, sr.trkbakdist, sr.trkbakair, sr.trkbaksteel, sr.avedEdxlast10cm, sr.avedEdxlast20cm, sr.avedEdxlast30cm, sr.avedEdxlast40cm, sr.meantime, sr.maxtime, sr.mintime, sr.meantimeRes);
973 }
974 
975 template<class... Tidx> template<class... Cols> HDF5Track<Tidx...>::HDF5Track(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
976  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
977  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
978  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
979  me(std::make_unique<HDF5TrkME<Tidx..., unsigned int>>(f, Join(name, "me"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "me")+"_idx")),
980  mrdif(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrdif"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrdif")+"_idx")),
981  mrbrem(std::make_unique<HDF5MRProperties<Tidx..., unsigned int>>(f, Join(name, "mrbrem"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "mrbrem")+"_idx")),
982  vals(f, name, make_cols<Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, float, float, float, float, float, float, int, int, int, int, double, double, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "nplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "pngminx", "pngmaxx", "pngminy", "pngmaxy", "len", "view", "lenE", "overlapE", "stop.x", "stop.y", "stop.z", "stopdir.x", "stopdir.y", "stopdir.z", "trkfwdcell", "trkfwdcellnd", "trkbakcell", "trkbakcellnd", "leninact", "lenincat", "trkyposattrans", "vtxdist", "enddist", "trkfwddist", "trkfwdair", "trkfwdsteel", "trkbakdist", "trkbakair", "trkbaksteel", "avedEdxlast10cm", "avedEdxlast20cm", "avedEdxlast30cm", "avedEdxlast40cm", "meantime", "maxtime", "mintime", "meantimeRes"))
983 {
984 }
985 
986 template<class... Tidx> void HDF5Track<Tidx...>::Fill(Tidx... idxs, const caf::SRTrack& sr)
987 {
988  truth->Fill(idxs..., sr.truth);
989  truthXView->Fill(idxs..., sr.truthXView);
990  truthYView->Fill(idxs..., sr.truthYView);
991  for(unsigned int i = 0; i < sr.me.size(); ++i) me->Fill(idxs..., i, sr.me[i]);
992  for(unsigned int i = 0; i < sr.mrdif.size(); ++i) mrdif->Fill(idxs..., i, sr.mrdif[i]);
993  for(unsigned int i = 0; i < sr.mrbrem.size(); ++i) mrbrem->Fill(idxs..., i, sr.mrbrem[i]);
994  vals.insert(idxs..., sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.nplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.pngminx, sr.pngmaxx, sr.pngminy, sr.pngmaxy, sr.len, sr.view, sr.lenE, sr.overlapE, sr.stop.x, sr.stop.y, sr.stop.z, sr.stopdir.x, sr.stopdir.y, sr.stopdir.z, sr.trkfwdcell, sr.trkfwdcellnd, sr.trkbakcell, sr.trkbakcellnd, sr.leninact, sr.lenincat, sr.trkyposattrans, sr.vtxdist, sr.enddist, sr.trkfwddist, sr.trkfwdair, sr.trkfwdsteel, sr.trkbakdist, sr.trkbakair, sr.trkbaksteel, sr.avedEdxlast10cm, sr.avedEdxlast20cm, sr.avedEdxlast30cm, sr.avedEdxlast40cm, sr.meantime, sr.maxtime, sr.mintime, sr.meantimeRes);
995 }
996 
997 template<class... Tidx> template<class... Cols> HDF5MRProperties<Tidx...>::HDF5MRProperties(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
998  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
999  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1000  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1001  lid(std::make_unique<HDF5ShowerLID<Tidx...>>(f, Join(name, "lid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1002  cvnloosepreselptp(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnloosepreselptp"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1003  cvnoldpresel(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnoldpresel"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1004  cvnnocosmics(std::make_unique<HDF5CVNResult<Tidx...>>(f, Join(name, "cvnnocosmics"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1005  vals(f, name, make_cols<Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, unsigned short, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, unsigned short, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "view", "nplanex", "nplaney", "minplane", "maxplane", "gap", "isDiF", "isShwDiF"))
1006 {
1007 }
1008 
1009 template<class... Tidx> void HDF5MRProperties<Tidx...>::Fill(Tidx... idxs, const caf::SRMRProperties& sr)
1010 {
1011  truth->Fill(idxs..., sr.truth);
1012  truthXView->Fill(idxs..., sr.truthXView);
1013  truthYView->Fill(idxs..., sr.truthYView);
1014  lid->Fill(idxs..., sr.lid);
1015  cvnloosepreselptp->Fill(idxs..., sr.cvnloosepreselptp);
1016  cvnoldpresel->Fill(idxs..., sr.cvnoldpresel);
1017  cvnnocosmics->Fill(idxs..., sr.cvnnocosmics);
1018  vals.insert(idxs..., sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.view, sr.nplanex, sr.nplaney, sr.minplane, sr.maxplane, sr.gap, sr.isDiF, sr.isShwDiF);
1019 }
1020 
1021 template<class... Tidx> template<class... Cols> HDF5CVNResult<Tidx...>::HDF5CVNResult(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1022  : output(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "output"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "output")+"_idx")),
1023  vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, unsigned int, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "numuid", "nueid", "nutauid", "ncid", "cosmicid", "maxval", "argmax", "noutput"))
1024 {
1025 }
1026 
1027 template<class... Tidx> void HDF5CVNResult<Tidx...>::Fill(Tidx... idxs, const caf::SRCVNResult& sr)
1028 {
1029  for(unsigned int i = 0; i < sr.output.size(); ++i) output->Fill(idxs..., i, sr.output[i]);
1030  vals.insert(idxs..., sr.numuid, sr.nueid, sr.nutauid, sr.ncid, sr.cosmicid, sr.maxval, sr.argmax, sr.noutput);
1031 }
1032 
1033 template<class... Tidx> template<class... Cols> HDF5ShowerLID<Tidx...>::HDF5ShowerLID(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1034  : lidE(std::make_unique<HDF5SLidEnergy<Tidx...>>(f, Join(name, "lidE"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1035  lid(std::make_unique<HDF5SLid<Tidx...>>(f, Join(name, "lid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1036  truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1037  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1038  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1039  vals(f, name, make_cols<Tidx..., float, float, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, unsigned short, float, short unsigned int, short unsigned int, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "shwE", "vtxE", "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "len", "view", "width", "nplanex", "nplaney", "gap", "stop.x", "stop.y", "stop.z"))
1040 {
1041 }
1042 
1043 template<class... Tidx> void HDF5ShowerLID<Tidx...>::Fill(Tidx... idxs, const caf::SRShowerLID& sr)
1044 {
1045  lidE->Fill(idxs..., sr.lidE);
1046  lid->Fill(idxs..., sr.lid);
1047  truth->Fill(idxs..., sr.truth);
1048  truthXView->Fill(idxs..., sr.truthXView);
1049  truthYView->Fill(idxs..., sr.truthYView);
1050  vals.insert(idxs..., sr.shwE, sr.vtxE, sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.len, sr.view, sr.width, sr.nplanex, sr.nplaney, sr.gap, sr.stop.x, sr.stop.y, sr.stop.z);
1051 }
1052 
1053 template<class... Tidx> template<class... Cols> HDF5SLid<Tidx...>::HDF5SLid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1054  : vals(f, name, make_cols<Tidx..., float, float, float, float, int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "ann", "anne", "annepi0", "annecos", "ismuon", "eglll", "egllt", "emulll", "emullt", "epi0lll", "epi0llt", "eplll", "epllt", "enlll", "enllt", "epilll", "epillt", "vtxgev", "pi0mass", "shwEFrac", "gap", "costheta", "invglll", "elll", "ellt", "mulll", "mullt", "dedx0", "dedx1", "dedx2", "dedx3", "dedx4", "dedx5", "dedxp0c0", "dedxp0c1", "dedxp1c0", "dedxp1c1", "dedxp2c0", "dedxp2c1", "dedxp3c0", "dedxp3c1", "dedxp4c0", "dedxp4c1", "dedxp5c0", "dedxp5c1"))
1055 {
1056 }
1057 
1058 template<class... Tidx> void HDF5SLid<Tidx...>::Fill(Tidx... idxs, const caf::SRSLid& sr)
1059 {
1060  vals.insert(idxs..., sr.ann, sr.anne, sr.annepi0, sr.annecos, sr.ismuon, sr.eglll, sr.egllt, sr.emulll, sr.emullt, sr.epi0lll, sr.epi0llt, sr.eplll, sr.epllt, sr.enlll, sr.enllt, sr.epilll, sr.epillt, sr.vtxgev, sr.pi0mass, sr.shwEFrac, sr.gap, sr.costheta, sr.invglll, sr.elll, sr.ellt, sr.mulll, sr.mullt, sr.dedx0, sr.dedx1, sr.dedx2, sr.dedx3, sr.dedx4, sr.dedx5, sr.dedxp0c0, sr.dedxp0c1, sr.dedxp1c0, sr.dedxp1c1, sr.dedxp2c0, sr.dedxp2c1, sr.dedxp3c0, sr.dedxp3c1, sr.dedxp4c0, sr.dedxp4c1, sr.dedxp5c0, sr.dedxp5c1);
1061 }
1062 
1063 template<class... Tidx> template<class... Cols> HDF5SLidEnergy<Tidx...>::HDF5SLidEnergy(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1064  : vals(f, name, make_cols<Tidx..., float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "E", "depE", "shwE", "hadE"))
1065 {
1066 }
1067 
1068 template<class... Tidx> void HDF5SLidEnergy<Tidx...>::Fill(Tidx... idxs, const caf::SRSLidEnergy& sr)
1069 {
1070  vals.insert(idxs..., sr.E, sr.depE, sr.shwE, sr.hadE);
1071 }
1072 
1073 template<class... Tidx> template<class... Cols> HDF5Shower<Tidx...>::HDF5Shower(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1074  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1075  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1076  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1077  vals(f, name, make_cols<Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, unsigned short, float, short unsigned int, short unsigned int, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "len", "view", "width", "nplanex", "nplaney", "gap", "stop.x", "stop.y", "stop.z"))
1078 {
1079 }
1080 
1081 template<class... Tidx> void HDF5Shower<Tidx...>::Fill(Tidx... idxs, const caf::SRShower& sr)
1082 {
1083  truth->Fill(idxs..., sr.truth);
1084  truthXView->Fill(idxs..., sr.truthXView);
1085  truthYView->Fill(idxs..., sr.truthYView);
1086  vals.insert(idxs..., sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.len, sr.view, sr.width, sr.nplanex, sr.nplaney, sr.gap, sr.stop.x, sr.stop.y, sr.stop.z);
1087 }
1088 
1089 template<class... Tidx> template<class... Cols> HDF5SPid<Tidx...>::HDF5SPid(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1090  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "annepi0", "annepi0el", "elll", "ellt", "glll", "gllt", "mulll", "mullt", "pi0lll", "pi0llt", "plll", "pllt", "nlll", "nllt", "pilll", "pillt", "dedx0", "dedx1", "dedx2", "dedx3", "dedx4", "dedx5"))
1091 {
1092 }
1093 
1094 template<class... Tidx> void HDF5SPid<Tidx...>::Fill(Tidx... idxs, const caf::SRSPid& sr)
1095 {
1096  vals.insert(idxs..., sr.annepi0, sr.annepi0el, sr.elll, sr.ellt, sr.glll, sr.gllt, sr.mulll, sr.mullt, sr.pi0lll, sr.pi0llt, sr.plll, sr.pllt, sr.nlll, sr.nllt, sr.pilll, sr.pillt, sr.dedx0, sr.dedx1, sr.dedx2, sr.dedx3, sr.dedx4, sr.dedx5);
1097 }
1098 
1099 template<class... Tidx> template<class... Cols> HDF5TrkME<Tidx...>::HDF5TrkME(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1100  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1101  vals(f, name, make_cols<Tidx..., float, short unsigned int, short unsigned int, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "mid", "nhitx", "nhity", "calE", "deltat", "adc", "disttotrack", "meanpos.x", "meanpos.y", "meanpos.z"))
1102 {
1103 }
1104 
1105 template<class... Tidx> void HDF5TrkME<Tidx...>::Fill(Tidx... idxs, const caf::SRTrkME& sr)
1106 {
1107  truth->Fill(idxs..., sr.truth);
1108  vals.insert(idxs..., sr.mid, sr.nhitx, sr.nhity, sr.calE, sr.deltat, sr.adc, sr.disttotrack, sr.meanpos.x, sr.meanpos.y, sr.meanpos.z);
1109 }
1110 
1111 template<class... Tidx> template<class... Cols> HDF5Prong<Tidx...>::HDF5Prong(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1112  : truth(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truth"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1113  truthXView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthXView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1114  truthYView(std::make_unique<HDF5ParticleTruth<Tidx...>>(f, Join(name, "truthYView"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1115  cvnneutron(std::make_unique<HDF5CVNNeutronDaughterResult<Tidx...>>(f, Join(name, "cvnneutron"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1116  cvnpart(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "cvnpart"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1117  cvnpart_opphorn(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "cvnpart_opphorn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1118  spprongcvnpart5label(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "spprongcvnpart5label"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1119  spprongcvnpartnumuccemid(std::make_unique<HDF5CVNParticleResult<Tidx...>>(f, Join(name, "spprongcvnpartnumuccemid"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols...)),
1120  cvnmaps(std::make_unique<HDF5PixelMap<Tidx..., unsigned int>>(f, Join(name, "cvnmaps"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "cvnmaps")+"_idx")),
1121  prongtrainingdata(std::make_unique<HDF5ProngTrainingData<Tidx..., unsigned int>>(f, Join(name, "prongtrainingdata"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "prongtrainingdata")+"_idx")),
1122  vals(f, name, make_cols<Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "nhitx", "nhity", "nplane", "maxplanecont", "maxplanegap", "calE", "weightedCalE", "start.x", "start.y", "start.z", "dir.x", "dir.y", "dir.z", "pngminx", "pngmaxx", "pngminy", "pngmaxy", "len", "view", "meantime", "maxtime", "mintime", "meantimeRes"))
1123 {
1124 }
1125 
1126 template<class... Tidx> void HDF5Prong<Tidx...>::Fill(Tidx... idxs, const caf::SRProng& sr)
1127 {
1128  truth->Fill(idxs..., sr.truth);
1129  truthXView->Fill(idxs..., sr.truthXView);
1130  truthYView->Fill(idxs..., sr.truthYView);
1131  cvnneutron->Fill(idxs..., sr.cvnneutron);
1132  cvnpart->Fill(idxs..., sr.cvnpart);
1133  cvnpart_opphorn->Fill(idxs..., sr.cvnpart_opphorn);
1134  spprongcvnpart5label->Fill(idxs..., sr.spprongcvnpart5label);
1136  for(unsigned int i = 0; i < sr.cvnmaps.size(); ++i) cvnmaps->Fill(idxs..., i, sr.cvnmaps[i]);
1137  for(unsigned int i = 0; i < sr.prongtrainingdata.size(); ++i) prongtrainingdata->Fill(idxs..., i, sr.prongtrainingdata[i]);
1138  vals.insert(idxs..., sr.nhit, sr.nhitx, sr.nhity, sr.nplane, sr.maxplanecont, sr.maxplanegap, sr.calE, sr.weightedCalE, sr.start.x, sr.start.y, sr.start.z, sr.dir.x, sr.dir.y, sr.dir.z, sr.pngminx, sr.pngmaxx, sr.pngminy, sr.pngmaxy, sr.len, sr.view, sr.meantime, sr.maxtime, sr.mintime, sr.meantimeRes);
1139 }
1140 
1141 template<class... Tidx> template<class... Cols> HDF5ProngTrainingData<Tidx...>::HDF5ProngTrainingData(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1142  : vals(f, name, make_cols<Tidx..., int, int, int, unsigned short, double, double, double, double, unsigned int, unsigned int, double, double, double, double, double, double>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "label3d", "labelx", "labely", "isprimary", "purity3d", "purityx", "purityy", "rece", "ncellx", "ncelly", "vertx", "verty", "vertz", "plength", "pangle", "pgap"))
1143 {
1144 }
1145 
1146 template<class... Tidx> void HDF5ProngTrainingData<Tidx...>::Fill(Tidx... idxs, const caf::SRProngTrainingData& sr)
1147 {
1148  vals.insert(idxs..., sr.label3d, sr.labelx, sr.labely, sr.isprimary, sr.purity3d, sr.purityx, sr.purityy, sr.rece, sr.ncellx, sr.ncelly, sr.vertx, sr.verty, sr.vertz, sr.plength, sr.pangle, sr.pgap);
1149 }
1150 
1151 template<class... Tidx> template<class... Cols> HDF5PixelMap<Tidx...>::HDF5PixelMap(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1152  : vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, unsigned char[16000]>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nplanes", "ncells", "nchan", "firstplane", "lastplane", "firstcellx", "lastcellx", "firstcelly", "lastcelly", "hitfracx", "hitfracy", "cvnmap"))
1153 {
1154 }
1155 
1156 template<class... Tidx> void HDF5PixelMap<Tidx...>::Fill(Tidx... idxs, const caf::SRPixelMap& sr)
1157 {
1158  vals.insert(idxs..., sr.nplanes, sr.ncells, sr.nchan, sr.firstplane, sr.lastplane, sr.firstcellx, sr.lastcellx, sr.firstcelly, sr.lastcelly, sr.hitfracx, sr.hitfracy, sr.cvnmap);
1159 }
1160 
1161 template<class... Tidx> template<class... Cols> HDF5CVNParticleResult<Tidx...>::HDF5CVNParticleResult(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1162  : vals(f, name, make_cols<Tidx..., float, float, float, float, float, float, float, float, float, float, float, unsigned int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "muonid", "electronid", "protonid", "neutronid", "pionid", "pizeroid", "photonid", "otherid", "emid", "hadronid", "maxval", "pdgmax"))
1163 {
1164 }
1165 
1166 template<class... Tidx> void HDF5CVNParticleResult<Tidx...>::Fill(Tidx... idxs, const caf::SRCVNParticleResult& sr)
1167 {
1168  vals.insert(idxs..., sr.muonid, sr.electronid, sr.protonid, sr.neutronid, sr.pionid, sr.pizeroid, sr.photonid, sr.otherid, sr.emid, sr.hadronid, sr.maxval, sr.pdgmax);
1169 }
1170 
1171 template<class... Tidx> template<class... Cols> HDF5CVNNeutronDaughterResult<Tidx...>::HDF5CVNNeutronDaughterResult(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1172  : vals(f, name, make_cols<Tidx..., float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "protonid", "photonid", "otherid"))
1173 {
1174 }
1175 
1176 template<class... Tidx> void HDF5CVNNeutronDaughterResult<Tidx...>::Fill(Tidx... idxs, const caf::SRCVNNeutronDaughterResult& sr)
1177 {
1178  vals.insert(idxs..., sr.protonid, sr.photonid, sr.otherid);
1179 }
1180 
1181 template<class... Tidx> template<class... Cols> HDF5ParticleTruth<Tidx...>::HDF5ParticleTruth(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1182  : motherlist(std::make_unique<Wrapped<int, Tidx..., unsigned int>>(f, Join(name, "motherlist"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "motherlist")+"_idx")),
1183  daughterlist(std::make_unique<Wrapped<int, Tidx..., unsigned int>>(f, Join(name, "daughterlist"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "daughterlist")+"_idx")),
1184  daughterVisEnergies(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "daughterVisEnergies"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "daughterVisEnergies")+"_idx")),
1185  primNeutronE(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "primNeutronE"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "primNeutronE")+"_idx")),
1186  primNeutronProcessE(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "primNeutronProcessE"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "primNeutronProcessE")+"_idx")),
1187  vals(f, name, make_cols<Tidx..., int, int, float, float, float, float, float, float, float, float, float, float, int, float, float, float, float, float, float, float, float, float, float, float, unsigned short, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "pdg", "motherpdg", "eff", "pur", "p.E", "p.px", "p.py", "p.pz", "motherp.E", "motherp.px", "motherp.py", "motherp.pz", "trkID", "start.x", "start.y", "start.z", "visE", "visEinslc", "daughterVisE", "daughterVisEinslc", "visEBirks", "visEinslcBirks", "daughterVisEBirks", "daughterVisEinslcBirks", "processMax", "processParticleE"))
1188 {
1189 }
1190 
1191 template<class... Tidx> void HDF5ParticleTruth<Tidx...>::Fill(Tidx... idxs, const caf::SRParticleTruth& sr)
1192 {
1193  for(unsigned int i = 0; i < sr.motherlist.size(); ++i) motherlist->Fill(idxs..., i, sr.motherlist[i]);
1194  for(unsigned int i = 0; i < sr.daughterlist.size(); ++i) daughterlist->Fill(idxs..., i, sr.daughterlist[i]);
1195  for(unsigned int i = 0; i < sr.daughterVisEnergies.size(); ++i) daughterVisEnergies->Fill(idxs..., i, sr.daughterVisEnergies[i]);
1196  for(unsigned int i = 0; i < sr.primNeutronE.size(); ++i) primNeutronE->Fill(idxs..., i, sr.primNeutronE[i]);
1197  for(unsigned int i = 0; i < sr.primNeutronProcessE.size(); ++i) primNeutronProcessE->Fill(idxs..., i, sr.primNeutronProcessE[i]);
1198  vals.insert(idxs..., sr.pdg, sr.motherpdg, sr.eff, sr.pur, sr.p.E, sr.p.px, sr.p.py, sr.p.pz, sr.motherp.E, sr.motherp.px, sr.motherp.py, sr.motherp.pz, sr.trkID, sr.start.x, sr.start.y, sr.start.z, sr.visE, sr.visEinslc, sr.daughterVisE, sr.daughterVisEinslc, sr.visEBirks, sr.visEinslcBirks, sr.daughterVisEBirks, sr.daughterVisEinslcBirks, sr.processMax, sr.processParticleE);
1199 }
1200 
1201 template<class... Tidx> template<class... Cols> HDF5Slice<Tidx...>::HDF5Slice(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1202  : vals(f, name, make_cols<Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float, float, float, float, unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nhit", "ncalhit", "nmiphit", "ncontplanes", "firstplane", "lastplane", "firstcell", "lastcell", "ncellsfromedge", "nnonnoise", "nnoisehit", "fracnoiseE", "fracnoisePE", "calE", "starttime", "endtime", "meantime", "tsd", "closestslicetime", "closestslicenhit", "closestslicecalE", "boxmin.x", "boxmin.y", "boxmin.z", "boxmax.x", "boxmax.y", "boxmax.z", "meanpos.x", "meanpos.y", "meanpos.z", "closestsliceminfromtop", "closestsliceminfrombottom", "closestsliceminfromfront", "closestsliceminfromback", "closestsliceminfromeast", "closestsliceminfromwest", "closestslicemindist"))
1203 {
1204 }
1205 
1206 template<class... Tidx> void HDF5Slice<Tidx...>::Fill(Tidx... idxs, const caf::SRSlice& sr)
1207 {
1209 }
1210 
1211 template<class... Tidx> template<class... Cols> HDF5Spill<Tidx...>::HDF5Spill(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1212  : intx(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "intx"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "intx")+"_idx")),
1213  inty(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "inty"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "inty")+"_idx")),
1214  bposx(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "bposx"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "bposx")+"_idx")),
1215  bposy(std::make_unique<Wrapped<float, Tidx..., unsigned int>>(f, Join(name, "bposy"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "bposy")+"_idx")),
1216  cosmiccvn(std::make_unique<HDF5CosmicCVN<Tidx..., unsigned int>>(f, Join(name, "cosmiccvn"), chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., Join(name, "cosmiccvn")+"_idx")),
1217  vals(f, name, make_cols<Tidx..., unsigned short, unsigned short, unsigned short, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long long int, float, float, float, unsigned short, unsigned short, unsigned short, float, float, float, float, short unsigned int, short unsigned int, short unsigned int, short unsigned int, unsigned int, float, unsigned int, unsigned int, unsigned int, unsigned int, float, unsigned int, int, unsigned short, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, unsigned char, short int>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "det", "ismc", "isgoodspill", "spilltimesec", "spilltimensec", "gpsspilltimesec", "gpsspilltimensec", "deltaspilltimensec", "spillpot", "livetime", "hornI", "isFHC", "is0HC", "isRHC", "posx", "posy", "widthx", "widthy", "dibfirst", "diblast", "dibmask", "maskstatus", "nmissingdcms", "fracdcm3hits", "nouttimehits", "nnoisyapds", "nmissingdcmslg", "nbaddcmslg", "dcmedgematchfrac", "nmicroslices", "ndcms", "eventincomplete", "ndiblocks", "emptydatablock", "nmicroblocks", "nemptymicroslice", "ndroppedmicroblocks", "ndatablockmissingdata", "nmicroslicedatanotpresent", "nnanoslices", "nanoslicedatanotpresent", "nanoslicenolinkstatus", "nanoslicebufferempty", "nanoslicebufferfull", "nanoslicecommerror", "nanoslicepacketerror", "nanosliceoverflowerror", "nanosliceadcerror", "trigger", "ncosmiccvn"))
1218 {
1219 }
1220 
1221 template<class... Tidx> void HDF5Spill<Tidx...>::Fill(Tidx... idxs, const caf::SRSpill& sr)
1222 {
1223  for(unsigned int i = 0; i < sr.intx.size(); ++i) intx->Fill(idxs..., i, sr.intx[i]);
1224  for(unsigned int i = 0; i < sr.inty.size(); ++i) inty->Fill(idxs..., i, sr.inty[i]);
1225  for(unsigned int i = 0; i < sr.bposx.size(); ++i) bposx->Fill(idxs..., i, sr.bposx[i]);
1226  for(unsigned int i = 0; i < sr.bposy.size(); ++i) bposy->Fill(idxs..., i, sr.bposy[i]);
1227  for(unsigned int i = 0; i < sr.cosmiccvn.size(); ++i) cosmiccvn->Fill(idxs..., i, sr.cosmiccvn[i]);
1229 }
1230 
1231 template<class... Tidx> template<class... Cols> HDF5CosmicCVN<Tidx...>::HDF5CosmicCVN(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1232  : vals(f, name, make_cols<Tidx..., int, float, float, float, float, float, float, float, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "nHits", "timeWinMin", "timeWinMax", "numuVal", "nueVal", "nutauVal", "ncVal", "cosmicVal", "passSel"))
1233 {
1234 }
1235 
1236 template<class... Tidx> void HDF5CosmicCVN<Tidx...>::Fill(Tidx... idxs, const caf::SRCosmicCVN& sr)
1237 {
1238  vals.insert(idxs..., sr.nHits, sr.timeWinMin, sr.timeWinMax, sr.numuVal, sr.nueVal, sr.nutauVal, sr.ncVal, sr.cosmicVal, sr.passSel);
1239 }
1240 
1241 template<class... Tidx> template<class... Cols> HDF5Header<Tidx...>::HDF5Header(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, Cols... cols)
1242  : vals(f, name, make_cols<Tidx..., int, unsigned short, unsigned short, unsigned short, unsigned short, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, unsigned int, unsigned int, short unsigned int, unsigned short>(chunkSize, elementsPerChunk, shuffleInts, compressionLevel, cols..., "batch", "ismc", "det", "blind", "filt", "dibfirst", "diblast", "dibmask", "maskstatus", "year", "month", "day", "doy", "hour", "minute", "second", "unixtime", "subevtstarttime", "subevtendtime", "subevtmeantime", "nbadchan", "ntotchan", "gain", "finetiming"))
1243 {
1244 }
1245 
1246 template<class... Tidx> void HDF5Header<Tidx...>::Fill(Tidx... idxs, const caf::SRHeader& sr)
1247 {
1248  vals.insert(idxs..., sr.batch, sr.ismc, sr.det, sr.blind, sr.filt, sr.dibfirst, sr.diblast, sr.dibmask, sr.maskstatus, sr.year, sr.month, sr.day, sr.doy, sr.hour, sr.minute, sr.second, sr.unixtime, sr.subevtstarttime, sr.subevtendtime, sr.subevtmeantime, sr.nbadchan, sr.ntotchan, sr.gain, sr.finetiming);
1249 }
1250 
1251 // Instantiate the ones we'll use
1253 template HDF5Record<unsigned int, unsigned int, int, unsigned int, unsigned short>::HDF5Record(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, const char*, const char*, const char*, const char*, const char*);
1254 
1256 template HDF5Spill<unsigned int, unsigned int, unsigned int>::HDF5Spill(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, const char*, const char*, const char*);
1257 
1259 template HDF5Neutrino<unsigned int, unsigned int, int, unsigned int>::HDF5Neutrino(hid_t f, const std::string& name, const size_t& chunkSize, const size_t& elementsPerChunk, const bool& shuffleInts, const size_t& compressionLevel, const char*, const char*, const char*, const char*);
1260 
1261 } // namespace
unsigned short nhit
number of hits
std::vector< float > intx
Definition: SRSpill.h:47
int cosfwdcell
cosmictrack projected # cells from end point forwards to det edge
Definition: SRContain.h:30
NuonE output.
Definition: SRNuonEResult.h:13
float x
Bjorken x = (k-k&#39;)^2 / (2*p.q), [Dimensionless].
Definition: SRNeutrino.h:78
SRLorentzVector p
Momentum 4-vector.
Definition: SRTrueMichelE.h:27
Information about the neutrino production. Docs from http://www.hep.utexas.edu/~zarko/wwwgnumi/v19/v1...
Definition: SRBeam.h:14
void Fill(Tidx...idxs, const caf::SRCosmicCVN &sr)
Represents output from SlcMEFilter.
Definition: SRSlcME.h:11
float ncid
Likelihood Neutral Current.
Definition: SRCVNResult.h:23
float visEinslcNeutron
Sum of FLS hits that made CellHits from this neutrino in this subevent [GeV] that were daughters of n...
Definition: SRNeutrino.h:32
float time
Time [ns].
Definition: SRElastic.h:25
hep_hpc::hdf5::Ntuple< Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, unsigned short, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, unsigned short, unsigned short > vals
Definition: HDF5Record.h:1173
std::unique_ptr< HDF5Cosmic< Tidx..., unsigned int > > allcosmics
Definition: HDF5Record.h:1151
HDF5CVNNeutronDaughterResult(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
std::unique_ptr< HDF5SliceLID< Tidx... > > slicelid_opphorn
Definition: HDF5Record.h:935
float efracp4
Definition: SRXnue.h:24
HDF5CVNFeatures(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:89
unsigned char cvnlabmap[16000]
store 1D array with hit labels
Definition: SRPixelObjMap.h:33
unsigned short nhity
number of hits in y-view
Definition: SRProng.h:32
int ncell
number of cells in slice
Definition: SRRvp.h:20
Det_t det
Detector, ND = 1, FD = 2, NDOS = 3.
Definition: SRHeader.h:28
int ismuon
Boolean to distinguish muons from electrons.
Definition: SRSLid.h:26
HDF5 encoding of SRFuzzyKProng.
Definition: HDF5Record.h:1271
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float > vals
Definition: HDF5Record.h:707
std::unique_ptr< HDF5ParticleTruth< Tidx... > > truth
Definition: HDF5Record.h:1165
HDF5 encoding of SRNCCosRej.
Definition: HDF5Record.h:434
void Fill(Tidx...idxs, const caf::SRELid &sr)
Definition: HDF5Record.cxx:566
float pngmaxx
Maximum X that contain all the cell hits. [cm].
Definition: SRProng.h:41
hep_hpc::hdf5::Ntuple< Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, float, float, float, float, float, float, unsigned int, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float > vals
Definition: HDF5Record.h:796
SRShowerLID shwlid
Shower information.
Definition: SRFuzzyKProng.h:19
float daughterVisE
Visible Energy in detector for all daughters of this particle, all summed FLSHits that made CellHits ...
void Fill(Tidx...idxs, const caf::SRTrackBranch &sr)
Definition: HDF5Record.cxx:919
float dedxp1c1
Definition: SRSLid.h:79
void Fill(Tidx...idxs, const caf::SRElastic &sr)
Definition: HDF5Record.cxx:787
float calE
Calorimetric Energy [GeV].
Definition: SRTrkME.h:26
HDF5 encoding of SRGlobalTruth.
Definition: HDF5Record.h:258
float closestslicemindist
minimum distance to the closest slice in time domain
Definition: SRSlice.h:56
SRRegCVNResult regcvn
Regression CVN information.
Definition: SRFuzzyKProng.h:21
float remid
ReMId value of the parent slice.
Definition: SRMRCCParent.h:44
float pllt
Proton ll for ltransverse shower.
Definition: SRSPid.h:33
std::unique_ptr< HDF5NuonEResult< Tidx... > > nuone_opphorn
Definition: HDF5Record.h:936
hep_hpc::hdf5::Ntuple< Tidx..., unsigned int > vals
Definition: HDF5Record.h:266
HDF5PixelObjMap(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:79
float visEinslcNeutronBirks
Sum of FLS hits that made CellHits from this neutrino in this subevent [GeV] that were daughters of n...
Definition: SRNeutrino.h:36
SRVector3D dir
Shower direction at start point [unit vector recommended].
Definition: SRTrack.h:36
int potnum
Proton event number, indicates which simulated proton was taken.
Definition: SRBeam.h:34
float annENoCos
ann output, with E without cosTheta
Definition: SRJMEid.h:27
float shwE
reconstructed shower energy [GeV]
Definition: SRJMShower.h:41
float avedEdxtrk2Last4Cells
average dEdx for second track in slice for last 4 cells
Definition: SRNumuSandbox.h:33
HDF5TrkME(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
std::unique_ptr< Wrapped< float, Tidx..., unsigned int > > output
Definition: HDF5Record.h:179
float gap
gap from shower start to ElasticArms vertex [cm]
Definition: SRJMShower.h:38
Contains the quasielastic muon PID (QePId) output.
Definition: SRQepid.h:17
An SREnergyBranch contains vectors of energy objects.
float sh1exclenergy
Leading shower excluded energy.
Definition: SRNueSandbox.h:88
float gap
gap from vertex to start of shower
Definition: SRJMEid.h:57
const XML_Char * name
Definition: expat.h:151
unsigned long int spilltimesec
Spill time in seconds [s].
Definition: SRSpill.h:33
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, int, float, float, float, int, float, float, float > vals
Definition: HDF5Record.h:454
float lstmmuon_opphorn
lstmmuon trained with opposite horn current
Definition: SRNumuEnergy.h:58
int ndecay
"neutrino decay". Decay mode that produced neutrino
Definition: SRBeam.h:43
float daughterVisEinslcBirks
Visible Energy in detector for all daughters of this particle, slice summed FLSHits that made CellHit...
unsigned int nmissingdcmslg
# of DCMS with 63 or more bad FEBs (LiveGeometry, subset of baddcmslg)
Definition: SRSpill.h:68
std::unique_ptr< HDF5MRProperties< Tidx..., unsigned int > > mrdif
Definition: HDF5Record.h:1206
float angleerror
1-sigma error from using quasielastic angle formula for neutrino energy
Definition: SRNumuEnergy.h:30
float evtetot
event total energy on showers
Definition: SRNueSandbox.h:77
HDF5 encoding of SREnergyBranch.
Definition: HDF5Record.h:1082
HDF5 encoding of SRFuzzyK.
Definition: HDF5Record.h:1310
HDF5Header(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
float scattAngtrk2
scattering angle for second track in slice
Definition: SRNumuSandbox.h:39
SRCVNResult cvnoldpresel_opphorn
cvnoldpresel trained for opposite HC
Definition: SRIDBranch.h:66
float fracmodalhits
See FillNueSandbox::FracModalHits.
Definition: SRNueSandbox.h:144
std::unique_ptr< HDF5Slice< Tidx... > > slc
Definition: HDF5Record.h:1374
SRSliceLID slicelid
Output of SliceLID classifier.
Definition: SRIDBranch.h:58
SRBpfTrack muon
The track reconstructed under the muon assumption.
Definition: SRBpf.h:14
ofstream output
SRParticleTruth truthXView
Truth information for the prong.
Definition: SRProng.h:47
float pilll
Pion ll for longitudinal shower.
Definition: SRSPid.h:36
float dedx4
Plane Dedx.
Definition: SRJMEid.h:40
float avedEdxlast20cm
Average dE/dx in the last 20 cm approximately.
Definition: SRTrack.h:73
float dedxp4c1
Definition: SRSLid.h:85
SRVector3D vtx
Vertex position in detector coordinates [cm].
Definition: SRNeutrino.h:47
Contains the SPID pid information for a shower (slid::ShowerLID objects).
Definition: SRSPid.h:15
double bdt
Definition: SRXnue.h:26
float maxInelasticProtonTrueE
Energy of the proton daughter going through the most energetic inelastic process. ...
unsigned int noutput
Number of entries in output vector.
Definition: SRNuonEResult.h:27
HDF5TrackBase(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:927
float slicemeanx
slice&#39;s Cluster::MeanXYZ().X()
Definition: SRNueSandbox.h:28
float visE
Sum of FLS hits that made CellHits from this neutrino [GeV].
Definition: SRNeutrino.h:29
std::unique_ptr< Wrapped< float, Tidx..., unsigned int > > vuniv
Definition: HDF5Record.h:292
SRPresel rockpre
Official rock preselection information.
Definition: SRIDBranch.h:45
float disttoslc
Minimum distance between hits in ME and parent (cm)
Definition: SRSlcME.h:24
float fscattsum
sum of scattering angles (Fernanda)
Definition: SRCosRej.h:43
float scatllh
Log-likelihood value from scattering angle.
Definition: SRRemid.h:26
std::unique_ptr< Wrapped< float, Tidx..., unsigned int > > proton_univ
Definition: HDF5Record.h:279
std::unique_ptr< HDF5ParticleTruth< Tidx... > > truthYView
Definition: HDF5Record.h:1020
float mincellcosmic
Mincell using all cosmictracker.
Definition: SRNueSandbox.h:52
unsigned int interaction
Class of the event.
std::unique_ptr< HDF5Kalman< Tidx... > > kalman
Definition: HDF5Record.h:1303
std::vector< float > bposx
Definition: SRSpill.h:49
unsigned int nplanes
number of planes in pixel map
Definition: SRPixelObjMap.h:17
HDF5BpfTrack(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:877
float ann
ann output
Definition: SRJMEid.h:21
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float > vals
Definition: HDF5Record.h:719
void Fill(Tidx...idxs, const caf::SRTrackBase &sr)
Definition: HDF5Record.cxx:933
unsigned short maxplanecont
maximum number of contiguous planes in prong
Definition: SRShower.h:29
float visE
Visible Energy in detector, all summed FLSHits that made CellHits [GeV].
Definition: SRTrueMichelE.h:22
float measfrac
Fraction of planes used to measure dE/dx.
Definition: SRMuId.h:24
float enllt
Electron - neutron LL for transverse shower.
Definition: SRSLid.h:45
HDF5Spill(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
std::unique_ptr< HDF5ParticleTruth< Tidx... > > truthYView
Definition: HDF5Record.h:1235
HDF5SPid(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
std::unique_ptr< HDF5Header< Tidx... > > hdr
Definition: HDF5Record.h:1372
float time
Time from electron vertex [GeV].
float neutronid
Likelihood neutron.
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float, float, float, float, int, int, float, int, float, float, float, float, float, float, float, float, float, float, int, int, float, float, float, float, float, float, float, float, int, int, float, float, float > vals
Definition: HDF5Record.h:345
int labelx
Class of the X view prong.
SRBpf bpf
Container class for BreakPointFitter tracks.
Definition: SRFuzzyKProng.h:20
float mvapiE
measure of reconstructed energy assuming this track is a charged pion
Definition: SRBpfTrack.h:35
short ncosmic
Number of cosmics in cosmic vector (0 or 1)
Definition: SRTruthBranch.h:38
float annecos
e/cosmic ann output with energy for the slice, currently the same as the most energetic shower ...
Definition: SRELid.h:28
HDF5 encoding of SRNCPi0BkgRej.
Definition: HDF5Record.h:422
float shwE
Energy of shower [GeV].
Definition: SRSLidEnergy.h:21
float time
Time [ns].
Definition: SRVertex.h:23
unsigned short nhitx
number of hits in x-view
int pdg
pdg code for the tracking assumption used to make the best muon track
Definition: SRBpfId.h:27
HDF5PixelMap(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
std::unique_ptr< HDF5ParticleTruth< Tidx... > > truth
Definition: HDF5Record.h:1018
unsigned int idxmuonid
Index number of the highest scoring muonid track.
Definition: SRKalman.h:33
std::unique_ptr< HDF5CosmicCVN< Tidx..., unsigned int > > cosmiccvn
Definition: HDF5Record.h:1044
Variables describing Michel E&#39;s found around the end of a track.
Definition: SRPixelMap.h:13
HDF5 encoding of SRGeant4Weights.
Definition: HDF5Record.h:270
float sh1gap
Leading shower gap.
Definition: SRNueSandbox.h:94
unsigned short nplaney
number of planes spanned in y view
float visENeutronBirks
Sum of FLS hits that made CellHits from this neutrino [GeV] that were daughters of neutrons with birk...
Definition: SRNeutrino.h:35
void Fill(Tidx...idxs, const caf::SRTrueParticle &sr)
Definition: HDF5Record.cxx:326
float piplus_cv
Reweight for the piplus central value (cv)
unsigned int firstcellx
global position of first x cell in map
Definition: SRPixelMap.h:26
float rawgevhad
Uncorrected hadronic energy [GeV].
Definition: SRNueEnergy.h:20
float ellt
Electron ll for ltransverse shower.
Definition: SRSPid.h:25
Reweight information for geant4 systematic.
float sh1energy
Leading shower energy.
Definition: SRNueSandbox.h:87
float inelasticPhotonMaxVisEinslc
Vis energy in slc coming from max inelastic process with photons in final state linked to primary...
float anne
ann with energy output
Definition: SRSLid.h:23
int ppmedium
"parent particle medium". Tracking medium number where parent was produced
Definition: SRBeam.h:64
float kalchisq
chisq value of slope fit (kalmantrack)
Definition: SRCosRej.h:62
float unixtime
unix time of spill
Definition: SRHeader.h:45
float pionid
Likelihood pion.
HDF5 encoding of SRRegCVNResult.
Definition: HDF5Record.h:662
unsigned short maskstatus
0 no mask found in DB, 1 mask used ok, 2 masking turned off. If 0 or 2 dibmask is instead the configu...
Definition: SRHeader.h:35
SRCVNResult cvnnocosmics
Output from CVN - No cosmics ued in training (many-class PID)
Definition: SRIDBranch.h:56
float epi0llt
Electron - Pi0 ll for ltransverse shower.
Definition: SRJMEid.h:47
float weightedCalE
calE, weighted to take into account hits shared between prongs [GeV]
Definition: SRProng.h:37
float trkbakdist
Kalmantrack projected distance (cm) from start point backwards to det edge.
Definition: SRTrack.h:69
float glll
Gamma ll for longitudinal shower.
Definition: SRSPid.h:26
HDF5 encoding of SRParticleTruth.
Definition: HDF5Record.h:771
Event ID training variables.
std::vector< float > daughterVisEnergies
Energy of each particle contributing to the prong.
SRNusSandbox nus
Sandbox for group.
Definition: SRSandbox.h:28
float efrac6plwin
largest fraction of energy in a 6 plane window out of total slice
Definition: SRRvp.h:28
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float > vals
Definition: HDF5Record.h:306
bool blind
if true, record has been corrupted for blindness
Definition: SRHeader.h:29
float visEinslc
Sum of FLS hits that made CellHits from this neutrino in this subevent [GeV].
Definition: SRNeutrino.h:30
float missE
sum of energy of particles that leave detector. example cut: missE/trueE > 0.01 is truly uncontained ...
Definition: SRContain.h:21
SRHeader hdr
Header branch: run, subrun, etc.
float muonid
Likelihood muon.
Reweight information for a single GENIE systematic.
float orphCalE
calorimetric energy of hits that don&#39;t appear in any FuzzyK prongs
Definition: SRFuzzyK.h:30
SRParticleTruth truthXView
Truth information for the prong.
HDF5Vertex(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:759
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float > vals
Definition: HDF5Record.h:1333
short faveidxeffthenpur
Index of favorite in allnus when neutrinos are sorted by efficiency and slices break ties by purity...
Definition: SRTruthBranch.h:35
THE MAIN GENIE PROJECT NAMESPACE
Definition: GeneratorBase.h:8
bool is0HC
Definition: SRSpill.h:44
SRVector3D dir
Shower direction at start point [unit vector recommended].
Definition: SRShower.h:33
std::unique_ptr< HDF5IDBranch< Tidx... > > sel
Definition: HDF5Record.h:1379
SRVector3D enter
Cosmic entrance point in detector coordinates. [cm] When the primary doesn&#39;t enter the detector...
Definition: SRCosmic.h:40
float dedx0
Plane dedx for e/photon/pi0 identification.
Definition: SRSPid.h:38
float Eres1
Estimated event energy resolution (GeV) (using an unoscillated training sample)
Definition: SRBPFEnergy.h:19
float elll
electron ll for longitudinal shower
Definition: SRJMEid.h:61
HDF5Veto(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:471
void Fill(Tidx...idxs, const caf::SRPixelObjMap &sr)
Definition: HDF5Record.cxx:84
float ndhadcalactE
Near detector – hadronic calorimetric energy NOT on the muon track in active region [GeV]...
Definition: SRNumuEnergy.h:42
float nueid
Likelihood of Charge Current NuE.
Definition: SRSliceLID.h:14
unsigned int npizero
Number of &#39;s after neutrino reaction, before FSI.
Definition: SRNeutrino.h:65
float daughterVisEinslc
Visible Energy in detector for all daughters of this particle, slice summed FLSHits that made CellHit...
float mvapiE
PionReco measure of particle energy, assuming a charged pion.
Definition: SRFuzzyKProng.h:29
SRBeam beam
Information about neutrino production.
Definition: SRNeutrino.h:93
unsigned int ncells
number of cells in pixel map
Definition: SRPixelObjMap.h:21
float ecfNu
Energy Containment Fraction of the mother neutrino.
Definition: SRNueSandbox.h:64
float shwEFrac
fraction of energy of leading shower out of total energy of slice
Definition: SRSLid.h:50
hep_hpc::hdf5::Ntuple< Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, double, double, double > vals
Definition: HDF5Record.h:144
float ndtrklenact
Near detector – muon track length in active region [cm].
Definition: SRNumuEnergy.h:37
float distallpngbottom
Definition: SRNueCosRej.h:95
float emullt
Electron - muon ll for ltransverse shower.
Definition: SRJMEid.h:45
std::vector< float > components
Principal components of output.
Definition: SRCVNFeatures.h:18
float prongEbal3D
the energy balance between the two highest energy 3D prongs in slice
Definition: SRRvp.h:31
unsigned int ncellsfromedge
minimum number of cells to edge of detector
Definition: SRHadClust.h:30
float ndtrkcaltranE
Near detector – muon calorimetric energy in transition plane [GeV].
Definition: SRNumuEnergy.h:40
Perform a "2 point" Hough transform on a collection of hits.
Definition: Hough2P.cxx:20
void Fill(Tidx...idxs, const caf::SRTrack &sr)
Definition: HDF5Record.cxx:986
std::unique_ptr< HDF5Shower< Tidx..., unsigned int > > shwlid
Definition: HDF5Record.h:1118
float ymaxt
y position of hit closest to edge in +Y dimension that has > 100 photoelectons (TODO: use pecorr) ...
Definition: SRContain.h:63
std::unique_ptr< Wrapped< float, Tidx..., unsigned int > > daughterVisEnergies
Definition: HDF5Record.h:780
SRHadClust hadclust
Cluster information for hits in slice but not on muon track (track with higest ReMId value) ...
Definition: SRNumuEnergy.h:50
HDF5Contain(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:481
int ncellsfromedge
number of cells from detector edge
Definition: SRMRCCParent.h:37
float evtmaxx
max x of a event, looping over all showers
Definition: SRNueSandbox.h:81
Variables describing Michel E&#39;s found around the end of a track.
Definition: SRSliceMap.h:13
std::unique_ptr< HDF5BpfTrack< Tidx... > > pion
Definition: HDF5Record.h:1252
float meanyexp
Hadronic y of matches, "exp".
Definition: SRLem.h:32
hep_hpc::hdf5::Ntuple< Tidx..., short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, short unsigned int, float, float, float, float, float, float, float, float, unsigned short, float, short unsigned int, short unsigned int, float, float, float, float, float, float > vals
Definition: HDF5Record.h:230
Wrap a basic datatype up as if it&#39;s a class with a single member.
Definition: HDF5Record.h:122
void Fill(Tidx...idxs, const caf::SRContain &sr)
Definition: HDF5Record.cxx:486
float costhetatrue
cosine of angle between cosmic trk dir and true dir of most contributing particle ...
Definition: SRCosRej.h:26
hep_hpc::hdf5::Ntuple< Tidx..., float, float, float, float > vals
Definition: HDF5Record.h:634
std::vector< SRMRProperties > mrdif
cosmogenic DiF shower properties
Definition: SRTrack.h:54
SRCVNParticleResult cvnpart_opphorn
cvnpart trained with opposite horn current
Definition: SRProng.h:51
float ann
ann output
Definition: SRSLid.h:22
SRCVNResult cvnnocosmics_opphorn
cvncosmics trained for opposite HC
Definition: SRIDBranch.h:67
float avedEdxtrk1
average dEdx for first track in slice
Definition: SRNumuSandbox.h:30
HDF5 encoding of SRJMEid.
Definition: HDF5Record.h:234
float evtsumpt
event total transverse momentum
Definition: SRNueSandbox.h:73
std::vector< SRProng > png2d
Vector of 2D prong objects.
Definition: SRFuzzyK.h:20
float cfitspeed
fit inverse speed (ns/cm) of Hough timing fit (TimingFit module) for cosmic track ...
Definition: SRCosRej.h:56
SRVector3D meanpos
The mean position of the ME cluster.
Definition: SRSlcME.h:25
unsigned int lastplane
last plane
Definition: SRSlice.h:27
float mutimediffbydist
Definition: SRNueCosRej.h:193
SRCosRej cosrej
Output from CosRej (Cosmic Rejection)
Definition: SRIDBranch.h:47
float elasticProtonSumVisEinslc
Vis energy in slc coming from sum of elastic processes with protons in final state linked to primary...
float prong2dvertexenergyvolume20
Vertex Energy calculated by all the hits belong to 2D prong using volume2 20cm.
Definition: SRElastic.h:37
unsigned int firstplane
first plane
Definition: SRSlice.h:26
std::vector< float > piplus_univ
Reweight values for the piplus multi-universe.
size_t ntracks
Definition: SRKalman.h:23
HDF5 encoding of SRCosRej.
Definition: HDF5Record.h:458
void Fill(Tidx...idxs, const caf::SRNueSandbox &sr)
Definition: HDF5Record.cxx:166
float q2
Squared momentum transfer [GeV^2].
Definition: SRNeutrino.h:77
float eglll
Plane Dedx.
Definition: SRJMEid.h:42
dictionary components
void Fill(Tidx...idxs, const caf::SRTrueMichelE &sr)
Definition: HDF5Record.cxx:372
float muanglediffbytime
Definition: SRNueCosRej.h:206
unsigned int lastcelly
global position of last y cell in map
Definition: SRPixelMap.h:29
float shiftedtrkccE
Track length cc neutrino energy GeV
Definition: SRNumuEnergy.h:28
float vtxgev
Energy of slice in vertex region.
Definition: SRJMEid.h:54
void Fill(Tidx...idxs, const caf::SRSandbox &sr)
Definition: HDF5Record.cxx:131
hep_hpc::hdf5::Ntuple< Tidx..., unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, unsigned char > vals
Definition: HDF5Record.h:743
float closestsliceminfromback
minimum distance to edge of detector in the closest slice
Definition: SRSlice.h:53
unsigned short nhity
number of hits in yview
Definition: SRTrkME.h:25
SRLorentzVector p
True energy 4-vector of the best matched particle.
A vertex found by the VertexDT algorithm.
Definition: SRVertexDT.h:13
float mincellkalman
Mincell using regression through event (MIP frac events)
Definition: SRNueSandbox.h:61
SRNDSandbox nd
Definition: SRSandbox.h:29
float trknonqeE
Track length non-quasielastic neutrino energy [GeV].
Definition: SRNumuEnergy.h:26
float dedx1
Definition: SRSLid.h:67
float rawgevslice
Uncorrected slice energy [GeV].
Definition: SRNueEnergy.h:21
float enddist
Definition: SRTrack.h:65
std::unique_ptr< HDF5ParticleTruth< Tidx... > > truthYView
Definition: HDF5Record.h:1204
unsigned short nplane
number of planes spanned
Definition: SRTrack.h:30
std::vector< SRVertexDT > vdt
Vector of vertices found by VertexDT.
float pi0E
Energy of largest primary pi0.
Definition: SRNueSandbox.h:39
unsigned int idxremid
index number of the best ReMId track
Definition: SRKalman.h:32
float elasticProtonSumVisE
Visible energy coming from sum of elastic processes with protons in final state linked to primary...
float hadEinmucat
hadronic energy in muon catcher and transition planes
Definition: SRMRCCParent.h:64
float cospidbdtg
NC cosrej PID. A Keras using 15 variables.
Definition: SRNCCosRej.h:23
float E
Energy [GeV].
Definition: SRSLidEnergy.h:18
float mullt
Muon ll for ltransverse shower.
Definition: SRSPid.h:29
float len
Track length of identified track.
Definition: SRRemid.h:28
HDF5FuzzyKProng(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:807
std::vector< float > proton_univ
Reweight values for the proton multi-universe.
std::unique_ptr< HDF5ELid< Tidx... > > lid
Definition: HDF5Record.h:914
int nanoslicebufferempty
# of nanoslices reporting BufferEmpty
Definition: SRSpill.h:91
float p1Fmip
Definition: SRXnue.h:18
hep_hpc::hdf5::Ntuple< Tidx..., int, float, float, float, float, float, float, float, unsigned short > vals
Definition: HDF5Record.h:808
float epillt
Electron - pion ll for ltransverse shower.
Definition: SRJMEid.h:53
float azimuth
Azimuth angle (w.r.t y-axis)
Definition: SRCosmic.h:38
HDF5NCPi0BkgRej(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:491
float chi2Scat
chi^2 from the scattering angle
Definition: SRBpfTrack.h:21
SRNumuSandbox numu
Sandbox for group.
Definition: SRSandbox.h:27
int tptype
"target particle type". Parent particle ID exiting the target (PDG code)
Definition: SRBeam.h:37
SRVector3D mipmax
Maximum coordinates of box with MIP range hits.
Definition: SRNueSandbox.h:65
HDF5Sandbox(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:123
int inttype
Interaction type enum int_type::[...].
Definition: SRNeutrino.h:61
unsigned short day
day of spill within month
Definition: SRHeader.h:39
float woscdumb
Simplest possible oscillation weight.
Definition: SRNeutrino.h:57
float cosyposattrans
Y position of cosmic track at transition (ND only, use to check if went through air gap) ...
Definition: SRContain.h:49
SRVector3D boxmax
Maximum coordinates box containing all the hits [cm].
Definition: SRSlice.h:47
hep_hpc::hdf5::Ntuple< Tidx..., size_t, size_t > vals
Definition: HDF5Record.h:1361
HDF5Rvp(hid_t f, const std::string &name, const size_t &chunkSize, const size_t &elementsPerChunk, const bool &shuffleInts, const size_t &compressionLevel, Cols...cols)
Definition: HDF5Record.cxx:531
float len
track length [cm]
Definition: SRProng.h:44
std::vector< SRCosmicCVN > cosmiccvn
Contain cosmic CVN scores for all time windows in event.
Definition: SRSpill.h:100
hep_hpc::hdf5::Ntuple< Tidx..., size_t, size_t, size_t, size_t, size_t > vals
Definition: HDF5Record.h:1107
std::vector< SRTrkME > trkcosmic
Definition: SRMichelE.h:24
std::unique_ptr< W