All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VolumeDefinitions.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "sbnanaobj/StandardRecord/Proxy/FwdDeclare.h"
4 
5 // =================================================================== //
6 // These values have been used for the nue event selection as of //
7 // April 29 2020. The active and fiducial volumes are the same so far //
8 // =================================================================== //
9 
10 struct FidVol
11 {
12  float xmin, xmax, ymin, ymax, zmin, zmax;
13 };
14 
15 // Only for use with FD volume
16 bool PtInVol(const caf::SRVector3DProxy& pt, const FidVol& vol);
17 
18 // Compare (|x|, y, z) to the volume definition. Must use this for ND volume.
19 bool PtInVolAbsX(const caf::SRVector3DProxy& pt, const FidVol& vol);
20 
21 // x boundary reflected on the cathode atm so we'll use abs values
22 // {xmin = -175, xmax = -1.5}, {xmin = 1.5, xmax = 175}
23 const FidVol fvndAbs{ +1.5, +175., // x
24  -175., +175., // y
25  +30., +450.}; // z
26 
27 // Sometimes (e.g. plotting) we want the full volume
28 const FidVol fvnd{ -175., +175., // x
29  -175., +175., // y
30  +30., +450.}; // z
31 
32 const FidVol avnd{ -200., +200., // x
33  -200., +200., // y
34  +0., +500.}; // z
35 
36 // Define a volume with a 10cm buffer to look for exiting tracks
37 const FidVol fvndExit{ -190., +190., // x
38  -190., +190., // y
39  +10., +490. }; // z
40 
41 // icarus fiducial volume cryo used to be the same as the actual active volume (not the values below)
42 // slightly change these values. still not uptimized.
43 const FidVol fvfd_cryo1{ -368.49, -71.94, // x
44  -181.86, +134.96, // y
45  -894.95, +894.85}; // z
46 
47 // icarus cheat active volume cryo 1 for plotting
48 const FidVol avfd_cryo1{ -400., -50., // x
49  -200., +150., // y
50  -1000., +1000.}; // z
51 
52 // icarus active volume cryo 2 same as cryo 1 atm (but reflecting x so it's positive)
53 // NB: Depending on how your sample was generated and where the particles are, you will want to pay attention
54 // to what is going into fiducial/active volume cuts using this. In versions v09_19_00 and before cryo2
55 // was set to be the same positions as cryo1.
56 const FidVol fvfd_cryo2{ +71.94, +368.49, // x
57  -181.86, +134.96, // y
58  -894.95, +894.85}; // z
59 const FidVol avfd_cryo2{ +50., +400., // x
60  -200., +150., // y
61  -1000., +1000.}; // z
62 
63 // not a fiducial volume but for plotting CRT hit positions
64 const FidVol crtfd{ -600, 0., // x
65  -300., +700., // y
66  -1000, +1600}; // z
67 
68 
69 // Once we have C++20 we will be able to rewrite these initializers slightly
70 // more explicitly like this
71 //
72 // const FidVol avnd{.xmin = +1.5, .xmax = +175, ...
const FidVol fvndExit
const FidVol avfd_cryo1
bool PtInVolAbsX(const caf::SRVector3DProxy &pt, const FidVol &vol)
const FidVol fvfd_cryo1
const FidVol avnd
const FidVol fvfd_cryo2
const FidVol crtfd
const FidVol fvnd
const FidVol avfd_cryo2
const FidVol fvndAbs
bool PtInVol(const caf::SRVector3DProxy &pt, const FidVol &vol)