00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef STAR_StPmdDBUtil
00033 #define STAR_StPmdDBUtil
00034 #include <stdlib.h>
00035 #include <TMatrix.h>
00036 #include "Stsstream.h"
00037 #include <math.h>
00038 #include "StPmdGeom.h"
00039
00040 #define PMD_BOARD_CH_MAX 64
00041 #define PMD_BOARD_MAX 1296
00042 #define PMD_ROW_MAX 120
00043 #define PMD_COL_MAX 120
00044 #define PMD_CHAIN_CHANNEL_MAX 1728
00045 #define PMD_CHAIN_MAX 48
00046 #define PMD_SECTOR 2
00047 #define PMD_CRAMS_MAX 12
00048 #define PMD_CRAMS_BLOCK 2
00049
00050 #define PMD_CRAMS_CH_MAX 1728
00051
00052
00053 class StPmdGeom;
00054
00055 class StPmdDBUtil {
00056 private:
00057 StPmdGeom * mPmdGeom;
00058 protected:
00059 Int_t m_BoardNumber[PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00060 Int_t m_ChannelInBoard[PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00061 Int_t m_Chain[PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00062 public:
00063 StPmdDBUtil();
00064 virtual ~StPmdDBUtil();
00065
00066 void GetBoardInfo();
00067 void BoardNumber( Int_t,Int_t,Int_t,Int_t& );
00068 void ChannelInBoard( Int_t, Int_t, Int_t, Int_t& );
00069 void Chain( Int_t, Int_t, Int_t, Int_t& );
00070
00071 ClassDef(StPmdDBUtil, 1)
00072 };
00073
00074 inline void StPmdDBUtil::BoardNumber(Int_t sm, Int_t row, Int_t col, Int_t& brd)
00075 {brd=m_BoardNumber[sm][row][col];}
00076
00077 inline void StPmdDBUtil::ChannelInBoard(Int_t sm, Int_t row, Int_t col, Int_t& channel)
00078 {channel=m_ChannelInBoard[sm][row][col];}
00079
00080 inline void StPmdDBUtil::Chain(Int_t sm, Int_t row, Int_t col, Int_t& chain)
00081 {chain=m_Chain[sm][row][col];}
00082 #endif
00083