CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch1/src/RecoVertex/GhostTrackFitter/interface/GhostTrack.h

Go to the documentation of this file.
00001 #ifndef RecoBTag_GhostTrack_h
00002 #define RecoBTag_GhostTrack_h
00003 
00004 #include <vector>
00005 
00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00007 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00008 
00009 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00010 
00011 #include "RecoVertex/GhostTrackFitter/interface/GhostTrackState.h"
00012 #include "RecoVertex/GhostTrackFitter/interface/GhostTrackPrediction.h"
00013 
00014 namespace reco {
00015 
00016 class GhostTrack {
00017     public:
00018         GhostTrack(const GhostTrackPrediction &prior,
00019                    const GhostTrackPrediction &prediction,
00020                    const std::vector<GhostTrackState> &states,
00021                    double ndof, double chi2) :
00022                 prediction_(prediction), prior_(prior), states_(states),
00023                 ndof_(ndof), chi2_(chi2)
00024         {}
00025 
00026         GhostTrack(const GhostTrackPrediction &prior,
00027                    const GhostTrackPrediction &prediction,
00028                    const std::vector<TransientTrack> &tracks,
00029                    double ndof, double chi2,
00030                    const std::vector<float> &weights = std::vector<float>(),
00031                    const GlobalPoint &origin = GlobalPoint(),
00032                    bool withOrigin = false);
00033 
00034         GhostTrack(const Track &ghostTrack,
00035                    const std::vector<TransientTrack> &tracks,
00036                    const std::vector<float> &weights = std::vector<float>(),
00037                    const GhostTrackPrediction &prior = GhostTrackPrediction(),
00038                    const GlobalPoint &origin = GlobalPoint(),
00039                    bool withOrigin = false);
00040 
00041         const GhostTrackPrediction &prediction() const { return prediction_; }
00042         const GhostTrackPrediction &prior() const { return prior_; }
00043 
00044         const std::vector<GhostTrackState> &states() const { return states_; }
00045         double ndof() const { return ndof_; }
00046         double chi2() const { return chi2_; }
00047 
00048         operator Track() const { return prediction_.track(ndof_, chi2_); }
00049 
00050     private:
00051         void initStates(const std::vector<TransientTrack> &tracks,
00052                         const std::vector<float> &weights, double offset);
00053 
00054         GhostTrackPrediction            prediction_;
00055         GhostTrackPrediction            prior_;
00056         std::vector<GhostTrackState>    states_;
00057         double                          ndof_;
00058         double                          chi2_;
00059 };
00060 
00061 }
00062 
00063 #endif // RecoBTag_GhostTrack_h