14 #include <trg/grl/modules/TRGGRLUnpacker/TRGGRLUnpackerModule.h>
18 using namespace TRGGRLUNPACKERSPACE;
23 string TRGGRLUnpackerModule::version()
const
25 return string(
"1.00");
28 TRGGRLUnpackerModule::TRGGRLUnpackerModule()
32 string desc =
"TRGGRLUnpackerModule(" +
version() +
")";
35 B2DEBUG(20,
"TRGGRLUnpacker: Constructor done.");
49 evtinfo.registerInDataStore();
64 for (
int i = 0; i < raw_trgarray.
getEntries(); i++) {
65 if (raw_trgarray[i]->GetTRGType(0) == 7) {
continue;}
67 for (
int j = 0; j < raw_trgarray[i]->GetNumEntries(); j++) {
68 if (raw_trgarray[i]->GetNodeID(j) == 0x15000002) {
71 if (raw_trgarray[i]->GetDetectorNwords(j, 0) > 0) {
82 const unsigned nword_header = 3;
90 int* bitArray[nLeafs + nLeafsExtra];
91 setLeafPointersArray(rawstore, bitArray);
92 for (
int l = 0; l < nLeafs + nLeafsExtra; l++) *bitArray[l] = 0;
94 rawstore->
m_evt = evt;
98 rawstore->
m_coml1 = buf[2] & ((1 << 12) - 1);
99 rawstore->
m_b2ldly = (buf[2] >> 12) & ((1 << 9) - 1);
100 rawstore->
m_maxrvc = (buf[2] >> 21) & ((1 << 11) - 1);
109 for (
int _wd = 0; _wd < nBits / 32; _wd++) {
110 int wd = buf[0 * (nBits / 32) + _wd + nword_header];
111 for (
int bb = 0; bb < 32; bb++) {
112 if ((wd >> (31 - bb)) & 1) {
113 int bitPosition = (nBits - 1) - _wd * 32 - bb;
115 leaf < nLeafs; leaf++) {
116 int bitMaxOfTheLeaf = BitMap[leaf][0];
117 int bitWidOfTheLeaf = BitMap[leaf][1];
118 int bitMinOfTheLeaf = bitMaxOfTheLeaf - bitWidOfTheLeaf;
119 if (bitMinOfTheLeaf <= bitPosition && bitPosition <= bitMaxOfTheLeaf) {
120 *bitArray[leaf] |= (1 << (bitPosition - bitMinOfTheLeaf));
128 evtinfo.assign(rawstore);
129 std::vector<int> index_ECL;
130 std::vector<int> clkindex_ECL;
132 index_ECL.push_back(i); clkindex_ECL.push_back(0);
135 index_ECL.push_back(i + 6); clkindex_ECL.push_back(1);
140 evtinfo->m_E_ECL.clear();
141 evtinfo->m_t_ECL.clear();
142 evtinfo->m_clk_ECL.clear();
143 evtinfo->m_theta_ECL.clear();
144 evtinfo->m_phi_ECL.clear();
145 evtinfo->m_1GeV_ECL.clear();
146 evtinfo->m_2GeV_ECL.clear();
149 int index = index_ECL[i];
150 int clkindex = clkindex_ECL[i];
151 evtinfo->m_clk_ECL.push_back(clkindex);
152 evtinfo->m_E_ECL.push_back(rawstore->
m_E_ECL[index]);
153 evtinfo->m_t_ECL.push_back(rawstore->
m_t_ECL[index]);
154 evtinfo->m_theta_ECL.push_back(rawstore->
m_theta_ECL[index]);
155 evtinfo->m_phi_ECL.push_back(rawstore->
m_phi_ECL[index]);
156 evtinfo->m_E_ECL.push_back(rawstore->
m_E_ECL[index]);
157 evtinfo->m_1GeV_ECL.push_back(rawstore->
m_1GeV_ECL[index]);
158 evtinfo->m_2GeV_ECL.push_back(rawstore->
m_2GeV_ECL[index]);
163 for (
int i = 0; i < 32; i++) {
164 evtinfo->m_phi_i[i] = ((rawstore->
m_phi_i_int[0] & (1 << i)) != 0);
165 evtinfo->m_phi_CDC[i] = ((rawstore->
m_phi_CDC_int[0] & (1 << i)) != 0);
167 for (
int i = 32; i < 36; i++) {
168 evtinfo->m_phi_i[i] = ((rawstore->
m_phi_i_int[1] & (1 << (i - 32))) != 0);
169 evtinfo->m_phi_CDC[i] = ((rawstore->
m_phi_CDC_int[1] & (1 << (i - 32))) != 0);
172 for (
int i = 0; i < 16; i++) {
173 evtinfo->m_slot_CDC[i] = ((rawstore->
m_slot_CDC_int & (1 << i)) != 0);
174 evtinfo->m_slot_TOP[i] = ((rawstore->
m_slot_TOP_int & (1 << i)) != 0);
177 for (
int i = 0; i < 8; i++) {
182 for (
int i = 0; i < 32; i++) {
183 evtinfo->m_map_ST[i] = ((rawstore->
m_map_ST_int[0] & (1 << i)) != 0);
184 evtinfo->m_map_ST2[i] = ((rawstore->
m_map_ST2_int[0] & (1 << i)) != 0);
185 evtinfo->m_map_veto[i] = ((rawstore->
m_map_veto_int[0] & (1 << i)) != 0);
186 evtinfo->m_map_TSF0[i] = ((rawstore->
m_map_TSF0_int[0] & (1 << i)) != 0);
187 evtinfo->m_map_TSF2[i] = ((rawstore->
m_map_TSF2_int[0] & (1 << i)) != 0);
188 evtinfo->m_map_TSF4[i] = ((rawstore->
m_map_TSF4_int[0] & (1 << i)) != 0);
189 evtinfo->m_map_TSF1[i] = ((rawstore->
m_map_TSF1_int[0] & (1 << i)) != 0);
190 evtinfo->m_map_TSF3[i] = ((rawstore->
m_map_TSF3_int[0] & (1 << i)) != 0);
192 for (
int i = 32; i < 64; i++) {
193 evtinfo->m_map_ST[i] = ((rawstore->
m_map_ST_int[1] & (1 << (i - 32))) != 0);
194 evtinfo->m_map_ST2[i] = ((rawstore->
m_map_ST2_int[1] & (1 << (i - 32))) != 0);
195 evtinfo->m_map_veto[i] = ((rawstore->
m_map_veto_int[1] & (1 << (i - 32))) != 0);
196 evtinfo->m_map_TSF0[i] = ((rawstore->
m_map_TSF0_int[1] & (1 << (i - 32))) != 0);
197 evtinfo->m_map_TSF2[i] = ((rawstore->
m_map_TSF2_int[1] & (1 << (i - 32))) != 0);
198 evtinfo->m_map_TSF4[i] = ((rawstore->
m_map_TSF4_int[1] & (1 << (i - 32))) != 0);
199 evtinfo->m_map_TSF1[i] = ((rawstore->
m_map_TSF1_int[1] & (1 << (i - 32))) != 0);
200 evtinfo->m_map_TSF3[i] = ((rawstore->
m_map_TSF3_int[1] & (1 << (i - 32))) != 0);