LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
GeoLine.h
Go to the documentation of this file.
1 
14 #ifndef BASICTOOL_GEOLINE_H
15 #define BASICTOOL_GEOLINE_H
16 
18 
19 namespace geoalgo {
27  class Line {
28 
29  public:
31  Line();
32 
34  virtual ~Line() {}
35 
37  Line(double const x1,
38  double const y1,
39  double const z1,
40  double const x2,
41  double const y2,
42  double const z2);
43 
45  Line(Point_t const& pt1, Point_t const& pt2);
46 
47  //
48  // Getters
49  //
50  Point_t const& Pt1() const;
51  Point_t const& Pt2() const;
52 
53  //
54  // Setters
55  //
56  void Pt1(double const x, double const y, double const z);
57  void Pt2(double const x, double const y, double const z);
58 
59  protected:
61  void check_and_raise(Point_t const& p1, Point_t const& p2) const;
62 
65 
66  public:
67  //
68  // Template
69  //
71  template <class T, class U>
72  Line(T const& pt1, U const& pt2) : Line(Point_t(pt1), Point_t(pt2))
73  {}
74 
76  template <class T>
77  void Pt1(T const& pt1)
78  {
79  _pt1 = Point_t(pt1);
80  check_and_raise(_pt1, _pt2);
81  }
82 
84  template <class T>
85  void Pt2(T const& pt2)
86  {
87  _pt2 = Vector_t(pt2);
88  check_and_raise(_pt1, _pt2);
89  }
90  };
91 
92  typedef Line Line_t;
93 }
94 #endif
95  // end of doxygen group
Float_t x
Definition: compare.C:6
Point_t const & Pt2() const
Direction getter.
Definition: GeoLine.cxx:28
Float_t y1[n_points_granero]
Definition: compare.C:5
Float_t x1[n_points_granero]
Definition: compare.C:5
Float_t y
Definition: compare.C:6
Double_t z
Definition: plot.C:276
Line(T const &pt1, U const &pt2)
Alternative ctor using template (3)
Definition: GeoLine.h:72
virtual ~Line()
Default destructor.
Definition: GeoLine.h:34
Point_t _pt1
First point denoting infinite line.
Definition: GeoLine.h:63
Float_t y2[n_points_geant4]
Definition: compare.C:26
TText * pt2
Definition: plot.C:64
Class def header for a class Point and Vector.
Representation of a 3D infinite line. Defines an infinite 3D line by having 2 points which completely...
Definition: GeoLine.h:27
Vector Point_t
Definition: GeoVector.h:204
Vector_t _pt2
Second point denoting infinite line.
Definition: GeoLine.h:64
void Pt2(T const &pt2)
Pt2 setter template.
Definition: GeoLine.h:85
void Pt1(T const &pt1)
Pt1 setter template.
Definition: GeoLine.h:77
Vector Vector_t
Point has same feature as Vector.
Definition: GeoVector.h:203
TText * pt1
Definition: plot.C:61
Point_t const & Pt1() const
Start getter.
Definition: GeoLine.cxx:24
Float_t x2[n_points_geant4]
Definition: compare.C:26
Line()
Default constructor.
Definition: GeoLine.cxx:6
Line Line_t
Definition: GeoLine.h:92
void check_and_raise(Point_t const &p1, Point_t const &p2) const
Compatibility check.
Definition: GeoLine.cxx:49