.. include:: images.rst Frequently Asked Questions -------------------------- .. raw:: html

Introduction

- `What is cWB <#what-is-cwb>`__ .. raw:: html

Setup

- `cWB quick startup <#cwb-quick-startup>`__ - `My first cWB pipeline test <#my-first-cwb-pipeline-test>`__ - `How to do Analysis - mini-tutorial <#how-to-do-analysis-mini-tutorial>`__ - `cWB on a VirtualBox <#cwb-on-a-virtualbox>`__ - `Running cWB within a Docker container <#running-cwb-within-a-docker-container>`__ .. raw:: html

Operation

- `How to show the probability skymap with Aladin Sky Atlas <#how-to-show-the-probability-skymap-with-aladin-sky-atlas>`__ - `How to switch Tensor GW to Scalar GW <#how-to-switch-tensor-gw-to-scalar-gw>`__ - `How to plot Network Antenna Pattern <#how-to-plot-network-antenna-pattern>`__ - `How to dump the frame file contents <#how-to-dump-the-frame-file-contents>`__ - `How to create a celestial skymask <#how-to-create-a-celestial-skymask>`__ - `How to plot skymap <#how-to-plot-skymap>`__ - `How to generate CED of the BigDog Event <#how-to-generate-ced-of-the-bigdog-event>`__: only for LVK users - `How to make gw frame file list with gw_data_find <#how-to-make-gw-frame-file-list-with-gw-data-find>`__: only for LVK users - `How to create data quality file list <#how-to-create-data-quality-file-list>`__: only for LVK users - `How to use the Condor batch system to play with jobs <#how-to-use-the-condor-batch-system-to-play-with-jobs>`__ - `How to read the event's parameters from the output root files produced by the cWB pipeline <#how-to-read-the-events-parameters-from-the-output-root-files-produced-by-the-cwb-pipeline>`__ - `How to use the 'On The Fly' MDC <#how-to-use-the-on-the-fly-mdc>`__ - `How to use a distance distribution instead of a fixed hrss one for 'On The Fly' MDC <#how-to-use-a-distance-distribution-instead-of-a-fixed-hrss-one-for-on-the-fly-mdc>`__ - `How to do an interactive multistages 2G analysis <#how-to-do-an-interactive-multistages-2g-analysis>`__: A Step by Step Example - `How to do the Parameter Estimation Analysis <#how-to-do-the-parameter-estimation-analysis>`__ - `How to do a 2 stages 2G analysis in batch mode <#how-to-do-a-2-stages-2g-analysis-in-batch-mode>`__: A Step by Step Example - `How to merge multiple backgrounds into a single report <#how-to-merge-multiple-backgrounds-into-a-single-report>`__: Increase the background statistic - `How to do the analysis of the most significative events <#how-to-do-the-analysis-of-the-most-significative-events>`__ - `How to apply a time shift to the input MDC and noise frame files <#how-to-apply-a-time-shift-to-the-input-mdc-and-noise-frame-files>`__ .. raw:: html

Troubleshooting

- `Problem with 'my first cWB pipeline' example <#problem-with-my-first-cwb-pipeline-example>`__ .. raw:: html

Theory

- `What is the cWB coordinate system <#what-is-the-cwb-coordinate-system>`__ - `What is HEALPix <#what-is-healpix>`__ - `What are lags and how to use them <#what-are-lags-and-how-to-use-them>`__ - `What are super lags and how to use them <#what-are-super-lags-and-how-to-use-them>`__ - `What are the parameters reported in the BurstMDC log file <#what-are-the-parameters-reported-in-the-burstmdc-log-file>`__ - `How job segments are created <#how-job-segments-are-created>`__ - `The cWB 2G coherent statistics <#the-cwb-2g-coherent-statistics>`__ - `The cWB 2G production thresholds <#the-cwb-2g-production-thresholds>`__ - `The cWB 2G regulators <#the-cwb-2g-regulators>`__ - `The WDM transform <#the-wdm-transform>`__ - `The Sparse TF Map <#the-sparse-tf-map>`__ - `The whitening <#the-whitening>`__ - `The pixels selection <#the-pixels-selection>`__ - `The cWB 2G clustering algorithms <#the-cwb-2g-clustering-algorithms>`__ - `The sub-net cut algorithm <#the-sub-net-cut-algorithm>`__ - `The standard FAD statistic <#the-standard-fad-statistic>`__ - `The Qveto <#the-qveto>`__ - `The Lveto <#the-lveto>`__ - `The Gating Plugin <#the-gating-plugin>`__ - `The WDM packets <#the-wdm-packets>`__ - `The signal reconstruction and regulators (WP) <#the-signal-reconstruction-and-regulators>`__ .. raw:: html

General

- `How can I contribute to the cWB documentation `__ | ---- Introduction ============ | What is cWB ~~~~~~~~~~~~~~~~ coherent WaveBurst (cWB) is a joint LSC-Virgo project. cWB is a coherent pipeline based on the constraint likelihood method for detection of gravitational wave (GW) bursts in interferometric data. The pipeline is designed to work with arbitrary networks of gravitational wave interferometers. In general the resonant bar detectors can be also included in the network. The pipeline consists of two stages: a) coherent trigger production stage, when the burst events are generated for a network of GW detectors and b) post-production stage, when additional selection cuts are applied to distinguish the GW candidates from the background events. This division into two stages is not fundamental. At both stages the pipeline executes coherent algorithms, based both on power of individual detectors and the cross-correlation between the detectors. It is essentially different from a traditional burst search pipeline, when, first, an excess power search is used for generation of triggers and, second, the coherent algorithms are applied [1, 11]. Instead, by using the likelihood approach, we combine in a coherent way the energy of individual detector responses into a single quantity called the network likelihood statistic, which has a meaning of the total signal-to-noise ratio of the GW signal detected in thae network. The coherent triggers are generated if the network likelihood exceed some threshold which is a parameter of the search. Coherent network analysis is addressing a problem of detection and reconstruction of gravitational waves with the networks of GW detectors. In coherent methods, a statistic is built as a coherent sum over detector responses and, in general, it is more optimal (better sensitivity at the same false alarm rate) than the detection statistics of individual detectors. Also coherent methods provide estimators for the GW waveforms and the source coordinates on the sky. | ---- Setup ===== | cWB quick startup ~~~~~~~~~~~~~~~~~~~~~~ | |LVK| .. note:: use the following examples to use cWB with pre-installed libraries To verify if the installation works try `My first cWB pipeline test <#my-first-cwb-pipeline-test>`__ - | CIT/CNAF | In the CIT cluster the libraries used by cWB are installed at : **/home/waveburst/SOFT** **[bash/tcsh] shell** : To define the cWB environment users do : .. code-block:: bash CIT: source /home/waveburst/SOFT/GIT/cWB/library/cit_watenv.[csh/sh] CNAF: source /opt/exp_software/virgo/virgoDev/waveburst/SOFT/GIT/cWB/library/cit_watenv.[csh/sh] **ROOT environment** do : .. code-block:: bash CIT: cp /home/waveburst/SOFT/GIT/cWB/library/tools/cwb/cwb.rootrc ~/.rootrc CNAF: cp /opt/exp_software/virgo/virgoDev/waveburst/SOFT/GIT/cWB/library/tools/cwb/cwb.rootrc ~/.rootrc **Check environment** do : .. code-block:: bash root -b -l If you see something like this: .. toggle-header:: :header: **root logon**: Show/Hide Code .. literalinclude:: logs/bkg_examples_root_shell.log :language: bash then the installation is right (to exit from ROOT type .q & return)* My first cWB pipeline test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |LVK| This is a test to check if the cwb environment is set properly, it is not intended to be used as an example for the allsky onnline analysis (for allsky tutorials see : `Background Example `__, `Simulation Example `__). In this example we use the cWB pipeline in simulation mode. #. setup the cwb environment according to the cluster type : `cWB quick startup <#cwb-quick-startup>`__ #. copy the example directory : .. code-block:: bash cp -r $HOME_LIBS/WAT/trunk/tools/cwb/examples/ADV_SIM_SGQ9_L1H1V1_2G ADV_SIM_SGQ9_L1H1V1_2G_tutorial #. change directory : cd ADV_SIM_SGQ9_L1H1V1_2G_tutorial #. | - create working directories | - create noise frames with simulated ADV strain | - create MDC frames with simulated with SG235Q9 signal **make setup** | The files created in the working directory are : | `ADV_SIM_SGQ9_L1H1V1_2G_tutorial `__ #. run simulation **make cwb** | output root,txt files are produced under the directory : `ADV_SIM_SGQ9_L1H1V1_2G_tutorial `__ | The txt file contains the parameters of the reconstructed event. | For a detailed description of the parameters reported in the ascii file see `trigger parameters `__ #. run simulation and produce CED **make ced** | ced is produced in the directory : `ADV_SIM_SGQ9_L1H1V1_2G_tutorial `__ The CED can be browsed pointing to the following links (substitute user with the user account, ex : waveburst) : | https://ldas-jobs.ligo.caltech.edu/~user/reports/ADV_SIM_SGQ9_L1H1V1_2G_tutorial/ced | For CIT users this is the `CED link `__ If CED is visible than your cwb environment is working correctly. How to do Analysis - mini-tutorial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - `Libraries Structure `__ - `Libraries Installation & Setup `__ - **Run Analysis** | - `How to run Background `__ | In this example we do time lags analysis of H1, L1 detectors data on the so called O2 run. | - `How to run Simulation `__ | In this example we show how to obtain efficiency tests of H1, L1, detectors data on the so called O2 run. | - `How to use cwb plugins `__ | The plugin is a C++ function which is called by the pipeline different stages of the analysis and can be used to customize the analysis. | cWB on a VirtualBox ~~~~~~~~~~~~~~~~~~~~~~~~ | Here we describe how to install a fully cWB working environment based on Scientific Linux 7.9 (SL7.9) running on a Virtual Machine. | The user need only to install the VirtualBox and the cWB Virtual Machine (cWB-VM). | Follow the instructions reported below: - `Download Virtual Machine`_ - `System requirements`_ - `Installing`_ - `Using cWB virtual machine`_ - `Sharing a folder between your host OS and your VM`_ - `Virtual machine troubleshooting`_ - `What you need to know about your new operating system`_ | After the installation the cWB-VM is ready and fully operating. | Once you start the virtual machine, login with cWB account with the password **gw150914** and open up a terminal (right mouse button). | Now you are ready to start with your first cWB tests, follow the instructions listed in the terminal. .. code-block:: bash ************************************************************************************ cWB Environment Variables ************************************************************************************ -> SITE = VIRTUALBOX ------------------------------------------------------------------------------------ -> HOME_WAT = /home/cwb/waveburst/git/cWB/library (cWB-6.4.1) -> CWB_CONFIG = /home/cwb/waveburst/git/cWB/config (public) ------------------------------------------------------------------------------------ ******************************************************************* * * * W E L C O M E to C W B on V I R T U A L B O X * * * ******************************************************************* 1) To start the cWB home page type: xcwb See Getting Started 2) Try cWB GW150914 & GW170817 LH Network with GWOSC GWTC-1 Catalog See /home/cwb/waveburst/GWOSC/catalog/GWTC-1-confident/README 3) Try cWB GW150914 LH Network with O1 GWOSC Data See /home/cwb/waveburst/GWOSC/O1/README.GW150914 4) Try cWB GW170104 LH Network with O2 GWOSC Data See /home/cwb/waveburst/GWOSC/O2/README.GW170104 5) Try cWB GW170809 LHV Network (Virgo included) with O2 GWOSC Data See /home/cwb/waveburst/GWOSC/O2/README.GW170809_LHV 6) Try cWB GW170814 LHV Network (Virgo included) with O2 GWOSC Data See /home/cwb/waveburst/GWOSC/O2/README.GW170814_LHV 7) Try cWB GW190521 LHV Network with GWOSC GWTC-2 Catalog See /home/cwb/waveburst/GWOSC/catalog/GWTC-2-confident/README 8) Try cWB GW191204_171526 LH Network & GW200224_222234 LHV Network with GWOSC GWTC-3 Catalog See /home/cwb/waveburst/GWOSC/catalog/GWTC-3-confident/README .. _Download Virtual Machine: - **DownloadVirtualMachine** Getting the Virtual Machine #. You can download the virtual machine (**the file size is ~12.0 Gb**) from browser with this link: - `cWB_on_VirtualBox_SL79_64bit_v2.ova `__ or from CIT |LVK| - `cWB_on_VirtualBox_SL79_64bit_v2.ova `__ or from linux command line: .. code-block:: bash - wget https://owncloud.ego-gw.it/index.php/s/bSawGKOwoJplF4j/download -O cWB_on_VirtualBox_SL79_64bit_v2.ova - curl https://owncloud.ego-gw.it/index.php/s/bSawGKOwoJplF4j/download -o cWB_on_VirtualBox_SL79_64bit_v2.ova .. _System requirements: - **System requirements** #. At least **~40 Gb free on your disk** to download and then install the VM. The .ova file is ~12 Gb, once you install it in Virtual Box the VM becomes ~28 Gb, so you will need 40 Gb total. Once your VM is working, you can remove the .ova file recovering the 12 Gb. If you don't have enough space, you can also save and/or install the virtual machine on an external drive (but not CDs and DVDs, because they are read-only), although you will loose some speed. #. The VM is configured to use 4 Gb of RAM memory and 4 cores. It is possible to change the such values from the VirtualBox Manager. .. _Installing: - **Installing** In order to use the Virtual Machine you need VirtualBox, which is free and available for all platforms (linux, Mac, Windows). #. Download and install Virtual Box (if you have it already, be sure to have the very latest version, 6.1.30): #. Linux: there are many packages for all main distributions `Downloads `__ #. Mac: `VirtualBox-6.1.30-148432-OSX.dmg `__ #. Windows: `VirtualBox-6.1.30-148432-Win.exe `__ #. Open virtual box, click on the File menu and choose "Import appliance" #. Click on "Import appliance", and select the file cWB_on_VirtualBox_SL79_64bit_v2.ova downloaded. Then click "Next" (or "continue" if you are using Mac) #. Just click on "Import" and wait for VirtualBox to import the Virtual Machine; the VM should show up in the list of installed VM #. Now boot the VM (see below "Starting the Virtual Machine"). If it boots, you can cancel the cWB_on_VirtualBox_SL79_64bit_v2.ova file to recover some disk space (you won't need it any more). .. _Using cWB virtual machine: - **Using cWB virtual machine** #. Open Virtual Box, click on the virtual machine "cWB VirtualBox - Scientific Linux 7.9 (64bit)" and click on "start" #. Wait for the system to boot #. Beware that the current settings (e.g. video memory etc) are tuned for the current setup (e.g. display resolution): if you need to change the default setup, some agdjustments might be needed (see the following `Troubleshooting`_ ) #. Start a terminal, e.g. through the "Applications" menu on the top right corner of the screen: a list of README examples will be printed on the screen terminal, such as the one reported above. .. attention:: The python environment which is needed to perform Parameter Estimation studies (such as e.g. posterior waveforms simulations) is **not** enabled by default. You will need to source the activation script in a terminal first: .. code-block:: bash source ~/virtualenv/pesummary/bin/activate .. _Sharing a folder between your host OS and your VM: - | **Sharing a folder between your host OS and your VM** | This example is for host Windows10 OS | With the virtual machine powered off, select it in the Oracle VM VirtualBox Manager and click on "Settings". Choose the "Shared Folders" item. You'll probably see a list that only contains one item, "Machine Folders". Click on the little folder icon with the green plus sign on the right side of the window. For "Folder Path", choose "Other..." and choose the desired directory. For example chose the folder called "VirtualBoxShare" under C:/Users , and that set the Folder Name to "VirtualBoxShare" by default. Click OK a few times to close the dialog boxes. Now start the VM. Once it has booted, you should find that the shared folder appears as a filesystem in the VM. .. _Virtual machine troubleshooting: - **Virtual machine troubleshooting** #. Black screen of death: when increasing display resolution (e.g. by rescaling it to fit a larger screen), you should consider increasing video memory from the default 16 MB to 132 MB. #. Missing pesummary Python module (see note above): **Error message** .. code-block:: bash Traceback (most recent call last): File "", line 1, in ImportError: No module named pesummary /home/cwb/waveburst/git/cWB/library/tools/cwb/gwosc/Makefile.gwosc:133: *** "No pesummary 0.9.1 (needed with SIM=true option), must be installed and activated, consider doing: python3 -m venv ~/virtualenv/pesummary, source ~/virtualenv/pesummary/bin/activate, pip3 install pesummary==0.9.1". Stop. **FIX**: .. code-block:: bash source ~/virtualenv/pesummary/bin/activate .. _What you need to know about your new operating system: - **What you need to know about your new operating system** #. There is only one user (cwb), with password "gw150914" #. The password for the root user is "gw150914" #. Software included in cWB_on_VirtualBox_SL79_64bit_v2.ova - `A complete Scientific Linux 7.9 OS with GNOME (64 bit) `__ - `LSCSoft Repositories on Scientific Linux 7.x systems `_ - `LDG Client `__ - `Installed CernVM-FS for GWOSC Bulk Data `_ - `cWB library - gravitational wave burst analysis software `_ - `cWB config - configuration files used by the cWB pipeline to perform the analysis `_ - `GWOSC data - infrastructure used by cWB config to access to the GWOSC data `_ - `ROOT 6.14/06 - An object oriented framework for large scale data analysis `__ - `LALSuite 6.79 (lalsimulation 2.3.0) - LSC Algorithm Library `__ - `Skymap Statistic - simple module and exectutables to quantify skymaps and compare them `__ - `FRAMELIB 8.32 - Frame Library for GW data manipulation `__ - `HEALPix 3.40 - Hierarchical Equal Area isoLatitude Pixelization of a sphere `__ - `CVODE 2.7.0 - Suite for integration of ordinary differential equation systems (ODEs) `__ - `CFITSIO 3.45 - CFITSIO is a library for reading and writing data files in FITS (Flexible Image Transport System) data format `__ - `Baudline 1.08 - time/frequency browser for scientific visualization `__ | Running cWB within a Docker container ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An easy way to start using cWB on your computer is to use a `cWB Docker image `__. The `cWB_docker `__ git repository keeps track of all versions of such images. The cWB Docker image is basically a Linux debian Bullseye system on which we have installed cWB. The building of the image starts from an ad-hoc debian image, `cwb_docker:compilation_v1.1`, a linux system with all libraries which are needed by cWB. The ensemble of the two configuration files, i.e. the first `Dockerfile `__ and the second `Dockerfile `__, are basically a list of all the commands a user should call from the command line to assemble a cWB image: you may think of it as 'a recipee to cook' a cWB working environment on a Debian Bullseye Linux system (i.e. the ~30 steps needed to install cWB on a standard Debian Bullseye). Instead of baking the cake (cWB) yourself, an authomatic building system has already did the job for you. cWB_docker is alternative to the VirtualBox example described above and installation consists of only 2 main steps: #. install the Docker Community Edition for your `Mac `__ , `Windows `__ desktop or `Linux platform `__; #. download cWB, i.e. "pull" the latest cWB image (~1 GByte to download that will occupy ~3 GByte of disk space). Once cWB image has been downloaded locally, you can 3. start a Docker container based on that image; .. code-block:: bash 2. docker pull registry.gitlab.com/gwburst/public/cwb_docker:latest 3. docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -it registry.gitlab.com/gwburst/public/cwb_docker:latest (you can off-course, drop the -e and -v options if you don't need a display). Once step 3 is executed, you are returned with a Linux interactive shell (graphical or not depending on the options) where all cWB libraries and all 3rd party packages (CERN root, HEALPix, etc) are properly installed. Within this shell, you will then be able to run, for example, the cwb_watenv command which prints cWB environment variables: .. figure:: images/cwb_docker_shell.gif :align: center :alt: alternate text :figclass: align-center **Getting started with cWB_docker** | .. _More details about the interactive shell: - **More details about the interactive shell** #. You will be logged as user cWB_docker in your home with no root privileges #. The system is based on a customized Debian 10 (Buster) distribution (see the list of the extra `installed debian packages `__) #. cWB Software includes: - `cWB library - gravitational wave burst analysis software `_ - `cWB config - configuration files used by the cWB pipeline to perform the analysis `_ - `ROOT 6.14/06 - An object oriented framework for large scale data analysis `__ - `LALSuite 6.79 (lalsimulation 2.3.0) - LSC Algorithm Library `__ - `FRAMELIB 8.30 - Frame Library for GW data manipulation `__ - `HEALPix 3.50.0-3 - Hierarchical Equal Area isoLatitude Pixelization of a sphere `__ - `CVODE 2.7.0 - Suite for integration of ordinary differential equation systems (ODEs) `__ - `CFITSIO 3.450-3 - CFITSIO is a library for reading and writing data files in FITS (Flexible Image Transport System) data format `__ How to generate CED of the BigDog Event ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |LVK| | This example show how to use the easy CED to produce the CED of BigDog | and the comparison with the injected signal. For a detailed description about the BigDog test see: `"Blind Injection" Stress-Tests LIGO and VIRGO's Search for Gravitational Waves `__ First follow the instruction reported here : `cWB quick startup <#cwb-quick-startup>`__ then do : .. code-block:: bash cp -r $HOME_WAT/tools/cwb/examples/BigDog_L1H1V1_vs_BlindINJ BigDog_L1H1V1_vs_BlindINJ | then .. code-block:: bash cd BigDog_L1H1V1_vs_BlindINJ | A cWB Plugin is used to correct the wrong sign of the L1,H1 HW injections. | The plugin uses the file : .. code-block:: bash config/CBC_BLINDINJ_968654558_adj.xml | to generate with LAL the injected signals which is used for comparison with the reconstructed signal. The command to generate the **WP Pattern=5** analysis CED is : .. code-block:: bash cwb_setpipe 2G cwb_eced2G "--gps 968654557 --cfg config/user_parameters_WP5.C --tag _BigDog_WP5" \ "--ifo L1 --type L1_LDAS_C02_L2" "--ifo H1 --type H1_LDAS_C02_L2" "--ifo V1 --type HrecV2" and can be view with a web browser at the following link (only for LVK users) : `2G iMRA BigDog eced link `__ The command to generate the **2G iMRA** analysis CED is : .. code-block:: bash cwb_setpipe 2G cwb_eced2G "--gps 968654557 --cfg config/user_parameters_2G_iMRA.C --tag _BigDog_2G_iMRA" \ "--ifo L1 --type L1_LDAS_C02_L2" "--ifo H1 --type H1_LDAS_C02_L2" "--ifo V1 --type HrecV2" and can be view with a web browser at the following link (only for LVK users) : `2G iMRA BigDog eced link `__ The command to generate the **2G ISRA** analysis CED is : .. code-block:: bash cwb_setpipe 2G cwb_eced2G "--gps 968654557 --cfg config/user_parameters_2G_ISRA.C --tag _BigDog_2G_ISRA" \ "--ifo L1 --type L1_LDAS_C02_L2" "--ifo H1 --type H1_LDAS_C02_L2" "--ifo V1 --type HrecV2" and can be view with a web browser at the following link (only for LVK users) : `2G ISRA BigDog eced link `__ | ---- Operation ========= | How to show the probability skymap with Aladin Sky Atlas ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Aladin is an interactive software that can be used to visualize HEALPix skymap produced in CED by the cWB analysis | The Home Page of Aladin is : | `http://aladin.u-strasbg.fr/ `__ | The download page is : | `http://aladin.u-strasbg.fr/java/nph-aladin.pl?frame=downloading `__ | The simplest way to run it is as applet within a web browser : | http://aladin.u-strasbg.fr/java/nph-aladin.pl?script=grid+on; | Open a CED produced with HEALPix enabled WAT version, for example the BigDog : `BigDog CED `__ copy the link located on the top of the Sky Statistict skymap. `BigDog probability.fits `__ or: `BigDog skyprobcc.fits `__ | paste it on the Location window of Aladin and type return. | Click pan option and rotate the 3D skymap. | To change background color click pixels and select reverse | This is the screenshot of the likelihood skymap of the Big Dog event | |image136| How to switch Tensor GW to Scalar GW ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash To enable Scalar GW one must use cwb plugin. There are 2 examples in the directory : $HOME_WAT/tools/cwb/examples/ which explain how to do. | For time shift analysis see : | `S6A_R4_BKG_L1H1V1_SGW <#S6A-R4-BKG-L1H1V1-SGW>`__ | For simulation analysis see : | `S6A_R4_SIM_BRST_L1H1V1_SGW <#S6A-R4-SIM-BRST-L1H1V1-SGW>`__ | To see some anlysis done with Scalar GW go to : | `http://www.virgo.lnl.infn.it/Wiki/index.php/SGW_L1H1V1_TEST `__ How to plot Network Antenna Pattern ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash Under the directory $HOME_WAT/tools/gwat/tutorials/ there are 3 macros : - :cwb_library:`DrawAntennaPattern.C` used to plot AntPat of BuiltIn Detectors - :cwb_library:`DrawAntennaPatternUdD.C` used to plot AntPat of User Defined Detectors - :cwb_library:`DrawAntennaPatternScalar.C` used to plot AntPat of BuiltIn Detectors for Scalar GW Examples : .. code-block:: bash * Plot |Fx| in DPF of L1H1V1 network - root -l 'DrawAntennaPattern.C("L1H1V1",0)' |image137| .. code-block:: bash * Plot |F+| in DPF of L1H1V1 network - root -l 'DrawAntennaPattern.C("L1H1V1",1)' |image138| .. code-block:: bash * Plot sqrt(|F+|^2+|Fx|^2) in DPF of L1H1V1 network - root -l 'DrawAntennaPattern.C("L1H1V1",3)' |image139| .. code-block:: bash * Plot |F+| in DPF of L1H2H3V1 network (H2H3 are IFOs with V-shape : 45deg) - root -l DrawAntennaPatternUdD.C |image140| .. code-block:: bash * Plot sqrt(|F+|^2+|Fx|^2) in DPF of L1H1V1 network for Scalar GW - root -l 'DrawAntennaPatternScalar.C("L1H1V1",3)' |image141| For more options see the macro code How to dump the frame file contents ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Frame files are generate using the framelib. | `http://lappweb.in2p3.fr/virgo/FrameL/ `__ .. code-block:: bash framelib provides som utils to manage frames. FrDump is used to dump the frame contents. Example : - FrDump -d 4 -i H-H1_LDAS_C02_L2-955609344-128.gwf for more options do 'FrDump -h' How to create a celestial skymask ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Look `sky mask <#sky-mask>`__ for a description of what skymask is. .. code-block:: bash to create a celestial skymask use macro $HOME_WAT/tools/cwb/tutorials/CreateCelestialSkyMask.C To change setup use the '#define' at the beginnig of the macro code. #define SAVE_SKYMASK // Uncomment to save skymask file #define SOURCE_GPS -931158395 // if SOURCE_GPS<0 then SOURCE_RA/DEC are geographic coordinates // if SOURCE_GPS>0 then SOURCE_RA/DEC are celestial coordinates #define SOURCE_RA 60 // geographic/celestial coordinate longitude/ra #define SOURCE_DEC 30 // geographic/celestial coordinate latitude/dec #define SKYMASK_RADIUS 20 // skymask radius in degrees centered at (SOURCE_RA,SOURCE_DEC) To run macro do : root -l $HOME_WAT/tools/cwb/tutorials/CreateCelestialSkyMask.C The previous definitions produce a skymask centered to ra/dec=93.9/30 deg with radius=20 deg If SAVE_SKYMASK is uncommented the final name file is : CelestialSkyMask_DEC_30d0_RA_93d9_GPS_N931158395d0_RADIUS_20d0.txt | | if #define DRAW_SKYMASK is uncommented macro display the following image : | | |image142| How to plot skymap ~~~~~~~~~~~~~~~~~~~~~~~~ | | |image143| How to make gw frame file list with gw_data_find ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |LVK| | gw_data_find is a tool running on ATLAS and CIT clusters which allows | to find file paths of gw data | here are some examples how to use it. - list available observatories : .. code-block:: bash gw_data_find -w --show-observatories output is : G GHLTV GHLV H HL L V - list available types : .. code-block:: bash gw_data_find -y --show-types output is : H1_LDAS_C00_L2 H1_LDAS_C02_L2 H1_LDAS_C02_L2_CWINJ_TOT H1_LDR_C00_L2 H1_LDR_C02_L2 H1_NINJA2_G1000176_EARLY_GAUSSIAN H1_NINJA2_GAUSSIAN - list gps-second segments for all data of type specified : .. code-block:: bash gw_data_find -a --show-times gw_data_find --observatory=H --type=H1_LDAS_C02_L2 --show-times output is : 931035328 931116384 931116544 931813504 931813664 932228288 932228896 932231584 ... - list of H1 data files of type H1_LDAS_C02_L2 found in a gps range : .. code-block:: bash gw_data_find --observatory=H --type=H1_LDAS_C02_L2 \ --gps-start-time=955609344 --gps-end-time=955609544 --url-type=file output is : file://localhost/atlas/ldr/d11/H/H1_LDAS_C02_L2/0955/609000/H-H1_LDAS_C02_L2-955609344-128.gwf file://localhost/atlas/ldr/d11/H/H1_LDAS_C02_L2/0955/609000/H-H1_LDAS_C02_L2-955609472-128.gwf gw_data_find --observatory=GHLV --type=BRST_S6_10Q2 \ --gps-start-time=955609344 --gps-end-time=955609544--url-type=file output is : file://localhost/atlas/ldr/d11/GHLV/BRST_S6_10Q2/0955/609000/GHLV-BRST_S6_10Q2-955609215-1000.gwf gw_data_find can be used to generate the frame list files used by cWB : .. code-block:: bash gw_data_find --observatory=H --type=H1_LDAS_C02_L2 --url-type=file \ --gps-start-time=955609344 --gps-end-time=955609544 > H1_LDAS_C02_L2_955609344_955609544.frl here are reported the instructions to produce the frame lists used in the example `S6A_R4_BKG_L1H1V1 <#S6A-R4-BKG-L1H1V1>`__ .. code-block:: bash gw_data_find --observatory=H --type=H1_LDAS_C02_L2 --url-type=file \ --gps-start-time=931035520 --gps-end-time=935798528 > input/S6A_R3_H1_LDAS_C02_L2.frames gw_data_find --observatory=L --type=L1_LDAS_C02_L2 --url-type=file \ --gps-start-time=931035520 --gps-end-time=935798528 > input/S6A_R3_L1_LDAS_C02_L2.frames gw_data_find --observatory=V --type=HrecV3 --url-type=file \ --gps-start-time=931035520 --gps-end-time=935798528 > input/S6A_R1_V1_HrecV3.frames How to create data quality file list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |LVK| |TBU| Data quality are established from the LIGO-Virgo collaboration according to the system information from the detectors. It is necessay to apply data quality in production phase to exclude possible GW-like triggers surely due to environmental or instrumental origin. .. warning:: The following instrictions refer to S6 run. Starting from O1,O2 runs cWB pipeline uses the data quality stored in the cWB config git repository. .. note:: cWB pipeline uses CAT0,1,2,4 in production stage and CAT3 or HVETO in post-production stage. See `How job segments are created `__ There are three commands: - **ligolw_segment_query**: extract science mode information - **ligolw_segments_from_cats**: extract data quality information - **ligolw_print**: extract time lists | For detailed instruction about these commands do -help option or go to: | `https://www.lsc-group.phys.uwm.edu/daswg/wiki/S6OnlineGroup/segment_tools `__ To extract data quality, you should know where is the database (for instance ``https://segdb.ligo.caltech.edu``) and the xml file containing the data quality definition (for instance ``https://www.lsc-group.phys.uwm.edu/bursts/public/runs/s6/dqv/category_definer/``) Examples: Let's consider the data quality used for this example: `S6A_R4_BKG_L1H1V1_SLAG <#S6A-R4-BKG-L1H1V1-SLAG>`__ We need to know: - **database**: https://segdb.ligo.caltech.edu - **data quality definition file**: https://www.lsc-group.phys.uwm.edu/bursts/public/runs/s6/dqv/category_definer/H1L1V1-S6D_BURST_ALLSKY_OFFLINE-961545615-0.xml - **start, stop**: 931035615, 935798415 - **Science mode definition**: H1:DMT-SCIENCE:4, L1:DMT-SCIENCE:4, V1:ITF_SCIENCEMODE Obtained these information we can proceed. There are three steps: #. Virgo Science segment list for period .. code-block:: bash ligolw_segment_query \ --segment-url https://segdb.ligo.caltech.edu --query-segments \ -d -s 931035615 -e 935798415 --include-segments V1:ITF_SCIENCEMODE | \ ligolw_print --table segment --column start_time --column end_time \ --delimiter " "> S6A_OFFLINE_V1SCIENCE.txt To obtain the other detectors, just substitute V1:ITF_SCIENCEMODE with the other Science mode, and the name of the output file (S6A_OFFLINE_V1SCIENCE.txt) #. | LIGO-Virgo data quality xml files, separating the different categories (CAT1-2-3-4). | This command create some xml files in the xml directory, each one specific of one category and one detector, for instance: for Virgo CAT1:\* V1-VETOTIME_CAT1-931035615-4762800.xml .. code-block:: bash ligolw_segments_from_cats \ --veto-file=https://www.lsc-group.phys.uwm.edu/bursts/public/runs/s6/ \ dqv/category_definer/H1L1V1-S6A_BURST_ALLSKY_OFFLINE-930960015-5011200.xml \ --gps-start-time=931035615 --gps-end-time=935798415 -d --separate-categories \ --segment-url https://segdb.ligo.caltech.edu -o xml/ #. Get lists from xml, for instance for V1 CAT1: .. code-block:: bash ligolw_print \ xml/V1-VETOTIME_CAT1-931035615-4762800.xml --table segment \ --colum start_time --column end_time --delimiter " " \ > S6A_OFFLINE_V1_DQCAT1SEGMENTS.txt To obtain the other detectors, just substitute detector (``V1``) and category (``CAT1``) in input (``xml/V1-VETOTIME_CAT1-931035615-4762800.xml``) and output (``S6A_OFFLINE_V1_DQCAT4SEGMENTS.txt``) files. How to use the Condor batch system to play with jobs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |LVK| | Condor is the job batch system used in the clusters ATLAS,CIT,CNAF,CASCINA | Here we report the most common comands used to submit/list/delete/... jobs | Before to start jobs the user must define the dag and sub files. In cWB analysis these files are created automatically (see `cwb_condor `__) | The following are an example of sub and dag files : SUB FILE : condor/ADV_SIM_BRST_L1H1V1_run1.sub .. code-block:: bash niverse = vanilla getenv = true priority = $(PRI) on_exit_hold = ( ExitCode != 0 ) request_memory = 3000 executable = net.sh environment = "cWB_JOBID=$(PID)" output = /home/waveburst/ADV_SIM_BRST_L1H1V1_run1/log/$(PID)_ADV_SIM_BRST_L1H1V1_run1.out error = /home/waveburst/ADV_SIM_BRST_L1H1V1_run1/log/$(PID)_ADV_SIM_BRST_L1H1V1_run1.err log = /local/user/waveburst/ADV_SIM_BRST_L1H1V1_run1.log notification = never rank=memory queue DAG FILE : condor/ADV_SIM_BRST_L1H1V1_run1.dag (1 job) .. code-block:: bash JOB A1 /home/waveburst/ADV_SIM_BRST_L1H1V1_run1/condor/ADV_SIM_BRST_L1H1V1_run1.sub VARS A1 PID="1" RETRY A1 3000 | The second step is the submission of dag file. | In cWB analysis the submission can be executed with `cwb_condor `__ | or : .. code-block:: bash cd condor condor_submit_dag ADV_SIM_BRST_L1H1V1_run1.dag To see the job status of user waveburst do : .. code-block:: bash condor_q waveburst To see the global user status : .. code-block:: bash condor_userprio -all To remove a job do : .. code-block:: bash condor_rm jobid jobdid is the first number of each line reported by the command condor_q To hold all jobs in idle status belonging to the user waveburst do : .. code-block:: bash condor_q waveburst | grep " I " | awk '/waveburst/ {print $1}' | xargs condor_hold To remove all jobs belonging to the user waveburst do : .. code-block:: bash condor_q waveburst | awk '/waveburst/ {print $1}' | xargs condor_rm To release jobs with id [24086884.0:24087486.0] belonging to the user waveburst do : .. code-block:: bash condor_q waveburst | awk '$0>24086884.0' | awk '$0<24087486.0' | \ awk '/waveburst/ {print $1}' | xargs condor_release .. _how-to-read-the-events-parameters-from-the-output-root-files-produced-by-the-cwb-pipeline: How to read the event's parameters from the output root files produced by the cWB pipeline ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The cWB pipeline produces the estimated parameters under the output directory | Using default parameters, for each job there is a txt and a ROOT file. | The ROOT file is considered for the production of final results, | the txt files are stored if need to access in text mode. | WARNING : ROOT files contain the full list of the injected events and the list detected events, while txt files contain only the list of the detected events. | The command `cwb_merge <#cwb-merge>`__ is used to collect all root files into two root merged files. | The merged files are created under the merge directory and are : | merge/wave\*.root // contain the list of the detected events | merge/mdc\*.root // contain the list of the injected events | See the following examples for more details about how the root files are produced: | - `How to run Background <#background-example>`__ | - `How to run Simulation <#simulation-example>`__ The wave and mdc root files can be read from a macro. The following examples - :cwb_library:`ReadFileWAVE.C` - :cwb_library:`ReadFileMDC.C` show how to do. .. code-block:: bash The macro : trunk/tools/cwb/tutorials/ReadFileWAVE.C show how to read event parameters from root wave file The macro must be modified according what user needs. To run the macro do : root -l 'ReadFileWAVE.C("merge/wave_file_name.root",nIFO)' where nIFO is the number of detectors in the network The macro : trunk/tools/cwb/tutorials/ReadFileMDC.C show how to read event parameters from root mdc file The macro must be modified according what user needs. To run the macro do : root -l 'ReadFileMDC.C("merge/mdc_file_name.root",nIFO)' where nIFO is the number of detectors in the network Both macros can be used also to read events from the single output root job files: root -l 'ReadFileWAVE.C("output/wave_file_name_jobxxx.root",nIFO)' root -l 'ReadFileMDC.C("output/wave_file_name_jobxxx.root",nIFO)' | The macros - :cwb_library:`ReadFileWAVE.C` - :cwb_library:`ReadFileMDC.C` show how to read some parameters. | The full list of the injected parameters are reported in the header file :cwb_library:`injection.hh` | The full list of the detected parameters are reported in the header file :cwb_library:`netevent.hh` How to use the On The Fly MDC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The cWB simulation pipeline can read MDC from external frames or generate MDC On The Fly (OTF). | To use MDC OTF it is necessary to apply the plugin : OTC - :cwb_library:`cWB_Plugin_MDC_OTF.C` | A macro is used to configure the OTC Plugin. | The following macros illustrate some examples that shown how to setup the OTC MDC. - Config Plugin to generate injected on the fly EOBNRv2 from LAL : `Config - :cwb_library:`cWB_Plugin_MDC_OTF_Config_EOBNRv2pseudoFourPN.C` - Config Plugin to generate injected on the fly NSNS from LAL : `Config - :cwb_library:`cWB_Plugin_MDC_OTF_Config_NSNS.C` - Config Plugin to generate injected on the fly Burst MDC : `Config - :cwb_library:`cWB_Plugin_MDC_OTF_Config_BRST.C` - Config Plugin to generate injected on the fly eBBH MDC : `Config - :cwb_library:`cWB_Plugin_MDC_OTF_Config_eBBH.C` | The OTF Config macros use the :cwb_library:`cWB::mdc` class and specifically : | :cwb_library:`cWB::mdc::AddWaveform` | :cwb_library:`cWB::mdc::SetSkyDistribution` The OTC Plugin and the configuration macro must be declated in the user_parameters.C file. .. code-block:: bash plugin = TMacro("cWB_Plugin_MDC_OTF.C"); // Macro source configPlugin = TMacro("cWB_Plugin_MDC_OTF_Config_BRST.C"); // Macro config For a more details see : `Plugins <#plugins>`__ How to use a distance distribution instead of a fixed hrss one for On The Fly MDC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The usual injection procedure (simulation=1) consists of injecting for each amplitude factors the same number of events for each waveform. In this way statistic for each hrss (n) depends on the analyzed time (T), injection rate (R) and waveforms number (N) in the following way: n = T\*R/N. Setting simulation=4 allows to define a distance distribution to be used for injecting MDC. In this way the hrss distributions are not discrete, but continous. Given that at high amplitudes the expected efficiency approaches unity, we can modify the hrss distribution of injected wave amplitudes as to increase the statistic at low amplitude at the expences of the number of high amplitude signals. You have to set the following things: - Expected hrss50% for each waveform: this is used to assure that the efficiency curve is complete for each waveform - Distance range (in a form of [d_min,d_max]): limits are expressed in kpc, hrss50% is linked to 10 kpc, reminding that distance\*hrss=costant; - Distance ditribution (using a formula); | This should be done in a Plugin, an example can be find here: | Config simulation=4 - :cwb_library:`cWB_Plugin_Sim4_BRST_Config.C` | Plugin - :cwb_library:`cWB_Plugin_Sim4.C` On the `user_parameters.C <#user-parameters-c>`__ in the `Simulation parameters <#simulation-parameters>`__ the settings are: .. code-block:: bash simulation = 4; nfactor = 25; double FACTORS[] ={...}; for(int i=0;i`__ are not important, because the analysis substitute them with a progressive number. The distance distribution is defined in the ConfigPlugin (put reference). In the library are integrated formula of the type: x\*n over n could be any number. These can be defined in the way: .. code-block:: bash par.resize(4); par[0].name="entries";par[0].value=100000; par[1].name="rho_min";par[1].value=.2; par[2].name="rho_max";par[2].value=60.; par[3].name="rho_dist";par[3].value=1.; MDC.SetSkyDistribution(MDC_RANDOM,par,seed); where - par[0] is ...; - par[1] and par[2] are minimum and maximum distance, in kpc; - par[3] is the exponent of the distribution (n) It is also possible to set a user-defined function for distribution in this way: .. code-block:: bash par.resize(3); par[0].name="entries";par[0].value=100000; par[1].name="rho_min";par[1].value=.2; par[2].name="rho_max";par[2].value=60.; MDC.SetSkyDistribution(MDC_RANDOM,"formula",par,seed); where the formula is of the type f(x), for instance : .. code-block:: bash MDC.SetSkyDistribution(MDC_RANDOM,"x",par,seed); equivalent to the example above where we define the rho_dist=1 for the par[3]. How to do an interactive multistages 2G analysis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Here it is presented an example which shows how to use the 2G multistages analysis. | The analysis is performed stage by stage to illustrate how to investigate what the analysis is doing. | The standard 2G analysis is done in a single stage or in two stages (trigger production and event reconstruction). | | In this example we use the 2G pipeline in simulation mode. | - The 2G configuration setup is : config/user_parameters.C - The network is L1H1V1 - The noise is a simulateted gaussian noise with advanced detectors PSD - The MDC is a NSNS injection produced "On The Fly" from LAL (Injected with a network SNR=120) - Search is unmodeled rMRA - Use 6 resolution levels (from 3 to 8) | | |image144| | - **SETUP** : create working directories + generate simulated noise | \* The following is the list of the preliminary steps for the setup: #. setup the cwb environment according to the cluster type : `cWB quick startup <#cwb-quick-startup>`__ #. | copy the example directory : .. code-block:: bash cp -r $HOME_LIBS/WAT/trunk/tools/cwb/examples/ADV_SIM_NSNS_L1H1V1_MultiStages2G MultiStages2G #. | change directory : .. code-block:: bash cd MultiStages2G #. | - create working directories | - create noise frames with simulated ADV strain .. code-block:: bash make setup | - **INIT STAGE** : Read Config / CAT1-2 / User Plugin | | |image145| | | **to process the INIT stage execute the command:** .. code-block:: bash cwb_inet2G config/user_parameters.C INIT 1 | **the output root file is:** | data/init_931158208_192_MultiStages2G_job1.root | **to display the contents of the output root file use the following commands** - **browse the root file:** ( ) | | |image146| | .. code-block:: bash root data/init_931158208_192_MultiStages2G_job1.root | **from the ROOT browser type:** | new TBrowser | **then double click the folder ROOT files and then on the item** | data/init_931158208_192_MultiStages2G_job1.root | **the following sub items are displayed:** .. code-block:: bash config;1 network;1 history;1 cwb;1 | **to see the contents of objects double click on the specific item** | Note: the config,history items are opened in the vi viewer, to exit type : and then type q | - | **to dump the cWB config from shell command do:** .. code-block:: bash cwb_dump config data/init_931158208_192_MultiStages2G_job1.root dump | **the output config txt file is:** | report/dump/init_931158208_192_MultiStages2G_job1.C | **to view with the cWB config from shell command do:** .. code-block:: bash cwb_dump config data/init_931158208_192_MultiStages2G_job1.root - | **to dump the cWB history from shell command do:** .. code-block:: bash cwb_dump history data/init_931158208_192_MultiStages2G_job1.root dump | **the output history txt file is:** | report/dump/init_931158208_192_MultiStages2G_job1.history | **to view with the cWB history from shell command do:** .. code-block:: bash cwb_dump history data/init_931158208_192_MultiStages2G_job1.root | - **STRAIN STAGE** : Read gw-strain / MDC data frames(or On The Fly MDC) | | |image147| | | **to process the STRAIN stage execute the command:** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root STRAIN | **the output root file is:** | data/strain_931158208_192_MultiStages2G_job1.root | | **to display infos about strain/mdc use the following commands** - **produce L1 PSD and visualize the plot in the ROOT browser** ( ) | | |image148| | .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root STRAIN "" \ '--tool psd --ifo L1 --type strain --draw true' | - | **produce L1 PSD and save the plot under the report/dump directory** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root STRAIN "" \ '--tool psd --ifo L1 --type strain --draw true --save true' | **the output png file is:** | report/dump/psd_STRAIN_L1_931158200_MultiStages2G_job1.png | - | **display H1 noise with `FrDisplay `__** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root STRAIN "" \ '--tool frdisplay --hpf 50 --decimateby 8 --ifo H1 --type strain' | - | **display injected waveforms in ROOT browser (Time/FFT/TF domain)** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root STRAIN "" \ '--tool inj --draw true' | - | **double click on L1 folder, select the item L1:50.00;1 and open the popup menu with the right mouse bottom** | The following options are availables : | | - PlotTime : Plot waveform in time domain ( ) | | |image149| | - PlotFFT : Plot waveform FFT ( ) | | |image150| | - PlotTF : Plot waveform spettrogram ( ) | | |image151| | | - PrintParameters : Show waveform infos (start,stop,rate,...) | - PrinComment : Show the MDC log file infos (MDC type, start, ifos, antenna pattern, ...) | - DumpToFile : Dump waveform to ascii file | - **CSTRAIN STAGE** : Data Conditioning (Line Removal & Whitening) | | |image152| | | **to process the CSTRAIN stage execute the command:** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root CSTRAIN | **the output root file is:** | data/strain_931158208_192_MultiStages2G_job1.root | | **to display infos about noise use the following commands** - **produce L1 nRMS estimated at GPS=931158300.55 and and save it to a file** .. code-block:: bash cwb_inet2G data/init_931158208_192_MultiStages2G_job1.root CSTRAIN "" \ '--tool nrms --ifo L1 --type strain --gps 931158300.55' | **the output txt file is:** | report/dump/nrms_gps931158300.55_STRAIN_L1_931158200_MultiStages2G_job1.txt | - **produce L1 T/F nRMS and visualize the plot in the ROOT browser** ( ) | | |image153| | .. code-block:: bash cwb_inet2G data/strain_931158208_192_MultiStages2G_job1.root CSTRAIN "" \ '--tool nrms --ifo L1 --type strain --draw true' | - | **produce whitend H1 PSD and visualize the plot in the ROOT browser** .. code-block:: bash cwb_inet2G data/strain_931158208_192_MultiStages2G_job1.root CSTRAIN "" \ '--tool psd --ifo H1 --type white --draw true' | - | **produce whitend H1 PSD and save the plot under the report/dump directory** .. code-block:: bash cwb_inet2G data/strain_931158208_192_MultiStages2G_job1.root CSTRAIN "" \ '--tool psd --ifo H1 --type white --draw true --save true' | **the output png file is:** | report/dump/psd_WHITE_H1_931158200_MultiStages2G_job1.png | **to display the output png file do:** | display report/dump/psd_WHITE_H1_931158200_MultiStages2G_job1.png | - | **produce whitend H1 TF WDM and visualize the plot in the ROOT browser** .. code-block:: bash cwb_inet2G data/strain_931158208_192_MultiStages2G_job1.root CSTRAIN "" \ '--tool wdm --ifo L1 --type white --draw true' | - | **double click on L1:level-8;1 folder** | There are three type of plots: | - L1:tf:white-8;1 - scalogram of whitened L1 data at resolution level=8 ( ) | | |image154| | - L1:t:white-8;1 - projection on time axis of scalogram of whitened L1 data at resolution level=8 ( ) | | |image155| | - L1:f:white-8;1 - projection on frequency axis of scalogram of whitened L1 data at resolution level=8 ( ) | | |image156| | | - **COHERENCE STAGE** : TF Pixels Selection | | |image157| | | **to process the COHERENCE stage execute the command:** .. code-block:: bash cwb_inet2G data/cstrain_931158208_192_MultiStages2G_job1.root COHERENCE | **the output root file is:** | data/cstrain_931158208_192_MultiStages2G_job1.root | | **to display infos about data processed in this stage use the following commands** - | **produce TF WDM of maximum energy (before the pixel selection) at level 8 and visualize the plot in the ROOT browser** .. code-block:: bash cwb_inet2G data/cstrain_931158208_192_MultiStages2G_job1.root COHERENCE "" \ '--tool emax --level 8 --draw true' | In the browser are listed 4 folders : L1,H1,V1,NET - NET folder is the sum of 3 detectors max energy | For each folder there are three type of plots (Ex:NET): | | - L1:tf:0-8;1 - scalogram of NET max energy at resolution level=8 and factor=0 ( ) | | |image158| | | - L1:t:0-8;1 - proj on time axis of NET max energy at resolution level=8 and factor=0 | - L1:f:0-8;1 - proj on frequency axis of NET max energy at resolution level=8 and factor=0 | - **SUPERCLUSTER STAGE** : Clustering & Cluster Selection | | |image159| | | **to process the SUPERCLUSTER stage execute the command:** .. code-block:: bash cwb_inet2G data/coherence_931158208_192_MultiStages2G_job1.root SUPERCLUSTER | **the output root file is the trigger file:** | data/supercluster_931158208_192_MultiStages2G_job1.root | **to display the contents of the trigger file use the following commands** - **browse the root file:** ( ) | | |image160| | .. code-block:: bash root data/supercluster_931158208_192_MultiStages2G_job1.root | **from the ROOT browser type:** | new TBrowser | **then double click the folder ROOT files and then on the item** | data/supercluster_931158208_192_MultiStages2G_job1.root | **the following sub items are displayed:** .. code-block:: bash config;1 network;1 history;1 cwb;1 sparse - contains the sparse maps supercluster - contains the cluster structures waveform - contains the whitened injected waveforms | **to see the contents of objects double click on the specific item** | - | **produce TF WDM of L1 sparse map and visualize the plot in the ROOT browser** .. code-block:: bash rm data/wave_931158208_192_MultiStages2G_120_job1.root cwb_inet2G data/coherence_931158208_192_MultiStages2G_job1.root SUPERCLUSTER "" \ '--tool sparse --type supercluster --ifo L1 --draw true' | From the ROOT browser double click the folder L1:level-8;1 and double click on L1:tf:sparse;8;1 | The plot show the L1 scalogram of the sparse map at reseolution level=8 ( ) | | |image161| | In the sparse map are displayed the core pixels & the halo pixels. See the **`SSeries :cwb_library:`SSeries`** class | - **LIKELIHOOD STAGE** : Event Reconstruction & Output Parameters | | |image162| | | **to process the LIKELIHOOD stage execute the command:** .. code-block:: bash cwb_inet2G data/supercluster_931158208_192_MultiStages2G_job1.root LIKELIHOOD | **the output root file is:** | data/wave_931158208_192_MultiStages2G_job1.root | | **to display infos about data processed in this stage use the following commands** - | **produce CED of the event** .. code-block:: bash cwb_inet2G data/supercluster_931158208_192_MultiStages2G_job1.root LIKELIHOOD "" ced | **the output CED is:** | ced_931158208_192_MultiStages2G_60_job1 | To browse the ced data from web the directory must be moved to report/ced : .. code-block:: bash mv ced_931158208_192_MultiStages2G_60_job1 report/ced/ The web link in ATLAS is : https://ldas-jobs.ligo.caltech.edu/~username/LSC/reports/MultiStages2G | - | **produce TF WDM of L1 sparse map and visualize the plot in the ROOT browser** .. code-block:: bash rm data/wave_931158208_192_MultiStages2G_120_job1.root cwb_inet2G data/supercluster_931158208_192_MultiStages2G_job1.root LIKELIHOOD "" \ '--tool sparse --type likelihood --ifo L1 --draw true' | From the ROOT browser double click the folder L1:level-8;1 and double click on L1:tf:sparse;8;1 | The plot show the L1 scalogram of the sparse map at reseolution level=8 ( ) | | |image163| | | In the sparse map are displayed the core pixels & the halo pixels. See the **`SSeries :cwb_library:`SSeries`** class - **browse the root file:** ( ) | | |image164| | | If the output wave file has been removed regenerate it again : | cwb_inet2G data/supercluster_931158208_192_MultiStages2G_job1.root LIKELIHOOD .. code-block:: bash root data/wave_931158208_192_MultiStages2G_120_job1.root | **from the ROOT browser type:** | new TBrowser | **then double click the folder ROOT files and then on the item** | data/wave_931158208_192_MultiStages2G_120_job1.root | **the following sub items are displayed:** .. code-block:: bash history;1 - is the history livetime - is the tree of the livetimes waveburst - is the tree of the reconstructed events mdc - is the tree of the injections | **to see the contents of objects double click on the specific item** | - | **to dump the event to screen from shell command do:** .. code-block:: bash cwb_dump events data/init_931158208_192_MultiStages2G_120_job1.root - | **to dump the event to file from shell command do:** .. code-block:: bash cwb_dump events data/wave_931158208_192_MultiStages2G_120_job1.root > \ data/wave_931158208_192_MultiStages2G_120_job1.txt The ascii file contains all the event recontructed parameters .. code-block:: bash nevent: 1 ndim: 3 run: 1 rho: 52.779896 netCC: 0.963956 netED: 0.005008 penalty: 0.995367 gnet: 0.852102 anet: 0.673093 inet: 0.552534 likelihood: 1.001513e+04 ecor: 5.570363e+03 ECOR: 5.570363e+03 factor: 120.000000 range: 0.000000 mchirp: 1.218770 norm: 0.948450 usize: 0 ifo: L1 H1 V1 eventID: 1 0 rho: 52.779896 51.804337 type: 1 1 rate: 0 0 0 volume: 2123 2123 2123 size: 48 2001 0 lag: 0.000000 0.000000 0.000000 slag: 0.000000 0.000000 0.000000 phi: 6.428571 11.458068 39.961182 6.428571 theta: 44.610798 44.999981 45.389202 44.610798 psi: 1.061384 162.416916 iota: 0.079406 0.155110 bp: 0.0198 0.2747 -0.8358 inj_bp: -0.0083 0.2853 -0.7636 bx: 0.4046 -0.3521 -0.5458 inj_bx: 0.3606 -0.2905 -0.6452 chirp: 1.218770 1.196272 0.040930 99.997925 0.892147 0.942552 range: 0.000000 1.666667 Deff: 14.044416 8.113791 8.414166 mass: 1.400000 1.400000 spin: 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 eBBH: 0.000000 0.000000 0.000000 null: 9.100333e+01 7.176315e+01 4.972414e+01 strain: 2.857830e-22 2.435557e+01 hrss: 1.050772e-22 1.937086e-22 1.819552e-22 inj_hrss: 1.565444e-22 2.709419e-22 2.611956e-22 noise: 2.631055e-24 2.687038e-24 3.527480e-24 segment: 931158200.0000 931158408.0000 931158200.0000 931158408.0000 931158200.0000 931158408.0000 start: 931158282.0000 931158282.0000 931158282.0000 time: 931158295.7714 931158295.7725 931158295.7562 stop: 931158299.9609 931158299.9609 931158299.9609 inj_time: 931158292.0315 931158292.0323 931158292.0152 left: 82.000000 82.000000 82.000000 right: 108.039062 108.039062 108.039062 duration: 17.960938 17.960938 17.960938 frequency: 108.255516 108.255516 108.255516 low: 45.000000 45.000000 45.000000 high: 480.000000 480.000000 480.000000 bandwidth: 435.000000 435.000000 435.000000 snr: 1.819248e+03 5.394480e+03 2.919318e+03 xSNR: 1.741324e+03 5.443648e+03 2.887045e+03 sSNR: 1.666738e+03 5.493264e+03 2.855128e+03 iSNR: 2571.384766 7439.704590 3851.914307 oSNR: 1666.737793 5493.264160 2855.128418 ioSNR: 1659.589111 5176.358887 2728.931152 netcc: 0.963956 0.872941 0.912740 0.977282 neted: 27.897186 27.897186 156.118530 212.490631 120253.312500 erA: 4.173 0.648 0.916 1.122 1.296 1.449 1.587 1.774 2.049 2.467 0.052 | How to do the Parameter Estimation Analysis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Here it is presented the procedure used for the Parameter Estimation (PE) analysis. | The procedure is implemented with a cWB Plugin : - :cwb_library:`cWB_Plugin_PE.C` | | **Note : The PE plugin works only for wave packet `pattern <#wave-packet-parameters>`__ > 0** | The current implemetation can be used to estimate the following quantities: - Reconstructed waveform : median and 50,90 percentiles - Reconstructed istantaneous frequency (with Hilbet tranforms) : median and 50,90 percentiles - Reconstructed waveform vs Injected waveform (only in simulation mode) - Median SkyMap Localization - Chirp Mass and Error estimation The following sheme shows the method : | | |image165| | | The following is the list of steps necessary to perform the PE analysis - **CONFIGURATION PARAMETERS** : description of the parameters used to configure the PE analysis .. code-block:: bash pe_id // process only ID=PE_ID [0(def) -> ALL] pe_trials // number of trials (def=100) pe_signal // signal used for trials : 0(def)/1/2 // 0 - reconstructed waveform // 1 - injected waveform (available only in simulation mode) // 2 - original waveform = (reconstructed+null) pe_noise // noise used for trials : 0/1(def)/2 // 0 - waveform is injected in the whitened HoT and apply Coherent+SuperCluster+Likelihood stages // 1 - add gaussian noise to likelihood sparse maps and apply Likelihood stage // 2 - add whitened HoT to likelihood sparse maps and apply Likelihood stage pe_amp_cal_err // max percentage of amplitude miscalibration : def(0) -> disabled // if>0 -> uniform in [1-pe_amp_cal_err,1+pe_amp_cal_err] else gaus(1,pe_amp_cal_err) Example : pe_amp_cal_err=0.1 // det1 : amp miscal (uniform in -0.9,+1.1) pe_amp_cal_err=0.1 // det2 : ... pe_phs_cal_err // max phase (degrees) miscalibration : def(0) -> disabled // if>0 -> uniform in [-pe_phs_cal_err,+pe_phs_cal_err] else gaus(pe_phs_cal_err) Example : pe_phs_cal_err=10 // det1 : phase miscal (deg) (uniform in -10,+10) pe_phs_cal_err=10 // det2 : ... pe_multitask // true/false(def) if enabled, PE trials are executed by different jobs in multitask only simulation=0 and single event (gps>0) pe_ced_dump // dump CED at gLRETRY=PE_CED_DUMP (def(-1) -> disabled) pe_skymask // skymask used for trials : 0(def)/1/2/3 // 0 - disable -> search over all sky // 1 - skymask with radius 0.1(deg) and source selected according the reconstructed skymap probability // 2 - skymask select only the sky position where the waveform is reconstructed (the maximum of detection statistic) // 3 - skymask select only the sky position where the waveform has been injected pe_seed // seed used by PE for random generation - 0(def) -> random seed pe_gps // if >0 only gps +/- iwindow is analyzed - 0(def) -> disabled Example : pe_gps=1167554561 pe_ced options // the following options are available : tfmap/rdr/skymap/rec/inj/rinj/cm/distr/null Example : to enable/disable tfmap do : pe_ced_tfmap_enable/pe_ced_tfmap_disable // tfmap - pe_ced_enable(def)/disable Shows/Hides the Time-Frequency Maps Tab -> Spectrograms, Scalograms, TF Likelihood,Null // rdr - pe_ced_enable(def)/disable Shows/Hides Reconstructed Detector Response Tab // skymap - pe_ced_enable(def)/disable Shows/Hides SkyMaps Tab // rec - pe_ced_enable(def)/disable Shows/Hides Reconstructed Waveforms/Instantaneous-Frequency with errors Tab // inj - pe_ced_enable(def)/disable Showsi/Hides Injection' tab reports the comparison with the injected whitened waveform // rinj - pe_ced_enable/disable(def) Shows/Hides Injection' tab reports the comparison with the injected whitened waveform in time-frequency subspace of the PointEstimated waveform // cm - pe_ced_enable(def)/disable Shows/Hides Chirp Mass Value/Error Distributions Tab // distr - pe_ced_enable/disable(def) Shows/Hides Residuals Distributions Tab // null - pe_ced_enable/disable(def) Shows/Hides Null Pixels Distributions Tab // pca - pe_ced_enable/disable(def) Shows/Hides the PCA TF likelihood to the tfmap Tab Note : tfmap must be enabled pe_output options // dump objects on the output wave root file (only if cedDump=false) // by default all are disabled // Example : to enable/disable reconstructed waveform pe_output_enable=rec / pe_output_disable=rec // options inj // save injection to the output root file rec // save reconstructed waveform to the output root file wht // save whitened data (inthe time range of rec) to the output root file med // save median to the output root file p50 // save percentile 50 to the output root file p90 // save percentile 90 to the output root file avr // save averaged waveform to the output root file rms // save RMS to the output root file | - **SETUP** : how to setup the PE | The PE parameter must be defined in the user_parameters.C file : #. | define the plugin .. code-block:: bash plugin = TMacro(gSystem->ExpandPathName("$HOME_cWB/plugins/cWB_Plugin_PE.C")); if you need to compile the plugin than copy plugin into your working folder in macro directory : .. code-block:: bash cp $HOME_cWB/plugins/cWB_Plugin_PE.C macro/. compile : .. code-block:: bash root -l -b macro/cWB_Plugin_PE.C++ add the following lines in the user_parameters.C file : .. code-block:: bash plugin = TMacro("macro/cWB_Plugin_PE.C"); plugin.SetTitle("macro/cWB_Plugin_PE_C.so"); | #. | Add PE parameters (this is an example) : .. code-block:: bash cedDump=true; // this option enable the creation of the PE CED it is an extended version of the standard CED Note : if cedDump is enabled then the pe_output option are diabled pe_output enable output on wave root file which is not produced when CED is enabled TString optpe = ""; // Note : add space at the end of each line optpe += "pe_trials=100 "; // number of trials optpe += "pe_id=0 "; // process all delected events //optpe += "pe_gps=1167554561 "; // only gps +/- iwindow is analyzed optpe += "pe_noise=0 "; // signal used for trials is the reconstructed optpe += "pe_signal=0 "; // waveform is injected in the whitened HoT and // apply for each trial Coherent+SuperCluster+Likelihood optpe += "pe_amp_cal_err=0.1 "; // det1 : amp miscal (uniform in -0.9,+1.1) optpe += "pe_phs_cal_err=10 "; // det1 : phase miscal (deg) (uniform in -10,+10) optpe += "pe_amp_cal_err=0.1 "; // det2 : ... optpe += "pe_phs_cal_err=10 "; // det2 : ... optpe += "pe_ced_dump=-1 "; // dump CED at gLRETRY=PE_CED_DUMP optpe += "pe_skymask=0 "; // disable -> search over all sky //optpe += "pe_multitask=true "; // enable/disable multitask // CED options (only if cedDump=true) optpe += "pe_ced_enable=tfmap "; optpe += "pe_ced_enable=rdr "; optpe += "pe_ced_enable=skymap "; optpe += "pe_ced_enable=rec "; optpe += "pe_ced_enable=inj "; optpe += "pe_ced_disable=rinj "; optpe += "pe_ced_enable=cm "; optpe += "pe_ced_enable=distr "; optpe += "pe_ced_enable=null "; optpe += "pe_ced_disable=pca "; // OUTPUT options (only if cedDump=false) optpe += "pe_output_enable=inj "; // save injection to the output root file optpe += "pe_output_enable=rec "; // save reconstructed waveform to the output root file optpe += "pe_output_enable=wht "; // save whitened data to the output root file optpe += "pe_output_enable=med "; // save median to the output root file optpe += "pe_output_enable=p50 "; // save percentile 50 to the output root file optpe += "pe_output_enable=p90 "; // save percentile 90 to the output root file optpe += "pe_output_enable=avr "; // save averaged waveform to the output root file optpe += "pe_output_enable=rms "; // save RMS to the output root file strcpy(parPlugin,optpe.Data()); // set PE plugin parameters strcpy(comment,"pe configuration example"); | - **RUNNING** : How to run PE analysis | The PE can be executed in different modes - **PE on one zero lag event (simulation=0)** | | Note : simulation parameter must be 0 | **single task** .. code-block:: bash add the gps parameter to the PE configuration list , for example : optpe += "pe_gps=1167554561 "; // only gps +/- iwindow is analyzed then execute the following command (consider job=40) : cwb_inet 40 0 ced // CED is produced cwb_inet 40 // CED is not produced if you want to execute in bach mode, create the dag file and select only the job 40 and do submit : cwb_condor submit condor/file.dag | **multi task** .. code-block:: bash in multitask mode it is possible to execute each trial with a separate job this speedup the execution First of all we must generate a special dag file (consider job=40) The following 2 PE parameters must be declared in the user_parameters.C file : optpe += "pe_multitask=true "; optpe += "pe_trials=100 "; then execute : cwb_condor mtpe 40 Note : to output CED add cedDump=true; to user_parameters.C the following files are created under the condor directory : condor/work_dir.mtpe.sub condor/work_dir.mtpe.dag The dag file contains 100 entries, the last job is executed as last job and collect all data produced by the first 99 jobs Execute : cwb_condor submit condor/work_dir.mtpe.dag | - **PE with simulated injections (simulation=4)** | | Note : simulation parameter must be 4 | Note : only 1 injection per segment must be used because the PE uses the segment noise for trials | To increase the number of injection per segment we use simulation=4 and inject 1 waveform per factor | For example, in user_parameters.C the following parameters must be declared : .. code-block:: bash simulation = 4; // factors are used as a trial factor nfactor = 10; // number of factors -> 1 injection per factor factors[0]=1; // starting factor | In this operative mode we must merge the cWB_Plugin_PE.C with the Injection plugin : cWB_Plugin_MDC_OTF.C .. code-block:: bash cwb_mplugin macro/cWB_Plugin_MDC_OTF_PE.C \ $HOME_cWB/plugins/cWB_Plugin_MDC_OTF.C $HOME_cWB/plugins/cWB_Plugin_PE.C moreover a configuration plugin must be provided and the following declarations must be added : .. code-block:: bash plugin = TMacro("macro/cWB_Plugin_MDC_OTF_PE.C"); // Macro source configPlugin = TMacro("macro/cWB_Plugin_MDC_OTF_Config.C"); // Macro config | | **single task** .. code-block:: bash Execute the following command (consider job=40) : cwb_inet 40 0 ced // CED is produced cwb_inet 40 // CED is not produced Note : to be sure that CED is not produced use the second option and set cedDump=false; in user_parameters.C Note : the single task mode can be used with standard condor submit procedure | **multi task** .. code-block:: bash in multitask mode it is possible to execute each factor with a separate job this speedup the execution First of all we must generate a special dag file (consider job=40) Execute : cwb_condor mtpe 40 Note : to output CED add cedDump=true; to user_parameters.C the following files are created under the condor directory : condor/work_dir.mtpe.sub condor/work_dir.mtpe.dag The dag file contains nfactor entries Execute : cwb_condor submit condor/work_dir.mtpe.dag | - **SKYMAP STATISTIC** : How to produce standard GraceDB skymaps | It is possible to include in the CED the standard skymap statistic produced for GraceDB | PE produce 2 skymaps under the CED directory : - skyprobcc.fits : point estimate skymap - mskyprobcc.fits : median skymap To produce the skymaps execute the `cwb_report <#cwb-report>`__ command : .. code-block:: bash * cwb_report skymap ced_dir/skyprobcc.fits create the web page for skymap-statistics (point estimate) : ced_dir/skyprobcc The symbolic index file is copied to ced_dir and the link to skymap-statistics is added (Skymap Statistic ( point estimate )) | To create the skymap statistic of mskyprobcc.fits and for the comparison | between skyprobcc.fits and mskyprobcc.fits see the `cwb_report <#cwb-report>`__ skymap command options. | How to do a 2 stages 2G analysis in batch mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | |image166| | | The 2 stages analysis is a special case of `multistages analysis <#the-search-flowchart2g>`__. | The first stage is the **Event Trigger Generator** (ETG) which produces as output the **Trigger File**. | The trigger file is used as input for the second stage analysis : the **Reconstruction** | - | **First Stage : ETG** | | The generation of the first stage is based on the standard procedure described in the first two sections **PRE-PRODUCTION : Setup analysis** and **PRODUCTION - Run the analysis** reported in the link `Background Example <#background-example>`__ | The only difference is in **- Create Condor jobs**. | Instead of the command : .. code-block:: bash cwb_condor create uses the command : .. code-block:: bash cwb_condor create SUPERCLUSTER | The SUPERCLUSTER option forces the analysis to process data until the SUPERCLUSTER stage. | The trigger files are saved under the output directory with names supercluster_\*_job#.root | It is possible to save the trigger files in the nodes user directory and the links to these files are created under the output directory. This option allows to save local space and to optimize the I/O, but on the contrary the user node disk do not guarantees a safe place where to store the files. Use this option only if the trigger files are very larges | To force the trigger files to be saved in the nodes add this option to the config/\ `user_parameters.C <#user-parameters-c>`__ : .. code-block:: bash jobfOptions|=cWB_JOBF_SAVE_NODE; - | **Second Stage : RECONSTRUCTION** | | To process the second stage it is necessary to create a new working directory. | This directory must be a clone of the first stage directory. | The command to be used to create a clone directory is `cwb_clonedir <#cwb-clonedir>`__ | Here are the instructions : .. code-block:: bash cwb_clonedir SRC_DIR_FIRST_STAGE DEST_DIR_SECOND_STAGE '--output links' If DEST_DIR_SECOND_STAGE already exist only links are updated | A new directory named DEST_DIR_SECOND_STAGE is created with the same **input,config,macros** files. | The option output links forces the creation under the output dir of the links of the trigger files produced in the first stage. | To create the condor files used by the second stage the following command must be used : .. code-block:: bash cwb_condor recovery LIKELIHOOD | This command creates a dag file : | condor/XXX.dag.recovery.x | To setup the reconstruction stage modify the config/\ `user_parameters.C <#user-parameters-c>`__ | To submit the second stages jobs do : .. code-block:: bash cwb_condor submit condor/XXX.dag.recovery.x | The final output event parameter files are saved under the output directory with names wave_\*_job#.root | | The post-production is based on the standard procedure described in the last section **POST-PRODUCTION : Collection of results** reported in the link `Background Example <#background-example>`__ - | **Full Stage & Trigger Files** | | It is possible to create the trigger files also in Full Stage analysis mode. | The trigger files can be used as input for the Second Stage analysis, see **Second Stage : RECONSTRUCTION**. | Here are the instructions : | | Add the following option to the user_parameters.C file : .. code-block:: bash jobfOptions|=cWB_JOBF_SAVE_TRGFILE; Create and Submit the condor jobs. .. code-block:: bash cwb_condor create cwb_condor submit | wave\*.root and supercluster\*.root files are created under the output directory. How to merge multiple backgrounds into a single report ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | In this example we explain how to collect into a single report the results of multiple background analysis. | The main reason of this operation is to increase the statistic of the background. | The requirement is the compatibility of the background analysis: these analysis should have the same analysis parameters, only the lag/slag parameters can be different. | The procedure is the following. | We want to merge 2 background : src_dir_1 + src_dir_2 -> dest_dir .. code-block:: bash cwb_clonedir src_dir_1 dest_dir '--output merge' The src_dir_1 is cloned to dest_dir Search the max merged version in the src dir and merge wave&live tree under the dest output dir cwb_clonedir src_dir_2 dest_dir '--output merge --config check' The src_dir_2 is not cloned to dest_dir because dest_dir already exist Search the max merged version in the src dir and merge wave&live tree under the dest output dir the option '--config check ' is used to force the control of compatibility of src and dest config. The diff is generated and user must decide if the configurations are compatibles. If the answer is 'n' the operation is aborted. cd dest_dir cwb_merge M1 all src merged files are merged into a single file under the merge directory At this stage it is possible to apply the standard post-production procedures the super-report It is possible to add to the final report the reports produced for src_dir_1 and src_dir_2 analysis. In the final report each report is showed as a tab entry in a tabbed html page This can be done using the post parameter string array pp_sreport and must be declared in the user_pparameters.C file. The syntax is : pp_sreport[0] = "--links http_link_to_report_1 --label label_report_1" ... pp_sreport[n] = "--links http_link_to_report_n --label label_report_n" where : - http_link_to_report_n is the http link to the report n - label_report_n is the label reported in the tab NOTE : there are some operations that can not be done. 1 - Job statistic is not computed in the report page 2 - CEDs can not be generated these quantities must be evaluated in the original src_dir How to do the analysis of the most significative events ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | In this example we explain how to perform the analysis of the most significative events found with the background analysis. | The procedure permits to do a more detailed study focusing only on some special events. | We want for example to reanalize the loudest vetoed events which have rho>7 using a new user parameters file. | The procedure is the following : | .. code-block:: bash - Create the dag file We use the command cwb_report with the option loudest cwb_report merge_label loudest '--odir loudest_dir --rho 7 --ufile xuser_parameters.C --veto true --nevt 10' merge_label : is the merge label, for example : M1.C_cc2_gt_0d45.V_hvetoLH_cat3LH loudest_dir : is the output directory were the final root files are stored xuser_parameters.C : is the new user parameters file (same syntax used for the config/user_parameters.C) --rho 7 : select only events with rho[X]>7. X is the value of the parameter pp_irho defined in the user_pparameters.C --veto true : the post production vetoes are applied (see config/user_pparameters.C) --nevt 10 : only the first 10 eventswith rho[X]>7 are selected The previous command produce a dag file work_dir_label.dag.loudest.x under the condor directory. - Submit the dag file cwb_condor submit work_dir_label.dag.loudest.x The output root files are created under the directory "loudest_dir" in the report directory (report/postprod/XXX/loudest_dir), where XXX is the standard post production directory At this stage it is possible to apply the standard post production procedures. For example : - Merge the output root files cwb_merge M1 '--idir report/postprod/XXX/loudest_dir --utag user_merge_tag' --idir : is the directory where the ouput loudest root file are stored --utag : is the user tag added after *.Mx -> *.Mx.U_utag the previous command creates a merge file under the standard merging directory. - Apply vetoes If required it is possible to apply the post production vetoes using cwb_setveto - Create report As final step the user can produce the final standard report using a new user_pparameters.C file : cwb_report loudest_merge_label create xuser_parameters.C loudest_merge_label : is the label of the merged loudest events xuser_pparameters.C : is the new user parameters file (same syntax used for the config/user_pparameters.C) How to apply a time shift to the input MDC and noise frame files ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | This feature is necessary when we want to reuse the MDC/noise for | a period different form the period declared in the MDC/noise frame files. - | **time shift of noise data** | | The parameter used to shift the noise data is an array of double : `dataShift[NIFO_MAX]; <#data-manipulating>`__ | it must be declared in the user_parameters.C file. | The index of the array reppresents the IFO index and the values are the | shifts in sec that must be applied to the corresponding detector. Example (L1,H1,V2) : .. code-block:: bash dataShift[0] = 1000; // shift +1000 sec the L1 detector dataShift[1] = -100; // shift -100 sec the H1 detector dataShift[2] = 0; // shift 0 sec the V1 detector - | **time shift of MDC data** | | The parameter used to shift the MDC data is : `mdc_shift <#data-manipulating>`__ | and it must be declared in the user_parameters.C file. The mdc_shift is a structure defined in :cwb_library:`cWB::Toolbox` : .. code-block:: bash mdc_shift.startMDC mdc_shift.stopMDC mdc_shift.offset | The parameters startMDC,stopMDC are used to define the period in MDC data that we want to reuse for the injections. | This period must exist in the MDC frame files. If **mdc_shift.startMDC < 0** the mdc_shift.startMDC,mdc_shift.stopMDC are the begin,end GPS times of the input MDC frame files. | The effect of this parameter is the production of infinite replicas of the period [startMDC,stopMDC] starting from the GPS=mdc_shift.offset. .. code-block:: bash // // startMDC stopMDC // ^ ^ // ................|xxxxxx P xxxxxx|.............. // // the period P is replicated starting from the offset // // offset // ^ // ...|xxxxxx P xxxxxx|xxxxxx P xxxxxx|xxxxxx P xxxxxx|... // Example : .. code-block:: bash mdc_shift.startMDC = 1000 mdc_shift.stopMDC = 2000 mdc_shift.offset = 500 // 1000 2000 // ^ ^ // ................|xxxxxx P xxxxxx|.............. // // the period P is replicated starting from the offset // // 500 1000 2000 3000 // ^ ^ ^ ^ // ...|xxxxxx P xxxxxx|xxxxxx P xxxxxx|xxxxxx P xxxxxx|... // | ---- Troubleshooting =============== | Problem with my first cWB pipeline example ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Check the following items: - if cWB is used with pre-installed libraries check setting `cWB quick startup <#cwb-quick-startup>`__. - check if the cWB configuration script if defined in the shell login script - example : source /home/waveburst/SOFT/WAT/trunk/waveburst_watenv.csh - check the cWB environment variables defined in in cWB configuration file - example : setenv HOME_WAT "${HOME_LIBS}/WAT/trunk" - check if cwb_rootrc has been copied under $HOME directory - example : cp /home/waveburst/SOFT/WAT/trunk/tools/cwb/cwb.rootrc ~/.rootrc | ---- Theory ====== | What is the cWB coordinate system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The cWB coordinates are used by cWB as an internal skymap coordinate system. .. code-block:: bash cWB Coordinate System theta : [0:180] degrees - theta=0 : North Pole - theta=180 : South Pole phi : [0:360] degrees - phi=0 : Greenwich meridian - phi increases in the est direction It is related to the Geographic system by the following transformations (see CwbToGeographic,GeographicToCwb defined in skycoord.hh): .. code-block:: bash - theta_geo = 90-theta_cwb - phi_geo = phi_cwb when phi_cwb<=180 - phi_geo = phi_cwb-360 when phi_cwb>180 What is HEALPix ~~~~~~~~~~~~~~~~~~~~~ | HEALPix is an acronym for Hierarchical Equal Area isoLatitude Pixelization of a sphere | The HEALPix home page is : `http://healpix.jpl.nasa.gov/ `__ .. code-block:: bash To install HEALPix see : `How to install full cWB <#installation>`__ .. code-block:: bash It is used by cWB to creates a sky map segmentation To enable this option set in config/user/parameters.C healpix=order; where order is a number > 0 if order=0 then cWB uses the builtin sky segmentation. The number of pixels is given by: npixels(order) = 12*pow(4,order) for example : npixels(0) = 12 npixels(1) = 48 npixels(2) = 192 npixels(3) = 768 npixels(4) = 3072 npixels(5) = 12288 npixels(6) = 49152 npixels(7) = 196608 npixels(8) = 786432 | \* Use this macro to grnerate healpix skymap with order 3 | root -l $HOME_WAT/tools/gwat/tutorials/DrawHEALPix.C(3) | | |image167| | Net plots shows the builtin skygrid for patches size = 8x8 degrees | | |image168| What are lags and how to use them ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | |image169| | To asses the significance of a burst candidate event, we need to know the statistical properties of the background of transient accidentals. Given the intrinsic non stationarity of our data and the large deviations of any of our test statistics wrt any known statistical distribution, we are forced to empirically estimate such distributions. To resample our data set we use the well-known standard technique of the time shifted analysis. The cWB pipeline applies relative time shifts to the detectors data streams and for each set of time lags (one per detector) a complete analysis is performed. The ensemble of these time-lagged analyses (properly rescaled by the each live time) are combined to produce the False Alarm Distribution as a function of the rho. To do so, cWB divides the total observation time into time segments, with variable length between segMLS and segLen (typically between 300 and 600 s). For each segment, a job is sent to the computing cluster: within the job, cWB performs both the time-lagged analyses (i.e. by applying shifts in circular buffers) and the zero-lag analysis at the same time without increasing too much the computational load. We typically produce 200 time-lagged analyses + the zero lag. This approach produces a "local" estimate of the accidental background, i.e. estimated within each segment. As a consequence, the number of useful time slides is limited by the minimum time shift step, O(1s), due to detectors autocorrelation and minimal length of the segments, segMLS (other that by the number of available detectors). To perform a time-lagged analysis we have two main choices: - **the built-in lags**; the user has to set: - **lagSize** : number of lags - **lagOff** : first lag id in the list - **lagStep** : time step (ts) - **lagMax** : maximum time lag (Tm) Applied shifts Tk are multiple of time step ts: Tk = k\*ts (k is a integer) and Tk - **provide a custom set of lags via an ascii file** The parameter lagStep is not used, instead two more parameters must be used: - the ascii file name : **lagFile** - the lag mode to "read": **lagMode[0] = 'r';** A detailed description of the lag configuration parameters can be found in `Production parameters <#production-parameters>`__. **An example of a custom lags ascii file content for a network of 3 detectors** .. code-block:: bash 0 0 0 0 1 0 1 200 2 0 200 1 3 0 3 198 4 0 198 3 5 0 5 196 6 0 196 5 7 0 7 194 8 0 194 7 9 0 9 192 10 0 192 9 11 0 11 190 12 0 190 11 13 0 13 188 14 0 188 13 15 0 15 186 16 0 186 15 17 0 17 184 18 0 184 17 19 0 19 182 20 0 182 19 21 0 21 180 22 0 180 21 23 0 23 178 24 0 178 23 25 0 25 176 26 0 176 25 27 0 27 174 28 0 174 27 29 0 29 172 30 0 172 29 31 0 31 170 32 0 170 31 33 0 33 168 34 0 168 33 35 0 35 166 36 0 166 35 37 0 37 164 38 0 164 37 39 0 39 162 40 0 162 39 41 0 41 160 42 0 160 41 43 0 43 158 44 0 158 43 45 0 45 156 46 0 156 45 47 0 47 154 48 0 154 47 49 0 49 152 50 0 152 49 51 0 51 150 52 0 150 51 53 0 53 148 54 0 148 53 55 0 55 146 56 0 146 55 57 0 57 144 58 0 144 57 59 0 59 142 60 0 142 59 61 0 61 140 62 0 140 61 63 0 63 138 64 0 138 63 65 0 65 136 66 0 136 65 67 0 67 134 68 0 134 67 69 0 69 132 70 0 132 69 71 0 71 130 72 0 130 71 73 0 73 128 74 0 128 73 75 0 75 126 76 0 126 75 77 0 77 124 78 0 124 77 79 0 79 122 80 0 122 79 81 0 81 120 82 0 120 81 83 0 83 118 84 0 118 83 85 0 85 116 86 0 116 85 87 0 87 114 88 0 114 87 89 0 89 112 90 0 112 89 91 0 91 110 92 0 110 91 93 0 93 108 94 0 108 93 95 0 95 106 96 0 106 95 97 0 97 104 98 0 104 97 99 0 99 102 100 0 102 99 101 0 101 100 102 0 100 101 103 0 103 98 104 0 98 103 105 0 105 96 106 0 96 105 107 0 107 94 108 0 94 107 109 0 109 92 110 0 92 109 111 0 111 90 112 0 90 111 113 0 113 88 114 0 88 113 115 0 115 86 116 0 86 115 117 0 117 84 118 0 84 117 119 0 119 82 120 0 82 119 121 0 121 80 122 0 80 121 123 0 123 78 124 0 78 123 125 0 125 76 126 0 76 125 127 0 127 74 128 0 74 127 129 0 129 72 130 0 72 129 131 0 131 70 132 0 70 131 133 0 133 68 134 0 68 133 135 0 135 66 136 0 66 135 137 0 137 64 138 0 64 137 139 0 139 62 140 0 62 139 141 0 141 60 142 0 60 141 143 0 143 58 144 0 58 143 145 0 145 56 146 0 56 145 147 0 147 54 148 0 54 147 149 0 149 52 150 0 52 149 151 0 151 50 152 0 50 151 153 0 153 48 154 0 48 153 155 0 155 46 156 0 46 155 157 0 157 44 158 0 44 157 159 0 159 42 160 0 42 159 161 0 161 40 162 0 40 161 163 0 163 38 164 0 38 163 165 0 165 36 166 0 36 165 167 0 167 34 168 0 34 167 169 0 169 32 170 0 32 169 171 0 171 30 172 0 30 171 173 0 173 28 174 0 28 173 175 0 175 26 176 0 26 175 177 0 177 24 178 0 24 177 179 0 179 22 180 0 22 179 181 0 181 20 182 0 20 181 183 0 183 18 184 0 18 183 185 0 185 16 186 0 16 185 187 0 187 14 188 0 14 187 189 0 189 12 190 0 12 189 191 0 191 10 192 0 10 191 193 0 193 8 194 0 8 193 195 0 195 6 196 0 6 195 197 0 197 4 198 0 4 197 199 0 199 2 200 0 2 199 What are super lags and how to use them ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | |image170| | Standard lags (see `What are lags and how to use them <#what-are-lags-and-how-to-use-them>`__) are implemented to be give a "local" estimate of the accidental background, i.e. all time shifts are are chosen in a circular buffer which contains only the data within the segment. Super lags allow to mix up segments of different time periods, so to increase the background statistics. To do so, cWB divides the total observation time into time segments with fixed length, segLen. For each set of super-lags (one for each detector partecipating the network), the single detector segments are shifted by integer number of steps, producing a new set of lagged segments. For each lagged segment, cWB checks whether the available live time is larger than segMLS, and in that case, a job is sent to the computing cluster: within this job, cWB performs the usual lagged analysis (which is still, in some sense, "local", but around a lagged set of segments). | **Example** Suppose you have 3 detectors with 100% duty cycle and you have chosen segMLS = segLen = 600s. | With standard "local" lags, the N-th job uses data within: #. detector1 : start+[\ **i**\ \*600,(\ **i+1**)\*600] #. detector2 : start+[\ **i**\ \*600,(\ **i+1**)\*600] #. detector3 : start+[\ **i**\ \*600,(\ **i+1**)\*600] where i=N, and the maximum time shift is 600s (fixed by segMLS). By using super-lags, the N-th job uses data within: #. detector1 : start+[\ **i**\ \*600,(\ **i+1)**\ \*600] #. detector2 : start+[\ **j**\ \*600,(\ **j+1**)\*600] #. detector3 : start+[\ **k**\ \*600,(\ **k+1**)\*600] where i, j, k are integers. A detailed description of the slag configuration parameters can be found in `Production parameters <#production-parameters>`__. To perform a time-lagged analysis with super lags, we have two main choices: - **the built-in super lags**; the user has to set in `user_parameters.C <#user-parameters-c>`__ - **slagSize** : the number of super-lags - **slagMin** : the minimal length for the super lag shift (integer number of fixed length segments) - **slagMax** : the maximum length for the super lag shift (integer number of fixed length segments) - **slagOff** : the first super lag to start with (a list is automaticly created based on the constrains above) - **provide a custom set of super lags via an ascii file** Other than the slagSize and the slagOff, the user has to set in `user_parameters.C <#user-parameters-c>`__ - | the ascii file name : | slagFile = new char[1024]; | strcpy(slagFile,"../slag_uniq200.txt"); **How the built-in SLAG are generated** | The built-in algorithm generates the slag list according the increasing value of the slag distance | The entries with the same distance are randomly reshuffled | The slag distance is defined as the sum over the ifos of the absolute values of the shifts. | Example : 3 detector network, the following figure shows how the built-in slag are distributed according to their distance. | | |image171| | **An example of a custom super lags ascii file content** .. code-block:: bash 1007 0 -4 4 1008 0 4 -4 1015 0 -8 8 1016 0 8 -8 1017 0 -9 9 1018 0 9 -9 1019 0 -10 10 1020 0 10 -10 1027 0 -14 14 1028 0 14 -14 What are the parameters reported in the BurstMDC log file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | BustMDC is a wrapper for GravEn (Gravitational wave physics core software) to organize inputs, | create Condor submission scripts, and write MDCs to frames. BurstMDC documentation : `https://dcc.ligo.org/cgi-bin/private/DocDB/ShowDocument?docid=89050 `__ | BurstMDC produces MDC to frames and a log file which record all of the informations used | to produce a simulation. This file is used by cWB for simulations with external MDC frames (is not used for (On The Fly MDC). The path of BurstMDC file must be declared in the user_parameters.C file `Simulation parameters <#simulation-parameters>`__ : char injectionList[1024]=""; The format of log file is : - **GravEn_SimID** - Path of waveforms used for simulation (Ex: MDC with 2 components Waveforms/SGC1053Q9~01.txt;Waveforms/SGC1053Q9~02.txt) (Ex: MDC with 1 component Waveforms/SG1053Q9~01.txt) - **SimHrss** - sqrt(SimHpHp+SimHcHc) - **SimEgwR2** - **GravEn_Ampl** - hrss at source - **Internal_x** - internal source parameter - **Internal_phi** - internal source parameter - **External_x** - source theta direction : cos(theta) (-1:1) - **External_phi** - source phi direction (0:2\*Pi rad) - **External_psi** - source polarization angle (0:Pi rad) - **FrameGPS** - Frame gps time - **EarthCtrGPS** - Event gps time at the earth center - **SimName** - MDC name - **SimHpHp** - Energy of hp component - **SimHcHc** - Energy of hp component - | **SimHpHc** | - Energy of the cross component hp hc For each detector (IFO) : - **IFO** - detector name (Ex : L1, H1, V1, ...) - **IFOctrGPS** - gps time of the injection (central time) - **IFOfPlus** - F+ component of the detector antenna pattern - **IFOfCross** - Fx component of the detector antenna pattern In this example is reported the log file used for BURST MDC simulations in the S6a run. .. code-block:: bash # Log File for Burst MDC BRST6_S6a # The following detectors were simulated # - H1 # - L1 # - V1 # There were 112147 injections # Burst MDC Sim type SG1053Q3 occurred 14065 times # Burst MDC Sim type SG1053Q9 occurred 14061 times # Burst MDC Sim type SG235Q3 occurred 14000 times # Burst MDC Sim type SG235Q8d9 occurred 13965 times # Burst MDC Sim type SGC1053Q9 occurred 14011 times # Burst MDC Sim type SGC235Q9 occurred 13969 times # Burst MDC Sim type WNB_1000_1000_0d1 occurred 14027 times # Burst MDC Sim type WNB_250_100_0d1 occurred 14049 times # GravEn_SimID SimHrss SimEgwR2 GravEn_Ampl Internal_x Internal_phi External_x \ External_phi External_psi FrameGPS EarthCtrGPS SimName SimHpHp SimHcHc SimHpHc \ H1 H1ctrGPS H1fPlus H1fCross \ L1 L1ctrGPS L1fPlus L1fCross \ V1 V1ctrGPS V1fPlus V1fCross Waveforms/SGC1053Q9~01.txt;Waveforms/SGC1053Q9~02.txt 3.535533e-21 3.072133e-46 2.500000e-21 \ +1.000000e+00 +0.000000e+00 -1.957024e -01 +2.609204e+00 +5.686516e+00 931158015 \ 931158031.022736 SGC1053Q9 6.249998e-42 6.249995e-42 -3.575506e-60 \ H1 931158031.026014 -3.015414e-01 -1.272230e-02 \ L1 931158031.033757 +3.665299e-01 +4.459350e-01 \ V1 931158031.037002 -2.348176e-01 -6.295906e-01 ... How job segments are created ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | Due to the computational requirements the analysis is performed splitting the full data period in a set of segments. | These segments are created starting from the input `data quality `__ files and the `segment parameters <#Job-settings>`__ defined in the `user_parameters.C <#user-parameters-c>`__ file. There are two segment types #. **the standard segments** - the algorithm used to build these segments is the one used for the 1G pipeline and it is optimized to exploit the maximum livetime - the segment length can be variable and must be >= `segMSL <#job-settings>`__ and <= `segLen <#job-settings>`__ - the livetime after CAT2 must be > `segTHR <#job-settings>`__ #. **the extended segments** - these segments has been introduced in the 2G pipeline to extend the the number of `lags <#what-are-lags-and-how-to-use-them>`__ `(super lags) <#what-are-super-lags-and-how-to-use-them>`__ - the full period is divided in intervals with length = `segLen <#job-settings>`__ each one starting at multiple of `segLen <#job-settings>`__ - for each interval is selected the segment with the maximum length after CAT1 - the segment with the maximum length must be `>= segMSL <#job-settings>`__ - the livetime after CAT2 must be > `segTHR <#job-settings>`__ In the following we provide two examples which explain how the segments are created. | **Standard Segments** For semplicity we use only one detector. The user_parameters.C is : .. code-block:: bash { niFO=1; // job segments segLen = 1000.; // Segment length [sec] segMLS = 300.; // Minimum Segment Length after DQ_CAT1 [sec] segTHR = 100.; // Minimum Segment Length after DQ_CAT2 [sec] (to disable put segTHR=0) segEdge = 10.; // wavelet boundary offset [sec] slagSize = 0; // number of super lags - if slagSize=0 -> Standard Segments // dq file list // {ifo, dqcat_file, dqcat[0/1/2], shift[sec], inverse[false/true], 4columns[true/false]} nDQF=4; dqfile dqf[nDQF]={ {"L1" ,"input/cat0.in", cWB_CAT0, 0., false, false}, {"L1" ,"input/cat1.in", cWB_CAT1, 0., true, false}, {"L1" ,"input/cat4.in", cWB_CAT1, 0., true, false}, {"L1" ,"input/cat2.in", cWB_CAT2, 0., true, false}, }; for(int i=0;i`__\ =300sec - the segment [790:1810] is selected : the segment length is 1020 sec (JOB1) - the segment [1960:3000] is divided in two sub-segments of equal length = 520 sec (JOB2/JOB3) - each segment consists by the interval to be analyzed and two intervals at right and left with length=\ `segEdge <#job-settings>`__ and are used as scratch data (black segment) - **JOBS / CAT2** - JOB1 : CAT2 [1500:1550] is applied -> total period to be analyze = 1000-50 = 950 sec > `segTHR <#job-settings>`__\ =100 sec -> JOB1 is selected - JOB2 : no CAT2 -> total period to be analyze = 510 sec > `segTHR <#job-settings>`__\ =100 sec -> JOB2 is selected - JOB3 : CAT2 [2500:2920] is applied -> total period to be analyze = 510-420 = 90 sec < `segTHR <#job-settings>`__\ =100 sec -> JOB3 is discarted - **FINAL JOBS** - the final selected jobs are : JOB1 = [800:1800] JOB2 = [1970:2480] | **Extended Segments** Consider the same setup used in the previous example with these differences : .. code-block:: bash slagSize = 1; // number of super lags - if slagSize=1 -> Extented Segments slagMin = 0; // select the minimum available slag distance : slagMin must be <= slagMax slagMax = 0; // select the maximum available slag distance slagOff = 0; // first slag id (slagOff=0 - include zero slag ) The following figure explains the different steps used to build the extended segments : | | |image177| | - **CAT0** - is used to select the periods in science mode - **CAT1 / CAT4** - are used to exclude the periods where the detector is not running in proper configuration (CAT1) and where are performed the hardware injections (CAT4) - **JOBS / CAT1** the extended segments are extracted from the 3 equal length segments [0:1000] [1000:2000] [2000:3000] segment [0:1000] : after CAT1 the periods to be analyze are [0:200] and [790:1000]. Only the biggest sub-segment is selected [790:1000], this segment is rejected because its length (excluded `segEdge <#job-settings>`__) is 200 < `segMSL <#job-settings>`__\ =300sec segment [1000:2000] : after CAT1 the periods to be analyze are [1000:1810] and [1960:2000]. Only the biggest sub-segment is selected [1000:1810], this segment is selected because its length (excluded `segEdge <#job-settings>`__) is 800 > segMSL=300sec (JOB1) segment [2000:3000] : after CAT1 the periods to be analyze is [2000:3000] this segment is selected because its length (excluded `segEdge <#job-settings>`__) is 990 > `segMSL <#job-settings>`__\ =300sec (JOB2) - **JOBS / CAT2** - JOB1 : CAT2 [1500:1550] is applied -> total period to be analyze = 800-50 = 750 sec > `segTHR <#job-settings>`__\ =100 sec -> JOB1 is selected - JOB3 : CAT2 [2500:2920] is applied -> total period to be analyze = 990-420 = 470 sec < `segTHR <#job-settings>`__\ =100 sec -> JOB2 is selected - **FINAL JOBS** - the final selected jobs are : JOB1 = [1000:1800] JOB2 = [2000:2990] The cWB 2G coherent statistics ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | There are several main cWB statistics, which form a basis for derivation | of the post-production statistics used for selection of cWB triggers. - **E - total cluster energy** E = sum_i{\|x[i]\|^2}, where x[i] is the data vector and the sum is taken on the coherent pixels in the multi-resolution cluster - **Em - sum of maximum energies in the detectors:** Em = sum_i{max(\|x1[i]\|^2,A,A...,\|xK[i]\|^2)} where K is the number of detectors, and xk[i] are components of the data vector x[i] - **L - energy of reconstructed signal** L = sum_i{\|s[i]\|^2}, where s[i] is the reconstructed vector response for pixel i This statistic is stored in the waveburst tree as likelihood. - **C - coherent energy - sum of the off-diagonal terms of L** This statistic is stored in the waveburst tree as ecor. - **N - null energy,** N = E-L +2\*m where m is the number of the cluster principle components - **D - energy dis-balance calculated as sum_i{(x[i]-s[i],u[i])^2},** where u[i] is the unity vector along s[i]. Energy dis-balance is used to identify un-physical solutions typical for glitches. This statistic is stored in the waveburst tree as neted[0]. | There are several definitions of C, D and N, which are used for calculation | of the derived post-production statistics. Therefore, it is recommended to use | the post-production statistics directly, rather than to calculate them from | the parameters stored in root files. Derived postproduction statistics and recommended thresholds: - **rho - cWB ranking statistic - estimator of the coherent SNR per detector** rho = sqrt(C/(K-1)) The perfect GW event has rho = SNRmf/sqrt(K), where SNRmf is the matched filter SNR. It always holds that rho 6 - at rho=6 the Gaussian FAR is < 1.e-9Hz - **cc - Network Correlation Coefficient, span [-1,1] interval** cc = C/(\|C\| + N). This statistic compares coherent and null energies This statistic is stored in the waveburst tree as netcc[1]. Recommended threshold: cc > 0.7; - **scc - Subnetwork Consistency Coefficient, span [0,1] interval** scc = (E-Em)/(E-Em + E-L+n), where n is the number of multi-resolution pixels in the cluster This statistics compares the "sub-network" energy with the estimator of the Null Energy E-L+n. This statistic is stored in the waveburst tree as netcc[3]. Recommended threshold: scc > 0.7; - **edr - Energy Dis-balance Ratio, span [0,inf] interval** ed = D/C = neted[0]/ecor. This statistic is highly correlated with cc, however, large edr values are indications of the "inconsisten event" == glitch. Recommended threshold: edr < 0.1; The cWB 2G production thresholds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ There are the following cWB parameters defined in the configuration file: .. code-block:: bash double bpp = 0.001; // probability for black pixel selection (netpixel) double subnet = 0.7; // [<0.7] subnetwork threshold (supercluster) double netRHO = 4; // [>4.0] coherent network SNR (supercluster, likelihood) double netCC = 0.5; // network correlation (supercluster, likelihood) double Acore = sqrt(2); // threshold of core pixels (supercluster, likelihood) double Tgap = 3.0; // defragmentation time gap between clusters (sec) double Fgap = 130.; // defragmentation frequency gap between clusters (Hz) double delta = 0.05; // [0-1] regularize sky locations with low \|fx\|^2, double gamma = 0.5; // [0-1] defines threshold on coherent energy: gamma=0 - Ec>0 | These parameters control operation of the cWB pipeline. They can be | separated in three groop: thresholds, clustering conditions and regulators. | Thresholds are used to decimate the amount of data processed by the | pipeline to manageable level and reduce the number of output triggers. | Well set thresholds do not affect the final efficiency of the pipeline, | which is controlled by the final (post-production) selection cuts. - **bpp - (black pixel probability)** defines the cwb excess-power threshold used for selection of loud (black) pixels during the pipeline NetPixel stage. It's value is approximately equal to the fraction of loud pixels selected by the algorithm for each TF resolution. the bpp=0.001 means that approximately 2000 pixels are selected for each TF map of 600 sec long and 2048Hz bandwidth. This number may vary depending on the conditions of the detector noise. - **subnet - subnetwork energy asymmetry statistic.** It is defined by the minimum subnetwork energy Es and null energy No of the cwb triggers: - **subnet = Es/(Es+N).** For glitches it is typical to have subnet close to 0, because most of such events have a significant energy in only one detector and the total energy in other detectors is defined by the underlying noise. GW signals produce network responses with more balanced (symmetric) distribution of energy between the detectors. In other words, the GW events are "coincident" between the detectors and subnet is simply a coincidence criteria. The subnet threshold defines the rate of events stored in the trigger files after the supercluster stage. - **netRHO, netCC** these are production thresholds on the main cWB statistics rho and cc (see description of the cWB statistics). The only purpose of these threshold is the reduction of data processed by the algorithm downstream in the analysis and reduction of number of triggers stored on disc. These parameters are set to not affect the final cWB efficiency on one hand, and reduce consumption of computing resources by cWB jobs on the other. - **Acore - threshold on the average data sample amplitude per detector.** It is in units of the noise rms. The purpose of this parameter is de-noising of selected clusters. Only those network pixels in the cluster, which energy is greater than Acore^2\*K are used for processing, where K - is the number of detectors. - **Clustering conditions: Tgap [sec], Fgap [Hz]** used for event defragmentation (clustering). Individual clusters on the TF plane are merged together, if they are closer than Tgap in time and Fgap in frequency. It helps to recover GW events fragmented into multiple clusters. The defragmentation is done after the supercluster stage when the rate of clusters is dropped down to less than 0.01Hz. It allows to keep at minimum the "infection" of true GW clusters with spurious noise clusters around it. .. _the-cwb-2g-regulators: The cWB 2G regulators ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The purpose of the regulators is to control FAR for degenerate networks (\|fx\|<<\|f+\|) by imposing network constraints. The regulators are applied individually to each time-frequency pixel in the polarization pattern **(w,W)** (see Figure below) obtained with the Dual Stream Phase Transform. | | |image181| | | |image182| | - | **Notations** | - **x,X** are the original data vectors for a given TF pixel - **w,W** are the polarization pattern vectors for a given TF pixel - **f+,fx** are the antenna pattern vectors in DPF - **e+,ex** are the unit vectors along f+,fx - **IE** is the event index: IE = 1-Co/Lo, where Co/Lo is coherent/signal energy - **1/IE** is the average number of used detectors - **Fn** is the network antenna sensitivity: Fn=sqrt[(\|f+\|^2+\|fx\|^2)/2/ni] - **ni** is the ’+’ network index: ni = sum{e+[i]^4}. - **NI** is the ’x’ network index, NI = sum{ex[i]^4}. | | 1/ni is the average number of sensitive detectors | \|ni-NI\| = 0 is indicating that f+ and fx vectors are in the 2 detector plane (only 2 detector have sensitivity to GW) | - | **Gamma regulator** | | This regulator is controlled by the gamma parameter, denoted below as **G**. The gamma regulator makes a prediction of reconstructed response based on the calculation of ellipticity **e** and **sin[d-p]**, where **d** is the DPF angle and **p** is the polarization angle. The **e** and **sin[d-p]** are calculated from the parametrization of the **(w,W)** pattern shown above. | The following quantity is calculated .. code-block:: bash [1] R = sqrt(e*e + sin(d-p)^2) In case of degenerate detectors (\|fx\|<<\|f+\|) R<<1. Figures below show the distribution of R vs the network antenna sensitivity Fn for noise (left) and for signal with random polarization (right). | | |image183| | The main gamma regulator condition is, .. code-block:: bash [2] R - 0.9 +(0.5-ni)(1-a) - Fn*log(G)/(2*IE)^2 < 0. The condition [2] divides the R-Fn plane in two areas (see left plot). When the condition is true - no regulator is applied. When it is false - both 90-phase pattern vector (**W**) and x-projection of 0-phase pattern vector (**wx**) are set to zero. This condition is denoted as the **hard regulator** The gamma regulator is enhanced with the antenna prior (gamma kill condition) .. code-block:: bash [3] FF < (IE-FF)*G*ni . If the condition [3] is satisfied, than the reconstructed response for a given TF pixel is set to zero. This condition suppress sky locations with the low network sensitivity (see right plot), where it is unlikely to observe a GW event. Suggested gamma values: - **G**\ =0 means that no constraint is applied. - There is no limit for **G**, but the recommended maximum value is <= 1. - If **G** is negative, than the antenna pattern prior is used for calculation of the sky localization probability maps. | - | **Delta regulator** | | The purpose of this regulator is to enhance the constraint for 2 detector sub-networks, when other detectors either are not present or are the spectators. Examples of such networks are the LH network and LHV, when the event is produced at low V sensitivity. This regulator is controlled by the delta parameter, denoted below as **D**. If DD is negative than the sky statistic Lo is used instead of Lr for calculation of the sky localization probability maps. There are 2 regulator conditions: .. code-block:: bash [4] IE-|ni-NI| > D0 if true, zero x-projection of 0-phase pattern vector **wx** (loose circular constraint) .. code-block:: bash [5] IE-|ni-NI| > D9 if true, zero the 90-phase pattern vector **W**. Chart below shows how D0 and D9 depend on the value of **D** - the delta regulator value. .. code-block:: bash D0 1----------0.5--------0.5 // value of D0 |D| 0----------0.5---------1 // value of |D| D9 1-----------1---------0.5 // value of D9 For example, for 2 detector networks (IE<0.5, \|ni-NI\|=0) - **D**\ =0.5 will impose circular polarization constraint (zero 0-phase projection). The condition [5] is false. - **D**\ =1.0 will impose hard regulator on 2-detector event (zero both x-projections) | **D**\ =0 means that no constraint is applied. | Negative value of **D** will use the likelihood statistics to calculate the sky localization probability map. | Positive **D** will use the detection statistic to calculate the probability skymap. The WDM transform ~~~~~~~~~~~~~~~~~~~~~~~ - **`WDM paper `__**, **`presentation `__** - The WDM is a class which belong to the Wavelet Analysis Tool (WAT) : **`WAT classes `__**, **`Class Hierarchy `__** - walk through algorithmic implementation of the **`WDM :cwb_library:`WDM`** class - The following macros illustrate some examples that shown how to use the WDM class. - :cwb_library:`testWDM_1.C` apply transformation on white noise and plot it new to execute the macro do : **root testWDM_1.C** - the output plot |image184| | - :cwb_library:`testWDM_2.C` access TF data new to execute the macro do : **root testWDM_2.C** - the output plot |image185| | - :cwb_library:`testWDM_3.C` FFT of basis function from selected layer new to execute the macro do : **root testWDM_3.C** - the output plot |image186| | - :cwb_library:`testWDM_4.C` apply transformation on white noise and produce a power spectral density plot new to execute the macro do : **root testWDM_4.C** - the output plot |image187| | - :cwb_library:`testWDM_5.C` using Time Delay Filters to shift a sine-gaussian in the TF domain new to execute the macro do : **root testWDM_5.C** - the output plot |image188| | - :cwb_library:`testWDM_6.C` residuals new to execute the macro do : **root testWDM_6.C** - the output plot |image189| | - :cwb_library:`testWDM_7.C` residuals with increased precision (4th parameter in the WDM constructor) new to execute the macro do : **root testWDM_7.C** - the output plot |image190| | - :cwb_library:`testWDM_8.C` accuracy of time delay filters: new to execute the macro do : **root testWDM_8.C** - the output plot |image191| | The Sparse TF Map ~~~~~~~~~~~~~~~~~~~~~~~ | The Sparse TF Map is implemented in the :cwb_library:`SSeries` class and it is derived from the :cwb_library:`WSeries` class. | It is an efficient way to store Time-Frequency pixels contained in the :cwb_library:`WSeries` object when only a small fraction of the pixels are nonzero. It is used to save TF pixels in the Trigger File in the 2 stages cWB analysis. | | |image192| | The **Trigger File** contains all informations necessary in the RECONTRUCTION stage. .. code-block:: bash Trigger File - Superclusters - (set of clusters at different TF resolutions) - Clusters - (set of pixels) - Pixels - (core pixels : selected pixels) - Sparse TF Maps - 1 TF map for each IFO and for each TF resolution - Configurations - Config - Network - History | The TF pixels contained in the Sparse TF Maps are used to compute the time delay amplitudes in the likelihood sky loop. | For each pixel in the cluster the Sparse TF Map must contains auxiliaries pixels showed in the following figure : | | |image193| | | In the cWB 2G pipeline the default **HALO size is (3 layers) x (2\*12+1 slices)** | while the **EXTRA HALO** size depends on the maximum light time between detectors, for example | in the L1H1V1 network the **maximum travel time is ~0.027 sec**. | The method used to extract the pixels necessary for the Time Delay computation is : :cwb_library:`SSeries::GetSTFdata` The following figure show an example of reduction of TF WSeries to TF SSeries. | | |image194| | | The macro - :cwb_library:`SSeriesExample.C` is a full example which illustrates the use TF Sparse Map | Here it is the description of what the macro does : - Create time series SG100Q9 - TF transform of time series -> **TF Map : Signal** - Add Gaussian Noise to SG100Q9 time series - TF transform of time series -> **TF Map : Signal + Noise** - Select pixels over the threshold -> core pixels - Fill cluster structure with core pixels - Create Sparse TF Maps :cwb_library:`SSeries` #. associate TF Map to Sparse TF Map - :cwb_library:`SSeries::SetMap` #. set halo - :cwb_library:`SSeries::SetHalo` #. add core pixels - :cwb_library:`SSeries::AddCore` #. update sparse map - :cwb_library:`SSeries::UpdateSparseTable` #. resize to 0 the TF Map : leave only the Sparse TF Map tables - :cwb_library:`SSeries::Shrink` - rebuild wseries from sparse table only with core pixels -> **TF Map : Core Pixels** - rebuild wseries from sparse table with core+halo pixels -> **TF Map : Core + Halo Pixels** - produce TF plots #. resolution with **4 layers** |image195| #. resolution with **8 layers** |image196| #. resolution with **16 layers** |image197| #. resolution with **32 layers** |image198| The whitening ~~~~~~~~~~~~~~~~~~~ | No significant change since S4 analysis. | | |image199| | **The procedure:** - The TF samples are normalized by the noise RMS. - The RMS is calculated at the finest frequency resolution. - For each layer several values of the RMS are calculated by using the running average. | The whitening procedure is implemented in :cwb_library:`wseries::white` function. | It is based on calculation of the time-series RMS :cwb_library:`wavearray\(double t, int mode, double oFFset, double stride)` | The following picture shows how the whitening coefficients RMS are computed : | | |image200| | The **window** and **stride** parameters can be configured using the **whiteWindow** and the **whiteStride** parameters defined in user_parameter.C file, see ’2G conditioning’ in `description of the parameters <#user-parameters-c>`__ section. | The macro - :cwb_library:`Test2G_Whitening.C` is a full example which illustrates the whitening works | Here it is the description of what the macro does : - Create simulated colored gaussian noise at 16384 Hz - Data are resampled to 4096 Hz - Initialize WDM used for whitening - Apply time frequency data transform at level=10 : pixel’s resolution is dt=250 ms - df=2 Hz - Plot strain data samples distribution -> **Strain data samples distribution** - Plot strain PSD data -> **Strain data PSD** - Initialize WDM used for whitening :cwb_library:`wseries::white` - Whitening data - Plot nRMS data -> **nRMS TF data** - Plot whitened data TF amplituded -> **"Whiten data TF sqrt((E00+E90)/2)** - Plot whitened data distribution & Fit with a gaussian -> **Whitened WDM coefficients distribution** - Plot white PSD data -> **Whitened data PSD** - Plot Average and RMS of the whitened data -> **AVR (black )RMS (red) of the whitened data** If **#define USE_GAUS_NOISE** is declared the macro produces the plots for gaussian noise: | | |image201| | | If **#define USE_GAUS_NOISE** is not declared the macro produces the plots for real noise. | NOTE 1 : For real noise the macro must be run in ATLAS cluster and user must provides the frame files list. | NOTE 2 : The lines after whitening are still there, lines must be removed with `Regression `__. | | |image202| | The pixels selection ~~~~~~~~~~~~~~~~~~~~~~~~~~ | For each WDM resolution the excess power (hot, black) pixels are selected for the subsequent analysis. | In cWB2G a new function getNetworkPixels is implemented, however, conceptually the analysis is the same as for cWB1G. | | |image203| | **The procedure:** For each WDM resolution the excess power (hot, black) pixels are selected for the subsequent analysis. First, the energy TF maps are created for each detector by using the :cwb_library:`wseries::maxEnergy` function. Than the network pixel energy :cwb_library:`network::THRESHOLD` is calculated. And finally the black pixels are selected in :cwb_library:`network::getNetworkPixels` The main difference between the 1G and 2G algorithms for selection of black pixel is that in cWB2G the non-local selection rule is used : a pixel is selected if its energy is greater than some threshold (local rule) and the energy of neighbor pixels is above some (second) threshold (non-local rule). In the following description we shows step by step how the pixels selection works using as example a NSNS signals at the time-frequency resolution dt=250ms, df=2Hz with gaussian noise. - **Whitening** : The data are `whitened <#the-whitening>`__. - whitened L1 data |image204| - whitened H1 data |image205| - whitened V1 data |image206| - **Max Energy** : The function :cwb_library:`wseries::maxEnergy` creates a time frequency map of maximum of energy over sky dependent time shifts. That is for each time-frequency wavelet pixel, try out many shift within +/-dT and save the largest obtained energy. The shifting is done using the cpf function that shift only by positive number of samples, and has a different syntax for forward and backward shifting. The zero and last layer are zeroed out. ( Note : The 0 parameter in Forward means the computed TF map contains energy not amplitude) - max energy L1 data |image207| - max energy H1 data |image208| - max energy V1 data |image209| - **Threshold** : The function :cwb_library:`network::THRESHOLD` computes a threshold on the energy of pixels that are called black (used for clustering), which should correspond to a fraction of all the TF pixels. A heuristic is used that combines the expectation from Gaussian noise, and the actual energy in the TF map (the energy is summed over the detectors in the network). The input from the energy TF map are robust estimate such as the median, the actual threshold for getting 10 times and 1 times the required fraction of pixels. The logic is that we don’t want some loud glitch to blind the analysis of the whole segment, but also to limit the total number of processed pixels when the noise is non-Gaussian. - print out in the coherence stage .. code-block:: bash ------------------------------------------------------------------------------------------- setup ------------------------------------------------------------------------------------------- segment length = 192 sec same rate = 1024 Hz decomposition levels = 3,4,5,6,7,8 number of pixels = 192*1024 = 196608 bpp = 0.001 number of pixels to be selected = 196608*0.001 ~ 196 ------------------------------------------------------------------------------------------- legend ------------------------------------------------------------------------------------------- m : corrective factor for Gamma function : Gamma(N*m,x) M : number of frequency levels bpp : black pixels probability 0.2(D) : threshold of the 20% of loudest data pixels 0.2(G) : threshold of the 20% probability (Gamma function) 0.01(D) : threshold of the 1% of loudest data pixels 0.01(G) : threshold of the 1% probability (Gamma function) bpp(D) : threshold of the bpp of loudest data pixels bpp(G) : threshold of the bpp probability (Gamma function) N*log(m) : corrective threshold value (N=number of detectors) fff : (number of data pixels with energy > 0.0001)/(total pixels) ------------------------------------------------------------------------------------------- level : 8 rate(hz) : 4 layers : 256 df(hz) : 2 dt(ms) : 250 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 1.08 257 0.001 4.572 4.579 8.990 8.809 13.034 11.681 0.231 0.965 thresholds in units of noise variance: Eo=7.64537083516 Em=15.29074167032 SELECTED PIXELS : 254 ------------------------------------------------------------------------------------------- level : 7 rate(hz) : 8 layers : 128 df(hz) : 4 dt(ms) : 125 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 1.17 129 0.001 4.890 4.914 9.371 9.254 13.445 12.179 0.471 0.961 thresholds in units of noise variance: Eo=8.1584324453822 Em=16.316864890764 SELECTED PIXELS : 221 ------------------------------------------------------------------------------------------- level : 6 rate(hz) : 16 layers : 64 df(hz) : 8 dt(ms) : 62.5 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 1.32 65 0.001 5.448 5.466 9.973 9.981 14.149 12.991 0.833 0.954 thresholds in units of noise variance: Eo=8.9750179277537 Em=17.950035855507 SELECTED PIXELS : 221 ------------------------------------------------------------------------------------------- level : 5 rate(hz) : 32 layers : 32 df(hz) : 16 dt(ms) : 31.25 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 1.57 33 0.001 6.350 6.374 11.070 11.159 15.249 14.300 1.353 0.939 thresholds in units of noise variance: Eo=10.21794047063 Em=20.435880941261 SELECTED PIXELS : 190 ------------------------------------------------------------------------------------------- level : 4 rate(hz) : 64 layers : 16 df(hz) : 32 dt(ms) : 15.625 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 1.93 17 0.001 7.653 7.659 12.435 12.797 16.503 16.111 1.973 0.882 thresholds in units of noise variance: Eo=11.756692941231 Em=23.513385882461 SELECTED PIXELS : 171 ------------------------------------------------------------------------------------------- level : 3 rate(hz) : 128 layers : 8 df(hz) : 64 dt(ms) : 7.8125 ------------------------------------------------------------------------------------------- m M bpp 0.2(D) 0.2(G) 0.01(D) 0.01(G) bpp(D) bpp(G) N*log(m) fff 2.4 9 0.001 9.294 9.308 14.203 14.859 17.851 18.378 2.626 0.778 thresholds in units of noise variance: Eo=13.494924381499 Em=26.989848762999 SELECTED PIXELS : 119 - **Pixel Selection** : The function :cwb_library:`network::getNetworkPixels` selects the pixels from the sum over detectors energy TF map. There are two threshold: E0 and Em=2\*Eo. To be selected a pixel needs to be either above Em by itself, or be above E0 and above Em when making a geometric mean with some neighboring pixels. The neighboring pixels considered in a 5x5 matrix around the pixel, and are grouped into 4 wedges of 3 pixels in the upgoing-chirp direction. The geometric mean is done between the considered pixel and the sum of energy in two consecutive wedges. Very loud pixels are trimmed to Em+0.1 to not over-select their neighbors, the energy of vetoed pixels is reset to 0. - the non local rule selection scheme |image210| - network max energy data |image211| - selected network max energy data |image212| The sub-net cut algorithm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | **What is the purpose of the sub-network cut?** The cWB2G pipeline has two stages: ETG (generation of triggers) and Likelihood (reconstruction of GW events). The ETG stage is organized in the following way: - read data, data quality - produce TF maps withWDM transform, data conditioning - selection of excess power pixels for multiple TF resolutions, store pixel files for each time lag. - cluster and super-cluster analysis - the cWB2G triggers are formed - **calculation of time delay arrays and sub-network cut, which main purpose is to reduce the ETG output pixel rate** - selected triggers and the corresponding sparse TF maps are stored in the trigger files. | **The :cwb_library:`network::subNetCut` algorithm** Ther main idea of the sub-network cut is to get rid of the single detector glitches which dominate the ETG rate. The algorithm is based on the **sub-network energy e-e[k]**, where **e** is the total network energy and **e[k]** is the energy in the detector **k**. The subNetCut function performs the following steps : - calculate the amplitude time delay arrays for each pixel and each detector. The delayed amplitudes are calculated in the interval [-Tnet, Tnet] with the time step of 1/sampling rate (**Tnet** is maximum propagation time between detectors). The amplitude array represents amplitudes in a given pixel (and detector) if data is shifted by some time delay tau. So each network pixel contains K delayed amplitude arrays, one per detector, where **K** is the number of detectors in the network. - The delay amplitudes are calculated only for first LOUD pixels in the event (**LOUD** is a production parameter and a typical value is 300). If a trigger has <300 pixels it is not affected by this parameter. If number of pixels in the trigger >LOUD, only first LOUD pixels has the amplitude array initialized. - Perform loop over the sky with sparse segmentation (HEALPIX=4). In each sky point first, network pixels are selected if their total energy **e>En**. The threshold **En = 2\*K\*Ao\*Ao**, where Ao=1.5-1.7 (is amplitude in units of the detector noise rms : **Ao=Acore** where Acore is a production parameter). - Than the total energy **Eo=sum{e}** and the minimum sub-network energy **Ls=sum{min{e-e[k]}}** are calculated. The sums are performed over all selected network pixels : the number of these pixels is **N**. - In addition, the reduced sub-network energy **Ln** is calculated in the same way as Ls, but dropping the terms **min{e-e[k]}** if they are below the threshold Es. The number of pixels **M** in the Ln sum is M`__. - **monster cluster analysis** (:cwb_library:`monster` class and :cwb_library:`network::_sse_MRA_ps` function in the network class) extract principal components (subset of TF pixels from different resolutions) from the oversampled pixel set. The extracted pixel amplitudes are used for the event reconstruction (waveforms and sky location). To perform the MCA, the overlap integrals of basis functions from different TF resolutions should be calculated - a set of overlap integrals define the overlap catalog. - How to create a catalog using the monster class : - :cwb_library:`CreateOverlapCatalog.C` - | Test of the monster class | As an example we used white noise sampled at 1024Hz and produced two time-frequency maps: ( ) | | |image213| | Next, using the overlap coefficients computed by the monster class we subtract each pixel in the first TF map from the second. Since the two TF maps represent the same signal, ideally the subtraction would remove all the energy. However, this is never the case since we only store overlap coefficients = 0.01: ( ) | | |image214| | The plot above, after the subtraction, shows that over 99.9% of the energy has been removed, as expected. We conclude that the overlap ("cross-talk") coefficients are computed correctly by the monster class. ( ) | | |image215| | | The script for this test is available in the repository: - :cwb_library:`reviewMonster.C` The standard FAD statistic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ NOTE : this documentation is extract from `Giulio Mazzolo PhD thesis 2013 `__ It is convenient to perform searches on multiple networks and combine the results of the analyses into one single measurement. In general, however, different searches do not share similar sensitivities. The differences in sensitivity could arise from the considered networks, epochs and data-analysis methods. The FAR statistic does not enable a direct comparison and combination of searches showing different sensitivities. The FAR encodes only information on the background affecting the analysis. The FAD statistic is defined as : In the above equation, \\( T_{bkg} \\) is the effective background livetime, \\( V_{vis} \\) is the \\( V_{vis} \\) averaged over the tested parameter space and the sum runs over the background events louder than a specific value. The FAD measures the density of false alarms within the \\( V_{vis} \\) in which the analysis is sensitive to the investigated GW source. With the introduction of the FAD, the information of how noisy the search is, the background, includes now the search sensitivity as well. As a rough approximation, in fact, the FAD statistic can be thought of as a weighted FAR, the weight being the visible volume surveyed by the search. GW candidates reconstructed by different searches are compared and ranked in terms of the FAD statistic. Louder events are characterized by lower FAD values. In particular, it is possible to compare in terms of FAD events reconstructed by different data-analysis algorithms. This is a desirable property since, in general, different algorithms do not share common ranking statistics. To compute the significance of a GW candidate, the FAD of the event is compared to the search productivity The productivity measures the space-time 4-volume surveyed by the combined searches and is defined as : In the above equation, the sum runs over K combined searches and \\( V_{\\text{vis}, \\, k} \\, (\\text{FAD}) \\) is the visible volume surveyed at the desired FAD. \\( V_{\\text{vis}, \\, k} \\, (\\text{FAD}) \\) is evaluated by applying the \\( \\eta^\* \\) cut on the simulation study such that \\( \\text{FAD}(\\eta^\*) \\) is the desired FAD. The expected mean number of events originated by the noise sources within the 4-volume (FAD) is calculated as : Finally, assuming the background to be Poisson-distributed, the probability that a background process could originate N events at FAD lower than FAD is calculated as : It is straightforward to note that the approach developed in this section is the extension of the formalism used for the FAR : **Further documents** : - S. Klimenko and C.Pankow, *Detection statistic for multiple algorithms, networks and data sets*, LIGO note T-1300869, `pdf `__ - Search for gravitational waves from intermediate mass black hole binaries, `C.Pankow Thesis 2011 `__ The Qveto ~~~~~~~~~~~~~~~ The all-sky burst search is covering a vast parameter space of anticipated GW signals. We do not know how they populate the parameter space, but we know how detector glitches do that. Similar to the CBC high mass and IMBBH searches which divide the parameter space of binary events into mass and spin bins, the all-sky search can divide the parameter space in duration, bandwidth and q-factor bins. The point of this division is to rank events in each bin independently. Therefore, FAR of GW candidates in each bin is calculated with respect to the corresponding background. Bins affected by background will yield low detection significance, while significance of events in the quite bins will be enhanced. The purpose of **Qveto** is to separate all-sky search triggers into a "**clean**\ " and "**dirty**\ " samples based on the quality factor of the events. This selection rule does not really reject events as a background bat rather tag them into different classes. Qveto is not the only selection rule like that - in general, additional selection rules are anticipated: a) selection rule based on the duration of events to identify a sample of "long dudation" bursts (so called long duration search) and b) the selection rule based on the bandwith to mitigate glitches coming from non-stationary lines. | The **QVeto** code is not part of the standard pipeline, but rather is implemented as a plugin : - :cwb_library:`cWB_Plugin_Qveto.C` In the following we describe dhe procedure to compute the Qveto. | | |image216| | | The figure shows the whitened detector’s reconstructed waveform. The computation of the **Qveto** is defined by two parameters : - The parameter **NTHR** is used to select the number of relative maximum around the maximum value. - The parameter **ATHR** is used to exclude signal noise The list of steps used in the procedure are the following : | the code looks for the maximum of absolute value (red(**Ar**),blue(\ **Ab**),green(\ **Ag**) dots) for each part of the whitened reconstructed waveform that has a constant sign (for each detector) | find the maximum absolute amplitude : **amax** | select the **blue amplitudes** (Ab) according to the NTHR. In the figure NTHR=1 and the blue amplitudes are constitutes by three values : - 1) the amax amplitude - 2) 1 amplitude on the left of the amax value - 3) 1 amplitude on the right of the amax value select the **green amplitudes** (Ag) according the ATHR - Ag are the amplitudes with \|Ag\|>\|amax\|/ATHR compute the **Qveto** : - **Qveto** = Eg / Eb = Sum[Ag\*Ag] / Sum[Ab\*Ab] | The Qveto is computed for nIFO reconstructed waveforms and nIFO whitened waveforms (signal+noise), the minimum of the 2\*nIFO Qveto values is stored in the output root file in the first element of the array Qveto[2]. | Beside the Qveto it is also estimated the **Qfactor**. - | The shape of the blip glitches can be modeled by a CosGaussian? function: | **CosGaussian(w, Q)** = cos(w\*t) \* exp[-(w\*t)^2 / (2\*Q^2)] | where | w=2\*Pi\*frequency and Q = Qfactor | For a CosGaussian a good approximated estimation of the Qfactor is: | **Qfactor** = Sqrt( -pow(Pi,2) / log(R) / 2 ) | where - **R** = ( max_left_peak+max_right_peak ) / 2 / max_main_peak **max_main_peak** = absolute value of the max main peak **max_left_peak** = absolute value of the max left peak nearest to the main peak **max_right_peak** = absolute value of the max right peak nearest to the main peak Qfactor is stored in Qveto[1] The default values used in - :cwb_library:`cWB_Plugin_Qveto.C` are : - **NTHR = 1** - **ATHR ~ 7.6** Such values have been empirically selected based on tests done with the advanced detectors background. The separation of the all-sky search triggers into a "**clean**\ " and "**dirty**\ " sets is done in the post-production phase according to the following rule : - **clean set** : (Qveto[0]>QTHR0 && Qveto[1]>QTHR1) - **dirty set** : !(Qveto[0]>QTHR0 && Qveto[1]>QTHR1) where : - **QTHR1** and **QTHR2** are used to select the max Q factor of the glitches | For L1H1 the standard value used for QTHR1 is 0.3 and QTHR2 is 2.5: (Qveto[0]>0.3 && Qveto[1]>2.5). | This threshold approximately separates triggers with Q<2.5 (dirty set) and Q>2.5 (clean set). The Lveto ~~~~~~~~~~~~~~~ There are very narrow-band glitches (few Hz) mainly observed at the power line frequencies and near dither lines. The **Lveto** algorithm is used to identify such glitches and compute additional parameters to be added to the event data record. The **LVeto** code is implemented as a plugin : - :cwb_library:`cWB_Plugin_Qveto.C` The output of the plugin is used for an additional selection cut designed to reduce FAR from the narrow-band glitches. In the following we describe the procedure to compute the Lveto. The figure shows the time-frequency principal component pixels of the reconstructed signal. These pixels are used by the plugin to identify the Lveto glitch parameters. | | |image217| | The list of steps used in the procedure are the following : the code looks for the pixel with the maximum energy and save the following parameters : - - 1) the **central frequency** of the max pixel : **freq_max_pixel** - 2) the **frequency width** of the max pixel : **width_max_pixel** all pixels with central frequency in the frequency range : .. code-block:: bash pix_freq_range = [freq_max_pixel-width_max_pixel : freq_max_pixel+width_max_pixel] | are used to compute the following parameters : - 1) the **frequency mean** - 2) the **frequency rms** - 3) the **energy in the pix_freq_range** | The parameters are stored into the event data record into the array **Lveto[3]** : - **Lveto[0]** = the frequency mean - **Lveto[1]** = the frequency rms - **Lveto[2]** = the energy ratio of the energy in the pix_freq_range and the total evengy of the event If **Lveto[2]** is near to 1 than most of the signal energy is inside the **Lveto[0]+/-Lveto[1]** range and **Lveto[1]** can be used to identify the narrow-band glitches. The Gating Plugin ~~~~~~~~~~~~~~~~~~~~~~~ **Gating** is the procedure to mitigate the data quality issues associated with very loud glitches in data. The super-glitches affect calculation of the cWB threshold making it very large. As a result, the job segments with super-glitches are insensitive to GW and **produce high-SNR glitches**. | The plugin which implements the gating is - :cwb_library:`cWB_Plugin_Gating.C` It is execute in the 2G pipeline class :cwb_library:`cwb2G` at the beginning of the COHERENCE stage before the time-frequency maps of the max energies used for `(the pixels selection) <#the-pixels-selection>`__. | | |image218| | **Gating** excludes from the analysis all pixels in a time interval where there is a super-glitch. | | |image219| | | The figure shows the time-frequency map of whitened max energy pixels. It is created in the coherence stage and is used to select the pixels. | The Procedure ============= The procedure is applied for each detector. The list of steps used in the - :cwb_library:`cWB_Plugin_Gating.C` are the following : **The time-frequency map of the whitened max energies is projected on the time axis.** For each time index is computed the sum of the pixel energy over all frequency layers. |image220| **Apply a moving average window**. The time whitened energy samples are integrated over the time window **TWIN**. The parameter **TWIN** must be selected as the maximum time length of the super-glitches that must be excluded from the analysis. **Find the time samples to be excluded from the selection** A time sample is marked as to be excluded when the time integrated energy is greater than **SETHR** When a time sample is excluded also the time samples in the interval **[sample-TEDG:sample+TEDG]** are also excluded. These pixels do not partecipate to the computation of the pixel's selection thereshold and are excluded from the selection **Merge segments lists** The vetoed segments of all detectors are merged in a unique segments list The default values used in - :cwb_library:`cWB_Plugin_Gating.C` are : - **SETHR = 1000000** The events which are exluded by this threshold are the ones with - **SNRdet>sqrt(SETHR)=1000** in at least one detector. - **TWIN = 0.5 sec** - **TEDG = 1.5 sec** The WDM packets ~~~~~~~~~~~~~~~~~~~~~ :download:`pdf ` - What_are_wavelet_packets.pdf .. _the-signal-reconstruction-and-regulators: The signal reconstruction and regulators (WP) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :download:`pdf ` - Signal_reconstruction_and_regulators.pdf