00001 #ifndef Alignment_KalmanAlignmentAlgorithm_SingleTrajectoryUpdator_h 00002 #define Alignment_KalmanAlignmentAlgorithm_SingleTrajectoryUpdator_h 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 00006 #include "Alignment/KalmanAlignmentAlgorithm/interface/KalmanAlignmentUpdator.h" 00007 00010 00011 00012 class CompositeAlignmentParameters; 00013 00014 00015 class SingleTrajectoryUpdator : public KalmanAlignmentUpdator 00016 { 00017 00018 public: 00019 00020 SingleTrajectoryUpdator( const edm::ParameterSet & config ); 00021 virtual ~SingleTrajectoryUpdator( void ); 00022 00024 virtual void process( const ReferenceTrajectoryPtr & trajectory, 00025 AlignmentParameterStore* store, 00026 AlignableNavigator* navigator, 00027 KalmanAlignmentMetricsUpdator* metrics, 00028 const MagneticField* magField = 0 ); 00029 00030 virtual SingleTrajectoryUpdator* clone( void ) const { return new SingleTrajectoryUpdator( *this ); } 00031 00032 private: 00033 00034 bool checkCovariance( const AlgebraicSymMatrix& cov ) const; 00035 00036 unsigned int theMinNumberOfHits; 00037 double theExtraWeight; 00038 double theExternalPredictionWeight; 00039 bool theCovCheckFlag; 00040 00041 unsigned int theNumberOfPreAlignmentEvts; 00042 unsigned int theNumberOfProcessedEvts; 00043 }; 00044 00045 00046 #endif