CMS 3D CMS Logo

PFProducer.cc
Go to the documentation of this file.
22 
23 #include <sstream>
24 #include <string>
25 
26 #include "TFile.h"
27 
38 public:
39  explicit PFProducer(const edm::ParameterSet&);
40 
41  void produce(edm::Event&, const edm::EventSetup&) override;
42  void beginRun(const edm::Run&, const edm::EventSetup&) override;
43 
44  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
45 
46 private:
50 
55 
56  std::vector<edm::EDGetTokenT<reco::PFRecHitCollection>> inputTagCleanedHF_;
59 
62 
63  // NEW EGamma Filters
67 
69  std::unique_ptr<PFEGammaFilters> pfegamma_ = nullptr;
70 
71  //Use of HO clusters and links in PF Reconstruction
72  bool useHO_;
73 
75  bool verbose_;
76 
77  // Post muon cleaning ?
79 
80  // what about e/g electrons ?
82 
83  // Use vertices for Neutral particles ?
85 
86  // Take PF cluster calibrations from Global Tag ?
89 
91  // Name of the calibration functions to read from the database
92  // std::vector<std::string> fToRead;
93 
94  // calibrations
97 
100 };
101 
103 
104 using namespace std;
105 using namespace edm;
106 
108  : pfCandidatesToken_{produces<reco::PFCandidateCollection>()},
109  pfCleanedCandidatesToken_{produces<reco::PFCandidateCollection>("CleanedHF")},
110  inputTagBlocks_(consumes<reco::PFBlockCollection>(iConfig.getParameter<InputTag>("blocks"))),
111  pfEnergyCalibrationHF_(iConfig.getParameter<bool>("calibHF_use"),
112  iConfig.getParameter<std::vector<double>>("calibHF_eta_step"),
113  iConfig.getParameter<std::vector<double>>("calibHF_a_EMonly"),
114  iConfig.getParameter<std::vector<double>>("calibHF_b_HADonly"),
115  iConfig.getParameter<std::vector<double>>("calibHF_a_EMHAD"),
116  iConfig.getParameter<std::vector<double>>("calibHF_b_EMHAD")),
117  pfAlgo_(iConfig.getParameter<double>("pf_nsigma_ECAL"),
118  iConfig.getParameter<double>("pf_nsigma_HCAL"),
119  iConfig.getParameter<double>("pf_nsigma_HFEM"),
120  iConfig.getParameter<double>("pf_nsigma_HFHAD"),
121  iConfig.getParameter<std::vector<double>>("resolHF_square"),
122  pfEnergyCalibration_,
123  pfEnergyCalibrationHF_,
124  iConfig) {
125  //Post cleaning of the muons
126  inputTagMuons_ = consumes<reco::MuonCollection>(iConfig.getParameter<InputTag>("muons"));
127  postMuonCleaning_ = iConfig.getParameter<bool>("postMuonCleaning");
128  vetoEndcap_ = iConfig.getParameter<bool>("vetoEndcap");
129  if (vetoEndcap_)
130  inputTagVetoes_ = consumes<reco::PFCandidateCollection>(iConfig.getParameter<edm::InputTag>("vetoes"));
131 
132  if (iConfig.existsAs<bool>("useEGammaFilters")) {
133  use_EGammaFilters_ = iConfig.getParameter<bool>("useEGammaFilters");
134  } else {
135  use_EGammaFilters_ = false;
136  }
137 
138  useEGammaElectrons_ = iConfig.getParameter<bool>("useEGammaElectrons");
139 
140  if (useEGammaElectrons_) {
141  inputTagEgammaElectrons_ =
142  consumes<reco::GsfElectronCollection>(iConfig.getParameter<edm::InputTag>("egammaElectrons"));
143  }
144 
145  // register products
146  produces<reco::PFCandidateCollection>("CleanedCosmicsMuons");
147  produces<reco::PFCandidateCollection>("CleanedTrackerAndGlobalMuons");
148  produces<reco::PFCandidateCollection>("CleanedFakeMuons");
149  produces<reco::PFCandidateCollection>("CleanedPunchThroughMuons");
150  produces<reco::PFCandidateCollection>("CleanedPunchThroughNeutralHadrons");
151  produces<reco::PFCandidateCollection>("AddedMuonsAndHadrons");
152 
153  // Reading new EGamma selection cuts
154  bool useProtectionsForJetMET(false);
155 
156  // Reading new EGamma ubiased collections and value maps
157  if (use_EGammaFilters_) {
158  inputTagPFEGammaCandidates_ =
159  consumes<edm::View<reco::PFCandidate>>((iConfig.getParameter<edm::InputTag>("PFEGammaCandidates")));
160  inputTagValueMapGedElectrons_ =
161  consumes<edm::ValueMap<reco::GsfElectronRef>>(iConfig.getParameter<edm::InputTag>("GedElectronValueMap"));
162  inputTagValueMapGedPhotons_ =
163  consumes<edm::ValueMap<reco::PhotonRef>>(iConfig.getParameter<edm::InputTag>("GedPhotonValueMap"));
164  useProtectionsForJetMET = iConfig.getParameter<bool>("useProtectionsForJetMET");
165 
166  const edm::ParameterSet pfEGammaFiltersParams =
167  iConfig.getParameter<edm::ParameterSet>("PFEGammaFiltersParameters");
168  pfegamma_ = std::make_unique<PFEGammaFilters>(pfEGammaFiltersParams);
169  }
170 
171  // EGamma filters
172  pfAlgo_.setEGammaParameters(use_EGammaFilters_, useProtectionsForJetMET);
173 
174  //Secondary tracks and displaced vertices parameters
175 
176  bool rejectTracks_Bad = iConfig.getParameter<bool>("rejectTracks_Bad");
177 
178  bool rejectTracks_Step45 = iConfig.getParameter<bool>("rejectTracks_Step45");
179 
180  bool usePFNuclearInteractions = iConfig.getParameter<bool>("usePFNuclearInteractions");
181 
182  bool usePFConversions = iConfig.getParameter<bool>("usePFConversions");
183 
184  bool usePFDecays = iConfig.getParameter<bool>("usePFDecays");
185 
186  double dptRel_DispVtx = iConfig.getParameter<double>("dptRel_DispVtx");
187 
188  useCalibrationsFromDB_ = iConfig.getParameter<bool>("useCalibrationsFromDB");
189 
190  if (useCalibrationsFromDB_) {
191  calibrationsLabel_ = iConfig.getParameter<std::string>("calibrationsLabel");
192  perfToken_ = esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", calibrationsLabel_));
193  }
194  // Secondary tracks and displaced vertices parameters
195  pfAlgo_.setDisplacedVerticesParameters(
197 
199  pfAlgo_.setCandConnectorParameters(iConfig.getParameter<edm::ParameterSet>("iCfgCandConnector"));
200 
201  // Post cleaning of the HF
202  postHFCleaning_ = iConfig.getParameter<bool>("postHFCleaning");
203  const edm::ParameterSet pfHFCleaningParams = iConfig.getParameter<edm::ParameterSet>("PFHFCleaningParameters");
204 
205  // Set post HF cleaning muon parameters
206  pfAlgo_.setPostHFCleaningParameters(postHFCleaning_, pfHFCleaningParams);
207 
208  // Input tags for HF cleaned rechits
209  std::vector<edm::InputTag> tags = iConfig.getParameter<std::vector<edm::InputTag>>("cleanedHF");
210  for (unsigned int i = 0; i < tags.size(); ++i)
211  inputTagCleanedHF_.push_back(consumes<reco::PFRecHitCollection>(tags[i]));
212  //MIKE: Vertex Parameters
213  vertices_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("vertexCollection"));
214  useVerticesForNeutral_ = iConfig.getParameter<bool>("useVerticesForNeutral");
215 
216  // Use HO clusters and links in the PF reconstruction
217  useHO_ = iConfig.getParameter<bool>("useHO");
218  pfAlgo_.setHOTag(useHO_);
219 
220  verbose_ = iConfig.getUntrackedParameter<bool>("verbose", false);
221 }
222 
225  // read the PFCalibration functions from the global tags
226  auto perfH = es.getHandle(perfToken_);
227 
228  PerformancePayloadFromTFormula const* pfCalibrations =
229  static_cast<const PerformancePayloadFromTFormula*>(perfH.product());
230 
232  }
233 }
234 
236  LogDebug("PFProducer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
237 
238  //Assign the PFAlgo Parameters
240 
241  // get the collection of blocks
242  auto blocks = iEvent.getHandle(inputTagBlocks_);
243  assert(blocks.isValid());
244 
245  // get and set the collection of muons (and collection of vetoes if specified)
246  if (postMuonCleaning_) {
248  if (vetoEndcap_) {
249  auto& muAlgo = *pfAlgo_.getPFMuonAlgo();
250  muAlgo.setVetoes(iEvent.get(inputTagVetoes_));
251  }
252  }
253 
254  if (use_EGammaFilters_)
258 
259  LogDebug("PFProducer") << "particle flow is starting" << endl;
260 
262 
263  if (verbose_) {
264  ostringstream str;
265  str << pfAlgo_ << endl;
266  LogInfo("PFProducer") << str.str() << endl;
267  }
268 
269  // Check HF overcleaning
270  if (postHFCleaning_) {
272  for (unsigned ihf = 0; ihf < inputTagCleanedHF_.size(); ++ihf) {
274  bool foundHF = iEvent.getByToken(inputTagCleanedHF_[ihf], hfCleaned);
275  if (!foundHF)
276  continue;
277  for (unsigned jhf = 0; jhf < (*hfCleaned).size(); ++jhf) {
278  hfCopy.push_back((*hfCleaned)[jhf]);
279  }
280  }
281  pfAlgo_.checkCleaning(hfCopy);
282  }
283 
284  // Save the final PFCandidate collection
285  auto pOutputCandidateCollection = pfAlgo_.makeConnectedCandidates();
286 
287  LogDebug("PFProducer") << "particle flow: putting products in the event";
288  if (verbose_) {
289  int nC = 0;
290  ostringstream ss;
291  for (auto const& cand : pOutputCandidateCollection) {
292  nC++;
293  ss << " " << nC << ") pid=" << cand.particleId() << " pt=" << cand.pt() << endl;
294  }
295  LogDebug("PFProducer") << "Here the full list:" << endl << ss.str();
296  }
297 
298  // Write in the event
299  iEvent.emplace(pfCandidatesToken_, pOutputCandidateCollection);
301 
302  if (postMuonCleaning_) {
303  auto& muAlgo = *pfAlgo_.getPFMuonAlgo();
304  // Save cosmic cleaned muon candidates
305  iEvent.put(muAlgo.transferCleanedCosmicCandidates(), "CleanedCosmicsMuons");
306  // Save tracker/global cleaned muon candidates
307  iEvent.put(muAlgo.transferCleanedTrackerAndGlobalCandidates(), "CleanedTrackerAndGlobalMuons");
308  // Save fake cleaned muon candidates
309  iEvent.put(muAlgo.transferCleanedFakeCandidates(), "CleanedFakeMuons");
310  // Save punch-through cleaned muon candidates
311  iEvent.put(muAlgo.transferPunchThroughCleanedMuonCandidates(), "CleanedPunchThroughMuons");
312  // Save punch-through cleaned neutral hadron candidates
313  iEvent.put(muAlgo.transferPunchThroughCleanedHadronCandidates(), "CleanedPunchThroughNeutralHadrons");
314  // Save added muon candidates
315  iEvent.put(muAlgo.transferAddedMuonCandidates(), "AddedMuonsAndHadrons");
316  }
317 }
318 
321 
322  // Verbosity and debug flags
323  desc.addUntracked<bool>("verbose", false);
324  desc.addUntracked<bool>("debug", false);
325 
326  // PF Blocks label
327  desc.add<edm::InputTag>("blocks", edm::InputTag("particleFlowBlock"));
328 
329  // reco::muons label and Post Muon cleaning
330  desc.add<edm::InputTag>("muons", edm::InputTag("muons1stStep"));
331  desc.add<bool>("postMuonCleaning", true);
332 
333  // vetoEndcap flag and pf candidates for vetoes
334  edm::ParameterSetDescription emptyDescription;
335  desc.ifValue(edm::ParameterDescription<bool>("vetoEndcap", false, true),
336  true >> edm::ParameterDescription<edm::InputTag>("vetoes", {"pfTICL"}, true) or
337  false >> edm::EmptyGroupDescription());
338 
339  // Vertices label
340  desc.add<edm::InputTag>("vertexCollection", edm::InputTag("offlinePrimaryVertices"));
341  desc.add<bool>("useVerticesForNeutral", true);
342 
343  // Use HO clusters in PF hadron reconstruction
344  desc.add<bool>("useHO", true);
345 
346  // EGamma-related
347  desc.add<edm::InputTag>("PFEGammaCandidates", edm::InputTag("particleFlowEGamma"));
348  desc.add<edm::InputTag>("GedElectronValueMap", {"gedGsfElectronValueMapsTmp"});
349  desc.add<edm::InputTag>("GedPhotonValueMap", edm::InputTag("gedPhotonsTmp", "valMapPFEgammaCandToPhoton"));
350 
351  desc.add<bool>("useEGammaElectrons", true);
352  desc.add<edm::InputTag>("egammaElectrons", edm::InputTag("mvaElectrons"));
353 
354  desc.add<bool>("useEGammaFilters", true);
355  desc.add<bool>("useProtectionsForJetMET", true); // Propagated to PFEGammaFilters
356 
357  // For PFEGammaFilters
358  edm::ParameterSetDescription psd_PFEGammaFilters;
359  PFEGammaFilters::fillPSetDescription(psd_PFEGammaFilters);
360  desc.add<edm::ParameterSetDescription>("PFEGammaFiltersParameters", psd_PFEGammaFilters);
361 
362  // Treatment of muons :
363  // Expected energy in ECAL and HCAL, and RMS
364  desc.add<std::vector<double>>("muon_HCAL", {3.0, 3.0});
365  desc.add<std::vector<double>>("muon_ECAL", {0.5, 0.5});
366  desc.add<std::vector<double>>("muon_HO", {0.9, 0.9});
367 
368  // For PFMuonAlgo
369  edm::ParameterSetDescription psd_PFMuonAlgo;
370  PFMuonAlgo::fillPSetDescription(psd_PFMuonAlgo);
371  desc.add<edm::ParameterSetDescription>("PFMuonAlgoParameters", psd_PFMuonAlgo);
372 
373  // Input displaced vertices
374  // It is strongly adviced to keep usePFNuclearInteractions = bCorrect
375  desc.add<bool>("rejectTracks_Bad", true);
376  desc.add<bool>("rejectTracks_Step45", true);
377 
378  desc.add<bool>("usePFNuclearInteractions", true);
379  desc.add<bool>("usePFConversions", true);
380  desc.add<bool>("usePFDecays", false);
381 
382  desc.add<double>("dptRel_DispVtx", 10.0);
383 
384  // PFCandConnector
385  edm::ParameterSetDescription psd_CandConnector;
386  PFCandConnector::fillPSetDescription(psd_CandConnector);
387  desc.add<edm::ParameterSetDescription>("iCfgCandConnector", psd_CandConnector);
388 
389  // Treatment of potential fake tracks
390  desc.add<double>("nsigma_TRACK", 1.0)->setComment("Number of sigmas for fake track detection");
391  // pt_Error: dont forget to modify also ptErrorSecondary if you modify this parameter
392  desc.add<double>("pt_Error", 1.0)
393  ->setComment("Absolute pt error to detect fake tracks in the first three iterations");
394  desc.add<std::vector<double>>("factors_45", {10.0, 100.0})
395  ->setComment("Factors to be applied in the four and fifth steps to the pt error");
396 
397  // Treatment of tracks in region of bad HCal
398  desc.add<double>("goodTrackDeadHcal_ptErrRel", 0.2)->setComment("trackRef->ptError()/trackRef->pt() < X");
399  desc.add<double>("goodTrackDeadHcal_chi2n", 5)->setComment("trackRef->normalizedChi2() < X");
400  desc.add<unsigned int>("goodTrackDeadHcal_layers", 4)
401  ->setComment("trackRef->hitPattern().trackerLayersWithMeasurement() >= X");
402  desc.add<double>("goodTrackDeadHcal_validFr", 0.5)->setComment("trackRef->validFraction() > X");
403  desc.add<double>("goodTrackDeadHcal_dxy", 0.5)->setComment("abs(trackRef->dxy(primaryVertex_.position())) < X [cm]");
404 
405  desc.add<double>("goodPixelTrackDeadHcal_minEta", 2.3)->setComment("abs(trackRef->eta()) > X");
406  desc.add<double>("goodPixelTrackDeadHcal_maxPt", 50.0)->setComment("trackRef->ptError()/trackRef->pt() < X");
407  desc.add<double>("goodPixelTrackDeadHcal_ptErrRel", 1.0)->setComment("trackRef->ptError()/trackRef->pt() < X");
408  desc.add<double>("goodPixelTrackDeadHcal_chi2n", 2)->setComment("trackRef->normalizedChi2() < X");
409  desc.add<int>("goodPixelTrackDeadHcal_maxLost3Hit", 0)
410  ->setComment(
411  "max missing outer hits for a track with 3 valid pixel layers (can set to -1 to reject all these tracks)");
412  desc.add<int>("goodPixelTrackDeadHcal_maxLost4Hit", 1)
413  ->setComment("max missing outer hits for a track with >= 4 valid pixel layers");
414  desc.add<double>("goodPixelTrackDeadHcal_dxy", 0.02)
415  ->setComment("abs(trackRef->dxy(primaryVertex_.position())) < X [cm] ");
416  desc.add<double>("goodPixelTrackDeadHcal_dz", 0.05)
417  ->setComment("abs(trackRef->dz(primaryVertex_.position())) < X [cm]");
418 
419  // number of sigmas for neutral energy detection
420  desc.add<double>("pf_nsigma_ECAL", 0.0);
421  desc.add<double>("pf_nsigma_HCAL", 1.0);
422  desc.add<double>("pf_nsigma_HFEM", 1.0);
423  desc.add<double>("pf_nsigma_HFHAD", 1.0);
424 
425  // ECAL/HCAL PF cluster calibration : take it from global tag ?
426  desc.add<bool>("useCalibrationsFromDB", true);
427  desc.add<std::string>("calibrationsLabel", "");
428 
429  // Post HF cleaning
430  desc.add<bool>("postHFCleaning", false);
431  {
432  edm::ParameterSetDescription psd_PFHFCleaning;
433  psd_PFHFCleaning.add<double>("minHFCleaningPt", 5.0)
434  ->setComment("Clean only objects with pt larger than this value");
435  psd_PFHFCleaning.add<double>("maxSignificance", 2.5)
436  ->setComment("Clean only if the initial MET/sqrt(sumet) is larger than this value");
437  psd_PFHFCleaning.add<double>("minSignificance", 2.5)
438  ->setComment("Clean only if the final MET/sqrt(sumet) is smaller than this value");
439  psd_PFHFCleaning.add<double>("minSignificanceReduction", 1.4)
440  ->setComment("Clean only if the significance reduction is larger than this value");
441  psd_PFHFCleaning.add<double>("maxDeltaPhiPt", 7.0)
442  ->setComment("Clean only if the MET and the to-be-cleaned object satisfy this DeltaPhi * Pt cut");
443  // (the MET angular resoution is in 1/MET)
444  psd_PFHFCleaning.add<double>("minDeltaMet", 0.4)
445  ->setComment(
446  "Clean only if the MET relative reduction from the to-be-cleaned object is larger than this value");
447  desc.add<edm::ParameterSetDescription>("PFHFCleaningParameters", psd_PFHFCleaning);
448  }
449 
450  // Check HF cleaning
451  desc.add<std::vector<edm::InputTag>>("cleanedHF",
452  {
453  edm::InputTag("particleFlowRecHitHF", "Cleaned"),
454  edm::InputTag("particleFlowClusterHF", "Cleaned"),
455  });
456 
457  // calibration parameters for HF:
458  desc.add<bool>("calibHF_use", false);
459  desc.add<std::vector<double>>("calibHF_eta_step", {0.0, 2.9, 3.0, 3.2, 4.2, 4.4, 4.6, 4.8, 5.2, 5.4});
460  desc.add<std::vector<double>>("calibHF_a_EMonly", {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.});
461  desc.add<std::vector<double>>("calibHF_a_EMHAD", {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.});
462  desc.add<std::vector<double>>("calibHF_b_HADonly", {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.});
463  desc.add<std::vector<double>>("calibHF_b_EMHAD", {1., 1., 1., 1., 1., 1., 1., 1., 1., 1.});
464 
465  // resolution parameters for HF: EPJC 53(2008)139, doi:10.1140/epjc/s10052-007-0459-4
466  desc.add<std::vector<double>>("resolHF_square", {2.799 * 2.799, 0.114 * 0.114, 0.0 * 0.0})
467  ->setComment("HF resolution - stochastic, constant, noise term squares");
468 
469  descriptions.add("particleFlow", desc);
470 }
std::vector< edm::EDGetTokenT< reco::PFRecHitCollection > > inputTagCleanedHF_
Definition: PFProducer.cc:56
void setComment(std::string const &value)
std::string photonExtraOutputCol_
Definition: PFProducer.cc:58
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< reco::MuonCollection > inputTagMuons_
Definition: PFProducer.cc:52
reco::PFCandidateCollection & getCleanedCandidates()
Definition: PFAlgo.h:112
PFEnergyCalibrationHF pfEnergyCalibrationHF_
Definition: PFProducer.cc:96
edm::EDGetTokenT< reco::PFCandidateCollection > inputTagVetoes_
Definition: PFProducer.cc:61
std::string calibrationsLabel_
Definition: PFProducer.cc:88
std::vector< PFRecHit > PFRecHitCollection
collection of PFRecHit objects
Definition: PFRecHitFwd.h:9
void checkCleaning(const reco::PFRecHitCollection &cleanedHF)
Check HF Cleaning.
Definition: PFAlgo.cc:3593
void setVetoes(const reco::PFCandidateCollection &vetoes)
Definition: PFMuonAlgo.h:54
assert(be >=bs)
bool useCalibrationsFromDB_
Definition: PFProducer.cc:87
bool use_EGammaFilters_
Definition: PFProducer.cc:68
edm::EDGetTokenT< reco::VertexCollection > vertices_
Definition: PFProducer.cc:53
void produce(edm::Event &, const edm::EventSetup &) override
Definition: PFProducer.cc:235
void setPFVertexParameters(bool useVertex, reco::VertexCollection const &primaryVertices)
Definition: PFAlgo.cc:110
std::unique_ptr< PFEGammaFilters > pfegamma_
Definition: PFProducer.cc:69
edm::ESGetToken< PerformancePayload, PFCalibrationRcd > perfToken_
Definition: PFProducer.cc:49
bool useVerticesForNeutral_
Definition: PFProducer.cc:84
PFProducer(const edm::ParameterSet &)
Definition: PFProducer.cc:107
int iEvent
Definition: GenABIO.cc:224
void setEGammaCollections(const edm::View< reco::PFCandidate > &pfEgammaCandidates, const edm::ValueMap< reco::GsfElectronRef > &valueMapGedElectrons, const edm::ValueMap< reco::PhotonRef > &valueMapGedPhotons)
Definition: PFAlgo.cc:76
const edm::EDGetTokenT< reco::PFBlockCollection > inputTagBlocks_
Definition: PFProducer.cc:51
bool postHFCleaning_
Definition: PFProducer.cc:90
bool vetoEndcap_
Definition: PFProducer.cc:60
bool postMuonCleaning_
Definition: PFProducer.cc:78
const edm::EDPutTokenT< reco::PFCandidateCollection > pfCandidatesToken_
Definition: PFProducer.cc:47
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
void beginRun(const edm::Run &, const edm::EventSetup &) override
Definition: PFProducer.cc:223
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::EDGetTokenT< edm::View< reco::PFCandidate > > inputTagPFEGammaCandidates_
Definition: PFProducer.cc:66
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:130
void setMuonHandle(const edm::Handle< reco::MuonCollection > &muons)
Definition: PFAlgo.h:66
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
void reconstructParticles(const reco::PFBlockHandle &blockHandle, PFEGammaFilters const *pfegamma)
reconstruct particles
Definition: PFAlgo.cc:130
bool useHO_
Definition: PFProducer.cc:72
Log< level::Info, false > LogInfo
PFAlgo pfAlgo_
particle flow algorithm
Definition: PFProducer.cc:99
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
Definition: PFMuonAlgo.cc:1043
bool verbose_
verbose ?
Definition: PFProducer.cc:75
std::string electronExtraOutputCol_
Definition: PFProducer.cc:57
bool useEGammaElectrons_
Definition: PFProducer.cc:81
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< edm::ValueMap< reco::PhotonRef > > inputTagValueMapGedPhotons_
Definition: PFProducer.cc:65
HLT enums.
reco::PFCandidateCollection makeConnectedCandidates()
Definition: PFAlgo.h:115
PFMuonAlgo * getPFMuonAlgo()
Definition: PFAlgo.cc:66
void setCalibrationFunctions(const PerformancePayloadFromTFormula *thePFCal)
const edm::EDPutTokenT< reco::PFCandidateCollection > pfCleanedCandidatesToken_
Definition: PFProducer.cc:48
#define str(s)
Definition: PFAlgo.h:53
Producer for particle flow reconstructed particles (PFCandidates)
Definition: PFProducer.cc:37
edm::EDGetTokenT< reco::GsfElectronCollection > inputTagEgammaElectrons_
Definition: PFProducer.cc:54
PFEnergyCalibration pfEnergyCalibration_
Definition: PFProducer.cc:95
edm::EDGetTokenT< edm::ValueMap< reco::GsfElectronRef > > inputTagValueMapGedElectrons_
Definition: PFProducer.cc:64
Definition: Run.h:45
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: PFProducer.cc:319
#define LogDebug(id)