LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
cmtool::CBAlgoAngleAlign Class Reference

#include "CBAlgoAngleAlign.h"

Inheritance diagram for cmtool::CBAlgoAngleAlign:
cmtool::CBoolAlgoBase cmtool::CMAlgoBase

Public Member Functions

 CBAlgoAngleAlign ()
 Default constructor. More...
 
virtual ~CBAlgoAngleAlign ()
 Default destructor. More...
 
virtual bool Bool (const ::cluster::ClusterParamsAlg &cluster1, const ::cluster::ClusterParamsAlg &cluster2)
 Overloaded (from CBoolAlgoBase) Bool function. More...
 
void SetDebug (bool on)
 Method to set debug mode. More...
 
void SetAllow180Ambig (bool on)
 Method to set whether you allow angles to match with +/- 180 deg difference. More...
 
void SetAngleCut (double angle)
 Method to set cut value in degrees for angle compatibility test. More...
 
void SetMinNHits (size_t n)
 
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 > &clusters)
 
virtual void EventEnd ()
 
virtual void IterationBegin (const std::vector< cluster::ClusterParamsAlg > &clusters)
 
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
 
size_t _MinNHits
 
bool _allow_180_ambig
 minimum number of hits for cluster to be considered More...
 
double _MaxAngleSep
 hard shower-axis angle cutoff (only valid for _use_opening_angle==false) More...
 
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

Definition at line 26 of file CBAlgoAngleAlign.h.

Constructor & Destructor Documentation

cmtool::CBAlgoAngleAlign::CBAlgoAngleAlign ( )

Default constructor.

Definition at line 8 of file CBAlgoAngleAlign.cxx.

References SetAllow180Ambig(), SetAngleCut(), SetDebug(), and SetMinNHits().

8  : CBoolAlgoBase() {
9 
10  //this just sets default values
11  SetDebug(true);
12  SetAngleCut(10.); // in degrees
13  SetAllow180Ambig(false);
14  SetMinNHits(30);
15 
16 
17  } //end constructor
void SetAngleCut(double angle)
Method to set cut value in degrees for angle compatibility test.
CBoolAlgoBase()
Default constructor.
Definition: CBoolAlgoBase.h:32
void SetDebug(bool on)
Method to set debug mode.
void SetAllow180Ambig(bool on)
Method to set whether you allow angles to match with +/- 180 deg difference.
virtual cmtool::CBAlgoAngleAlign::~CBAlgoAngleAlign ( )
inlinevirtual

Default destructor.

Definition at line 34 of file CBAlgoAngleAlign.h.

References Bool().

34 {};

Member Function Documentation

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

Overloaded (from CBoolAlgoBase) Bool function.

Reimplemented from cmtool::CBoolAlgoBase.

Definition at line 19 of file CBAlgoAngleAlign.cxx.

References _allow_180_ambig, _debug, _MaxAngleSep, _MinNHits, and cmtool::CMAlgoBase::_verbose.

Referenced by ~CBAlgoAngleAlign().

21  {
22 
23  double angle1 = cluster1.GetParams().angle_2d;
24  double angle2 = cluster2.GetParams().angle_2d;
25  size_t hits1 = cluster1.GetHitVector().size();
26  size_t hits2 = cluster2.GetHitVector().size();
27 
28  //if don't make hit cut return aflse
29  if ( (hits1 < _MinNHits) or (hits2 < _MinNHits) )
30  return false;
31 
32  if (_debug){
33  std::cout << "Cluster1:" << std::endl;
34  std::cout << "\tAngle: " << angle1 << std::endl;
35  std::cout << "\t Start: (" << cluster1.GetParams().start_point.w << ", " << cluster1.GetParams().start_point.t << ")" << std::endl;
36  std::cout << "Cluster2:" << std::endl;
37  std::cout << "\tAngle: " << angle2 << std::endl;
38  std::cout << "\t Start: (" << cluster2.GetParams().start_point.w << ", " << cluster2.GetParams().start_point.t << ")" << std::endl;
39  std::cout << std::endl;
40 
41  }
42 
43  //for some reason angles are frequently -999.99.
44  //if either angle is this, clearly the cluster 2d angle is not well defined
45  //and this algorithm does not apply
46  if(angle1 < -998 || angle2 < -998)
47  return false;
48 
49  bool compatible = false;
50 
51  //if you don't care if clusters have been reconstructed backwards
53  compatible = ( abs(angle1-angle2) < _MaxAngleSep ||
54  abs(angle1-angle2-180) < _MaxAngleSep ||
55  abs(angle1-angle2+180) < _MaxAngleSep );
56  else
57  compatible = ( abs(angle1-angle2) < _MaxAngleSep );
58 
59 
60  if(_verbose) {
61  if(compatible) std::cout<<"These two clusters are compatible in angle."<<std::endl;
62  }
63 
64  return compatible;
65 
66  } // end Merge function
bool _allow_180_ambig
minimum number of hits for cluster to be considered
double _MaxAngleSep
hard shower-axis angle cutoff (only valid for _use_opening_angle==false)
const cluster_params & GetParams() const
double t
Definition: PxUtils.h:11
const std::vector< util::PxHit > & GetHitVector() const
util::PxPoint start_point
start point
Definition: ClusterParams.h:24
double angle_2d
Angle of axis in wire/hit view.
Definition: ClusterParams.h:40
double w
Definition: PxUtils.h:10
bool _verbose
Boolean to choose verbose mode. Turned on if CMergeManager/CMatchManager&#39;s verbosity level is >= kPer...
Definition: CMAlgoBase.h:88
virtual void cmtool::CMAlgoBase::EventBegin ( const std::vector< cluster::ClusterParamsAlg > &  clusters)
inlinevirtualinherited

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

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

Definition at line 45 of file CMAlgoBase.h.

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

46  { if(clusters.size()) return; }
virtual void cmtool::CMAlgoBase::EventEnd ( )
inlinevirtualinherited

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

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

Definition at line 51 of file CMAlgoBase.h.

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

52  {return;}
virtual void cmtool::CMAlgoBase::IterationBegin ( const std::vector< cluster::ClusterParamsAlg > &  clusters)
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::CFAlgoArray, cmtool::CPAlgoArray, and cmtool::CBAlgoArray.

Definition at line 59 of file CMAlgoBase.h.

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

60  { if(clusters.size()) return;}
virtual void cmtool::CMAlgoBase::IterationEnd ( )
inlinevirtualinherited

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

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

Definition at line 65 of file CMAlgoBase.h.

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

66  {return; }
void cmtool::CBAlgoAngleAlign::SetAllow180Ambig ( bool  on)
inline

Method to set whether you allow angles to match with +/- 180 deg difference.

Definition at line 44 of file CBAlgoAngleAlign.h.

References _allow_180_ambig.

Referenced by CBAlgoAngleAlign().

44 { _allow_180_ambig = on; }
bool _allow_180_ambig
minimum number of hits for cluster to be considered
void cmtool::CMAlgoBase::SetAnaFile ( TFile *  fout)
inlineinherited

Setter function for an output plot TFile pointer.

Definition at line 77 of file CMAlgoBase.h.

References cmtool::CMAlgoBase::_fout.

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

77 { _fout = fout; }
TFile * _fout
TFile pointer to an output file.
Definition: CMAlgoBase.h:85
void cmtool::CBAlgoAngleAlign::SetAngleCut ( double  angle)
inline

Method to set cut value in degrees for angle compatibility test.

Definition at line 47 of file CBAlgoAngleAlign.h.

References _MaxAngleSep.

Referenced by CBAlgoAngleAlign().

47 { _MaxAngleSep = angle; }
double _MaxAngleSep
hard shower-axis angle cutoff (only valid for _use_opening_angle==false)
void cmtool::CBAlgoAngleAlign::SetDebug ( bool  on)
inline

Method to set debug mode.

Definition at line 41 of file CBAlgoAngleAlign.h.

References _debug.

Referenced by CBAlgoAngleAlign().

void cmtool::CBAlgoAngleAlign::SetMinNHits ( size_t  n)
inline

Definition at line 49 of file CBAlgoAngleAlign.h.

References _MinNHits, and n.

Referenced by CBAlgoAngleAlign().

49 { _MinNHits = n; }
Char_t n[5]
virtual void cmtool::CMAlgoBase::SetVerbose ( bool  doit = true)
inlinevirtualinherited

Member Data Documentation

bool cmtool::CBAlgoAngleAlign::_allow_180_ambig
protected

minimum number of hits for cluster to be considered

bool to allow "backwards" clusters (swapped start/end points) to still match in angle, even though they are 180 degrees apart only valid for _use_opening_angle==false

Definition at line 59 of file CBAlgoAngleAlign.h.

Referenced by Bool(), and SetAllow180Ambig().

bool cmtool::CBAlgoAngleAlign::_debug
protected

Definition at line 53 of file CBAlgoAngleAlign.h.

Referenced by Bool(), and SetDebug().

TFile* cmtool::CMAlgoBase::_fout
protectedinherited

TFile pointer to an output file.

Definition at line 85 of file CMAlgoBase.h.

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

double cmtool::CBAlgoAngleAlign::_MaxAngleSep
protected

hard shower-axis angle cutoff (only valid for _use_opening_angle==false)

Definition at line 62 of file CBAlgoAngleAlign.h.

Referenced by Bool(), and SetAngleCut().

size_t cmtool::CBAlgoAngleAlign::_MinNHits
protected

Definition at line 54 of file CBAlgoAngleAlign.h.

Referenced by Bool(), and SetMinNHits().


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