CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentUpdator.h

Go to the documentation of this file.
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 
00009 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00010 
00012 
00013 class MagneticField;
00014 
00015 class KalmanAlignmentUpdator
00016 {
00017 
00018 public:
00019 
00020   typedef ReferenceTrajectoryBase::ReferenceTrajectoryPtr ReferenceTrajectoryPtr;
00021 
00022   KalmanAlignmentUpdator( const edm::ParameterSet & config ) {}
00023   virtual ~KalmanAlignmentUpdator( void ) {}
00024 
00027   virtual void process( const ReferenceTrajectoryPtr & trajectory,
00028                         AlignmentParameterStore* store,
00029                         AlignableNavigator* navigator,
00030                         KalmanAlignmentMetricsUpdator* metrics,
00031                         const MagneticField* magField = 0 ) = 0;
00032 
00033   virtual KalmanAlignmentUpdator* clone( void ) const = 0;
00034 
00035 protected:
00036 
00038   void updateUserVariables( const std::vector< Alignable* > & alignables ) const;
00039 
00042   virtual const std::vector< Alignable* >
00043   alignablesFromAlignableDets( std::vector< AlignableDetOrUnitPtr >& alignableDets,
00044                                AlignmentParameterStore* store ) const;
00045 
00046   unsigned int nDifferentAlignables( const std::vector<Alignable*>& ali ) const;
00047 
00048 };
00049 
00050 
00051 #endif