Program Listing for File FlowTriples.h¶
↰ Return to documentation for file (larflow/PrepFlowMatchData/FlowTriples.h
)
#ifndef __FLOW_TRIPLES_H__
#define __FLOW_TRIPLES_H__
#include <map>
#include <vector>
#include "larflow/LArFlowConstants/LArFlowConstants.h"
#include "larcv/core/DataFormat/Image2D.h"
#include "TH2D.h"
namespace larflow {
namespace prep {
class FlowTriples {
public:
struct PixData_t {
int row;
int col;
float val;
int idx;
PixData_t()
: row(0),col(0),val(0.0),idx(0)
{};
PixData_t( int r, int c, float v)
: row(r),col(c),val(v),idx(0) {};
bool operator<( const PixData_t& rhs ) const {
if (row<rhs.row) return true;
if ( row==rhs.row ) {
if ( col<rhs.col ) return true;
if ( col==rhs.col ) {
if ( val<rhs.val ) return true;
}
}
return false;
};
};
FlowTriples()
: _source_plane(-1),
_target_plane(-1),
_other_plane(-1) {
};
FlowTriples( int source_plane, int target_plane,
const std::vector<larcv::Image2D>& adc_v,
const std::vector<larcv::Image2D>& badch_v,
float threshold, bool save_index );
FlowTriples( int source, int target,
const std::vector<larcv::Image2D>& adc_v,
const std::vector<larcv::Image2D>& badch_v,
const std::vector< std::vector<PixData_t> >& sparseimg_vv,
float threshold, bool save_index );
virtual ~FlowTriples() {};
int nsourceIndices() const {
if ( _source_plane==-1 ) return 0;
return (int)_sparseimg_vv[_source_plane].size();
};
// retrieve candidate matches to source pixel via index
//const std::vector<int>& getTargetIndices( int src_index ) const;
//const std::vector<int>& getTruthVector( int src_index ) const;
// retrieve candidate matches to source image via target index
//const std::vector<int>& getTargetIndicesFromSourcePixel( int col, int row ) const;
//const std::vector<int>& getTruthVectorFromSourcePixel( int col, int row ) const;
static std::vector< std::vector<FlowTriples::PixData_t> >
make_initial_sparse_image( const std::vector<larcv::Image2D>& adc_v, float threshold );
int get_source_plane_index() { return _source_plane; };
int get_target_plane_index() { return _target_plane; };
int get_other_plane_index() { return _other_plane; };
std::vector<TH2D> plot_triple_data( const std::vector<larcv::Image2D>& adc_v,
const std::vector< std::vector<PixData_t> >& sparseimg_vv,
std::string hist_stem_name );
std::vector<TH2D> plot_sparse_data( const std::vector<larcv::Image2D>& adc_v,
const std::vector< std::vector<PixData_t> >& sparseimg_vv,
std::string hist_stem_name );
std::vector< std::vector<PixData_t> >& getDeadChToAdd() { return _deadch_to_add; };
std::vector< std::vector<int> >& getTriples() { return _triple_v; };
protected:
int _source_plane;
int _target_plane;
int _other_plane;
std::vector< std::vector< PixData_t > > _sparseimg_vv;
std::vector< std::vector<int> > _triple_v;
std::vector< std::vector<PixData_t> > _deadch_to_add;
void _makeTriples( int source, int target,
const std::vector<larcv::Image2D>& adc_v,
const std::vector<larcv::Image2D>& badch_v,
const std::vector< std::vector<PixData_t> >& sparseimg_vv,
float threshold, bool save_index );
};
}
}
#endif