LArOpenCV  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
larlite::LArImageWire Class Reference

User custom analysis class made by SHELL_USER_NAME. More...

#include <LArImageWire.h>

Inheritance diagram for larlite::LArImageWire:
larlite::LArImageClusterBase

Public Member Functions

 LArImageWire (const std::string name="LArImageWire")
 Default constructor. More...
 
virtual ~LArImageWire ()
 Default destructor. More...
 
bool initialize ()
 IMPLEMENT in LArImageClusterBase.cc! Initialization method to be called before the analysis event loop. More...
 
bool analyze (storage_manager *storage)
 IMPLEMENT in LArImageClusterBase.cc! Analyze a data event-by-event. More...
 
bool finalize ()
 IMPLEMENT in LArImageClusterBase.cc! Finalize method to be called after all events processed. More...
 
larcv::ImageClusterManageralgo_manager (size_t plane_id)
 
const std::vector
< larcv::ImageClusterManager > & 
algo_manager_set () const
 
const std::string & producer () const
 
void set_config (const std::string cfg_file)
 

Protected Member Functions

void _Report_ () const
 
void _Configure_ (const ::fcllite::PSet &)
 
void store_clusters (storage_manager *storage)
 
void extract_image (storage_manager *storage)
 

Protected Attributes

double _charge_to_gray_scale
 
::larcv::ImageManager _img_mgr
 

Detailed Description

User custom analysis class made by SHELL_USER_NAME.

Definition at line 28 of file LArImageWire.h.

Constructor & Destructor Documentation

larlite::LArImageWire::LArImageWire ( const std::string  name = "LArImageWire")
inline

Default constructor.

Definition at line 33 of file LArImageWire.h.

33 : LArImageClusterBase(name) {}
virtual larlite::LArImageWire::~LArImageWire ( )
inlinevirtual

Default destructor.

Definition at line 36 of file LArImageWire.h.

36 {}

Member Function Documentation

void larlite::LArImageWire::_Configure_ ( const ::fcllite::PSet &  pset)
protectedvirtual

Implements larlite::LArImageClusterBase.

Definition at line 9 of file LArImageWire.cxx.

References _charge_to_gray_scale.

10  {
11  _charge_to_gray_scale = pset.get<double>("Q2Gray");
12  }
void larlite::LArImageWire::_Report_ ( ) const
inlineprotectedvirtual

Implements larlite::LArImageClusterBase.

Definition at line 40 of file LArImageWire.h.

40 {}
larcv::ImageClusterManager & larlite::LArImageClusterBase::algo_manager ( size_t  plane_id)
inherited

Definition at line 21 of file LArImageClusterBase.cxx.

References larlite::LArImageClusterBase::_alg_mgr_v.

22  {
23  if(plane_id >= _alg_mgr_v.size()) throw ::larcv::larbys("ImageClusterManager not found (invalid plane ID)!");
24  return _alg_mgr_v[plane_id];
25  }
const std::vector< larcv::ImageClusterManager > & larlite::LArImageClusterBase::algo_manager_set ( ) const
inherited

Definition at line 18 of file LArImageClusterBase.cxx.

References larlite::LArImageClusterBase::_alg_mgr_v.

Referenced by larlite::LArImageHit::store_clusters().

19  { return _alg_mgr_v; }
bool larlite::LArImageClusterBase::analyze ( storage_manager *  storage)
inherited

IMPLEMENT in LArImageClusterBase.cc! Analyze a data event-by-event.

Definition at line 52 of file LArImageClusterBase.cxx.

References larlite::LArImageClusterBase::_alg_mgr_v, larlite::LArImageClusterBase::_img_mgr, larlite::LArImageClusterBase::_orig_img_mgr, larlite::LArImageClusterBase::_process_count, larlite::LArImageClusterBase::_process_time_analyze, larlite::LArImageClusterBase::_process_time_cluster_storage, larlite::LArImageClusterBase::_process_time_image_extraction, larlite::LArImageClusterBase::_store_original_img, larcv::ImageManager::clear(), larlite::LArImageClusterBase::extract_image(), larcv::ImageManager::img_at(), larcv::ImageManager::meta_at(), larcv::ImageManager::push_back(), larcv::ImageManager::size(), larcv::Watch::Start(), larlite::LArImageClusterBase::store_clusters(), and larcv::Watch::WallTime().

52  {
53 
54  _img_mgr.clear();
56 
57  ::larcv::Watch watch_all, watch_one;
58  watch_all.Start();
59  watch_one.Start();
60  this->extract_image(storage);
62 
64  for(size_t plane=0; plane<_img_mgr.size(); ++plane) {
65  ::cv::Mat img;
66  _img_mgr.img_at(plane).copyTo(img);
68  }
69  }
70 
71  if(_img_mgr.size() != _alg_mgr_v.size()) throw ::larcv::larbys("# of imaged created != # of planes!");
72 
73  for(size_t plane = 0; plane < _alg_mgr_v.size(); ++plane) {
74 
75  auto& alg_mgr = _alg_mgr_v[plane];
76  auto const& img = _img_mgr.img_at(plane);
77  auto const& meta = _img_mgr.meta_at(plane);
78  if(!meta.num_pixel_row() || !meta.num_pixel_column()) continue;
79 
80  alg_mgr.Process(img,meta);
81 
82  }
83 
84  watch_one.Start();
85  this->store_clusters(storage);
87 
88  _process_time_analyze += watch_all.WallTime();
89 
91 
92  return true;
93  }
void larlite::LArImageWire::extract_image ( storage_manager *  storage)
protectedvirtual

Implements larlite::LArImageClusterBase.

Definition at line 23 of file LArImageWire.cxx.

References _charge_to_gray_scale, larlite::LArImageClusterBase::_img_mgr, larcv::ImageManager::img_at(), larlite::LArImageClusterBase::producer(), and larcv::ImageManager::push_back().

24  {
25  auto const& geom = ::larutil::Geometry::GetME();
26  const size_t nplanes = geom->Nplanes();
27 
28  auto ev_wire = storage->get_data<event_wire>(producer());
29 
30  if(!ev_wire) throw DataFormatException("Could not locate Wire data product!");
31 
32  std::vector< std::pair<size_t,size_t> > wire_range_v(nplanes,std::pair<size_t,size_t>(1e12,0));
33  std::vector< std::pair<size_t,size_t> > tick_range_v(nplanes,std::pair<size_t,size_t>(1e12,0));
34 
35  for(auto const& wire_data : *ev_wire) {
36 
37  auto const& wid = geom->ChannelToWireID(wire_data.Channel());
38 
39  auto& wire_range = wire_range_v[wid.Plane];
40  if(wire_range.first > wid.Wire) wire_range.first = wid.Wire;
41  if(wire_range.second < wid.Wire) wire_range.second = wid.Wire;
42 
43  auto& tick_range = tick_range_v[wid.Plane];
44 
45  auto const& roi_v = wire_data.SignalROI();
46 
47  for(auto const& roi : roi_v.get_ranges()) {
48  size_t start_tick = roi.begin_index();
49  size_t last_tick = start_tick + roi.size() - 1;
50  if(tick_range.first > start_tick) tick_range.first = start_tick;
51  if(tick_range.second < last_tick) tick_range.second = last_tick;
52  }
53  }
54 
55  for(size_t plane=0; plane<nplanes; ++plane) {
56  auto const& wire_range = wire_range_v[plane];
57  auto const& tick_range = tick_range_v[plane];
58  size_t nticks = tick_range.second - tick_range.first + 2;
59  size_t nwires = wire_range.second - wire_range.first + 2;
60  ::larcv::ImageMeta meta((double)nwires,(double)nticks,nwires,nticks,wire_range.first,tick_range.first);
61 
62  if(!nticks || !nwires)
63  _img_mgr.push_back(cv::Mat(),meta);
64  else
65  _img_mgr.push_back(::cv::Mat(nwires, nticks, CV_8UC1, cvScalar(0.)),meta);
66  }
67 
68  for(auto const& wire_data : *ev_wire) {
69 
70  auto const& wid = geom->ChannelToWireID(wire_data.Channel());
71 
72  auto& mat = _img_mgr.img_at(wid.Plane);
73 
74  auto const& roi_v = wire_data.SignalROI();
75 
76  auto const& wire_range = wire_range_v[wid.Plane];
77  auto const& tick_range = tick_range_v[wid.Plane];
78 
79  for(auto const& roi : roi_v.get_ranges()) {
80  size_t start_tick = roi.begin_index();
81  for(size_t adc_index=0; adc_index < roi.size(); ++adc_index) {
82  size_t x = wid.Wire - wire_range.first;
83  size_t y = start_tick + adc_index - tick_range.first;
84  double q = roi[adc_index] / _charge_to_gray_scale;
85  q += (double)(mat.at<unsigned char>(x,y));
86  if(q<0) q=0.;
87  if(q>255) q=255;
88  mat.at<unsigned char>(x,y) = (unsigned char)((int)q);
89  }
90  }
91  }
92 
93  }
bool larlite::LArImageClusterBase::finalize ( )
inherited

IMPLEMENT in LArImageClusterBase.cc! Finalize method to be called after all events processed.

Definition at line 113 of file LArImageClusterBase.cxx.

References larlite::LArImageClusterBase::_alg_mgr_v, and larlite::LArImageClusterBase::Report().

113  {
114 
115  Report();
116  for(size_t plane=0; plane < _alg_mgr_v.size(); ++plane) {
117  std::cout << " \033[95mImageClusterManager\033[00m @ Plane " << plane << std::endl;
118  _alg_mgr_v[plane].Report();
119  std::cout << std::endl;
120  }
121  return true;
122  }
bool larlite::LArImageClusterBase::initialize ( )
inherited

IMPLEMENT in LArImageClusterBase.cc! Initialization method to be called before the analysis event loop.

Definition at line 27 of file LArImageClusterBase.cxx.

References larlite::LArImageClusterBase::_alg_mgr_v, larlite::LArImageClusterBase::_config_file, larlite::LArImageClusterBase::_Configure_(), larlite::LArImageClusterBase::_process_count, larlite::LArImageClusterBase::_process_time_analyze, larlite::LArImageClusterBase::_process_time_cluster_storage, larlite::LArImageClusterBase::_process_time_image_extraction, larlite::LArImageClusterBase::_producer, larlite::LArImageClusterBase::_profile, and larlite::LArImageClusterBase::_store_original_img.

27  {
28 
29  ::fcllite::ConfigManager cfg_mgr(_name);
30 
31  cfg_mgr.AddCfgFile(_config_file);
32 
33  auto const& main_cfg = cfg_mgr.Config().get_pset(_name);
34 
35  _profile = main_cfg.get<bool>("Profile");
36  _producer = main_cfg.get<std::string>("Producer");
37  _store_original_img = main_cfg.get<bool>("StoreOriginalImage");
38  _process_count = 0;
42 
43  this->_Configure_(main_cfg);
44 
45  if(_producer.empty()) throw ::larcv::larbys("No producer specified...");
46 
47  for(auto& mgr : _alg_mgr_v) mgr.Configure(cfg_mgr.Config().get_pset(mgr.Name()));
48 
49  return true;
50  }
const std::string& larlite::LArImageClusterBase::producer ( ) const
inlineinherited
void larlite::LArImageClusterBase::set_config ( const std::string  cfg_file)
inlineinherited

Definition at line 60 of file LArImageClusterBase.h.

References larlite::LArImageClusterBase::_config_file.

60 {_config_file=cfg_file;}
void larlite::LArImageWire::store_clusters ( storage_manager *  storage)
protectedvirtual

Implements larlite::LArImageClusterBase.

Definition at line 14 of file LArImageWire.cxx.

References larcaffe::msg::kWARNING.

15  {
16  static bool warn_once = false;
17  if(!warn_once) {
18  print(msg::kWARNING,__FUNCTION__,"Cluster storage is not implemented...");
19  warn_once = true;
20  }
21  }

Member Data Documentation

double larlite::LArImageWire::_charge_to_gray_scale
protected

Definition at line 48 of file LArImageWire.h.

Referenced by _Configure_(), and extract_image().

::larcv::ImageManager larlite::LArImageClusterBase::_img_mgr
protectedinherited

The documentation for this class was generated from the following files: