Monitoring of Narrow Lines

Team:
Sergey Klimenko
Andrei Sazonov
Narrow resonances are seen as lines in the data power spectra. They are one of the noise sources that may affect
the detection of gravitation waves. To study line noise we use a line monitor (LM) based on the Quasi Monochromatic
Line Removal (QMLR) method developed at UF.

The LM is a part of the DMT software (class LineFilter). It allows

LineFilter(f, T, fid, nT)

f   - seed frequency. It should be not more than 1/T Hz away from the real line frequency.
        If f<0 - filter just monitor lines, lines are not removed.
T - the length of data section to monitor/remove lines. For example, if input time series is 100 seconds long and T=1.,
        then 100   data sections are processed by filter individually and 100 entries are stored in the database. If T=0.,
        the whole input time series is processed. [default = 0]
fid - filter ID, (1)0 - estimate line parameters with (without) taking into account the nearby noise. [default = 1]
nT - number of subdivisions of the time interval  T. The line amplitude (complex) is estimated for each subinterval
         and than the average amplitude is calculated. Used for line monitoring only. [default = 1]
examples:
        LineFilter F(60.);   // -  create LineFilter object F to remove 60 Hz line and it's harmonics.

setFilter(nFirst, nLast, nStep, nLPF, nBand)

nFirst   - first harmonic [default = 1]
nLast    - last harmonic. If nLast=0, all harmonics are processed. [default = 0]
nStep    - skip harmonics (take nFirst, nFirst+abs(nStep), nFirst+2 *abs(nStep),....). If nStep is negative,
                 set the fundamental frequency to be f/abs(nStep) and set the first harmonic to be nFirst*abs(nStep).
                 [default = 1]
nLPF    - number of decimation steps (by 2) of input time series.
                  If nLPF<0  - does up-sampling of input time series by 2 to estimate interference. [default = -1]
nBand   - number of frequency bins to estimate noise spectral density. [default = 5]
examples:
         F.setFilter(1,10);      // -  select harmonics 1-10.
         F.setFilter(1,0,2);     //  -  select  odd harmonics .
         F.setFilter(2,20,2,0); //  -  select  even harmonics 2-20 and don't do up-sampling.

setFScan(fScan, SNR, fBand, nScan)

f Scan    - update  seed  frequency  with value of abs(fScan). If fScan<=0  -  don't scan frequency
                  If  fScan=0  - don't update & don't scan base frequency. [default = 0]
 SNR     -  limit on signal to noise ratio. If the line interference intensity is less then SNR*(noise intensity)
                   then filter don't use value of base frequency from this run as a seed frequency for the next run.
                   In this case negative value of estimated base frequency is saved in the database.    [default = 2]
fBand     - frequency band in units of nT/T  to scan the base frequency .  [default = 0.45]
nScan     - limit on number of iteration steps during the frequency scan [default = 10]
examples:
          F.setFScan();      // -  don't  scan frequency

WaveData  getTrend(n, 'c')  - return vector with trend data

 n =  0 - total for all harmonics
 n = 1,2,3... -  select  nFirst, nFirst+1, nFirst+2,... harmonic
'a' - amplitude vector (n=0 - total interference intensity).
't'  - time vector  (start time of time series)
'F' - frequency vector(n=0 - fundamental frequency).
'f'  - corrected frequency vector (derivative of  the line phase).
'P' - phase vector (n=0 - get number of harmonics)
'p'  - corrected phase vector  (p = P + 2PI F T/2 )
'S'  - line spectral density
's'  - intensity of line signal.
'N'  -noise spectral density in the vicinity of the line
'n'  - intensity of noise on the filter output.
'K' - signal to noise ratio ( n=0 - get  SNR for all harmonics)
'W' - Wiener filter coefficients
examples:
         WaveData a = F.getTrendData(2,'a');  // get amplitude of second harmonic
                                                                            //  a.data[i] - amplitude data vector (double)

DumpTrend(file,mode) - dump trend data into file

file  - output file name
mode - override or append [default = 0 - override]
examples:
         F..DumpBinary('trend.dat',1);       // dump database into file trend.dat in  the  append mode
 

LoadTrend(file) - load trend data from file

file  - input file name
examples:
         F..Load('trend.dat');       // load database from file trend.dat into  the  filter F database
apply(TS)
TS  - input time series

Availability and examples

Currently only ROOT offline version of line monitor is available. To   run the LM the folloving files located
at  /home/klimenko/roots  on the LHO fortress hould be used:
wavelet.so  - Wavelet Analysis Tool shared library
rootlogon.C - ROOT initialization file (should load wavelet.so and DMT shared libraries)
monitor.C - example of the  LM ROOT macro file
ReadTSeries.C - Root macro to read data into the DMT TSeries object.
Plot.C - plot macro for WaveData arrays
Spectrum.C - plot macro for WaveData arrays
Histogram.C - plot macro for WaveData arrays
setLine.C -  ROOT macro to read trend data
dec29-nn.dat - E2 trend data for LSC-AS_Q channel
How to read and plot trend data?
LineFilter F(1.);                           // create  LineFilter object
WaveData f;
WaveData t;
F.LoadTrend("dec29-32.dat");   // load trend data for 237Hz line
t=F.getTrend(0,'t');                     // read  time vector
f=F.getTrend(1,'f');                     // read  frequency trend data
Plot(f,t);                                        // plot f as a function of t
or
.x  setLine.C       // execute ROOT macro file that reads data  (file name is specified inside)
Plot(a,t);             // plot amplitude
Plot(f,t);              // plot frequency

 
 



Contact

S.Klimenko (klimenko@phys.ufl.edu)



Last update: March 20, 2001