CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexProducerAlgorithm.h

Go to the documentation of this file.
00001 
00002 #ifndef PrimaryVertexProducerAlgorithm_H
00003 #define PrimaryVertexProducerAlgorithm_H
00004 // -*- C++ -*-
00005 //
00006 // Package:    PrimaryVertexProducerAlgorithm
00007 // Class:      PrimaryVertexProducerAlgorithm
00008 // 
00016 //
00017 // Original Author:  Pascal Vanlaer
00018 //         Created:  Tue Feb 28 11:06:34 CET 2006
00019 // $Id: PrimaryVertexProducerAlgorithm.h,v 1.17 2012/04/27 16:12:39 werdmann Exp $
00020 //
00021 //
00022 
00023 
00024 // system include files
00025 #include <memory>
00026 
00027 // user include files
00028 #include "FWCore/Framework/interface/Frameworkfwd.h"
00029 #include "FWCore/Framework/interface/EDProducer.h"
00030 
00031 #include "FWCore/Framework/interface/Event.h"
00032 #include "FWCore/Framework/interface/EventSetup.h"
00033 
00034 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00035 #include "FWCore/Utilities/interface/InputTag.h"
00036 
00037 #include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h"
00038 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00039 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFindingBase.h"
00040 #include "RecoVertex/PrimaryVertexProducer/interface/TrackClusterizerInZ.h"
00041 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ_vect.h"
00042 
00043 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFinding.h"
00044 #include "RecoVertex/PrimaryVertexProducer/interface/HITrackFilterForPVFinding.h"
00045 #include "RecoVertex/PrimaryVertexProducer/interface/GapClusterizerInZ.h"
00046 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ.h"
00047 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
00048 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
00049 //#include "RecoVertex/VertexTools/interface/VertexDistanceXY.h"
00050 #include "RecoVertex/VertexPrimitives/interface/VertexException.h"
00051 #include <algorithm>
00052 #include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
00053 #include "RecoVertex/VertexTools/interface/VertexCompatibleWithBeam.h"
00054 
00055 //
00056 // class declaration
00057 //
00058 
00059 class PrimaryVertexProducerAlgorithm : public VertexReconstructor {
00060 public:
00061 
00062   explicit PrimaryVertexProducerAlgorithm(const edm::ParameterSet&);
00063   ~PrimaryVertexProducerAlgorithm();
00064   
00065   // obsolete method
00066   virtual std::vector<TransientVertex> 
00067   vertices(const std::vector<reco::TransientTrack> & tracks) const;
00068 
00069   virtual std::vector<TransientVertex> 
00070   vertices(const std::vector<reco::TransientTrack> & tracks, 
00071            const reco::BeamSpot & beamSpot,
00072            const std::string& label=""
00073            ) const;
00076   virtual PrimaryVertexProducerAlgorithm * clone() const {
00077     return new PrimaryVertexProducerAlgorithm(*this);
00078   }
00079   
00080 
00081   // access to config
00082   edm::ParameterSet config() const { return theConfig; }
00083   edm::InputTag trackLabel;
00084   edm::InputTag beamSpotLabel;
00085 private:
00086   // ----------member data ---------------------------
00087   TrackFilterForPVFindingBase* theTrackFilter; 
00088   TrackClusterizerInZ* theTrackClusterizer;
00089 
00090   // vtx fitting algorithms
00091   struct algo {
00092     VertexFitter<5> * fitter;
00093     VertexCompatibleWithBeam * vertexSelector;
00094     std::string  label;
00095     bool useBeamConstraint;
00096     double minNdof;
00097   };
00098 
00099   std::vector< algo > algorithms;
00100 
00101   edm::ParameterSet theConfig;
00102   bool fVerbose;
00103 
00104 };
00105 #endif
00106