CMS 3D CMS Logo

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

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    PrimaryVertexProducer
00004 // Class:      PrimaryVertexProducer
00005 // 
00013 //
00014 // Original Author:  Pascal Vanlaer
00015 //         Created:  Tue Feb 28 11:06:34 CET 2006
00016 // $Id: PrimaryVertexProducer.h,v 1.12 2011/11/09 17:23:36 dpiparo Exp $
00017 //
00018 //
00019 
00020 
00021 // system include files
00022 #include <memory>
00023 
00024 // user include files
00025 #include "FWCore/Framework/interface/Frameworkfwd.h"
00026 #include "FWCore/Framework/interface/EDProducer.h"
00027 
00028 #include "FWCore/Framework/interface/Event.h"
00029 #include "FWCore/Framework/interface/EventSetup.h"
00030 
00031 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00032 #include "FWCore/Utilities/interface/InputTag.h"
00033 
00034 //#include "RecoVertex/PrimaryVertexProducer/interface/PrimaryVertexProducerAlgorithm.h"
00035 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00036 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFindingBase.h"
00037 #include "RecoVertex/PrimaryVertexProducer/interface/TrackClusterizerInZ.h"
00038 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ_vect.h"
00039 
00040 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFinding.h"
00041 #include "RecoVertex/PrimaryVertexProducer/interface/HITrackFilterForPVFinding.h"
00042 #include "RecoVertex/PrimaryVertexProducer/interface/GapClusterizerInZ.h"
00043 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ.h"
00044 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
00045 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
00046 //#include "RecoVertex/VertexTools/interface/VertexDistanceXY.h"
00047 #include "RecoVertex/VertexPrimitives/interface/VertexException.h"
00048 #include <algorithm>
00049 #include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
00050 #include "RecoVertex/VertexTools/interface/VertexCompatibleWithBeam.h"
00051 
00052 //
00053 // class declaration
00054 //
00055 
00056 class PrimaryVertexProducer : public edm::EDProducer {
00057 public:
00058   explicit PrimaryVertexProducer(const edm::ParameterSet&);
00059   ~PrimaryVertexProducer();
00060   
00061   virtual void produce(edm::Event&, const edm::EventSetup&);
00062 
00063   // access to config
00064   edm::ParameterSet config() const { return theConfig; }
00065   edm::InputTag trackLabel;
00066   edm::InputTag beamSpotLabel;
00067   
00068 private:
00069   // ----------member data ---------------------------
00070   TrackFilterForPVFindingBase* theTrackFilter; 
00071   TrackClusterizerInZ* theTrackClusterizer;
00072 
00073   // vtx fitting algorithms
00074   struct algo {
00075     VertexFitter<5> * fitter;
00076     VertexCompatibleWithBeam * vertexSelector;
00077     std::string  label;
00078     bool useBeamConstraint;
00079     double minNdof;
00080   };
00081 
00082   std::vector< algo > algorithms;
00083 
00084   edm::ParameterSet theConfig;
00085   bool fVerbose;
00086 };