43 #ifndef genfit_DetPlane_h 44 #define genfit_DetPlane_h 52 #include <boost/scoped_ptr.hpp> 89 const TVector3 &
getO()
const {
return o_; }
90 const TVector3 &
getU()
const {
return u_; }
91 const TVector3 &
getV()
const {
return v_; }
94 void set(
const TVector3 &o,
const TVector3 &u,
const TVector3 &
v);
95 void setO(
const TVector3 &o);
96 void setO(
double,
double,
double);
97 void setU(
const TVector3 &u);
98 void setU(
double,
double,
double);
99 void setV(
const TVector3 &v);
100 void setV(
double,
double,
double);
101 void setUV(
const TVector3 &u,
const TVector3 &v);
102 void setON(
const TVector3 &o,
const TVector3 &n);
113 void setNormal(
const double &theta,
const double &phi);
116 TVector2
project(
const TVector3 &x)
const;
122 TVector3
toLab(
const TVector2 &x)
const;
125 TVector3
dist(
const TVector3 &point)
const;
131 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;
133 void Print(
const Option_t * =
"")
const;
141 double distance(
const TVector3 &point)
const;
142 double distance(
double,
double,
double)
const;
145 bool isInActive(
const TVector3 &point,
const TVector3 &dir)
const 147 if (finitePlane_.get() ==
nullptr)
153 bool isInActive(
const double &posX,
const double &posY,
const double &posZ,
const double &dirX,
const double &dirY,
const double &dirZ)
const 155 if (finitePlane_.get() ==
nullptr)
165 if (finitePlane_.get() ==
nullptr)
167 return finitePlane_->isInActive(u, v);
173 bool isFinite()
const {
return (finitePlane_.get() !=
nullptr); }
176 void rotate(
double angle);
191 boost::scoped_ptr<AbsFinitePlane> finitePlane_;
203 #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