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

#include "CFAlgoVolumeOverlap.h"

Inheritance diagram for cmtool::CFAlgoVolumeOverlap:
cmtool::CFloatAlgoBase cmtool::CMAlgoBase

Public Member Functions

 CFAlgoVolumeOverlap ()
 Default constructor. More...
 
virtual ~CFAlgoVolumeOverlap ()
 Default destructor. More...
 
virtual float Float (const std::vector< const cluster::ClusterParamsAlg * > &clusters)
 
virtual void Report ()
 
virtual void Reset ()
 Function to reset the algorithm instance, called together with manager's Reset() More...
 
void SetVerbose (bool on)
 Function to set verbose output. More...
 
void SetDebug (bool on)
 Function to set debug output. More...
 
void SetUseAllPlanes (bool on)
 Function to set if _UseAllPlanes is on/off. 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 ()
 
void SetAnaFile (TFile *fout)
 Setter function for an output plot TFile pointer. More...
 

Protected Attributes

TFile * _fout
 TFile pointer to an output file. More...
 

Private Attributes

double _w2cm
 
double _t2cm
 
bool _verbose
 
bool _debug
 
bool _UseAllPlanes
 

Detailed Description

User implementation for CFloatAlgoBase class doxygen documentation!

Definition at line 27 of file CFAlgoVolumeOverlap.h.

Constructor & Destructor Documentation

cmtool::CFAlgoVolumeOverlap::CFAlgoVolumeOverlap ( )

Default constructor.

Definition at line 10 of file CFAlgoVolumeOverlap.cxx.

References _t2cm, _w2cm, SetDebug(), SetUseAllPlanes(), SetVerbose(), util::GeometryUtilities::TimeToCm(), and util::GeometryUtilities::WireToCm().

10  : CFloatAlgoBase()
11  //-------------------------------------------------------
12  {
14  _w2cm = geou.WireToCm();
15  _t2cm = geou.TimeToCm();
16  SetVerbose(false);
17  SetDebug(false);
18  SetUseAllPlanes(false); // Any plane combination OK
19  }
Double_t TimeToCm() const
Double_t WireToCm() const
CFloatAlgoBase()
Default constructor.
void SetDebug(bool on)
Function to set debug output.
void SetUseAllPlanes(bool on)
Function to set if _UseAllPlanes is on/off.
void SetVerbose(bool on)
Function to set verbose output.
virtual cmtool::CFAlgoVolumeOverlap::~CFAlgoVolumeOverlap ( )
inlinevirtual

Default destructor.

Definition at line 35 of file CFAlgoVolumeOverlap.h.

References Float(), Report(), and Reset().

35 {};

Member Function Documentation

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;}
float cmtool::CFAlgoVolumeOverlap::Float ( const std::vector< const cluster::ClusterParamsAlg * > &  clusters)
virtual

Core function: given a set of CPANs, return a float which indicates the compatibility the cluster combination.

Reimplemented from cmtool::CFloatAlgoBase.

Definition at line 28 of file CFAlgoVolumeOverlap.cxx.

References _debug, _UseAllPlanes, _verbose, _w2cm, Polygon2D::Area(), Polygon2D::Contained(), geo::GeometryCore::DetHalfHeight(), geo::GeometryCore::DetLength(), geo::GeometryCore::Nwires(), Polygon2D::Point(), s, Polygon2D::Size(), Polygon2D::UntanglePolygon(), and geo::GeometryCore::WireEndPoints().

Referenced by ~CFAlgoVolumeOverlap().

30  {
31 
33 
34  // Code-block by Kazu starts
35  // This ensures the algorithm works only if # clusters is > 2 (and not =2)
36  // You may take out this block if you want to allow matching using clusters from only 2 planes.
37  if (_UseAllPlanes) { if(clusters.size()==2) return -1; }
38  // Code-block by Kazu ends
39 
40  //This algorithm now works for 3 planes: find 3Dstart point from first 2 planes and find
41  //How well that agrees with 3rd plane's start point location.
42 
43  //So first, make sure clusters vector has more than 1 element.
44  //If not, return -1. Algorithm does not make sense
45  if ( clusters.size() == 1 )
46  return -1;
47 
48  if (_verbose) { std::cout << "Number of clusters taken into account: " << clusters.size() << std::endl; }
49 
50  //Nomenclature:
51  //Planes: U == 0; V == 1; Y == 2.
52 
53  //Get hits for all 3 clusters
54  std::vector<std::vector<util::PxHit> > Hits(3, std::vector<util::PxHit>());
55 
56  for (size_t c=0; c < clusters.size(); c++)
57  Hits.at( clusters.at(c)->Plane() ) = clusters.at(c)->GetHitVector();
58 
59  //std::vector<util::PxHit> hits0 = clusters.at(0)->GetHitVector();
60  //std::vector<util::PxHit> hits1 = clusters.at(1)->GetHitVector();
61  //std::vector<util::PxHit> hits2 = clusters.at(2)->GetHitVector();
62 
63  //Wire Range Vector. Entries 0,1,2 correspond to planes
64  std::vector<int> StartWires;
65  std::vector<int> EndWires;
66  std::vector<float> StartTimes;
67  std::vector<float> EndTimes;
68  //loop over number of planes and pre-fill StartWires and EndWires
69  for (int pl=0; pl < 3; pl++){
70  StartWires.push_back(9999);
71  EndWires.push_back(0);
72  StartTimes.push_back(9999);
73  EndTimes.push_back(0);
74  }
75 
76  for (size_t h=0; h < Hits.size(); h++){
77  for ( auto& hit: Hits.at(h) ){
78  if ( Hits.at(h).size() == 0 ){
79  std::cout << "Need to insert fake hit ranges...";
80  }
81  else{
82  if ( int(hit.w / _w2cm) < StartWires.at(h) ) { StartWires.at(h) = int(hit.w / _w2cm); }
83  if ( int(hit.w / _w2cm) > EndWires.at(h) ) { EndWires.at(h) = int(hit.w / _w2cm); }
84  if ( hit.t < StartTimes.at(h) ) { StartTimes.at(h) = hit.t; }
85  if ( hit.t > EndTimes.at(h) ) { EndTimes.at(h) = hit.t; }
86  }
87  }//for all hits in range
88  }//for all hit-lists (i.e. for all clusters)
89 
90  //if one of the plane's wire-range is still [9999, 0] then replace it
91  //with min/max wire number from that plane
92  //similarly for time-range
93  //This allows for easy 2-Plane matching: if we are ignoring one plane
94  //completely by giving the wire-range for the whole plane the intersection
95  //will effectively be the intersection of the other two planes
96  for (size_t h=0; h < Hits.size(); h++){
97  if ( StartWires.at(h) == 9999 ) { StartWires.at(h) = 1; }
98  if ( EndWires.at(h) == 0 ) { EndWires.at(h) = geo->Nwires(h)-1; }
99  if ( StartTimes.at(h) == 9999 ) { StartTimes.at(h) = 0; }
100  if ( EndTimes.at(h) == 0 ) { EndTimes.at(h) = 9999; }
101  }
102 
103 
104  //Find overlap in time between three planes
105  if ( (StartTimes.at(1) > EndTimes.at(0)) or (StartTimes.at(1) > EndTimes.at(2)) or
106  (StartTimes.at(2) > EndTimes.at(0)) or (StartTimes.at(2) > EndTimes.at(1)) or
107  (StartTimes.at(0) > EndTimes.at(1)) or (StartTimes.at(0) > EndTimes.at(2)) ){
108  if (_verbose) { std::cout << "No Time-Overlap!" << std::endl << std::endl; }
109  return -1;
110  }
111  //do two planes at a time...start with U and V
112  float Tmin=9999, Tmax=0;
113  ( StartTimes.at(1) > StartTimes.at(0) ) ? (Tmin = StartTimes.at(1)) : (Tmin = StartTimes.at(0));
114  if (StartTimes.at(2) > Tmin) { Tmin = StartTimes.at(2); }
115  ( EndTimes.at(1) < EndTimes.at(0) ) ? (Tmax = EndTimes.at(1)) : (Tmax = EndTimes.at(0));
116  if (EndTimes.at(2) < Tmax) { Tmax = EndTimes.at(2); }
117  float Trange = Tmax-Tmin;
118 
119  //Now get start & end points of all these wires
120  Double_t xyzStart0WireStart[3] = {0., 0., 0.}; //xyz array info of start point for smallest wire number on plane 0
121  Double_t xyzStart0WireEnd[3] = {0., 0., 0.};
122  Double_t xyzEnd0WireStart[3] = {0., 0., 0.};
123  Double_t xyzEnd0WireEnd[3] = {0., 0., 0.};
124  Double_t xyzStart1WireStart[3] = {0., 0., 0.}; //xyz array info of start point for smallest wire number on plane 1
125  Double_t xyzStart1WireEnd[3] = {0., 0., 0.};
126  Double_t xyzEnd1WireStart[3] = {0., 0., 0.};
127  Double_t xyzEnd1WireEnd[3] = {0., 0., 0.};
128  Double_t xyzStart2WireStart[3] = {0., 0., 0.}; //xyz array info of start point for smallest wire number on plane 2
129  Double_t xyzStart2WireEnd[3] = {0., 0., 0.};
130  Double_t xyzEnd2WireStart[3] = {0., 0., 0.};
131  Double_t xyzEnd2WireEnd[3] = {0., 0., 0.};
132 
133  if (_debug) {
134  std::cout << "Wire Ranges:" << std::endl;
135  std::cout << "U-Plane: [ " << StartWires.at(0) << ", " << EndWires.at(0) << "]" << std::endl;
136  std::cout << "V-Plane: [ " << StartWires.at(1) << ", " << EndWires.at(1) << "]" << std::endl;
137  std::cout << "Y-Plane: [ " << StartWires.at(2) << ", " << EndWires.at(2) << "]" << std::endl;
138  std::cout << std::endl;
139  }
140 
141  /*
142  geo->WireEndPoints(0, StartWires.at(0), xyzStart0WireStart, xyzStart0WireEnd);
143  geo->WireEndPoints(0, EndWires.at(0), xyzEnd0WireStart, xyzEnd0WireEnd);
144  geo->WireEndPoints(1, StartWires.at(1), xyzStart1WireStart, xyzStart1WireEnd);
145  geo->WireEndPoints(1, EndWires.at(1), xyzEnd1WireStart, xyzEnd1WireEnd);
146  geo->WireEndPoints(2, StartWires.at(2), xyzStart2WireStart, xyzStart2WireEnd);
147  geo->WireEndPoints(2, EndWires.at(2), xyzEnd2WireStart, xyzEnd2WireEnd);
148  */
149  geo->WireEndPoints(0, 0, 0, StartWires.at(0), xyzStart0WireStart, xyzStart0WireEnd);
150  geo->WireEndPoints(0, 0, 0, EndWires.at(0), xyzEnd0WireStart, xyzEnd0WireEnd);
151  geo->WireEndPoints(0, 0, 1, StartWires.at(1), xyzStart1WireStart, xyzStart1WireEnd);
152  geo->WireEndPoints(0, 0, 1, EndWires.at(1), xyzEnd1WireStart, xyzEnd1WireEnd);
153  geo->WireEndPoints(0, 0, 2, StartWires.at(2), xyzStart2WireStart, xyzStart2WireEnd);
154  geo->WireEndPoints(0, 0, 2, EndWires.at(2), xyzEnd2WireStart, xyzEnd2WireEnd);
155 
156  //check that z-positions for plane2 are the same...if not error!
157  //if ( xyzStart2WireStart[2] != xyzStart2WireEnd[2] ) { std::cout << "Y-wire does not have same Z start and end..." << std::endl; }
158  double zMin = xyzStart2WireStart[2];
159  //if ( xyzEnd2WireStart[2] != xyzEnd2WireEnd[2] ) { std::cout << "Y-wire does not have same Z start and end..." << std::endl; }
160  double zMax = xyzEnd2WireStart[2];
161 
162  //Plane U == Plane 0
163  //Plane V == Plane 1
164  //Plane Y == Plane 2
165 
166  //Each line can be described by function y = s*z + b (x,y,z coordinates same as uBooNE coord.)
167  //Slopes known: Pl0 is +60 clockwise from vertical. Pl1 is -60, counterclockwise from vertical. Looking at TPC with beam from left
168  double slopeU = tan(30*3.14/180.);
169  double slopeV = tan(-30*3.14/180.);
170 
171  //Find intercepts:
172  double bUup = xyzStart0WireStart[1] - xyzStart0WireStart[2] * slopeU;
173  double bUdn = xyzEnd0WireStart[1] - xyzEnd0WireStart[2] * slopeU;
174  double bVdn = xyzStart1WireStart[1] - xyzStart1WireStart[2] * slopeV;
175  double bVup = xyzEnd1WireStart[1] - xyzEnd1WireStart[2] * slopeV;
176  //make sure we know which line is above which
177  if ( bUup < bUdn ) { std::cout << "Uup and Udn are mixed up!" << std::endl; }
178  if ( bVdn > bVup ) { std::cout << "Vup and Vdn are mixed up!" << std::endl; }
179  //Pl2 lines are vertical...slope is infinite and no intercept.
180 
181  //Find intercepts of U wire-ranges with Y plane (easy since vertical)
182  //For now assume wire-ranges go to infinity, worry about TPC constraints later
183 
184  //Plug in Y-plane zMin and zMax coordinates into equations for U/V wire lines
185  double VdnZmin = slopeV * zMin + bVdn;
186  double VdnZmax = slopeV * zMax + bVdn;
187  double VupZmin = slopeV * zMin + bVup;
188  double VupZmax = slopeV * zMax + bVup;
189  double UdnZmin = slopeU * zMin + bUdn;
190  double UdnZmax = slopeU * zMax + bUdn;
191  double UupZmin = slopeU * zMin + bUup;
192  double UupZmax = slopeU * zMax + bUup;
193 
194  if (_debug){
195  std::cout << "Y-Plane and U-Plane points [Z,Y]:" << std::endl;
196  std::cout << "\t\t[ " << zMin << ", " << UdnZmin << "]" << std::endl;
197  std::cout << "\t\t[ " << zMin << ", " << UupZmin << "]" << std::endl;
198  std::cout << "\t\t[ " << zMax << ", " << UupZmax << "]" << std::endl;
199  std::cout << "\t\t[ " << zMax << ", " << UdnZmax << "]" << std::endl;
200  std::cout << "Y-Plane and V-Plane points [Z,Y]:" << std::endl;
201  std::cout << "\t\t[ " << zMin << ", " << VdnZmin << "]" << std::endl;
202  std::cout << "\t\t[ " << zMin << ", " << VupZmin << "]" << std::endl;
203  std::cout << "\t\t[ " << zMax << ", " << VupZmax << "]" << std::endl;
204  std::cout << "\t\t[ " << zMax << ", " << VdnZmax << "]" << std::endl;
205  }
206  //We now have Two polygons:
207  //One is the intersection of Y-Plane wires with U-Plane wires
208  //The other the intersection of planes Y and V.
209  //The intersection points of these two polygons is the
210  //overall intersection Area of the 3 clusters on the Y-Z plane.
211 
212  //Go through all segment intersections. If one is found add to
213  //list of points.
214  //Create a list of points for polygon
215  std::vector< std::pair<float,float> > WireIntersection;
216  double zInt; // temporary holder for z-intersection point of oblique sides
217  //Check: Vup and Uup, Vup and Uright, Vup and Uleft, Vup and Udn.
218  //Intersection between Vup and Uup: if within zMin, zMax then ok!
219  zInt = (bUup-bVup)/(slopeV-slopeU);
220  if ( (zInt > zMin) and (zInt < zMax) )
221  WireIntersection.push_back( std::make_pair( zInt, slopeV*zInt+bVup ) );
222  //Intersection between Vup and Uright:
223  if ( (VupZmax < UupZmax) and (VupZmax > UdnZmax) )
224  WireIntersection.push_back( std::make_pair( zMax, VupZmax ) );
225  //Intersection between Vup and Uleft:
226  if ( (VupZmin < UupZmin) and ( VupZmin > UdnZmin) )
227  WireIntersection.push_back( std::make_pair( zMin, VupZmin ) );
228  //Intersection between Vup and Udn:
229  zInt = (bUdn-bVup)/(slopeV-slopeU);
230  if ( (zInt > zMin) and (zInt < zMax) )
231  WireIntersection.push_back( std::make_pair( zInt, slopeV*zInt+bVup ) );
232 
233  //Check: Vdn and Uup, Uright, Uleft, Udn:
234  //Intersection between Vdn and Uup:
235  zInt = (bUup-bVdn)/(slopeV-slopeU);
236  if ( (zInt > zMin) and (zInt < zMax) )
237  WireIntersection.push_back( std::make_pair( zInt, slopeV*zInt+bVdn ) );
238  //Intersection between Vdn and Uright:
239  if ( (VdnZmax < UupZmax) and (VdnZmax > UdnZmax) )
240  WireIntersection.push_back( std::make_pair( zMax, VdnZmax ) );
241  //Intersection between Vdn and Uleft:
242  if ( (VdnZmin < UupZmin) and ( VdnZmin > UdnZmin) )
243  WireIntersection.push_back( std::make_pair( zMin, VdnZmin ) );
244  //Intersection between Vdn and Udn:
245  zInt = (bUdn-bVdn)/(slopeV-slopeU);
246  if ( (zInt > zMin) and (zInt < zMax) )
247  WireIntersection.push_back( std::make_pair( zInt, slopeV*zInt+bVdn ) );
248 
249  //Check: Vright and Uup, Udn:
250  //Intersection between Vright and Uup:
251  if ( (UupZmax < VupZmax) and ( UupZmax > VdnZmax) )
252  WireIntersection.push_back( std::make_pair( zMax, UupZmax ) );
253  //Intersection between Vright and Udn:
254  if ( (UdnZmax < VupZmax) and ( UdnZmax > VdnZmax) )
255  WireIntersection.push_back( std::make_pair( zMax, UdnZmax ) );
256 
257  //Check Vleft and Uup, Udn:
258  //Intersection between Vleft and Uup:
259  if ( (UupZmin < VupZmin) and ( UupZmin > VdnZmin) )
260  WireIntersection.push_back( std::make_pair( zMin, UupZmin ) );
261  //Intersection between Vleft and Udn:
262  if ( (UdnZmin < VupZmin) and ( UdnZmin > VdnZmin) )
263  WireIntersection.push_back( std::make_pair( zMin, UdnZmin ) );
264 
265  //If length is 0 then no intersection...return -1
266  if ( WireIntersection.size() == 0 ){
267  if (_verbose) { std::cout << "No intersection..." << std::endl << std::endl; }
268  return -1;
269  }
270 
271  //Now our polygon is complete...
272  //need to disentangle in case points added in incorrect order
273  //then calculate area
274  Polygon2D WirePolygon(WireIntersection);
275  //Variable to hold final output Area
276  double PolyArea = -1;
277  //Check order
278  WirePolygon.UntanglePolygon();
279 
280  //Create a Polygon for the Y-Z TPC Plane
281  std::vector< std::pair<float,float> > TPCCorners;
282  TPCCorners.push_back( std::make_pair(0., -geo->DetHalfHeight()) );
283  TPCCorners.push_back( std::make_pair(geo->DetLength(), -geo->DetHalfHeight()) );
284  TPCCorners.push_back( std::make_pair(geo->DetLength(), geo->DetHalfHeight()) );
285  TPCCorners.push_back( std::make_pair(0., geo->DetHalfHeight()) );
286  Polygon2D TPCPolygon(TPCCorners);
287  if (TPCPolygon.Contained(WirePolygon) ){
288  if (_verbose) {
289  std::cout << "Wire Overlap contained in TPC" << std::endl;
290  std::cout << "Intersection Polygon Coordinates [Z,Y]: " << std::endl;
291  for (unsigned int s=0; s < WirePolygon.Size(); s++)
292  std::cout << "\t\t[ " << WirePolygon.Point(s).first << ", " << WirePolygon.Point(s).second << "]" << std::endl;
293  std::cout << std::endl;
294  }
295  PolyArea = WirePolygon.Area();
296  }
297  else {
298  if (_verbose) {
299  std::cout << "Wire overlap not fully contained in TPC" << std::endl;
300  std::cout << "Intersection Polygon Coordinates [Z,Y]: " << std::endl;
301  for (unsigned int s=0; s < WirePolygon.Size(); s++)
302  std::cout << "\t\t[ " << WirePolygon.Point(s).first << ", " << WirePolygon.Point(s).second << "]" << std::endl;
303  std::cout << std::endl;
304  }
305  //product polygon should be the intersection of WirePolygon and TPCPolygon
306  Polygon2D IntersectionPolygon(TPCPolygon, WirePolygon);
307  PolyArea = IntersectionPolygon.Area();
308  }
309 
310  //return polygon area -> larger = better!
311  if (_verbose) { std::cout << "Intersection area: " << PolyArea << std::endl << std::endl; }
312  return Trange*PolyArea;
313  }
Float_t s
Definition: plot.C:23
unsigned int Nwires(unsigned int p, unsigned int tpc=0, unsigned int cstat=0) const
Returns the total number of wires in the specified plane.
geo::Length_t DetHalfHeight(geo::TPCID const &tpcid) const
Returns the half height of the active volume of the specified TPC.
geo::Length_t DetLength(geo::TPCID const &tpcid) const
Returns the length of the active volume of the specified TPC.
reference at(size_type n)
Definition: PtrVector.h:365
size_type size() const
Definition: PtrVector.h:308
Detector simulation of raw signals on wires.
art::PtrVector< recob::Hit > Hits
void WireEndPoints(geo::WireID const &wireid, double *xyzStart, double *xyzEnd) const
Fills two arrays with the coordinates of the wire end points.
Namespace collecting geometry-related classes utilities.
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::CFAlgoVolumeOverlap::Report ( )
virtual

Optional function: called after each iterative approach if a manager class is run with verbosity level <= kPerIteration. Maybe useful for debugging.

Reimplemented from cmtool::CMAlgoBase.

Definition at line 316 of file CFAlgoVolumeOverlap.cxx.

Referenced by ~CFAlgoVolumeOverlap().

318  {
319 
320  }
void cmtool::CFAlgoVolumeOverlap::Reset ( )
virtual

Function to reset the algorithm instance, called together with manager's Reset()

Reimplemented from cmtool::CMAlgoBase.

Definition at line 22 of file CFAlgoVolumeOverlap.cxx.

Referenced by ~CFAlgoVolumeOverlap().

24  {
25  }
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::CFAlgoVolumeOverlap::SetDebug ( bool  on)
inline

Function to set debug output.

Definition at line 62 of file CFAlgoVolumeOverlap.h.

References _debug.

Referenced by CFAlgoVolumeOverlap().

void cmtool::CFAlgoVolumeOverlap::SetUseAllPlanes ( bool  on)
inline

Function to set if _UseAllPlanes is on/off.

Definition at line 65 of file CFAlgoVolumeOverlap.h.

References _UseAllPlanes.

Referenced by CFAlgoVolumeOverlap().

void cmtool::CFAlgoVolumeOverlap::SetVerbose ( bool  on)
inlinevirtual

Function to set verbose output.

Reimplemented from cmtool::CMAlgoBase.

Definition at line 59 of file CFAlgoVolumeOverlap.h.

References _verbose.

Referenced by CFAlgoVolumeOverlap().

Member Data Documentation

bool cmtool::CFAlgoVolumeOverlap::_debug
private

Definition at line 71 of file CFAlgoVolumeOverlap.h.

Referenced by Float(), 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::CFAlgoVolumeOverlap::_t2cm
private

Definition at line 69 of file CFAlgoVolumeOverlap.h.

Referenced by CFAlgoVolumeOverlap().

bool cmtool::CFAlgoVolumeOverlap::_UseAllPlanes
private

Definition at line 72 of file CFAlgoVolumeOverlap.h.

Referenced by Float(), and SetUseAllPlanes().

bool cmtool::CFAlgoVolumeOverlap::_verbose
private

Definition at line 70 of file CFAlgoVolumeOverlap.h.

Referenced by Float(), and SetVerbose().

double cmtool::CFAlgoVolumeOverlap::_w2cm
private

Definition at line 69 of file CFAlgoVolumeOverlap.h.

Referenced by CFAlgoVolumeOverlap(), and Float().


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