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
00071 enum type { plain, compact };
00072
00075
00076 int readOutToGeometry( int dduId,
00077 int rosId,
00078 int robId,
00079 int tdcId,
00080 int channelId,
00081 DTWireId& wireId ) const;
00082
00083 int readOutToGeometry( int dduId,
00084 int rosId,
00085 int robId,
00086 int tdcId,
00087 int channelId,
00088 int& wheelId,
00089 int& stationId,
00090 int& sectorId,
00091 int& slId,
00092 int& layerId,
00093 int& cellId ) const;
00094
00095 int geometryToReadOut( int wheelId,
00096 int stationId,
00097 int sectorId,
00098 int slId,
00099 int layerId,
00100 int cellId,
00101 int& dduId,
00102 int& rosId,
00103 int& robId,
00104 int& tdcId,
00105 int& channelId ) const;
00106 int geometryToReadOut( const DTWireId& wireId,
00107 int& dduId,
00108 int& rosId,
00109 int& robId,
00110 int& tdcId,
00111 int& channelId ) const;
00112
00113 type mapType() const;
00114
00116 const
00117 std::string& mapCellTdc() const;
00118 std::string& mapCellTdc();
00119 const
00120 std::string& mapRobRos() const;
00121 std::string& mapRobRos();
00122
00124 void clear();
00125
00127 int insertReadOutGeometryLink( int dduId,
00128 int rosId,
00129 int robId,
00130 int tdcId,
00131 int channelId,
00132 int wheelId,
00133 int stationId,
00134 int sectorId,
00135 int slId,
00136 int layerId,
00137 int cellId );
00138
00140 typedef std::vector<DTReadOutGeometryLink>::const_iterator const_iterator;
00141 const_iterator begin() const;
00142 const_iterator end() const;
00143
00145 const DTReadOutMapping* fullMap() const;
00146
00147 private:
00148
00149 std::string cellMapVersion;
00150 std::string robMapVersion;
00151
00152 std::vector<DTReadOutGeometryLink> readOutChannelDriftTubeMap;
00153
00154 DTBufferTree<int,int>* mType;
00155 DTBufferTree<int,int>* rgBuf;
00156 DTBufferTree<int,int>* rgROB;
00157 DTBufferTree<int,int>* rgROS;
00158 DTBufferTree<int,int>* rgDDU;
00159 DTBufferTree<int,int>* grBuf;
00160 DTBufferTree<int,
00161 std::vector<int>*>* grROB;
00162 DTBufferTree<int,
00163 std::vector<int>*>* grROS;
00164 DTBufferTree<int,
00165 std::vector<int>*>* grDDU;
00166
00168 void cacheMap() const;
00169 std::string mapNameRG() const;
00170 std::string mapNameGR() const;
00171
00172 };
00173
00174
00175 #endif // DTReadOutMapping_H
00176