CMS 3D CMS Logo

EntryAngleAffAngles Class Reference

#include <Alignment/CocoaModel/interface/EntryAngleAffAngles.h>

Inheritance diagram for EntryAngleAffAngles:

EntryAngle Entry

List of all members.

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 ()


Detailed Description

Definition at line 16 of file EntryAngleAffAngles.h.


Constructor & Destructor Documentation

EntryAngleAffAngles::EntryAngleAffAngles ( const ALIstring type  ) 

Definition at line 13 of file EntryAngleAffAngles.cc.

00014   : EntryAngle( type )
00015 {
00016 }

EntryAngleAffAngles::~EntryAngleAffAngles (  )  [inline]

Definition at line 20 of file EntryAngleAffAngles.h.

00020 {};


Member Function Documentation

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 }

void EntryAngleAffAngles::displace ( ALIdouble  disp  )  [virtual]

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 }

void EntryAngleAffAngles::displaceOriginal ( ALIdouble  disp  )  [virtual]

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 }

void EntryAngleAffAngles::displaceOriginalOriginal ( ALIdouble  disp  )  [virtual]

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 }

void EntryAngleAffAngles::FillName ( const ALIstring name  )  [virtual]

Definition at line 20 of file EntryAngleAffAngles.cc.

References Entry::setName().

00021 {
00022   ALIstring nn = "Angles ";
00023   nn += name;
00024   setName( nn );
00025 }

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 }


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:20:24 2009 for CMSSW by  doxygen 1.5.4