![]() |
![]() |
#include <Alignment/KalmanAlignmentAlgorithm/plugins/SimpleMetricsUpdator.h>
Public Member Functions | |
virtual const std::vector < Alignable * > | additionalAlignables (const std::vector< Alignable * > &alignables) |
virtual const std::map < Alignable *, short int > | additionalAlignablesWithDistances (const std::vector< Alignable * > &alignables) |
virtual const std::vector < Alignable * > | alignables (void) const |
SimpleMetricsUpdator (const edm::ParameterSet &config) | |
virtual void | update (const std::vector< Alignable * > &alignables) |
virtual | ~SimpleMetricsUpdator (void) |
Private Attributes | |
std::vector< unsigned int > | theFixedAlignableIds |
KalmanAlignmentMetricsCalculator | theMetricsCalculator |
Definition at line 10 of file SimpleMetricsUpdator.h.
SimpleMetricsUpdator::SimpleMetricsUpdator | ( | const edm::ParameterSet & | config | ) |
Definition at line 11 of file SimpleMetricsUpdator.cc.
References dummy, edm::ParameterSet::getUntrackedParameter(), KalmanAlignmentMetricsCalculator::setMaxDistance(), theFixedAlignableIds, and theMetricsCalculator.
00011 : KalmanAlignmentMetricsUpdator( config ) 00012 { 00013 short int maxDistance = config.getUntrackedParameter< int >( "MaxMetricsDistance", 5 ); 00014 theMetricsCalculator.setMaxDistance( maxDistance ); 00015 00016 std::vector< unsigned int > dummy; 00017 theFixedAlignableIds = config.getUntrackedParameter< std::vector<unsigned int> >( "FixedAlignableIds", dummy ); 00018 00019 edm::LogInfo("Alignment") << "@SUB=SimpleMetricsUpdator::SimpleMetricsUpdator " 00020 << "\nInstance of MetricsCalculator created (MaxMetricsDistance = " << maxDistance << ")."; 00021 }
virtual SimpleMetricsUpdator::~SimpleMetricsUpdator | ( | void | ) | [inline, virtual] |
const std::vector< Alignable * > SimpleMetricsUpdator::additionalAlignables | ( | const std::vector< Alignable * > & | alignables | ) | [virtual] |
Implements KalmanAlignmentMetricsUpdator.
Definition at line 43 of file SimpleMetricsUpdator.cc.
References find(), KalmanAlignmentMetricsCalculator::getDistances(), HLT_VtxMuL3::result, and theMetricsCalculator.
00044 { 00045 std::vector< Alignable* > result; 00046 std::vector< Alignable* >::const_iterator itAD; 00047 00048 std::map< Alignable*, short int > updateList; 00049 std::map< Alignable*, short int >::iterator itUL; 00050 00051 std::set< Alignable* > alignablesFromUpdateList; 00052 std::set< Alignable* >::iterator itAUL; 00053 00054 // make union of all lists 00055 for ( itAD = alignables.begin(); itAD != alignables.end(); itAD++ ) 00056 { 00057 updateList = theMetricsCalculator.getDistances( *itAD ); 00058 for ( itUL = updateList.begin(); itUL != updateList.end(); itUL++ ) 00059 { 00060 alignablesFromUpdateList.insert( itUL->first ); 00061 } 00062 updateList.clear(); 00063 } 00064 00065 // make final list of modules for update 00066 for ( itAUL = alignablesFromUpdateList.begin(); itAUL != alignablesFromUpdateList.end(); itAUL++ ) 00067 { 00068 if ( find( alignables.begin(), alignables.end(), *itAUL ) == alignables.end() ) 00069 { 00070 result.push_back( *itAUL ); 00071 } 00072 } 00073 00074 return result; 00075 }
const std::map< Alignable *, short int > SimpleMetricsUpdator::additionalAlignablesWithDistances | ( | const std::vector< Alignable * > & | alignables | ) | [virtual] |
Implements KalmanAlignmentMetricsUpdator.
Definition at line 79 of file SimpleMetricsUpdator.cc.
References KalmanAlignmentMetricsCalculator::getDistances(), HLT_VtxMuL3::result, and theMetricsCalculator.
00080 { 00081 std::map< Alignable*, short int > result; 00082 std::map< Alignable*, short int > updateList; 00083 std::map< Alignable*, short int >::iterator itUL; 00084 std::map< Alignable*, short int >::iterator itFind; 00085 00086 std::vector< Alignable* >::const_iterator itAD; 00087 00088 // make union of all lists 00089 for ( itAD = alignables.begin(); itAD != alignables.end(); itAD++ ) 00090 { 00091 updateList = theMetricsCalculator.getDistances( *itAD ); 00092 for ( itUL = updateList.begin(); itUL != updateList.end(); itUL++ ) 00093 { 00094 itFind = result.find( itUL->first ); 00095 if ( itFind == result.end() ) 00096 { 00097 result[itUL->first] = itUL->second; 00098 } 00099 else if ( itFind->second < itUL->second ) 00100 { 00101 itFind->second = itUL->second; 00102 } 00103 } 00104 } 00105 00106 for ( itAD = alignables.begin(); itAD != alignables.end(); itAD++ ) 00107 { 00108 itFind = result.find( *itAD ); 00109 if ( itFind != result.end() ) result.erase( itFind ); 00110 } 00111 00112 return result; 00113 }
virtual const std::vector< Alignable* > SimpleMetricsUpdator::alignables | ( | void | ) | const [inline, virtual] |
Implements KalmanAlignmentMetricsUpdator.
Definition at line 25 of file SimpleMetricsUpdator.h.
References KalmanAlignmentMetricsCalculator::alignables(), and theMetricsCalculator.
00025 { return theMetricsCalculator.alignables(); }
Implements KalmanAlignmentMetricsUpdator.
Definition at line 23 of file SimpleMetricsUpdator.cc.
References find(), it, theFixedAlignableIds, theMetricsCalculator, and KalmanAlignmentMetricsCalculator::updateDistances().
00024 { 00025 std::vector< Alignable* > alignablesForUpdate; 00026 std::vector< Alignable* >::const_iterator it; 00027 00028 for ( it = alignables.begin(); it != alignables.end(); ++it ) 00029 { 00030 unsigned int subdetId = static_cast< unsigned int >( (*it)->geomDetId().subdetId() ); 00031 00032 if ( std::find( theFixedAlignableIds.begin(), theFixedAlignableIds.end(), subdetId ) == theFixedAlignableIds.end() ) 00033 { 00034 alignablesForUpdate.push_back( *it ); 00035 } 00036 } 00037 00038 theMetricsCalculator.updateDistances( alignablesForUpdate ); 00039 }
std::vector< unsigned int > SimpleMetricsUpdator::theFixedAlignableIds [private] |
Definition at line 31 of file SimpleMetricsUpdator.h.
Referenced by SimpleMetricsUpdator(), and update().
Definition at line 29 of file SimpleMetricsUpdator.h.
Referenced by additionalAlignables(), additionalAlignablesWithDistances(), alignables(), SimpleMetricsUpdator(), and update().