LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
geoalgo::Cylinder Class Reference

Representation of a 3D Cylinder volume. A Cylinder object inherits from a geoalgo::Line. More...

#include "GeoCylinder.h"

Inheritance diagram for geoalgo::Cylinder:
geoalgo::Line

Public Member Functions

 Cylinder ()
 Default constructor. More...
 
virtual ~Cylinder ()
 Default destructor. More...
 
 Cylinder (const double x_min, const double y_min, const double z_min, const double x_max, const double y_max, const double z_max, const double radius)
 Alternative ctor (0) More...
 
 Cylinder (const Point_t &min, const Vector_t &max, const double radius)
 Altenartive ctor (1) More...
 
bool Contain (const Point_t &pt) const
 Containment evaluation. More...
 
double GetRadius ()
 Getters. More...
 
void SetRadius (double r)
 Setters. More...
 
const Point_tPt1 () const
 Start getter. More...
 
void Pt1 (const double x, const double y, const double z)
 Pt1 setter. More...
 
template<class T >
void Pt1 (const T &pt1)
 Pt1 setter template. More...
 
const Point_tPt2 () const
 Direction getter. More...
 
void Pt2 (const double x, const double y, const double z)
 Pt2 setter. More...
 
template<class T >
void Pt2 (const T &pt2)
 Pt2 setter template. More...
 

Protected Member Functions

void check_and_raise (const Point_t &p1, const Point_t &p2) const
 Compatibility check. More...
 

Protected Attributes

double _radius
 Radius of the cylinder. More...
 
GeoAlgo _geoAlgo
 
Point_t _pt1
 First point denoting infinite line. More...
 
Vector_t _pt2
 Second point denoting infinite line. More...
 

Detailed Description

Representation of a 3D Cylinder volume. A Cylinder object inherits from a geoalgo::Line.

Remarks
input: 2 points, which define the line representing the central axis of the cylinder a radius, defining the radius of the cylinder

Definition at line 30 of file GeoCylinder.h.

Constructor & Destructor Documentation

geoalgo::Cylinder::Cylinder ( )

Default constructor.

Definition at line 8 of file GeoCylinder.cxx.

Referenced by ~Cylinder().

9  : Line()
10  , _radius (0.)
11  {}
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58
Line()
Default constructor.
Definition: GeoLine.cxx:8
virtual geoalgo::Cylinder::~Cylinder ( )
inlinevirtual

Default destructor.

Definition at line 38 of file GeoCylinder.h.

References Contain(), Cylinder(), max, min, pt, radius, x_max, and x_min.

38 {};
geoalgo::Cylinder::Cylinder ( const double  x_min,
const double  y_min,
const double  z_min,
const double  x_max,
const double  y_max,
const double  z_max,
const double  radius 
)

Alternative ctor (0)

Definition at line 13 of file GeoCylinder.cxx.

16  : Line(x_min, y_min, z_min, x_max, y_max, z_max)
17  , _radius ( radius )
18  {}
double x_min
Definition: berger.C:15
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58
Double_t radius
double x_max
Definition: berger.C:16
Line()
Default constructor.
Definition: GeoLine.cxx:8
geoalgo::Cylinder::Cylinder ( const Point_t min,
const Vector_t max,
const double  radius 
)

Altenartive ctor (1)

Definition at line 20 of file GeoCylinder.cxx.

21  : Line(min, max)
22  , _radius ( radius )
23  {
24  if(min.size()!=3 || max.size()!=3)
25  throw GeoAlgoException("Cylinder ctor accepts only 3D Point!");
26  }
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58
Int_t max
Definition: plot.C:27
Double_t radius
Int_t min
Definition: plot.C:26
Line()
Default constructor.
Definition: GeoLine.cxx:8

Member Function Documentation

void geoalgo::Line::check_and_raise ( const Point_t p1,
const Point_t p2 
) const
protectedinherited

Compatibility check.

Definition at line 43 of file GeoLine.cxx.

Referenced by geoalgo::DirectedLine::DirectedLine(), geoalgo::Line::Line(), geoalgo::Line::Pt1(), geoalgo::Line::Pt2(), and geoalgo::Line::~Line().

44  {
45  if(p1.size()!=3) throw GeoAlgoException("<<check_and_raise>> Pt1 is not 3 dimensional point!");
46  if(p2.size()!=3) throw GeoAlgoException("<<check_and_raise>> Pt2 is not 3 dimensional point!");
47  if(p1 == p2) throw GeoAlgoException("<<check_and_raise>> Two identical points not allowed for Line ctor!");
48  }
bool geoalgo::Cylinder::Contain ( const Point_t pt) const

Containment evaluation.

Test if a point is contained within the box

Definition at line 28 of file GeoCylinder.cxx.

References _geoAlgo, geoalgo::Line::_pt1, geoalgo::Line::_pt2, _radius, geoalgo::Vector::Angle(), and geoalgo::GeoAlgo::SqDist().

Referenced by ~Cylinder().

28  {
29 
30  // get a vector that defines the axis of the cylinder
31  Vector_t axis = _pt1-_pt2;
32  Vector_t dirpt = pt-_pt2;
33 
34  // angle of point w.r.t. the axis
35  double angleMin = axis.Angle(dirpt);
36 
37  // if the angle is > 90 -> outside -> return
38  if (angleMin > 0.5*3.14)
39  return false;
40 
41  // revert the axis direction
42  axis = _pt2-_pt1;
43  dirpt = pt-_pt1;
44  angleMin = axis.Angle(dirpt);
45 
46  // if the angle is > 90 -> outside -> return
47  if (angleMin > 0.5*3.14)
48  return false;
49 
50  // if still here, all that is left to verify is
51  // that the point isn't more than a radius
52  // away from the cylinder axis
53  // 1) make a line corresponding to the axis
54  // 2) get the distance between the point and the line
55  double radial_dist_sq = _geoAlgo.SqDist(*this,pt);
56 
57  if (radial_dist_sq > _radius*_radius)
58  return false;
59 
60  return true;
61 
62  }
double SqDist(const Line_t &line, const Point_t &pt) const
Definition: GeoAlgo.h:92
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:61
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58
TMarker * pt
Definition: egs.C:25
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
recob::tracking::Vector_t Vector_t
double Angle(const Vector &obj) const
Compute a cross product of two vectors.
Definition: GeoVector.cxx:80
double geoalgo::Cylinder::GetRadius ( )
inline

Getters.

Definition at line 52 of file GeoCylinder.h.

References _radius.

52 { return _radius; }
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58
const Point_t & geoalgo::Line::Pt1 ( ) const
inherited
void geoalgo::Line::Pt1 ( const double  x,
const double  y,
const double  z 
)
inherited

Pt1 setter.

Definition at line 27 of file GeoLine.cxx.

References geoalgo::Line::_pt1, geoalgo::Line::_pt2, geoalgo::Line::check_and_raise(), x, y, and z.

28  {
29  _pt1[0] = x;
30  _pt1[1] = y;
31  _pt1[2] = z;
33  }
Float_t x
Definition: compare.C:6
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:279
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:61
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
void check_and_raise(const Point_t &p1, const Point_t &p2) const
Compatibility check.
Definition: GeoLine.cxx:43
template<class T >
void geoalgo::Line::Pt1 ( const T &  pt1)
inlineinherited

Pt1 setter template.

Definition at line 75 of file GeoLine.h.

References geoalgo::Line::check_and_raise().

76  {
77  _pt1 = Point_t(pt1);
79  }
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:61
Vector Point_t
Definition: GeoVector.h:200
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
void check_and_raise(const Point_t &p1, const Point_t &p2) const
Compatibility check.
Definition: GeoLine.cxx:43
const Point_t & geoalgo::Line::Pt2 ( ) const
inherited

Direction getter.

Definition at line 25 of file GeoLine.cxx.

References geoalgo::Line::_pt2.

Referenced by geoalgo::GeoAlgo::_ClosestPt_(), geoalgo::GeoAlgo::_commonOrigin_(), geoalgo::GeoAlgo::_SqDist_(), and geoalgo::Line::~Line().

25 { return _pt2; }
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
void geoalgo::Line::Pt2 ( const double  x,
const double  y,
const double  z 
)
inherited

Pt2 setter.

Definition at line 35 of file GeoLine.cxx.

References geoalgo::Line::_pt1, geoalgo::Line::_pt2, geoalgo::Line::check_and_raise(), x, y, and z.

36  {
37  _pt2[0] = x;
38  _pt2[1] = y;
39  _pt2[2] = z;
41  }
Float_t x
Definition: compare.C:6
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:279
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:61
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
void check_and_raise(const Point_t &p1, const Point_t &p2) const
Compatibility check.
Definition: GeoLine.cxx:43
template<class T >
void geoalgo::Line::Pt2 ( const T &  pt2)
inlineinherited

Pt2 setter template.

Definition at line 83 of file GeoLine.h.

References geoalgo::Line::check_and_raise().

84  {
85  _pt2 = Vector_t(pt2);
87  }
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:61
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:62
Vector Vector_t
Point has same feature as Vector.
Definition: GeoVector.h:199
void check_and_raise(const Point_t &p1, const Point_t &p2) const
Compatibility check.
Definition: GeoLine.cxx:43
void geoalgo::Cylinder::SetRadius ( double  r)
inline

Setters.

Definition at line 54 of file GeoCylinder.h.

References _radius.

54 { _radius = r; }
double _radius
Radius of the cylinder.
Definition: GeoCylinder.h:58

Member Data Documentation

GeoAlgo geoalgo::Cylinder::_geoAlgo
protected

Definition at line 61 of file GeoCylinder.h.

Referenced by Contain().

Point_t geoalgo::Line::_pt1
protectedinherited
Vector_t geoalgo::Line::_pt2
protectedinherited

Second point denoting infinite line.

Definition at line 62 of file GeoLine.h.

Referenced by Contain(), geoalgo::DirectedLine::Dir(), geoalgo::DirectedLine::DirectedLine(), geoalgo::Line::Line(), geoalgo::Line::Pt1(), and geoalgo::Line::Pt2().

double geoalgo::Cylinder::_radius
protected

Radius of the cylinder.

Definition at line 58 of file GeoCylinder.h.

Referenced by Contain(), GetRadius(), and SetRadius().


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