def make_KAGRA(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(lalsimulation.SimNoisePSDKAGRA, fLow, fNyq,
                                 deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'K', (-0.3758971922940067, -0.83615832915098853, 0.3994252738835008),
        (0.71644138561445658, 0.011148317434329416, 0.6975582097554448),
        (-3.777336055e+06, 3.484898386e+06, 3.765313690e+06),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_Virgo(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(lalsimulation.SimNoisePSDAdvVirgo, fLow, fNyq,
                                 deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'V', (-0.70045821479, 0.20848948619, 0.68256166277),
        (-0.05379255368, -0.96908180549, 0.24080451708),
        (4.54637409900e+06, 8.42989697626e+05, 4.37857696241e+06),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_LLO(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(
            lalsimulation.SimNoisePSDaLIGOZeroDetHighPower, fLow, fNyq, deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'L', (-0.95457412153, -0.14158077340, -0.26218911324),
        (0.29774156894, -0.48791033647, -0.82054461286),
        (-7.42760447238e+04, -5.49628371971e+06, 3.22425701744e+06),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_LHO(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(
            lalsimulation.SimNoisePSDaLIGOZeroDetHighPower, fLow, fNyq, deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'H', (-0.22389266154, 0.79983062746, 0.55690487831),
        (-0.91397818574, 0.02609403989, -0.40492342125),
        (-2.16141492636e+06, -3.83469517889e+06, 4.60035022664e+06),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_GEO(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        # Adv. LIGO but 10x less sensitive
        f, psd = f_PSD_from_func(
            lalsimulation.SimNoisePSDaLIGOZeroDetHighPower, fLow, fNyq, deltaF)
        psd *= 100
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'G', (-0.44530676905, 0.86651354130, 0.22551311312),
        (-0.62605756776, -0.55218609524, 0.55058372486),
        (3.85630994926e+06, 6.66598956317e+05, 5.01964141725e+06),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_IndIGO(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(
            lalsimulation.SimNoisePSDaLIGOZeroDetHighPower, fLow, fNyq, deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'I',
        lat_lon_ori_2_xarm(DegMinSec2Rad(1, 19., 5., 47.),
                           DegMinSec2Rad(1, 74., 2., 51.),
                           DegMinSec2Rad(1, 270., 0., 0.)),
        lat_lon_ori_2_yarm(DegMinSec2Rad(1, 19., 5., 47.),
                           DegMinSec2Rad(1, 74., 2., 51.),
                           DegMinSec2Rad(1, 270., 0., 0.)),
        lat_lon_2_vertex(DegMinSec2Rad(1, 19., 5., 47.),
                         DegMinSec2Rad(1, 74., 2., 51.)),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector
def make_LCGT(fLow=10., fNyq=2048., deltaF=0.1, psd_filename=None):
    if psd_filename is None:
        f, psd = f_PSD_from_func(lalsimulation.SimNoisePSDKAGRA, fLow, fNyq,
                                 deltaF)
    else:
        f, psd = f_PSD_from_file(psd_filename, fLow, fNyq, deltaF)
    detector = metric.Detector(
        'C',
        lat_lon_ori_2_xarm(DegMinSec2Rad(1, 36., 15., 0.),
                           DegMinSec2Rad(1, 137., 10., 48.),
                           DegMinSec2Rad(1, 20., 0., 0.)),
        lat_lon_ori_2_yarm(DegMinSec2Rad(1, 36., 15., 0.),
                           DegMinSec2Rad(1, 137., 10., 48.),
                           DegMinSec2Rad(1, 20., 0., 0.)),
        lat_lon_2_vertex(DegMinSec2Rad(1, 36., 15., 0.),
                         DegMinSec2Rad(1, 137., 10., 48.)),
        f=f,
        psd=psd)
    detector.set_required_moments()
    return detector