Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
Fireworks
Calo
plugins
FWCaloTowerSliceSelector.cc
Go to the documentation of this file.
1
// -*- C++ -*-
2
//
3
// Package: Calo
4
// Class : FWCaloTowerSliceSelector
5
//
6
// Implementation:
7
// [Notes on implementation]
8
//
9
// Original Author: Alja Mrak-Tadel
10
// Created: Wed Jun 2 17:36:23 CEST 2010
11
// $Id: FWCaloTowerSliceSelector.cc,v 1.3 2010/12/01 21:40:31 amraktad Exp $
12
//
13
14
// system include files
15
16
// user include files
17
#include "TH2F.h"
18
#include "TMath.h"
19
#include "
Fireworks/Calo/plugins/FWCaloTowerSliceSelector.h
"
20
#include "
Fireworks/Core/interface/FWModelChangeManager.h
"
21
#include "
Fireworks/Core/interface/FWEventItem.h
"
22
#include "
DataFormats/CaloTowers/interface/CaloTower.h
"
23
#include "
DataFormats/CaloTowers/interface/CaloTowerFwd.h
"
24
25
26
FWCaloTowerSliceSelector::FWCaloTowerSliceSelector
(TH2F*
h
,
const
FWEventItem
*
i
):
27
FWFromSliceSelector
(i),
28
m_hist(h)
29
{
30
}
31
32
FWCaloTowerSliceSelector::~FWCaloTowerSliceSelector
()
33
{
34
}
35
36
//
37
// member functions
38
//
39
//
40
41
bool
42
FWCaloTowerSliceSelector::matchCell
(
const
TEveCaloData::CellId_t& iCell,
const
CaloTower
& tower)
const
43
{
44
bool
match
=
false
;
45
int
idx =
m_hist
->FindBin(tower.
eta
(), tower.
phi
());
46
int
nBinsX =
m_hist
->GetXaxis()->GetNbins() + 2;
47
48
int
etaBin, phiBin,
w
, newPhiBin;
49
m_hist
->GetBinXYZ(idx, etaBin, phiBin, w);
50
51
if
(tower.
ietaAbs
() > 39)
52
{
53
newPhiBin = ((phiBin + 1) / 4) * 4 - 1;
54
if
(newPhiBin <= 0) newPhiBin = 71;
55
56
idx = etaBin + newPhiBin*nBinsX;
57
match |= (idx == iCell.fTower);
58
59
idx += nBinsX;
60
match |= (idx == iCell.fTower);
61
62
idx += nBinsX;
63
if
(newPhiBin == 71)
64
idx = etaBin + 1*nBinsX;
65
match |= (idx == iCell.fTower);
66
67
idx += nBinsX;
68
match |= (idx == iCell.fTower);
69
}
70
else
if
(tower.
ietaAbs
() > 20)
71
{
72
newPhiBin = ((phiBin + 1) / 2) * 2 -1;
73
idx = etaBin + newPhiBin*nBinsX;
74
match = ( idx == iCell.fTower || idx + nBinsX == iCell.fTower);
75
}
76
else
77
{
78
match = ( idx == iCell.fTower);
79
}
80
return
match
;
81
}
82
83
void
84
FWCaloTowerSliceSelector::doSelect
(
const
TEveCaloData::CellId_t& iCell)
85
{
86
if
(!
m_item
)
return
;
87
88
const
CaloTowerCollection
* towers=0;
89
m_item
->
get
(towers);
90
assert(0!=towers);
91
int
index
= 0;
92
93
FWChangeSentry
sentry(*(
m_item
->
changeManager
()));
94
for
(
CaloTowerCollection::const_iterator
tower = towers->
begin
(); tower != towers->
end
(); ++tower,++
index
)
95
{
96
if
(
m_item
->
modelInfo
(index).
m_displayProperties
.
isVisible
() && !
m_item
->
modelInfo
(index).
isSelected
())
97
{
98
if
(
matchCell
(iCell, *tower))
99
{
100
m_item
->
select
(index);
101
break
;
102
}
103
}
104
}
105
}
106
107
void
108
FWCaloTowerSliceSelector::doUnselect
(
const
TEveCaloData::CellId_t& iCell)
109
{
110
if
(!
m_item
)
return
;
111
112
// std::cout <<" doUnselect "<<std::endl;
113
114
const
CaloTowerCollection
* towers=0;
115
m_item
->
get
(towers);
116
assert(0!=towers);
117
int
index
= 0;
118
FWChangeSentry
sentry(*(
m_item
->
changeManager
()));
119
for
(
CaloTowerCollection::const_iterator
tower = towers->
begin
(); tower != towers->
end
(); ++tower,++
index
)
120
{
121
if
(
m_item
->
modelInfo
(index).
m_displayProperties
.
isVisible
() &&
122
m_item
->
modelInfo
(index).
isSelected
()) {
123
if
(
matchCell
(iCell, *tower))
124
{
125
// std::cout <<" doUnselect "<<index<<std::endl;
126
m_item
->
unselect
(index);
127
break
;
128
}
129
}
130
}
131
}
FWCaloTowerSliceSelector::doUnselect
virtual void doUnselect(const TEveCaloData::CellId_t &)
Definition:
FWCaloTowerSliceSelector.cc:108
i
int i
Definition:
DBlmapReader.cc:9
FWEventItem::changeManager
FWModelChangeManager * changeManager() const
Definition:
FWEventItem.h:131
FWDisplayProperties::isVisible
bool isVisible() const
Definition:
FWDisplayProperties.h:60
edm::SortedCollection< CaloTower >
FWEventItem::ModelInfo::isSelected
bool isSelected() const
Definition:
FWEventItem.h:71
getHLTprescales.index
tuple index
Definition:
getHLTprescales.py:79
FWEventItem::get
void get(const T *&oData) const
Definition:
FWEventItem.h:85
edm::SortedCollection< CaloTower >::const_iterator
std::vector< CaloTower >::const_iterator const_iterator
Definition:
SortedCollection.h:80
FWEventItem::unselect
void unselect(int iIndex) const
Definition:
FWEventItem.cc:240
FWFromSliceSelector::m_item
const FWEventItem * m_item
Definition:
FWFromSliceSelector.h:52
reco::LeafCandidate::eta
virtual double eta() const
momentum pseudorapidity
Definition:
LeafCandidate.h:143
FWCaloTowerSliceSelector.h
FWCaloTowerSliceSelector::~FWCaloTowerSliceSelector
virtual ~FWCaloTowerSliceSelector()
Definition:
FWCaloTowerSliceSelector.cc:32
CaloTower
Definition:
CaloTower.h:28
FWCaloTowerSliceSelector::matchCell
bool matchCell(const TEveCaloData::CellId_t &iCell, const CaloTower &tower) const
Definition:
FWCaloTowerSliceSelector.cc:42
FWEventItem::ModelInfo::m_displayProperties
FWDisplayProperties m_displayProperties
Definition:
FWEventItem.h:61
edm::SortedCollection::end
const_iterator end() const
Definition:
SortedCollection.h:301
FWEventItem
Definition:
FWEventItem.h:57
FWEventItem.h
FWModelChangeManager.h
FWFromSliceSelector
Definition:
FWFromSliceSelector.h:32
h
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition:
Activities.doc:4
FWCaloTowerSliceSelector::FWCaloTowerSliceSelector
FWCaloTowerSliceSelector(TH2F *h, const FWEventItem *i)
Definition:
FWCaloTowerSliceSelector.cc:26
FWCaloTowerSliceSelector::m_hist
TH2F * m_hist
Definition:
FWCaloTowerSliceSelector.h:41
CaloTower.h
FWCaloTowerSliceSelector::doSelect
virtual void doSelect(const TEveCaloData::CellId_t &)
Definition:
FWCaloTowerSliceSelector.cc:84
CaloTower::ietaAbs
int ietaAbs() const
Definition:
CaloTower.h:155
FWEventItem::select
void select(int iIndex) const
Definition:
FWEventItem.cc:251
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition:
Utils.h:6
FWEventItem::modelInfo
ModelInfo modelInfo(int iIndex) const
Definition:
FWEventItem.cc:535
reco::LeafCandidate::phi
virtual double phi() const
momentum azimuthal angle
Definition:
LeafCandidate.h:139
FWChangeSentry
Definition:
FWModelChangeManager.h:71
edm::SortedCollection::begin
const_iterator begin() const
Definition:
SortedCollection.h:294
w
T w() const
Definition:
newBasic3DVector.h:234
CaloTowerFwd.h
Generated for CMSSW Reference Manual by
1.8.5