21 for (
const auto&
l : m_hits)
n +=
l.size();
27 std::vector<size_t>
out;
28 for (
const auto&
l : m_hits)
out.push_back(
l.size());
35 size_t l = m_hits.size();
36 std::vector<unsigned int> skipindices;
40 for (
size_t i = 1;
i <
l; ++
i) {
41 if (m_hits[
i - 1].
size() > 0 && m_hits[
i].
size() > 0) {
43 (m_hits[
i - 1][0]->getPhysLayer() % 2 == 0) &&
44 (m_hits[
i][0]->getPhysLayer() - m_hits[
i - 1][0]->getPhysLayer() == 1)) {
45 skipindices.push_back(
i);
52 for (
size_t i = 0;
i <
l; ++
i) {
54 for (
size_t j = 0; j < m_hits[
i].size(); ++j) {
58 size_t skipsize = skipindices.size();
59 for (
size_t k = 0;
k < skipsize; ++
k)
60 if (
i == skipindices[
k])
skip =
true;
66 if (
n > 0) combos *=
n;
78 for (nPixel = 0; nPixel < m_hits.size(); nPixel++)
79 if (!m_hits[nPixel].
empty() && m_hits[nPixel].front()->
isStrip())
82 std::map<FPGATrackSimMultiTruth::Barcode, layer_bitmask_t> layer_map;
84 for (
auto const&
hits : m_hits)
86 for (
auto const&
x :
h->getTruth())
87 layer_map[
x.first] |= (1 <<
h->getLayer());
90 for (
auto const&
x : layer_map)
93 for (
unsigned i = 0;
i < m_hits.size();
i++)
96 n += (
i < nPixel) ? 2 : 1;
97 if (
x.second & (1 <<
i))
98 w += (
i < nPixel) ? 2 : 1;
101 throw "divide by zero in FPGATrackSimRoad::getTruth";
103 mt.
add(
x.first,
static_cast<float>(
w) /
n);
112 <<
": PID " << road.
m_pid
114 <<
" hitLayers " << std::showbase << std::hex << road.
m_hit_layers