24 #include <boost/dynamic_bitset.hpp>
27 static inline std::string instance_name(std::string
const &
s);
35 m_name(instance_name(
name))
37 declareInterface<IFPGATrackSimRoadFilterTool>(
this);
46 return StatusCode::SUCCESS;
58 postfilter_roads.clear();
61 for (
auto & road : prefilter_roads) {
66 for (
unsigned lyr = 0; lyr <
m_nLayers; lyr++) {
67 if (hit_layers & (1<<lyr)) layer_cnt++;
83 return StatusCode::SUCCESS;
90 float qPt = origr->
getY();
98 for (
unsigned lyr = 0; lyr <
m_nLayers; lyr++) {
99 std::vector<const FPGATrackSimHit*> road_hits;
100 for (
auto hit : origr->
getHits(lyr)) {
101 float phi_expected = -1.0*asin(fpgatracksim::A * hit->getR() * qPt) +
phi;
104 road_hits.push_back(hit);
105 hitLayers |= 1 << hit->getLayer();
108 if (road_hits.size() == 0) {
113 road_hits.push_back(wcHit);
115 ATH_MSG_DEBUG(
"PhiRoad Hits " << lyr <<
" " << road_hits.size() <<
" " << origr->
getHits(lyr).size());
116 r.setHits(lyr,road_hits);
119 r.setHitLayers(hitLayers);
123 static inline std::string instance_name(std::string
const &
s)
125 size_t pos =
s.find_last_of(
".");
126 if (
pos != std::string::npos)
127 return s.substr(
pos + 1);