CMS 3D CMS Logo

RecoTauVertexAssociator.cc
Go to the documentation of this file.
2 
3 #include <functional>
4 
13 
14 namespace reco {
15  namespace tau {
16 
17  namespace {
18  inline const reco::Track* getTrack(const Candidate& cand) {
19  const PFCandidate* pfCandPtr = dynamic_cast<const PFCandidate*>(&cand);
20  if (pfCandPtr != nullptr) {
21  if (pfCandPtr->trackRef().isNonnull())
22  return pfCandPtr->trackRef().get();
23  else if (pfCandPtr->gsfTrackRef().isNonnull())
24  return pfCandPtr->gsfTrackRef().get();
25  else
26  return nullptr;
27  }
28  const pat::PackedCandidate* packedCand = dynamic_cast<const pat::PackedCandidate*>(&cand);
29  if (packedCand != nullptr && packedCand->hasTrackDetails())
30  return &packedCand->pseudoTrack();
31 
32  return nullptr;
33  }
34 
35  inline const reco::TrackBaseRef getTrackRef(const Candidate& cand) {
36  // TauReco@MiniAOD: This version does not work on top of MiniAOD, however,
37  // it is only used for non-default track-vertex associations
38  const PFCandidate* pfCandPtr = dynamic_cast<const PFCandidate*>(&cand);
39  if (pfCandPtr != nullptr) {
40  if (pfCandPtr->trackRef().isNonnull())
41  return reco::TrackBaseRef(pfCandPtr->trackRef());
42  else if (pfCandPtr->gsfTrackRef().isNonnull())
43  return reco::TrackBaseRef(pfCandPtr->gsfTrackRef());
44  else
45  return reco::TrackBaseRef();
46  }
47 
48  return reco::TrackBaseRef();
49  }
50  } // namespace
51 
52  // Get the highest pt track in a jet.
53  // Get the KF track if it exists. Otherwise, see if it has a GSF track.
55  std::vector<CandidatePtr> chargedPFCands = pfChargedCands(jet, true);
56  if (verbosity_ >= 1) {
57  std::cout << "<RecoTauVertexAssociator::getLeadTrack>:" << std::endl;
58  std::cout << " jet: Pt = " << jet.pt() << ", eta = " << jet.eta() << ", phi = " << jet.phi() << std::endl;
59  std::cout << " num. chargedPFCands = " << chargedPFCands.size() << std::endl;
60  std::cout << " vxTrkFiltering = " << vxTrkFiltering_ << std::endl;
61  }
62 
63  if (chargedPFCands.empty()) {
64  return reco::CandidatePtr(nullptr, 0);
65  }
66 
67  std::vector<CandidatePtr> selectedPFCands;
68  if (vxTrkFiltering_) {
69  selectedPFCands = qcuts_->filterCandRefs(chargedPFCands);
70  } else {
71  selectedPFCands = chargedPFCands;
72  }
73  if (verbosity_ >= 1) {
74  std::cout << " num. selectedPFCands = " << selectedPFCands.size() << std::endl;
75  }
76 
78  if (!selectedPFCands.empty()) {
79  double leadTrackPt = 0.;
81  leadCand = selectedPFCands[0];
82  } else {
83  for (std::vector<CandidatePtr>::const_iterator pfCand = selectedPFCands.begin();
84  pfCand != selectedPFCands.end();
85  ++pfCand) {
86  const reco::Track* track = getTrack(**pfCand);
87  double actualTrackPt = 0., actualTrackPtError = 0.;
88  if (track != nullptr) {
89  actualTrackPt = track->pt();
90  actualTrackPtError = track->ptError();
91  }
92  double trackPt = 0.;
94  trackPt = actualTrackPt - 2. * actualTrackPtError;
95  } else if (leadingTrkOrPFCandOption_ == kLeadPFCand) {
96  trackPt = (*pfCand)->pt();
98  trackPt = std::min(actualTrackPt, (double)(*pfCand)->pt());
99  } else
100  assert(0);
101  if (trackPt > leadTrackPt) {
102  leadCand = (*pfCand);
104  }
105  }
106  }
107  }
108  if (leadCand.isNull()) {
109  if (recoverLeadingTrk_) {
110  leadCand = chargedPFCands[0];
111  } else {
112  return reco::CandidatePtr(nullptr, 0);
113  }
114  }
115  if (verbosity_ >= 1) {
116  std::cout << "leadCand: Pt = " << leadCand->pt() << ", eta = " << leadCand->eta()
117  << ", phi = " << leadCand->phi() << std::endl;
118  }
119  return leadCand;
120  }
121 
123  auto leadCand = getLeadCand(jet);
124  if (leadCand.isNull())
125  return nullptr;
126  const reco::Track* track = getTrack(*leadCand);
127  return track;
128  }
129 
131  auto leadCand = getLeadCand(jet);
132  if (leadCand.isNull())
133  return reco::TrackBaseRef();
134  return getTrackRef(*leadCand);
135  }
136 
137  namespace {
138  // Define functors which extract the relevant information from a collection of
139  // vertices.
140  double dzToTrack(const reco::VertexRef& vtx, const reco::Track* trk) {
141  if (!trk || !vtx) {
143  }
144  return std::abs(trk->dz(vtx->position()));
145  }
146 
147  double trackWeightInVertex(const reco::VertexRef& vtx, const reco::TrackBaseRef& trk) {
148  if (!trk || !vtx) {
149  return 0.0;
150  }
151  return vtx->trackWeight(trk);
152  }
153  } // namespace
154 
156  : vertexSelector_(nullptr), qcuts_(nullptr), jetToVertexAssociation_(nullptr), lastEvent_(0) {
157  //std::cout << "<RecoTauVertexAssociator::RecoTauVertexAssociator>:" << std::endl;
158 
159  vertexTag_ = edm::InputTag("offlinePrimaryVertices", "");
160  algorithm_ = "highestPtInEvent";
161  // Sanity check, will remove once HLT module configs are updated.
162  if (!pset.exists("primaryVertexSrc") || !pset.exists("pvFindingAlgo")) {
163  edm::LogWarning("NoVertexFindingMethodSpecified")
164  << "The PSet passed to the RecoTauVertexAssociator was incorrectly configured."
165  << " The vertex will be taken as the highest Pt vertex from the 'offlinePrimaryVertices' collection."
166  << std::endl;
167  } else {
168  vertexTag_ = pset.getParameter<edm::InputTag>("primaryVertexSrc");
169  algorithm_ = pset.getParameter<std::string>("pvFindingAlgo");
170  }
171 
172  if (pset.exists("vxAssocQualityCuts")) {
173  //std::cout << " reading 'vxAssocQualityCuts'" << std::endl;
174  qcuts_ = new RecoTauQualityCuts(pset.getParameterSet("vxAssocQualityCuts"));
175  } else {
176  //std::cout << " reading 'signalQualityCuts'" << std::endl;
177  qcuts_ = new RecoTauQualityCuts(pset.getParameterSet("signalQualityCuts"));
178  }
179  assert(qcuts_);
180 
181  vxTrkFiltering_ = false;
182  if (!pset.exists("vertexTrackFiltering") && pset.exists("vxAssocQualityCuts")) {
183  edm::LogWarning("NoVertexTrackFilteringSpecified")
184  << "The PSet passed to the RecoTauVertexAssociator was incorrectly configured."
185  << " Please define vertexTrackFiltering in config file."
186  << " No filtering of tracks to vertices will be applied." << std::endl;
187  } else {
188  vxTrkFiltering_ = pset.exists("vertexTrackFiltering") ? pset.getParameter<bool>("vertexTrackFiltering") : false;
189  }
190  if (pset.exists("vertexSelection")) {
191  std::string vertexSelection = pset.getParameter<std::string>("vertexSelection");
192  if (!vertexSelection.empty()) {
194  }
195  }
196 
197  if (algorithm_ == "highestPtInEvent") {
199  } else if (algorithm_ == "closestInDeltaZ") {
201  } else if (algorithm_ == "highestWeightForLeadTrack") {
203  } else if (algorithm_ == "combined") {
204  algo_ = kCombined;
205  } else {
206  throw cms::Exception("BadVertexAssociatorConfig")
207  << "Invalid Configuration parameter 'algorithm' " << algorithm_ << "."
208  << " Valid options are: 'highestPtInEvent', 'closestInDeltaZ', 'highestWeightForLeadTrack' and "
209  "'combined'.\n";
210  }
211 
213 
214  recoverLeadingTrk_ = pset.exists("recoverLeadingTrk") ? pset.getParameter<bool>("recoverLeadingTrk") : false;
215 
216  std::string leadingTrkOrPFCandOption_string = pset.exists("leadingTrkOrPFCandOption")
217  ? pset.getParameter<std::string>("leadingTrkOrPFCandOption")
218  : "firstTrack";
219  if (leadingTrkOrPFCandOption_string == "leadTrack")
221  else if (leadingTrkOrPFCandOption_string == "leadPFCand")
223  else if (leadingTrkOrPFCandOption_string == "minLeadTrackOrPFCand")
225  else if (leadingTrkOrPFCandOption_string == "firstTrack")
227  else
228  throw cms::Exception("BadVertexAssociatorConfig")
229  << "Invalid Configuration parameter 'leadingTrkOrPFCandOption' " << leadingTrkOrPFCandOption_string << "."
230  << " Valid options are: 'leadTrack', 'leadPFCand', 'firstTrack'.\n";
231 
232  verbosity_ = (pset.exists("verbosity")) ? pset.getParameter<int>("verbosity") : 0;
233  }
234 
236  delete vertexSelector_;
237  delete qcuts_;
239  }
240 
244  selectedVertices_.clear();
245  selectedVertices_.reserve(vertices->size());
246  for (size_t idxVertex = 0; idxVertex < vertices->size(); ++idxVertex) {
247  reco::VertexRef vertex(vertices, idxVertex);
249  continue;
250  selectedVertices_.push_back(vertex);
251  }
252  if (!selectedVertices_.empty()) {
254  }
255  edm::EventNumber_t currentEvent = evt.id().event();
256  if (currentEvent != lastEvent_ || !jetToVertexAssociation_) {
258  jetToVertexAssociation_ = new std::map<const reco::Jet*, reco::VertexRef>;
259  else
260  jetToVertexAssociation_->clear();
261  lastEvent_ = currentEvent;
262  }
263  }
264 
266  if (!useJet) {
267  if (tau.leadChargedHadrCand().isNonnull()) {
268  const reco::Track* track = getTrack(*tau.leadChargedHadrCand());
269  if (track != nullptr)
270  return associatedVertex(track);
271  }
272  }
273  // MB: use vertex associated to a given jet if explicitely requested or in case of missing leading track
274  reco::JetBaseRef jetRef = tau.jetRef();
275  // FIXME workaround for HLT which does not use updated data format
276  if (jetRef.isNull())
277  jetRef = tau.pfTauTagInfoRef()->pfjetRef();
278  return associatedVertex(*jetRef);
279  }
280 
282  reco::VertexRef trkVertex = (!selectedVertices_.empty()) ? selectedVertices_[0] : reco::VertexRef();
283 
284  // algos kHighestWeigtForLeadTrack and kCombined not supported
285  if (algo_ == kHighestPtInEvent) {
286  if (!selectedVertices_.empty())
287  trkVertex = selectedVertices_[0];
288  } else if (algo_ == kClosestDeltaZ) {
289  if (track) {
290  double closestDistance = 1.e+6;
291  // Find the vertex that has the lowest dZ to the track
292  int idxVertex = 0;
293  for (std::vector<reco::VertexRef>::const_iterator selectedVertex = selectedVertices_.begin();
294  selectedVertex != selectedVertices_.end();
295  ++selectedVertex) {
296  double dZ = dzToTrack(*selectedVertex, track);
297  if (verbosity_) {
298  std::cout << "vertex #" << idxVertex << ": x = " << (*selectedVertex)->position().x()
299  << ", y = " << (*selectedVertex)->position().y()
300  << ", z = " << (*selectedVertex)->position().z() << " --> dZ = " << dZ << std::endl;
301  }
302  if (dZ < closestDistance) {
303  trkVertex = (*selectedVertex);
304  closestDistance = dZ;
305  }
306  ++idxVertex;
307  }
308  }
309  }
310 
311  if (verbosity_ >= 1) {
312  std::cout << "--> returning vertex: x = " << trkVertex->position().x() << ", y = " << trkVertex->position().y()
313  << ", z = " << trkVertex->position().z() << std::endl;
314  }
315 
316  return trkVertex;
317  }
318 
320  reco::VertexRef trkVertex = (!selectedVertices_.empty()) ? selectedVertices_[0] : reco::VertexRef();
321 
323  if (track.isNonnull()) {
324  double largestWeight = -1.;
325  // Find the vertex that has the highest association probability to the track
326  int idxVertex = 0;
327  for (std::vector<reco::VertexRef>::const_iterator selectedVertex = selectedVertices_.begin();
328  selectedVertex != selectedVertices_.end();
329  ++selectedVertex) {
330  double weight = trackWeightInVertex(*selectedVertex, track);
331  if (verbosity_) {
332  std::cout << "vertex #" << idxVertex << ": x = " << (*selectedVertex)->position().x()
333  << ", y = " << (*selectedVertex)->position().y()
334  << ", z = " << (*selectedVertex)->position().z() << " --> weight = " << weight << std::endl;
335  }
336  if (weight > largestWeight) {
337  trkVertex = (*selectedVertex);
338  largestWeight = weight;
339  }
340  ++idxVertex;
341  }
342  // the weight was never larger than zero
343  if (algo_ == kCombined && largestWeight < 1.e-7) {
344  if (verbosity_) {
345  std::cout << "No vertex had positive weight! Trying dZ instead... " << std::endl;
346  }
347  double closestDistance = 1.e+6;
348  // Find the vertex that has the lowest dZ to the leading track
349  int idxVertex = 0;
350  for (std::vector<reco::VertexRef>::const_iterator selectedVertex = selectedVertices_.begin();
351  selectedVertex != selectedVertices_.end();
352  ++selectedVertex) {
353  double dZ = dzToTrack(*selectedVertex, track.get());
354  if (verbosity_) {
355  std::cout << "vertex #" << idxVertex << ": x = " << (*selectedVertex)->position().x()
356  << ", y = " << (*selectedVertex)->position().y()
357  << ", z = " << (*selectedVertex)->position().z() << " --> dZ = " << dZ << std::endl;
358  }
359  if (dZ < closestDistance) {
360  trkVertex = (*selectedVertex);
361  closestDistance = dZ;
362  }
363  ++idxVertex;
364  }
365  }
366  }
367  }
368 
369  if (verbosity_ >= 1) {
370  std::cout << "--> returning vertex: x = " << trkVertex->position().x() << ", y = " << trkVertex->position().y()
371  << ", z = " << trkVertex->position().z() << std::endl;
372  }
373 
374  return trkVertex;
375  }
376 
378  if (verbosity_ >= 1) {
379  std::cout << "<RecoTauVertexAssociator::associatedVertex>:" << std::endl;
380  std::cout << " jet: Pt = " << jet.pt() << ", eta = " << jet.eta() << ", phi = " << jet.phi() << std::endl;
381  std::cout << " num. Vertices = " << selectedVertices_.size() << std::endl;
382  std::cout << " size(jetToVertexAssociation) = " << jetToVertexAssociation_->size() << std::endl;
383  std::cout << " vertexTag = " << vertexTag_ << std::endl;
384  std::cout << " algorithm = " << algorithm_ << std::endl;
385  std::cout << " recoverLeadingTrk = " << recoverLeadingTrk_ << std::endl;
386  }
387 
388  reco::VertexRef jetVertex = (!selectedVertices_.empty()) ? selectedVertices_[0] : reco::VertexRef();
389  const Jet* jetPtr = &jet;
390 
391  // check if jet-vertex association has been determined for this jet before
392  std::map<const reco::Jet*, reco::VertexRef>::iterator vertexPtr = jetToVertexAssociation_->find(jetPtr);
393  if (vertexPtr != jetToVertexAssociation_->end()) {
394  jetVertex = vertexPtr->second;
395  } else {
396  // no jet-vertex association exists for this jet yet, compute it!
397  if (algo_ == kHighestPtInEvent) {
398  if (!selectedVertices_.empty())
399  jetVertex = selectedVertices_[0];
400  } else if (algo_ == kClosestDeltaZ) {
401  // find "leading" (highest Pt) track in jet
403  if (verbosity_) {
404  if (leadTrack != nullptr)
405  std::cout << "leadTrack: Pt = " << leadTrack->pt() << ", eta = " << leadTrack->eta()
406  << ", phi = " << leadTrack->phi() << std::endl;
407  else
408  std::cout << "leadTrack: N/A" << std::endl;
409  }
410  if (leadTrack != nullptr) {
411  jetVertex = associatedVertex(leadTrack);
412  }
413  } else if (algo_ == kHighestWeigtForLeadTrack || algo_ == kCombined) {
414  // find "leading" (highest Pt) track in jet
416  if (verbosity_) {
417  if (leadTrack.isNonnull())
418  std::cout << "leadTrack: Pt = " << leadTrack->pt() << ", eta = " << leadTrack->eta()
419  << ", phi = " << leadTrack->phi() << std::endl;
420  else
421  std::cout << "leadTrack: N/A" << std::endl;
422  }
423  if (leadTrack.isNonnull()) {
424  jetVertex = associatedVertex(leadTrack);
425  }
426  }
427 
428  jetToVertexAssociation_->insert(std::pair<const Jet*, reco::VertexRef>(jetPtr, jetVertex));
429  }
430 
431  if (verbosity_ >= 1) {
432  std::cout << "--> returning vertex: x = " << jetVertex->position().x() << ", y = " << jetVertex->position().y()
433  << ", z = " << jetVertex->position().z() << std::endl;
434  }
435 
436  return jetVertex;
437  }
438 
439  } // namespace tau
440 } // namespace reco
edm::RefToBase::isNull
bool isNull() const
Checks for null.
Definition: RefToBase.h:295
pat::PackedCandidate::hasTrackDetails
bool hasTrackDetails() const
Return true if a bestTrack can be extracted from this Candidate.
Definition: PackedCandidate.h:787
reco::tau::RecoTauVertexAssociator::getLeadTrack
const Track * getLeadTrack(const Jet &) const
Definition: RecoTauVertexAssociator.cc:122
reco::tau::pfChargedCands
std::vector< CandidatePtr > pfChargedCands(const Jet &jet, bool sort=true)
Extract all non-neutral candidates from a PFJet.
Definition: RecoTauCommonUtilities.cc:94
reco::tau::RecoTauVertexAssociator::verbosity_
int verbosity_
Definition: RecoTauVertexAssociator.h:88
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
reco::tau::RecoTauVertexAssociator::getLeadCand
const CandidatePtr getLeadCand(const Jet &) const
Definition: RecoTauVertexAssociator.cc:54
configurableAnalysis::Candidate
char Candidate[]
Definition: modules.cc:20
reco::tau::RecoTauVertexAssociator::kHighestPtInEvent
Definition: RecoTauVertexAssociator.h:52
reco::tau::RecoTauQualityCuts
Definition: RecoTauQualityCuts.h:35
metsig::tau
Definition: SignAlgoResolutions.h:49
reco::tau::RecoTauVertexAssociator::recoverLeadingTrk_
bool recoverLeadingTrk_
Definition: RecoTauVertexAssociator.h:81
HiggsMonitoring_cfi.vertexSelection
vertexSelection
Definition: HiggsMonitoring_cfi.py:107
min
T min(T a, T b)
Definition: MathUtil.h:58
mps_merge.weight
weight
Definition: mps_merge.py:88
reco::VertexCollection
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
gather_cfg.cout
cout
Definition: gather_cfg.py:144
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
reco::tau::RecoTauVertexAssociator::lastEvent_
edm::EventNumber_t lastEvent_
Definition: RecoTauVertexAssociator.h:87
reco::tau::leadCand
InputIterator leadCand(InputIterator begin, InputIterator end)
Definition: RecoTauCommonUtilities.h:138
cms::cuda::assert
assert(be >=bs)
reco::PFTau
Definition: PFTau.h:36
reco::TrackBaseRef
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
reco::tau::RecoTauVertexAssociator::kLeadTrack
Definition: RecoTauVertexAssociator.h:82
reco::tau::RecoTauVertexAssociator::algo_
Algorithm algo_
Definition: RecoTauVertexAssociator.h:78
infinity
const double infinity
Definition: CSCChamberFitter.cc:10
edm::Handle< reco::VertexCollection >
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
RecoTauVertexAssociator.h
edm::Ref< VertexCollection >
pfElectronTranslator_cfi.PFCandidate
PFCandidate
Definition: pfElectronTranslator_cfi.py:6
singlePfTauSkim_cff.leadTrack
leadTrack
Definition: singlePfTauSkim_cff.py:22
Track.h
reco::tau::RecoTauVertexAssociator::vxTrkFiltering_
bool vxTrkFiltering_
Definition: RecoTauVertexAssociator.h:74
Jet
Definition: Jet.py:1
reco::tau::RecoTauVertexAssociator::kClosestDeltaZ
Definition: RecoTauVertexAssociator.h:52
reco::tau::RecoTauVertexAssociator::jetToVertexAssociation_
std::map< const reco::Jet *, reco::VertexRef > * jetToVertexAssociation_
Definition: RecoTauVertexAssociator.h:86
reco::Track
Definition: Track.h:27
reco::tau::RecoTauQualityCuts::setPV
void setPV(const reco::VertexRef &vtx)
Update the primary vertex.
Definition: RecoTauQualityCuts.h:47
reco::tau::RecoTauVertexAssociator::kFirstTrack
Definition: RecoTauVertexAssociator.h:82
edm::EventNumber_t
unsigned long long EventNumber_t
Definition: RunLumiEventNumber.h:12
reco::TrackBase::dz
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:622
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:531
RecoTauCommonUtilities.h
reco::tau::RecoTauVertexAssociator::qcuts_
RecoTauQualityCuts * qcuts_
Definition: RecoTauVertexAssociator.h:80
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Vertex.h
reco::tau::RecoTauVertexAssociator::getLeadTrackRef
const TrackBaseRef getLeadTrackRef(const Jet &) const
Definition: RecoTauVertexAssociator.cc:130
pat::PackedCandidate::pseudoTrack
virtual const reco::Track & pseudoTrack() const
Definition: PackedCandidate.h:772
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
reco::tau::RecoTauQualityCuts::filterCandRefs
Coll filterCandRefs(const Coll &refcoll, bool invert=false) const
Filter a ref vector of Candidates.
Definition: RecoTauQualityCuts.h:86
reco::tau::RecoTauVertexAssociator::associatedVertex
reco::VertexRef associatedVertex(const Jet &jet) const
Definition: RecoTauVertexAssociator.cc:377
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
pat::PackedCandidate
Definition: PackedCandidate.h:22
PackedCandidate.h
cand
Definition: decayParser.h:32
edm::EventID::event
EventNumber_t event() const
Definition: EventID.h:40
reco::tau::RecoTauVertexAssociator::RecoTauVertexAssociator
RecoTauVertexAssociator(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
Definition: RecoTauVertexAssociator.cc:155
GsfTrack.h
reco::tau::RecoTauVertexAssociator::leadingTrkOrPFCandOption_
int leadingTrkOrPFCandOption_
Definition: RecoTauVertexAssociator.h:83
reco::tau::RecoTauVertexAssociator::vertexTag_
edm::InputTag vertexTag_
Definition: RecoTauVertexAssociator.h:73
reco::tau::RecoTauVertexAssociator::setEvent
void setEvent(const edm::Event &evt)
Load the vertices from the event.
Definition: RecoTauVertexAssociator.cc:241
reco::tau::RecoTauVertexAssociator::kMinLeadTrackOrPFCand
Definition: RecoTauVertexAssociator.h:82
reco::tau::RecoTauVertexAssociator::vertexSelector_
StringCutObjectSelector< reco::Vertex > * vertexSelector_
Definition: RecoTauVertexAssociator.h:75
edm::Ptr< Candidate >
getTrack
static const TrackGhostTrackState * getTrack(const BasicGhostTrackState *basic)
Definition: GhostTrackState.cc:49
reco::tau::RecoTauVertexAssociator::kHighestWeigtForLeadTrack
Definition: RecoTauVertexAssociator.h:52
reco::tau::RecoTauVertexAssociator::kCombined
Definition: RecoTauVertexAssociator.h:52
reco::tau::RecoTauVertexAssociator::kLeadPFCand
Definition: RecoTauVertexAssociator.h:82
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
metsig::jet
Definition: SignAlgoResolutions.h:47
StringCutObjectSelector< reco::Vertex >
reco::tau::RecoTauVertexAssociator::vxToken_
edm::EDGetTokenT< reco::VertexCollection > vxToken_
Definition: RecoTauVertexAssociator.h:84
jets_cff.leadTrackPt
leadTrackPt
Definition: jets_cff.py:132
Exception
Definition: hltDiff.cc:246
edm::EventBase::id
edm::EventID id() const
Definition: EventBase.h:59
PFTau.h
reco::tau::RecoTauVertexAssociator::selectedVertices_
std::vector< reco::VertexRef > selectedVertices_
Definition: RecoTauVertexAssociator.h:76
edm::RefToBase< reco::Track >
reco::tau::RecoTauVertexAssociator::~RecoTauVertexAssociator
virtual ~RecoTauVertexAssociator()
Definition: RecoTauVertexAssociator.cc:235
reco::CandidatePtr
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ParameterSet.h
reco::tau::RecoTauVertexAssociator::algorithm_
std::string algorithm_
Definition: RecoTauVertexAssociator.h:77
edm::Event
Definition: Event.h:73
listHistos.trackPt
trackPt
Definition: listHistos.py:120
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
weight
Definition: weight.py:1
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
pwdgSkimBPark_cfi.vertices
vertices
Definition: pwdgSkimBPark_cfi.py:7
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37