File indexing completed on 2025-01-08 03:35:57
0001 #ifndef CommonTools_RecoAlgos_TrackWithVertexSelector_H
0002 #define CommonTools_RecoAlgos_TrackWithVertexSelector_H
0003
0004
0005
0006
0007
0008 #include "DataFormats/Common/interface/ValueMap.h"
0009 #include "DataFormats/TrackReco/interface/Track.h"
0010 #include "DataFormats/VertexReco/interface/Vertex.h"
0011 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0012 #include "FWCore/Framework/interface/ConsumesCollector.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0017 #include "FWCore/Utilities/interface/InputTag.h"
0018
0019 class TrackWithVertexSelector {
0020 public:
0021 explicit TrackWithVertexSelector(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
0022 : TrackWithVertexSelector(iConfig, iC) {}
0023 explicit TrackWithVertexSelector(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC);
0024 ~TrackWithVertexSelector();
0025
0026 static void fillPSetDescription(edm::ParameterSetDescription &desc);
0027
0028 void init(const edm::Event &event, const edm::EventSetup &) { init(event); }
0029 void init(const edm::Event &event);
0030
0031 bool operator()(const reco::Track &t) const;
0032 bool operator()(const reco::Track &t, const edm::Event &iEvent) {
0033 init(iEvent);
0034 return (*this)(t);
0035 }
0036
0037 bool operator()(const reco::TrackRef &t) const;
0038 bool operator()(const reco::TrackRef &t, const edm::Event &iEvent) {
0039 init(iEvent);
0040 return (*this)(t);
0041 }
0042 bool testTrack(const reco::Track &t) const;
0043 bool testVertices(const reco::Track &t, const reco::VertexCollection &vtxs) const;
0044
0045 bool testTrack(const reco::TrackRef &t) const;
0046 bool testVertices(const reco::TrackRef &t, const reco::VertexCollection &vtxs) const;
0047
0048 private:
0049 const uint32_t numberOfValidHits_;
0050 const uint32_t numberOfValidPixelHits_;
0051 const uint32_t numberOfLostHits_;
0052 const double normalizedChi2_;
0053 const double ptMin_, ptMax_, etaMin_, etaMax_;
0054 const double dzMax_, d0Max_;
0055 const double ptErrorCut_;
0056 const std::string quality_;
0057
0058 const uint32_t nVertices_;
0059 const edm::EDGetTokenT<reco::VertexCollection> vertexToken_;
0060 const edm::EDGetTokenT<edm::ValueMap<float> > timesToken_, timeResosToken_;
0061 const bool vtxFallback_;
0062 const double zetaVtx_, rhoVtx_, nSigmaDtVertex_;
0063
0064 reco::VertexCollection const *vcoll_ = nullptr;
0065 edm::ValueMap<float> const *timescoll_ = nullptr;
0066 edm::ValueMap<float> const *timeresoscoll_ = nullptr;
0067 typedef math::XYZPoint Point;
0068 };
0069
0070 #endif