//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class DetPlane // see DetPlane.hh for details // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "DetPlane.h" // C/C++ Headers ---------------------- #include "assert.h" #include // Collaborating Class Headers -------- // Class Member definitions ----------- DetPlane::DetPlane(const TVector3& o, const TVector3& u, const TVector3& v) :_o(o),_u(u),_v(v) { sane(); } void DetPlane::set(const TVector3& o, const TVector3& u, const TVector3& v) { _o=o;_u=u;_v=v; sane(); } TVector3 DetPlane::getNormal() { TVector3 result=_u.Cross(_v); result.SetMag(1.); return result; } TVector2 DetPlane::project(const TVector3& x) { Double_t x_u=_u*x; Double_t x_v=_v*x; return TVector2(x_u,x_v); } TVector2 DetPlane::LabToPlane(const TVector3& x) { TVector3 d=x-_o; return project(d); } void DetPlane::sane(){ assert(_u!=_v); // ensure unit vectors _u.SetMag(1.); _v.SetMag(1.); // ensure orthogonal system if(_u*_v!=0){ TVector3 n=getNormal(); _v=n.Cross(_u); } } void DetPlane::Print() const { std::cout<<"DetPlane: " <<"O("<<_o.X()<<","<<_o.Y()<<","<<_o.Z()<<") " <<"u("<<_u.X()<<","<<_u.Y()<<","<<_u.Z()<<") " <<"v("<<_v.X()<<","<<_v.Y()<<","<<_v.Z()<<") "<