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 } 00030 00031 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00032 ALIbool ALIRmDataFromFile::setAngleX( const ALIdouble val ) 00033 { 00034 theAngleX = val; 00035 theDataFilled += "X"; 00036 return 1; 00037 } 00038 00039 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00040 ALIbool ALIRmDataFromFile::setAngleY( const ALIdouble val ) 00041 { 00042 theAngleY = val; 00043 theDataFilled += "Y"; 00044 return 1; 00045 } 00046 00047 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00048 ALIbool ALIRmDataFromFile::setAngleZ( const ALIdouble val ) 00049 { 00050 theAngleZ = val; 00051 theDataFilled += "Z"; 00052 return 1; 00053 } 00054 00055 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00056 void ALIRmDataFromFile::constructRm() 00057 { 00058 if( theDataFilled.find("X") == -1 || theDataFilled.find("Y") == -1 || theDataFilled.find("Z") == -1 ){ 00059 std::cerr << "!!! ALIRmDataFromFile::constructRm. FATAL ERROR: building rm while one angle is missing: " << theDataFilled << std::endl; 00060 } else { 00061 theRm = CLHEP::HepRotation(); 00062 theRm.rotateX( theAngleX ); 00063 theRm.rotateY( theAngleY ); 00064 theRm.rotateZ( theAngleZ ); 00065 } 00066 00067 }