CMS 3D CMS Logo

FWHeatmapProxyBuilderTemplate.h
Go to the documentation of this file.
1 #ifndef Fireworks_Core_FWHeatmapProxyBuilderTemplate_h
2 #define Fireworks_Core_FWHeatmapProxyBuilderTemplate_h
3 // -*- C++ -*-
4 //
5 // Package: Core
6 // Class : FWHeatmapProxyBuilderTemplate
7 //
16 //
17 // Original Author: Alex Mourtziapis
18 // Created: Wed Jan 23 14:50:00 EST 2019
19 //
20 
21 // system include files
22 #include <cmath>
23 
24 // user include files
30 
31 // forward declarations
32 
33 template <typename T>
35 public:
37 
38  //virtual ~FWHeatmapProxyBuilderTemplate();
39 
40  // ---------- const member functions ---------------------
41 
42  // ---------- static member functions --------------------
43 
44  // ---------- member functions ---------------------------
45 
46 protected:
47  std::map<DetId, const HGCRecHit*> hitmap;
48 
49  static constexpr uint8_t gradient_steps = 9;
50  static constexpr uint8_t gradient[3][gradient_steps] = {{static_cast<uint8_t>(0.2082 * 255),
51  static_cast<uint8_t>(0.0592 * 255),
52  static_cast<uint8_t>(0.0780 * 255),
53  static_cast<uint8_t>(0.0232 * 255),
54  static_cast<uint8_t>(0.1802 * 255),
55  static_cast<uint8_t>(0.5301 * 255),
56  static_cast<uint8_t>(0.8186 * 255),
57  static_cast<uint8_t>(0.9956 * 255),
58  static_cast<uint8_t>(0.9764 * 255)},
59 
60  {static_cast<uint8_t>(0.1664 * 255),
61  static_cast<uint8_t>(0.3599 * 255),
62  static_cast<uint8_t>(0.5041 * 255),
63  static_cast<uint8_t>(0.6419 * 255),
64  static_cast<uint8_t>(0.7178 * 255),
65  static_cast<uint8_t>(0.7492 * 255),
66  static_cast<uint8_t>(0.7328 * 255),
67  static_cast<uint8_t>(0.7862 * 255),
68  static_cast<uint8_t>(0.9832 * 255)},
69 
70  {static_cast<uint8_t>(0.5293 * 255),
71  static_cast<uint8_t>(0.8684 * 255),
72  static_cast<uint8_t>(0.8385 * 255),
73  static_cast<uint8_t>(0.7914 * 255),
74  static_cast<uint8_t>(0.6425 * 255),
75  static_cast<uint8_t>(0.4662 * 255),
76  static_cast<uint8_t>(0.3499 * 255),
77  static_cast<uint8_t>(0.1968 * 255),
78  static_cast<uint8_t>(0.0539 * 255)}};
79 
80  const T& modelData(int index) { return *reinterpret_cast<const T*>(m_helper.offsetObject(item()->modelData(index))); }
81 
82  void setItem(const FWEventItem* iItem) override {
84  if (iItem) {
85  iItem->getConfig()->keepEntries(true);
86  iItem->getConfig()->assertParam("Layer", 0L, 0L, 52L);
87  iItem->getConfig()->assertParam("EnergyCutOff", 0.5, 0.2, 5.0);
88  iItem->getConfig()->assertParam("Heatmap", true);
89  iItem->getConfig()->assertParam("Z+", true);
90  iItem->getConfig()->assertParam("Z-", true);
91  }
92  }
93 
94  void build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext* vc) override {
95  if (item()->getConfig()->template value<bool>("Heatmap")) {
96  hitmap.clear();
97 
98  edm::Handle<HGCRecHitCollection> recHitHandleEE;
99  edm::Handle<HGCRecHitCollection> recHitHandleFH;
100  edm::Handle<HGCRecHitCollection> recHitHandleBH;
101 
102  const edm::EventBase* event = iItem->getEvent();
103  event->getByLabel(edm::InputTag("HGCalRecHit", "HGCEERecHits"), recHitHandleEE);
104  event->getByLabel(edm::InputTag("HGCalRecHit", "HGCHEFRecHits"), recHitHandleFH);
105  event->getByLabel(edm::InputTag("HGCalRecHit", "HGCHEBRecHits"), recHitHandleBH);
106 
107  if (recHitHandleEE.isValid()) {
108  const auto& rechitsEE = *recHitHandleEE;
109 
110  for (unsigned int i = 0; i < rechitsEE.size(); ++i) {
111  hitmap[rechitsEE[i].detid().rawId()] = &rechitsEE[i];
112  }
113  }
114 
115  if (recHitHandleFH.isValid()) {
116  const auto& rechitsFH = *recHitHandleFH;
117 
118  for (unsigned int i = 0; i < rechitsFH.size(); ++i) {
119  hitmap[rechitsFH[i].detid().rawId()] = &rechitsFH[i];
120  }
121  }
122 
123  if (recHitHandleBH.isValid()) {
124  const auto& rechitsBH = *recHitHandleBH;
125 
126  for (unsigned int i = 0; i < rechitsBH.size(); ++i) {
127  hitmap[rechitsBH[i].detid().rawId()] = &rechitsBH[i];
128  }
129  }
130  }
131 
132  FWSimpleProxyBuilder::build(iItem, product, vc);
133  }
134 
136  void build(const void* iData, unsigned int iIndex, TEveElement& oItemHolder, const FWViewContext* context) override {
137  if (nullptr != iData) {
138  build(*reinterpret_cast<const T*>(iData), iIndex, oItemHolder, context);
139  }
140  }
141 
143  void buildViewType(const void* iData,
144  unsigned int iIndex,
145  TEveElement& oItemHolder,
146  FWViewType::EType viewType,
147  const FWViewContext* context) override {
148  if (nullptr != iData) {
149  buildViewType(*reinterpret_cast<const T*>(iData), iIndex, oItemHolder, viewType, context);
150  }
151  }
155  virtual void build(const T& iData, unsigned int iIndex, TEveElement& oItemHolder, const FWViewContext*) {
156  throw std::runtime_error(
157  "virtual build(const T&, unsigned int, TEveElement&, const FWViewContext*) not implemented by inherited "
158  "class.");
159  }
160 
161  virtual void buildViewType(
162  const T& iData, unsigned int iIndex, TEveElement& oItemHolder, FWViewType::EType viewType, const FWViewContext*) {
163  throw std::runtime_error(
164  "virtual buildViewType(const T&, unsigned int, TEveElement&, FWViewType::EType, const FWViewContext*) not "
165  "implemented by inherited class");
166  };
167 
168 private:
169  FWHeatmapProxyBuilderTemplate(const FWHeatmapProxyBuilderTemplate&) = delete; // stop default
170 
171  const FWHeatmapProxyBuilderTemplate& operator=(const FWHeatmapProxyBuilderTemplate&) = delete; // stop default
172 
173  // ---------- member data --------------------------------
174 };
175 
176 #endif
FWSimpleProxyBuilder::buildViewType
void buildViewType(const FWEventItem *iItem, TEveElementList *product, FWViewType::EType viewType, const FWViewContext *) override
Definition: FWSimpleProxyBuilder.cc:95
dttmaxenums::L
Definition: DTTMax.h:29
mps_fire.i
i
Definition: mps_fire.py:355
FWHeatmapProxyBuilderTemplate::setItem
void setItem(const FWEventItem *iItem) override
Definition: FWHeatmapProxyBuilderTemplate.h:82
FWViewType::EType
EType
Definition: FWViewType.h:31
edm::EventBase::getByLabel
bool getByLabel(InputTag const &, Handle< T > &) const
Definition: EventBase.h:92
FWEventItem::getConfig
FWProxyBuilderConfiguration * getConfig() const
Definition: FWEventItem.h:150
FWHeatmapProxyBuilderTemplate::gradient_steps
static constexpr uint8_t gradient_steps
Definition: FWHeatmapProxyBuilderTemplate.h:49
FWHeatmapProxyBuilderTemplate::hitmap
std::map< DetId, const HGCRecHit * > hitmap
Definition: FWHeatmapProxyBuilderTemplate.h:47
FWHeatmapProxyBuilderTemplate::build
void build(const FWEventItem *iItem, TEveElementList *product, const FWViewContext *vc) override
Definition: FWHeatmapProxyBuilderTemplate.h:94
FWHeatmapProxyBuilderTemplate::buildViewType
virtual void buildViewType(const T &iData, unsigned int iIndex, TEveElement &oItemHolder, FWViewType::EType viewType, const FWViewContext *)
Definition: FWHeatmapProxyBuilderTemplate.h:161
FWHeatmapProxyBuilderTemplate::build
void build(const void *iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *context) override
Definition: FWHeatmapProxyBuilderTemplate.h:136
edm::Handle
Definition: AssociativeIterator.h:50
FWHeatmapProxyBuilderTemplate::operator=
const FWHeatmapProxyBuilderTemplate & operator=(const FWHeatmapProxyBuilderTemplate &)=delete
FWSimpleProxyBuilder::m_helper
FWSimpleProxyHelper m_helper
Definition: FWSimpleProxyBuilder.h:59
FWProxyBuilderConfiguration::keepEntries
void keepEntries(bool b)
Definition: FWProxyBuilderConfiguration.cc:78
FWProxyBuilderConfiguration::assertParam
FWGenericParameter< T > * assertParam(const std::string &name, T def)
Definition: FWProxyBuilderConfiguration.cc:83
FWEventItem::getEvent
const edm::EventBase * getEvent() const
Definition: FWEventItem.h:131
FWHeatmapProxyBuilderTemplate::buildViewType
void buildViewType(const void *iData, unsigned int iIndex, TEveElement &oItemHolder, FWViewType::EType viewType, const FWViewContext *context) override
Definition: FWHeatmapProxyBuilderTemplate.h:143
FWSimpleProxyBuilder.h
FWHeatmapProxyBuilderTemplate::gradient
static constexpr uint8_t gradient[3][gradient_steps]
Definition: FWHeatmapProxyBuilderTemplate.h:50
HGCRecHitCollections.h
Event.h
FWSimpleProxyHelper::offsetObject
const void * offsetObject(const void *iObj) const
Definition: FWSimpleProxyHelper.h:36
FWProxyBuilderConfiguration.h
FWHeatmapProxyBuilderTemplate::FWHeatmapProxyBuilderTemplate
FWHeatmapProxyBuilderTemplate()
Definition: FWHeatmapProxyBuilderTemplate.h:36
FWProxyBuilderBase::build
void build()
Definition: FWProxyBuilderBase.cc:110
FWEventItem.h
FWViewContext
Definition: FWViewContext.h:32
FWSimpleProxyBuilder
Definition: FWSimpleProxyBuilder.h:30
FWProxyBuilderBase::item
const FWEventItem * item() const
Definition: FWProxyBuilderBase.h:64
FWHeatmapProxyBuilderTemplate
Definition: FWHeatmapProxyBuilderTemplate.h:34
FWHeatmapProxyBuilderTemplate::modelData
const T & modelData(int index)
Definition: FWHeatmapProxyBuilderTemplate.h:80
FWEventItem
Definition: FWEventItem.h:56
T
long double T
Definition: Basic3DVectorLD.h:48
edm::EventBase
Definition: EventBase.h:46
FWHeatmapProxyBuilderTemplate::build
virtual void build(const T &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *)
Definition: FWHeatmapProxyBuilderTemplate.h:155
FWProxyBuilderBase::context
const fireworks::Context & context() const
Definition: FWProxyBuilderBase.cc:412
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
FWProxyBuilderBase::setItem
virtual void setItem(const FWEventItem *iItem)
Definition: FWProxyBuilderBase.cc:83
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag
Definition: InputTag.h:15