Skip to content

Commit

Permalink
Open inherticence to reco::Canidate type and its derived classes.
Browse files Browse the repository at this point in the history
  • Loading branch information
alja committed Feb 6, 2015
1 parent 019b724 commit e056102
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 28 deletions.
Expand Up @@ -2,16 +2,18 @@
#define Fireworks_Calo_FWCandTowerSliceSelector_h

#include "Fireworks/Calo/interface/FWHistSliceSelector.h"
class FWSimpleProxyHelper;

class FWCandidateTowerSliceSelector : public FWHistSliceSelector
{
public:
FWCandidateTowerSliceSelector(TH2F* h, const FWEventItem* i);
FWCandidateTowerSliceSelector(TH2F* h, const FWEventItem* i, FWSimpleProxyHelper* m_helper);
virtual ~FWCandidateTowerSliceSelector();

virtual bool aggregatePhiCells() const { return false; }
virtual bool aggregatePhiCells() const { return false; }
protected:
virtual void getItemEntryEtaPhi(int itemIdx, float& eta, float& phi) const;
FWSimpleProxyHelper* m_helper;
};

#endif
30 changes: 21 additions & 9 deletions Fireworks/Candidates/plugins/FWCandidateTowerProxyBuilder.cc
Expand Up @@ -23,7 +23,7 @@
// constructors , dectructors
//
FWCandidateTowerProxyBuilder::FWCandidateTowerProxyBuilder():
m_towers(0)
m_helper(typeid(reco::Candidate))
{
}

Expand All @@ -36,14 +36,21 @@ FWCandidateTowerProxyBuilder::~FWCandidateTowerProxyBuilder()
//


void FWCandidateTowerProxyBuilder::itemChangedImp(const FWEventItem* iItem)
{
if (iItem)
{
m_helper.itemChanged(iItem);
}
}

void
FWCandidateTowerProxyBuilder::build(const FWEventItem* iItem, TEveElementList* el, const FWViewContext* ctx)
{
m_towers=0;
if (iItem)
// m_towers=0;
if (iItem )
{
iItem->get(m_towers);
// iItem->get(m_towers);
FWCaloDataProxyBuilderBase::build(iItem, el, ctx);
}
}
Expand All @@ -52,7 +59,7 @@ FWCandidateTowerProxyBuilder::build(const FWEventItem* iItem, TEveElementList* e
FWHistSliceSelector*
FWCandidateTowerProxyBuilder::instantiateSliceSelector()
{
FWCandidateTowerSliceSelector* ss = new FWCandidateTowerSliceSelector(m_hist, item());
FWCandidateTowerSliceSelector* ss = new FWCandidateTowerSliceSelector(m_hist, item(), &m_helper);
return ss;
}

Expand All @@ -61,19 +68,24 @@ FWCandidateTowerProxyBuilder::fillCaloData()
{
m_hist->Reset();

if (m_towers)
// if (m_towers)
{
if(item()->defaultDisplayProperties().isVisible()) {
// assert(item()->size() >= m_towers->size());
unsigned int index=0;
for( pat::PackedCandidateCollection::const_iterator tower = m_towers->begin(); tower != m_towers->end(); ++tower,++index) {
for (size_t index = 0; index < item()->size(); ++index) {
const FWEventItem::ModelInfo& info = item()->modelInfo(index);
if(info.displayProperties().isVisible()) {
const void* modelData = item()->modelData((int)index);

const reco::Candidate* tower = reinterpret_cast<const reco::Candidate*>(m_helper.offsetObject(modelData));
addEntryToTEveCaloData(tower->eta(), tower->phi(), getEt(*tower), info.isSelected());
}
}
}
}
}

REGISTER_FWPROXYBUILDER(FWCandidateTowerProxyBuilder, pat::PackedCandidateCollection,"CaloTower",FWViewType::k3DBit|FWViewType::kAllRPZBits|FWViewType::kAllLegoBits);



REGISTER_FWPROXYBUILDER(FWCandidateTowerProxyBuilder, reco::Candidate,"CaloTower",FWViewType::k3DBit|FWViewType::kAllRPZBits|FWViewType::kAllLegoBits);
11 changes: 7 additions & 4 deletions Fireworks/Candidates/plugins/FWCandidateTowerProxyBuilder.h
Expand Up @@ -7,10 +7,11 @@
#include <string>

#include "Fireworks/Calo/interface/FWCaloDataHistProxyBuilder.h"
//#include "DataFormats/Candidate/interface/CandidateFwd.h"
//#include "DataFormats/Candidate/interface/Candidate.h"
#include "DataFormats/Candidate/interface/CandidateFwd.h"
#include "DataFormats/Candidate/interface/Candidate.h"

#include "DataFormats/PatCandidates/interface/PackedCandidate.h"
#include "Fireworks/Core/interface/FWSimpleProxyHelper.h"

class FWHistSliceSelector;

Expand All @@ -19,9 +20,10 @@ class FWCandidateTowerProxyBuilder : public FWCaloDataHistProxyBuilder
public:
FWCandidateTowerProxyBuilder();
virtual ~FWCandidateTowerProxyBuilder();

static std::string typeOfBuilder() { return std::string("simple#");}
virtual double getEt(const reco::Candidate& cand) const { return cand.pt(); }


REGISTER_PROXYBUILDER_METHODS();
protected:
virtual void fillCaloData();
Expand All @@ -32,8 +34,9 @@ class FWCandidateTowerProxyBuilder : public FWCaloDataHistProxyBuilder
FWCandidateTowerProxyBuilder(const FWCandidateTowerProxyBuilder&); // stop default
const FWCandidateTowerProxyBuilder& operator=(const FWCandidateTowerProxyBuilder&); // stop default

virtual void itemChangedImp(const FWEventItem*);
// ---------- member data --------------------------------
const pat::PackedCandidateCollection* m_towers;
FWSimpleProxyHelper m_helper;
};

#endif
23 changes: 10 additions & 13 deletions Fireworks/Candidates/src/FWCandidateTowerSliceSelector.cc
@@ -1,15 +1,15 @@
#include "Fireworks/Candidates/interface/FWCandidateTowerSliceSelector.h"
//#include "DataFormats/Candidate/interface/CandidateFwd.h"
//#include "DataFormats/Candidate/interface/Candidate.h"

#include "DataFormats/PatCandidates/interface/PackedCandidate.h"

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


FWCandidateTowerSliceSelector::FWCandidateTowerSliceSelector(TH2F* h, const FWEventItem* i):
FWHistSliceSelector(h, i)
FWCandidateTowerSliceSelector::FWCandidateTowerSliceSelector(TH2F* h, const FWEventItem* i, FWSimpleProxyHelper* helper):
FWHistSliceSelector(h, i),
m_helper(helper)
{
}

Expand All @@ -20,15 +20,12 @@ FWCandidateTowerSliceSelector::~FWCandidateTowerSliceSelector()
void
FWCandidateTowerSliceSelector::getItemEntryEtaPhi(int itemIdx, float& eta, float& phi) const
{

const pat::PackedCandidateCollection* towers=0;
m_item->get(towers);
assert(0!=towers);
pat::PackedCandidateCollection::const_iterator tower = towers->begin();
std::advance(tower, itemIdx);

eta = tower->eta();
phi = tower->phi();
const void* modelData = m_item->modelData(itemIdx);
if (modelData) {
const reco::Candidate* tower = reinterpret_cast<const reco::Candidate*>(m_helper->offsetObject(modelData));
eta = tower->eta();
phi = tower->phi();
}
}


0 comments on commit e056102

Please sign in to comment.