CMS 3D CMS Logo

EcalBarrelTopology.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_CALOTOPOLOGY_ECALBARRELTOPOLOGY_H
2 #define GEOMETRY_CALOTOPOLOGY_ECALBARRELTOPOLOGY_H 1
3 
4 #include <utility>
5 #include <vector>
6 #include <iostream>
11 
13 public:
16 
18  ~EcalBarrelTopology() override {}
19 
21  EcalBarrelTopology(CaloGeometry const& theGeom) {
23  }
24 
26  DetId goNorth(const DetId& id) const override { return incrementIphi(EBDetId(id)); }
27  std::vector<DetId> north(const DetId& id) const override {
28  EBDetId nextId = goNorth(id);
29  std::vector<DetId> vNeighborsDetId;
30  if (!(nextId == EBDetId(0)))
31  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
32  return vNeighborsDetId;
33  }
34 
36  DetId goSouth(const DetId& id) const override { return decrementIphi(EBDetId(id)); }
37  std::vector<DetId> south(const DetId& id) const override {
38  EBDetId nextId = goSouth(id);
39  std::vector<DetId> vNeighborsDetId;
40  if (!(nextId == EBDetId(0)))
41  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
42  return vNeighborsDetId;
43  }
44 
46  DetId goEast(const DetId& id) const override { return decrementIeta(EBDetId(id)); }
47  std::vector<DetId> east(const DetId& id) const override {
48  EBDetId nextId = goEast(id);
49  std::vector<DetId> vNeighborsDetId;
50  if (!(nextId == EBDetId(0)))
51  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
52  return vNeighborsDetId;
53  }
54 
56  DetId goWest(const DetId& id) const override { return incrementIeta(EBDetId(id)); }
57  std::vector<DetId> west(const DetId& id) const override {
58  EBDetId nextId = goWest(id);
59  std::vector<DetId> vNeighborsDetId;
60  if (!(nextId == EBDetId(0)))
61  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
62  return vNeighborsDetId;
63  }
64 
65  std::vector<DetId> up(const DetId& /*id*/) const override {
66  std::cout << "EcalBarrelTopology::up() not yet implemented" << std::endl;
67  std::vector<DetId> vNeighborsDetId;
68  return vNeighborsDetId;
69  }
70 
71  std::vector<DetId> down(const DetId& /*id*/) const override {
72  std::cout << "EcalBarrelTopology::down() not yet implemented" << std::endl;
73  std::vector<DetId> vNeighborsDetId;
74  return vNeighborsDetId;
75  }
76 
77 private:
79  EBDetId incrementIeta(const EBDetId&) const;
80 
82  EBDetId decrementIeta(const EBDetId&) const;
83 
85  EBDetId incrementIphi(const EBDetId&) const;
86 
88  EBDetId decrementIphi(const EBDetId&) const;
89 
91 };
92 
93 #endif
DetId goNorth(const DetId &id) const override
move the Topology north (increment iphi)
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
std::vector< DetId > down(const DetId &) const override
std::vector< DetId > south(const DetId &id) const override
#define nullptr
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::vector< DetId > up(const DetId &) const override
std::vector< DetId > north(const DetId &id) const override
std::vector< DetId > west(const DetId &id) const override
~EcalBarrelTopology() override
virtual destructor
std::vector< DetId > east(const DetId &id) const override
const CaloSubdetectorGeometry * theGeom_
DetId goWest(const DetId &id) const override
move the Topology west (positive ieta)
DetId goEast(const DetId &id) const override
move the Topology east (negative ieta)
EBDetId decrementIeta(const EBDetId &) const
move the nagivator to smaller ieta (more negative z) (stops at end of barrel and returns null) ...
DetId goSouth(const DetId &id) const override
move the Topology south (decrement iphi)
Definition: DetId.h:17
EBDetId decrementIphi(const EBDetId &) const
move the nagivator to smaller iphi (wraps around the barrel)
EBDetId incrementIphi(const EBDetId &) const
move the nagivator to larger iphi (wraps around the barrel)
EcalBarrelTopology(CaloGeometry const &theGeom)
create a new Topology from geometry
EBDetId incrementIeta(const EBDetId &) const
move the nagivator to larger ieta (more positive z) (stops at end of barrel and returns null) ...
EcalBarrelTopology()
create a new Topology