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

#include "CBAlgoAngleIncompat.h"

Inheritance diagram for cmtool::CBAlgoAngleIncompat:
cmtool::CBoolAlgoBase cmtool::CMAlgoBase

Public Member Functions

 CBAlgoAngleIncompat ()
 Default constructor. More...
 
virtual ~CBAlgoAngleIncompat ()
 Default destructor. More...
 
virtual bool Bool (const ::cluster::ClusterParamsAlg &cluster1, const ::cluster::ClusterParamsAlg &cluster2)
 
void SetAllow180Ambig (bool on)
 
void SetAngleCut (double angle)
 
void SetUseOpeningAngle (bool on)
 
void SetMinHits (int n)
 
void SetMinLength (double l)
 
void SetDebug (bool on)
 
virtual void Reset ()
 Function to reset the algorithm instance called within CMergeManager/CMatchManager's Reset() ... maybe implemented via child class. More...
 
virtual void EventBegin (const std::vector< cluster::ClusterParamsAlg > &)
 
virtual void EventEnd ()
 
virtual void IterationBegin (const std::vector< cluster::ClusterParamsAlg > &)
 
virtual void IterationEnd ()
 
virtual void Report ()
 
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

bool _debug
 
bool _allow_180_ambig
 
double _max_allowed_2D_angle_diff
 
double _min_length
 
bool _use_opening_angle
 
size_t _minHits
 
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...
 

Detailed Description

User implementation for CBoolAlgoBase class doxygen documentation!

Definition at line 26 of file CBAlgoAngleIncompat.h.

Constructor & Destructor Documentation

cmtool::CBAlgoAngleIncompat::CBAlgoAngleIncompat ( )

Default constructor.

Definition at line 8 of file CBAlgoAngleIncompat.cxx.

References SetAllow180Ambig(), SetAngleCut(), SetDebug(), SetMinHits(), SetMinLength(), and SetUseOpeningAngle().

8  : CBoolAlgoBase()
9  //-------------------------------------------------------
10  {
11  SetAngleCut(30.);
12 
13  SetMinHits(0);
14 
15  SetAllow180Ambig(false);
16 
17  SetUseOpeningAngle(false);
18 
19  SetMinLength(20);
20 
21  SetDebug(false);
22  }
CBoolAlgoBase()
Default constructor.
Definition: CBoolAlgoBase.h:31
virtual cmtool::CBAlgoAngleIncompat::~CBAlgoAngleIncompat ( )
inlinevirtual

Default destructor.

Definition at line 33 of file CBAlgoAngleIncompat.h.

References Bool().

33 {};

Member Function Documentation

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

Core function: given the CPAN input, return whether a cluster should be merged or not.

Reimplemented from cmtool::CBoolAlgoBase.

Definition at line 25 of file CBAlgoAngleIncompat.cxx.

References _allow_180_ambig, _debug, _max_allowed_2D_angle_diff, _min_length, _minHits, _use_opening_angle, and util::abs().

Referenced by ~CBAlgoAngleIncompat().

28  {
29  //if either cluster is too small, do not prohibit them
30  if (cluster1.GetNHits() < _minHits || cluster2.GetNHits() < _minHits) return false;
31 
32  //if either cluster is too short, do not prohibit them
33  if (cluster1.GetParams().length < _min_length || cluster2.GetParams().length < _min_length)
34  return false;
35 
36  double angle1 = cluster1.GetParams().angle_2d;
37  double angle2 = cluster2.GetParams().angle_2d;
38 
39  if (angle1 < -998 || angle2 < -998) return false;
40 
41  bool compatible = false;
42 
43  double my_cut_value = _max_allowed_2D_angle_diff;
44 
45  //if using opening angle, have angle cutoff be the smaller of the two opening angles
47  my_cut_value =
48  std::min(cluster1.GetParams().opening_angle, cluster2.GetParams().opening_angle);
49 
50  //if you don't care if clusters have been reconstructed backwards
51  if (_allow_180_ambig)
52  compatible =
53  (abs(angle1 - angle2) < my_cut_value || abs(angle1 - angle2 - 180) < my_cut_value ||
54  abs(angle1 - angle2 + 180) < my_cut_value);
55  else
56  compatible = (abs(angle1 - angle2) < my_cut_value);
57 
58  if (_debug) {
59  if (!compatible)
60 
61  std::cout << "CBAlgoAngleIncompat is PROHIBITING clusters with angles " << angle1 << " and "
62  << angle2 << std::endl;
63  }
64 
65  return !compatible;
66  }
constexpr auto abs(T v)
Returns the absolute value of the argument.
const cluster_params & GetParams() const
double angle_2d
Angle of axis in wire/hit view.
Definition: ClusterParams.h:39
double opening_angle
Width of angular distubtion wrt vertx.
Definition: ClusterParams.h:40
virtual void cmtool::CMAlgoBase::EventBegin ( const std::vector< cluster::ClusterParamsAlg > &  )
inlinevirtualinherited

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

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

Definition at line 45 of file CMAlgoBase.h.

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

45 {}
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::CBAlgoAngleIncompat::SetAllow180Ambig ( bool  on)
inline

Definition at line 42 of file CBAlgoAngleIncompat.h.

References _allow_180_ambig.

Referenced by CBAlgoAngleIncompat().

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::CBAlgoAngleIncompat::SetAngleCut ( double  angle)
inline

Definition at line 44 of file CBAlgoAngleIncompat.h.

References _max_allowed_2D_angle_diff.

Referenced by CBAlgoAngleIncompat().

void cmtool::CBAlgoAngleIncompat::SetDebug ( bool  on)
inline

Definition at line 52 of file CBAlgoAngleIncompat.h.

References _debug.

Referenced by CBAlgoAngleIncompat().

void cmtool::CBAlgoAngleIncompat::SetMinHits ( int  n)
inline

Definition at line 48 of file CBAlgoAngleIncompat.h.

References _minHits, and n.

Referenced by CBAlgoAngleIncompat().

48 { _minHits = n; }
Char_t n[5]
void cmtool::CBAlgoAngleIncompat::SetMinLength ( double  l)
inline

Definition at line 50 of file CBAlgoAngleIncompat.h.

References _min_length.

Referenced by CBAlgoAngleIncompat().

void cmtool::CBAlgoAngleIncompat::SetUseOpeningAngle ( bool  on)
inline

Definition at line 46 of file CBAlgoAngleIncompat.h.

References _use_opening_angle.

Referenced by CBAlgoAngleIncompat().

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::CBAlgoAngleIncompat::_allow_180_ambig
protected

Definition at line 56 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetAllow180Ambig().

bool cmtool::CBAlgoAngleIncompat::_debug
protected

Definition at line 55 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetDebug().

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().

double cmtool::CBAlgoAngleIncompat::_max_allowed_2D_angle_diff
protected

Definition at line 57 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetAngleCut().

double cmtool::CBAlgoAngleIncompat::_min_length
protected

Definition at line 58 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetMinLength().

size_t cmtool::CBAlgoAngleIncompat::_minHits
protected

Definition at line 60 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetMinHits().

bool cmtool::CBAlgoAngleIncompat::_use_opening_angle
protected

Definition at line 59 of file CBAlgoAngleIncompat.h.

Referenced by Bool(), and SetUseOpeningAngle().


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