Program Listing for File DBScanLArMatchHits.h

Return to documentation for file (larflow/Reco/DBScanLArMatchHits.h)

#ifndef __LARFLOW_DBSCAN_LARMATCH_H__
#define __LARFLOW_DBSCAN_LARMATCH_H__

#include <vector>

#include "larcv/core/Base/larcv_base.h"
#include "larcv/core/DataFormat/IOManager.h"
#include "larcv/core/DataFormat/Image2D.h"
#include "DataFormat/storage_manager.h"
#include "DataFormat/larflowcluster.h"

#include "cluster_functions.h"

namespace larflow {
namespace reco {

  class DBScanLArMatchHits : public larcv::larcv_base {
  public:

    DBScanLArMatchHits()
      : _input_larflowhit_tree_name("larmatch"),
      _out_cluster_tree_name("dblarmatch"),
      _min_larmatch_score(0.0),
      _maxdist(10.0),
      _minsize(5),
      _maxkd(10)
      {};
    virtual ~DBScanLArMatchHits() {};

    void process( larcv::IOManager& iolc, larlite::storage_manager& ioll );

    void set_min_larmatch_score( float min_score ) { _min_larmatch_score = min_score; };

    void set_dbscan_pars( float maxdist, int minsize, int maxkd ) {
      _maxdist = maxdist;
      _minsize = minsize;
      _maxkd = maxkd;
    };

  protected:


    larlite::larflowcluster makeLArFlowCluster( cluster_t& cluster,
                                                const std::vector<larlite::larflow3dhit>& source_lfhit_v );

    cluster_t absorb_nearby_hits( const cluster_t& cluster,
                                  const std::vector<larlite::larflow3dhit>& hit_v,
                                  std::vector<int>& used_hits_v,
                                  float max_dist2line );

    void makeCluster( const std::vector<larlite::larflow3dhit>& inputhits,
                      std::vector<cluster_t>& output_cluster_v,
                      std::vector<int>& used_hits_v );

  protected:

    // PARAMETERS

    std::string _input_larflowhit_tree_name;
    std::string _out_cluster_tree_name;
    float _min_larmatch_score;
    float _maxdist;
    int   _minsize;
    int   _maxkd;

  public:

    void set_input_larflowhit_tree_name( std::string treename )
    { _input_larflowhit_tree_name=treename; };

    void set_output_larflowhit_tree_name( std::string treename )
    { _out_cluster_tree_name = treename; };

  };

}
}

#endif