47 const auto detName = Origin.as<std::string>();
49 auto compClusterSizes = std::make_shared<std::vector<size_t>>(nLayers, 0);
51 auto const* dh = DataRefUtils::getHeader<o2::header::DataHeader*>(
ref);
52 (*compClusterSizes)[dh->subSpecification] = compClusters.size();
55 auto const* dh = DataRefUtils::getHeader<o2::header::DataHeader*>(
ref);
56 const auto i = dh->subSpecification;
57 LOG(info) << detName <<
"ClusterWriter on layer " <<
i
58 <<
" pulled " << (*compClusterSizes)[
i] <<
" clusters, in " << rofs.size() <<
" RO frames";
60 auto getIndex = [](
DataRef const&
ref) ->
size_t {
61 auto const* dh = DataRefUtils::getHeader<o2::header::DataHeader*>(
ref);
62 return static_cast<size_t>(dh->subSpecification);
64 auto getName = [](std::string base,
size_t index) -> std::string {
67 auto detNameLC = detName;
68 std::transform(detNameLC.begin(), detNameLC.end(), detNameLC.begin(), [](
unsigned char c) { return std::tolower(c); });
70 std::vector<InputSpec> vecInpSpecClus, vecInpSpecPatt, vecInpSpecROF, vecInpSpecLbl;
71 vecInpSpecClus.reserve(nLayers);
72 vecInpSpecPatt.reserve(nLayers);
73 vecInpSpecROF.reserve(nLayers);
74 vecInpSpecLbl.reserve(nLayers);
75 for (
int iLayer = 0; iLayer < nLayers; iLayer++) {
76 vecInpSpecClus.emplace_back(
getName(
"compclus", iLayer), Origin,
"COMPCLUSTERS", iLayer);
77 vecInpSpecPatt.emplace_back(
getName(
"patterns", iLayer), Origin,
"PATTERNS", iLayer);
78 vecInpSpecROF.emplace_back(
getName(
"ROframes", iLayer), Origin,
"CLUSTERSROF", iLayer);
79 vecInpSpecLbl.emplace_back(
getName(
"labels", iLayer), Origin,
"CLUSTERSMCTR", iLayer);
86 "TRKClusterComp",
"compact-cluster-branch",
88 compClustersSizeGetter,
92 "TRKClusterPatt",
"cluster-pattern-branch",
97 "TRKClustersROF",
"cluster-rof-branch",
103 "TRKClusterMCTruth",
"cluster-label-branch",
104 (useMC ? nLayers : 0),