00001 // COCOA class implementation file 00002 //Id: ALIPlane.cc 00003 //CAT: Fit 00004 // 00005 // History: v1.0 00006 // Pedro Arce 00007 00008 #include "Alignment/CocoaModel/interface/ALIPlane.h" 00009 #include "Alignment/CocoaUtilities/interface/CocoaGlobals.h" 00010 #include "Alignment/CocoaUtilities/interface/ALIUtils.h" 00011 00012 00013 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00014 //@@ Constructor 00015 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00016 ALIPlane::ALIPlane( const CLHEP::Hep3Vector& point, const CLHEP::Hep3Vector& normal ) 00017 : _point(point) 00018 { 00019 _normal = normal * (1. / normal.mag()); 00020 if (ALIUtils::debug >= 5) { 00021 ALIUtils::dump3v( _point, " Created ALIplane: point"); 00022 ALIUtils::dump3v( _normal, " Created ALIPlane: normal"); 00023 } 00024 } 00025 00026 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00027 //@@ Project a std::vector onto this plane: 00028 //@@ Project on normal to plane and substract this projection to vec 00029 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00030 CLHEP::Hep3Vector ALIPlane::project( const CLHEP::Hep3Vector& vec ) 00031 { 00032 //---------- Project vec on normal to plane 00033 ALIdouble proj = vec.dot(_normal) * (1. / vec.mag() ); 00034 //---------- Substract this projection to vec 00035 CLHEP::Hep3Vector vecproj = vec - (proj * _normal); 00036 //- ALIUtils::dump3v( _normal, "plane _normal"); 00037 //- std::cout << " proj on normal " << proj << std::endl; 00038 //- ALIUtils::dump3v( vec , "std::vector"); 00039 return vecproj; 00040 } 00041 00042 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00043 //@@ Project a std::vector onto this plane: 00044 //@@ Project on normal to plane and substract this projection to vec 00045 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00046 ALILine ALIPlane::lineProject( const CLHEP::Hep3Vector& vec ) 00047 { 00048 //---------- Project vec on normal to plane 00049 ALIdouble proj = vec.dot(_normal) * (1. / vec.mag() ); 00050 //---------- Substract this projection to vec 00051 CLHEP::Hep3Vector vecproj = vec - (proj * _normal); 00052 //- ALIUtils::dump3v( _normal, "plane _normal"); 00053 //- std::cout << " proj on normal " << proj << std::endl; 00054 //- ALIUtils::dump3v( vec , "std::vector"); 00055 return ALILine( this->_point, vecproj ); 00056 } 00057