CMS 3D CMS Logo

PATPhotonProducer.cc
Go to the documentation of this file.
1 //
2 //
3 
9 
14 
17 
21 
23 
24 #include "TVector2.h"
26 
27 #include <memory>
28 
29 using namespace pat;
30 
32  :
33 
34  ecalClusterToolsESGetTokens_{consumesCollector()},
35  isolator_(iConfig.exists("userIsolation") ? iConfig.getParameter<edm::ParameterSet>("userIsolation")
37  consumesCollector(),
38  false),
39  useUserData_(iConfig.exists("userData")) {
40  // initialize the configurables
41  photonToken_ = consumes<edm::View<reco::Photon>>(iConfig.getParameter<edm::InputTag>("photonSource"));
42  electronToken_ = consumes<reco::GsfElectronCollection>(iConfig.getParameter<edm::InputTag>("electronSource"));
43  hConversionsToken_ = consumes<reco::ConversionCollection>(iConfig.getParameter<edm::InputTag>("conversionSource"));
44  beamLineToken_ = consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamLineSrc"));
45  embedSuperCluster_ = iConfig.getParameter<bool>("embedSuperCluster");
46  embedSeedCluster_ = iConfig.getParameter<bool>("embedSeedCluster");
47  embedBasicClusters_ = iConfig.getParameter<bool>("embedBasicClusters");
48  embedPreshowerClusters_ = iConfig.getParameter<bool>("embedPreshowerClusters");
49  embedRecHits_ = iConfig.getParameter<bool>("embedRecHits");
50  reducedBarrelRecHitCollection_ = iConfig.getParameter<edm::InputTag>("reducedBarrelRecHitCollection");
51  reducedBarrelRecHitCollectionToken_ = mayConsume<EcalRecHitCollection>(reducedBarrelRecHitCollection_);
52  reducedEndcapRecHitCollection_ = iConfig.getParameter<edm::InputTag>("reducedEndcapRecHitCollection");
53  reducedEndcapRecHitCollectionToken_ = mayConsume<EcalRecHitCollection>(reducedEndcapRecHitCollection_);
54  // MC matching configurables
55  addGenMatch_ = iConfig.getParameter<bool>("addGenMatch");
56  if (addGenMatch_) {
57  embedGenMatch_ = iConfig.getParameter<bool>("embedGenMatch");
58  if (iConfig.existsAs<edm::InputTag>("genParticleMatch")) {
59  genMatchTokens_.push_back(consumes<edm::Association<reco::GenParticleCollection>>(
60  iConfig.getParameter<edm::InputTag>("genParticleMatch")));
61  } else {
62  genMatchTokens_ = edm::vector_transform(
63  iConfig.getParameter<std::vector<edm::InputTag>>("genParticleMatch"),
64  [this](edm::InputTag const &tag) { return consumes<edm::Association<reco::GenParticleCollection>>(tag); });
65  }
66  }
67  // Efficiency configurables
68  addEfficiencies_ = iConfig.getParameter<bool>("addEfficiencies");
69  if (addEfficiencies_) {
70  efficiencyLoader_ =
71  pat::helper::EfficiencyLoader(iConfig.getParameter<edm::ParameterSet>("efficiencies"), consumesCollector());
72  }
73  // PFCluster Isolation maps
74  addPuppiIsolation_ = iConfig.getParameter<bool>("addPuppiIsolation");
75  if (addPuppiIsolation_) {
76  PUPPIIsolation_charged_hadrons_ =
77  consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("puppiIsolationChargedHadrons"));
78  PUPPIIsolation_neutral_hadrons_ =
79  consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("puppiIsolationNeutralHadrons"));
80  PUPPIIsolation_photons_ =
81  consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("puppiIsolationPhotons"));
82  }
83  addPFClusterIso_ = iConfig.getParameter<bool>("addPFClusterIso");
84  if (addPFClusterIso_) {
85  ecalPFClusterIsoT_ = consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("ecalPFClusterIsoMap"));
86  auto hcPFC = iConfig.getParameter<edm::InputTag>("hcalPFClusterIsoMap");
87  if (not hcPFC.label().empty())
88  hcalPFClusterIsoT_ = consumes<edm::ValueMap<float>>(hcPFC);
89  }
90 
91  // photon ID configurables
92  addPhotonID_ = iConfig.getParameter<bool>("addPhotonID");
93  if (addPhotonID_) {
94  // it might be a single photon ID
95  if (iConfig.existsAs<edm::InputTag>("photonIDSource")) {
96  photIDSrcs_.push_back(NameTag("", iConfig.getParameter<edm::InputTag>("photonIDSource")));
97  }
98  // or there might be many of them
99  if (iConfig.existsAs<edm::ParameterSet>("photonIDSources")) {
100  // please don't configure me twice
101  if (!photIDSrcs_.empty()) {
102  throw cms::Exception("Configuration")
103  << "PATPhotonProducer: you can't specify both 'photonIDSource' and 'photonIDSources'\n";
104  }
105  // read the different photon ID names
106  edm::ParameterSet idps = iConfig.getParameter<edm::ParameterSet>("photonIDSources");
107  std::vector<std::string> names = idps.getParameterNamesForType<edm::InputTag>();
108  for (std::vector<std::string>::const_iterator it = names.begin(), ed = names.end(); it != ed; ++it) {
109  photIDSrcs_.push_back(NameTag(*it, idps.getParameter<edm::InputTag>(*it)));
110  }
111  }
112  // but in any case at least once
113  if (photIDSrcs_.empty())
114  throw cms::Exception("Configuration") << "PATPhotonProducer: id addPhotonID is true, you must specify either:\n"
115  << "\tInputTag photonIDSource = <someTag>\n"
116  << "or\n"
117  << "\tPSet photonIDSources = { \n"
118  << "\t\tInputTag <someName> = <someTag> // as many as you want \n "
119  << "\t}\n";
120  }
121  photIDTokens_ = edm::vector_transform(
122  photIDSrcs_, [this](NameTag const &tag) { return mayConsume<edm::ValueMap<Bool_t>>(tag.second); });
123  // Resolution configurables
124  addResolutions_ = iConfig.getParameter<bool>("addResolutions");
125  if (addResolutions_) {
126  resolutionLoader_ = pat::helper::KinResolutionsLoader(iConfig.getParameter<edm::ParameterSet>("resolutions"));
127  }
128  // Check to see if the user wants to add user data
129  if (useUserData_) {
130  userDataHelper_ =
131  PATUserDataHelper<Photon>(iConfig.getParameter<edm::ParameterSet>("userData"), consumesCollector());
132  }
133  // produces vector of photons
134  produces<std::vector<Photon>>();
135 
136  // read isoDeposit labels, for direct embedding
137  readIsolationLabels(iConfig, "isoDeposits", isoDepositLabels_, isoDepositTokens_);
138  // read isolation value labels, for direct embedding
139  readIsolationLabels(iConfig, "isolationValues", isolationValueLabels_, isolationValueTokens_);
140 
141  saveRegressionData_ = iConfig.getParameter<bool>("saveRegressionData");
142 }
143 
145 
147  // switch off embedding (in unschedules mode)
148  if (iEvent.isRealData()) {
149  addGenMatch_ = false;
150  embedGenMatch_ = false;
151  }
152 
153  edm::ESHandle<CaloTopology> theCaloTopology;
154  iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
155  ecalTopology_ = &(*theCaloTopology);
156 
157  edm::ESHandle<CaloGeometry> theCaloGeometry;
158  iSetup.get<CaloGeometryRecord>().get(theCaloGeometry);
159  ecalGeometry_ = &(*theCaloGeometry);
160 
161  // Get the vector of Photon's from the event
163  iEvent.getByToken(photonToken_, photons);
164 
165  // for conversion veto selection
167  iEvent.getByToken(hConversionsToken_, hConversions);
168 
169  // Get the collection of electrons from the event
171  iEvent.getByToken(electronToken_, hElectrons);
172 
173  // Get the beamspot
174  edm::Handle<reco::BeamSpot> beamSpotHandle;
175  iEvent.getByToken(beamLineToken_, beamSpotHandle);
176 
177  EcalClusterLazyTools lazyTools(iEvent,
181 
182  // prepare the MC matching
183  std::vector<edm::Handle<edm::Association<reco::GenParticleCollection>>> genMatches(genMatchTokens_.size());
184  if (addGenMatch_) {
185  for (size_t j = 0, nd = genMatchTokens_.size(); j < nd; ++j) {
186  iEvent.getByToken(genMatchTokens_[j], genMatches[j]);
187  }
188  }
189 
190  if (isolator_.enabled())
191  isolator_.beginEvent(iEvent, iSetup);
192 
197 
199  for (size_t j = 0, nd = isoDepositTokens_.size(); j < nd; ++j) {
200  iEvent.getByToken(isoDepositTokens_[j], deposits[j]);
201  }
202 
204  for (size_t j = 0; j < isolationValueTokens_.size(); ++j) {
206  }
207 
208  // prepare ID extraction
209  std::vector<edm::Handle<edm::ValueMap<Bool_t>>> idhandles;
210  std::vector<pat::Photon::IdPair> ids;
211  if (addPhotonID_) {
212  idhandles.resize(photIDSrcs_.size());
213  ids.resize(photIDSrcs_.size());
214  for (size_t i = 0; i < photIDSrcs_.size(); ++i) {
215  iEvent.getByToken(photIDTokens_[i], idhandles[i]);
216  ids[i].first = photIDSrcs_[i].first;
217  }
218  }
219 
220  //value maps for puppi isolation
221  edm::Handle<edm::ValueMap<float>> PUPPIIsolation_charged_hadrons;
222  edm::Handle<edm::ValueMap<float>> PUPPIIsolation_neutral_hadrons;
223  edm::Handle<edm::ValueMap<float>> PUPPIIsolation_photons;
224  if (addPuppiIsolation_) {
225  iEvent.getByToken(PUPPIIsolation_charged_hadrons_, PUPPIIsolation_charged_hadrons);
226  iEvent.getByToken(PUPPIIsolation_neutral_hadrons_, PUPPIIsolation_neutral_hadrons);
227  iEvent.getByToken(PUPPIIsolation_photons_, PUPPIIsolation_photons);
228  }
229 
230  // loop over photons
231  std::vector<Photon> *PATPhotons = new std::vector<Photon>();
232  for (edm::View<reco::Photon>::const_iterator itPhoton = photons->begin(); itPhoton != photons->end(); itPhoton++) {
233  // construct the Photon from the ref -> save ref to original object
234  unsigned int idx = itPhoton - photons->begin();
235  edm::RefToBase<reco::Photon> photonRef = photons->refAt(idx);
236  edm::Ptr<reco::Photon> photonPtr = photons->ptrAt(idx);
237  Photon aPhoton(photonRef);
238  auto phoPtr = photons->ptrAt(idx);
239  if (embedSuperCluster_)
240  aPhoton.embedSuperCluster();
241  if (embedSeedCluster_)
242  aPhoton.embedSeedCluster();
244  aPhoton.embedBasicClusters();
246  aPhoton.embedPreshowerClusters();
247 
248  std::vector<DetId> selectedCells;
249  bool barrel = itPhoton->isEB();
250  //loop over sub clusters
251  if (embedBasicClusters_) {
252  for (reco::CaloCluster_iterator clusIt = itPhoton->superCluster()->clustersBegin();
253  clusIt != itPhoton->superCluster()->clustersEnd();
254  ++clusIt) {
255  //get seed (max energy xtal)
256  DetId seed = lazyTools.getMaximum(**clusIt).first;
257  //get all xtals in 5x5 window around the seed
258  std::vector<DetId> dets5x5 =
261  selectedCells.insert(selectedCells.end(), dets5x5.begin(), dets5x5.end());
262 
263  //get all xtals belonging to cluster
264  for (const std::pair<DetId, float> &hit : (*clusIt)->hitsAndFractions()) {
265  selectedCells.push_back(hit.first);
266  }
267  }
268  }
269 
270  //remove duplicates
271  std::sort(selectedCells.begin(), selectedCells.end());
272  std::unique(selectedCells.begin(), selectedCells.end());
273 
274  // Retrieve the corresponding RecHits
275 
276  edm::Handle<EcalRecHitCollection> recHitsEBHandle;
277  iEvent.getByToken(reducedBarrelRecHitCollectionToken_, recHitsEBHandle);
278  edm::Handle<EcalRecHitCollection> recHitsEEHandle;
279  iEvent.getByToken(reducedEndcapRecHitCollectionToken_, recHitsEEHandle);
280 
281  //orginal code would throw an exception via the handle not being valid but now it'll just have a null pointer error
282  //should have little effect, if its not barrel or endcap, something very bad has happened elsewhere anyways
283  const EcalRecHitCollection *recHits = nullptr;
284  if (photonRef->superCluster()->seed()->hitsAndFractions().at(0).first.subdetId() == EcalBarrel)
285  recHits = recHitsEBHandle.product();
286  else if (photonRef->superCluster()->seed()->hitsAndFractions().at(0).first.subdetId() == EcalEndcap)
287  recHits = recHitsEEHandle.product();
288 
289  EcalRecHitCollection selectedRecHits;
290 
291  unsigned nSelectedCells = selectedCells.size();
292  for (unsigned icell = 0; icell < nSelectedCells; ++icell) {
293  EcalRecHitCollection::const_iterator it = recHits->find(selectedCells[icell]);
294  if (it != recHits->end()) {
295  selectedRecHits.push_back(*it);
296  }
297  }
298  selectedRecHits.sort();
299  if (embedRecHits_)
300  aPhoton.embedRecHits(&selectedRecHits);
301 
302  // store the match to the generated final state muons
303  if (addGenMatch_) {
304  for (size_t i = 0, n = genMatches.size(); i < n; ++i) {
305  reco::GenParticleRef genPhoton = (*genMatches[i])[photonRef];
306  aPhoton.addGenParticleRef(genPhoton);
307  }
308  if (embedGenMatch_)
309  aPhoton.embedGenParticle();
310  }
311 
312  if (efficiencyLoader_.enabled()) {
313  efficiencyLoader_.setEfficiencies(aPhoton, photonRef);
314  }
315 
316  if (resolutionLoader_.enabled()) {
318  }
319 
320  // here comes the extra functionality
321  if (isolator_.enabled()) {
323  typedef pat::helper::MultiIsolator::IsolationValuePairs IsolationValuePairs;
324  // better to loop backwards, so the vector is resized less times
325  for (IsolationValuePairs::const_reverse_iterator it = isolatorTmpStorage_.rbegin(),
326  ed = isolatorTmpStorage_.rend();
327  it != ed;
328  ++it) {
329  aPhoton.setIsolation(it->first, it->second);
330  }
331  }
332 
333  for (size_t j = 0, nd = deposits.size(); j < nd; ++j) {
334  aPhoton.setIsoDeposit(isoDepositLabels_[j].first, (*deposits[j])[photonRef]);
335  }
336 
337  for (size_t j = 0; j < isolationValues.size(); ++j) {
338  aPhoton.setIsolation(isolationValueLabels_[j].first, (*isolationValues[j])[photonRef]);
339  }
340 
341  // add photon ID info
342  if (addPhotonID_) {
343  for (size_t i = 0; i < photIDSrcs_.size(); ++i) {
344  ids[i].second = (*idhandles[i])[photonRef];
345  }
346  aPhoton.setPhotonIDs(ids);
347  }
348 
349  if (useUserData_) {
350  userDataHelper_.add(aPhoton, iEvent, iSetup);
351  }
352 
353  // set conversion veto selection
354  bool passelectronveto = false;
355  if (hConversions.isValid()) {
356  // this is recommended method
357  passelectronveto = !ConversionTools::hasMatchedPromptElectron(
358  photonRef->superCluster(), *hElectrons, *hConversions, beamSpotHandle->position());
359  }
360  aPhoton.setPassElectronVeto(passelectronveto);
361 
362  // set electron veto using pixel seed (not recommended but many analysis groups are still using since it is powerful method to remove electrons)
363  aPhoton.setHasPixelSeed(photonRef->hasPixelSeed());
364 
365  // set seed energy
366  aPhoton.setSeedEnergy(photonRef->superCluster()->seed()->energy());
367 
368  // set input variables for regression energy correction
369  if (saveRegressionData_) {
370  EcalRegressionData ecalRegData;
371  ecalRegData.fill(*(photonRef->superCluster()),
372  recHitsEBHandle.product(),
373  recHitsEEHandle.product(),
376  -1);
377 
378  aPhoton.setEMax(ecalRegData.eMax());
379  aPhoton.setE2nd(ecalRegData.e2nd());
380  aPhoton.setE3x3(ecalRegData.e3x3());
381  aPhoton.setETop(ecalRegData.eTop());
382  aPhoton.setEBottom(ecalRegData.eBottom());
383  aPhoton.setELeft(ecalRegData.eLeft());
384  aPhoton.setERight(ecalRegData.eRight());
385  aPhoton.setSee(ecalRegData.sigmaIEtaIEta());
386  aPhoton.setSep(
387  ecalRegData.sigmaIEtaIPhi() * ecalRegData.sigmaIEtaIEta() *
388  ecalRegData
389  .sigmaIPhiIPhi()); //there is a conflict on what sigmaIEtaIPhi actually is, regression and ID have it differently, this may change in later releases
390  aPhoton.setSpp(ecalRegData.sigmaIPhiIPhi());
391 
392  aPhoton.setMaxDR(ecalRegData.maxSubClusDR());
393  aPhoton.setMaxDRDPhi(ecalRegData.maxSubClusDRDPhi());
394  aPhoton.setMaxDRDEta(ecalRegData.maxSubClusDRDEta());
395  aPhoton.setMaxDRRawEnergy(ecalRegData.maxSubClusDRRawEnergy());
405 
406  aPhoton.setCryPhi(ecalRegData.seedCrysPhiOrY());
407  aPhoton.setCryEta(ecalRegData.seedCrysEtaOrX());
408  aPhoton.setIEta(ecalRegData.seedCrysIEtaOrIX());
409  aPhoton.setIPhi(ecalRegData.seedCrysIPhiOrIY());
410  } else {
411  aPhoton.setEMax(0);
412  aPhoton.setE2nd(0);
413  aPhoton.setE3x3(0);
414  aPhoton.setETop(0);
415  aPhoton.setEBottom(0);
416  aPhoton.setELeft(0);
417  aPhoton.setERight(0);
418  aPhoton.setSee(0);
419  aPhoton.setSep(0);
420  aPhoton.setSpp(0);
421 
422  aPhoton.setMaxDR(0);
423  aPhoton.setMaxDRDPhi(0);
424  aPhoton.setMaxDRDEta(0);
425  aPhoton.setMaxDRRawEnergy(0);
426  aPhoton.setSubClusRawE1(0);
427  aPhoton.setSubClusRawE2(0);
428  aPhoton.setSubClusRawE3(0);
429  aPhoton.setSubClusDPhi1(0);
430  aPhoton.setSubClusDPhi2(0);
431  aPhoton.setSubClusDPhi3(0);
432  aPhoton.setSubClusDEta1(0);
433  aPhoton.setSubClusDEta2(0);
434  aPhoton.setSubClusDEta3(0);
435 
436  aPhoton.setCryPhi(0);
437  aPhoton.setCryEta(0);
438  aPhoton.setIEta(0);
439  aPhoton.setIPhi(0);
440  }
441 
442  if (addPuppiIsolation_)
443  aPhoton.setIsolationPUPPI((*PUPPIIsolation_charged_hadrons)[phoPtr],
444  (*PUPPIIsolation_neutral_hadrons)[phoPtr],
445  (*PUPPIIsolation_photons)[phoPtr]);
446  else
447  aPhoton.setIsolationPUPPI(-999., -999., -999.);
448 
449  // Get PFCluster Isolation
450  if (addPFClusterIso_) {
452  edm::Handle<edm::ValueMap<float>> ecalPFClusterIsoMapH;
453  iEvent.getByToken(ecalPFClusterIsoT_, ecalPFClusterIsoMapH);
454  newPFIsol.sumEcalClusterEt = (*ecalPFClusterIsoMapH)[photonRef];
455  edm::Handle<edm::ValueMap<float>> hcalPFClusterIsoMapH;
457  iEvent.getByToken(hcalPFClusterIsoT_, hcalPFClusterIsoMapH);
458  newPFIsol.sumHcalClusterEt = (*hcalPFClusterIsoMapH)[photonRef];
459  } else {
460  newPFIsol.sumHcalClusterEt = -999.;
461  }
462  aPhoton.setPflowIsolationVariables(newPFIsol);
463  }
464 
465  // add the Photon to the vector of Photons
466  PATPhotons->push_back(aPhoton);
467  }
468 
469  // sort Photons in ET
470  std::sort(PATPhotons->begin(), PATPhotons->end(), eTComparator_);
471 
472  // put genEvt object in Event
473  std::unique_ptr<std::vector<Photon>> myPhotons(PATPhotons);
474  iEvent.put(std::move(myPhotons));
475  if (isolator_.enabled())
477 }
478 
479 // ParameterSet description for module
482  iDesc.setComment("PAT photon producer module");
483 
484  // input source
485  iDesc.add<edm::InputTag>("photonSource", edm::InputTag("no default"))->setComment("input collection");
486  iDesc.add<edm::InputTag>("electronSource", edm::InputTag("no default"))->setComment("input collection");
487  iDesc.add<edm::InputTag>("conversionSource", edm::InputTag("allConversions"))->setComment("input collection");
488 
489  iDesc.add<edm::InputTag>("reducedBarrelRecHitCollection", edm::InputTag("reducedEcalRecHitsEB"));
490  iDesc.add<edm::InputTag>("reducedEndcapRecHitCollection", edm::InputTag("reducedEcalRecHitsEE"));
491 
492  iDesc.ifValue(
493  edm::ParameterDescription<bool>("addPFClusterIso", false, true),
495  "ecalPFClusterIsoMap", edm::InputTag("photonEcalPFClusterIsolationProducer"), true) and
497  "hcalPFClusterIsoMap", edm::InputTag("photonHcalPFClusterIsolationProducer"), true)) or
498  false >> (edm::ParameterDescription<edm::InputTag>("ecalPFClusterIsoMap", edm::InputTag(""), true) and
499  edm::ParameterDescription<edm::InputTag>("hcalPFClusterIsoMap", edm::InputTag(""), true)));
500 
501  iDesc.ifValue(
502  edm::ParameterDescription<bool>("addPuppiIsolation", false, true),
504  "puppiIsolationChargedHadrons", edm::InputTag("egmPhotonPUPPIIsolation", "h+-DR030-"), true) and
506  "puppiIsolationNeutralHadrons", edm::InputTag("egmPhotonPUPPIIsolation", "h0-DR030-"), true) and
508  "puppiIsolationPhotons", edm::InputTag("egmPhotonPUPPIIsolation", "gamma-DR030-"), true)) or
509  false >> edm::EmptyGroupDescription());
510 
511  iDesc.add<bool>("embedSuperCluster", true)->setComment("embed external super cluster");
512  iDesc.add<bool>("embedSeedCluster", true)->setComment("embed external seed cluster");
513  iDesc.add<bool>("embedBasicClusters", true)->setComment("embed external basic clusters");
514  iDesc.add<bool>("embedPreshowerClusters", true)->setComment("embed external preshower clusters");
515  iDesc.add<bool>("embedRecHits", true)->setComment("embed external RecHits");
516 
517  // MC matching configurables
518  iDesc.add<bool>("addGenMatch", true)->setComment("add MC matching");
519  iDesc.add<bool>("embedGenMatch", false)->setComment("embed MC matched MC information");
520  std::vector<edm::InputTag> emptySourceVector;
521  iDesc
522  .addNode(edm::ParameterDescription<edm::InputTag>("genParticleMatch", edm::InputTag(), true) xor
523  edm::ParameterDescription<std::vector<edm::InputTag>>("genParticleMatch", emptySourceVector, true))
524  ->setComment("input with MC match information");
525 
527 
528  // photon ID configurables
529  iDesc.add<bool>("addPhotonID", true)->setComment("add photon ID variables");
530  edm::ParameterSetDescription photonIDSourcesPSet;
531  photonIDSourcesPSet.setAllowAnything();
532  iDesc
533  .addNode(edm::ParameterDescription<edm::InputTag>("photonIDSource", edm::InputTag(), true) xor
534  edm::ParameterDescription<edm::ParameterSetDescription>("photonIDSources", photonIDSourcesPSet, true))
535  ->setComment("input with photon ID variables");
536 
537  // IsoDeposit configurables
538  edm::ParameterSetDescription isoDepositsPSet;
539  isoDepositsPSet.addOptional<edm::InputTag>("tracker");
540  isoDepositsPSet.addOptional<edm::InputTag>("ecal");
541  isoDepositsPSet.addOptional<edm::InputTag>("hcal");
542  isoDepositsPSet.addOptional<edm::InputTag>("pfAllParticles");
543  isoDepositsPSet.addOptional<edm::InputTag>("pfChargedHadrons");
544  isoDepositsPSet.addOptional<edm::InputTag>("pfChargedAll");
545  isoDepositsPSet.addOptional<edm::InputTag>("pfPUChargedHadrons");
546  isoDepositsPSet.addOptional<edm::InputTag>("pfNeutralHadrons");
547  isoDepositsPSet.addOptional<edm::InputTag>("pfPhotons");
548  isoDepositsPSet.addOptional<std::vector<edm::InputTag>>("user");
549  iDesc.addOptional("isoDeposits", isoDepositsPSet);
550 
551  // isolation values configurables
552  edm::ParameterSetDescription isolationValuesPSet;
553  isolationValuesPSet.addOptional<edm::InputTag>("tracker");
554  isolationValuesPSet.addOptional<edm::InputTag>("ecal");
555  isolationValuesPSet.addOptional<edm::InputTag>("hcal");
556  isolationValuesPSet.addOptional<edm::InputTag>("pfAllParticles");
557  isolationValuesPSet.addOptional<edm::InputTag>("pfChargedHadrons");
558  isolationValuesPSet.addOptional<edm::InputTag>("pfChargedAll");
559  isolationValuesPSet.addOptional<edm::InputTag>("pfPUChargedHadrons");
560  isolationValuesPSet.addOptional<edm::InputTag>("pfNeutralHadrons");
561  isolationValuesPSet.addOptional<edm::InputTag>("pfPhotons");
562  isolationValuesPSet.addOptional<std::vector<edm::InputTag>>("user");
563  iDesc.addOptional("isolationValues", isolationValuesPSet);
564 
565  // Efficiency configurables
566  edm::ParameterSetDescription efficienciesPSet;
567  efficienciesPSet.setAllowAnything(); // TODO: the pat helper needs to implement a description.
568  iDesc.add("efficiencies", efficienciesPSet);
569  iDesc.add<bool>("addEfficiencies", false);
570 
571  // Check to see if the user wants to add user data
572  edm::ParameterSetDescription userDataPSet;
574  iDesc.addOptional("userData", userDataPSet);
575 
576  edm::ParameterSetDescription isolationPSet;
577  isolationPSet.setAllowAnything(); // TODO: the pat helper needs to implement a description.
578  iDesc.add("userIsolation", isolationPSet);
579 
580  iDesc.addNode(edm::ParameterDescription<edm::InputTag>("beamLineSrc", edm::InputTag(), true))
581  ->setComment("input with high level selection");
582 
583  iDesc.add<bool>("saveRegressionData", true)->setComment("save regression input variables");
584 
585  descriptions.add("PATPhotonProducer", iDesc);
586 }
587 
589 
pat::Photon::setSubClusDPhi3
void setSubClusDPhi3(float s)
Definition: Photon.h:291
ConfigurationDescriptions.h
EcalRegressionData::seedCrysIPhiOrIY
float seedCrysIPhiOrIY() const
Definition: EcalRegressionData.h:51
pat::PATPhotonProducer::electronToken_
edm::EDGetTokenT< reco::GsfElectronCollection > electronToken_
Definition: PATPhotonProducer.h:64
EcalRegressionData::eTop
float eTop() const
Definition: EcalRegressionData.h:40
pat::PATPhotonProducer::isolator_
pat::helper::MultiIsolator isolator_
Definition: PATPhotonProducer.h:98
pat::PATPhotonProducer::saveRegressionData_
bool saveRegressionData_
Definition: PATPhotonProducer.h:135
pat::Photon::setMaxDRRawEnergy
void setMaxDRRawEnergy(float m)
Definition: Photon.h:277
pat::PATUserDataHelper
Assists in assimilating all pat::UserData into pat objects.
Definition: PATUserDataHelper.h:49
edm::SortedCollection::sort
void sort()
Definition: SortedCollection.h:302
mps_fire.i
i
Definition: mps_fire.py:428
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
edm::SortedCollection< EcalRecHit >::const_iterator
std::vector< EcalRecHit >::const_iterator const_iterator
Definition: SortedCollection.h:80
pat::PATPhotonProducer::useUserData_
bool useUserData_
Definition: PATPhotonProducer.h:125
Reference_intrackfit_cff.barrel
list barrel
Definition: Reference_intrackfit_cff.py:37
reco::Photon::superCluster
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
EcalRegressionData::sigmaIEtaIEta
float sigmaIEtaIEta() const
Definition: EcalRegressionData.h:44
MessageLogger.h
pat::Photon::setEBottom
void setEBottom(float e)
Definition: Photon.h:257
EcalRegressionData::eRight
float eRight() const
Definition: EcalRegressionData.h:43
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
pat::PATPhotonProducer::embedBasicClusters_
bool embedBasicClusters_
Definition: PATPhotonProducer.h:70
edm::Handle::product
T const * product() const
Definition: Handle.h:70
electronProducer_cff.isolationValues
isolationValues
Definition: electronProducer_cff.py:26
pat::Photon::setSpp
void setSpp(float s)
Definition: Photon.h:266
pat::Photon::setMaxDRDPhi
void setMaxDRDPhi(float m)
Definition: Photon.h:273
pat::Photon::setSubClusDPhi2
void setSubClusDPhi2(float s)
Definition: Photon.h:289
pat::PATPhotonProducer::reducedEndcapRecHitCollectionToken_
edm::EDGetTokenT< EcalRecHitCollection > reducedEndcapRecHitCollectionToken_
Definition: PATPhotonProducer.h:77
EcalRegressionData::seedCrysPhiOrY
float seedCrysPhiOrY() const
Definition: EcalRegressionData.h:48
EcalRegressionData::maxSubClusDRRawEnergy
float maxSubClusDRRawEnergy() const
Definition: EcalRegressionData.h:55
pat::Photon::setIsoDeposit
void setIsoDeposit(IsolationKeys key, const IsoDeposit &dep)
Sets the IsoDeposit associated with some key; if it is already existent, it is overwritten.
Definition: Photon.h:217
pat::helper::EfficiencyLoader
Definition: EfficiencyLoader.h:16
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
pat::Photon::setIEta
void setIEta(float i)
Definition: Photon.h:308
pat::helper::MultiIsolator::fill
void fill(const edm::View< T > &coll, int idx, IsolationValuePairs &isolations) const
Definition: MultiIsolator.h:84
pat::PATUserDataHelper::fillDescription
static void fillDescription(edm::ParameterSetDescription &iDesc)
Definition: PATUserDataHelper.h:135
ConversionTools::hasMatchedPromptElectron
static bool hasMatchedPromptElectron(const reco::SuperClusterRef &sc, const reco::GsfElectronCollection &eleCol, const reco::ConversionCollection &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
Definition: ConversionTools.cc:391
pat::Photon::embedSuperCluster
void embedSuperCluster()
method to store the photon's supercluster internally
pat::Photon::setSubClusRawE1
void setSubClusRawE1(float s)
Definition: Photon.h:280
pat::PATPhotonProducer::photonToken_
edm::EDGetTokenT< edm::View< reco::Photon > > photonToken_
Definition: PATPhotonProducer.h:63
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
pat::Photon::setMaxDR
void setMaxDR(float m)
Definition: Photon.h:271
pat::Photon::setHasPixelSeed
void setHasPixelSeed(bool flag)
Definition: Photon.h:242
pat::helper::EfficiencyLoader::enabled
bool enabled() const
'true' if this there is at least one efficiency configured
Definition: EfficiencyLoader.h:25
edm::PtrVectorItr
Definition: PtrVector.h:51
edm::EDGetTokenT::isUninitialized
constexpr bool isUninitialized() const noexcept
Definition: EDGetToken.h:99
edm::SortedCollection< EcalRecHit >
edm::SortedCollection::size
size_type size() const
Definition: SortedCollection.h:215
pat::PATObject::addGenParticleRef
void addGenParticleRef(const reco::GenParticleRef &ref)
Definition: PATObject.h:753
EcalRegressionData
Definition: EcalRegressionData.h:17
EmptyGroupDescription.h
pat::PATPhotonProducer::embedPreshowerClusters_
bool embedPreshowerClusters_
Definition: PATPhotonProducer.h:71
CaloTopologyRecord
Definition: CaloTopologyRecord.h:10
EcalRegressionData::maxSubClusDRDPhi
float maxSubClusDRDPhi() const
Definition: EcalRegressionData.h:53
pat::PATPhotonProducer::ecalPFClusterIsoT_
edm::EDGetTokenT< edm::ValueMap< float > > ecalPFClusterIsoT_
Definition: PATPhotonProducer.h:83
pat::Photon::setSubClusDEta3
void setSubClusDEta3(float s)
Definition: Photon.h:298
EcalRegressionData::maxSubClusDRDEta
float maxSubClusDRDEta() const
Definition: EcalRegressionData.h:54
edm::Handle
Definition: AssociativeIterator.h:50
edm::ParameterSetDescription::addOptional
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:105
edm::SortedCollection::push_back
void push_back(T const &t)
Definition: SortedCollection.h:188
EcalRegressionData::eLeft
float eLeft() const
Definition: EcalRegressionData.h:42
dqmdumpme.first
first
Definition: dqmdumpme.py:55
pat::helper::MultiIsolator::IsolationValuePairs
std::vector< std::pair< pat::IsolationKeys, float > > IsolationValuePairs
Definition: MultiIsolator.h:17
EcalRegressionData::SubClusNr::C1
EcalRegressionData::subClusDEta
const std::vector< float > & subClusDEta() const
Definition: EcalRegressionData.h:58
EcalRegressionData::e2nd
float e2nd() const
Definition: EcalRegressionData.h:38
PATPhotonProducer.h
EcalBarrel
Definition: EcalSubdetector.h:10
pat::PATPhotonProducer::isolationValueLabels_
IsolationLabels isolationValueLabels_
Definition: PATPhotonProducer.h:104
pat::helper::KinResolutionsLoader::enabled
bool enabled() const
'true' if this there is at least one efficiency configured
Definition: KinResolutionsLoader.h:27
EcalRegressionData::seedCrysIEtaOrIX
float seedCrysIEtaOrIX() const
Definition: EcalRegressionData.h:50
pat::PATPhotonProducer::IsoDepositMaps
std::vector< edm::Handle< edm::ValueMap< IsoDeposit > > > IsoDepositMaps
Definition: PATPhotonProducer.h:93
pat::PATPhotonProducer::userDataHelper_
pat::PATUserDataHelper< pat::Photon > userDataHelper_
Definition: PATPhotonProducer.h:130
pat::helper::MultiIsolator::enabled
bool enabled() const
True if it has a non null configuration.
Definition: MultiIsolator.h:55
edm::Ref< GenParticleCollection >
EcalRegressionData::eMax
float eMax() const
Definition: EcalRegressionData.h:37
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
pat::PATPhotonProducer::embedSeedCluster_
bool embedSeedCluster_
Definition: PATPhotonProducer.h:69
pat::helper::MultiIsolator::endEvent
void endEvent()
Definition: MultiIsolator.cc:85
GenParticle.h
fileCollector.seed
seed
Definition: fileCollector.py:127
pat::PATPhotonProducer::efficiencyLoader_
pat::helper::EfficiencyLoader efficiencyLoader_
Definition: PATPhotonProducer.h:115
DetId
Definition: DetId.h:17
MakerMacros.h
reco::Photon::PflowIsolationVariables
Definition: Photon.h:459
EcalRegressionData::fill
void fill(const reco::SuperCluster &superClus, const EcalRecHitCollection *ebRecHits, const EcalRecHitCollection *eeRecHits, const CaloGeometry *geom, const CaloTopology *topology, const reco::VertexCollection *vertices)
Definition: EcalRegressionData.h:82
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
pat::Photon::setSubClusRawE2
void setSubClusRawE2(float s)
Definition: Photon.h:282
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
pat::Photon::setCryPhi
void setCryPhi(float c)
Definition: Photon.h:301
names
const std::string names[nVars_]
Definition: PhotonIDValueMapProducer.cc:124
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
reco::Photon::setPflowIsolationVariables
void setPflowIsolationVariables(const PflowIsolationVariables &pfisol)
Set Particle Flow Isolation variables.
Definition: Photon.h:497
pat::PATUserDataHelper::add
void add(ObjectType &patObject, edm::Event const &iEvent, edm::EventSetup const &iSetup)
Definition: PATUserDataHelper.h:114
pat::PATPhotonProducer::resolutionLoader_
pat::helper::KinResolutionsLoader resolutionLoader_
Definition: PATPhotonProducer.h:118
pat::helper::EfficiencyLoader::newEvent
void newEvent(const edm::Event &event)
To be called for each new event, reads in the ValueMaps for efficiencies.
Definition: EfficiencyLoader.cc:21
pat::PATPhotonProducer::isoDepositLabels_
IsolationLabels isoDepositLabels_
Definition: PATPhotonProducer.h:103
pat::PATPhotonProducer::addPFClusterIso_
bool addPFClusterIso_
Definition: PATPhotonProducer.h:81
GenParticleFwd.h
pat::PATPhotonProducer::embedRecHits_
bool embedRecHits_
Definition: PATPhotonProducer.h:72
pat::helper::KinResolutionsLoader
Definition: KinResolutionsLoader.h:18
pat::PATPhotonProducer::~PATPhotonProducer
~PATPhotonProducer() override
Definition: PATPhotonProducer.cc:144
edm::ESHandle< CaloTopology >
pat::PATPhotonProducer::isoDepositTokens_
std::vector< edm::EDGetTokenT< edm::ValueMap< IsoDeposit > > > isoDepositTokens_
Definition: PATPhotonProducer.h:100
EcalRegressionData::SubClusNr::C3
pat::PATPhotonProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: PATPhotonProducer.cc:480
reco::BeamSpot::position
const Point & position() const
position
Definition: BeamSpot.h:59
pat::Photon::setIsolation
void setIsolation(IsolationKeys key, float value)
Definition: Photon.h:171
ParameterSetDescription.h
EcalClusterLazyTools
EcalRegressionData::SubClusNr::C2
pat::Photon::setE3x3
void setE3x3(float e)
Definition: Photon.h:253
CaloGeometryRecord.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
edm::vector_transform
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
EcalSubdetector.h
EcalEndcap
Definition: EcalSubdetector.h:10
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
pat::PATPhotonProducer::isolatorTmpStorage_
pat::helper::MultiIsolator::IsolationValuePairs isolatorTmpStorage_
Definition: PATPhotonProducer.h:99
pat::Photon::setSep
void setSep(float s)
Definition: Photon.h:268
pat::Photon::setEMax
void setEMax(float e)
Definition: Photon.h:249
reco::Photon::hasPixelSeed
bool hasPixelSeed() const
Bool flagging photons having a non-zero size vector of Ref to electornPixel seeds.
Definition: Photon.h:75
pat::helper::KinResolutionsLoader::setResolutions
void setResolutions(pat::PATObject< T > &obj) const
Sets the efficiencies for this object, using the reference to the original objects.
Definition: KinResolutionsLoader.h:49
pat::Photon::embedSeedCluster
void embedSeedCluster()
method to store the electron's seedcluster internally
edm::ParameterSet
Definition: ParameterSet.h:47
edm::ParameterSetDescription::setComment
void setComment(std::string const &value)
Definition: ParameterSetDescription.cc:33
EcalRegressionData::maxSubClusDR
float maxSubClusDR() const
Definition: EcalRegressionData.h:52
deltaR.h
pat::PATPhotonProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: PATPhotonProducer.cc:146
reco::Photon::getPflowIsolationVariables
const PflowIsolationVariables & getPflowIsolationVariables() const
Get Particle Flow Isolation variables block.
Definition: Photon.h:494
pat::helper::KinResolutionsLoader::fillDescription
static void fillDescription(edm::ParameterSetDescription &iDesc)
Method for documentation and validation of PSet.
Definition: KinResolutionsLoader.cc:34
pat::Photon::setETop
void setETop(float e)
Definition: Photon.h:255
EcalClusterTools.h
pat::PATPhotonProducer::beamLineToken_
edm::EDGetTokenT< reco::BeamSpot > beamLineToken_
Definition: PATPhotonProducer.h:66
CaloTopology::getSubdetectorTopology
const CaloSubdetectorTopology * getSubdetectorTopology(const DetId &id) const
access the subdetector Topology for the given subdetector directly
Definition: CaloTopology.cc:17
CaloTopologyRecord.h
edm::ParameterSetDescription::ifValue
ParameterDescriptionNode * ifValue(ParameterDescription< T > const &switchParameter, std::unique_ptr< ParameterDescriptionCases< T >> cases)
Definition: ParameterSetDescription.h:220
Photon
Definition: Photon.py:1
pat::Photon::setSubClusDEta2
void setSubClusDEta2(float s)
Definition: Photon.h:296
edm::ParameterSet::getParameterNamesForType
std::vector< std::string > getParameterNamesForType(bool trackiness=true) const
Definition: ParameterSet.h:179
iEvent
int iEvent
Definition: GenABIO.cc:224
pat::PATPhotonProducer::addGenMatch_
bool addGenMatch_
Definition: PATPhotonProducer.h:86
pat::PATPhotonProducer::isolationValueTokens_
std::vector< edm::EDGetTokenT< edm::ValueMap< double > > > isolationValueTokens_
Definition: PATPhotonProducer.h:101
pat::PATPhotonProducer::PATPhotonProducer
PATPhotonProducer(const edm::ParameterSet &iConfig)
Definition: PATPhotonProducer.cc:31
pat::Photon::setPassElectronVeto
void setPassElectronVeto(bool flag)
Definition: Photon.h:239
pat::PATPhotonProducer::ecalTopology_
const CaloTopology * ecalTopology_
Definition: PATPhotonProducer.h:132
pat::PATPhotonProducer::IsolationValueMaps
std::vector< edm::Handle< edm::ValueMap< double > > > IsolationValueMaps
Definition: PATPhotonProducer.h:94
BPHMonitor_cfi.photons
photons
Definition: BPHMonitor_cfi.py:91
edm::Association
Definition: Association.h:18
edm::EventSetup
Definition: EventSetup.h:57
pat::PATPhotonProducer::eTComparator_
GreaterByEt< Photon > eTComparator_
Definition: PATPhotonProducer.h:91
edm::ParameterSetDescription::addNode
ParameterDescriptionNode * addNode(ParameterDescriptionNode const &node)
Definition: ParameterSetDescription.cc:41
pat
Definition: HeavyIon.h:7
edm::ParameterSetDescription::setAllowAnything
void setAllowAnything()
allow any parameter label/value pairs
Definition: ParameterSetDescription.cc:37
EcalRegressionData::subClusDPhi
const std::vector< float > & subClusDPhi() const
Definition: EcalRegressionData.h:57
EcalRegressionData::e3x3
float e3x3() const
Definition: EcalRegressionData.h:39
DetId::Ecal
Definition: DetId.h:27
pat::Photon::setSubClusDEta1
void setSubClusDEta1(float s)
Definition: Photon.h:294
get
#define get
pat::helper::KinResolutionsLoader::newEvent
void newEvent(const edm::Event &event, const edm::EventSetup &setup)
To be called for each new event, reads in the EventSetup object.
Definition: KinResolutionsLoader.cc:27
pat::Photon::setSeedEnergy
void setSeedEnergy(float e)
Definition: Photon.h:246
pat::PATPhotonProducer
Produces the pat::Photon.
Definition: PATPhotonProducer.h:52
EcalClusterLazyToolsBase::ESGetTokens::get
ESData get(edm::EventSetup const &eventSetup) const
Definition: EcalClusterLazyTools.h:62
pat::Photon::embedPreshowerClusters
void embedPreshowerClusters()
method to store the electron's preshower clusters
EcalRegressionData::seedCrysEtaOrX
float seedCrysEtaOrX() const
Definition: EcalRegressionData.h:49
edm::Ptr
Definition: AssociationVector.h:31
CaloTopology.h
pat::PATPhotonProducer::photIDTokens_
std::vector< edm::EDGetTokenT< edm::ValueMap< Bool_t > > > photIDTokens_
Definition: PATPhotonProducer.h:123
CaloSubdetectorTopology::getWindow
virtual std::vector< DetId > getWindow(const DetId &id, const int &northSouthSize, const int &eastWestSize) const
Definition: CaloSubdetectorTopology.cc:4
pat::PATPhotonProducer::photIDSrcs_
std::vector< NameTag > photIDSrcs_
Definition: PATPhotonProducer.h:122
pat::PATPhotonProducer::genMatchTokens_
std::vector< edm::EDGetTokenT< edm::Association< reco::GenParticleCollection > > > genMatchTokens_
Definition: PATPhotonProducer.h:88
EcalRegressionData::eBottom
float eBottom() const
Definition: EcalRegressionData.h:41
pat::PATPhotonProducer::embedSuperCluster_
bool embedSuperCluster_
Definition: PATPhotonProducer.h:68
pat::Photon::setIPhi
void setIPhi(float i)
Definition: Photon.h:306
eostools.move
def move(src, dest)
Definition: eostools.py:511
EcalRegressionData::subClusRawEnergy
const std::vector< float > & subClusRawEnergy() const
Definition: EcalRegressionData.h:56
pat::helper::MultiIsolator::beginEvent
void beginEvent(const edm::Event &event, const edm::EventSetup &eventSetup)
Definition: MultiIsolator.cc:79
tier0.unique
def unique(seq, keepstr=True)
Definition: tier0.py:24
pat::Photon::setMaxDRDEta
void setMaxDRDEta(float m)
Definition: Photon.h:275
pat::PATPhotonProducer::ecalGeometry_
const CaloGeometry * ecalGeometry_
Definition: PATPhotonProducer.h:133
pat::Photon::embedBasicClusters
void embedBasicClusters()
method to store the electron's basic clusters
pat::PATPhotonProducer::hcalPFClusterIsoT_
edm::EDGetTokenT< edm::ValueMap< float > > hcalPFClusterIsoT_
Definition: PATPhotonProducer.h:84
pat::helper::EfficiencyLoader::setEfficiencies
void setEfficiencies(pat::PATObject< T > &obj, const R &originalRef) const
Sets the efficiencies for this object, using the reference to the original objects.
Definition: EfficiencyLoader.h:41
EcalRegressionData::sigmaIEtaIPhi
float sigmaIEtaIPhi() const
Definition: EcalRegressionData.h:45
pat::PATPhotonProducer::hConversionsToken_
edm::EDGetTokenT< reco::ConversionCollection > hConversionsToken_
Definition: PATPhotonProducer.h:65
EcalRegressionData.h
edm::ValueMap< float >
Exception
Definition: hltDiff.cc:246
pat::PATPhotonProducer::PUPPIIsolation_photons_
edm::EDGetTokenT< edm::ValueMap< float > > PUPPIIsolation_photons_
Definition: PATPhotonProducer.h:129
pat::Photon::setPhotonIDs
void setPhotonIDs(const std::vector< IdPair > &ids)
Definition: Photon.h:106
pat::PATPhotonProducer::addPhotonID_
bool addPhotonID_
Definition: PATPhotonProducer.h:120
pat::PATPhotonProducer::addPuppiIsolation_
bool addPuppiIsolation_
Definition: PATPhotonProducer.h:82
pat::Photon::setE2nd
void setE2nd(float e)
Definition: Photon.h:251
pat::PATPhotonProducer::reducedBarrelRecHitCollectionToken_
edm::EDGetTokenT< EcalRecHitCollection > reducedBarrelRecHitCollectionToken_
Definition: PATPhotonProducer.h:75
or
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
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::RefToBase
Definition: AssociativeIterator.h:54
edm::View::const_iterator
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
reco::Photon::PflowIsolationVariables::sumEcalClusterEt
float sumEcalClusterEt
Definition: Photon.h:466
reco::Photon::PflowIsolationVariables::sumHcalClusterEt
float sumHcalClusterEt
Definition: Photon.h:467
pat::PATPhotonProducer::PUPPIIsolation_neutral_hadrons_
edm::EDGetTokenT< edm::ValueMap< float > > PUPPIIsolation_neutral_hadrons_
Definition: PATPhotonProducer.h:128
cms::Exception
Definition: Exception.h:70
View.h
pat::Photon::setSubClusDPhi1
void setSubClusDPhi1(float s)
Definition: Photon.h:287
pat::Photon::setELeft
void setELeft(float e)
Definition: Photon.h:259
pat::PATPhotonProducer::PUPPIIsolation_charged_hadrons_
edm::EDGetTokenT< edm::ValueMap< float > > PUPPIIsolation_charged_hadrons_
Definition: PATPhotonProducer.h:127
edm::ParameterDescriptionNode::setComment
void setComment(std::string const &value)
Definition: ParameterDescriptionNode.cc:106
pat::Photon::setSee
void setSee(float s)
Definition: Photon.h:264
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
pat::PATObject::embedGenParticle
void embedGenParticle()
Definition: PATObject.h:770
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
pat::Photon::setERight
void setERight(float e)
Definition: Photon.h:261
edm::Event
Definition: Event.h:73
pat::Photon::embedRecHits
void embedRecHits(const EcalRecHitCollection *rechits)
method to store the RecHits internally - can be called from the PATElectronProducer
pat::PATPhotonProducer::ecalClusterToolsESGetTokens_
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
Definition: PATPhotonProducer.h:79
edm::EmptyGroupDescription
Definition: EmptyGroupDescription.h:15
edm::ParameterDescription
Definition: ParameterDescription.h:110
CandIsolatorFromDeposits_cfi.deposits
deposits
Definition: CandIsolatorFromDeposits_cfi.py:4
pat::Photon::setCryEta
void setCryEta(float c)
Definition: Photon.h:303
pat::PATPhotonProducer::embedGenMatch_
bool embedGenMatch_
Definition: PATPhotonProducer.h:87
pat::Photon::setSubClusRawE3
void setSubClusRawE3(float s)
Definition: Photon.h:284
edm::InputTag
Definition: InputTag.h:15
pat::Photon::setIsolationPUPPI
void setIsolationPUPPI(float chargedhadrons_, float neutralhadrons_, float photons_)
Sets PUPPI isolation.
Definition: Photon.h:193
hit
Definition: SiStripHitEffFromCalibTree.cc:88
EcalRegressionData::sigmaIPhiIPhi
float sigmaIPhiIPhi() const
Definition: EcalRegressionData.h:46
ConversionTools.h