00001 #ifndef MUON_MUONIDHELPERTOOL_H 00002 #define MUON_MUONIDHELPERTOOL_H 00003 00004 #include "AthenaBaseComps/AthAlgTool.h" 00005 00006 #include <string> 00007 00008 static const InterfaceID IID_MuonIdHelperTool("Muon::MuonIdHelperTool",1,0); 00009 00010 #include "MuonIdHelpers/MdtIdHelper.h" 00011 #include "MuonIdHelpers/RpcIdHelper.h" 00012 #include "MuonIdHelpers/CscIdHelper.h" 00013 #include "MuonIdHelpers/TgcIdHelper.h" 00014 #include "MuonIdHelpers/sTgcIdHelper.h" 00015 #include "MuonIdHelpers/MmIdHelper.h" 00016 00017 #include "MuonIdHelpers/MuonStationIndex.h" 00018 00019 #include "Identifier/Identifier.h" 00020 class MsgStream; 00021 00022 namespace Muon { 00023 00028 class MuonIdHelperTool : public AthAlgTool { 00029 public: 00031 MuonIdHelperTool(const std::string&,const std::string&,const IInterface*); 00032 00034 ~MuonIdHelperTool (); 00035 00037 StatusCode initialize(); 00038 00040 StatusCode finalize(); 00041 00043 static const InterfaceID& interfaceID() { return IID_MuonIdHelperTool; } 00044 00046 std::string toString( const Identifier& id ) const; 00047 00049 std::string toStringTech( const Identifier& id ) const; 00050 00052 std::string toStringStation( const Identifier& id ) const; 00053 00055 std::string toStringChamber( const Identifier& id ) const; 00056 00058 std::string toStringDetEl( const Identifier& id ) const; 00059 00061 std::string toStringGasGap( const Identifier& id ) const; 00062 00064 std::string chamberNameString( const Identifier& id ) const; 00065 00067 bool isMuon( const Identifier& id ) const; 00068 00070 bool isMdt( const Identifier& id ) const; 00071 00073 bool isMM( const Identifier& id ) const; 00074 00076 bool isCsc( const Identifier& id ) const; 00077 00079 bool isRpc( const Identifier& id ) const; 00080 00082 bool isTgc( const Identifier& id ) const; 00083 00085 bool issTgc( const Identifier& id ) const; 00086 00088 bool measuresPhi( const Identifier& id ) const; 00089 00091 bool isEndcap( const Identifier& id ) const; 00092 00094 bool isTrigger( const Identifier& id ) const; 00095 00097 bool isSmallChamber( const Identifier& id ) const; 00098 00100 int gasGap( const Identifier& id ) const; 00101 00103 Identifier chamberId( const Identifier& id) const; 00104 00106 Identifier detElId( const Identifier& id) const; 00107 00109 Identifier gasGapId( const Identifier& id) const; 00110 00112 Identifier layerId( const Identifier& id) const; 00113 00115 const MdtIdHelper& mdtIdHelper() const { return *m_mdtIdHelper; } 00116 00118 const RpcIdHelper& rpcIdHelper() const { return *m_rpcIdHelper; } 00119 00121 const TgcIdHelper& tgcIdHelper() const { return *m_tgcIdHelper; } 00122 00124 const CscIdHelper& cscIdHelper() const { return *m_cscIdHelper; } 00125 00127 const sTgcIdHelper& stgcIdHelper() const { return *m_stgcIdHelper; } 00128 00130 const MmIdHelper& mmIdHelper() const { return *m_mmIdHelper; } 00131 00133 MuonStationIndex::ChIndex chamberIndex( const Identifier& id ) const; 00134 00136 MuonStationIndex::StIndex stationIndex( const Identifier& id ) const; 00137 00139 MuonStationIndex::PhiIndex phiIndex( const Identifier& id ) const; 00140 00142 MuonStationIndex::DetectorRegionIndex regionIndex( const Identifier& id ) const; 00143 00145 MuonStationIndex::LayerIndex layerIndex( const Identifier& id ) const; 00146 00148 MuonStationIndex::TechnologyIndex technologyIndex( const Identifier& id ) const; 00149 00151 int stationPhi( const Identifier& id ) const; 00152 00154 int stationEta( const Identifier& id ) const; 00155 00157 int sector( const Identifier& id ) const; 00158 00159 private: 00160 const RpcIdHelper* m_rpcIdHelper; 00161 const TgcIdHelper* m_tgcIdHelper; 00162 const CscIdHelper* m_cscIdHelper; 00163 const MdtIdHelper* m_mdtIdHelper; 00164 const MmIdHelper* m_mmIdHelper; 00165 const sTgcIdHelper* m_stgcIdHelper; 00166 00167 struct StationNameData { 00168 std::string stationName; 00169 bool isEndcap; 00170 bool isSmall; 00171 MuonStationIndex::ChIndex chIndex; 00172 MuonStationIndex::StIndex stIndex; 00173 }; 00174 std::vector<StationNameData> m_stationNameData; 00175 std::vector<MuonStationIndex::TechnologyIndex> m_technologies; 00176 }; 00177 00178 } 00179 00180 #endif // MUON_IDHELPERTOOL_H