00001 #ifndef RecoBTag_PositiveSideGhostTrackFitter_h 00002 #define RecoBTag_PositiveSideGhostTrackFitter_h 00003 00004 #include <memory> 00005 #include <vector> 00006 00007 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00008 00009 #include "RecoVertex/GhostTrackFitter/interface/GhostTrackFitter.h" 00010 00011 namespace reco { 00012 00013 class GhostTrackPredictioon; 00014 class GhostTrackState; 00015 00016 class PositiveSideGhostTrackFitter : public GhostTrackFitter::FitterImpl { 00017 public: 00018 PositiveSideGhostTrackFitter( 00019 const GlobalPoint &origin, 00020 const GhostTrackFitter::FitterImpl &actualFitter) : 00021 origin_(origin), actualFitter_(actualFitter.clone()) {} 00022 ~PositiveSideGhostTrackFitter() {} 00023 00024 PositiveSideGhostTrackFitter( 00025 const PositiveSideGhostTrackFitter &orig) : 00026 origin_(orig.origin_), 00027 actualFitter_(orig.actualFitter_->clone()) {} 00028 00029 GhostTrackPrediction fit( 00030 const GhostTrackFitter::PredictionUpdater &updater, 00031 const GhostTrackPrediction &prior, 00032 std::vector<GhostTrackState> &states, 00033 double &ndof, double &chi2); 00034 00035 private: 00036 virtual FitterImpl *clone() const 00037 { return new PositiveSideGhostTrackFitter(*this); } 00038 00039 GlobalPoint origin_; 00040 std::auto_ptr<GhostTrackFitter::FitterImpl> actualFitter_; 00041 }; 00042 00043 } 00044 00045 #endif // RecoBTag_PositiveSideGhostTrackFitter_h