00001 00002 #ifndef _ConfigurableTertiaryTracksVertexFinder_H_ 00003 #define _ConfigurableTertiaryTracksVertexFinder_H_ 00004 00005 #include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" 00006 #include "RecoVertex/VertexPrimitives/interface/VertexFitter.h" 00007 #include "RecoVertex/VertexPrimitives/interface/VertexUpdator.h" 00008 #include "RecoVertex/VertexPrimitives/interface/VertexTrackCompatibilityEstimator.h" 00009 #include <vector> 00010 00011 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h" 00012 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00013 00014 #include "RecoVertex/TrimmedKalmanVertexFinder/interface/ConfigurableTrimmedVertexFinder.h" 00015 00016 #include "RecoVertex/TertiaryTracksVertexFinder/interface/AddTvTrack.h" 00017 00018 class V0SvFilter; 00019 class Flight2DSvFilter; 00020 00021 class ConfigurableTertiaryTracksVertexFinder : public VertexReconstructor { 00022 00023 public: 00024 00025 ConfigurableTertiaryTracksVertexFinder(const VertexFitter<5> * vf, 00026 const VertexUpdator<5> * vu, const VertexTrackCompatibilityEstimator<5> * ve); 00027 00028 virtual ~ConfigurableTertiaryTracksVertexFinder(); 00029 00030 virtual std::vector<TransientVertex> 00031 vertices(const std::vector<reco::TransientTrack> &) const; 00032 00033 virtual std::vector<TransientVertex> 00034 vertices(const std::vector<reco::TransientTrack> &, const TransientVertex& pv) const; 00035 00036 virtual ConfigurableTertiaryTracksVertexFinder * clone() const { 00037 return new ConfigurableTertiaryTracksVertexFinder(*this); 00038 } 00039 00040 00041 //inline void setPrimaryVertex(TransientVertex& ThePrimaryVertex) { 00042 // thePrimaryVertex = & ThePrimaryVertex; 00043 //} 00044 00045 // for TDR studies 00046 //std::vector<pair<reco::TransientTrack,double> > getTrackInfo() { 00047 // return TrackInfo; 00048 //} 00049 //std::vector<pair<reco::TransientTrack,double*> > getTrackInfo2() { 00050 // return TrackInfo2; 00051 //} 00052 00053 AddTvTrack::TrackInfoVector getTrackInfo() { return theTrackInfoVector; } 00054 00055 private: 00056 00057 std::vector<TransientVertex> reconstruct( 00058 const std::vector<reco::TransientTrack> & tracks, 00059 const TransientVertex& pv) const; 00060 00061 static const bool debug = false; 00062 00063 ConfigurableTrimmedVertexFinder* theTKVF; 00064 V0SvFilter* theV0SvFilter; 00065 Flight2DSvFilter* theFlight2DSvFilter; 00066 00067 double theMinTrackPt,theMaxVtxMass; 00068 double theK0sMassWindow; 00069 double theMaxSigOnDistTrackToB; 00070 double theMaxInPvFrac; 00071 00072 // parameters for Flight2DSvFilter 00073 double theMaxDist2D,theMinDist2D,theMinSign2D; 00074 int theMinTracks; 00075 00076 // TransientVertex* thePrimaryVertex; 00077 00078 // TDR Studies 00079 //static std::vector<pair<reco::TransientTrack,double> > TrackInfo; 00080 //static std::vector<pair<reco::TransientTrack,double* > > TrackInfo2; 00081 //std::vector<pair<reco::TransientTrack,double> > TrackInfo; 00082 //std::vector<pair<reco::TransientTrack,double* > > TrackInfo2; 00083 mutable AddTvTrack::TrackInfoVector theTrackInfoVector; 00084 00085 }; 00086 00087 #endif