From 03043e0bc34353ec5d2e9056082419ee6dbe1ff9 Mon Sep 17 00:00:00 2001 From: froejdh_e Date: Fri, 27 Oct 2023 11:32:21 +0200 Subject: [PATCH] cleaned up read_clusters --- src/cluster_reader.c | 19 ++++++++----------- tests/test_functions.py | 2 +- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/cluster_reader.c b/src/cluster_reader.c index 69a8be0..f4aeba7 100644 --- a/src/cluster_reader.c +++ b/src/cluster_reader.c @@ -2,30 +2,28 @@ #include size_t read_clusters(FILE *fp, size_t n_clusters, Cluster *buf, uint32_t *n_left) { - int iframe = 0; - uint32_t nph = *n_left; + int32_t iframe = 0; // frame number needs to be 4 bytes! + uint32_t nph = *n_left; // number of clusters in frame needs to be 4 bytes! size_t nph_read = 0; uint32_t nn = *n_left; - size_t nr = 0; - // read photons left from previous frame + + // if there are photons left from previous frame read them first if (nph) { if (nph > n_clusters) { // if we have more photons left in the frame then photons to read we - // read directly + // read directly the requested number nn = n_clusters; } else { nn = nph; } - nr += fread((void *)(buf + nph_read), sizeof(Cluster), nn, fp); - nph_read += nn; - *n_left = nph - nn; + nph_read += fread((void *)(buf + nph_read), sizeof(Cluster), nn, fp); + *n_left = nph - nn; //write back the number of photons left } if (nph_read < n_clusters) { // keep on reading frames and photons until reaching n_clusters while (fread(&iframe, sizeof(iframe), 1, fp)) { - // read number of clusters in frame if (fread(&nph, sizeof(nph), 1, fp)) { if (nph > (n_clusters - nph_read)) @@ -33,8 +31,7 @@ size_t read_clusters(FILE *fp, size_t n_clusters, Cluster *buf, uint32_t *n_left else nn = nph; - nr += fread((void *)(buf + nph_read), sizeof(Cluster), nn, fp); - nph_read += nn; + nph_read += fread((void *)(buf + nph_read), sizeof(Cluster), nn, fp); *n_left = nph - nn; } if (nph_read >= n_clusters) diff --git a/tests/test_functions.py b/tests/test_functions.py index 0a44db9..953fac3 100644 --- a/tests/test_functions.py +++ b/tests/test_functions.py @@ -7,6 +7,6 @@ import sys # fname= (data_path/'beam_En700eV_-40deg_300V_10us_d0_f0_100.clust').as_posix() # r = ClusterFileReader(fname) # clusters = r.read(10) -# result = clusterize(clusters) +# result = clusterize(3, clusters) # assert sys.getrefcount(clusters) == 2 #Over counts by one due to call by reference # assert sys.getrefcount(result) == 2 \ No newline at end of file