CMS 3D CMS Logo

PrimaryVertexAssignment.h
Go to the documentation of this file.
1 #ifndef CommonTools_PFCandProducer_PrimaryVertexAssignment_
2 #define CommonTools_PFCandProducer_PrimaryVertexAssignment_
3 
5 
9 
11 
17 
19 public:
20  enum Quality {
21  UsedInFit = 7,
22  PrimaryDz = 6,
23  PrimaryV0 = 5,
24  BTrack = 4,
25  Unused = 3,
26  OtherDz = 2,
29  };
30 
32  : maxDzSigForPrimaryAssignment_(iConfig.getParameter<double>("maxDzSigForPrimaryAssignment")),
33  maxDzForPrimaryAssignment_(iConfig.getParameter<double>("maxDzForPrimaryAssignment")),
34  maxDzErrorForPrimaryAssignment_(iConfig.getParameter<double>("maxDzErrorForPrimaryAssignment")),
35  maxDtSigForPrimaryAssignment_(iConfig.getParameter<double>("maxDtSigForPrimaryAssignment")),
36  maxJetDeltaR_(iConfig.getParameter<double>("maxJetDeltaR")),
37  minJetPt_(iConfig.getParameter<double>("minJetPt")),
38  maxDistanceToJetAxis_(iConfig.getParameter<double>("maxDistanceToJetAxis")),
39  maxDzForJetAxisAssigment_(iConfig.getParameter<double>("maxDzForJetAxisAssigment")),
40  maxDxyForJetAxisAssigment_(iConfig.getParameter<double>("maxDxyForJetAxisAssigment")),
41  maxDxySigForNotReconstructedPrimary_(iConfig.getParameter<double>("maxDxySigForNotReconstructedPrimary")),
42  maxDxyForNotReconstructedPrimary_(iConfig.getParameter<double>("maxDxyForNotReconstructedPrimary")),
43  useTiming_(iConfig.getParameter<bool>("useTiming")),
44  preferHighRanked_(iConfig.getParameter<bool>("preferHighRanked")) {}
45 
47 
48  std::pair<int, PrimaryVertexAssignment::Quality> chargedHadronVertex(
50  const reco::TrackRef& trackRef,
51  const reco::Track* track,
52  float trackTime,
53  float trackTimeResolution, // <0 if timing not available for this object
55  const TransientTrackBuilder& builder) const;
56 
57  std::pair<int, PrimaryVertexAssignment::Quality> chargedHadronVertex(
58  const reco::VertexCollection& vertices,
59  const reco::TrackRef& trackRef,
60  float trackTime,
61  float trackTimeResolution, // <0 if timing not available for this object
62  const edm::View<reco::Candidate>& jets,
63  const TransientTrackBuilder& builder) const {
64  return chargedHadronVertex(vertices, trackRef, &(*trackRef), trackTime, trackTimeResolution, jets, builder);
65  }
66 
67  std::pair<int, PrimaryVertexAssignment::Quality> chargedHadronVertex(const reco::VertexCollection& vertices,
69  const edm::View<reco::Candidate>& jets,
70  const TransientTrackBuilder& builder) const {
71  float time = 0, timeResolution = -1;
72  if (useTiming_ && pfcand.isTimeValid()) {
73  time = pfcand.time();
74  timeResolution = pfcand.timeError();
75  }
76  if (pfcand.gsfTrackRef().isNull()) {
77  if (pfcand.trackRef().isNull())
78  return std::pair<int, PrimaryVertexAssignment::Quality>(-1, PrimaryVertexAssignment::Unassigned);
79  else
80  return chargedHadronVertex(vertices, pfcand.trackRef(), time, timeResolution, jets, builder);
81  }
82  return chargedHadronVertex(
83  vertices, reco::TrackRef(), &(*pfcand.gsfTrackRef()), time, timeResolution, jets, builder);
84  }
85  std::pair<int, PrimaryVertexAssignment::Quality> chargedHadronVertex(const reco::VertexCollection& vertices,
86  const reco::RecoChargedRefCandidate& chcand,
89  const edm::View<reco::Candidate>& jets,
90  const TransientTrackBuilder& builder) const {
91  float time = 0, timeResolution = -1;
92  if (useTiming_) {
93  time = (*trackTimeTag)[chcand.track()];
94  timeResolution = (*trackTimeResoTag)[chcand.track()];
95  }
96  if (chcand.track().isNull())
97  return std::pair<int, PrimaryVertexAssignment::Quality>(-1, PrimaryVertexAssignment::Unassigned);
98  return chargedHadronVertex(vertices, chcand.track(), time, timeResolution, jets, builder);
99  }
100 
101 private:
107  double minJetPt_;
115 };
116 
117 #endif
std::pair< int, PrimaryVertexAssignment::Quality > chargedHadronVertex(const reco::VertexCollection &vertices, const reco::PFCandidate &pfcand, const edm::View< reco::Candidate > &jets, const TransientTrackBuilder &builder) const
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
float time() const
Definition: PFCandidate.h:416
PrimaryVertexAssignment(const edm::ParameterSet &iConfig)
reco::TrackRef trackRef() const
Definition: PFCandidate.cc:408
bool isTimeValid() const
do we have a valid time information
Definition: PFCandidate.h:414
std::pair< int, PrimaryVertexAssignment::Quality > chargedHadronVertex(const reco::VertexCollection &vertices, const reco::TrackRef &trackRef, const reco::Track *track, float trackTime, float trackTimeResolution, const edm::View< reco::Candidate > &jets, const TransientTrackBuilder &builder) const
std::pair< int, PrimaryVertexAssignment::Quality > chargedHadronVertex(const reco::VertexCollection &vertices, const reco::RecoChargedRefCandidate &chcand, const edm::ValueMap< float > *trackTimeTag, const edm::ValueMap< float > *trackTimeResoTag, const edm::View< reco::Candidate > &jets, const TransientTrackBuilder &builder) const
bool isNull() const
Checks for null.
Definition: Ref.h:235
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:40
reco::GsfTrackRef gsfTrackRef() const
Definition: PFCandidate.cc:440
std::pair< int, PrimaryVertexAssignment::Quality > chargedHadronVertex(const reco::VertexCollection &vertices, const reco::TrackRef &trackRef, float trackTime, float trackTimeResolution, const edm::View< reco::Candidate > &jets, const TransientTrackBuilder &builder) const
float timeError() const
Definition: PFCandidate.h:418