CMS 3D CMS Logo

RecoTauBuilderConePlugin.cc
Go to the documentation of this file.
1 /*
2  * RecoTauBuilderConePlugin
3  *
4  * Build a PFTau using cones defined in DeltaR.
5  *
6  * Original Authors: Ludovic Houchu, Simone Gennai
7  * Modifications: Evan K. Friis
8  *
9  */
10 
11 #include <vector>
12 #include <algorithm>
13 
18 
21 
27 
29 
30 namespace reco {
31  namespace tau {
32 
33  typedef std::vector<RecoTauPiZero> PiZeroList;
34 
36  public:
39  // Build a tau from a jet
41  const std::vector<reco::PFRecoTauChargedHadron>& chargedHadrons,
42  const std::vector<RecoTauPiZero>& piZeros,
43  const std::vector<CandidatePtr>& regionalExtras) const override;
44 
45  private:
46  std::unique_ptr<RecoTauQualityCuts> qcuts_;
47 
49 
51 
52  /* String function to extract values from PFJets */
54 
55  // Cone defintions
64 
68 
69  void setTauQuantities(reco::PFTau& aTau,
73  double minRelPhotonSumPt_outsideSignalCone = 1.e+9) const;
74  };
75 
76  // ctor - initialize all of our variables
79  qcuts_(new RecoTauQualityCuts(pset.getParameterSet("qualityCuts").getParameterSet("signalQualityCuts"))),
80  usePFLeptonsAsChargedHadrons_(pset.getParameter<bool>("usePFLeptons")),
81  leadObjecPtThreshold_(pset.getParameter<double>("leadObjectPt")),
82  matchingCone_(pset.getParameter<std::string>("matchingCone")),
83  signalConeChargedHadrons_(pset.getParameter<std::string>("signalConeChargedHadrons")),
84  isoConeChargedHadrons_(pset.getParameter<std::string>("isoConeChargedHadrons")),
85  signalConePiZeros_(pset.getParameter<std::string>("signalConePiZeros")),
86  signalConeSizeToStore_( //MB: stored inside PFTau and used to compte photon-pt-out-of-signal-cone and DM hypothsis
87  pset.getParameter<std::string>("signalConePiZeros")),
88  isoConePiZeros_(pset.getParameter<std::string>("isoConePiZeros")),
89  signalConeNeutralHadrons_(pset.getParameter<std::string>("signalConeNeutralHadrons")),
90  isoConeNeutralHadrons_(pset.getParameter<std::string>("isoConeNeutralHadrons")),
91  maxSignalConeChargedHadrons_(pset.getParameter<int>("maxSignalConeChargedHadrons")),
92  minAbsPhotonSumPt_insideSignalCone_(pset.getParameter<double>("minAbsPhotonSumPt_insideSignalCone")),
93  minRelPhotonSumPt_insideSignalCone_(pset.getParameter<double>("minRelPhotonSumPt_insideSignalCone"))
94 
95  {}
96 
97  namespace xclean {
98  // define template specialization for cross-cleaning
99  template <>
101  const cone::CandPtrDRFilterIter& signalTracksBegin, const cone::CandPtrDRFilterIter& signalTracksEnd) {
102  // Get the list of objects we need to clean
103  for (cone::CandPtrDRFilterIter signalTrack = signalTracksBegin; signalTrack != signalTracksEnd; ++signalTrack) {
104  toRemove_.insert(reco::CandidatePtr(*signalTrack));
105  }
106  }
107 
108  template <>
109  inline void CrossCleanPtrs<PiZeroList::const_iterator>::initialize(const PiZeroList::const_iterator& piZerosBegin,
110  const PiZeroList::const_iterator& piZerosEnd) {
111  for (auto const& ptr : flattenPiZeros(piZerosBegin, piZerosEnd)) {
112  toRemove_.insert(CandidatePtr(ptr));
113  }
114  }
115  } // namespace xclean
116 
122  //MB: Set tau quantities which are computed by RecoTauConstructor::get()
123  // method with PFRecoTauChargedHadrons not used here
124 
125  // Set charge
126  int charge = 0;
127  int leadCharge = aTau.leadChargedHadrCand().isNonnull() ? aTau.leadChargedHadrCand()->charge() : 0;
128  const std::vector<reco::CandidatePtr>& pfChs = aTau.signalChargedHadrCands();
129  for (const reco::CandidatePtr& pfCh : pfChs) {
130  charge += pfCh->charge();
131  }
132  charge = charge == 0 ? leadCharge : charge;
133  aTau.setCharge(charge);
134 
135  // Set PDG id
136  aTau.setPdgId(aTau.charge() < 0 ? 15 : -15);
137 
138  // Set Decay Mode
140  unsigned int nPiZeros = 0;
141  const std::vector<RecoTauPiZero>& piZeros = aTau.signalPiZeroCandidates();
142  for (const RecoTauPiZero& piZero : piZeros) {
143  double photonSumPt_insideSignalCone = 0.;
144  double photonSumPt_outsideSignalCone = 0.;
145  int numPhotons = piZero.numberOfDaughters();
146  for (int idxPhoton = 0; idxPhoton < numPhotons; ++idxPhoton) {
147  const reco::Candidate* photon = piZero.daughter(idxPhoton);
148  double dR = deltaR(photon->p4(), aTau.p4());
149  if (dR < aTau.signalConeSize()) {
150  photonSumPt_insideSignalCone += photon->pt();
151  } else {
152  photonSumPt_outsideSignalCone += photon->pt();
153  }
154  }
155  if (photonSumPt_insideSignalCone > minAbsPhotonSumPt_insideSignalCone ||
156  photonSumPt_insideSignalCone > (minRelPhotonSumPt_insideSignalCone * aTau.pt()) ||
157  photonSumPt_outsideSignalCone > minAbsPhotonSumPt_outsideSignalCone ||
158  photonSumPt_outsideSignalCone > (minRelPhotonSumPt_outsideSignalCone * aTau.pt()))
159  ++nPiZeros;
160  }
161  // Find the maximum number of PiZeros our parameterization can hold
162  const unsigned int maxPiZeros = PFTau::kOneProngNPiZero;
163  // Determine our track index
164  unsigned int nCharged = pfChs.size();
165  if (nCharged > 0) {
166  unsigned int trackIndex = (nCharged - 1) * (maxPiZeros + 1);
167  // Check if we handle the given number of tracks
168  if (trackIndex >= PFTau::kRareDecayMode)
170  else
171  dm = static_cast<PFTau::hadronicDecayMode>(trackIndex + std::min(nPiZeros, maxPiZeros));
172  } else {
173  dm = PFTau::kNull;
174  }
175  aTau.setDecayMode(dm);
176  return;
177  }
178 
180  const reco::JetBaseRef& jet,
181  const std::vector<reco::PFRecoTauChargedHadron>& chargedHadrons,
182  const std::vector<RecoTauPiZero>& piZeros,
183  const std::vector<CandidatePtr>& regionalExtras) const {
184  //std::cout << "<RecoTauBuilderConePlugin::operator()>:" << std::endl;
185  //std::cout << " jet: Pt = " << jet->pt() << ", eta = " << jet->eta() << ", phi = " << jet->phi() << std::endl;
186 
187  // Get access to our cone tools
188  using namespace cone;
189  // Define output. We only produce one tau per jet for the cone algo.
191 
192  // Our tau builder - the true indicates to automatically copy gamma candidates
193  // from the pizeros.
195  getPFCands(),
196  true,
200  // Setup our quality cuts to use the current vertex (supplied by base class)
201  qcuts_->setPV(primaryVertex(jet));
202 
203  typedef std::vector<CandidatePtr> CandPtrs;
204 
205  // Get the PF Charged hadrons + quality cuts
206  CandPtrs pfchs;
208  pfchs = qcuts_->filterCandRefs(pfCandidatesByPdgId(*jet, 211));
209  } else {
210  // Check if we want to include electrons in muons in "charged hadron"
211  // collection. This is the preferred behavior, as the PF lepton selections
212  // are very loose.
213  pfchs = qcuts_->filterCandRefs(pfChargedCands(*jet));
214  }
215 
216  // CV: sort collection of PF Charged hadrons by descending Pt
217  std::sort(pfchs.begin(), pfchs.end(), SortPFCandsDescendingPt());
218 
219  // Get the PF gammas
220  CandPtrs pfGammas = qcuts_->filterCandRefs(pfCandidatesByPdgId(*jet, 22));
221  // Neutral hadrons
222  CandPtrs pfnhs = qcuts_->filterCandRefs(pfCandidatesByPdgId(*jet, 130));
223 
224  // All the extra junk
225  CandPtrs regionalJunk = qcuts_->filterCandRefs(regionalExtras);
226 
227  /***********************************************
228  ****** Lead Candidate Finding **********
229  ***********************************************/
230 
231  // Define our matching cone and filters
232  double matchingCone = matchingCone_(*jet);
233  CandPtrDRFilter matchingConeFilter(jet->p4(), 0, matchingCone);
234 
235  // Find the maximum PFCharged hadron in the matching cone. The call to
236  // PFCandidates always a sorted list, so we can just take the first if it
237  // if it exists.
238  CandidatePtr leadPFCH;
239  CandPtrs::iterator leadPFCH_iter = std::find_if(pfchs.begin(), pfchs.end(), matchingConeFilter);
240 
241  if (leadPFCH_iter != pfchs.end()) {
242  leadPFCH = *leadPFCH_iter;
243  // Set leading candidate
244  tau.setleadChargedHadrCand(leadPFCH);
245  } else {
246  // If there is no leading charged candidate at all, return nothing - the
247  // producer class that owns the plugin will build a null tau if desired.
248  return output.release();
249  }
250 
251  // Find the leading neutral candidate
252  CandidatePtr leadPFGamma;
253  CandPtrs::iterator leadPFGamma_iter = std::find_if(pfGammas.begin(), pfGammas.end(), matchingConeFilter);
254 
255  if (leadPFGamma_iter != pfGammas.end()) {
256  leadPFGamma = *leadPFGamma_iter;
257  // Set leading neutral candidate
258  tau.setleadNeutralCand(leadPFGamma);
259  }
260 
261  CandidatePtr leadPFCand;
262  // Always use the leadPFCH if it is above our threshold
263  if (leadPFCH.isNonnull() && leadPFCH->pt() > leadObjecPtThreshold_) {
264  leadPFCand = leadPFCH;
265  } else if (leadPFGamma.isNonnull() && leadPFGamma->pt() > leadObjecPtThreshold_) {
266  // Otherwise use the lead Gamma if it is above threshold
267  leadPFCand = leadPFGamma;
268  } else {
269  // If both are too low PT, just take the charged one
270  leadPFCand = leadPFCH;
271  }
272 
273  tau.setleadCand(leadPFCand);
274 
275  // Our cone axis is defined about the lead charged hadron
276  reco::Candidate::LorentzVector coneAxis = leadPFCH->p4();
277 
278  /***********************************************
279  ****** Cone Construction **********
280  ***********************************************/
281 
282  // Define the signal and isolation cone sizes for this jet and build filters
283  // to select elements in the given DeltaR regions
284 
285  CandPtrDRFilter signalConePFCHFilter(coneAxis, -0.1, signalConeChargedHadrons_(*jet));
286  CandPtrDRFilter signalConePFNHFilter(coneAxis, -0.1, signalConeNeutralHadrons_(*jet));
287  PiZeroDRFilter signalConePiZeroFilter(coneAxis, -0.1, signalConePiZeros_(*jet));
288 
289  CandPtrDRFilter isoConePFCHFilter(coneAxis, signalConeChargedHadrons_(*jet), isoConeChargedHadrons_(*jet));
290  CandPtrDRFilter isoConePFGammaFilter(coneAxis, signalConePiZeros_(*jet), isoConePiZeros_(*jet));
291  CandPtrDRFilter isoConePFNHFilter(coneAxis, signalConeNeutralHadrons_(*jet), isoConeNeutralHadrons_(*jet));
292  PiZeroDRFilter isoConePiZeroFilter(coneAxis, signalConePiZeros_(*jet), isoConePiZeros_(*jet));
293 
294  // Additionally make predicates to select the different PF object types
295  // of the regional junk objects to add to the iso cone.
297 
298  xclean::FilterCandByAbsPdgId pfchCandSelector(211);
299  xclean::FilterCandByAbsPdgId pfgammaCandSelector(22);
300  xclean::FilterCandByAbsPdgId pfnhCandSelector(130);
301 
302  // Predicate to select the regional junk in the iso cone by PF id
303  RegionalJunkConeAndIdFilter pfChargedJunk(pfchCandSelector, // select charged stuff from junk
304  isoConePFCHFilter // only take those in iso cone
305  );
306 
307  RegionalJunkConeAndIdFilter pfGammaJunk(pfgammaCandSelector, // select gammas from junk
308  isoConePFGammaFilter // only take those in iso cone
309  );
310 
311  RegionalJunkConeAndIdFilter pfNeutralJunk(pfnhCandSelector, // select neutral stuff from junk
312  isoConePFNHFilter // select stuff in iso cone
313  );
314 
315  // Build filter iterators select the signal charged stuff.
316  CandPtrDRFilterIter signalPFCHCands_begin(signalConePFCHFilter, pfchs.begin(), pfchs.end());
317  CandPtrDRFilterIter signalPFCHCands_end(signalConePFCHFilter, pfchs.end(), pfchs.end());
318  CandPtrs signalPFCHs;
319  int numSignalPFCHs = 0;
320  CandPtrs isolationPFCHs;
321  int numIsolationPFCHs = 0;
322  for (CandPtrDRFilterIter iter = signalPFCHCands_begin; iter != signalPFCHCands_end; ++iter) {
323  if (numSignalPFCHs < maxSignalConeChargedHadrons_ || maxSignalConeChargedHadrons_ == -1) {
324  //std::cout << "adding signalPFCH #" << numSignalPFCHs << ": Pt = " << (*iter)->pt() << ", eta = " << (*iter)->eta() << ", phi = " << (*iter)->phi() << std::endl;
325  signalPFCHs.push_back(*iter);
326  ++numSignalPFCHs;
327  } else {
328  //std::cout << "maxSignalConeChargedHadrons reached"
329  // << " --> adding isolationPFCH #" << numIsolationPFCHs << ": Pt = " << (*iter)->pt() << ", eta = " << (*iter)->eta() << ", phi = " << (*iter)->phi() << std::endl;
330  isolationPFCHs.push_back(*iter);
331  ++numIsolationPFCHs;
332  }
333  }
334  CandPtrs::const_iterator signalPFCHs_begin = signalPFCHs.begin();
335  CandPtrs::const_iterator signalPFCHs_end = signalPFCHs.end();
336 
337  // Cross clean pi zero content using signal cone charged hadron constituents.
338  xclean::CrossCleanPiZeros<CandPtrDRFilterIter> piZeroXCleaner(signalPFCHCands_begin, signalPFCHCands_end);
339  std::vector<reco::RecoTauPiZero> cleanPiZeros = piZeroXCleaner(piZeros);
340 
341  // For the rest of the constituents, we need to filter any constituents that
342  // are already contained in the pizeros (i.e. electrons)
343  xclean::CrossCleanPtrs<PiZeroList::const_iterator> pfCandXCleaner(cleanPiZeros.begin(), cleanPiZeros.end());
344 
345  auto isolationPFCHCands_begin(boost::make_filter_iterator(
346  xclean::makePredicateAND(isoConePFCHFilter, pfCandXCleaner), pfchs.begin(), pfchs.end()));
347  auto isolationPFCHCands_end(boost::make_filter_iterator(
348  xclean::makePredicateAND(isoConePFCHFilter, pfCandXCleaner), pfchs.end(), pfchs.end()));
349  for (auto iter = isolationPFCHCands_begin; iter != isolationPFCHCands_end; ++iter) {
350  //std::cout << "adding isolationPFCH #" << numIsolationPFCHs << ": Pt = " << (*iter)->pt() << ", eta = " << (*iter)->eta() << ", phi = " << (*iter)->phi() << std::endl;
351  isolationPFCHs.push_back(*iter);
352  ++numIsolationPFCHs;
353  }
354  CandPtrs::const_iterator isolationPFCHs_begin = isolationPFCHs.begin();
355  CandPtrs::const_iterator isolationPFCHs_end = isolationPFCHs.end();
356 
357  // Build signal charged hadrons
358  tau.addPFCands(
359  RecoTauConstructor::kSignal, RecoTauConstructor::kChargedHadron, signalPFCHs_begin, signalPFCHs_end);
360 
361  tau.addPFCands(RecoTauConstructor::kSignal,
363  boost::make_filter_iterator(
364  xclean::makePredicateAND(signalConePFNHFilter, pfCandXCleaner), pfnhs.begin(), pfnhs.end()),
365  boost::make_filter_iterator(
366  xclean::makePredicateAND(signalConePFNHFilter, pfCandXCleaner), pfnhs.end(), pfnhs.end()));
367 
368  // Build signal PiZeros
369  tau.addPiZeros(RecoTauConstructor::kSignal,
370  PiZeroDRFilterIter(signalConePiZeroFilter, cleanPiZeros.begin(), cleanPiZeros.end()),
371  PiZeroDRFilterIter(signalConePiZeroFilter, cleanPiZeros.end(), cleanPiZeros.end()));
372 
373  // Build isolation charged hadrons
374  tau.addPFCands(
375  RecoTauConstructor::kIsolation, RecoTauConstructor::kChargedHadron, isolationPFCHs_begin, isolationPFCHs_end);
376 
377  // Add all the stuff in the isolation cone that wasn't in the jet constituents
380  boost::make_filter_iterator(pfChargedJunk, regionalJunk.begin(), regionalJunk.end()),
381  boost::make_filter_iterator(pfChargedJunk, regionalJunk.end(), regionalJunk.end()));
382 
383  // Build isolation neutral hadrons
386  boost::make_filter_iterator(
387  xclean::makePredicateAND(isoConePFNHFilter, pfCandXCleaner), pfnhs.begin(), pfnhs.end()),
388  boost::make_filter_iterator(
389  xclean::makePredicateAND(isoConePFNHFilter, pfCandXCleaner), pfnhs.end(), pfnhs.end()));
390 
391  // Add regional stuff not in jet
394  boost::make_filter_iterator(pfNeutralJunk, regionalJunk.begin(), regionalJunk.end()),
395  boost::make_filter_iterator(pfNeutralJunk, regionalJunk.end(), regionalJunk.end()));
396 
397  // Build isolation PiZeros
399  PiZeroDRFilterIter(isoConePiZeroFilter, cleanPiZeros.begin(), cleanPiZeros.end()),
400  PiZeroDRFilterIter(isoConePiZeroFilter, cleanPiZeros.end(), cleanPiZeros.end()));
401 
402  // Add regional stuff not in jet
405  boost::make_filter_iterator(pfGammaJunk, regionalJunk.begin(), regionalJunk.end()),
406  boost::make_filter_iterator(pfGammaJunk, regionalJunk.end(), regionalJunk.end()));
407 
408  // Put our built tau in the output - 'false' indicates don't build the
409  // leading candidates, we already did that explicitly above.
410 
411  std::unique_ptr<reco::PFTau> tauPtr = tau.get(false);
412 
413  // Set event vertex position for tau
414  reco::VertexRef primaryVertexRef = primaryVertex(*tauPtr);
415  if (primaryVertexRef.isNonnull())
416  tauPtr->setVertex(primaryVertexRef->position());
417 
418  // Set missing tau quantities
420 
421  output.push_back(std::move(tauPtr));
422  return output.release();
423  }
424  } // namespace tau
425 } // namespace reco
426 
reco::tau::xclean::CrossCleanPiZeros
Transform a pizero to remove given candidates.
Definition: RecoTauCrossCleaning.h:14
reco::LeafCandidate::setPdgId
void setPdgId(int pdgId) final
Definition: LeafCandidate.h:178
muons2muons_cfi.photon
photon
Definition: muons2muons_cfi.py:28
reco::PFTau::kNull
Definition: PFTau.h:39
reco::tau::RecoTauBuilderConePlugin::isoConeNeutralHadrons_
JetFunc isoConeNeutralHadrons_
Definition: RecoTauBuilderConePlugin.cc:63
reco::tau::pfChargedCands
std::vector< CandidatePtr > pfChargedCands(const Jet &jet, bool sort=true)
Extract all non-neutral candidates from a PFJet.
Definition: RecoTauCommonUtilities.cc:93
electrons_cff.bool
bool
Definition: electrons_cff.py:372
reco::tau::xclean::CrossCleanPtrs::initialize
void initialize(const PtrIter &particlesBegin, const PtrIter &particlesEnd)
Definition: RecoTauCrossCleaning.h:80
StringObjectFunction< reco::Jet >
reco::tau::RecoTauConstructor
Definition: RecoTauConstructor.h:40
reco::tau::RecoTauQualityCuts
Definition: RecoTauQualityCuts.h:34
metsig::tau
Definition: SignAlgoResolutions.h:49
reco::tau::RecoTauConstructor::kSignal
Definition: RecoTauConstructor.h:42
HLT_2018_cff.maxPiZeros
maxPiZeros
Definition: HLT_2018_cff.py:31797
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:32
min
T min(T a, T b)
Definition: MathUtil.h:58
HLT_2018_cff.nCharged
nCharged
Definition: HLT_2018_cff.py:31800
reco::tau::RecoTauBuilderPlugin::return_type
std::unique_ptr< output_type > return_type
Definition: RecoTauBuilderPlugins.h:59
RecoTauConstructor.h
reco::tau::RecoTauBuilderConePlugin::leadObjecPtThreshold_
double leadObjecPtThreshold_
Definition: RecoTauBuilderConePlugin.cc:50
reco::tau::RecoTauBuilderConePlugin::maxSignalConeChargedHadrons_
int maxSignalConeChargedHadrons_
Definition: RecoTauBuilderConePlugin.cc:65
reco::PFTau::signalChargedHadrCands
const std::vector< reco::CandidatePtr > & signalChargedHadrCands() const
Charged hadrons in signal region.
Definition: PFTau.cc:75
reco::tau::RecoTauBuilderPlugin::getPFCands
const edm::Handle< edm::View< reco::Candidate > > & getPFCands() const
Hack to be able to convert Ptrs to Refs.
Definition: RecoTauBuilderPlugins.h:80
reco::tau::RecoTauBuilderConePlugin::signalConePiZeros_
JetFunc signalConePiZeros_
Definition: RecoTauBuilderConePlugin.cc:59
reco::tau::RecoTauBuilderPlugin
Definition: RecoTauBuilderPlugins.h:56
reco::PFTau
Definition: PFTau.h:36
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition: LeafCandidate.h:146
reco::tau::RecoTauBuilderConePlugin::signalConeChargedHadrons_
JetFunc signalConeChargedHadrons_
Definition: RecoTauBuilderConePlugin.cc:57
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
reco::PFTau::kRareDecayMode
Definition: PFTau.h:55
ConeTools.h
reco::tau::RecoTauBuilderConePlugin::matchingCone_
JetFunc matchingCone_
Definition: RecoTauBuilderConePlugin.cc:56
reco::tau::PiZeroList
std::vector< RecoTauPiZero > PiZeroList
Definition: RecoTauBuilderCombinatoricPlugin.cc:26
reco::tau::flattenPiZeros
std::vector< CandidatePtr > flattenPiZeros(const std::vector< RecoTauPiZero >::const_iterator &, const std::vector< RecoTauPiZero >::const_iterator &)
Flatten a list of pi zeros into a list of there constituent PFCandidates.
Definition: RecoTauCommonUtilities.cc:43
RecoTauPiZero.h
HLT_2018_cff.minRelPhotonSumPt_outsideSignalCone
minRelPhotonSumPt_outsideSignalCone
Definition: HLT_2018_cff.py:31837
reco::tau::RecoTauBuilderConePlugin::RecoTauBuilderConePlugin
RecoTauBuilderConePlugin(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
Definition: RecoTauBuilderConePlugin.cc:77
reco::tau::RecoTauBuilderConePlugin::isoConePiZeros_
JetFunc isoConePiZeros_
Definition: RecoTauBuilderConePlugin.cc:61
edm::Ref< VertexCollection >
reco::tau::RecoTauBuilderConePlugin::qcuts_
std::unique_ptr< RecoTauQualityCuts > qcuts_
Definition: RecoTauBuilderConePlugin.cc:46
deltaR.h
reco::tau::RecoTauConstructor::kGamma
Definition: RecoTauConstructor.h:44
reco::tau::RecoTauBuilderConePlugin::usePFLeptonsAsChargedHadrons_
bool usePFLeptonsAsChargedHadrons_
Definition: RecoTauBuilderConePlugin.cc:48
MakerMacros.h
HLT_2018_cff.matchingCone
matchingCone
Definition: HLT_2018_cff.py:31293
reco::PFTau::signalPiZeroCandidates
const std::vector< RecoTauPiZero > & signalPiZeroCandidates() const
Retrieve the association of signal region gamma candidates into candidate PiZeros.
Definition: PFTau.cc:239
hltPFPuppi_cfi.cone
cone
Definition: hltPFPuppi_cfi.py:32
reco::tau::RecoTauBuilderPlugin::output_type
boost::ptr_vector< reco::PFTau > output_type
Definition: RecoTauBuilderPlugins.h:58
reco::tau::RecoTauBuilderConePlugin::operator()
return_type operator()(const reco::JetBaseRef &jet, const std::vector< reco::PFRecoTauChargedHadron > &chargedHadrons, const std::vector< RecoTauPiZero > &piZeros, const std::vector< CandidatePtr > &regionalExtras) const override
Definition: RecoTauBuilderConePlugin.cc:179
HLT_2018_cff.minAbsPhotonSumPt_outsideSignalCone
minAbsPhotonSumPt_outsideSignalCone
Definition: HLT_2018_cff.py:31835
reco::tau::RecoTauBuilderConePlugin::signalConeSizeToStore_
StringObjectFunction< reco::PFTau > signalConeSizeToStore_
Definition: RecoTauBuilderConePlugin.cc:60
RecoTauCommonUtilities.h
reco::tau::xclean::makePredicateAND
PredicateAND< P1, P2 > makePredicateAND(const P1 &p1, const P2 &p2)
Definition: RecoTauCrossCleaning.h:142
reco::tau::xclean::CrossCleanPtrs
Definition: RecoTauCrossCleaning.h:74
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
reco::tau::SortPFCandsDescendingPt
Definition: RecoTauCommonUtilities.h:33
reco::tau::RecoTauBuilderConePlugin::setTauQuantities
void setTauQuantities(reco::PFTau &aTau, double minAbsPhotonSumPt_insideSignalCone=2.5, double minRelPhotonSumPt_insideSignalCone=0., double minAbsPhotonSumPt_outsideSignalCone=1.e+9, double minRelPhotonSumPt_outsideSignalCone=1.e+9) const
Definition: RecoTauBuilderConePlugin.cc:117
reco::tau::RecoTauBuilderConePlugin
Definition: RecoTauBuilderConePlugin.cc:35
reco::PFTau::leadChargedHadrCand
const CandidatePtr & leadChargedHadrCand() const
Definition: PFTau.cc:62
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Vertex.h
RecoTauQualityCuts.h
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
reco::tau::xclean::FilterCandByAbsPdgId
Definition: RecoTauCrossCleaning.h:112
reco::tau::RecoTauBuilderConePlugin::minAbsPhotonSumPt_insideSignalCone_
double minAbsPhotonSumPt_insideSignalCone_
Definition: RecoTauBuilderConePlugin.cc:66
reco::tau::pfGammas
std::vector< CandidatePtr > pfGammas(const Jet &jet, bool sort=true)
Extract all pfGammas from a PFJet.
Definition: RecoTauCommonUtilities.cc:91
edm::ParameterSet
Definition: ParameterSet.h:36
reco::tau::cone::CandPtrDRFilterIter
boost::filter_iterator< CandPtrDRFilter, std::vector< CandidatePtr >::const_iterator > CandPtrDRFilterIter
Definition: ConeTools.h:47
reco::tau::cone::PiZeroDRFilterIter
boost::filter_iterator< PiZeroDRFilter, std::vector< RecoTauPiZero >::const_iterator > PiZeroDRFilterIter
Definition: ConeTools.h:54
edmplugin::PluginFactory
Definition: PluginFactory.h:34
reco::tau::RecoTauBuilderPlugin::primaryVertex
reco::VertexRef primaryVertex(const reco::JetBaseRef &jet) const
Get primary vertex associated to this jet.
Definition: RecoTauBuilderPlugins.h:83
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::PFTau::setDecayMode
void setDecayMode(const hadronicDecayMode &)
Definition: PFTau.cc:326
createfilelist.int
int
Definition: createfilelist.py:10
reco::tau::RecoTauConstructor::kIsolation
Definition: RecoTauConstructor.h:42
reco::LeafCandidate::p4
const LorentzVector & p4() const final
four-momentum Lorentz vector
Definition: LeafCandidate.h:114
reco::tau::RecoTauConstructor::kChargedHadron
Definition: RecoTauConstructor.h:44
CandPtrs
std::vector< reco::CandidatePtr > CandPtrs
Definition: RecoTauCommonUtilities.cc:13
symbols.dm
dm
Definition: symbols.py:66
reco::LeafCandidate::charge
int charge() const final
electric charge
Definition: LeafCandidate.h:106
reco::tau::RecoTauConstructor::kNeutralHadron
Definition: RecoTauConstructor.h:44
reco::tau::cone::CandPtrDRFilter
DeltaRPtrFilter< CandidatePtr > CandPtrDRFilter
Definition: ConeTools.h:46
edm::Ptr< Candidate >
reco::Candidate
Definition: Candidate.h:27
RecoTauBuilderPlugins.h
RecoTauCrossCleaning.h
HLT_2018_cff.nPiZeros
nPiZeros
Definition: HLT_2018_cff.py:31799
edm::getParameterSet
ParameterSet const & getParameterSet(ParameterSetID const &id)
Definition: ParameterSet.cc:855
reco::RecoTauPiZero
Definition: RecoTauPiZero.h:7
HLT_2018_cff.minRelPhotonSumPt_insideSignalCone
minRelPhotonSumPt_insideSignalCone
Definition: HLT_2018_cff.py:31301
reco::PFTau::kOneProngNPiZero
Definition: PFTau.h:44
eostools.move
def move(src, dest)
Definition: eostools.py:511
reco::tau::pfCandidatesByPdgId
std::vector< CandidatePtr > pfCandidatesByPdgId(const Jet &jet, int pdgId, bool sort=true)
Definition: RecoTauCommonUtilities.cc:70
std
Definition: JetResolutionObject.h:76
reco::tau::RecoTauBuilderConePlugin::signalConeNeutralHadrons_
JetFunc signalConeNeutralHadrons_
Definition: RecoTauBuilderConePlugin.cc:62
metsig::jet
Definition: SignAlgoResolutions.h:47
reco::LeafCandidate::setCharge
void setCharge(Charge q) final
set electric charge
Definition: LeafCandidate.h:108
reco::PFTau::hadronicDecayMode
hadronicDecayMode
Definition: PFTau.h:38
PFTau.h
reco::tau::RecoTauBuilderConePlugin::JetFunc
StringObjectFunction< reco::Jet > JetFunc
Definition: RecoTauBuilderConePlugin.cc:53
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
edm::Ptr::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
edm::RefToBase< Jet >
reco::PFTau::signalConeSize
double signalConeSize() const
Size of signal cone.
Definition: PFTau.h:174
PFRecoTauChargedHadron.h
reco::tau::RecoTauBuilderConePlugin::isoConeChargedHadrons_
JetFunc isoConeChargedHadrons_
Definition: RecoTauBuilderConePlugin.cc:58
reco::CandidatePtr
edm::Ptr< Candidate > CandidatePtr
persistent reference to an object in a collection of Candidate objects
Definition: CandidateFwd.h:25
reco::tau::xclean::PredicateAND
Definition: RecoTauCrossCleaning.h:126
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
reco::tau::cone::PiZeroDRFilter
DeltaRFilter< RecoTauPiZero > PiZeroDRFilter
Definition: ConeTools.h:53
reco::Candidate::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
reco::tau::RecoTauBuilderConePlugin::minRelPhotonSumPt_insideSignalCone_
double minRelPhotonSumPt_insideSignalCone_
Definition: RecoTauBuilderConePlugin.cc:67
StringObjectFunction.h
reco::tau::RecoTauBuilderConePlugin::~RecoTauBuilderConePlugin
~RecoTauBuilderConePlugin() override
Definition: RecoTauBuilderConePlugin.cc:38
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
HLT_2018_cff.minAbsPhotonSumPt_insideSignalCone
minAbsPhotonSumPt_insideSignalCone
Definition: HLT_2018_cff.py:31265
reco::tau::xclean::CrossCleanPiZeros::initialize
void initialize(const PtrIter &chargedHadronsBegin, const PtrIter &chargedHadronsEnd)
Definition: RecoTauCrossCleaning.h:25
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37