.. _program_listing_file_larflow_PrepFlowMatchData_arxiv_MatchTripletProcessor.cxx: Program Listing for File MatchTripletProcessor.cxx ================================================== |exhale_lsh| :ref:`Return to documentation for file ` (``larflow/PrepFlowMatchData/arxiv/MatchTripletProcessor.cxx``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #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("HasMC"); _adc_treename = pset.get("ADCName"); _chstatus_treename = pset.get("ChStatusName"); _check_intersection = pset.get("CheckIntersection"); } void MatchTripletProcessor::initialize() { // allocate ouput vector _p_matchdata_v = new std::vector(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(); } }