Build nodes + flat features (N,6) and number of SPs per kept bucket.
In cas that the data vectors have been used by an earlier ML algorithm ensure that the vectors remain clean
48 featuresLeaves.clear();
50 nodes.reserve(buckets.
size());
51 featuresLeaves.reserve(6
u * buckets.
size());
52 spInBucket.reserve(buckets.
size());
63 if (bucket->msSector()) {
64 const double midY = 0.5 * (bucket->coveredMin() + bucket->coveredMax());
65 const Amg::Vector3D glob = bucket->msSector()->localToGlobalTrans(gctx) * (midY * Amg::Vector3D::UnitY());
71 std::unordered_set<unsigned int> laySet;
72 laySet.reserve(bucket->size());
73 for (
const auto& spPtr : *bucket) {
74 laySet.insert(layerSorter.sectorLayerNum(*spPtr));
76 n.layers =
static_cast<int>(laySet.size());
77 n.nSp =
static_cast<int>(bucket->size());
79 n.sector = bucket->msSector()->sector();
80 n.chamber = Acts::toUnderlying(bucket->msSector()->chamberIndex());
84 featuresLeaves.push_back(
static_cast<float>(
n.x));
85 featuresLeaves.push_back(
static_cast<float>(
n.y));
86 featuresLeaves.push_back(
static_cast<float>(
n.z));
87 featuresLeaves.push_back(
static_cast<float>(
n.layers));
88 featuresLeaves.push_back(
static_cast<float>(
n.nSp));
89 featuresLeaves.push_back(
static_cast<float>(
n.bucketSize));
91 spInBucket.emplace_back(
static_cast<int64_t
>(
n.nSp));