00001 #ifndef MuonDetLayerMap_h 00002 #define MuonDetLayerMap_h 00003 00004 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h" 00005 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h" 00006 #include "RecoMuon/Navigation/interface/MuonEtaRange.h" 00007 00008 #include <map> 00009 #include <functional> 00010 00023 struct MuonDetLayerComp { 00024 bool operator()(BarrelDetLayer* l1, BarrelDetLayer* l2) const { 00025 if ( l1->specificSurface().radius() < l2->specificSurface().radius() ) return true; 00026 return false; 00027 } 00028 00029 bool operator()(ForwardDetLayer* l1, ForwardDetLayer* l2) const { 00030 if ( fabs(l1->surface().position().z()) < fabs(l2->surface().position().z()) ) return true; 00031 return false; 00032 } 00033 }; 00034 00035 00036 // FIXME: these names are too generic... 00037 typedef std::map<BarrelDetLayer*, MuonEtaRange, MuonDetLayerComp> MapB; 00038 typedef std::map<ForwardDetLayer*, MuonEtaRange, MuonDetLayerComp> MapE; 00039 typedef MapB::const_iterator MapBI; 00040 typedef MapE::const_iterator MapEI; 00041 00042 #endif 00043