CMS 3D CMS Logo

ElectronHcalHelper.h
Go to the documentation of this file.
1 #ifndef ElectronHcalHelper_h
2 #define ElectronHcalHelper_h
3 
17 
18 class ConsumesCollector;
19 class EgammaHadTower;
20 class HcalTopology;
21 class HcalChannelQuality;
22 class HcalHcalSeverityLevelComputer;
24 
26 public:
27  struct Configuration {
28  // common parameters
30 
31  // strategy
33 
34  // specific parameters if use rechits
36 
41  };
42 
44 
45  void beginEvent(const edm::Event &evt, const edm::EventSetup &eventSetup);
46 
47  inline auto hcalTowersBehindClusters(const reco::SuperCluster &sc) const { return egamma::towersOf(sc, *towerMap_); }
48  double hcalESum(const reco::SuperCluster &, int depth, const HcalPFCuts *hcalCuts) const;
49  double hOverEConeSize() const { return cfg_.hOverEConeSize; }
50  int maxSeverityHB() const { return cfg_.maxSeverityHB; }
51  int maxSeverityHE() const { return cfg_.maxSeverityHE; }
54 
55  // forward EgammaHadTower methods, if checkHcalStatus is enabled, using towers and H/E
56  bool hasActiveHcal(const reco::SuperCluster &sc) const;
57 
58  // QoL when one needs raw instances of EgammaHcalIsolation in addition to this class
59  const auto hcalTopology() const { return hcalTopology_; }
60  const auto hcalChannelQuality() const { return hcalChannelQuality_; }
61  const auto hcalSevLvlComputer() const { return hcalSevLvlComputer_; }
62  const auto towerMap() const { return towerMap_; }
63 
64 private:
66 
72 
73  // event data (rechits strategy)
74  std::unique_ptr<EgammaHcalIsolation> hcalIso_;
75  HcalTopology const *hcalTopology_ = nullptr;
79 };
80 
81 #endif
EgammaHcalIsolation::arrayHB eThresHB() const
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > hcalTopologyToken_
bool hasActiveHcal(const reco::SuperCluster &sc) const
const auto towerMap() const
edm::ESGetToken< HcalSeverityLevelComputer, HcalSeverityLevelComputerRcd > hcalSevLvlComputerToken_
uint32_t cc[maxCellsPerHit]
Definition: gpuFishbone.h:49
EgammaHcalIsolation::arrayHE eThresHE() const
HcalChannelQuality const * hcalChannelQuality_
const Configuration cfg_
ElectronHcalHelper(const Configuration &cfg, edm::ConsumesCollector &&cc)
edm::EDGetTokenT< HBHERecHitCollection > hbheRecHits
std::unique_ptr< EgammaHcalIsolation > hcalIso_
HcalSeverityLevelComputer const * hcalSevLvlComputer_
void beginEvent(const edm::Event &evt, const edm::EventSetup &eventSetup)
edm::ESGetToken< CaloTowerConstituentsMap, CaloGeometryRecord > towerMapToken_
edm::ESGetToken< HcalChannelQuality, HcalChannelQualityRcd > hcalChannelQualityToken_
auto hcalTowersBehindClusters(const reco::SuperCluster &sc) const
HcalTopology const * hcalTopology_
const auto hcalTopology() const
EgammaHcalIsolation::arrayHB eThresHB
double hOverEConeSize() const
EgammaHcalIsolation::arrayHE eThresHE
const auto hcalChannelQuality() const
double hcalESum(const reco::SuperCluster &, int depth, const HcalPFCuts *hcalCuts) const
std::array< double, 4 > arrayHB
CaloTowerConstituentsMap const * towerMap_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > caloGeometryToken_
std::vector< CaloTowerDetId > towersOf(reco::SuperCluster const &sc, CaloTowerConstituentsMap const &towerMap, HoeMode mode=HoeMode::SingleTower)
const auto hcalSevLvlComputer() const
std::array< double, 7 > arrayHE