130 std::set<uint32_t> dupCheck;
133 for (; rob != robEnd; ++rob) {
137 msg() <<
"Treating ROB fragment " << robCount <<
endmsg;
142 uint32_t robid = (*rob)->source_id();
143 if ((*rob)->nstatus() > 0) {
145 (*rob)->status(robData);
148 if (
debug)
msg() <<
"ROB status error - skipping fragment" <<
endmsg;
155 if (!dupCheck.insert(robid).second) {
163 const uint32_t version = (*rob)->rod_version();
164 const uint32_t sourceId = (*rob)->rod_source_id();
165 const uint32_t
run = (*rob)->rod_run_no();
166 const uint32_t lvl1Id = (*rob)->rod_lvl1_id();
167 const uint32_t
bcId = (*rob)->rod_bc_id();
168 const uint32_t trigType = (*rob)->rod_lvl1_trigger_type();
169 const uint32_t detType = (*rob)->rod_detev_type();
170 const uint32_t nData = (*rob)->rod_ndata();
174 std::vector<uint32_t> statusWords;
175 unsigned int nstatus = (*rob)->rod_nstatus();
179 (*rob)->rod_status(status);
180 statusEnd = status + nstatus;
181 for (; status != statusEnd; ++status) statusWords.push_back(*status);
190 bcId, trigType, detType, statusWords, nData));
193 <<
"ROD Header version/sourceId/run/lvl1Id/bcId/trigType/detType/nData: "
194 << version <<
"/" << sourceId <<
"/" <<
run <<
"/" << lvl1Id <<
"/"
195 <<
bcId <<
"/" << trigType <<
"/" << detType <<
"/" << nData
196 <<
endmsg <<
"ROD Status Words:";
197 std::vector<uint32_t>::const_iterator pos = statusWords.begin();
198 std::vector<uint32_t>::const_iterator pose = statusWords.end();
199 for (; pos != pose; ++pos)
msg() <<
" " << *pos;
204 return StatusCode::SUCCESS;
210 const std::string& sgKey)
const
213 static const std::vector<int> slinksPP { 0, 1, 2, 3 };
214 static const std::vector<uint32_t> sourceIDsPP =
215 makeRobIds(8, 0, slinksPP, 0, eformat::TDAQ_CALO_PREPROC,
221 static const std::vector<int> slinksCP { 0, 2 };
222 static const std::vector<uint32_t> sourceIDsCP =
223 makeRobIds(4, 8, slinksCP, 0, eformat::TDAQ_CALO_CLUSTER_PROC_DAQ,
229 static const std::vector<int> slinksCPRoI { 0 };
230 static const std::vector<uint32_t> sourceIDsCPRoI =
231 makeRobIds(4, 8, slinksCPRoI, 1, eformat::TDAQ_CALO_CLUSTER_PROC_ROI,
233 return sourceIDsCPRoI;
237 static const std::vector<int> slinksJEP { 0, 1, 2, 3 };
238 static const std::vector<uint32_t> sourceIDsJEP =
239 makeRobIds(2, 12, slinksJEP, 0, eformat::TDAQ_CALO_JET_PROC_DAQ,
245 static const std::vector<int> slinksJEPRoI { 0 };
246 static const std::vector<uint32_t> sourceIDsJEPRoI =
247 makeRobIds(2, 12, slinksJEPRoI, 1, eformat::TDAQ_CALO_JET_PROC_ROI,
249 return sourceIDsJEPRoI;
253 static const std::vector<int> slinksCPRoIB { 2 };
254 static const std::vector<uint32_t> sourceIDsCPRoIB =
255 makeRobIds(4, 8, slinksCPRoIB, 1, eformat::TDAQ_CALO_CLUSTER_PROC_ROI,
257 return sourceIDsCPRoIB;
261 static const std::vector<int> slinksJEPRoIB { 2 };
262 static const std::vector<uint32_t> sourceIDsJEPRoIB =
263 makeRobIds(2, 12, slinksJEPRoIB, 1, eformat::TDAQ_CALO_JET_PROC_ROI,
265 return sourceIDsJEPRoIB;
294 const int crateOffset,
295 const std::vector<int>& slinks,
297 const eformat::SubDetector subdet,
298 const std::vector<uint32_t>& prop)
const
300 std::vector<uint32_t> robs;
306 for (
int crate = 0; crate < numCrates; ++crate) {
307 const int numSlinks = slinks.size();
308 for (
int i = 0; i < numSlinks; ++i) {
309 const uint32_t rodId =
m_srcIdMap.getRodID(crate + crateOffset,
310 slinks[i], daqOrRoi, subdet);
311 const uint32_t robId =
m_srcIdMap.getRobID(rodId);
312 robs.push_back (robId);