Class ShowerLikelihoodBuilder¶
- Defined in File ShowerLikelihoodBuilder.h
Class Documentation¶
-
class
ShowerLikelihoodBuilder¶ Tools to build shower shape likelihood.
This class contains functions to build distibutions needed to make shower likelihood functions to be used in the larfow shower reco code
This includes:
- shower profile likelihood in 3D. its the location of charge deposited as a function of
- the distance along the trunk line and the perpendicular dist from the trunk line
- brem segment impact param, distance to trunk line, cosine of pca between trunk lines
We fill a tree to later use to make distributions. Can feed it, single shower MC (best) or low energy neutrino. OK.
Public Functions
-
ShowerLikelihoodBuilder()¶ default constructor
-
~ShowerLikelihoodBuilder()¶
-
void
process(larcv::IOManager &iolcv, larlite::storage_manager &ioll)¶ process data for one event, retrieving data from larcv and larlite io managers
steps:
first we need to assemble true triplet points of showers
- we start by masking out adc images by segment image, keeping shower pixels
- then we pass the masked image into the triplet proposal algorithm, making true pixels
- we filter out the proposals by true match + source pixel being on an electron (true ssnet label)
after ground truth points are made, we can build the calculations we want
- Parameters
iolcv: LArCV IO managerioll: larlite IO manager
-
void
_fillProfileHist(const std::vector<larlite::larflow3dhit> &truehit_v, std::vector<float> &shower_dir, std::vector<float> &shower_vtx)¶ Build a shower profile histogram using true shower hits.
we assume all hits belong to the shower. note: this code was intended to run on single shower events, in order to build a proper profile that we can use on multi-shower events.
this method populates the member histograms, _hll_weighted and _hll. to do: create profiles for different energies
- Parameters
truehit_v: Collection of true shower hitsshower_dir: Vector describing initial 3D shower directionshower_vtx: Vector giving 3D shower start point/vertex
-
void
_dist2line(const std::vector<float> &ray_start, const std::vector<float> &ray_dir, const std::vector<float> &pt, float &radial_dist, float &projection)¶ function that calculates shortest distance from a point to a line.
the the line is defined by a start point and a ray.
- Parameters
ray_start: Line 3D start pointray_dir: Line 3D directionpt: Test 3D pointradial_dist: Shortest distance between pt and line.projection: Distance from start point of line to the closest distance segment along line.
-
void
_make_truehit_clusters(std::vector<larlite::larflow3dhit> &truehit_v)¶ Make truehit clusters.
populates the member cluster container, cluster_v.
- Parameters
truehit_v: Collection of true shower hits
-
int
_find_closest_cluster(std::vector<int> &claimed_cluster_v, std::vector<float> &shower_vtx, std::vector<float> &shower_dir)¶ Find closest cluster to given shower start an direction.
- Parameters
claimed_cluster_v: Clusters to searchshower_vtx: Vector giving 3D shower start point/vertex for which we find the closest clustershower_dir: Vector describing initial 3D shower direction. Not used.
-
void
_analyze_clusters(std::vector<larlite::larflow3dhit> &truehit_v, std::vector<float> &shower_dir, std::vector<float> &shower_vtx)¶ Performs cluster-based analysis of true shower.
Gathers statistics we hope to use to relate shower fragment to shower trunks. note: this code was intended to run on single shower events, in order to build a proper profile that we can use on multi-shower events.
- Parameters
truehit_v: Collection of true shower hitsshower_dir: Vector describing initial 3D shower directionshower_vtx: Vector giving 3D shower start point/vertex
-
void
_impactdist(const std::vector<float> &l_start, const std::vector<float> &l_dir, const std::vector<float> &m_start, const std::vector<float> &m_dir, float &impact_dist, float &proj_l, float &proj_m)¶ shortest distance between lines
Calculations referenced from: https://math.stackexchange.com/questions/2213165/find-shortest-distance-between-lines-in-3d
- Parameters
l_start: Start of one linel_dir: Direction of one linem_start: Start of the other linem_dir: Direction of the other lineimpact_dist: Shortest distance between the two linesproj_l: Where the shortest distance line is on the l-line relative to l_startproj_m: where the shortest distance line is on the m-line relative to m_start
Public Members
-
larflow::prep::PrepMatchTriplets
tripletalgo¶ class that produces spacepoints from the wire plane images
-
int
_trunk_cluster¶ index of cluster that is the trunk
-
std::vector<float>
cluster_pcacos2trunk_v¶ cosine between first PC of sub-cluster and trunk cluster of a true shower
-
std::vector<float>
cluster_dist2trunk_v¶ distance between sub-cluster and trunk-cluster
-
std::vector<float>
cluster_impactdist2trunk_v¶ impact parameter between sub-cluster and trunk-cluster
-
larutil::SpaceChargeMicroBooNE *
_psce¶ pointer to a copy of the space charge offset calculating algo
-
TH2F *
_hll¶ 2D likelihood distribution over distance along and perpendicular to the trunk’s first principle component
-
TH2F *
_hll_weighted¶ likelihood weighed by R^2, the squared-distnce perpendicular from the trunk
-
TTree *
_tree_cluster_relationships¶ tree containing observables between sub-cluster and trunk-cluster. used to build selection method
-
float
_dist2trunk¶ distance of true vertex to the trunk
-
TTree *
_tree_trunk_features¶ tree containing features that characterize the shower-trunk cluster, to help select trunk from sub-clusters