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  }
234  }
235  if (nextChargedHadron->getTrack().isNonnull() && !track) {
236  track = nextChargedHadron->getTrack().get();
237  }
238 
239  // discard candidate in case its track is "used" by any ChargedHadron in the clean collection
240  bool isTrack_overlap = false;
241  if (track) {
242  double track_eta = track->eta();
243  double track_phi = track->phi();
244  for (std::list<etaPhiPair>::const_iterator trackInCleanCollection = tracksInCleanCollection.begin();
245  trackInCleanCollection != tracksInCleanCollection.end();
246  ++trackInCleanCollection) {
247  double dR = deltaR(track_eta, track_phi, trackInCleanCollection->first, trackInCleanCollection->second);
248  if (dR < 1.e-4)
249  isTrack_overlap = true;
250  }
251  }
252  if (verbosity_) {
253  edm::LogPrint("PFRecoTauChHProducer") << "isTrack_overlap = " << isTrack_overlap;
254  }
255  if (isTrack_overlap)
256  continue;
257 
258  // discard ChargedHadron candidates without track in case they are close to neutral PFCandidates "used" by ChargedHadron candidates in the clean collection
259  bool isNeutralPFCand_overlap = false;
260  if (nextChargedHadron->algoIs(reco::PFRecoTauChargedHadron::kPFNeutralHadron)) {
261  for (std::set<reco::CandidatePtr>::const_iterator neutralPFCandInCleanCollection =
262  neutralPFCandsInCleanCollection.begin();
263  neutralPFCandInCleanCollection != neutralPFCandsInCleanCollection.end();
264  ++neutralPFCandInCleanCollection) {
265  if ((*neutralPFCandInCleanCollection) == nextChargedHadron->getChargedPFCandidate())
266  isNeutralPFCand_overlap = true;
267  }
268  }
269  if (verbosity_) {
270  edm::LogPrint("PFRecoTauChHProducer") << "isNeutralPFCand_overlap = " << isNeutralPFCand_overlap;
271  }
272  if (isNeutralPFCand_overlap)
273  continue;
274 
275  // find neutral PFCandidates that are not "used" by any ChargedHadron in the clean collection
276  std::vector<reco::CandidatePtr> uniqueNeutralPFCands;
277  std::set_difference(nextChargedHadron->getNeutralPFCandidates().begin(),
278  nextChargedHadron->getNeutralPFCandidates().end(),
279  neutralPFCandsInCleanCollection.begin(),
280  neutralPFCandsInCleanCollection.end(),
281  std::back_inserter(uniqueNeutralPFCands));
282 
283  if (uniqueNeutralPFCands.size() ==
284  nextChargedHadron->getNeutralPFCandidates()
285  .size()) { // all neutral PFCandidates are unique, add ChargedHadron candidate to clean collection
286  if (track)
287  tracksInCleanCollection.push_back(std::make_pair(track->eta(), track->phi()));
288  neutralPFCandsInCleanCollection.insert(nextChargedHadron->getNeutralPFCandidates().begin(),
289  nextChargedHadron->getNeutralPFCandidates().end());
290  if (verbosity_) {
291  edm::LogPrint("PFRecoTauChHProducer") << "--> adding nextChargedHadron to output collection.";
292  }
293  cleanedChargedHadrons.push_back(*nextChargedHadron);
294  } else { // remove overlapping neutral PFCandidates, reevaluate ranking criterion and process ChargedHadron candidate again
295  nextChargedHadron->neutralPFCandidates_.clear();
296  for (auto const& neutralPFCand : uniqueNeutralPFCands) {
297  nextChargedHadron->neutralPFCandidates_.push_back(neutralPFCand);
298  }
299  // update ChargedHadron four-momentum
300  reco::tau::setChargedHadronP4(*nextChargedHadron);
301  // reinsert ChargedHadron candidate into list of uncleaned candidates,
302  // at position according to new rank
303  ChargedHadronList::iterator insertionPoint = std::lower_bound(
304  uncleanedChargedHadrons.begin(), uncleanedChargedHadrons.end(), *nextChargedHadron, *predicate_);
305  if (verbosity_) {
306  edm::LogPrint("PFRecoTauChHProducer") << "--> removing non-unique neutral PFCandidates and reinserting "
307  "nextChargedHadron in uncleaned collection.";
308  }
309  uncleanedChargedHadrons.insert(insertionPoint, std::move(nextChargedHadron));
310  }
311  }
312 
313  if (verbosity_) {
314  print(cleanedChargedHadrons);
315  }
316 
317  // add ChargedHadron-to-jet association
318  pfJetChargedHadronAssociations->setValue(pfJet.key(), cleanedChargedHadrons);
319  }
320 
321  evt.put(std::move(pfJetChargedHadronAssociations));
322 }
323 
324 template <typename T>
325 void PFRecoTauChargedHadronProducer::print(const T& chargedHadrons) {
326  for (typename T::const_iterator chargedHadron = chargedHadrons.begin(); chargedHadron != chargedHadrons.end();
327  ++chargedHadron) {
328  edm::LogPrint("PFRecoTauChHProducer") << (*chargedHadron);
329  edm::LogPrint("PFRecoTauChHProducer") << "Rankers:";
330  for (rankerList::const_iterator ranker = rankers_.begin(); ranker != rankers_.end(); ++ranker) {
331  const unsigned width = 25;
332  edm::LogPrint("PFRecoTauChHProducer")
333  << " " << std::setiosflags(std::ios::left) << std::setw(width) << ranker->name() << " "
334  << std::resetiosflags(std::ios::left) << std::setprecision(3) << (*ranker)(*chargedHadron) << std::endl;
335  }
336  }
337 }
338 
340  // ak4PFJetsRecoTauChargedHadrons
342  {
343  edm::ParameterSetDescription desc_ranking;
344  desc_ranking.add<std::string>("selectionPassFunction", "-pt");
345  desc_ranking.add<double>("selectionFailValue", 1000.0);
346  desc_ranking.add<std::string>("selection", "algoIs(\"kChargedPFCandidate\")");
347  desc_ranking.add<std::string>("name", "ChargedPFCandidate");
348  desc_ranking.add<std::string>("plugin", "PFRecoTauChargedHadronStringQuality");
349 
350  edm::ParameterSet pset_ranking;
351  pset_ranking.addParameter<std::string>("selectionPassFunction", "-pt");
352  pset_ranking.addParameter<double>("selectionFailValue", 1000.0);
353  pset_ranking.addParameter<std::string>("selection", "algoIs(\"kChargedPFCandidate\")");
354  pset_ranking.addParameter<std::string>("name", "ChargedPFCandidate");
355  pset_ranking.addParameter<std::string>("plugin", "PFRecoTauChargedHadronStringQuality");
356  std::vector<edm::ParameterSet> vpsd_ranking;
357  vpsd_ranking.push_back(pset_ranking);
358 
359  desc.addVPSet("ranking", desc_ranking, vpsd_ranking);
360  }
361 
362  desc.add<int>("verbosity", 0);
363  desc.add<double>("maxJetAbsEta", 2.5);
364  desc.add<std::string>("outputSelection", "pt > 0.5");
365  desc.add<double>("minJetPt", 14.0);
366  desc.add<edm::InputTag>("jetSrc", edm::InputTag("ak4PFJets"));
367 
368  {
369  edm::ParameterSetDescription desc_builders;
370  desc_builders.add<double>("minMergeChargedHadronPt");
371  desc_builders.add<std::string>("name");
372  desc_builders.add<std::string>("plugin");
373  desc_builders.addOptional<double>("dRcone");
374  desc_builders.addOptional<bool>("dRconeLimitedToJetArea");
375  desc_builders.addOptional<double>("dRmergeNeutralHadron");
376  desc_builders.addOptional<double>("dRmergePhoton");
377  desc_builders.addOptional<edm::InputTag>("srcTracks");
378 
379  edm::ParameterSetDescription desc_qualityCuts;
381  desc_builders.add<edm::ParameterSetDescription>("qualityCuts", desc_qualityCuts);
382 
383  desc_builders.add<double>("minMergeGammaEt");
384  desc_builders.add<int>("verbosity", 0);
385  desc_builders.add<double>("minMergeNeutralHadronEt");
386 
387  desc_builders.addOptional<double>("dRmergePhotonWrtChargedHadron");
388  desc_builders.addOptional<double>("dRmergePhotonWrtNeutralHadron");
389  desc_builders.addOptional<int>("maxUnmatchedBlockElementsNeutralHadron");
390  desc_builders.addOptional<double>("dRmergePhotonWrtElectron");
391  desc_builders.addOptional<std::vector<int>>("chargedHadronCandidatesParticleIds");
392  desc_builders.addOptional<int>("minBlockElementMatchesPhoton");
393  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtNeutralHadron");
394  desc_builders.addOptional<int>("maxUnmatchedBlockElementsPhoton");
395  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtOther");
396  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtElectron");
397  desc_builders.addOptional<int>("minBlockElementMatchesNeutralHadron");
398  desc_builders.addOptional<double>("dRmergePhotonWrtOther");
399  desc_builders.addOptional<double>("dRmergeNeutralHadronWrtChargedHadron");
400 
401  edm::ParameterSet pset_builders;
402  pset_builders.addParameter<std::string>("name", "");
403  pset_builders.addParameter<std::string>("plugin", "");
405  pset_builders.addParameter<edm::ParameterSet>("qualityCuts", qualityCuts);
406  pset_builders.addParameter<int>("verbosity", 0);
407  std::vector<edm::ParameterSet> vpsd_builders;
408  vpsd_builders.push_back(pset_builders);
409 
410  desc.addVPSet("builders", desc_builders, vpsd_builders);
411  }
412 
413  descriptions.add("pfRecoTauChargedHadronProducer", desc);
414 }
415 
417 
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:11776
Muon.h
PFRecoTauChargedHadronProducer::verbosity_
int verbosity_
Definition: PFRecoTauChargedHadronProducer.cc:96
MessageLogger.h
PFRecoTauChargedHadronPlugins.h
PFCandidate.h
muons2muons_cfi.chargedHadron
chargedHadron
Definition: muons2muons_cfi.py:26
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:85964
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
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:531
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
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
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:325
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:339
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:38
PFRecoTauChargedHadronProducer::PFRecoTauChargedHadronProducer
PFRecoTauChargedHadronProducer(const edm::ParameterSet &cfg)
Definition: PFRecoTauChargedHadronProducer.cc:99
edm::EventSetup
Definition: EventSetup.h:57
PFRecoTauChargedHadronProducer
Definition: PFRecoTauChargedHadronProducer.cc:57
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
edm::RefToBaseVector< reco::Jet >
looper.cfg
cfg
Definition: looper.py:297
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:121