129 std::set<uint32_t> dupCheck;
132 for (; rob != robEnd; ++rob) {
136 msg() <<
"Treating ROB fragment " << robCount <<
endmsg;
141 uint32_t robid = (*rob)->source_id();
142 if ((*rob)->nstatus() > 0) {
144 (*rob)->status(robData);
147 if (
debug)
msg() <<
"ROB status error - skipping fragment" <<
endmsg;
154 if (!dupCheck.insert(robid).second) {
162 const uint32_t version = (*rob)->rod_version();
163 const uint32_t sourceId = (*rob)->rod_source_id();
164 const uint32_t
run = (*rob)->rod_run_no();
165 const uint32_t lvl1Id = (*rob)->rod_lvl1_id();
166 const uint32_t
bcId = (*rob)->rod_bc_id();
167 const uint32_t trigType = (*rob)->rod_lvl1_trigger_type();
168 const uint32_t detType = (*rob)->rod_detev_type();
169 const uint32_t nData = (*rob)->rod_ndata();
173 std::vector<uint32_t> statusWords;
174 unsigned int nstatus = (*rob)->rod_nstatus();
178 (*rob)->rod_status(status);
179 statusEnd = status + nstatus;
180 for (; status != statusEnd; ++status) statusWords.push_back(*status);
189 bcId, trigType, detType, statusWords, nData));
192 <<
"ROD Header version/sourceId/run/lvl1Id/bcId/trigType/detType/nData: "
193 << version <<
"/" << sourceId <<
"/" <<
run <<
"/" << lvl1Id <<
"/"
194 <<
bcId <<
"/" << trigType <<
"/" << detType <<
"/" << nData
195 <<
endmsg <<
"ROD Status Words:";
196 std::vector<uint32_t>::const_iterator pos = statusWords.begin();
197 std::vector<uint32_t>::const_iterator pose = statusWords.end();
198 for (; pos != pose; ++pos)
msg() <<
" " << *pos;
203 return StatusCode::SUCCESS;
209 const std::string& sgKey)
const
212 static const std::vector<int> slinksPP { 0, 1, 2, 3 };
213 static const std::vector<uint32_t> sourceIDsPP =
214 makeRobIds(8, 0, slinksPP, 0, eformat::TDAQ_CALO_PREPROC,
220 static const std::vector<int> slinksCP { 0, 2 };
221 static const std::vector<uint32_t> sourceIDsCP =
222 makeRobIds(4, 8, slinksCP, 0, eformat::TDAQ_CALO_CLUSTER_PROC_DAQ,
228 static const std::vector<int> slinksCPRoI { 0 };
229 static const std::vector<uint32_t> sourceIDsCPRoI =
230 makeRobIds(4, 8, slinksCPRoI, 1, eformat::TDAQ_CALO_CLUSTER_PROC_ROI,
232 return sourceIDsCPRoI;
236 static const std::vector<int> slinksJEP { 0, 1, 2, 3 };
237 static const std::vector<uint32_t> sourceIDsJEP =
238 makeRobIds(2, 12, slinksJEP, 0, eformat::TDAQ_CALO_JET_PROC_DAQ,
244 static const std::vector<int> slinksJEPRoI { 0 };
245 static const std::vector<uint32_t> sourceIDsJEPRoI =
246 makeRobIds(2, 12, slinksJEPRoI, 1, eformat::TDAQ_CALO_JET_PROC_ROI,
248 return sourceIDsJEPRoI;
252 static const std::vector<int> slinksCPRoIB { 2 };
253 static const std::vector<uint32_t> sourceIDsCPRoIB =
254 makeRobIds(4, 8, slinksCPRoIB, 1, eformat::TDAQ_CALO_CLUSTER_PROC_ROI,
256 return sourceIDsCPRoIB;
260 static const std::vector<int> slinksJEPRoIB { 2 };
261 static const std::vector<uint32_t> sourceIDsJEPRoIB =
262 makeRobIds(2, 12, slinksJEPRoIB, 1, eformat::TDAQ_CALO_JET_PROC_ROI,
264 return sourceIDsJEPRoIB;
293 const int crateOffset,
294 const std::vector<int>& slinks,
296 const eformat::SubDetector subdet,
297 const std::vector<uint32_t>& prop)
const
299 std::vector<uint32_t> robs;
305 for (
int crate = 0; crate < numCrates; ++crate) {
306 const int numSlinks = slinks.size();
307 for (
int i = 0; i < numSlinks; ++i) {
308 const uint32_t rodId =
m_srcIdMap.getRodID(crate + crateOffset,
309 slinks[i], daqOrRoi, subdet);
310 const uint32_t robId =
m_srcIdMap.getRobID(rodId);
311 robs.push_back (robId);