29 std::vector<size_t> out;
31 for (
const auto& l :
m_hits_trans) out.push_back(l.size());
39 std::vector<unsigned int> skipindices;
43 for (
size_t i = 1; i < l; ++i) {
48 skipindices.push_back(i);
55 for (
size_t i = 0; i < l; ++i) {
61 size_t skipsize = skipindices.size();
62 for (
size_t k = 0; k < skipsize; ++k)
63 if (i == skipindices[k])
skip =
true;
69 if (n > 0) combos *= n;
85 std::map<FPGATrackSimMultiTruth::Barcode, layer_bitmask_t> layer_map;
88 for (
auto const &
h : hits)
89 for (
auto const&
x :
h->getTruth())
90 layer_map[
x.first] |= (1 <<
h->getLayer());
93 for (
auto const&
x : layer_map)
99 n += (i < nPixel) ? 2 : 1;
100 if (
x.second & (1 << i))
101 w += (i < nPixel) ? 2 : 1;
104 throw std::range_error(
"divide by zero in FPGATrackSimRoad::getTruth");
106 mt.
add(
x.first,
static_cast<float>(w) / n);
114 std::unordered_set<std::shared_ptr<const FPGATrackSimHit>> hits;
116 for (
auto const& hit : layerHits) {
125 for (
unsigned ilayer = 0; ilayer <
m_hits.size(); ilayer++) {
127 for (
unsigned ihit = 0; ihit <
m_hits[ilayer].size(); ihit++) {
128 m_hits_trans[ilayer][ihit] = std::make_shared<const FPGATrackSimHit>(
m_hits[ilayer][ihit]);
137 m_hits[layer].push_back(*hit);
143 for (
unsigned i = 0;i < hits.size();++i) {
152 <<
": PID " << road.
m_pid
154 <<
" hitLayers " << std::showbase << std::hex << road.
m_hit_layers
Defines a class for roads.
static const Attributes_t empty
void add(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight &weight)
layer_bitmask_t m_wildcard_layers
FPGATrackSimMultiTruth getTruth() const
size_t getNHitCombos() const
void repopulateTransHits()
std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit > > > m_hits_trans
layer_bitmask_t m_hit_layers
std::unordered_set< std::shared_ptr< const FPGATrackSimHit > > getHits_flat() const
void setHits(std::vector< std::vector< std::shared_ptr< const FPGATrackSimHit > > > &&hits)
FPGATrackSimRoad()=default
std::vector< std::vector< FPGATrackSimHit > > m_hits
void setNLayers(unsigned layers)
std::vector< size_t > getNHits_layer() const
ostream & operator<<(ostream &s, const SG::VarHandleKey &m)