![]() |
![]() |
#include <Alignment/CocoaModel/interface/EntryAngleAffAngles.h>
Public Member Functions | |
ALIdouble | checkDiff (Hep3Vector axis, Hep3Vector axisOrig, std::vector< double > localrot, std::vector< double > localrotorig) const |
virtual void | displace (ALIdouble disp) |
virtual void | displaceOriginal (ALIdouble disp) |
virtual void | displaceOriginalOriginal (ALIdouble disp) |
EntryAngleAffAngles (const ALIstring &type) | |
virtual void | FillName (const ALIstring &name) |
virtual ALIdouble | valueDisplaced () const |
~EntryAngleAffAngles () |
Definition at line 16 of file EntryAngleAffAngles.h.
EntryAngleAffAngles::EntryAngleAffAngles | ( | const ALIstring & | type | ) |
EntryAngleAffAngles::~EntryAngleAffAngles | ( | ) | [inline] |
ALIdouble EntryAngleAffAngles::checkDiff | ( | Hep3Vector | axis, | |
Hep3Vector | axisOrig, | |||
std::vector< double > | localrot, | |||
std::vector< double > | localrotorig | |||
) | const |
Definition at line 152 of file EntryAngleAffAngles.cc.
References Entry::name().
00153 { 00154 int inam = 0; 00155 if( name() == "angles_X" ) { 00156 inam = 1; 00157 }else if( name() == "angles_Y" ) { 00158 inam = 2; 00159 }else if( name() == "angles_Z" ) { 00160 inam = 3; 00161 } 00162 switch( inam ){ 00163 case 1: 00164 axis.rotateX( localrot[0] ); 00165 axisOrig.rotateX( localrotorig[0] ); 00166 case 2: 00167 axis.rotateY( localrot[1] ); 00168 axisOrig.rotateY( localrotorig[1] ); 00169 case 3: 00170 axis.rotateZ( localrot[2] ); 00171 axisOrig.rotateZ( localrotorig[2] ); 00172 break; 00173 } 00174 00175 ALIdouble ang = axis.angle( axisOrig ); 00176 00177 /* }else if( name() == "angles_Y" ) { 00178 return localrot[1] - localrotorig[1]; 00179 }else if( name() == "angles_Z" ) { 00180 return localrot[2] - localrotorig[2]; 00181 }*/ 00182 00183 return ang; 00184 }
Reimplemented from Entry.
Definition at line 31 of file EntryAngleAffAngles.cc.
References OpticalObject::displaceRmGlobAroundGlobal(), OpticalObject::displaceRmGlobAroundLocal(), GlobalOptionMgr::getInstance(), GlobalOptionMgr::GlobalOptions(), Entry::name(), Entry::name_, Entry::OptOCurrent(), XCoor, YCoor, and ZCoor.
00032 { 00033 XYZcoor coor = XCoor; 00034 ALIint namelength = name().length()-1; 00035 //- std::cout << this << "ENtryAnglesAffAngle" << name_ << namelength <<std::endl; 00036 if ( name_[namelength] == 'X' ) { 00037 coor = XCoor; 00038 } else if ( name_[namelength] == 'Y' ) { 00039 coor = YCoor; 00040 } else if ( name_[namelength] == 'Z' ) { 00041 coor = ZCoor; 00042 } 00043 00044 GlobalOptionMgr* gomgr = GlobalOptionMgr::getInstance(); 00045 if(gomgr->GlobalOptions()["rotateAroundLocal"] == 0) { 00046 OptOCurrent()->displaceRmGlobAroundGlobal( OptOCurrent(), coor, disp ); 00047 }else { 00048 OptOCurrent()->displaceRmGlobAroundLocal( OptOCurrent(), coor, disp ); 00049 } 00050 00051 }
Reimplemented from Entry.
Definition at line 55 of file EntryAngleAffAngles.cc.
References OpticalObject::displaceRmGlobOriginal(), Entry::name(), Entry::name_, Entry::OptOCurrent(), XCoor, YCoor, and ZCoor.
00056 { 00057 ALIint namelength = name().length()-1; 00058 //- std::cout << this << "ENtryAnglesAffAngle" << name_ << namelength <<std::endl; 00059 if ( name_[namelength] == 'X' ) { 00060 //- std::cout << "displaX"; 00061 OptOCurrent()->displaceRmGlobOriginal( OptOCurrent(), XCoor, disp ); 00062 } else if ( name_[namelength] == 'Y' ) { 00063 //- std::cout << "displaY"; 00064 OptOCurrent()->displaceRmGlobOriginal( OptOCurrent(), YCoor, disp ); 00065 } else if ( name_[namelength] == 'Z' ) { 00066 OptOCurrent()->displaceRmGlobOriginal( OptOCurrent(), ZCoor, disp ); 00067 } 00068 00069 }
Reimplemented from Entry.
Definition at line 72 of file EntryAngleAffAngles.cc.
References GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, OpticalObject::displaceRmGlobOriginalOriginal(), lat::endl(), Entry::name(), Entry::name_, Entry::OptOCurrent(), XCoor, YCoor, and ZCoor.
00073 { 00074 ALIint namelength = name().length()-1; 00075 if(ALIUtils::debug >= 5) std::cout << this << "ENtryAnglesAffAngle displaceOriginalOriginal" << name_ <<std::endl; 00076 if ( name_[namelength] == 'X' ) { 00077 //- std::cout << "displaX"; 00078 OptOCurrent()->displaceRmGlobOriginalOriginal( OptOCurrent(), XCoor, disp ); 00079 } else if ( name_[namelength] == 'Y' ) { 00080 //- std::cout << "displaY"; 00081 OptOCurrent()->displaceRmGlobOriginalOriginal( OptOCurrent(), YCoor, disp ); 00082 } else if ( name_[namelength] == 'Z' ) { 00083 OptOCurrent()->displaceRmGlobOriginalOriginal( OptOCurrent(), ZCoor, disp ); 00084 } 00085 00086 }
ALIdouble EntryAngleAffAngles::valueDisplaced | ( | ) | const [virtual] |
Reimplemented from Entry.
Definition at line 91 of file EntryAngleAffAngles.cc.
References GenMuonPlsPt100GeV_cfg::cout, ALIUtils::debug, ALIUtils::dumprm(), lat::endl(), OpticalObject::getRotationAnglesFromMatrix(), OpticalObject::name(), Entry::name(), Entry::OptOCurrent(), OpticalObject::parent(), dbtoconf::parent, OpticalObject::rmGlob(), and OpticalObject::rmGlobOriginal().
00092 { 00093 00094 // std::cout << " EntryAngleAffAngles::valueDisplaced() parent " << OptOCurrent()->parent()->name() << std::endl; 00095 // ALIUtils::dumprm( OptOCurrent()->parent()->rmGlob() , " parent RmGlob "); 00096 if(ALIUtils::debug >= 5) { 00097 std::cout << " EntryAngleAffAngles::valueDisplaced() parent opto " << OptOCurrent()->parent()->name() << std::endl; 00098 ALIUtils::dumprm( OptOCurrent()->rmGlob() , " RmGlob "); 00099 ALIUtils::dumprm( OptOCurrent()->rmGlobOriginal() , " RmGlobOriginal "); 00100 ALIUtils::dumprm( OptOCurrent()->parent()->rmGlobOriginal() , " parent RmGlobOriginal "); 00101 } 00102 00103 CLHEP::HepRotation diffRm = OptOCurrent()->rmGlob() * OptOCurrent()->rmGlobOriginal().inverse(); 00104 CLHEP::HepRotation rmLocal = diffRm * OptOCurrent()->parent()->rmGlobOriginal().inverse(); 00105 std::vector<double> localrot = OptOCurrent()->getRotationAnglesFromMatrix( rmLocal, OptOCurrent()->CoordinateEntryList() ); 00106 if(ALIUtils::debug >= 5) { 00107 ALIUtils::dumprm( diffRm , " diffRm "); 00108 ALIUtils::dumprm( rmLocal , " rmLocal "); 00109 std::cout << " localrot " << localrot[0] << " " << localrot[1] << " " << localrot[2] << std::endl; 00110 } 00111 00112 if( name() == "angles_X" ) { 00113 return localrot[0]; 00114 }else if( name() == "angles_Y" ) { 00115 return localrot[1]; 00116 }else if( name() == "angles_Z" ) { 00117 return localrot[2]; 00118 } 00119 00120 /* 00121 CLHEP::HepRotation rmLocalOrig = OptOCurrent()->parent()->rmGlobOriginal().inverse() * OptOCurrent()->rmGlobOriginal(); 00122 00123 CLHEP::HepRotation rmLocal = OptOCurrent()->parent()->rmGlob().inverse() * OptOCurrent()->rmGlob(); 00124 std::vector<double> localrot = OptOCurrent()->getRotationAnglesFromMatrix( rmLocal, OptOCurrent()->CoordinateEntryList() ); 00125 00126 std::cout << " localrot " << localrot[0] << " " << localrot[1] << " " << localrot[2] << std::endl; 00127 std::cout << " localrotorig " << localrotorig[0] << " " << localrotorig[1] << " " << localrotorig[2] << std::endl; 00128 ALIdouble diff; 00129 Hep3Vector Xaxis(0.,0.,1.); 00130 Xaxis = OptOCurrent()->parent()->rmGlob() * Xaxis; 00131 Hep3Vector XaxisOrig(0.,0.,1.); 00132 XaxisOrig = OptOCurrent()->parent()->rmGlobOriginal() * XaxisOrig; 00133 00134 diff = fabs( checkDiff( Xaxis, XaxisOrig, localrot, localrotorig ) ); 00135 00136 //maybe X is not a good axis because the rotation is done precisely around X 00137 if( diff <= 1.E-9 ){ 00138 Hep3Vector Yaxis(0.,1.,0.); 00139 Yaxis = OptOCurrent()->parent()->rmGlob() * Yaxis; 00140 Hep3Vector YaxisOrig(0.,1.,0.); 00141 YaxisOrig = OptOCurrent()->parent()->rmGlobOriginal() * YaxisOrig; 00142 00143 diff = fabs( checkDiff( Yaxis, YaxisOrig, localrot, localrotorig ) ); 00144 } 00145 00146 return diff; 00147 */ 00148 }