LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
CornerFinderAlg.h
Go to the documentation of this file.
1 
8 #ifndef CORNERFINDERALG_H
9 #define CORNERFINDERALG_H
10 
15 
16 #include "fhiclcpp/fwd.h"
17 
18 #include "TF2.h"
19 #include "TH1D.h"
20 #include "TH2.h"
21 
22 #include <string>
23 #include <tuple>
24 #include <vector>
25 
26 namespace corner { //<---Not sure if this is the right namespace
27 
29  public:
30  explicit CornerFinderAlg(fhicl::ParameterSet const& pset);
31 
32  void GrabWires(std::vector<recob::Wire> const& wireVec,
33  geo::WireReadoutGeom const&); //this one creates the histograms we want to use
34 
35  void get_feature_points(
36  std::vector<recob::EndPoint2D>&,
37  geo::WireReadoutGeom const&); //here we get feature points with corner score
38 
40  std::vector<recob::EndPoint2D>&,
41  geo::WireReadoutGeom const&); //here we get feature points with LineIntegral score
42 
44  std::vector<recob::EndPoint2D>&,
45  geo::GeometryCore const&,
46  geo::WireReadoutGeom const&); //here we get feature points with corner score
47 
48  float line_integral(TH2F const& hist, int x1, float y1, int x2, float y2, float threshold)
49  const;
50 
51  TH2F const& GetWireDataHist(unsigned int) const;
52 
53  private:
55 
56  // Need to list the things we will take in from the .fcl file
57 
58  std::string fCalDataModuleLabel;
59  std::string fConversion_algorithm;
60  std::string fConversion_func;
68  std::string fDerivative_method;
70  std::string fDerivative_BlurFunc;
80 
81  // Making a vector of histograms
82  std::vector<TH2F> WireData_histos;
83  std::vector<TH1D> WireData_histos_ProjectionX;
84  std::vector<TH1D> WireData_histos_ProjectionY;
85  std::vector<std::tuple<int, TH2F, int, int>> WireData_trimmed_histos;
86  std::vector<std::vector<geo::WireID>> WireData_IDs;
87 
88  unsigned int event_number{};
89  unsigned int run_number{};
90 
91  void create_image_histo(TH2F const& h_wire_data, TH2F& h_conversion) const;
92  void create_derivative_histograms(TH2F const& h_conversion,
93  TH2F& h_derivative_x,
94  TH2F& h_derivative_y);
95  void create_cornerScore_histogram(TH2F const& h_derivative_x,
96  TH2F const& h_derivative_y,
97  TH2D& h_cornerScore);
98  std::vector<recob::EndPoint2D> perform_maximum_suppression(TH2D const& h_cornerScore,
99  std::vector<geo::WireID> wireIDs,
100  geo::View_t view,
101  TH2D& h_maxSuppress,
102  int startx = 0,
103  int starty = 0) const;
104 
106  TH2F const& h_wire_data,
107  std::vector<recob::EndPoint2D> const& corner_vector,
108  std::vector<recob::EndPoint2D>& corner_lineIntegralScore_vector,
109  TH2F& h_lineIntegralScore) const;
110 
111  void attach_feature_points(TH2F const& h_wire_data,
112  std::vector<geo::WireID> const& wireIDs,
113  geo::View_t view,
114  std::vector<recob::EndPoint2D>&,
115  int startx = 0,
116  int starty = 0);
117  void attach_feature_points_LineIntegralScore(TH2F const& h_wire_data,
118  std::vector<geo::WireID> const& wireIDs,
119  geo::View_t view,
120  std::vector<recob::EndPoint2D>&);
121 
123 
124  }; //<---End of class CornerFinderAlg
125 
126 }
127 
128 #endif //CORNERFINDERALG_H
std::string fDerivative_BlurFunc
std::vector< std::vector< geo::WireID > > WireData_IDs
void create_image_histo(TH2F const &h_wire_data, TH2F &h_conversion) const
void create_cornerScore_histogram(TH2F const &h_derivative_x, TH2F const &h_derivative_y, TH2D &h_cornerScore)
Float_t y1[n_points_granero]
Definition: compare.C:5
std::vector< std::tuple< int, TH2F, int, int > > WireData_trimmed_histos
std::string fCornerScore_algorithm
std::vector< recob::EndPoint2D > perform_maximum_suppression(TH2D const &h_cornerScore, std::vector< geo::WireID > wireIDs, geo::View_t view, TH2D &h_maxSuppress, int startx=0, int starty=0) const
enum geo::_plane_proj View_t
Enumerate the possible plane projections.
Float_t x1[n_points_granero]
Definition: compare.C:5
void attach_feature_points(TH2F const &h_wire_data, std::vector< geo::WireID > const &wireIDs, geo::View_t view, std::vector< recob::EndPoint2D > &, int startx=0, int starty=0)
std::string fCalDataModuleLabel
std::string fConversion_algorithm
TH2F const & GetWireDataHist(unsigned int) const
void InitializeGeometry(geo::WireReadoutGeom const &)
void create_derivative_histograms(TH2F const &h_conversion, TH2F &h_derivative_x, TH2F &h_derivative_y)
Float_t y2[n_points_geant4]
Definition: compare.C:26
void calculate_line_integral_score(TH2F const &h_wire_data, std::vector< recob::EndPoint2D > const &corner_vector, std::vector< recob::EndPoint2D > &corner_lineIntegralScore_vector, TH2F &h_lineIntegralScore) const
Interface for a class providing readout channel mapping to geometry.
CornerFinderAlg(fhicl::ParameterSet const &pset)
std::vector< TH1D > WireData_histos_ProjectionY
void get_feature_points(std::vector< recob::EndPoint2D > &, geo::WireReadoutGeom const &)
float line_integral(TH2F const &hist, int x1, float y1, int x2, float y2, float threshold) const
std::vector< TH2F > WireData_histos
void get_feature_points_LineIntegralScore(std::vector< recob::EndPoint2D > &, geo::WireReadoutGeom const &)
std::string fDerivative_method
Description of the physical geometry of one entire detector.
Definition: GeometryCore.h:91
void GrabWires(std::vector< recob::Wire > const &wireVec, geo::WireReadoutGeom const &)
Definition of data types for geometry description.
void create_smaller_histos(geo::WireReadoutGeom const &)
std::vector< TH1D > WireData_histos_ProjectionX
TH2F * hist
Definition: plot.C:134
void get_feature_points_fast(std::vector< recob::EndPoint2D > &, geo::GeometryCore const &, geo::WireReadoutGeom const &)
void attach_feature_points_LineIntegralScore(TH2F const &h_wire_data, std::vector< geo::WireID > const &wireIDs, geo::View_t view, std::vector< recob::EndPoint2D > &)
Declaration of basic channel signal object.
Float_t x2[n_points_geant4]
Definition: compare.C:26