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
00033
00034 #ifndef STAR_StPmdMapUtil
00035 #define STAR_StPmdmapUtil
00036 #include <stdlib.h>
00037 #include <TMatrix.h>
00038 #include <sstream>
00039 #include <Stiostream.h>
00040 #include <math.h>
00041 #include "StPmdGeom.h"
00042 #include "StPmdDBUtil.h"
00043
00044 class StPmdGeom;
00045
00046 class StPmdMapUtil {
00047 private:
00048 char beg[1];
00049 StPmdGeom * mPmdGeom;
00050 protected:
00051 Int_t m_TempChannelInBoard[PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00052 Int_t m_ChannelInBoard [PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00053 Int_t m_Chain [PMD_CRAMS_MAX*2][PMD_ROW_MAX][PMD_COL_MAX];
00054 Int_t SMChainExists[24][48];
00055 Int_t nBoardSMChain[24][48];
00056 Int_t FirstBoard[60];
00057 Int_t Chain_Combo[60];
00058 Int_t SM_Combo[60];
00059
00060 Int_t nSMChain;
00061 char end[1];
00062 public:
00063 StPmdMapUtil();
00064 virtual ~StPmdMapUtil();
00065
00066 void StoreMapInfo();
00067 void StoreMapInfo(Int_t );
00068 void ReverseChannelOriginal( Int_t, Int_t, Int_t, Int_t& );
00069 void ReverseChannelConverted( Int_t, Int_t, Int_t, Int_t& );
00070 void ChainNumber( Int_t, Int_t, Int_t, Int_t& );
00071
00072 void SetSMChainCombos(Int_t);
00073 void ComboSMChain(Int_t,Int_t&,Int_t&);
00074 Int_t GetComboFirstBoard(Int_t);
00075 Int_t GetSMChainCombo(Int_t,Int_t);
00076 Int_t GetnSMChain();
00077 Int_t GetnBoardSMChain(Int_t);
00078 Int_t GetnBoardSMChain(Int_t,Int_t);
00079
00080 ClassDef(StPmdMapUtil, 1)
00081 };
00082
00083 inline void StPmdMapUtil::ReverseChannelConverted(Int_t sm, Int_t row, Int_t col, Int_t& channel)
00084 {
00085 channel=m_TempChannelInBoard[sm-1][row-1][col-1];
00086
00087 }
00088
00089 inline void StPmdMapUtil::ReverseChannelOriginal(Int_t sm, Int_t row, Int_t col, Int_t& channel)
00090 {
00091 channel=m_ChannelInBoard[sm-1][row-1][col-1];
00092
00093 }
00094
00095 inline void StPmdMapUtil::ChainNumber(Int_t sm, Int_t row, Int_t col, Int_t& chain)
00096 {
00097 chain=m_Chain[sm-1][row-1][col-1];
00098
00099 }
00100
00101 inline void StPmdMapUtil::ComboSMChain(Int_t icombo,Int_t& ism, Int_t& ichain){
00102 ism = SM_Combo[icombo];
00103 ichain = Chain_Combo[icombo];
00104 }
00105 inline Int_t StPmdMapUtil::GetnBoardSMChain(Int_t ism,Int_t ichain){
00106 return nBoardSMChain[ism-1][ichain-1];
00107 }
00108 inline Int_t StPmdMapUtil::GetnBoardSMChain(Int_t icombo){
00109 Int_t ism=0,ichain=0;
00110 ComboSMChain(icombo,ism,ichain);
00111
00112 return nBoardSMChain[ism-1][ichain-1];
00113 }
00114
00115 inline Int_t StPmdMapUtil::GetnSMChain(){
00116 return nSMChain;
00117 }
00118
00119 inline Int_t StPmdMapUtil::GetComboFirstBoard(Int_t icombo){
00120 return FirstBoard[icombo];
00121 }
00122
00123 #endif
00124