All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes | List of all members
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)
 
- Public Member Functions inherited from cmtool::CBoolAlgoBase
 CBoolAlgoBase ()
 Default constructor. More...
 
virtual ~CBoolAlgoBase ()
 Default destructor. More...
 
- Public Member Functions inherited from cmtool::CMAlgoBase
 CMAlgoBase ()
 
virtual ~CMAlgoBase ()=default
 
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
 
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...
 
- Protected Attributes inherited from cmtool::CMAlgoBase
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 7 of file CBAlgoAngleAlign.cxx.

7  : CBoolAlgoBase() {
8 
9  //this just sets default values
10  SetDebug(true);
11  SetAngleCut(10.); // in degrees
12  SetAllow180Ambig(false);
13  SetMinNHits(30);
14 
15 
16  } //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.

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 18 of file CBAlgoAngleAlign.cxx.

20  {
21 
22  double angle1 = cluster1.GetParams().angle_2d;
23  double angle2 = cluster2.GetParams().angle_2d;
24  size_t hits1 = cluster1.GetHitVector().size();
25  size_t hits2 = cluster2.GetHitVector().size();
26 
27  //if don't make hit cut return aflse
28  if ( (hits1 < _MinNHits) or (hits2 < _MinNHits) )
29  return false;
30 
31  if (_debug){
32  std::cout << "Cluster1:" << std::endl;
33  std::cout << "\tAngle: " << angle1 << std::endl;
34  std::cout << "\t Start: (" << cluster1.GetParams().start_point.w << ", " << cluster1.GetParams().start_point.t << ")" << std::endl;
35  std::cout << "Cluster2:" << std::endl;
36  std::cout << "\tAngle: " << angle2 << std::endl;
37  std::cout << "\t Start: (" << cluster2.GetParams().start_point.w << ", " << cluster2.GetParams().start_point.t << ")" << std::endl;
38  std::cout << std::endl;
39 
40  }
41 
42  //for some reason angles are frequently -999.99.
43  //if either angle is this, clearly the cluster 2d angle is not well defined
44  //and this algorithm does not apply
45  if(angle1 < -998 || angle2 < -998)
46  return false;
47 
48  bool compatible = false;
49 
50  //if you don't care if clusters have been reconstructed backwards
52  compatible = ( abs(angle1-angle2) < _MaxAngleSep ||
53  abs(angle1-angle2-180) < _MaxAngleSep ||
54  abs(angle1-angle2+180) < _MaxAngleSep );
55  else
56  compatible = ( abs(angle1-angle2) < _MaxAngleSep );
57 
58 
59  if(_verbose) {
60  if(compatible) std::cout<<"These two clusters are compatible in angle."<<std::endl;
61  }
62 
63  return compatible;
64 
65  } // 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)
T abs(T value)
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:23
double angle_2d
Angle of axis in wire/hit view.
Definition: ClusterParams.h:39
double w
Definition: PxUtils.h:10
bool _verbose
Boolean to choose verbose mode. Turned on if CMergeManager/CMatchManager&#39;s verbosity level is &gt;= kPer...
Definition: CMAlgoBase.h:102
BEGIN_PROLOG could also be cout
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.

44 { _allow_180_ambig = on; }
bool _allow_180_ambig
minimum number of hits for cluster to be considered
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.

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

Method to set debug mode.

Definition at line 41 of file CBAlgoAngleAlign.h.

41 { _debug = on; }
void cmtool::CBAlgoAngleAlign::SetMinNHits ( size_t  n)
inline

Definition at line 49 of file CBAlgoAngleAlign.h.

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.

bool cmtool::CBAlgoAngleAlign::_debug
protected

Definition at line 53 of file CBAlgoAngleAlign.h.

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.

size_t cmtool::CBAlgoAngleAlign::_MinNHits
protected

Definition at line 54 of file CBAlgoAngleAlign.h.


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