Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
// -*- C++ -*-
//
// Package:     Calo
// Class  :     FWCaloTowerProxyBuilderBase
//
// Implementation:
//     <Notes on implementation>
//
// Original Author:  Chris Jones
//         Created:  Wed Dec  3 11:28:28 EST 2008
//

// system includes
#include <cmath>

// user includes
#include "TEveCaloData.h"
#include "TEveCalo.h"
#include "TH2F.h"

#include "Fireworks/Core/interface/Context.h"
#include "Fireworks/Core/interface/FWEventItem.h"
#include "Fireworks/Core/interface/FWModelChangeManager.h"

#include "Fireworks/Core/interface/fw3dlego_xbins.h"
#include "Fireworks/ParticleFlow/plugins/FWPFCandidateTowerProxyBuilder.h"
#include "Fireworks/ParticleFlow/plugins/FWPFCandidateTowerSliceSelector.h"

#include "DataFormats/CaloTowers/interface/CaloTower.h"

//
// constructors , dectructors
//
FWPFCandidateTowerProxyBuilder::FWPFCandidateTowerProxyBuilder() : m_towers(nullptr) {}

FWPFCandidateTowerProxyBuilder::~FWPFCandidateTowerProxyBuilder() {}

//
// member functions
//

void FWPFCandidateTowerProxyBuilder::build(const FWEventItem* iItem, TEveElementList* el, const FWViewContext* ctx) {
  m_towers = nullptr;
  if (iItem) {
    iItem->get(m_towers);
    FWCaloDataProxyBuilderBase::build(iItem, el, ctx);
  }
}

FWHistSliceSelector* FWPFCandidateTowerProxyBuilder::instantiateSliceSelector() {
  return new FWPFCandidateTowerSliceSelector(m_hist, item());
}

void FWPFCandidateTowerProxyBuilder::fillCaloData() {
  m_hist->Reset();

  if (m_towers) {
    if (item()->defaultDisplayProperties().isVisible()) {
      // assert(item()->size() >= m_towers->size());
      unsigned int index = 0;
      for (reco::PFCandidateConstIterator tower = m_towers->begin(); tower != m_towers->end(); ++tower, ++index) {
        const FWEventItem::ModelInfo& info = item()->modelInfo(index);
        if (info.displayProperties().isVisible()) {
          addEntryToTEveCaloData(tower->eta(), tower->phi(), getEt(*tower), info.isSelected());
        }
      }
    }
  }
}

REGISTER_FWPROXYBUILDER(FWECalPFCandidateProxyBuilder,
                        reco::PFCandidateCollection,
                        "CaloTowerPfCandEcal",
                        FWViewType::k3DBit | FWViewType::kAllRPZBits | FWViewType::kAllLegoBits);
REGISTER_FWPROXYBUILDER(FWHCalPFCandidateProxyBuilder,
                        reco::PFCandidateCollection,
                        "CaloTowerPfCandHcal",
                        FWViewType::k3DBit | FWViewType::kAllRPZBits | FWViewType::kAllLegoBits);