Program Listing for File MatchTripletProcessor.cxx¶
↰ Return to documentation for file (larflow/PrepFlowMatchData/arxiv/MatchTripletProcessor.cxx
)
#include "MatchTripletProcessor.h"
#include "larcv/core/DataFormat/EventImage2D.h"
#include "larcv/core/DataFormat/EventChStatus.h"
namespace larflow {
static MatchTripletProcessorFactory __global_MatchTripletProcessorFactory__;
void MatchTripletProcessor::configure( const larcv::PSet& pset )
{
_has_mc = pset.get<bool>("HasMC");
_adc_treename = pset.get<std::string>("ADCName");
_chstatus_treename = pset.get<std::string>("ChStatusName");
_check_intersection = pset.get<bool>("CheckIntersection");
}
void MatchTripletProcessor::initialize()
{
// allocate ouput vector
_p_matchdata_v = new std::vector<larflow::PrepMatchTriplets>(1);
// setup anatree
char treename[50];
sprintf(treename,"larmatchtriplet");
_ana_tree = new TTree(treename,"Possible wire combinations");
_ana_tree->Branch( "triplet_v", _p_matchdata_v );
}
bool MatchTripletProcessor::process( larcv::IOManager& mgr )
{
larcv::EventImage2D* ev_adc
= (larcv::EventImage2D*)mgr.get_data( larcv::kProductImage2D, _adc_treename );
auto const& adc_v = ev_adc->Image2DArray();
larcv::EventChStatus* ev_chstatus
= (larcv::EventChStatus*)mgr.get_data( larcv::kProductChStatus, _chstatus_treename );
larcv::EventImage2D* ev_larflow = nullptr;
if (_has_mc ) {
ev_larflow = (larcv::EventImage2D*)mgr.get_data( larcv::kProductImage2D, "larflow" );
}
auto badch_v = _badchmaker.makeGapChannelImage( adc_v, *ev_chstatus,
4, 3, 2400, 1008*6, 3456, 6, 1,
1.0, 100, -1.0 );
LARCV_INFO() << "made badch_v, size=" << badch_v.size() << std::endl;
(*_p_matchdata_v)[0].process( adc_v, badch_v, 10.0, _check_intersection );
if (_has_mc)
(*_p_matchdata_v)[0].make_truth_vector( ev_larflow->Image2DArray() );
int ntriples = (int)(*_p_matchdata_v)[0]._triplet_v.size();
LARCV_NORMAL() << "produced " << ntriples << " triplets to test/train" << std::endl;
_ana_tree->Fill();
return true;
}
void MatchTripletProcessor::finalize()
{
_ana_tree->Write();
}
}