8 kIsFD = kDetID == detector.kFD
17 kVeto =
Cut(
lambda tables: tables[
'rec.sel.veto'][
'keep'] == 1)
20 kHasVtx =
Cut(
lambda tables: tables[
'rec.vtx.elastic'][
'IsValid'] == 1)
21 kHasPng =
Cut(
lambda tables: tables[
'rec.vtx.elastic.fuzzyk'][
'npng'] > 0)
31 df = tables[
'rec.slc']
32 return (df[
'meantime'] > 25000.0) & (df[
'meantime'] < 475000.0)
33 kRemoveDAQTimingEdges =
Cut(kRemoveDAQTimingEdges)
37 df = tables[
'rec.slc']
38 return ( ((df[
'meantime'] - 216000.0)/1000.0) % 15 ) > 1.0
39 kRemoveCosmicCVNOverlaps =
Cut(kRemoveCosmicCVNOverlaps)
41 kTimingCuts = kRemoveDAQTimingEdges & kRemoveCosmicCVNOverlaps
62 for i
in range(fp, 14, 1):
68 for i
in range(fp, -1, -1):
74 for i
in range(lp, 14, 1):
80 for i
in range(lp, -1, -1):
85 return (fpmin==lpmin) & (fpmax==lpmax) & (lpmax-fpmin+1>=4)
88 mask = tables[
'rec.hdr'][
'dibmask']
89 fp = tables[
'rec.slc'][
'firstplane']//64
90 lp = tables[
'rec.slc'][
'lastplane']//64
91 df = mask.apply(
lambda x:
bin(x)[2:].zfill(14))
92 df = pd.concat([df,fp,lp],axis=1)
93 return df.apply(kDibMaskHelper, axis=1)
94 kNueApplyMask =
Cut(kNueApplyMask)
96 kNueDQ = kHasVtx & kHasPng & (kHitsPerPlane < 8)
98 kNueBasicPart = kVeto & kIsFD & kNueDQ & kNueApplyMask
101 kNuePresel = (kNueEnergy > 1) & (kNueEnergy < 4) & \
102 (kNHit > 30) & (kNHit < 150) & \
103 (kLongestProng > 100) & (kLongestProng < 500)
105 kNueProngContainment = (kDistAllTop > 63) & (kDistAllBottom > 12) & \
106 (kDistAllEast > 12) & (kDistAllWest > 12) & \
107 (kDistAllFront > 18) & (kDistAllBack > 18)
109 kNueBackwardCut = ((kDistAllBack < 200) & (kSparsenessAsymm < -0.1)) | (kDistAllBack >= 200)
111 kNuePtPCut = (kPtP < 0.58) | ((kPtP >= 0.58) & (kPtP < 0.8) & (kMaxY < 590)) | ((kPtP >= 0.8) & (kMaxY < 350))
113 kNueCorePart = kNueProngContainment & kNueBackwardCut & kNuePtPCut & kNuePresel
115 kNueCorePresel = kNueBasicPart & kNueCorePart
123 dfRHC = df[
kRHC(tables)==1] >= kNueCVNRHC
124 dfFHC = df[
kRHC(tables)!=1] >= kNueCVNFHC
126 return pd.concat([dfRHC, dfFHC])
127 kNueCVNCut =
Cut(kNueCVNCut)
130 kNueFD = kNueCVNCut & kNueCorePresel
133 check = tables[
'rec.vtx.elastic'][
'rec.vtx.elastic_idx'] == 0
134 df = tables[
'rec.vtx.elastic'][check]
135 return (df[
'vtx.x'] > -100) & \
136 (df[
'vtx.x'] < 160) & \
137 (df[
'vtx.y'] > -160) & \
138 (df[
'vtx.y'] < 100) & \
139 (df[
'vtx.z'] > 150) & \
141 kNueNDFiducial =
Cut(kNueNDFiducial)
144 df = tables[
'rec.vtx.elastic.fuzzyk.png.shwlid']
145 df_trans = df[[
'start.y',
'stop.y',
'start.x',
'stop.x']]
146 df_long = df[[
'start.z',
'stop.z']]
148 return ((df_trans.min(axis=1) > -170) & (df_trans.max(axis=1) < 170) & \
149 (df_long.min(axis=1) > 100) & (df_long.max(axis=1) < 1225)).groupby(level=KL).agg(np.all)
150 kNueNDContain =
Cut(kNueNDContain)
152 kNueNDFrontPlanes =
Cut(
lambda tables: tables[
'rec.sel.contain'][
'nplanestofront'] > 6)
154 kNueNDNHits = (kNHit >= 20) & (kNHit <= 200)
156 kNueNDEnergy = (kNueEnergy < 4.5)
158 kNueNDProngLength = (kLongestProng > 100) & (kLongestProng < 500)
160 kNueNDPresel = kNueDQ & kNueNDFiducial & kNueNDContain & kNueNDFrontPlanes & \
161 kNueNDNHits & kNueNDEnergy & kNueNDProngLength
163 kNueNDCVNSsb = kNueNDPresel & kNueCVNCut
174 df_numutrkcce=tables[
'rec.energy.numu'][
'trkccE']
175 df_remid=tables[
'rec.sel.remid'][
'pid']
176 df_nhit=tables[
'rec.slc'][
'nhit']
177 df_ncontplanes=tables[
'rec.slc'][
'ncontplanes']
178 df_cosmicntracks=tables[
'rec.trk.cosmic'][
'ntracks']
179 return(df_numutrkcce > 0) &\
182 (df_ncontplanes > 4) &\
183 (df_cosmicntracks > 0)
184 kNumuBasicQuality =
Cut(kNumuBasicQuality)
186 kNumuQuality = kNumuBasicQuality & (kCCE < 5.)
190 kNumuProngsContainFD = (kDistAllTop > 60) & (kDistAllBottom > 12) & (kDistAllEast > 16) & \
191 (kDistAllWest > 12) & (kDistAllFront > 18) & (kDistAllBack > 18)
202 for i
in range(fd, 14, 1):
203 if mask[13-i] ==
'0':
208 for i
in range(fd, -1, -1):
209 if mask[13-i] ==
'0':
214 return ((l[1]-64*dmin) > 1) & ((64*(dmax+1)-l[2]-1) > 1)
217 mask = tables[
'rec.hdr'][
'dibmask']
218 fp = tables[
'rec.slc'][
'firstplane']
219 lp = tables[
'rec.slc'][
'lastplane']
220 df = mask.apply(
lambda x:
bin(x)[2:].zfill(14))
221 df = pd.concat([df,fp,lp],axis=1)
222 df = df.apply(kNumuDibMaskHelper, axis=1, result_type=
'reduce')
224 df_containkalfwdcell = tables[
'rec.sel.contain'][
'kalfwdcell'] > 6
225 df_containkalbakcell = tables[
'rec.sel.contain'][
'kalbakcell'] > 6
226 df_containcosfwdcell = tables[
'rec.sel.contain'][
'cosfwdcell'] > 0
227 df_containcosbakcell = tables[
'rec.sel.contain'][
'cosbakcell'] > 7
229 return df & df_containkalfwdcell & df_containkalbakcell & \
230 df_containcosfwdcell & df_containkalbakcell
231 kNumuOptimizedContainFD =
Cut(kNumuOptimizedContainFD)
233 kNumuContainFD = kNumuProngsContainFD & kNumuOptimizedContainFD
235 kNumuNoPIDFD = kNumuQuality & kNumuContainFD
238 df_ncellsfromedge = tables[
'rec.slc'][
'ncellsfromedge']
240 df_ntracks = tables[
'rec.trk.kalman'][
'ntracks']
241 df_remid = tables[
'rec.trk.kalman'][
'idxremid']
242 df_firstplane = tables[
'rec.slc'][
'firstplane']
243 df_lastplane = tables[
'rec.slc'][
'lastplane']
245 first_trk = tables[
'rec.trk.kalman.tracks'][
'rec.trk.kalman.tracks_idx'] == 0
246 df_startz = tables[
'rec.trk.kalman.tracks'][first_trk][
'start.z']
247 df_stopz = tables[
'rec.trk.kalman.tracks'][first_trk][
'stop.z']
249 df_containkalposttrans = tables[
'rec.sel.contain'][
'kalyposattrans']
250 df_containkalfwdcellnd = tables[
'rec.sel.contain'][
'kalfwdcellnd']
251 df_containkalbakcellnd = tables[
'rec.sel.contain'][
'kalbakcellnd']
253 df_ndhadcalcatE = tables[
'rec.energy.numu'][
'ndhadcalcatE']
254 df_ndhadcaltranE = tables[
'rec.energy.numu'][
'ndhadcaltranE']
256 return (df_ntracks > df_remid) &\
257 (df_ncellsfromedge > 1) &\
258 (df_firstplane > 1) &\
259 (df_lastplane < 212) &\
260 (df_startz < 1150 ) &\
261 ((df_stopz < 1275) | ( df_containkalposttrans < 55)) &\
262 (df_ndhadcalcatE + df_ndhadcaltranE < .03) &\
263 (df_containkalfwdcellnd > 4) &\
264 (df_containkalbakcellnd > 8)
266 kNumuContainND =
Cut(kNumuContainND)
268 kNumuNCRej =
Cut(
lambda tables: tables[
'rec.sel.remid'][
'pid'] > 0.75)
270 kNumuNoPIDND = kNumuQuality & kNumuContainND
281 kNusFDContain = (kDistAllTop > 100) & (kDistAllBottom > 10) & \
282 (kDistAllEast > 50) & (kDistAllWest > 50) & \
283 (kDistAllFront > 50) & (kDistAllBack > 50)
285 kNusContPlanes =
Cut(
lambda tables: tables[
'rec.slc'][
'ncontplanes'] > 2)
287 kNusEventQuality = kHasVtx & kHasPng & \
288 (kHitsPerPlane < 8) & kNusContPlanes
290 kNusFDPresel = kNueApplyMask & kVeto & kNusEventQuality & kNusFDContain
292 kNusBackwardCut = ((kDistAllBack < 200) & (kSparsenessAsymm < -0.1)) | (kDistAllBack >= 200)
294 kNusEnergyCut = (kNusEnergy >= 0.5) & (kNusEnergy <= 20.)
296 kNusSlcTimeGap = (kClosestSlcTime > -150.) & (kClosestSlcTime < 50.)
297 kNusSlcDist = (kClosestSlcMinTop < 100) & (kClosestSlcMinDist < 500)
298 kNusShwPtp = ((kMaxY > 580) & (kPtP > 0.2)) | ((kMaxY > 540) & (kPtP > 0.4))
301 kNusNoPIDFD = (kNusFDPresel & kNusBackwardCut) & (~(kNusSlcTimeGap & kNusSlcDist)) & \
302 (~kNusShwPtp) & kNusEnergyCut
308 check = tables[
'rec.vtx.elastic'][
'rec.vtx.elastic_idx'] == 0
309 df = tables[
'rec.vtx.elastic'][check]
310 return (df[
'vtx.x'] > -100) & \
311 (df[
'vtx.x'] < 100) & \
312 (df[
'vtx.y'] > -100) & \
313 (df[
'vtx.y'] < 100) & \
314 (df[
'vtx.z'] > 150) & \
316 kNusNDFiducial =
Cut(kNusNDFiducial)
318 kNusNDContain = (kDistAllTop > 25) & (kDistAllBottom > 25) & \
319 (kDistAllEast > 25) & (kDistAllWest > 25) & \
320 (kDistAllFront > 25) & (kDistAllBack > 25)
322 kNusNDPresel = kNusEventQuality & kNusNDFiducial & kNusNDContain
323 kNusNoPIDND = kNusNDPresel & (kPtP <= 0.8) & kNusEnergyCut
332 query = tables._files.query
333 if not type(query)
is list: query = [query]
334 return 'fardet' in query[0]
343 kNueContain =
Cut(kNueContain)
351 kNuePresel =
Cut(kNuePresel)
355 kNumuNoPIDNoCCEFD = kNumuBasicQuality & kNumuContainFD
356 kNumuNoPIDNoCCEND = kNumuBasicQuality & kNumuContainND
363 kNumuContain =
Cut(kNumuContain)
371 kNumuPresel =
Cut(kNumuPresel)
379 kNusContain =
Cut(kNusContain)
386 kNusPresel =
Cut(kNusPresel)
390 kOrContainment = kNumuContain | kNusContain | kNueContain
391 kOrPreselection = kNumuPresel | kNusPresel | kNuePresel
tuple kNusFDContain
Nus Cuts.
def kDibMaskHelper(l)
Nue Cuts.
def kNumuDibMaskHelper(l)
kNumuNoPIDNoCCEFD
numu cuts ##################### kCCE isn't working yet
tuple kNueProngContainment
def kIsFarDet(tables)
OR'd cuts for Near and Far.