Make the pixel cluster container.
295 ATH_CHECK(pixelClustersHandle.record(std::make_unique<xAOD::PixelClusterContainer>(),std::make_unique<xAOD::PixelClusterAuxContainer>()));
297 ATH_CHECK(pixelClustersHandle.isValid());
299 for (
unsigned int i = 0;
i <
metadata->numOfPixelClusters;
i++)
302 auto pixelCl = pixelClustersHandle->push_back(std::make_unique<xAOD::PixelCluster>());
309 std::vector<Identifier> RDOs;
326 Eigen::Matrix<float, 2, 1> localPosition;
327 Eigen::Matrix<float, 2, 2> localCovariance;
328 localCovariance.setZero();
362 Eigen::Matrix<float, 3, 1> globalPosition(globalX, globalY,
globalZ);
364 pixelCl->setMeasurement<2>(idHash, localPosition,localCovariance);
365 pixelCl->setIdentifier(
id);
366 pixelCl->setRDOlist(RDOs);
367 pixelCl->globalPosition() = globalPosition;
368 pixelCl->setTotalToT(totalToT);
369 pixelCl->setChannelsInPhiEta(channelsInPhi, channelsInEta);
370 pixelCl->setWidthInEta(widthInEta);
372 return StatusCode::SUCCESS;
380 auto pixelCl = std::make_unique<xAOD::PixelClusterContainer>();
381 auto pixelClAux = std::make_unique<xAOD::PixelClusterAuxContainer>();
382 pixelCl->setStore(pixelClAux.get());
386 const size_t nClusters =
metadata->numOfPixelClusters;
387 pixelClAux->resize(nClusters);
388 pixelCl->reserve(nClusters);
394 for (
size_t i = 0;
i < nClusters; ++
i) {
395 pixelCl->push_back(std::make_unique<xAOD::PixelCluster>());
407 auto rdoSpan = rdoListAcc.getDataSpan(*pixelCl);
409 const auto*
base = pixelClusters;
427 const auto* channelsPhiPtr =
base + 13 *
N +
offset;
428 const auto* channelsEtaPtr =
base + 14 *
N +
offset;
433 std::vector<long unsigned int> identifierBuffer(nClusters);
434 std::vector<unsigned int> idHashBuffer(nClusters);
435 std::vector<std::array<float, 3>> gpBuffer(nClusters);
436 std::vector<std::array<float, 2>> localPositionBuffer(nClusters);
437 std::vector<std::array<float, 4>> localCovarianceBuffer(nClusters);
438 std::vector<int> totalToTBuffer(nClusters);
439 std::vector<float> widthInEtaBuffer(nClusters);
440 std::vector<int> channelsInPhiBuffer(nClusters);
441 std::vector<int> channelsInEtaBuffer(nClusters);
443 for (
unsigned int i = 0;
i <
metadata->numOfPixelClusters; ++
i) {
446 idHashBuffer[
i] =
static_cast<unsigned int>(idHashPtr[
i]);
447 identifierBuffer[
i] =
static_cast<unsigned long>(identifierPtr[
i]);
450 std::vector<unsigned long long>& rdoList = rdoSpan[
i];
451 for (
int r = 0;
r < 4; ++
r) {
452 if (!rdoPtrs[
r][
i])
continue;
453 unsigned long long rdo =
static_cast<unsigned long long>(rdoPtrs[
r][
i]);
454 rdoList.push_back(rdo);
457 localPositionBuffer[
i][0] =
static_cast<float>(std::bit_cast<double>(localXPtr[
i]));
458 localCovarianceBuffer[
i][0] =
static_cast<float>(std::bit_cast<double>(covXXPtr[
i]));
460 localPositionBuffer[
i][1] =
static_cast<float>(std::bit_cast<double>(localYPtr[
i]));
461 localCovarianceBuffer[
i][3] =
static_cast<float>(std::bit_cast<double>(covYYPtr[
i]));
463 gpBuffer[
i][0] =
static_cast<float>(std::bit_cast<double>(gpXPtr[
i]));
464 gpBuffer[
i][1] =
static_cast<float>(std::bit_cast<double>(gpYPtr[
i]));
465 gpBuffer[
i][2] =
static_cast<float>(std::bit_cast<double>(gpZPtr[
i]));
468 channelsInPhiBuffer[
i] =
static_cast<int>(channelsPhiPtr[
i]);
469 channelsInEtaBuffer[
i] =
static_cast<int>(channelsEtaPtr[
i]);
470 widthInEtaBuffer[
i] =
static_cast<float>(std::bit_cast<double>(widthEtaPtr[
i]));
471 totalToTBuffer[
i] =
static_cast<int>(totalToTPtr[
i]);
493 auto idSpan = idAcc.getDataSpan(*pixelCl);
494 auto idHashSpan = idHashAcc.getDataSpan(*pixelCl);
495 auto gpSpan = globalPosAcc.getDataSpan(*pixelCl);
496 auto locPosSpan = localPosAcc.getDataSpan(*pixelCl);
497 auto locCovSpan = localCovAcc.getDataSpan(*pixelCl);
498 auto totalToTSpan = totalToTAcc.getDataSpan(*pixelCl);
499 auto channelsInPhiSpan = channelsInPhiAcc.getDataSpan(*pixelCl);
500 auto channelsInEtaSpan = channelsInEtaAcc.getDataSpan(*pixelCl);
501 auto widthInEtaSpan = widthInEtaAcc.getDataSpan(*pixelCl);
514 ATH_CHECK(pixelClustersHandle.record(std::move(pixelCl), std::move(pixelClAux)));
517 return StatusCode::SUCCESS;