diff --git a/data/download_LFmap_grand.py b/data/download_LFmap_grand.py new file mode 100755 index 00000000..eac1f735 --- /dev/null +++ b/data/download_LFmap_grand.py @@ -0,0 +1,72 @@ +#! /usr/bin/env python3 + +''' +Created on 19 juil. 2022 + +@author: Jean-Marc Colley, CNRS/IN2P3/LPNHE + +''' +import tarfile +import os +import sys +import os.path as osp +from urllib import request +#TODO: add progressbar to grand lib +#import progressbar + +from grand import GRAND_DATA_PATH, grand_add_path_data + +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/133380/grand_model_2207.tar.gz" +#FILE_MODEL = "grand_model_2207.tar.gz" +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/201909/grand_model_2306.tar.gz" +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/251637/grand_model_190224.tar.gz" +LINK_MODEL = "https://forge.in2p3.fr/attachments/download/326497/LFmap.tar.gz" +FILE_MODEL = LINK_MODEL.split("/")[-1] +# class MyProgressBar(): +# def __init__(self): +# self.pbar = None +# +# def __call__(self, block_num, block_size, total_size): +# if not self.pbar: +# self.pbar=progressbar.ProgressBar(maxval=total_size) +# self.pbar.start() +# +# downloaded = block_num * block_size +# if downloaded < total_size: +# self.pbar.update(downloaded) +# else: +# self.pbar.finish() + + +# 1- test if download is necessary +if os.path.exists(grand_add_path_data('noise/LFmap')): + print("==============================") + print('Skip download LFmap files for Galactic noise simulations') + sys.exit(0) + +GRAND_DATA_PATH_1 = osp.join(grand_add_path_data('noise')) +tar_file = osp.join(GRAND_DATA_PATH_1, FILE_MODEL) + +# 2- download +print("==============================") +print("Download LFmap model (~ 6.4 MB) for GRAND, please wait ...") +try: + request.urlretrieve(LINK_MODEL, tar_file) + print("Successfully downloaded") +except: + print(f"download failed {LINK_MODEL}") + sys.exit(1) + +# 3- extract +print("==============================") +print('Extract tar file') +try: + my_tar = tarfile.open(tar_file) + my_tar.extractall(grand_add_path_data('noise')) + my_tar.close() + os.remove(tar_file) # delete zipped file are extraction. +except: + print(f"Extract failed '{tar_file}'") + sys.exit(1) +print("LFmap model available in grand/data/noise directory !") +sys.exit(0) diff --git a/data/download_data_grand.py b/data/download_data_grand.py index 80099a14..d2d552cb 100755 --- a/data/download_data_grand.py +++ b/data/download_data_grand.py @@ -19,9 +19,10 @@ #LINK_MODEL = "https://forge.in2p3.fr/attachments/download/133380/grand_model_2207.tar.gz" #FILE_MODEL = "grand_model_2207.tar.gz" #LINK_MODEL = "https://forge.in2p3.fr/attachments/download/201909/grand_model_2306.tar.gz" -#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/251637/grand_model_190224.tar.gz" -LINK_MODEL = "https://forge.in2p3.fr/attachments/download/312643/RFchain_V3.tar.gz" +LINK_MODEL = "https://forge.in2p3.fr/attachments/download/251637/grand_model_190224.tar.gz" FILE_MODEL = LINK_MODEL.split("/")[-1] + + # class MyProgressBar(): # def __init__(self): # self.pbar = None @@ -39,17 +40,16 @@ # 1- test if download is necessary -if os.path.exists(grand_add_path_data('detector/RFchain_v2')): +if os.path.exists(grand_add_path_data('detector')): print("==============================") print('Skip download data model') sys.exit(0) -GRAND_DATA_PATH_1 = osp.join(grand_add_path_data('detector')) -tar_file = osp.join(GRAND_DATA_PATH_1, FILE_MODEL) +tar_file = osp.join(GRAND_DATA_PATH, FILE_MODEL) # 2- download print("==============================") -print("Download new RFchain model (~ 450 KB) for GRAND, please wait ...") +print("Download data model (~ 1GB) for GRAND, please wait ...") try: request.urlretrieve(LINK_MODEL, tar_file) print("Successfully downloaded") @@ -62,11 +62,11 @@ print('Extract tar file') try: my_tar = tarfile.open(tar_file) - my_tar.extractall(grand_add_path_data('detector')) + my_tar.extractall(grand_add_path_data('')) my_tar.close() os.remove(tar_file) # delete zipped file are extraction. except: print(f"Extract failed '{tar_file}'") sys.exit(1) -print("data model available in grand/data/detector directory !") -sys.exit(0) +print("data model available in grand/data directory !") +sys.exit(0) \ No newline at end of file diff --git a/data/download_new_RFchain_grand.py b/data/download_new_RFchain_grand.py new file mode 100755 index 00000000..80099a14 --- /dev/null +++ b/data/download_new_RFchain_grand.py @@ -0,0 +1,72 @@ +#! /usr/bin/env python3 + +''' +Created on 19 juil. 2022 + +@author: Jean-Marc Colley, CNRS/IN2P3/LPNHE + +''' +import tarfile +import os +import sys +import os.path as osp +from urllib import request +#TODO: add progressbar to grand lib +#import progressbar + +from grand import GRAND_DATA_PATH, grand_add_path_data + +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/133380/grand_model_2207.tar.gz" +#FILE_MODEL = "grand_model_2207.tar.gz" +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/201909/grand_model_2306.tar.gz" +#LINK_MODEL = "https://forge.in2p3.fr/attachments/download/251637/grand_model_190224.tar.gz" +LINK_MODEL = "https://forge.in2p3.fr/attachments/download/312643/RFchain_V3.tar.gz" +FILE_MODEL = LINK_MODEL.split("/")[-1] +# class MyProgressBar(): +# def __init__(self): +# self.pbar = None +# +# def __call__(self, block_num, block_size, total_size): +# if not self.pbar: +# self.pbar=progressbar.ProgressBar(maxval=total_size) +# self.pbar.start() +# +# downloaded = block_num * block_size +# if downloaded < total_size: +# self.pbar.update(downloaded) +# else: +# self.pbar.finish() + + +# 1- test if download is necessary +if os.path.exists(grand_add_path_data('detector/RFchain_v2')): + print("==============================") + print('Skip download data model') + sys.exit(0) + +GRAND_DATA_PATH_1 = osp.join(grand_add_path_data('detector')) +tar_file = osp.join(GRAND_DATA_PATH_1, FILE_MODEL) + +# 2- download +print("==============================") +print("Download new RFchain model (~ 450 KB) for GRAND, please wait ...") +try: + request.urlretrieve(LINK_MODEL, tar_file) + print("Successfully downloaded") +except: + print(f"download failed {LINK_MODEL}") + sys.exit(1) + +# 3- extract +print("==============================") +print('Extract tar file') +try: + my_tar = tarfile.open(tar_file) + my_tar.extractall(grand_add_path_data('detector')) + my_tar.close() + os.remove(tar_file) # delete zipped file are extraction. +except: + print(f"Extract failed '{tar_file}'") + sys.exit(1) +print("data model available in grand/data/detector directory !") +sys.exit(0) diff --git a/examples/sim/rf_chain_example.ipynb b/examples/sim/rf_chain_example.ipynb index 0cba2384..d866bcb9 100644 --- a/examples/sim/rf_chain_example.ipynb +++ b/examples/sim/rf_chain_example.ipynb @@ -30,7 +30,7 @@ "}\n", "plt.rcParams.update(params)\n", "\n", - "import grand.sim.detector.rf_chain2 as grfc\n", + "import grand.sim.detector.rf_chain as grfc\n", "\n", "freq_MHz = np.arange(30, 251, 1)\n", "l_col = [\"k\", \"y\", \"b\"]" diff --git a/grand/__init__.py b/grand/__init__.py index 7e3c3f7d..b542c0ca 100644 --- a/grand/__init__.py +++ b/grand/__init__.py @@ -57,7 +57,7 @@ def grand_add_path_data(s_file): from grand.sim.efield2voltage import Efield2Voltage from grand.sim.detector.antenna_model import tabulated_antenna_model, AntennaModel from grand.sim.detector.process_ant import AntennaProcessing -from grand.sim.detector.rf_chain2 import RFChain +from grand.sim.detector.rf_chain import RFChain from grand.sim.noise.galaxy import galactic_noise from grand.sim.shower.gen_shower import ShowerEvent from grand.sim.shower.pdg import ParticleCode diff --git a/grand/sim/detector/rf_chain.py b/grand/sim/detector/rf_chain.py old mode 100644 new mode 100755 index 7d4f7ebc..87de8558 --- a/grand/sim/detector/rf_chain.py +++ b/grand/sim/detector/rf_chain.py @@ -1,19 +1,20 @@ #!/usr/bin/env python """ -RF Chain (version 1) of detector units at the GP13 site in Dunhuang and in Europe. +RF Chain (version 2) of detector units at the GP13 site in Dunhuang. This code includes: * Antenna Impedance * Input Impedance (computed after computing total_ABCD_matrix) - * LNA - * Balun after LNA (inside Nut) + * Balun before matching_network + * XYZ_matching network + * new LNA * cable + connector * VGA + Filter * Balun after VGA&filter + 200 ohm load + AD Chip :Authors: PengFei Zhang, Xu Xin and Xidian University group, GRANDLIB adaptation Colley JM, Ramesh, and Sandra. - +:Modified by SN including rf chain v2 Reference document: * "RF Chain simulation for GP300" by Xidian University, :Authors: Pengfei Zhang and Pengxiong Ma, Chao Zhang, Rongjuan Wand, Xin Xu @@ -53,6 +54,9 @@ from logging import getLogger logger = getLogger(__name__) +def interp(x,y,z): + return np.interp(x,y,z) + def interpol_at_new_x(a_x, a_y, new_x): """ Interpolation of discreet function F defined by set of point F(a_x)=a_y for new_x value @@ -144,6 +148,235 @@ def set_out_freq_mhz(self, freqs_mhz): self.nb_freqs = freqs_mhz.shape[0] self.size_sig = (self.nb_freqs - 1) * 2 +class MatchingNetwork(GenericProcessingDU): + + + def __init__(self): + """ + + :param size_sig: size of the trace after + """ + super().__init__() + #self.data_lna = [] + self.sparams = [] + for axis in range(3): + matcnet = np.loadtxt(self._set_name_data_file(axis), comments=['#', '!']) + self.sparams.append(matcnet) + self.freqs_in = matcnet[:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. + self.nb_freqs_in = len(self.freqs_in) + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + def _set_name_data_file(self, axis): + """ + + ! Created Wed May 10 01:24:03 2023 + # hz S ma R 50 + ! 2 Port Network Data from SP1.SP block + """ + axis_dict = {0:"X", 1:"Y", 2:"Z"} + filename = os.path.join("detector", "RFchain_v2", "NewMatchingNetwork"f"{axis_dict[axis]}.s2p") + + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + + logger.debug(f"{self.sparams[0].shape}") + self.set_out_freq_mhz(freqs_mhz) + assert self.nb_freqs > 0 + + # nb_freqs in __init__ is 0. nb_freqs changes after self.set_out_freq_mhz(freqs_mhz) + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + # S2P File: Measurements dB, phase[deg]: S11, S21, S12, S22 + # Fill S-parameters from files obtained by measuring S-parameters using virtual network analyzer. + for axis in range(3): + freqs_in = self.sparams[axis][:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. + # ----- S11 + dbs11 = self.sparams[axis][:, 1] + phs11 = np.deg2rad(self.sparams[axis][:, 2]) + #res11, ims11 = db2reim(dbs11, phs11) + res11 = dbs11 * np.cos(phs11) + ims11 = dbs11 * np.sin(phs11) + self.dbs11[axis] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s11[axis] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s11[axis] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S21 + dbs21 = self.sparams[axis][:, 3] + phs21 = np.deg2rad(self.sparams[axis][:, 4]) + #res21, ims21 = db2reim(dbs21, phs21) + res21 = dbs21 * np.cos(phs21) + ims21 = dbs21 * np.sin(phs21) + self.dbs21[axis] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s21[axis] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s21[axis] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S12 + dbs12 = self.sparams[axis][:, 5] + phs12 = np.deg2rad(self.sparams[axis][:, 6]) + #res12, ims12 = db2reim(dbs12, phs12) + res12 = dbs12 * np.cos(phs12) + ims12 = dbs12 * np.sin(phs12) + self.dbs12[axis] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s12[axis] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s12[axis] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S22 + dbs22 = self.sparams[axis][:, 7] + phs22 = np.deg2rad(self.sparams[axis][:, 8]) + #res22, ims22 = db2reim(dbs22, phs22) + res22 = dbs22 * np.cos(phs22) + ims22 = dbs22 * np.sin(phs22) + self.dbs22[axis] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s22[axis] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms + #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms + xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms + xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] + #z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms + z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms + z_denorm_factor = z_denorm_factor[..., np.newaxis] + + ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) # this is a normalized A-matrix represented by [a] in the document. + + ABCD_matrix[..., :2, :] *= xy_denorm_factor # denormalizing factor for XY arms + ABCD_matrix[..., 2, :] *= z_denorm_factor # denormalizing factor for Z arm + self.ABCD_matrix[:] = ABCD_matrix # this is an A-matrix represented by [A] in the document. + + +class gaa_frontend0db(GenericProcessingDU): + + + def __init__(self): + """ + + :param size_sig: size of the trace after + """ + super().__init__() + #self.data_lna = [] + self.sparams = [] + for axis in range(3): + matcnet = np.loadtxt(self._set_name_data_file(axis), comments=['#', '!']) + self.sparams.append(matcnet) + self.freqs_in = matcnet[:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. + #self.freqs_in = matcnet[:, 0] # note: freqs_in for x and y ports is the same, but for z port is different. + self.nb_freqs_in = len(self.freqs_in) + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + def _set_name_data_file(self, axis): + """ + + ! Created Wed May 10 01:24:03 2023 + # hz S ma R 50 + ! 2 Port Network Data from SP1.SP block + """ + axis_dict = {0:"X", 1:"Y", 2:"Z"} + filename = os.path.join("detector", "RFchain_v2", "antenna_LNA_"f"{axis_dict[axis]}_frontend0db.s2p") + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + + logger.debug(f"{self.sparams[0].shape}") + self.set_out_freq_mhz(freqs_mhz) + assert self.nb_freqs > 0 + + # nb_freqs in __init__ is 0. nb_freqs changes after self.set_out_freq_mhz(freqs_mhz) + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + # S2P File: Measurements dB, phase[deg]: S11, S21, S12, S22 + # Fill S-parameters from files obtained by measuring S-parameters using virtual network analyzer. + for axis in range(3): + freqs_in = self.sparams[axis][:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. + # ----- S11 + dbs11 = self.sparams[axis][:, 1] + phs11 = np.deg2rad(self.sparams[axis][:, 2]) + res11, ims11 = db2reim(dbs11, phs11) + #res11 = dbs11 * np.cos(phs11) + #ims11 = dbs11 * np.sin(phs11) + self.dbs11[axis] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s11[axis] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s11[axis] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S21 + dbs21 = self.sparams[axis][:, 3] + phs21 = np.deg2rad(self.sparams[axis][:, 4]) + res21, ims21 = db2reim(dbs21, phs21) + #res21 = dbs21 * np.cos(phs21) + #ims21 = dbs21 * np.sin(phs21) + self.dbs21[axis] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s21[axis] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s21[axis] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S12 + dbs12 = self.sparams[axis][:, 5] + phs12 = np.deg2rad(self.sparams[axis][:, 6]) + res12, ims12 = db2reim(dbs12, phs12) + #res12 = dbs12 * np.cos(phs12) + #ims12 = dbs12 * np.sin(phs12) + self.dbs12[axis] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s12[axis] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s12[axis] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + # ----- S22 + dbs22 = self.sparams[axis][:, 7] + phs22 = np.deg2rad(self.sparams[axis][:, 8]) + res22, ims22 = db2reim(dbs22, phs22) + #res22 = dbs22 * np.cos(phs22) + #ims22 = dbs22 * np.sin(phs22) + self.dbs22[axis] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s22[axis] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. + + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms + #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms + xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms + xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] + #z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms + z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms + z_denorm_factor = z_denorm_factor[..., np.newaxis] + + ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) # this is a normalized A-matrix represented by [a] in the document. + + ABCD_matrix[..., :2, :] *= xy_denorm_factor # denormalizing factor for XY arms + ABCD_matrix[..., 2, :] *= z_denorm_factor # denormalizing factor for Z arm + self.ABCD_matrix[:] = ABCD_matrix # this is an A-matrix represented by [A] in the document. + + + class LowNoiseAmplifier(GenericProcessingDU): """ @@ -188,7 +421,7 @@ def _set_name_data_file(self, axis): Hz S dB R 50.000 """ axis_dict = {0:"X", 1:"Y", 2:"Z"} - filename = os.path.join("detector", "RFchain_v1", f"{axis_dict[axis]}LNA.s2p") + filename = os.path.join("detector", "RFchain_v2", "NewLNA_"f"{axis_dict[axis]}.s2p") return grand_add_path_data(filename) @@ -247,7 +480,8 @@ def compute_for_freqs(self, freqs_mhz): self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms + xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms + #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms z_denorm_factor = z_denorm_factor[..., np.newaxis] @@ -290,7 +524,7 @@ def _set_name_data_file(self, axis=0): """ #filename = os.path.join("detector", "RFchain_v1", "balun_after_LNA.s2p") #filename = os.path.join("detector", "RFchain_v1", "balun46in.s2p") - filename = os.path.join("detector", "RFchain_v1", "balun46in20230612.s2p") + filename = os.path.join("detector", "RFchain_v2", "balun_in_nut.s2p") return grand_add_path_data(filename) @@ -345,7 +579,7 @@ def compute_for_freqs(self, freqs_mhz): # for X and Y ports only. No Balun in Z port. shape of ABCD_matrix is (2, 2, 3, nb_freqs). self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor # force components of ABCD_matrix for Z port to be identity matrix because there is no Balun in Z port. - self.ABCD_matrix[:,:,2,:] = np.identity(2)[...,np.newaxis] # add np.newaxis to broadcast to all frequencies. + #self.ABCD_matrix[:,:,2,:] = np.identity(2)[...,np.newaxis] # add np.newaxis to broadcast to all frequencies. class Cable(GenericProcessingDU): """ @@ -377,7 +611,7 @@ def _set_name_data_file(self, axis=0): :param axis: """ - filename = os.path.join("detector", "RFchain_v1", "cable+Connector.s2p") + filename = os.path.join("detector", "RFchain_v2", "cable+Connector.s2p") return grand_add_path_data(filename) @@ -471,7 +705,7 @@ def _set_name_data_file(self, axis=0): """ assert self.gain in [-5, 0, 5, 20] logger.info(f"vga gain: {self.gain} dB") - filename = os.path.join("detector", "RFchain_v1", f"vga{self.gain}db+filter.s2p") + filename = os.path.join("detector", "RFchain_v2", "filter+"f"vga{self.gain}db+filter.s2p") return grand_add_path_data(filename) @@ -565,7 +799,7 @@ def _set_name_data_file(self): 2 Port Network Data from SP1.SP block freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 """ - filename = os.path.join("detector", "RFchain_v1", "balun_before_ad.s2p") + filename = os.path.join("detector", "RFchain_v2", "balun_before_ad.s2p") return grand_add_path_data(filename) @@ -620,52 +854,369 @@ def compute_for_freqs(self, freqs_mhz): denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor # this is an A-matrix represented by [A] in the document. -class Zload(GenericProcessingDU): - """Class goals: - * computes input impedance of load due to balun + 200ohm ADC. - """ - - def __init__(self): - """Reflection coefficient (self.s) is measured using VNA. - Same value is used for all ports. - :param sparams: S-parameters data to compute Zload for x, y, and z ports. Same Zload is used for x, y, and z ports. - :param freqs_in: frequencies corresponding to the S-parameters data for x, y, and z ports. - :param s: reflection coefficient for x, y, and z ports. shape (nb_freqs,). - :param Z_load: total impedance of the load that includes balun, 200 ohm resistor and AD chip. - """ +################################################################################################# + +class Rfchain_elements_db(GenericProcessingDU): + def __init__(self, filename="test2.s2p"): super().__init__() - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + self.filename = filename - def _set_name_data_file(self, axis=0): - """Ceyear Technologies,3672C, ZKL00189, 2.1.5 - Calibration ON : 2P/1,2 - Sweep Type: lin Frequency Sweep - S1P File: Measurements: S22: - Thursday, April 20, 2023 - Hz S RI R 50 - """ - #filename = os.path.join("detector", "RFchain_v1", "zload_balun_200ohm.s1p") - filename = os.path.join("detector", "RFchain_v1", "S_balun_AD.s1p") + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + def _set_name_data_file(self): + filename = os.path.join("detector", "RFchain_v2", self.filename) return grand_add_path_data(filename) - def compute_for_freqs(self, freqs_mhz): - """compute S-paramters and Zload for freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ self.set_out_freq_mhz(freqs_mhz) freqs_in = self.freqs_in assert self.nb_freqs > 0 + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + # S2P File: Measurements: S11, S21, S12, S22 + # ----- S11 + dbs11 = self.sparams[:, 1] + phs11 = np.deg2rad(self.sparams[:, 2]) + res11, ims11 = db2reim(dbs11, phs11) + self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) + self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) + self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) + # ----- S21 + dbs21 = self.sparams[:, 3] + phs21 = np.deg2rad(self.sparams[:, 4]) + res21, ims21 = db2reim(dbs21, phs21) + self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) + self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) + self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) + # ----- S12 + dbs12 = self.sparams[:, 5] + phs12 = np.deg2rad(self.sparams[:, 6]) + res12, ims12 = db2reim(dbs12, phs12) + self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) + self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) + self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) + # ----- S22 + dbs22 = self.sparams[:][:, 7] + phs22 = np.deg2rad(self.sparams[:, 8]) + res22, ims22 = db2reim(dbs22, phs22) + self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) + self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) + self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) - # S1P File: Measurements: S22 - #res = self.sparams[:, 1] + denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms + denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) + ABCD_matrix *= denorm_factor # denormalizing factor for XYZ arms + self.ABCD_matrix[:] = ABCD_matrix + +######################################################################################## + +class Rfchain_elements_db_rad(GenericProcessingDU): + def __init__(self, filename="test2.s2p"): + super().__init__() + self.filename = filename + + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + def _set_name_data_file(self): + filename = os.path.join("detector", "RFchain_v2", self.filename) + return grand_add_path_data(filename) + def compute_for_freqs(self, freqs_mhz): + self.set_out_freq_mhz(freqs_mhz) + freqs_in = self.freqs_in + assert self.nb_freqs > 0 + # shape = (antenna_port, nb_freqs) + self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + # S2P File: Measurements: S11, S21, S12, S22 + # ----- S11 + dbs11 = self.sparams[:, 1] + phs11 = self.sparams[:, 2] + res11, ims11 = db2reim(dbs11, phs11) + self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) + self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) + self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) + # ----- S21 + dbs21 = self.sparams[:, 3] + phs21 = self.sparams[:, 4] + res21, ims21 = db2reim(dbs21, phs21) + self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) + self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) + self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) + # ----- S12 + dbs12 = self.sparams[:, 5] + phs12 = self.sparams[:, 6] + res12, ims12 = db2reim(dbs12, phs12) + self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) + self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) + self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) + # ----- S22 + dbs22 = self.sparams[:][:, 7] + phs22 = self.sparams[:, 8] + res22, ims22 = db2reim(dbs22, phs22) + self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) + self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) + self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) + + denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms + denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) + ABCD_matrix *= denorm_factor # denormalizing factor for XYZ arms + self.ABCD_matrix[:] = ABCD_matrix + +###################################################################################### + +class Rfchain_elements(GenericProcessingDU): + def __init__(self, filename="test.s2p"): + super().__init__() + self.filename = filename + + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz + # shape = (antenna_port, nb_freqs) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + def _set_name_data_file(self): + filename = os.path.join("detector", "RFchain_v2", self.filename) + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + """compute s-parameters and ABCD matrix of Balun before AD chip for freqs_mhz + + :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + freqs_in = self.freqs_in + assert self.nb_freqs > 0 + + # shape = (antenna_port, nb_freqs) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) + + # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 + # ----- S11 + mags11 = self.sparams[:, 1] + angs11 = np.deg2rad(self.sparams[:, 2]) + res11 = mags11 * np.cos(angs11) + ims11 = mags11 * np.sin(angs11) + self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) + self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) + # ----- S21 + mags21 = self.sparams[:, 3] + angs21 = np.deg2rad(self.sparams[:, 4]) + res21 = mags21 * np.cos(angs21) + ims21 = mags21 * np.sin(angs21) + self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) + self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) + # ----- S12 + mags12 = self.sparams[:, 5] + angs12 = np.deg2rad(self.sparams[:, 6]) + res12 = mags12 * np.cos(angs12) + ims12 = mags12 * np.sin(angs12) + self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) + self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) + # ----- S22 + mags22 = self.sparams[:, 7] + angs22 = np.deg2rad(self.sparams[:, 8]) + res22 = mags22 * np.cos(angs22) + ims22 = mags22 * np.sin(angs22) + self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) + self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) + + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms + denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] + self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor + +############################################################################################## +class Rfchain_elements_rad(GenericProcessingDU): + def __init__(self, filename="test.s2p"): + super().__init__() + self.filename = filename + + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz + # shape = (antenna_port, nb_freqs) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) + + def _set_name_data_file(self): + filename = os.path.join("detector", "RFchain_v2", self.filename) + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + """compute s-parameters and ABCD matrix of Balun before AD chip for freqs_mhz + + :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + freqs_in = self.freqs_in + assert self.nb_freqs > 0 + + # shape = (antenna_port, nb_freqs) + self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) + + # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 + # ----- S11 + mags11 = self.sparams[:, 1] + angs11 = self.sparams[:, 2] + res11 = mags11 * np.cos(angs11) + ims11 = mags11 * np.sin(angs11) + self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) + self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) + # ----- S21 + mags21 = self.sparams[:, 3] + angs21 = self.sparams[:, 4] + res21 = mags21 * np.cos(angs21) + ims21 = mags21 * np.sin(angs21) + self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) + self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) + # ----- S12 + mags12 = self.sparams[:, 5] + angs12 = self.sparams[:, 6] + res12 = mags12 * np.cos(angs12) + ims12 = mags12 * np.sin(angs12) + self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) + self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) + # ----- S22 + mags22 = self.sparams[:, 7] + angs22 = self.sparams[:, 8] + res22 = mags22 * np.cos(angs22) + ims22 = mags22 * np.sin(angs22) + self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) + self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) + + # for all three ports. shape should be (2, 2, ant ports, nb_freqs) + denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms + denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] + self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor + +########################################################################################### + +class Zload_arb(GenericProcessingDU): + def __init__(self, filename="S_balun_AD.s1p"): + super().__init__() + self.filename = filename + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz + self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + + def _set_name_data_file(self): + #filename = os.path.join("detector", "RFchain_v1", "zload_balun_200ohm.s1p") + filename = os.path.join("detector", "RFchain_v2", self.filename) + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + self.set_out_freq_mhz(freqs_mhz) + freqs_in = self.freqs_in + assert self.nb_freqs > 0 + self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + # S1P File: Measurements: S22 + #res = self.sparams[:, 1] + #ims = self.sparams[:, 2] + dbs = self.sparams[:, 1] + phs = np.deg2rad(self.sparams[:, 2]) + res, ims = db2reim(dbs, phs) + self.s[:] = interpol_at_new_x(freqs_in, res, self.freqs_mhz) + self.s[:] += 1j * interpol_at_new_x(freqs_in, ims, self.freqs_mhz) + # Calculation of Zload (Zload = balun+200ohm + ADchip) + self.Z_load[:] = 50 * (1 + self.s) / (1 - self.s) + + +############################################################################################ + +class Zload(GenericProcessingDU): + """Class goals: + * computes input impedance of load due to balun + 200ohm ADC. + """ + + def __init__(self): + """Reflection coefficient (self.s) is measured using VNA. + Same value is used for all ports. + :param sparams: S-parameters data to compute Zload for x, y, and z ports. Same Zload is used for x, y, and z ports. + :param freqs_in: frequencies corresponding to the S-parameters data for x, y, and z ports. + :param s: reflection coefficient for x, y, and z ports. shape (nb_freqs,). + :param Z_load: total impedance of the load that includes balun, 200 ohm resistor and AD chip. + """ + super().__init__() + self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) + self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz + self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + + def _set_name_data_file(self, axis=0): + """Ceyear Technologies,3672C, ZKL00189, 2.1.5 + Calibration ON : 2P/1,2 + Sweep Type: lin Frequency Sweep + S1P File: Measurements: S22: + Thursday, April 20, 2023 + Hz S RI R 50 + """ + #filename = os.path.join("detector", "RFchain_v1", "zload_balun_200ohm.s1p") + filename = os.path.join("detector", "RFchain_v2", "S_balun_AD.s1p") + + return grand_add_path_data(filename) + + def compute_for_freqs(self, freqs_mhz): + """compute S-paramters and Zload for freqs_mhz + + :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + freqs_in = self.freqs_in + assert self.nb_freqs > 0 + + self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) + + # S1P File: Measurements: S22 + #res = self.sparams[:, 1] #ims = self.sparams[:, 2] dbs = self.sparams[:, 1] phs = np.deg2rad(self.sparams[:, 2]) @@ -683,6 +1234,7 @@ class RFChain(GenericProcessingDU): def __init__(self, vga_gain=20): super().__init__() + self.matcnet = MatchingNetwork() self.lna = LowNoiseAmplifier() self.balun1 = BalunAfterLNA() self.cable = Cable() @@ -702,6 +1254,7 @@ def compute_for_freqs(self, freqs_mhz): :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 """ self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) self.lna.compute_for_freqs(freqs_mhz) self.balun1.compute_for_freqs(freqs_mhz) self.cable.compute_for_freqs(freqs_mhz) @@ -713,7 +1266,11 @@ def compute_for_freqs(self, freqs_mhz): assert self.lna.nb_freqs > 0 assert self.lna.ABCD_matrix.shape[-1] > 0 assert self.lna.nb_freqs==self.balun1.nb_freqs - + + assert self.matcnet.nb_freqs > 0 + assert self.matcnet.ABCD_matrix.shape[-1] > 0 + assert self.matcnet.nb_freqs==self.balun1.nb_freqs + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) @@ -723,20 +1280,24 @@ def compute_for_freqs(self, freqs_mhz): # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) # Note that this is a matrix multiplication # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - MM1 = matmul(self.lna.ABCD_matrix, self.balun1.ABCD_matrix) - MM2 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM1, MM2) - + # Make sure to multiply in this order: balun1 * matching_network * lna.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - + #self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v1", "Z_ant_3.2m.csv") + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") filename = grand_add_path_data(filename) Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) freqs_in = Zant_dat[:,0] # MHz @@ -780,3 +1341,788 @@ def get_tf(self): self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) return self._total_tf + +class RFChainNut(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + MMM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + self.total_ABCD_matrix_nut[:] = matmul(MMM1, self.lna.ABCD_matrix) + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## + +class RFChain_gaa(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=0): + super().__init__() + self.gaa = gaa_frontend0db() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.gaa.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.gaa.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.gaa.nb_freqs > 0 + assert self.gaa.ABCD_matrix.shape[-1] > 0 + assert self.gaa.nb_freqs==self.gaa.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.gaa.ABCD_matrix.shape, dtype=np.complex64) + + self.total_ABCD_matrix[:] = self.gaa.ABCD_matrix + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_2port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + + self.V_out_RFchain[i] = 2/(self.total_ABCD_matrix[0,0,i,:] + self.total_ABCD_matrix[0,1,i,:]/50 + self.total_ABCD_matrix[1,0,i,:]*50 + self.total_ABCD_matrix[1,1,i,:]) + #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0] + ABCD_matrix_1port_inv[:,0,1] + #I_out_RFchain = ABCD_matrix_1port_inv[:,1,0] + ABCD_matrix_1port_inv[:,1,1] + + #self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +########################################################################################## +########################################################################################### + +class RFChain_Balun1(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + self.total_ABCD_matrix_nut[:] = self.balun1.ABCD_matrix + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## +########################################################################################### + +class RFChain_Match_net(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + self.total_ABCD_matrix_nut[:] = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## + +class RFChain_Cable_Connectors(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + MMM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MMM2 = matmul(MMM1, self.lna.ABCD_matrix) + self.total_ABCD_matrix_nut[:] = matmul(MMM2, self.cable.ABCD_matrix) + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## + +class RFChain_VGA(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## +class RFChain_in_Balun1(GenericProcessingDU): + """ + Facade for all elements in RF chain + """ + + def __init__(self, vga_gain=20): + super().__init__() + self.matcnet = MatchingNetwork() + self.lna = LowNoiseAmplifier() + self.balun1 = BalunAfterLNA() + self.cable = Cable() + self.vgaf = VGAFilter(gain=vga_gain) + self.balun2 = BalunBeforeADC() + self.zload = Zload() + # Note: self.nb_freqs at this point is 0. + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + def compute_for_freqs(self, freqs_mhz): + """Compute transfer function for frequency freqs_mhz + + :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 + """ + self.set_out_freq_mhz(freqs_mhz) + self.matcnet.compute_for_freqs(freqs_mhz) + self.lna.compute_for_freqs(freqs_mhz) + self.balun1.compute_for_freqs(freqs_mhz) + self.cable.compute_for_freqs(freqs_mhz) + self.vgaf.compute_for_freqs(freqs_mhz) + self.balun2.compute_for_freqs(freqs_mhz) + self.zload.compute_for_freqs(freqs_mhz) + #self.balun_after_vga.compute_for_freqs(freqs_mhz) + + assert self.lna.nb_freqs > 0 + assert self.lna.ABCD_matrix.shape[-1] > 0 + assert self.lna.nb_freqs==self.balun1.nb_freqs + + self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) + self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) + # Note that this is a matrix multiplication + # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) + # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix + + MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) + MM2 = matmul(MM1, self.lna.ABCD_matrix) + MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) + self.total_ABCD_matrix[:] = matmul(MM2, MM3) + + self.total_ABCD_matrix_nut[:] = np.ones(self.lna.ABCD_matrix.shape, dtype=np.complex64) + + # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) + self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). + self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) + + # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. + #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) + + # Antenna Impedance. + filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") + filename = grand_add_path_data(filename) + Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) + freqs_in = Zant_dat[:,0] # MHz + self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. + + def vout_f(self, voc_f): + """ Compute final voltage after propagating signal through RF chain. + Input: Voc_f (in frequency domain) + Output: Voltage after RF chain in frequency domain. + Make sure to run self.compute_for_freqs() before calling this method. + RK Note: name 'vout_f' is a placeholder. Change it with something better. + """ + assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) + + self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) + self.V_in_balunA = self.I_in_balunA * self.Z_in + + # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) + for i in range(3): + #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] + #ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] + #ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. + #ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) + #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] + #I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] + V_out_RFchain = 1*self.V_in_balunA[i] + 1*self.I_in_balunA[i] + I_out_RFchain = 1*self.V_in_balunA[i] + 1*self.I_in_balunA[i] + + self.V_out_RFchain[i] = V_out_RFchain + self.I_out_RFchain[i] = I_out_RFchain + + return self.V_out_RFchain + + def get_tf(self): + """Return transfer function for all elements in RF chain + total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. + @return total TF (complex, (3,N)): + """ + self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) + + return self._total_tf +################################################################################## \ No newline at end of file diff --git a/grand/sim/detector/rf_chain2.py b/grand/sim/detector/rf_chain2.py deleted file mode 100755 index 87de8558..00000000 --- a/grand/sim/detector/rf_chain2.py +++ /dev/null @@ -1,2128 +0,0 @@ -#!/usr/bin/env python - -""" -RF Chain (version 2) of detector units at the GP13 site in Dunhuang. - -This code includes: - * Antenna Impedance - * Input Impedance (computed after computing total_ABCD_matrix) - * Balun before matching_network - * XYZ_matching network - * new LNA - * cable + connector - * VGA + Filter - * Balun after VGA&filter + 200 ohm load + AD Chip - -:Authors: PengFei Zhang, Xu Xin and Xidian University group, GRANDLIB adaptation Colley JM, Ramesh, and Sandra. -:Modified by SN including rf chain v2 -Reference document: - * "RF Chain simulation for GP300" by Xidian University, :Authors: Pengfei Zhang and Pengxiong Ma, Chao Zhang, Rongjuan Wand, Xin Xu - -Convention Port/direction: - * 0 for X / North, South - * 1 for Y / East/West - * 2 for Z / Up - -# Note: plotting has been moved to grand/scripts/plot_noise.py. Run: ./plot_noise.py -h for help. - -Overview of calculations: - Voc = E * Leff - - # S-parameters are measured using virtual network analyzer (VNA). A-parameters are computed from S-parameters. - [A] = [LNA]*[Balun A]*[Cable]*[VGA+Filter] # total RF chain A-parameters without balun2 - Z_load = 50 * (1 + S11)/(1 - S11) # S11 for balun after VGA+Filter measured using VNA. - Z_in = (A11*Z_load + A12) / (A21*Z_load + A22) - [A] = [A] * [A balun2] # total RF chain A-parameters - Z_ant = antenna impedance computed from simulation - - # current and voltage at input of Balun - I_in_BA = Voc / (Z_ant + Z_in) - V_in_BA = I_in_BA * Z_in - - # Final voltage output at AD Chip in frequency domain. - V_out = A11*V_in_BA + A12*I_in_BA - I_out = A21*V_in_BA + A22*I_in_BA -""" - -import os.path -import scipy.fft as sf -import numpy as np -import matplotlib.pyplot as plt - -from grand import grand_add_path_data - -from logging import getLogger -logger = getLogger(__name__) - -def interp(x,y,z): - return np.interp(x,y,z) - -def interpol_at_new_x(a_x, a_y, new_x): - """ - Interpolation of discreet function F defined by set of point F(a_x)=a_y for new_x value - and set to zero outside interval definition a_x - - :param a_x (float, (N)): F(a_x) = a_y, N size of a_x - :param a_y (float, (N)): F(a_x) = a_y - :param new_x (float, (M)): new value of x - - :return: F(new_x) (float, (M)): interpolation of F at new_x - # RK: scipy interpolate gave 0 values for S21 due to fill_values=(0,0) - #. which resulted in 'nan' values in A-parameters. Also final transfer - # function (TF) outside of the range of 10-300 MHz was weird. TF for Z-port produces a sharp peak around 10 MHz. - # So np.interp is used instead. - """ - from scipy import interpolate - assert a_x.shape[0] > 0 - #func_interpol = interpolate.interp1d( - # a_x, a_y, "cubic", bounds_error=False, fill_value=(1.0, 1.0) - #) - #return func_interpol(new_x) - return np.interp(new_x, a_x, a_y) - -def db2reim(dB, phase): - """Convert quantity given in deciBel to a complex number. - :param dB: input quantity in deciBel - :param phase: phase of the input quantity in radians. - """ - mag = 10 ** (dB / 20) - - re = mag * np.cos(phase) - im = mag * np.sin(phase) - - return re, im - -def s2abcd(s11, s21, s12, s22): - """this is a normalized A-matrix represented by [a] in the document.""" - return np.asarray([ - [((1+s11)*(1-s22) + s12*s21)/(2*s21), ((1+s11)*(1+s22) - s12*s21)/(2*s21)], - [((1-s11)*(1-s22) - s12*s21)/(2*s21), ((1-s11)*(1+s22) + s12*s21)/(2*s21)] - ]) - -def matmul(A, B): - """ - This function deals with 2x2 matrix multiplication. - Input matrix shape in our case is (2,2,nports,nb_freqs) - AxB = [[A11*B11 + A12*B21, A11*B12 + A12*B22], - [A21*B11 + A22*B21, A21*B12 + A22*B22]] - """ - assert A.shape[0]==2 - assert A.shape[1]==2 - assert A.shape[1]==B.shape[0] - - return np.asarray([ - [A[0,0]*B[0,0] + A[0,1]*B[1,0], A[0,0]*B[0,1] + A[0,1]*B[1,1]], - [A[1,0]*B[0,0] + A[1,1]*B[1,0], A[1,0]*B[0,1] + A[1,1]*B[1,1]] - ]) - - -class GenericProcessingDU: - """ - Define common attribut for frequencies for all DU effects processing - """ - - def __init__(self): - """ """ - self.freqs_mhz = np.zeros(0) - self.nb_freqs = 0 - self.size_sig = 0 - - def _set_name_data_file(self, axis): - """ - - :param axis: - """ - # fix a file version for processing by heritage - pass - - ### SETTER - - def set_out_freq_mhz(self, freqs_mhz): - """Define frequencies - - :param freqs_mhz: [MHz] given by scipy.fft.rfftfreq/1e6 - :type freqs_mhz: float (nb_freqs) - """ - assert isinstance(freqs_mhz, np.ndarray) - self.freqs_mhz = freqs_mhz - self.nb_freqs = freqs_mhz.shape[0] - self.size_sig = (self.nb_freqs - 1) * 2 - -class MatchingNetwork(GenericProcessingDU): - - - def __init__(self): - """ - - :param size_sig: size of the trace after - """ - super().__init__() - #self.data_lna = [] - self.sparams = [] - for axis in range(3): - matcnet = np.loadtxt(self._set_name_data_file(axis), comments=['#', '!']) - self.sparams.append(matcnet) - self.freqs_in = matcnet[:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - self.nb_freqs_in = len(self.freqs_in) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis): - """ - - ! Created Wed May 10 01:24:03 2023 - # hz S ma R 50 - ! 2 Port Network Data from SP1.SP block - """ - axis_dict = {0:"X", 1:"Y", 2:"Z"} - filename = os.path.join("detector", "RFchain_v2", "NewMatchingNetwork"f"{axis_dict[axis]}.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - - logger.debug(f"{self.sparams[0].shape}") - self.set_out_freq_mhz(freqs_mhz) - assert self.nb_freqs > 0 - - # nb_freqs in __init__ is 0. nb_freqs changes after self.set_out_freq_mhz(freqs_mhz) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements dB, phase[deg]: S11, S21, S12, S22 - # Fill S-parameters from files obtained by measuring S-parameters using virtual network analyzer. - for axis in range(3): - freqs_in = self.sparams[axis][:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - # ----- S11 - dbs11 = self.sparams[axis][:, 1] - phs11 = np.deg2rad(self.sparams[axis][:, 2]) - #res11, ims11 = db2reim(dbs11, phs11) - res11 = dbs11 * np.cos(phs11) - ims11 = dbs11 * np.sin(phs11) - self.dbs11[axis] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - dbs21 = self.sparams[axis][:, 3] - phs21 = np.deg2rad(self.sparams[axis][:, 4]) - #res21, ims21 = db2reim(dbs21, phs21) - res21 = dbs21 * np.cos(phs21) - ims21 = dbs21 * np.sin(phs21) - self.dbs21[axis] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - dbs12 = self.sparams[axis][:, 5] - phs12 = np.deg2rad(self.sparams[axis][:, 6]) - #res12, ims12 = db2reim(dbs12, phs12) - res12 = dbs12 * np.cos(phs12) - ims12 = dbs12 * np.sin(phs12) - self.dbs12[axis] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - dbs22 = self.sparams[axis][:, 7] - phs22 = np.deg2rad(self.sparams[axis][:, 8]) - #res22, ims22 = db2reim(dbs22, phs22) - res22 = dbs22 * np.cos(phs22) - ims22 = dbs22 * np.sin(phs22) - self.dbs22[axis] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms - #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms - xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms - xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] - #z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms - z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms - z_denorm_factor = z_denorm_factor[..., np.newaxis] - - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) # this is a normalized A-matrix represented by [a] in the document. - - ABCD_matrix[..., :2, :] *= xy_denorm_factor # denormalizing factor for XY arms - ABCD_matrix[..., 2, :] *= z_denorm_factor # denormalizing factor for Z arm - self.ABCD_matrix[:] = ABCD_matrix # this is an A-matrix represented by [A] in the document. - - -class gaa_frontend0db(GenericProcessingDU): - - - def __init__(self): - """ - - :param size_sig: size of the trace after - """ - super().__init__() - #self.data_lna = [] - self.sparams = [] - for axis in range(3): - matcnet = np.loadtxt(self._set_name_data_file(axis), comments=['#', '!']) - self.sparams.append(matcnet) - self.freqs_in = matcnet[:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - #self.freqs_in = matcnet[:, 0] # note: freqs_in for x and y ports is the same, but for z port is different. - self.nb_freqs_in = len(self.freqs_in) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis): - """ - - ! Created Wed May 10 01:24:03 2023 - # hz S ma R 50 - ! 2 Port Network Data from SP1.SP block - """ - axis_dict = {0:"X", 1:"Y", 2:"Z"} - filename = os.path.join("detector", "RFchain_v2", "antenna_LNA_"f"{axis_dict[axis]}_frontend0db.s2p") - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - - logger.debug(f"{self.sparams[0].shape}") - self.set_out_freq_mhz(freqs_mhz) - assert self.nb_freqs > 0 - - # nb_freqs in __init__ is 0. nb_freqs changes after self.set_out_freq_mhz(freqs_mhz) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements dB, phase[deg]: S11, S21, S12, S22 - # Fill S-parameters from files obtained by measuring S-parameters using virtual network analyzer. - for axis in range(3): - freqs_in = self.sparams[axis][:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - # ----- S11 - dbs11 = self.sparams[axis][:, 1] - phs11 = np.deg2rad(self.sparams[axis][:, 2]) - res11, ims11 = db2reim(dbs11, phs11) - #res11 = dbs11 * np.cos(phs11) - #ims11 = dbs11 * np.sin(phs11) - self.dbs11[axis] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - dbs21 = self.sparams[axis][:, 3] - phs21 = np.deg2rad(self.sparams[axis][:, 4]) - res21, ims21 = db2reim(dbs21, phs21) - #res21 = dbs21 * np.cos(phs21) - #ims21 = dbs21 * np.sin(phs21) - self.dbs21[axis] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - dbs12 = self.sparams[axis][:, 5] - phs12 = np.deg2rad(self.sparams[axis][:, 6]) - res12, ims12 = db2reim(dbs12, phs12) - #res12 = dbs12 * np.cos(phs12) - #ims12 = dbs12 * np.sin(phs12) - self.dbs12[axis] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - dbs22 = self.sparams[axis][:, 7] - phs22 = np.deg2rad(self.sparams[axis][:, 8]) - res22, ims22 = db2reim(dbs22, phs22) - #res22 = dbs22 * np.cos(phs22) - #ims22 = dbs22 * np.sin(phs22) - self.dbs22[axis] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms - #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms - xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms - xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] - #z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms - z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms - z_denorm_factor = z_denorm_factor[..., np.newaxis] - - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) # this is a normalized A-matrix represented by [a] in the document. - - ABCD_matrix[..., :2, :] *= xy_denorm_factor # denormalizing factor for XY arms - ABCD_matrix[..., 2, :] *= z_denorm_factor # denormalizing factor for Z arm - self.ABCD_matrix[:] = ABCD_matrix # this is an A-matrix represented by [A] in the document. - - - -class LowNoiseAmplifier(GenericProcessingDU): - """ - - Class goals: - * Perform the LNA filter on signal for each antenna - * read only once LNA data files - * pre_compute interpolation - """ - - def __init__(self): - """ - - :param size_sig: size of the trace after - """ - super().__init__() - #self.data_lna = [] - self.sparams = [] - for axis in range(3): - lna = np.loadtxt(self._set_name_data_file(axis), comments=['#', '!']) - self.sparams.append(lna) - self.freqs_in = lna[:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - self.nb_freqs_in = len(self.freqs_in) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis): - """ - - Ceyear Technologies,3672C,ZKL00189,2.1.5 - Calibration ON : 2P/1,2 - Sweep Type: lin Frequency Sweep - S2P File: Measurements: S11, S21, S12, S22: - Thursday, April 27, 2023 - Hz S dB R 50.000 - """ - axis_dict = {0:"X", 1:"Y", 2:"Z"} - filename = os.path.join("detector", "RFchain_v2", "NewLNA_"f"{axis_dict[axis]}.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """ - compute s-parameters of LNA - - """ - logger.debug(f"{self.sparams[0].shape}") - self.set_out_freq_mhz(freqs_mhz) - assert self.nb_freqs > 0 - - # nb_freqs in __init__ is 0. nb_freqs changes after self.set_out_freq_mhz(freqs_mhz) - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements dB, phase[deg]: S11, S21, S12, S22 - # Fill S-parameters from files obtained by measuring S-parameters using virtual network analyzer. - for axis in range(3): - freqs_in = self.sparams[axis][:, 0] / 1e6 # note: freqs_in for x and y ports is the same, but for z port is different. - # ----- S11 - dbs11 = self.sparams[axis][:, 1] - phs11 = np.deg2rad(self.sparams[axis][:, 2]) - res11, ims11 = db2reim(dbs11, phs11) - self.dbs11[axis] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[axis] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - dbs21 = self.sparams[axis][:, 3] - phs21 = np.deg2rad(self.sparams[axis][:, 4]) - res21, ims21 = db2reim(dbs21, phs21) - self.dbs21[axis] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[axis] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - dbs12 = self.sparams[axis][:, 5] - phs12 = np.deg2rad(self.sparams[axis][:, 6]) - res12, ims12 = db2reim(dbs12, phs12) - self.dbs12[axis] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[axis] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - dbs22 = self.sparams[axis][:, 7] - phs22 = np.deg2rad(self.sparams[axis][:, 8]) - res22, ims22 = db2reim(dbs22, phs22) - self.dbs22[axis] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[axis] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - xy_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XY arms - #xy_denorm_factor = np.array([[1, 100], [1/100., 1]]) # denormalizing factor for XY arms - xy_denorm_factor = xy_denorm_factor[..., np.newaxis, np.newaxis] - z_denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for Z arms - z_denorm_factor = z_denorm_factor[..., np.newaxis] - - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) # this is a normalized A-matrix represented by [a] in the document. - - ABCD_matrix[..., :2, :] *= xy_denorm_factor # denormalizing factor for XY arms - ABCD_matrix[..., 2, :] *= z_denorm_factor # denormalizing factor for Z arm - self.ABCD_matrix[:] = ABCD_matrix # this is an A-matrix represented by [A] in the document. - -class BalunAfterLNA(GenericProcessingDU): - """ - Class goals: - * deals with Balun after LNA (inside Nut). - * Note that balun is placed after LNA in version 1. The same type of balun is placed before matching-network and LNA in version 2. - * Balun is used in X and Y ports only. No Balun in Z port. - * Balun without matching network is used in version 1. - """ - - def __init__(self): - """ """ - super().__init__() - #self.data_cable = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis=0): - """ - - Created: May 4, 2023 - hz S ma R 50 - 2 Port Network Data from SP1.SP block - freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - """ - #filename = os.path.join("detector", "RFchain_v1", "balun_after_LNA.s2p") - #filename = os.path.join("detector", "RFchain_v1", "balun46in.s2p") - filename = os.path.join("detector", "RFchain_v2", "balun_in_nut.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """Compute ABCD_matrix for frequency freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) - - # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - # ----- S11 - mags11 = self.sparams[:, 1] - angs11 = np.deg2rad(self.sparams[:, 2]) - res11 = mags11 * np.cos(angs11) - ims11 = mags11 * np.sin(angs11) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - mags21 = self.sparams[:, 3] - angs21 = np.deg2rad(self.sparams[:, 4]) - res21 = mags21 * np.cos(angs21) - ims21 = mags21 * np.sin(angs21) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - mags12 = self.sparams[:, 5] - angs12 = np.deg2rad(self.sparams[:, 6]) - res12 = mags12 * np.cos(angs12) - ims12 = mags12 * np.sin(angs12) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - mags22 = self.sparams[:, 7] - angs22 = np.deg2rad(self.sparams[:, 8]) - res22 = mags22 * np.cos(angs22) - ims22 = mags22 * np.sin(angs22) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] # match with the shape of ABCD_matrix to broadcast. - # for X and Y ports only. No Balun in Z port. shape of ABCD_matrix is (2, 2, 3, nb_freqs). - self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor - # force components of ABCD_matrix for Z port to be identity matrix because there is no Balun in Z port. - #self.ABCD_matrix[:,:,2,:] = np.identity(2)[...,np.newaxis] # add np.newaxis to broadcast to all frequencies. - -class Cable(GenericProcessingDU): - """ - - Class goals: - * pre_compute interpolation - """ - - def __init__(self): - """ """ - super().__init__() - #self.data_cable = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis=0): - """ - - :param axis: - """ - filename = os.path.join("detector", "RFchain_v2", "cable+Connector.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """Compute ABCD_matrix for frequency freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements: S11, S21, S12, S22 - # ----- S11 - dbs11 = self.sparams[:, 1] - phs11 = np.deg2rad(self.sparams[:, 2]) - res11, ims11 = db2reim(dbs11, phs11) - self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - dbs21 = self.sparams[:, 3] - phs21 = np.deg2rad(self.sparams[:, 4]) - res21, ims21 = db2reim(dbs21, phs21) - self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - dbs12 = self.sparams[:, 5] - phs12 = np.deg2rad(self.sparams[:, 6]) - res12, ims12 = db2reim(dbs12, phs12) - self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - dbs22 = self.sparams[:][:, 7] - phs22 = np.deg2rad(self.sparams[:, 8]) - res22, ims22 = db2reim(dbs22, phs22) - self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] # match with the shape of ABCD_matrix. - # for all three ports. shape of ABCD_matrix is (2, 2, ant ports, nb_freqs) . - self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor - -class VGAFilter(GenericProcessingDU): - """ - - Class goals: - * pre_compute interpolation - """ - - def __init__(self, gain=0): - """ - :param gain: gain setup for VGA in dB. - """ - super().__init__() - - self.gain = gain - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - - # shape = (nports, nfreqs). self.nb_freqs here is 0. - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self, axis=0): - """ - - :param axis: - """ - assert self.gain in [-5, 0, 5, 20] - logger.info(f"vga gain: {self.gain} dB") - filename = os.path.join("detector", "RFchain_v2", "filter+"f"vga{self.gain}db+filter.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """Compute ABCD_matrix for frequency freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements: S11, S21, S12, S22 - # ----- S11 - dbs11 = self.sparams[:, 1] - phs11 = np.deg2rad(self.sparams[:, 2]) - res11, ims11 = db2reim(dbs11, phs11) - self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - dbs21 = self.sparams[:, 3] - phs21 = np.deg2rad(self.sparams[:, 4]) - res21, ims21 = db2reim(dbs21, phs21) - self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - dbs12 = self.sparams[:, 5] - phs12 = np.deg2rad(self.sparams[:, 6]) - res12, ims12 = db2reim(dbs12, phs12) - self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - dbs22 = self.sparams[:][:, 7] - phs22 = np.deg2rad(self.sparams[:, 8]) - res22, ims22 = db2reim(dbs22, phs22) - self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) - ABCD_matrix *= denorm_factor # denormalizing factor for XYZ arms - self.ABCD_matrix[:] = ABCD_matrix - -class BalunBeforeADC(GenericProcessingDU): - """Class goals: - * Pass signal through Balun before Analog to Digitial Converter (ADC) for each antenna - * Balun is used in x, y, and z ports - * Same data is used for all three ports - * read data files only once - * pre_compute interpolation - * this Balun is referred to as Balun1 Balun2 - """ - - def __init__(self): - """ - :param sparams: S-parameters data for x, y, and z ports. Same data is used for x, y, and z ports. - :param freqs_in: frequencies corresponding to the S-parameters data for x, y, and z ports. - :param s11, s21, s12, s22: S-parameters for x, y, and z ports. shape (3, nb_freqs). - :param ABCD_matrix: not normalized ABCD matrix corresponding to S-parameters. shape (2, 2, nb_ports, nb_freqs) - """ - super().__init__() - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self): - """Created Mon May 15, 2023 11:21:18 2023 - hz S ma R 50 - 2 Port Network Data from SP1.SP block - freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - """ - filename = os.path.join("detector", "RFchain_v2", "balun_before_ad.s2p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """compute s-parameters and ABCD matrix of Balun before AD chip for freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) - - # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - # ----- S11 - mags11 = self.sparams[:, 1] - angs11 = np.deg2rad(self.sparams[:, 2]) - res11 = mags11 * np.cos(angs11) - ims11 = mags11 * np.sin(angs11) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S21 - mags21 = self.sparams[:, 3] - angs21 = np.deg2rad(self.sparams[:, 4]) - res21 = mags21 * np.cos(angs21) - ims21 = mags21 * np.sin(angs21) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S12 - mags12 = self.sparams[:, 5] - angs12 = np.deg2rad(self.sparams[:, 6]) - res12 = mags12 * np.cos(angs12) - ims12 = mags12 * np.sin(angs12) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - # ----- S22 - mags22 = self.sparams[:, 7] - angs22 = np.deg2rad(self.sparams[:, 8]) - res22 = mags22 * np.cos(angs22) - ims22 = mags22 * np.sin(angs22) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor # this is an A-matrix represented by [A] in the document. - -################################################################################################# - -class Rfchain_elements_db(GenericProcessingDU): - def __init__(self, filename="test2.s2p"): - super().__init__() - self.filename = filename - - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self): - filename = os.path.join("detector", "RFchain_v2", self.filename) - return grand_add_path_data(filename) - def compute_for_freqs(self, freqs_mhz): - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements: S11, S21, S12, S22 - # ----- S11 - dbs11 = self.sparams[:, 1] - phs11 = np.deg2rad(self.sparams[:, 2]) - res11, ims11 = db2reim(dbs11, phs11) - self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) - # ----- S21 - dbs21 = self.sparams[:, 3] - phs21 = np.deg2rad(self.sparams[:, 4]) - res21, ims21 = db2reim(dbs21, phs21) - self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) - # ----- S12 - dbs12 = self.sparams[:, 5] - phs12 = np.deg2rad(self.sparams[:, 6]) - res12, ims12 = db2reim(dbs12, phs12) - self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) - # ----- S22 - dbs22 = self.sparams[:][:, 7] - phs22 = np.deg2rad(self.sparams[:, 8]) - res22, ims22 = db2reim(dbs22, phs22) - self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) - - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) - ABCD_matrix *= denorm_factor # denormalizing factor for XYZ arms - self.ABCD_matrix[:] = ABCD_matrix - -######################################################################################## - -class Rfchain_elements_db_rad(GenericProcessingDU): - def __init__(self, filename="test2.s2p"): - super().__init__() - self.filename = filename - - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self): - filename = os.path.join("detector", "RFchain_v2", self.filename) - return grand_add_path_data(filename) - def compute_for_freqs(self, freqs_mhz): - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - # shape = (antenna_port, nb_freqs) - self.dbs11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.dbs22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - # S2P File: Measurements: S11, S21, S12, S22 - # ----- S11 - dbs11 = self.sparams[:, 1] - phs11 = self.sparams[:, 2] - res11, ims11 = db2reim(dbs11, phs11) - self.dbs11[:] = interpol_at_new_x(freqs_in, dbs11, self.freqs_mhz) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) - # ----- S21 - dbs21 = self.sparams[:, 3] - phs21 = self.sparams[:, 4] - res21, ims21 = db2reim(dbs21, phs21) - self.dbs21[:] = interpol_at_new_x(freqs_in, dbs21, self.freqs_mhz) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) - # ----- S12 - dbs12 = self.sparams[:, 5] - phs12 = self.sparams[:, 6] - res12, ims12 = db2reim(dbs12, phs12) - self.dbs12[:] = interpol_at_new_x(freqs_in, dbs12, self.freqs_mhz) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) - # ----- S22 - dbs22 = self.sparams[:][:, 7] - phs22 = self.sparams[:, 8] - res22, ims22 = db2reim(dbs22, phs22) - self.dbs22[:] = interpol_at_new_x(freqs_in, dbs22, self.freqs_mhz) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) - - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - ABCD_matrix = s2abcd(self.s11, self.s21, self.s12, self.s22) - ABCD_matrix *= denorm_factor # denormalizing factor for XYZ arms - self.ABCD_matrix[:] = ABCD_matrix - -###################################################################################### - -class Rfchain_elements(GenericProcessingDU): - def __init__(self, filename="test.s2p"): - super().__init__() - self.filename = filename - - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self): - filename = os.path.join("detector", "RFchain_v2", self.filename) - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """compute s-parameters and ABCD matrix of Balun before AD chip for freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) - - # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - # ----- S11 - mags11 = self.sparams[:, 1] - angs11 = np.deg2rad(self.sparams[:, 2]) - res11 = mags11 * np.cos(angs11) - ims11 = mags11 * np.sin(angs11) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) - # ----- S21 - mags21 = self.sparams[:, 3] - angs21 = np.deg2rad(self.sparams[:, 4]) - res21 = mags21 * np.cos(angs21) - ims21 = mags21 * np.sin(angs21) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) - # ----- S12 - mags12 = self.sparams[:, 5] - angs12 = np.deg2rad(self.sparams[:, 6]) - res12 = mags12 * np.cos(angs12) - ims12 = mags12 * np.sin(angs12) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) - # ----- S22 - mags22 = self.sparams[:, 7] - angs22 = np.deg2rad(self.sparams[:, 8]) - res22 = mags22 * np.cos(angs22) - ims22 = mags22 * np.sin(angs22) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor - -############################################################################################## -class Rfchain_elements_rad(GenericProcessingDU): - def __init__(self, filename="test.s2p"): - super().__init__() - self.filename = filename - - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) - - def _set_name_data_file(self): - filename = os.path.join("detector", "RFchain_v2", self.filename) - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """compute s-parameters and ABCD matrix of Balun before AD chip for freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - # shape = (antenna_port, nb_freqs) - self.s11 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s21 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s12 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.s22 = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.ABCD_matrix = np.zeros((2, 2, 3, self.nb_freqs), dtype=np.complex64) # shape = (2x2 matrix, 3 ports, nb_freqs) - - # freq magS11 angS11 magS21 angS21 magS12 angS12 magS22 angS22 - # ----- S11 - mags11 = self.sparams[:, 1] - angs11 = self.sparams[:, 2] - res11 = mags11 * np.cos(angs11) - ims11 = mags11 * np.sin(angs11) - self.s11[:] = interpol_at_new_x(freqs_in, res11, self.freqs_mhz) - self.s11[:] += 1j * interpol_at_new_x(freqs_in, ims11, self.freqs_mhz) - # ----- S21 - mags21 = self.sparams[:, 3] - angs21 = self.sparams[:, 4] - res21 = mags21 * np.cos(angs21) - ims21 = mags21 * np.sin(angs21) - self.s21[:] = interpol_at_new_x(freqs_in, res21, self.freqs_mhz) - self.s21[:] += 1j * interpol_at_new_x(freqs_in, ims21, self.freqs_mhz) - # ----- S12 - mags12 = self.sparams[:, 5] - angs12 = self.sparams[:, 6] - res12 = mags12 * np.cos(angs12) - ims12 = mags12 * np.sin(angs12) - self.s12[:] = interpol_at_new_x(freqs_in, res12, self.freqs_mhz) - self.s12[:] += 1j * interpol_at_new_x(freqs_in, ims12, self.freqs_mhz) - # ----- S22 - mags22 = self.sparams[:, 7] - angs22 = self.sparams[:, 8] - res22 = mags22 * np.cos(angs22) - ims22 = mags22 * np.sin(angs22) - self.s22[:] = interpol_at_new_x(freqs_in, res22, self.freqs_mhz) - self.s22[:] += 1j * interpol_at_new_x(freqs_in, ims22, self.freqs_mhz) - - # for all three ports. shape should be (2, 2, ant ports, nb_freqs) - denorm_factor = np.array([[1, 50], [1/50., 1]]) # denormalizing factor for XYZ arms - denorm_factor = denorm_factor[..., np.newaxis, np.newaxis] - self.ABCD_matrix[:] = s2abcd(self.s11, self.s21, self.s12, self.s22) * denorm_factor - -########################################################################################### - -class Zload_arb(GenericProcessingDU): - def __init__(self, filename="S_balun_AD.s1p"): - super().__init__() - self.filename = filename - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - - def _set_name_data_file(self): - #filename = os.path.join("detector", "RFchain_v1", "zload_balun_200ohm.s1p") - filename = os.path.join("detector", "RFchain_v2", self.filename) - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - # S1P File: Measurements: S22 - #res = self.sparams[:, 1] - #ims = self.sparams[:, 2] - dbs = self.sparams[:, 1] - phs = np.deg2rad(self.sparams[:, 2]) - res, ims = db2reim(dbs, phs) - self.s[:] = interpol_at_new_x(freqs_in, res, self.freqs_mhz) - self.s[:] += 1j * interpol_at_new_x(freqs_in, ims, self.freqs_mhz) - # Calculation of Zload (Zload = balun+200ohm + ADchip) - self.Z_load[:] = 50 * (1 + self.s) / (1 - self.s) - - -############################################################################################ - -class Zload(GenericProcessingDU): - """Class goals: - * computes input impedance of load due to balun + 200ohm ADC. - """ - - def __init__(self): - """Reflection coefficient (self.s) is measured using VNA. - Same value is used for all ports. - :param sparams: S-parameters data to compute Zload for x, y, and z ports. Same Zload is used for x, y, and z ports. - :param freqs_in: frequencies corresponding to the S-parameters data for x, y, and z ports. - :param s: reflection coefficient for x, y, and z ports. shape (nb_freqs,). - :param Z_load: total impedance of the load that includes balun, 200 ohm resistor and AD chip. - """ - super().__init__() - self.sparams = np.loadtxt(self._set_name_data_file(), comments=['#', '!']) - self.freqs_in = self.sparams[:, 0] / 1e6 # Hz to MHz - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - - def _set_name_data_file(self, axis=0): - """Ceyear Technologies,3672C, ZKL00189, 2.1.5 - Calibration ON : 2P/1,2 - Sweep Type: lin Frequency Sweep - S1P File: Measurements: S22: - Thursday, April 20, 2023 - Hz S RI R 50 - """ - #filename = os.path.join("detector", "RFchain_v1", "zload_balun_200ohm.s1p") - filename = os.path.join("detector", "RFchain_v2", "S_balun_AD.s1p") - - return grand_add_path_data(filename) - - def compute_for_freqs(self, freqs_mhz): - """compute S-paramters and Zload for freqs_mhz - - :param freqs_mhz (float, (N)): [MHz] given by scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - freqs_in = self.freqs_in - assert self.nb_freqs > 0 - - self.s = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - self.Z_load = np.zeros(self.nb_freqs, dtype=np.complex64) # shape = (nb_freqs, ) - - # S1P File: Measurements: S22 - #res = self.sparams[:, 1] - #ims = self.sparams[:, 2] - dbs = self.sparams[:, 1] - phs = np.deg2rad(self.sparams[:, 2]) - res, ims = db2reim(dbs, phs) - self.s[:] = interpol_at_new_x(freqs_in, res, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - self.s[:] += 1j * interpol_at_new_x(freqs_in, ims, self.freqs_mhz) # interpolate s-parameters for self.freqs_mhz frequencies. - - # Calculation of Zload (Zload = balun+200ohm + ADchip) - self.Z_load[:] = 50 * (1 + self.s) / (1 - self.s) - -class RFChain(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - assert self.matcnet.nb_freqs > 0 - assert self.matcnet.ABCD_matrix.shape[-1] > 0 - assert self.matcnet.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: balun1 * matching_network * lna.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - #self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf - -class RFChainNut(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - MMM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - self.total_ABCD_matrix_nut[:] = matmul(MMM1, self.lna.ABCD_matrix) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## - -class RFChain_gaa(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=0): - super().__init__() - self.gaa = gaa_frontend0db() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.gaa.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.gaa.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.gaa.nb_freqs > 0 - assert self.gaa.ABCD_matrix.shape[-1] > 0 - assert self.gaa.nb_freqs==self.gaa.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.gaa.ABCD_matrix.shape, dtype=np.complex64) - - self.total_ABCD_matrix[:] = self.gaa.ABCD_matrix - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_2port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - - self.V_out_RFchain[i] = 2/(self.total_ABCD_matrix[0,0,i,:] + self.total_ABCD_matrix[0,1,i,:]/50 + self.total_ABCD_matrix[1,0,i,:]*50 + self.total_ABCD_matrix[1,1,i,:]) - #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0] + ABCD_matrix_1port_inv[:,0,1] - #I_out_RFchain = ABCD_matrix_1port_inv[:,1,0] + ABCD_matrix_1port_inv[:,1,1] - - #self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -########################################################################################## -########################################################################################### - -class RFChain_Balun1(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - self.total_ABCD_matrix_nut[:] = self.balun1.ABCD_matrix - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## -########################################################################################### - -class RFChain_Match_net(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - self.total_ABCD_matrix_nut[:] = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## - -class RFChain_Cable_Connectors(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - MMM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MMM2 = matmul(MMM1, self.lna.ABCD_matrix) - self.total_ABCD_matrix_nut[:] = matmul(MMM2, self.cable.ABCD_matrix) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## - -class RFChain_VGA(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## -class RFChain_in_Balun1(GenericProcessingDU): - """ - Facade for all elements in RF chain - """ - - def __init__(self, vga_gain=20): - super().__init__() - self.matcnet = MatchingNetwork() - self.lna = LowNoiseAmplifier() - self.balun1 = BalunAfterLNA() - self.cable = Cable() - self.vgaf = VGAFilter(gain=vga_gain) - self.balun2 = BalunBeforeADC() - self.zload = Zload() - # Note: self.nb_freqs at this point is 0. - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - def compute_for_freqs(self, freqs_mhz): - """Compute transfer function for frequency freqs_mhz - - :param freqs_mhz (float, (N)): return of scipy.fft.rfftfreq/1e6 - """ - self.set_out_freq_mhz(freqs_mhz) - self.matcnet.compute_for_freqs(freqs_mhz) - self.lna.compute_for_freqs(freqs_mhz) - self.balun1.compute_for_freqs(freqs_mhz) - self.cable.compute_for_freqs(freqs_mhz) - self.vgaf.compute_for_freqs(freqs_mhz) - self.balun2.compute_for_freqs(freqs_mhz) - self.zload.compute_for_freqs(freqs_mhz) - #self.balun_after_vga.compute_for_freqs(freqs_mhz) - - assert self.lna.nb_freqs > 0 - assert self.lna.ABCD_matrix.shape[-1] > 0 - assert self.lna.nb_freqs==self.balun1.nb_freqs - - self.Z_ant = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.Z_in = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.V_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.I_out_RFchain = np.zeros((3, self.nb_freqs), dtype=np.complex64) - self.total_ABCD_matrix = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - self.total_ABCD_matrix_nut = np.zeros(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Note that components of ABCD_matrix for Z port of balun1 is set to 1 as no Balun is used. shape = (2,2,nports,nfreqs) - # Note that this is a matrix multiplication - # Associative property of matrix multiplication is used, ie. (AB)C = A(BC) - # Make sure to multiply in this order: lna.ABCD_matrix * balun1.ABCD_matrix * cable.ABCD_matrix * vgaf.ABCD_matrix - - MM1 = matmul(self.balun1.ABCD_matrix, self.matcnet.ABCD_matrix) - MM2 = matmul(MM1, self.lna.ABCD_matrix) - MM3 = matmul(self.cable.ABCD_matrix, self.vgaf.ABCD_matrix) - self.total_ABCD_matrix[:] = matmul(MM2, MM3) - - self.total_ABCD_matrix_nut[:] = np.ones(self.lna.ABCD_matrix.shape, dtype=np.complex64) - - # Calculation of Z_in (this is the total impedence of the RF chain excluding antenna arm. see page 50 of the document.) - self.Z_load = self.zload.Z_load[np.newaxis, :] # shape (nfreq) --> (1,nfreq) to broadcast with components of ABCD_matrix with shape (2,2,ports,nfreq). - self.Z_in[:] = (self.total_ABCD_matrix[0,0] * self.Z_load + self.total_ABCD_matrix[0,1])/(self.total_ABCD_matrix[1,0] * self.Z_load + self.total_ABCD_matrix[1,1]) - - # Once Z_in is calculated, calculate the final total_ABCD_matrix including Balun2. - #self.total_ABCD_matrix[:] = matmul(self.total_ABCD_matrix, self.balun2.ABCD_matrix) - - # Antenna Impedance. - filename = os.path.join("detector", "RFchain_v2", "Z_ant_3.2m.csv") - filename = grand_add_path_data(filename) - Zant_dat = np.loadtxt(filename, delimiter=",", comments=['#', '!'], skiprows=1) - freqs_in = Zant_dat[:,0] # MHz - self.Z_ant[0] = interpol_at_new_x(freqs_in, Zant_dat[:,1], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[0] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,2], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] = interpol_at_new_x(freqs_in, Zant_dat[:,3], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[1] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,4], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] = interpol_at_new_x(freqs_in, Zant_dat[:,5], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - self.Z_ant[2] += 1j * interpol_at_new_x(freqs_in, Zant_dat[:,6], self.freqs_mhz) # interpolate impedance for self.lna.freqs_mhz frequencies. - - def vout_f(self, voc_f): - """ Compute final voltage after propagating signal through RF chain. - Input: Voc_f (in frequency domain) - Output: Voltage after RF chain in frequency domain. - Make sure to run self.compute_for_freqs() before calling this method. - RK Note: name 'vout_f' is a placeholder. Change it with something better. - """ - assert voc_f.shape==self.Z_in.shape # shape = (nports, nfreqs) - - self.I_in_balunA = voc_f / (self.Z_ant + self.Z_in) - self.V_in_balunA = self.I_in_balunA * self.Z_in - - # loop over three ports. shape of total_ABCD_matrix is (2,2,nports,nfreqs) - for i in range(3): - #ABCD_matrix_1port = self.total_ABCD_matrix[:,:,i,:] - #ABCD_matrix_1port = self.total_ABCD_matrix_nut[:,:,i,:] - #ABCD_matrix_1port = np.moveaxis(ABCD_matrix_1port, -1, 0) # (2,2,nfreqs) --> (nfreqs,2,2), to compute inverse of ABCD_matrix using np.linalg.inv. - #ABCD_matrix_1port_inv = np.linalg.inv(ABCD_matrix_1port) - #V_out_RFchain = ABCD_matrix_1port_inv[:,0,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,0,1]*self.I_in_balunA[i] - #I_out_RFchain = ABCD_matrix_1port_inv[:,1,0]*self.V_in_balunA[i] + ABCD_matrix_1port_inv[:,1,1]*self.I_in_balunA[i] - V_out_RFchain = 1*self.V_in_balunA[i] + 1*self.I_in_balunA[i] - I_out_RFchain = 1*self.V_in_balunA[i] + 1*self.I_in_balunA[i] - - self.V_out_RFchain[i] = V_out_RFchain - self.I_out_RFchain[i] = I_out_RFchain - - return self.V_out_RFchain - - def get_tf(self): - """Return transfer function for all elements in RF chain - total transfer function is the output voltage for input Voc of 1. It says by what factor the Voc will be multiplied by the RF chain. - @return total TF (complex, (3,N)): - """ - self._total_tf = self.vout_f(np.ones((3, self.nb_freqs))) - - return self._total_tf -################################################################################## \ No newline at end of file diff --git a/grand/sim/efield2voltage.py b/grand/sim/efield2voltage.py index d0b679b1..ead7290c 100644 --- a/grand/sim/efield2voltage.py +++ b/grand/sim/efield2voltage.py @@ -14,10 +14,9 @@ from .detector.antenna_model import AntennaModel from .detector.process_ant import AntennaProcessing -#from .detector.rf_chain import RFChain -from .detector.rf_chain2 import RFChain -from .detector.rf_chain2 import RFChainNut -from .detector.rf_chain2 import RFChain_gaa +from .detector.rf_chain import RFChain +from .detector.rf_chain import RFChainNut +from .detector.rf_chain import RFChain_gaa from .shower.gen_shower import ShowerEvent from .noise.galaxy import galactic_noise @@ -62,9 +61,9 @@ def __init__(self, f_input, f_output="", seed=None, padding_factor=1.0, du_type= self.shower = groot.TShower(f_input) # shower info (like energy, theta, phi, xmax etc) are stored here. self.events_list = self.events.get_list_of_events() # [[evt0, run0], [evt1, run0], ...[evt0, runN], ...] #self.rf_chain = RFChain() # loads RF chain. # RK: TODO: load this only if we want to add RF Chain. - self.rf_chain2 = RFChain() - self.rf_chain2nut = RFChainNut() - self.rf_chain2gaa = RFChain_gaa() + self.rf_chain = RFChain() + self.rf_chainnut = RFChainNut() + self.rf_chaingaa = RFChain_gaa() self.ant_model = AntennaModel(du_type) # loads antenna models. time consuming. du_type='GP300' (default using hfss simulations), 'GP300_nec', 'GP300_mat', 'Horizon' self.params = {"add_noise": True, "lst": 18.0, "add_rf_chain":True, "add_rf_chain_nut":False, "add_rf_chain_gaa":False} self.previous_run = -1 # Not to load run info everytime event info is loaded. @@ -156,15 +155,15 @@ def get_event(self, event_idx=None, event_number=None, run_number=None): # compute total transfer function of RF chain. Can be computed only once in __init__ if length of time traces does not change between events. if self.params["add_rf_chain"]: #self.rf_chain.compute_for_freqs(self.freqs_mhz) - self.rf_chain2.compute_for_freqs(self.freqs_mhz) + self.rf_chain.compute_for_freqs(self.freqs_mhz) if self.params["add_rf_chain_nut"]: # #self.rf_chain.compute_for_freqs(self.freqs_mhz) - self.rf_chain2nut.compute_for_freqs(self.freqs_mhz) + self.rf_chainnut.compute_for_freqs(self.freqs_mhz) if self.params["add_rf_chain_gaa"]: # #self.rf_chain.compute_for_freqs(self.freqs_mhz) - self.rf_chain2gaa.compute_for_freqs(self.freqs_mhz) + self.rf_chaingaa.compute_for_freqs(self.freqs_mhz) def get_leff(self, du_idx): """ @@ -350,15 +349,15 @@ def compute_voltage_du(self, du_idx): # ----- Add RF chain ----- if self.params["add_rf_chain"]: #self.vout_f[du_idx] *= self.rf_chain.get_tf() - self.vout_f[du_idx] *= self.rf_chain2.get_tf() + self.vout_f[du_idx] *= self.rf_chain.get_tf() if self.params["add_rf_chain_nut"]: #self.vout_f[du_idx] *= self.rf_chain.get_tf() - self.vout_f[du_idx] *= self.rf_chain2nut.get_tf() + self.vout_f[du_idx] *= self.rf_chainnut.get_tf() if self.params["add_rf_chain_gaa"]: #self.vout_f[du_idx] *= self.rf_chain.get_tf() - self.vout_f[du_idx] *= self.rf_chain2gaa.get_tf() + self.vout_f[du_idx] *= self.rf_chaingaa.get_tf() # Final voltage output for antenna with index du_idx if self.params["add_noise"] or self.params["add_rf_chain"]: @@ -404,15 +403,15 @@ def compute_voltage_event(self, event_idx=None, event_number=None, run_number=No # ----- Add RF chain ----- if self.params["add_rf_chain"]: #self.multiply(self.rf_chain.get_tf()) - self.multiply(self.rf_chain2.get_tf()) + self.multiply(self.rf_chain.get_tf()) if self.params["add_rf_chain_nut"]: #self.multiply(self.rf_chain.get_tf()) - self.multiply(self.rf_chain2nut.get_tf()) + self.multiply(self.rf_chainnut.get_tf()) if self.params["add_rf_chain_gaa"]: #self.multiply(self.rf_chain.get_tf()) - self.multiply(self.rf_chain2gaa.get_tf()) + self.multiply(self.rf_chaingaa.get_tf()) # Final voltage output for antenna with index du_idx if self.params["add_noise"] or self.params["add_rf_chain"]: diff --git a/grand/sim/noise/Compute_Galactic_Noise.ipynb b/grand/sim/noise/Compute_Galactic_Noise.ipynb new file mode 100644 index 00000000..e53bddaa --- /dev/null +++ b/grand/sim/noise/Compute_Galactic_Noise.ipynb @@ -0,0 +1,681 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "487376de-abcb-4b24-b03d-bae8f43c924e", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from grand import grand_add_path_data\n", + "import os\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c123443b-6a05-467e-a2e4-cbb3c7e64ca0", + "metadata": {}, + "outputs": [], + "source": [ + "import grand.sim.detector.rf_chain as grfc\n", + "freq_MHz = np.arange(30, 251, 1)\n", + "rfchain = grfc.RFChain_gaa()\n", + "#rfchain= grfc.RFChain(vga_gain=20)\n", + "rfchain.compute_for_freqs(freq_MHz)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1484da90-d4be-449e-8946-9b3dfccad24e", + "metadata": {}, + "outputs": [], + "source": [ + "#import grand.sim.detector.rf_chain2 as grfc\n", + "#freq_MHz = np.arange(30, 251, 1)\n", + "#rfchain= grfc.RFChain_gaa()\n", + "#rfchain.compute_for_freqs(freq_MHz)\n", + "longitude=np.arange(180,360+180,5)\n", + "lstaxis=(longitude-180)/15\n", + "freqs=np.arange(30,251,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "60895686-cb83-420a-b6f6-13bfc7d3085f", + "metadata": {}, + "outputs": [], + "source": [ + "RFchainNS = np.array(rfchain.get_tf()[0])\n", + "RFchainEW = np.array(rfchain.get_tf()[1])\n", + "RFchainZ = np.array(rfchain.get_tf()[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "1854fae3-05a2-4d03-825d-59ff55115e0e", + "metadata": {}, + "outputs": [], + "source": [ + "#plt.plot(freqs,abs(RFchainNS))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "6d5735ac-1b59-4176-90cc-29686f633c8b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n", + "31\n", + "32\n", + "33\n", + "34\n", + "35\n", + "36\n", + "37\n", + "38\n", + "39\n", + "40\n", + "41\n", + "42\n", + "43\n", + "44\n", + "45\n", + "46\n", + "47\n", + "48\n", + "49\n", + "50\n", + "51\n", + "52\n", + "53\n", + "54\n", + "55\n", + "56\n", + "57\n", + "58\n", + "59\n", + "60\n", + "61\n", + "62\n", + "63\n", + "64\n", + "65\n", + "66\n", + "67\n", + "68\n", + "69\n", + "70\n", + "71\n", + "72\n", + "73\n", + "74\n", + "75\n", + "76\n", + "77\n", + "78\n", + "79\n", + "80\n", + "81\n", + "82\n", + "83\n", + "84\n", + "85\n", + "86\n", + "87\n", + "88\n", + "89\n", + "90\n", + "91\n", + "92\n", + "93\n", + "94\n", + "95\n", + "96\n", + "97\n", + "98\n", + "99\n", + "100\n", + "101\n", + "102\n", + "103\n", + "104\n", + "105\n", + "106\n", + "107\n", + "108\n", + "109\n", + "110\n", + "111\n", + "112\n", + "113\n", + "114\n", + "115\n", + "116\n", + "117\n", + "118\n", + "119\n", + "120\n", + "121\n", + "122\n", + "123\n", + "124\n", + "125\n", + "126\n", + "127\n", + "128\n", + "129\n", + "130\n", + "131\n", + "132\n", + "133\n", + "134\n", + "135\n", + "136\n", + "137\n", + "138\n", + "139\n", + "140\n", + "141\n", + "142\n", + "143\n", + "144\n", + "145\n", + "146\n", + "147\n", + "148\n", + "149\n", + "150\n", + "151\n", + "152\n", + "153\n", + "154\n", + "155\n", + "156\n", + "157\n", + "158\n", + "159\n", + "160\n", + "161\n", + "162\n", + "163\n", + "164\n", + "165\n", + "166\n", + "167\n", + "168\n", + "169\n", + "170\n", + "171\n", + "172\n", + "173\n", + "174\n", + "175\n", + "176\n", + "177\n", + "178\n", + "179\n", + "180\n", + "181\n", + "182\n", + "183\n", + "184\n", + "185\n", + "186\n", + "187\n", + "188\n", + "189\n", + "190\n", + "191\n", + "192\n", + "193\n", + "194\n", + "195\n", + "196\n", + "197\n", + "198\n", + "199\n", + "200\n", + "201\n", + "202\n", + "203\n", + "204\n", + "205\n", + "206\n", + "207\n", + "208\n", + "209\n", + "210\n", + "211\n", + "212\n", + "213\n", + "214\n", + "215\n", + "216\n", + "217\n", + "218\n", + "219\n", + "220\n", + "221\n", + "222\n", + "223\n", + "224\n", + "225\n", + "226\n", + "227\n", + "228\n", + "229\n", + "230\n", + "231\n", + "232\n", + "233\n", + "234\n", + "235\n", + "236\n", + "237\n", + "238\n", + "239\n", + "240\n", + "241\n", + "242\n", + "243\n", + "244\n", + "245\n", + "246\n", + "247\n", + "248\n", + "249\n", + "250\n" + ] + } + ], + "source": [ + "c=299792458\n", + "kB=1.38064852e-23\n", + "Z0=120*np.pi\n", + "dnu=1 #MHz\n", + "freqs=np.arange(30,251,dnu) #freqs lfmap\n", + "#path_antX = grand_add_path_data(\"detector/Light_GP300Antenna_SNarm_leff.npz\")\n", + "#path_antY = grand_add_path_data(\"detector/Light_GP300Antenna_EWarm_leff.npz\")\n", + "#path_antZ = grand_add_path_data(\"detector/Light_GP300Antenna_Zarm_leff.npz\")\n", + "path_antX = grand_add_path_data(\"detector/Light_GP300Antenna_nec_Xarm_leff.npz\")\n", + "path_antY = grand_add_path_data(\"detector/Light_GP300Antenna_nec_Yarm_leff.npz\")\n", + "path_antZ = grand_add_path_data(\"detector/Light_GP300Antenna_nec_Zarm_leff.npz\")\n", + "################################################################################\n", + "f_leffX = np.load(path_antX)\n", + "f_leffY = np.load(path_antY)\n", + "f_leffZ = np.load(path_antZ)\n", + "freqsleff = f_leffX[\"freq_mhz\"]\n", + "################################################################################\n", + "leffthX = f_leffX[\"leff_theta\"] # Real + j Imag. shape (phi, theta, freq) (361, 91, 221)\n", + "leffphX = f_leffX[\"leff_phi\"] # Real + j Imag. shape (phi, theta, freq)\n", + "leffthX = np.moveaxis(leffthX, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "leffphX = np.moveaxis(leffphX, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "################################################################################\n", + "leffthY = f_leffY[\"leff_theta\"] # Real + j Imag. shape (phi, theta, freq) (361, 91, 221)\n", + "leffphY = f_leffY[\"leff_phi\"] # Real + j Imag. shape (phi, theta, freq)\n", + "leffthY = np.moveaxis(leffthY, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "leffphY = np.moveaxis(leffphY, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "################################################################################\n", + "leffthZ = f_leffZ[\"leff_theta\"] # Real + j Imag. shape (phi, theta, freq) (361, 91, 221)\n", + "leffphZ = f_leffZ[\"leff_phi\"] # Real + j Imag. shape (phi, theta, freq)\n", + "leffthZ = np.moveaxis(leffthZ, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "leffphZ = np.moveaxis(leffphZ, -1, 0) # shape (phi, theta, freq) --> (freq, phi, theta)\n", + "################################################################################\n", + "theta = np.tile(np.arange(91, dtype=float), (221,361,1))\n", + "phi = np.arange(361, dtype=float)[:, np.newaxis]\n", + "phi = np.tile(phi, (221,1,91))\n", + "################################################################################\n", + "leffthX = np.abs(leffthX)\n", + "leffphX = np.abs(leffphX)\n", + "################################################################################\n", + "leffthY = np.abs(leffthY)\n", + "leffphY = np.abs(leffphY)\n", + "################################################################################\n", + "leffthZ = np.abs(leffthZ)\n", + "leffphZ = np.abs(leffphZ)\n", + "################################################################################\n", + "lefftX=np.zeros((len(freqsleff),361,181))\n", + "leffpX=np.zeros((len(freqsleff),361,181))\n", + "lefftY=np.zeros((len(freqsleff),361,181))\n", + "leffpY=np.zeros((len(freqsleff),361,181))\n", + "lefftZ=np.zeros((len(freqsleff),361,181))\n", + "leffpZ=np.zeros((len(freqsleff),361,181))\n", + "################################################################################\n", + "lefftX[:, :, :91] = leffthX\n", + "leffpX[:, :, :91] = leffphX\n", + "lefftY[:, :, :91] = leffthY\n", + "leffpY[:, :, :91] = leffphY\n", + "lefftZ[:, :, :91] = leffthZ\n", + "leffpZ[:, :, :91] = leffphZ\n", + "################################################################################\n", + "latitude=(90-40.98)*np.pi/180 #xinjiang, rad\n", + "#latitude=(90+36)*np.pi/180 # malargue\n", + "longitude=np.arange(180,360+180,5)\n", + "lstaxis=(longitude-180)/15\n", + "lon=longitude*np.pi/180 #rad\n", + "voc2X=np.zeros((len(freqs),len(lon))) #per MHz\n", + "voc2Y=np.zeros((len(freqs),len(lon))) #per MHz\n", + "voc2Z=np.zeros((len(freqs),len(lon))) #per MHz\n", + "######################################################\n", + "vout2X=np.zeros((len(freqs),len(lon))) #per MHz\n", + "vout2Y=np.zeros((len(freqs),len(lon))) #per MHz\n", + "vout2Z=np.zeros((len(freqs),len(lon))) #per MHz\n", + "######################################################\n", + "avleff2X=np.zeros(len(freqs))\n", + "avleff2Y=np.zeros(len(freqs))\n", + "avleff2Z=np.zeros(len(freqs))\n", + "avtemp=np.zeros(len(freqs))\n", + "avBnu=np.zeros(len(freqs))\n", + "avErms2=np.zeros(len(freqs))\n", + "################################################################################\n", + "dphi=5 #deg\n", + "dtheta=5 #deg\n", + "zenith,azimuth=np.meshgrid( np.arange(0,180,dtheta)*np.pi/180, np.arange(0,360,dphi)*np.pi/180 )#rad\n", + "nazimuth=72\n", + "nzenith=36\n", + "idselfreq=np.arange(0,len(freqsleff),dnu)\n", + "idseltheta=np.arange(0,181,dphi)\n", + "idselphi=np.arange(0,361,dtheta)\n", + "lefftX=lefftX[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "leffpX=leffpX[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "lefftY=lefftY[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "leffpY=leffpY[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "lefftZ=lefftZ[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "leffpZ=leffpZ[idselfreq,:,:][:,idselphi,:][:,:,idseltheta]\n", + "T=np.zeros((len(freqs),len(lon),72,36))\n", + "################################################################################\n", + "\n", + "for f in range(len(freqs)): \n", + "\n", + " #LFmapshort contains 72 phi each 5 degrees, from 5/2deg to (360+365)/2 deg, and 36 theta, from 5/2deg to (175+180)/2 deg\n", + "\n", + " ra,dec,temp=np.load(grand_add_path_data(\"noise/LFmap/LFmapshort\"+str(freqs[f])+\".npy\")) #rad inside\n", + " integ=0\n", + " print(freqs[f])\n", + "\n", + " for l in range(len(lon)):\n", + " \n", + " omega=0\n", + " for i in range(nazimuth):\n", + " for j in range(nzenith):\n", + " #(RzRy)-1\n", + " coszenithp=(np.sin(latitude)*np.cos(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j])+np.sin(latitude)*np.sin(lon[l])*np.sin(zenith[i,j])*np.sin(azimuth[i,j])+np.cos(zenith[i,j])*np.cos(latitude))\n", + " zenithp=np.arccos(coszenithp)\n", + " cosazimuthp=( np.cos(latitude)*np.cos(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j]) +np.sin(lon[l])*np.cos(latitude)*np.sin(zenith[i,j])*np.sin(azimuth[i,j]) -np.sin(latitude)*np.cos(zenith[i,j]) ) / np.sin(zenithp)\n", + " sinazimuthp=(-np.sin(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j])+ np.cos(lon[l])*np.sin(zenith[i,j])*np.sin(azimuth[i,j])) / np.sin(zenithp)\n", + " if zenithp==0:\n", + " print('zenithp=0')\n", + " print(zenith[i,j],azimuth[i,j])\n", + " print(zenithp,cosazimuthp,sinazimuthp)\n", + " if cosazimuthp<-1.1 or cosazimuthp>1.1:\n", + " print('cos out of range')\n", + " print(zenith[i,j],azimuth[i,j])\n", + " print(zenithp,cosazimuthp,sinazimuthp)\n", + " \n", + " if sinazimuthp<0:\n", + " if cosazimuthp<-1:\n", + " azimuthp=2*np.pi-np.arccos(-1)\n", + " elif cosazimuthp>1:\n", + " azimuthp=2*np.pi-np.arccos(1) \n", + " else:\n", + " azimuthp=2*np.pi-np.arccos(cosazimuthp)\n", + "\n", + " else:\n", + " if cosazimuthp<-1:\n", + " azimuthp=np.arccos(-1)\n", + " elif cosazimuthp>1:\n", + " azimuthp=np.arccos(1) \n", + " else:\n", + " azimuthp=np.arccos(cosazimuthp)\n", + " diffzenith=zenithp-zenith[i,j]\n", + " diffazimuth=azimuthp-azimuth[i,j]\n", + "\n", + " ip=int(i+round(diffazimuth/(dphi*np.pi/180)))\n", + " jp=int(j+round(diffzenith/(dtheta*np.pi/180)))\n", + " \n", + " contribX = (lefftX[f,ip,jp]**2+leffpX[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " contribY = (lefftY[f,ip,jp]**2+leffpY[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " contribZ = (lefftZ[f,ip,jp]**2+leffpZ[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " contribXX = abs(RFchainNS[f])*abs(RFchainNS[f])*(lefftX[f,ip,jp]**2+leffpX[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " contribYY = abs(RFchainEW[f])*abs(RFchainEW[f])*(lefftY[f,ip,jp]**2+leffpY[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " contribZZ = abs(RFchainZ[f])*abs(RFchainZ[f])*(lefftZ[f,ip,jp]**2+leffpZ[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) \n", + " \n", + " #print(contrib)\n", + " if contribX!=0:\n", + " T[f,l,i,j]=temp[i,j]\n", + " #omega=omega+np.sin(zenith[i,j])\n", + " voc2X[f,l]=voc2X[f,l] + contribX\n", + " voc2Y[f,l]=voc2Y[f,l] + contribY\n", + " voc2Z[f,l]=voc2Z[f,l] + contribZ\n", + " \n", + " vout2X[f,l]=vout2X[f,l] + contribXX\n", + " vout2Y[f,l]=vout2Y[f,l] + contribYY\n", + " vout2Z[f,l]=vout2Z[f,l] + contribZZ\n", + " \n", + " if l==0:\n", + " avleff2X[f]=avleff2X[f] + (lefftX[f,i,j]**2+leffpX[f,i,j]**2)*np.sin(zenith[i,j])\n", + " avleff2Y[f]=avleff2Y[f] + (lefftY[f,i,j]**2+leffpY[f,i,j]**2)*np.sin(zenith[i,j])\n", + " avleff2Z[f]=avleff2Z[f] + (lefftZ[f,i,j]**2+leffpZ[f,i,j]**2)*np.sin(zenith[i,j])\n", + " avtemp[f]=avtemp[f] + temp[i,j]*np.sin(zenith[i,j]) \n", + " avBnu[f]=avBnu[f] + temp[i,j]*2*(freqs[f]*1e6)**2*kB/(c**2)*np.sin(zenith[i,j]) \n", + " avErms2[f]=avErms2[f] + temp[i,j]*4*(np.pi)*Z0*(freqs[f]*1e6)**2*kB/(c**2)*np.sin(zenith[i,j]) \n", + " #lon0Voc2[f]= lon0Voc2[f]+ (lefft[f,ip,jp]**2+leffp[f,ip,jp]**2)* Z0* temp[i,j] * (freqs[f]*1e6)**2 * kB/(c**2) *np.sin(zenith[i,j]) \n", + " \n", + " voc2X[f,:]=voc2X[f,:]*(freqs[f]*1e6)**2\n", + " voc2Y[f,:]=voc2Y[f,:]*(freqs[f]*1e6)**2\n", + " voc2Z[f,:]=voc2Z[f,:]*(freqs[f]*1e6)**2\n", + " vout2X[f,:]=vout2X[f,:]*(freqs[f]*1e6)**2\n", + " vout2Y[f,:]=vout2Y[f,:]*(freqs[f]*1e6)**2\n", + " vout2Z[f,:]=vout2Z[f,:]*(freqs[f]*1e6)**2\n", + "######################################################################\n", + "voc2X=voc2X*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "voc2Y=voc2Y*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "voc2Z=voc2Z*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "\n", + "vout2X=vout2X*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "vout2Y=vout2Y*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "vout2Z=vout2Z*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz\n", + "\n", + "avleff2X=avleff2X*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "avleff2Y=avleff2Y*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "avleff2Z=avleff2Z*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "avtemp=avtemp*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "avBnu=avBnu*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "avErms2=avErms2*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi)\n", + "\n", + "filename = grand_add_path_data(\"detector/RFchain_v2/Z_ant_3.2m.csv\")\n", + "RLX,RLY,RLZ = np.loadtxt(filename, delimiter=\",\", usecols = (1,3,5), skiprows=1, unpack=True)\n", + "RLbisX=np.zeros((len(freqs),len(lon)))\n", + "RLbisY=np.zeros((len(freqs),len(lon)))\n", + "RLbisZ=np.zeros((len(freqs),len(lon)))\n", + "RLbisX=RLbisX.T\n", + "RLbisY=RLbisY.T\n", + "RLbisZ=RLbisZ.T\n", + "RLbisX[:]=RLX\n", + "RLbisY[:]=RLY\n", + "RLbisZ[:]=RLZ\n", + "RLbisX=RLbisX.T\n", + "RLbisY=RLbisY.T\n", + "RLbisZ=RLbisZ.T\n", + "plX=voc2X/(4*RLbisX)\n", + "plY=voc2Y/(4*RLbisY)\n", + "plZ=voc2Z/(4*RLbisZ)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "6085cb02-1b88-4e45-bfce-8c207e5f7036", + "metadata": {}, + "outputs": [], + "source": [ + "np.save(\"galactic_Vout2_per_Hz_gp13_gaaTF.npy\", np.stack([vout2X, vout2Y, vout2Z], axis=-1))" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "c7f2fcb5-d122-4247-bb55-c4ba5be27739", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/cAAALPCAYAAAAn2DC7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAADFoklEQVR4nOzdeXxU1f3/8fedhIQkJCF7QFYVLCqLgHuLu6KIK4KKClqrterPb2ttv3az+LXVbtpaxWqrgCCL4C6orYq7RkjcFcEKVGVJICEbISGZ8/vjdoYsM8lkncw9r+fjwSPJmTv3npN53yGfufee6xhjjAAAAAAAQMzyRbsDAAAAAACgcyjuAQAAAACIcRT3AAAAAADEOIp7AAAAAABiHMU9AAAAAAAxjuIeAAAAAIAYR3EPAAAAAECMo7gHAAAAACDGUdwDAAAAABDjKO4BAO3yyiuvyHEcOY6jV155Jdrd6ZT58+cHx7Jp06ZodwcAAKDDKO4BD3j11VeDBYrjOHrrrbei3SV0g127dulvf/ubLrjgAo0YMUIZGRnq06ePsrKyNHr0aF166aWaN2+edu3aFe2uohWNPxzp6L9hw4ZFexiAJ7Rnv5s9e3a0uwsAraK4BzxgwYIFTX5++OGHo9QTdAe/36/f/e53Gj58uK655hqtWLFCX3zxhXbt2qX6+nqVlpbq448/1qJFi3TFFVcoPz9f119/vXbs2BHtrkeFl84sQOzatGlTMIfz58+PdncAABaIj3YHAHROTU2NVqxYIUnq16+fqqqq9Oijj+ovf/mLEhMTo9w7dFZNTY0uuugiPfXUU5KkPn366LzzztMpp5yi/fffX/3791dZWZk2b96sl156Sc8++6zKy8t1zz336Nhjj9WFF14Y5RH0brNnz+7xo3GHH364Pvroo5CPbdmyRaeddpok6eyzz9Ztt90WcrmEhIRu6x9go4kTJ2revHmtLpORkdFDvQGAjqG4B2LcE088ocrKSknS3XffrSuuuEJlZWV65plnNG3atCj3Dp119dVXBwv7o446SosXL9bw4cNDLnv55ZeroqJC99xzT9iiENGXkpKiQw89NORj/fr1C37fv3//sMsB6Fqt7ZcAECs4LR+IcYFT8MeMGaPLL79cBx10UJN2xK4VK1Zo4cKFkqQJEybo5ZdfDlvYB6SlpelnP/uZioqKdOCBB/ZENwEAANALUNwDMWzr1q168cUXJUmXXHJJk6/PP/+8SkpKWjzniiuukOM4SkpKCh7xb81BBx0kx3F0xBFHhHy8oaFBCxYs0JlnnqmBAwcqMTFRWVlZ+va3v60777xTNTU1Ydd9/PHHy3EcHX/88ZKkDRs26LrrrtOIESOUnJzcYgbzrVu3au7cuZo2bZpGjBihlJQUJSYmar/99tPZZ5+tZcuWye/3tzmm+vp63X333TriiCOUlpam/v37a+LEibrrrrtUV1fXrmtln3zySV1wwQUaMmSI+vbtG1zXnDlzVFZW1mZfWvPb3/5Wkjvh07x585SUlBTxc7/1rW9p4sSJIR/78ssv9ac//UlTp07VsGHDlJSUpKSkJA0dOlQzZszQ888/36l+S9I777yjX/ziFzr++OOVn5+vhIQEpaWl6eCDD9Y111yjTz/9NOJ1rVq1Spdccon2339/paSkqG/fvho+fLjOP/98zZ8/X7t375a07xrnE044IfjcE044ocWkWI1f00hny/f7/VqyZInOP/98DRkyJPg7GzlypGbOnKkVK1Zo79697f49dcbq1as1a9Ys7b///kpOTlZaWppGjx6tm266SVu2bAn7vF//+tfBMUtSRUWFfv3rX2v06NHq16+fcnNzdcYZZ7SYmLO4uFi/+MUvdMghhyglJUVZWVk6++yz9d5774XdVvPfb21trf74xz9q/PjxSk9PV1pamo488kjNnTtXDQ0NbY45Vt5vHMdp8kHc5Zdf3iKHv/71r4OPN39NwmlrPon2jlGS9uzZo3vuuUcnnXRScF/Nzc3VySefrAcffFD19fWt9imcW2+9NdjXDRs2tLn8aaedJsdxNGDAgBZZWL9+va6//nodeuihSk1NVUJCggYOHKhx48bpiiuu0LJly1RbW9uhfnZE89fB7/froYce0gknnKC8vDz5fL6Ql/sUFRXp+9//vg466CD169dPKSkpOuigg3TNNddo/fr1bW63pqZGv/3tbzV27NjgPnjsscfq73//u/x+f5v5GDZsWEQTA86ePTuiiTu3bdumn//855o4caIyMzOVmJiowYMHa/r06cG/TUIJ9X/sv/71L02dOlX5+flKTEwMzjHz9ddft/Fbcb355pu68sorddBBByktLU0JCQkaNGiQzjzzTN17771NJpo977zz5DiOMjIytGfPnlbXW19fr/z8fDmOozPOOCOivgBRZQDErD/84Q9GkvH5fObrr782xhjz5ZdfGsdxjCTzl7/8pcVzXnzxRSPJSDLz589vdf1r1qwJLvvnP/+5xeObN282Y8eODS4T6t+BBx5oPv/885DrP+6444wkc9xxx5knn3zSpKSktHj+xo0bjTHG1NfXG5/P1+q2JJlTTjnFVFZWhh1TeXm5Oeqoo8I+/4gjjjDvvfde8Od58+aFXE9paak58cQTW+1Lbm6uefvtt1v9HYfzwQcfBNdz4okndmgdoXz55Zdt/g4lmUsuucTs3bs35DpWr14dXG716tUtHp83b16b64+LizP33ntvq33dsWOHOemkk9pcV+A12rhxY0Rja/yaNu5rIGvNbdy40YwbN67N9Yb6XbRX4zHMmjUr5DI1NTXmwgsvbLUvKSkp5umnnw75/FtuuSW43H/+8x8zcuTIsK/Ro48+aoxx87jffvuFXC4xMdG8/PLLIbfV+PdbVFRkJkyYELbPkyZNanXfjaX3m0hyeMstt4R8TVrT1r7XnjEaY8z7779vhg4d2mo/Dz/8cLNt27ZW+xXKhg0bguv49a9/3eqy27ZtM3FxcUaS+Z//+Z8mjz366KMmISGhzd/nRx991O4+GrPvtTruuOMifk7j1+G5554zJ598cov+NN5/GxoazA9/+MPg/82h/sXHx5v7778/7Da3bt1qRo0aFfb5p512mnnhhRdazUfgtQ733hIwa9YsI8kMHTo07DKLFi0Kma/G/7773e+G/H+k8fvcvHnzzP/+7/+GXUdOTo759NNPw/Zj9+7d5qKLLmrX/rZy5cpg+5IlS1r9XTz11FPBZZcvX97qskBvQHEPxLAxY8YYqWXxd+yxxxpJZsKECS2e09DQYAYOHBj8w7Q1P/zhD4N/5Df/427Hjh1m8ODBwT/ur7vuOrN8+XKzZs0as3r1anPzzTeb5ORkI8nsv//+ZteuXS3WH/hDdPjw4aZfv34mJyfH3HHHHebNN98077zzjvnrX/9qSkpKjDHG7N271/h8PnPiiSeaP/zhD+b55583hYWF5pVXXjEPPfSQOfroo4P/AV922WVhx3T66acHlzv22GPN0qVLzdq1a81zzz1nZs6caSSZI488sskfHs3t2bPHjB8/Pvi7ufTSS82SJUvMO++8Y15//XXzm9/8xmRlZRlJJiMjw2zatKnV33Mod999d7APv//979v9/HA2bNhgEhISzNSpU83dd99tXnzxRVNUVGRefPFFM3fuXHPIIYcEt/urX/0q5DraKjD+/ve/m4yMDDN79mzz0EMPmddff90UFRWZZ5991tx6660mOzvbSDKO45iXXnop5Daqq6vN6NGjg9uZMGGCuf/++82bb75p1q5da5544gnzwx/+0AwcODD4GtXV1ZmPPvrIPPTQQ8HnPfTQQ+ajjz5q8q+srCy4nbaK+23btgX3l8C+tmDBAlNQUGDeffdds2zZMnP11VebzMzMHinu/X6/mTJlSnCZqVOnmoULF5o333zTvP322+Yvf/mLGTJkiJFkEhISzJo1a1qso3EheeSRR5rk5GRz8803m1dffdWsWbPG3HXXXSYtLc1IMqmpqebLL780gwcPNpmZmeY3v/mNeeONN0xBQYGZM2dOsOgaMmSIqa2tbbGtxr/fww8/3EgyM2bMMKtWrTJr1641ixcvDrZLMuecc07I30usvd989NFHTQqt2267rUUOt2/fHvI1aU2kxX0kY9ywYYNJT083kkxaWpq5+eabzRNPPGHWrl1rXnjhBXPttdea+Pj4YE7q6upa7VsogffSkSNHtrrcX/7yl+C4Gmd227ZtwQIyNzfX3Hrrreaf//ynKSoqMm+++aZZsGCBueKKK0xmZmbUivvA/8NnnXWWefzxx01hYaFZtWqVWbp0aXD5H/zgB8HlJ02aZB566CHzyiuvmHfffdf8/e9/b/K++9RTT7XY3t69e5t8MHbqqacGX6vHH388+OFC432pO4v7ZcuWBT+o2H///c2dd94Z3Ecee+wxc8YZZwT78cMf/rDF8xu/zx1zzDHB3//ixYvN2rVrzYsvvmguu+yy4DJHHXVUyH40NDSYU045JbjciBEjzF133WVef/11U1hYaJ599lnzs5/9zBx44IFNivuGhgYzaNCg4O+yNeecc46RZLKzs0O+xwG9DcU9EKMaH11+6KGHmjx23333BR/75JNPWjz3Rz/6UdiiPaDxhwCh/vO7+OKLg//5f/nllyHXUVRUFPzD7Gc/+1mLxwN/iEoyAwcONJs3bw47Xr/fbzZs2BD2cWOM+dWvfhUsGtevX9/i8SeffDK4vfPOO880NDS0WOaPf/xjk0/7QxX3P/vZz4wk079/f7N27dqQfdm0aZMZMGCAkWQuvvjiVvsdypVXXhnsw4svvtju54dTVVVltmzZEvZxv99vZs+ebST36G+oIqmtAuPrr7821dXVYbexa9eu4B/E3/72t0MuE/hgSZK59tprjd/vD7lcbW1tiwy31b/G2iruzz333ODjv/vd78Kup7Ky0pSWlra6rUi0Vdw/8MADRpLp06ePee6550Kuo7S0NFgsHHvssS0eb1xIJiYmmnfeeafFMs8++2xwmZycHJOdnW2++OKLFsvde++9weUef/zxFo83P4vjt7/9bYtl9u7da0477bTgMitXrmyxTCy+3zQ/Otmari7uIxljoKg67LDDggV/c88991zwDIYHHnig1b6F0vhDylAfNAWE+xDgwQcfDD6/teJ99+7dZvfu3e3unzH7ivuJEye2+ACm8b/GuWv8Okgyv/jFL8Ku/5///GdwuX/84x8hl6mpqQmeCTZ06NAWR7vvueee4DquuuqqkOu44oormvSpu4r7kpKS4IdCV1xxRdgzvAL/T/p8PrNu3bomjzU/y+p73/teyPf4xv8PFhUVtXi88YdC5557rtmzZ0/IvjQ0NATPbgz45S9/GezfV199FfJ527dvN3369DGSzA033BByGaC3obgHYlSg+ElKSjLl5eVNHtu5c2fwiNpPf/rTFs8tLCwM/ocY6nR7Y5qevr9gwYImj23cuDF4CuUzzzzTaj9/8pOfBP/QbK7xH6IPP/xwW0NuU319ffCo8B//+McWj0+ePDn4OysuLg65Dr/fHzwqH+qP8srKyuAfNn/9619b7c/cuXODhVhVVVW7xhI4WiDJfPDBB2GXq6ioCPvHaLjTk9uyc+fO4Ou7YsWKFo+3p3gOp/EHLTt27GjyWFlZWfAo7IQJE0x9fX271t1Vxf26deuCR6fCHVHuaq0V936/3xxwwAFGkrnxxhtbXc+qVauC62leeDYuJEO9PwQ0Pl37vvvuC7nM7t27Td++fY0U+ghd49/vmDFjwn5I89VXXwX/iJ4yZUqTx2L1/SbaxX1rY3zttdeCy3344YetbnP69OlGco+wttf27dvDnm4f8MUXXwT7MmfOnCaP/eY3vzGSewZUd2lcZLb2r/GR/cavw8iRI1t9jwoU7eeff36r/fj000+D6/znP//Z5LGDDz7YSDJ5eXlhPzitrKw0OTk53V7c33rrrUaS2W+//cIW08a4H9oFLuVp/mFb431j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5zAJnJofOCV/6NChXXbWHNBTKO47oLq6WmPHju3WSUvasz1jjM455xx9+eWXeuqpp/Tee+9p6NChOvnkk7t8Ii5E18aNG4P/oZ5//vm68MIL2/x3/vnnS3ILxMAfUgE5OTnBGaqXLl0qv98f/MNr6NChOvbYY0P2Y+rUqcE/WP785z93x1CbaHyNX2uZ/sc//hH2esD4+PjgrM/PP/982KPzxhgtXLgw7DZOPvnk4Kmfd999d7eejnvzzTcH+zR79ux2n7HRXKS/x7/97W/dug2/36+///3vYddxwgknBC8h+etf/9rmtdzNNZ5IrLa2tl3PbWzKlCk9mvO2jB8/PljIPPDAA53OQ09buHBh2P3lm2++0T//+U9J0vHHH9/k6Hwsvt9I7cth47NTWvsAI3Cku7POOussSe57y1/+8pcuWWdr4uPjgzO5r1q1Srt27Qr+X5OcnKxzzjmnQ+tNS0sLTjLX2yY1lNz/YwOTcS5evLjNs8ZCGThwoEaNGiVJWr58edj5Haqrq9v8gCOQs6KiorD74ieffKIPP/ww7DoC2Vm3bp1eeOGFNvvfXcaOHavBgwdLcvfFjn4gLSl4htnrr7+u1atX66WXXpIkzZ49O+qXQgDtRXHfAaeffrpuu+22FrcHC6itrdWPf/xj7bfffkpJSdGRRx7ZoRlYI93ehg0b9M477+i+++7T4YcfroMOOkj33XefampqgtcMwRsefvjh4H/Ibd1WJyCwnN/vD3kaduCIydatW7V48eLgNa0XX3xx2P/UDjrooOBtlpYuXao777yz1T5s3LixU1nMyckJXvO2ZMmSkH8or1mzRr/85S9bXc/VV18tyZ386vvf/37IUxPvvPNOFRUVhV1H//79dd1110mS3nrrLf3whz9s9RTH7du3B0/xba/p06cHJ/JZs2aNTjnlFG3evLnV5+zevTtsIXHggQcGX9MFCxaE/OPumWee0T333NOh/koKznAuhb+90M0339zm7zjwWhUWFup//ud/wv4hunfv3haTVjWeXClw67iOGDlyZPB998knn9Qf/vCHsMtWV1d3+FKGSPl8Pv3sZz+T5B5xveyyy1otGisqKjr1Wna1999/P+TvsL6+Xt/73veCkztec801TR6P1febrKys4KUcbeXwmGOOCZ5Fddddd4XM+x/+8Ae9++67kQyhTaeeeqqOOOKI4HrbKgo/+ugjPfPMM53aZuD/mtraWi1evFiPPfaYJOnss88OexuzF154QVu3bg27zvLy8uDvJFqX77TlF7/4hSR3f5w2bVrwdO9Qamtrde+997b44C6wT2zbtk033nhjyOf+8Ic/bHMCv8DlXlu2bAm5j1RWVuq73/1uq+u44YYbgq/X5Zdf3uRsrVBWrlzZ6ocFHeXz+XTTTTdJkr7++mtddtllYSeIDdzKMpwZM2YoNTVVxhhdfPHF8vv9chxHl19+eZf3G+h2zW98j/aRZJ544okmbVdeeaU55phjzGuvvWa++OIL84c//MEkJiaa9evXd8v2PvzwQyPJfPHFF03aBw0aZGbNmtXpbaL3OOCAA4wkk5ubaxoaGiJ6TkNDgxkwYICRZA455JAWj1dVVZmUlBQjyfTv399IMpLMxx9/3Op6d+7cafbff//g8pMmTTL/+Mc/zNtvv22KiorMv/71L/PHP/7RnHzyycbn85nzzz+/xTqOO+44I8kcd9xxbY7j2muvDW5r4sSJZvHixWbNmjXmxRdfND/60Y9M3759TXZ2thk5cmSr6zz11FOD6zn22GPNsmXLTGFhoXn++efNJZdcYiSZI444IrjM/PnzW6xjz5495sgjjwwuM3bsWHPPPfeYN954w7z33nvm5ZdfNn/961/N2WefbRISEsyECRPaHF841dXVZsqUKcFtJSQkmIsvvtjMmzfPvPrqq+b99983b7/9tlm2bJm54YYbTG5ubnDZUaNGtVhf43WdfPLJ5rHHHjNr1641q1atMt/97ndNXFycGTFihMnJyTGSQr6HrF69OriO1atXN3msqqoq2Ie4uDhz9dVXm+eff96sXbvWLF261Jx00knB331gHfPmzQs57tGjRweXmTBhgnnggQfM22+/bQoLC81TTz1lfvzjH5v99tsv5PMHDRpkJJnhw4ebp556yqxbt85s2LDBbNiwwVRUVASXmzdvXnAbGzdubLGebdu2mYEDBwaXOfHEE83DDz9s3n33XbNmzRqzfPly84Mf/MBkZma2+F10xMaNG4PbCvW79/v95txzzw0uc8ABB5jf//735pVXXjHvvfeeefXVV839999vLrroIpOSkmKysrJarOOWW24JPr81s2bNMpLM0KFDW12utf248e934sSJRpK56KKLzHPPPWcKCwvN0qVLm+xvU6dODbmNWH2/CeQ8KyvLLF682Hz66afBHO7cubPJshdddFFwm2eeeaZ57rnnTFFRkXnyySfN+eefbySZY445Juy+194xfvHFFyYzM7PJ737RokWmoKAg+J7wm9/8xhx11FFGkrnxxhvbXGdbhg8f3uL/mmeffTbs8rNmzTJ9+vQxZ5xxhvnzn/9sXnzxRVNUVGReffVVc++995pRo0YF13PXXXd1qE+B50fyOwto7T0wlBtuuCG4fH5+vvn1r39tXnzxRfPee++ZN954w8yfP99897vfNRkZGUaSqaysbPL8vXv3msMOOyy4jsmTJ5snn3zSFBYWmieffDL4/1pgHwvXr+LiYpOWlmYkmb59+5o5c+aYd955xxQUFJi5c+eaAw880PTt2ze4rXD7/mOPPWYcxwmu5/vf/7556qmnTGFhoXnnnXfMihUrzE9+8pPgPvvMM880eX7j97lQ79+NDR06NOz7YUNDgznllFOC6xo5cqT585//bN544w1TVFRkVq1aZX71q1+ZESNGmFtuuaXV7Xzve98LrkeSOemkk1pdHuitKO47qXmxvXnzZhMXF2e++eabJsuddNJJ5uabb+7y7RljTF1dnRkyZIi54IILTGlpqamtrTV33HGHkWROPfXUTm8TvcMbb7wR/E/n6quvbtdzf/CDHwSfu3bt2haPz5w5s8l/amPHjo1ovVu3bjXf+c53mjw33L/LL7+8xfPb84forl27zLhx48KuPzMz07z66qttrrOsrKxJMdH832GHHWbWrl0b/Hnp0qUh11NRUWHOO++8iMZ+wgknRPT7DKehocHcdtttJj09PaLt9e3b11xzzTWmpKSkxbr+85//mCFDhoR97pAhQ8wnn3zS6h9Ubf1h+/zzz5u+ffuG3cbxxx9vPv744zb/uCspKTGTJk1qc7yhnj937tyIlm+ruDfGmH//+9/m0EMPbbMfPVHcG+O+519zzTXBP65b+zd8+PAWz49WcV9UVNSkQGn+79hjj23ywUtzsfh+8+yzz4Z9nZoXG9u2bTMjRowIu80LL7zQvPjii63mrT1jNMaYzz//PKJsSzJz5syJaJ2t+fnPf95kndnZ2Wbv3r1hlw9ksK1/3//+9yP+wLu5wDq6s7j3+/1mzpw5Jj4+vs2xpKSkmN27d7dYxzfffGMOOuigsM879dRTzQsvvNBmvx599FETFxcXch1JSUlm+fLlEe37Tz/9dJMPh8L98/l85uWXX27y3K4q7o1xPwieNm1am/1oq7gvKChosvwjjzzS6vJAb8Vp+V3so48+UkNDg0aOHKl+/foF/7366qvB0/LWrVsnx3Fa/fe///u/EW+zT58+evzxx7V+/XplZmYqOTlZq1ev1umnnx52IiDEnsYT4gWuo49U4+VDTazXfDKjSCc3ys/P12uvvaZnn31WM2fO1P7776/k5GT16dNHOTk5OuaYY3TjjTfq1VdfDU5Q01Hp6el688039X//938aPXq0+vbtq379+mnUqFH68Y9/rA8++CB4TX1r+vfvrzfeeEN33XWXJkyYoH79+ik1NVXjxo3T7bffrrfeeqvJ9b7p6ekh15OamqrHHntMr7/+uq688koddNBBSk1NVXx8vDIzM3X44Yfr2muv1apVq/Svf/2rU2P3+Xz6+c9/rk2bNmnu3Lk677zzdMABByg9PV3x8fHKysrSwQcfrJkzZ+r+++/X1q1bNXfu3CazCQcMHjxYRUVFuummmzRy5EglJiYqPT1dY8eO1S233KL3339fBx98cKf6e9ppp2nt2rW65JJLNHDgwGAejjvuOD3wwAN66aWXmtyWMZzs7Gy9+uqrevzxxzVt2jQNGjRIiYmJ6tu3r/bff39dcMEFeuSRR3TRRRe1eO4111yjxx57TKeeeqpyc3ODpzx3xP7776/3339f8+fP15QpUzRgwAD16dNHSUlJGjlypC677DI99dRT+s53vtPhbbRHnz59NHfuXH3wwQe6/vrrNXr0aKWnpysuLk7p6ekaN26cvvvd72rFihX67LPPeqRPkcjIyNBbb72l22+/XePGjVNqaqr69eunww8/XH/961/16quvNplYrrlYfL+ZMmWKXnrpJZ199tnBfSGcvLw8FRQU6Kc//alGjBihxMREZWZmatKkSVq0aJGWLFnS5XcKGDlypN5//30tXrxY559/voYMGaKkpCQlJCRowIABOv744/WLX/xChYWF+tWvftXp7TX/v6XxpK6h3HXXXVq0aJGuuOIKTZw4Ufvtt58SEhKC+96sWbP0+uuv67777uvVf+84jqNf/epXWr9+vX7yk59o4sSJyszMVFxcnFJTU4Pv3wsWLNDWrVuVlJTUYh0DBw7Ue++9p9tuu02HHnqokpKS1L9/fx111FGaO3eunnvuuYju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ecA93ufuu++WMUYjR470lxH/iCcej0cXX3yx3nvvPa1evVqnn356yP24/8OOwol/J9z/WVAPjnDxxRcrNTVVQ4YMUYcOHbR582YtWbJEaWlpuu+++/z7zZ49W0OGDNHw4cN1xRVXaOfOnZo3b55GjBgRcMEDLdn8+fN16NAh/0quL774onbu3ClJmjp1qrKysnTLLbdo9erVOuuss3TNNdeotLRUDz74oE4++WRNmjTJf6zOnTvr2muv1YMPPqhjx45p0KBBWrNmjd5++209+eST9c5jA5paffFfWFioU045Rb/+9a/Vq1cvSdJrr72mV155RSNHjtSFF17oPxbxj3hyww036IUXXtD555+vgwcPatWqVQHbx40bJ0nc/2FL4cT/3r177X//N4ADPPLII2bw4MEmOzvbJCQkmLy8PDNu3Djz+eefB+379ttvmyFDhpiUlBTTvn17M2XKFFNcXNwMtQYaplu3bkZSyNfXX3/t3+/f//63GTFihElLSzNt2rQxv/3tb83evXuDjufxeMycOXNMt27dTFJSkunTp49ZtWpVE54REL764r+wsNCMGzfO9OzZ06SlpZnk5GTTp08fM2fOHHP06NGg4xH/iBfDhw+vNfZr/snP/R92E078O+H+7zKmxioBAAAAAAAgrjDnHgAAAACAOEdyDwAAAABAnCO5BwAAAAAgzpHcAwAAAAAQ50juAQAAAACIcyT3AAAAAADEOZJ7AAAAAADiHMk9AAAAAABxjuQeAAAAAIA4R3IPAHCs7t27y+Vy1fn605/+1NzVRCNs37496Hd6zz33BOyzbt26gO2bNm2q85h9+vTx73v55ZfX+v22b99e53F8+61bt64hp+Y3cuTIgPp37969UccDAMSnhOauAAAAze0nP/mJevbsGXLbSSed1MS1QSy0bt1ao0ePliT179+/zn2XLl2qP//5zyG3vf/++9q8eXPU69cYP/vZz9SxY0eVlpbqueeea+7qAACaCck9AMDxLr/8ck2cOLG5q4EYysnJUX5+fp37dO3aVeXl5frrX/+quXPnKjk5OWifpUuXSpIGDRqkjRs3xqKqEbvhhhskWaMGSO4BwLkYlg8AACApMTFR48aN08GDB7VmzZqg7WVlZXr66ad13HHH6ec//3nTVxAAgDqQ3AMAEAbf/Pzt27dr7dq1Ovvss5WdnR00Z7qwsFB33HGHBgwYoIyMDKWlpenkk0/WPffco7KyspDHrqys1J/+9CedfPLJSklJUfv27TVq1Ch9+umnys/Pl8vlChpZMGvWLLlcLs2aNSvkMX3zyM8888yQ23fv3q3rr79evXv3VlpamjIyMjRo0CDNnz9flZWVQftPnDhRLpdL+fn5+vrrrzV+/Hh17NhRycnJ6tGjh2677TZVVFTU+vP78MMPNWHCBB1//PFKSUlRdna2+vfvrxtvvFHffPONJGnZsmVyuVx1Js67d+9WYmKiUlNTdeDAgVr3a6jf/e53kqp66KtbvXq1SkpKdOmll6pVq1ZR/96S/L/v+l71zecHADgPw/IBAIjAvHnzNH/+fA0cOFAjR47U7t27/Yne5s2bNXLkSO3YsUN5eXkaOnSoEhMTtWHDBs2cOVPPPfec1q1bp6ysLP/xvF6vxowZozVr1igpKUlnnnmm2rZtq/Xr12vw4MH+ZDOa/vWvf+m//uu/VFhYqO7du+tnP/uZKioqtGHDBk2dOlUvvviiXnrpJSUmJgZ99qOPPtI111yjtm3bavjw4Tp48KDeeecdzZ49W5999pmef/75oM88+OCD+uMf/yiv16sTTzxRF154oY4cOaIvvvhCc+fOVZ8+fTRx4kT95je/0U033aTXX39d27Zt04knnhh0rMcee0yVlZUaP3682rVrF/WfTZ8+fTR48GC98cYb2rFjh7p06eLf9sQTT0iSJk2apCeffDLq31uSevbsqQkTJoTctmvXLr3xxhuSFLPGBQBA/CK5BwAgAosWLdLatWt1wQUXBJQfOXJEF1xwgXbs2KHbbrtNM2fOVFJSkiRrOPfll1+up556Stddd11Ar/CiRYu0Zs0a5ebm6s0331Tv3r0lWb3506ZN08KFC6Na/7179+pXv/qVDh06pIULF+rKK6+U220N5Dtw4IDGjh2rf/zjH7r33nt1++23B33+kUce0a233qo777zTn2D++9//1o9//GOtWbNG7733nk4//XT//i+88IJmzJihlJQULV++XGPHjg043ubNm+VyuSRJycnJuuKKKzR79mwtWLBAjzzySMC+x44d05IlSyRJV199dfR+KDVcdtll2rBhg/Lz8zVz5kxJ0ueff663335bw4YN0wknnBCz7z106FANHTo0qPzQoUP+8unTpwc0OgAAIDEsHwAATZo0KeTQ51BD2idMmBCU2EvS8uXL9eWXX+q8887T3Xff7U/sJSktLU1LlixRhw4dtHLlShUWFvq3+R61N2vWLH9iL0kJCQl66KGH1LFjx+id6Pff78CBA5oyZYomT57sT+wlqV27dlqxYoUSExM1f/58GWOCPv+jH/1Id999d0DPcd++fTV+/HhJ8vcs+9xxxx2SpNmzZwcl9pL1NILq533VVVcpMTFRy5cv1+HDhwP2fe6557R3716dfvrpOvXUUxtw9uG55JJLlJaWpvz8fP/PwNcgE8lIiuOPP77OofXhOnr0qC666CJ99tlnuvjii/XAAw9EdkIAAEeg5x4A4Hi1PQqvV69eQWW+x6nV9PLLL0uSLr744pDb09PTNXDgQL3yyivauHGjRowYoV27dumLL76QJI0bNy7oMykpKRo7dqweffTRsM+lPvXV87jjjtMJJ5ygzZs36/PPPw8aGn/eeeeFTEx9CfquXbv8ZXv37tVHH30kt9utyy67LKz6derUSaNHj9ZTTz2llStX6g9/+IN/24IFCyTFttdekjIzMzVq1CitXLlS69at07Bhw7RixQplZGRozJgxYR9n1KhRSk9Pr3X78uXL6z2GMUYTJ07012P58uURNQwAAJyD5B4A4HiRPAqve/fuIcu/+uorSdL48eP9vdi12bdvnyRp586dkqzHtNWWBB5//PFh1StcvnqeccYZ9e67b9++oOS+a9euIffNzMyUJJWXl/vLvv32W0lSXl5ewDoD9Zk2bZqeeuopLViwwJ/cf/LJJ/rf//1f5ebm1trAEk2/+93vtHLlSi1dulRlZWXavXu3Lr/8cqWlpYV9jLlz59YaL1J4yf3NN9+sp556SieddJLWrFkT8vF8AABIJPcAAEQkNTU1ZLnX65UkjRw5Urm5uXUeo1u3blGvV231qa189OjRat26dZ3HCLVgXfVh/LHy4x//WIMHD9aGDRv01ltvafjw4f5e+yuuuCJgykOsDB8+XD169PBPBZAiG5IfDYsWLdL999+vvLw8vfLKK2rbtm2Tfn8AQHwhuQcAIAq6dOmirVu36rLLLgu7Z/m4446TJO3fv1+lpaUhe+9re+SZL8EtKSkJud33eLlQ9fz888910003aeDAgWHVs6F8vfx79uxRUVFRxL3348aN0/z589W/f389+eSTSkhICBimH0u+xw/OnDlTb7zxhnr37h2wUGCsvfjii5o6daoyMjL08ssvN0mDEAAgvrGgHgAAUXDuuedKkp555pmwP9O5c2f94Ac/kCT99a9/DdpeUVGh1atXh/ysr2Fgy5YtIbf75tZHo54N1bFjR/Xv319erzfkc+PrMnbsWOXl5WnNmjWaPXu2Dh8+rIsuukidOnWKUW2DTZw4Ue3bt1e7du105ZVXNtn33bhxoy655BK5XC6tXr1ap5xySpN9bwBA/CK5BwAgCq644gp169ZNq1ev1k033RSyR33v3r16/PHHA8quvfZaSdZq+Vu3bvWXezweTZ8+Xbt37w75/c4++2y53W699tpreuutt/zlxhg9+uijeu6550J+7sYbb1SbNm300EMPad68eTp69GjQPl9//bVWrVpV7zmHw7da/q233hqyTps3bw7ZQJGYmKjJkyersrJSc+fOlRT7hfRq6ty5swoKCrR//35dc801TfI9v/rqK5133nkqKyvTkiVL9POf/7xJvi8AIP4xLB8AgCho3bq1Xn75ZZ133nl64IEHtGTJEvXr10+dO3dWWVmZtm3bpi1btqhDhw76/e9/7//clClT9Prrr+vFF19U//79ddZZZ6lt27Zav3699uzZo8mTJ2vRokVB369Lly6aOnWqHnnkEf30pz/VGWecoezsbH388cf69ttv9cc//lH33Xdf0Oc6d+6stWvXatSoUZo+fboeeOAB9e3bV3l5eSoqKtKWLVv05Zdf6rTTTgu5gn+kLrroIs2ePVu33XabRo8erV69eql///46cuSIvvjiC23evFnLli0LeByez5VXXqnZs2eroqJC/fr107Bhwxpdn5Zu9uzZKigoUPv27fXWW28FNNxUN3fuXOXk5DRx7QAALRnJPQAAUdKnTx998sknWrx4sZ5//nl98skneu+995STk6POnTtr+vTpuuiiiwI+43a79fe//12PPvqonnjiCa1bt07p6ekaOnSonn/+eW3atClkci9JDz/8sLp27aq//OUvevfdd5Wenq6f/OQneuaZZ1RcXBwyuZekYcOG6bPPPtP8+fP18ssva+PGjaqoqFCHDh3UtWtXjRs3TqNGjYraz+WWW27R2WefrUcffVT/+te/9Pe//10ZGRnq0qWLZsyYobPPPjvk5zp06KABAwZo/fr1mjJlStTq05J5PB5J1pMK6lpNf9asWST3AIAALmOMae5KAACA0PLz8zVp0iRNmDBB+fn5zV2dJrVt2zb16tVLWVlZ2rVrV0SPofPZvn27jj/+eHXr1q3WxQntwknnCgAIRs89AABokW6//XYZYzR58uQGJfbV7d+/XxMnTpQkjRo1Sueff34UatgyzJs3T59++qlKS0ubuyoAgGZEcg8AAFqMF154QWvXrtVnn32m9evXq2PHjpoxY0ajj3v48GH/MPeePXvaKrl//fXX9dprrzV3NQAAzYzkHgAAtBj/93//p6VLlyojI0PnnHOOHnroIbVp06bBx+vevbvsPgPx1Vdfbe4qAABaAObcAwAAAAAQ53jOPQAAAAAAcY7kHgAAAACAOEdyDwAAAABAnCO5BwAAAAAgzpHcAwAAAAAQ50juAQAAAACIcyT3AAAAAADEOZJ7AAAAAADi3P8D5t/MfZn8I2sAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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7du3r8G+f//73wWg9rLa65UymUyiXbt2AoAYOXJkg/VTpkyx9m4cOXLE5jGys7OtvRuPPPJIg/WWHjwAol27diInJ8dufc1mszh48KDd9UII8cQTTwgAQlEUceDAgQbrP/74Y+v5JkyYIEwmU4NtXnrppTo9HrZ6+B955BEBQLRq1UpkZmbaLMuxY8dE27ZtBQAxZcqURstty913320tw+bNm53e357S0lJx+vRpu+vNZrOYMWOGACDCw8PFuXPnGmzTVA//yZMnRVlZmd1znDt3TvTp00cAEFdddZXNbR588EHrOWbNmiXMZrPN7SorKxtkuKny1dZUT/XNN99sXf/CCy/YPU5JSYkoLCxs9Fy2WHoJAYiIiAixZ8+eRre3levali5d2mhufvnlF+tImQEDBtgcDfPee+/Z7fWzaOp1O3r0qKiqqrJbzhMnToj27dsLQB1NYkvt74ekpCTrKKbavv32W2uP8Ny5cxusP336tAgLCxOAOuKmsR7u48ePN1g2ZMgQAaijJvLy8mzu9+WXX1pf07ffftvu8e157bXXrPXctWuX3e0uu+wyAUB069atzvJ3333XoR788vJyUV5e7nT5hLjQw5+cnCx+/fVXu39q/1tQ+3MIQDz22GN2j//1119bt/vvf/9rc5uKigrrqKqkpKQGveKvv/669Rh//etfbR7jzjvvrFMmd/Xw5+XliaioKAFA3HnnnXZHS1n+LdHpdOL333+vs67+iKW//OUvNr8Ha/9bkZ2d3WD9q6++al1/8803i/Pnz9ssi8lkavAZe/zxx63lO3HihM39zp49K4KCggQAcf/999vchkh2bPATUbNYGkShoaGiuLi4zrqCggLr8M5//vOfDfbNysqy/gfA1lB9IeoO/X/vvffqrDt69Kh1aOlnn33WaDnnz59vbdDXV/s/9CtWrGiqyk2qqamxDvt96aWXGqwfNWqU9TXLzc21eQyz2SwGDBhgt8FfUlJi/Y/cf/7zn0bLs3jxYgFABAUFidLSUqfqMn78eGsZfv75Z7vbGY1Gu//5tncrRVMKCgqs7++6desarHemQW1P7Ysv+fn5ddYVFRVZG2kDBw4UNTU1Th3bVQ3+33//3dqYHD9+vFNlcFTtBv/TTz/tkmNabj+YPXt2g3V/+9vfrOezd7FKCCFGjx7doga/I1555RUBQBgMBpsNmdrfD59++qnd41hu0enfv3+DdQ8//LD1GB9//LFT5duxY4d1319++aXRbSdPniwAiCFDhjh1DiHUBpO9ofoWhw4dspZlwYIFddY9++yzAoCIjo52+tyOqt3wbOxP7SH/tT+H3bp1a/RzbGnIT5w4sdFy7N+/33rMr7/+us66nj17CgCiTZs2di84lpSUiLi4OLc3+J9++mkBQLRv395uA1sI9fYay4Wv+hfFazf427Zta/c4v//+u3W7+rfxmUwm0aFDBwFAdOjQodHb3Ww5evSo9TvwmWeesbnNyy+/7NC/VUQy46R9ROS0mpoa63D7MWPGwGAw1FkfExNjnTjn/fffbzCR3YABA3DJJZcAuDBsvz7L8tDQUNx888111m3cuBEmkwlhYWEYPXp0o2W9+uqrAQCnT5+2O0lXcHAwbrnllkaPU5/ZbMbp06fxxx9/YO/evdi7dy9+++0363Dtn3/+uc72NTU11mHyo0aNQlxcnM3jKoqCO+64w+5509PTUVxcDABNPvbQUvfq6mpkZWU5VrH/qT2hYnh4uN3ttmzZgt69e9v8M3LkyCbPU11djZMnT+K3336zvo6nT59G69atATR8HZujrKwMx44dw759+6znqD3suf45tm7dap2Ib+7cuQgICGhxGZpj48aN1ltJHnzwQbefr/YwbUcIIfDnn3/iwIED1td179691tt7bL13lknCevfujYEDB9o9tuWWCFcxGo04evRonQyEhYXVWWdPq1atcOONN9pdb6nHkSNHGqz7/PPPAQCdO3d2eqjxp59+CkC97aF3796Nbmv5rO/atcvpCfzi4+Nx3XXXAYDdiUdrf09PmTKlzjrLLR9FRUXWR3j6mltvvdXu59hoNFpvP2nqO7VHjx6IjY0FgDrD18+cOWOdCHTy5MnWbNUXERGByZMnO1t8p1myc9NNN0Gv19vdLjAwEFdccQUA2ByObzFp0iS7x7FMbgg0/Azs2bPHOqHfX/7yF+t2jurYsSOuvfZaALA7ga1lOP/AgQPRp08fp45PJAvew09ETvvqq69w9uxZABdm5a9v6tSp+Pjjj3Hy5Els27YN11xzTZ31qampePzxx7Fz504cOnSoziPcKisrsWHDBgDA2LFjERkZWWffzMxMAOp91oGBjn+N/fnnn7jooosaLO/atStCQkKa3F8Igffffx/vvvsuMjIyGn0C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B4A6Qdi9995rszGycOFCuz2kgDosevbs2QCAH374AQ8++GCjQz/Pnj1rvR3BWZMnT7ZOhLRr1y5cd911TU6AVl5ebreR26VLF+t7+t5779n8z+xnn32G119/vVnlBWDtQQbsP8bp4YcfbvI1trxXWVlZeOCBB+z+x7u6urrBpF+1J6c6fPiwo0VvoFu3btZ/Uz7++GO8+OKLdrctKytr9m0QjrK8tp999pnN4fCHDx/GrFmzGj3GPffcY83AX//6V5sXD95//3188cUXLS5neXm5zcaVyWTC3XffjdOnTzf7HI6aPXu29eLRPffcY51R3BbL48ssRo4caX1awYsvvthkQ/HXX3/FZ5991qLyWr6PKysrsXr1aqxfvx4AMG7cOLuPVPvqq68avchTXFyMnTt3ArA/j4q3PfbYYwDU244mTZrU6IjIyspKvPHGGw0ugN53330A1NnuH3roIZv7Pvjgg01OEmi5ner06dM2/90qKSnBXXfd1egx7r//fuv7NXPmzDojn2zZuHFjoxcQmkun0+Ef//gHADXf06ZNsztRq+VRt/bceuutiIyMhBACU6ZMgdlshqIomDlzpsvLTaQ5glwOgPjoo4/qLLv77rvFkCFDxI4dO8ShQ4fEiy++KPR6vThw4IBLznnw4EEBQPz6668N1m3btk0AEEVFRS45F8nr4osvFgBEfHy8MJlMDu1jMplE27ZtBQBx6aWXNlhfWloqwsPDBQDRqlUrAUAAEHv37m30uAUFBaJz587W7a+++mrx3//+V/z4448iOztbfPPNN+Kll14S1157rdDpdGLixIkNjjFs2DABQAwbNqzJesyaNct6ruTkZLF69Wqxa9cusXnzZvH3v/9dhISEiNjYWNGtW7dGjzly5Ejrca688kqxZs0akZWVJTZt2iSmTp0qAIjBgwdbt1m+fHmDY5w/f15cdtll1m369u0rXn/9dfHdd9+J3bt3i61bt4r//Oc/Yty4cSI4OFgMHDiwyfrZU1ZWJm688UbruYKDg8WUKVPEsmXLRHp6utizZ4/48ccfxZo1a8T9998v4uPjrdv26NGjwfFqH+vaa68V69evF5mZmeKLL74Qd911lwgICBBdu3YVcXFxAoCYPn16g2NYvtMAiG3bttVZV1paai1DQECAuOeee8SmTZtEZmamSEtLE9dcc431tbccY9myZTbr3bt3b+s2AwcOFG+//bb48ccfRVZWlvjkk0/EvHnzRPv27W3u36FDBwFAdOrUSXzyySfi999/FwcPHhQHDx4URqPRut2yZcus5zh69GiD4/z555+iXbt21m1GjBghVqxYIXbu3Cl27dolPvzwQ/G3v/1NxMTENHgtHDF9+nQBQCQlJTW57YsvvmgtR7du3cS7774rMjIyRHp6unjyySdFVFSUCAkJEQMGDGj0mLNnz7Ye55JLLhHLli0TmZmZYsuWLeLee+8VOp1OJCcnW7d58sknGxyjsdftxIkTQq/XCwAiJCRE/POf/xSbN28Wu3btEsuXLxcDBw5skAFbr52j3w9PPvmk9Ti2rFixwro+NDRUzJ07V3z55Zdi9+7d4ttvvxVLliwRo0ePFp07d26w76FDh0RMTIx1/zFjxohVq1aJjIwM6+fm2WefFZdffrkAIB566KFGy+qITp06Nfg+/vzzz+1uP336dBEUFCRuuOEG8corr4jNmzeL7OxskZ6eLt544w3Ro0cP63EWLVrUrDJZ9nfku9qise8JW+6//37r9gkJCeKpp54SmzdvFrt37xbfffedWL58ubjrrrtEdHS0ACBKSkrq7F9dXS369+9vPcaoUaPExx9/LLKyssTHH39s/e6vnW1b5crNzRUGg8Ga3wULFoiffvpJZGRkiMWLF4suXbqIkJAQ67nsfc7Wr18vFEWxHufee+8Vn3zyicjKyhI//fSTWLdunZg/f77139HPPvuszv5Hjx5t9DuytqSkJLvf1yaTSVx33XV1vjteeeUV8d1334ns7GzxxRdfiCeeeEJ07drV5me9tr/85S/W4wAQ11xzTaPbE5GKDX43qN/gz8nJEQEBAeLUqVN1trvmmmvEww8/3OLzmUwmceONN4orr7zS5no2+MkVvvvuO+s/svfcc49T+/7tb3+z7puZmdlgfWpqap1/xPv27evQcc+cOSOGDh1aZ197f2bOnNlgf2ca/OfOnRP9+vWze/yYmBiRnp7e5DGLiorqNOjr/+nfv7/IzMy0/p6WlmbzOEajUUyYMMGhug8fPtyh19Mek8kknnnmGREVFeXQ+UJCQsR9990n8vLyGhzr+PHj4qKLLrK770UXXST27dvX6H8gm/qP/KZNm0RISIjdc6SkpIi9e/c2+Z/ZvLw8cfXVVzdZX1v7L1682KHtm2rwCyHE4cOHRa9evZosh7sb/FVVVXUuWNX/ExoaKtauXdvkMauqqhrNbqdOncThw4etvzvb4BdCiKVLlwqdTmf3HLfeeqvYvHlzo6+dqxr8QgixfPlyERoa2uj7Z+/1+uOPPxx6/wGIBQsWNFpWRzz66KN1jhkbGyuqq6vtbm95v5v6c++99zp8obg+yzHc2eA3m81iwYIFIjAwsMm6hIeHi/Ly8gbHOHXqlOjevbvd/UaOHCm++uqrJsu1du1aERAQYPdz9uGHHzr02f3000/rXDCy90en04mtW7fW2ddVDX4h1AuokyZNarIcTTX4MzIy6mz//vvvN7o9Eak4pN8Dfv31V5hMJnTr1g0RERHWP+np6dbhnr///jsURWn0z7/+9S+bx581axb27t1rnUmXyB1qT7pnuS/fUbW3tzV5X/3JoBydHCohIQE7duzA559/jtTUVHTu3BlhYWEICgpCXFwchgwZgoceegjp6ektuicYAKKiovD999/j//2//4fevXsjJCQEERER6NGjB+bNm4eff/7Zeo9+Y1q1aoXvvvsOixYtwsCBAxEREYHIyEj069cPzz//PH744Yc6Tx2IioqyeZzIyEisX78e3377Le6++250794dkZGRCAwMRExMDAYNGoRZs2bhiy++wDfffNOiuut0Ojz66KM4duwYFi9ejAkTJlgfcRYYGIjWrVujZ8+eSE1NxVtvvYUzZ85g8eLFdWZotkhMTER2djb+8Y9/oFu3btDr9YiKikLfvn3x5JNPYs+ePejZs2eLynv99dcjMzMTU6dORbt27ax5GDZsGN5++21s2bKlziMi7YmNjUV6ejo2bNiASZMmoUOHDtDr9QgJCUHnzp1xyy234P3338ftt9/eYN/77rsP69evx8iRIxEfH2+dnLI5OnfujD179mD58uW48cYb0bZtWwQFBSE0NBTdunXDtGnT8Mknn2Do0KHNPocjgoKCsHHjRrz22mtITk5GWFgYQkND0aVLF9x7773Izs623mrT1HHWr1+PlStXYujQoYiKikJYWBh69OiBRx55BFlZWejcuXOLyjpz5kx8++23GD9+POLi4hAUFIS2bdti1KhRWLNmDdLS0tz+dI/apk+fjsOHD+PRRx/FwIED0apVKwQEBCA6OhqXX345HnnkEWzatMnmvt26dcOePXuwevVqTJw4ERdddBFCQ0MR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p1OrV6/WjBkz9OWXX2rNmjWKjnb9k4n8I5ItWLBA+/bt01NPPSWJ737Yz5mfAcn63/8U/LClHj16qEePHp7/7tevnwYMGKALL7xQjzzyiFavXq3S0lJJrumgZ2rWrJnn54AV1JV39zlxcXGe32s7D4g0zz77bLX/vv3223Xuuefq0Ucf1RtvvOFZjIn8I1Jt375d9957ry677DINHz5cEt/9sBdvnwHJ+t//TOkH/uecc87RzTffrI8++kgVFRWKj4+XJJWVldU49+TJk56fA1ZQV96rnhMfH+/XeUCk++1vfyuHw6EPP/zQc4z8IxIdPHhQN9xwg5KTk/XGG28oKipKEt/9sA9fnwFfrPT9T8EPVJGdna3y8nIdP37cMz3HPd2tqgMHDqhNmzaNfXlAyNSV95SUFE+vdlZWlg4ePCjTNGucJ4nPBiwjPj5eqampOnr0qOcY+UekKSwsVJ8+fXTs2DGtXr26Wkb57ocd1PYZ8MVK3/8U/EAV3333nZo1a6bExESdf/75io6OrraQnySVl5friy++ULdu3ZrmIoEQaNu2rdLT02vkXZLWr19fLe/dunXTiRMnaqxwu27dOs/PASsoLi7W4cOHlZ6e7jlG/hFJTp48qZtuukk7duzQu+++q86dO1f7Od/9sLq6PgO+WOn7n4IftpSfn1/j2Jdffql33nlH1113nRwOh5KTk3XNNddo/vz5Ki4u9pw3b948lZSUaODAgY15yUDI9e/fX++++6727NnjOfZ///d/2rFjR7W833zzzYqJidGMGTM8x0zT1F//+le1bdu22voYQCQ4efJkte95t6efflqmaap3796eY+QfkaKiokKDBw/W2rVrtWzZMl122WVez+O7H1blz2fADt//LNoHWxo8eLDi4+PVo0cPZWRkaOvWrZo1a5YSEhL03HPPec6bMGGCevTooauuukr33HOP9u7dq8mTJ+u6666r9gUAhLtp06bp2LFjnhVkV6xYob1790qS7r//fiUnJ2vcuHFatmyZevXqpV//+tcqKSnRn/70J11wwQW68847Pc/Vrl07/eY3v9Gf/vQnnTp1Srm5uXr77bf1ySefaMGCBXXeFwc0trryX1BQoIsuukg/+9nPdN5550mS3n//fa1cuVK9e/fWzTff7Hku8o9I8cADD+idd97RTTfdpKNHj2r+/PnVfj5kyBBJ4rsfluXPZ+DgwYPW//43ARuaMmWK2b17dzMlJcWMjo42s7KyzCFDhpjffPNNjXM/+eQTs0ePHmazZs3M9PR089577zWLioqa4KqB+jvrrLNMSV5/7dq1y3Pef/7zH/O6664zExISzJYtW5o///nPzYMHD9Z4voqKCvOZZ54xzzrrLDM2Ntbs0qWLOX/+/EZsEeC/uvJfUFBgDhkyxDznnHPMhIQEMy4uzuzSpYv5zDPPmOXl5TWej/wjElx11VU+c39mCcB3P6zIn8+AHb7/DdM8Y9UBAAAAAAAQ8biHHwAAAAAAC6LgBwAAAADAgij4AQAAAACwIAp+AAAAAAAsiIIfAAAAAAALouAHAAAAAMCCKPgBAAAAALAgCn4AAAAAACyIgh8AAAAAAAui4AcAoIoOHTrIMIxaf7344otNfZlogN27d9d4T//4xz9WO2fNmjXVfv7555/X+pxdunTxnHvXXXf5fL3du3fX+jzu89asWVOfpnn07t272vV36NChQc8HAIhM0U19AQAAhKPLL79c55xzjtefde7cuZGvBqHQvHlzDRgwQJLUtWvXWs997bXX9Je//MXrzz777DNt3bo16NfXENdee61at26tkpISvfnmm019OQCAJkLBDwCAF3fddZdGjBjR1JeBEEpLS9Ps2bNrPad9+/Y6efKkFi5cqEmTJikuLq7GOa+99pokKTc3Vxs2bAjFpQbsgQcekOSaXUDBDwD2xZR+AAAAH2JiYjRkyBAdPXpUb7/9do2fnzhxQosXL1bbtm11/fXXN/4FAgBQCwp+AADqyX2//+7du7V8+XJdffXVSklJqXEPdkFBgcaPH69u3bqpRYsWSkhI0AUXXKA//vGPOnHihNfnPn36tF588UVdcMEFatasmdLT09W/f399/fXXmj17tgzDqDED4YknnpBhGHriiSe8Pqf7vvSf/OQnXn++f/9+/e53v1OnTp2UkJCgFi1aKDc3V9OmTdPp06drnD9ixAgZhqHZs2dr165dGjp0qFq3bq24uDj98Ic/1GOPPaaysjKff3+bNm3S8OHDdfbZZ6tZs2ZKSUlR165d9dBDD+n777+XJL3++usyDKPWYnr//v2KiYlRfHy8jhw54vO8+vrFL34hqXIkv6ply5apuLhYw4YNU1RUVNBfW5Ln/a7rV13rAwAA7Icp/QAANNDkyZM1bdo05eTkqHfv3tq/f7+n+Nu6dat69+6tPXv2KCsrS1dccYViYmK0fv16Pf7443rzzTe1Zs0aJScne57P6XRq4MCBevvttxUbG6uf/OQnatWqldatW6fu3bt7CtBg+vjjj3XLLbeooKBAHTp00LXXXquysjKtX79e999/v1asWKF3331XMTExNR77xRdf6Ne//rVatWqlq666SkePHtWnn36qCRMmaMuWLXrrrbdqPOZPf/qTHn74YTmdTp177rm6+eabVVpaqp07d2rSpEnq0qWLRowYoTvuuEO///3v9cEHH2jHjh0699xzazzXSy+9pNOnT2vo0KFKTU0N+t9Nly5d1L17d3344Yfas2ePsrOzPT979dVXJUl33nmnFixYEPTXlqRzzjlHw4cP9/qzffv26cMPP5SkkHU4AAAiFwU/AAANNHPmTC1fvlz9+vWrdry0tFT9+vXTnj179Nhjj+nxxx9XbGysJNdU8LvuukuLFi3Sb3/722qjxzNnztTbb7+tzMxMffTRR+rUqZMk16j/mDFjNGPGjKBe/8GDB3Xbbbfp2LFjmjFjhkaNGiWHwzUJ8MiRIxo0aJD+/ve/69lnn9Uf/vCHGo+fMmWKHn30UT355JOeovM///mPLr30Ur399ttau3atLrvsMs/577zzjsaOHatmzZppzpw5GjRoULXn27p1qwzDkCTFxcXpnnvu0YQJEzR9+nRNmTKl2rmnTp3SrFmzJEn33Xdf8P5SzjBy5EitX79es2fP1uOPPy5J+uabb/TJJ5+oZ8+e6tixY8he+4orrtAVV1xR4/ixY8c8xx988MFqHREAAEhM6QcAwKs777zT67Rpb9Phhw8fXqPYl6Q5c+bo22+/1Y033qinn37aU+xLUkJCgmbNmqWMjAzNmzdPBQUFnp+5t/174oknPMW+JEVHR+uFF15Q69atg9fQ/73ekSNHdO+992r06NGeYl+SUlNTNXfuXMXExGjatGkyTbPG4y+55BI9/fTT1UaYzz//fA0dOlSSPCPQbuPHj5ckTZgwoUaxL7l2Qaja7l/96leKiYnRnDlzdPz48Wrnvvnmmzp48KAuu+wyXXzxxfVovX9uv/12JSQkaPbs2Z6/A3cnTSAzLs4+++xap+X7q7y8XLfeequ2bNmiwYMHa+LEiYE1CABgC4zwAwDgha9t+c4777wax9xbu53pvffekyQNHjzY688TExOVk5OjlStXasOGDbruuuu0b98+7dy5U5I0ZMiQGo9p1qyZBg0apKlTp/rdlrrUdZ1t27ZVx44dtXXrVn3zzTc1ptXfeOONXotVd9G+b98+z7GDBw/qiy++kMPh0MiRI/26vjZt2mjAgAFatGiR5s2bp1/+8peen02fPl1SaEf3JSkpKUn9+/fXvHnztGbNGvXs2VNz585VixYtNHDgQL+fp3///kpMTPT58zlz5tT5HKZpasSIEZ7rmDNnTkCdBQAA+6DgBwDAi0C25evQoYPX4999950kaejQoZ7Rbl/y8/MlSXv37pXk2jLOV2F49tln+3Vd/nJf55VXXlnnufn5+TUK/vbt23s9NykpSZJ08uRJz7H//ve/kqSsrKxq6xbUZcyYMVq0aJGmT5/uKfi/+uor/etf/1JmZqbPTpdg+sUvfqF58+bptdde04kTJ7R//37dddddSkhI8Ps5Jk2a5DMvkn8F/yOPPKJFixapc+fOevvtt71uFQgAgETBDwBAg8XHx3s97nQ6JUm9e/dWZmZmrc9x1llnBf26fF2Pr+MDBgxQ8+bNa30Ob4viVb0FIFQuvfRSde/eXevXr9c///lPXXXVVZ7R/Xvuuafa7RKhctVVV+mHP/yh5zYCKbDp/MEwc+ZMPf/888rKytLKlSvVqlWrRn19AEBkoeAHACBEsrOztX37do0cOdLvEei2bdtKkg4fPqySkhKvo/y+tl9zF73FxcVef+7e6s7bdX7zzTf6/e9/r5ycHL+us77cswEOHDigwsLCgEf5hwwZomnTpqlr165asGCBoqOjq03xDyX3VoiPP/64PvzwQ3Xq1KnaYoShtmLFCt1///1q0aKF3nvvvUbpJAIARDYW7QMAIET69OkjSVq6dKnfj2nXrp1+8IMfSJIWLlxY4+dlZWVatmyZ18e6Owu2bdvm9efue/WDcZ311bp1a3Xt2lVOp9Prvva1GTRokLKysvT2229rwoQJOn78uG699Va1adMmRFdb04gRI5Senq7U1FSNGjWq0V53w4YNuv3222UYhpYtW6aLLrqo0V4bABC5KPgBAAiRe+65R2eddZaWLVum3//+915H3g8ePKiXX3652rHf/OY3klyr9G/fvt1zvKKiQg8++KD279/v9fWuvvpqORwOvf/++/rnP//pOW6apqZOnao333zT6+MeeughtWzZUi+88IImT56s8vLyGufs2rVL8+fPr7PN/nCv0v/oo496vaatW7d67bSIiYnR6NGjdfr0aU2aNElS6BfrO1O7du2Ul5enw4cP69e//nWjvOZ3332nG2+8USdOnNCsWbN0/fXXN8rrAgAiH1P6AQAIkebNm+u9997TjTfeqIkTJ2rWrFm68MIL1a5dO504cUI7duzQtm3blJGRobvvvtvzuHvvvVcffPCBVqxYoa5du6pXr15q1aqV1q1bpwMHDmj06NGaOXNmjdfLzs7W/fffrylTpuinP/2prrzySqWkpOjLL7/Uf//7Xz388MN67rnnajyuXbt2Wr58ufr3768HH3xQEydO1Pnnn6+srCwVFhZq27Zt+vbbb/XjH//Y684Bgbr11ls1YcIEPfbYYxowYIDOO+88de3aVaWlpdq5c6e2bt2q119/vdrWfG6jRo3ShAkTVFZWpgsvvFA9e/Zs8PWEuwkTJigvL0/p6en65z//Wa0zp6pJkyYpLS2tka8OABDOKPgBAAihLl266KuvvtJf//pXvfXWW/rqq6+0du1apaWlqV27dnrwwQd16623VnuMw+HQ3/72N02dOlWvvvqq1qxZo8TERF1xxRV666239Pnnn3st+CXpz3/+s9q3b69XXnlF//73v5WYmKjLL79cS5cuVVFRkdeCX5J69uypLVu2aNq0aXrvvfe0YcMGlZWVKSMjQ+3bt9eQIUPUv3//oP29jBs3TldffbWmTp2qjz/+WH/729/UokULZWdna+zYsbr66qu9Pi4jI0PdunXTunXrdO+99wbtesJZRUWFJNcOCbWt4v/EE09Q8AMAqjFM0zSb+iIAAID/Zs+erTvvvFPDhw/X7Nmzm/pyGtWOHTt03nnnKTk5Wfv27QtoSzy33bt36+yzz9ZZZ53lcwFEq7BTWwEANTHCDwAAIsYf/vAHmaap0aNH16vYr+rw4cMaMWKEJKl///666aabgnCF4WHy5Mn6+uuvVVJS0tSXAgBoQhT8AAAgrL3zzjtavny5tmzZonXr1ql169YaO3Zsg5/3+PHjniny55xzjqUK/g8++EDvv/9+U18GAKCJUfADAICwtnnzZr322mtq0aKFrrnmGr3wwgtq2bJlvZ+vQ4cOsvodjatXr27qSwAAhAHu4QcAAAAAwIIcTX0BAAAAAAAg+Cj4AQAAAACwIAp+AAAAAAAsiIIfAAAAAAALouAHAAAAAMCCKPgBAAAAALAgCn4AAAAAACyIgh8AAAAAAAv6/8YiqlkbyB2xAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/0AAALPCAYAAAAw+qByAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAADOxUlEQVR4nOzdeVxU5f4H8M8ZkBFREATEBVHLNc0NraxcqMwl0zStpESt23LVbre69Ws1W2+2WmbLTUVBxdI2M61cq5uhgJWmViaiJgkCMoAIwjy/P849I8vMMAOznufzfr14AeecOed5Zr7PzDznec73KEIIASIiIiIiIiLSHYO3C0BERERERERE7sFOPxEREREREZFOsdNPREREREREpFPs9BMRERERERHpFDv9RERERERERDrFTj8RERERERGRTrHTT0RERERERKRT7PQTERERERER6RQ7/UREREREREQ6xU4/EZGXbd++HYqiQFEUbN++3dvFaZLk5GRLXY4cOeLt4pAOyRxjWr2feuopr5WhvLwc8+fPR79+/RASEmIp03333QfAM6/PjBkzoCgKOnfu3KT9dO7cGYqiYMaMGS4pFxGRr2Knn8iKHTt2WL60KIqC77//3ttFIjc4ffo03nnnHUyZMgXdunVDeHg4mjVrhjZt2qBv37647bbbsGzZMpw+fdrbRSXSBa2T5ehP69atvV1kquHcuXO4+uqr8dRTT+Hnn3/GmTNnvF0ksuOpp55yqr3JdhKNSCbs9BNZsXz58lr/r1ixwkslIXcwm8148cUX0aVLF9xzzz1Yu3YtDh06hNOnT6OqqgqFhYXYt28fUlNTMWvWLMTExGDu3Lk4deqUt4vuFXqaiUDkbnqeifDhhx9aToLPmDED27Ztw969e7F371783//9n5dLR0REtgR6uwBEvqa8vBxr164FALRs2RKlpaX44IMPsHDhQhiNRi+XjpqqvLwct9xyCz799FMAQLNmzTBp0iRcc8016Nq1K1q3bo2ioiLk5ORgy5Yt+Pzzz1FcXIxFixbh8ssvx8033+zlGvi2GTNmcKosNah9+/b48ssvG9wuICDAA6XxH0IIrx5/8+bNAICYmBi8//77Vl8fvgf4pqVLl2Lw4MF2t+nQoYOHSkNEnsZOP1EdH3/8MUpKSgAAb7zxBmbNmoWioiKsX78eN954o5dLR0111113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PXoUt956K1q0aIEnnngCV155JQICArB79260bNkSACwjdgkJCRgzZgz69u2LqKgolJSU4PDhw/jPf/6DnTt34uuvv8bs2bPr3dFAc/PNN+OHH34AAFx++eWYO3cuLrzwQuTn5yM1NRUrV67E3Xffbfd5r6iowNVXX42srCwEBARg2rRpGDt2LLp06YJz587hm2++wauvvoq8vDyMHTsWe/bsQVxcnN191qWNUAHA6NGjnXqsPdXV1QgKCsK1116La665Br1790ZERAQKCwvx22+/4a233sIvv/yC1NRUdO3aFfPnz3f6GFVVVQgPD8eECRMwbNgwy6yMEydOICsrC2+88QZOnTqFOXPmoGfPnkhISKi3jzNnzmDkyJHYu3cvAPXyhjvvvBN9+vSB0WjEsWPH8M0332DNmjWWx3To0AF79+7F7t27MWvWLADWk0F17NjR4bqcPHkSl19+OU6cOAFAjb+kpCT07NkTiqIgOzsbW7duxYcffuj083Ty5EnMnDkTlZWViI6Oxpw5c3DppZciMjIS5eXlOHToEHbs2IFPPvnE6uMffPBBy3F79OiBhx56CBdffDGKi4vx4Ycf4j//+Q9uuukmp8vVGFVVVejatStuuOEGDBkyBJ06dUJgYCBycnKwefNmLF26FAUFBbjhhhuwb98+REdH29zX7t27kZqaitjYWDz44IOIj49HVVUVvv32W8s2//3vfzFmzBicO3cObdu2xdy5c9GvXz/Le9uaNWuQmpqKL774AklJSVi3bp0nnoZGccV7aWPidPDgwdi7dy8+/fRTPP744wCAL7/8Eu3bt6+1b2uXFJWWlmLy5Mk4e/YsHnvsMVxzzTVo0aIF9u7di3bt2jlc9zvvvBNLly4FALRr1w5z5szB0KFDERYWhvz8fOzatcuSqNZR2vsAoOY5ycjIQHx8PJYtW2bZJigoyOH9ufKzzpbXX38dr732GgA1aeQjjzyCIUOG4OzZs9iwYQNef/11TJkypUm3HExMTERqairKysrw6aefYtq0aVa3q6qqssTJtddei8jISMu6p556ytIOr7vuOiQmJlpGlfPy8rBnzx58/vnnVmfleIIj3yUOHTqE4cOHo7i4GKGhoZg9ezaGDBmC2NhYFBQU4LPPPsO7776L3bt3Y8KECfj222/rXR7y8ccf4/777wcAhIWF4eGHH7aM5m/d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DGLy5Mn19jF8+HABQAwfPrzBesyePdtyrPj4eLFq1Sqxe/dusXnzZnH//feL5s2bi8jISNG9e3e7+xw1apRlP5dffrlYs2aNyMzMFJs2bRK33nqrACCGDBli2SY5ObnePs6ePSsuueQSyzb9+vUTixYtEt99953Ys2eP2Lp1q3jzzTfFhAkTRFBQkBg0aFCD9bOlrKxMjBs3znKsoKAgMW3aNLFs2TKxY8cO8eOPP4qdO3eKNWvWiH/84x8iOjrasm2vXr3q7a/mvq6++mqxbt06kZGRIb744gtx++23i4CAANGtWzcRFRUlAIikpKR6+9i2bZtlH9u2bau1rrS01FKGgIAAcdddd4lNmzaJjIwMkZaWJq666irLc6/tY9myZVbr3bdvX8s2gwYNEu+9957YuXOnyMzMFJ9++ql48MEHRYcOHaw+vmPHjgKA6NKli/j000/FwYMHxe+//y5+//13YTKZLNstW7bMcozs7Ox6+/nrr79E+/btLdskJCSIFStWiF27dondu3eLDz/8UPz9738XERER9Z6LhiQlJYlmzZqJsWPHitdff11s3rxZZGVliR07doi33npL9OrVy3Lc1157rd7j58yZY1nfs2dPsWzZMpGRkSG2bNki7r77bmEwGER8fLxlm3nz5lktx2WXXWbZJikpSWzdulVkZmaKtLQ0kZCQIACIoUOH2nyedu3aZVnXunVr8dxzz4kdO3aI9PR0sXjxYtGtW7d6r7m15zouLs5mzNW1c+dOYTQaLXGWmJgoPvzwQ5GRkSF27dolPv30U/Hkk09aYujNN99s+AWxQitT+/btxd69ex36KS8vr7WPhmLMFe+lTYlTk8kkmjdvLgCIgQMHiq+++kr8+uuvlvZy5swZy7ZJSUkCgIiLi3Po+Wso9m6//XbLNu3btxfPP/+82LFjh9izZ4/4+uuvxQsvvCD69+/vUExY48hnjCden4aet5dfftmy/w4dOohFixaJXbt2iW+++Ub83//9nzAajSIuLs7u+7KzkpOTa7Vb7bPVluzsbAFAdO7cWdx///1izZo14ocffhAZGRli/fr14s477xQGg8FSh5KSEqfLNG/ePJufLfY4813i0KFDIiIiwnKc8ePHi9TUVJGenm75LHzuuefEpZdeKgCIBx54oN4+1q5dW+u5e+GFF8TOnTvF999/L55//nkRFhYm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pwk2/p3++d822g0AWoMpU6YoNze3zrFevXr5/v7+++/rJz/5iXr37q3HHntMO3fu1OzZs/XZZ5/p1VdfbenmAiHbv3+/7rvvPmVnZ6t///7asGGD3/N27typoUOHKi0tTTNnztShQ4c0e/ZsffTRR9qyZYvi4+N9595111166KGHdMMNNyg3N1dr1qzRz372M1mWpWuvvbaFrgxoWrDxL3m2aXryySfrHEtLS2twHvGPWPHwww9r48aNuvrqq9WvXz/t3btXc+fO1TnnnKN33nlHZ555piQ+/+FMwca/5PDPfxsw2Pr1621J9qpVqwKed+mll9qZmZl2WVmZ79hf/vIXW5L92muvRbqZQLMdPXrU3rNnj23btr1161Zbkr1o0aIG5+Xl5dlJSUn2119/7Tu2bt06W5L95z//2Xds586ddlxcnD158mTfMbfbbZ933nl2z5497ePHj0fuYoAQBRv/48ePt9u1a9fk6xH/iCUbN260q6qq6hzbvn27nZCQYP/85z/3HePzH04UbPw7/fOf5f3A9yoqKnT8+PEGx8vLy7Vu3TqNGTNGqampvuPjxo1T+/bt9cwzz7RkM4ETkpCQoG7dujV53nPPPafLLrtM2dnZvmMXXXSRTj/99DqxvmbNGn333Xf65S9/6TtmWZby8vK0c+dObdq0KbwXADRDsPHvVV1drfLy8kYfJ/4RSwYPHlxnll6STjvtNPXt21effPKJ7xif/3CiYOPfy6mf/yT9gKTrrrtOqampSkxM1AUXXKB//vOfvsc++ugjHT9+XDk5OXWeEx8frwEDBui9995r6eYCEbFr1y4VFxc3iHVJGjhwYJ1Yf++999SuXTv17t27wXnex4FYVFlZqdTUVKWlpSk9PV2TJ09uUL+F+Eess21b+/btU+fOnSXx+Q+z1I9/Lyd//nNPP4wWHx+vkSNHasSIEercubOKioo0e/ZsnXfeeXr77bd19tlna8+ePZKkzMzMBs/PzMzUW2+91dLNBiKiqVg/ePCgqqqqlJCQoD179qhr166yLKvBeZK0e/fuyDcYCLPMzExNnTpV55xzjtxut9auXasnnnhCH3zwgTZs2KC2bT2/NhH/iHXLly/Xrl27dN9990ni8x9mqR//kvM//0n6YbTBgwdr8ODBvv+/4oorNGrUKPXr10933nmn1q5dqyNHjkjyLA+tLzEx0fc4EOuainXvOQkJCb7/BjoPiDUPPvhgnf+/9tprdfrpp+uuu+7Ss88+6yvQRPwjln366aeaPHmyzj33XI0fP14Sn/8wh7/4l5z/+c/yfqCeXr166corr9T69etVXV2tpKQkSVJVVVWDc48ePep7HIh1TcV67XOSkpKCOg+IdbfddptcLpdef/113zHiH7Fq7969+ulPf6q0tDQ9++yzatOmjSQ+/2GGxuK/MU76/CfpB/zIysrSsWPHdPjwYd9yHe/St9r27Nmj7t27t3TzgIhoKtbT09N9o9uZmZnau3evbNtucJ4k+gUcIykpSZ06ddLBgwd9x4h/xKKysjJdeuml+vbbb7V27do6ccrnP5wuUPw3xkmf/yT9gB9ffPGFEhMT1b59e5155plq27ZtneJ+knTs2DG9//77GjBgQHQaCYRZjx491KVLlwaxLklbtmypE+sDBgxQZWVlg8q3mzdv9j0OOEFFRYX279+vLl26+I4R/4g1R48e1eWXX67t27frpZdeUp8+feo8zuc/nKyp+G+Mkz7/SfphtJKSkgbHPvjgA73wwgu6+OKL5XK5lJaWposuukjLli1TRUWF77ylS5fq0KFDuvrqq1uyyUBEjRw5Ui+99JJ27NjhO/b3v/9d27dvrxPrV155peLi4vTEE0/4jtm2rT/96U/q0aNHnVoZQCw4evRonc94r/vvv1+2bWv48OG+Y8Q/Ykl1dbVGjx6tTZs2adWqVTr33HP9nsfnP5womPg34fOfQn4w2ujRo5WUlKTBgwcrIyNDRUVFWrBggZKTk/XQQw/5zpsxY4YGDx6s888/XzfeeKN27typRx99VBdffHGdDwKgNZs7d66+/fZbX2XZF198UTt37pQk3XzzzUpLS9O0adO0atUqXXDBBbrlllt06NAhPfLIIzrrrLN03XXX+V6rZ8+euvXWW/XII4/ou+++U25urlavXq233npLy5cvb/I+OaClNRX/paWlOvvss/U///M/OuOMMyRJr732ml555RUNHz5cV155pe+1iH/Ekl//+td64YUXdPnll+vgwYNatmxZncfHjBkjSXz+w5GCif+9e/c6//PfBgw2Z84ce+DAgXZ6errdtm1bOzMz0x4zZoz92WefNTj3rbfesgcPHmwnJibaXbp0sSdPnmyXl5dHodXAiTnppJNsSX7/fPnll77zPv74Y/viiy+2k5OT7Q4dOtg///nP7b179zZ4verqanvmzJn2SSedZMfHx9t9+/a1ly1b1oJXBASvqfgvLS21x4wZY/fq1ctOTk62ExIS7L59+9ozZ860jx071uD1iH/EivPPP7/R2K+fCvD5D6cJJv5N+Py3bLteFQIAAAAAAOAI3NMPAAAAAIBDkfQDAAAAAOBQJP0AAAAAADgUST8AAAAAAA5F0g8AAAAAgEOR9AMAAAAA4FAk/QAAAAAAOBRJPwAAAAAADkXSDwAAAACAQ5H0AwDgx8knnyzLsgL+efzxx6PdTDTDV1991eA9feCBB+qcs2HDhjqPv/feewFfs2/fvr5zr7/++kZ/3ldffRXwdbznbdiw4UQuzWf48OF12n/yySc36/UAALGnbbQbAABAa/ajH/1IvXr18vtYnz59Wrg1iIR27dpp1KhRkqT+/fsHPHfhwoX64x//6Pexd955R0VFRWFvX3MMGzZM3bp106FDh/Tcc89FuzkAgCgg6QcAIIDrr79eEyZMiHYzEEGdO3dWQUFBwHOys7N19OhRPf3005o9e7YSEhIanLNw4UJJUm5urrZu3RqJpobs17/+tSTPKgOSfgAwE8v7AQAAmhAXF6cxY8bo4MGDWr16dYPHKysrtWLFCvXo0UOXXHJJyzcQAIBGkPQDANBM3vv/v/rqK61Zs0YXXnih0tPTG9yTXVpaqunTp2vAgAFKSUlRcnKyzjrrLD3wwAOqrKz0+9rHjx/X448/rrPOOkuJiYnq0qWLRo4cqY8++kgFBQWyLKvBSoR7771XlmXp3nvv9fua3vvUf/zjH/t9fPfu3frVr36l3r17Kzk5WSkpKcrNzdXcuXN1/PjxBudPmDBBlmWpoKBAX375pcaOHatu3bopISFBp556qu6++25VVVU1+u/37rvvavz48TrllFOUmJio9PR09e/fX7/5zW/09ddfS5IWLVoky7ICJtS7d+9WXFyckpKSdODAgUbPO1G/+MUvJNXM6Ne2atUqVVRUaNy4cWrTpk3Yf7Yk3/vd1J+m6gUAAMzC8n4AAMLk0Ucf1dy5c5WTk6Phw4dr9+7dvgSwqKhIw4cP144dO5SZmakhQ4YoLi5OW7Zs0T333KPnnntOGzZsUFpamu/13G63rr76aq1evVrx8fH68Y9/rI4dO2rz5s0aOHCgLwkNp3/84x/6r//6L5WWlurkk0/WsGHDVFVVpS1btujmm2/Wiy++qJdeeklxcXENnvv+++/rlltuUceOHXX++efr4MGD2rhxo2bMmKFt27bp+eefb/CcRx55RL/97W/ldrt1+umn68orr9SRI0f0+eefa/bs2erbt68mTJign/3sZ7rjjju0bt06bd++XaeffnqD1/rzn/+s48ePa+zYserUqVPY/2369u2rgQMH6vXXX9eOHTuUlZXle+ypp56SJF133XVavnx52H+2JPXq1Uvjx4/3+9iuXbv0+uuvS1LEBh0AALGJpB8AgDCZP3++1qxZoyuuuKLO8SNHjuiKK67Qjh07dPfdd+uee+5RfHy8JM+y8Ouvv16FhYW67bbb6swiz58/X6tXr1bXrl21fv169e7dW5Jn9n/KlCl64oknwtr+vXv36r//+7/17bff6oknntCkSZPkcnkWBR44cEDXXHON/va3v+nBBx/U7373uwbPnzNnju666y79/ve/9yWeH3/8sX74wx9q9erV2rRpk84991zf+S+88IKmTp2qxMRELV68WNdcc02d1ysqKpJlWZKkhIQE3XjjjZoxY4bmzZunOXPm1Dn3u+++04IFCyRJN910U/j+UeqZOHGitmzZooKCAt1zzz2SpM8++0xvvfWWhg4dqtNOOy1iP3vIkCEaMmRIg+Pffvut7/jtt99eZzACAACW9wMAEMB1113ndwm1v6Xx48ePb5DwS9LixYv173//W5dddpnuv/9+X8IvScnJyVqwYIEyMjK0dOlSlZaW+h7zbgl47733+hJ+SWrbtq0ee+wxdevWLXwX+v3PO3DggCZPnqy8vDxfwi9JnTp10pIlSxQXF6e5c+fKtu0Gz//BD36g+++/v85M85lnnqmxY8dKkm8m2mv69OmSpBkzZjRI+CXP7gi1r/uXv/yl4uLitHjxYh0+fLjOuc8995z27t2rc889V+ecc84JXH1wrr32WiUnJ6ugoMD3b+AdqAll5cUpp5wScIl+sI4dO6arrrpK27Zt0+jRozVr1qzQLggA4HjM9AMAEEBjW/adccYZDY55t32r7+WXX5YkjR492u/j7du3V05Ojl555RVt3bpVF198sXbt2qXPP/9ckjRmzJgGz0lMTNQ111yj/Pz8oK+lKU21s0ePHjrttNNUVFSkzz77rMES+8suu8xvwupN3Hft2uU7tnfvXr3//vtyuVyaOHFiUO3r3r27Ro0apcLCQi1dulT/+7//63ts3rx5kiI7yy9JqampGjlypJYuXaoNGzZo6NChWrJkiVJSUnT11VcH/TojR45U+/btG3188eLFTb6GbduaMGGCrx2LFy8OacAAAGAGkn4AAAIIZcu+k08+2e/xL774QpI0duxY36x3Y0pKSiRJO3fulOTZTq6x5PCUU04Jql3B8rbzvPPOa/LckpKSBkl/dna233NTU1MlSUePHvUd++abbyRJmZmZdeoYNGXKlCkqLCzUvHnzfEn/hx9+qP/7v/9T165dGx14Cadf/OIXWrp0qRYuXKjKykrt3r1b119/vZKTk4N+jdmzZzcaL1JwSf+dd96pwsJC9enTR6tXr/a7jSAAACT9AACESVJSkt/jbrdbkjR8+HB17do14GucdNJJYW9XY+1p7PioUaPUrl27gK/hr1Be7dsBIuWHP/yhBg4cqC1btujNN9/U+eef75vlv/HGG+vcOhEp559/vk499VTfLQVSaEv7w2H+/Pl6+OGHlZmZqVdeeUUdO3Zs0Z8PAIgdJP0AAERYVlaWPv30U02cODHomegePXpIkvbv369Dhw75ne1vbGs2b+JbUVHh93HvNnj+2vnZZ5/pjjvuUE5OTlDtPFHeVQF79uxRWVlZyLP9Y8aM0dy5c9W/f38tX75cbdu2rbPcP5K82yTec889ev3119W7d+86BQoj7cUXX9TNN9+slJQUvfzyyy0yUAQAiF0U8gMAIMIuvfRSSdIzzzwT9HN69uyp//iP/5AkPf300w0er6qq0qpVq/w+1ztg8Mknn/h93HvvfjjaeaK6deum/v37y+12+933PpBrrrlGmZmZWr16tWbMmKHDhw/rqquuUvfu3SPU2oYmTJigLl26qFOnTpo0aVKL/dytW7fq2muvlWVZWrVqlc4+++wW+9kAgNhE0g8AQITdeOONOumkk7Rq1Srdcccdfmfg9+7dq7/85S91jt16662SPNX7P/30U9/x6upq3X777dq9e7ffn3fhhRfK5XLptdde05tvvuk7btu28vPz9dxzz/l93m9+8xt16NBBjz32mB599FEdO3aswTlffvmlli1b1uQ1B8Nbvf+uu+7y26aioiK/AxdxcXHKy8vT8ePHNXv2bEmRL+BXX8+ePVVcXKz9+/frlltuaZGf+cUXX+iyyy5TZWWlFixYoEsuuaRFfi4AILaxvB8AgAhr166dXn75ZV122WWaNWuWFixYoH79+qlnz56qrKzU9u3b9cknnygjI0M33HCD73mTJ0/WunXr9OKLL6p///664IIL1LFjR23evFl79uxRXl6e5s+f3+DnZWVl6eabb9acOXP0k5/8ROedd57S09P1wQcf6JtvvtFvf/tbPfTQQw2e17NnT61Zs0YjR47U7bffrlmzZunMM89UZmamysrK9Mknn+jf//63Bg0a5HdHgVBdddVVmjFjhu6++26NGjVKZ5xxhvr3768jR47o888/V1FRkRYtWlRn2z6vSZMmacaMGaqqqlK/fv00dOjQZrentZsxY4aKi4vVpUsXvfnmm3UGdGqbPXu2Onfu3MKtAwC0ViT9AAC0gL59++rDDz/Un/70Jz3//PP68MMPtWnTJnXu3Fk9e/bU7bffrquuuqrOc1wul/76178qPz9fTz31lDZs2KD27dtryJAhev755/Xee+/5Tfol6Q9/+IOys7P15JNP6u2331b79u31ox/9SM8884zKy8v9Jv2SNHToUG3btk1z587Vyy+/rK1bt6qqqkoZGRnKzs7WmDFjNHLkyLD9u0ybNk0XXnih8vPz9Y9//EN//etflZKSoqysLE2dOlUXXnih3+dlZGRowIAB2rx5syZPnhy29rRm1dXVkjw7JwSq7n/vvfeS9AMAfCzbtu1oNwIAAISuoKBA1113ncaPH6+CgoJoN6dFbd++XWeccYbS0tK0a9eukLbL8/rqq690yimn6KSTTmq0KKJTmHStAIC6mOkHAAAx53e/+51s21ZeXt4JJfy17d+/XxMmTJAkjRw5UpdffnkYWtg6PProo/roo4906NChaDcFABAlJP0AACAmvPDCC1qzZo22bdumzZs3q1u3bpo6dWqzX/fw4cO+5fK9evVyVNK/bt06vfbaa9FuBgAgikj6AQBATPjXv/6lhQsXKiUlRRdddJEee+wxdejQ4YRf7+STT5bT73Jcu3ZttJsAAIgy7ukHAAAAAMChXNFuAAAAAAAAiAySfgAAAAAAHIqkHwAAAAAAhyLpBwAAAADAoUj6AQAAAABwKJJ+AAAAAAAciqQfAAAAAACHIukHAAAAAMCh/h9C3N/VuYmqhgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(12, 8))\n", + "plt.title('Average Galactic Temperature vs Frequency',fontsize=20)\n", + "plt.plot(freqs,avtemp*kB,'-*',color='b')\n", + "plt.grid(ls='--', alpha=0.3)\n", + "plt.xlabel('Frequency [MHz]',fontsize=16)\n", + "plt.ylabel('k$_B$$_{4\\pi}$ [J]',fontsize=16)\n", + "plt.xticks(fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.show()\n", + "\n", + "plt.figure(figsize=(12, 8))\n", + "plt.title('Average Galactic radiance vs Frequency',fontsize=20)\n", + "plt.plot(freqs,avBnu,'-*',color='b')\n", + "plt.grid(ls='--', alpha=0.3)\n", + "plt.xlabel('Frequency [MHz]',fontsize=16)\n", + "plt.ylabel('$_{4\\pi}$ [W$\\cdot$m$^{-2}$$\\cdot$sr$^{-1}$$\\cdot$Hz$^{-1}$]',fontsize=16)\n", + "plt.xticks(fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.show()\n", + "\n", + "plt.figure(figsize=(12, 8))\n", + "plt.title('Average Galactic square Electric field vs Frequency',fontsize=20)\n", + "plt.plot(freqs,avErms2,'-*',color='b')\n", + "plt.grid(ls='--', alpha=0.3)\n", + "plt.xlabel('Frequency [MHz]',fontsize=16)\n", + "plt.ylabel('<|E|$^{2}$$_{rms}$>$_{4\\pi}$ [V/m$\\cdot$Hz$^{-1}$]',fontsize=16)\n", + "plt.xticks(fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "8c6c4d07-bc3c-4462-ac68-cb83109cd49c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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3nnnUVVVZXdJItIAa9asIT09ne3bt9OvXz++++47kpKS7C5LRERERPai5lwOqH379nz++edERkby1Vdfcf311+uTShGHWLduHenp6Wzbto0+ffrw/fffk5KSYndZIiIiIlIHNedByDAMwsLCMAzD7lIAGDZsGG+99RaGYfD000/z2GOP2V2SOECw5bi52bBhA+np6WzZsoWePXvy/fffk5qaandZjqQsi1soy+IGyrG4mZrzIGQYBklJSUG10TnjjDN45JFHALjpppv4+OOPba5Igl0w5ri52LBhA2PGjGHTpk10796dH374gRYtWthdlmMpy+IWyrK4gXIsbqbmPAiZpklhYWHQHT4+YcIErr76akzT5MILL9QM7nJAwZpjt5s3bx7Dhw9n/fr1dO3alR9++IFWrVrZXZajKcviFsqyuIFyLG6m5jwImaZJcXFx0G10DMNg0qRJnHTSSZSWlnLaaaexceNGu8uSIBWsOXazb775hlGjRrFz50769+/P9OnTadOmjd1lOZ6yLG6hLIsbKMfiZmrOpUG8Xi/vvvsu/fv3Z+fOnZxyyink5+fbXZZIs/fKK69wyimnUFRUxNixY5k5c6YacxEREREHUXMuDRYbG8uXX35J69atWbp0KWeffTaVlZV2lyXSLJmmyf/93/9x6aWX4vP5uOiii5gyZQpxcXF2lyYiIiIiDaDmPAgZhkFkZGRQT3TRtm1bvvjiC6Kjo5k6dSpXXXWVDi+SWpyQY6erqqriyiuv5D//+Q8A//znP3nttdcICwuzuTJ3UZbFLZRlcQPlWNxMzXkQMgyD+Pj4oN/oDBo0iHfeeQePx8OLL77Igw8+aHdJEkSckmOnKi4u5o9//CPPP/88Ho+Hp556ivvuu0//3gGgLItbKMviBsqxuJma8yBkmib5+fmO2BN96qmnMmnSJMDaa/f+++/bXJEECyfl2GkyMjIYM2YMX3zxBREREXz00UdcffXVdpflWsqyuIWyLG6gHIubqTkPQqZpUlpa6piNzrXXXssNN9wAwMUXX8yvv/5qc0USDJyWY6dYs2YNI0aM4LfffiM5OZkffviBcePG2V2WqynL4hbKsriBcixupuZcGsUjjzzCaaedRnl5OePGjWPGjBl2lyTiOr/99hsjRoxg7dq1dOrUiV9++YWjjjrK7rJEREREpBGoOZdGERISwltv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+6cJ4erglObcNE2qqqrwer263Ik4lnIsbqEsi1soy9JYSkutPeUPPABbt1rrWrSwZgu/8kqraQ0Uu3O8eTO89pq153zNmtq3de0KRxyxexk4ECIjG/b8mZnW4fTLl8OKFTBrlrWAdb78v/8N114LERGNMBhpMmrO6+CU5lyzqYobKMfiFsqyuIWyLIeruBiefRYeegh27LDWtWlj7dW94oqGN6KHIlhybJrWpHGvvgozZsDq1fvex+u1LtNW3awfeaR16L9hWEcaVDfhezbj2dn7Pk9YGFx/vXU4e1JS4McmjU+ztYuIiIiIyGErKoL//Q8eftjaswvWBGn/+pc1k3l4uL312cEw4JhjrAUgJwfmzIHffrOW2bOtmeDnzbOWZ56x7hcTY11nvaRk/8/dsSP06gU9e1pf//AH699b3E/NuYiIiIiI7KOszJp5/b77du/R7dQJbrsNLrlE19HeU1KSdc32E06wfjZNa+94dbP+229W8149iVxYmDW5W3UDXt2M9+gBUVH2jUPspeY8yFRWwosvQnh4BOPH212NyOHROY3iFsqyuIWyLPXh98Pbb1vnN2/caK3r1s36+U9/gtBQe+tzQo4NAzp0sJZzzrHWVVXBypVWY96pk3XYu8iedM55kHnySeucks6drfNO7N74iYiIiEjz8f331qXE5s+3fm7TBiZOtPaUq5kUOTT17UM1G0iQuewySEszWbcOXn652XxuIi5kmibl5eU0o8//xKWUZXELZVkOZNEiOOkkOO44qzGPjYV774VVq6z3p8HSmCvH4mZqzoNMdDT885/Wxubuu63rR4o4kWma5Obm6o+nOJ6yLG6hLEtdNm+2JnUbOBC+/tpqwq+/HtautSZ8C7bzn5VjcTM150HoyiuhZUsfmzcbPP+83dWIiIiIiNvk51vNd/fu1jW7TRPOPde6pNekSZCaaneFIs2PmvMgFBEBEyZYUznec8+BL7UgIiIiIlJf5eVW892lC9x/vzUj+8iRMGsWvPsudO1qd4UizZea8yB18cWVdOhgsmMHPP203dWIHBpvsJygJnKYlGVxC2W5+aqshOeft2ZdnzDBujRar17w2WcwfToceaTdFdafcixupdnag9jLL1sTcKSkwLp11sQcIiIiIiL15fPBm2/CXXdZ7yfBmoH9P/8JroneRNxMs7U7mGmalJSUcNFFJt26QVYWPPGE3VWJNEx1jpvR53/iUsqyuIWy3Lz4/dZh6n37wvjxVmOelgaPPw5r1sBf/+rMxlw5FjdTcx6ETNOkoKCAkBCT//7XWvfww5CXZ2dVIg1TnWP98RSnU5bFLZTl5sE04dNPYdAgOP98WLECkpLggQesBv2GG6z5jZxKORY3U3Me5M47D/r0sRrzRx+1uxoRERERCUamaV0K7Ygj4IwzrOuWx8VZh7OvXw+33GJdsldEgpea8yAXEgITJ1rfP/aYdYi7iIiIiAhYTfm0aXDssXDSSTBnjtWE//vfsGGDdW65A6ZaEhHUnAclwzAICwvDMAwA/vhH69CkoiJ48EGbixOpp71zLOJUyrI0FZ/PmlHb7w/M8yvL7lJRYU30dsQRMGYM/Pyzdbj6jTdae8rvvhsSE+2usvEpx+Jmmq3dIb78Ek49FSIjrfOFWra0uyIRERGp5vdDYSHk5tZe8vN3LwUFB/5aXFz7OUNC6l48Huur12u9H+jSZd+lTRvrfuI+2dnw7LPw1FOwbZu1LiICrrgCbrsNWrWytz4R2Vd9+1AHztHofqZpUlRURExMTM2ngiefDMOHw6xZcN99MGmSzUWKHERdORZxImW5+Skrg8zMupfs7H0b8OomvLH3ePt81nIgW7fC3Ln7rg8Ph06dajfsnTubdOhQTO/e0YSEKMtOs3y5NdP6669Daam1rlUruOYauPJK69K7zYG2yeJm2nMehPx+PxkZGaSlpeHZ42Pv77+H446DsDDrEhjt2tlYpMhB7C/HIk6jLLtLTg6sXm0tq1bBli21m++MDOs0skMVEWEdSly9JCRAfLx1zm9dX/f8PjbW2hte3ZQfbKmstOpfu7b2snEjVFXtv8boaJM+fQz69qXW0rIlqNcJLqYJ335rNeVff717/eDB8Pe/w7nnWu8LmxNtk8WJtOfchcaMgVGjYMYM6zyiZ5+1uyIREZHgk5+/uwHfe8nJqd9zeL2Qmrrvkpxcu/nee2nqS1QNHbrvuqoq2LTJOg1uz6Z99WqTlSuhuNjgt9/gt99qPy4pqXaz3qcP9OxpjVtNe9MqLYU33rCa8mXLrHWGYc3CPmGCNfmbXhMR99Ge8yB0oE8EZ86EkSOtNw0rV0LnzjYVKXIQ+mRb3EJZDm47d8Ls2buXRYusPeAH0qYNdOtmLR071m6+09Ksr/Hx7mt+/H4/27ZlUFCQxrJlHpYsoWZZvXr/h+UnJED37tbSo8fu77t106W5GlNhobV3/LPP4IsvrMvoAsTEwOWXw/XX630faJsszlTfPlTNeRAyTZOCggLi4uLqPJfmxBPhm29g/Hh45ZWmr0+kPg6WYxGnUJaDR2kpzJtXuxnfuLHu+7ZosbsBr24ku3Wzzr1urg3lgbJcVgYrVlCrYV+yxNoDf6B3im3b7m7ae/SAfv1gwADrCAM5uG3brGb800/hhx+sGdirdexoNeSXXWZ9WCQWbZPFidSc18EpzfnB/P67ddkMjweWLrUOORMREXGbbdtg6lRrMtTqveJ7n0ttGNCrFxx5pLUMHWo14Q7+Mx9USkutQ+JXrrTO0V+1avf32dn7f1ybNlaT3r+/9XXAAKuJDwlputqDkWlaH3p8+qm1zJlT+/Zu3WDcODj9dBgxQv9eIm6h5rwOTmnO6/OJ4Lhx1iet550H77zTxAWK1IM+2Ra3UJab1rZt8OGH8N571nWb936X0qLF7kb8yCNh2DA14vXV2FnOzt7dsK9aZc0mvnChda57XSIirHPZq5v1/v2hd2/rNAK38vutSfuWLrWOevzsM+sa5NUMw8rxuHHW0rOn+06naGzaJosTqTmvg1Oa8/qcS7NwIQwcuPv7/v2brj6R+tA5YeIWynLgHaghP+IIOOaY3c14+/ZqXg5VU2W5oAAWL7ben1QvixdDSUnd909OtprSXr2spfr7Dh2cc632sjLrvP0VK6xl+XLr68qV+447PByOP95qxk891ZolX+pP22RxIs3W7nIDBliXz3jvPbjzTvj4Y7srEhERqb8DNeRHHWX9jTvrLF021Ini4uDoo62lms9nHR6/aFHthn3DBmsP/M8/W8ueIiOt89irm/Xu3a3relcvMTFN+0FNSYk1x0H1Ut2ML19u7Q3f3+4ur9c6XP2II6yG/IQTmu+8ByJyYGrOHey//4UPPoBPPrHOWarrcioiIiLBIicH3nyz7oZ8xAg45xw15G4VErJ7lvezz969vqRk9yHx1cuKFda60lJYsMBa6hIVZTXpLVvubtirv2/Z0tojHxpqNcf1+VpYWLv53rjR+vCg+vusrAOPMT6+9t7/6qVTJ+v5RUQORoe1ByHTNCkqKiImJuag59KMHw+vvWZ9CvvNN01UoEg9NCTHIsFMWT58+fnw6KPw2GNWA1RNDXnTclKWq6qsxnjPhn3tWti+HXbsqJ2jphQXZx1u37GjdVmzPRvxtDSdctEUnJRjkWo657wOTmnOG2LdOusPQmWldW3MP/zB7opEREQsRUXwxBPw8MOQm2ut69fPujTU2Wdbl+ESORTFxbsb9T2/7vl9bq7V5FdW7vvV56v7eVNTrea7eunYsfbPCQlNOUoRcQs153VwSnNumia5ubkkJibW6xPBG2+09kj06wfz5+uyGxIcGppjkWClLDdcSQn873/wwAO7DwXu1QsmToQzz3TOJF9uoyzvZppWo75n0x4RYR0qL8FNORYnqm8fqj+PQcg0TSoqKqjv5yb//rf1Se7ixfDqq4GtTaS+GppjkWClLNdfeTk8+SR06QI332w15l27whtvWH+jzj5bjbmdlOXdDMM6Dzwy0jpUPSlJjblTKMfiZvoT6QJJSXDHHdb3t99uHeolIiLSVCoq4NlnrUb8+uutw4o7dICXXrLOF77wQh3VJSIicjBqzl3immus2UC3b4dHHrG7GhERaQ6qquCVV6y5T/72N9iyBdq0gaeftmbbvvRSayZsEREROTg150HIMAzi4uIadB5NeDjcf7/1/YMPWk26iJ0OJcciwUhZ3ldlpbVXvGdPqwFfvx5atIBJk2DNGqtRDwuzu0rZm7IsbqAci5upOQ9ChmEQFRXV4I3OOefAkUdah7XfeWeAihOpp0PNsUiwUZZ3Ky+3Dl/v3h0uv9y6tFVKivWh8Lp11iHtERF2Vyn7oyyLGyjH4mZqzoOQ3+8nKysLv9/foMcZxu5D2l98EZYuDUBxIvV0qDkWCTbKMpSVweTJ1jnlf/ubdf3pFi2sS6Rt2GBN/qbJtIKfsixuoByLm6k5D1JVVVWH9Lijj4azzgK/H265pZGLEmmgQ82xSLBprlkuKYHHHoPOneG666xzylu3tg5fX7/eupRndLTdVUpDNNcsi7sox+JWas5d6L77rAl4pkyBqVPtrkZERJymqAgeesiaaPQf/7DmMWnXzrp2+dq11uHrkZF2VykiIuIuas5dqFs3uPpq6/ubbgKfz956RETEGYqK4N57oWNH6+irjAyrQX/+eWuit6uu0jnlIiIigaLmPAgZhkFiYuJhTXRxxx0QHw8LF8IbbzRicSL11Bg5FgkGKKVm+AAAJlJJREFUzSHLVVW7r1P+739Ddrb1Qe8rr8DKlXDFFZp93Q2aQ5bF/ZRjcTM150HIMAzCw8MPa6OTkmK9wQLra0lJIxUnUk+NkWORYODmLJsmfPYZ9OtnTfS2cyd06WJ9qLtsGYwfD6GhdlcpjcXNWZbmQzkWN1NzHoT8fj87d+487Fkor7sOOnSArVutCX1EmlJj5VjEbm7N8u+/w+jRMG4crFgBycnwxBNWU37hhdbcJeIubs2yNC/KsbiZmvMgZZrmYT9HRIQ1ORzA/fdbe0REmlJj5FgkGLgpy+vWwfnnwxFHwI8/Wn8r/vUva6K3667T4etu56YsS/OlHItbqTl3ufPOg2HDrEl+7rrL7mpERMQu2dnw979Dz57w7rtgGNZh66tWWZPAxcfbXaGIiEjzpubc5TweePhh6/vnnoPly+2tR0REmlZZmXVZtC5d4PHHobISjj8e5s2zJnxr187uCkVERATUnAclwzBITk5utIkuRo60zin0+eDWWxvlKUUOqrFzLGIXp2bZ57Oa7x49rMui5edD//7wzTfw7bcwcKDdFUpTc2qWRfakHIubqTkPQoZhEBIS0qgbnQcegJAQ+PxzmDat0Z5WZL8CkWMROzgty6YJH31kzcB+6aWwaRO0aQMvv2ztLT/hBLsrFLs4LcsidVGOxc3UnAchv99PRkZGo85C2aOHdZkcgJtuAk1wKYEWiByL2MFJWZ46FY48Es46yzqNKTHR+nB21Sr485+tD2ml+XJSlkX2RzkWN1Nz3ozceSfExlp7Tt54w+5qRESkscyeDWPHWueS//47REfD7bfD+vXWIe1RUXZXKCIiIgej5rwZSU2F226zvv/732H7dnvrERGRw7N0KfzxjzB8OPzwg3UZtOuvty6L9n//pxnYRUREnETNeTPzj3/AoEGQkwOXX26dmygiIs6yfj1ccol1Xvknn1hX5rj0Uuvw9UmToEULuysUERGRhlJzHoQ8Hg9paWl4PI3/8oSFweuvQ3g4fPWVdXk1kUAIZI5FmlIwZXnjRrj2Wmsekddftz5gPfNMWLIEXnoJOnSwu0IJZsGUZZFDpRyLmynVQcg0TXw+H2aAdmv36QP33mt9/49/wJo1Afk10swFOsciTSUYsjx/PvzpT9a1yp96ave1yn/7DT78EHr1sq00cZBgyLLI4VKOxc3UnAch0zTJzs4O6EZnwgQYPRpKSqxDI32+gP0qaaaaIsciTcGuLJumdT3y44+HwYPh7betbfXYsfD999Ztw4Y1aUnicNouixsox+Jmas6bKY8HXnkF4uLg11/hwQftrkhERMDaK/7GG9b8IH/4g3V5tJAQuOACmDvX+nnMGLurFBERkcam5rwZ69ABnnjC+v7OO2HBAlvLERFp1goL4dFHrUPXL74YFi60Lol2ww3W6UdvvWXtQRcRERF38tpdgNTNMIwm+T2XXGLN9PvJJ3DRRTBnDkRENMmvlmagqXIsEmiBzPL27dYHpU8/Dfn51roWLaxLov3tb5CUFLBfLc2QtsviBsqxuJVhNqMTNgoKCoiPjyc/P5+4uDi7ywkamZnQty9kZMBNN8FDD9ldkYiI+23cCA88AC++CBUV1roePeDGG6095/qgVERExB3q24fqsPYgZJom5eXlTTbRRWoqPP+89f0jj8CMGU3ya8XlmjrHIoHS2FleswauuAK6drX2lldUwIgR1hFMy5bBX/6ixlwCQ9tlcQPlWNxMzXkQMk2T3NzcJt3onH46XHaZNTvw+PFQUNBkv1pcyo4ciwRCY2V5xQprj3iPHtbe8qoqa+b16dPh559h3Dhrsk6RQNF2WdxAORY309sAqfHYY9Cxo3Wo5YQJdlcjIuIOixfDeedB797WLOx+P5x8MvzyizXz+qhRdlcoIiIiwUDNudSIi4NXXwXDgJdfhk8/tbsiERHnmjsX/vhH6N8f3nvPOjLpjDOsiTe//BKOOsruCkVERCSYqDkPUl6vPRPpjxxpTUYE1nmPGRm2lCEuYVeORRpbfbNsmtYh6qecAkOHWueRGwace651abSPP4YhQwJbq8iBaLssbqAci1tptnbZR1kZDBsGS5ZY50B+/LH15lJEROqWl2cdsv7cc9Zh7GCdP/6nP8Ftt0GvXraWJyIiIjbSbO0OZpomJSUltk10EREBr78OoaHWoe2vvGJLGeJwdudYpLHsL8umaZ03/uc/Q+vWcN11VmMeEQGXXw4rV1rbUjXmEiy0XRY3UI7FzdScByHTNCkoKLB1ozNwINx1l/X9DTfA2rW2lSIOFQw5FmkMe2c5NxeefNI6l/zoo625OkpLoW9fa/22bfDCC9al0kSCibbL4gbKsbiZTtiQ/brlFvjiC2vP0MiR8PnnMHiw3VWJiDS96nPJX3jBmtytrMxaHxkJ558Pf/0rHHmkTgESERGRQ6fmXPYrJATefRf+8AdYtgyOPRbeeQdOO83uykREmkZODrz2Gjz9dDKrVu0+2Kx/f7jySuuc8oQE++oTERER99Bh7UHIMAzCwsIwgmAXTNu21t6i446DkhJrgrhJk6y9SCIHEkw5FmkI04SZM+Hii61zyf/+dw+rVoUSFWVy+eUwezYsWABXX63GXJxF22VxA+VY3EyztUu9VFbCNdfA889bP197LTz2GOhKFiLiFllZ1l7y55+HFSt2rx840Lq05IUXQny8beWJiIiIQ2m2dgczTZPCwsKgmugiNBSefRYefND6efJkay96YaG9dUnwCsYci+zNNGH6dOvw9DZt4MYbrcY8OtpqyH//HebONbn44kLi4pRlcTZtl8UNlGNxMzXnQcg0TYqLi4Nuo2MYcPPN8MEH1qWCpkyxzkPfssXuyiQYBWuORQAyM+Hhh6FnT0hPh7ffhooKGDLE+iBy+3brmuVDhwIoy+IO2i6LGyjH4mY6KFka7KyzoF07a2K4hQutGYo1k7uIBLv8fPjyS/jwQ2ubVVlprY+JsQ5Z/8tfrOZcRERExA5qzuWQHHGENSnSKadoJncRCV7Z2fDpp1ZDPnWqtXe82rBh1iXQzj/fatBFRERE7KTmPAgZhkFkZGTQz0LZsaN1DfRzzoHvvrPOQX/sMbj+el3rV5yTY3GfHTvg44+thnz6dPD5dt/Ws6d19M8558CAAfV7PmVZ3EJZFjdQjsXNNFu7HLbKSmv29uees36+5hp45BEID7e3LhFpPjZuhI8+spaff659uccBA6yG/KyzoHdv+2oUERGR5qm+faia8yBkmiYFBQXExcU55lNB07Qa8ltusb5v29b6/oorIDLS7urEDk7MsTjLjh3w7rvWZG6zZ9e+7YgjdjfkXboc3u9RlsUtlGVxA+VYnMg1l1L7/fffufbaa+nTpw/R0dG0b9+ec889l1WrVtldWsCYpklpaamjZqE0DLjpJmuvVevW1gzu118PnTpZMyIXFdldoTQ1J+ZYgl9eHrz0Ehx/vHXpswkTrMbcMGDkSJg0CTZtstbdcsvhN+agLIt7KMviBsqxuFnQn3P+wAMP8PPPP3POOefQv39/duzYweTJkxk8eDCzZs2ib9++dpcoezjjDDjxRHjlFbj/futQ05tvhvvug7//3Tr8PSHB5iJFxFFKS+GLL6w95F9+WXtSt+HD4YIL4NxzoWVL+2oUEREROVxBf1j7L7/8wtChQwkLC6tZt3r1avr168fZZ5/NG2+8Ue/ncsph7X6/n4yMDNLS0vB4gv7ghv2qrIQ33oB774U1a6x1cXHWHvUbboCUFHvrk8ByS47FHlVV1uzqb79tTe5WWLj7tj594E9/smZZ79w58LUoy+IWyrK4gXIsTuT6c86H7LoY7dy5c+v9GKc056ZpUlRURExMjCvOpamqgvfeg3vusS67BhAdDVddBTfeqL1dbuW2HEvg5edbDflXX8Fnn0Fm5u7bOnSw9pD/6U/Qr1/T1qUsi1soy+IGyrE4kaubc9M0adeuHX369OGbb76p9+Oc0py7ld8Pn3wCd98N8+db6yIi4PLLrTfdw4dDSIitJYpIEzJNWLzYasanTLEuzVhVtfv21FTrcPU//QmOOkqXaBQRERFnqm8fGvTnnNflzTffZOvWrUycOPGA9ysvL6e8vLzm54KCAsA6HMbv9wPWtRINw8A0zVoTSxxsffXjD3W9x+PZ57mr1/v9fnJzc0lISKj5RLCu+x9q7XaMyVpncsYZ1vXQv/oK7rnHw6xZ8NRT1pKaanLqqXDGGQZjx5pERgb/mOqz3mmvU2ONye/3k5eXR0JCAh6PxxVjcuPr1NRjys83+e47k6++MvjmG9i6tXbH3aOHyYknwkknmYwd6yEkxNxVj9XM2zEm0zTJy8sjKSnpsF6P/a0PxtdJY3LnmPZ+f+GGMbnxddKYGv7+wuljcuPrpDHVXr93bfvjuOZ8xYoVXHPNNRx11FGMHz/+gPe97777uOuuu/ZZn5mZSVlZGQCRkZHEx8dTUFBAaWlpzX2io6OJjY0lNzeXij1mH4qLiyMqKoqcnByq9tjFk5iYSHh4OJmZmbX+8ZOTkwkJCSEjI6NWDWlpafh8PrKzs2vWGYZBixYtKC8vJyMjg/LycjweD16vl5SUFEpLS2s+YAAICwsjKSmJoqIiiouLa9YH45gqKirIzc2tWT98uJdffknhyy/LeOklk++/Dycz08PLL8PLL1uXXxs5soI//KGc448vp1278KAfkxtfp8MZU3FxMfn5+ZSXlxMbG+uKMbnxdQr0mEwTli3zMm1aOD/9FMPPP0NV1e5zBCMjTcaMMTjhhEqGD8+jfXtfzZi83hRKSuwfk9/vxzRNfD4fWVlZrnydNKbmMaaSkpJa7y/cMCY3vk4a04HHVFZWVvP+IiEhwRVjcuPrpDHVHlNoaCj14ajD2nfs2MHRRx9NZWUls2bNonXr1ge8f117ztu1a0dubm7N4QTB+MmPz+cjIyOD1NTUmokugumTn0B8mlVZCT/+CJ99ZvDZZwabNu35+0xGjIBx4wxOO82ke3dnjKm+NTrpdWpI7T6fj8zMTFJTUwkJCXHFmNz4OgViTNnZBlOnGnz9tcl338H27bX3jnfvbnLSSXDiiSYjR0JUVHCPye/3k5mZSYsWLdibk18nN2ZPY2rY+ws3jMmNr5PG1PD3F04fkxtfJ42p9vrCwkISEhLcc855fn4+o0ePZtOmTcycOZPevXs3+Dmccs55c5+F0jRh0SL49FNrmTev9u3du8Mf/gAnnACjRkFsrD11yoE19xw3J1VV1nXFv/4avvkG5syx/h9Xi4qC9HQ46SRraYoZ1huTsixuoSyLGyjH4kSumhCurKyME044gblz5zJ16lSOOuqoQ3oepzTnpmlSWlpKZGQkhqEZkDZvhs8/txr1adOsS7RV83phxAg4/nirWR8yRJPKBQvl2N02bbIa8a+/hu+/t2Za31O/fnDiidYHacccA+Hh9tTZGJRlcQtlWdxAORYnck1z7vP5OPPMM5kyZQqffvopJ5988iE/l1Oac9m//Hz44Qf49ltrWbeu9u2JiTB2rNWoH388dOxoS5kiruH3W//P5s+3lgULrK87dtS+X1KS9X/uxBOt/38HOetIREREpNlwTXM+YcIEJk2axGmnnca55567z+0XXXRRvZ/LKc253+8nJyeHpKQkHa5zEGvXwnffWY36Dz/su/euWzerUTjpJOuw2qgoe+psjpRj56mogGXLajfiCxZAYeG+9/V4rMsf/uEPVkPu5qNWlGVxC2VZ3EA5FidyTXM+evRoZsyYsd/bG1K+k5pznUvTcFVV8Pvvu5v1WbPA59t9e3i4dY76ySdbzXq3bqCjoQJHOQ5upglr1sCvv1rL7NmwdKnVoO8tPNw6TH3QIGsZOBD694fo6CYv2xbKsriFsixuoByLE7mmOW9Mas6bl/x86xz1b76BKVOoNQM8WJNSVTfqo0drr3pjU46DS2Gh9eFVdTM+axbscSWSGgkJVvNd3YgPGgQ9ekA9rwDiSsqyuIWyLG6gHIsT1bcPddx1zkXqKz4ezjjDWkwTli+Hr76ylh9/tM6jnTzZWiIirL3q1bNJa6+6OJnfD6tXWw14dTO+ZIm1fk/h4dbh6EcdZR2iPnQodOig7IuIiIjYQXvOg5BpmlRUVBAWFqZZKAOksNA6R726Wd97r3qHDrtngB871prsShpGOW46mZnWYemzZ8Nvv1lLXt6+9+vQwWrCjzrKWgYOhLCwpq7WeZRlcQtlWdxAORYn0mHtdXBKcy5NyzStSbCqG/Wffqp93q1hWHsUTzjBWoYPV0Mj9ikttSZr27MZX79+3/tFRFi5rW7Ghw/XDOoiIiIidlBzXgenNOd+v5/MzExSU1N1Lo0Nioutw96//daaXG7p0tq3R0dbM79X71nv0UOHAddFOT485eXWqRerV1vLqlUwZw4sWmRNfri3Xr3gyCPhiCOsr/36Ne/zxBuTsixuoSyLGyjH4kQ659zhmtFnJkEnOnr3uecAW7fC1Km7m/XMTPjiC2sBaNPGmlAuPd362rmzmvVqyvGBVVZae72rG/A9l02b9j1HvFqLFlYDXr0MHWrNsSCBoyyLWyjL4gbKsbiVmnORg2jTBsaPtxa/39pz+e231vLTT1bz/uab1gLQrl3tZr1TJzurFzuZJuTmWg34unW7l+qfN2yofbm/vcXEWJMTVi8DBljNeLt2+gBIRERExG3UnIs0gMdjTaI1cCDccguUlFgzYk+bBtOnW+cAb94Mr79uLWBNwjV69O6GvUMH28qXADBN2LIFVqywrhu+Z/O9bp11Sb8DiYqCrl1rN+HVS4sWasJFREREmgudcx6ETNOkqqoKr9erWSgdprjYumzV9OlWw/7bb/ueH9ymjXUY8tChMGyYdSmrlBRbyg0ot+W4rMw63HzFitrLypXW634gLVtapztUL506WUvXrtYkbS7453E1t2VZmi9lWdxAORYn0oRwdXBKcw7WZBea5ML5iovh5593N+u//173YcwdO+5u2IcOtRr2hIQmLjYAnJZjn8868mHNGli71pqErboJX7/e2kteF693997vPZvwzp2t1zYqqkmHIQHgtCyL7I+yLG6gHIvTqDmvg1Oac7/fT0ZGBmlpadrwuExRESxYYM26/fvv1tdVq+q+b9euVqPerx90724t3bpBZGSTlnzIgjXHZWVWo13dgFcva9ZY54BXVu7/sfHx1qzoPXvWXjp31szobhasWRZpKGVZ3EA5FifSbO0iQSgmBo45xlqq5efDvHlWo169rFtnNYtr1sA779R+jvbtrUa9R4/dTXuPHtb6kJCmHU8wKSqCnTutZceO3d/vuWzaZE3gd6CPJMPCrEPOu3SxPgzZsxlPS9Mh6CIiIiISGGrORWwWH29NFJeevntddvbuhn3FCmvv+sqV1szfmzZZy9SptZ8nLMza2962rXWO8/6WhITgajBN0zr8Pz/fWgoLraWo6ODf5+XtbsRLSur/O2Njrea7a1fra/XStas1J0Bz/pBDREREROyh5lwkCCUnw/HHW0s107Sa9upGfc+va9ZAeTksW2YtBxIWZs0C3rKl9TU6GiIirCU8fPf3df0cFmbV4fNZl5Wr/rrn99Vfq6ogNzcKv9+oabzz8qjz+wNdTqwhoqKsMVUv1WOsXtq0sZrwlJTg+oBCRERERETnnAcpTXQhDeHzWXvTV6+G7dutvcl7LtWHeufm2l3p/nm9EBdnLTEx1t7t2NgDfx8fX7sJj4mxexTiVtomi1soy+IGyrE4jc45dzDTNPH5fBiGoUtESL2EhOy+PNeBlJfvbtR37ICMDCgttSZJ23spL697ncdjLSEhB/tq4vGYJCQYuxarmY6Pp+b7Pb9GRmpvtgQnbZPFLf6/vXuPqbr+4zj+Osg1jWOEgBcuKToNw8sKJ6nRRSWVcqlo5a1ars27OdO1htPNdF6al7S5lrS0XMpcTR3OnLiZKOrUsaBRQ5IEUULloEIF398fDvoRkEdUvud8fD42N/1+j4eX22sfz/t8v+dz6DJMQI9hMoZzD2RZlv744w+FhYWx6OC+Cgi4vXFcVNSD/1l1ddb/7aZKj+G9WJNhCroME9BjmIz7QQAAAAAAsBnDOQAAAAAANmM491DcpgMT0GOYgi7DFHQZJqDHMBW7tQMAAAAA8IC4O4dy5dwDWZalmpoaPUTvm8BA9BimoMswBV2GCegxTMZw7oEsy9LVq1dZdODV6DFMQZdhCroME9BjmIzhHAAAAAAAmzGcAwAAAABgM4ZzD+Xr62t3BOCe0WOYgi7DFHQZJqDHMBXN9kA+Pj4KDQ21OwZwT+gxTEGXYQq6DBPQY5iMK+ceyLIs3bx5k40u4NXoMUxBl2EKugwT0GOYjOHcA1mWpcrKShYdeDV6DFPQZZiCLsME9BgmYzgHAAAAAMBmDOcAAAAAANiM4dwDORwO+fv7y+Fw2B0FaDV6DFPQZZiCLsME9BgmY7d2D+RwOBQSEmJ3DOCe0GOYgi7DFHQZJqDHMBlXzj2QZVlyuVxsdAGvRo9hCroMU9BlmIAew2QM5x7IsizduHGDRQdejR7DFHQZpqDLMAE9hskYzgEAAAAAsBnDOQAAAAAANmM490AOh0NBQUHsQgmvRo9hCroMU9BlmIAew2Ts1u6BHA6HnE6n3TGAe0KPYQq6DFPQZZiAHsNkXDn3QJZl6fr162x0Aa9Gj2EKugxT0GWYgB7DZAznHsiyLN26dYtFB16NHsMUdBmmoMswAT2GyRjOAQAAAACw2UP1mfP6d9gqKyttTvLf6urq5HK5FBgYKB8f3j+Bd6LHMAVdhinoMkxAj+GN6ufPO93x8VAN5y6XS5IUGRlpcxIAAAAAwMPE5XL954aGDush+sBGXV2dSkpK9Oijj3r01y9UVlYqMjJSxcXFCg4OtjsO0Cr0GKagyzAFXYYJ6DG8kWVZcrlc6tKly3/e8fFQXTn38fFRt27d7I7htuDgYBYdeD16DFPQZZiCLsME9Bjexp2vAOSDGgAAAAAA2IzhHAAAAAAAmzGce6CAgAClpaUpICDA7ihAq9FjmIIuwxR0GSagxzDZQ7UhHAAAAAAAnogr5wAAAAAA2IzhHAAAAAAAmzGcAwAAAABgM4ZzAAAAAABsxnDuQWpqavTBBx+oS5cuCgoK0qBBg3Tw4EG7YwFuy8rKksPhaPbX8ePH7Y4HNKuqqkppaWlKTk5WSEiIHA6H0tPTm31sfn6+kpOT1aFDB4WEhGjKlCm6cuVK2wYGWuBul6dPn97sOt27d++2Dw38y8mTJzVr1izFxcWpffv2ioqKUmpqqgoKCpo8ljUZpvG1OwD+MX36dO3evVvz5s1Tz549lZ6erlGjRunw4cMaMmSI3fEAt82ZM0fPPPNMo2OxsbE2pQH+W3l5uZYtW6aoqCj169dPWVlZzT7u999/17Bhw+R0OrVixQpVVVVpzZo1ys3NVU5Ojvz9/ds2OPAv7nZZuv11VJ9//nmjY06n8wEnBO5s1apV+vHHHzVhwgTFx8fr0qVL2rRpkwYOHKjjx4+rb9++kliTYSaGcw+Rk5OjnTt3avXq1Vq4cKEkaerUqerbt68WLVqkY8eO2ZwQcN/QoUM1fvx4u2MAbuncubNKS0sVERGhU6dONXljqd6KFSt048YNnT59WlFRUZKkhIQEDR8+XOnp6ZoxY0ZbxgaacLfLkuTr66vJkye3YTrAPQsWLNDXX3/daLieOHGinnrqKa1cuVLbt2+XxJoMM3Fbu4fYvXu32rVr12ghCQwM1DvvvKPs7GwVFxfbmA64ey6XS3///bfdMYA7CggIUERExB0fl5GRoTFjxjS8CJSkl156Sb169dK33377ICMCbnG3y/Vqa2tVWVn5ABMBdy8xMbHJVe+ePXsqLi5O+fn5DcdYk2EihnMPcebMGfXq1UvBwcGNjickJEiSzp49a0MqoHXeeustBQcHKzAwUM8//7xOnTpldyTgnly8eFGXL1/W008/3eRcQkKCzpw5Y0MqoPVu3ryp4OBgOZ1OhYSEaObMmaqqqrI7FtAsy7JUVlam0NBQSazJMBe3tXuI0tJSde7cucnx+mMlJSVtHQm4a/7+/ho3bpxGjRql0NBQ5eXlac2aNRo6dKiOHTumAQMG2B0RaJXS0lJJanGdrqioUE1NjQICAto6GnDXOnfurEWLFmngwIGqq6tTZmamNm/erHPnzikrK0u+vrw8hGfZsWOHLl68qGXLlkliTYa5WH09xK1bt5pdQAIDAxvOA54uMTFRiYmJDX9+5ZVXNH78eMXHx2vJkiXKzMy0MR3QevVr8J3WaV4Iwht8/PHHjf48adIk9erVSx9++KF2796tSZMm2ZQMaOrnn3/WzJkzNXjwYE2bNk0SazLMxW3tHiIoKEg1NTVNjldXVzecB7xRbGysXn31VR0+fFi1tbV2xwFapX4NZp2GqebPny8fHx/98MMPdkcBGly6dEmjR4+W0+ls2J9JYk2GuRjOPUT9Dqv/Vn+sS5cubR0JuG8iIyP1559/6saNG3ZHAVql/tbJltbpkJAQrtDAqwUFBenxxx9XRUWF3VEASdL169f18ssv69q1a8rMzGz0Wpg1GaZiOPcQ/fv3V0FBQZNdU0+cONFwHvBWhYWFCgwMVIcOHeyOArRK165d1alTp2Y3N8zJyWGNhtdzuVwqLy9Xp06d7I4CqLq6WikpKSooKNDevXv15JNPNjrPmgxTMZx7iPHjx6u2tlZbt25tOFZTU6Nt27Zp0KBBioyMtDEd4J4rV640OXbu3Dl9//33GjFihHx8WHLgvcaNG6e9e/c2+mrLQ4cOqaCgQBMmTLAxGeC+6upquVyuJseXL18uy7KUnJxsQyrgH7W1tZo4caKys7O1a9cuDR48uNnHsSbDRA7Lsiy7Q+C21NRU7dmzR/Pnz1dsbKy+/PJL5eTk6NChQxo2bJjd8YA7euGFFxQUFKTExESFhYUpLy9PW7dulZ+fn7Kzs9WnTx+7IwLN2rRpk65du6aSkhJt2bJFr732WsO3C8yePVtOp1PFxcUaMGCAOnbsqLlz56qqqkqrV69Wt27ddPLkSW6hhEe4U5evXr2qAQMG6PXXX1fv3r0lSQcOHND+/fuVnJysffv28UYqbDVv3jytX79eKSkpSk1NbXJ+8uTJksSaDCMxnHuQ6upqffTRR9q+fbuuXr2q+Ph4LV++XCNHjrQ7GuCWDRs2aMeOHfr1119VWVmpTp066cUXX1RaWppiY2Ptjge0KCYmRr/99luz586fP6+YmBhJ0k8//aQFCxbo6NGj8vf31+jRo7V27VqFh4e3YVqgZXfqcseOHTV79mwdP35cJSUlqq2tVWxsrN58800tXLhQfn5+bZwYaCwpKUlHjhxp8fz/jy6syTANwzkAAAAAADbjviUAAAAAAGzGcA4AAAAAgM0YzgEAAAAAsBnDOQAAAAAANmM4BwAAAADAZgznAAAAAADYjOEcAAAAAACbMZwDAAAAAGAzhnMAAAAAAGzGcA4AgIeJiYmRw+FQenq623+npqZGGzZs0LBhwxQSEiI/Pz+FhoaqT58+Sk1N1fr163XlyhVJ0tKlS+VwOO76V1ZW1h1zJCUlNfo7sbGxTR5Tf+5uJScnN3rumJiYu34OAAA8la/dAQAAwL0pKyvT8OHDlZubq3bt2ikhIUGRkZGqq6tTQUGBMjIytGvXLvXo0UNjxoxR//79NW3atCbPk5mZqbKyMvXr10/9+/dvcj4iIsLtTCNHjlRERITCw8Pv5Z/WyPDhwxUREaGqqiplZGTct+cFAMATMJwDAODlZs2apdzcXMXFxWnfvn2Kjo5udP7y5cv65ptvGgblsWPHauzYsU2eJykpSWVlZRo7dqyWLl16T5kWL16spKSke3qOf3v//fclSUVFRQznAADjMJwDAODFqqur9d1330mS1q1b12Qwl6SwsDDNnTu3raMBAIC7wGfOAQDwYhUVFfrrr78k3R7CvU1GRoaGDBmi4OBgtW/fXs8++6z2799vdywAANocwzkAAF4sNDRUjzzyiCRp48aNqqurszmR+9LS0jRhwgRJ0qhRo9SzZ08dO3ZMY8aM0Z49e2xOBwBA22I4BwDAi/n7++vdd9+VJH3xxRfq0aOH5syZo+3btysvL0+WZdmcsGUbNmxQdna2jh49qp07d+rs2bNKS0uTZVlavHix3fEAAGhTDOcAAHi51atXa968efLz81NRUZE2btyoKVOmKC4uTmFhYZo1a5YuXrxod8wmli1bpkGDBjU6tmTJEjmdThUUFKi4uNimZAAAtD2GcwAAvJyfn58++eQTXbhwQVu2bNEbb7yh3r17y+FwqLy8XJ9++qni4+N1+vRpu6M2kpKS0uRYQECAunfvLkke+YYCAAAPCsM5AACGiIiI0HvvvacdO3YoPz9fpaWlWrdunZxOpyoqKjR16lS7IzYSFRXV7PHg4GBJt3eiBwDgYcFwDgCAocLDwzV//nxt27ZNkpSXl6dffvnF5lT/8PHhZQgAAPX4XxEAAMONGDGi4ffl5eU2JgEAAC1hOAcAwIu5sxv7hQsXGn7ftWvXBxkHAAC0EsM5AABe7Pr16xo4cKC++uorVVVVNTlfWFiot99+W5KUmJjY4ue8AQCAvXztDgAAAJq3fPlyffbZZy2e37x5s7p3764zZ85o6tSpCggIUL9+/RQdHS3LslRcXKyTJ0+qrq5O0dHRSk9Pb7vwAADgrjCcAwDgoQoLC1VYWNji+crKSjmdTp04cUKHDh1SVlaWzp8/r/z8fFVXV+uxxx7Tc889p5SUFM2YMUPt27dvw/QAAOBuOCx3PqwGAADghqSkJB05ckSHDx9WUlLSA/kZRUVFeuKJJxQdHa2ioqIH8jMAAGhrXDkHAAD33cqVK5Wenq7w8HCtWrXqvjzn2rVrlZub2+xn6wEA8HYM5wAA4L47cOCAJKlHjx73bTg/ePBgw/MCAGAabmsHAAAAAMBmfJUaAAAAAAA2YzgHAAAAAMBmDOcAAAAAANiM4RwAAAAAAJsxnAMAAAAAYDOGcwAAAAAAbMZwDgAAAACAzRjOAQAAAACwGcM5AAAAAAA2+x/nQyEkixsLwQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/AAAALJCAYAAAATXcjfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhTZd4+8PtkaZqUrrRpwQItm5SdFkUcFXAFEWUUQa0z4MgAituoM+/oz1HQmUEdxR3FcQGpiuLugDPqK+AyUKUFZauAtFVZurdJ9zZ5fn/0zbFpkzbpluQ89+e6uKDnnJx8n+ZO6TfnnOcoQggBIiIiIiIiIgpqukAXQERERERERESdYwNPREREREREFALYwBMRERERERGFADbwRERERERERCGADTwRERERERFRCGADT0RERERERBQC2MATERERERERhQA28EREREREREQhgA08ERERERERUQhgA09E1IqiKFAUBStWrAh0Kd1SUFCgjmXdunWBLoeIiIiIegAbeCIKuObmZrz99ttYsmQJxo0bB6vVCqPRiOjoaAwfPhy//vWv8Y9//AP5+fmBLpWIAmjFihXqB1Pbtm3z6TEpKSlQFAUpKSm9Wlso2rZtm/r99OUPPwwkIgo8NvBEFFAffPAB0tLSMG/ePPzzn//Evn37UFJSgubmZthsNvzwww9477338Kc//QlDhw7FJZdcgn379gW67IDRyhkCREREROQ/Q6ALICJ5/fWvf8W9994LIQQAYPr06bjkkkswfvx49O/fH7W1tThx4gQ+//xz/Otf/0JBQQE2b96M5ORkPPfccwGuPrilpKSo31cios7ccMMNuPHGGzvcJjk5uY+qISIib9jAE1FAvPTSS/jLX/4CAEhMTMTGjRsxffp0j9teeeWVePzxx7Fx40bcfffdfVglEZEcrFYrxo4dG+gyiIioE2zgiajP/fTTT1i+fDkAICoqCl9++SWGDx/e4WP0ej0yMzMxe/ZsfPHFF31RJhERERFRUOE18ETU51avXo36+noAwN/+9rdOm/fWYmJiMGfOHI/rKioq8PLLL+Paa6/F6NGj0a9fP4SFhSEpKQkXXXQRnn/+eTQ2Nnar9qNHj+LRRx/FnDlzkJKSArPZDLPZjCFDhmDBggX497//7fO+9u3bh5tvvhnjxo1DbGwsjEYjkpKScP755+Phhx/G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Dz/8MHbs2IGvv/4af/3rX7Fq1ap2jy0qKsKvfvUrHD9+HEDLWR8LFy7EqFGjoCgK8vPz8dlnn2HTpk1uj1u8eDH+8Y9/wOl04pVXXsFdd93lsbampiZkZWUBAGbNmoWkpKQufb+IqIcF+hMEIpJLVlaWekTgnnvu6dF9Hzp0qMP1L730kvrcn376qcdtXOs9HY2qrq4Wx48f97p/p9MpFi1aJACIiIgIUVlZ2W6b999/X32OqVOnioqKCq/7+/HHH/2qr7XOjjY98cQT6vpf//rXor6+3uN+HA5Hp0doPGl9hAmA+Pvf/95um6amJnHRRRep22zevLndNqeddpoAIPR6vfjPf/7Tbn15ebl6lF2n04l9+/a5rX/jjTfU/R88eNBt3fr16wUAMWbMGJGamioAiHfffddtm+zsbPXxW7ZscVtXUlIioqOjBQDxu9/9zutZF3fffbdaX15entu61q8TAPHb3/5WOJ1Oj/vxVeujytHR0eLAgQPtttm3b596NPOUU04RjY2NITG21kdYX3rpJbF3795O/wwcONDrEfiONDQ0iF/96ldq/j766CO/67388ssFABEbGysaGho8blNZWSlMJpMAIJYsWeK2znXWwpAhQzo8S6WsrMzv2oRwPwJ/ww03dPh9LCoqUh/X+nXQ6XQe35surozExMSIXbt2edymoKBADBgwQAAQ11xzTbv18+bNU5/vtddea7feZrOJCRMmuOWtrZ46Av/xxx+r+3nhhRc8Pr6urk4942DIkCHt3j9tfz5u2LCh3T7q6+vF2LFj1TMsPL0Hf/3rX6v7eOihh7yOx263i/LycrdlZ599tgAgRo4c6fVx77zzjrr/tj8biShw2MATUZ96/PHH1V8InnjiCa/bORyODn+ZbNtw+Mp1quFNN93kcb2vDbI3ZWVlQq/XCwDirbfeard+6tSpAoCwWCzi2LFjfu+/Jxp4h8MhkpOTBQCRnJzcYWPQVa1/QR0/frzXxu2nn34SRqNRABCzZ892W9e6eV62bJnX5/ryyy/V7W688Ua3dSdPnlTXPfvss27rrrvuOgG0nH7v+vett97qts1DDz2kNnA2m81t3f333682wN4+ABGi5YOKU045RQAQd999t9u61q9TTExMu+foitYN/COPPOJ1O9fYAIhNmza5rQvWsbVuHP39428D7/owDoBYvXp1l+p9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R47scL1L61NGXf8uKytDc3Nzh0fhXaeoKorS7pflpKQkjBw5EocOHcK2bduwbNky9bTl1g389OnTsW7dOnWd6++JEye2u31Y6zqFEG6n/waL1t/Xzrbx9H0HgndsPa2pqQlXXHEF8vPzoSgKXn31Va8Ntb90Oh2uvvpqPPLII/jf//1fFBUVITExEYcOHVI/EOzoOmig5cjzbbfdhttuuw1OpxN79uzBu+++i6effhqVlZX429/+htNOOw2XXXZZj9TcU1qfcZWQkOC1Me9I6/dzUVERBg0a5HXbjjLf+mi266wHb7xd3tV6PBaLJaDvDdfP8fLycjQ2NnbrKPzy5cuxfft25OfnIzU1VT36brFYcNVVV/VYzUTUM3gKvReff/455syZg4EDB0JRFLz33nsBf76ioiIsWrQIAwcOhMViwcyZM3H48OFerYuopymKgmuvvRZAS1O8fv36Htnv/v37AQCXXnqp1+ZdCIHc3Nwu7f/w4cNoamoC0DIBnTd5eXmorq72uG7SpEnqESTXadqBkJ6erv67L+r45ptvfFpvsVgwdOhQdbnrl+PGxkb1mmxvXPfBHjFihMdfZFtfB3/s2DEcOXJEvf697TbfffcdSktLvV7/DrQcbXZNmOW6T3ywyc/PR1lZmdf1JSUl6n3YWzcioTC2nnbjjTeq74W//e1vHd63uytcDbrD4VA/CHz11VcBtPxMvPrqq33el06nQ3p6Oh544AH87//+r7r8zTff7MGKe8akSZPUf3c1S60/SPH1Z4knredf8fYhK9DSEHt730ycOFH9GR7o94br53hTU1OHk+R1JjMzE2azGUIIrFu3DnV1ddi4cSMA4IorrkBUVFSP1EtEPYcNvBc1NTWYMGECnnnmmaB4PiEE5s6di6NHj+L999/H7t27MWTIEJx//vm9MhEYUW+6/fbbER4eDgC46667kJ+f3+19uq7Z7ej98P7773f5yHfra4I7eo7nnnvO67q4uDj1lMs333wTx48f97sO1/etoaHB78e6TJgwQT2K9cILL3j9wKGndHTJwrFjx/Dxxx8DaGmgW5+Oe/7556v/fumll7zuf8eOHerpnq0f01rr6+DXrl0L4Jfr312GDBmClJQUCCHw5JNPorKyUq3LE1eTl5eXh//85z9e6wsUIQReeeUVr+vXrVunvi5tv2/BPrae9Pjjj+OFF14A0NLM3HXXXT3+HBMnTlSvI3Y17q+//jqAlonyBg8e3KX9pqenq0eouzoxZ286//zz1TOsnnzyyS5dVjRjxgz150JHH/h+88036sSXnsTGxiImJgaA++R6bW3cuNFrnQkJCeqEca+99lqH87j0ttmzZ6sfJjz++ONd3k90dLQ60eL69evx1ltvqXcO4OnzREGqF29RpxkAxLvvvuu2rL6+Xtxxxx1i4MCBwmKxiNNPP11s3bq1157v+++/FwDEvn371GUOh0MkJCSIf/7znz3yvER96fnnn1fvQTtw4EDxxRdfdLi90+kUl112mfqY/Px8t/Xjxo1T91VWVtbu8UeOHBEDBw7s9J7QrvVt77NeWlqq3nN35syZHu9r/sEHH6j3K4aXewh/8MEH6vozzzxTVFZWeh3zTz/91G5ZamqqACCuvPJKr48TovN7Hj/55JPq+l//+teioaHB434cDkeX7lff+j7HAMRDDz3UbpumpiYxa9YsdZsPP/yw3TaTJ08WAITBYBCffvppu/WVlZXqa6/T6cTevXs91nPs2DH1eVz3pV6+fHm77RYuXOi2jU6nExUVFR73efLkSdGvXz8BQAwYMMDt57Mn//rXv9rdy9mfe1P7qvV94GNjY0VeXl67bQ4cOKCOccCAAe1e/2AdW+v7j/v6f67rnt6e3vMfffSR+p49/fTTRV1dXY/U6cnf/vY3tfbXXntN/ffatWu9Pmbjxo2itrbW6/pvvvlG3c/SpUv9rqn1feDb/szrSOvXoTN/+tOf1G1vvfVW4XA4vG578uRJj7/TXH755eo+3njjjXbr7Xa7mDRpUof3gRdCiEsvvVQAEGazWRw5cqTd+ry8PBEXF9fhz/DNmzer68855xyvPx+EaPld8emnn26Xq9Y/H9v+X9ZaZ++h1t+Xhx9+2Ot+qqurRXl5udf127dvV/eTlJQkAIhhw4Z5/H+OiAKPDbwPPDXUixcvFmeeeab4/PPPxZEjR8Q//vEPYTKZxKFDh3rl+b777jsBoN1/OMnJyR7/gyEKBa1/CQQgzj33XPHYY4+JTz/9VOTm5opvvvlGfPjhh2LlypVizJgx6nZ6vb5dU/mPf/xDXT9y5Ejx4osviuzsbLF9+3Zx3333iejoaBEeHi7S09O71MALIcTs2bPV9eeff754++23xa5du8SWLVvE9ddfL/R6vRgxYoRISEjw+sufEEJcf/31bh9e/P3vfxfbt28Xu3fvFp988olYtWqVmDhxosfHZ2ZmCgDCZDKJ5557Tuzdu1ccPnxYHD58WBQVFanbdfaLn8PhEBdccIHb9+zxxx8XX375pcjNzRVbtmwR9957rxgxYoRfv9i7tP4F1dWEX3311eKjjz4SOTk5YuPGjeL0009Xt5kzZ47H/ezevVuEhYUJACIsLEzccccdYtu2beKbb74Rzz//vBg6dKi6jz/96U8d1jR8+HC3vG3atKnDugGISZMmdbjPt99+W/1gJzw8XCxbtky8//77IicnR+zcuVO89dZb4k9/+pNaZ9sPKXqzgR8+fLiIjo4WMTExYtWqVWLHjh1ix44dYtWqVWrzDkC89dZbITO2nmzgy8vL1e9Dv379xMcffyz27t3b4Z/GxsYu156fn69+P2NiYtRMd9RYDRkyRMTExIiFCxeKF198UXzxxRciNzdXfPLJJ+K+++5Tm029Xi+++eYbv2vqiwa+vr5eTJkyRd1+woQJ4umnnxZffvml2L17t/jss8/EU089JS677DIRFhYmMjIy2u0jPz9fREZGqmO98cYbxWeffSZ27dolXnrpJTFy5Ei3nzXe6vr3v/+trk9OThYvvPCCyMnJEdu3bxf33nuviI6OFsOHD+/0Z/itt97q1vCuWLFCfPrpp2L37t3iyy+/FOvWrRPXX3+9iI2NFQCE3W53e3xPNfAnT550+2D63HPPFa+88or4+uuvxTfffCM2bdokbrzxRhEXF9fp+8X1PXT9eeCBBzrcnogChw28D9o21IWFhR4biPPOO0/cddddPf58QgjR2NgoBg8eLK688kpRXl4uGhoaxIMPPigAiAsvvLDbz0kUKO+8845bE9bRH0VRxMyZMz0eZW1sbBQXXnih18eazWbx5ptvqkdYu9LA//jjj2Lw4MFen2Pw4MFi//79asPg7Ze/5uZmcdNNN6m/zHv74+nxu3fvFiaTqdPtfWmeampqxLx58zr9vne3gc/NzW13dKz1n1/96lfCZrN53dd//vMfERUV1WGNy5cv7/DInhAtH7y2zlJxcXG7bVp/3wCI2267rdOxfvDBB25H7bz90el04rPPPvP6fD3dwE+bNk3861//EhaLxWs9jzzySEiNrScb+LavtS9/Omq2fPGrX/3KbX+XXXaZT7V39MdkMnX5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IiIiIiJSE5PJ1O6ge5JQUoeATrJYLDh8+DAiIyMVNdUAyaqrq5GSkoIDBw4gKiqqt0+HqEcx/knNGP+kZox/UrNAiX8hBEwmE/r169duSwHWwNvRaDRITk7u7dOgbhYVFeXXX2Ci7sT4JzVj/JOaMf5JzQIh/r2d7s5/OwIQERERERERkQ0TeCIiIiIiIqIAwASeVEOv1+Of//wn9Hp9b58KUY9j/JOaMf5JzRj/pGZKjH8OYkdEREREREQUAFgDT0RERERERBQAmMATERERERERBQAm8EREREREREQBgAk8ERERERERUQBgAk+KsHnzZkiS5Pbnhx9+cNj3u+++w7nnnouwsDAkJSVh9uzZqKmp6aUzJ/JdTU0N/vnPf2LixImIi4uDJElYvny52313796NiRMnIiIiAnFxcbj11ltRXl7usp/FYsH8+fNx0kknISQkBKmpqVi9enU3l4TId97G//Tp093+TTj99NNd9mX8UyDYtm0b7rrrLgwfPhzh4eEYMGAAbrrpJuzbt89lX177SYm8/Q4o/fqv7e0TIOpKs2fPRmZmpsO6U0891fb7jz/+iAsvvBBDhw7Fiy++iIMHD2LBggX45Zdf8MUXX/T06RJ1yNGjRzF37lwMGDAAI0eOxObNm93ud/DgQZx//vmIjo7GM888g5qaGixYsAA7duzA1q1bERwcbNv30UcfxbPPPou//OUvyMzMxMcff4xbbrkFkiRh8uTJPVQyovZ5G/+APH3Qm2++6bAuOjraZT/GPwWC5557Dt9++y1uvPFGpKam4siRI3jllVeQlpaGH374ASNGjADAaz8pl7ffAUDh139BpAB5eXkCgPjvf//b5n6XXXaZ6Nu3r6iqqrKte+ONNwQAsW7duu4+TaIuUV9fL0pKSoQQQmzbtk0AEMuWLXPZ74477hChoaGiuLjYtm79+vUCgHjttdds6w4ePCh0Op248847bessFos477zzRHJysmhubu6+whD5yNv4nzZtmggPD2/3eIx/ChTffvutaGhocFi3b98+odfrRVZWlm0dr/2kVN5+B5R+/WcTelIck8mE5uZml/XV1dVYv349pkyZgqioKNv6qVOnIiIiAu+++25PniZRh+n1eiQlJbW73/vvv48rr7wSAwYMsK276KKLcNpppznE+8cff4ympib87W9/s62TJAl33HEHDh48iO+//75rC0DUCd7Gv5XZbEZ1dbXH7Yx/ChRjx451qD0HgMGDB2P48OHYvXu3bR2v/aRU3n4HrJR6/WcCT4oyY8YMREVFISQkBOPHj0dBQYFt244dO9Dc3IyMjAyH5wQHB2PUqFHYvn17T58uUbc5dOgQysrKXOIdAM4880yHeN++fTvCw8MxdOhQl/2s24kC0YkTJxAVFYXo6GjExcXhzjvvdBnzhPFPgUwIgdLSUsTHxwPgtZ/Ux/k7YKXk6z/7wJMiBAcH4/rrr8fll1+O+Ph47Nq1CwsWLMB5552H7777DqNHj0ZJSQkAoG/fvi7P79u3L7Zs2dLTp03UbdqL9+PHj6OhoQF6vR4lJSVITEyEJEku+wHA4cOHu/+EibpY3759MWfOHKSlpcFisWDt2rVYvHgxfvrpJ2zevBlarfwvEOOfAtmqVatw6NAhzJ07FwCv/aQ+zt8BQPnXfybwpAhjx47F2LFjbctXX301brjhBqSmpuLhhx/G2rVrUVdXB0BufuksJCTEtp1ICdqLd+s+er3e9tjWfkSBZt68eQ7LkydPxmmnnYZHH30U7733nm1wIsY/Bao9e/bgzjvvxJgxYzBt2jQAvPaTurj7DgDKv/6zCT0p1qmnnoprrrkGeXl5MJvNCA0NBQA0NDS47FtfX2/bTqQE7cW7/T6hoaFe7UcU6O677z5oNBps2LDBto7xT4HoyJEjuOKKKxAdHY333nsPQUFBAHjtJ/Xw9B3wREnXfybwpGgpKSlobGxEbW2trTmMtXmZvZKSEvTr16+nT4+o27QX73Fxcba7zn379sWRI0cghHDZDwC/G6QYoaGh6NOnD44fP25bx/inQFNVVYXLLrsMlZWVWLt2rUOM8tpPatDWd8ATJV3/mcCTov3+++8ICQlBREQERowYAa1W6zCwHQA0Njbixx9/xKhRo3rnJIm6Qf/+/ZGQkOAS7wCwdetWh3gfNWoUTpw44TKCa35+vm07kRKYTCYcPXoUCQkJtnWMfwok9fX1uOqqq7Bv3z589tlnGDZsmMN2XvtJ6dr7DniipOs/E3hShPLycpd1P/30Ez755BNccskl0Gg0iI6OxkUXXYScnByYTCbbftnZ2aipqcGNN97Yk6dM1O2uv/56fPbZZzhw4IBt3caNG7Fv3z6HeL/mmmug0+mwePFi2zohBJYuXYr+/fs7jC9BFAjq6+sdrvNWTz75JIQQmDhxom0d458ChdlsxqRJk/D999/jv//9L8aMGeN2P177Sam8+Q6o4frPQexIESZNmoTQ0FCMHTsWBoMBu3btwuuvv46wsDA8++yztv2efvppjB07FhdccAH++te/4uDBg3jhhRdwySWXOHyhifzdK6+8gsrKStsIqZ9++ikOHjwIALj77rsRHR2NRx55BP/9738xfvx43HPPPaipqcHzzz+PM844AzNmzLAdKzk5Gffeey+ef/55NDU1ITMzEx999BG2bNmCVatWtduvjKintRf/FRUVGD16NG6++WacfvrpAIB169bh888/x8SJE3HNNdfYjsX4p0Dx97//HZ988gmuuuoqHD9+HDk5OQ7bp0yZAgC89pNiefMdOHLkiPKv/4JIARYuXCjOPPNMERcXJ7Rarejbt6+YMmWK+OWXX1z23bJlixg7dqwICQkRCQkJ4s477xTV1dW9cNZEHTdw4EABwO3PH3/8Ydtv586d4pJLLhFhYWEiJiZGZGVliSNHjrgcz2w2i2eeeUYMHDhQBAcHi+HDh4ucnJweLBGR99qL/4qKCjFlyhRx6qmnirCwMKHX68Xw4cPFM888IxobG12Ox/inQHDBBRd4jHvnf+l57Scl8uY7oIbrvySEU699IiIiIiIiIvI77ANPREREREREFACYwBMREREREREFACbwRERERERERAGACTwRERERERFRAGACT0RERERERBQAmMATERERERERBQAm8EREREREREQBgAk8ERERERERUQBgAk9EREREREQUAJjAExERkd+ZPn06JEmCJEn46KOPevVcNm/ebDuXa6+9tlfPhYiI1I0JPBERUQ+wT0jtf3799dfePjW/NXHiRJSUlOCyyy6zrbO+bz/88IPDvg0NDejTpw8kScLmzZsd9nd3A2D69OleJ+Njx45FSUkJbrrppo4Ug4iIqMswgSciIuoh1oTU/uekk05y2a+xsbEXzs7/6PV6JCUlQa/XO6xPSUnBsmXLHNZ9+OGHiIiI6JbzCA4ORlJSEkJDQ7vl+ERERN5iAk9ERNRDrAmp/U9QUBDGjRuHu+66C/feey/i4+Nx6aWXAgB27tyJyy67DBEREUhMTMStt96Ko0eP2o5XW1uLqVOnIiIiAn379sULL7yAcePG4d5777Xt464GOiYmBsuXL7ctHzhwADfddBNiYmIQFxeHa665BkVFRbbt1trqBQsWoG/fvujTpw/uvPNONDU12fZpaGjAgw8+iJSUFOj1epx66ql46623IITAqaeeigULFjicw48//tjhFgjTpk1Dbm4u6urqbOvefvttTJs2zedjAUBRUZHb1hHjxo3r0PGIiIi6CxN4IiIiP7BixQoEBwfj22+/xdKlS1FZWYkJEyZg9OjRKCgowNq1a1FaWurQjPsf//gHvvrqK3z88cf48ssvsXnzZhQWFvr0uk1NTbj00ksRGRmJLVu24Ntvv0VERAQmTpzo0BIgLy8Pv/32G/Ly8rBixQosX77c4SbA1KlTsXr1aixatAi7d+/Ga6+9hoiICEiShNtuu82lxnzZsmU4//zzceqpp/r8XqWnp2PQoEF4//33AQD79+/H119/jVtvvdXnYwFyjb59q4jt27ejT58+OP/88zt0PCIiou6i7e0TICIiUovPPvvMoZn3ZZddhv/+978AgMGDB2P+/Pm2bU899RRGjx6NZ555xrbu7bffRkpKCvbt24d+/frhrbfeQk5ODi688EIA8k2A5ORkn85pzZo1sFgsePPNNyFJEgA5uY6JicHmzZtxySWXAABiY2PxyiuvICgoCKeffjquuOIKbNy4EX/5y1+wb98+vPvuu1i/fj0uuugiAMDJJ59se43p06fjiSeewNatW3HmmWeiqakJ77zzjkutvC9uu+02vP3225gyZQqWL1+Oyy+/HAkJCW73vfnmmxEUFOSwrqGhAVdccQUAICgoCElJSQCA+vp6XHvttRgzZgz+9a9/dfj8iIiIugMTeCIioh4yfvx4LFmyxLYcHh5u+z09Pd1h359++gl5eXlu+3X/9ttvqKurQ2NjI8466yzb+ri4OAwZMsSnc/rpp5/w66+/IjIy0mF9fX09fvvtN9vy8OHDHZLgvn37YseOHQDk5vBBQUG44IIL3L5Gv379cMUVV+Dtt9/GmWeeiU8//RQNDQ248cYbfTpXe1OmTMFDDz2E33//HcuXL8eiRYs87vvSSy/ZbixYPfjggzCbzS773nbbbTCZTFi/fj00GjZUJCIi/8IEnoiIqIeEh4d7bDJun8wDQE1NDa666io899xzLvv27dvX677jkiRBCOGwzr7vek1NDdLT07Fq1SqX59rXaOt0OpfjWiwWAPBqcLc///nPuPXWW/HSSy9h2bJlmDRpEsLCwrwqgzt9+vTBlVdeiZkzZ6K+vh6XXXYZTCaT232TkpJc3vfIyEhUVlY6rHvqqaewbt06bN261eWGBhERkT9gAk9EROSH0tLS8P7772PQoEHQal3/XJ9yyinQ6XTIz8/HgAEDAAAVFRXYt2+fQ014QkICSkpKbMu//PILTpw44fA6a9asgcFgQFRUVIfO9YwzzoDFYsFXX33lUtNtdfnllyM8PBxLlizB2rVr8fXXX3fotezddtttuPzyy/Hggw+6NJH31fvvv4+5c+fiiy++wCmnnNLpcyMiIuoObBtGRETkh+68804cP34cN998M7Zt24bffvsN69atw4wZM2A2mxEREYGZM2fiH//4BzZt2oSdO3di+vTpLs2+J0yYgFdeeQXbt29HQUEBbr/9dofa9KysLMTHx+Oaa67Bli1b8Mcff2Dz5s2YPXs2Dh486NW5Dho0CNOmTcNtt92Gjz76yHaMd99917ZPUFAQpk+fjocffhiDBw/GmDFjOv0eTZw4EeXl5Zg7d26njrNz505MnToVDz74IIYPH44jR47gyJEjOH78eKfPkYiIqCsxgSciIvJD/fr1w7fffguz2YxLLrkEZ5xxBu69917ExMTYkvTnn38e5513Hq666ipcdNFFOPfcc1360r/wwgtISUnBeeedh1tuuQUPPPCAQ9P1sLAwfP311xgwYACuu+46DB061NYs3Zca+SVLluCGG27A3/72N5x++un4y1/+gtraWod9Zs6cicbGRsyYMaMT70wrSZIQHx+P4ODgTh2noKAAJ06cwFNPPYW+ffvafq677rouOU8iIqKuIgnnjnFEREQUsMaNG4dRo0bh5Zdf7u1TcbFlyxZceOGFOHDgABITE9vcd/r06aisrHSZw743+eM5ERGRurAGnoiIiLpVQ0MDDh48iH/961+48cYb203erazT7n322WfdfIZt27JlCyIiItwO9EdERNSTOIgdERERdavVq1dj5syZGDVqFFauXOnVc+bPn4/HHnsMgDzqfm/KyMjAjz/+CABup/UjIiLqKWxCT0RERERERBQA2ISeiIiIiIiIKAAwgSciIiIiIiIKAEzgiYiIiIiIiAIAE3giIiIiIiKiAMAEnoiIiIiIiCgAMIEnIiIiIiIiCgBM4ImIiIiIiIgCABN4IiIiIiIiogDw/yGeAkQhejSuAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(12, 8))\n", + "plt.title('Galactic power vs LST',fontsize=20)\n", + "plt.plot(lstaxis,np.sum(plX,0)*dnu*1e6,'k')\n", + "plt.plot(lstaxis,np.sum(plY,0)*dnu*1e6,'y')\n", + "plt.plot(lstaxis,np.sum(plZ,0)*dnu*1e6,'b')\n", + "plt.grid(ls='--', alpha=0.3)\n", + "plt.xlabel('LST [h]',fontsize=16)\n", + "plt.ylabel('P$_L$ [W]',fontsize=16)\n", + "plt.legend([\"port X\", \"port Y\", \"port Z\"], loc=\"best\",fontsize=12)\n", + "plt.xticks(fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.show()\n", + "\n", + "lst=18\n", + "plt.figure(figsize=(12, 8))\n", + "plt.title('Galactic power per Hz vs Frequency',fontsize=20)\n", + "plt.plot(freqs,plX[:,lstaxis==lst],'-*',color='k')\n", + "plt.plot(freqs,plY[:,lstaxis==lst],'-*',color='y')\n", + "plt.plot(freqs,plZ[:,lstaxis==lst],'-*',color='b')\n", + "plt.grid(ls='--', alpha=0.3)\n", + "plt.legend([\"port X\", \"port Y\", \"port Z\"], loc=\"best\",fontsize=12)\n", + "plt.xticks(fontsize=12)\n", + "plt.yticks(fontsize=12)\n", + "plt.xlabel('Frequency [MHz]')\n", + "plt.ylabel('P$_L$ [W/Hz]')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf87fca7-3a71-4bea-8e77-bf9df36ce0cc", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/grand/sim/noise/Compute_Plot_Galactic_Noise.py b/grand/sim/noise/Compute_Plot_Galactic_Noise.py new file mode 100755 index 00000000..6dff2340 --- /dev/null +++ b/grand/sim/noise/Compute_Plot_Galactic_Noise.py @@ -0,0 +1,397 @@ +#!/usr/bin/python + +# This script simulates galactic noise in both sites gp13, gaa. +# Please run first the script /grand/data/python3 download_LFmap_grand.py in order to download the LFmap files which are used for the Galactic noise calculations. The LFmap files are stored in the directory /grand/data/noise/LFmap +# Computes Open circuit Voltage (before RF chain), output voltage (after RF chain), Power, +# average temperature, radiance and Electric field. +# Author: Stavros Nonis +#usage: Compute_plot_Galactic_Noise.py [-h] [--site {gp13,gaa}] +# [--du_type {GP300,GP300_nec,GP300_mat}] --run_mode +# {Voc,Vout,PL,Efield} +# [--lst_value {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23}] + +#Process Galactic Noise Data +# +#optional arguments: +# -h, --help show this help message and exit +# --site {gp13,gaa} Site location +# --du_type {GP300,GP300_nec,GP300_mat} +# Detector unit type +# --run_mode {Voc,Vout,PL,Efield} +# Run mode +# --lst_value {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23} + #LST value for frequency plot +# Example of how to use: +#python3 Compute_plot_Galactic_Noise.py --site gp13 --du_type GP300 --run_mode Voc --lst_value 18 +# For the Voc run_mode the output file that saved is in shape (221,72,3) wich means the Volts/Hz for 221 #frequencies bins (30-250 MHz step 1MHz), 72 LST bins (0:00-23:40, step 20 min) for X, Y, Z ports. + +# For the Vout run_mode the output file that saved is in shape (221,72,3) wich means the Volts/Hz for #221 frequencies bins (30-250 MHz step 1MHz), 72 LST bins (0:00-23:40, step 20 min) for X, Y, Z ports. + +# For the PL run_mode the output file that saved is in shape (221,72,3) wich means the Watt/Hz for 221 #frequencies bins (30-250 MHz step 1MHz), 72 LST bins (0:00-23:40, step 20 min) for X, Y, Z ports. + +# For the Efield run_mode the output file that saved is in shape (221,72,3) wich means the (J), the average radiance (W/m2/Hz) and the average Efiled_rms^2 (V2/m2/Hz) for 221 #frequencies bins (30-250 MHz step 1MHz), 72 LST bins (0:00-23:40, step 20 min). + + +import numpy as np +import argparse +import matplotlib.pyplot as plt +import grand.sim.detector.rf_chain as grfc +from grand import grand_add_path_data + +def compute_rfchain_and_latitude(site): + if site == "gp13": + rfchain = grfc.RFChain(vga_gain=20) + latitude = (90 - 40.98) * np.pi / 180 + elif site == "gaa": + rfchain = grfc.RFChain_gaa() + latitude = (90 + 36) * np.pi / 180 + else: + raise ValueError("Unsupported site value!") + return rfchain, latitude + +def compute_antenna_paths(du_type): + if du_type == "GP300": + path_antX = grand_add_path_data("detector/Light_GP300Antenna_SNarm_leff.npz") + path_antY = grand_add_path_data("detector/Light_GP300Antenna_EWarm_leff.npz") + path_antZ = grand_add_path_data("detector/Light_GP300Antenna_Zarm_leff.npz") + elif du_type == "GP300_nec": + path_antX = grand_add_path_data("detector/Light_GP300Antenna_nec_Xarm_leff.npz") + path_antY = grand_add_path_data("detector/Light_GP300Antenna_nec_Yarm_leff.npz") + path_antZ = grand_add_path_data("detector/Light_GP300Antenna_nec_Zarm_leff.npz") + elif du_type == "GP300_mat": + path_antX = grand_add_path_data("detector/Light_GP300Antenna_mat_Xarm_leff.npz") + path_antY = grand_add_path_data("detector/Light_GP300Antenna_mat_Yarm_leff.npz") + path_antZ = grand_add_path_data("detector/Light_GP300Antenna_mat_Zarm_leff.npz") + else: + raise ValueError("Unsupported du_type value!") + return path_antX, path_antY, path_antZ + +def main(site, du_type, run_mode, lst_value): + freq_MHz = np.arange(30, 251, 1) + + # Initialize RFChain and latitude based on site + rfchain, latitude = compute_rfchain_and_latitude(site) + rfchain.compute_for_freqs(freq_MHz) + RFchainNS = np.array(rfchain.get_tf()[0]) + RFchainEW = np.array(rfchain.get_tf()[1]) + RFchainZ = np.array(rfchain.get_tf()[2]) + + # Initialize antenna paths based on du_type + path_antX, path_antY, path_antZ = compute_antenna_paths(du_type) + f_leffX = np.load(path_antX) + f_leffY = np.load(path_antY) + f_leffZ = np.load(path_antZ) + + freqsleff = f_leffX["freq_mhz"] + leffthX = np.moveaxis(np.abs(f_leffX["leff_theta"]), -1, 0) + leffphX = np.moveaxis(np.abs(f_leffX["leff_phi"]), -1, 0) + leffthY = np.moveaxis(np.abs(f_leffY["leff_theta"]), -1, 0) + leffphY = np.moveaxis(np.abs(f_leffY["leff_phi"]), -1, 0) + leffthZ = np.moveaxis(np.abs(f_leffZ["leff_theta"]), -1, 0) + leffphZ = np.moveaxis(np.abs(f_leffZ["leff_phi"]), -1, 0) + + lefftX = np.zeros((len(freqsleff), 361, 181)) + leffpX = np.zeros((len(freqsleff), 361, 181)) + lefftY = np.zeros((len(freqsleff), 361, 181)) + leffpY = np.zeros((len(freqsleff), 361, 181)) + lefftZ = np.zeros((len(freqsleff), 361, 181)) + leffpZ = np.zeros((len(freqsleff), 361, 181)) + + lefftX[:, :, :91] = leffthX + leffpX[:, :, :91] = leffphX + lefftY[:, :, :91] = leffthY + leffpY[:, :, :91] = leffphY + lefftZ[:, :, :91] = leffthZ + leffpZ[:, :, :91] = leffphZ + + # Constants and frequency setup + c = 299792458 + kB = 1.38064852e-23 + Z0 = 120 * np.pi + dnu = 1 # MHz + freqs = np.arange(30, 251, dnu) + longitude = np.arange(180, 360 + 180, 5) + lstaxis = (longitude - 180) / 15 + lon=longitude*np.pi/180 #rad + + # Initialize variables to store results + voc2X = np.zeros((len(freqs), len(lstaxis))) + voc2Y = np.zeros((len(freqs), len(lstaxis))) + voc2Z = np.zeros((len(freqs), len(lstaxis))) + vout2X = np.zeros_like(voc2X) + vout2Y = np.zeros_like(voc2Y) + vout2Z = np.zeros_like(voc2Z) + + avleff2X=np.zeros(len(freqs)) + avleff2Y=np.zeros(len(freqs)) + avleff2Z=np.zeros(len(freqs)) + avtemp=np.zeros(len(freqs)) + avBnu=np.zeros(len(freqs)) + avErms2=np.zeros(len(freqs)) + + dphi=5 #deg + dtheta=5 #deg + zenith,azimuth=np.meshgrid( np.arange(0,180,dtheta)*np.pi/180, np.arange(0,360,dphi)*np.pi/180 )#rad + nazimuth=72 + nzenith=36 + idselfreq=np.arange(0,len(freqsleff),dnu) + idseltheta=np.arange(0,181,dphi) + idselphi=np.arange(0,361,dtheta) + lefftX=lefftX[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + leffpX=leffpX[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + lefftY=lefftY[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + leffpY=leffpY[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + lefftZ=lefftZ[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + leffpZ=leffpZ[idselfreq,:,:][:,idselphi,:][:,:,idseltheta] + T=np.zeros((len(freqs),len(lon),72,36)) + print("Compute Galactic noise contribution in the frequency range 30-250 MHz") + + for f in range(len(freqs)): + ra,dec,temp=np.load(grand_add_path_data("noise/LFmap/LFmapshort"+str(freqs[f])+".npy")) #rad inside + integ=0 + print("f = ",freqs[f],"MHz") + + for l in range(len(lon)): + omega=0 + for i in range(nazimuth): + for j in range(nzenith): + #(RzRy)-1 + coszenithp=(np.sin(latitude)*np.cos(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j])+np.sin(latitude)*np.sin(lon[l])*np.sin(zenith[i,j])*np.sin(azimuth[i,j])+np.cos(zenith[i,j])*np.cos(latitude)) + zenithp=np.arccos(coszenithp) + cosazimuthp=(np.cos(latitude)*np.cos(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j]) +np.sin(lon[l])*np.cos(latitude)*np.sin(zenith[i,j])*np.sin(azimuth[i,j]) -np.sin(latitude)*np.cos(zenith[i,j]) ) / np.sin(zenithp) + sinazimuthp=(-np.sin(lon[l])*np.sin(zenith[i,j])*np.cos(azimuth[i,j])+ np.cos(lon[l])*np.sin(zenith[i,j])*np.sin(azimuth[i,j])) / np.sin(zenithp) + if zenithp==0: + print('zenithp=0') + print(zenith[i,j],azimuth[i,j]) + print(zenithp,cosazimuthp,sinazimuthp) + if cosazimuthp<-1.1 or cosazimuthp>1.1: + print('cos out of range') + print(zenith[i,j],azimuth[i,j]) + print(zenithp,cosazimuthp,sinazimuthp) + + if sinazimuthp<0: + if cosazimuthp<-1: + azimuthp=2*np.pi-np.arccos(-1) + elif cosazimuthp>1: + azimuthp=2*np.pi-np.arccos(1) + else: + azimuthp=2*np.pi-np.arccos(cosazimuthp) + + else: + if cosazimuthp<-1: + azimuthp=np.arccos(-1) + elif cosazimuthp>1: + azimuthp=np.arccos(1) + else: + azimuthp=np.arccos(cosazimuthp) + diffzenith=zenithp-zenith[i,j] + diffazimuth=azimuthp-azimuth[i,j] + + ip=int(i+round(diffazimuth/(dphi*np.pi/180))) + jp=int(j+round(diffzenith/(dtheta*np.pi/180))) + + contribX = (lefftX[f,ip,jp]**2+leffpX[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + contribY = (lefftY[f,ip,jp]**2+leffpY[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + contribZ = (lefftZ[f,ip,jp]**2+leffpZ[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + contribXX = abs(RFchainNS[f])*abs(RFchainNS[f])*(lefftX[f,ip,jp]**2+leffpX[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + contribYY = abs(RFchainEW[f])*abs(RFchainEW[f])*(lefftY[f,ip,jp]**2+leffpY[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + contribZZ = abs(RFchainZ[f])*abs(RFchainZ[f])*(lefftZ[f,ip,jp]**2+leffpZ[f,ip,jp]**2)*temp[i,j]*np.sin(zenith[i,j]) + + #print(contrib) + if contribX!=0: + T[f,l,i,j]=temp[i,j] + #omega=omega+np.sin(zenith[i,j]) + voc2X[f,l]=voc2X[f,l] + contribX + voc2Y[f,l]=voc2Y[f,l] + contribY + voc2Z[f,l]=voc2Z[f,l] + contribZ + + vout2X[f,l]=vout2X[f,l] + contribXX + vout2Y[f,l]=vout2Y[f,l] + contribYY + vout2Z[f,l]=vout2Z[f,l] + contribZZ + + if l==0: + avleff2X[f]=avleff2X[f] + (lefftX[f,i,j]**2+leffpX[f,i,j]**2)*np.sin(zenith[i,j]) + avleff2Y[f]=avleff2Y[f] + (lefftY[f,i,j]**2+leffpY[f,i,j]**2)*np.sin(zenith[i,j]) + avleff2Z[f]=avleff2Z[f] + (lefftZ[f,i,j]**2+leffpZ[f,i,j]**2)*np.sin(zenith[i,j]) + avtemp[f]=avtemp[f] + temp[i,j]*np.sin(zenith[i,j]) + avBnu[f]=avBnu[f] + temp[i,j]*2*(freqs[f]*1e6)**2*kB/(c**2)*np.sin(zenith[i,j]) + avErms2[f]=avErms2[f] + temp[i,j]*4*(np.pi)*Z0*(freqs[f]*1e6)**2*kB/(c**2)*np.sin(zenith[i,j]) + #lon0Voc2[f]= lon0Voc2[f]+ (lefft[f,ip,jp]**2+leffp[f,ip,jp]**2)* Z0* temp[i,j] * (freqs[f]*1e6)**2 * kB/(c**2) *np.sin(zenith[i,j]) + + voc2X[f,:]=voc2X[f,:]*(freqs[f]*1e6)**2 + voc2Y[f,:]=voc2Y[f,:]*(freqs[f]*1e6)**2 + voc2Z[f,:]=voc2Z[f,:]*(freqs[f]*1e6)**2 + vout2X[f,:]=vout2X[f,:]*(freqs[f]*1e6)**2 + vout2Y[f,:]=vout2Y[f,:]*(freqs[f]*1e6)**2 + vout2Z[f,:]=vout2Z[f,:]*(freqs[f]*1e6)**2 + voc2X=voc2X*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + voc2Y=voc2Y*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + voc2Z=voc2Z*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + + vout2X=vout2X*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + vout2Y=vout2Y*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + vout2Z=vout2Z*kB*Z0/(c**2)*dtheta*np.pi/180*dphi*np.pi/180 #per Hz + + avleff2X=avleff2X*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + avleff2Y=avleff2Y*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + avleff2Z=avleff2Z*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + avtemp=avtemp*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + avBnu=avBnu*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + avErms2=0.5*avErms2*dtheta*np.pi/180*dphi*np.pi/180/(4*np.pi) + + filename = grand_add_path_data("detector/RFchain_v2/Z_ant_3.2m.csv") + RLX,RLY,RLZ = np.loadtxt(filename, delimiter=",", usecols = (1,3,5), skiprows=1, unpack=True) + RLbisX=np.zeros((len(freqs),len(lon))) + RLbisY=np.zeros((len(freqs),len(lon))) + RLbisZ=np.zeros((len(freqs),len(lon))) + RLbisX=RLbisX.T + RLbisY=RLbisY.T + RLbisZ=RLbisZ.T + RLbisX[:]=RLX + RLbisY[:]=RLY + RLbisZ[:]=RLZ + RLbisX=RLbisX.T + RLbisY=RLbisY.T + RLbisZ=RLbisZ.T + plX=voc2X/(4*RLbisX) + plY=voc2Y/(4*RLbisY) + plZ=voc2Z/(4*RLbisZ) + + # Saving and plotting based on run_mode + if run_mode == "Voc": + np.save(f"galactic_Voc2_per_Hz_{site}_{du_type}.npy", np.stack([voc2X, voc2Y, voc2Z], axis=-1)) + + plt.figure(figsize=(12, 8)) + plt.title('Square of Open Circuit Voltage vs LST', fontsize=20) + plt.plot(lstaxis, np.sum(voc2X, 0) * dnu * 1e6, 'k') + plt.plot(lstaxis, np.sum(voc2Y, 0) * dnu * 1e6, 'y') + plt.plot(lstaxis, np.sum(voc2Z, 0) * dnu * 1e6, 'b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('LST [h]', fontsize=16) + plt.ylabel('V$_{oc,RMS}^2$ [V$^2$]', fontsize=16) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_Voc2_LST_{site}_{du_type}.png") + plt.close() + + plt.figure(figsize=(12, 8)) + plt.title(f'Square of open circuit Voltage per Hz vs Frequency at LST {lst_value} h', fontsize=20) + plt.plot(freqs, voc2X[:, lst_value == lstaxis].flatten(), '-*', color='k') + plt.plot(freqs, voc2Y[:, lst_value == lstaxis].flatten(), '-*', color='y') + plt.plot(freqs, voc2Z[:, lst_value == lstaxis].flatten(), '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.xlabel('Frequency [MHz]') + plt.ylabel('V$_{oc,RMS}^2$ [V$^2$/Hz]') + plt.savefig(f"galactic_Voc2_freq_{site}_{du_type}.png") + plt.close() + + elif run_mode == "Vout": + np.save(f"galactic_Vout2_per_Hz_{site}_{du_type}.npy", np.stack([vout2X, vout2Y, vout2Z], axis=-1)) + + plt.figure(figsize=(12, 8)) + plt.title('Square of Output Voltage vs LST', fontsize=20) + plt.plot(lstaxis, np.sum(vout2X, 0) * dnu * 1e6, 'k') + plt.plot(lstaxis, np.sum(vout2Y, 0) * dnu * 1e6, 'y') + plt.plot(lstaxis, np.sum(vout2Z, 0) * dnu * 1e6, 'b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('LST [h]', fontsize=16) + plt.ylabel('V$_{out,RMS}^2$ [V$^2$]', fontsize=16) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_Vout2_LST_{site}_{du_type}.png") + plt.close() + + plt.figure(figsize=(12, 8)) + plt.title(f'Square of Output Voltage per Hz vs Frequency at LST {lst_value} h', fontsize=20) + plt.plot(freqs, vout2X[:, lst_value == lstaxis].flatten(), '-*', color='k') + plt.plot(freqs, vout2Y[:, lst_value == lstaxis].flatten(), '-*', color='y') + plt.plot(freqs, vout2Z[:, lst_value == lstaxis].flatten(), '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.xlabel('Frequency [MHz]') + plt.ylabel('V$_{out,RMS}^2$ [V$^2$/Hz]') + plt.savefig(f"galactic_Vout2_freq_{site}_{du_type}.png") + plt.close() + + elif run_mode == "PL": + np.save(f"galactic_PL_per_Hz_{site}_{du_type}.npy", np.stack([plX, plY, plZ], axis=-1)) + + plt.figure(figsize=(12, 8)) + plt.title('Galactic Power vs LST', fontsize=20) + plt.plot(lstaxis, np.sum(plX, 0) * dnu * 1e6 / 4, 'k') + plt.plot(lstaxis, np.sum(plY, 0) * dnu * 1e6 / 4, 'y') + plt.plot(lstaxis, np.sum(plZ, 0) * dnu * 1e6 / 4, 'b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('LST [h]', fontsize=16) + plt.ylabel('P$_L$ [W]', fontsize=16) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_PL_LST_{site}_{du_type}.png") + plt.close() + + plt.figure(figsize=(12, 8)) + plt.title(f'Galactic Power per Hz vs Frequency at LST {lst_value}h', fontsize=20) + plt.plot(freqs, plX[:, lst_value == lstaxis].flatten(), '-*', color='k') + plt.plot(freqs, plY[:, lst_value == lstaxis].flatten(), '-*', color='y') + plt.plot(freqs, plZ[:, lst_value == lstaxis].flatten(), '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.legend(["port X", "port Y", "port Z"], loc="best", fontsize=12) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.xlabel('Frequency [MHz]') + plt.ylabel('P$_L$ [W/Hz]') + plt.savefig(f"galactic_PL_freq_{site}_{du_type}.png") + plt.close() + + elif run_mode == "Efield": + np.save(f"galactic_Efield2_per_Hz_{site}_{du_type}.npy", np.stack([avtemp, avBnu, avErms2], axis=-1)) + + plt.figure(figsize=(12, 8)) + plt.title('Average Galactic Temperature vs Frequency', fontsize=20) + plt.plot(freqs, avtemp * kB, '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('Frequency [MHz]', fontsize=16) + plt.ylabel('k$_B$$_{4\\pi}$ [J]', fontsize=16) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_temp_{site}_{du_type}.png") + plt.close() + + plt.figure(figsize=(12, 8)) + plt.title('Average Galactic Radiance vs Frequency', fontsize=20) + plt.plot(freqs, avBnu, '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('Frequency [MHz]', fontsize=16) + plt.ylabel('$_{4\\pi}$ [W$\cdot$m$^{-2}$$\cdot$sr$^{-1}$$\cdot$Hz$^{-1}$]', fontsize=16) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_bnu_{site}_{du_type}.png") + plt.close() + + plt.figure(figsize=(12, 8)) + plt.title('Average Galactic Square Electric Field vs Frequency', fontsize=20) + plt.plot(freqs, avErms2, '-*', color='b') + plt.grid(ls='--', alpha=0.3) + plt.xlabel('Frequency [MHz]', fontsize=16) + plt.ylabel('<|E|$^{2}$$_{rms}$>$_{4\\pi}$ [V$^{2}$/m$^{2}$$\cdot$Hz$^{-1}$]', fontsize=16) + plt.xticks(fontsize=12) + plt.yticks(fontsize=12) + plt.savefig(f"galactic_avErms2_{site}_{du_type}.png") + plt.close() + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Process Galactic Noise Data") + parser.add_argument("--site", type=str, choices=["gp13", "gaa"], default="gp13", help="Site location") + parser.add_argument("--du_type", type=str, choices=["GP300", "GP300_nec", "GP300_mat"], default="GP300", help="Detector unit type") + parser.add_argument("--run_mode", type=str, choices=["Voc", "Vout", "PL", "Efield"], required=True, help="Run mode") + parser.add_argument("--lst_value", type=int, default=18, choices=range(0, 24), help="LST value for frequency plot") + + args = parser.parse_args() + main(args.site, args.du_type, args.run_mode, args.lst_value) \ No newline at end of file diff --git a/grand/sim/noise/Test_for_new_galaxy_py.ipynb b/grand/sim/noise/Test_for_new_galaxy_py.ipynb deleted file mode 100644 index 124a42a2..00000000 --- a/grand/sim/noise/Test_for_new_galaxy_py.ipynb +++ /dev/null @@ -1,676 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 34, - "id": "ce21eeda-1031-4769-9cda-b6df12b3c950", - "metadata": {}, - "outputs": [], - "source": [ - "import h5py\n", - "import numpy as np\n", - "from matplotlib import pyplot as plt\n", - "def interpol_at_new_x(a_x, a_y, new_x):\n", - " \"\"\"\n", - " Interpolation of discreet function F defined by set of point F(a_x)=a_y for new_x value\n", - " and set to zero outside interval definition a_x\n", - "\n", - " :param a_x (float, (N)): F(a_x) = a_y, N size of a_x\n", - " :param a_y (float, (N)): F(a_x) = a_y\n", - " :param new_x (float, (M)): new value of x\n", - "\n", - " :return: F(new_x) (float, (M)): interpolation of F at new_x\n", - " \"\"\"\n", - " from scipy import interpolate\n", - " assert a_x.shape[0] > 0\n", - " func_interpol = interpolate.interp1d(\n", - " a_x, a_y, \"cubic\", bounds_error=False, fill_value=(0.0, 0.0)\n", - " )\n", - " return func_interpol(new_x)\n", - "\n", - "lst=3\n", - "gala_file = \"/home/grand/data/noise/30_250galactic.mat\"\n", - "gala_file2 = '/home/grand/data/noise/Vocmax_30-250MHz_uVperMHz_hfss.npy'\n", - "gala_show = h5py.File(gala_file, \"r\")\n", - "gala_psd_dbm = np.transpose(gala_show[\"psd_narrow_huatu\"])\n", - "gala_power_dbm = np.transpose(gala_show[\"p_narrow_huatu\"]) # SL, dbm per MHz, P=mean(V*V)/imp with imp=100 ohms\n", - "#gala_voltage = np.transpose(gala_show[\"v_amplitude\"]) # SL, microV per MHz, seems to be Vmax=sqrt(2*mean(V*V)), not std(V)=sqrt(mean(V*V))\n", - "gala_voltage = np.load(gala_file2) # SL, microV per MHz, seems to be Vmax=sqrt(2*mean(V*V)), not std(V)=sqrt(mean(V*V))\n", - "gala_voltage = np.transpose(gala_voltage, (0, 2, 1))\n", - "# gala_power_mag = np.transpose(gala_show[\"p_narrow\"])\n", - "gala_freq = gala_show[\"freq_all\"]\n", - "v_amplitude_infile = gala_voltage[:, :, lst - 1]" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "82e8d7e0-764f-47ef-a5c3-2c6dedc19fdb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gala_freq" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "6117411d-6b90-45da-a8f8-5f02488b8ac3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "221" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(gala_freq[:, 0])" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "5528cd40-0d75-4120-b3ef-a96a44c61ef1", - "metadata": {}, - "outputs": [], - "source": [ - "#gala_voltage.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "fac3e14e-bfbc-437d-af23-c0c0dea80b15", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "216" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(v_amplitude_infile[:, 0])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d9c4152b-df3c-4435-9378-8cc7c7192794", - "metadata": {}, - "outputs": [], - "source": [ - "#gala_power_dbm.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "e9ed7793-f841-4d30-b0f6-ed17287fb642", - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "Simulation of galaxy emission in radio frequency\n", - "\"\"\"\n", - "\n", - "import h5py\n", - "import numpy as np\n", - "from grand import grand_add_path_data\n", - "\n", - "def interpol_at_new_x(a_x, a_y, new_x):\n", - " \"\"\"\n", - " Interpolation of discreet function F defined by set of point F(a_x)=a_y for new_x value\n", - " and set to zero outside interval definition a_x\n", - "\n", - " :param a_x (float, (N)): F(a_x) = a_y, N size of a_x\n", - " :param a_y (float, (N)): F(a_x) = a_y\n", - " :param new_x (float, (M)): new value of x\n", - "\n", - " :return: F(new_x) (float, (M)): interpolation of F at new_x\n", - " \"\"\"\n", - " from scipy import interpolate\n", - " assert a_x.shape[0] > 0\n", - " func_interpol = interpolate.interp1d(\n", - " a_x, a_y, \"cubic\", bounds_error=False, fill_value=(0.0, 0.0)\n", - " )\n", - " return func_interpol(new_x)\n", - "\n", - "def galactic_noise(f_lst, size_out, freqs_mhz, nb_ant, seed=None, du_type='GP300'):\n", - " \"\"\"\n", - " This program is used as a subroutine to complete the calculation and\n", - " expansion of galactic noise\n", - "\n", - " ..Authors:\n", - " PengFei and Xidian group\n", - " Modified by SN including different antenna models for leff\n", - " :param f_lst: select the galactic noise LST at the LST moment\n", - " : type f_lst: float\n", - " :param size_out: is the extended length\n", - " : type size_out: int\n", - " :param freqs_mhz: array of output frequencies\n", - " : type freqs_mhz: float (nb freq,)\n", - " :param nb_ant: number of antennas\n", - " : type nb_ant: int\n", - " :param show_flag: print figure\n", - " : type show_flag: boll\n", - " :param seed: if None, values are randomly generated as expected. \n", - " if number, same set of randomly generated output. This is useful for testing.\n", - " : du_type: Calculate the galactic noise for different antenna model simulations.\n", - " 'GP300' (default) uses hfss simulations for leff\n", - " 'GP300_nec' uses nec simulations for leff\n", - " 'Gp300_mat' uses matlab simulations fro leff\n", - " :return: FFT of galactic noise for all DU and components\n", - " :rtype: float(nb du, 3, nb freq)\n", - " \"\"\"\n", - " # TODO: why lst is an integer ?\n", - " lst = int(f_lst)\n", - " \n", - " if du_type == 'GP300':\n", - " gala_file = grand_add_path_data(\"noise/Vocmax_30-250MHz_uVperMHz_hfss.npy\")\n", - " gala_file1 = grand_add_path_data(\"noise/Pocmax_30-250_Watt_per_MHz_hfss.npy\")\n", - " gala_file2 = grand_add_path_data(\"noise/Pocmax_30-250_dBm_per_MHz_hfss.npy\")\n", - " gala_file3 = grand_add_path_data(\"noise/30_250galactic.mat\")\n", - " gala_show = h5py.File(gala_file3, \"r\")\n", - " gala_voltage = np.load(gala_file)\n", - " gala_voltage = np.transpose(gala_voltage, (0, 2, 1)) #micro Volts per MHz (max)\n", - " gala_power_watt = np.load(gala_file1) \n", - " gala_power_watt = np.transpose(gala_power_watt, (0, 2, 1)) #watt per MHz\n", - " gala_power_dbm = np.load(gala_file2)\n", - " gala_power_dbm = np.transpose(gala_power_dbm, (0, 2, 1)) # dBm per MHz\n", - " gala_freq = gala_show[\"freq_all\"]\n", - "\n", - " \"\"\"f_start = 30\n", - " f_end = 250\n", - " # TODO: 221 is the number of frequency ? why ? and comment to explain\n", - " nb_freq = 221\n", - " v_complex_double = np.zeros((nb_ant, size_out, 3), dtype=complex)\n", - " galactic_v_time = np.zeros((nb_ant, size_out, 3), dtype=float)\n", - " galactic_v_m_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\n", - " galactic_v_p_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\"\"\"\n", - " v_amplitude_infile = gala_voltage[:, :, lst - 1]\n", - " \n", - " elif du_type == 'GP300_nec':\n", - " gala_file = grand_add_path_data(\"noise/Vocmax_30-250MHz_uVperMHz_nec.npy\")\n", - " gala_file1 = grand_add_path_data(\"noise/Pocmax_30-250_Watt_per_MHz_nec.npy\")\n", - " gala_file2 = grand_add_path_data(\"noise/Pocmax_30-250_dBm_per_MHz_nec.npy\")\n", - " gala_file3 = grand_add_path_data(\"noise/30_250galactic.mat\")\n", - " gala_show = h5py.File(gala_file3, \"r\")\n", - " gala_voltage = np.load(gala_file)\n", - " gala_voltage = np.transpose(gala_voltage, (0, 2, 1)) #micro Volts per MHz (max)\n", - " gala_power_watt = np.load(gala_file1) \n", - " gala_power_watt = np.transpose(gala_power_watt, (0, 2, 1)) #watt per MHz\n", - " gala_power_dbm = np.load(gala_file2)\n", - " gala_power_dbm = np.transpose(gala_power_dbm, (0, 2, 1)) # dBm per MHz\n", - " gala_freq = gala_show[\"freq_all\"]\n", - " \"\"\"f_start = 30\n", - " f_end = 250\n", - " # TODO: 221 is the number of frequency ? why ? and comment to explain\n", - " nb_freq = 221\n", - " v_complex_double = np.zeros((nb_ant, size_out, 3), dtype=complex)\n", - " galactic_v_time = np.zeros((nb_ant, size_out, 3), dtype=float)\n", - " galactic_v_m_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\n", - " galactic_v_p_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\"\"\"\n", - " v_amplitude_infile = gala_voltage[:, :, lst - 1]\n", - " \n", - " elif du_type == 'GP300_mat':\n", - " gala_file = grand_add_path_data(\"noise/Vocmax_30-250MHz_uVperMHz_mat.npy\")\n", - " gala_file1 = grand_add_path_data(\"noise/Pocmax_30-250_Watt_per_MHz_mat.npy\")\n", - " gala_file2 = grand_add_path_data(\"noise/Pocmax_30-250_dBm_per_MHz_mat.npy\")\n", - " gala_file3 = grand_add_path_data(\"noise/30_250galactic.mat\")\n", - " gala_show = h5py.File(gala_file3, \"r\")\n", - " gala_voltage = np.load(gala_file)\n", - " gala_voltage = np.transpose(gala_voltage, (0, 2, 1)) #micro Volts per MHz (max)\n", - " gala_power_watt = np.load(gala_file1) \n", - " gala_power_watt = np.transpose(gala_power_watt, (0, 2, 1)) #watt per MHz\n", - " gala_power_dbm = np.load(gala_file2)\n", - " gala_power_dbm = np.transpose(gala_power_dbm, (0, 2, 1)) # dBm per MHz\n", - " gala_freq = gala_show[\"freq_all\"]\n", - " \"\"\"f_start = 30\n", - " f_end = 250\n", - " # TODO: 221 is the number of frequency ? why ? and comment to explain\n", - " nb_freq = 221\n", - " v_complex_double = np.zeros((nb_ant, size_out, 3), dtype=complex)\n", - " galactic_v_time = np.zeros((nb_ant, size_out, 3), dtype=float)\n", - " galactic_v_m_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\n", - " galactic_v_p_single = np.zeros((nb_ant, int(size_out / 2) + 1, 3), dtype=float)\"\"\"\n", - " v_amplitude_infile = gala_voltage[:, :, lst - 1]\n", - "\n", - " # SL\n", - " nb_freq = len(freqs_mhz)\n", - " freq_res = freqs_mhz[1] - freqs_mhz[0]\n", - " v_amplitude_infile = v_amplitude_infile * np.sqrt(freq_res)\n", - " v_amplitude = np.zeros((nb_freq, 3))\n", - " v_amplitude[:, 0] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 0], freqs_mhz)\n", - " v_amplitude[:, 1] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 1], freqs_mhz)\n", - " v_amplitude[:, 2] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 2], freqs_mhz)\n", - "\n", - " '''\n", - " a_nor = np.zeros((nb_ant, nb_freq, 3), dtype=float)\n", - " phase = np.zeros((nb_ant, nb_freq, 3), dtype=float)\n", - " v_complex = np.zeros((nb_ant, 3, nb_freq), dtype=complex)\n", - " for l_ant in range(nb_ant):\n", - " for l_fq in range(nb_freq):\n", - " for l_axis in range(3):\n", - " # Generates a normal distribution with 0 as the mean and\n", - " # v_amplitude[l_fq, l_axis] as the standard deviation\n", - " a_nor[l_ant, l_fq, l_axis] = np.random.normal(\n", - " loc=0, scale=v_amplitude[l_fq, l_axis]\n", - " )\n", - " # phase of random Gauss noise\n", - " phase[l_ant, l_fq, l_axis] = 2 * np.pi * np.random.random_sample()\n", - " # SL *size_out is because default scipy fft is normalised backward, *1/2 is because mean(cos(x)*cos(x)))\n", - " v_complex[l_ant, l_axis, l_fq] = abs(a_nor[l_ant, l_fq, l_axis] * size_out / 2)\n", - " v_complex[l_ant, l_axis, l_fq] *= np.exp(1j * phase[l_ant, l_fq, l_axis])\n", - " '''\n", - "\n", - " # RK: above loop is replaced by lines below. Also np.random.default_rng(seed) is used instead of np.random.seed().\n", - " # if seed is a fixed number, same set of randomly generated number is produced. This is useful for testing.\n", - " v_amplitude = v_amplitude.T\n", - " rng = np.random.default_rng(seed) \n", - " amp = rng.normal(loc=0, scale=v_amplitude[np.newaxis,...], size=(nb_ant, 3, nb_freq))\n", - " phase = 2 * np.pi * rng.random(size=(nb_ant, 3, nb_freq))\n", - " v_complex = np.abs(amp * size_out / 2) * np.exp(1j * phase)\n", - "\n", - " return v_complex" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "97d7bf38-3984-4dd1-8d5e-344e82e44745", - "metadata": {}, - "outputs": [], - "source": [ - "seed=0\n", - "nb_ant = 300\n", - "size_out = 20\n", - "freqs_mhz = np.arange(30, 251, 1)\n", - "lest=18" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "e33111c4-5d00-4e4b-9c5c-f40485b7e673", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[[-2.98126189e+00+1.95813677e+00j,\n", - " 3.34572569e+00+1.52550714e+00j,\n", - " 3.90075698e+00+1.70692047e+01j, ...,\n", - " 1.62385095e+00+1.32892821e+01j,\n", - " -3.95829279e+01+2.49934012e+01j,\n", - " -6.45968966e-01+9.76450234e-01j],\n", - " [ 5.55975952e+01-1.32173454e+01j,\n", - " -9.65557324e+00+1.52011275e+01j,\n", - " -1.52305429e+01+1.04342555e+01j, ...,\n", - " -2.79036579e-02+8.57266986e+00j,\n", - " 3.66742709e+00+1.11378748e+01j,\n", - " -1.14187999e+01+1.18710568e+01j],\n", - " [ 1.73499185e+01+1.26067507e+01j,\n", - " 3.97780489e+01+4.59216261e+01j,\n", - " 3.45848326e+01+8.23762318e+00j, ...,\n", - " 1.99766509e+00-6.70664021e+00j,\n", - " 8.83469145e+00-7.79161673e-02j,\n", - " 2.49444577e+01-1.08397325e+01j]],\n", - "\n", - " [[-4.25112547e+00-4.76449391e+01j,\n", - " 1.23592422e+01+1.69003828e+01j,\n", - " 2.91478958e+01+9.39616605e+00j, ...,\n", - " -6.48019945e+00-5.28586127e+00j,\n", - " 2.04149889e+00-2.95650825e+00j,\n", - " 2.76024199e+00+1.76537189e+00j],\n", - " [ 9.51549912e+00-1.64077254e+01j,\n", - " -8.11200447e+00-8.45343178e+00j,\n", - " -4.92422101e+00-4.70626151e+00j, ...,\n", - " -3.35140704e+00+1.44300580e+01j,\n", - " 2.81923370e+00-1.94347596e+00j,\n", - " 4.21489514e+00+3.18112529e+00j],\n", - " [ 7.05050204e+00-3.81387014e+01j,\n", - " -1.66900917e+00+9.50846736e+00j,\n", - " -9.05053622e+00+1.54775010e+01j, ...,\n", - " -1.92548874e+00+3.14550127e+00j,\n", - " -5.54301582e-01+4.26402218e+00j,\n", - " 1.41774940e+01-1.68475649e+01j]],\n", - "\n", - " [[ 2.46449288e+00+8.74427143e+00j,\n", - " 8.94120590e-02+1.09957101e-01j,\n", - " 2.05214927e+00+4.61180598e+01j, ...,\n", - " -1.15732565e+01-1.76137749e-01j,\n", - " 1.36484656e+01-4.71293746e+00j,\n", - " 1.50112291e+01-7.44271711e+00j],\n", - " [-2.83985311e-01-1.07330862e+01j,\n", - " 1.97984327e+01-1.38239782e+01j,\n", - " -1.28038452e+01-3.61483851e+00j, ...,\n", - " 4.37628205e+00-5.34144687e+00j,\n", - " 7.29616161e+00+1.06997942e+01j,\n", - " -1.27214329e+01+1.72831359e+00j],\n", - " [-9.76627955e+00+4.78766635e+00j,\n", - " -3.43935958e+01+1.77598104e+01j,\n", - " 2.13951385e+01+3.49512175e+00j, ...,\n", - " 1.15969745e+01+1.91578653e+01j,\n", - " -5.31613097e+00-2.22819318e+00j,\n", - " 1.08157113e+01+1.81434378e+01j]],\n", - "\n", - " ...,\n", - "\n", - " [[-3.75645404e+01+9.08761748e+00j,\n", - " -6.02381593e+00+3.58775211e+00j,\n", - " -3.92645630e+00+9.61112998e+00j, ...,\n", - " 2.15991515e+00-2.16198424e+00j,\n", - " -7.02978643e+00+3.93540637e+00j,\n", - " 2.42113208e+01+7.69228643e+00j],\n", - " [-3.56406126e+01+2.96816882e+00j,\n", - " 9.48585973e+00+1.49213436e+01j,\n", - " 3.12251646e-01-1.12877623e+00j, ...,\n", - " 1.22450017e+00+2.40252295e-01j,\n", - " -9.67705290e+00+7.88618707e+00j,\n", - " -1.74436422e+01-2.15937970e+00j],\n", - " [-1.54335685e+01+1.04075212e+00j,\n", - " -8.14508211e-01-3.62003959e-01j,\n", - " -1.90773699e+01-6.46175519e+00j, ...,\n", - " -7.26387838e+00-8.15758656e+00j,\n", - " -4.27787477e+00-2.18729332e+00j,\n", - " 8.19552634e-01-4.48506986e-01j]],\n", - "\n", - " [[-2.40480168e+01-8.72329271e+00j,\n", - " 4.83559416e+01-4.45632593e-03j,\n", - " -3.10297829e+00+8.68956800e-01j, ...,\n", - " -6.92104610e+00-1.22317870e+01j,\n", - " -4.93756120e+00-2.01867604e+01j,\n", - " 2.61960931e+00+4.96169586e+00j],\n", - " [ 2.10652133e+01-1.07146668e+01j,\n", - " -5.19046581e+00+1.64251317e+01j,\n", - " -7.85483755e+00+2.26473176e+01j, ...,\n", - " -9.23096901e+00-1.82112189e+00j,\n", - " 6.92135288e+00+5.39631114e+00j,\n", - " 1.86477750e+01+6.37274570e+00j],\n", - " [-1.83916957e+01+7.79279917e+00j,\n", - " -2.24541975e+01-1.03552013e+01j,\n", - " 2.56768287e+01-2.41578324e+01j, ...,\n", - " 4.89726339e+00-5.33603044e+00j,\n", - " -5.53107057e+00+2.22815171e+00j,\n", - " 5.21676831e-01-1.23413512e+01j]],\n", - "\n", - " [[ 4.57011139e+00-1.17604596e+01j,\n", - " -2.74530379e+01+1.08363255e+01j,\n", - " -2.76764268e+00+1.02845000e+01j, ...,\n", - " 1.70265206e+00-7.85779749e+00j,\n", - " 6.34665535e+00+4.05867604e+00j,\n", - " 2.66361846e-01-1.39901670e+01j],\n", - " [-3.66697266e+01+3.99145277e+01j,\n", - " -3.98007759e+01-3.13569314e+01j,\n", - " -6.18573693e+00+3.65642969e+01j, ...,\n", - " 1.63201493e+01+1.23345122e+01j,\n", - " -1.75284278e+00-5.33320460e+00j,\n", - " -5.02708500e+00+4.24148981e+00j],\n", - " [ 2.92394157e+01-3.20169100e-01j,\n", - " 4.46545789e+00-1.67560944e+00j,\n", - " 2.12066200e+01+2.25211434e+01j, ...,\n", - " 1.61550018e+00+3.47771179e+00j,\n", - " -1.06643087e+01+1.44591655e+01j,\n", - " -1.18397093e+01+2.14809282e+00j]]])" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "galactic_noise(lst, size_out, freqs_mhz, nb_ant, seed=0, du_type='GP300')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "506d460e-d0af-461f-a28e-76459b5d5197", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ce51e00f-dcf7-439c-bf03-fae70b4cf545", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "75193a2c-ab73-43ba-a863-5d7f975ff72d", - "metadata": {}, - "outputs": [], - "source": [ - "#len(v_amplitude_infile)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "e89d06a9-7c8f-4b35-a70e-fa1b27a1953f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(221, 3, 24)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gala_voltage.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "b69a83a5-ca30-4892-8ac9-d666e6a90304", - "metadata": {}, - "outputs": [], - "source": [ - "gala_voltage2=np.load('/home/grand/data/noise/Vocmax_30-250MHz_uVperMHz_nec.npy')" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "cb6ef706-4fdf-48cc-ae5a-041d6e19abb6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(221, 24, 3)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gala_voltage2.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3be16f5b-4621-4abd-acbf-e039dd4924e2", - "metadata": {}, - "outputs": [], - "source": [ - "gala_voltage2 = np.transpose(gala_voltage2, (0, 2, 1))" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "524f45b2-04f2-45e7-a2e8-d9c745200d1a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(221, 3, 24)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gala_voltage2.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "9b6d2bdd-10aa-4da0-9cb0-4550613ffb2b", - "metadata": {}, - "outputs": [], - "source": [ - "freqs_mhz = np.arange(30, 251, 1)\n", - "nb_freq = len(freqs_mhz)\n", - "freq_res = freqs_mhz[1] - freqs_mhz[0]\n", - "v_amplitude_infile = v_amplitude_infile * np.sqrt(freq_res)\n", - "v_amplitude = np.zeros((nb_freq, 3))\n", - "v_amplitude[:, 0] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 0], freqs_mhz)\n", - "v_amplitude[:, 1] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 1], freqs_mhz)\n", - "v_amplitude[:, 2] = interpol_at_new_x(gala_freq[:, 0], v_amplitude_infile[:, 2], freqs_mhz)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "899c3923-36c3-4501-a992-e8ce34c9126f", - "metadata": {}, - "outputs": [], - "source": [ - "# RK: above loop is replaced by lines below. Also np.random.default_rng(seed) is used instead of np.random.seed().\n", - "# if seed is a fixed number, same set of randomly generated number is produced. This is useful for testing.\n", - "seed=0\n", - "nb_ant = 300\n", - "size_out = 20\n", - "v_amplitude = v_amplitude.T\n", - "rng = np.random.default_rng(seed) \n", - "amp = rng.normal(loc=0, scale=v_amplitude[np.newaxis,...], size=(nb_ant, 3, nb_freq))\n", - "phase = 2 * np.pi * rng.random(size=(nb_ant, 3, nb_freq))\n", - "v_complex = np.abs(amp * size_out / 2) * np.exp(1j * phase)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "1f095738-b463-4727-bfd0-1fcfecfaefe7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(300, 3, 221)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "v_complex.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9bc08cc4-0f3c-49a0-95f7-9e892d76777a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(freqs_mhz,abs(v_complex[23,2,:]))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a1bd3771-5a5d-4e2f-9a66-d92bd30c3309", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/grand/sim/noise/galactic_Voc2_LST_gp13_GP300_nec.png b/grand/sim/noise/galactic_Voc2_LST_gp13_GP300_nec.png new file mode 100644 index 00000000..5a80fcec Binary files /dev/null and b/grand/sim/noise/galactic_Voc2_LST_gp13_GP300_nec.png differ diff --git a/grand/sim/noise/galactic_Voc2_freq_gp13_GP300_nec.png b/grand/sim/noise/galactic_Voc2_freq_gp13_GP300_nec.png new file mode 100644 index 00000000..8af72d47 Binary files /dev/null and b/grand/sim/noise/galactic_Voc2_freq_gp13_GP300_nec.png differ diff --git a/grand/sim/noise/galactic_Voc2_per_Hz_gp13_GP300_nec.npy b/grand/sim/noise/galactic_Voc2_per_Hz_gp13_GP300_nec.npy new file mode 100644 index 00000000..e72ed1e0 Binary files /dev/null and b/grand/sim/noise/galactic_Voc2_per_Hz_gp13_GP300_nec.npy differ diff --git a/grand/sim/noise/galactic_Vout2_LST_gp13_GP300_nec.png b/grand/sim/noise/galactic_Vout2_LST_gp13_GP300_nec.png new file mode 100644 index 00000000..c96a2fb3 Binary files /dev/null and b/grand/sim/noise/galactic_Vout2_LST_gp13_GP300_nec.png differ diff --git a/grand/sim/noise/galactic_Vout2_freq_gp13_GP300_nec.png b/grand/sim/noise/galactic_Vout2_freq_gp13_GP300_nec.png new file mode 100644 index 00000000..d5b9cd12 Binary files /dev/null and b/grand/sim/noise/galactic_Vout2_freq_gp13_GP300_nec.png differ diff --git a/scripts/Compute_Vout_AT_Device_save.py b/scripts/Compute_Vout_AT_Device_save.py index cbe372f0..d01fbd8b 100644 --- a/scripts/Compute_Vout_AT_Device_save.py +++ b/scripts/Compute_Vout_AT_Device_save.py @@ -12,7 +12,7 @@ import numpy as np import h5py import scipy.fft as sf -import grand.sim.detector.rf_chain2 as grfc +import grand.sim.detector.rf_chain as grfc from grand import grand_add_path_data import grand.manage_log as mlg diff --git a/scripts/plot_Vout_AT_Device.py b/scripts/plot_Vout_AT_Device.py index 19c18d91..afbb3c3c 100755 --- a/scripts/plot_Vout_AT_Device.py +++ b/scripts/plot_Vout_AT_Device.py @@ -12,7 +12,7 @@ import numpy as np import h5py import scipy.fft as sf -import grand.sim.detector.rf_chain2 as grfc +import grand.sim.detector.rf_chain as grfc from grand import grand_add_path_data import grand.manage_log as mlg diff --git a/scripts/plot_rf_chain.py b/scripts/plot_rf_chain.py index b209e979..866d9e00 100644 --- a/scripts/plot_rf_chain.py +++ b/scripts/plot_rf_chain.py @@ -10,8 +10,7 @@ import h5py import scipy.fft as sf -#import grand.sim.detector.rf_chain as grfc -import grand.sim.detector.rf_chain2 as grfc +import grand.sim.detector.rf_chain as grfc from grand import grand_add_path_data import grand.manage_log as mlg diff --git a/scripts/tvoltage1.root b/scripts/tvoltage1.root deleted file mode 100644 index 414d2dda..00000000 Binary files a/scripts/tvoltage1.root and /dev/null differ