#include <MucFec.h>
Public Member Functions | |
int | DecodeFecID () |
int | DecodeFecID () |
int | DecodeModule () |
int | DecodeModule () |
int | DecodeSocket () |
int | DecodeSocket () |
string | GetBin (unsigned short record) |
string | GetBin (unsigned int record) |
string | GetBin (unsigned short record) |
string | GetBin (unsigned int record) |
string | GetChainName () |
string | GetChainName () |
unsigned short | GetData () |
unsigned short | GetData () |
string | GetDataBin () |
string | GetDataBin () |
int | GetFiredStripNumber () |
int | GetFiredStripNumber () |
vector< int > * | GetFiredStripVect () |
vector< int > * | GetFiredStripVect () |
int | GetFirstStripID () |
int | GetFirstStripID () |
unsigned short | GetGeoAddress () |
unsigned short | GetGeoAddress () |
string | GetGeoBin () |
string | GetGeoBin () |
int | GetID () |
int | GetID () |
int | GetLayer () |
int | GetLayer () |
int | GetPart () |
int | GetPart () |
unsigned int | GetPowerpcRecord () |
unsigned int | GetPowerpcRecord () |
int | GetSegment () |
int | GetSegment () |
int | GetStripOrder () |
int | GetStripOrder () |
unsigned short | GetVmeAddress () |
unsigned short | GetVmeAddress () |
string | GetVmeBin () |
string | GetVmeBin () |
unsigned int | GetVmeRecord () |
unsigned int | GetVmeRecord () |
MucFec (int id, int stripOrder, int part, int segment, int layer, int firstStripID, unsigned int vmeRecord, string chainName) | |
MucFec (int id) | |
MucFec (int id, int stripOrder, int part, int segment, int layer, int firstStripID, unsigned int vmeRecord, string chainName) | |
MucFec (int id) | |
void | SetChainName (string chainName) |
void | SetChainName (string chainName) |
void | SetData (unsigned short data) |
void | SetData (unsigned short data) |
void | SetFirstStripID (int firstStripID) |
void | SetFirstStripID (int firstStripID) |
void | SetLocation (int part, int segment, int layer) |
void | SetLocation (int part, int segment, int layer) |
void | SetStripOrder (int stripOrder) |
void | SetStripOrder (int stripOrder) |
~MucFec () | |
~MucFec () | |
Private Member Functions | |
void | DecodeData () |
void | DecodeData () |
void | DecodeVmeAddress () |
void | DecodeVmeAddress () |
void | EncodePowerpcRecord () |
void | EncodePowerpcRecord () |
void | Initialize () |
void | Initialize () |
void | SetFiredStripNumber () |
void | SetFiredStripNumber () |
void | SetFiredStripVect () |
void | SetFiredStripVect () |
Private Attributes | |
string | m_ChainName |
unsigned short | m_Data |
int | m_FecID |
int | m_FiredStripNumber |
vector< int > | m_FiredStripVect |
int | m_FirstStripID |
unsigned short | m_GeoAddress |
int | m_ID |
int | m_Layer |
int | m_Module |
int | m_Part |
unsigned int | m_PowerpcRecord |
int | m_Segment |
int | m_Socket |
int | m_StripOrder |
unsigned short | m_VmeAddress |
unsigned int | m_VmeRecord |
|
00019 { 00020 //cout << "MucFec:: Create FEC : " << id << endl; 00021 00022 if( (id < 0) || (id > STRIP_NUM-1) ) 00023 { 00024 cout << "Initialize failure, check id!" << endl; 00025 m_ID = 0; 00026 } 00027 else m_ID = id; 00028 00029 m_Part = 0; 00030 m_Segment = 0; 00031 m_Layer = 0; 00032 m_FirstStripID = 0; 00033 m_StripOrder = DEFAULT_STRIP_ORDER; 00034 m_ChainName = "NoName"; 00035 m_VmeRecord = 0; 00036 00037 MucFec::Initialize(); 00038 }
|
|
00042 { 00043 // cout << "MucFec:: Create FEC : " << endl; 00044 // cout << "ID: " << id << "\tPart: " << part << "\tSegment: " << segment << "\tLayer: " << layer 00045 // << "\tfirstStripID: " << firstStripID << "\tvmeRecord: " << vmeRecord<<endl; 00046 00047 // Check parameters 00048 if( (id < 0) || (id > STRIP_NUM-1) ) 00049 { 00050 m_ID = 0; 00051 cout << "MucFec::Check id:\t" << id << "!" << endl; 00052 }else 00053 if( (stripOrder != 1) && (stripOrder != -1) ) 00054 { 00055 m_StripOrder = 0; 00056 cout << "MucFec::Check stripOrder:\t" << stripOrder << "!" << endl; 00057 }else 00058 if( (part < 0) || ( part > PART_MAX-1) ) 00059 { 00060 m_Part = 0; 00061 cout << "MucFec::Check part:\t" << part << "!" << endl; 00062 }else 00063 if( (segment < 0) || ( segment > ((part==BRID)?(B_SEG_NUM-1):(E_SEG_NUM-1)) ) ) 00064 { 00065 m_Segment = 0; 00066 cout << "MucFec::Check segment:\t" << segment << "!" << endl; 00067 }else 00068 if( (layer <0) || ( layer > ((part==BRID)?(B_LAY_NUM-1):(E_LAY_NUM-1)) ) ) 00069 { 00070 m_Layer = 0; 00071 cout << "MucFec::Check layer:\t" << layer << "!" << endl; 00072 }else 00073 if( sizeof(vmeRecord) < 4 ) 00074 { 00075 m_VmeRecord = 0; 00076 cout << "MucFec::Check record:\t" << vmeRecord << "!" << endl; 00077 }else 00078 { 00079 m_ID = id; 00080 m_StripOrder = stripOrder; 00081 m_Part = part; 00082 m_Segment = segment; 00083 m_Layer = layer; 00084 m_FirstStripID = firstStripID; 00085 m_ChainName = chainName; 00086 m_VmeRecord = vmeRecord; 00087 } 00088 00089 MucFec::Initialize(); 00090 }
|
|
00045 { ; }
|
|
|
|
|
|
00045 { ; }
|
|
|
|
00103 { 00104 m_Data = (unsigned short)m_VmeRecord; 00105 }
|
|
00065 { return m_FecID; }
|
|
00065 { return m_FecID; }
|
|
00063 { return m_Module; }
|
|
00063 { return m_Module; }
|
|
00064 { return m_Socket; }
|
|
00064 { return m_Socket; }
|
|
|
|
00108 { 00109 m_VmeAddress = (unsigned short)(m_VmeRecord >> LENGTH); // high 16 bits, 10 bits used 00110 m_Module = (m_VmeAddress >> MODULE_BIT) & 0xF; // 4 bits 00111 m_Socket = (m_VmeAddress >> SOCKET_BIT) & 0x3; // 2 bits 00112 m_FecID = m_VmeAddress & 0xF; // 4 bits 00113 }
|
|
|
|
00150 { 00151 unsigned int address = ( (m_Part<<PART_BIT) | (m_Segment<<SEG_BIT) | (m_Layer<<LAY_BIT) | m_FirstStripID ); 00152 m_GeoAddress = (unsigned short)address; 00153 m_PowerpcRecord = ( address << LENGTH ) | m_Data; 00154 }
|
|
|
|
|
|
00213 { 00214 const int SIZE = sizeof( unsigned short ) * 8; 00215 00216 string Bin; 00217 unsigned short temp = 0; 00218 for(int i=0; i<SIZE; i++) 00219 { 00220 temp = record >> SIZE-i-1; 00221 Bin += ( temp & 1 ) ? "1" : "0"; 00222 } 00223 00224 return Bin; 00225 }
|
|
00198 { 00199 const int SIZE = sizeof( unsigned int ) * 8; 00200 00201 string Bin; 00202 unsigned int temp = 0; 00203 for(int i=0; i<SIZE; i++) 00204 { 00205 temp = record >> SIZE-i-1; 00206 Bin += ( temp & 1 ) ? "1" : "0"; 00207 } 00208 00209 return Bin; 00210 }
|
|
00059 { return m_ChainName; }
|
|
00059 { return m_ChainName; }
|
|
00052 { return m_Data; }
|
|
00052 { return m_Data; }
|
|
|
|
00238 { 00239 return MucFec::GetBin( m_Data ); 00240 }
|
|
|
|
00191 { return m_FiredStripNumber; }
|
|
|
|
00195 { return &m_FiredStripVect; }
|
|
00058 { return m_FirstStripID; }
|
|
00058 { return m_FirstStripID; }
|
|
00057 { return m_GeoAddress; }
|
|
00057 { return m_GeoAddress; }
|
|
|
|
00233 { 00234 return MucFec::GetBin( m_GeoAddress ); 00235 }
|
|
00048 { return m_ID; }
|
|
00048 { return m_ID; }
|
|
00056 { return m_Layer; }
|
|
00056 { return m_Layer; }
|
|
00054 { return m_Part; }
|
|
00054 { return m_Part; }
|
|
|
|
00193 { return m_PowerpcRecord; }
|
|
00055 { return m_Segment; }
|
|
00055 { return m_Segment; }
|
|
00049 { return m_StripOrder; }
|
|
00049 { return m_StripOrder; }
|
|
00051 { return m_VmeAddress; }
|
|
00051 { return m_VmeAddress; }
|
|
|
|
00228 { 00229 return MucFec::GetBin( m_VmeAddress ); 00230 }
|
|
00050 { return m_VmeRecord; }
|
|
00050 { return m_VmeRecord; }
|
|
|
|
00093 { 00094 MucFec::DecodeData(); 00095 MucFec::DecodeVmeAddress(); 00096 MucFec::SetFiredStripNumber(); 00097 MucFec::SetFiredStripVect(); 00098 MucFec::EncodePowerpcRecord(); 00099 }
|
|
|
|
|
|
|
|
00180 { 00181 m_Data = data; 00182 m_VmeRecord = (m_VmeRecord | m_Data); 00183 MucFec :: EncodePowerpcRecord(); 00184 MucFec :: SetFiredStripNumber(); 00185 MucFec :: SetFiredStripVect(); 00186 }
|
|
|
|
00116 { 00117 m_FiredStripNumber = 0; 00118 for(int i=0; i<STRIP_NUM; i++) 00119 { 00120 if( (m_Data>>i) & 1 ) 00121 m_FiredStripNumber++; 00122 } 00123 }
|
|
|
|
00126 { 00127 m_FiredStripVect.clear(); 00128 int tempID[STRIP_NUM]; 00129 int tempFired=0; 00130 00131 for(int i=0; i<STRIP_NUM; i++) 00132 { 00133 if( (m_Data>>i) & 1 ) 00134 { 00135 tempID[tempFired] = i; 00136 tempFired++; 00137 } 00138 } 00139 00140 int stripID = 0; 00141 for(int i=0; i<tempFired; i++) 00142 { 00143 stripID = ((1 - m_StripOrder)/2) * (STRIP_NUM - 1) + (m_StripOrder * tempID[i]); 00144 stripID += m_FirstStripID; 00145 m_FiredStripVect.push_back( stripID ); 00146 } 00147 }
|
|
|
|
00173 { 00174 m_FirstStripID = firstStripID; 00175 MucFec :: EncodePowerpcRecord(); 00176 MucFec :: SetFiredStripVect(); 00177 }
|
|
|
|
00164 { 00165 m_Part = part; 00166 m_Segment = segment; 00167 m_Layer = layer; 00168 00169 MucFec::Initialize(); 00170 }
|
|
|
|
00157 { 00158 m_StripOrder = stripOrder; 00159 00160 MucFec::SetFiredStripVect(); 00161 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|