File indexing completed on 2023-03-17 10:40:50
0001 #ifndef Alignment_TwoBodyDecay_TwoBodyDecayFitter_h
0002 #define Alignment_TwoBodyDecay_TwoBodyDecayFitter_h
0003
0004 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006
0007 #include "RecoVertex/LinearizationPointFinders/interface/DefaultLinearizationPointFinder.h"
0008 #include "RecoVertex/VertexTools/interface/LinearizedTrackStateFactory.h"
0009 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0010
0011 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecay.h"
0012 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayEstimator.h"
0013 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayLinearizationPointFinder.h"
0014 #include "Alignment/TwoBodyDecay/interface/TwoBodyDecayVirtualMeasurement.h"
0015
0016
0017
0018
0019
0020
0021 class TwoBodyDecayFitter {
0022 public:
0023 TwoBodyDecayFitter(const edm::ParameterSet &config);
0024
0025 TwoBodyDecayFitter(const edm::ParameterSet &config,
0026 const LinearizationPointFinder *vf,
0027 const TwoBodyDecayLinearizationPointFinder *lpf,
0028 const TwoBodyDecayEstimator *est);
0029
0030 virtual ~TwoBodyDecayFitter(void);
0031
0032 virtual const TwoBodyDecay estimate(const std::vector<reco::TransientTrack> &tracks,
0033 const TwoBodyDecayVirtualMeasurement &vm) const;
0034
0035 virtual const TwoBodyDecay estimate(const std::vector<reco::TransientTrack> &tracks,
0036 const std::vector<TrajectoryStateOnSurface> &tsos,
0037 const TwoBodyDecayVirtualMeasurement &vm) const;
0038
0039 inline const TwoBodyDecayLinearizationPointFinder *linearizationPointFinder(void) const {
0040 return theLinPointFinder.operator->();
0041 }
0042 inline const TwoBodyDecayEstimator *estimator(void) const { return theEstimator.operator->(); }
0043 inline const LinearizationPointFinder *vertexFinder(void) const { return theVertexFinder.operator->(); }
0044
0045 virtual TwoBodyDecayFitter *clone(void) const { return new TwoBodyDecayFitter(*this); }
0046
0047 private:
0048 typedef PerigeeLinearizedTrackState::RefCountedLinearizedTrackState RefCountedLinearizedTrackState;
0049
0050 DeepCopyPointerByClone<const LinearizationPointFinder> theVertexFinder;
0051 DeepCopyPointerByClone<const TwoBodyDecayLinearizationPointFinder> theLinPointFinder;
0052 DeepCopyPointerByClone<const TwoBodyDecayEstimator> theEstimator;
0053
0054 LinearizedTrackStateFactory theLinTrackStateFactory;
0055 };
0056
0057 #endif