CMS 3D CMS Logo

PFRecoTauChargedHadronFromGenericTrackPlugin.cc
Go to the documentation of this file.
1 /*
2  * PFRecoTauChargedHadronFromGenericTrackPlugin
3  *
4  * Build PFRecoTauChargedHadron objects
5  * using tracks as input, from either collection of RECO/AOD reco::Tracks
6  * (PFRecoTauChargedHadronFromTrackPlugin) or from a collection of MINIAOD
7  * pat::PackedCandidates (PFRecoTauChargedHadronFromLostTrackPlugin), typically
8  * using the 'lostTracks' collection
9  *
10  * Author: Christian Veelken, LLR
11  *
12  * inclusion of lost tracks based on original implementation
13  * by Michal Bluj, NCBJ, Poland
14  */
15 
17 
19 
23 
36 
39 
44 
45 #include <TMath.h>
46 
47 #include <memory>
48 #include <cmath>
49 #include <algorithm>
50 #include <atomic>
51 
52 namespace reco {
53  namespace tau {
54 
55  template <class TrackClass>
56  class PFRecoTauChargedHadronFromGenericTrackPlugin : public PFRecoTauChargedHadronBuilderPlugin {
57  public:
60  // Return type is unique_ptr<ChargedHadronVector>
61  return_type operator()(const reco::Jet&) const override;
62  // Hook to update PV information
63  void beginEvent() override;
64 
65  private:
66  bool filterTrack(const edm::Handle<std::vector<TrackClass> >&, size_t iTrack) const;
67  void setChargedHadronTrack(PFRecoTauChargedHadron& chargedHadron, const edm::Ptr<TrackClass>& track) const;
68  double getTrackPtError(const TrackClass& track) const;
70 
72 
74 
77  double dRcone_;
79 
82 
84 
85  static std::atomic<unsigned int> numWarnings_;
86  static constexpr unsigned int maxWarnings_ = 3;
87 
89  };
90 
91  template <class TrackClass>
93 
94  template <class TrackClass>
98  vertexAssociator_(pset.getParameter<edm::ParameterSet>("qualityCuts"), std::move(iC)),
99  qcuts_(nullptr) {
100  edm::ParameterSet qcuts_pset = pset.getParameterSet("qualityCuts").getParameterSet("signalQualityCuts");
101  qcuts_ = new RecoTauQualityCuts(qcuts_pset);
102 
103  srcTracks_ = pset.getParameter<edm::InputTag>("srcTracks");
104  Tracks_token = iC.consumes<std::vector<TrackClass> >(srcTracks_);
105  dRcone_ = pset.getParameter<double>("dRcone");
106  dRconeLimitedToJetArea_ = pset.getParameter<bool>("dRconeLimitedToJetArea");
107 
108  dRmergeNeutralHadron_ = pset.getParameter<double>("dRmergeNeutralHadron");
109  dRmergePhoton_ = pset.getParameter<double>("dRmergePhoton");
110 
111  verbosity_ = pset.getParameter<int>("verbosity");
112  }
113 
114  template <class TrackClass>
116  delete qcuts_;
117  }
118 
119  // Update the primary vertex
120  template <class TrackClass>
122  vertexAssociator_.setEvent(*this->evt());
123 
125  const edm::EventSetup* evtSetup(this->evtSetup());
127  magneticFieldStrength_ = magneticField->inTesla(GlobalPoint(0., 0., 0.));
128  }
129 
130  template <>
132  const edm::Handle<std::vector<reco::Track> >& tracks, size_t iTrack) const {
133  // ignore tracks which fail quality cuts
134  reco::TrackRef trackRef(tracks, iTrack);
135  return qcuts_->filterTrack(trackRef);
136  }
137 
138  template <>
140  const edm::Handle<std::vector<pat::PackedCandidate> >& tracks, size_t iTrack) const {
141  // ignore tracks which fail quality cuts
142  const pat::PackedCandidate& cand = (*tracks)[iTrack];
143  if (cand.charge() == 0)
144  return false;
145 
146  return qcuts_->filterChargedCand(cand);
147  }
148 
149  template <>
152  chargedHadron.track_ = track;
153  }
154 
155  template <>
158  chargedHadron.lostTrackCandidate_ = track;
159  }
160 
161  template <>
163  return track.ptError();
164  }
165 
166  template <>
168  const pat::PackedCandidate& cand) const {
169  double trackPtError =
170  0.06; // MB: Approximate avarage track PtError by 2.5% (barrel), 4% (transition), 6% (endcaps) lostTracks w/o detailed track information available (after TRK-11-001)
171  const reco::Track* track(cand.bestTrack());
172  if (track != nullptr) {
173  trackPtError = track->ptError();
174  } else {
175  if (std::abs(cand.eta()) < 0.9)
176  trackPtError = 0.025;
177  else if (std::abs(cand.eta()) < 1.4)
178  trackPtError = 0.04;
179  }
180  return trackPtError;
181  }
182 
183  template <>
185  const reco::Track& track) const {
186  return XYZTLorentzVector(track.referencePoint().x(), track.referencePoint().y(), track.referencePoint().z(), 0.);
187  }
188 
189  template <>
191  const pat::PackedCandidate& track) const {
192  return XYZTLorentzVector(track.vertex().x(), track.vertex().y(), track.vertex().z(), 0.);
193  }
194 
195  namespace {
196  struct Candidate_withDistance {
198  double distance_;
199  };
200 
201  bool isSmallerDistance(const Candidate_withDistance& cand1, const Candidate_withDistance& cand2) {
202  return (cand1.distance_ < cand2.distance_);
203  }
204  } // namespace
205 
206  template <class TrackClass>
209  if (verbosity_) {
210  edm::LogPrint("TauChHFromTrack") << "<PFRecoTauChargedHadronFromGenericTrackPlugin::operator()>:";
211  edm::LogPrint("TauChHFromTrack") << " pluginName = " << name();
212  }
213 
215 
216  const edm::Event& evt = (*this->evt());
217 
219  evt.getByToken(Tracks_token, tracks);
220 
221  qcuts_->setPV(vertexAssociator_.associatedVertex(jet));
222  float jEta = jet.eta();
223  float jPhi = jet.phi();
224  size_t numTracks = tracks->size();
225  for (size_t iTrack = 0; iTrack < numTracks; ++iTrack) {
226  const TrackClass& track = (*tracks)[iTrack];
227 
228  // consider tracks in vicinity of tau-jet candidate only
229  double dR = deltaR(track.eta(), track.phi(), jEta, jPhi);
230  double dRmatch = dRcone_;
231  if (dRconeLimitedToJetArea_) {
232  double jetArea = jet.jetArea();
233  if (jetArea > 0.) {
234  dRmatch = std::min(dRmatch, sqrt(jetArea / M_PI));
235  } else {
236  if (numWarnings_ < maxWarnings_) {
237  edm::LogInfo("PFRecoTauChargedHadronFromGenericTrackPlugin::operator()")
238  << "Jet: Pt = " << jet.pt() << ", eta = " << jet.eta() << ", phi = " << jet.phi()
239  << " has area = " << jetArea << " !!" << std::endl;
240  ++numWarnings_;
241  }
242  dRmatch = 0.1;
243  }
244  }
245  if (dR > dRmatch)
246  continue;
247 
248  if (!this->filterTrack(tracks, iTrack))
249  continue;
250 
251  reco::Candidate::Charge trackCharge_int = 0;
252  if (track.charge() > 0.)
253  trackCharge_int = +1;
254  else if (track.charge() < 0.)
255  trackCharge_int = -1;
256 
257  const double chargedPionMass = 0.13957; // GeV
258  double chargedPionP = track.p();
259  double chargedPionEn = TMath::Sqrt(chargedPionP * chargedPionP + chargedPionMass * chargedPionMass);
260  reco::Candidate::LorentzVector chargedPionP4(track.px(), track.py(), track.pz(), chargedPionEn);
261 
262  reco::Vertex::Point vtx(0., 0., 0.);
263  if (vertexAssociator_.associatedVertex(jet).isNonnull())
264  vtx = vertexAssociator_.associatedVertex(jet)->position();
265 
266  std::unique_ptr<PFRecoTauChargedHadron> chargedHadron(
267  new PFRecoTauChargedHadron(trackCharge_int, chargedPionP4, vtx, 0, true, PFRecoTauChargedHadron::kTrack));
268 
269  setChargedHadronTrack(*chargedHadron, edm::Ptr<TrackClass>(tracks, iTrack));
270 
271  // CV: Take code for propagating track to ECAL entrance
272  // from RecoParticleFlow/PFTracking/src/PFTrackTransformer.cc
273  // to make sure propagation is done in the same way as for charged PFCandidates.
274  //
275  // The following replacements need to be made
276  // outerMomentum -> momentum
277  // outerPosition -> referencePoint
278  // in order to run on AOD input
279  // (outerMomentum and outerPosition require access to reco::TrackExtra objects, which are available in RECO only)
280  //
281  XYZTLorentzVector chargedPionPos(getTrackPos(track));
282  RawParticle p(chargedPionP4, chargedPionPos);
283  p.setCharge(track.charge());
284  BaseParticlePropagator trackPropagator(p, 0., 0., magneticFieldStrength_.z());
285  trackPropagator.propagateToEcalEntrance(false);
286  if (trackPropagator.getSuccess() != 0) {
287  chargedHadron->positionAtECALEntrance_ = trackPropagator.particle().vertex();
288  } else {
289  if (chargedPionP4.pt() > 2. and std::abs(chargedPionP4.eta()) < 3.) {
290  edm::LogWarning("PFRecoTauChargedHadronFromGenericTrackPlugin::operator()")
291  << "Failed to propagate track: Pt = " << track.pt() << ", eta = " << track.eta()
292  << ", phi = " << track.phi() << " to ECAL entrance !!" << std::endl;
293  }
294  chargedHadron->positionAtECALEntrance_ = math::XYZPointF(0., 0., 0.);
295  }
296 
297  std::vector<Candidate_withDistance> neutralJetConstituents_withDistance;
298  for (const auto& jetConstituent : jet.daughterPtrVector()) {
299  int pdgId = jetConstituent->pdgId();
300  if (!(pdgId == 130 || pdgId == 22))
301  continue;
302  double dR = deltaR(atECALEntrance(&*jetConstituent, magneticFieldStrength_.z()),
303  chargedHadron->positionAtECALEntrance_);
304  double dRmerge = -1.;
305  if (pdgId == 130)
306  dRmerge = dRmergeNeutralHadron_;
307  else if (pdgId == 22)
308  dRmerge = dRmergePhoton_;
309  if (dR < dRmerge) {
310  Candidate_withDistance jetConstituent_withDistance;
311  jetConstituent_withDistance.pfCandidate_ = jetConstituent;
312  jetConstituent_withDistance.distance_ = dR;
313  neutralJetConstituents_withDistance.push_back(jetConstituent_withDistance);
314  chargedHadron->addDaughter(jetConstituent);
315  }
316  }
317  std::sort(
318  neutralJetConstituents_withDistance.begin(), neutralJetConstituents_withDistance.end(), isSmallerDistance);
319 
320  const double caloResolutionCoeff =
321  1.0; // CV: approximate ECAL + HCAL calorimeter resolution for hadrons by 100%*sqrt(E)
322  double resolutionTrackP = track.p() * (getTrackPtError(track) / track.pt());
323  double neutralEnSum = 0.;
324  for (std::vector<Candidate_withDistance>::const_iterator nextNeutral =
325  neutralJetConstituents_withDistance.begin();
326  nextNeutral != neutralJetConstituents_withDistance.end();
327  ++nextNeutral) {
328  double nextNeutralEn = nextNeutral->pfCandidate_->energy();
329  double resolutionCaloEn = caloResolutionCoeff * sqrt(neutralEnSum + nextNeutralEn);
330  double resolution = sqrt(resolutionTrackP * resolutionTrackP + resolutionCaloEn * resolutionCaloEn);
331  if ((neutralEnSum + nextNeutralEn) < (track.p() + 2. * resolution)) {
332  chargedHadron->neutralPFCandidates_.push_back(nextNeutral->pfCandidate_);
333  neutralEnSum += nextNeutralEn;
334  } else {
335  break;
336  }
337  }
338 
340 
341  if (verbosity_) {
342  edm::LogPrint("TauChHFromTrack") << *chargedHadron;
343  }
344 
345  output.push_back(std::move(chargedHadron));
346  }
347 
348  return output.release();
349  }
350 
353 
354  } // namespace tau
355 } // namespace reco
356 
358 
361  "PFRecoTauChargedHadronFromTrackPlugin");
364  "PFRecoTauChargedHadronFromLostTrackPlugin");
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin
Definition: PFRecoTauChargedHadron.h:13
reco::tau::PFRecoTauChargedHadronFromTrackPlugin
PFRecoTauChargedHadronFromGenericTrackPlugin< reco::Track > PFRecoTauChargedHadronFromTrackPlugin
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:351
reco::tau::PFRecoTauChargedHadronBuilderPlugin
Definition: PFRecoTauChargedHadronPlugins.h:35
RawParticle
Definition: RawParticle.h:37
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::filterTrack
bool filterTrack(const edm::Handle< std::vector< TrackClass > > &, size_t iTrack) const
reco::Jet
Base class for all types of Jets.
Definition: Jet.h:20
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
BaseParticlePropagator::propagateToEcalEntrance
bool propagateToEcalEntrance(bool first=true)
Definition: BaseParticlePropagator.cc:450
MessageLogger.h
PFRecoTauChargedHadronPlugins.h
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::PFRecoTauChargedHadronFromGenericTrackPlugin
PFRecoTauChargedHadronFromGenericTrackPlugin(const edm::ParameterSet &, edm::ConsumesCollector &&iC)
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:95
reco::tau::RecoTauQualityCuts
Definition: RecoTauQualityCuts.h:35
ESHandle.h
metsig::tau
Definition: SignAlgoResolutions.h:49
PFCandidate.h
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
muons2muons_cfi.chargedHadron
chargedHadron
Definition: muons2muons_cfi.py:26
min
T min(T a, T b)
Definition: MathUtil.h:58
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
AssociationMap.h
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::~PFRecoTauChargedHadronFromGenericTrackPlugin
~PFRecoTauChargedHadronFromGenericTrackPlugin() override
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:115
PFJet.h
edm::LogPrint
Log< level::Warning, true > LogPrint
Definition: MessageLogger.h:130
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::beginEvent
void beginEvent() override
Hook called at the beginning of the event.
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:121
reco::tau::atECALEntrance
math::XYZPointF atECALEntrance(const reco::Candidate *part, double bField)
Definition: RecoTauCommonUtilities.cc:109
reco::Candidate::Charge
int Charge
electric charge type
Definition: Candidate.h:34
BaseParticlePropagator.h
XYZTLorentzVector
math::XYZTLorentzVector XYZTLorentzVector
Definition: RawParticle.h:25
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
HLT_FULL_cff.magneticField
magneticField
Definition: HLT_FULL_cff.py:348
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::getTrackPtError
double getTrackPtError(const TrackClass &track) const
edm::Handle
Definition: AssociativeIterator.h:50
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::getTrackPos
XYZTLorentzVector getTrackPos(const TrackClass &track) const
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
RecoTauVertexAssociator.h
BaseParticlePropagator
Definition: BaseParticlePropagator.h:82
reco::PFRecoTauChargedHadron
Definition: PFRecoTauChargedHadron.h:23
edm::Ref< TrackCollection >
reco::tau::PFRecoTauChargedHadronFromLostTrackPlugin
PFRecoTauChargedHadronFromGenericTrackPlugin< pat::PackedCandidate > PFRecoTauChargedHadronFromLostTrackPlugin
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:352
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::setChargedHadronTrack
void setChargedHadronTrack(PFRecoTauChargedHadron &chargedHadron, const edm::Ptr< TrackClass > &track) const
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
MakerMacros.h
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::dRcone_
double dRcone_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:77
reco::tau::setChargedHadronP4
void setChargedHadronP4(reco::PFRecoTauChargedHadron &chargedHadron, double scaleFactor_neutralPFCands=1.0)
Definition: pfRecoTauChargedHadronAuxFunctions.cc:31
reco::tau::RecoTauVertexAssociator
Definition: RecoTauVertexAssociator.h:50
Track.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
TrackFwd.h
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::numWarnings_
static std::atomic< unsigned int > numWarnings_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:85
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
edm::ESHandle< MagneticField >
L1TObjectsTimingClient_cff.resolution
resolution
Definition: L1TObjectsTimingClient_cff.py:52
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:535
RecoTauCommonUtilities.h
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::operator()
return_type operator()(const reco::Jet &) const override
Build a collection of chargedHadrons from objects in the input jet.
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:208
pfCandidate_
reco::CandidatePtr pfCandidate_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:197
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
reco::tau::PFRecoTauChargedHadronBuilderPlugin::ChargedHadronVector
boost::ptr_vector< PFRecoTauChargedHadron > ChargedHadronVector
Definition: PFRecoTauChargedHadronPlugins.h:38
reco::tau::PFRecoTauChargedHadronBuilderPlugin::return_type
std::unique_ptr< ChargedHadronVector > return_type
Definition: PFRecoTauChargedHadronPlugins.h:41
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::Tracks_token
edm::EDGetTokenT< std::vector< TrackClass > > Tracks_token
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:76
Vertex.h
RecoTauQualityCuts.h
distance_
double distance_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:198
TrackClass
TrackClass
Definition: L1MuBMTrackAssParam.h:21
edm::ParameterSet
Definition: ParameterSet.h:47
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:159
ParameterSet
Definition: Functions.h:16
deltaR.h
pat::PackedCandidate
Definition: PackedCandidate.h:22
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
edmplugin::PluginFactory
Definition: PluginFactory.h:34
PackedCandidate.h
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
cand
Definition: decayParser.h:32
Ptr.h
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
EgammaValidation_cff.pdgId
pdgId
Definition: EgammaValidation_cff.py:118
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::srcTracks_
edm::InputTag srcTracks_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:75
reco::get
T get(const Candidate &c)
Definition: component.h:60
edm::Ptr
Definition: AssociationVector.h:31
VertexFwd.h
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::verbosity_
int verbosity_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:88
reco::Vertex::Point
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
extraflags_cff.vtx
vtx
Definition: extraflags_cff.py:18
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::vertexAssociator_
RecoTauVertexAssociator vertexAssociator_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:71
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::dRmergeNeutralHadron_
double dRmergeNeutralHadron_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:80
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
RawParticle.h
metsig::jet
Definition: SignAlgoResolutions.h:47
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
pfRecoTauChargedHadronAuxFunctions.h
PFRecoTauChargedHadron.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
math::XYZPointF
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float > > XYZPointF
point in space with cartesian internal representation
Definition: Point3D.h:10
edm::Event
Definition: Event.h:73
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::maxWarnings_
static constexpr unsigned int maxWarnings_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:86
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::magneticFieldStrength_
math::XYZVector magneticFieldStrength_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:83
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::qcuts_
RecoTauQualityCuts * qcuts_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:73
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
PFCandidateFwd.h
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::dRmergePhoton_
double dRmergePhoton_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:81
reco::tau::PFRecoTauChargedHadronFromGenericTrackPlugin::dRconeLimitedToJetArea_
bool dRconeLimitedToJetArea_
Definition: PFRecoTauChargedHadronFromGenericTrackPlugin.cc:78
reco::PFRecoTauChargedHadron::kTrack
Definition: PFRecoTauChargedHadron.h:31