Go to the documentation of this file.00001
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" );