34 std::vector<int>
indices(inputDigits.size());
38 return inputDigits[a].getPadID() < inputDigits[b].getPadID();
41 auto sortedDigits = [&inputDigits, &
indices](
int i) {
45 auto sortedLabels = [&inputLabels, &
indices](
int i) {
51 std::vector<o2::MCCompLabel> labels;
56 while (
j <
indices.size() && (sortedDigits(
i).getPadID() == sortedDigits(
j).getPadID())) {
60 for (
int k =
i; k <
j; k++) {
61 adc += sortedDigits(k).getADC();
63 digits.emplace_back(sortedDigits(
i).getDetID(), sortedDigits(
i).getPadID(),
adc, sortedDigits(
i).getTime());
64 labels.emplace_back(sortedLabels(
i).getTrackID(), sortedLabels(
i).getEventID(), sortedLabels(
i).getSourceID(),
false);
72 std::vector<int>
indices(inputDigits.size());
76 return inputDigits[a].getPadID() < inputDigits[b].getPadID();
79 auto sortedDigits = [&inputDigits, &
indices](
int i) {
83 auto sortedLabels = [&inputLabels, &
indices](
int i) {
88 digits.reserve(inputDigits.size());
90 std::vector<o2::MCCompLabel> labels;
91 labels.reserve(inputLabels.size());
96 while (
j <
indices.size() && (sortedDigits(
i).getPadID() == sortedDigits(
j).getPadID())) {
100 for (
int k =
i; k <
j; k++) {
101 adc += sortedDigits(k).getADC();
103 digits.emplace_back(sortedDigits(
i).getDetID(), sortedDigits(
i).getPadID(),
adc, sortedDigits(
i).getTime());
104 labels.emplace_back(sortedLabels(
i).getTrackID(), sortedLabels(
i).getEventID(), sortedLabels(
i).getSourceID(),
false);
108 labels.resize(labels.size());
112std::vector<Digit>
mergeDigits_map(
const std::vector<Digit>& inputDigits,
const std::vector<o2::MCCompLabel>& inputLabels)
116 std::map<int, int> padidmap;
117 std::set<int> forRemoval;
118 std::vector<Digit>
digits{inputDigits};
119 std::vector<o2::MCCompLabel> labels{inputLabels};
121 for (
auto& digit :
digits) {
123 int padid = digit.getPadID();
124 count = padidmap.count(padid);
126 std::pair<std::map<int, int>::iterator, std::map<int, int>::iterator> ret;
128 ret = padidmap.equal_range(padid);
129 index = ret.first->second;
131 forRemoval.emplace(iter);
133 padidmap.emplace(padid, iter);
139 for (
auto& rmindex : forRemoval) {
141 labels.erase(labels.begin() + rmindex - rmcounts);