21 #include "Math/GenVector/VectorUtil.h"
33 _l25JetSource = consumes<IsolatedTauTagInfoCollection>(iConfig.
getParameter<
InputTag>(
"L25JetSource"));
36 _pfTauIsoSource = consumes<PFTauDiscriminator>(iConfig.
getParameter<
InputTag>(
"PFTauIsoSource"));
37 _pfTauMuonDiscSource = consumes<PFTauDiscriminator>(iConfig.
getParameter<
InputTag>(
"PFTauMuonDiscSource"));
39 _l2l25MatchingCone = iConfig.
getParameter<
double>(
"L2L25MatchingCone");
41 _l25JetLeadTkMacthingCone = iConfig.
getParameter<
double>(
"L25JetLeadTkMatchingCone");
42 _minTrackPt = iConfig.
getParameter<
double>(
"MinTrackPt");
43 _signalCone = iConfig.
getParameter<
double>(
"SignalCone");
44 _isolationCone = iConfig.
getParameter<
double>(
"IsolationCone");
47 _l25LeadTkPtMin = iConfig.
getParameter<
double>(
"L25LeadTkMinPt");
54 leadSignalTrackPt = 0.;
55 leadTrkJetDeltaR = 0.;
58 numQPixTrkInSignalCone = 0;
59 numQPixTrkInAnnulus = 10;
73 l25MatchedToPFTau = 0;
79 l25tree = fs->
make<TTree>(
"l25tree",
"Level 2.5 Tau Tree");
81 l25tree->Branch(
"pfTauHasLeadTrk", &pfTauHasLeadTrk,
"pfTauHasLeadTrk/B");
82 l25tree->Branch(
"pfTauInBounds", &pfTauInBounds,
"pfTauInBounds/B");
83 l25tree->Branch(
"pfTauPt", &pfTauPt,
"pfTauPt/F");
84 l25tree->Branch(
"pfTauEt", &pfTauEt,
"pfTauEt/F");
85 l25tree->Branch(
"pfTauEta", &pfTauEta,
"pfTauEta/F");
86 l25tree->Branch(
"pfTauphi", &pfTauPhi,
"pfTauPhi/F");
87 l25tree->Branch(
"pfTauLTPt", &pfTauLTPt,
"pfTauLTPt/F");
88 l25tree->Branch(
"pfTauIsoDisc", &pfTauIsoDisc,
"pfTauIsoDisc/F");
89 l25tree->Branch(
"pfTauMuonDisc", &pfTauMuonDisc,
"pfTauMuonDisc/F");
90 l25tree->Branch(
"pfTauNProngs", &pfTauNProngs,
"pfTauNProngs/I");
91 l25tree->Branch(
"pfTauTrkIso", &pfTauTrkIso,
"pfTauTrkIso/F");
92 l25tree->Branch(
"pfTauNTrkIso", &pfTauNTrkIso,
"pfTauNTrkIso/I");
93 l25tree->Branch(
"pfTauIsoTrkPt", &pfTauIsoTrkPt,
"pfTauIsoTrkPt/F");
94 l25tree->Branch(
"pfTauGammaIso", &pfTauGammaIso,
"pfTauGammaIso/F");
96 l25tree->Branch(
"pftauL25DeltaR", &pftauL25DeltaR,
"pftauL25DeltaR/F");
97 l25tree->Branch(
"pftauSignalTrkDeltaR", &pftauSignalTrkDeltaR,
"pftauSignalTrkDeltaR/F");
98 l25tree->Branch(
"pftauIsoTrkDeltaR", &pftauIsoTrkDeltaR,
"pftauIsoTrkDeltaR/F");
99 l25tree->Branch(
"leadTrkPtRes", &leadTrkPtRes,
"leadTrkPtRes/F");
100 l25tree->Branch(
"leadTrkDeltaR", &leadTrkDeltaR,
"leadTrkDeltaR/F");
101 l25tree->Branch(
"leadIsoTrkPtRes", &leadIsoTrkPtRes,
"leadIsoTrkPtRes/F");
102 l25tree->Branch(
"leadIsoTrkDeltaR", &leadIsoTrkDeltaR,
"leadIsoTrkDeltaR/F");
103 l25tree->Branch(
"l25Disc_LeadTkDir", &l25Disc_LeadTkDir,
"l25Disc_LeadTkDir/B");
104 l25tree->Branch(
"l25Disc_JetDir", &l25Disc_JetDir,
"l25Disc_JetDir/B");
106 l25tree->Branch(
"l2JetEt", &l2JetEt,
"l2JetEt/F");
107 l25tree->Branch(
"l2JetEta", &l2JetEta,
"l2JetEta/F");
108 l25tree->Branch(
"l2JetPhi", &l2JetPhi,
"l2JetPhi/F");
110 l25tree->Branch(
"l25MatchedToPFTau", &l25MatchedToPFTau,
"l25MatchedToPFTau/B");
111 l25tree->Branch(
"L2MatchedToPFtau", &L2MatchedToPFtau,
"L2MatchedToPFtau/B");
112 l25tree->Branch(
"L25MatchedToL2", &L25MatchedToL2,
"L25MatchedToL2/B");
114 l25tree->Branch(
"l25JetEt", &l25JetEt,
"l25JetEt/F");
115 l25tree->Branch(
"l25JetEta", &l25JetEta,
"l25JetEta/F");
116 l25tree->Branch(
"l25JetPhi", &l25JetPhi,
"l25JetPhi/F");
117 l25tree->Branch(
"hasLeadTrack", &hasLeadTrk,
"hasLeadTrack/B");
118 l25tree->Branch(
"leadTrackPt", &leadSignalTrackPt,
"leadTrackPt/F");
119 l25tree->Branch(
"nTracks", &numPixTrkInJet,
"nTracks/I");
120 l25tree->Branch(
"nQTracks", &numQPixTrkInJet,
"nQTracks/I");
121 l25tree->Branch(
"nQTracksInSignal", &numQPixTrkInSignalCone,
"nQTracksInSignal/I");
122 l25tree->Branch(
"nQTracksInAnnulus", &numQPixTrkInAnnulus,
"nQTracksInAnnulus/I");
124 l25tree->Branch(
"l25TrkPt", &l25TrkPt);
125 l25tree->Branch(
"l25TrkEta", &l25TrkEta);
126 l25tree->Branch(
"l25TrkPhi", &l25TrkPhi);
127 l25tree->Branch(
"l25TrkDz", &l25TrkDz);
128 l25tree->Branch(
"l25TrkDxy", &l25TrkDxy);
129 l25tree->Branch(
"l25TrkChi2", &l25TrkChi2);
130 l25tree->Branch(
"l25TrkChi2NdF", &l25TrkChi2NdF);
131 l25tree->Branch(
"l25TrkNRecHits", &l25TrkNRecHits);
132 l25tree->Branch(
"l25TrkNValidPixelHits", &l25TrkNValidPixelHits);
134 l25tree->Branch(
"l25SignalTrkPt", &l25SignalTrkPt);
135 l25tree->Branch(
"l25SignalTrkEta", &l25SignalTrkEta);
136 l25tree->Branch(
"l25SignalTrkPhi", &l25SignalTrkPhi);
137 l25tree->Branch(
"l25SignalTrkDz", &l25SignalTrkDz);
138 l25tree->Branch(
"l25SignalTrkDxy", &l25SignalTrkDxy);
139 l25tree->Branch(
"l25SignalTrkChi2", &l25SignalTrkChi2);
140 l25tree->Branch(
"l25SignalTrkChi2NdF", &l25SignalTrkChi2NdF);
141 l25tree->Branch(
"l25SignalTrkNRecHits", &l25SignalTrkNRecHits);
142 l25tree->Branch(
"l25SignalTrkNValidHits", &l25SignalTrkNValidHits);
143 l25tree->Branch(
"l25SignalTrkNValidPixelHits", &l25SignalTrkNValidPixelHits);
144 l25tree->Branch(
"l25SignalTrkNLostHits", &l25SignalTrkNLostHits);
146 l25tree->Branch(
"l25IsoTrkPt", &l25IsoTrkPt);
147 l25tree->Branch(
"l25IsoTrkEta", &l25IsoTrkEta);
148 l25tree->Branch(
"l25IsoTrkPhi", &l25IsoTrkPhi);
149 l25tree->Branch(
"l25IsoTrkDz", &l25IsoTrkDz);
150 l25tree->Branch(
"l25IsoTrkDxy", &l25IsoTrkDxy);
151 l25tree->Branch(
"l25IsoTrkChi2", &l25IsoTrkChi2);
152 l25tree->Branch(
"l25IsoTrkChi2NdF", &l25IsoTrkChi2NdF);
153 l25tree->Branch(
"l25IsoTrkNRecHits", &l25IsoTrkNRecHits);
154 l25tree->Branch(
"l25IsoTrkNValidHits", &l25IsoTrkNValidHits);
155 l25tree->Branch(
"l25IsoTrkNValidPixelHits", &l25IsoTrkNValidPixelHits);
156 l25tree->Branch(
"l25IsoTrkNLostHits", &l25IsoTrkNLostHits);
158 l25tree->Branch(
"myNtrkIso", &myNtrkIso,
"myNtrkIso/I");
183 iEvent.
getByToken(_pfTauIsoSource,thePFTauDiscriminatorByIsolation);
186 iEvent.
getByToken(_pfTauMuonDiscSource, thePFTauDiscriminatorAgainstMuon);
189 iEvent.
getByToken(_pVtxSource, thePrimaryVertices);
190 const reco::Vertex& theHltPrimaryVertex = (*thePrimaryVertices->begin());
192 if(thePrimaryVertices->size() > 0) theVertexPosition =
math::XYZPoint(theHltPrimaryVertex.position().x(),
193 theHltPrimaryVertex.position().y(),
194 theHltPrimaryVertex.position().z());
197 if(thePFTaus.isValid()){
199 for(
unsigned int pfTauIt = 0; pfTauIt < thePFTaus->size(); ++pfTauIt){
200 const PFTauRef thisTauRef(thePFTaus,pfTauIt);
203 if(thePFTauDiscriminatorByIsolation.isValid()){
205 pfTauIsoDisc = disc[thisTauRef];
207 if(thePFTauDiscriminatorAgainstMuon.isValid()){
209 pfTauMuonDisc = disc[thisTauRef];
212 L2MatchedToPFtau =
false;
213 pfTauHasLeadTrk =
false;
214 pfTauInBounds =
true;
216 pfTauPt = thePFTaus->at(pfTauIt).pt();
217 pfTauEt = thePFTaus->at(pfTauIt).et();
218 pfTauEta = thePFTaus->at(pfTauIt).eta();
219 pfTauPhi = thePFTaus->at(pfTauIt).eta();
223 pfTauHasLeadTrk =
true;
224 pfTauNProngs = thePFTaus->at(pfTauIt).signalPFChargedHadrCands().size();
225 pfTauLTPt = thePFTaus->at(pfTauIt).leadPFChargedHadrCand()->pt();
226 pfTauTrkIso = thePFTaus->at(pfTauIt).isolationPFChargedHadrCandsPtSum();
227 pfTauGammaIso = thePFTaus->at(pfTauIt).isolationPFGammaCandsEtSum();
230 const vector<reco::PFCandidatePtr>& theSignalCands = thePFTaus->at(pfTauIt).signalPFChargedHadrCands();
231 for(vector<reco::PFCandidatePtr>::const_iterator vIt = theSignalCands.begin(); vIt != theSignalCands.end(); ++vIt){
232 pftauSignalTrkDeltaR = ROOT::Math::VectorUtil::DeltaR((*vIt)->trackRef()->momentum(), thePFTauLeadTrack->momentum());
233 if(pftauSignalTrkDeltaR > _signalCone) pfTauInBounds =
false;
236 const vector<reco::PFCandidatePtr>& theIsoCands = thePFTaus->at(pfTauIt).isolationPFChargedHadrCands();
237 pfTauNTrkIso = theIsoCands.size();
238 float PFTauLeadIsoPt = 0.;
239 Track thePFTauLeadIsoTrk;
240 for(vector<reco::PFCandidatePtr>::const_iterator vIt = theIsoCands.begin(); vIt != theIsoCands.end(); ++vIt){
241 pftauIsoTrkDeltaR = ROOT::Math::VectorUtil::DeltaR((*vIt)->trackRef()->momentum(), thePFTauLeadTrack->momentum());
242 if(pftauIsoTrkDeltaR < _isolationCone) pfTauInBounds =
false;
243 pfTauIsoTrkPt = (*vIt)->trackRef()->
pt();
244 if((*vIt)->trackRef()->pt() > PFTauLeadIsoPt){
245 thePFTauLeadIsoTrk = *((*vIt)->trackRef());
246 PFTauLeadIsoPt = (*vIt)->trackRef()->
pt();
252 iEvent.
getByToken(_l2TauInfoAssoc,l2TauInfoAssoc);
255 if(iEvent.
getByToken(_l2TauInfoAssoc,l2TauInfoAssoc) && l2TauInfoAssoc->size()>0){
256 double matchDr = _l2l25MatchingCone;
257 for(L2TauInfoAssociation::const_iterator it = l2TauInfoAssoc->begin(); it != l2TauInfoAssoc->end(); ++it){
259 if(l2Jet.
et() < 15.)
continue;
260 double delta = ROOT::Math::VectorUtil::DeltaR(thePFTaus->at(pfTauIt).p4(),l2Jet.
p4());
263 L2MatchedToPFtau =
true;
264 theMatchedL2Jet = l2Jet;
271 if(L2MatchedToPFtau){
272 l2JetEt = theMatchedL2Jet.
et();
273 l2JetEta = theMatchedL2Jet.
eta();
274 l2JetPhi = theMatchedL2Jet.
phi();
275 if(iEvent.
getByToken(_l25JetSource, tauTagInfo) && tauTagInfo->size()>0){
276 L25MatchedToL2 =
false;
277 double minDeltaR = _l2l25MatchingCone;
280 for(IsolatedTauTagInfoCollection::const_iterator
i = tauTagInfo->begin();
i!=tauTagInfo->end();++
i){
281 double delta = ROOT::Math::VectorUtil::DeltaR(theMatchedL2Jet.
p4(),
i->jet()->p4());
282 if(delta < minDeltaR){
284 L25MatchedToL2 =
true;
285 theMatchedL25TauTagInfo = *
i;
290 pftauL25DeltaR = ROOT::Math::VectorUtil::DeltaR(thePFTaus->at(pfTauIt).p4(), theMatchedL25TauTagInfo.
jet()->
p4());
291 if(pftauL25DeltaR < _l2l25MatchingCone)l25MatchedToPFTau =
true;
295 l25JetEt = theMatchedL25TauTagInfo.
jet()->
et();
296 l25JetEta = theMatchedL25TauTagInfo.
jet()->
eta();
297 l25JetPhi = theMatchedL25TauTagInfo.
jet()->
phi();
298 numPixTrkInJet = theTauTagTracks.
size();
302 l25TrkPt->push_back((*trkIt)->pt());
303 l25TrkEta->push_back((*trkIt)->eta());
304 l25TrkPhi->push_back((*trkIt)->phi());
305 l25TrkDz->push_back((*trkIt)->dz(theVertexPosition));
306 l25TrkDxy->push_back((*trkIt)->dxy(theVertexPosition));
307 l25TrkChi2->push_back((*trkIt)->chi2());
308 l25TrkChi2NdF->push_back((*trkIt)->normalizedChi2());
309 l25TrkNRecHits->push_back((*trkIt)->recHitsSize());
310 l25TrkNValidPixelHits->push_back((*trkIt)->hitPattern().numberOfValidPixelHits());
315 numQPixTrkInSignalCone=0;
316 numQPixTrkInAnnulus=0;
323 leadTrkJetDeltaR = ROOT::Math::VectorUtil::DeltaR(theMatchedL25TauTagInfo.
jet()->
p4().Vect(), leadTk->momentum());
324 leadSignalTrackPt=leadTk->pt();
325 if(pfTauLTPt != 0)leadTrkPtRes = (leadTk->pt() - pfTauLTPt) / pfTauLTPt;
326 leadTrkDeltaR = ROOT::Math::VectorUtil::DeltaR(thePFTauLeadTrack->momentum(), leadTk->momentum());
329 bool l25IsoDisc = theMatchedL25TauTagInfo.
discriminator(0.2,0.15,0.5,5.,1.,0,0.2);
330 if(pfTauTrkIso <= 1. && l25MatchedToPFTau && !l25IsoDisc) printInfo(thePFTaus->at(pfTauIt), theMatchedL25TauTagInfo);
334 numQPixTrkInSignalCone = theSignalTracks.
size();
335 if(numQPixTrkInSignalCone > 0) numQPixTrkInAnnulus = theIsoTracks.
size() - theSignalTracks.size();
337 float l25LeadIsoPt = 0.;
338 Track theL25LeadIsoTrk;
342 if(ROOT::Math::VectorUtil::DeltaR(leadTk->momentum(), (*isoIt)->momentum()) <= _signalCone){
344 l25SignalTrkPt->push_back((*isoIt)->pt());
345 l25SignalTrkEta->push_back((*isoIt)->eta());
346 l25SignalTrkPhi->push_back((*isoIt)->phi());
347 l25SignalTrkDz->push_back((*isoIt)->dz(theVertexPosition));
348 l25SignalTrkDxy->push_back((*isoIt)->dxy(theVertexPosition));
349 l25SignalTrkChi2->push_back((*isoIt)->chi2());
350 l25SignalTrkChi2NdF->push_back((*isoIt)->normalizedChi2());
351 l25SignalTrkNRecHits->push_back((*isoIt)->recHitsSize());
352 l25SignalTrkNValidHits->push_back((*isoIt)->numberOfValidHits());
353 l25SignalTrkNValidPixelHits->push_back((*isoIt)->hitPattern().numberOfValidPixelHits());
354 l25SignalTrkNLostHits->push_back((*isoIt)->lost());
360 l25IsoTrkPt->push_back((*isoIt)->pt());
361 l25IsoTrkChi2NdF->push_back((*isoIt)->normalizedChi2());
362 l25IsoTrkChi2->push_back((*isoIt)->chi2());
363 l25IsoTrkNValidHits->push_back((*isoIt)->numberOfValidHits());
364 l25IsoTrkNRecHits->push_back((*isoIt)->recHitsSize());
365 l25IsoTrkNValidPixelHits->push_back((*isoIt)->hitPattern().numberOfValidPixelHits());
366 l25IsoTrkNLostHits->push_back((*isoIt)->lost());
367 l25IsoTrkDxy->push_back((*isoIt)->dxy(theVertexPosition));
368 l25IsoTrkDz->push_back((*isoIt)->dz(theVertexPosition));
369 l25IsoTrkEta->push_back((*isoIt)->eta());
370 l25IsoTrkPhi->push_back((*isoIt)->phi());
371 if((*isoIt)->pt() > l25LeadIsoPt){
372 theL25LeadIsoTrk = **isoIt;
373 l25LeadIsoPt = (*isoIt)->
pt();
378 if(thePFTauLeadIsoTrk.
pt() != 0) leadIsoTrkPtRes = (theL25LeadIsoTrk.
pt() - thePFTauLeadIsoTrk.
pt()) /thePFTauLeadIsoTrk.
pt();
379 leadIsoTrkDeltaR = ROOT::Math::VectorUtil::DeltaR(theL25LeadIsoTrk.
momentum(), thePFTauLeadIsoTrk.
momentum());
380 l25Disc_LeadTkDir = theMatchedL25TauTagInfo.
discriminator(leadTk->momentum(), _l25JetLeadTkMacthingCone, _signalCone, _isolationCone, _l25LeadTkPtMin, _minTrackPt, _nTrkIso, _l25Dz);
381 l25Disc_JetDir = theMatchedL25TauTagInfo.
discriminator(theMatchedL25TauTagInfo.
jet()->
momentum(), _l25JetLeadTkMacthingCone, _signalCone, _isolationCone, _l25LeadTkPtMin, _minTrackPt, _nTrkIso, _l25Dz);
389 else std::cout <<
"Invalid PFTau Collection\n";
403 if(thePFTauColl.size()>0)
404 for(reco::PFTauCollection::const_iterator it = thePFTauColl.begin(); it != thePFTauColl.end(); ++it){
405 double delta = ROOT::Math::VectorUtil::DeltaR(jet.
p4(),(*it).p4());
408 theMatchedPFTau = *it;
411 return theMatchedPFTau;
415 double matchDr = 0.5;
417 for(L2TauInfoAssociation::const_iterator it = theL2Info.
begin(); it != theL2Info.
end(); ++it){
419 if(l2Jet.
et() < 15.)
continue;
420 double delta = ROOT::Math::VectorUtil::DeltaR(thePFTau.
p4(),l2Jet.
p4());
423 theMatchedJet = l2Jet;
426 return theMatchedJet;
434 std::cout <<
" Isolated PFTau Matched to Non-Isolated L25 Object( PFTau:L25)"
435 <<
"\n Et\t" << thePFTau.
et() <<
"\t" << theTauTagInfo.
jet()->
et()
436 <<
"\n Eta\t" << thePFTau.
eta() <<
"\t" << theTauTagInfo.
jet()->
eta()
437 <<
"\n Phi\t" << thePFTau.
phi() <<
"\t" << theTauTagInfo.
jet()->
phi()
444 unsigned int nIsoTrk = 0;
445 std::cout <<
" Tracks in L2.5 Iso: (Pt:Eta:Phi:DR:Chi2:Chi2/NdF:PxlHits:dxy:dz)\n";
447 double isoTrackLeadTrkDeltaR =
deltaR(theLeadTrack->eta(), theLeadTrack->phi(), (*isoIt)->eta(), (*isoIt)->phi());
448 if(isoTrackLeadTrkDeltaR > _signalCone){
451 <<
"\t" << (*isoIt)->pt()
452 <<
"\t" << (*isoIt)->eta()
453 <<
"\t" << (*isoIt)->phi()
454 <<
"\t" << isoTrackLeadTrkDeltaR
455 <<
"\t" << (*isoIt)->chi2()
456 <<
"\t" << (*isoIt)->normalizedChi2()
457 <<
"\t" << (*isoIt)->hitPattern().numberOfValidPixelHits()
458 <<
"\t" << (*isoIt)->dxy(theVertexPosition)
459 <<
"\t" << (*isoIt)->dz(theVertexPosition)
460 <<
"\t" << theVertexPosition
465 std::cout <<
"Tracks in PFTau Iso: (Pt:Eta:Phi)\n";
469 cout << nIsoTrk <<
"\t"
470 << (*isoIt)->pt() <<
"\t"
471 << (*isoIt)->eta() <<
"\t"
472 << (*isoIt)->phi() <<
"\n";
483 l25TrkChi2NdF->clear();
484 l25TrkNRecHits->clear();
485 l25TrkNValidPixelHits->clear();
487 l25SignalTrkPt->clear();
488 l25SignalTrkEta->clear();
489 l25SignalTrkPhi->clear();
490 l25SignalTrkDz->clear();
491 l25SignalTrkDxy->clear();
492 l25SignalTrkChi2NdF->clear();
493 l25SignalTrkChi2->clear();
494 l25SignalTrkNRecHits->clear();
495 l25SignalTrkNValidHits->clear();
496 l25SignalTrkNValidPixelHits->clear();
497 l25SignalTrkNLostHits->clear();
499 l25IsoTrkPt->clear();
500 l25IsoTrkEta->clear();
501 l25IsoTrkPhi->clear();
502 l25IsoTrkDz->clear();
503 l25IsoTrkDxy->clear();
504 l25IsoTrkChi2->clear();
505 l25IsoTrkChi2NdF->clear();
506 l25IsoTrkNRecHits->clear();
507 l25IsoTrkNValidHits->clear();
508 l25IsoTrkNValidPixelHits->clear();
509 l25IsoTrkNLostHits->clear();
520 l25TrkNRecHits=
NULL;
521 l25TrkNValidPixelHits=
NULL;
523 l25SignalTrkPt=
NULL;
524 l25SignalTrkEta=
NULL;
525 l25SignalTrkPhi=
NULL;
526 l25SignalTrkDz=
NULL;
527 l25SignalTrkDxy=
NULL;
528 l25SignalTrkChi2=
NULL;
529 l25SignalTrkChi2NdF=
NULL;
530 l25SignalTrkNRecHits=
NULL;
531 l25SignalTrkNValidHits=
NULL;
532 l25SignalTrkNValidPixelHits=
NULL;
533 l25SignalTrkNLostHits=
NULL;
536 l25IsoTrkChi2NdF=
NULL;
538 l25IsoTrkNValidHits=
NULL;
539 l25IsoTrkNRecHits=
NULL;
540 l25IsoTrkNValidPixelHits=
NULL;
541 l25IsoTrkNLostHits=
NULL;
T getParameter(std::string const &) const
virtual double et() const GCC11_FINAL
transverse energy
std::vector< PFTau > PFTauCollection
collection of PFTau objects
Jets made from CaloTowers.
const Vector & momentum() const
track momentum vector
const PFCandidatePtr & leadPFChargedHadrCand() const
virtual const LorentzVector & p4() const GCC11_FINAL
four-momentum Lorentz vector
const_iterator end() const
last iterator over the map (read only)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Base class for all types of Jets.
T * make(const Args &...args) const
make new ROOT object
const_iterator end() const
Termination of iteration.
void printInfo(const reco::PFTau &thePFTau, const reco::IsolatedTauTagInfo &theTauTagInfo)
const_iterator begin() const
Initialize an iterator over the RefVector.
const TrackRefVector selectedTracks() const
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
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 &)
const TrackRefVector tracksInCone(const math::XYZVector &myVector, const float size, const float pt_min) const
const std::vector< reco::PFCandidatePtr > & isolationPFChargedHadrCands() const
Charged candidates in isolation region.
virtual edm::RefToBase< Jet > jet(void) const
returns a polymorphic reference to the tagged jet
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
double deltaR(double eta1, double eta2, double phi1, double phi2)
XYZPointD XYZPoint
point in space with cartesian internal representation
virtual Vector momentum() const GCC11_FINAL
spatial momentum vector
const TrackRef leadingSignalTrack() const
size_type size() const
Size of the RefVector.
const_iterator begin() const
first iterator over the map (read only)
const TrackRefVector allTracks() const
reco::CaloJet matchedToPFTau(const reco::PFTau &, const reco::L2TauInfoAssociation &)