CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Attributes
PFRecoTauDiscriminationByIsolation Class Reference
Inheritance diagram for PFRecoTauDiscriminationByIsolation:
TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType > edm::stream::EDProducer<>

Classes

struct  FootprintCorrection
 

Public Member Functions

void beginEvent (const edm::Event &evt, const edm::EventSetup &evtSetup) override
 
double discriminate (const PFTauRef &pfTau) const override
 
 PFRecoTauDiscriminationByIsolation (const edm::ParameterSet &pset)
 
double weightedSum (const std::vector< CandidatePtr > &inColl_, double eta, double phi) const
 
 ~PFRecoTauDiscriminationByIsolation () override
 
- Public Member Functions inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType >
virtual TauDiscriminatorDataType discriminate (const TauRef &tau) const =0
 
virtual void endEvent (edm::Event &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 
 TauDiscriminationProducerBase (const edm::ParameterSet &iConfig)
 
 TauDiscriminationProducerBase ()
 
 ~TauDiscriminationProducerBase () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType >
static void fillProducerDescriptions (edm::ParameterSetDescription &desc)
 
static std::string getTauTypeString ()
 helper method to retrieve tau type name, e.g. to build correct cfi getter More...
 

Private Attributes

bool applyDeltaBeta_
 
bool applyFootprintCorrection_
 
bool applyOccupancyCut_
 
bool applyPhotonPtSumOutsideSignalConeCut_
 
bool applyRelativeSumPtCut_
 
bool applyRhoCorrection_
 
bool applySumPtCut_
 
bool calculateWeights_
 
std::vector< reco::CandidatePtrchargedPFCandidatesInEvent_
 
double customIsoCone_
 
double deltaBetaCollectionCone_
 
double deltaBetaFactorThisEvent_
 
std::unique_ptr< TFormula > deltaBetaFormula_
 
bool enableHGCalWorkaround_
 
std::vector< std::unique_ptr< FootprintCorrection > > footprintCorrections_
 
bool includeGammas_
 
bool includeTracks_
 
double maxAbsPhotonSumPt_outsideSignalCone_
 
uint32_t maximumOccupancy_
 
double maximumRelativeSumPt_
 
double maximumSumPt_
 
double maxRelPhotonSumPt_outsideSignalCone_
 
double minPtForNoIso_
 
std::string moduleLabel_
 
double offsetRelativeSumPt_
 
edm::EDGetTokenT< edm::View< reco::Candidate > > pfCand_token
 
edm::InputTag pfCandSrc_
 
std::unique_ptr< tau::RecoTauQualityCutspileupQcutsGeneralQCuts_
 
std::unique_ptr< tau::RecoTauQualityCutspileupQcutsPUTrackSelection_
 
std::unique_ptr< tau::RecoTauQualityCutsqcuts_
 
edm::ParameterSet qualityCutsPSet_
 
edm::EDGetTokenT< double > rho_token
 
double rhoConeSize_
 
double rhoCorrectionThisEvent_
 
edm::InputTag rhoProducer_
 
double rhoThisEvent_
 
double rhoUEOffsetCorrection_
 
bool storeRawFootprintCorrection_
 
bool storeRawOccupancy_
 
bool storeRawPhotonSumPt_outsideSignalCone_
 
bool storeRawPUsumPt_
 
bool storeRawSumPt_
 
bool useAllPFCands_
 
int verbosity_
 
edm::EDGetTokenT< reco::VertexCollectionvertex_token
 
std::unique_ptr< tau::RecoTauVertexAssociatorvertexAssociator_
 
edm::InputTag vertexSrc_
 
double weightGammas_
 

Additional Inherited Members

- Public Types inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType >
typedef std::vector< TauType > TauCollection
 
typedef edm::Ref< TauCollectionTauRef
 
typedef edm::RefProd< TauCollectionTauRefProd
 
- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Protected Attributes inherited from TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType >
std::string moduleLabel_
 
double prediscriminantFailValue_
 
edm::EDGetTokenT< TauCollectionTau_token
 
size_t tauIndex_
 
edm::InputTag TauProducer_
 

Detailed Description

Definition at line 30 of file PFRecoTauDiscriminationByIsolation.cc.

Constructor & Destructor Documentation

◆ PFRecoTauDiscriminationByIsolation()

PFRecoTauDiscriminationByIsolation::PFRecoTauDiscriminationByIsolation ( const edm::ParameterSet pset)
inlineexplicit

Definition at line 32 of file PFRecoTauDiscriminationByIsolation.cc.

References HLT_2022v12_cff::deltaBetaPUTrackPtCutOverride, HLT_2022v12_cff::deltaBetaPUTrackPtCutOverride_val, Exception, reco::tau::factorizePUQCuts(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), eostools::move(), hltrates_dqm_sourceclient-live_cfg::offset, muonDTDigis_cfi::pset, corrVsCorr::selection, and AlCaHLTBitMon_QueryRunRegistry::string.

34  moduleLabel_(pset.getParameter<std::string>("@module_label")),
35  qualityCutsPSet_(pset.getParameter<edm::ParameterSet>("qualityCuts")) {
36  includeTracks_ = pset.getParameter<bool>("ApplyDiscriminationByTrackerIsolation");
37  includeGammas_ = pset.getParameter<bool>("ApplyDiscriminationByECALIsolation");
38 
39  calculateWeights_ = pset.getParameter<bool>("ApplyDiscriminationByWeightedECALIsolation");
40 
41  enableHGCalWorkaround_ = pset.getParameter<bool>("enableHGCalWorkaround");
42 
43  // RIC: multiply neutral isolation by a flat factor.
44  // Useful, for instance, to combine charged and neutral isolations
45  // with different relative weights
46  weightGammas_ = pset.getParameter<double>("WeightECALIsolation");
47 
48  // RIC: allow to relax the isolation completely beyond a given tau pt
49  minPtForNoIso_ = pset.getParameter<double>("minTauPtForNoIso");
50 
51  applyOccupancyCut_ = pset.getParameter<bool>("applyOccupancyCut");
52  maximumOccupancy_ = pset.getParameter<uint32_t>("maximumOccupancy");
53 
54  applySumPtCut_ = pset.getParameter<bool>("applySumPtCut");
55  maximumSumPt_ = pset.getParameter<double>("maximumSumPtCut");
56 
57  applyRelativeSumPtCut_ = pset.getParameter<bool>("applyRelativeSumPtCut");
58  maximumRelativeSumPt_ = pset.getParameter<double>("relativeSumPtCut");
59  offsetRelativeSumPt_ = pset.getParameter<double>("relativeSumPtOffset");
60 
61  storeRawOccupancy_ = pset.getParameter<bool>("storeRawOccupancy");
62  storeRawSumPt_ = pset.getParameter<bool>("storeRawSumPt");
63  storeRawPUsumPt_ = pset.getParameter<bool>("storeRawPUsumPt");
64  storeRawFootprintCorrection_ = pset.getParameter<bool>("storeRawFootprintCorrection");
65  storeRawPhotonSumPt_outsideSignalCone_ = pset.getParameter<bool>("storeRawPhotonSumPt_outsideSignalCone");
66 
67  // Sanity check on requested options. We can't apply cuts and store the
68  // raw output at the same time
71  throw cms::Exception("BadIsoConfig") << "A 'store raw' and a 'apply cut' option have been set to true "
72  << "simultaneously. These options are mutually exclusive.";
73  }
74  }
75 
76  // sanity check2 - can't use weighted and unweighted iso at the same time
78  throw cms::Exception("BasIsoConfig")
79  << "Both 'ApplyDiscriminationByECALIsolation' and 'ApplyDiscriminationByWeightedECALIsolation' "
80  << "have been set to true. These options are mutually exclusive.";
81  }
82 
83  // Can only store one type
84  int numStoreOptions = 0;
85  if (storeRawSumPt_)
86  ++numStoreOptions;
88  ++numStoreOptions;
89  if (storeRawPUsumPt_)
90  ++numStoreOptions;
92  ++numStoreOptions;
94  ++numStoreOptions;
95  if (numStoreOptions > 1) {
96  throw cms::Exception("BadIsoConfig") << "Multiple 'store sum pt' and/or 'store occupancy' options are set."
97  << " These options are mutually exclusive.";
98  }
99 
100  customIsoCone_ = pset.getParameter<double>("customOuterCone");
101 
102  applyPhotonPtSumOutsideSignalConeCut_ = pset.getParameter<bool>("applyPhotonPtSumOutsideSignalConeCut");
104  maxAbsPhotonSumPt_outsideSignalCone_ = pset.getParameter<double>("maxAbsPhotonSumPt_outsideSignalCone");
105  maxRelPhotonSumPt_outsideSignalCone_ = pset.getParameter<double>("maxRelPhotonSumPt_outsideSignalCone");
106  }
107 
108  applyFootprintCorrection_ = pset.getParameter<bool>("applyFootprintCorrection");
110  edm::VParameterSet cfgFootprintCorrections = pset.getParameter<edm::VParameterSet>("footprintCorrections");
111  for (edm::VParameterSet::const_iterator cfgFootprintCorrection = cfgFootprintCorrections.begin();
112  cfgFootprintCorrection != cfgFootprintCorrections.end();
113  ++cfgFootprintCorrection) {
114  std::string selection = cfgFootprintCorrection->getParameter<std::string>("selection");
115  std::string offset = cfgFootprintCorrection->getParameter<std::string>("offset");
116  std::unique_ptr<FootprintCorrection> footprintCorrection(new FootprintCorrection(selection, offset));
117  footprintCorrections_.push_back(std::move(footprintCorrection));
118  }
119  }
120 
121  // Get the quality cuts specific to the isolation region
122  edm::ParameterSet isolationQCuts = qualityCutsPSet_.getParameterSet("isolationQualityCuts");
123 
124  qcuts_ = std::make_unique<tau::RecoTauQualityCuts>(isolationQCuts);
125 
126  vertexAssociator_ = std::make_unique<tau::RecoTauVertexAssociator>(qualityCutsPSet_, consumesCollector());
127 
128  applyDeltaBeta_ = pset.getParameter<bool>("applyDeltaBetaCorrection");
129 
131  // Factorize the isolation QCuts into those that are used to
132  // select PU and those that are not.
133  std::pair<edm::ParameterSet, edm::ParameterSet> puFactorizedIsoQCuts =
134  reco::tau::factorizePUQCuts(isolationQCuts);
135 
136  // Determine the pt threshold for the PU tracks
137  // First check if the user specifies explicitly the cut.
138  // For that the user has to provide a >= 0 value for the PtCutOverride.
139  bool deltaBetaPUTrackPtCutOverride = pset.getParameter<bool>("deltaBetaPUTrackPtCutOverride");
141  double deltaBetaPUTrackPtCutOverride_val = pset.getParameter<double>("deltaBetaPUTrackPtCutOverride_val");
142  puFactorizedIsoQCuts.second.addParameter<double>("minTrackPt", deltaBetaPUTrackPtCutOverride_val);
143  } else {
144  // Secondly take it from the minGammaEt
145  puFactorizedIsoQCuts.second.addParameter<double>("minTrackPt",
146  isolationQCuts.getParameter<double>("minGammaEt"));
147  }
148 
149  pileupQcutsPUTrackSelection_ = std::make_unique<tau::RecoTauQualityCuts>(puFactorizedIsoQCuts.first);
150 
151  pileupQcutsGeneralQCuts_ = std::make_unique<tau::RecoTauQualityCuts>(puFactorizedIsoQCuts.second);
152 
153  pfCandSrc_ = pset.getParameter<edm::InputTag>("particleFlowSrc");
154  pfCand_token = consumes<edm::View<reco::Candidate> >(pfCandSrc_);
155  vertexSrc_ = pset.getParameter<edm::InputTag>("vertexSrc");
156  vertex_token = consumes<reco::VertexCollection>(vertexSrc_);
157  deltaBetaCollectionCone_ = pset.getParameter<double>("isoConeSizeForDeltaBeta");
158  std::string deltaBetaFactorFormula = pset.getParameter<string>("deltaBetaFactor");
159  deltaBetaFormula_ = std::make_unique<TFormula>("DB_corr", deltaBetaFactorFormula.c_str());
160  }
161 
162  applyRhoCorrection_ = pset.getParameter<bool>("applyRhoCorrection");
163  if (applyRhoCorrection_) {
164  rhoProducer_ = pset.getParameter<edm::InputTag>("rhoProducer");
165  rho_token = consumes<double>(rhoProducer_);
166  rhoConeSize_ = pset.getParameter<double>("rhoConeSize");
167  rhoUEOffsetCorrection_ = pset.getParameter<double>("rhoUEOffsetCorrection");
168  }
169  useAllPFCands_ = pset.getParameter<bool>("UseAllPFCandsForWeights");
170 
171  verbosity_ = pset.getParameter<int>("verbosity");
172  }
std::unique_ptr< tau::RecoTauQualityCuts > pileupQcutsGeneralQCuts_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:34
edm::EDGetTokenT< edm::View< reco::Candidate > > pfCand_token
selection
main part
Definition: corrVsCorr.py:100
ParameterSet const & getParameterSet(std::string const &) const
std::vector< std::unique_ptr< FootprintCorrection > > footprintCorrections_
std::pair< edm::ParameterSet, edm::ParameterSet > factorizePUQCuts(const edm::ParameterSet &inputSet)
TauDiscriminationProducerBase< reco::PFTau, reco::PFTauDiscriminator > PFTauDiscriminationProducerBase
std::unique_ptr< tau::RecoTauQualityCuts > pileupQcutsPUTrackSelection_
std::unique_ptr< tau::RecoTauQualityCuts > qcuts_
def move(src, dest)
Definition: eostools.py:511
std::unique_ptr< tau::RecoTauVertexAssociator > vertexAssociator_
edm::EDGetTokenT< reco::VertexCollection > vertex_token

◆ ~PFRecoTauDiscriminationByIsolation()

PFRecoTauDiscriminationByIsolation::~PFRecoTauDiscriminationByIsolation ( )
inlineoverride

Definition at line 174 of file PFRecoTauDiscriminationByIsolation.cc.

174 {}

Member Function Documentation

◆ beginEvent()

void PFRecoTauDiscriminationByIsolation::beginEvent ( const edm::Event evt,
const edm::EventSetup evtSetup 
)
overridevirtual

Reimplemented from TauDiscriminationProducerBase< TauType, TauDiscriminator, TauDiscriminatorDataType, ConsumeType >.

Definition at line 271 of file PFRecoTauDiscriminationByIsolation.cc.

References reco::Candidate::charge(), mps_fire::i, zmumugammaAnalyzer_cfi::pfCandidates, and AlignmentTracksFromVertexSelector_cfi::vertices.

271  {
272  // NB: The use of the PV in this context is necessitated by its use in
273  // applying quality cuts to the different objects in the isolation cone
274  // The vertex associator contains the logic to select the appropriate vertex
275  // We need to pass it the event so it can load the vertices.
276  vertexAssociator_->setEvent(event);
277 
278  // If we are applying the delta beta correction, we need to get the PF
279  // candidates from the event so we can find the PU tracks.
281  // Collect all the PF pile up tracks
283  event.getByToken(pfCand_token, pfCandidates);
285  chargedPFCandidatesInEvent_.reserve(pfCandidates->size());
286  size_t numPFCandidates = pfCandidates->size();
287  for (size_t i = 0; i < numPFCandidates; ++i) {
288  reco::CandidatePtr pfCandidate(pfCandidates, i);
289  if (pfCandidate->charge() != 0) {
290  chargedPFCandidatesInEvent_.push_back(pfCandidate);
291  }
292  }
293  // Count all the vertices in the event, to parameterize the DB
294  // correction factor
296  event.getByToken(vertex_token, vertices);
297  size_t nVtxThisEvent = vertices->size();
298  deltaBetaFactorThisEvent_ = deltaBetaFormula_->Eval(nVtxThisEvent);
299  }
300 
301  if (applyRhoCorrection_) {
302  edm::Handle<double> rhoHandle_;
303  event.getByToken(rho_token, rhoHandle_);
304  rhoThisEvent_ = (*rhoHandle_ - rhoUEOffsetCorrection_) * (3.14159) * rhoConeSize_ * rhoConeSize_;
305  }
306 }
edm::EDGetTokenT< edm::View< reco::Candidate > > pfCand_token
std::vector< reco::CandidatePtr > chargedPFCandidatesInEvent_
std::unique_ptr< tau::RecoTauVertexAssociator > vertexAssociator_
Definition: event.py:1
edm::EDGetTokenT< reco::VertexCollection > vertex_token

◆ discriminate()

double PFRecoTauDiscriminationByIsolation::discriminate ( const PFTauRef pfTau) const
override

Definition at line 308 of file PFRecoTauDiscriminationByIsolation.cc.

References gather_cfg::cout, reco::deltaR(), HGC3DClusterGenMatchSelector_cfi::dR, PVValHelper::eta, ALCARECOTkAlBeamHalo_cff::filter, edm::Ref< C, T, F >::isNonnull(), dqm-mbProfile::log, LogDebug, LogTrace, SiStripPI::min, eostools::move(), reco::LeafCandidate::p4(), edm::OwnVector< T, P >::push_back(), MetAnalyzer::pv(), edm::OwnVector< T, P >::reserve(), reco::LeafCandidate::setP4(), edm::OwnVector< T, P >::size(), listHistos::trackPt, and trackerHitRTTI::vector.

308  {
309  LogDebug("discriminate") << " tau: Pt = " << pfTau->pt() << ", eta = " << pfTau->eta() << ", phi = " << pfTau->phi();
310  LogDebug("discriminate") << *pfTau;
311 
312  // collect the objects we are working with (ie tracks, tracks+gammas, etc)
313  std::vector<CandidatePtr> isoCharged_;
314  std::vector<CandidatePtr> isoNeutral_;
315  std::vector<CandidatePtr> isoPU_;
316  CandidateCollection isoNeutralWeight_;
317  std::vector<CandidatePtr> chPV_;
318  isoCharged_.reserve(pfTau->isolationChargedHadrCands().size());
319  isoNeutral_.reserve(pfTau->isolationGammaCands().size());
320  isoPU_.reserve(std::min(100UL, chargedPFCandidatesInEvent_.size()));
321  isoNeutralWeight_.reserve(pfTau->isolationGammaCands().size());
322 
323  chPV_.reserve(std::min(50UL, chargedPFCandidatesInEvent_.size()));
324 
325  // Get the primary vertex associated to this tau
326  reco::VertexRef pv = vertexAssociator_->associatedVertex(*pfTau);
327  // Let the quality cuts know which the vertex to use when applying selections
328  // on dz, etc.
329  if (verbosity_) {
330  if (pv.isNonnull()) {
331  LogTrace("discriminate") << "pv: x = " << pv->position().x() << ", y = " << pv->position().y()
332  << ", z = " << pv->position().z();
333  } else {
334  LogTrace("discriminate") << "pv: N/A";
335  }
336  if (pfTau->leadChargedHadrCand().isNonnull()) {
337  LogTrace("discriminate") << "leadPFChargedHadron:"
338  << " Pt = " << pfTau->leadChargedHadrCand()->pt() << ","
339  << " eta = " << pfTau->leadChargedHadrCand()->eta() << ","
340  << " phi = " << pfTau->leadChargedHadrCand()->phi();
341  } else {
342  LogTrace("discriminate") << "leadPFChargedHadron: N/A";
343  }
344  }
345 
346  // CV: isolation is not well defined in case primary vertex or leading charged hadron do not exist
347  if (!(pv.isNonnull() && pfTau->leadChargedHadrCand().isNonnull()))
348  return 0.;
349 
350  qcuts_->setPV(pv);
351  qcuts_->setLeadTrack(*pfTau->leadChargedHadrCand());
352 
355  pileupQcutsGeneralQCuts_->setLeadTrack(*pfTau->leadChargedHadrCand());
357  pileupQcutsPUTrackSelection_->setLeadTrack(*pfTau->leadChargedHadrCand());
358  }
359 
360  // Load the tracks if they are being used.
361  if (includeTracks_) {
362  for (auto const& cand : pfTau->isolationChargedHadrCands()) {
363  if (qcuts_->filterCandRef(cand)) {
364  LogTrace("discriminate") << "adding charged iso cand with pt " << cand->pt();
365  isoCharged_.push_back(cand);
366  }
367  }
368  }
370  for (auto const& cand : pfTau->isolationGammaCands()) {
371  if (qcuts_->filterCandRef(cand)) {
372  LogTrace("discriminate") << "adding neutral iso cand with pt " << cand->pt();
373  isoNeutral_.push_back(cand);
374  }
375  }
376  }
377 
380 
381  // If desired, get PU tracks.
383  // First select by inverted the DZ/track weight cuts. True = invert
384  if (verbosity_) {
385  std::cout << "Initial PFCands: " << chargedPFCandidatesInEvent_.size() << std::endl;
386  }
387 
388  std::vector<CandidatePtr> allPU = pileupQcutsPUTrackSelection_->filterCandRefs(chargedPFCandidatesInEvent_, true);
389 
390  std::vector<CandidatePtr> allNPU = pileupQcutsPUTrackSelection_->filterCandRefs(chargedPFCandidatesInEvent_);
391  LogTrace("discriminate") << "After track cuts: " << allPU.size();
392 
393  // Now apply the rest of the cuts, like pt, and TIP, tracker hits, etc
394  if (!useAllPFCands_) {
395  std::vector<CandidatePtr> cleanPU = pileupQcutsGeneralQCuts_->filterCandRefs(allPU);
396 
397  std::vector<CandidatePtr> cleanNPU = pileupQcutsGeneralQCuts_->filterCandRefs(allNPU);
398 
399  LogTrace("discriminate") << "After cleaning cuts: " << cleanPU.size();
400 
401  // Only select PU tracks inside the isolation cone.
402  DRFilter deltaBetaFilter(pfTau->p4(), 0, deltaBetaCollectionCone_);
403  for (auto const& cand : cleanPU) {
404  if (deltaBetaFilter(cand))
405  isoPU_.push_back(cand);
406  }
407 
408  for (auto const& cand : cleanNPU) {
409  if (deltaBetaFilter(cand))
410  chPV_.push_back(cand);
411  }
412  LogTrace("discriminate") << "After cone cuts: " << isoPU_.size() << " " << chPV_.size();
413  } else {
414  isoPU_ = std::move(allPU);
415  chPV_ = std::move(allNPU);
416  }
417  }
418 
419  if (calculateWeights_) {
420  for (auto const& isoObject : isoNeutral_) {
421  if (isoObject->charge() != 0) {
422  // weight only neutral objects
423  isoNeutralWeight_.push_back(*isoObject);
424  continue;
425  }
426 
427  double eta = isoObject->eta();
428  double phi = isoObject->phi();
429  double sumNPU = 0.5 * log(weightedSum(chPV_, eta, phi));
430 
431  double sumPU = 0.5 * log(weightedSum(isoPU_, eta, phi));
432  LeafCandidate neutral(*isoObject);
433  if ((sumNPU + sumPU) > 0)
434  neutral.setP4(((sumNPU) / (sumNPU + sumPU)) * neutral.p4());
435 
436  isoNeutralWeight_.push_back(neutral);
437  }
438  }
439 
440  // Check if we want a custom iso cone
441  if (customIsoCone_ >= 0.) {
442  DRFilter filter(pfTau->p4(), 0, customIsoCone_);
443  DRFilter2 filter2(pfTau->p4(), 0, customIsoCone_);
444  std::vector<CandidatePtr> isoCharged_filter;
445  std::vector<CandidatePtr> isoNeutral_filter;
446  CandidateCollection isoNeutralWeight_filter;
447  // Remove all the objects not in our iso cone
448  for (auto const& isoObject : isoCharged_) {
449  if (filter(isoObject))
450  isoCharged_filter.push_back(isoObject);
451  }
452  if (!calculateWeights_) {
453  for (auto const& isoObject : isoNeutral_) {
454  if (filter(isoObject))
455  isoNeutral_filter.push_back(isoObject);
456  }
457  isoNeutral_ = isoNeutral_filter;
458  } else {
459  for (auto const& isoObject : isoNeutralWeight_) {
460  if (filter2(isoObject))
461  isoNeutralWeight_filter.push_back(isoObject);
462  }
463  isoNeutralWeight_ = isoNeutralWeight_filter;
464  }
465  isoCharged_ = isoCharged_filter;
466  }
467 
468  bool failsOccupancyCut = false;
469  bool failsSumPtCut = false;
470  bool failsRelativeSumPtCut = false;
471 
472  //--- nObjects requirement
473  int neutrals = isoNeutral_.size();
474 
475  if (applyDeltaBeta_) {
476  neutrals -= TMath::Nint(deltaBetaFactorThisEvent_ * isoPU_.size());
477  }
478  if (neutrals < 0) {
479  neutrals = 0;
480  }
481 
482  size_t nOccupants = isoCharged_.size() + neutrals;
483 
484  failsOccupancyCut = (nOccupants > maximumOccupancy_);
485 
486  double footprintCorrection_value = 0.;
488  for (std::vector<std::unique_ptr<FootprintCorrection> >::const_iterator footprintCorrection =
489  footprintCorrections_.begin();
490  footprintCorrection != footprintCorrections_.end();
491  ++footprintCorrection) {
492  if ((*footprintCorrection)->selection_(*pfTau)) {
493  footprintCorrection_value = (*footprintCorrection)->offset_(*pfTau);
494  }
495  }
496  }
497 
498  double totalPt = 0.;
499  double puPt = 0.;
500  //--- Sum PT requirement
502  double chargedPt = 0.;
503  double neutralPt = 0.;
504  double weightedNeutralPt = 0.;
505  for (auto const& isoObject : isoCharged_) {
506  //-------------------------------------------------------------------------
507  // CV: fix for Phase-2 HLT tau trigger studies
508  // (pT of PFCandidates within HGCal acceptance is significantly higher than track pT !!)
510  double trackPt = (isoObject->bestTrack()) ? isoObject->bestTrack()->pt() : 0.;
511  double pfCandPt = isoObject->pt();
512  if (pfCandPt > trackPt) {
513  chargedPt += trackPt;
514  neutralPt += pfCandPt - trackPt;
515  } else {
516  chargedPt += isoObject->pt();
517  }
518  } else {
519  chargedPt += isoObject->pt();
520  }
521  //-------------------------------------------------------------------------
522  }
523  if (!calculateWeights_) {
524  for (auto const& isoObject : isoNeutral_) {
525  neutralPt += isoObject->pt();
526  }
527  } else {
528  for (auto const& isoObject : isoNeutralWeight_) {
529  weightedNeutralPt += isoObject.pt();
530  }
531  }
532  for (auto const& isoObject : isoPU_) {
533  puPt += isoObject->pt();
534  }
535  LogTrace("discriminate") << "chargedPt = " << chargedPt;
536  LogTrace("discriminate") << "neutralPt = " << neutralPt;
537  LogTrace("discriminate") << "weighted neutral Pt = " << weightedNeutralPt;
538  LogTrace("discriminate") << "puPt = " << puPt << " (delta-beta corr. = " << (deltaBetaFactorThisEvent_ * puPt)
539  << ")";
540 
541  if (calculateWeights_) {
542  neutralPt = weightedNeutralPt;
543  }
544 
545  if (applyDeltaBeta_) {
546  neutralPt -= (deltaBetaFactorThisEvent_ * puPt);
547  }
548 
550  neutralPt -= footprintCorrection_value;
551  }
552 
553  if (applyRhoCorrection_) {
554  neutralPt -= rhoThisEvent_;
555  }
556 
557  if (neutralPt < 0.) {
558  neutralPt = 0.;
559  }
560 
561  totalPt = chargedPt + weightGammas_ * neutralPt;
562  LogTrace("discriminate") << "totalPt = " << totalPt << " (cut = " << maximumSumPt_ << ")";
563 
564  failsSumPtCut = (totalPt > maximumSumPt_);
565 
566  //--- Relative Sum PT requirement
567  failsRelativeSumPtCut = (totalPt > ((pfTau->pt() - offsetRelativeSumPt_) * maximumRelativeSumPt_));
568  }
569 
570  bool failsPhotonPtSumOutsideSignalConeCut = false;
571  double photonSumPt_outsideSignalCone = 0.;
573  const std::vector<reco::CandidatePtr>& signalGammas = pfTau->signalGammaCands();
574  for (std::vector<reco::CandidatePtr>::const_iterator signalGamma = signalGammas.begin();
575  signalGamma != signalGammas.end();
576  ++signalGamma) {
577  double dR = deltaR(pfTau->eta(), pfTau->phi(), (*signalGamma)->eta(), (*signalGamma)->phi());
578  if (dR > pfTau->signalConeSize())
579  photonSumPt_outsideSignalCone += (*signalGamma)->pt();
580  }
581  if (photonSumPt_outsideSignalCone > maxAbsPhotonSumPt_outsideSignalCone_ ||
582  photonSumPt_outsideSignalCone > (maxRelPhotonSumPt_outsideSignalCone_ * pfTau->pt())) {
583  failsPhotonPtSumOutsideSignalConeCut = true;
584  }
585  }
586 
587  bool fails = (applyOccupancyCut_ && failsOccupancyCut) || (applySumPtCut_ && failsSumPtCut) ||
588  (applyRelativeSumPtCut_ && failsRelativeSumPtCut) ||
589  (applyPhotonPtSumOutsideSignalConeCut_ && failsPhotonPtSumOutsideSignalConeCut);
590 
591  if (pfTau->pt() > minPtForNoIso_ && minPtForNoIso_ > 0.) {
592  return 1.;
593  LogDebug("discriminate") << "tau pt = " << pfTau->pt() << "\t min cutoff pt = " << minPtForNoIso_;
594  }
595 
596  // We did error checking in the constructor, so this is safe.
597  if (storeRawSumPt_) {
598  return totalPt;
599  } else if (storeRawPUsumPt_) {
600  if (applyDeltaBeta_)
601  return puPt;
602  else if (applyRhoCorrection_)
603  return rhoThisEvent_;
604  else
605  return 0.;
606  } else if (storeRawOccupancy_) {
607  return nOccupants;
608  } else if (storeRawFootprintCorrection_) {
609  return footprintCorrection_value;
611  return photonSumPt_outsideSignalCone;
612  } else {
613  return (fails ? 0. : 1.);
614  }
615 }
std::unique_ptr< tau::RecoTauQualityCuts > pileupQcutsGeneralQCuts_
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
#define LogTrace(id)
std::vector< std::unique_ptr< FootprintCorrection > > footprintCorrections_
void push_back(D *&d)
Definition: OwnVector.h:326
size_type size() const
Definition: OwnVector.h:300
def pv(vc)
Definition: MetAnalyzer.py:7
std::vector< reco::CandidatePtr > chargedPFCandidatesInEvent_
double weightedSum(const std::vector< CandidatePtr > &inColl_, double eta, double phi) const
std::unique_ptr< tau::RecoTauQualityCuts > pileupQcutsPUTrackSelection_
std::unique_ptr< tau::RecoTauQualityCuts > qcuts_
def move(src, dest)
Definition: eostools.py:511
void reserve(size_t)
Definition: OwnVector.h:320
std::unique_ptr< tau::RecoTauVertexAssociator > vertexAssociator_
#define LogDebug(id)

◆ fillDescriptions()

void PFRecoTauDiscriminationByIsolation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 617 of file PFRecoTauDiscriminationByIsolation.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addOptional(), submitPVResolutionJobs::desc, reco::tau::RecoTauQualityCuts::fillDescriptions(), HLT_2022v12_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

617  {
618  // pfRecoTauDiscriminationByIsolation
620  desc.add<bool>("storeRawFootprintCorrection", false);
621  desc.add<edm::InputTag>("PFTauProducer", edm::InputTag("pfRecoTauProducer"));
622  desc.add<bool>("storeRawOccupancy", false);
623  desc.add<double>("maximumSumPtCut", 6.0);
624 
625  edm::ParameterSetDescription desc_qualityCuts;
627  desc.add<edm::ParameterSetDescription>("qualityCuts", desc_qualityCuts);
628 
629  desc.add<double>("minTauPtForNoIso", -99.0);
630  desc.add<double>("maxAbsPhotonSumPt_outsideSignalCone", 1000000000.0);
631  desc.add<edm::InputTag>("vertexSrc", edm::InputTag("offlinePrimaryVertices"));
632  desc.add<bool>("applySumPtCut", false);
633  desc.add<double>("rhoConeSize", 0.5);
634  desc.add<bool>("ApplyDiscriminationByTrackerIsolation", true);
635  desc.add<bool>("storeRawPhotonSumPt_outsideSignalCone", false);
636  desc.add<edm::InputTag>("rhoProducer", edm::InputTag("fixedGridRhoFastjetAll"));
637  desc.add<bool>("enableHGCalWorkaround", false);
638 
639  {
641  vpsd1.add<std::string>("selection");
642  vpsd1.add<std::string>("offset");
643  desc.addVPSet("footprintCorrections", vpsd1, {});
644  }
645 
646  desc.add<std::string>("deltaBetaFactor", "0.38");
647  desc.add<bool>("applyFootprintCorrection", false);
648  desc.add<bool>("UseAllPFCandsForWeights", false);
649  desc.add<double>("relativeSumPtCut", 0.0);
650  {
651  edm::ParameterSetDescription pset_Prediscriminants;
652  pset_Prediscriminants.add<std::string>("BooleanOperator", "and");
653  {
655  psd1.add<double>("cut");
656  psd1.add<edm::InputTag>("Producer");
657  pset_Prediscriminants.addOptional<edm::ParameterSetDescription>("leadTrack", psd1);
658  }
659  {
660  // encountered this at
661  // RecoTauTag/Configuration/python/HPSPFTaus_cff.py
662  // Prediscriminants = requireDecayMode.clone(),
663  // requireDecayMode = cms.PSet(
664  // BooleanOperator = cms.string("and"),
665  // decayMode = cms.PSet(
666  // Producer = cms.InputTag('hpsPFTauDiscriminationByDecayModeFindingNewDMs'),
667  // cut = cms.double(0.5)
668  // )
669  // )
671  psd1.add<double>("cut");
672  psd1.add<edm::InputTag>("Producer");
673  pset_Prediscriminants.addOptional<edm::ParameterSetDescription>("decayMode", psd1);
674  }
675  {
676  // encountered this at
677  // RecoTauTag/Configuration/python/HPSPFTaus_cff.py
678  // Prediscriminants = requireDecayMode.clone(),
679  // hpsPFTauDiscriminationByLooseIsolation.Prediscriminants.preIso = cms.PSet(
680  // Producer = cms.InputTag("hpsPFTauDiscriminationByLooseChargedIsolation"),
681  // cut = cms.double(0.5)
682  // )
684  psd1.add<double>("cut");
685  psd1.add<edm::InputTag>("Producer");
686  pset_Prediscriminants.addOptional<edm::ParameterSetDescription>("preIso", psd1);
687  }
688  desc.add<edm::ParameterSetDescription>("Prediscriminants", pset_Prediscriminants);
689  }
690 
691  desc.add<unsigned int>("maximumOccupancy", 0);
692  desc.add<int>("verbosity", 0);
693 
694  desc.add<bool>("applyOccupancyCut", true);
695  desc.add<bool>("applyDeltaBetaCorrection", false);
696  desc.add<bool>("applyRelativeSumPtCut", false);
697  desc.add<bool>("storeRawPUsumPt", false);
698  desc.add<bool>("applyPhotonPtSumOutsideSignalConeCut", false);
699  desc.add<bool>("deltaBetaPUTrackPtCutOverride", false);
700  desc.add<bool>("ApplyDiscriminationByWeightedECALIsolation", false);
701  desc.add<bool>("storeRawSumPt", false);
702  desc.add<bool>("ApplyDiscriminationByECALIsolation", true);
703  desc.add<bool>("applyRhoCorrection", false);
704 
705  desc.add<double>("WeightECALIsolation", 1.0);
706  desc.add<double>("rhoUEOffsetCorrection", 1.0);
707  desc.add<double>("maxRelPhotonSumPt_outsideSignalCone", 0.1);
708  desc.add<double>("deltaBetaPUTrackPtCutOverride_val", -1.5);
709  desc.add<double>("isoConeSizeForDeltaBeta", 0.5);
710  desc.add<double>("relativeSumPtOffset", 0.0);
711  desc.add<double>("customOuterCone", -1.0);
712  desc.add<edm::InputTag>("particleFlowSrc", edm::InputTag("particleFlow"));
713 
714  descriptions.add("pfRecoTauDiscriminationByIsolation", desc);
715 }
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
static void fillDescriptions(edm::ParameterSetDescription &descriptions)
Declare all parameters read from python config file.
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ weightedSum()

double PFRecoTauDiscriminationByIsolation::weightedSum ( const std::vector< CandidatePtr > &  inColl_,
double  eta,
double  phi 
) const
inline

Definition at line 179 of file PFRecoTauDiscriminationByIsolation.cc.

References reco::deltaR2(), PVValHelper::eta, and MillePedeFileConverter_cfg::out.

179  {
180  double out = 1.0;
181  for (auto const& inObj_ : inColl_) {
182  double sum = (inObj_->pt() * inObj_->pt()) / (deltaR2(eta, phi, inObj_->eta(), inObj_->phi()));
183  if (sum > 1.0)
184  out *= sum;
185  }
186  return out;
187  }

Member Data Documentation

◆ applyDeltaBeta_

bool PFRecoTauDiscriminationByIsolation::applyDeltaBeta_
private

Definition at line 245 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applyFootprintCorrection_

bool PFRecoTauDiscriminationByIsolation::applyFootprintCorrection_
private

Definition at line 223 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applyOccupancyCut_

bool PFRecoTauDiscriminationByIsolation::applyOccupancyCut_
private

Definition at line 208 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applyPhotonPtSumOutsideSignalConeCut_

bool PFRecoTauDiscriminationByIsolation::applyPhotonPtSumOutsideSignalConeCut_
private

Definition at line 219 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applyRelativeSumPtCut_

bool PFRecoTauDiscriminationByIsolation::applyRelativeSumPtCut_
private

Definition at line 212 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applyRhoCorrection_

bool PFRecoTauDiscriminationByIsolation::applyRhoCorrection_
private

Definition at line 258 of file PFRecoTauDiscriminationByIsolation.cc.

◆ applySumPtCut_

bool PFRecoTauDiscriminationByIsolation::applySumPtCut_
private

Definition at line 210 of file PFRecoTauDiscriminationByIsolation.cc.

◆ calculateWeights_

bool PFRecoTauDiscriminationByIsolation::calculateWeights_
private

Definition at line 205 of file PFRecoTauDiscriminationByIsolation.cc.

◆ chargedPFCandidatesInEvent_

std::vector<reco::CandidatePtr> PFRecoTauDiscriminationByIsolation::chargedPFCandidatesInEvent_
private

Definition at line 251 of file PFRecoTauDiscriminationByIsolation.cc.

◆ customIsoCone_

double PFRecoTauDiscriminationByIsolation::customIsoCone_
private

Definition at line 215 of file PFRecoTauDiscriminationByIsolation.cc.

◆ deltaBetaCollectionCone_

double PFRecoTauDiscriminationByIsolation::deltaBetaCollectionCone_
private

Definition at line 253 of file PFRecoTauDiscriminationByIsolation.cc.

◆ deltaBetaFactorThisEvent_

double PFRecoTauDiscriminationByIsolation::deltaBetaFactorThisEvent_
private

Definition at line 255 of file PFRecoTauDiscriminationByIsolation.cc.

◆ deltaBetaFormula_

std::unique_ptr<TFormula> PFRecoTauDiscriminationByIsolation::deltaBetaFormula_
private

Definition at line 254 of file PFRecoTauDiscriminationByIsolation.cc.

◆ enableHGCalWorkaround_

bool PFRecoTauDiscriminationByIsolation::enableHGCalWorkaround_
private

Definition at line 206 of file PFRecoTauDiscriminationByIsolation.cc.

◆ footprintCorrections_

std::vector<std::unique_ptr<FootprintCorrection> > PFRecoTauDiscriminationByIsolation::footprintCorrections_
private

Definition at line 231 of file PFRecoTauDiscriminationByIsolation.cc.

◆ includeGammas_

bool PFRecoTauDiscriminationByIsolation::includeGammas_
private

Definition at line 204 of file PFRecoTauDiscriminationByIsolation.cc.

◆ includeTracks_

bool PFRecoTauDiscriminationByIsolation::includeTracks_
private

Definition at line 203 of file PFRecoTauDiscriminationByIsolation.cc.

◆ maxAbsPhotonSumPt_outsideSignalCone_

double PFRecoTauDiscriminationByIsolation::maxAbsPhotonSumPt_outsideSignalCone_
private

Definition at line 220 of file PFRecoTauDiscriminationByIsolation.cc.

◆ maximumOccupancy_

uint32_t PFRecoTauDiscriminationByIsolation::maximumOccupancy_
private

Definition at line 209 of file PFRecoTauDiscriminationByIsolation.cc.

◆ maximumRelativeSumPt_

double PFRecoTauDiscriminationByIsolation::maximumRelativeSumPt_
private

Definition at line 213 of file PFRecoTauDiscriminationByIsolation.cc.

◆ maximumSumPt_

double PFRecoTauDiscriminationByIsolation::maximumSumPt_
private

Definition at line 211 of file PFRecoTauDiscriminationByIsolation.cc.

◆ maxRelPhotonSumPt_outsideSignalCone_

double PFRecoTauDiscriminationByIsolation::maxRelPhotonSumPt_outsideSignalCone_
private

Definition at line 221 of file PFRecoTauDiscriminationByIsolation.cc.

◆ minPtForNoIso_

double PFRecoTauDiscriminationByIsolation::minPtForNoIso_
private

Definition at line 217 of file PFRecoTauDiscriminationByIsolation.cc.

◆ moduleLabel_

std::string PFRecoTauDiscriminationByIsolation::moduleLabel_
private

◆ offsetRelativeSumPt_

double PFRecoTauDiscriminationByIsolation::offsetRelativeSumPt_
private

Definition at line 214 of file PFRecoTauDiscriminationByIsolation.cc.

◆ pfCand_token

edm::EDGetTokenT<edm::View<reco::Candidate> > PFRecoTauDiscriminationByIsolation::pfCand_token
private

Definition at line 247 of file PFRecoTauDiscriminationByIsolation.cc.

◆ pfCandSrc_

edm::InputTag PFRecoTauDiscriminationByIsolation::pfCandSrc_
private

Definition at line 246 of file PFRecoTauDiscriminationByIsolation.cc.

◆ pileupQcutsGeneralQCuts_

std::unique_ptr<tau::RecoTauQualityCuts> PFRecoTauDiscriminationByIsolation::pileupQcutsGeneralQCuts_
private

Definition at line 199 of file PFRecoTauDiscriminationByIsolation.cc.

◆ pileupQcutsPUTrackSelection_

std::unique_ptr<tau::RecoTauQualityCuts> PFRecoTauDiscriminationByIsolation::pileupQcutsPUTrackSelection_
private

Definition at line 198 of file PFRecoTauDiscriminationByIsolation.cc.

◆ qcuts_

std::unique_ptr<tau::RecoTauQualityCuts> PFRecoTauDiscriminationByIsolation::qcuts_
private

Definition at line 195 of file PFRecoTauDiscriminationByIsolation.cc.

◆ qualityCutsPSet_

edm::ParameterSet PFRecoTauDiscriminationByIsolation::qualityCutsPSet_
private

Definition at line 194 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rho_token

edm::EDGetTokenT<double> PFRecoTauDiscriminationByIsolation::rho_token
private

Definition at line 261 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rhoConeSize_

double PFRecoTauDiscriminationByIsolation::rhoConeSize_
private

Definition at line 262 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rhoCorrectionThisEvent_

double PFRecoTauDiscriminationByIsolation::rhoCorrectionThisEvent_
private

Definition at line 264 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rhoProducer_

edm::InputTag PFRecoTauDiscriminationByIsolation::rhoProducer_
private

Definition at line 260 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rhoThisEvent_

double PFRecoTauDiscriminationByIsolation::rhoThisEvent_
private

Definition at line 265 of file PFRecoTauDiscriminationByIsolation.cc.

◆ rhoUEOffsetCorrection_

double PFRecoTauDiscriminationByIsolation::rhoUEOffsetCorrection_
private

Definition at line 263 of file PFRecoTauDiscriminationByIsolation.cc.

◆ storeRawFootprintCorrection_

bool PFRecoTauDiscriminationByIsolation::storeRawFootprintCorrection_
private

Definition at line 237 of file PFRecoTauDiscriminationByIsolation.cc.

◆ storeRawOccupancy_

bool PFRecoTauDiscriminationByIsolation::storeRawOccupancy_
private

Definition at line 234 of file PFRecoTauDiscriminationByIsolation.cc.

◆ storeRawPhotonSumPt_outsideSignalCone_

bool PFRecoTauDiscriminationByIsolation::storeRawPhotonSumPt_outsideSignalCone_
private

Definition at line 238 of file PFRecoTauDiscriminationByIsolation.cc.

◆ storeRawPUsumPt_

bool PFRecoTauDiscriminationByIsolation::storeRawPUsumPt_
private

Definition at line 236 of file PFRecoTauDiscriminationByIsolation.cc.

◆ storeRawSumPt_

bool PFRecoTauDiscriminationByIsolation::storeRawSumPt_
private

Definition at line 235 of file PFRecoTauDiscriminationByIsolation.cc.

◆ useAllPFCands_

bool PFRecoTauDiscriminationByIsolation::useAllPFCands_
private

Definition at line 259 of file PFRecoTauDiscriminationByIsolation.cc.

◆ verbosity_

int PFRecoTauDiscriminationByIsolation::verbosity_
private

Definition at line 268 of file PFRecoTauDiscriminationByIsolation.cc.

◆ vertex_token

edm::EDGetTokenT<reco::VertexCollection> PFRecoTauDiscriminationByIsolation::vertex_token
private

Definition at line 250 of file PFRecoTauDiscriminationByIsolation.cc.

◆ vertexAssociator_

std::unique_ptr<tau::RecoTauVertexAssociator> PFRecoTauDiscriminationByIsolation::vertexAssociator_
private

Definition at line 201 of file PFRecoTauDiscriminationByIsolation.cc.

◆ vertexSrc_

edm::InputTag PFRecoTauDiscriminationByIsolation::vertexSrc_
private

Definition at line 249 of file PFRecoTauDiscriminationByIsolation.cc.

◆ weightGammas_

double PFRecoTauDiscriminationByIsolation::weightGammas_
private

Definition at line 207 of file PFRecoTauDiscriminationByIsolation.cc.