Required Software Engineer
Job Description Summary
As a Software Engineer - PET Data Acquisition, you will join a highly specialized team developing the real-time software stack at the core of our PET/CT imaging systems.
Our software directly impacts image quality and system reliability, enabling clinicians worldwide to provide accurate diagnoses and life-saving care.
You will work on a distributed, high-performance C++ system running on Linux, responsible for configuring detector hardware, processing high-throughput data streams, and enabling seamless integration across the scanner ecosystem.
Job Description
About the Team
Our team develops the data acquisition platform powering our PET/CT scanners.
This system:
Configures and interfaces with detector hardware
Receives high-rate event streams via UDP
Performs real-time sorting and time-stamping of coincidence events
Manages acquisition state and persistence
Exposes control and monitoring APIs to clinical applications
The platform is a distributed, multi-process, multi-threaded C++ system running on Linux, designed for deterministic, high-performance operation under demanding workloads.
Key Responsibilities:
Design and develop end-to-end data acquisition features, from low-level UDP capture and event processing through service layers and client APIs
Optimize and maintain performance-critical code paths, including:
Lock-free / low-contention data structures
Thread affinity and NUMA optimization
Zero-copy buffer management
Deterministic real-time execution
Enhance and maintain inter-process communication mechanisms, including shared memory, message queues, and service interfaces
Work with embedded persistence layers (SQL-based) for configuration, metadata, and runtime state
Collaborate closely with hardware, physics, and system teams to integrate new detector and system components
Develop unit and integration tests, and actively participate in code and design reviews
Troubleshoot complex cross-process issues using advanced debugging and profiling tools (e.g., gdb, perf, tcpdump, strace).
Requirements: B.Sc. in Computer Science, Computer Engineering, Software Engineering, or equivalent practical experience
4+ years of experience in C++ development on Linux, including modern C++ (C++14/17)
Strong experience with:
Multi-threaded and multi-process systems
Synchronization primitives, memory models, and concurrency challenges
Inter-process communication (IPC) mechanisms such as shared memory, sockets, and message queues
Solid understanding of system-level programming and performance optimization
Working knowledge of SQL / relational databases - advantage.
This position is open to all candidates.