cleaned up read_clusters
This commit is contained in:
parent
8471ba22fb
commit
03043e0bc3
@ -2,30 +2,28 @@
|
||||
#include <assert.h>
|
||||
|
||||
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)
|
||||
|
@ -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
|
Reference in New Issue
Block a user