31 #ifndef genfit_DetPlane_h 32 #define genfit_DetPlane_h 40 #include <boost/scoped_ptr.hpp> 77 const TVector3 &
getO()
const {
return o_; }
78 const TVector3 &
getU()
const {
return u_; }
79 const TVector3 &
getV()
const {
return v_; }
82 void set(
const TVector3 &o,
const TVector3 &u,
const TVector3 &
v);
83 void setO(
const TVector3 &o);
84 void setO(
double,
double,
double);
85 void setU(
const TVector3 &u);
86 void setU(
double,
double,
double);
87 void setV(
const TVector3 &v);
88 void setV(
double,
double,
double);
89 void setUV(
const TVector3 &u,
const TVector3 &v);
90 void setON(
const TVector3 &o,
const TVector3 &n);
101 void setNormal(
const double &theta,
const double &phi);
104 TVector2
project(
const TVector3 &x)
const;
110 TVector3
toLab(
const TVector2 &x)
const;
113 TVector3
dist(
const TVector3 &point)
const;
119 void straightLineToPlane(
const double &posX,
const double &posY,
const double &posZ,
const double &dirX,
const double &dirY,
const double &dirZ,
double &u,
double &v)
const;
121 void Print(
const Option_t * =
"")
const;
129 double distance(
const TVector3 &point)
const;
130 double distance(
double,
double,
double)
const;
133 bool isInActive(
const TVector3 &point,
const TVector3 &dir)
const 135 if (finitePlane_.get() ==
nullptr)
141 bool isInActive(
const double &posX,
const double &posY,
const double &posZ,
const double &dirX,
const double &dirY,
const double &dirZ)
const 143 if (finitePlane_.get() ==
nullptr)
153 if (finitePlane_.get() ==
nullptr)
155 return finitePlane_->isInActive(u, v);
161 bool isFinite()
const {
return (finitePlane_.get() !=
nullptr); }
164 void rotate(
double angle);
179 boost::scoped_ptr<AbsFinitePlane> finitePlane_;
191 #endif // genfit_DetPlane_h void setNormal(const TVector3 &n)
void setU(const TVector3 &u)
void setON(const TVector3 &o, const TVector3 &n)
TVector2 LabToPlane(const TVector3 &x) const
transform from Lab system into plane
DetPlane(AbsFinitePlane *finite=nullptr)
double distance(const TVector3 &point) const
absolute distance from a point to the plane
const TVector3 & getV() const
Abstract base class for finite detector planes.
TVector3 getNormal() const
friend bool operator==(const DetPlane &lhs, const DetPlane &rhs)
Checks equality of planes by comparing the 9 double values that define them.
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
void swap(DetPlane &other)
void setV(const TVector3 &v)
DetPlane & operator=(DetPlane)
void setUV(const TVector3 &u, const TVector3 &v)
bool isInActive(double u, double v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
void setFinitePlane(AbsFinitePlane *finite)
void reset()
delete finitePlane_ and set O, U, V to default values
TVector3 toLab(const TVector2 &x) const
transform from plane coordinates to lab system
const TVector3 & getU() const
friend bool operator!=(const DetPlane &lhs, const DetPlane &rhs)
returns NOT ==
bool isInActive(const TVector2 &v) const
isInActive methods refer to finite plane. C.f. AbsFinitePlane
void setO(const TVector3 &o)
bool isInActive(const TVector3 &point, const TVector3 &dir) const
intersect in the active area? C.f. AbsFinitePlane
TVector2 project(const TVector3 &x) const
projecting a direction onto the plane:
void rotate(double angle)
rotate u and v around normal. Angle is in rad. More for debugging than for actual use...
const TVector3 & getO() const
TVector2 straightLineToPlane(const TVector3 &point, const TVector3 &dir) const
gives u,v coordinates of the intersection point of a straight line with plane
void Print(const Option_t *="") const