00001 #include <iostream> 00002 #include "TrigEvent/TrigSAF.h" 00003 00004 TrigSAF::TrigSAF(char* name) 00005 { 00006 m_name = name; 00007 } 00008 00009 void TrigSAF::initialize() 00010 { 00011 for(int i = 0; i < 48; i++) 00012 { 00013 m_dataGroup1_One[i] = 0; 00014 m_dataGroup1_Zero[i] = 0; 00015 m_dataGroup2_One[i] = 0; 00016 m_dataGroup2_Zero[i] = 0; 00017 m_dataGroup3[i] = 0; 00018 m_dataGroup4[i] = 0; 00019 } 00020 } 00021 00022 void TrigSAF::setSAFTrigData( uint32_t boardId, uint32_t window, uint32_t datasize, const uint32_t* data) { 00023 00024 if((boardId != 0xd2)&&(boardId != 0xd4)&&(boardId != 0xd6)) std::cerr << "ERROR: You set the wrong board data to TrigSAF!!!" << std::endl; 00025 00026 uint32_t jBegin = 0, jEnd = 0; 00027 if(boardId == 0xd2) { jBegin = 32; jEnd = jBegin+16; } //SAF1 00028 if(boardId == 0xd4) { jBegin = 16; jEnd = jBegin+16; } //SAF2 00029 if(boardId == 0xd6) { jBegin = 0; jEnd = jBegin+16; } //SAF3 00030 00031 for(uint32_t i = 0; i < datasize; i++) { 00032 uint32_t dataId = ((data[i] >> 16) & 0xFF); 00033 for(uint32_t j = jBegin, mask = 1; j < jEnd; j++, mask <<= 1) { 00034 if(dataId == 1) { 00035 if((data[i] & mask) != 0) { 00036 m_dataGroup1_One[j] += 1; 00037 } 00038 if(m_dataGroup1_One[j] == 0) m_dataGroup1_Zero[j] += 1; 00039 } 00040 if(dataId == 2) { 00041 if((data[i] & mask) != 0) { 00042 m_dataGroup2_One[j] += 1; 00043 } 00044 if(m_dataGroup2_One[j] == 0) m_dataGroup2_Zero[j] += 1; 00045 } 00046 if(dataId == 3) { 00047 if((data[i] & mask) != 0) { 00048 m_dataGroup3[j] = 1; 00049 } 00050 } 00051 if(dataId == 4) { 00052 if((data[i] & mask) != 0) { 00053 m_dataGroup4[j] = 1; 00054 } 00055 } 00056 } 00057 } 00058 }