CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/Alignment/CocoaModel/src/ALIRmDataFromFile.cc

Go to the documentation of this file.
00001 //   COCOA class implementation file
00002 //Id:  ALIRmDataFromFile.cc
00003 //CAT: Model
00004 //
00005 //   History: v1.0 
00006 //   Pedro Arce
00007 
00008 #include "Alignment/CocoaModel/interface/ALIRmDataFromFile.h"
00009 
00010 
00011 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00012 ALIRmDataFromFile::ALIRmDataFromFile()
00013 {
00014 }
00015 
00016 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00017 ALIbool ALIRmDataFromFile::setAngle( const ALIstring& coord, const ALIdouble val ){
00018 
00019   if( coord == "X" ) {
00020     return setAngleX( val );
00021   }else if( coord == "Y" ) {
00022     return setAngleY( val );
00023   }else if( coord == "Z" ) {
00024     return setAngleZ( val );
00025   }else {   
00026     std::cerr << "!!! FATAL ERROR ALIRmDataFromFile::setAngle. Coordinate must be X, Y or Z, it ii " << coord << std::endl;
00027     std::exception();
00028   }
00029   return false;
00030 }
00031 
00032 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00033 ALIbool ALIRmDataFromFile::setAngleX( const ALIdouble val )
00034 {
00035   theAngleX = val;
00036   theDataFilled += "X";
00037   return 1;
00038 }
00039 
00040 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00041 ALIbool ALIRmDataFromFile::setAngleY( const ALIdouble val )
00042 {
00043   theAngleY = val;
00044   theDataFilled += "Y";
00045   return 1;
00046 }
00047 
00048 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00049 ALIbool ALIRmDataFromFile::setAngleZ( const ALIdouble val )
00050 {
00051   theAngleZ = val;
00052   theDataFilled += "Z";
00053   return 1;
00054 }
00055 
00056 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00057 void ALIRmDataFromFile::constructRm()
00058 {
00059   if( theDataFilled.find("X") == std::string::npos ||  theDataFilled.find("Y") == std::string::npos ||  theDataFilled.find("Z") == std::string::npos ){
00060     std::cerr << "!!!  ALIRmDataFromFile::constructRm. FATAL ERROR: building rm while one angle is missing: " << theDataFilled << std::endl;
00061   } else {
00062     theRm = CLHEP::HepRotation();
00063     theRm.rotateX( theAngleX );
00064     theRm.rotateY( theAngleY );
00065     theRm.rotateZ( theAngleZ );
00066   }
00067 
00068 }