CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Alignment/TwoBodyDecay/interface/TwoBodyDecayEstimator.h

Go to the documentation of this file.
00001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayEstimator_h
00002 #define Alignment_TwoBodyDecay_TwoBodyDecayEstimator_h
00003 
00004 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
00005 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayVirtualMeasurement.h"
00006 
00007 #include "RecoVertex/VertexTools/interface/PerigeeLinearizedTrackState.h" 
00008 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h" 
00009 
00010 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00011 
00020 class TwoBodyDecayEstimator
00021 {
00022 
00023 public:
00024 
00025   typedef PerigeeLinearizedTrackState::RefCountedLinearizedTrackState RefCountedLinearizedTrackState;
00026 
00027   TwoBodyDecayEstimator( const edm::ParameterSet & config );
00028   virtual ~TwoBodyDecayEstimator( void ) {}
00029 
00030   virtual TwoBodyDecay estimate( const std::vector< RefCountedLinearizedTrackState > & linTracks,
00031                                  const TwoBodyDecayParameters & linearizationPoint,
00032                                  const TwoBodyDecayVirtualMeasurement & vm ) const;
00033 
00034   inline const int ndf( void ) const { return theNdf; }
00035   inline const AlgebraicVector& pulls( void ) const { return thePulls; }
00036 
00037   virtual TwoBodyDecayEstimator* clone( void ) const { return new TwoBodyDecayEstimator( *this ); }
00038 
00039 protected:
00040 
00041   virtual bool constructMatrices( const std::vector< RefCountedLinearizedTrackState > & linTracks,
00042                                   const TwoBodyDecayParameters & linearizationPoint,
00043                                   const TwoBodyDecayVirtualMeasurement & vm,
00044                                   AlgebraicVector & vecM, AlgebraicSymMatrix & matG, AlgebraicMatrix & matA ) const;
00045 
00046 private:
00047 
00048   bool checkValues( const AlgebraicVector & vec ) const;
00049 
00050   double theRobustificationConstant;
00051   double theMaxIterDiff;
00052   int theMaxIterations;
00053   bool theUseInvariantMass;
00054 
00055   mutable int theNdf;
00056   mutable AlgebraicVector thePulls;
00057 
00058 };
00059 
00060 
00061 #endif