CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/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 : 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 
00026   virtual std::vector<DetId> north(const DetId& id) const
00027     { 
00028       ESDetId nextId=incrementIy(ESDetId(id));
00029       std::vector<DetId> vNeighborsDetId;
00030       if (! (nextId==ESDetId(0)))
00031         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00032       return vNeighborsDetId;
00033     }
00034 
00036   virtual std::vector<DetId> south(const DetId& id) const
00037     { 
00038       ESDetId nextId=decrementIy(ESDetId(id));
00039       std::vector<DetId> vNeighborsDetId;
00040       if (! (nextId==ESDetId(0)))
00041         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00042       return vNeighborsDetId;
00043     }
00044 
00046   virtual std::vector<DetId> east(const DetId& id) const
00047     { 
00048       ESDetId nextId=incrementIx(ESDetId(id));
00049       std::vector<DetId> vNeighborsDetId;
00050       if (! (nextId==ESDetId(0)))
00051         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00052       return vNeighborsDetId;
00053     }
00054 
00056   virtual std::vector<DetId> west(const DetId& id) const
00057     { 
00058       ESDetId nextId=decrementIx(ESDetId(id));
00059       std::vector<DetId> vNeighborsDetId;
00060       if (! (nextId==ESDetId(0)))
00061         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00062       return vNeighborsDetId;
00063     }
00064   
00065   virtual std::vector<DetId> up(const DetId& id) const
00066     {
00067       ESDetId nextId=incrementIz(ESDetId(id));
00068       std::vector<DetId> vNeighborsDetId;
00069       if (! (nextId==ESDetId(0)))
00070         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00071       return  vNeighborsDetId;
00072     }
00073   
00074   virtual std::vector<DetId> down(const DetId& id) const
00075     {
00076       ESDetId nextId=decrementIz(ESDetId(id));
00077       std::vector<DetId> vNeighborsDetId;
00078       if (! (nextId==ESDetId(0)))
00079         vNeighborsDetId.push_back(DetId(nextId.rawId()));
00080       return  vNeighborsDetId;
00081     }
00082 
00083  private:
00084 
00086   ESDetId incrementIx(const ESDetId& id) const ;
00087 
00089   ESDetId decrementIx(const ESDetId& id) const ;
00090 
00092   ESDetId incrementIy(const ESDetId& id) const ;
00093 
00095   ESDetId decrementIy(const ESDetId& id) const;
00096 
00098   ESDetId incrementIz(const ESDetId& id) const;
00099 
00101   ESDetId decrementIz(const ESDetId& id) const;
00102 
00103   edm::ESHandle<CaloGeometry> theGeom_;
00104 };
00105 
00106 #endif
00107 
00108 
00109 
00110 
00111 
00112