CMS 3D CMS Logo

HGCalIsoCalculator.h
Go to the documentation of this file.
1 /*
2  * PhotonIsoProducer.h
3  *
4  * Created on: 13 Oct 2017
5  * Author: jkiesele, ncsmith
6  */
7 
8 #ifndef RecoEgamma_EgammaTools_HGCalIsoCalculator_h
9 #define RecoEgamma_EgammaTools_HGCalIsoCalculator_h
10 
14 
15 /*
16  *
17  * This class calculates the energy around the photon/electron in DR=0.15 that is
18  * not associated to the seed cluster.
19  * The energy is summed in 5 rings (default) between HGCal layer 1 and 30
20  * This gives back 5 calorimeter isolation values.
21  * Only the first values should be significantly affected by pileup.
22  *
23  * Usage:
24  *
25  * PhotonHGCalIsoCalculator prod;
26  * prod.setRecHitTools(rechittools)
27  * prod.setRecHits(recHitsEEHandle,recHitsFHHandle,recHitsBHHandle)
28  *
29  * <optional>
30  * prod.setDeltaR(0.15)
31  * <optional>
32  * prod.setNRings(5)
33  * <optional>
34  * prod.setMinDeltaR(0)
35  *
36  * for p in photons
37  * prod.produceHGCalIso(p.superCluster()->seed())
38  * a=prod.getIso(0)
39  * b=prod.getIso(1)
40  * c=prod.getIso(2)
41  * d=prod.getIso(3)
42  * e=prod.getIso(4)
43  *
44  *
45  */
47 public:
49 
51 
52  void setDeltaR(const float dr){dr2_=dr*dr;}
53 
54  void setMinDeltaR(const float dr){mindr2_=dr*dr;}
55 
56  void setRecHitTools(const hgcal::RecHitTools * recHitTools){rechittools_ = recHitTools;}
57 
58  void setNRings(const size_t nrings);
59 
60  void setNLayers(unsigned int nLayers){nlayers_=nLayers;}
61 
63  void setRecHits(
67  );
68 
69  void produceHGCalIso(const reco::CaloClusterPtr & seedCluster);
70 
71  const float getIso(const unsigned int ring) const;
72 
73 private:
74  std::vector<float> isoringdeposits_;
75  std::vector<unsigned int> ringasso_;
76 
77  float dr2_,mindr2_;
78 
83  std::vector<std::pair<float,float>> hitEtaPhiCache_;
84  bool debug_;
85  unsigned int nlayers_;
86 };
87 
88 
89 #endif /* RecoEgamma_EgammaTools_HGCalIsoCalculator_h */
void setNLayers(unsigned int nLayers)
void setMinDeltaR(const float dr)
edm::Handle< HGCRecHitCollection > recHitsEE_
edm::Handle< HGCRecHitCollection > recHitsBH_
void setNRings(const size_t nrings)
void setRecHits(edm::Handle< HGCRecHitCollection > hitsEE, edm::Handle< HGCRecHitCollection > hitsFH, edm::Handle< HGCRecHitCollection > hitsBH)
fill - once per event
void setDeltaR(const float dr)
std::vector< unsigned int > ringasso_
const hgcal::RecHitTools * rechittools_
std::vector< std::pair< float, float > > hitEtaPhiCache_
void setRecHitTools(const hgcal::RecHitTools *recHitTools)
void produceHGCalIso(const reco::CaloClusterPtr &seedCluster)
edm::Handle< HGCRecHitCollection > recHitsFH_
std::vector< float > isoringdeposits_
const float getIso(const unsigned int ring) const