CMS 3D CMS Logo

EgammaHLTR9IDProducer.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: EgammaHLTProducers
4 // Class: EgammaHLTR9IDProducer
5 //
8 //
9 // Original Author: Roberto Covarelli (CERN)
10 // Created: Tue Jun 13 14:48:33 CEST 2006
11 // $Id: EgammaHLTR9Producer.h,v 1.2 2010/06/10 16:19:31 ghezzi Exp $
12 // modified by Chris Tully (Princeton)
13 //
14 //
15 
16 // system include files
17 #include <memory>
18 
19 // user include files
25 
28 
30 
31 // Framework
34 
37 
39 public:
41 
42  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
43  void produce(edm::StreamID sid, edm::Event&, const edm::EventSetup&) const override;
44 
45 private:
46  // ----------member data ---------------------------
47 
52 };
53 
55  : recoEcalCandidateProducer_(consumes(config.getParameter<edm::InputTag>("recoEcalCandidateProducer"))),
56  ecalRechitEBToken_(consumes(config.getParameter<edm::InputTag>("ecalRechitEB"))),
57  ecalRechitEEToken_(consumes(config.getParameter<edm::InputTag>("ecalRechitEE"))),
58  ecalClusterToolsESGetTokens_{consumesCollector()} {
59  //register your products
60  produces<reco::RecoEcalCandidateIsolationMap>();
61  produces<reco::RecoEcalCandidateIsolationMap>("r95x5");
62 }
63 
66  desc.add<edm::InputTag>(("recoEcalCandidateProducer"), edm::InputTag("hltRecoEcalCandidate"));
67  desc.add<edm::InputTag>(("ecalRechitEB"), edm::InputTag("hltEcalRegionalEgammaRecHit", "EcalRecHitsEB"));
68  desc.add<edm::InputTag>(("ecalRechitEE"), edm::InputTag("hltEcalRegionalEgammaRecHit", "EcalRecHitsEE"));
69  descriptions.add(("hltEgammaHLTR9IDProducer"), desc);
70 }
71 
72 // ------------ method called to produce the data ------------
74  // Get the HLT filtered objects
76  iEvent.getByToken(recoEcalCandidateProducer_, recoecalcandHandle);
77 
78  auto const& ecalClusterToolsESData = ecalClusterToolsESGetTokens_.get(iSetup);
79  EcalClusterLazyTools lazyTools(iEvent, ecalClusterToolsESData, ecalRechitEBToken_, ecalRechitEEToken_);
80  noZS::EcalClusterLazyTools lazyTools5x5(iEvent, ecalClusterToolsESData, ecalRechitEBToken_, ecalRechitEEToken_);
81  reco::RecoEcalCandidateIsolationMap r9Map(recoecalcandHandle);
82  reco::RecoEcalCandidateIsolationMap r95x5Map(recoecalcandHandle);
83  for (unsigned int iRecoEcalCand = 0; iRecoEcalCand < recoecalcandHandle->size(); iRecoEcalCand++) {
84  reco::RecoEcalCandidateRef recoecalcandref(recoecalcandHandle, iRecoEcalCand); //-recoecalcandHandle->begin());
85  if (recoecalcandref->superCluster()->seed()->seed().det() != DetId::Ecal) { //HGCAL, skip for now
86  r9Map.insert(recoecalcandref, 1.0);
87  r95x5Map.insert(recoecalcandref, 1.0);
88  continue;
89  }
90  float r9 = -1;
91  float r95x5 = -1;
92 
93  float e9 = lazyTools.e3x3(*(recoecalcandref->superCluster()->seed()));
94  float e95x5 = lazyTools5x5.e3x3(*(recoecalcandref->superCluster()->seed()));
95 
96  float eraw = recoecalcandref->superCluster()->rawEnergy();
97  if (eraw > 0.) {
98  r9 = e9 / eraw;
99  r95x5 = e95x5 / eraw;
100  }
101 
102  r9Map.insert(recoecalcandref, r9);
103  r95x5Map.insert(recoecalcandref, r95x5);
104  }
105 
106  iEvent.put(std::make_unique<reco::RecoEcalCandidateIsolationMap>(r9Map));
107 
108  iEvent.put(std::make_unique<reco::RecoEcalCandidateIsolationMap>(r95x5Map), "r95x5");
109 }
110 
float e3x3(const reco::BasicCluster &cluster) const
const edm::EDGetTokenT< EcalRecHitCollection > ecalRechitEEToken_
const EcalClusterLazyTools::ESGetTokens ecalClusterToolsESGetTokens_
Definition: config.py:1
ESData get(edm::EventSetup const &eventSetup) const
const edm::EDGetTokenT< EcalRecHitCollection > ecalRechitEBToken_
int iEvent
Definition: GenABIO.cc:224
const edm::EDGetTokenT< reco::RecoEcalCandidateCollection > recoEcalCandidateProducer_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void insert(const key_type &k, const data_type &v)
insert an association
EgammaHLTR9IDProducer(const edm::ParameterSet &)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLT enums.
void produce(edm::StreamID sid, edm::Event &, const edm::EventSetup &) const override