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);
111 void setNormal(
const double& theta,
const double& phi);
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;
141 double distance(
const TVector3& point)
const;
142 double distance(
double,
double,
double)
const;
146 bool isInActive(
const TVector3& point,
const TVector3& dir)
const {
152 bool isInActive(
const double& posX,
const double& posY,
const double& posZ,
153 const double& dirX,
const double& dirY,
const double& dirZ)
const {
176 void rotate(
double angle);
Abstract base class for finite detector planes.
void swap(DetPlane &other)
void setV(const TVector3 &v)
void rotate(double angle)
rotate u and v around normal. Angle is in rad. More for debugging than for actual use.
TVector3 getNormal() const
boost::scoped_ptr< AbsFinitePlane > finitePlane_
const TVector3 & getU() const
double distance(const TVector3 &point) const
absolute distance from a point to the plane
bool isInActive(const TVector2 &v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
const TVector3 & getO() const
TVector3 toLab(const TVector2 &x) const
transform from plane coordinates to lab system
void Print(const Option_t *="") const
void reset()
delete finitePlane_ and set O, U, V to default values
void setO(const TVector3 &o)
DetPlane & operator=(DetPlane)
void set(const TVector3 &o, const TVector3 &u, const TVector3 &v)
void setUV(const TVector3 &u, const TVector3 &v)
void setON(const TVector3 &o, const TVector3 &n)
void setU(const TVector3 &u)
TVector2 project(const TVector3 &x) const
projecting a direction onto the plane:
void setFinitePlane(AbsFinitePlane *finite)
bool isInActive(const TVector3 &point, const TVector3 &dir) const
intersect in the active area? 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.
TVector2 LabToPlane(const TVector3 &x) const
transform from Lab system into plane
const TVector3 & getV() const
void sane()
ensures orthonormal coordinates
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
void setNormal(const TVector3 &n)
TVector3 dist(const TVector3 &point) const
friend bool operator!=(const DetPlane &lhs, const DetPlane &rhs)
returns NOT ==
bool isInActive(double u, double v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
TVector2 straightLineToPlane(const TVector3 &point, const TVector3 &dir) const
gives u,v coordinates of the intersection point of a straight line with plane