Go to the documentation of this file.00001 #ifndef _AdaptiveVertexReconstructor_H_
00002 #define _AdaptiveVertexReconstructor_H_
00003
00004 #include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h"
00005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00006 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
00007 #include <set>
00008
00009 class AdaptiveVertexReconstructor : public VertexReconstructor {
00010 public:
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 AdaptiveVertexReconstructor( float primcut = 2.0, float seccut = 6.0,
00022 float minweight = 0.5, bool smoothing = false );
00023
00024 ~AdaptiveVertexReconstructor();
00025
00033 AdaptiveVertexReconstructor( const edm::ParameterSet & s );
00034
00035 std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack> & v ) const;
00036
00037 std::vector<TransientVertex>
00038 vertices(const std::vector<reco::TransientTrack> &, const reco::BeamSpot & ) const;
00039
00040 std::vector<TransientVertex>
00041 vertices(const std::vector<reco::TransientTrack> & primaries,
00042 const std::vector<reco::TransientTrack> & tracks,
00043 const reco::BeamSpot & ) const;
00044
00045 virtual AdaptiveVertexReconstructor * clone() const {
00046 return new AdaptiveVertexReconstructor( * this );
00047 }
00048
00049 private:
00053 std::vector<TransientVertex>
00054 vertices( const std::vector<reco::TransientTrack> & primaries,
00055 const std::vector<reco::TransientTrack> & trks,
00056 const reco::BeamSpot &, bool has_primaries, bool usespot ) const;
00057
00062 void erase ( const TransientVertex & newvtx,
00063 std::set < reco::TransientTrack > & remainingtrks, float w ) const;
00064
00069 std::vector<TransientVertex> cleanUpVertices (
00070 const std::vector < TransientVertex > & ) const;
00071
00074 void setupFitters ( float primcut, float primT, float primr,
00075 float seccut, float secT, float secr, bool smoothing );
00076
00077 TransientVertex cleanUp ( const TransientVertex & old ) const;
00078
00079 private:
00080 AdaptiveVertexFitter * thePrimaryFitter;
00081 AdaptiveVertexFitter * theSecondaryFitter;
00082
00083
00084 float theMinWeight;
00085
00086 float theWeightThreshold;
00087 };
00088
00089 #endif