00001 #ifndef Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentUpdator_h 00002 #define Alignment_KalmanAlignmentAlgorithm_KalmanAlignmentUpdator_h 00003 00004 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h" 00005 #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h" 00006 #include "Alignment/ReferenceTrajectories/interface/TrajectoryFactoryBase.h" 00007 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentMetricsUpdator.h" 00008 00010 00011 00012 class KalmanAlignmentUpdator 00013 { 00014 00015 public: 00016 00017 typedef ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr; 00018 00019 KalmanAlignmentUpdator( const edm::ParameterSet & config ) {} 00020 virtual ~KalmanAlignmentUpdator( void ) {} 00021 00024 virtual void process( const ReferenceTrajectoryPtr & trajectory, 00025 AlignmentParameterStore* store, 00026 AlignableNavigator* navigator, 00027 KalmanAlignmentMetricsUpdator* metrics ) = 0; 00028 00029 virtual KalmanAlignmentUpdator* clone( void ) const = 0; 00030 00031 protected: 00032 00034 void updateUserVariables( const std::vector< Alignable* > & alignables ) const; 00035 00038 const std::vector< Alignable* > alignablesFromAlignableDets( const std::vector< AlignableDetOrUnitPtr >& alignableDets, 00039 AlignmentParameterStore* store ) const; 00040 00041 }; 00042 00043 00044 #endif