192 auto preClusterROFs = pc.
inputs().
get<gsl::span<ROFRecord>>(
"preclusterrofs");
193 auto preClusters = pc.
inputs().
get<gsl::span<PreCluster>>(
"preclusters");
202 uint32_t iPreCluster = 0;
204 clusterROFs.reserve(preClusterROFs.size());
207 for (
const auto& preClusterROF : preClusterROFs) {
213 uint16_t bCrossing = preClusterROF.getBCData().bc;
214 uint32_t
orbit = preClusterROF.getBCData().orbit;
215 std::chrono::duration<double> preClusterDuration{};
216 auto tStart = std::chrono::high_resolution_clock::now();
221 mClusterFinderOriginal.
reset();
224 mClusterFinderGEM.
reset();
227 size_t startGEMIdx = mClusterFinderGEM.
getClusters().size();
228 size_t startOriginalIdx = mClusterFinderOriginal.
getClusters().size();
229 uint16_t nbrClusters(0);
231 for (
const auto& preCluster : preClusters.subspan(preClusterROF.getFirstIdx(), preClusterROF.getNEntries())) {
232 auto tPreClusterStart = std::chrono::high_resolution_clock::now();
234 startGEMIdx = mClusterFinderGEM.
getClusters().size();
235 startOriginalIdx = mClusterFinderOriginal.
getClusters().size();
240 mClusterFinderGEM.
dumpPreCluster(mOriginalDump,
digits.subspan(preCluster.firstDigit, preCluster.nDigits), bCrossing,
orbit, iPreCluster);
243 mClusterFinderGEM.
dumpPreCluster(mGEMDump,
digits.subspan(preCluster.firstDigit, preCluster.nDigits), bCrossing,
orbit, iPreCluster);
247 mClusterFinderOriginal.
findClusters(
digits.subspan(preCluster.firstDigit, preCluster.nDigits));
248 nbrClusters = mClusterFinderOriginal.
getClusters().size() - startOriginalIdx;
251 mClusterFinderGEM.
findClusters(
digits.subspan(preCluster.firstDigit, preCluster.nDigits), bCrossing,
orbit, iPreCluster);
252 nbrClusters = mClusterFinderGEM.
getClusters().size() - startGEMIdx;
265 auto tPreClusterEnd = std::chrono::high_resolution_clock::now();
266 preClusterDuration = tPreClusterEnd - tPreClusterStart;
267 int16_t nPads = preCluster.nDigits;
268 int16_t DEId =
digits[preCluster.firstDigit].getDetID();
271 preClusterDuration = tPreClusterEnd - tPreClusterStart;
272 double dt = preClusterDuration.count();
274 dt = (dt < 1.0e-06) ? 0.0 : dt * 1000;
280 auto tEnd = std::chrono::high_resolution_clock::now();
281 mTimeClusterFinder += tEnd - tStart;
285 clusterROFs.emplace_back(preClusterROF.getBCData(),
clusters.size(), mClusterFinderGEM.
getClusters().size());
287 clusterROFs.emplace_back(preClusterROF.getBCData(),
clusters.size(), mClusterFinderOriginal.
getClusters().size());
290 writeClusters(
clusters, usedDigits);
296 clusterErrors.emplace_back(error);
298 mErrorMap.
add(errorMap);
300 LOGP(info,
"Found {:4d} clusters from {:4d} preclusters in {:2d} ROFs",
301 clusters.size(), preClusters.size(), preClusterROFs.size());