CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h

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    * \paramname primcut sigma_cut for the first iteration
00015    *   (primary vertex)
00016    * \paramname seccut sigma_cut for all subsequent vertex fits.
00017    * \paramname minweight the minimum weight for a track to
00018    * stay in a fitted vertex
00019    * \paramname smoothing perform track smoothing?
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; // one fitter for the primaries ...
00081   AdaptiveVertexFitter * theSecondaryFitter; // ... and one for the rest.
00082 
00083   // the minimum weight for a track to stay in a vertex.
00084   float theMinWeight;
00085   // the minimum weight for a track to be considered "significant".
00086   float theWeightThreshold;
00087 };
00088 
00089 #endif