31 #ifndef genfit_DetPlane_h
32 #define genfit_DetPlane_h
40 #include <boost/scoped_ptr.hpp>
85 const TVector3&
getO()
const {
return o_;}
86 const TVector3&
getU()
const {
return u_;}
87 const TVector3&
getV()
const {
return v_;}
90 void set(
const TVector3& o,
93 void setO(
const TVector3& o);
94 void setO(
double,
double,
double);
95 void setU(
const TVector3& u);
96 void setU(
double,
double,
double);
97 void setV(
const TVector3& v);
98 void setV(
double,
double,
double);
99 void setUV(
const TVector3& u,
const TVector3& v);
100 void setON(
const TVector3& o,
const TVector3& n);
114 TVector2
project(
const TVector3&
x)
const;
120 TVector3
toLab(
const TVector2&
x)
const;
123 TVector3
dist(
const TVector3&
point)
const;
130 const double& dirX,
const double& dirY,
const double& dirZ,
131 double& u,
double& v)
const;
133 void Print(
const Option_t* =
"")
const;
142 double distance(
double,
double,
double)
const;
152 bool isInActive(
const double& posX,
const double& posY,
const double& posZ,
153 const double& dirX,
const double& dirY,
const double& dirZ)
const {
205 #endif // genfit_DetPlane_h
void setNormal(const TVector3 &n)
TVector2 project(const TVector3 &x) const
projecting a direction onto the plane:
void setU(const TVector3 &u)
void setON(const TVector3 &o, const TVector3 &n)
bool isInActive(const TVector3 &point, const TVector3 &dir) const
intersect in the active area? C.f. AbsFinitePlane
DetPlane(AbsFinitePlane *finite=NULL)
bool isInActive(const double &posX, const double &posY, const double &posZ, const double &dirX, const double &dirY, const double &dirZ) const
intersect in the active area? C.f. AbsFinitePlane
TVector3 dist(const TVector3 &point) const
Abstract base class for finite detector planes.
bool isInActive(const TVector2 &v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
friend bool operator==(const DetPlane &lhs, const DetPlane &rhs)
Checks equality of planes by comparing the 9 double values that define them.
TVector3 toLab(const TVector2 &x) const
transform from plane coordinates to lab system
void Print(const Option_t *="") const
void set(const TVector3 &o, const TVector3 &u, const TVector3 &v)
void swap(DetPlane &other)
void sane()
ensures orthonormal coordinates
const TVector3 & getO() const
void setV(const TVector3 &v)
DetPlane & operator=(DetPlane)
void setUV(const TVector3 &u, const TVector3 &v)
boost::scoped_ptr< AbsFinitePlane > finitePlane_
void setFinitePlane(AbsFinitePlane *finite)
void reset()
delete finitePlane_ and set O, U, V to default values
const TVector3 & getV() const
friend bool operator!=(const DetPlane &lhs, const DetPlane &rhs)
returns NOT ==
TVector2 straightLineToPlane(const TVector3 &point, const TVector3 &dir) const
gives u,v coordinates of the intersection point of a straight line with plane
void setO(const TVector3 &o)
const TVector3 & getU() const
void rotate(double angle)
rotate u and v around normal. Angle is in rad. More for debugging than for actual use...
TVector3 getNormal() const
bool isInActive(double u, double v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
TVector2 LabToPlane(const TVector3 &x) const
transform from Lab system into plane
double distance(const TVector3 &point) const
absolute distance from a point to the plane