Streams
Streams are the primary feature added for SwiftVis 0.3.0. They serve two different purposes in SwiftVis. The basic idea of streams is that they allow a data source or a filter to provide more than one set of elements coming out of it. For filters that need to output different types of data, such as the Linear Fit Filter, you will have one stream that holds one type of data and another stream that holds another type of data. Streams can also be used when you are going to do identical processing on several sources of data. You can use a Stream Merge Filter to merge together the first stream of several sources into a single filter that has several streams. Some of the filters have been set up so that if the input has several streams, each will be processed independently and the output will have the same number of streams that the input does. One can also split different streams apart into full filters using the Stream Split Filter. This filter takes a boolean expression that tell it which of the input streams it should send forward.
When you look at the documentation for Filters, they will tell you whether or not they support streams. The ones that do not will always work with the first stream by default. The ones that do support streams will run through each of the streams of the input they are pulling from (typically the first input) and will have an output stream to match each input stream. So in situations where you are going to be processing multiple sets of data in exactly the same way, you can use a Stream Merge Filter to pull the different data sets into steams of a single filter. Then as long as the filters you are using all support streams you can have a single flow of data that will process all the streams. At the far end these can be pulled apart using a Stream Split Filter. If they are going into a plot, the split isn't required as you can use formula syntax to pull from specific streams.
There are two other filters that can allow you to manipulate data with streams. They are the Stream Binning Filter and the Stream Unbinning Filter. Like split and merge, they perform somewhat opposite tasks. Both filters take only one input. The binning will spread the elements in a single stream across multiple streams based on a formula. The unbinning will take multiple streams and merge them into a single stream. Potential uses of this would be to split an input by the particle number (for Swift data you will likely have to add an offset to deal with the negative particle numbers as stream indexes can't be negative). In this way, you can efficiently process the paths of all particles independently, but with one set of filters. The data can be unbinned later to make plotting easier.