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 
8 #include <vector>
9 #include <iostream>
10 
12 
13  public:
16 
18  virtual ~EcalEndcapTopology() { }
19 
22  {
23  }
24 
26  virtual DetId goNorth(const DetId& id) const {
27  return incrementIy(EEDetId(id));
28  }
29  virtual std::vector<DetId> north(const DetId& id) const
30  {
31  EEDetId nextId= goNorth(id);
32  std::vector<DetId> vNeighborsDetId;
33  if (! (nextId==EEDetId(0)))
34  vNeighborsDetId.push_back(DetId(nextId.rawId()));
35  return vNeighborsDetId;
36  }
37 
39  virtual DetId goSouth(const DetId& id) const {
40  return decrementIy(EEDetId(id));
41  }
42  virtual std::vector<DetId> south(const DetId& id) const
43  {
44  EEDetId nextId= goSouth(id);
45  std::vector<DetId> vNeighborsDetId;
46  if (! (nextId==EEDetId(0)))
47  vNeighborsDetId.push_back(DetId(nextId.rawId()));
48  return vNeighborsDetId;
49  }
50 
52  virtual DetId goEast(const DetId& id) const {
53  return incrementIx(EEDetId(id));
54  }
55  virtual std::vector<DetId> east(const DetId& id) const
56  {
57  EEDetId nextId=goEast(id);
58  std::vector<DetId> vNeighborsDetId;
59  if (! (nextId==EEDetId(0)))
60  vNeighborsDetId.push_back(DetId(nextId.rawId()));
61  return vNeighborsDetId;
62  }
63 
65  virtual DetId goWest(const DetId& id) const {
66  return decrementIx(EEDetId(id));
67  }
68  virtual std::vector<DetId> west(const DetId& id) const
69  {
70  EEDetId nextId=goWest(id);
71  std::vector<DetId> vNeighborsDetId;
72  if (! (nextId==EEDetId(0)))
73  vNeighborsDetId.push_back(DetId(nextId.rawId()));
74  return vNeighborsDetId;
75  }
76 
77  virtual std::vector<DetId> up(const DetId& /*id*/) const
78  {
79  std::cout << "EcalBarrelTopology::up() not yet implemented" << std::endl;
80  std::vector<DetId> vNeighborsDetId;
81  return vNeighborsDetId;
82  }
83 
84  virtual std::vector<DetId> down(const DetId& /*id*/) const
85  {
86  std::cout << "EcalBarrelTopology::down() not yet implemented" << std::endl;
87  std::vector<DetId> vNeighborsDetId;
88  return vNeighborsDetId;
89  }
90 
91  private:
92 
94  EEDetId incrementIx(const EEDetId& id) const ;
95 
97  EEDetId decrementIx(const EEDetId& id) const ;
98 
100  EEDetId incrementIy(const EEDetId& id) const ;
101 
103  EEDetId decrementIy(const EEDetId& id) const;
104 
106 };
107 
108 #endif
virtual std::vector< DetId > east(const DetId &id) const
virtual std::vector< DetId > north(const DetId &id) const
edm::ESHandle< CaloGeometry > theGeom_
virtual ~EcalEndcapTopology()
virtual destructor
virtual DetId goSouth(const DetId &id) const
move the Topology south (decrement iy)
EEDetId incrementIy(const EEDetId &id) const
move the nagivator to larger iy
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
virtual std::vector< DetId > south(const DetId &id) const
EEDetId decrementIx(const EEDetId &id) const
move the nagivator to smaller ix
virtual DetId goEast(const DetId &id) const
move the Topology east (positive ix)
virtual std::vector< DetId > down(const DetId &) const
virtual DetId goWest(const DetId &id) const
move the Topology west (negative ix)
EEDetId decrementIy(const EEDetId &id) const
move the nagivator to smaller iy
virtual std::vector< DetId > up(const DetId &) const
EEDetId incrementIx(const EEDetId &id) const
move the nagivator to larger ix
Definition: DetId.h:18
EcalEndcapTopology(edm::ESHandle< CaloGeometry > theGeom)
create a new Topology from geometry
virtual std::vector< DetId > west(const DetId &id) const
virtual DetId goNorth(const DetId &id) const
move the Topology north (increment iy)
EcalEndcapTopology()
create a new Topology