mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2025-06-14 16:27:14 +02:00
cluster finder (#72)
implement fixed size cluster finder algorithm clusterFile functions are commented and put on hold. --------- Co-authored-by: Bechir <bechir.brahem420@gmail.com> Co-authored-by: Erik Fröjdh <erik.frojdh@gmail.com>
This commit is contained in:
@ -7,48 +7,33 @@
|
||||
using namespace aare;
|
||||
int main() {
|
||||
auto PROJECT_ROOT_DIR = std::filesystem::path(getenv("AARE_ROOT_DIR"));
|
||||
std::filesystem::path const fpath(PROJECT_ROOT_DIR / "data" / "clusters" / "single_frame_97_clustrers.clust");
|
||||
std::filesystem::path const fpath("/mnt/sls_det_storage/moench_data/testNewFW20230714/cu_half_speed_master_4.json");
|
||||
|
||||
// reading a file
|
||||
aare::ClusterFile cf(fpath, "r");
|
||||
std::cout << "file opened " << '\n';
|
||||
std::cout << "n_clusters " << cf.count() << '\n';
|
||||
std::cout << "frame_number " << cf.frame() << '\n';
|
||||
std::cout << "file size: " << cf.count() << '\n';
|
||||
cf.seek(0); // seek to the beginning of the file (this is the default behavior of the constructor)
|
||||
NDArray<double, 2> frame({10, 10});
|
||||
frame = 0;
|
||||
|
||||
auto cluster = cf.read(97);
|
||||
|
||||
std::cout << "read 10 clusters" << '\n';
|
||||
int offset = 0;
|
||||
int data_offset = 0;
|
||||
for (auto c : cluster) {
|
||||
assert(c.y == offset + 200);
|
||||
for (int i = 0; i < 9; i++) {
|
||||
assert(c.data[i] == data_offset + i);
|
||||
for (int i = 5; i < 8; i++) {
|
||||
for (int j = 5; j < 8; j++) {
|
||||
frame(i, j) = (i + j) % 10;
|
||||
}
|
||||
|
||||
offset++;
|
||||
data_offset += 9;
|
||||
}
|
||||
|
||||
// writing a file
|
||||
std::filesystem::path const fpath_out("/tmp/cluster_example_file.clust");
|
||||
aare::ClusterFile cf_out(fpath_out, "w", ClusterFileConfig(1, 44));
|
||||
std::cout << "file opened for writing" << '\n';
|
||||
std::vector<Cluster> clusters;
|
||||
for (int i = 0; i < 1084; i++) {
|
||||
Cluster c;
|
||||
c.x = i;
|
||||
c.y = i + 200;
|
||||
for (int j = 0; j < 9; j++) {
|
||||
c.data[j] = j;
|
||||
for (int i = 0; i < frame.shape(0); i++) {
|
||||
for (int j = 0; j < frame.shape(1); j++) {
|
||||
std::cout << frame(i, j) << " ";
|
||||
}
|
||||
clusters.push_back(c);
|
||||
std::cout << std::endl;
|
||||
}
|
||||
cf_out.write(clusters);
|
||||
std::cout << "wrote 10 clusters" << '\n';
|
||||
cf_out.update_header();
|
||||
|
||||
return 0;
|
||||
ClusterFinder clusterFinder(3, 3, 1, 1); // 3x3 cluster, 1 nSigma, 1 threshold
|
||||
|
||||
Pedestal p(10, 10);
|
||||
|
||||
auto clusters = clusterFinder.find_clusters(frame.span(), p);
|
||||
|
||||
aare::logger::info("nclusters:", clusters.size());
|
||||
|
||||
for (auto &cluster : clusters) {
|
||||
aare::logger::info("cluster center:", cluster.to_string<double>());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user