Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:46:20

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 /** /class TwoBodyDecayFitter
0017  *
0018  *  /author Edmund Widl
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