13 for (unsigned int i = 0; i < 4u; ++ i) {
14 nodes_m.emplace_back(new QuadTree(*right.nodes_m[i]));
42 for (
unsigned int i = 0; i < 4u; ++ i) {
49 for (std::shared_ptr<Base> &obj: objs) {
50 if (
bb_m.isInside(obj->bb_m)) {
55 objs.remove_if([](
const std::shared_ptr<Base> obj) {
return !obj; });
59 double X[] = {
bb_m.center_m[0] - 0.5 *
bb_m.width_m,
61 bb_m.center_m[0] + 0.5 *
bb_m.width_m};
62 double Y[] = {
bb_m.center_m[1] - 0.5 *
bb_m.height_m,
64 bb_m.center_m[1] + 0.5 *
bb_m.height_m};
69 for (
unsigned int i = 0; i < 4u; ++ i) {
76 if (!
nodes_m.back()->objects_m.empty()) {
86 for (
unsigned int i = 0; i < 4u; ++ i) {
92 out <<
"# level: " <<
level_m <<
", size: " <<
objects_m.size() << std::endl;
93 bb_m.writeGnuplot(out);
94 out <<
"# num holes: " <<
objects_m.size() << std::endl;
98 for (
unsigned int i = 0; i < 4u; ++ i) {
107 unsigned int idx = (X[1] < 0.0 ? 0: 1);
108 idx += (X[0] < 0.0 ? 0: 2);
115 for (
const std::shared_ptr<Base> & obj:
objects_m) {
116 if (obj->isInside(R)) {
126 for (
const auto & node:
nodes_m) {
ippl::Vector< T, Dim > Vector_t
PartBunch< T, Dim >::ConstIterator end(PartBunch< T, Dim > const &bunch)
PartBunch< T, Dim >::ConstIterator begin(PartBunch< T, Dim > const &bunch)
void getDepth(unsigned int &d) const
std::vector< std::shared_ptr< QuadTree > > nodes_m
void writeGnuplot(std::ostream &out) const
bool isInside(const Vector_t< double, 3 > &R) const
void transferIfInside(std::list< std::shared_ptr< Base > > &objs)
void operator=(const QuadTree &right)
std::list< std::shared_ptr< Base > > objects_m