Class FlowMatchHitMaker

Nested Relationships

Class Documentation

class FlowMatchHitMaker

Processes output of LArMatch network and makes space point objects.

Revision history 2020/07/22: Added doxygen documentation.

Author
Taritree Wongjirad (taritree.wongjirad@tuts.edu)
Date
$Data 2020/07/22 17:00$

Public Functions

FlowMatchHitMaker()
virtual ~FlowMatchHitMaker()
void clear()

reset state and clear member containers

int add_match_data(PyObject *pair_probs, PyObject *source_sparseimg, PyObject *target_sparseimg, PyObject *matchpairs, const int source_plane, const int target_plane, const larcv::ImageMeta &source_meta, const std::vector<larcv::Image2D> &img_v, const larcv::EventChStatus &ev_chstatus)

compile network output into hit candidate information

Parameters
  • pair_probs: Pointer to (1,Np) numpy array containing larmatch scores for Np space points
  • source_sparseimg: Pointer to (Ns,2) numpy array containing indicies (row,col) of Ns non-zero pixels
  • target_sparseimg: Pointer to (Nt,2) numpy array containing indicies (row,col) of Nt non-zero pixels
  • matchpairs: Point to (Np,2) numpy array containing index to (source_sparseimg,target_sparseimg) arrays for Np space points
  • source_plane: Index of source plane
  • target_plane: Index of target plane
  • source_meta: ImageMeta describing parameters for soruce image
  • img_v: vector of Image2D instances containing ionization information (i.e. the wireplane images)
  • ev_chstatus: Class containing status of channels, i.e. if good or dead

void set_score_threshold(float score)

spacepoints with larmatch score below set value will not be stored

int add_triplet_match_data(PyObject *triple_probs, PyObject *triplet_indices, PyObject *sparseimg_u, PyObject *sparseimg_v, PyObject *sparseimg_y, const std::vector<std::vector<float>> &pos_vv, const std::vector<larcv::Image2D> &adc_v)

compile network output into hit candidate information

int add_triplet_ssnet_scores(PyObject *triplet_indices, PyObject *sparseimg_u, PyObject *sparseimg_v, PyObject *sparseimg_y, const larcv::ImageMeta &meta, PyObject *ssnet_scores)

store ssnet scores in match_t struct

add_triplet_match_data needed to have been run first

int add_triplet_keypoint_scores(PyObject *triplet_indices, PyObject *sparseimg_u, PyObject *sparseimg_v, PyObject *sparseimg_y, const larcv::ImageMeta &meta, PyObject *kplabel_scores)

store keypoint label scores in match_t struct

add_triplet_match_data needed to have been run first

int add_triplet_affinity_field(PyObject *triplet_indices, PyObject *imgu_sparseimg, PyObject *imgv_sparseimg, PyObject *imgy_sparseimg, const larcv::ImageMeta &meta, PyObject *paf_pred)

store particle affinity field direction

add_triplet_match_data needed to have been run first

void make_hits(const larcv::EventChStatus &ev_chstatus, std::vector<larlite::larflow3dhit> &hit_v) const

uses the match data in _matches_v to make hits

makes larlite::larflow3dhit objects based on stored match data the object is a wrapper around a vector<float>.

spacepoint proposals below _match_score_threshold will be skipped.

larflow3dhit inherits from vector<float>. The values in the vector are as follows:

[3-9]: 6 flow direction scores + 1 max scire (deprecated based on 2-flow paradigm. for triplet, [8] is the only score stored [10-12]: 3 ssnet scores, (bg,track,shower) [13-15]: 3 keypoint label score [nu,track,shower] [16-18]: 3D flow direction

Parameters
  • ev_chstatus: Class containing channel status, indicating if good or dead wire
  • hit_v: vector of space points whose larmatch score was above threshold

Public Members

float _match_score_threshold

do not generate hits for space points below this threshold

std::vector<match_t> _matches_v

container for network output for each spacepoint

std::map<std::vector<int>, int> _match_map

map of (Y,U,V) triple to positin in matches_v

bool has_ssnet_scores

ssnet scores have been provided

bool has_kplabel_scores

keypoint scores have been provided

bool has_paf

particle affinity field directions have been provided

struct match_t

internal struct storing network output for single spacepoint

indexed by (U,V,Y) wire ids

Public Functions

match_t()
bool operator<(const match_t &rhs) const

comparitor for sorting. based on plane wire ids going from plane Y,U,V.

void set_wire(int plane, int wire)

set wire index number for a plane

void set_istruth(int label)

set flag indicating if true space point. 1->true; 0->ghost.

void set_score(int source_plane, int target_plane, float prob)

set larmatch score for provided flow between planes

std::vector<float> get_scores() const

get the scores for all of the flow directions

Public Members

int Y

Y-wire.

int U

U-wire.

int V

V-wire.

float YU

match score between Y to U

float YV

match score between Y to V

float UV

match score between U to V

float UY

match score between U to Y

float VU

match score between V to U

float VY

match score between V to Y

std::array<float, 3> tyz

tick, y, z coordinates

std::vector<float> ssnet_scores

ssnet scores

std::vector<float> keypoint_scores

keypoint scores (for each class)

std::vector<float> paf

particle affinity field, 3D vector

int istruth

indicates if a true (i.e. not ghost) space point. 1->true; 0->ghost