diff --git a/Fireworks/Calo/plugins/FWCaloClusterHeatMapProxyBuilder.cc b/Fireworks/Calo/plugins/FWCaloClusterHeatMapProxyBuilder.cc index 3d77e9b508e05..7d4c436b7a079 100644 --- a/Fireworks/Calo/plugins/FWCaloClusterHeatMapProxyBuilder.cc +++ b/Fireworks/Calo/plugins/FWCaloClusterHeatMapProxyBuilder.cc @@ -1,23 +1,17 @@ #include "TEveBoxSet.h" -#include "Fireworks/Core/interface/FWSimpleProxyBuilderTemplate.h" +#include "Fireworks/Core/interface/FWHeatmapProxyBuilderTemplate.h" #include "Fireworks/Core/interface/FWEventItem.h" #include "Fireworks/Core/interface/FWGeometry.h" #include "Fireworks/Core/interface/BuilderUtils.h" - -#include "FWCore/Framework/interface/Event.h" - #include "DataFormats/CaloRecHit/interface/CaloCluster.h" -#include "DataFormats/HGCRecHit/interface/HGCRecHitCollections.h" - -#include "Fireworks/Core/interface/FWProxyBuilderConfiguration.h" #include "TEveBoxSet.h" #include "TEveCompound.h" -class FWCaloClusterHeatMapProxyBuilder : public FWSimpleProxyBuilderTemplate +class FWCaloClusterHeatMapProxyBuilder : public FWHeatmapProxyBuilderTemplate { public: - FWCaloClusterHeatMapProxyBuilder(void): maxEnergy(1e-5f) {} + FWCaloClusterHeatMapProxyBuilder(void) {} ~FWCaloClusterHeatMapProxyBuilder(void) override {} REGISTER_PROXYBUILDER_METHODS(); @@ -25,86 +19,14 @@ class FWCaloClusterHeatMapProxyBuilder : public FWSimpleProxyBuilderTemplate hitmap; - float maxEnergy; - void setItem(const FWEventItem *iItem) override; - - void build(const FWEventItem *iItem, TEveElementList *product, const FWViewContext *) override; void build(const reco::CaloCluster &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *) override; }; -void FWCaloClusterHeatMapProxyBuilder::setItem(const FWEventItem *iItem) -{ - FWProxyBuilderBase::setItem(iItem); - if (iItem) - { - iItem->getConfig()->assertParam("Layer", 0L, 0L, 52L); - iItem->getConfig()->assertParam("Z+", true); - iItem->getConfig()->assertParam("Z-", true); - } -} - -void FWCaloClusterHeatMapProxyBuilder::build(const FWEventItem *iItem, - TEveElementList *product, const FWViewContext *vc) -{ - if(hitmap.empty()){ - const edm::EventBase *event = iItem->getEvent(); - - edm::Handle recHitHandleEE; - edm::Handle recHitHandleFH; - edm::Handle recHitHandleBH; - - event->getByLabel( edm::InputTag( "HGCalRecHit", "HGCEERecHits" ), recHitHandleEE ); - event->getByLabel( edm::InputTag( "HGCalRecHit", "HGCHEFRecHits" ), recHitHandleFH ); - event->getByLabel( edm::InputTag( "HGCalRecHit", "HGCHEBRecHits" ), recHitHandleBH ); - - const auto& rechitsEE = *recHitHandleEE; - const auto& rechitsFH = *recHitHandleFH; - const auto& rechitsBH = *recHitHandleBH; - - for (unsigned int i = 0; i < rechitsEE.size(); ++i) { - hitmap[rechitsEE[i].detid().rawId()] = &rechitsEE[i]; - maxEnergy = fmax(maxEnergy, rechitsEE[i].energy()); - } - for (unsigned int i = 0; i < rechitsFH.size(); ++i) { - hitmap[rechitsFH[i].detid().rawId()] = &rechitsFH[i]; - maxEnergy = fmax(maxEnergy, rechitsFH[i].energy()); - } - for (unsigned int i = 0; i < rechitsBH.size(); ++i) { - hitmap[rechitsBH[i].detid().rawId()] = &rechitsBH[i]; - maxEnergy = fmax(maxEnergy, rechitsBH[i].energy()); - } - } - - size_t size = iItem->size(); - TEveElement::List_i pIdx = product->BeginChildren(); - for (int index = 0; index < static_cast(size); ++index) - { - TEveElement *itemHolder = nullptr; - if (index < product->NumChildren()) - { - itemHolder = *pIdx; - itemHolder->SetRnrSelfChildren(true, true); - ++pIdx; - } - else - { - itemHolder = createCompound(); - product->AddElement(itemHolder); - } - if (iItem->modelInfo(index).displayProperties().isVisible()) - { - const void *modelData = iItem->modelData(index); - build(*reinterpret_cast(m_helper.offsetObject(modelData)), index, *itemHolder, vc); - } - } -} - void FWCaloClusterHeatMapProxyBuilder::build(const reco::CaloCluster &iData, unsigned int iIndex, TEveElement &oItemHolder, const FWViewContext *) { const long layer = item()->getConfig()->value("Layer"); + const double saturation_energy = item()->getConfig()->value("EnergyCutOff"); const bool z_plus = item()->getConfig()->value("Z+"); const bool z_minus = item()->getConfig()->value("Z-"); @@ -177,7 +99,7 @@ void FWCaloClusterHeatMapProxyBuilder::build(const reco::CaloCluster &iData, uns continue; } - float colorFactor = (fmin(hitmap[it->first]->energy(), 1.0f)); + const float colorFactor = (fmin(hitmap[it->first]->energy()/saturation_energy, 1.0f)); // Scintillator if (isScintillator) @@ -196,7 +118,7 @@ void FWCaloClusterHeatMapProxyBuilder::build(const reco::CaloCluster &iData, uns pnts[(i * 3 + 2) + total_vertices] = corners[i * 3 + 2] + shapes[3]; } boxset->AddBox(&pnts[0]); - boxset->DigitColor(std::min(255*4*colorFactor, 255.0f), 255-std::abs(255-4*colorFactor*255), 255-std::min(255*4*colorFactor, 255.0f)); + boxset->DigitColor(colorMap[0][int(colorFactor*9)], colorMap[1][int(colorFactor*9)], colorMap[2][int(colorFactor*9)]); h_box = true; } @@ -210,7 +132,7 @@ void FWCaloClusterHeatMapProxyBuilder::build(const reco::CaloCluster &iData, uns float radius = fabs(corners[6] - corners[6 + offset]) / 2; hex_boxset->AddHex(TEveVector(centerX, centerY, corners[2]), radius, 90.0, shapes[3]); - hex_boxset->DigitColor(std::min(255*4*colorFactor, 255.0f), 255-std::abs(255-4*colorFactor*255), 255-std::min(255*4*colorFactor, 255.0f)); + hex_boxset->DigitColor(colorMap[0][int(colorFactor*9)], colorMap[1][int(colorFactor*9)], colorMap[2][int(colorFactor*9)]); h_hex = true; } @@ -221,9 +143,7 @@ void FWCaloClusterHeatMapProxyBuilder::build(const reco::CaloCluster &iData, uns const float *corners = item()->getGeom()->getCorners(it->first); if (corners == nullptr) - { continue; - } h_box = true;