CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Alignment/KalmanAlignmentAlgorithm/plugins/DummyMetricsUpdator.cc

Go to the documentation of this file.
00001 //#include "Alignment/KalmanAlignmentAlgorithm/plugins/DummyMetricsUpdator.h"
00002 #include "DummyMetricsUpdator.h"
00003 
00004 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentMetricsUpdatorPlugin.h"
00005 #include "Alignment/CommonAlignment/interface/Alignable.h"
00006 
00007 
00008 DummyMetricsUpdator::DummyMetricsUpdator( const edm::ParameterSet & config ) : KalmanAlignmentMetricsUpdator( config )
00009 {
00010   std::vector< unsigned int > dummy;
00011   theFixedAlignableIds = config.getUntrackedParameter< std::vector<unsigned int> >( "FixedAlignableIds", dummy );
00012 }
00013 
00014 
00015 void DummyMetricsUpdator::update( const std::vector< Alignable* > & alignables )
00016 {
00017   std::vector< Alignable* >::const_iterator itAD = alignables.begin();
00018   while ( itAD != alignables.end() )
00019   {
00020     unsigned int subdetId = static_cast< unsigned int >( (*itAD)->geomDetId().subdetId() );
00021     if ( find( theFixedAlignableIds.begin(), theFixedAlignableIds.end(), subdetId ) == theFixedAlignableIds.end() )
00022     {
00023       theSetOfAllAlignables.insert( *itAD );
00024     }
00025     ++itAD;
00026   }
00027 }
00028 
00029 
00030 const std::vector< Alignable* >
00031 DummyMetricsUpdator::additionalAlignables( const std::vector< Alignable* > & alignables )
00032 {
00033   std::vector< Alignable* > result;
00034   result.reserve( theSetOfAllAlignables.size() );
00035 
00036   std::set< Alignable* >::iterator itS = theSetOfAllAlignables.begin();
00037   while ( itS != theSetOfAllAlignables.end() )
00038   {
00039     if ( find( alignables.begin(), alignables.end(), *itS ) == alignables.end() ) result.push_back( *itS );
00040     ++itS;
00041   }
00042 
00043   return result;
00044 }
00045 
00046 
00047 const std::map< Alignable*, short int >
00048 DummyMetricsUpdator::additionalAlignablesWithDistances( const std::vector< Alignable* > & alignables )
00049 {
00050   std::map< Alignable*, short int > result;
00051 
00052   std::set< Alignable* >::iterator itS = theSetOfAllAlignables.begin();
00053   while ( itS != theSetOfAllAlignables.end() )
00054   {
00055     if ( find( alignables.begin(), alignables.end(), *itS ) == alignables.end() ) result[*itS] = 0;
00056     ++itS;
00057   }
00058 
00059   return result;
00060 }
00061 
00062 
00063 const std::vector< Alignable* > DummyMetricsUpdator::alignables( void ) const
00064 {
00065   std::vector< Alignable* > alignables;
00066   alignables.reserve( theSetOfAllAlignables.size() );
00067   alignables.insert( alignables.begin(), theSetOfAllAlignables.begin(), theSetOfAllAlignables.end() );
00068   return alignables;
00069 }
00070 
00071 
00072 DEFINE_EDM_PLUGIN( KalmanAlignmentMetricsUpdatorPlugin, DummyMetricsUpdator, "DummyMetricsUpdator" );