LArSoft  v07_13_02
Liquid Argon Software toolkit - http://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 67 of file SimpleGeo.h.

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

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

Definition at line 100 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.

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

Definition at line 73 of file SimpleGeo.h.

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

74  { return { p.x * f, p.y * f }; }
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 106 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.

107  { return { p.x * f, p.y * f, p.z * f }; }
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 70 of file SimpleGeo.h.

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

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

Definition at line 103 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.

104  { return { a.x + b.x, a.y + b.y, a.z + b.z }; }
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, lar::util::simple_geo::Point2D< Data >::x, and lar::util::simple_geo::Point2D< Data >::y.

77  { return { p.x / f, p.y / f }; }
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 109 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.

110  { return { p.x / f, p.y / f, p.z / f }; }
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 79 of file SimpleGeo.h.

References lar::util::simple_geo::Point2D< Data >::x.

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

Definition at line 112 of file SimpleGeo.h.

References lar::util::simple_geo::Point2D< Data >::x.

113  {
114  out << "( " << p.x << " ; " << p.y << " ; " << p.z << " )";
115  return out;
116  }
template<typename Stream , typename Point >
Stream& lar::util::simple_geo::operator<< ( Stream &&  out,
AreaBase< Point > const &  area 
)

Definition at line 255 of file SimpleGeo.h.

256  { out << area.Min() << " - " << area.Max(); return out; }
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 507 of file SimpleGeo.h.

References lar::util::simple_geo::Rectangle< Data >::extendToInclude().

508 {
509  out << "( " << range.lower << " -- " << range.upper << " )";
510  return out;
511 } // 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 537 of file SimpleGeo.h.

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

Definition at line 64 of file SimpleGeo.h.

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

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

Definition at line 97 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.

98  { return (a.x == b.x) && (a.y == b.y) && (a.z == b.z); }