00001 #ifndef Alignment_KalmanAlignmentAlgorithm_CurrentAlignmentKFUpdator_h 00002 #define Alignment_KalmanAlignmentAlgorithm_CurrentAlignmentKFUpdator_h 00003 00007 00008 #include "TrackingTools/PatternTools/interface/TrajectoryStateUpdator.h" 00009 00010 #include "Alignment/CommonAlignment/interface/AlignableNavigator.h" 00011 00012 class AlignmentParameters; 00013 00014 class CurrentAlignmentKFUpdator : public TrajectoryStateUpdator 00015 { 00016 00017 public: 00018 00019 CurrentAlignmentKFUpdator( void ) : theAlignableNavigator( 0 ) {} 00020 CurrentAlignmentKFUpdator( AlignableNavigator* navigator ) : theAlignableNavigator( navigator ) {} 00021 ~CurrentAlignmentKFUpdator( void ) {} 00022 00023 template <unsigned int D> 00024 TrajectoryStateOnSurface update( const TrajectoryStateOnSurface &, const TransientTrackingRecHit & ) const; 00025 00026 TrajectoryStateOnSurface update( const TrajectoryStateOnSurface &, const TransientTrackingRecHit & ) const; 00027 00028 virtual CurrentAlignmentKFUpdator * clone( void ) const { return new CurrentAlignmentKFUpdator( *this ); } 00029 00030 private: 00031 00032 template <unsigned int D> 00033 void includeCurrentAlignmentEstimate( const TransientTrackingRecHit & aRecHit, 00034 const TrajectoryStateOnSurface & tsos, 00035 typename AlgebraicROOTObject<D>::Vector & vecR, 00036 typename AlgebraicROOTObject<D>::SymMatrix & matV ) const; 00037 00038 AlignmentParameters* getAlignmentParameters( const AlignableDetOrUnitPtr alignableDet ) const; 00039 AlignmentParameters* getHigherLevelParameters( const Alignable* aAlignable ) const; 00040 00041 AlignableNavigator* theAlignableNavigator; 00042 00043 }; 00044 00045 #endif