00001 #ifndef RPCReadOutMapping_H 00002 #define RPCReadOutMapping_H 00003 00009 #include <map> 00010 #include <vector> 00011 #include <utility> 00012 #include <string> 00013 #include <boost/cstdint.hpp> 00014 00015 #include "CondFormats/RPCObjects/interface/DccSpec.h" 00016 #include "CondFormats/RPCObjects/interface/LinkBoardElectronicIndex.h" 00017 #include "CondFormats/RPCObjects/interface/LinkBoardPackedStrip.h" 00018 class LinkBoardSpec; 00019 00020 00021 class RPCReadOutMapping { 00022 public: 00023 00025 typedef std::pair<uint32_t,int> StripInDetUnit; 00026 00027 RPCReadOutMapping(const std::string & version = ""); 00028 virtual ~RPCReadOutMapping(){} 00029 00031 const DccSpec * dcc( int dccId) const; 00032 00034 std::pair<int,int> dccNumberRange() const; 00035 00037 std::vector<const DccSpec*> dccList() const; 00038 00039 00041 void add(const DccSpec & dcc); 00042 00044 const std::string & version() const { return theVersion; } 00045 00047 virtual const LinkBoardSpec* location (const LinkBoardElectronicIndex & ele) const; 00048 00050 virtual StripInDetUnit detUnitFrame( 00051 const LinkBoardSpec& location, const LinkBoardPackedStrip & packedStrip) const; 00052 00054 std::vector< std::pair< LinkBoardElectronicIndex, LinkBoardPackedStrip> > 00055 rawDataFrame (const StripInDetUnit & duFrame) const; 00056 00057 00058 00059 00060 00061 // TEMPORARY 00062 std::vector<const LinkBoardSpec*> getLBforChamber(const std::string & name) const; 00063 std::pair<LinkBoardElectronicIndex, int> getRAWSpecForCMSChamberSrip(uint32_t detId, 00064 int strip, int dccInputChannel) const; 00065 00066 private: 00067 typedef std::map<int, DccSpec>::const_iterator IMAP; 00068 std::map<int, DccSpec> theFeds; 00069 std::string theVersion; 00070 00071 }; 00072 00073 #endif // RPCReadOutMapping_H 00074