CMS 3D CMS Logo

EcalPreshowerTopology.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_CALOTOPOLOGY_ECALPRESHOWERTOPOLOGY_H
2 #define GEOMETRY_CALOTOPOLOGY_ECALPRESHOWERTOPOLOGY_H 1
3 
8 #include <utility>
9 #include <vector>
10 #include <iostream>
11 
13 public:
15  EcalPreshowerTopology() = default;
16 
18  ~EcalPreshowerTopology() override {}
19 
21  DetId goNorth(const DetId& id) const override { return incrementIy(ESDetId(id)); }
22  std::vector<DetId> north(const DetId& id) const override {
23  ESDetId nextId = goNorth(id);
24  std::vector<DetId> vNeighborsDetId;
25  if (!(nextId == ESDetId(0)))
26  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
27  return vNeighborsDetId;
28  }
29 
31  DetId goSouth(const DetId& id) const override { return decrementIy(ESDetId(id)); }
32  std::vector<DetId> south(const DetId& id) const override {
33  ESDetId nextId = goSouth(id);
34  std::vector<DetId> vNeighborsDetId;
35  if (!(nextId == ESDetId(0)))
36  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
37  return vNeighborsDetId;
38  }
39 
41  DetId goEast(const DetId& id) const override { return incrementIx(ESDetId(id)); }
42  std::vector<DetId> east(const DetId& id) const override {
43  ESDetId nextId = goEast(id);
44  std::vector<DetId> vNeighborsDetId;
45  if (!(nextId == ESDetId(0)))
46  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
47  return vNeighborsDetId;
48  }
49 
51  DetId goWest(const DetId& id) const override { return decrementIx(ESDetId(id)); }
52  std::vector<DetId> west(const DetId& id) const override {
53  ESDetId nextId = goWest(id);
54  std::vector<DetId> vNeighborsDetId;
55  if (!(nextId == ESDetId(0)))
56  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
57  return vNeighborsDetId;
58  }
59 
60  DetId goUp(const DetId& id) const override { return incrementIz(ESDetId(id)); }
61  std::vector<DetId> up(const DetId& id) const override {
62  ESDetId nextId = goUp(id);
63  std::vector<DetId> vNeighborsDetId;
64  if (!(nextId == ESDetId(0)))
65  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
66  return vNeighborsDetId;
67  }
68 
69  DetId goDown(const DetId& id) const override { return decrementIz(ESDetId(id)); }
70  std::vector<DetId> down(const DetId& id) const override {
71  ESDetId nextId = goDown(id);
72  std::vector<DetId> vNeighborsDetId;
73  if (!(nextId == ESDetId(0)))
74  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
75  return vNeighborsDetId;
76  }
77 
78 private:
80  ESDetId incrementIx(const ESDetId& id) const;
81 
83  ESDetId decrementIx(const ESDetId& id) const;
84 
86  ESDetId incrementIy(const ESDetId& id) const;
87 
89  ESDetId decrementIy(const ESDetId& id) const;
90 
92  ESDetId incrementIz(const ESDetId& id) const;
93 
95  ESDetId decrementIz(const ESDetId& id) const;
96 };
97 
98 #endif
ESDetId decrementIx(const ESDetId &id) const
move the nagivator to smaller ix
~EcalPreshowerTopology() override
virtual destructor
DetId goSouth(const DetId &id) const override
move the Topology south (decrement iy)
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::vector< DetId > west(const DetId &id) const override
ESDetId decrementIz(const ESDetId &id) const
move the nagivator to smaller iz
EcalPreshowerTopology()=default
create a new Topology
DetId goEast(const DetId &id) const override
move the Topology east (positive ix)
std::vector< DetId > south(const DetId &id) const override
std::vector< DetId > down(const DetId &id) const override
DetId goNorth(const DetId &id) const override
move the Topology north (increment iy)
ESDetId incrementIx(const ESDetId &id) const
move the nagivator to larger ix
Definition: DetId.h:17
ESDetId incrementIz(const ESDetId &id) const
move the nagivator to larger iz
ESDetId decrementIy(const ESDetId &id) const
move the nagivator to smaller iy
DetId goUp(const DetId &id) const override
DetId goWest(const DetId &id) const override
move the Topology west (negative ix)
std::vector< DetId > east(const DetId &id) const override
DetId goDown(const DetId &id) const override
std::vector< DetId > north(const DetId &id) const override
ESDetId incrementIy(const ESDetId &id) const
move the nagivator to larger iy
std::vector< DetId > up(const DetId &id) const override