From 6088b16c2060a1f8a1f84aa7ed9ad6c481bfd0a6 Mon Sep 17 00:00:00 2001 From: Oliver Bock <oliver.bock@aei.mpg.de> Date: Thu, 9 Nov 2017 15:20:56 +0100 Subject: [PATCH] Added switches to disable individual IFOs (in plot, not map) --- src/pulsaranimationwidget.cpp | 79 ++++++++---- src/pulsaranimationwidget.h | 10 ++ src/pulsatingscience.cpp | 25 ++++ src/pulsatingscience.h | 5 + src/pulsatingscience.ui | 235 ++++++++++++++++------------------ 5 files changed, 208 insertions(+), 146 deletions(-) diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp index 0c02de0..3650822 100644 --- a/src/pulsaranimationwidget.cpp +++ b/src/pulsaranimationwidget.cpp @@ -69,6 +69,11 @@ PulsarAnimationWidget::PulsarAnimationWidget(QWidget *parent) : m_beamTexture = 0; // initial parameters (have to match GUI!) + m_LHOEnabled = true; + m_LLOEnabled = true; + m_VirgoEnabled = true; + m_KAGRAEnabled = true; + m_LIEnabled = true; m_LHOAngle = 0; m_LLOAngle = 0; m_VirgoAngle = 0; @@ -620,6 +625,36 @@ void PulsarAnimationWidget::setSourceInclination(const double degrees) updateGL(); } +void PulsarAnimationWidget::setLHOState(const bool enabled) +{ + m_LHOEnabled = enabled; + updatePulseProfile(); +} + +void PulsarAnimationWidget::setLLOState(const bool enabled) +{ + m_LLOEnabled = enabled; + updatePulseProfile(); +} + +void PulsarAnimationWidget::setVirgoState(const bool enabled) +{ + m_VirgoEnabled = enabled; + updatePulseProfile(); +} + +void PulsarAnimationWidget::setKAGRAState(const bool enabled) +{ + m_KAGRAEnabled = enabled; + updatePulseProfile(); +} + +void PulsarAnimationWidget::setLIState(const bool enabled) +{ + m_LIEnabled = enabled; + updatePulseProfile(); +} + void PulsarAnimationWidget::setLHOAngle(const double degrees) { m_LHOAngle = degrees; @@ -726,30 +761,30 @@ void PulsarAnimationWidget::updatePulseProfile() for(int x = 0; x < 360*PERIODS; ++x) { double t=x/(PERIODS*360.0); double freq = 1.0/pow(1.1-t,0.375); - m_plotData.m_dataLLO[x] = 0.8 * out.amp[0] * freq * freq * sin((freq*(x + dx[0]) + out.phase[0]) * deg2rad); - m_plotData.m_dataLHO[x] = 0.8 * out.amp[1] * freq * freq * sin((freq*(x + dx[1]) + out.phase[1]) * deg2rad); - m_plotData.m_dataVirgo[x] = 0.8 * out.amp[2] * freq * freq * sin((freq*(x + dx[2]) + out.phase[2]) * deg2rad); - m_plotData.m_dataKAGRA[x] = 0.8 * out.amp[3] * freq * freq * sin((freq*(x + dx[3]) + out.phase[3]) * deg2rad); - m_plotData.m_dataLI[x] = 0.8 * out.amp[4] * freq * freq * sin((freq*(x + dx[4]) + out.phase[4]) * deg2rad); + m_plotData.m_dataLLO[x] = m_LLOEnabled ? 0.8 * out.amp[0] * freq * freq * sin((freq*(x + dx[0]) + out.phase[0]) * deg2rad) : 0.0; + m_plotData.m_dataLHO[x] = m_LHOEnabled ? 0.8 * out.amp[1] * freq * freq * sin((freq*(x + dx[1]) + out.phase[1]) * deg2rad) : 0.0; + m_plotData.m_dataVirgo[x] = m_VirgoEnabled ? 0.8 * out.amp[2] * freq * freq * sin((freq*(x + dx[2]) + out.phase[2]) * deg2rad) : 0.0; + m_plotData.m_dataKAGRA[x] = m_KAGRAEnabled ? 0.8 * out.amp[3] * freq * freq * sin((freq*(x + dx[3]) + out.phase[3]) * deg2rad) : 0.0; + m_plotData.m_dataLI[x] = m_LIEnabled ? 0.8 * out.amp[4] * freq * freq * sin((freq*(x + dx[4]) + out.phase[4]) * deg2rad) : 0.0; } - m_plotData.m_ampLLO = out.amp[0]; - m_plotData.m_ampLHO = out.amp[1]; - m_plotData.m_ampVirgo = out.amp[2]; - m_plotData.m_ampKAGRA = out.amp[3]; - m_plotData.m_ampLI = out.amp[4]; - - m_plotData.m_phiLLO = out.phase[0]; - m_plotData.m_phiLHO = out.phase[1]; - m_plotData.m_phiVirgo = out.phase[2]; - m_plotData.m_phiKAGRA = out.phase[3]; - m_plotData.m_phiLI = out.phase[4]; - - m_plotData.m_dtLLO = out.dt[0]; - m_plotData.m_dtLHO = out.dt[1]; - m_plotData.m_dtVirgo = out.dt[2]; - m_plotData.m_dtKAGRA = out.dt[3]; - m_plotData.m_dtLI = out.dt[4]; + m_plotData.m_ampLLO = m_LLOEnabled ? out.amp[0] : 0.0; + m_plotData.m_ampLHO = m_LHOEnabled ? out.amp[1] : 0.0; + m_plotData.m_ampVirgo = m_VirgoEnabled ? out.amp[2] : 0.0; + m_plotData.m_ampKAGRA = m_KAGRAEnabled ? out.amp[3] : 0.0; + m_plotData.m_ampLI = m_LIEnabled ? out.amp[4] : 0.0; + + m_plotData.m_phiLLO = m_LLOEnabled ? out.phase[0] : 0.0; + m_plotData.m_phiLHO = m_LHOEnabled ? out.phase[1] : 0.0; + m_plotData.m_phiVirgo = m_VirgoEnabled ? out.phase[2] : 0.0; + m_plotData.m_phiKAGRA = m_KAGRAEnabled ? out.phase[3] : 0.0; + m_plotData.m_phiLI = m_LIEnabled ? out.phase[4] : 0.0; + + m_plotData.m_dtLLO = m_LLOEnabled ? out.dt[0] : 0.0; + m_plotData.m_dtLHO = m_LHOEnabled ? out.dt[1] : 0.0; + m_plotData.m_dtVirgo = m_VirgoEnabled ? out.dt[2] : 0.0; + m_plotData.m_dtKAGRA = m_KAGRAEnabled ? out.dt[3] : 0.0; + m_plotData.m_dtLI = m_LIEnabled ? out.dt[4] : 0.0; // propagate new plot data emit pulseProfileUpdated(m_plotData); diff --git a/src/pulsaranimationwidget.h b/src/pulsaranimationwidget.h index 9877d18..c57eb71 100644 --- a/src/pulsaranimationwidget.h +++ b/src/pulsaranimationwidget.h @@ -47,6 +47,11 @@ public: PulsarAnimationWidget(QWidget *parent); virtual ~PulsarAnimationWidget(); + void setLHOState(const bool enabled); + void setLLOState(const bool enabled); + void setVirgoState(const bool enabled); + void setKAGRAState(const bool enabled); + void setLIState(const bool enabled); void setLHOAngle(const double degrees); void setLLOAngle(const double degrees); void setVirgoAngle(const int degrees); @@ -92,6 +97,11 @@ private: GLuint m_beamTexture; double m_earthRadius; + bool m_LHOEnabled; + bool m_LLOEnabled; + bool m_VirgoEnabled; + bool m_KAGRAEnabled; + bool m_LIEnabled; double m_LHOAngle; double m_LLOAngle; double m_VirgoAngle; diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp index 157203f..0a12cb1 100644 --- a/src/pulsatingscience.cpp +++ b/src/pulsatingscience.cpp @@ -133,6 +133,31 @@ void PulsatingScience::closeEvent(QCloseEvent *event) } } +void PulsatingScience::on_chkLHO_clicked(bool checked) +{ + ui.pulsarGlWidget->setLHOState(checked); +} + +void PulsatingScience::on_chkLLO_clicked(bool checked) +{ + ui.pulsarGlWidget->setLLOState(checked); +} + +void PulsatingScience::on_chkVirgo_clicked(bool checked) +{ + ui.pulsarGlWidget->setVirgoState(checked); +} + +void PulsatingScience::on_chkKAGRA_clicked(bool checked) +{ + ui.pulsarGlWidget->setKAGRAState(checked); +} + +void PulsatingScience::on_chkLI_clicked(bool checked) +{ + ui.pulsarGlWidget->setLIState(checked); +} + void PulsatingScience::on_sliderLHOAngle_valueChanged(int value) { ui.pulsarGlWidget->setLHOAngle(value); diff --git a/src/pulsatingscience.h b/src/pulsatingscience.h index dfb9a10..e0ed35b 100644 --- a/src/pulsatingscience.h +++ b/src/pulsatingscience.h @@ -39,6 +39,11 @@ public: void closeEvent(QCloseEvent *event); public slots: + void on_chkLHO_clicked(bool checked); + void on_chkLLO_clicked(bool checked); + void on_chkVirgo_clicked(bool checked); + void on_chkKAGRA_clicked(bool checked); + void on_chkLI_clicked(bool checked); void on_sliderLHOAngle_valueChanged(int value); void on_sliderLLOAngle_valueChanged(int value); void on_sliderVirgoAngle_valueChanged(int value); diff --git a/src/pulsatingscience.ui b/src/pulsatingscience.ui index 72b51e8..e449990 100644 --- a/src/pulsatingscience.ui +++ b/src/pulsatingscience.ui @@ -73,37 +73,37 @@ <layout class="QGridLayout" name="gridLayout_3"> <item row="1" column="0"> <layout class="QGridLayout" name="gridLayout_2"> - <item row="2" column="4"> - <spacer name="horizontalSpacer_3"> + <item row="4" column="3"> + <widget class="QSlider" name="sliderLIAngle"> + <property name="statusTip"> + <string>Use this slider to rotate LIGO-India away from its actual orientation. The meter on the far right shows the relative LIGO-India strain amplitude.</string> + </property> + <property name="maximum"> + <number>360</number> + </property> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> + <property name="tickPosition"> + <enum>QSlider::TicksBelow</enum> </property> - </spacer> + </widget> </item> - <item row="1" column="5"> + <item row="1" column="7"> <widget class="QLabel" name="label_10"> <property name="text"> <string>A:</string> </property> </widget> </item> - <item row="0" column="5"> + <item row="0" column="7"> <widget class="QLabel" name="label_2"> <property name="text"> <string>A:</string> </property> </widget> </item> - <item row="1" column="2"> + <item row="1" column="4"> <widget class="QLCDNumber" name="lcdLLOAngle"> <property name="digitCount"> <number>6</number> @@ -116,7 +116,7 @@ </property> </widget> </item> - <item row="0" column="4"> + <item row="0" column="6"> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -132,7 +132,7 @@ </property> </spacer> </item> - <item row="6" column="2"> + <item row="6" column="4"> <widget class="QLCDNumber" name="lcdSourceInclination"> <property name="digitCount"> <number>6</number> @@ -145,30 +145,14 @@ </property> </widget> </item> - <item row="1" column="4"> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="5" column="3"> + <item row="5" column="5"> <widget class="QLabel" name="label_6"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="5" column="2"> + <item row="5" column="4"> <widget class="QLCDNumber" name="lcdSourceIota"> <property name="digitCount"> <number>6</number> @@ -181,7 +165,7 @@ </property> </widget> </item> - <item row="6" column="1"> + <item row="6" column="3"> <widget class="QSlider" name="sliderSourceInclination"> <property name="statusTip"> <string>Use this slider to adjust the longitude (psi) of the binary system's orbital ascending node</string> @@ -206,7 +190,7 @@ </property> </widget> </item> - <item row="0" column="2"> + <item row="0" column="4"> <widget class="QLCDNumber" name="lcdLHOAngle"> <property name="digitCount"> <number>6</number> @@ -219,21 +203,21 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="1" column="2"> <widget class="QLabel" name="label"> <property name="text"> <string><html><head/><body><p><span style=" color:#ff0000;">LIGO Livingston Orientation</span></p></body></html></string> </property> </widget> </item> - <item row="5" column="0"> + <item row="5" column="2"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Source: iota</string> </property> </widget> </item> - <item row="0" column="1"> + <item row="0" column="3"> <widget class="QSlider" name="sliderLHOAngle"> <property name="statusTip"> <string>Use this slider to rotate LIGO Hanford (LHO) away from its actual orientation. The meter on the far right shows the relative LHO strain amplitude.</string> @@ -258,28 +242,28 @@ </property> </widget> </item> - <item row="0" column="3"> + <item row="0" column="5"> <widget class="QLabel" name="label_13"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="1" column="3"> + <item row="1" column="5"> <widget class="QLabel" name="label_8"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="0" column="0"> + <item row="0" column="2"> <widget class="QLabel" name="label_12"> <property name="text"> <string><html><head/><body><p><span style=" color:#0000ff;">LIGO Hanford Orientation</span></p></body></html></string> </property> </widget> </item> - <item row="5" column="1"> + <item row="5" column="3"> <widget class="QSlider" name="sliderSourceIota"> <property name="statusTip"> <string>Use this slider to adjust the orbital plane inclination angle (iota) of the binary system</string> @@ -301,7 +285,7 @@ </property> </widget> </item> - <item row="1" column="1"> + <item row="1" column="3"> <widget class="QSlider" name="sliderLLOAngle"> <property name="statusTip"> <string>Use this slider to rotate LIGO Livingston (LLO) away from its actual orientation. The meter on the far right shows the relative LLO strain amplitude.</string> @@ -335,21 +319,21 @@ </property> </widget> </item> - <item row="6" column="3"> + <item row="6" column="5"> <widget class="QLabel" name="label_9"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="6" column="0"> + <item row="6" column="2"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Source: psi</string> </property> </widget> </item> - <item row="0" column="6"> + <item row="0" column="8"> <widget class="QLCDNumber" name="lcdAmpLHO"> <property name="statusTip"> <string>Relative strain amplitude of LHO</string> @@ -362,7 +346,7 @@ </property> </widget> </item> - <item row="1" column="6"> + <item row="1" column="8"> <widget class="QLCDNumber" name="lcdAmpLLO"> <property name="statusTip"> <string>Relative strain amplitude of LLO</string> @@ -375,10 +359,17 @@ </property> </widget> </item> - <item row="3" column="2"> + <item row="3" column="4"> <widget class="QLCDNumber" name="lcdKAGRAAngle"/> </item> - <item row="3" column="6"> + <item row="4" column="5"> + <widget class="QLabel" name="label_18"> + <property name="text"> + <string>deg</string> + </property> + </widget> + </item> + <item row="3" column="8"> <widget class="QLCDNumber" name="lcdAmpKAGRA"> <property name="statusTip"> <string>Relative strain amplitude of KAGRA</string> @@ -392,14 +383,49 @@ </property> </widget> </item> - <item row="3" column="5"> + <item row="3" column="7"> <widget class="QLabel" name="label_16"> <property name="text"> <string>A:</string> </property> </widget> </item> - <item row="2" column="6"> + <item row="2" column="0"> + <widget class="QCheckBox" name="chkVirgo"> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QCheckBox" name="chkLHO"> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="chkLI"> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="7"> + <widget class="QLabel" name="label_19"> + <property name="text"> + <string>A:</string> + </property> + </widget> + </item> + <item row="4" column="2"> + <widget class="QLabel" name="label_17"> + <property name="text"> + <string><html><head/><body><p><span style=" color:#ff00ff;">LIGO-India Orientation</span></p></body></html></string> + </property> + </widget> + </item> + <item row="2" column="8"> <widget class="QLCDNumber" name="lcdAmpVirgo"> <property name="statusTip"> <string>Relative strain amplitude of Virgo</string> @@ -412,21 +438,21 @@ </property> </widget> </item> - <item row="3" column="3"> + <item row="3" column="5"> <widget class="QLabel" name="label_15"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="2" column="3"> + <item row="2" column="5"> <widget class="QLabel" name="label_7"> <property name="text"> <string>deg</string> </property> </widget> </item> - <item row="3" column="1"> + <item row="3" column="3"> <widget class="QSlider" name="sliderKAGRAAngle"> <property name="statusTip"> <string>Use this slider to rotate KAGRA away from its actual orientation. The meter on the far right shows the relative KAGRA strain amplitude.</string> @@ -442,28 +468,41 @@ </property> </widget> </item> - <item row="3" column="0"> + <item row="4" column="8"> + <widget class="QLCDNumber" name="lcdAmpLI"> + <property name="statusTip"> + <string>Relative strain amplitude of LIGO-India</string> + </property> + <property name="styleSheet"> + <string notr="true">color:rgb(255, 0, 255)</string> + </property> + <property name="digitCount"> + <number>4</number> + </property> + </widget> + </item> + <item row="3" column="2"> <widget class="QLabel" name="label_14"> <property name="text"> <string><html><head/><body><p><span style=" color:#c8c800;">KAGRA Orientation</span></p></body></html></string> </property> </widget> </item> - <item row="2" column="0"> + <item row="2" column="2"> <widget class="QLabel" name="label_4"> <property name="text"> <string><html><head/><body><p><span style=" color:#009900;">Virgo Orientation</span></p></body></html></string> </property> </widget> </item> - <item row="2" column="5"> + <item row="2" column="7"> <widget class="QLabel" name="label_11"> <property name="text"> <string>A:</string> </property> </widget> </item> - <item row="2" column="1"> + <item row="2" column="3"> <widget class="QSlider" name="sliderVirgoAngle"> <property name="statusTip"> <string>Use this slider to rotate Virgo away from its actual orientation. The meter on the far right shows the relative Virgo strain amplitude.</string> @@ -482,7 +521,7 @@ </property> </widget> </item> - <item row="2" column="2"> + <item row="2" column="4"> <widget class="QLCDNumber" name="lcdVirgoAngle"> <property name="digitCount"> <number>6</number> @@ -498,77 +537,25 @@ </property> </widget> </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_17"> - <property name="text"> - <string><html><head/><body><p><span style=" color:#ff00ff;">LIGO-India Orientation</span></p></body></html></string> - </property> - </widget> - </item> - <item row="4" column="3"> - <widget class="QLabel" name="label_18"> - <property name="text"> - <string>deg</string> + <item row="1" column="0"> + <widget class="QCheckBox" name="chkLLO"> + <property name="checked"> + <bool>true</bool> </property> </widget> </item> - <item row="4" column="5"> - <widget class="QLabel" name="label_19"> - <property name="text"> - <string>A:</string> + <item row="3" column="0"> + <widget class="QCheckBox" name="chkKAGRA"> + <property name="checked"> + <bool>true</bool> </property> </widget> </item> - <item row="4" column="2"> + <item row="4" column="4"> <widget class="QLCDNumber" name="lcdLIAngle"/> </item> - <item row="4" column="6"> - <widget class="QLCDNumber" name="lcdAmpLI"> - <property name="statusTip"> - <string>Relative strain amplitude of LIGO-India</string> - </property> - <property name="styleSheet"> - <string notr="true">color:rgb(255, 0, 255)</string> - </property> - <property name="digitCount"> - <number>4</number> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QSlider" name="sliderLIAngle"> - <property name="statusTip"> - <string>Use this slider to rotate LIGO-India away from its actual orientation. The meter on the far right shows the relative LIGO-India strain amplitude.</string> - </property> - <property name="maximum"> - <number>360</number> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="tickPosition"> - <enum>QSlider::TicksBelow</enum> - </property> - </widget> - </item> - <item row="3" column="4"> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Fixed</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="4" column="4"> - <spacer name="horizontalSpacer_5"> + <item row="0" column="1"> + <spacer name="horizontalSpacer_6"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> @@ -577,7 +564,7 @@ </property> <property name="sizeHint" stdset="0"> <size> - <width>40</width> + <width>5</width> <height>20</height> </size> </property> -- GitLab