CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/Alignment/TwoBodyDecay/interface/TwoBodyDecayFitter.h

Go to the documentation of this file.
00001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayFitter_h
00002 #define Alignment_TwoBodyDecay_TwoBodyDecayFitter_h
00003 
00004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00005 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
00006 
00007 #include "RecoVertex/LinearizationPointFinders/interface/DefaultLinearizationPointFinder.h"
00008 #include "RecoVertex/VertexTools/interface/LinearizedTrackStateFactory.h"
00009 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00010 
00011 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
00012 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayVirtualMeasurement.h"
00013 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayEstimator.h"
00014 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayLinearizationPointFinder.h"
00015 
00022 class TwoBodyDecayFitter
00023 {
00024 
00025 public:
00026 
00027   TwoBodyDecayFitter( const edm::ParameterSet & config );
00028 
00029   TwoBodyDecayFitter( const edm::ParameterSet & config,
00030                       const LinearizationPointFinder* vf,
00031                       const TwoBodyDecayLinearizationPointFinder* lpf,
00032                       const TwoBodyDecayEstimator* est );
00033 
00034   virtual ~TwoBodyDecayFitter( void );
00035 
00036   virtual const TwoBodyDecay estimate( const std::vector< reco::TransientTrack >& tracks,
00037                                        const TwoBodyDecayVirtualMeasurement& vm ) const;
00038 
00039   virtual const TwoBodyDecay estimate( const std::vector< reco::TransientTrack >& tracks,
00040                                        const std::vector< TrajectoryStateOnSurface >& tsos,
00041                                        const TwoBodyDecayVirtualMeasurement& vm ) const;
00042 
00043   inline const TwoBodyDecayLinearizationPointFinder* linearizationPointFinder( void ) const { return theLinPointFinder.operator->(); }
00044   inline const TwoBodyDecayEstimator* estimator( void ) const { return theEstimator.operator->(); }
00045   inline const LinearizationPointFinder* vertexFinder( void ) const { return theVertexFinder.operator->(); }
00046 
00047   virtual TwoBodyDecayFitter* clone( void ) const { return new TwoBodyDecayFitter( *this ); }
00048 
00049 private:
00050 
00051   typedef PerigeeLinearizedTrackState::RefCountedLinearizedTrackState RefCountedLinearizedTrackState;
00052 
00053   DeepCopyPointerByClone< const LinearizationPointFinder > theVertexFinder;
00054   DeepCopyPointerByClone< const TwoBodyDecayLinearizationPointFinder > theLinPointFinder;
00055   DeepCopyPointerByClone< const TwoBodyDecayEstimator > theEstimator;
00056 
00057   LinearizedTrackStateFactory theLinTrackStateFactory;
00058 
00059 };
00060 
00061 #endif