Skip to content
Snippets Groups Projects
Commit a938e1df authored by Evan Hall's avatar Evan Hall
Browse files

Merge branch 'acceleration-calibration' into 'master'

add acceleration and velocity calibrations

See merge request !171
parents f69ed11f d766c049
No related branches found
No related tags found
No related merge requests found
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -41,7 +41,7 @@ class Aplus(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -49,3 +49,21 @@ class Aplus(nb.Budget):
class Displacement(Aplus):
calibrations = []
class Acceleration(Aplus):
calibrations = [
calibrations.Acceleration,
]
class Velocity(Aplus):
calibrations = [
calibrations.Velocity,
]
class Force(Aplus):
calibrations = [
calibrations.Force,
]
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -94,7 +94,7 @@ class CE1(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -102,3 +102,21 @@ class CE1(nb.Budget):
class Displacement(CE1):
calibrations = []
class Acceleration(CE1):
calibrations = [
calibrations.Acceleration,
]
class Velocity(CE1):
calibrations = [
calibrations.Velocity,
]
class Force(CE1):
calibrations = [
calibrations.Force,
]
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -94,7 +94,7 @@ class CE2silica(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -102,3 +102,21 @@ class CE2silica(nb.Budget):
class Displacement(CE2silica):
calibrations = []
class Acceleration(CE2silica):
calibrations = [
calibrations.Acceleration,
]
class Velocity(CE2silica):
calibrations = [
calibrations.Velocity,
]
class Force(CE2silica):
calibrations = [
calibrations.Force,
]
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -95,7 +95,7 @@ class CE2silicon(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -103,3 +103,25 @@ class CE2silicon(nb.Budget):
class Displacement(CE2silicon):
calibrations = []
class Displacement(CE2silicon):
calibrations = []
class Acceleration(CE2silicon):
calibrations = [
calibrations.Acceleration,
]
class Velocity(CE2silicon):
calibrations = [
calibrations.Velocity,
]
class Force(CE2silicon):
calibrations = [
calibrations.Force,
]
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -41,7 +41,7 @@ class Voyager(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -49,3 +49,21 @@ class Voyager(nb.Budget):
class Displacement(Voyager):
calibrations = []
class Acceleration(Voyager):
calibrations = [
calibrations.Acceleration,
]
class Velocity(Voyager):
calibrations = [
calibrations.Velocity,
]
class Force(Voyager):
calibrations = [
calibrations.Force,
]
from gwinc.ifo import PLOT_STYLE
from gwinc import noise
from gwinc import nb
from gwinc.ifo.noises import Strain
import gwinc.ifo.noises as calibrations
class Quantum(nb.Budget):
......@@ -38,7 +38,7 @@ class aLIGO(nb.Budget):
]
calibrations = [
Strain,
calibrations.Strain,
]
plot_style = PLOT_STYLE
......@@ -46,3 +46,21 @@ class aLIGO(nb.Budget):
class Displacement(aLIGO):
calibrations = []
class Acceleration(aLIGO):
calibrations = [
calibrations.Acceleration,
]
class Velocity(aLIGO):
calibrations = [
calibrations.Velocity,
]
class Force(aLIGO):
calibrations = [
calibrations.Force,
]
......@@ -153,5 +153,21 @@ class Force(nb.Calibration):
"""Calibrate displacement to force
"""
def calc(self):
from ..noise.coatingthermal import mirror_struct
mass = mirror_struct(self.ifo, 'ETM').MirrorMass
return (mass * (2*pi*self.freq)**2)**2
class Acceleration(nb.Calibration):
"""Calibrate displacement to acceleration
"""
def calc(self):
return (2*pi*self.freq)**4
class Velocity(nb.Calibration):
"""Calibrate displacement to velocity
"""
def calc(self):
return (2*pi*self.freq)**2
......@@ -38,18 +38,30 @@ def test_check_noise(ifo, fpath_join, compare_noise):
@pytest.mark.parametrize("ifo", gwinc.IFOS)
def test_displacement_budgets(ifo, tpath_join):
B_disp = load_budget(ifo, bname='Displacement')
B_strain = load_budget(ifo)
traces_disp = B_disp.run()
traces_strain = B_strain.run()
fig = traces_disp.plot()
dhdl_sqr, _ = dhdl(B_strain.freq, B_strain.ifo.Infrastructure.Length)
disp = traces_strain.asd / np.sqrt(dhdl_sqr)
fig.gca().loglog(
traces_disp.freq, disp, ls='--', c='xkcd:cerulean', lw=3)
fig.savefig(tpath_join('TotalDisplacement.pdf'))
assert np.allclose(traces_disp.psd, disp**2, atol=0)
def test_calibrations(ifo, tpath_join):
"""Test that the standard calibrations are correct"""
from gwinc.noise.coatingthermal import mirror_struct
cals = ["Displacement", "Velocity", "Acceleration", "Force"]
budgets = gwinc.Struct({cal: load_budget(ifo, bname=cal) for cal in cals})
budgets["Strain"] = load_budget(ifo)
traces = gwinc.Struct({cal: budget.run() for cal, budget in budgets.items()})
freq = traces.Strain.freq
dhdl_sqr, _ = dhdl(freq, budgets.Strain.ifo.Infrastructure.Length)
disp = traces.Strain.asd / np.sqrt(dhdl_sqr)
for power, (cal, trace) in enumerate(traces.items()):
if cal == "Strain":
continue
# reference is the correct value
reference = disp * (2 * np.pi * freq)**power
if cal == "Force":
mass = mirror_struct(budgets.Strain.ifo, "ETM").MirrorMass
reference = disp * mass * (2 * np.pi * freq)**2
fig = trace.plot()
fig.gca().loglog(freq, reference, ls="--", c="xkcd:baby blue", lw=3)
fig.savefig(tpath_join(f"Total{cal}.pdf"))
assert np.allclose(trace.psd, reference**2, atol=0)
@pytest.mark.parametrize("ifo", gwinc.IFOS)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment