Program Listing for File PrepKeypointData.h¶
↰ Return to documentation for file (larflow/KeyPoints/PrepKeypointData.h
)
#ifndef __PREP_KEYPOINT_DATA_H__
#define __PREP_KEYPOINT_DATA_H__
#include <Python.h>
#include "bytesobject.h"
#include <vector>
#include <string>
#include "larflow/LArFlowConstants/LArFlowConstants.h"
#include "larflow/PrepFlowMatchData/PrepMatchTriplets.h"
#include "KPdata.h"
class TH1F;
class TH2D;
namespace larcv {
class Image2D;
class IOManager;
}
namespace larlite {
class event_mctrack;
class event_mcshower;
class event_mctruth;
class storage_manager;
}
namespace larutil {
class SpaceChargeMicroBooNE;
}
namespace ublarcvapp {
namespace mctools {
class MCPixelPGraph;
}
}
namespace larflow {
namespace keypoints {
class PrepKeypointData {
public:
PrepKeypointData();
virtual ~PrepKeypointData();
void process( larcv::IOManager& iolcv,
larlite::storage_manager& ioll );
void process( const std::vector<larcv::Image2D>& adc_v,
const std::vector<larcv::Image2D>& badch_v,
const std::vector<larcv::Image2D>& segment_v,
const std::vector<larcv::Image2D>& instance_v,
const std::vector<larcv::Image2D>& ancestor_v,
const larlite::event_mctrack& mctrack_v,
const larlite::event_mcshower& mcshower_v,
const larlite::event_mctruth& mctruth_v );
void make_proposal_labels( const larflow::prep::PrepMatchTriplets& match_proposals );
protected:
std::string _adc_image_treename;
std::vector<KPdata> _kpd_v;
std::vector<KPdata>
getMuonEndpoints( ublarcvapp::mctools::MCPixelPGraph& mcpg,
const std::vector<larcv::Image2D>& adc_v,
const larlite::event_mctrack& mctrack_v,
larutil::SpaceChargeMicroBooNE* psce );
std::vector<KPdata>
getShowerStarts( ublarcvapp::mctools::MCPixelPGraph& mcpg,
const std::vector<larcv::Image2D>& adc_v,
const larlite::event_mcshower& mcshower_v,
larutil::SpaceChargeMicroBooNE* psce );
void _label_nu_keypoints( const larlite::event_mctruth& mctruth_v,
const std::vector<larcv::Image2D>& adc_v,
larutil::SpaceChargeMicroBooNE* psce,
std::vector<KPdata>& kpdata_v );
void filter_duplicates();
public:
void setADCimageTreeName(std::string treename) { _adc_image_treename=treename; };
const std::vector<KPdata>& getKPdata() const { return _kpd_v; };
void printKeypoints() const;
public:
PyObject* get_keypoint_array(int ikpclass ) const;
PyObject* get_triplet_score_array( float sig ) const;
protected:
// PROPOSAL LABELS
// ----------------
std::vector< std::vector<float> > _match_proposal_labels_v[3];
// Ana Tree
int _run;
int _subrun;
int _event;
TTree* _label_tree;
std::vector< std::vector<float> > _kppos_v[3];
//< we need to keep a list of primary pixels to limit the neutrino score field
//std::vector< std::set<std::pair<int,int> > > _primarypixels_v;
public:
void defineAnaTree();
void writeAnaTree();
void fillAnaTree() { if (_label_tree) _label_tree->Fill(); };
public:
// statistics variables
TH1F* hdist[3];
TH1F* hdpix[4];
int _nclose;
int _nfar;
void writeHists();
std::vector<TH2D> makeScoreImage( const int ikpclass, const float sigma,
const std::string histname,
const larflow::prep::PrepMatchTriplets& tripmaker,
const std::vector<larcv::Image2D>& adc_v ) const;
private:
static bool _setup_numpy;
};
}
}
#endif