diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2020-01-26 08:14:32 +0100 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2020-01-26 08:14:32 +0100 |
commit | ea424f096c05a9587ffaa0bc6e5392790a046bd7 (patch) | |
tree | 01d0f9c596ebea229e6a8e2774a7a69a502a3488 /src/ufo-roof-config.h | |
parent | 02b452a86d11655002fdfbb1566ef494e2c954d2 (diff) | |
download | ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.gz ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.bz2 ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.xz ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.zip |
Build ROOF sinograms
Diffstat (limited to 'src/ufo-roof-config.h')
-rw-r--r-- | src/ufo-roof-config.h | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/src/ufo-roof-config.h b/src/ufo-roof-config.h index f90c5f3..b6ee748 100644 --- a/src/ufo-roof-config.h +++ b/src/ufo-roof-config.h @@ -4,30 +4,51 @@ #include <glib.h> typedef struct { + // ROOF Hardware + gboolean roof_mode; // Indicates if ROOF is configured (1), otherwise only networking is implemented + guint n_planes; // Number of detector planes, ROOF module serves a ring segment from all planes in a round-robin fashion + guint n_modules; // Number of ROOF modules + guint channels_per_module; // Number of pixels in each module + guint samples_per_rotation; // Number of samples (projections) in a full fan sinogram; computed from sample_rate & image_rate if given + guint sample_rate; // Number of samples (projections) acquired per second, 0 - if unknown + guint imaging_rate; // Number of complete datasets (images) acquired per second, 0 - if unknown + guint bit_depth; // Number of bits per pixel (we currently support only multiples of 8) + + // Geometry + guint fan_projections; // Number of fan projections = samples_per_rotation + guint fan_bins; // Number of fan detectors = n_modules * channels_per_module + guint parallel_projections; + guint parallel_bins; +// guint detector_diameter; + + // Optics + + + // Network Server / Reader gchar *path; // Location of data files for simmulation purposes (i.e. reading a sequence of files instead listening on the corresponding ports) guint first_file_number; // Indicates if the numbering of files starts at 0 or 1 gchar *protocol; // Protocols: tcp, udp, tcp6, udp6, ... guint port; // First port - guint n_streams; // Number of independent data streams (expected on sequential ports) + guint n_streams; // Number of independent data streams (expected on sequential ports), by default equal to number of ROOF modules guint header_size; // Expected size of the packet header, for dgram protocols we need at least 32-bit sequence number. Defaults to uint32_t for udp* and 0 - otherwise guint payload_size; // Expected size of TCP/UDP packet (without header) - guint dataset_size; // Size of a single dataset (image, sinogram, etc.). This is real size in bytes, excluding all technical headers used in communication protocol. + guint dataset_size; // Size of a single dataset (image, sinogram, etc.). This is real size in bytes, excluding all technical headers used in communication protocol. Normally, it is computed based on ROOF hardware parameters. + + // Performance parameters + guint max_packets; // limits maximum number of packets which are read at once + guint max_packet_size; // payload_size + header_size + ... (we don't care if tail is variable length provided that the complete packet does not exceed max_packet_size bytes) + guint buffer_size; // How many datasets we can buffer. There is no sense to have more than 2 for odered protocols (default), but having larger number could help for UDP if significant order disturbances are expected + guint drop_buffers; // If we are slow and lost some buffers, we may drop more than minimally necessary to catch up. + guint network_timeout; // Maximum time (us) to wait for data on the socket + -//? /* - guint pixels_per_module; guint planes_per_module; - guint samples_per_dataset; */ - guint max_packets; // limits maximum number of packets which are read at once - guint max_packet_size; // payload_size + header_size + ...? - guint buffer_size; // How many datasets we can buffer. There is no sense to have more than 2 for odered protocols (default), but having larger number could help for UDP if significant order disturbances are expected - guint drop_buffers; // If we are slow and lost some buffers, we may drop more than minimally necessary to catch up. - guint network_timeout; // Maximum time (us) to wait for data on the socket - + } UfoRoofConfig; |