File indexing completed on 2024-04-06 12:29:15
0001
0002 #ifndef PrimaryVertexProducerAlgorithm_H
0003 #define PrimaryVertexProducerAlgorithm_H
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <memory>
0024
0025
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "FWCore/Framework/interface/Event.h"
0028 #include "FWCore/Framework/interface/EventSetup.h"
0029
0030 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0031 #include "FWCore/Utilities/interface/InputTag.h"
0032
0033 #include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h"
0034 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
0035 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFindingBase.h"
0036 #include "RecoVertex/PrimaryVertexProducer/interface/TrackClusterizerInZ.h"
0037 #include "RecoVertex/PrimaryVertexProducer/interface/DAClusterizerInZ_vect.h"
0038
0039 #include "RecoVertex/PrimaryVertexProducer/interface/TrackFilterForPVFinding.h"
0040 #include "RecoVertex/PrimaryVertexProducer/interface/HITrackFilterForPVFinding.h"
0041 #include "RecoVertex/PrimaryVertexProducer/interface/GapClusterizerInZ.h"
0042 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
0043 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
0044 #include "RecoVertex/VertexPrimitives/interface/VertexException.h"
0045 #include <algorithm>
0046 #include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
0047 #include "RecoVertex/VertexTools/interface/VertexCompatibleWithBeam.h"
0048
0049
0050
0051
0052
0053 class PrimaryVertexProducerAlgorithm : public VertexReconstructor {
0054 public:
0055 explicit PrimaryVertexProducerAlgorithm(const edm::ParameterSet&);
0056 ~PrimaryVertexProducerAlgorithm() override;
0057
0058
0059 std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack>& tracks) const override;
0060
0061 virtual std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack>& tracks,
0062 const reco::BeamSpot& beamSpot,
0063 const std::string& label = "") const;
0064
0065
0066 PrimaryVertexProducerAlgorithm* clone() const override { return new PrimaryVertexProducerAlgorithm(*this); }
0067
0068
0069 edm::ParameterSet config() const { return theConfig; }
0070 edm::InputTag trackLabel;
0071 edm::InputTag beamSpotLabel;
0072
0073 private:
0074 using VertexReconstructor::vertices;
0075
0076 TrackFilterForPVFindingBase* theTrackFilter;
0077 TrackClusterizerInZ* theTrackClusterizer;
0078
0079
0080 struct algo {
0081 VertexFitter<5>* fitter;
0082 VertexCompatibleWithBeam* vertexSelector;
0083 std::string label;
0084 bool useBeamConstraint;
0085 double minNdof;
0086 };
0087
0088 std::vector<algo> algorithms;
0089
0090 edm::ParameterSet theConfig;
0091 bool fVerbose;
0092 };
0093 #endif