CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/CondFormats/DTObjects/interface/DTReadOutMapping.h

Go to the documentation of this file.
00001 #ifndef DTReadOutMapping_H
00002 #define DTReadOutMapping_H
00003 
00014 //----------------------
00015 // Base Class Headers --
00016 //----------------------
00017 
00018 
00019 //------------------------------------
00020 // Collaborating Class Declarations --
00021 //------------------------------------
00022 #include "CondFormats/DTObjects/interface/DTBufferTree.h"
00023 #include "DataFormats/MuonDetId/interface/DTWireId.h"
00024 
00025 //---------------
00026 // C++ Headers --
00027 //---------------
00028 #include <vector>
00029 #include <string>
00030 
00031 //              ---------------------
00032 //              -- Class Interface --
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