CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Geometry/CaloTopology/interface/EcalBarrelHardcodedTopology.h

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& /*id*/) 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& /*id*/) 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