35 using TAP = std::pair<T, Vector3D>;
44 1, std::vector<std::vector<
T>>(1, std::vector<
T>(1, nullptr))),
57 std::unique_ptr<const BinUtility> bu)
60 std::vector<std::vector<
T>>(
61 bu->bins(1), std::vector<
T>(bu->bins(0), nullptr))),
67 for (
auto& tap : tapvector) {
89 std::unique_ptr<const BinUtility> bu)
101 for (
auto& o1 : o2) {
102 for (
auto& o0 : o1) {
136 bins[2] = bdim > 2 ?
m_binUtility->bin(lposition, 2) : 0;
137 bins[1] = bdim > 1 ?
m_binUtility->bin(lposition, 1) : 0;
146 std::array<size_t, 3> bins;
147 return object(lposition, bins);
169 std::array<size_t, 3> bins;
170 return object(position, bins);
180 const std::vector<std::vector<std::vector<T>>>&
objectGrid() const final {
191 const std::array<size_t, 3>& binTriple)
const override {
193 std::vector<T> rvector;
195 T bObject =
m_objectGrid[binTriple[2]][binTriple[1]][binTriple[0]];
199 std::vector<size_t> zerorange = {0};
201 std::vector<size_t> bin2values =
202 (bdim > 2) ?
m_binUtility->binningData()[2].neighbourRange(binTriple[2])
205 std::vector<size_t> bin1values =
206 (bdim > 1) ?
m_binUtility->binningData()[1].neighbourRange(binTriple[1])
209 std::vector<size_t> bin0values =
210 m_binUtility->binningData()[0].neighbourRange(binTriple[0]);
213 for (
auto b2 : bin2values) {
214 for (
auto b1 : bin1values) {
215 for (
auto b0 : bin0values) {
218 if (
object &&
object != bObject &&
219 std::find(rvector.begin(), rvector.end(),
object) ==
221 rvector.push_back(
object);