![]() |
![]() |
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