Public Member Functions | Protected Attributes | List of all members
cmtool::CBAlgoAngleCompat Class Reference

#include <CBAlgoAngleCompat.h>

Inheritance diagram for cmtool::CBAlgoAngleCompat:
cmtool::CBoolAlgoBase cmtool::CMAlgoBase

Public Member Functions

 CBAlgoAngleCompat ()
 Default constructor. More...
 
virtual ~CBAlgoAngleCompat ()
 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 SetUseOpeningAngle (bool on)
 Method to set angle cut value to be based on opening angle. More...
 
void SetMinHits (size_t n)
 Set Minimum Number of Hits to consider Cluster. More...
 
- 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
 
bool _allow_180_ambig
 bool to suppress lots of output if you want More...
 
double _max_allowed_2D_angle_diff
 hard shower-axis angle cutoff (only valid for _use_opening_angle==false) More...
 
bool _use_opening_angle
 
size_t _minHits
 
TH1F * angle_dist_histo
 Min Number of hits for cluster to be considered. 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

User defined class CBAlgoAngleCompat ... these comments are used to generate doxygen documentation!

Definition at line 28 of file CBAlgoAngleCompat.h.

Constructor & Destructor Documentation

cmtool::CBAlgoAngleCompat::CBAlgoAngleCompat ( )

Default constructor.

Definition at line 7 of file CBAlgoAngleCompat.cxx.

7  : CBoolAlgoBase() {
8 
9  //this just sets default values
10 
11  SetDebug(true);
12 
13  SetAngleCut(30.); // in degrees
14 
15  SetMinHits(0);
16 
17  SetAllow180Ambig(false);
18 
19  SetUseOpeningAngle(false);
20 
21  // angle_dist_histo = 0;
22 
23  // angle_dist_histo = new TH1F("angle_dist_histo","Cluster Angle Differences",100,-360,360);
24 
25  } //end constructor
void SetDebug(bool on)
Method to set debug mode.
CBoolAlgoBase()
Default constructor.
Definition: CBoolAlgoBase.h:32
void SetUseOpeningAngle(bool on)
Method to set angle cut value to be based on opening angle.
void SetAllow180Ambig(bool on)
Method to set whether you allow angles to match with +/- 180 deg difference.
void SetAngleCut(double angle)
Method to set cut value in degrees for angle compatibility test.
void SetMinHits(size_t n)
Set Minimum Number of Hits to consider Cluster.
virtual cmtool::CBAlgoAngleCompat::~CBAlgoAngleCompat ( )
inlinevirtual

Default destructor.

Definition at line 36 of file CBAlgoAngleCompat.h.

36 {};

Member Function Documentation

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

Overloaded (from CBoolAlgoBase) Bool function.

Reimplemented from cmtool::CBoolAlgoBase.

Definition at line 27 of file CBAlgoAngleCompat.cxx.

29  {
30 
31  //if number of hits not large enough skip
32  if ( _minHits and ((cluster1.GetHitVector().size() < _minHits) or (cluster2.GetHitVector().size() < _minHits)) ) {
33  return false;
34  }
35 
36  //pretty sure we don't need conversion factors here.
37  //already in cm/cm units, degrees? need to check that
38  double angle1 = cluster1.GetParams().angle_2d;// * _time_2_cm / _wire_2_cm;
39  double angle2 = cluster2.GetParams().angle_2d;// * _time_2_cm / _wire_2_cm;
40 
41  double w_start1 = cluster1.GetParams().start_point.w;// * _wire_2_cm;
42  double t_start1 = cluster1.GetParams().start_point.t;// * _time_2_cm;
43  double w_start2 = cluster2.GetParams().start_point.w;// * _wire_2_cm;
44  double t_start2 = cluster2.GetParams().start_point.t;// * _time_2_cm;
45 
46  if (_debug){
47 
48  std::cout << "Cluster 1:" << std::endl;
49  std::cout << "\tAngle: " << angle1 << std::endl;
50  std::cout << "\tStart: ( " << w_start1 << ", " << t_start1 << " )" << std::endl;
51  std::cout << "Cluster 2:" << std::endl;
52  std::cout << "\tAngle: " << angle2 << std::endl;
53  std::cout << "\tStart: ( " << w_start2 << ", " << t_start2 << " )" << std::endl;
54 
55  }
56 
57  //for some reason angles are frequently -999.99.
58  //if either angle is this, clearly the cluster 2d angle is not well defined
59  //and this algorithm does not apply
60  if(angle1 < -998 || angle2 < -998)
61  return false;
62 
63  // if(angle_dist_histo){
64  // angle_dist_histo->Fill(angle1-angle2);
65  // }
66  // else
67  // std::cout<<"\n\n\nSOMETHING WENT HORRIBLY WRONG IN CBALGOANGLECOMPAT\n\n\n\n\n\n\n"<<std::endl;
68 
69  bool compatible = false;
70 
71  double my_cut_value = _max_allowed_2D_angle_diff;
72  //if using opening angle, have angle cutoff be the smaller of the two opening angles
74  my_cut_value = std::min(cluster1.GetParams().opening_angle, cluster2.GetParams().opening_angle);
75 
76  //if you don't care if clusters have been reconstructed backwards
78  compatible = ( abs(angle1-angle2) < my_cut_value ||
79  abs(angle1-angle2-180) < my_cut_value ||
80  abs(angle1-angle2+180) < my_cut_value );
81  else
82  compatible = ( abs(angle1-angle2) < my_cut_value );
83 
84 
85  if(_verbose) {
86  if(compatible) std::cout<<"These two clusters are compatible in angle."<<std::endl;
87  else std::cout<<"These two clusters are NOT compatible in angle."<<std::endl;
88  }
89 
90  return compatible;
91 
92  } // end Merge function
T abs(T value)
bool _allow_180_ambig
bool to suppress lots of output if you want
T min(sqlite3 *const db, std::string const &table_name, std::string const &column_name)
Definition: statistics.h:55
double _max_allowed_2D_angle_diff
hard shower-axis angle cutoff (only valid for _use_opening_angle==false)
bool _verbose
Boolean to choose verbose mode. Turned on if CMergeManager/CMatchManager&#39;s verbosity level is >= kPer...
Definition: CMAlgoBase.h:102
QTextStream & endl(QTextStream &s)
void cmtool::CBAlgoAngleCompat::SetAllow180Ambig ( bool  on)
inline

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

Definition at line 46 of file CBAlgoAngleCompat.h.

46 { _allow_180_ambig = on; }
bool _allow_180_ambig
bool to suppress lots of output if you want
void cmtool::CBAlgoAngleCompat::SetAngleCut ( double  angle)
inline

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

Definition at line 49 of file CBAlgoAngleCompat.h.

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

Method to set debug mode.

Definition at line 43 of file CBAlgoAngleCompat.h.

void cmtool::CBAlgoAngleCompat::SetMinHits ( size_t  n)
inline

Set Minimum Number of Hits to consider Cluster.

Definition at line 55 of file CBAlgoAngleCompat.h.

55 { _minHits = n; }
std::void_t< T > n
void cmtool::CBAlgoAngleCompat::SetUseOpeningAngle ( bool  on)
inline

Method to set angle cut value to be based on opening angle.

Definition at line 52 of file CBAlgoAngleCompat.h.

Member Data Documentation

bool cmtool::CBAlgoAngleCompat::_allow_180_ambig
protected

bool to suppress lots of output if you want

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 66 of file CBAlgoAngleCompat.h.

bool cmtool::CBAlgoAngleCompat::_debug
protected

Definition at line 61 of file CBAlgoAngleCompat.h.

double cmtool::CBAlgoAngleCompat::_max_allowed_2D_angle_diff
protected

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

Definition at line 69 of file CBAlgoAngleCompat.h.

size_t cmtool::CBAlgoAngleCompat::_minHits
protected

Definition at line 75 of file CBAlgoAngleCompat.h.

bool cmtool::CBAlgoAngleCompat::_use_opening_angle
protected

bool set to true if you want to use opening angle as the cutoff angle instead of whatever you set with SetAngleCut

Definition at line 73 of file CBAlgoAngleCompat.h.

TH1F* cmtool::CBAlgoAngleCompat::angle_dist_histo
protected

Min Number of hits for cluster to be considered.

Histogram used for debugging/cut value settings

Definition at line 78 of file CBAlgoAngleCompat.h.


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