00001 // COCOA class implementation file 00002 //Id: EntryLengthAffCentre.C 00003 //CAT: Model 00004 // 00005 // History: v1.0 00006 // Pedro Arce 00007 00008 #include "Alignment/CocoaModel/interface/EntryLengthAffCentre.h" 00009 #include "Alignment/CocoaModel/interface/OpticalObject.h" 00010 #include "Alignment/CocoaUtilities/interface/ALIUtils.h" 00011 00012 00013 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00014 EntryLengthAffCentre::EntryLengthAffCentre( const ALIstring& type ) 00015 : EntryLength( type ) 00016 { 00017 } 00018 00019 00020 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00021 void EntryLengthAffCentre::FillName( const ALIstring& name ) 00022 { 00023 ALIstring nn = "Centre "; 00024 nn += name; 00025 setName( nn ); 00026 } 00027 00028 00029 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00030 //@@ 00031 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00032 void EntryLengthAffCentre::displace( ALIdouble disp ) 00033 { 00034 if(ALIUtils::debug>=9) std::cout << "EntryLengthAffCentre::Displace" << disp <<std::endl; 00035 ALIint namelength = name().length()-1; 00036 XYZcoor axisNo = XCoor; 00037 if ( name_[namelength] == 'X' ) { 00038 axisNo = XCoor; 00039 } else if ( name_[namelength] == 'Y' ) { 00040 axisNo = YCoor; 00041 } else if ( name_[namelength] == 'Z' ) { 00042 axisNo = ZCoor; 00043 } 00044 OptOCurrent()->displaceCentreGlob( axisNo, disp ); 00045 00046 } 00047 00048 00049 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00050 void EntryLengthAffCentre::displaceOriginal( ALIdouble disp ) 00051 { 00052 if(ALIUtils::debug>=9) std::cout << "EntryLengthAffCentre::DisplaceOriginal" << disp <<std::endl; 00053 ALIint namelength = name().length()-1; 00054 if ( name_[namelength] == 'X' ) { 00055 OptOCurrent()->displaceCentreGlobOriginal( XCoor, disp ); 00056 } else if ( name_[namelength] == 'Y' ) { 00057 OptOCurrent()->displaceCentreGlobOriginal( YCoor, disp ); 00058 } else if ( name_[namelength] == 'Z' ) { 00059 OptOCurrent()->displaceCentreGlobOriginal( ZCoor, disp ); 00060 } 00061 00062 } 00063 00064 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00065 void EntryLengthAffCentre::displaceOriginalOriginal( ALIdouble disp ) 00066 { 00067 if(ALIUtils::debug>=9) std::cout << "EntryLengthAffCentre::DisplaceOriginalOriginal" << disp <<std::endl; 00068 ALIint namelength = name().length()-1; 00069 if ( name_[namelength] == 'X' ) { 00070 OptOCurrent()->displaceCentreGlobOriginalOriginal( XCoor, disp ); 00071 } else if ( name_[namelength] == 'Y' ) { 00072 OptOCurrent()->displaceCentreGlobOriginalOriginal( YCoor, disp ); 00073 } else if ( name_[namelength] == 'Z' ) { 00074 OptOCurrent()->displaceCentreGlobOriginalOriginal( ZCoor, disp ); 00075 } 00076 00077 } 00078 00079 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00080 ALIdouble EntryLengthAffCentre::valueInGlobalReferenceFrame() const 00081 { 00082 ALIdouble a=2.; 00083 00084 return a; 00085 } 00086 00087 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00088 ALIdouble EntryLengthAffCentre::valueDisplaced() const 00089 { 00090 ALIdouble vdisp = 0.; 00091 00092 CLHEP::Hep3Vector cdisp = OptOCurrent()->centreGlob() - OptOCurrent()->centreGlobOriginal(); 00093 CLHEP::HepRotation rmParentInv = inverseOf( OptOCurrent()->parent()->rmGlob() ); 00094 cdisp = rmParentInv * cdisp; 00095 00096 if( name() == "centre_X" ) { 00097 return cdisp.x(); 00098 }else if( name() == "centre_Y" ) { 00099 return cdisp.y(); 00100 //- return OptOCurrent()->centreLocal().y() - value(); 00101 }else if( name() == "centre_Z" ) { 00102 return cdisp.z(); 00103 } 00104 00105 if ( ALIUtils::debug >= 5 ) std::cout << name() << " in OptO " << OptOCurrent()->name() << " valueDisplaced: " << vdisp << std::endl; 00106 00107 return 0.; // to avoid warning 00108 }