StrainBandsMon DMT Monitor

StrainbandsMon monitors the calibrated interferometer strain within certain frequency bands. It relies on EasyCalibrate (the FDEasyCalibrate class) to calibrate raw AS_Q data into units of [strain / sqrt(Hz)]. It then integrates (in quadrature) over a frequeny band to obtain the strain within that band of frequencies.

StrainbandsMon outputs data (accessible through trend files or dmtviewer or similar programs) in units of 10^-22. Thus, in order to get the correct order of magnitude strain, you must multiply all StrainbandsMon data points by 10^-22. This is a constant scale factor applied directly before outputting the data, because dmtviewer and the trend files had difficulty dealing with numbers so small.

There are three premade config files - one for each interferometer - which contain the most relevant frequency bands. These config files are in CVS by the name of StrainbandsMon_XX.cfg, where XX is one of L1, H1, or H2. To run StrainbandsMon using these config files, you should first set the $DMTRENDOUT and $DMTHTMLOUT environment variables, and then use the command 'StrainbandsMon -config StrainbandsMon_XX.cfg'. StrainbandsMon will output trend files to the $DMTRENDOUT directory, and will output an HTML summary page every timestride to the $DMTHTMLOUT directory, using the file name index.html.

These premade config files monitor RMS strains in a set of narrow bands with artifacts, narrow bands without artifacts, and wide bands. It monitors the same bands as DataQual.

By default, StrainbandsMon integrates over bins of Hanning-windowed periodograms based on 15 four-second averages each minute. The output channel names for StrainbandsMon are XX:DMT-SBND_AS_Q_ followed by additional information identifying the band information (by default, the lower and upper frequency bounds of the band).

Though StrainbandsMon is normally run with the above standard configuration files, it can also be run as a stand-alone program if needed according to usage information below.

If you have any questions, comments, suggestions, requests, or if StrainbandsMon does not appear to be functioning properly, please contact the author at <>

StrainBandsMon Program Documentation

Author Ramon Armen <>
Version 1.2 (2006.05.08)

Usage information:
StrainbandsMon [-verbosity <level>] [-OSCFile <filename>] [-config <filename>]
	[-calFile <filename>] [-OSCcond <condition>] [-window <windowtype>]
	[-help] [-ifo <name>] [-channel <name>] [-stride <length>]
	[-intervals <num>] [-history <length>] [-debug]

-verbosity <level>
	Defines the amount of text that StrainbandsMon will print out to cout.
	<level> must be >= 1. Verbosity of 1 yields no output (except for error
	messages). Verbosity 2 prints out minimal status information. 3 prints
	out every time data is being processed. 4 prints out parameter information
	and the bands that are being monitored. 5 prints out if data is not
	valid (OSC not met or dropouts). 6 prints out the values for the strain
	at every time stride.
	Defaults to 1.

-OSCFile <filename>
	Defines the file used to define operating state conditions.
	Defaults to "LockLoss.conf"

-config <filename>
	Defines the config file for StrainbandsMon. The config file defines
	parameters and bands to monitor.
	Format of config file:
	Any of the above arguments can be put in a config file with the same
	syntax. In addition, there is another argument, -bands, after which
	frequency bands may be defined. Each line thereafter, until the end
	of the config file is reached or the line "-end" is reached, should
	contain the information for one band. Each band should be in the
	following format:
	<lowerFreq> <upperFreq> [[notch <lowerFreq> <upperFreq>] ...] [name <bandName>]
	lowerFreq and upperFreq specify the lower and upper frequency limits of
	the band. You may then optionally specify notches within that band
	by using the keyword "notch" followed by the lower and upper frequency limits
	of the notch. This frequency range will be ignored when calculating
	strain for this band. You may specify an arbitrary number of notches,
	but each notch must start with the word "notch". 
	If the keyword "name" is encountered, the following word will be used to
	create the channel name. If a name is provided, the resulting channel name
	for this band will be <ifo>:DMT-SBND_AS_Q_<bandName> where <ifo> is the IFO
	being monitored (one of H1, H2, or L1), and <bandName> is the specified name.
	If no name is provided, a default of <ifo>:DMT-SBND_AS_Q_<lowerFreq>_<upperFreq>
	will be used for the channel name, where <ifo> is the IFO being monitored, 
	and <lowerFreq> and <upperFreq> are the frequency limits of the band. If 
	notches were specified, then an addition suffix of _notched will be added, 
	resulting in a channel name <ifo>:DMT-SBND_AS_Q_<lowerFreq>_<upperFreq>_notched
	NOTE: Only alphanumerical characters and the underscore are allowed in 
	<bandName>. I.e. whitespace, hyphens, or other characters are prohibited due 
	to the channel naming conventions.
	It is acceptable to use multiple lines for a band if necessary.
	Arguments specified on the command line after the -config argument will
	take precedence over parameters specified in the config file. Parameters in
	the config file take precedence over arguments on the command line which
	occur before the -config argument.
	Example config file:
	-verbosity 4
	-ifo H1			#the IFO to listen to
	-window hanning	#use a hanning window
	50 100 notch 57 63 name 50_100_Hz_notched
	100 200 notch 118 122 notch 178 182
	150 160
	This would monitor the H1 interferometer. There would be three bands, as
	specified above.

-calFile <filename>
	The filename to use as a reference file for FDEasyCalibrate.
	Defaults to "ReferenceCalibration_XX.xml", where XX is the interferometer
	being monitored by this DMT instance.

-OSCcond <condition>
	Defines an OSC condition. If this condition is not met, the data will be
	ignored, and the band value set to -1.
	Defaults to "XX:Both_arms_locked_strict_cm", where XX is the interferometer
	being monitored.

-window <windowtype>
	Defines the type of window to use for the fourier transform. <windowtype>
	must be one of "hanning", "hamming", "blackman" or "flattop"
	Defaults to a Hanning window

	Show this information

-ifo <name>
	The name of the IFO to monitor. Must be one of H1, H2, or L1. Either -ifo
	must be specified, or -channel must be specified which includes an IFO name
	If -channel is specified as "XX:channelName", where XX is an interferometer, 
	and -ifo is not set, it will automatically be set to XX.

-channel <name>
	The name of the channel to monitor. This may either be in the format of
	":channelName" or "XX:channelName". If it is the former, -ifo must be
	specified, and the channel will be set to "ifo:channelName". If it is the
	latter, then -ifo need not be specified, but if it is, the user-defined
	IFO will be used. An IFO must be defined in either -channel or -ifo.
	Defaults to ":LSC-AS_Q"

-stride <length>
	The number of seconds in each timestride.
	Defaults to 60.

-intervals <num>
	The number of intervals used for each timestride. Must divide evenly
	into the timestride length.
	Defaults to 15.

-history <length>
	The length, in seconds, of the DMT viewer history. This number of
	seconds of data will be remembered.
	Defaults to 12 hours (43200)

	Enter debug mode. This will append _debug to the server name.

Note: An interferometer must be specified, either using the -ifo argument, or by defining a -channel which contains an IFO name at the beginning. All other arguments have default values (though the necessary files must be present in order to function properly).

StrainbandsMon will output trend files to the $DMTRENDOUT/ directory and will output a summary HTML page each timestride to $DMTHTMLOUT/index.html