CMS 3D CMS Logo

SimpleMetricsUpdator Class Reference

#include <Alignment/KalmanAlignmentAlgorithm/plugins/SimpleMetricsUpdator.h>

Inheritance diagram for SimpleMetricsUpdator:

KalmanAlignmentMetricsUpdator

List of all members.

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 inttheFixedAlignableIds
KalmanAlignmentMetricsCalculator theMetricsCalculator


Detailed Description

Definition at line 10 of file SimpleMetricsUpdator.h.


Constructor & Destructor Documentation

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]

Definition at line 17 of file SimpleMetricsUpdator.h.

00017 {}


Member Function Documentation

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

void SimpleMetricsUpdator::update ( const std::vector< Alignable * > &  alignables  )  [virtual]

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 }


Member Data Documentation

std::vector< unsigned int > SimpleMetricsUpdator::theFixedAlignableIds [private]

Definition at line 31 of file SimpleMetricsUpdator.h.

Referenced by SimpleMetricsUpdator(), and update().

KalmanAlignmentMetricsCalculator SimpleMetricsUpdator::theMetricsCalculator [private]

Definition at line 29 of file SimpleMetricsUpdator.h.

Referenced by additionalAlignables(), additionalAlignablesWithDistances(), alignables(), SimpleMetricsUpdator(), and update().


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