Go to the documentation of this file.00001 #ifndef GEOMETRY_CALOTOPOLOGY_ECALBARRELHARDCODEDTOPOLOGY_H
00002 #define GEOMETRY_CALOTOPOLOGY_ECALBARRELHARDCODEDTOPOLOGY_H 1
00003
00004 #include <vector>
00005 #include <iostream>
00006 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00007 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
00008
00009 class EcalBarrelHardcodedTopology GCC11_FINAL : public CaloSubdetectorTopology
00010 {
00011
00012 public:
00014 EcalBarrelHardcodedTopology() {};
00015
00016 virtual ~EcalBarrelHardcodedTopology() {};
00017
00019 virtual DetId goNorth(const DetId& id) const {
00020 return incrementIphi(EBDetId(id));
00021 }
00022 virtual std::vector<DetId> north(const DetId& id) const
00023 {
00024 EBDetId nextId=goNorth(id);
00025 std::vector<DetId> vNeighborsDetId;
00026 if (! (nextId==EBDetId(0)))
00027 vNeighborsDetId.push_back(DetId(nextId.rawId()));
00028 return vNeighborsDetId;
00029 }
00030
00032 virtual DetId goSouth(const DetId& id) const {
00033 return decrementIphi(EBDetId(id));
00034 }
00035 virtual std::vector<DetId> south(const DetId& id) const
00036 {
00037 EBDetId nextId=goSouth(id);
00038 std::vector<DetId> vNeighborsDetId;
00039 if (! (nextId==EBDetId(0)))
00040 vNeighborsDetId.push_back(DetId(nextId.rawId()));
00041 return vNeighborsDetId;
00042 }
00043
00045 virtual DetId goEast(const DetId& id) const {
00046 return decrementIeta(EBDetId(id));
00047 }
00048 virtual std::vector<DetId> east(const DetId& id) const
00049 {
00050 EBDetId nextId=goEast(id);
00051 std::vector<DetId> vNeighborsDetId;
00052 if (! (nextId==EBDetId(0)))
00053 vNeighborsDetId.push_back(DetId(nextId.rawId()));
00054 return vNeighborsDetId;
00055 }
00056
00058 virtual DetId goWest(const DetId& id) const {
00059 return incrementIeta(EBDetId(id));
00060 }
00061 virtual std::vector<DetId> west(const DetId& id) const
00062 {
00063 EBDetId nextId=goWest(id);
00064 std::vector<DetId> vNeighborsDetId;
00065 if (! (nextId==EBDetId(0)))
00066 vNeighborsDetId.push_back(DetId(nextId.rawId()));
00067 return vNeighborsDetId;
00068 }
00069
00070 virtual std::vector<DetId> up(const DetId& ) const
00071 {
00072 std::cout << "EcalBarrelHardcodedTopology::up() not yet implemented" << std::endl;
00073 std::vector<DetId> vNeighborsDetId;
00074 return vNeighborsDetId;
00075 }
00076
00077 virtual std::vector<DetId> down(const DetId& ) const
00078 {
00079 std::cout << "EcalBarrelHardcodedTopology::down() not yet implemented" << std::endl;
00080 std::vector<DetId> vNeighborsDetId;
00081 return vNeighborsDetId;
00082 }
00083
00084 private:
00085
00087 EBDetId incrementIeta(const EBDetId&) const ;
00088
00090 EBDetId decrementIeta(const EBDetId&) const ;
00091
00093 EBDetId incrementIphi(const EBDetId&) const ;
00094
00096 EBDetId decrementIphi(const EBDetId&) const;
00097
00098 };
00099
00100 #endif