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 };