LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
lar::util::simple_geo Namespace Reference

Simple class definitions for geometry concepts. More...

Classes

class  Area
 Area delimited by two points. More...
 
class  AreaBase
 Area/volume delimited by points: base/1D implementation. More...
 
struct  Point2D
 2D point (x, y) (by default, with double precision) More...
 
struct  Point3D
 3D point (x, y, z) (by default, with double precision) More...
 
struct  Range
 Definition of a range along one dimension. More...
 
struct  Rectangle
 Definition of a rectangle from dimension ranges. More...
 
class  Volume
 Volume delimited by two points. More...
 

Functions

Dimensionless objects (points)
template<typename T >
bool operator== (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
bool operator!= (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
Point2D< T > operator+ (Point2D< T > const &a, Point2D< T > const &b)
 
template<typename T >
Point2D< T > operator* (Point2D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename T >
Point2D< T > operator/ (Point2D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename Stream , typename T >
Stream & operator<< (Stream &&out, Point2D< T > const &p)
 
template<typename T >
bool operator== (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
bool operator!= (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
Point3D< T > operator+ (Point3D< T > const &a, Point3D< T > const &b)
 
template<typename T >
Point3D< T > operator* (Point3D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename T >
Point3D< T > operator/ (Point3D< T > const &p, typename Point2D< T >::Data_t f)
 
template<typename Stream , typename T >
Stream & operator<< (Stream &&out, Point3D< T > const &p)
 
Point-bounded volumes
template<typename Stream , typename Point >
Stream & operator<< (Stream &&out, AreaBase< Point > const &area)
 
Dimension-bounded volumes
template<typename Stream , typename Data >
Stream & operator<< (Stream &&out, Range< Data > const &range)
 Prints the specified range to a stream: "( lower -- upper )". More...
 
template<typename Stream , typename Data >
Stream & operator<< (Stream &&out, Rectangle< Data > const &rect)
 Prints the specified rectangle to a stream: "w=Wrange d=Drange". More...
 

Detailed Description

Simple class definitions for geometry concepts.

This namespace provides data structures for "points" and extended structures.

Points are either 2D (Point2D) or 3D (Point3D).

The extended structures are offered in two flavours:

  • point-based (area, volume): definitions of the boundaries are provided as two points of proper dimensionality: Point2D for Area, pOint3D for Volume
  • dimension-based (area only so far): definitions of the boundaries are provided as one range (Range) per dimension

Function Documentation

template<typename T >
bool lar::util::simple_geo::operator!= ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 66 of file SimpleGeo.h.

67  {
68  return (a.x != b.x) || (a.y != b.y);
69  }
template<typename T >
bool lar::util::simple_geo::operator!= ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 111 of file SimpleGeo.h.

References lar::util::simple_geo::Point3D< Data >::x, lar::util::simple_geo::Point3D< Data >::y, and lar::util::simple_geo::Point3D< Data >::z.

112  {
113  return (a.x != b.x) || (a.y != b.y) || (a.z != b.z);
114  }
template<typename T >
Point2D<T> lar::util::simple_geo::operator* ( Point2D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 76 of file SimpleGeo.h.

References f.

77  {
78  return {p.x * f, p.y * f};
79  }
TFile f
Definition: plotHisto.C:6
template<typename T >
Point3D<T> lar::util::simple_geo::operator* ( Point3D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 121 of file SimpleGeo.h.

References f, lar::util::simple_geo::Point3D< Data >::x, lar::util::simple_geo::Point3D< Data >::y, and lar::util::simple_geo::Point3D< Data >::z.

122  {
123  return {p.x * f, p.y * f, p.z * f};
124  }
TFile f
Definition: plotHisto.C:6
template<typename T >
Point2D<T> lar::util::simple_geo::operator+ ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 71 of file SimpleGeo.h.

72  {
73  return {a.x + b.x, a.y + b.y};
74  }
template<typename T >
Point3D<T> lar::util::simple_geo::operator+ ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 116 of file SimpleGeo.h.

References lar::util::simple_geo::Point3D< Data >::x, lar::util::simple_geo::Point3D< Data >::y, and lar::util::simple_geo::Point3D< Data >::z.

117  {
118  return {a.x + b.x, a.y + b.y, a.z + b.z};
119  }
template<typename T >
Point2D<T> lar::util::simple_geo::operator/ ( Point2D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 81 of file SimpleGeo.h.

References f.

82  {
83  return {p.x / f, p.y / f};
84  }
TFile f
Definition: plotHisto.C:6
template<typename T >
Point3D<T> lar::util::simple_geo::operator/ ( Point3D< T > const &  p,
typename Point2D< T >::Data_t  f 
)

Definition at line 126 of file SimpleGeo.h.

References f, lar::util::simple_geo::Point3D< Data >::x, lar::util::simple_geo::Point3D< Data >::y, and lar::util::simple_geo::Point3D< Data >::z.

127  {
128  return {p.x / f, p.y / f, p.z / f};
129  }
TFile f
Definition: plotHisto.C:6
template<typename Stream , typename T >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
Point2D< T > const &  p 
)

Definition at line 86 of file SimpleGeo.h.

87  {
88  out << "( " << p.x << " ; " << p.y << " )";
89  return out;
90  }
template<typename Stream , typename T >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
Point3D< T > const &  p 
)

Definition at line 131 of file SimpleGeo.h.

132  {
133  out << "( " << p.x << " ; " << p.y << " ; " << p.z << " )";
134  return out;
135  }
template<typename Stream , typename Point >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
AreaBase< Point > const &  area 
)

Definition at line 284 of file SimpleGeo.h.

285  {
286  out << area.Min() << " - " << area.Max();
287  return out;
288  }
template<typename Stream , typename Data >
Stream & lar::util::simple_geo::operator<< ( Stream &&  out,
Range< Data > const &  range 
)

Prints the specified range to a stream: "( lower -- upper )".

Definition at line 536 of file SimpleGeo.h.

537 {
538  out << "( " << range.lower << " -- " << range.upper << " )";
539  return out;
540 } // operator<< (Range)
template<typename Stream , typename Data >
Stream & lar::util::simple_geo::operator<< ( Stream &&  out,
Rectangle< Data > const &  rect 
)

Prints the specified rectangle to a stream: "w=Wrange d=Drange".

Definition at line 560 of file SimpleGeo.h.

561 {
562  out << "w=" << rect.width << " d=" << rect.depth;
563  return out;
564 } // operator<< (Rectangle)
template<typename T >
bool lar::util::simple_geo::operator== ( Point2D< T > const &  a,
Point2D< T > const &  b 
)

Definition at line 61 of file SimpleGeo.h.

62  {
63  return (a.x == b.x) && (a.y == b.y);
64  }
template<typename T >
bool lar::util::simple_geo::operator== ( Point3D< T > const &  a,
Point3D< T > const &  b 
)

Definition at line 106 of file SimpleGeo.h.

References lar::util::simple_geo::Point3D< Data >::x, lar::util::simple_geo::Point3D< Data >::y, and lar::util::simple_geo::Point3D< Data >::z.

107  {
108  return (a.x == b.x) && (a.y == b.y) && (a.z == b.z);
109  }