CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/Geometry/CaloTopology/interface/EcalPreshowerTopology.h

Go to the documentation of this file.
00001 #ifndef GEOMETRY_CALOTOPOLOGY_ECALPRESHOWERTOPOLOGY_H
00002 #define GEOMETRY_CALOTOPOLOGY_ECALPRESHOWERTOPOLOGY_H 1
00003 
00004 #include "DataFormats/EcalDetId/interface/ESDetId.h"
00005 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
00006 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00007 #include "FWCore/Framework/interface/ESHandle.h"
00008 #include <vector>
00009 #include <iostream>
00010 
00011 class EcalPreshowerTopology GCC11_FINAL : public CaloSubdetectorTopology {
00012 
00013  public:
00015   EcalPreshowerTopology() : theGeom_(0) {};
00016 
00018   virtual ~EcalPreshowerTopology() { }  
00019   
00021   EcalPreshowerTopology(edm::ESHandle<CaloGeometry> theGeom) : theGeom_(theGeom)
00022     {
00023     }
00024 
00025   
00027   virtual DetId  goNorth(const DetId& id) const {
00028     return incrementIy(ESDetId(id));
00029   }
00030   virtual std::vector<DetId> north(const DetId& id) const
00031     { 
00032       ESDetId nextId= goNorth(id);
00033       std::vector<DetId> vNeighborsDetId;
00034       if (! (nextId==ESDetId(0)))
00035         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00036       return vNeighborsDetId;
00037     }
00038 
00040   virtual DetId goSouth(const DetId& id) const {
00041     return decrementIy(ESDetId(id));
00042   }
00043   virtual std::vector<DetId> south(const DetId& id) const
00044     { 
00045       ESDetId nextId= goSouth(id);
00046       std::vector<DetId> vNeighborsDetId;
00047       if (! (nextId==ESDetId(0)))
00048         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00049       return vNeighborsDetId;
00050     }
00051 
00053   virtual DetId  goEast(const DetId& id) const {
00054     return incrementIx(ESDetId(id));
00055   }
00056   virtual std::vector<DetId> east(const DetId& id) const
00057   { 
00058     ESDetId nextId=goEast(id);
00059     std::vector<DetId> vNeighborsDetId;
00060     if (! (nextId==ESDetId(0)))
00061       vNeighborsDetId.push_back(DetId(nextId.rawId()));
00062     return vNeighborsDetId;
00063   }
00064 
00066   virtual DetId goWest(const DetId& id) const {
00067     return decrementIx(ESDetId(id));
00068   }
00069   virtual std::vector<DetId> west(const DetId& id) const
00070   { 
00071     ESDetId nextId=goWest(id);
00072     std::vector<DetId> vNeighborsDetId;
00073     if (! (nextId==ESDetId(0)))
00074       vNeighborsDetId.push_back(DetId(nextId.rawId()));
00075     return vNeighborsDetId;
00076   }
00077   
00078   virtual DetId goUp(const DetId& id) const {
00079     return incrementIz(ESDetId(id));
00080   }
00081   virtual std::vector<DetId> up(const DetId& id) const
00082   {
00083     ESDetId nextId=goUp(id);
00084     std::vector<DetId> vNeighborsDetId;
00085     if (! (nextId==ESDetId(0)))
00086       vNeighborsDetId.push_back(DetId(nextId.rawId()));
00087     return  vNeighborsDetId;
00088   }
00089   
00090   virtual DetId goDown(const DetId& id) const {
00091     return decrementIz(ESDetId(id));
00092   }
00093   virtual std::vector<DetId> down(const DetId& id) const
00094   {
00095     ESDetId nextId=goDown(id);
00096     std::vector<DetId> vNeighborsDetId;
00097     if (! (nextId==ESDetId(0)))
00098       vNeighborsDetId.push_back(DetId(nextId.rawId()));
00099     return  vNeighborsDetId;
00100   }
00101 
00102  private:
00103 
00105   ESDetId incrementIx(const ESDetId& id) const ;
00106 
00108   ESDetId decrementIx(const ESDetId& id) const ;
00109 
00111   ESDetId incrementIy(const ESDetId& id) const ;
00112 
00114   ESDetId decrementIy(const ESDetId& id) const;
00115 
00117   ESDetId incrementIz(const ESDetId& id) const;
00118 
00120   ESDetId decrementIz(const ESDetId& id) const;
00121 
00122   edm::ESHandle<CaloGeometry> theGeom_;
00123 };
00124 
00125 #endif
00126 
00127 
00128 
00129 
00130 
00131