LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
cmtool::CBAlgoPolyShortestDist Class Reference

#include "CBAlgoPolyShortestDist.h"

Inheritance diagram for cmtool::CBAlgoPolyShortestDist:
cmtool::CBoolAlgoBase cmtool::CMAlgoBase

Public Member Functions

 CBAlgoPolyShortestDist ()
 Default constructor. More...
 
virtual ~CBAlgoPolyShortestDist ()
 Default destructor. More...
 
virtual void EventBegin (const std::vector< cluster::ClusterParamsAlg > &clusters)
 
virtual bool Bool (const ::cluster::ClusterParamsAlg &cluster1, const ::cluster::ClusterParamsAlg &cluster2)
 
virtual void Report ()
 
virtual void Reset ()
 Function to reset the algorithm instance ... maybe implemented via child class. More...
 
void SetMinNumHits (size_t nhits)
 
void SetMaxNumHits (int nhits)
 
void SetMinDistSquared (double dist)
 
void SetDebug (bool flag)
 
virtual void EventEnd ()
 
virtual void IterationBegin (const std::vector< cluster::ClusterParamsAlg > &)
 
virtual void IterationEnd ()
 
void SetAnaFile (TFile *fout)
 Setter function for an output plot TFile pointer. More...
 
virtual void SetVerbose (bool doit=true)
 Setter function for verbosity. More...
 

Protected Attributes

TFile * _fout
 TFile pointer to an output file. More...
 
bool _verbose
 Boolean to choose verbose mode. Turned on if CMergeManager/CMatchManager's verbosity level is >= kPerMerging. More...
 

Private Attributes

size_t _min_hits
 
size_t _max_hits
 
double _dist_sqrd_cut
 
bool _debug
 
double tmp_min_dist
 

Detailed Description

User implementation for CBoolAlgoBase class doxygen documentation!

Definition at line 28 of file CBAlgoPolyShortestDist.h.

Constructor & Destructor Documentation

cmtool::CBAlgoPolyShortestDist::CBAlgoPolyShortestDist ( )

Default constructor.

Definition at line 8 of file CBAlgoPolyShortestDist.cxx.

References SetDebug(), SetMaxNumHits(), SetMinDistSquared(), and SetMinNumHits().

8  : CBoolAlgoBase()
9  //-------------------------------------------------------
10  {
12  SetMinNumHits(0);
13  SetMaxNumHits(99999);
14  SetDebug(false);
15  }
CBoolAlgoBase()
Default constructor.
Definition: CBoolAlgoBase.h:31
virtual cmtool::CBAlgoPolyShortestDist::~CBAlgoPolyShortestDist ( )
inlinevirtual

Default destructor.

Definition at line 35 of file CBAlgoPolyShortestDist.h.

References Bool(), EventBegin(), Report(), and Reset().

35 {};

Member Function Documentation

bool cmtool::CBAlgoPolyShortestDist::Bool ( const ::cluster::ClusterParamsAlg cluster1,
const ::cluster::ClusterParamsAlg cluster2 
)
virtual

Optional function: called at the end of event ... after the last merging iteration is over. Optional function: called at the beggining of each iteration over all pairs of clusters. This provides all clusters' information in case the algorithm need them. Note this is called per iteration which may be more than once per event. Optional function: called at the end of each iteration over all pairs of clusters. Core function: given the CPAN input, return whether a cluster should be merged or not.

Reimplemented from cmtool::CBoolAlgoBase.

Definition at line 51 of file CBAlgoPolyShortestDist.cxx.

References _debug, _dist_sqrd_cut, _max_hits, _min_hits, and tmp_min_dist.

Referenced by ~CBAlgoPolyShortestDist().

54  {
55  if ((cluster1.GetHitVector().size() < _min_hits) ||
56  (cluster2.GetHitVector().size() < _min_hits))
57  return false;
58 
59  if ((cluster1.GetHitVector().size() > _max_hits) ||
60  (cluster2.GetHitVector().size() > _max_hits))
61  return false;
62 
63  //if either has < 3 sides do not merge!
64  if ((cluster1.GetParams().PolyObject.Size() < 2) or
65  (cluster2.GetParams().PolyObject.Size() < 2)) {
66  return false;
67  }
68 
69  //loop over the points on the first polygon and calculate
70  //distance to each point on the second polygon
71  //if any two points are close enough to each other,
72  //merge the two clusters
73 
74  unsigned int npoints1 = cluster1.GetParams().PolyObject.Size();
75  unsigned int npoints2 = cluster2.GetParams().PolyObject.Size();
76  //loop over points on first polygon
77  for (unsigned int i = 0; i < npoints1; ++i) {
78  float pt1w = cluster1.GetParams().PolyObject.Point(i).first;
79  float pt1t = cluster1.GetParams().PolyObject.Point(i).second;
80  //loop over points on second polygon
81  for (unsigned int j = 0; j < npoints2; ++j) {
82  float pt2w = cluster2.GetParams().PolyObject.Point(j).first;
83  float pt2t = cluster2.GetParams().PolyObject.Point(j).second;
84  double distsqrd = pow(pt2w - pt1w, 2) + pow(pt2t - pt1t, 2);
85 
86  if (distsqrd < tmp_min_dist) tmp_min_dist = distsqrd;
87 
88  if (_debug) {
89  std::cout << "two polygon points dist2 is " << distsqrd << std::endl;
90  std::cout << "minimum dist was " << tmp_min_dist << std::endl;
91  }
92  if (distsqrd < _dist_sqrd_cut) return true;
93  }
94  }
95 
96  return false;
97  }
Polygon2D PolyObject
Polygon Object...see Polygon2D.hh.
Definition: ClusterParams.h:21
const std::pair< float, float > & Point(unsigned int p) const
Definition: Polygon2D.cxx:158
unsigned int Size() const
Create Intersection Polygon.
Definition: Polygon2D.h:41
const cluster_params & GetParams() const
const std::vector< util::PxHit > & GetHitVector() const
void cmtool::CBAlgoPolyShortestDist::EventBegin ( const std::vector< cluster::ClusterParamsAlg > &  clusters)
virtual

Optional function: called at the beginning of 1st iteration. This is called per event.

Reimplemented from cmtool::CMAlgoBase.

Definition at line 23 of file CBAlgoPolyShortestDist.cxx.

References tmp_min_dist.

Referenced by ~CBAlgoPolyShortestDist().

25  {
26  if (clusters.size()) tmp_min_dist = 99999;
27  }
virtual void cmtool::CMAlgoBase::EventEnd ( )
inlinevirtualinherited

Optional function: called at the end of event ... after the last merging iteration is over.

Reimplemented in cmtool::CPAlgoArray, and cmtool::CBAlgoArray.

Definition at line 50 of file CMAlgoBase.h.

Referenced by cmtool::CMatchManager::EventEnd(), and cmtool::CMergeManager::EventEnd().

50 {}
virtual void cmtool::CMAlgoBase::IterationBegin ( const std::vector< cluster::ClusterParamsAlg > &  )
inlinevirtualinherited

Optional function: called at the beggining of each iteration over all pairs of clusters. This provides all clusters' information in case the algorithm need them. Note this is called per iteration which may be more than once per event.

Reimplemented in cmtool::CPAlgoArray, and cmtool::CBAlgoArray.

Definition at line 57 of file CMAlgoBase.h.

Referenced by cmtool::CMatchManager::EventBegin(), cmtool::CMatchManager::IterationBegin(), and cmtool::CMergeManager::IterationBegin().

57 {}
virtual void cmtool::CMAlgoBase::IterationEnd ( )
inlinevirtualinherited

Optional function: called at the end of each iteration over all pairs of clusters.

Reimplemented in cmtool::CPAlgoArray, and cmtool::CBAlgoArray.

Definition at line 62 of file CMAlgoBase.h.

Referenced by cmtool::CMatchManager::IterationEnd(), and cmtool::CMergeManager::IterationEnd().

62 {}
void cmtool::CBAlgoPolyShortestDist::Report ( )
virtual

Optional function: called after each Merge() function call by CMergeManager IFF CMergeManager is run with verbosity level kPerMerging. Maybe useful for debugging.

Reimplemented from cmtool::CMAlgoBase.

Definition at line 100 of file CBAlgoPolyShortestDist.cxx.

Referenced by ~CBAlgoPolyShortestDist().

102  {}
void cmtool::CBAlgoPolyShortestDist::Reset ( )
virtual

Function to reset the algorithm instance ... maybe implemented via child class.

Reimplemented from cmtool::CMAlgoBase.

Definition at line 18 of file CBAlgoPolyShortestDist.cxx.

Referenced by ~CBAlgoPolyShortestDist().

20  {}
void cmtool::CMAlgoBase::SetAnaFile ( TFile *  fout)
inlineinherited

Setter function for an output plot TFile pointer.

Definition at line 72 of file CMAlgoBase.h.

References cmtool::CMAlgoBase::_fout.

Referenced by cmtool::CMergeManager::EventBegin().

72 { _fout = fout; }
TFile * _fout
TFile pointer to an output file.
Definition: CMAlgoBase.h:79
void cmtool::CBAlgoPolyShortestDist::SetDebug ( bool  flag)
inline

Definition at line 82 of file CBAlgoPolyShortestDist.h.

References _debug.

Referenced by CBAlgoPolyShortestDist().

void cmtool::CBAlgoPolyShortestDist::SetMaxNumHits ( int  nhits)
inline

Definition at line 78 of file CBAlgoPolyShortestDist.h.

References _max_hits.

Referenced by CBAlgoPolyShortestDist().

void cmtool::CBAlgoPolyShortestDist::SetMinDistSquared ( double  dist)
inline

Definition at line 80 of file CBAlgoPolyShortestDist.h.

References _dist_sqrd_cut, and larg4::dist().

Referenced by CBAlgoPolyShortestDist().

80 { _dist_sqrd_cut = dist; }
constexpr double dist(const TReal *x, const TReal *y, const unsigned int dimension)
void cmtool::CBAlgoPolyShortestDist::SetMinNumHits ( size_t  nhits)
inline

Definition at line 76 of file CBAlgoPolyShortestDist.h.

References _min_hits.

Referenced by CBAlgoPolyShortestDist().

virtual void cmtool::CMAlgoBase::SetVerbose ( bool  doit = true)
inlinevirtualinherited

Setter function for verbosity.

Reimplemented in cmtool::CBAlgoArray, and cmtool::CFAlgoTimeOverlap.

Definition at line 75 of file CMAlgoBase.h.

References cmtool::CMAlgoBase::_verbose.

Referenced by cmtool::CMatchManager::EventBegin(), and cmtool::CMergeManager::EventBegin().

75 { _verbose = doit; }
bool _verbose
Boolean to choose verbose mode. Turned on if CMergeManager/CMatchManager&#39;s verbosity level is >= kPer...
Definition: CMAlgoBase.h:82

Member Data Documentation

bool cmtool::CBAlgoPolyShortestDist::_debug
private

Definition at line 89 of file CBAlgoPolyShortestDist.h.

Referenced by Bool(), and SetDebug().

double cmtool::CBAlgoPolyShortestDist::_dist_sqrd_cut
private

Definition at line 87 of file CBAlgoPolyShortestDist.h.

Referenced by Bool(), and SetMinDistSquared().

TFile* cmtool::CMAlgoBase::_fout
protectedinherited

TFile pointer to an output file.

Definition at line 79 of file CMAlgoBase.h.

Referenced by cmtool::CMAlgoBase::CMAlgoBase(), and cmtool::CMAlgoBase::SetAnaFile().

size_t cmtool::CBAlgoPolyShortestDist::_max_hits
private

Definition at line 85 of file CBAlgoPolyShortestDist.h.

Referenced by Bool(), and SetMaxNumHits().

size_t cmtool::CBAlgoPolyShortestDist::_min_hits
private

Definition at line 85 of file CBAlgoPolyShortestDist.h.

Referenced by Bool(), and SetMinNumHits().

double cmtool::CBAlgoPolyShortestDist::tmp_min_dist
private

Definition at line 91 of file CBAlgoPolyShortestDist.h.

Referenced by Bool(), and EventBegin().


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