The methods below show the use of sequence masks to subset both time lines and data sequences associated with them. The application of a mask to a data series has the effect that the sequence entry at index n is copied to the new sequence only if the mask value at index n is true.
void get_subsequence( Sequence& seq, SequenceMask &msk);
#include "qplug_if.h"
#include "Qdos.h"
using namespace QSAS;
QdTimeSeq_var tt_out = new QdTimeSeq();
QdObject_var input1 = (* object_list)[1];
QdObject_var input2 = (* object_list)[2];
QdTimeInterval_var interval = get_timeinterval(input1);
QdTimeSeq_var tt = get_timetags(input2);
SequenceMask msk(tt->get_mask(QdTimeSeq::InRange(interval->start(),
interval->end())));
// put timetags satisfying condition in tt_out
// Note tt_out is a var pointer, so we pass in *tt_out
tt_in->get_subsequence( *tt_out, msk);
QdRScalar_var ds_out = new QdRScalarSeq();
// put data objects satisfying condition in ds_out
input2->get_subsequence( *ds_out, msk);
set_timetags(ds_out, tt_out);
SequenceMask operator! input2->get_subsequence( *ds_out, !msk);
SequenceMask operator &&, operator ||
input2->get_subsequence( *ds_out, (msk1 && msk2) );