LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
shwf::ShowerFinder Class Reference
Inheritance diagram for shwf::ShowerFinder:
art::EDProducer art::detail::Producer art::detail::LegacyModule art::Modifier art::ModuleBase art::ProductRegistryHelper

Public Types

using ModuleType = EDProducer
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = Modifier::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 ShowerFinder (fhicl::ParameterSet const &)
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
void fillProductDescriptions ()
 
void registerProducts (ProductDescriptions &productsToRegister)
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
std::unique_ptr< Worker > makeWorker (WorkerParams const &wp)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Protected Member Functions

ConsumesCollector & consumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Private Member Functions

void produce (art::Event &evt)
 

Private Attributes

std::string fVertexModuleLabel
 label of module finding 2D endpoint More...
 
std::string fClusterModuleLabel
 label of module finding clusters More...
 
std::string fHoughLineModuleLabel
 label of module finding hough line More...
 
std::string fVertexStrengthModuleLabel
 label of module finding 2D endpoint More...
 
double fRcone
 radious of cone for method More...
 
double fLcone
 length of the cone More...
 

Detailed Description

Definition at line 40 of file ShowerFinder_module.cc.

Member Typedef Documentation

Definition at line 17 of file EDProducer.h.

template<typename UserConfig , typename KeysToIgnore = void>
using art::detail::Producer::Table = Modifier::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 26 of file Producer.h.

Constructor & Destructor Documentation

shwf::ShowerFinder::ShowerFinder ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 60 of file ShowerFinder_module.cc.

References fClusterModuleLabel, fHoughLineModuleLabel, fLcone, fRcone, fVertexModuleLabel, and fVertexStrengthModuleLabel.

60  : EDProducer{pset}
61  {
62  fVertexModuleLabel = pset.get<std::string>("VertexModuleLabel");
63  fClusterModuleLabel = pset.get<std::string>("ClusterModuleLabel");
64  fHoughLineModuleLabel = pset.get<std::string>("HoughLineModuleLabel");
65  fVertexStrengthModuleLabel = pset.get<std::string>("VertexStrengthModuleLabel");
66  fRcone = pset.get<double>("Rcone");
67  fLcone = pset.get<double>("Lcone");
68 
69  produces<std::vector<recob::Shower>>();
70  produces<art::Assns<recob::Shower, recob::Cluster>>();
71  produces<art::Assns<recob::Shower, recob::Hit>>();
72  }
std::string fHoughLineModuleLabel
label of module finding hough line
EDProducer(fhicl::ParameterSet const &pset)
Definition: EDProducer.cc:6
std::string fVertexModuleLabel
label of module finding 2D endpoint
std::string fClusterModuleLabel
label of module finding clusters
std::string fVertexStrengthModuleLabel
label of module finding 2D endpoint
double fRcone
radious of cone for method
double fLcone
length of the cone

Member Function Documentation

template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::consumes ( InputTag const &  tag)
protectedinherited

Definition at line 61 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumes().

62  {
63  return collector_.consumes<T, BT>(tag);
64  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ProductToken< T > consumes(InputTag const &)
ConsumesCollector & art::ModuleBase::consumesCollector ( )
protectedinherited

Definition at line 57 of file ModuleBase.cc.

References art::ModuleBase::collector_.

58  {
59  return collector_;
60  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::consumesMany ( )
protectedinherited

Definition at line 75 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesMany().

76  {
77  collector_.consumesMany<T, BT>();
78  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::consumesView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::consumesView ( InputTag const &  tag)
inherited

Definition at line 68 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesView().

69  {
70  return collector_.consumesView<T, BT>(tag);
71  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > consumesView(InputTag const &)
void art::detail::Producer::doBeginJob ( SharedResources const &  resources)
inherited

Definition at line 22 of file Producer.cc.

References art::detail::Producer::beginJobWithFrame(), and art::detail::Producer::setupQueues().

23  {
24  setupQueues(resources);
25  ProcessingFrame const frame{ScheduleID{}};
26  beginJobWithFrame(frame);
27  }
virtual void setupQueues(SharedResources const &)=0
virtual void beginJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Producer::doBeginRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 65 of file Producer.cc.

References art::detail::Producer::beginRunWithFrame(), art::RangeSet::forRun(), art::RunPrincipal::makeRun(), r, art::RunPrincipal::runID(), and art::ModuleContext::scheduleID().

66  {
67  auto r = rp.makeRun(mc, RangeSet::forRun(rp.runID()));
68  ProcessingFrame const frame{mc.scheduleID()};
69  beginRunWithFrame(r, frame);
70  r.commitProducts();
71  return true;
72  }
TRandom r
Definition: spectrum.C:23
virtual void beginRunWithFrame(Run &, ProcessingFrame const &)=0
static RangeSet forRun(RunID)
Definition: RangeSet.cc:51
bool art::detail::Producer::doBeginSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 85 of file Producer.cc.

References art::detail::Producer::beginSubRunWithFrame(), art::RangeSet::forSubRun(), art::SubRunPrincipal::makeSubRun(), art::ModuleContext::scheduleID(), and art::SubRunPrincipal::subRunID().

86  {
87  auto sr = srp.makeSubRun(mc, RangeSet::forSubRun(srp.subRunID()));
88  ProcessingFrame const frame{mc.scheduleID()};
89  beginSubRunWithFrame(sr, frame);
90  sr.commitProducts();
91  return true;
92  }
virtual void beginSubRunWithFrame(SubRun &, ProcessingFrame const &)=0
static RangeSet forSubRun(SubRunID)
Definition: RangeSet.cc:57
void art::detail::Producer::doEndJob ( )
inherited

Definition at line 30 of file Producer.cc.

References art::detail::Producer::endJobWithFrame().

31  {
32  ProcessingFrame const frame{ScheduleID{}};
33  endJobWithFrame(frame);
34  }
virtual void endJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Producer::doEndRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 75 of file Producer.cc.

References art::detail::Producer::endRunWithFrame(), art::RunPrincipal::makeRun(), r, art::ModuleContext::scheduleID(), and art::Principal::seenRanges().

76  {
77  auto r = rp.makeRun(mc, rp.seenRanges());
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(r, frame);
80  r.commitProducts();
81  return true;
82  }
TRandom r
Definition: spectrum.C:23
virtual void endRunWithFrame(Run &, ProcessingFrame const &)=0
bool art::detail::Producer::doEndSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 95 of file Producer.cc.

References art::detail::Producer::endSubRunWithFrame(), art::SubRunPrincipal::makeSubRun(), art::ModuleContext::scheduleID(), and art::Principal::seenRanges().

96  {
97  auto sr = srp.makeSubRun(mc, srp.seenRanges());
98  ProcessingFrame const frame{mc.scheduleID()};
99  endSubRunWithFrame(sr, frame);
100  sr.commitProducts();
101  return true;
102  }
virtual void endSubRunWithFrame(SubRun &, ProcessingFrame const &)=0
bool art::detail::Producer::doEvent ( EventPrincipal ep,
ModuleContext const &  mc,
std::atomic< std::size_t > &  counts_run,
std::atomic< std::size_t > &  counts_passed,
std::atomic< std::size_t > &  counts_failed 
)
inherited

Definition at line 105 of file Producer.cc.

References art::detail::Producer::checkPutProducts_, e, art::EventPrincipal::makeEvent(), art::detail::Producer::produceWithFrame(), and art::ModuleContext::scheduleID().

110  {
111  auto e = ep.makeEvent(mc);
112  ++counts_run;
113  ProcessingFrame const frame{mc.scheduleID()};
114  produceWithFrame(e, frame);
115  e.commitProducts(checkPutProducts_, &expectedProducts<InEvent>());
116  ++counts_passed;
117  return true;
118  }
bool const checkPutProducts_
Definition: Producer.h:70
Float_t e
Definition: plot.C:35
virtual void produceWithFrame(Event &, ProcessingFrame const &)=0
void art::detail::Producer::doRespondToCloseInputFile ( FileBlock const &  fb)
inherited

Definition at line 44 of file Producer.cc.

References art::detail::Producer::respondToCloseInputFileWithFrame().

45  {
46  ProcessingFrame const frame{ScheduleID{}};
48  }
virtual void respondToCloseInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToCloseOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 58 of file Producer.cc.

References art::detail::Producer::respondToCloseOutputFilesWithFrame().

59  {
60  ProcessingFrame const frame{ScheduleID{}};
62  }
virtual void respondToCloseOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToOpenInputFile ( FileBlock const &  fb)
inherited

Definition at line 37 of file Producer.cc.

References art::detail::Producer::respondToOpenInputFileWithFrame().

38  {
39  ProcessingFrame const frame{ScheduleID{}};
41  }
virtual void respondToOpenInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Producer::doRespondToOpenOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 51 of file Producer.cc.

References art::detail::Producer::respondToOpenOutputFilesWithFrame().

52  {
53  ProcessingFrame const frame{ScheduleID{}};
55  }
virtual void respondToOpenOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::Modifier::fillProductDescriptions ( )
inherited

Definition at line 10 of file Modifier.cc.

References art::ProductRegistryHelper::fillDescriptions(), and art::ModuleBase::moduleDescription().

11  {
13  }
void fillDescriptions(ModuleDescription const &md)
ModuleDescription const & moduleDescription() const
Definition: ModuleBase.cc:13
std::array< std::vector< ProductInfo >, NumBranchTypes > const & art::ModuleBase::getConsumables ( ) const
inherited

Definition at line 43 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::getConsumables().

44  {
45  return collector_.getConsumables();
46  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables() const
std::unique_ptr< Worker > art::ModuleBase::makeWorker ( WorkerParams const &  wp)
inherited

Definition at line 37 of file ModuleBase.cc.

References art::ModuleBase::doMakeWorker(), and art::NumBranchTypes.

38  {
39  return doMakeWorker(wp);
40  }
virtual std::unique_ptr< Worker > doMakeWorker(WorkerParams const &wp)=0
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::mayConsume ( InputTag const &  tag)
protectedinherited

Definition at line 82 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsume().

83  {
84  return collector_.mayConsume<T, BT>(tag);
85  }
ProductToken< T > mayConsume(InputTag const &)
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::mayConsumeMany ( )
protectedinherited

Definition at line 96 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeMany().

97  {
98  collector_.mayConsumeMany<T, BT>();
99  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::mayConsumeView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::mayConsumeView ( InputTag const &  tag)
inherited

Definition at line 89 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeView().

90  {
91  return collector_.mayConsumeView<T, BT>(tag);
92  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > mayConsumeView(InputTag const &)
ModuleDescription const & art::ModuleBase::moduleDescription ( ) const
inherited

Definition at line 13 of file ModuleBase.cc.

References art::errors::LogicError.

Referenced by art::OutputModule::doRespondToOpenInputFile(), art::OutputModule::doWriteEvent(), art::Modifier::fillProductDescriptions(), art::OutputModule::makePlugins_(), art::OutputWorker::OutputWorker(), reco::shower::LArPandoraModularShowerCreation::produce(), art::Modifier::registerProducts(), and art::OutputModule::registerProducts().

14  {
15  if (md_.has_value()) {
16  return *md_;
17  }
18 
20  "There was an error while calling moduleDescription().\n"}
21  << "The moduleDescription() base-class member function cannot be called\n"
22  "during module construction. To determine which module is "
23  "responsible\n"
24  "for calling it, find the '<module type>:<module "
25  "label>@Construction'\n"
26  "tag in the message prefix above. Please contact artists@fnal.gov\n"
27  "for guidance.\n";
28  }
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
void shwf::ShowerFinder::produce ( art::Event evt)
privatevirtual
Todo:

This method appears to produce a recob::Cluster really as it is

a collection of 2D clusters from single planes

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Todo:
NEED TO TAKE OUT THE HOUGH LINES FROM THE PROTOSHOWERS!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Todo:
check if protoshower from further vertex is also contained in vertex nearer...

Implements art::EDProducer.

Definition at line 78 of file ShowerFinder_module.cc.

References art::PtrVector< T >::clear(), util::CreateAssn(), DEFINE_ART_MODULE, fClusterModuleLabel, fHoughLineModuleLabel, fLcone, fRcone, fVertexModuleLabel, fVertexStrengthModuleLabel, art::ProductRetriever::getByLabel(), hits(), recob::EndPoint2D::ID(), recob::Cluster::ID(), art::PtrVector< T >::push_back(), art::Event::put(), art::PtrVector< T >::size(), and recob::EndPoint2D::Strength().

79  {
80 
81  std::unique_ptr<std::vector<recob::Shower>> showercol(new std::vector<recob::Shower>);
82  std::unique_ptr<art::Assns<recob::Shower, recob::Cluster>> cassn(
84  std::unique_ptr<art::Assns<recob::Shower, recob::Hit>> hassn(
86 
87  // Read in the vertex List object(s).
89  evt.getByLabel(fVertexModuleLabel, vertexListHandle);
90 
91  // Read in the hough line List object(s).
93  evt.getByLabel(fHoughLineModuleLabel, houghListHandle);
94 
95  // Read in the cluster List object(s).
96  art::Handle<std::vector<recob::Cluster>> clusterListHandle;
97  evt.getByLabel(fClusterModuleLabel, clusterListHandle);
98 
99  art::FindManyP<recob::Hit> fmh(clusterListHandle, evt, fClusterModuleLabel);
100 
101  // Read in the vertex Strength List object(s).
102  art::Handle<std::vector<recob::EndPoint2D>> vertexStrengthListHandle;
103  evt.getByLabel(fVertexStrengthModuleLabel, vertexStrengthListHandle);
104 
105  std::vector<size_t> protoShowers; //vector of indices of clusters associated to a cone
106 
107  std::vector<art::Ptr<recob::Hit>> clusterhits; //hits in the cluster
108 
110 
111  //This vector will contain all strong and strongest vertices
113 
114  //This loop is going over all the vertices in the event
115  //and is interested in ONLY strong and strongest vertices.
116  mf::LogInfo("ShowerFinder") << "Vertex STRENGTH list size = "
117  << vertexStrengthListHandle->size()
118  << " AND vertices:" << vertexListHandle->size()
119  << "\nCLUSTER list size = " << clusterListHandle->size()
120  << " AND Hough: :" << houghListHandle->size();
121 
122  for (size_t iv = 0; iv < vertexListHandle->size(); ++iv) {
123  art::Ptr<recob::EndPoint2D> vertex(vertexListHandle, iv);
124  //std::cout << "Vertex " << iv << " : str = " << vertex->ID() << std::endl;
125  //if(vertex->Strength() == 4 || vertex->Strength() == 3){
126  if (vertex->ID() == 1 || vertex->Strength() == 3) { //only use Strongest and strong
127  vertSel.push_back(vertex);
128  }
129  else
130  continue;
131  }
132 
133  //Definition of the geometry of the cone (which is basically a triangle)
134  double scan_angle = 0; //angle of the scan steps
135  double xa_cone = 0; // x coordinate of the cone's apex (wire number)
136  double ya_cone = 0; // y coordinate of the cone's apex (drift time)
137  double x1_cone = 0; // x coordinate of the cone's top right point (wire number)
138  double y1_cone = 0; // y coordinate of the cone's top right point (drift time)
139  double x2_cone = 0; // x coordinate of the cone's top left point (wire number)
140  double y2_cone = 0; // y coordinate of the cone's top left point (drift time)
141 
142  //The length of the side of the cone
143  double fScone = std::sqrt((fRcone * fRcone) + (fLcone * fLcone));
144 
145  // Opening angle of the cone (defined from input parameters)
146  double cone_angle = (TMath::ATan(fRcone / fLcone)) / 2.0;
147  mf::LogInfo("ShowerFinder") << "Cone Opening Angle: " << (180.0 * cone_angle) / TMath::Pi();
148  double compl_angle = 0;
149 
150  unsigned int n_scan = 1 + (int)(TMath::Pi() / (2.0 * cone_angle));
151  mf::LogInfo("ShowerFinder") << "N scan: " << n_scan;
152 
153  double x_hit = 0; //x coordinate of hit
154  double y_hit = 0; //y coordinate of hit
155 
156  int hits_cluster_counter = 0; //count the number of hits in a cluster that is inside a cone
157  //int hits_cluster_Total = 0; //The total number of hits in a cluster
158 
159  // For EVERY vertex, the algorithm is going to scan the plane to find clusters
160  // contained in the scanning cones
161 
162  for (size_t ivert = 0; ivert < vertSel.size(); ++ivert) {
163 
164  mf::LogInfo("ShowerFinder") << "Number of STRONG vertices = " << vertSel.size();
165 
166  //get the coordinates of the vertex for the summit of the cone
167  xa_cone = vertSel[ivert]->WireID().Wire; //for update to EndPoint2D ... WK 4/22/13
168  ya_cone = vertSel[ivert]->DriftTime();
169 
170  mf::LogInfo("ShowerFinder") << "Vertex at: (" << xa_cone << ", " << ya_cone << ")";
171 
172  //Beginning of the scan!
173  for (unsigned int iscan = 0; iscan < n_scan; ++iscan) {
174 
175  mf::LogInfo("ShowerFinder") << ">>>> Start SCAN: " << iscan;
176 
177  //define the scan anlge
178  scan_angle = (TMath::Pi() / 2.0) - (iscan * (2.0 * cone_angle));
179 
180  mf::LogInfo("ShowerFinder") << "Scan Angle: " << (180. * scan_angle) / TMath::Pi();
181 
182  //get the complementary angle for geometry puurposes
183  compl_angle = scan_angle - cone_angle;
184 
185  //Calculate the coordinates of the top right corner of the cone
186  x1_cone = xa_cone + fScone * (std::cos(compl_angle));
187  y1_cone = ya_cone + fScone * (std::sin(compl_angle));
188 
189  //Calculate the coordinates of the top left corner of the cone
190  x2_cone = xa_cone + fScone * (std::cos(scan_angle + cone_angle));
191  y2_cone = ya_cone + fScone * (std::sin(scan_angle + cone_angle));
192 
193  //Looking if a cluster is in this cone (loop over all hits of all clusters)
194  protoShowers.clear();
195  for (size_t iclust = 0; iclust < clusterListHandle->size(); ++iclust) {
196 
197  // art::Ptr<recob::Cluster> clust(clusterListHandle, iclust);
198  recob::Cluster const& clust = clusterListHandle->at(iclust);
199 
200  //Get the hits vector from the cluster
201  clusterhits = fmh.at(iclust);
202  if (clusterhits.size() == 0) continue;
203 
204  //Loop over ALL hits in the cluster. Looking if the cluster's
205  // hit is comprised in the cone
206  for (size_t ihits = 0; ihits < clusterhits.size(); ++ihits) {
207 
208  x_hit = clusterhits[ihits]->WireID().Wire; //for update to EndPoint2D ... WK 4/22/13
209  y_hit = clusterhits[ihits]->PeakTime();
210 
211  // Check in hits is INSIDE cone
212 
213  //define the 2 line equations:
214  if (y_hit <= ((y2_cone - ya_cone) / (x2_cone - xa_cone)) * x_hit + ya_cone &&
215  y_hit >= ((y1_cone - ya_cone) / (x1_cone - xa_cone)) * x_hit + ya_cone) {
216  hits_cluster_counter++;
217  }
218 
219  } //end hits loop
220 
221  //If there is more than 50% if the cluster INSIDE the cone, this is a protoshower
222  if (clusterhits.size() == 0) continue;
223  if (((double)hits_cluster_counter / (double)clusterhits.size()) >= 0.5) {
224  mf::LogInfo("ShowerFinder") << "GOT A SHOWER!!! in scan " << iscan
225  << " cluster: " << iclust << " : " << clust.ID();
226 
230 
231  protoShowers.push_back(iclust);
232  }
233  clusterhits.clear();
234  hits_cluster_counter = 0;
235 
236  } //end cluster loop
237 
238  if (protoShowers.empty()) continue;
239 
240  showercol->push_back(recob::Shower());
241 
242  // associate the shower with its clusters
244  evt, *cassn, showercol->size() - 1, protoShowers.begin(), protoShowers.end());
245 
246  // get the hits associated with each cluster and associate those with the shower
247  for (size_t p = 0; p < protoShowers.size(); ++p) {
248  const size_t psIndex = protoShowers[p];
249  std::vector<art::Ptr<recob::Hit>> hits = fmh.at(psIndex);
250  util::CreateAssn(evt, *showercol, hits, *hassn);
251  }
252 
253  } //end scan loop
254  } //end vertices loop
255 
257  //NEED TO SEPARATE THE SHOWERS FROM THE DIFFERENT VERTEX!!!!
259 
260  mf::LogInfo("ShowerFinder") << "---> Recorded shower = " << showercol->size();
262  //if the shower is stand alone ok, else, erase the next one
263  //shower.SetID(is);
264  //shower.SetVertexCoord(xa_cone, ya_cone);
265 
266  vertSel.clear();
267 
268  evt.put(std::move(showercol));
269  evt.put(std::move(cassn));
270  evt.put(std::move(hassn));
271 
272  return;
273  } // end of produce
std::string fHoughLineModuleLabel
label of module finding hough line
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::string fVertexModuleLabel
label of module finding 2D endpoint
Set of hits with a 2D structure.
Definition: Cluster.h:69
std::string fClusterModuleLabel
label of module finding clusters
PutHandle< PROD > put(std::unique_ptr< PROD > &&edp, std::string const &instance={})
Definition: Event.h:77
void hits()
Definition: readHits.C:15
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:435
size_type size() const
Definition: PtrVector.h:302
bool CreateAssn(art::Event &evt, std::vector< T > const &a, art::Ptr< U > const &b, art::Assns< U, T > &assn, std::string a_instance, size_t index=UINT_MAX)
Creates a single one-to-one association.
std::string fVertexStrengthModuleLabel
label of module finding 2D endpoint
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
double fRcone
radious of cone for method
ID_t ID() const
Identifier of this cluster.
Definition: Cluster.h:711
double fLcone
length of the cone
void clear()
Definition: PtrVector.h:533
Definition: fwd.h:26
vertex reconstruction
void art::Modifier::registerProducts ( ProductDescriptions productsToRegister)
inherited

Definition at line 16 of file Modifier.cc.

References art::ModuleBase::moduleDescription(), and art::ProductRegistryHelper::registerProducts().

17  {
18  ProductRegistryHelper::registerProducts(productsToRegister,
20  }
void registerProducts(ProductDescriptions &productsToRegister, ModuleDescription const &md)
ModuleDescription const & moduleDescription() const
Definition: ModuleBase.cc:13
void art::ModuleBase::setModuleDescription ( ModuleDescription const &  md)
inherited

Definition at line 31 of file ModuleBase.cc.

References art::ModuleBase::md_.

32  {
33  md_ = md;
34  }
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
void art::ModuleBase::sortConsumables ( std::string const &  current_process_name)
inherited

Definition at line 49 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::sortConsumables().

50  {
51  // Now that we know we have seen all the consumes declarations,
52  // sort the results for fast lookup later.
53  collector_.sortConsumables(current_process_name);
54  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
void sortConsumables(std::string const &current_process_name)

Member Data Documentation

std::string shwf::ShowerFinder::fClusterModuleLabel
private

label of module finding clusters

Definition at line 48 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().

std::string shwf::ShowerFinder::fHoughLineModuleLabel
private

label of module finding hough line

Definition at line 49 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().

double shwf::ShowerFinder::fLcone
private

length of the cone

Definition at line 52 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().

double shwf::ShowerFinder::fRcone
private

radious of cone for method

Definition at line 51 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().

std::string shwf::ShowerFinder::fVertexModuleLabel
private

label of module finding 2D endpoint

Definition at line 47 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().

std::string shwf::ShowerFinder::fVertexStrengthModuleLabel
private

label of module finding 2D endpoint

Definition at line 50 of file ShowerFinder_module.cc.

Referenced by produce(), and ShowerFinder().


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