00001 #ifndef DTReadOutMapping_H
00002 #define DTReadOutMapping_H
00003
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "CondFormats/DTObjects/interface/DTBufferTree.h"
00023 #include "DataFormats/MuonDetId/interface/DTWireId.h"
00024
00025
00026
00027
00028 #include <vector>
00029 #include <string>
00030
00031
00032
00033
00034
00035 class DTReadOutGeometryLink {
00036
00037 public:
00038
00039 DTReadOutGeometryLink();
00040 ~DTReadOutGeometryLink();
00041
00042 int dduId;
00043 int rosId;
00044 int robId;
00045 int tdcId;
00046 int channelId;
00047 int wheelId;
00048 int stationId;
00049 int sectorId;
00050 int slId;
00051 int layerId;
00052 int cellId;
00053
00054 };
00055
00056
00057 class DTReadOutMapping {
00058
00059 public:
00060
00063 DTReadOutMapping();
00064 DTReadOutMapping( const std::string& cell_map_version,
00065 const std::string& rob_map_version );
00066
00069 ~DTReadOutMapping();
00070
00073
00074 int readOutToGeometry( int dduId,
00075 int rosId,
00076 int robId,
00077 int tdcId,
00078 int channelId,
00079 DTWireId& wireId ) const;
00080
00081 int readOutToGeometry( int dduId,
00082 int rosId,
00083 int robId,
00084 int tdcId,
00085 int channelId,
00086 int& wheelId,
00087 int& stationId,
00088 int& sectorId,
00089 int& slId,
00090 int& layerId,
00091 int& cellId ) const;
00092
00093 int geometryToReadOut( int wheelId,
00094 int stationId,
00095 int sectorId,
00096 int slId,
00097 int layerId,
00098 int cellId,
00099 int& dduId,
00100 int& rosId,
00101 int& robId,
00102 int& tdcId,
00103 int& channelId ) const;
00104 int geometryToReadOut( const DTWireId& wireId,
00105 int& dduId,
00106 int& rosId,
00107 int& robId,
00108 int& tdcId,
00109 int& channelId ) const;
00110
00112 const
00113 std::string& mapCellTdc() const;
00114 std::string& mapCellTdc();
00115 const
00116 std::string& mapRobRos() const;
00117 std::string& mapRobRos();
00118
00120 void clear();
00121
00123 int insertReadOutGeometryLink( int dduId,
00124 int rosId,
00125 int robId,
00126 int tdcId,
00127 int channelId,
00128 int wheelId,
00129 int stationId,
00130 int sectorId,
00131 int slId,
00132 int layerId,
00133 int cellId );
00134
00136 typedef std::vector<DTReadOutGeometryLink>::const_iterator const_iterator;
00137 const_iterator begin() const;
00138 const_iterator end() const;
00139
00140 private:
00141
00142 public:
00143 std::string cellMapVersion;
00144 std::string robMapVersion;
00145
00146 std::vector<DTReadOutGeometryLink> readOutChannelDriftTubeMap;
00147
00148 DTBufferTree<int,int>* mType;
00149 DTBufferTree<int,int>* rgBuf;
00150 DTBufferTree<int,int>* rgROB;
00151 DTBufferTree<int,int>* rgROS;
00152 DTBufferTree<int,int>* rgDDU;
00153 DTBufferTree<int,int>* grBuf;
00154 DTBufferTree<int,
00155 std::vector<int>*>* grROB;
00156 DTBufferTree<int,
00157 std::vector<int>*>* grROS;
00158 DTBufferTree<int,
00159 std::vector<int>*>* grDDU;
00160
00162 void cacheMap() const;
00163 std::string mapNameRG() const;
00164 std::string mapNameGR() const;
00165
00166 };
00167
00168
00169 #endif // DTReadOutMapping_H
00170