22 #include "Math/GenVector/VectorUtil.h"
40 _l2l25MatchingCone = iConfig.
getParameter<
double>(
"L2L25MatchingCone");
42 _l25JetLeadTkMacthingCone = iConfig.
getParameter<
double>(
"L25JetLeadTkMatchingCone");
43 _minTrackPt = iConfig.
getParameter<
double>(
"MinTrackPt");
44 _signalCone = iConfig.
getParameter<
double>(
"SignalCone");
45 _isolationCone = iConfig.
getParameter<
double>(
"IsolationCone");
48 _l25LeadTkPtMin = iConfig.
getParameter<
double>(
"L25LeadTkMinPt");
55 leadSignalTrackPt = 0.;
56 leadTrkJetDeltaR = 0.;
59 numQPixTrkInSignalCone = 0;
60 numQPixTrkInAnnulus = 10;
74 l25MatchedToPFTau = 0;
80 l25tree = fs->
make<TTree>(
"l25tree",
"Level 2.5 Tau Tree");
82 l25tree->Branch(
"pfTauHasLeadTrk", &pfTauHasLeadTrk,
"pfTauHasLeadTrk/B");
83 l25tree->Branch(
"pfTauInBounds", &pfTauInBounds,
"pfTauInBounds/B");
84 l25tree->Branch(
"pfTauPt", &pfTauPt,
"pfTauPt/F");
85 l25tree->Branch(
"pfTauEt", &pfTauEt,
"pfTauEt/F");
86 l25tree->Branch(
"pfTauEta", &pfTauEta,
"pfTauEta/F");
87 l25tree->Branch(
"pfTauphi", &pfTauPhi,
"pfTauPhi/F");
88 l25tree->Branch(
"pfTauLTPt", &pfTauLTPt,
"pfTauLTPt/F");
89 l25tree->Branch(
"pfTauIsoDisc", &pfTauIsoDisc,
"pfTauIsoDisc/F");
90 l25tree->Branch(
"pfTauMuonDisc", &pfTauMuonDisc,
"pfTauMuonDisc/F");
91 l25tree->Branch(
"pfTauNProngs", &pfTauNProngs,
"pfTauNProngs/I");
92 l25tree->Branch(
"pfTauTrkIso", &pfTauTrkIso,
"pfTauTrkIso/F");
93 l25tree->Branch(
"pfTauNTrkIso", &pfTauNTrkIso,
"pfTauNTrkIso/I");
94 l25tree->Branch(
"pfTauIsoTrkPt", &pfTauIsoTrkPt,
"pfTauIsoTrkPt/F");
95 l25tree->Branch(
"pfTauGammaIso", &pfTauGammaIso,
"pfTauGammaIso/F");
97 l25tree->Branch(
"pftauL25DeltaR", &pftauL25DeltaR,
"pftauL25DeltaR/F");
98 l25tree->Branch(
"pftauSignalTrkDeltaR", &pftauSignalTrkDeltaR,
"pftauSignalTrkDeltaR/F");
99 l25tree->Branch(
"pftauIsoTrkDeltaR", &pftauIsoTrkDeltaR,
"pftauIsoTrkDeltaR/F");
100 l25tree->Branch(
"leadTrkPtRes", &leadTrkPtRes,
"leadTrkPtRes/F");
101 l25tree->Branch(
"leadTrkDeltaR", &leadTrkDeltaR,
"leadTrkDeltaR/F");
102 l25tree->Branch(
"leadIsoTrkPtRes", &leadIsoTrkPtRes,
"leadIsoTrkPtRes/F");
103 l25tree->Branch(
"leadIsoTrkDeltaR", &leadIsoTrkDeltaR,
"leadIsoTrkDeltaR/F");
104 l25tree->Branch(
"l25Disc_LeadTkDir", &l25Disc_LeadTkDir,
"l25Disc_LeadTkDir/B");
105 l25tree->Branch(
"l25Disc_JetDir", &l25Disc_JetDir,
"l25Disc_JetDir/B");
107 l25tree->Branch(
"l2JetEt", &l2JetEt,
"l2JetEt/F");
108 l25tree->Branch(
"l2JetEta", &l2JetEta,
"l2JetEta/F");
109 l25tree->Branch(
"l2JetPhi", &l2JetPhi,
"l2JetPhi/F");
111 l25tree->Branch(
"l25MatchedToPFTau", &l25MatchedToPFTau,
"l25MatchedToPFTau/B");
112 l25tree->Branch(
"L2MatchedToPFtau", &L2MatchedToPFtau,
"L2MatchedToPFtau/B");
113 l25tree->Branch(
"L25MatchedToL2", &L25MatchedToL2,
"L25MatchedToL2/B");
115 l25tree->Branch(
"l25JetEt", &l25JetEt,
"l25JetEt/F");
116 l25tree->Branch(
"l25JetEta", &l25JetEta,
"l25JetEta/F");
117 l25tree->Branch(
"l25JetPhi", &l25JetPhi,
"l25JetPhi/F");
118 l25tree->Branch(
"hasLeadTrack", &hasLeadTrk,
"hasLeadTrack/B");
119 l25tree->Branch(
"leadTrackPt", &leadSignalTrackPt,
"leadTrackPt/F");
120 l25tree->Branch(
"nTracks", &numPixTrkInJet,
"nTracks/I");
121 l25tree->Branch(
"nQTracks", &numQPixTrkInJet,
"nQTracks/I");
122 l25tree->Branch(
"nQTracksInSignal", &numQPixTrkInSignalCone,
"nQTracksInSignal/I");
123 l25tree->Branch(
"nQTracksInAnnulus", &numQPixTrkInAnnulus,
"nQTracksInAnnulus/I");
125 l25tree->Branch(
"l25TrkPt", &l25TrkPt);
126 l25tree->Branch(
"l25TrkEta", &l25TrkEta);
127 l25tree->Branch(
"l25TrkPhi", &l25TrkPhi);
128 l25tree->Branch(
"l25TrkDz", &l25TrkDz);
129 l25tree->Branch(
"l25TrkDxy", &l25TrkDxy);
130 l25tree->Branch(
"l25TrkChi2", &l25TrkChi2);
131 l25tree->Branch(
"l25TrkChi2NdF", &l25TrkChi2NdF);
132 l25tree->Branch(
"l25TrkNRecHits", &l25TrkNRecHits);
133 l25tree->Branch(
"l25TrkNValidPixelHits", &l25TrkNValidPixelHits);
135 l25tree->Branch(
"l25SignalTrkPt", &l25SignalTrkPt);
136 l25tree->Branch(
"l25SignalTrkEta", &l25SignalTrkEta);
137 l25tree->Branch(
"l25SignalTrkPhi", &l25SignalTrkPhi);
138 l25tree->Branch(
"l25SignalTrkDz", &l25SignalTrkDz);
139 l25tree->Branch(
"l25SignalTrkDxy", &l25SignalTrkDxy);
140 l25tree->Branch(
"l25SignalTrkChi2", &l25SignalTrkChi2);
141 l25tree->Branch(
"l25SignalTrkChi2NdF", &l25SignalTrkChi2NdF);
142 l25tree->Branch(
"l25SignalTrkNRecHits", &l25SignalTrkNRecHits);
143 l25tree->Branch(
"l25SignalTrkNValidHits", &l25SignalTrkNValidHits);
144 l25tree->Branch(
"l25SignalTrkNValidPixelHits", &l25SignalTrkNValidPixelHits);
145 l25tree->Branch(
"l25SignalTrkNLostHits", &l25SignalTrkNLostHits);
147 l25tree->Branch(
"l25IsoTrkPt", &l25IsoTrkPt);
148 l25tree->Branch(
"l25IsoTrkEta", &l25IsoTrkEta);
149 l25tree->Branch(
"l25IsoTrkPhi", &l25IsoTrkPhi);
150 l25tree->Branch(
"l25IsoTrkDz", &l25IsoTrkDz);
151 l25tree->Branch(
"l25IsoTrkDxy", &l25IsoTrkDxy);
152 l25tree->Branch(
"l25IsoTrkChi2", &l25IsoTrkChi2);
153 l25tree->Branch(
"l25IsoTrkChi2NdF", &l25IsoTrkChi2NdF);
154 l25tree->Branch(
"l25IsoTrkNRecHits", &l25IsoTrkNRecHits);
155 l25tree->Branch(
"l25IsoTrkNValidHits", &l25IsoTrkNValidHits);
156 l25tree->Branch(
"l25IsoTrkNValidPixelHits", &l25IsoTrkNValidPixelHits);
157 l25tree->Branch(
"l25IsoTrkNLostHits", &l25IsoTrkNLostHits);
159 l25tree->Branch(
"myNtrkIso", &myNtrkIso,
"myNtrkIso/I");
184 iEvent.
getByLabel(_pfTauIsoSource,thePFTauDiscriminatorByIsolation);
187 iEvent.
getByLabel(_pfTauMuonDiscSource, thePFTauDiscriminatorAgainstMuon);
190 iEvent.
getByLabel(_pVtxSource, thePrimaryVertices);
191 const reco::Vertex& theHltPrimaryVertex = (*thePrimaryVertices->begin());
193 if(thePrimaryVertices->size() > 0) theVertexPosition =
math::XYZPoint(theHltPrimaryVertex.position().x(),
194 theHltPrimaryVertex.position().y(),
195 theHltPrimaryVertex.position().z());
198 if(thePFTaus.isValid()){
200 for(
unsigned int pfTauIt = 0; pfTauIt < thePFTaus->size(); ++pfTauIt){
201 const PFTauRef thisTauRef(thePFTaus,pfTauIt);
204 if(thePFTauDiscriminatorByIsolation.isValid()){
206 pfTauIsoDisc = disc[thisTauRef];
208 if(thePFTauDiscriminatorAgainstMuon.isValid()){
210 pfTauMuonDisc = disc[thisTauRef];
213 L2MatchedToPFtau =
false;
214 pfTauHasLeadTrk =
false;
215 pfTauInBounds =
true;
217 pfTauPt = thePFTaus->at(pfTauIt).pt();
218 pfTauEt = thePFTaus->at(pfTauIt).et();
219 pfTauEta = thePFTaus->at(pfTauIt).eta();
220 pfTauPhi = thePFTaus->at(pfTauIt).eta();
222 const PFCandidateRef& thePFTauLeadTrack = thePFTaus->at(pfTauIt).leadPFChargedHadrCand();
224 pfTauHasLeadTrk =
true;
225 pfTauNProngs = thePFTaus->at(pfTauIt).signalPFChargedHadrCands().size();
226 pfTauLTPt = thePFTaus->at(pfTauIt).leadPFChargedHadrCand()->pt();
227 pfTauTrkIso = thePFTaus->at(pfTauIt).isolationPFChargedHadrCandsPtSum();
228 pfTauGammaIso = thePFTaus->at(pfTauIt).isolationPFGammaCandsEtSum();
233 pftauSignalTrkDeltaR = ROOT::Math::VectorUtil::DeltaR((*vIt)->trackRef()->momentum(), thePFTauLeadTrack->momentum());
234 if(pftauSignalTrkDeltaR > _signalCone) pfTauInBounds =
false;
238 pfTauNTrkIso = theIsoCands.
size();
239 float PFTauLeadIsoPt = 0.;
240 Track thePFTauLeadIsoTrk;
242 pftauIsoTrkDeltaR = ROOT::Math::VectorUtil::DeltaR((*vIt)->trackRef()->momentum(), thePFTauLeadTrack->momentum());
243 if(pftauIsoTrkDeltaR < _isolationCone) pfTauInBounds =
false;
244 pfTauIsoTrkPt = (*vIt)->trackRef()->
pt();
245 if((*vIt)->trackRef()->pt() > PFTauLeadIsoPt){
246 thePFTauLeadIsoTrk = *((*vIt)->trackRef());
247 PFTauLeadIsoPt = (*vIt)->trackRef()->
pt();
253 iEvent.
getByLabel(_l2TauInfoAssoc,l2TauInfoAssoc);
256 if(iEvent.
getByLabel(_l2TauInfoAssoc,l2TauInfoAssoc) && l2TauInfoAssoc->size()>0){
257 double matchDr = _l2l25MatchingCone;
260 if(l2Jet.
et() < 15.)
continue;
261 double delta = ROOT::Math::VectorUtil::DeltaR(thePFTaus->at(pfTauIt).p4(),l2Jet.
p4());
264 L2MatchedToPFtau =
true;
265 theMatchedL2Jet = l2Jet;
272 if(L2MatchedToPFtau){
273 l2JetEt = theMatchedL2Jet.
et();
274 l2JetEta = theMatchedL2Jet.
eta();
275 l2JetPhi = theMatchedL2Jet.
phi();
276 if(iEvent.
getByLabel(_l25JetSource, tauTagInfo) && tauTagInfo->size()>0){
277 L25MatchedToL2 =
false;
278 double minDeltaR = _l2l25MatchingCone;
281 for(IsolatedTauTagInfoCollection::const_iterator
i = tauTagInfo->begin();
i!=tauTagInfo->end();++
i){
282 double delta = ROOT::Math::VectorUtil::DeltaR(theMatchedL2Jet.
p4(),
i->jet()->p4());
283 if(delta < minDeltaR){
285 L25MatchedToL2 =
true;
286 theMatchedL25TauTagInfo = *
i;
291 pftauL25DeltaR = ROOT::Math::VectorUtil::DeltaR(thePFTaus->at(pfTauIt).p4(), theMatchedL25TauTagInfo.
jet()->
p4());
292 if(pftauL25DeltaR < _l2l25MatchingCone)l25MatchedToPFTau =
true;
296 l25JetEt = theMatchedL25TauTagInfo.
jet()->
et();
297 l25JetEta = theMatchedL25TauTagInfo.
jet()->
eta();
298 l25JetPhi = theMatchedL25TauTagInfo.
jet()->
phi();
299 numPixTrkInJet = theTauTagTracks.
size();
303 l25TrkPt->push_back((*trkIt)->pt());
304 l25TrkEta->push_back((*trkIt)->eta());
305 l25TrkPhi->push_back((*trkIt)->phi());
306 l25TrkDz->push_back((*trkIt)->dz(theVertexPosition));
307 l25TrkDxy->push_back((*trkIt)->dxy(theVertexPosition));
308 l25TrkChi2->push_back((*trkIt)->chi2());
309 l25TrkChi2NdF->push_back((*trkIt)->normalizedChi2());
310 l25TrkNRecHits->push_back((*trkIt)->recHitsSize());
311 l25TrkNValidPixelHits->push_back((*trkIt)->hitPattern().numberOfValidPixelHits());
316 numQPixTrkInSignalCone=0;
317 numQPixTrkInAnnulus=0;
324 leadTrkJetDeltaR = ROOT::Math::VectorUtil::DeltaR(theMatchedL25TauTagInfo.
jet()->
p4().Vect(), leadTk->momentum());
325 leadSignalTrackPt=leadTk->pt();
326 if(pfTauLTPt != 0)leadTrkPtRes = (leadTk->pt() - pfTauLTPt) / pfTauLTPt;
327 leadTrkDeltaR = ROOT::Math::VectorUtil::DeltaR(thePFTauLeadTrack->momentum(), leadTk->momentum());
330 bool l25IsoDisc = theMatchedL25TauTagInfo.
discriminator(0.2,0.15,0.5,5.,1.,0,0.2);
331 if(pfTauTrkIso <= 1. && l25MatchedToPFTau && !l25IsoDisc) printInfo(thePFTaus->at(pfTauIt), theMatchedL25TauTagInfo);
335 numQPixTrkInSignalCone = theSignalTracks.
size();
336 if(numQPixTrkInSignalCone > 0) numQPixTrkInAnnulus = theIsoTracks.
size() - theSignalTracks.size();
338 float l25LeadIsoPt = 0.;
339 Track theL25LeadIsoTrk;
343 if(ROOT::Math::VectorUtil::DeltaR(leadTk->momentum(), (*isoIt)->momentum()) <= _signalCone){
345 l25SignalTrkPt->push_back((*isoIt)->pt());
346 l25SignalTrkEta->push_back((*isoIt)->eta());
347 l25SignalTrkPhi->push_back((*isoIt)->phi());
348 l25SignalTrkDz->push_back((*isoIt)->dz(theVertexPosition));
349 l25SignalTrkDxy->push_back((*isoIt)->dxy(theVertexPosition));
350 l25SignalTrkChi2->push_back((*isoIt)->chi2());
351 l25SignalTrkChi2NdF->push_back((*isoIt)->normalizedChi2());
352 l25SignalTrkNRecHits->push_back((*isoIt)->recHitsSize());
353 l25SignalTrkNValidHits->push_back((*isoIt)->numberOfValidHits());
354 l25SignalTrkNValidPixelHits->push_back((*isoIt)->hitPattern().numberOfValidPixelHits());
355 l25SignalTrkNLostHits->push_back((*isoIt)->lost());
361 l25IsoTrkPt->push_back((*isoIt)->pt());
362 l25IsoTrkChi2NdF->push_back((*isoIt)->normalizedChi2());
363 l25IsoTrkChi2->push_back((*isoIt)->chi2());
364 l25IsoTrkNValidHits->push_back((*isoIt)->numberOfValidHits());
365 l25IsoTrkNRecHits->push_back((*isoIt)->recHitsSize());
366 l25IsoTrkNValidPixelHits->push_back((*isoIt)->hitPattern().numberOfValidPixelHits());
367 l25IsoTrkNLostHits->push_back((*isoIt)->lost());
368 l25IsoTrkDxy->push_back((*isoIt)->dxy(theVertexPosition));
369 l25IsoTrkDz->push_back((*isoIt)->dz(theVertexPosition));
370 l25IsoTrkEta->push_back((*isoIt)->eta());
371 l25IsoTrkPhi->push_back((*isoIt)->phi());
372 if((*isoIt)->pt() > l25LeadIsoPt){
373 theL25LeadIsoTrk = **isoIt;
374 l25LeadIsoPt = (*isoIt)->
pt();
379 if(thePFTauLeadIsoTrk.
pt() != 0) leadIsoTrkPtRes = (theL25LeadIsoTrk.
pt() - thePFTauLeadIsoTrk.
pt()) /thePFTauLeadIsoTrk.
pt();
380 leadIsoTrkDeltaR = ROOT::Math::VectorUtil::DeltaR(theL25LeadIsoTrk.
momentum(), thePFTauLeadIsoTrk.
momentum());
381 l25Disc_LeadTkDir = theMatchedL25TauTagInfo.
discriminator(leadTk->momentum(), _l25JetLeadTkMacthingCone, _signalCone, _isolationCone, _l25LeadTkPtMin, _minTrackPt, _nTrkIso, _l25Dz);
382 l25Disc_JetDir = theMatchedL25TauTagInfo.
discriminator(theMatchedL25TauTagInfo.
jet()->
momentum(), _l25JetLeadTkMacthingCone, _signalCone, _isolationCone, _l25LeadTkPtMin, _minTrackPt, _nTrkIso, _l25Dz);
390 else std::cout <<
"Invalid PFTau Collection\n";
404 if(thePFTauColl.size()>0)
405 for(reco::PFTauCollection::const_iterator it = thePFTauColl.begin(); it != thePFTauColl.end(); ++it){
406 double delta = ROOT::Math::VectorUtil::DeltaR(jet.
p4(),(*it).p4());
409 theMatchedPFTau = *it;
412 return theMatchedPFTau;
416 double matchDr = 0.5;
420 if(l2Jet.
et() < 15.)
continue;
421 double delta = ROOT::Math::VectorUtil::DeltaR(thePFTau.
p4(),l2Jet.
p4());
424 theMatchedJet = l2Jet;
427 return theMatchedJet;
435 std::cout <<
" Isolated PFTau Matched to Non-Isolated L25 Object( PFTau:L25)"
436 <<
"\n Et\t" << thePFTau.
et() <<
"\t" << theTauTagInfo.
jet()->
et()
437 <<
"\n Eta\t" << thePFTau.
eta() <<
"\t" << theTauTagInfo.
jet()->
eta()
438 <<
"\n Phi\t" << thePFTau.
phi() <<
"\t" << theTauTagInfo.
jet()->
phi()
445 unsigned int nIsoTrk = 0;
446 std::cout <<
" Tracks in L2.5 Iso: (Pt:Eta:Phi:DR:Chi2:Chi2/NdF:PxlHits:dxy:dz)\n";
448 double isoTrackLeadTrkDeltaR =
deltaR(theLeadTrack->eta(), theLeadTrack->phi(), (*isoIt)->eta(), (*isoIt)->phi());
449 if(isoTrackLeadTrkDeltaR > _signalCone){
452 <<
"\t" << (*isoIt)->pt()
453 <<
"\t" << (*isoIt)->eta()
454 <<
"\t" << (*isoIt)->phi()
455 <<
"\t" << isoTrackLeadTrkDeltaR
456 <<
"\t" << (*isoIt)->chi2()
457 <<
"\t" << (*isoIt)->normalizedChi2()
458 <<
"\t" << (*isoIt)->hitPattern().numberOfValidPixelHits()
459 <<
"\t" << (*isoIt)->dxy(theVertexPosition)
460 <<
"\t" << (*isoIt)->dz(theVertexPosition)
461 <<
"\t" << theVertexPosition
466 std::cout <<
"Tracks in PFTau Iso: (Pt:Eta:Phi)\n";
470 cout << nIsoTrk <<
"\t"
471 << (*isoIt)->pt() <<
"\t"
472 << (*isoIt)->eta() <<
"\t"
473 << (*isoIt)->phi() <<
"\n";
484 l25TrkChi2NdF->clear();
485 l25TrkNRecHits->clear();
486 l25TrkNValidPixelHits->clear();
488 l25SignalTrkPt->clear();
489 l25SignalTrkEta->clear();
490 l25SignalTrkPhi->clear();
491 l25SignalTrkDz->clear();
492 l25SignalTrkDxy->clear();
493 l25SignalTrkChi2NdF->clear();
494 l25SignalTrkChi2->clear();
495 l25SignalTrkNRecHits->clear();
496 l25SignalTrkNValidHits->clear();
497 l25SignalTrkNValidPixelHits->clear();
498 l25SignalTrkNLostHits->clear();
500 l25IsoTrkPt->clear();
501 l25IsoTrkEta->clear();
502 l25IsoTrkPhi->clear();
503 l25IsoTrkDz->clear();
504 l25IsoTrkDxy->clear();
505 l25IsoTrkChi2->clear();
506 l25IsoTrkChi2NdF->clear();
507 l25IsoTrkNRecHits->clear();
508 l25IsoTrkNValidHits->clear();
509 l25IsoTrkNValidPixelHits->clear();
510 l25IsoTrkNLostHits->clear();
521 l25TrkNRecHits=
NULL;
522 l25TrkNValidPixelHits=
NULL;
524 l25SignalTrkPt=
NULL;
525 l25SignalTrkEta=
NULL;
526 l25SignalTrkPhi=
NULL;
527 l25SignalTrkDz=
NULL;
528 l25SignalTrkDxy=
NULL;
529 l25SignalTrkChi2=
NULL;
530 l25SignalTrkChi2NdF=
NULL;
531 l25SignalTrkNRecHits=
NULL;
532 l25SignalTrkNValidHits=
NULL;
533 l25SignalTrkNValidPixelHits=
NULL;
534 l25SignalTrkNLostHits=
NULL;
537 l25IsoTrkChi2NdF=
NULL;
539 l25IsoTrkNValidHits=
NULL;
540 l25IsoTrkNRecHits=
NULL;
541 l25IsoTrkNValidPixelHits=
NULL;
542 l25IsoTrkNLostHits=
NULL;
T getParameter(std::string const &) const
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Jets made from CaloTowers.
const Vector & momentum() const
track momentum vector
virtual double et() const
transverse energy
const_iterator end() const
last iterator over the map (read only)
Base class for all types of Jets.
virtual Vector momentum() const
spatial momentum vector
const_iterator end() const
Termination of iteration.
void printInfo(const reco::PFTau &thePFTau, const reco::IsolatedTauTagInfo &theTauTagInfo)
virtual double eta() const
momentum pseudorapidity
const_iterator begin() const
Initialize an iterator over the RefVector.
const TrackRefVector selectedTracks() const
bool isNonnull() const
Checks for non-null.
virtual void analyze(const edm::Event &, const edm::EventSetup &)
float discriminator() const
double pt() const
track transverse momentum
reco::PFTau match(const reco::Jet &, const reco::PFTauCollection &)
L25TauAnalyzer(const edm::ParameterSet &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
virtual edm::RefToBase< Jet > jet(void) const
returns a polymorphic reference to the tagged jet
double deltaR(double eta1, double eta2, double phi1, double phi2)
const PFCandidateRef & leadPFChargedHadrCand() const
XYZPointD XYZPoint
point in space with cartesian internal representation
const TrackRef leadingSignalTrack() const
value_type const at(size_type idx) const
Retrieve an element of the RefVector.
T * make() const
make new ROOT object
size_type size() const
Size of the RefVector.
const TrackRefVector tracksInCone(const math::XYZVector myVector, const float size, const float pt_min) const
const_iterator begin() const
first iterator over the map (read only)
const TrackRefVector allTracks() const
virtual double phi() const
momentum azimuthal angle
virtual const LorentzVector & p4() const
four-momentum Lorentz vector
reco::CaloJet matchedToPFTau(const reco::PFTau &, const reco::L2TauInfoAssociation &)
const PFCandidateRefVector & isolationPFChargedHadrCands() const
Charged candidates in isolation region.