From 5f332edf02187f52a6969d3ab4b9b187c8252cbb Mon Sep 17 00:00:00 2001 From: Guilhem Lavaux Date: Thu, 20 Nov 2014 10:57:17 +0100 Subject: [PATCH] Filter uniqueID attribute --- c_tools/mock/loaders/simulation_loader.cpp | 3 +++ c_tools/mock/loaders/simulation_loader.hpp | 26 +++++++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) 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); + } };