CMS 3D CMS Logo

FWHistSliceSelector.cc
Go to the documentation of this file.
2 
5 
6 #include "TEveCaloData.h"
7 #include "TH2F.h"
8 #include "Rtypes.h"
9 
12 {
13  m_hist = h;
14 }
15 
16 
18 {}
19 
20 bool
21 FWHistSliceSelector::matchCell(const TEveCaloData::CellId_t& iCell, int itemIdx) const
22 {
23  float eta, phi;
24  getItemEntryEtaPhi(itemIdx, eta, phi);
25 
26  int idx = m_hist->FindBin(eta, phi);
27  int nBinsX = m_hist->GetXaxis()->GetNbins() + 2;
28 
29  int etaBin, phiBin, w, newPhiBin;
30  m_hist->GetBinXYZ(idx, etaBin, phiBin, w);
31 
32  if (aggregatePhiCells()) {
33  bool match= false;
34  if (TMath::Abs(eta) > 4.716)
35  {
36  newPhiBin = ((phiBin + 1) / 4) * 4 - 1;
37  if (newPhiBin <= 0) newPhiBin = 71;
38 
39  idx = etaBin + newPhiBin*nBinsX;
40  match |= (idx == iCell.fTower);
41 
42  idx += nBinsX;
43  match |= (idx == iCell.fTower);
44 
45  idx += nBinsX;
46  if (newPhiBin == 71)
47  idx = etaBin + 1*nBinsX;
48  match |= (idx == iCell.fTower);
49 
50  idx += nBinsX;
51  match |= (idx == iCell.fTower);
52  }
53  else if (TMath::Abs(eta) > 1.873)
54  {
55  newPhiBin = ((phiBin + 1) / 2) * 2 -1;
56  idx = etaBin + newPhiBin*nBinsX;
57  match = ( idx == iCell.fTower || idx + nBinsX == iCell.fTower);
58  }
59  else
60  {
61  match = ( idx == iCell.fTower);
62  }
63 
64  return match;
65  }
66  else
67  {
68  return idx == iCell.fTower;
69  }
70 }
71 
72 void
73 FWHistSliceSelector::doSelect(const TEveCaloData::CellId_t& iCell)
74 {
75  if (!m_item) return;
76 
77  FWChangeSentry sentry(*(m_item->changeManager()));
78  size_t size = m_item->size();
79  for (size_t index =0; index < size; ++index)
80  {
82  {
83  if (matchCell(iCell, index))
84  {
86  break;
87  }
88  }
89  }
90 }
91 
92 void
93 FWHistSliceSelector::doUnselect(const TEveCaloData::CellId_t& iCell)
94 {
95  if (!m_item) return;
96 
97  // std::cout <<" doUnselect "<<std::endl;
98 
99  FWChangeSentry sentry(*(m_item->changeManager()));
100 
101  size_t size = m_item->size();
102  for (size_t index =0; index < size; ++index)
103  {
106  if (matchCell(iCell, index))
107  {
108  // std::cout <<" doUnselect "<<index<<std::endl;
110  break;
111  }
112  }
113  }
114 }
size
Write out results.
bool matchCell(const TEveCaloData::CellId_t &iCell, int idx) const
virtual void getItemEntryEtaPhi(int itemIdx, float &eta, float &phi) const =0
FWModelChangeManager * changeManager() const
Definition: FWEventItem.h:132
const double w
Definition: UKUtility.cc:23
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
bool isSelected() const
Definition: FWEventItem.h:71
void unselect(int iIndex) const
Definition: FWEventItem.cc:241
const FWEventItem * m_item
virtual void doSelect(const TEveCaloData::CellId_t &)
T Abs(T a)
Definition: MathUtil.h:49
FWDisplayProperties m_displayProperties
Definition: FWEventItem.h:61
size_t size() const
Definition: FWEventItem.cc:550
FWHistSliceSelector(TH2F *h, const FWEventItem *item)
virtual bool aggregatePhiCells() const
virtual void doUnselect(const TEveCaloData::CellId_t &)
void select(int iIndex) const
Definition: FWEventItem.cc:252
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
ModelInfo modelInfo(int iIndex) const
Definition: FWEventItem.cc:537