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