CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Alignment/CocoaModel/src/EntryLengthAffCentre.cc

Go to the documentation of this file.
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 }