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 }