CMS 3D CMS Logo

EcalEndcapTopology.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_CALOTOPOLOGY_ECALENDCAPTOPOLOGY_H
2 #define GEOMETRY_CALOTOPOLOGY_ECALENDCAPTOPOLOGY_H 1
3 
9 #include <utility>
10 #include <vector>
11 #include <iostream>
12 
14 public:
16  EcalEndcapTopology() : theGeom_(nullptr){};
17 
19  ~EcalEndcapTopology() override {}
20 
22  EcalEndcapTopology(CaloGeometry const& theGeom) {
24  }
25 
27  DetId goNorth(const DetId& id) const override { return incrementIy(EEDetId(id)); }
28  std::vector<DetId> north(const DetId& id) const override {
29  EEDetId nextId = goNorth(id);
30  std::vector<DetId> vNeighborsDetId;
31  if (!(nextId == EEDetId(0)))
32  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
33  return vNeighborsDetId;
34  }
35 
37  DetId goSouth(const DetId& id) const override { return decrementIy(EEDetId(id)); }
38  std::vector<DetId> south(const DetId& id) const override {
39  EEDetId nextId = goSouth(id);
40  std::vector<DetId> vNeighborsDetId;
41  if (!(nextId == EEDetId(0)))
42  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
43  return vNeighborsDetId;
44  }
45 
47  DetId goEast(const DetId& id) const override { return incrementIx(EEDetId(id)); }
48  std::vector<DetId> east(const DetId& id) const override {
49  EEDetId nextId = goEast(id);
50  std::vector<DetId> vNeighborsDetId;
51  if (!(nextId == EEDetId(0)))
52  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
53  return vNeighborsDetId;
54  }
55 
57  DetId goWest(const DetId& id) const override { return decrementIx(EEDetId(id)); }
58  std::vector<DetId> west(const DetId& id) const override {
59  EEDetId nextId = goWest(id);
60  std::vector<DetId> vNeighborsDetId;
61  if (!(nextId == EEDetId(0)))
62  vNeighborsDetId.emplace_back(DetId(nextId.rawId()));
63  return vNeighborsDetId;
64  }
65 
66  std::vector<DetId> up(const DetId& /*id*/) const override {
67  std::cout << "EcalBarrelTopology::up() not yet implemented" << std::endl;
68  std::vector<DetId> vNeighborsDetId;
69  return vNeighborsDetId;
70  }
71 
72  std::vector<DetId> down(const DetId& /*id*/) const override {
73  std::cout << "EcalBarrelTopology::down() not yet implemented" << std::endl;
74  std::vector<DetId> vNeighborsDetId;
75  return vNeighborsDetId;
76  }
77 
78 private:
80  EEDetId incrementIx(const EEDetId& id) const;
81 
83  EEDetId decrementIx(const EEDetId& id) const;
84 
86  EEDetId incrementIy(const EEDetId& id) const;
87 
89  EEDetId decrementIy(const EEDetId& id) const;
90 
92 };
93 
94 #endif
EcalEndcapTopology::goSouth
DetId goSouth(const DetId &id) const override
move the Topology south (decrement iy)
Definition: EcalEndcapTopology.h:37
EcalEndcapTopology
Definition: EcalEndcapTopology.h:13
ESHandle.h
gather_cfg.cout
cout
Definition: gather_cfg.py:144
EcalEndcapTopology::incrementIy
EEDetId incrementIy(const EEDetId &id) const
move the nagivator to larger iy
Definition: EcalEndcapTopology.cc:3
EEDetId.h
EcalEndcapTopology::EcalEndcapTopology
EcalEndcapTopology()
create a new Topology
Definition: EcalEndcapTopology.h:16
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
EcalEndcapTopology::theGeom_
const CaloSubdetectorGeometry * theGeom_
Definition: EcalEndcapTopology.h:91
EcalEndcapTopology::decrementIy
EEDetId decrementIy(const EEDetId &id) const
move the nagivator to smaller iy
Definition: EcalEndcapTopology.cc:19
DetId
Definition: DetId.h:17
CaloGeometry
Definition: CaloGeometry.h:21
EcalEndcapTopology::up
std::vector< DetId > up(const DetId &) const override
Definition: EcalEndcapTopology.h:66
EcalEndcapTopology::goNorth
DetId goNorth(const DetId &id) const override
move the Topology north (increment iy)
Definition: EcalEndcapTopology.h:27
EEDetId
Definition: EEDetId.h:14
EcalEndcapTopology::south
std::vector< DetId > south(const DetId &id) const override
Definition: EcalEndcapTopology.h:38
EcalEndcap
Definition: EcalSubdetector.h:10
CaloSubdetectorGeometry.h
EcalEndcapTopology::~EcalEndcapTopology
~EcalEndcapTopology() override
virtual destructor
Definition: EcalEndcapTopology.h:19
EcalEndcapTopology::goEast
DetId goEast(const DetId &id) const override
move the Topology east (positive ix)
Definition: EcalEndcapTopology.h:47
EcalEndcapTopology::east
std::vector< DetId > east(const DetId &id) const override
Definition: EcalEndcapTopology.h:48
EcalEndcapTopology::EcalEndcapTopology
EcalEndcapTopology(CaloGeometry const &theGeom)
create a new Topology from geometry
Definition: EcalEndcapTopology.h:22
CaloSubdetectorTopology
Definition: CaloSubdetectorTopology.h:17
DetId::Ecal
Definition: DetId.h:27
CaloSubdetectorTopology.h
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
EcalEndcapTopology::west
std::vector< DetId > west(const DetId &id) const override
Definition: EcalEndcapTopology.h:58
CaloGeometry.h
CaloSubdetectorGeometry
Definition: CaloSubdetectorGeometry.h:22
EcalEndcapTopology::goWest
DetId goWest(const DetId &id) const override
move the Topology west (negative ix)
Definition: EcalEndcapTopology.h:57
EcalEndcapTopology::down
std::vector< DetId > down(const DetId &) const override
Definition: EcalEndcapTopology.h:72
EcalEndcapTopology::incrementIx
EEDetId incrementIx(const EEDetId &id) const
move the nagivator to larger ix
Definition: EcalEndcapTopology.cc:35
EcalEndcapTopology::decrementIx
EEDetId decrementIx(const EEDetId &id) const
move the nagivator to smaller ix
Definition: EcalEndcapTopology.cc:52
EcalEndcapTopology::north
std::vector< DetId > north(const DetId &id) const override
Definition: EcalEndcapTopology.h:28