CMS 3D CMS Logo

PFRecoTauChargedHadronProducer.cc
Go to the documentation of this file.
1 /*
2  * PFRecoTauChargedHadronProducer
3  *
4  * Author: Christian Veelken, LLR
5  *
6  * Associates reconstructed ChargedHadrons to PFJets. The ChargedHadrons are built using one
7  * or more RecoTauBuilder plugins. Any overlaps (ChargedHadrons sharing tracks)
8  * are removed, with the best ChargedHadron candidates taken. The 'best' are defined
9  * via the input list of PFRecoTauChargedHadronQualityPlugins, which form a
10  * lexicograpical ranking.
11  *
12  */
13 
18 
21 
24 
30 
41 
43 
44 #include <boost/ptr_container/ptr_vector.hpp>
45 #include <boost/ptr_container/ptr_list.hpp>
46 
47 #include <memory>
48 
49 #include <algorithm>
50 #include <cmath>
51 #include <functional>
52 #include <list>
53 #include <set>
54 #include <string>
55 #include <vector>
56 
58 public:
61 
64  void produce(edm::Event& evt, const edm::EventSetup& es) override;
65  template <typename T>
66  void print(const T& chargedHadrons);
67 
68  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
69 
70 private:
71  typedef boost::ptr_vector<Builder> builderList;
72  typedef boost::ptr_vector<Ranker> rankerList;
73  typedef boost::ptr_vector<reco::PFRecoTauChargedHadron> ChargedHadronVector;
74  typedef boost::ptr_list<reco::PFRecoTauChargedHadron> ChargedHadronList;
75 
77 
79 
80  // input jet collection
83  double minJetPt_;
84  double maxJetAbsEta_;
85 
86  // plugins for building and ranking ChargedHadron candidates
89 
90  std::unique_ptr<ChargedHadronPredicate> predicate_;
91 
92  // output selector
93  std::unique_ptr<StringCutObjectSelector<reco::PFRecoTauChargedHadron>> outputSelector_;
94 
95  // flag to enable/disable debug print-out
97 };
98 
100  : moduleLabel_(cfg.getParameter<std::string>("@module_label")) {
101  srcJets_ = cfg.getParameter<edm::InputTag>("jetSrc");
102  Jets_token = consumes<reco::JetView>(srcJets_);
103  minJetPt_ = cfg.getParameter<double>("minJetPt");
104  maxJetAbsEta_ = cfg.getParameter<double>("maxJetAbsEta");
105  verbosity_ = cfg.getParameter<int>("verbosity");
106 
107  // get set of ChargedHadron builder plugins
108  edm::VParameterSet psets_builders = cfg.getParameter<edm::VParameterSet>("builders");
109  for (edm::VParameterSet::const_iterator pset = psets_builders.begin(); pset != psets_builders.end(); ++pset) {
110  std::string pluginType = pset->getParameter<std::string>("plugin");
111  edm::ParameterSet pset_modified = (*pset);
112  pset_modified.addParameter<int>("verbosity", verbosity_);
113  builders_.push_back(
114  PFRecoTauChargedHadronBuilderPluginFactory::get()->create(pluginType, pset_modified, consumesCollector()));
115  }
116 
117  // get set of plugins for ranking ChargedHadrons in quality
118  edm::VParameterSet psets_rankers = cfg.getParameter<edm::VParameterSet>("ranking");
119  for (edm::VParameterSet::const_iterator pset = psets_rankers.begin(); pset != psets_rankers.end(); ++pset) {
120  std::string pluginType = pset->getParameter<std::string>("plugin");
121  edm::ParameterSet pset_modified = (*pset);
122  pset_modified.addParameter<int>("verbosity", verbosity_);
123  rankers_.push_back(PFRecoTauChargedHadronQualityPluginFactory::get()->create(pluginType, pset_modified));
124  }
125 
126  // build the sorting predicate
127  predicate_ = std::make_unique<ChargedHadronPredicate>(rankers_);
128 
129  // check if we want to apply a final output selection
130  std::string selection = cfg.getParameter<std::string>("outputSelection");
131  if (!selection.empty()) {
132  outputSelector_ = std::make_unique<StringCutObjectSelector<reco::PFRecoTauChargedHadron>>(selection);
133  }
134 
135  produces<reco::PFJetChargedHadronAssociation>();
136 }
137 
139  if (verbosity_) {
140  edm::LogPrint("PFRecoTauChHProducer") << "<PFRecoTauChargedHadronProducer::produce>:";
141  edm::LogPrint("PFRecoTauChHProducer") << " moduleLabel = " << moduleLabel_;
142  }
143 
144  // give each of our plugins a chance at doing something with the edm::Event
145  for (auto& builder : builders_) {
146  builder.setup(evt, es);
147  }
148 
149  // get a view of our jets via the base candidates
151  evt.getByToken(Jets_token, jets);
152 
153  // convert the view to a RefVector of actual PFJets
155  size_t nElements = jets->size();
156  for (size_t i = 0; i < nElements; ++i) {
157  pfJets.push_back(jets->refAt(i));
158  }
159 
160  // make our association
161  std::unique_ptr<reco::PFJetChargedHadronAssociation> pfJetChargedHadronAssociations;
162 
163  if (!pfJets.empty()) {
164  pfJetChargedHadronAssociations = std::make_unique<reco::PFJetChargedHadronAssociation>(reco::JetRefBaseProd(jets));
165  } else {
166  pfJetChargedHadronAssociations = std::make_unique<reco::PFJetChargedHadronAssociation>();
167  }
168 
169  // loop over our jets
170  for (const auto& pfJet : pfJets) {
171  if (pfJet->pt() - minJetPt_ < 1e-5)
172  continue;
173  if (std::abs(pfJet->eta()) - maxJetAbsEta_ > -1e-5)
174  continue;
175 
176  // build global list of ChargedHadron candidates for each jet
177  ChargedHadronList uncleanedChargedHadrons;
178 
179  // merge candidates reconstructed by all desired algorithm plugins
180  for (auto const& builder : builders_) {
181  try {
182  ChargedHadronVector result(builder(*pfJet));
183  if (verbosity_) {
184  edm::LogPrint("PFRecoTauChHProducer") << "result of builder = " << builder.name() << ":";
185  print(result);
186  }
187  uncleanedChargedHadrons.transfer(uncleanedChargedHadrons.end(), result);
188  } catch (cms::Exception& exception) {
189  edm::LogError("BuilderPluginException")
190  << "Exception caught in builder plugin " << builder.name() << ", rethrowing" << std::endl;
191  throw exception;
192  }
193  }
194 
195  // rank the candidates according to our quality plugins
196  uncleanedChargedHadrons.sort(*predicate_);
197 
198  // define collection of cleaned ChargedHadrons;
199  std::vector<reco::PFRecoTauChargedHadron> cleanedChargedHadrons;
200 
201  // keep track of neutral PFCandidates, charged PFCandidates and tracks "used" by ChargedHadron candidates in the clean collection
202  typedef std::pair<double, double> etaPhiPair;
203  std::list<etaPhiPair> tracksInCleanCollection;
204  std::set<reco::CandidatePtr> neutralPFCandsInCleanCollection;
205 
206  while (!uncleanedChargedHadrons.empty()) {
207  // get next best ChargedHadron candidate
208  std::unique_ptr<reco::PFRecoTauChargedHadron> nextChargedHadron(uncleanedChargedHadrons.pop_front().release());
209  if (verbosity_) {
210  edm::LogPrint("PFRecoTauChHProducer") << "processing nextChargedHadron:";
211  edm::LogPrint("PFRecoTauChHProducer") << (*nextChargedHadron);
212  }
213 
214  // discard candidates which fail final output selection
215  if (!(*outputSelector_)(*nextChargedHadron))
216  continue;
217 
218  const reco::Track* track = nullptr;
219  if (nextChargedHadron->getChargedPFCandidate().isNonnull()) {
220  const reco::PFCandidate* chargedPFCand =
221  dynamic_cast<const reco::PFCandidate*>(&*nextChargedHadron->getChargedPFCandidate());
222  if (chargedPFCand) {
223  if (chargedPFCand->trackRef().isNonnull())
224  track = chargedPFCand->trackRef().get();
225  else if (chargedPFCand->muonRef().isNonnull() && chargedPFCand->muonRef()->innerTrack().isNonnull())
226  track = chargedPFCand->muonRef()->innerTrack().get();
227  else if (chargedPFCand->muonRef().isNonnull() && chargedPFCand->muonRef()->globalTrack().isNonnull())
228  track = chargedPFCand->muonRef()->globalTrack().get();
229  else if (chargedPFCand->muonRef().isNonnull() && chargedPFCand->muonRef()->outerTrack().isNonnull())
230  track = chargedPFCand->muonRef()->outerTrack().get();
231  else if (chargedPFCand->gsfTrackRef().isNonnull())
232  track = chargedPFCand->gsfTrackRef().get();
233  } else {
234  track = nextChargedHadron->getChargedPFCandidate()->bestTrack();
235  }
236  }
237  if (track == nullptr) {
238  if (nextChargedHadron->getTrack().isNonnull()) {
239  track = nextChargedHadron->getTrack().get();
240  } else if (nextChargedHadron->getLostTrackCandidate().isNonnull()) {
241  track = nextChargedHadron->getLostTrackCandidate()->bestTrack();
242  }
243  }
244 
245  // discard candidate in case its track is "used" by any ChargedHadron in the clean collection
246  bool isTrack_overlap = false;
247  if (track) {
248  double track_eta = track->eta();
249  double track_phi = track->phi();
250  for (std::list<etaPhiPair>::const_iterator trackInCleanCollection = tracksInCleanCollection.begin();
251  trackInCleanCollection != tracksInCleanCollection.end();
252  ++trackInCleanCollection) {
253  double dR = deltaR(track_eta, track_phi, trackInCleanCollection->first, trackInCleanCollection->second);
254  if (dR < 1.e-4)
255  isTrack_overlap = true;
256  }
257  }
258  if (verbosity_) {
259  edm::LogPrint("PFRecoTauChHProducer") << "isTrack_overlap = " << isTrack_overlap;
260  }
261  if (isTrack_overlap)
262  continue;
263 
264  // discard ChargedHadron candidates without track in case they are close to neutral PFCandidates "used" by ChargedHadron candidates in the clean collection
265  bool isNeutralPFCand_overlap = false;
266  if (nextChargedHadron->algoIs(reco::PFRecoTauChargedHadron::kPFNeutralHadron)) {
267  for (std::set<reco::CandidatePtr>::const_iterator neutralPFCandInCleanCollection =
268  neutralPFCandsInCleanCollection.begin();
269  neutralPFCandInCleanCollection != neutralPFCandsInCleanCollection.end();
270  ++neutralPFCandInCleanCollection) {
271  if ((*neutralPFCandInCleanCollection) == nextChargedHadron->getChargedPFCandidate())
272  isNeutralPFCand_overlap = true;
273  }
274  }
275  if (verbosity_) {
276  edm::LogPrint("PFRecoTauChHProducer") << "isNeutralPFCand_overlap = " << isNeutralPFCand_overlap;
277  }
278  if (isNeutralPFCand_overlap)
279  continue;
280 
281  // find neutral PFCandidates that are not "used" by any ChargedHadron in the clean collection
282  std::vector<reco::CandidatePtr> uniqueNeutralPFCands;
283  std::set_difference(nextChargedHadron->getNeutralPFCandidates().begin(),
284  nextChargedHadron->getNeutralPFCandidates().end(),
285  neutralPFCandsInCleanCollection.begin(),
286  neutralPFCandsInCleanCollection.end(),
287  std::back_inserter(uniqueNeutralPFCands));
288 
289  if (uniqueNeutralPFCands.size() ==
290  nextChargedHadron->getNeutralPFCandidates()
291  .size()) { // all neutral PFCandidates are unique, add ChargedHadron candidate to clean collection
292  if (track)
293  tracksInCleanCollection.push_back(std::make_pair(track->eta(), track->phi()));
294  neutralPFCandsInCleanCollection.insert(nextChargedHadron->getNeutralPFCandidates().begin(),
295  nextChargedHadron->getNeutralPFCandidates().end());
296  if (verbosity_) {
297  edm::LogPrint("PFRecoTauChHProducer") << "--> adding nextChargedHadron to output collection.";
298  }
299  cleanedChargedHadrons.push_back(*nextChargedHadron);
300  } else { // remove overlapping neutral PFCandidates, reevaluate ranking criterion and process ChargedHadron candidate again
301  nextChargedHadron->neutralPFCandidates_.clear();
302  for (auto const& neutralPFCand : uniqueNeutralPFCands) {
303  nextChargedHadron->neutralPFCandidates_.push_back(neutralPFCand);
304  }
305  // update ChargedHadron four-momentum
306  reco::tau::setChargedHadronP4(*nextChargedHadron);
307  // reinsert ChargedHadron candidate into list of uncleaned candidates,
308  // at position according to new rank
309  ChargedHadronList::iterator insertionPoint = std::lower_bound(
310  uncleanedChargedHadrons.begin(), uncleanedChargedHadrons.end(), *nextChargedHadron, *predicate_);
311  if (verbosity_) {
312  edm::LogPrint("PFRecoTauChHProducer") << "--> removing non-unique neutral PFCandidates and reinserting "
313  "nextChargedHadron in uncleaned collection.";
314  }
315  uncleanedChargedHadrons.insert(insertionPoint, std::move(nextChargedHadron));
316  }
317  }
318 
319  if (verbosity_) {
320  print(cleanedChargedHadrons);
321  }
322 
323  // add ChargedHadron-to-jet association
324  pfJetChargedHadronAssociations->setValue(pfJet.key(), cleanedChargedHadrons);
325  }
326 
327  evt.put(std::move(pfJetChargedHadronAssociations));
328 }
329 
330 template <typename T>
331 void PFRecoTauChargedHadronProducer::print(const T& chargedHadrons) {
332  for (typename T::const_iterator chargedHadron = chargedHadrons.begin(); chargedHadron != chargedHadrons.end();
333  ++chargedHadron) {
334  edm::LogPrint("PFRecoTauChHProducer") << (*chargedHadron);
335  edm::LogPrint("PFRecoTauChHProducer") << "Rankers:";
336  for (rankerList::const_iterator ranker = rankers_.begin(); ranker != rankers_.end(); ++ranker) {
337  const unsigned width = 25;
338  edm::LogPrint("PFRecoTauChHProducer")
339  << " " << std::setiosflags(std::ios::left) << std::setw(width) << ranker->name() << " "
340  << std::resetiosflags(std::ios::left) << std::setprecision(3) << (*ranker)(*chargedHadron) << std::endl;
341  }
342  }
343 }
344 
346  // ak4PFJetsRecoTauChargedHadrons
348  {
349  edm::ParameterSetDescription desc_ranking;
350  desc_ranking.add<std::string>("selectionPassFunction", "-pt");
351  desc_ranking.add<double>("selectionFailValue", 1000.0);
352  desc_ranking.add<std::string>("selection", "algoIs(\"kChargedPFCandidate\")");
353  desc_ranking.add<std::string>("name", "ChargedPFCandidate");
354  desc_ranking.add<std::string>("plugin", "PFRecoTauChargedHadronStringQuality");
355 
356  edm::ParameterSet pset_ranking;
357  pset_ranking.addParameter<std::string>("selectionPassFunction", "-pt");
358  pset_ranking.addParameter<double>("selectionFailValue", 1000.0);
359  pset_ranking.addParameter<std::string>("selection", "algoIs(\"kChargedPFCandidate\")");
360  pset_ranking.addParameter<std::string>("name", "ChargedPFCandidate");
361  pset_ranking.addParameter<std::string>("plugin", "PFRecoTauChargedHadronStringQuality");
362  std::vector<edm::ParameterSet> vpsd_ranking;
363  vpsd_ranking.push_back(pset_ranking);
364 
365  desc.addVPSet("ranking", desc_ranking, vpsd_ranking);
366  }
367 
368  desc.add<int>("verbosity", 0);
369  desc.add<double>("maxJetAbsEta", 2.5);
370  desc.add<std::string>("outputSelection", "pt > 0.5");
371  desc.add<double>("minJetPt", 14.0);
372  desc.add<edm::InputTag>("jetSrc", edm::InputTag("ak4PFJets"));
373 
374  {
375  edm::ParameterSetDescription desc_builders;
376  desc_builders.add<double>("minMergeChargedHadronPt");
377  desc_builders.add<std::string>("name");
378  desc_builders.add<std::string>("plugin");
379  desc_builders.addOptional<double>("dRcone");
380  desc_builders.addOptional<bool>("dRconeLimitedToJetArea");
381  desc_builders.addOptional<double>("dRmergeNeutralHadron");
382  desc_builders.addOptional<double>("dRmergePhoton");
383  desc_builders.addOptional<edm::InputTag>("srcTracks");
384 
385  edm::ParameterSetDescription desc_qualityCuts;
387  desc_builders.add<edm::ParameterSetDescription>("qualityCuts", desc_qualityCuts);
388 
389  desc_builders.add<double>("minMergeGammaEt");
390  desc_builders.add<int>("verbosity", 0);
391  desc_builders.add<double>("minMergeNeutralHadronEt");
392 
393  desc_builders.addOptional<double>("dRmergePhotonWrtChargedHadron");
394  desc_builders.addOptional<double>("dRmergePhotonWrtNeutralHadron");
395  desc_builders.addOptional<int>("maxUnmatchedBlockElementsNeutralHadron");
396  desc_builders.addOptional<double>("dRmergePhotonWrtElectron");
397  desc_builders.addOptional<std::vector<int>>("chargedHadronCandidatesParticleIds");
398  desc_builders.addOptional<int>("minBlockElementMatchesPhoton");
399  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtNeutralHadron");
400  desc_builders.addOptional<int>("maxUnmatchedBlockElementsPhoton");
401  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtOther");
402  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtElectron");
403  desc_builders.addOptional<int>("minBlockElementMatchesNeutralHadron");
404  desc_builders.addOptional<double>("dRmergePhotonWrtOther");
405  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtChargedHadron");
406 
407  edm::ParameterSet pset_builders;
408  pset_builders.addParameter<std::string>("name", "");
409  pset_builders.addParameter<std::string>("plugin", "");
411  pset_builders.addParameter<edm::ParameterSet>("qualityCuts", qualityCuts);
412  pset_builders.addParameter<int>("verbosity", 0);
413  std::vector<edm::ParameterSet> vpsd_builders;
414  vpsd_builders.push_back(pset_builders);
415 
416  desc.addVPSet("builders", desc_builders, vpsd_builders);
417  }
418 
419  descriptions.add("pfRecoTauChargedHadronProducer", desc);
420 }
421 
423 
ConfigurationDescriptions.h
reco::PFCandidate::trackRef
reco::TrackRef trackRef() const
Definition: PFCandidate.cc:408
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
reco::tau::PFRecoTauChargedHadronBuilderPlugin
Definition: PFRecoTauChargedHadronPlugins.h:35
mps_fire.i
i
Definition: mps_fire.py:428
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
Muon.h
PFRecoTauChargedHadronProducer::verbosity_
int verbosity_
Definition: PFRecoTauChargedHadronProducer.cc:96
MessageLogger.h
PFRecoTauChargedHadronPlugins.h
PFCandidate.h
edm::EDGetTokenT
Definition: EDGetToken.h:33
PFRecoTauChargedHadronProducer::Ranker
reco::tau::PFRecoTauChargedHadronQualityPlugin Ranker
Definition: PFRecoTauChargedHadronProducer.cc:60
PFJetChargedHadronAssociation.h
edm::LogPrint
Log< level::Warning, true > LogPrint
Definition: MessageLogger.h:130
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
PFJetCollection.h
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
edm::Ref::get
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232
edm::VParameterSet
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:34
EDProducer.h
singleTopDQM_cfi.jets
jets
Definition: singleTopDQM_cfi.py:42
beamerCreator.create
def create(alignables, pedeDump, additionalData, outputFile, config)
Definition: beamerCreator.py:44
Association.h
edm::Handle
Definition: AssociativeIterator.h:50
edm::ParameterSetDescription::addOptional
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:105
PFRecoTauChargedHadronProducer::Jets_token
edm::EDGetTokenT< reco::JetView > Jets_token
Definition: PFRecoTauChargedHadronProducer.cc:82
PFRecoTauChargedHadronProducer::builders_
builderList builders_
Definition: PFRecoTauChargedHadronProducer.cc:87
HPSPFTauProducerPuppi_cfi.chargedHadron
chargedHadron
Definition: HPSPFTauProducerPuppi_cfi.py:7
PFRecoTauChargedHadronProducer::ChargedHadronVector
boost::ptr_vector< reco::PFRecoTauChargedHadron > ChargedHadronVector
Definition: PFRecoTauChargedHadronProducer.cc:73
PFRecoTauChargedHadronProducer::ChargedHadronPredicate
reco::tau::RecoTauLexicographicalRanking< rankerList, reco::PFRecoTauChargedHadron > ChargedHadronPredicate
Definition: PFRecoTauChargedHadronProducer.cc:76
PFRecoTauChargedHadronProducer::moduleLabel_
std::string moduleLabel_
Definition: PFRecoTauChargedHadronProducer.cc:78
MakerMacros.h
reco::PFCandidate::muonRef
reco::MuonRef muonRef() const
Definition: PFCandidate.cc:421
reco::tau::setChargedHadronP4
void setChargedHadronP4(reco::PFRecoTauChargedHadron &chargedHadron, double scaleFactor_neutralPFCands=1.0)
Definition: pfRecoTauChargedHadronAuxFunctions.cc:31
Track.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
PFRecoTauChargedHadronProducer::minJetPt_
double minJetPt_
Definition: PFRecoTauChargedHadronProducer.cc:83
corrVsCorr.selection
selection
main part
Definition: corrVsCorr.py:100
PFRecoTauChargedHadronProducer::srcJets_
edm::InputTag srcJets_
Definition: PFRecoTauChargedHadronProducer.cc:81
reco::Track
Definition: Track.h:27
PFRecoTauChargedHadronProducer::produce
void produce(edm::Event &evt, const edm::EventSetup &es) override
Definition: PFRecoTauChargedHadronProducer.cc:138
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
RecoTauCommonUtilities.h
ParameterSetDescription.h
PFRecoTauChargedHadronProducer::outputSelector_
std::unique_ptr< StringCutObjectSelector< reco::PFRecoTauChargedHadron > > outputSelector_
Definition: PFRecoTauChargedHadronProducer.cc:93
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
RecoTauQualityCuts.h
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
pfDeepBoostedJetPreprocessParams_cfi.lower_bound
lower_bound
Definition: pfDeepBoostedJetPreprocessParams_cfi.py:15
edm::ParameterSet
Definition: ParameterSet.h:47
reco::PFCandidate::gsfTrackRef
reco::GsfTrackRef gsfTrackRef() const
Definition: PFCandidate.cc:440
PFRecoTauChargedHadronProducer::print
void print(const T &chargedHadrons)
Definition: PFRecoTauChargedHadronProducer.cc:331
Event.h
deltaR.h
edm::Ref::isNonnull
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:238
reco::tau::RecoTauLexicographicalRanking
Definition: RecoTauCleaningTools.h:9
edm::ParameterSet::addParameter
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:135
PFRecoTauChargedHadronProducer::rankers_
rankerList rankers_
Definition: PFRecoTauChargedHadronProducer.cc:88
PFRecoTauChargedHadronProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: PFRecoTauChargedHadronProducer.cc:345
PFRecoTauChargedHadronProducer::~PFRecoTauChargedHadronProducer
~PFRecoTauChargedHadronProducer() override
Definition: PFRecoTauChargedHadronProducer.cc:63
PFRecoTauChargedHadronProducer::Builder
reco::tau::PFRecoTauChargedHadronBuilderPlugin Builder
Definition: PFRecoTauChargedHadronProducer.cc:59
reco::tau::RecoTauQualityCuts::fillDescriptions
static void fillDescriptions(edm::ParameterSetDescription &descriptions)
Declare all parameters read from python config file.
Definition: RecoTauQualityCuts.cc:346
GsfTrack.h
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
edm::stream::EDProducer
Definition: EDProducer.h:36
PFRecoTauChargedHadronProducer::PFRecoTauChargedHadronProducer
PFRecoTauChargedHadronProducer(const edm::ParameterSet &cfg)
Definition: PFRecoTauChargedHadronProducer.cc:99
edm::EventSetup
Definition: EventSetup.h:58
PFRecoTauChargedHadronProducer
Definition: PFRecoTauChargedHadronProducer.cc:57
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
edm::RefToBaseVector< reco::Jet >
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
looper.cfg
cfg
Definition: looper.py:296
RecoTauCleaningTools.h
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
StringCutObjectSelector.h
reco::PFRecoTauChargedHadron::kPFNeutralHadron
Definition: PFRecoTauChargedHadron.h:32
reco::tau::PFRecoTauChargedHadronQualityPlugin
Definition: PFRecoTauChargedHadronPlugins.h:51
T
long double T
Definition: Basic3DVectorLD.h:48
PFRecoTauChargedHadronProducer::builderList
boost::ptr_vector< Builder > builderList
Definition: PFRecoTauChargedHadronProducer.cc:71
EventSetup.h
Exception.h
pfRecoTauChargedHadronAuxFunctions.h
PFRecoTauChargedHadron.h
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
mps_fire.result
result
Definition: mps_fire.py:311
cms::Exception
Definition: Exception.h:70
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
ParameterSet.h
PFRecoTauChargedHadronProducer::predicate_
std::unique_ptr< ChargedHadronPredicate > predicate_
Definition: PFRecoTauChargedHadronProducer.cc:90
edm::Event
Definition: Event.h:73
edm::InputTag
Definition: InputTag.h:15
PFRecoTauChargedHadronProducer::maxJetAbsEta_
double maxJetAbsEta_
Definition: PFRecoTauChargedHadronProducer.cc:84
pfJetBenchmark_cfi.pfJets
pfJets
Definition: pfJetBenchmark_cfi.py:4
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
PFRecoTauChargedHadronProducer::ChargedHadronList
boost::ptr_list< reco::PFRecoTauChargedHadron > ChargedHadronList
Definition: PFRecoTauChargedHadronProducer.cc:74
PFRecoTauChargedHadronProducer::rankerList
boost::ptr_vector< Ranker > rankerList
Definition: PFRecoTauChargedHadronProducer.cc:72
PFCandidateFwd.h
edm::RefToBaseProd
Definition: RefToBase.h:65
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
beam_dqm_sourceclient-live_cfg.qualityCuts
qualityCuts
Definition: beam_dqm_sourceclient-live_cfg.py:126