CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ZdcTopology Class Reference

#include <ZdcTopology.h>

Inheritance diagram for ZdcTopology:
CaloSubdetectorTopology

Public Member Functions

std::vector< DetIddown (const DetId &id) const override
 
std::vector< DetIdeast (const DetId &id) const override
 
void exclude (const HcalZDCDetId &id)
 
void exclude (int zside)
 
void exclude (int zside, HcalZDCDetId::Section section)
 
int exclude (int zside, HcalZDCDetId::Section section, int ich1, int ich2)
 
int firstCell (HcalZDCDetId::Section section) const
 
int lastCell (HcalZDCDetId::Section section) const
 
virtual std::vector< DetIdlongitudinal (const DetId &id) const
 
int ncells (HcalZDCDetId::Section section) const
 
std::vector< DetIdnorth (const DetId &id) const override
 
std::vector< DetIdsouth (const DetId &id) const override
 
virtual std::vector< DetIdtransverse (const DetId &id) const
 
std::vector< DetIdup (const DetId &id) const override
 
virtual bool valid (const HcalZDCDetId &id) const
 
std::vector< DetIdwest (const DetId &id) const override
 
 ZdcTopology ()
 
- Public Member Functions inherited from CaloSubdetectorTopology
 CaloSubdetectorTopology ()
 standard constructor More...
 
virtual DetId denseId2detId (unsigned int) const
 return a linear packed id More...
 
virtual bool denseIdConsistent (int topoVer) const
 return whether this topology is consistent with the numbering in the given topology More...
 
virtual unsigned int detId2denseId (const DetId &) const
 return a linear packed id More...
 
virtual std::vector< DetIdgetAllNeighbours (const DetId &id) const
 
virtual std::vector< DetIdgetNeighbours (const DetId &id, const CaloDirection &dir) const
 
virtual std::vector< DetIdgetWindow (const DetId &id, const int &northSouthSize, const int &eastWestSize) const
 
virtual DetId goDown (const DetId &id) const
 
virtual DetId goEast (const DetId &id) const
 
virtual DetId goNorth (const DetId &id) const
 
virtual DetId goSouth (const DetId &id) const
 
virtual DetId goUp (const DetId &id) const
 
virtual DetId goWest (const DetId &id) const
 
virtual unsigned int ncells () const
 return a count of valid cells (for dense indexing use) More...
 
virtual int topoVersion () const
 return a version which identifies the given topology More...
 
virtual bool valid (const DetId &) const
 is this detid present in the Topology? More...
 
virtual ~CaloSubdetectorTopology ()
 virtual destructor More...
 

Private Member Functions

int firstEMModule () const
 
int firstHADModule () const
 
int firstLUMModule () const
 
int firstRPDModule () const
 
bool isExcluded (const HcalZDCDetId &id) const
 
int lastEMModule () const
 
int lastHADModule () const
 
int lastLUMModule () const
 
int lastRPDModule () const
 
bool validRaw (const HcalZDCDetId &id) const
 

Private Attributes

bool excludeEM_
 
bool excludeHAD_
 
bool excludeLUM_
 
bool excludeRPD_
 
bool excludeZN_
 
bool excludeZP_
 
std::vector< HcalZDCDetIdexclusionList_
 
int firstEMModule_
 
int firstHADModule_
 
int firstLUMModule_
 
int firstRPDModule_
 
int lastEMModule_
 
int lastHADModule_
 
int lastLUMModule_
 
int lastRPDModule_
 

Additional Inherited Members

- Protected Types inherited from CaloSubdetectorTopology
typedef std::pair< int, int > Coordinate
 
- Protected Member Functions inherited from CaloSubdetectorTopology
Coordinate getNeighbourIndex (const Coordinate &coord, const CaloDirection &dir) const
 

Detailed Description

Definition at line 14 of file ZdcTopology.h.

Constructor & Destructor Documentation

ZdcTopology::ZdcTopology ( )

Definition at line 11 of file ZdcTopology.cc.

12  : excludeEM_(false),
13  excludeHAD_(false),
14  excludeLUM_(false),
15  excludeRPD_(false),
16  excludeZP_(false),
17  excludeZN_(false),
18  firstEMModule_(1),
19  lastEMModule_(5),
20  firstHADModule_(1),
21  lastHADModule_(4),
22  firstLUMModule_(1),
23  lastLUMModule_(2),
24  firstRPDModule_(1),
25  lastRPDModule_(16) {}
int firstEMModule_
Definition: ZdcTopology.h:59
bool excludeEM_
Definition: ZdcTopology.h:57
int lastLUMModule_
Definition: ZdcTopology.h:59
bool excludeRPD_
Definition: ZdcTopology.h:57
bool excludeHAD_
Definition: ZdcTopology.h:57
int firstRPDModule_
Definition: ZdcTopology.h:59
bool excludeZN_
Definition: ZdcTopology.h:57
int firstHADModule_
Definition: ZdcTopology.h:59
bool excludeLUM_
Definition: ZdcTopology.h:57
int lastRPDModule_
Definition: ZdcTopology.h:59
bool excludeZP_
Definition: ZdcTopology.h:57
int lastEMModule_
Definition: ZdcTopology.h:59
int firstLUMModule_
Definition: ZdcTopology.h:59
int lastHADModule_
Definition: ZdcTopology.h:59

Member Function Documentation

std::vector< DetId > ZdcTopology::down ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in down direction (inward)

Implements CaloSubdetectorTopology.

Definition at line 292 of file ZdcTopology.cc.

References gather_cfg::cout.

292  {
293  std::cout << "ZdcTopology::down() not yet implemented" << std::endl;
294  std::vector<DetId> vNeighborsDetId;
295  return vNeighborsDetId;
296 }
tuple cout
Definition: gather_cfg.py:144
std::vector< DetId > ZdcTopology::east ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in east direction

Implements CaloSubdetectorTopology.

Definition at line 265 of file ZdcTopology.cc.

References gather_cfg::cout.

265  {
266  std::cout << "ZdcTopology::east() not yet implemented" << std::endl;
267  std::vector<DetId> vNeighborsDetId;
268  return vNeighborsDetId;
269 }
tuple cout
Definition: gather_cfg.py:144
void ZdcTopology::exclude ( const HcalZDCDetId id)

Exlucde a cell

Definition at line 64 of file ZdcTopology.cc.

References exclusionList_, mps_fire::i, gpuClustering::id, and cuda_std::lower_bound().

Referenced by exclude().

64  {
65  std::vector<HcalZDCDetId>::iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
66  if (i == exclusionList_.end() || *i != id) {
67  exclusionList_.insert(i, id);
68  }
69 }
uint16_t *__restrict__ id
std::vector< HcalZDCDetId > exclusionList_
Definition: ZdcTopology.h:55
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
void ZdcTopology::exclude ( int  zside)

Exclude a side

Definition at line 71 of file ZdcTopology.cc.

References excludeZN_, and excludeZP_.

71  {
72  switch (zside) {
73  case (1):
74  excludeZP_ = true;
75  break;
76  case (-1):
77  excludeZN_ = true;
78  break;
79  default:
80  break;
81  }
82 }
int zside(DetId const &)
bool excludeZN_
Definition: ZdcTopology.h:57
bool excludeZP_
Definition: ZdcTopology.h:57
void ZdcTopology::exclude ( int  zside,
HcalZDCDetId::Section  section 
)

Exclude a section, in either side (+1 positive, -1 negative)

Definition at line 84 of file ZdcTopology.cc.

References HcalZDCDetId::EM, excludeEM_, excludeHAD_, excludeLUM_, excludeRPD_, excludeZN_, excludeZP_, HcalZDCDetId::HAD, HcalZDCDetId::LUM, and HcalZDCDetId::RPD.

84  {
85  switch (zside) {
86  case (1):
87  excludeZP_ = true;
88  break;
89  case (-1):
90  excludeZN_ = true;
91  break;
92  default:
93  break;
94  }
95  switch (section) {
96  case (HcalZDCDetId::EM):
97  excludeEM_ = true;
98  break;
99  case (HcalZDCDetId::HAD):
100  excludeHAD_ = true;
101  break;
102  case (HcalZDCDetId::LUM):
103  excludeLUM_ = true;
104  break;
105  case (HcalZDCDetId::RPD):
106  excludeRPD_ = true;
107  break;
108  default:
109  break;
110  }
111 }
bool excludeEM_
Definition: ZdcTopology.h:57
bool excludeRPD_
Definition: ZdcTopology.h:57
bool excludeHAD_
Definition: ZdcTopology.h:57
int zside(DetId const &)
bool excludeZN_
Definition: ZdcTopology.h:57
bool excludeLUM_
Definition: ZdcTopology.h:57
string section
Definition: vertexPlots.py:496
bool excludeZP_
Definition: ZdcTopology.h:57
int ZdcTopology::exclude ( int  zside,
HcalZDCDetId::Section  section,
int  ich1,
int  ich2 
)

Exclude a range of channels (deph) for a given subdetector

Definition at line 113 of file ZdcTopology.cc.

References HcalZDCDetId::EM, exclude(), excludeEM_, excludeHAD_, excludeLUM_, excludeRPD_, excludeZN_, excludeZP_, HcalZDCDetId::HAD, gpuClustering::id, HcalZDCDetId::LUM, dqmiodumpmetadata::n, HcalZDCDetId::RPD, and validRaw().

113  {
114  bool exed = false;
115  switch (zside) {
116  case (1):
117  exed = excludeZP_;
118  break;
119  case (-1):
120  exed = excludeZN_;
121  break;
122  default:
123  exed = false;
124  }
125  if (exed)
126  return 0;
127 
128  switch (section) {
129  case (HcalZDCDetId::EM):
130  exed = excludeEM_;
131  break;
132  case (HcalZDCDetId::HAD):
133  exed = excludeHAD_;
134  break;
135  case (HcalZDCDetId::LUM):
136  exed = excludeLUM_;
137  break;
138  case (HcalZDCDetId::RPD):
139  exed = excludeRPD_;
140  break;
141  default:
142  exed = false;
143  }
144  if (exed)
145  return 0;
146 
147  bool isPositive = false;
148  if (zside == 1)
149  isPositive = true;
150 
151  int n = 0;
152  for (int ich = ich1; ich < ich2; ich++) {
153  HcalZDCDetId id(section, isPositive, ich);
154  if (validRaw(id))
155  exclude(id);
156  n++;
157  }
158  return n;
159 }
bool excludeEM_
Definition: ZdcTopology.h:57
void exclude(const HcalZDCDetId &id)
Definition: ZdcTopology.cc:64
uint16_t *__restrict__ id
bool excludeRPD_
Definition: ZdcTopology.h:57
bool excludeHAD_
Definition: ZdcTopology.h:57
int zside(DetId const &)
bool validRaw(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:161
bool excludeZN_
Definition: ZdcTopology.h:57
bool excludeLUM_
Definition: ZdcTopology.h:57
string section
Definition: vertexPlots.py:496
bool excludeZP_
Definition: ZdcTopology.h:57
int ZdcTopology::firstCell ( HcalZDCDetId::Section  section) const

Definition at line 320 of file ZdcTopology.cc.

References HcalZDCDetId::EM, firstEMModule_, firstHADModule_, firstLUMModule_, firstRPDModule_, HcalZDCDetId::HAD, HcalZDCDetId::LUM, HcalZDCDetId::RPD, and HcalZDCDetId::Unknown.

Referenced by ZdcHardcodeGeometryLoader::fill().

320  {
321  int firstCell = 0;
322  switch (section) {
323  case (HcalZDCDetId::EM):
324  firstCell = firstEMModule_;
325  break;
326  case (HcalZDCDetId::HAD):
327  firstCell = firstHADModule_;
328  break;
329  case (HcalZDCDetId::LUM):
330  firstCell = firstLUMModule_;
331  break;
332  case (HcalZDCDetId::RPD):
333  firstCell = firstRPDModule_;
334  break;
335  case (HcalZDCDetId::Unknown):
336  firstCell = 0;
337  break;
338  }
339  return firstCell;
340 }
int firstEMModule_
Definition: ZdcTopology.h:59
int firstRPDModule_
Definition: ZdcTopology.h:59
int firstHADModule_
Definition: ZdcTopology.h:59
string section
Definition: vertexPlots.py:496
int firstCell(HcalZDCDetId::Section section) const
Definition: ZdcTopology.cc:320
int firstLUMModule_
Definition: ZdcTopology.h:59
int ZdcTopology::firstEMModule ( ) const
inlineprivate

Definition at line 64 of file ZdcTopology.h.

References firstEMModule_.

64 { return firstEMModule_; }
int firstEMModule_
Definition: ZdcTopology.h:59
int ZdcTopology::firstHADModule ( ) const
inlineprivate

Definition at line 65 of file ZdcTopology.h.

References firstHADModule_.

65 { return firstHADModule_; }
int firstHADModule_
Definition: ZdcTopology.h:59
int ZdcTopology::firstLUMModule ( ) const
inlineprivate

Definition at line 66 of file ZdcTopology.h.

References firstLUMModule_.

66 { return firstLUMModule_; }
int firstLUMModule_
Definition: ZdcTopology.h:59
int ZdcTopology::firstRPDModule ( ) const
inlineprivate

Definition at line 67 of file ZdcTopology.h.

References firstRPDModule_.

67 { return firstRPDModule_; }
int firstRPDModule_
Definition: ZdcTopology.h:59
bool ZdcTopology::isExcluded ( const HcalZDCDetId id) const
private

Definition at line 34 of file ZdcTopology.cc.

References HcalZDCDetId::EM, excludeEM_, excludeHAD_, excludeLUM_, excludeRPD_, exclusionList_, HcalZDCDetId::HAD, mps_fire::i, gpuClustering::id, cuda_std::lower_bound(), HcalZDCDetId::LUM, HcalZDCDetId::RPD, and vertexPlots::section.

Referenced by valid().

34  {
35  bool exed = false;
36 
37  // check for section exclutions
38  switch (id.section()) {
39  case (HcalZDCDetId::EM):
40  exed = excludeEM_;
41  break;
42  case (HcalZDCDetId::HAD):
43  exed = excludeHAD_;
44  break;
45  case (HcalZDCDetId::LUM):
46  exed = excludeLUM_;
47  break;
48  case (HcalZDCDetId::RPD):
49  exed = excludeRPD_;
50  break;
51  default:
52  exed = false;
53  }
54 
55  // check the entire list
56  if (!exed && !exclusionList_.empty()) {
57  std::vector<HcalZDCDetId>::const_iterator i = std::lower_bound(exclusionList_.begin(), exclusionList_.end(), id);
58  if (i != exclusionList_.end() && *i == id)
59  exed = true;
60  }
61  return exed;
62 }
bool excludeEM_
Definition: ZdcTopology.h:57
uint16_t *__restrict__ id
bool excludeRPD_
Definition: ZdcTopology.h:57
bool excludeHAD_
Definition: ZdcTopology.h:57
std::vector< HcalZDCDetId > exclusionList_
Definition: ZdcTopology.h:55
bool excludeLUM_
Definition: ZdcTopology.h:57
string section
Definition: vertexPlots.py:496
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
int ZdcTopology::lastCell ( HcalZDCDetId::Section  section) const

Definition at line 342 of file ZdcTopology.cc.

References HcalZDCDetId::EM, HcalZDCDetId::HAD, lastEMModule_, lastHADModule_, lastLUMModule_, lastRPDModule_, HcalZDCDetId::LUM, HcalZDCDetId::RPD, and HcalZDCDetId::Unknown.

Referenced by ZdcHardcodeGeometryLoader::fill().

342  {
343  int lastCell = 0;
344  switch (section) {
345  case (HcalZDCDetId::EM):
346  lastCell = lastEMModule_;
347  break;
348  case (HcalZDCDetId::HAD):
349  lastCell = lastHADModule_;
350  break;
351  case (HcalZDCDetId::LUM):
352  lastCell = lastLUMModule_;
353  break;
354  case (HcalZDCDetId::RPD):
355  lastCell = lastRPDModule_;
356  break;
357  case (HcalZDCDetId::Unknown):
358  lastCell = 0;
359  break;
360  }
361  return lastCell;
362 }
int lastLUMModule_
Definition: ZdcTopology.h:59
int lastCell(HcalZDCDetId::Section section) const
Definition: ZdcTopology.cc:342
int lastRPDModule_
Definition: ZdcTopology.h:59
string section
Definition: vertexPlots.py:496
int lastEMModule_
Definition: ZdcTopology.h:59
int lastHADModule_
Definition: ZdcTopology.h:59
int ZdcTopology::lastEMModule ( ) const
inlineprivate

Definition at line 68 of file ZdcTopology.h.

References lastEMModule_.

68 { return lastEMModule_; }
int lastEMModule_
Definition: ZdcTopology.h:59
int ZdcTopology::lastHADModule ( ) const
inlineprivate

Definition at line 69 of file ZdcTopology.h.

References lastHADModule_.

69 { return lastHADModule_; }
int lastHADModule_
Definition: ZdcTopology.h:59
int ZdcTopology::lastLUMModule ( ) const
inlineprivate

Definition at line 70 of file ZdcTopology.h.

References lastLUMModule_.

70 { return lastLUMModule_; }
int lastLUMModule_
Definition: ZdcTopology.h:59
int ZdcTopology::lastRPDModule ( ) const
inlineprivate

Definition at line 71 of file ZdcTopology.h.

References lastRPDModule_.

71 { return lastRPDModule_; }
int lastRPDModule_
Definition: ZdcTopology.h:59
std::vector< DetId > ZdcTopology::longitudinal ( const DetId id) const
virtual

Get the longitudinal neighbors (Z) of the given cell

Definition at line 209 of file ZdcTopology.cc.

References HcalZDCDetId::channel(), HcalZDCDetId::HAD, ICH_HAD_MAX, ICH_LUM_MAX, ICH_RPD_MAX, HcalZDCDetId::LUM, DetId::rawId(), HcalZDCDetId::RPD, HcalZDCDetId::section(), validRaw(), and HcalZDCDetId::zside().

209  {
210  std::vector<DetId> vNeighborsDetId;
211  HcalZDCDetId zdcId = HcalZDCDetId(id);
212  HcalZDCDetId zdcDetId;
213  if (validRaw(zdcId) && zdcId.section() == HcalZDCDetId::HAD) {
214  bool isPositive = false;
215  if (zdcId.zside() == 1)
216  isPositive = true;
217  if (zdcId.channel() == 1) {
218  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
219  vNeighborsDetId.emplace_back(zdcDetId.rawId());
220  return vNeighborsDetId;
221  }
222  if (zdcId.channel() == ICH_HAD_MAX) {
223  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
224  vNeighborsDetId.emplace_back(zdcDetId.rawId());
225  return vNeighborsDetId;
226  }
227  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
228  vNeighborsDetId.emplace_back(zdcDetId.rawId());
229  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
230  vNeighborsDetId.emplace_back(zdcDetId.rawId());
231  }
232  if (validRaw(zdcId) && zdcId.section() == HcalZDCDetId::LUM) {
233  bool isPositive = false;
234  if (zdcId.zside() == 1)
235  isPositive = true;
236  if (zdcId.channel() == 1) {
237  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
238  vNeighborsDetId.emplace_back(zdcDetId.rawId());
239  return vNeighborsDetId;
240  }
241  if (zdcId.channel() == ICH_LUM_MAX) {
242  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
243  vNeighborsDetId.emplace_back(zdcDetId.rawId());
244  return vNeighborsDetId;
245  }
246  }
247  if (validRaw(zdcId) && zdcId.section() == HcalZDCDetId::RPD) {
248  bool isPositive = false;
249  if (zdcId.zside() == 1)
250  isPositive = true;
251  if (zdcId.channel() == 1) {
252  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
253  vNeighborsDetId.emplace_back(zdcDetId.rawId());
254  return vNeighborsDetId;
255  }
256  if (zdcId.channel() == ICH_RPD_MAX) {
257  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
258  vNeighborsDetId.emplace_back(zdcDetId.rawId());
259  return vNeighborsDetId;
260  }
261  }
262  return vNeighborsDetId;
263 }
static const int ICH_LUM_MAX
Definition: ZdcTopology.cc:8
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:39
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
bool validRaw(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:161
static const int ICH_RPD_MAX
Definition: ZdcTopology.cc:9
int channel() const
get the channel
Definition: HcalZDCDetId.cc:63
Section section() const
get the section
Definition: HcalZDCDetId.cc:44
static const int ICH_HAD_MAX
Definition: ZdcTopology.cc:7
int ZdcTopology::ncells ( HcalZDCDetId::Section  section) const

Definition at line 298 of file ZdcTopology.cc.

References HcalZDCDetId::EM, HcalZDCDetId::HAD, ICH_EM_MAX, ICH_HAD_MAX, ICH_LUM_MAX, ICH_RPD_MAX, HcalZDCDetId::LUM, CaloSubdetectorTopology::ncells(), HcalZDCDetId::RPD, and HcalZDCDetId::Unknown.

298  {
299  int ncells = 0;
300  switch (section) {
301  case (HcalZDCDetId::EM):
302  ncells = ICH_EM_MAX;
303  break;
304  case (HcalZDCDetId::HAD):
305  ncells = ICH_HAD_MAX;
306  break;
307  case (HcalZDCDetId::LUM):
308  ncells = ICH_LUM_MAX;
309  break;
310  case (HcalZDCDetId::RPD):
311  ncells = ICH_RPD_MAX;
312  break;
313  case (HcalZDCDetId::Unknown):
314  ncells = 0;
315  break;
316  }
317  return ncells;
318 }
static const int ICH_LUM_MAX
Definition: ZdcTopology.cc:8
static const int ICH_EM_MAX
Definition: ZdcTopology.cc:6
static const int ICH_RPD_MAX
Definition: ZdcTopology.cc:9
virtual unsigned int ncells() const
return a count of valid cells (for dense indexing use)
string section
Definition: vertexPlots.py:496
static const int ICH_HAD_MAX
Definition: ZdcTopology.cc:7
std::vector< DetId > ZdcTopology::north ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in north direction

Implements CaloSubdetectorTopology.

Definition at line 277 of file ZdcTopology.cc.

References gather_cfg::cout.

277  {
278  std::cout << "ZdcTopology::north() not yet implemented" << std::endl;
279  std::vector<DetId> vNeighborsDetId;
280  return vNeighborsDetId;
281 }
tuple cout
Definition: gather_cfg.py:144
std::vector< DetId > ZdcTopology::south ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in south direction

Implements CaloSubdetectorTopology.

Definition at line 282 of file ZdcTopology.cc.

References gather_cfg::cout.

282  {
283  std::cout << "ZdcTopology::south() not yet implemented" << std::endl;
284  std::vector<DetId> vNeighborsDetId;
285  return vNeighborsDetId;
286 }
tuple cout
Definition: gather_cfg.py:144
std::vector< DetId > ZdcTopology::transverse ( const DetId id) const
virtual

Get the transverse (X) neighbors of the given cell

Definition at line 183 of file ZdcTopology.cc.

References HcalZDCDetId::channel(), HcalZDCDetId::EM, ICH_EM_MAX, DetId::rawId(), HcalZDCDetId::section(), validRaw(), and HcalZDCDetId::zside().

183  {
184  std::vector<DetId> vNeighborsDetId;
185  HcalZDCDetId zdcId = HcalZDCDetId(id);
186  HcalZDCDetId zdcDetId;
187  if (validRaw(zdcId) && zdcId.section() == HcalZDCDetId::EM) {
188  bool isPositive = false;
189  if (zdcId.zside() == 1)
190  isPositive = true;
191  if (zdcId.channel() == 1) {
192  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
193  vNeighborsDetId.emplace_back(zdcDetId.rawId());
194  return vNeighborsDetId;
195  }
196  if (zdcId.channel() == ICH_EM_MAX) {
197  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
198  vNeighborsDetId.emplace_back(zdcDetId.rawId());
199  return vNeighborsDetId;
200  }
201  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() - 1);
202  vNeighborsDetId.emplace_back(zdcDetId.rawId());
203  zdcDetId = HcalZDCDetId(zdcId.section(), isPositive, zdcId.channel() + 1);
204  vNeighborsDetId.emplace_back(zdcDetId.rawId());
205  }
206  return vNeighborsDetId;
207 }
static const int ICH_EM_MAX
Definition: ZdcTopology.cc:6
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:39
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
bool validRaw(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:161
int channel() const
get the channel
Definition: HcalZDCDetId.cc:63
Section section() const
get the section
Definition: HcalZDCDetId.cc:44
std::vector< DetId > ZdcTopology::up ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in up direction (outward)

Implements CaloSubdetectorTopology.

Definition at line 287 of file ZdcTopology.cc.

References gather_cfg::cout.

287  {
288  std::cout << "ZdcTopology::up() not yet implemented" << std::endl;
289  std::vector<DetId> vNeighborsDetId;
290  return vNeighborsDetId;
291 }
tuple cout
Definition: gather_cfg.py:144
bool ZdcTopology::valid ( const HcalZDCDetId id) const
virtual

Definition at line 27 of file ZdcTopology.cc.

References isExcluded(), convertSQLiteXML::ok, and validRaw().

Referenced by ZdcHardcodeGeometryLoader::fill().

27  {
28  // check the raw rules
29  bool ok = validRaw(id);
30  ok = ok && !isExcluded(id);
31  return ok;
32 }
bool validRaw(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:161
bool isExcluded(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:34
bool ZdcTopology::validRaw ( const HcalZDCDetId id) const
private

Definition at line 161 of file ZdcTopology.cc.

References funct::abs(), HcalZDCDetId::EM, HcalZDCDetId::HAD, ICH_EM_MAX, ICH_HAD_MAX, ICH_LUM_MAX, ICH_RPD_MAX, HcalZDCDetId::LUM, convertSQLiteXML::ok, HcalZDCDetId::RPD, vertexPlots::section, and ecaldqm::zside().

Referenced by exclude(), longitudinal(), transverse(), and valid().

161  {
162  bool ok = true;
163  if (abs(id.zside()) != 1)
164  ok = false;
165  else if (id.channel() <= 0)
166  ok = false;
167  else if (!(id.section() == HcalZDCDetId::EM || id.section() == HcalZDCDetId::HAD ||
168  id.section() == HcalZDCDetId::LUM))
169  // id.section()== HcalZDCDetId::LUM ||
170  // id.section()== HcalZDCDetId::RPD))
171  ok = false;
172  else if (id.section() == HcalZDCDetId::EM && id.channel() > ICH_EM_MAX)
173  ok = false;
174  else if (id.section() == HcalZDCDetId::HAD && id.channel() > ICH_HAD_MAX)
175  ok = false;
176  else if (id.section() == HcalZDCDetId::LUM && id.channel() > ICH_LUM_MAX)
177  ok = false;
178  else if (id.section() == HcalZDCDetId::RPD && id.channel() > ICH_RPD_MAX)
179  ok = false;
180  return ok;
181 }
static const int ICH_LUM_MAX
Definition: ZdcTopology.cc:8
static const int ICH_EM_MAX
Definition: ZdcTopology.cc:6
int zside(DetId const &)
static const int ICH_RPD_MAX
Definition: ZdcTopology.cc:9
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
string section
Definition: vertexPlots.py:496
static const int ICH_HAD_MAX
Definition: ZdcTopology.cc:7
std::vector< DetId > ZdcTopology::west ( const DetId id) const
overridevirtual

Get the neighbors of the given cell in west direction

Implements CaloSubdetectorTopology.

Definition at line 271 of file ZdcTopology.cc.

References gather_cfg::cout.

271  {
272  std::cout << "ZdcTopology::west() not yet implemented" << std::endl;
273  std::vector<DetId> vNeighborsDetId;
274  return vNeighborsDetId;
275 }
tuple cout
Definition: gather_cfg.py:144

Member Data Documentation

bool ZdcTopology::excludeEM_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude(), and isExcluded().

bool ZdcTopology::excludeHAD_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude(), and isExcluded().

bool ZdcTopology::excludeLUM_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude(), and isExcluded().

bool ZdcTopology::excludeRPD_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude(), and isExcluded().

bool ZdcTopology::excludeZN_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude().

bool ZdcTopology::excludeZP_
private

Definition at line 57 of file ZdcTopology.h.

Referenced by exclude().

std::vector<HcalZDCDetId> ZdcTopology::exclusionList_
private

Definition at line 55 of file ZdcTopology.h.

Referenced by exclude(), and isExcluded().

int ZdcTopology::firstEMModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by firstCell(), and firstEMModule().

int ZdcTopology::firstHADModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by firstCell(), and firstHADModule().

int ZdcTopology::firstLUMModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by firstCell(), and firstLUMModule().

int ZdcTopology::firstRPDModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by firstCell(), and firstRPDModule().

int ZdcTopology::lastEMModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by lastCell(), and lastEMModule().

int ZdcTopology::lastHADModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by lastCell(), and lastHADModule().

int ZdcTopology::lastLUMModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by lastCell(), and lastLUMModule().

int ZdcTopology::lastRPDModule_
private

Definition at line 59 of file ZdcTopology.h.

Referenced by lastCell(), and lastRPDModule().