CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/Alignment/CocoaModel/src/ALIPlane.cc

Go to the documentation of this file.
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