diff --git a/c_tools/mock/loaders/simulation_loader.cpp b/c_tools/mock/loaders/simulation_loader.cpp index 80e09b2..70c441a 100644 --- a/c_tools/mock/loaders/simulation_loader.cpp +++ b/c_tools/mock/loaders/simulation_loader.cpp @@ -95,6 +95,9 @@ void SimulationLoader::basicPreprocessing(SimuData *d, } filteredCopy(d->Id, accepted, d->NumPart); filteredCopy(d->type, accepted, d->NumPart); + + filterAttribute(d, "uniqueID", accepted, d->NumPart); + d->NumPart = numAccepted; delete[] accepted; } diff --git a/c_tools/mock/loaders/simulation_loader.hpp b/c_tools/mock/loaders/simulation_loader.hpp index 8805702..149ee10 100644 --- a/c_tools/mock/loaders/simulation_loader.hpp +++ b/c_tools/mock/loaders/simulation_loader.hpp @@ -110,17 +110,27 @@ public: while (i < N) { - if (!accepted[i]) - { - i++; - continue; - } + if (!accepted[i]) + { + i++; + continue; + } - a[j] = a[i]; - j++; - i++; + a[j] = a[i]; + j++; + i++; } } + + template + void filterAttribute(CosmoTool::SimuData *d, const std::string& attrname, bool *accepted, long NumPart) + { + if (d->attributes.find(attrname) == d->attributes.end()) + return; + + long *l = d->as(attrname); + filteredCopy(l, accepted, NumPart); + } };