rf.js (source) is a set of javascript functions for doing signal processing with jsroot TGraph's. It is intended for web monitoring applications for detectors trying to detect ultra-high-energy neutrinos via radio emission, but might be useful for others as well.
Most operations assume your waveforms are stored as TGraph's. All operations are part of the RF object. Here is a basic example showing a few things that can be done.
|
c1
|
c2
|
One of the main applications of rf.js is correlating waveforms from multiple antennas together and making interferometric maps. Here are some examples of cross-correlation, 1-D interferometric maps, and 2d interferometric map using some synthetic data.
In this case, we consider 3 vertical strings of 4 antennas. Figure c3 shows the graphs, generated by taking a white noise with a gaussian signal on top run through an IIR filter bandpass filter. The time delays for each signal are calculated according to a known plane wave angle. Figure c4 shows the cross-correlation between the first two graphs. Figure c5 shows the average cross-correlation for a given elevation angle within a vertical tring. Figure c6 shows the entire array cross-correlation in terms of elevation and azimuth. Finally, c7 shows the coherent waveform. It starts at the correct angle, but clicking on the 2D map will compute the coherent sum at that angle.
c3
|
|
c4
|
|
c5
|
|
c6
|
|
c7
|