31 std::vector<std::pair<float, const TrigFTF_GNN_Node*> > phiBuckets[32];
35 for(
const auto&
n :
m_vn) {
36 int bIdx = (
int)(0.5*nBuckets*(
n->phi()/(
float)
M_PI + 1.0f));
37 phiBuckets[bIdx].push_back(std::make_pair(
n->phi(),
n));
40 for(
auto&
b : phiBuckets) {
41 std::sort(
b.begin(),
b.end());
45 for(
const auto&
b : phiBuckets) {
46 for(
const auto&
p :
b) {
56 if(
m_vn.empty())
return;
61 for(
auto&
v :
m_in)
v.reserve(50);
64 [](
const TrigFTF_GNN_Node* pN) { std::array<float,5> a = {-100.0, 100.0, pN->phi(), pN->r(), pN->z()};
return a;});
66 auto [min_iter, max_iter] = std::minmax_element(m_vn.begin(), m_vn.end(),
68 m_maxRadius = (*max_iter)->r();
69 m_minRadius = (*min_iter)->r();
74 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
82 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
87 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
117 for(
const auto&
node : coll) {
130 float cluster_width =
node.pixelClusterWidth();
131 if(cluster_width > 0.35)
continue;
153 for(
const auto&
node : coll) {
193 for(
unsigned int layerIdx=0;layerIdx<nL;layerIdx++) {
215 if(
B.empty())
continue;
217 for(
unsigned int nIdx=0;nIdx<
B.m_vn.size();nIdx++) {
219 float cluster_width =
B.m_vn[nIdx]->pixelClusterWidth();
221 float locPosY =
B.m_vn[nIdx]->localPositionY();
223 int lutBinIdx = std::floor(20*cluster_width) - 1;
225 if (lutBinIdx >= lutSize)
continue;
227 const std::array<float, 5> lutBin =
m_mlLUT.at(lutBinIdx);
229 float dist2border = 10.0 - std::abs(locPosY);
231 float min_tau = -100.0;
232 float max_tau = 100.0;
234 if (dist2border > 0.3
f) {
246 B.m_params[nIdx][0] = min_tau;
247 B.m_params[nIdx][1] = max_tau;
255 for(
auto&
b :
m_etaBins)
b.generatePhiIndexing(dphi);