Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
183c6ff
first blush attempt at building a host galaxy model
May 12, 2025
8168686
Verified ability of zDM to generate a prior function for PATH
May 12, 2025
0a53aa9
Additional functionality to host_model, and advancement of scripts in…
May 12, 2025
52845b9
Confirmed that we can optimise the posterior magnitude distribution u…
May 13, 2025
043310a
merging in changes from main
May 13, 2025
3983f9b
Added test of path prior calculation
May 14, 2025
c5a747c
better internal names
May 14, 2025
4b36b11
final version of sim craco beam, tiny change to VVmax data
May 20, 2025
9f5776b
Added basic functionality to treat FRBs with an appaent width beyond …
May 20, 2025
e8a93f1
First go at writing new function for calculating the scattering and w…
May 20, 2025
3f198ad
Updated method for calculating the mixed scattering-width histogram. …
May 20, 2025
0d6b172
Added ability to calculate with z-dependent weights. We can NOT evalu…
May 22, 2025
c8a5ce4
Completed 1D and 2D likelihood calculations with z-dependent weights,…
May 22, 2025
f504520
Got repeat grid working, updated plot scattering, and did a few other…
May 23, 2025
09abf9c
fixd scat test
May 26, 2025
b16d522
fixed failing tests
May 26, 2025
3656a36
shifted optical routines to optical.py
May 26, 2025
5d74200
shifted include statesments for FRB modules within functions inside o…
May 26, 2025
291b154
renamed scattering plot to test so it becomes... a test
May 27, 2025
aa226bd
added average ASKAP beam
May 27, 2025
7756c48
added comments and cleaned up files according to pull request feedback
May 27, 2025
831e396
debugged SNR calculation
May 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion papers/Vvmax/Data/all_loc_frb_data_w171020.dat
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# FRB S/N DM DMgal Freq dt w theta_d Fnu Zloc Nants RF
# FRB S/N DM DMgal Freq dt w theta_d Fnu Zloc Nants RF
20171020 19.5 114.1 38.4 1297.5 1.260 1.70 0.722 200 0.00867 1 200
20180924 21.1 362.4 40.5 1297.5 0.864 1.76 0.23 16 0.32140 24 18.4
20181112 19.3 589.0 40.2 1297.5 0.864 2.10 0.31 26 0.47550 12 28
Expand Down
291 changes: 291 additions & 0 deletions zdm/beam_generator/sim_craco_beam.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
"""
This file has been updated and adapted from original code produced
by Ziteng (Andy) Wang. The original is part of the
CRAFT code repository, and can be found here:
https://github.com/askap-craco/craco-beam
"""

import numpy as np
import os
import logging
from matplotlib import pyplot as plt

logging.basicConfig(
level = logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
)

logger = logging.getLogger(__name__)


def Gauss(r, sigma):
"""
simple Gaussian function
"""
return np.exp(-0.5 * (r / sigma) ** 2)

def hist_craco_beams(footprint, pitch, freq, gsize, gpix,plot=False):
"""
Generates a beam histogram for the specified info
"""

infile = f"./craco_{footprint}_p{pitch:.2f}_f{freq:.1f}MHz_f{gsize:.1f}d_npix{gpix}.npy"
beamshape = np.load(infile)

envelope = np.max(beamshape,axis=0)
gs = 10.
npix = 2560
rads = np.linspace(-gs/2.,gs/2.,npix) * np.pi/180.
xs = np.repeat(rads,npix)
xs = xs.reshape([npix,npix])
ys = np.copy(xs)
ys = ys.T

ddeg = rads[1]-rads[0]
dsolid = ddeg**2

# calculate solid angle per grid point
solids = np.cos(xs**2 + ys**2) #**0.5
solids *= dsolid

bmin = -3
bmax = 0
nbins = 300
db = (bmax - bmin)/nbins
binedges = np.logspace(bmin,bmax,nbins+1)
h,b = np.histogram(envelope.flatten(),weights = solids.flatten(),bins=binedges)

bcs = 10**np.linspace(bmin + db/2.,bmax - db/2.,nbins)

basename = f"./hist_craco_{footprint}_p{pitch:.2f}_f{freq:.1f}MHz_f{gsize:.1f}d_npix{gpix}.npy"

np.save(basename,h)
np.save("craco_histogram_bins.npy",binedges)

if plot:

x1 = np.load("../data/BeamData/ASKAP_1300_bins.npy")
y1 = np.load("../data/BeamData/ASKAP_1300_hist.npy")
dx1 = x1[1]/x1[0]
xbar1 = x1[:-1] * dx1**0.5

plt.figure()
plt.plot(bcs,h,label="CRACO square")
plt.plot(xbar1,y1,label="ICS closepack 1300 MHz")

plt.xlabel("$B$")
plt.ylabel("$\\Omega(B)$")
plt.xscale('log')
plt.yscale('log')
plt.show()

class AskapBeam:
def __init__(
self, footprint="square", pitch=0.9, freq=920.5,
):
self.footprint = footprint # askap footprint, including square and closepack
self.pitch = pitch # beam separation in degrees
self.freq = freq # frequency in MHz

# self.get_aval = self._load_aval_func()

self.tsys = self._load_tsys()
self.beamscentre = self._gen_askap_beamcentre()
self.beamwidth = self._get_primary_beamwidth()
self.avals = self._load_aval()

def _load_tsys(self):
coeffs = np.load("askap_tsys_polyval.npy")
return np.polyval(coeffs, self.freq)

def _load_aval(self):
data = np.loadtxt("avals.dat")
x = data[:,0]
y = data[:,1]
newx = np.concatenate([x,-x[::-1]])
newy = np.concatenate([y,y[::-1]])

dists = np.sqrt(self.beamscentre[0] ** 2 + self.beamscentre[1] ** 2)
return np.interp(dists, newx, newy)
# return get_aval

def _gen_askap_beamcentre(self):
"""
generate beam centres
"""
if self.footprint == "square":
x=np.linspace(0,5.*self.pitch,6)
x=np.repeat(x,6)
x = x.reshape([6,6])
y=np.copy(x)
y=y.T
x -= self.pitch*2.5
y -= self.pitch*2.5

elif self.footprint == "closepack":
x = np.zeros([6,6])
y = np.zeros([6,6])
for iy in np.arange(6):
if iy % 2 == 0: x0 = 0.
else: x0 = 0.5 * self.pitch
x[iy,:] = np.arange(6) * self.pitch + x0
y[iy,:] = iy*self.pitch*3**0.5/2.
x -= np.sum(x)/36.
y -= np.sum(y)/36.

return x.flatten(), y.flatten()

def _get_primary_beamwidth(self):
D = 12.
c_light = 299792458.
HPBW=1.09*(c_light/(self.freq * 1e6))/D # from RACS
sigma=(HPBW/2.)*(2*np.log(2))**-0.5
deg_sigma = sigma * 180./np.pi

return deg_sigma # in the unit of degree

def primary_response(self, xpoints, ypoints, beamx, beamy, beamw=None):
offsets = (xpoints[None, ...] - beamx) ** 2 + (ypoints[..., None] - beamy) ** 2
offsets = np.sqrt(offsets)
if beamw is None: beamw = self.beamwidth
return Gauss(offsets, beamw)


class CracoBeam:

def __init__(
self, fov=1.1, npix=256, sbeam=40./3600.
):
self.fov = fov # single field of view in degree
self.npix = npix # number of pixel in image domain
self.sbeam = sbeam # size of the synthesized beam in degree

self.uvcellsize = 1 / np.deg2rad(self.fov)
self.imgcellsize = self.fov / self.npix # cell size in degree


def grid_response(self, xpoints, ypoints, beamx=0., beamy=0.):
"""
pillbox gridding response i.e., sinc function

xpoints, ypoints: numpy.ndarray
coordinates in the unit of degree offset from the phase centre
"""
# this might be something to do with the FoV
xpoints = (xpoints - beamx).copy()
ypoints = (ypoints - beamy).copy()

### outside the FoV, make copies...
# xpoints = (xpoints - self.fov / 2) % self.fov - self.fov / 2
# ypoints = (ypoints - self.fov / 2) % self.fov - self.fov / 2

xpoints = np.deg2rad(xpoints)
ypoints = np.deg2rad(ypoints)

xpoints, ypoints = np.meshgrid(xpoints, ypoints)

sin = np.sin; pi = np.pi

p1 = sin(pi*self.uvcellsize*xpoints) / (pi*self.uvcellsize*xpoints)
p2 = sin(pi*self.uvcellsize*ypoints) / (pi*self.uvcellsize*ypoints)

return np.abs(p1 * p2)

def sample_response(self, xpoints, ypoints, beamx=0., beamy=0.):
"""
response due to insufficient sampling i.e., 4% loss

xpoints, ypoints: numpy.ndarray
coordinates in the unit of degree offset from the phase centre
"""
xpoints = (xpoints - beamx).copy()
ypoints = (ypoints - beamy).copy()

xoff = xpoints % self.imgcellsize - self.imgcellsize / 2
yoff = ypoints % self.imgcellsize - self.imgcellsize / 2

xoff, yoff = np.meshgrid(xoff, yoff)
off = np.sqrt(xoff ** 2 + yoff ** 2)
return Gauss(off, self.sbeam)


def _make_response_grid(gsize=10., gpix=2560.):
"""
given the size of the grid (in degree, diameter), and the number of pixels on each axis,
return two numpy arrays containing grid coordinates
"""
xpoints = np.linspace(-gsize/2, gsize/2, gpix)
ypoints = np.linspace(-gsize/2, gsize/2, gpix)
return xpoints, ypoints

def _sim_one_beam(ibeam, xpoints, ypoints, askapbeam, cracobeam, ):
logger.info(f"start simulating craco response for beam{ibeam}...")
beamx = askapbeam.beamscentre[0][ibeam]
beamy = askapbeam.beamscentre[1][ibeam]

### aval value
beamaval = askapbeam.avals[ibeam]
### primary beam response
logger.info(f"get primary beam response for beam{ibeam}...")
primresponse = askapbeam.primary_response(xpoints, ypoints, beamx, beamy, )
### craco related response
logger.info(f"get primary beam response for beam{ibeam}...")
gridresponse = cracobeam.grid_response(xpoints, ypoints, beamx, beamy, )
logger.info(f"get sample response for beam{ibeam}...")
sampresponse = cracobeam.sample_response(xpoints, ypoints, beamx, beamy, )

beamresponse = beamaval * primresponse * gridresponse * sampresponse
return beamresponse

def get_craco_allbeams(
footprint="square", pitch=0.9, freq=920.5, # askap footprint related,
fov=1.1, npix=256, sbeam=40./3600., # craco related
gsize=10., gpix=2560 # response gridding params
):
xpoints, ypoints = _make_response_grid(gsize=gsize, gpix=gpix)
askapbeam = AskapBeam(footprint=footprint, pitch=pitch, freq=freq)
cracobeam = CracoBeam(fov=fov, npix=npix, sbeam=sbeam)

beamsresponse = np.zeros((36, gpix, gpix))
for ibeam in range(36): # 36 beams
beamsresponse[ibeam] = _sim_one_beam(ibeam, xpoints, ypoints, askapbeam, cracobeam, )

savefname = f"./craco_{footprint}_p{pitch:.2f}_f{freq:.1f}MHz_f{gsize:.1f}d_npix{gpix}.npy"
np.save(savefname, beamsresponse)
logger.info(f"save data to {savefname}...")

def main():
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
parser = ArgumentParser(description="simulate craco response", formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument("-fp", "--footprint", help="askap beam footprint", type=str, default="square")
parser.add_argument("-p", "--pitch", help="beam pitch", type=float, default=0.9)
parser.add_argument("-f", "--freq", help="frequency of the observation", type=float, default=920.5)
parser.add_argument("-fv", "--fov", help="craco image field-of-view", type=float, default=1.1)
parser.add_argument("-npix", "--npix", help="number of pixel in craco image", type=int, default=256)
parser.add_argument("-sb", "--sbeam", help="size of the synthesized beam", type=float, default=40./3600.)
parser.add_argument("-gs", "--gridsize", help="grid size in the unit of degree", type=float, default=10.)
parser.add_argument("-gn", "--gridnpix", help="number of pixel in the grid", type=int, default=2560)
values = parser.parse_args()

footprint=values.footprint
pitch=values.pitch
freq=values.freq
fov=values.fov
npix=values.npix
sbeam=values.sbeam
gsize=values.gridsize
gpix=values.gridnpix

opfile = f"./craco_{footprint}_p{pitch:.2f}_f{freq:.1f}MHz_f{gsize:.1f}d_npix{gpix}.npy"
if not os.path.exists(opfile):
get_craco_allbeams(
footprint=footprint, pitch=pitch, freq=freq,
fov=values.fov, npix=values.npix, sbeam=sbeam, gsize=gsize,
gpix=gpix
)
else:
hist_craco_beams(footprint, pitch, freq, gsize, gpix,plot=True)


main()

Binary file added zdm/data/BeamData/ASKAP_average_bins.npy
Binary file not shown.
Binary file added zdm/data/BeamData/ASKAP_average_hist.npy
Binary file not shown.
45 changes: 23 additions & 22 deletions zdm/data/Surveys/CRAFT_ICS_1300.ecsv
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,31 @@
# - {name: THRESH, datatype: float64}
# - {name: TRES, datatype: float64}
# - {name: WIDTH, datatype: float64}
# - {name: TAU, datatype: float64}
# - {name: XDec, datatype: string}
# - {name: XRA, datatype: string}
# - {name: Z, datatype: float64}
# meta: !!omap
# - {survey_data: '{"observing": {"NORM_FRB": 19, "TOBS": 165.506756761, "MAX_IDT": 4096},
# "telescope": {"BEAM": "ASKAP_1300", "DIAM": 12.0, "NBEAMS": 36, "NBINS": 5}}'}
# - {survey_data: '{"observing": {"NORM_FRB": 19, "TOBS": 165.506756761, "MAX_IDT": 4096, "MAX_IW": 12, "MAXWMETH": 1},
# "telescope": {"BEAM": "ASKAP_1300", "DIAM": 12.0, "NBEAMS": 36, "NBINS": 5, "WDATA": 1}}'}
# schema: astropy-2.0
TNS BW DM DMG FBAR FRES Gb Gl SNR SNRTHRESH THRESH TRES WIDTH XDec XRA Z
20180924B 336.0 362.4 40.5 1297.5 1.0 -74.40520121494983 277.20651893408893 21.1 9.0 4.4 0.864 1.76 -40:54:00.1 21:44:25.255 0.3214
20181112A 336.0 589.0 40.2 1297.5 1.0 -63.30983709852826 290.87390392674445 19.3 9.0 4.4 0.864 2.1 -52:58:15.39 21:49:23.630 0.4755
20190102C 336.0 364.5 57.3 1271.5 1.0 -37.519392943553534 300.95052401722796 14.0 9.0 4.4 0.864 1.7 -79:28:32.2845 21:29:39.70836 0.291
20190608B 336.0 339.5 37.2 1271.5 1.0 -67.23724646562972 88.21721604792883 16.1 9.0 4.4 1.728 6.0 -07:53:53.6 22:16:04.7472s 0.1178
20190611B 336.0 322.2 57.6 1271.5 1.0 -37.59976893568559 300.9594501909617 9.3 9.0 4.4 1.728 2.0 -79:23:51.284 21:22:58.372 0.378
20190711A 336.0 594.6 56.6 1271.5 1.0 -36.63629532677801 301.03976293370494 23.8 9.0 4.4 1.728 6.5 -80:21:28.18 21:57:40.012 0.522
20190714A 336.0 504.7 38.5 1271.5 1.0 -75.88144720209479 120.55805492153455 10.7 9.0 4.4 1.728 2.9 -13:01:14.36 12:15:55.081 0.2365
20191228A 336.0 297.5 32.9 1271.5 1.0 -80.77822140033614 230.79855541687724 22.9 9.0 4.4 1.728 2.3 -29:35:37.85 22:57:43.269 0.243
20210117A 336.0 730.0 34.4 1271.5 1.0 -75.7801432700954 164.65014968696988 27.1 9.0 4.4 1.182 3.4 -16:11:25.2 22:39:36.0 0.214
20210214A 336.0 398.3 31.9 1271.5 1.0 -65.65372930742399 91.72782990931984 11.6 9.0 4.4 1.182 3.5 -05:49:56 00:27:43 -1.0
20210407 336.0 1785.3 154.0 1271.5 1.0 -35.320866474063905 114.6146256941771 19.1 9.0 4.4 1.182 8.0 27:03:30.24 05:14:36.202 -1.0
20210912 336.0 1234.5 30.9 1271.5 1.0 -80.16655338584705 235.42165843951094 31.7 9.0 4.4 1.182 5.5 -30:29:33.1 23:24:40.3 -1.0
20211127 336.0 234.83 42.5 1271.5 1.0 -81.68554744714709 125.94306109583985 37.9 9.0 4.4 1.182 1.41 -18:49:28.4 13:19:09.5 0.046946
20220531A 336.0 727.0 70.0 1271.5 1.0 -56.509199987039224 296.83938685003784 9.7 9.0 4.4 1.182 11.0 -60:17:48.2 19:38:50.2 -1.0
20220610A 336.0 1458.1 31.0 1271.5 1.0 -78.89122591551634 250.56280818953536 29.8 9.0 4.4 1.182 5.6 -33:30:49.87 23:24:17.559 1.016
20220918A 336.0 656.8 40.7 1271.5 1.0 -45.81623556809721 308.4134807482381 26.4 9.0 4.4 1.182 7.1 -70:48:40.5 01:10:22.1 0.45
20230526A 336.0 316.4 50.0 1271.5 1.0 -62.994316139408156 318.1591960546148 22.1 9.0 4.4 1.182 2.6 -52:46:07.7 01:29:27.5 0.157
20230718A 336.0 477.0 396.0 1271.5 1.0 -75.66933767869608 316.30925962515585 10.9 9.0 4.4 1.182 2.3 -41:00:12.8 08:30:27.1 -1.0
20230731A 336.0 701.1 547.0 1271.5 1.0 -60.14372530213189 304.262204790738 16.6 9.0 4.4 1.182 3.3 -56:58:19.1 11:38:40.1 -1.0
TNS BW DM DMG FBAR FRES Gb Gl SNR SNRTHRESH THRESH TRES WIDTH TAU XDec XRA Z
20180924B 336.0 362.4 40.5 1297.5 1.0 -74.40520121494983 277.20651893408893 21.1 9.0 4.4 0.864 2 0.59 -40:54:00.1 21:44:25.255 0.3214
20181112A 336.0 589.0 40.2 1297.5 1.0 -63.30983709852826 290.87390392674445 19.3 9.0 4.4 0.864 0.8 0.023 -52:58:15.39 21:49:23.630 0.4755
20190102C 336.0 364.5 57.3 1271.5 1.0 -37.519392943553534 300.95052401722796 14.0 9.0 4.4 0.864 1.25 0.027 -79:28:32.2845 21:29:39.70836 0.291
20190608B 336.0 339.5 37.2 1271.5 1.0 -67.23724646562972 88.21721604792883 16.1 9.0 4.4 1.728 10.8 3.8 -07:53:53.6 22:16:04.7472s 0.1178
20190611B 336.0 322.2 57.6 1271.5 1.0 -37.59976893568559 300.9594501909617 9.3 9.0 4.4 1.728 1.59 0.03 -79:23:51.284 21:22:58.372 0.378
20190711A 336.0 594.6 56.6 1271.5 1.0 -36.63629532677801 301.03976293370494 23.8 9.0 4.4 1.728 11.0 0.0076 -80:21:28.18 21:57:40.012 0.522
20190714A 336.0 504.7 38.5 1271.5 1.0 -75.88144720209479 120.55805492153455 10.7 9.0 4.4 1.728 3.0 0.422 -13:01:14.36 12:15:55.081 0.2365
20191228A 336.0 297.5 32.9 1271.5 1.0 -80.77822140033614 230.79855541687724 22.9 9.0 4.4 1.728 13.6 5.85 -29:35:37.85 22:57:43.269 0.243
20210117A 336.0 730.0 34.4 1271.5 1.0 -75.7801432700954 164.65014968696988 27.1 9.0 4.4 1.182 3.6 0.25 -16:11:25.2 22:39:36.0 0.214
20210214A 336.0 398.3 31.9 1271.5 1.0 -65.65372930742399 91.72782990931984 11.6 9.0 4.4 1.182 3.5 -1 -05:49:56 00:27:43 -1.0
20210407 336.0 1785.3 154.0 1271.5 1.0 -35.320866474063905 114.6146256941771 19.1 9.0 4.4 1.182 1.62 0.09 27:03:30.24 05:14:36.202 -1.0
20210912 336.0 1234.5 30.9 1271.5 1.0 -80.16655338584705 235.42165843951094 31.7 9.0 4.4 1.182 1.61 0.048 -30:29:33.1 23:24:40.3 -1.0
20211127 336.0 234.83 42.5 1271.5 1.0 -81.68554744714709 125.94306109583985 37.9 9.0 4.4 1.182 0.48 0.025 -18:49:28.4 13:19:09.5 0.046946
20220531A 336.0 727.0 70.0 1271.5 1.0 -56.509199987039224 296.83938685003784 9.7 9.0 4.4 1.182 11.0 -1 -60:17:48.2 19:38:50.2 -1.0
20220610A 336.0 1458.1 31.0 1271.5 1.0 -78.89122591551634 250.56280818953536 29.8 9.0 4.4 1.182 2.0 0.521 -33:30:49.87 23:24:17.559 1.016
20220918A 336.0 656.8 40.7 1271.5 1.0 -45.81623556809721 308.4134807482381 26.4 9.0 4.4 1.182 13.9 7.66 -70:48:40.5 01:10:22.1 0.45
20230526A 336.0 316.4 50.0 1271.5 1.0 -62.994316139408156 318.1591960546148 22.1 9.0 4.4 1.182 2.7 1.16 -52:46:07.7 01:29:27.5 0.157
20230718A 336.0 477.0 396.0 1271.5 1.0 -75.66933767869608 316.30925962515585 10.9 9.0 4.4 1.182 0.7 0.117 -41:00:12.8 08:30:27.1 -1.0
20230731A 336.0 701.1 547.0 1271.5 1.0 -60.14372530213189 304.262204790738 16.6 9.0 4.4 1.182 2.7 0.45 -56:58:19.1 11:38:40.1 -1.0
2 changes: 1 addition & 1 deletion zdm/data/Surveys/CRAFT_ICS_1632.ecsv
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# - {name: XRA, datatype: string}
# - {name: Z, datatype: float64}
# meta: !!omap
# - {survey_data: '{"observing": {"NORM_FRB": 3, "TOBS": 50.866971336, "MAX_IDT": 4096},
# - {survey_data: '{"observing": {"NORM_FRB": 3, "TOBS": 50.866971336, "MAX_IDT": 4096, "MAX_IW": 12, "MAXWMETH": 1},
# "telescope": {"BEAM": "ASKAP_1632", "DIAM": 12.0, "NBEAMS": 1, "NBINS": 5}}'}
# schema: astropy-2.0
TNS BW DM DMG FBAR FRES Gb Gl SNR SNRTHRESH THRESH TRES WIDTH XC XDec XRA Z
Expand Down
2 changes: 1 addition & 1 deletion zdm/data/Surveys/CRAFT_ICS_892.ecsv
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
# - {name: XRA, datatype: string}
# - {name: Z, datatype: float64}
# meta: !!omap
# - {survey_data: '{"observing": {"NORM_FRB": 15, "TOBS": 317.293429793, "MAX_IDT": 4096},
# - {survey_data: '{"observing": {"NORM_FRB": 15, "TOBS": 317.293429793, "MAX_IDT": 4096, "MAX_IW": 12, "MAXWMETH": 1},
# "telescope": {"BEAM": "ASKAP_892", "DIAM": 12.0, "NBEAMS": 1, "NBINS": 5}}'}
# schema: astropy-2.0
TNS BW DM DMG FBAR FRES Gb Gl SNR SNRTHRESH THRESH TRES WIDTH XC XDec XRA Z
Expand Down
Loading