Implement Reader iterator for data files
Context
Allow the user to iterate through each Waveform, returning an Event for each iteration. The code to iterate through the Waveform is in DataFile's child classes, and not directly accessed by the RunManager. Different devices only need to implement a getNextWaveform()
method in order to make use of the same ReaderIterator.
Summary
A ReaderIterator
is created by the specific Reader (eg. V1730Reader
) using the createIterator()
method. This reader inherits from the new Reader
class. The Reader loops through each Channel and returns a vector of Channels to the ReaderIterator. Each Event is then returned by using the getCurrent()
and next()
methods on the ReaderIterator
while checking if isDone()
. For each iteration, an Event is returned with a vector of Channels (depending on the number of Channels in the configuration), and each Channel contains a Waveform and an empty vector of Pulses.
How was this tested?
The WaveformProcessor has been modified to use the iterator in the readNextWaveform()
function. When running the compiled code, everything should work as usual.