30 std::vector<std::pair<float, const TrigFTF_GNN_Node*> > phiBuckets[32];
34 for(
const auto& n :
m_vn) {
35 int bIdx = (int)(0.5*nBuckets*(n->phi()/(
float)
M_PI + 1.0f));
36 phiBuckets[bIdx].push_back(std::make_pair(n->phi(), n));
39 for(
auto& b : phiBuckets) {
44 for(
const auto& b : phiBuckets) {
45 for(
const auto& p : b) {
46 m_vn[idx++] = p.second;
55 if(
m_vn.empty())
return;
63 [](
const TrigFTF_GNN_Node* pN) { std::array<float,5> a = {-100.0, 100.0, pN->phi(), pN->r(), pN->z()};
return a;});
65 auto [min_iter, max_iter] = std::minmax_element(m_vn.begin(), m_vn.end(),
67 m_maxRadius = (*max_iter)->r();
68 m_minRadius = (*min_iter)->r();
73 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
81 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
86 for(
unsigned int nIdx=0;nIdx<
m_vn.size();nIdx++) {
116 for(
const auto&
node : coll) {
129 float cluster_width =
node.pixelClusterWidth();
130 if(cluster_width > 0.35)
continue;
152 for(
const auto&
node : coll) {
186 if(!b.m_vn.empty()) {
187 b.m_layerKey =
m_geo.getTrigFTF_GNN_LayerKeyByIndex((*b.m_vn.begin())->m_layer);
193 unsigned int nL =
m_geo.num_layers();
195 for(
unsigned int layerIdx=0;layerIdx<nL;layerIdx++) {
205 if(!isBarrel)
continue;
211 int nBins = pL->
m_bins.size();
213 for(
int b=0;b<nBins;b++) {
217 if(B.empty())
continue;
219 for(
unsigned int nIdx=0;nIdx<B.m_vn.size();nIdx++) {
221 float cluster_width = B.m_vn[nIdx]->pixelClusterWidth();
223 float locPosY = B.m_vn[nIdx]->localPositionY();
225 int lutBinIdx = std::floor(20*cluster_width) - 1;
227 if (lutBinIdx >= lutSize)
continue;
229 const std::array<float, 5> lutBin =
m_mlLUT[lutBinIdx];
231 float dist2border = 10.0 - std::abs(locPosY);
233 float min_tau = -100.0;
234 float max_tau = 100.0;
236 if (dist2border > 0.3f) {
248 B.m_params[nIdx][0] = min_tau;
249 B.m_params[nIdx][1] = max_tau;
257 for(
auto& b :
m_etaBins) b.generatePhiIndexing(dphi);
Scalar phi() const
phi method
std::vector< TrigFTF_GNN_EtaBin > m_etaBins
void generatePhiIndexing(float)
unsigned int numberOfNodes() const
void initializeNodes(bool)
const TrigFTF_GNN_Geometry & m_geo
const std::vector< std::array< float, 5 > > & m_mlLUT
TrigFTF_GNN_DataStorage(const TrigFTF_GNN_Geometry &, const std::vector< std::array< float, 5 > > &)
int loadStripGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &)
~TrigFTF_GNN_DataStorage()
int loadPixelGraphNodes(short, const std::vector< TrigFTF_GNN_Node > &, bool)
std::vector< const TrigFTF_GNN_Node * > m_vn
std::vector< unsigned short > m_vIsConnected
std::vector< unsigned int > m_vFirstEdge
void generatePhiIndexing(float)
std::vector< std::pair< float, unsigned int > > m_vPhiNodes
std::vector< std::array< float, 5 > > m_params
std::vector< unsigned short > m_vNumEdges
const TrigInDetSiLayer & m_layer
int getEtaBin(float, float) const
std::vector< int > m_bins
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.