diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ad29ce3..5449fbb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # OMC3 Changelog +#### 2024-10-29 - v0.18.0 - _jgray_ + +- Added: + - Add the ability to calculate a deltap/p offset caused by a change in orbit. + - Add the ability to use `response_madx` to calculate the updated response matrix for the global correction. + - Tests for the calculation of the deltap/p and corresponding correction. + - Tests for the calculation of the updated response matrix for the global correction. + +- Fixed: + - Fixed the `response_twiss` when updating the response matrix when calculating the global correction. + + #### 2024-10-29 - v0.17.0 - _jdilly_ - Added: diff --git a/omc3/__init__.py b/omc3/__init__.py index 4294c758..33cd679a 100644 --- a/omc3/__init__.py +++ b/omc3/__init__.py @@ -11,7 +11,7 @@ __title__ = "omc3" __description__ = "An accelerator physics tools package for the OMC team at CERN." __url__ = "https://github.com/pylhc/omc3" -__version__ = "0.17.0" +__version__ = "0.18.0" __author__ = "pylhc" __author_email__ = "pylhc@github.com" __license__ = "MIT" diff --git a/omc3/correction/constants.py b/omc3/correction/constants.py index 52717633..4daab782 100644 --- a/omc3/correction/constants.py +++ b/omc3/correction/constants.py @@ -28,6 +28,7 @@ # For FullResponse INCR: str = "incr" +ORBIT_DPP: str = "orbit_dpp" # Correction Test Constants ---------------------------------------------------- MODEL_NOMINAL_FILENAME: str = "twiss_nominal.tfs" # using twiss from model for now diff --git a/omc3/correction/filters.py b/omc3/correction/filters.py index a7751b20..81554562 100644 --- a/omc3/correction/filters.py +++ b/omc3/correction/filters.py @@ -167,7 +167,7 @@ def _get_errorbased_weights(key: str, weights, errors): # TODO case without errors used may corrupt the correction (typical error != 1) w2 = stats.weights_from_errors(errors) if w2 is None: - LOG.warn( + LOG.warning( f"Weights will not be based on errors for '{key}'" f", zeros of NaNs were found. Maybe don't use --errorbars." ) diff --git a/omc3/correction/handler.py b/omc3/correction/handler.py index 82c81bcb..dea1ac75 100644 --- a/omc3/correction/handler.py +++ b/omc3/correction/handler.py @@ -10,6 +10,7 @@ import time from pathlib import Path from typing import TYPE_CHECKING +import copy import numpy as np import pandas as pd @@ -17,8 +18,8 @@ from sklearn.linear_model import OrthogonalMatchingPursuit import omc3.madx_wrapper as madx_wrapper -from omc3.correction import filters, model_appenders, response_twiss -from omc3.correction.constants import DIFF, ERROR, VALUE, WEIGHT +from omc3.correction import filters, model_appenders, response_twiss, response_madx +from omc3.correction.constants import DIFF, ERROR, VALUE, WEIGHT, ORBIT_DPP from omc3.correction.model_appenders import add_coupling_to_model from omc3.correction.response_io import read_fullresponse from omc3.model.accelerators.accelerator import Accelerator @@ -48,6 +49,8 @@ def correct(accel_inst: Accelerator, opt: DotDict) -> None: method_options = opt.get_subdict(["svd_cut", "n_correctors"]) # read data from files vars_list = _get_varlist(accel_inst, opt.variable_categories) + update_deltap = ORBIT_DPP in vars_list + optics_params, meas_dict = get_measurement_data( opt.optics_params, opt.meas_dir, @@ -76,10 +79,10 @@ def correct(accel_inst: Accelerator, opt: DotDict) -> None: # ######### Update Model and Response ######### # if iteration > 0: - LOG.debug("Updating model via MADX.") + LOG.debug("Updating model via MAD-X.") corr_model_path = opt.output_dir / f"twiss_{iteration}{EXT}" - corr_model_elements = _create_corrected_model(corr_model_path, [opt.change_params_path], accel_inst) + corr_model_elements = _create_corrected_model(corr_model_path, [opt.change_params_path], accel_inst, update_deltap) corr_model_elements = _maybe_add_coupling_to_model(corr_model_elements, optics_params) bpms_index_mask = accel_inst.get_element_types_mask(corr_model_elements.index, types=["bpm"]) @@ -88,11 +91,15 @@ def correct(accel_inst: Accelerator, opt: DotDict) -> None: meas_dict = model_appenders.add_differences_to_model_to_measurements(corr_model, meas_dict) if opt.update_response: - LOG.debug("Updating response.") - # please look away for the next two lines. - accel_inst._model = corr_model - accel_inst._elements = corr_model_elements - resp_dict = response_twiss.create_response(accel_inst, opt.variable_categories, optics_params) + resp_dict = _update_response( + accel_inst=accel_inst, + corrected_elements=corr_model_elements, + optics_params=optics_params, + corr_files=[opt.change_params_path], + variable_categories=opt.variable_categories, + update_dpp=update_deltap, + update_response=opt.update_response, + ) resp_dict = filters.filter_response_index(resp_dict, meas_dict, optics_params) resp_matrix = _join_responses(resp_dict, optics_params, vars_list) @@ -109,6 +116,47 @@ def correct(accel_inst: Accelerator, opt: DotDict) -> None: LOG.info("Finished Iterative Global Correction.") + +def _update_response( + accel_inst: Accelerator, + corrected_elements: pd.DataFrame, + optics_params: Sequence[str], + corr_files: Sequence[Path], + variable_categories: Sequence[str], + update_dpp: bool, + update_response: bool | str, + ) -> dict[str, pd.DataFrame]: + """ Create an updated response matrix. + + If we are to compute the response including the DPP, then we have to do so from MAD-X, + as we do not have the analytical formulae. This therefore requires correction files to be + provided. + Otherwise we go through the way of computing the response the user requested. + + All other parameters are taken care of in the model/elements for the response_twiss only. + """ + # update model by creating a copy of the accelerator instance + accel_inst_cp = copy.copy(accel_inst) + + # Modifiers is None or list, if none, we need to make a list before extending it with the correction files + accel_inst_cp.modifiers = list(accel_inst_cp.modifiers or []) + corr_files + + if update_dpp: + LOG.info("Updating response via MAD-X, due to delta dpp requested.") + resp_dict = response_madx.create_fullresponse(accel_inst_cp, variable_categories) + else: + if update_response == "madx": + LOG.info("Updating response via MAD-X.") + resp_dict = response_madx.create_fullresponse(accel_inst_cp, variable_categories) + else: + LOG.info("Updating response via analytical formulae.") + accel_inst_cp.elements = corrected_elements + # accel_inst_cp.model = corrected_model # - Not needed, don't think it's used by response_twiss (jgray 2024) + resp_dict = response_twiss.create_response(accel_inst_cp, variable_categories, optics_params) + + return resp_dict + + # Input ------------------------------------------------------------------------ @@ -216,9 +264,9 @@ def _maybe_add_coupling_to_model(model: tfs.TfsDataFrame, keys: Sequence[str]) - return model -def _create_corrected_model(twiss_out: Path | str, change_params: Sequence[Path], accel_inst: Accelerator) -> tfs.TfsDataFrame: +def _create_corrected_model(twiss_out: Path | str, corr_files: Sequence[Path], accel_inst: Accelerator, update_dpp: bool = False) -> tfs.TfsDataFrame: """ Use the calculated deltas in changeparameters.madx to create a corrected model """ - madx_script: str = accel_inst.get_update_correction_script(twiss_out, change_params) + madx_script: str = accel_inst.get_update_correction_script(twiss_out, corr_files, update_dpp) twiss_out_path = Path(twiss_out) madx_script = f"! Based on model '{accel_inst.model_dir}'\n" + madx_script madx_wrapper.run_string( @@ -314,11 +362,11 @@ def _calculate_delta( def _print_rms(meas: dict, diff_w, r_delta_w) -> None: """ Prints current RMS status """ f_str = "{:>20s} : {:.5e}" - LOG.debug("RMS Measure - Model (before correction, w/o weigths):") + LOG.debug("RMS Measure - Model (before correction, w/o weights):") for key in meas: LOG.debug(f_str.format(key, rms(meas[key].loc[:, DIFF].to_numpy()))) - LOG.info("RMS Measure - Model (before correction, w/ weigths):") + LOG.info("RMS Measure - Model (before correction, w/ weights):") for key in meas: LOG.info(f_str.format(key, rms(meas[key].loc[:, DIFF].to_numpy() * meas[key].loc[:, WEIGHT].to_numpy()))) diff --git a/omc3/correction/response_madx.py b/omc3/correction/response_madx.py index 874cfbcb..ee82007d 100644 --- a/omc3/correction/response_madx.py +++ b/omc3/correction/response_madx.py @@ -12,28 +12,41 @@ :author: Lukas Malina, Joschua Dilly, Jaime (...) Coello de Portugal """ +from __future__ import annotations + import copy import multiprocessing +import zipfile from pathlib import Path -from typing import Dict, Sequence, Tuple, List +from typing import TYPE_CHECKING import numpy as np -import zipfile import pandas as pd import tfs from numpy.exceptions import ComplexWarning from optics_functions.coupling import coupling_via_cmatrix import omc3.madx_wrapper as madx_wrapper -from omc3.optics_measurements.constants import (BETA, DISPERSION, F1001, F1010, - NORM_DISPERSION, PHASE_ADV, TUNE) -from omc3.correction.constants import INCR -from omc3.model.accelerators.accelerator import Accelerator, AccElementTypes +from omc3.correction.constants import INCR, ORBIT_DPP +from omc3.model.accelerators.accelerator import AccElementTypes, Accelerator +from omc3.optics_measurements.constants import ( + BETA, + DISPERSION, + F1001, + F1010, + NAME, + NORM_DISPERSION, + PHASE_ADV, + TUNE, +) from omc3.utils import logging_tools from omc3.utils.contexts import suppress_warnings, timeit LOG = logging_tools.get_logger(__name__) +if TYPE_CHECKING: + from collections.abc import Sequence + # Full Response Mad-X ########################################################## @@ -44,7 +57,7 @@ def create_fullresponse( delta_k: float = 2e-5, num_proc: int = multiprocessing.cpu_count(), temp_dir: Path = None -) -> Dict[str, pd.DataFrame]: +) -> dict[str, pd.DataFrame]: """ Generate a dictionary containing response matrices for beta, phase, dispersion, tune and coupling and saves it to a file. @@ -83,13 +96,23 @@ def _generate_madx_jobs( delta_k: float, num_proc: int, temp_dir: Path -) -> Dict[str, float]: +) -> dict[str, float]: """ Generates madx job-files """ - LOG.debug("Generating MADX jobfiles.") + LOG.debug("Generating MAD-X jobfiles.") incr_dict = {'0': 0.0} - vars_per_proc = int(np.ceil(len(variables) / num_proc)) + compute_deltap: bool = ORBIT_DPP in variables + no_dpp_vars = [var for var in variables if var != ORBIT_DPP] + vars_per_proc = int(np.ceil(len(no_dpp_vars) / num_proc)) madx_job = _get_madx_job(accel_inst) + deltap_twiss = "" + if compute_deltap: + # This is here only for multiple iteration of the global correction + # By including dpp here, it means that if deltap is in variables and dpp is not 0, the orbit and tune magnets change + # We have to be very careful that DELTAP_NAME is not used ANYWHERE else in MAD-X + madx_job += f"{ORBIT_DPP} = {accel_inst.dpp};\n" # Set deltap to 0 + madx_job += accel_inst.get_update_deltap_script(deltap=ORBIT_DPP) + deltap_twiss = f", deltap={ORBIT_DPP}" for proc_idx in range(num_proc): jobfile_path = _get_jobfiles(temp_dir, proc_idx) @@ -97,17 +120,23 @@ def _generate_madx_jobs( current_job = madx_job for i in range(vars_per_proc): var_idx = proc_idx * vars_per_proc + i - if var_idx >= len(variables): + if var_idx >= len(no_dpp_vars): break - var = variables[var_idx] + var = no_dpp_vars[var_idx] incr_dict[var] = delta_k current_job += f"{var} = {var}{delta_k:+.15e};\n" - current_job += f"twiss, file='{str(temp_dir / f'twiss.{var}')}';\n" + current_job += f"twiss, file='{str(temp_dir / f'twiss.{var}')}'{deltap_twiss};\n" current_job += f"{var} = {var}{-delta_k:+.15e};\n\n" if proc_idx == num_proc - 1: - current_job += f"twiss, file='{str(temp_dir / 'twiss.0')}';\n" - + current_job += f"twiss, file='{str(temp_dir / 'twiss.0')}'{deltap_twiss};\n" + + if compute_deltap: # If ORBIT_DPP is in variables, we run this in the last iteration + # Due to the match and correction of the orbit, this needs to be run at the end of the process + incr_dict[ORBIT_DPP] = delta_k + current_job += f"{ORBIT_DPP} = {ORBIT_DPP}{delta_k:+.15e};\n" + current_job += accel_inst.get_update_deltap_script(deltap=ORBIT_DPP) # Do twiss, correct, match + current_job += f"twiss, deltap={ORBIT_DPP}, file='{str(temp_dir/f'twiss.{ORBIT_DPP}')}';\n" jobfile_path.write_text(current_job) return incr_dict @@ -154,11 +183,11 @@ def _clean_up(temp_dir: Path, num_proc: int) -> None: def _load_madx_results( - variables: List[str], + variables: list[str], process_pool, incr_dict: dict, temp_dir: Path -) -> Dict[str, tfs.TfsDataFrame]: +) -> dict[str, tfs.TfsDataFrame]: """ Load the madx results in parallel and return var-tfs dictionary """ LOG.debug("Loading Madx Results.") vars_and_paths = [] @@ -171,7 +200,7 @@ def _load_madx_results( return var_to_twiss -def _create_fullresponse_from_dict(var_to_twiss: Dict[str, tfs.TfsDataFrame]) -> Dict[str, pd.DataFrame]: +def _create_fullresponse_from_dict(var_to_twiss: dict[str, tfs.TfsDataFrame]) -> dict[str, pd.DataFrame]: """ Convert var-tfs dictionary to fullresponse dictionary. """ var_to_twiss = _add_coupling(var_to_twiss) keys = list(var_to_twiss.keys()) @@ -243,25 +272,25 @@ def _launch_single_job(inputfile_path: Path) -> None: madx_wrapper.run_file(inputfile_path, log_file=log_file, cwd=inputfile_path.parent) -def _load_and_remove_twiss(var_and_path: Tuple[str, Path]) -> Tuple[str, tfs.TfsDataFrame]: +def _load_and_remove_twiss(var_and_path: tuple[str, Path]) -> tuple[str, tfs.TfsDataFrame]: """ Function for pool to retrieve results """ (var, path) = var_and_path twissfile = path / f"twiss.{var}" - tfs_data = tfs.read(twissfile, index="NAME") + tfs_data = tfs.read(twissfile, index=NAME) tfs_data[f"{TUNE}1"] = tfs_data.Q1 tfs_data[f"{TUNE}2"] = tfs_data.Q2 twissfile.unlink() return var, tfs_data -def _add_coupling(dict_of_tfs: Dict[str, tfs.TfsDataFrame]) -> Dict[str, tfs.TfsDataFrame]: +def _add_coupling(dict_of_tfs: dict[str, tfs.TfsDataFrame]) -> dict[str, tfs.TfsDataFrame]: """ For each TfsDataFrame in the input dictionary, computes the coupling RDTs and adds a column for the real and imaginary parts of the computed coupling RDTs. Returns a copy of the input dictionary with the aforementioned computed columns added for each TfsDataFrame. Args: - dict_of_tfs (Dict[str, tfs.TfsDataFrame]): dictionary of Twiss dataframes. + dict_of_tfs (dict[str, tfs.TfsDataFrame]): dictionary of Twiss dataframes. Returns: An identical dictionary of Twiss dataframes, with the computed columns added. diff --git a/omc3/correction/response_twiss.py b/omc3/correction/response_twiss.py index 99e2fe64..0d51e83b 100644 --- a/omc3/correction/response_twiss.py +++ b/omc3/correction/response_twiss.py @@ -117,7 +117,8 @@ https://cds.cern.ch/record/2632945/ """ -from typing import Dict, List, Sequence +from __future__ import annotations +from typing import TYPE_CHECKING import numpy as np import pandas as pd @@ -131,6 +132,9 @@ from omc3.utils import logging_tools from omc3.utils.contexts import timeit +if TYPE_CHECKING: + from collections.abc import Sequence + LOG = logging_tools.get_logger(__name__) DUMMY_ID = "DUMMY_PLACEHOLDER" @@ -801,7 +805,7 @@ def upper(list_of_strings: Sequence[str]) -> Sequence[str]: return [item.upper() for item in list_of_strings] -def get_phase_advances(twiss_df: pd.DataFrame) -> Dict[str, pd.DataFrame]: +def get_phase_advances(twiss_df: pd.DataFrame) -> dict[str, pd.DataFrame]: """ Calculate phase advances between all elements @@ -840,7 +844,7 @@ def tau(data, q): def create_response( accel_inst: Accelerator, vars_categories: Sequence[str], - optics_params: List[str], + optics_params: list[str], ) -> dict: """ Wrapper to create response via TwissResponse """ LOG.debug("Creating response via TwissResponse.") diff --git a/omc3/global_correction.py b/omc3/global_correction.py index 6697885e..d5a34a66 100644 --- a/omc3/global_correction.py +++ b/omc3/global_correction.py @@ -16,7 +16,7 @@ The response matrices are hereby merged into one matrix for all observables to solve for all :math:`\delta var` at the same time. -To normalize the observables to another ``weigths`` (W) can be applied. +To normalize the observables to another ``weights`` (W) can be applied. Furthermore, an ``errorcut``, specifying the maximum errorbar for a BPM to be used, and ``modelcut``, specifying the maximum distance between measurement and model for a BPM to be used, @@ -62,7 +62,7 @@ - **fullresponse_path**: - Path to the fullresponse binary file.If not given, calculates the + Path to the fullresponse binary file. If not given, calculates the response analytically. diff --git a/omc3/model/accelerators/accelerator.py b/omc3/model/accelerators/accelerator.py index 27647955..7db3b125 100644 --- a/omc3/model/accelerators/accelerator.py +++ b/omc3/model/accelerators/accelerator.py @@ -5,10 +5,11 @@ This module provides high-level classes to define most functionality of ``model.accelerators``. It contains entrypoint the parent `Accelerator` class as well as other support classes. """ +from __future__ import annotations import re import os from pathlib import Path -from typing import List, Union, Sequence +from typing import TYPE_CHECKING import numpy import pandas as pd @@ -29,6 +30,9 @@ from omc3.utils import logging_tools from omc3.utils.iotools import PathOrStr +if TYPE_CHECKING: + from collections.abc import Sequence + LOG = logging_tools.get_logger(__name__) CURRENT_DIR = Path(__file__).parent @@ -215,7 +219,7 @@ def init_from_model_dir(self, model_dir: Path) -> None: # Class methods ########################################### @classmethod - def get_element_types_mask(cls, list_of_elements: List[str], types) -> numpy.ndarray: + def get_element_types_mask(cls, list_of_elements: list[str], types) -> numpy.ndarray: """ Returns a boolean mask for elements in ``list_of_elements`` that belong to any of the specified types. @@ -274,7 +278,7 @@ def verify_object(self): if self.excitation != AccExcitationMode.FREE and self.drv_tunes is None: raise AttributeError("Driven excitation selected but no driven tunes given (missing `--drv_tunes` flag?)") - def get_exciter_bpm(self, plane: str, commonbpms: List[str]): + def get_exciter_bpm(self, plane: str, commonbpms: list[str]): """ Returns the BPM next to the exciter. The `Accelerator` instance knows already which excitation method is used. @@ -317,7 +321,7 @@ def get_file(cls, filename: str) -> Path: # Jobs ################################################################### - def get_update_correction_script(self, outpath: Union[Path, str], corr_files: Sequence[Union[Path, str]]) -> str: + def get_update_correction_script(self, outpath: Path | str, corr_files: Sequence[Path | str], **kwargs) -> str: #kwargs to be used for additional arguments in different accelerators """ Returns job (string) to create an updated model from changeparameters input (used in iterative correction). @@ -329,6 +333,13 @@ def get_base_madx_script(self, best_knowledge=False): Returns job (string) to create the basic accelerator sequence. """ raise NotImplementedError("A function should have been overwritten, check stack trace.") + + def get_update_deltap_script(self, deltap: float | str) -> str: + """ + Returns job (string) to change the magnets for a given deltap (dpp). + i.e. updating the orbit and matching the tunes. + """ + raise NotImplementedError("A function should have been overwritten, check stack trace.") ########################################################################## @@ -369,7 +380,7 @@ class AcceleratorDefinitionError(Exception): # Helper ---- -def _get_modifiers_from_modeldir(model_dir: Path) -> List[Path]: +def _get_modifiers_from_modeldir(model_dir: Path) -> list[Path]: """Parse modifiers from job.create_model.madx or use modifiers.madx file.""" job_file = model_dir / JOB_MODEL_MADX_NOMINAL if job_file.exists(): diff --git a/omc3/model/accelerators/lhc.py b/omc3/model/accelerators/lhc.py index d4c99666..a74a562e 100644 --- a/omc3/model/accelerators/lhc.py +++ b/omc3/model/accelerators/lhc.py @@ -101,6 +101,8 @@ MACROS_DIR, MODIFIER_TAG, ) +from omc3.correction.constants import ORBIT_DPP + from omc3.utils import logging_tools if TYPE_CHECKING: @@ -398,6 +400,7 @@ def get_base_madx_script(self, best_knowledge: bool = False, ats_md: bool = Fals madx_script += "\n! ---- Call optics and other modifiers ----\n" if self.modifiers is not None: + # if modifier is an absolute path, go there, otherwise use the path refers from model_dir madx_script += "".join( f"call, file = '{self.model_dir / modifier}'; {MODIFIER_TAG}\n" for modifier in self.modifiers @@ -486,12 +489,48 @@ def _get_madx_main_sequence_loading(self) -> str: "has to be specified (--lhcmode option missing?)." ) - def get_update_correction_script(self, outpath: Path | str, corr_files: Sequence[Path | str]) -> str: + def get_update_correction_script(self, outpath: Path | str, corr_files: Sequence[Path | str], update_dpp: bool = False) -> str: madx_script = self.get_base_madx_script() - for corr_file in corr_files: + + # First set the dpp to the value in the accelerator model + madx_script += f"{ORBIT_DPP} = {self.dpp};\n" + + for corr_file in corr_files: # Load the corrections, can also update ORBIT_DPP madx_script += f"call, file = '{str(corr_file)}';\n" - madx_script += f"exec, do_twiss_elements(LHCB{self.beam}, '{str(outpath)}', {self.dpp});\n" + + if update_dpp: # If we are doing orbit correction, we need to ensure that a correct and a match is done (in get_update_deltap_script) + madx_script += self.get_update_deltap_script(deltap=ORBIT_DPP) + + madx_script += f'exec, do_twiss_elements(LHCB{self.beam}, "{str(outpath)}", {ORBIT_DPP});\n' return madx_script + + def get_update_deltap_script(self, deltap: float | str) -> str: + if not isinstance(deltap, str): + deltap = f"{deltap:.15e}" + + madx_script = ( + f"twiss, deltap={deltap};\n" + "correct, mode=svd;\n\n" + + "! The same as match_tunes, but include deltap in the matching\n" + f"exec, find_complete_tunes({self.nat_tunes[0]}, {self.nat_tunes[1]}, {self.beam});\n" + f"match, deltap={deltap};\n" + ) # Works better when split up + madx_script += "\n".join([f"vary, name={knob};" for knob in self.get_tune_knobs()]) + "\n" + madx_script += ( + "constraint, range=#E, mux=total_qx, muy=total_qy;\n" + "lmdif, tolerance=1e-10;\n" + "endmatch;\n" + ) + return madx_script + + def get_tune_knobs(self) -> tuple[str, str]: + if self._uses_run3_macros(): + return f"dQx.b{self.beam}_op", f"dQy.b{self.beam}_op" + elif self._uses_ats_knobs(): + return f"dQx.b{self.beam}", f"dQy.b{self.beam}" + else: + return f"KQTD.B{self.beam}", f"KQTF.B{self.beam}" # Private Methods ########################################################## diff --git a/omc3/model/madx_macros/general.macros.madx b/omc3/model/madx_macros/general.macros.madx index 269bbd4e..df10a873 100644 --- a/omc3/model/madx_macros/general.macros.madx +++ b/omc3/model/madx_macros/general.macros.madx @@ -56,11 +56,11 @@ select_elements(): macro = { * @param sequence: name of the sequence to use. * @param output_file: path to the file to write, it has to be input in "" to * preserve upper case characters. -* @param dpp: delta p / p to use in the twiss command. +* @param this_is_the_dpp: delta p / p to use in the twiss command. (Complicated name to prevent filename change) */ -do_twiss_monitors(use_sequence, output_file, dpp): macro = { +do_twiss_monitors(use_sequence, output_file, this_is_the_dpp): macro = { exec, select_monitors(); - twiss, chrom, sequence=use_sequence, deltap=dpp, file=output_file; + twiss, chrom, sequence=use_sequence, deltap=this_is_the_dpp, file=output_file; }; @@ -69,16 +69,16 @@ do_twiss_monitors(use_sequence, output_file, dpp): macro = { * @param sequence: name of the sequence to use. * @param output_file: path to the file to write, it has to be input in "" to * preserve upper case characters. -* @param dpp: delta p / p to use in the twiss command. +* @param this_is_the_dpp: delta p / p to use in the twiss command. (Complicated name to prevent filename change) */ -do_twiss_monitors_and_ips(use_sequence, output_file, dpp): macro = { +do_twiss_monitors_and_ips(use_sequence, output_file, this_is_the_dpp): macro = { exec, select_monitors(); select, flag=twiss, pattern='^IP[1-8]$', column=name, s, betx, alfx, bety, alfy, mux, muy, dx, dy, dpx, dpy, x, y, ddx, ddy, k1l, k1sl, k2l, k3l, k4l, wx, wy, phix, phiy, dmux, dmuy, keyword, dbx, dby, r11, r12, r21, r22; - twiss, chrom, sequence=use_sequence, deltap=dpp, file=output_file; + twiss, chrom, sequence=use_sequence, deltap=this_is_the_dpp, file=output_file; }; @@ -87,11 +87,11 @@ do_twiss_monitors_and_ips(use_sequence, output_file, dpp): macro = { * @param sequence: name of the sequence to use. * @param output_file: path to the file to write, it has to be input in "" to * preserve upper case characters. -* @param dpp: delta p / p to use in the twiss command. +* @param this_is_the_dpp: delta p / p to use in the twiss command. (Complicated name to prevent filename change) */ -do_twiss_elements(use_sequence, output_file, dpp): macro = { +do_twiss_elements(use_sequence, output_file, this_is_the_dpp): macro = { exec, select_elements(); - twiss, chrom, sequence=use_sequence, deltap=dpp, file=output_file; + twiss, chrom, sequence=use_sequence, deltap=this_is_the_dpp, file=output_file; }; diff --git a/omc3/model/model_creators/abstract_model_creator.py b/omc3/model/model_creators/abstract_model_creator.py index 05d3895b..97820c56 100644 --- a/omc3/model/model_creators/abstract_model_creator.py +++ b/omc3/model/model_creators/abstract_model_creator.py @@ -77,7 +77,7 @@ def prepare_run(cls, accel: Accelerator) -> None: Prepares the model creation ``MAD-X`` run. It should check that the appropriate directories are created, and that macros and other files are in place. Should also check that all necessary data for model creation is available in the accelerator - instance. Called by the ``model_creator.create_accel_and_instance`` + instance. Called by the ``model_creator.create_instance_and_model`` Args: accel (Accelerator): Accelerator Instance used for the model creation. diff --git a/omc3/response_creator.py b/omc3/response_creator.py index 6af01e41..95f5f8c2 100644 --- a/omc3/response_creator.py +++ b/omc3/response_creator.py @@ -63,7 +63,7 @@ from pathlib import Path import pandas as pd -from generic_parser.entrypoint_parser import EntryPointParameters, entrypoint, DotDict +from generic_parser.entrypoint_parser import DotDict, EntryPointParameters, entrypoint from omc3.correction import response_madx, response_twiss from omc3.correction.response_io import write_fullresponse diff --git a/tests/accuracy/test_global_correction.py b/tests/accuracy/test_global_correction.py index 0859a22a..606bcf28 100644 --- a/tests/accuracy/test_global_correction.py +++ b/tests/accuracy/test_global_correction.py @@ -1,20 +1,34 @@ from dataclasses import dataclass from pathlib import Path -from typing import Sequence +from typing import Literal, Sequence import numpy as np import pytest - import tfs -from omc3.correction.constants import VALUE, ERROR, WEIGHT +from generic_parser.tools import DotDict + +from omc3.correction.constants import ERROR, ORBIT_DPP, VALUE, WEIGHT from omc3.correction.handler import get_measurement_data from omc3.correction.model_appenders import add_coupling_to_model from omc3.correction.model_diff import diff_twiss_parameters from omc3.global_correction import global_correction_entrypoint as global_correction from omc3.optics_measurements.constants import ( - NAME, AMPLITUDE, IMAG, REAL, BETA, DISPERSION, - NORM_DISPERSION, F1001, F1010, TUNE, PHASE, ERR, DELTA) -from omc3.scripts.fake_measurement_from_model import VALUES, ERRORS + AMPLITUDE, + BETA, + DELTA, + DISPERSION, + ERR, + F1001, + F1010, + IMAG, + NAME, + NORM_DISPERSION, + PHASE, + REAL, + TUNE, +) +from omc3.response_creator import create_response_entrypoint as create_response +from omc3.scripts.fake_measurement_from_model import ERRORS, VALUES from omc3.scripts.fake_measurement_from_model import generate as fake_measurement from omc3.utils import logging_tools from omc3.utils.stats import rms @@ -58,7 +72,7 @@ class CorrectionParameters: def get_skew_params(beam): return CorrectionParameters( - twiss=CORRECTION_INPUTS / f"inj_beam{beam}" / f"twiss_skew_quadrupole_error.dat", + twiss=CORRECTION_INPUTS / f"inj_beam{beam}" / "twiss_skew_quadrupole_error.dat", correction_filename=CORRECTION_TEST_INPUTS / f"changeparameters_injb{beam}_skewquadrupole.madx", optics_params=[f"{F1001}R", f"{F1001}I", f"{F1010}R", f"{F1010}I"], weights=[1., 1., 1., 1.], @@ -70,7 +84,7 @@ def get_skew_params(beam): def get_normal_params(beam): return CorrectionParameters( - twiss=CORRECTION_INPUTS / f"inj_beam{beam}" / f"twiss_quadrupole_error.dat", + twiss=CORRECTION_INPUTS / f"inj_beam{beam}" / "twiss_quadrupole_error.dat", correction_filename=CORRECTION_TEST_INPUTS / f"changeparameters_injb{beam}_quadrupole.madx", optics_params=[f"{PHASE}X", f"{PHASE}Y", f"{BETA}X", f"{BETA}Y", f"{NORM_DISPERSION}X", TUNE], weights=[1., 1., 1., 1., 1., 1.], @@ -82,7 +96,7 @@ def get_normal_params(beam): @pytest.mark.basic @pytest.mark.parametrize('orientation', ('skew', 'normal')) -def test_lhc_global_correct(tmp_path, model_inj_beams, orientation): +def test_lhc_global_correct(tmp_path: Path, model_inj_beams: DotDict, orientation: Literal['skew', 'normal']): """Creates a fake measurement from a modfied model-twiss with (skew) quadrupole errors and runs global correction on this measurement. It is asserted that the resulting model approaches the modified twiss. @@ -115,6 +129,7 @@ def test_lhc_global_correct(tmp_path, model_inj_beams, orientation): ) # Test if corrected model is closer to model used to create measurement + diff_rms_prev = None for iter_step in range(iterations): if iter_step == 0: model_iter_df = model_df @@ -139,7 +154,7 @@ def test_lhc_global_correct(tmp_path, model_inj_beams, orientation): # continue # ######################################## - if iter_step > 0: + if diff_rms_prev is not None: # assert RMS after correction smaller than tolerances for param in correction_params.optics_params: assert diff_rms[param] < RMS_TOL_DICT[param], ( @@ -157,6 +172,58 @@ def test_lhc_global_correct(tmp_path, model_inj_beams, orientation): diff_rms_prev = diff_rms +@pytest.mark.basic +@pytest.mark.parametrize('dpp', (2.5e-4, -1e-4)) +def test_lhc_global_correct_dpp(tmp_path: Path, model_inj_beams: DotDict, dpp: float): + response_path = tmp_path / "full_response_dpp.h5" + beam = model_inj_beams.beam + + # Create response + response_dict = create_response( + outfile_path=response_path, + variable_categories=[ORBIT_DPP, f"kq10.l1b{beam}", f"kq10.l2b{beam}"], + delta_k=2e-5, + **model_inj_beams, + ) + + # Verify response creation + assert all(ORBIT_DPP in response_dict[key].columns for key in response_dict.keys()) + + # Create fake measurement + dpp_path = CORRECTION_INPUTS / "deltap" / f"twiss_dpp_{dpp:.1e}_B{beam}.dat" + model_df = tfs.read(dpp_path, index=NAME) + fake_measurement( + twiss=model_df, + parameters=[f"{PHASE}X", f"{PHASE}Y"], + outputdir=tmp_path, + ) + + # Test global correction with and without response update + for update_response in [True, False]: + previous_diff = np.inf + for iteration in range(1, 4): + global_correction( + meas_dir=tmp_path, + output_dir=tmp_path, + fullresponse_path=response_path, + variable_categories=[ORBIT_DPP, f"kq10.l1b{beam}"], + optics_params=[f"{PHASE}X", f"{PHASE}Y"], + iterations=iteration, + update_response=update_response, + **model_inj_beams, + ) + result = tfs.read(tmp_path / "changeparameters_iter.tfs", index=NAME) + current_dpp = -result[DELTA][ORBIT_DPP] + + # Check output accuracy + rtol = 5e-2 if iteration == 1 else 2e-2 + assert np.isclose(dpp, current_dpp, rtol=rtol), f"Expected {dpp}, got {current_dpp}, diff: {dpp - current_dpp}, iteration: {iteration}" + + # Check convergence + current_diff = np.abs(dpp - current_dpp) / np.abs(dpp) + assert previous_diff > current_diff or np.isclose(previous_diff, current_diff, atol=1e-3), f"Convergence not reached, diff: {previous_diff} <= {current_diff}, iteration: {iteration}" + previous_diff = current_diff + # Helper ----------------------------------------------------------------------- diff --git a/tests/inputs/correction/deltap/generate_dat.py b/tests/inputs/correction/deltap/generate_dat.py new file mode 100644 index 00000000..a8535345 --- /dev/null +++ b/tests/inputs/correction/deltap/generate_dat.py @@ -0,0 +1,63 @@ +from omc3 import madx_wrapper +from omc3.optics_measurements.constants import PHASE_ADV +from pathlib import Path + +# These paths means that the script can be run from any directory +current_dir = Path(__file__).parent +omc3_dir = Path(__file__).parents[4] + +def run_dpp(offset, beam): + """ + Run a twiss on a 2018 LHC model with a given dpp offset. Then, correct and match before + writing the final twiss to a file, which only contains select BPMs, and the phase advances and s. + This is used by the test_lhc_global_correct_dpp to verify that the global correction can + calculate the dpp offset input in the fake measurement. + """ + output_file = current_dir / f"twiss_dpp_{offset:.1e}_B{beam}.dat" + + Qx = 62.28001034 + Qy = 60.31000965 + script = f""" + option, -echo; + call, file = '{omc3_dir}/omc3/model/madx_macros/general.macros.madx'; + call, file = '{omc3_dir}/omc3/model/madx_macros/lhc.macros.madx'; + call, file = '{omc3_dir}/omc3/model/accelerators/lhc/2018/main.seq'; + option, echo; + exec, cycle_sequences(); + exec, define_nominal_beams(); + + call, file = '{omc3_dir}/tests/inputs/models/inj_beam{beam}/opticsfile.1'; !@modifier + + select, flag = twiss, pattern = 'BPM.*B[12]', column = name, s, {PHASE_ADV}x, {PHASE_ADV}y; + use, sequence = LHCB{beam}; + + ! Match the tunes initially + match, deltap = {offset}; + vary, name=dQx.b{beam}; + vary, name=dQy.b{beam}; + constraint, range = '#E', mux = {Qx}, muy = {Qy}; + lmdif, tolerance = 1.0e-10; + endmatch; + + ! Run a twiss with the offset to get orbit + twiss, deltap = {offset}; + + ! Correct the orbit + correct, mode = svd; + + ! Match the tunes back to normal + match, deltap = {offset}; + vary, name=dQx.b{beam}; + vary, name=dQy.b{beam}; + constraint, range = '#E', mux = {Qx}, muy = {Qy}; + lmdif, tolerance = 1.0e-10; + endmatch; + + ! Run the final twiss to get the off-orbit response + twiss, deltap = {offset}, file = '{output_file}'; + """ + madx_wrapper.run_string(script) + +for deltap in [2.5e-4, -1e-4]: + for beam in [1, 2]: + run_dpp(deltap, beam) \ No newline at end of file diff --git a/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B1.dat b/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B1.dat new file mode 100644 index 00000000..5a653fcd --- /dev/null +++ b/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B1.dat @@ -0,0 +1,613 @@ +@ NAME %05s "TWISS" +@ TYPE %05s "TWISS" +@ SEQUENCE %05s "LHCB1" +@ PARTICLE %06s "PROTON" +@ MASS %le 0.9382720882 +@ CHARGE %le 1 +@ ENERGY %le 450 +@ PC %le 449.9990218 +@ GAMMA %le 479.6050162 +@ KBUNCH %le 1 +@ BCURRENT %le 0.0002071977796 +@ SIGE %le 0.001 +@ SIGT %le 1 +@ NPART %le 1.15e+11 +@ EX %le 1 +@ EY %le 1 +@ ET %le 0.001 +@ BV_FLAG %le 1 +@ LENGTH %le 26658.8832 +@ ALFA %le 0.0003482406019 +@ ORBIT5 %le -0 +@ GAMMATR %le 53.58710528 +@ Q1 %le 62.28001034 +@ Q2 %le 60.31000965 +@ DQ1 %le 2.147773594 +@ DQ2 %le 2.114610113 +@ DXMAX %le 2.866393596 +@ DYMAX %le 0.4086038353 +@ XCOMAX %le 0.0002504599372 +@ YCOMAX %le 0.01300545164 +@ BETXMAX %le 588.5294935 +@ BETYMAX %le 640.5631832 +@ XCORMS %le 2.600501818e-05 +@ YCORMS %le 0.0009492604566 +@ DXRMS %le 1.500960833 +@ DYRMS %le 0.1025937131 +@ DELTAP %le -0.0001 +@ SYNCH_1 %le 0 +@ SYNCH_2 %le 0 +@ SYNCH_3 %le 0 +@ SYNCH_4 %le 0 +@ SYNCH_5 %le 0 +@ TITLE %08s "no-title" +@ ORIGIN %16s "5.06.00 Linux 64" +@ DATE %08s "18/10/24" +@ TIME %08s "14.59.50" +* NAME S MUX MUY +$ %s %le %le %le + "BPMYB.5L2.B1" 28.288 0.0253816696 0.1394537219 + "BPMYB.4L2.B1" 48.858 0.05595839552 0.2243721578 + "BPMWI.4L2.B1" 73.3255 0.1448909352 0.2838545507 + "BPMSX.4L2.B1" 123.4825 0.2520103868 0.4738446193 + "BPMS.2L2.B1" 161.394 0.30748363 0.529560641 + "BPMSW.1L2.B1" 171.328 0.3312276835 0.5473591627 + "BPMSW.1L2.B1_DOROS" 171.328 0.3312276835 0.5473591627 + "BPMSW.1R2.B1" 214.518 0.693161214 0.9092814002 + "BPMSW.1R2.B1_DOROS" 214.518 0.693161214 0.9092814002 + "BPMS.2R2.B1" 224.452 0.7109859969 0.933062216 + "BPMSX.4R2.B1" 262.3635 0.7667327009 0.9885671864 + "BPMWB.4R2.B1" 312.5965 0.9566415358 1.095798858 + "BPMYB.4R2.B1" 336.988 1.015555087 1.184687932 + "BPMR.5R2.B1" 366.522 1.126570171 1.225699856 + "BPM.6R2.B1" 439.818 1.22981715 1.409828792 + "BPM_A.7R2.B1" 452.693 1.24001876 1.440908105 + "BPM.8R2.B1" 494.1300106 1.299732138 1.542113929 + "BPM.9R2.B1" 533.1950212 1.456947136 1.644602699 + "BPM.10R2.B1" 573.6580318 1.632876149 1.738171204 + "BPM.11R2.B1" 625.4967424 1.737103751 1.872905066 + "BPM.12R2.B1" 680.2202583 1.870471357 1.987747854 + "BPM.13R2.B1" 733.6687742 1.985040316 2.123998408 + "BPM.14R2.B1" 787.1172901 2.122619049 2.23580293 + "BPM.15R2.B1" 840.565806 2.234356652 2.367528786 + "BPM.16R2.B1" 894.0143219 2.368329882 2.474595372 + "BPM.17R2.B1" 947.4628378 2.484089071 2.602445677 + "BPM.18R2.B1" 1000.911354 2.621706504 2.713788146 + "BPM.19R2.B1" 1054.35987 2.73347183 2.846204882 + "BPM.20R2.B1" 1107.808386 2.867438168 2.953786628 + "BPM.21R2.B1" 1161.256901 2.983170327 3.081078092 + "BPM.22R2.B1" 1214.705417 3.120804289 3.191796427 + "BPM.23R2.B1" 1268.153933 3.236069035 3.323850792 + "BPM.24R2.B1" 1321.602449 3.373805756 3.434919393 + "BPM.25R2.B1" 1375.050965 3.488772454 3.567088633 + "BPM.26R2.B1" 1428.499481 3.626428212 3.677824222 + "BPM.27R2.B1" 1481.947997 3.74170575 3.809857869 + "BPM.28R2.B1" 1535.396513 3.879448603 3.920914195 + "BPM.29R2.B1" 1588.845029 3.994403153 4.053119508 + "BPM.30R2.B1" 1642.293545 4.132060791 4.163859924 + "BPM.31R2.B1" 1695.74206 4.247345515 4.295845869 + "BPM.32R2.B1" 1749.190576 4.38507781 4.406883929 + "BPM.33R2.B1" 1802.639092 4.500025439 4.539118869 + "BPM.34R2.B1" 1856.087608 4.637687429 4.649890084 + "BPM.33L3.B1" 1909.536124 4.752976401 4.781863809 + "BPM.32L3.B1" 1962.98464 4.89070179 4.892881281 + "BPM.31L3.B1" 2016.433156 5.005647314 5.025141983 + "BPM.30L3.B1" 2069.881672 5.14332543 5.135924492 + "BPM.29L3.B1" 2123.330188 5.258604095 5.267861695 + "BPM.28L3.B1" 2176.778704 5.396294746 5.378857774 + "BPM.27L3.B1" 2230.22722 5.511254486 5.511137083 + "BPM.26L3.B1" 2283.675735 5.648964776 5.621952662 + "BPM.25L3.B1" 2337.124251 5.764247579 5.75388571 + "BPM.24L3.B1" 2390.572767 5.901936041 5.864853309 + "BPM.23L3.B1" 2444.021283 6.016885651 5.997149835 + "BPM.22L3.B1" 2497.469799 6.154595737 6.107985257 + "BPM.21L3.B1" 2550.918315 6.269869366 6.239891609 + "BPM.20L3.B1" 2604.366831 6.408460273 6.347231618 + "BPM.19L3.B1" 2657.815347 6.520672224 6.474958026 + "BPM.18L3.B1" 2711.263863 6.653689055 6.586000536 + "BPM.17L3.B1" 2764.712379 6.768942109 6.718509094 + "BPM.16L3.B1" 2818.160894 6.907569115 6.826389257 + "BPM.15L3.B1" 2871.60941 7.019797196 6.953643718 + "BPM.14L3.B1" 2925.057926 7.152781137 7.064050296 + "BPM.13L3.B1" 2978.506442 7.267997401 7.196949559 + "BPM.12L3.B1" 3031.954958 7.405115868 7.311471568 + "BPM.11L3.B1" 3085.403474 7.531495977 7.443620371 + "BPM.10L3.B1" 3138.184185 7.680602687 7.55137824 + "BPM.9L3.B1" 3177.249195 7.741585878 7.668921083 + "BPM.8L3.B1" 3217.712206 7.818332955 7.835597813 + "BPM.7L3.B1" 3256.776216 7.877296213 8.008766969 + "BPM.6L3.B1" 3329.415216 7.989407802 8.12803261 + "BPMWG.A5L3.B1" 3371.119716 8.04646429 8.174813398 + "BPMW.5L3.B1" 3400.089716 8.1298219 8.190421088 + "BPMWE.4L3.B1" 3475.217716 8.233244858 8.263926944 + "BPMW.4L3.B1" 3502.762716 8.248456277 8.309617368 + "BPMW.4R3.B1" 3547.727716 8.318651992 8.344798114 + "BPMWE.4R3.B1" 3575.272716 8.466320323 8.356095624 + "BPMW.5R3.B1" 3650.400716 8.595767959 8.429504924 + "BPMWJ.A5R3.B1" 3679.118716 8.608388748 8.492836044 + "BPMWC.6R3.B1" 3718.936716 8.654282675 8.537749711 + "BPMR.6R3.B1" 3731.015216 8.694422846 8.545416271 + "BPM_A.7R3.B1" 3786.839216 8.8833054 8.616874364 + "BPM.8R3.B1" 3825.903227 8.993998476 8.678892627 + "BPM.9R3.B1" 3864.968238 9.098037968 8.731697766 + "BPM.10R3.B1" 3905.431248 9.172786194 8.794993084 + "BPM.11R3.B1" 3958.211959 9.265952858 8.896786759 + "BPM.12R3.B1" 4012.935475 9.366828091 9.01879447 + "BPM.13R3.B1" 4066.383991 9.48356636 9.133675445 + "BPM.14R3.B1" 4119.832506 9.598552256 9.264458575 + "BPM.15R3.B1" 4173.281022 9.737279157 9.371220093 + "BPM.16R3.B1" 4226.729538 9.849774793 9.499955857 + "BPM.17R3.B1" 4280.178054 9.982681365 9.611733839 + "BPM.18R3.B1" 4333.62657 10.09762605 9.743296089 + "BPM.19R3.B1" 4387.075086 10.23635066 9.850370238 + "BPM.20R3.B1" 4440.523602 10.34887276 9.978381966 + "BPM.21R3.B1" 4493.972118 10.48175574 10.0897354 + "BPM.22R3.B1" 4547.420634 10.59668307 10.22197967 + "BPM.23R3.B1" 4600.86915 10.73450761 10.33313903 + "BPM.24R3.B1" 4654.317666 10.84981734 10.46514481 + "BPM.25R3.B1" 4707.766181 10.98738915 10.57577192 + "BPM.26R3.B1" 4761.214697 11.10231104 10.70795688 + "BPM.27R3.B1" 4814.663213 11.2401316 10.81912467 + "BPM.28R3.B1" 4868.111729 11.3554315 10.95117283 + "BPM.29R3.B1" 4921.560245 11.49298033 11.06179603 + "BPM.30R3.B1" 4975.008761 11.60792215 11.19393138 + "BPM.31R3.B1" 5028.457277 11.74577467 11.30511141 + "BPM.32R3.B1" 5081.905793 11.86106873 11.43722753 + "BPM.33R3.B1" 5135.354309 11.99861287 11.54784212 + "BPM.34R3.B1" 5188.802825 12.11355987 11.67991301 + "BPM.33L4.B1" 5242.25134 12.25141976 11.7910824 + "BPM.32L4.B1" 5295.699856 12.36670636 11.92324202 + "BPM.31L4.B1" 5349.148372 12.50423556 12.03386937 + "BPM.30L4.B1" 5402.596888 12.61919358 12.16589388 + "BPM.29L4.B1" 5456.045404 12.75706874 12.2770607 + "BPM.28L4.B1" 5509.49392 12.87233997 12.40928768 + "BPM.27L4.B1" 5562.942436 13.00985403 12.51992474 + "BPM.26L4.B1" 5616.390952 13.12481496 12.65188843 + "BPM.25L4.B1" 5669.839468 13.26269 12.76302932 + "BPM.24L4.B1" 5723.287984 13.37794988 12.89529584 + "BPM.23L4.B1" 5776.7365 13.51544703 13.00596316 + "BPM.22L4.B1" 5830.185015 13.6304331 13.13788586 + "BPM.21L4.B1" 5883.633531 13.76834015 13.24900448 + "BPM.20L4.B1" 5937.082047 13.88010044 13.38217771 + "BPM.19L4.B1" 5990.530563 14.01378016 13.49003462 + "BPM.18L4.B1" 6043.979079 14.12950216 13.61664003 + "BPM.17L4.B1" 6097.427595 14.2674169 13.72696877 + "BPM.16L4.B1" 6150.876111 14.37919809 13.86052961 + "BPM.15L4.B1" 6204.324627 14.51284783 13.96919328 + "BPM.14L4.B1" 6257.773143 14.62856071 14.09555915 + "BPM.13L4.B1" 6311.221659 14.76652184 14.20504251 + "BPM.12L4.B1" 6364.670174 14.88746126 14.33659035 + "BPM.11L4.B1" 6418.11869 15.03490603 14.43618521 + "BPMCS.10L4.B1" 6469.765401 15.14263871 14.54680791 + "BPM.10L4.B1" 6469.957401 15.14350066 14.54698048 + "BPMCS.9L4.B1" 6508.830412 15.25947458 14.60691371 + "BPM.9L4.B1" 6509.022412 15.25974676 14.60748393 + "BPMCS.8L4.B1" 6549.293422 15.41717806 14.69112978 + "BPM.8L4.B1" 6549.485422 15.41914014 14.69132548 + "BPMCS.7L4.B1" 6588.357433 15.60464773 14.74283631 + "BPM.7L4.B1" 6588.549433 15.60487949 14.743204 + "BPMYB.6L4.B1" 6685.153433 15.71715111 14.82306035 + "BPMYA.5L4.B1" 6722.153433 15.74152267 14.83847451 + "BPMWI.A5L4.B1" 6798.755933 15.77357018 14.8947852 + "BPMWA.B5L4.B1" 6824.619933 15.78753822 14.91363483 + "BPMWA.A5L4.B1" 6833.504933 15.79275693 14.91991439 + "BPMWA.A5R4.B1" 6881.553933 15.82476352 14.95135038 + "BPMWA.B5R4.B1" 6890.438933 15.83134405 14.95662535 + "BPMYB.5R4.B1" 6992.829433 15.9139409 15.00495088 + "BPMYA.6R4.B1" 7024.393433 15.92950585 15.02589674 + "BPMCS.7R4.B1" 7120.717433 16.0949359 15.13618784 + "BPM.7R4.B1" 7120.909433 16.0962508 15.1363642 + "BPMCS.8R4.B1" 7158.506443 16.23850753 15.27160732 + "BPM.8R4.B1" 7158.698443 16.23877463 15.27404203 + "BPMCS.9R4.B1" 7197.571454 16.36996726 15.49430751 + "BPM.9R4.B1" 7197.763454 16.37156331 15.49450137 + "BPMCS.10R4.B1" 7238.034465 16.53626567 15.5572219 + "BPM.10R4.B1" 7238.226465 16.53647139 15.55780267 + "BPM.11R4.B1" 7290.065175 16.64923355 15.65773003 + "BPM.12R4.B1" 7344.788691 16.78367718 15.77722134 + "BPM.13R4.B1" 7398.237207 16.89703131 15.91828169 + "BPM.14R4.B1" 7451.685723 17.03293074 16.0318968 + "BPM.15R4.B1" 7505.134239 17.14599159 16.16797507 + "BPM.16R4.B1" 7558.582755 17.28167612 16.28180813 + "BPM.17R4.B1" 7612.031271 17.39576771 16.41771522 + "BPM.18R4.B1" 7665.479786 17.53167674 16.53133797 + "BPM.19R4.B1" 7718.928302 17.64475248 16.66742487 + "BPM.20R4.B1" 7772.376818 17.78044939 16.78126169 + "BPM.21R4.B1" 7825.825334 17.89453724 16.91718012 + "BPM.22R4.B1" 7879.27385 18.03045609 17.03079408 + "BPM.23R4.B1" 7932.722366 18.14412148 17.1667256 + "BPM.24R4.B1" 7986.170882 18.2805203 17.2808066 + "BPM.25R4.B1" 8039.619398 18.39453744 17.41720948 + "BPM.26R4.B1" 8093.067914 18.5304553 17.53083166 + "BPM.27R4.B1" 8146.51643 18.64413419 17.66677267 + "BPM.28R4.B1" 8199.964946 18.78055463 17.78085705 + "BPM.29R4.B1" 8253.413461 18.89456943 17.91727033 + "BPM.30R4.B1" 8306.861977 19.03048812 18.03088407 + "BPM.31R4.B1" 8360.310493 19.1441651 18.16681365 + "BPM.32R4.B1" 8413.759009 19.28058101 18.28089195 + "BPM.33R4.B1" 8467.207525 19.39458652 18.4172967 + "BPM.34R4.B1" 8520.656041 19.5304874 18.53092156 + "BPM.33L5.B1" 8574.104557 19.64417327 18.66686163 + "BPM.32L5.B1" 8627.553073 19.780604 18.78094448 + "BPM.31L5.B1" 8681.001589 19.89460763 18.91735955 + "BPM.30L5.B1" 8734.450105 20.03051003 19.03097587 + "BPM.29L5.B1" 8787.89862 20.14418661 19.16690596 + "BPM.28L5.B1" 8841.347136 20.2806019 19.28098461 + "BPM.27L5.B1" 8894.795652 20.39461884 19.4173868 + "BPM.26L5.B1" 8948.244168 20.5305365 19.53100852 + "BPM.25L5.B1" 9001.692684 20.64421562 19.66695012 + "BPM.24L5.B1" 9055.1412 20.78063626 19.78103496 + "BPM.23L5.B1" 9108.589716 20.89465082 19.91744764 + "BPM.22L5.B1" 9162.038232 21.03056931 20.03106093 + "BPM.21L5.B1" 9215.486748 21.14423501 20.16699334 + "BPM.20L5.B1" 9268.935264 21.28072246 20.28070776 + "BPM.19L5.B1" 9322.383779 21.39421025 20.41676023 + "BPM.18L5.B1" 9375.832295 21.52931527 20.53050193 + "BPM.17L5.B1" 9429.280811 21.64298487 20.66644388 + "BPM.16L5.B1" 9482.729327 21.77949534 20.78016124 + "BPM.15L5.B1" 9536.177843 21.89299036 20.91622417 + "BPM.14L5.B1" 9589.626359 22.02809491 21.029958 + "BPM.13L5.B1" 9643.074875 22.14174165 21.16589081 + "BPM.12L5.B1" 9696.523391 22.27595739 21.28985589 + "BPM.11L5.B1" 9749.971907 22.38848254 21.43777353 + "BPM.10L5.B1" 9802.752617 22.52383198 21.54680205 + "BPM.9L5.B1" 9841.817628 22.6275657 21.65342338 + "BPM.8L5.B1" 9882.280639 22.83362569 21.79669034 + "BPMR.7L5.B1" 9921.346649 22.9124867 21.99585793 + "BPM.6L5.B1" 9958.240649 22.99537708 22.04085696 + "BPMR.5L5.B1" 9990.140649 23.03673718 22.07994433 + "BPMYA.4L5.B1" 10017.54665 23.07201799 22.10935208 + "BPMWB.4L5.B1" 10038.68115 23.08990496 22.14965967 + "BPMSY.4L5.B1" 10131.46115 23.21118232 22.2852129 + "BPMS.2L5.B1" 10158.24665 23.23904871 22.3288238 + "BPMWF.A1L5.B1" 10168.05165 23.25796334 22.35348298 + "BPMSW.1L5.B1" 10168.21165 23.25843996 22.35395903 + "BPMSW.1L5.B1_DOROS" 10168.21165 23.25843996 22.35395903 + "BPMSW.1R5.B1" 10211.33965 23.60815146 22.70341684 + "BPMSW.1R5.B1_DOROS" 10211.33965 23.60815146 22.70341684 + "BPMWF.A1R5.B1" 10211.49965 23.60862587 22.70389291 + "BPMS.2R5.B1" 10221.30465 23.63320141 22.7227934 + "BPMSY.4R5.B1" 10248.09015 23.67669018 22.75066712 + "BPMWB.4R5.B1" 10340.87015 23.81231161 22.87226892 + "BPMYA.4R5.B1" 10362.00265 23.85274785 22.89021325 + "BPM.5R5.B1" 10383.12065 23.87740348 22.91484009 + "BPMWT.C6R5.B1" 10392.92765 23.88516116 22.93137952 + "BPMWT.D6R5.B1" 10403.00065 23.89504157 22.94603991 + "BPMWT.A6R5.B1" 10404.17865 23.89637784 22.94758488 + "BPMWT.B6R5.B1" 10410.00065 23.90366623 22.95475444 + "BPMR.6R5.B1" 10415.02065 23.91101728 22.96036287 + "BPM_A.7R5.B1" 10449.03465 23.95732948 23.01888356 + "BPM.8R5.B1" 10490.47364 24.08512433 23.11814282 + "BPM.9R5.B1" 10529.54063 24.28833953 23.26433452 + "BPM.10R5.B1" 10570.00562 24.38311764 23.435134 + "BPM.11R5.B1" 10622.78831 24.52594423 23.53745523 + "BPM.12R5.B1" 10677.51479 24.64273725 23.66752824 + "BPM.13R5.B1" 10730.96627 24.7795247 23.7815803 + "BPM.14R5.B1" 10784.41776 24.8936203 23.91805949 + "BPM.15R5.B1" 10837.86924 25.02963651 24.03129898 + "BPM.16R5.B1" 10891.32073 25.14271008 24.16682602 + "BPM.17R5.B1" 10944.77221 25.27829936 24.28105452 + "BPM.18R5.B1" 10998.2237 25.3924019 24.41754091 + "BPM.19R5.B1" 11051.67518 25.5284414 24.53078784 + "BPM.20R5.B1" 11105.12666 25.64152051 24.6663213 + "BPM.21R5.B1" 11158.57815 25.77710821 24.7805425 + "BPM.22R5.B1" 11212.02963 25.89119793 24.91702943 + "BPM.23R5.B1" 11265.48112 26.02714414 25.03063922 + "BPM.24R5.B1" 11318.9326 26.14075197 25.16651119 + "BPM.25R5.B1" 11372.38408 26.27714323 25.28061741 + "BPM.26R5.B1" 11425.83557 26.3912428 25.41710699 + "BPM.27R5.B1" 11479.28705 26.52720318 25.53072133 + "BPM.28R5.B1" 11532.73854 26.64081384 25.66660371 + "BPM.29R5.B1" 11586.19002 26.77721272 25.78070559 + "BPM.30R5.B1" 11639.6415 26.89130878 25.91719052 + "BPM.31R5.B1" 11693.09299 27.02726422 26.03079813 + "BPM.32R5.B1" 11746.54447 27.14086581 26.16667189 + "BPM.33R5.B1" 11799.99596 27.27724783 26.28078032 + "BPM.34R5.B1" 11853.44744 27.39135406 26.41726803 + "BPM.33L6.B1" 11906.89893 27.52732418 26.53088009 + "BPM.32L6.B1" 11960.35041 27.64092401 26.66676514 + "BPM.31L6.B1" 12013.80189 27.77730685 26.78087041 + "BPM.30L6.B1" 12067.25338 27.89140727 26.91735397 + "BPM.29L6.B1" 12120.70486 28.02736909 27.03095987 + "BPM.28L6.B1" 12174.15635 28.14097747 27.16683288 + "BPM.27L6.B1" 12227.60783 28.27736955 27.28094018 + "BPM.26L6.B1" 12281.05931 28.3914686 27.4174286 + "BPM.25L6.B1" 12334.5108 28.52742817 27.53104188 + "BPM.24L6.B1" 12387.96228 28.64103935 27.6669254 + "BPM.23L6.B1" 12441.41377 28.77743903 27.78102836 + "BPM.22L6.B1" 12494.86525 28.891528 27.9175134 + "BPM.21L6.B1" 12548.31673 29.02747303 28.0311216 + "BPM.20L6.B1" 12601.76822 29.14048031 28.16714038 + "BPM.19L6.B1" 12655.2197 29.27613936 28.28100111 + "BPM.18L6.B1" 12708.67119 29.39030925 28.41699468 + "BPM.17L6.B1" 12762.12267 29.52627873 28.53060761 + "BPM.16L6.B1" 12815.57415 29.63929076 28.66663557 + "BPM.15L6.B1" 12869.02564 29.77494726 28.78049184 + "BPM.14L6.B1" 12922.47712 29.88910528 28.91648338 + "BPM.13L6.B1" 12975.92861 30.02507062 29.03009132 + "BPM.12L6.B1" 13029.38009 30.14000625 29.16564913 + "BPM.11L6.B1" 13082.83158 30.27526935 29.29283896 + "BPM.10L6.B1" 13134.67226 30.39145009 29.43987849 + "BPM.9L6.B1" 13173.73925 30.51107213 29.55284968 + "BPM.8L6.B1" 13214.20424 30.63353749 29.77851465 + "BPMYA.5L6.B1" 13311.29423 30.87953237 29.88087667 + "BPMYB.4L6.B1" 13347.69423 30.8947607 29.89983681 + "BPMSX.B4L6.B1" 13383.23473 30.92518117 29.90954019 + "BPMSX.B4L6.B1_ITLK" 13383.23473 30.92518117 29.90954019 + "BPMSX.A4L6.B1" 13383.81973 30.92573442 29.90971959 + "BPMSX.A4L6.B1_ITLK" 13383.81973 30.92573442 29.90971959 + "BPMSE.4L6.B1" 13476.94473 31.02442857 29.95111319 + "BPMSA.4R6.B1" 13568.51473 31.10121781 30.03468357 + "BPMSI.A4R6.B1" 13661.77473 31.14425405 30.15024803 + "BPMSI.A4R6.B1_ITLK" 13661.77473 31.14425405 30.15024803 + "BPMSI.B4R6.B1" 13662.40973 31.14446497 30.15092176 + "BPMSI.B4R6.B1_ITLK" 13662.40973 31.14446497 30.15092176 + "BPMYA.4R6.B1" 13691.29423 31.15322649 30.17861896 + "BPMYB.5R6.B1" 13727.69423 31.1742357 30.1966508 + "BPM.8R6.B1" 13823.42122 31.49780153 30.33971612 + "BPM.9R6.B1" 13862.48821 31.64365963 30.50376831 + "BPM.10R6.B1" 13902.9532 31.79918051 30.60686525 + "BPM.11R6.B1" 13954.79389 31.90339756 30.75380127 + "BPM.12R6.B1" 14009.52037 32.03924999 30.86782555 + "BPM.13R6.B1" 14062.97186 32.15470439 31.00287815 + "BPM.14R6.B1" 14116.42334 32.29185336 31.1203238 + "BPM.15R6.B1" 14169.87483 32.40856948 31.25928204 + "BPM.16R6.B1" 14223.32631 32.54849095 31.37770973 + "BPM.17R6.B1" 14276.77779 32.66243914 31.52247145 + "BPM.18R6.B1" 14330.22928 32.79974949 31.63930558 + "BPM.19R6.B1" 14383.68076 32.91656906 31.77847787 + "BPM.20R6.B1" 14437.13225 33.05630931 31.89749698 + "BPM.21R6.B1" 14490.58373 33.17015361 32.04193383 + "BPM.22R6.B1" 14544.03522 33.30762456 32.15822742 + "BPM.23R6.B1" 14597.4867 33.422186 32.2983244 + "BPM.24R6.B1" 14650.93818 33.55947969 32.41489444 + "BPM.25R6.B1" 14704.38967 33.67395133 32.55472974 + "BPM.26R6.B1" 14757.84115 33.81143128 32.67103606 + "BPM.27R6.B1" 14811.29264 33.9259784 32.81115305 + "BPM.28R6.B1" 14864.74412 34.06325439 32.92769899 + "BPM.29R6.B1" 14918.1956 34.17772883 33.06750213 + "BPM.30R6.B1" 14971.64709 34.31520536 33.18383576 + "BPM.31R6.B1" 15025.09857 34.42975802 33.32397736 + "BPM.32R6.B1" 15078.55006 34.56704641 33.44050416 + "BPM.33R6.B1" 15132.00154 34.68152672 33.58029913 + "BPM.34R6.B1" 15185.45302 34.81901154 33.69665114 + "BPM.33L7.B1" 15238.90451 34.9335576 33.83680248 + "BPM.32L7.B1" 15292.35599 35.07084008 33.95329826 + "BPM.31L7.B1" 15345.80748 35.18532628 34.0930696 + "BPM.30L7.B1" 15399.25896 35.32281187 34.2094531 + "BPM.29L7.B1" 15452.71045 35.4373537 34.34962208 + "BPM.28L7.B1" 15506.16193 35.57463507 34.46609674 + "BPM.27L7.B1" 15559.61341 35.68912264 34.60587003 + "BPM.26L7.B1" 15613.0649 35.82660888 34.72227622 + "BPM.25L7.B1" 15666.51638 35.94113938 34.8624455 + "BPM.24L7.B1" 15719.96787 36.07840858 34.9788878 + "BPM.23L7.B1" 15773.41935 36.19290023 35.11864822 + "BPM.22L7.B1" 15826.87083 36.33038363 35.23508877 + "BPM.21L7.B1" 15880.32232 36.44492029 35.37526387 + "BPM.20L7.B1" 15933.7738 36.58144918 35.49506812 + "BPM.19L7.B1" 15987.22529 36.69770036 35.63837092 + "BPM.18L7.B1" 16040.67677 36.83829133 35.75403466 + "BPM.17L7.B1" 16094.12825 36.95264532 35.89477627 + "BPM.16L7.B1" 16147.57974 37.08926322 36.01485437 + "BPM.15L7.B1" 16201.03122 37.20568686 36.15752225 + "BPM.14L7.B1" 16254.48271 37.34615499 36.27299514 + "BPM.13L7.B1" 16307.93419 37.46035768 36.41438429 + "BPM.12L7.B1" 16361.38567 37.59983642 36.52330268 + "BPM.11L7.B1" 16414.83716 37.71946869 36.65015586 + "BPM.10L7.B1" 16467.61985 37.86353755 36.74217638 + "BPM.9L7.B1" 16506.68684 37.95730242 36.82191345 + "BPM.8L7.B1" 16547.15183 38.14973903 36.88363075 + "BPM.7L7.B1" 16586.21782 38.23226747 36.95935656 + "BPM.6L7.B1" 16621.03582 38.2790229 37.02505066 + "BPMWC.6L7.B1" 16633.13832 38.28659665 37.06664897 + "BPMWE.5L7.B1" 16710.19232 38.47606488 37.17248846 + "BPMW.5L7.B1" 16733.39732 38.57300206 37.18393056 + "BPMWE.4L7.B1" 16768.48232 38.61468208 37.21846945 + "BPMW.4L7.B1" 16796.58732 38.6279247 37.28940192 + "BPMW.4R7.B1" 16912.63432 38.81608018 37.44003956 + "BPMWE.4R7.B1" 16940.73932 38.89245594 37.4520246 + "BPMW.5R7.B1" 16975.82432 38.92546905 37.48468399 + "BPMWE.5R7.B1" 16999.02932 38.93589221 37.54588006 + "BPMR.6R7.B1" 17078.24482 39.02850044 37.71844074 + "BPM_A.7R7.B1" 17116.28082 39.10841708 37.77507929 + "BPM.8R7.B1" 17155.34681 39.23866752 37.85635938 + "BPM.9R7.B1" 17194.4138 39.42649396 37.93534996 + "BPM.10R7.B1" 17234.87878 39.52606465 38.02063038 + "BPM.11R7.B1" 17287.66147 39.65271868 38.1296663 + "BPM.12R7.B1" 17342.38796 39.77315336 38.26666694 + "BPM.13R7.B1" 17395.83944 39.91703661 38.38342972 + "BPM.14R7.B1" 17449.29093 40.03195212 38.52232325 + "BPM.15R7.B1" 17502.74241 40.16807188 38.64104623 + "BPM.16R7.B1" 17556.19389 40.28394147 38.7858146 + "BPM.17R7.B1" 17609.64538 40.42496202 38.90235971 + "BPM.18R7.B1" 17663.09686 40.53967819 39.04156117 + "BPM.19R7.B1" 17716.54835 40.67587738 39.1608802 + "BPM.20R7.B1" 17769.99983 40.79194936 39.30525373 + "BPM.21R7.B1" 17823.45131 40.93288394 39.42125728 + "BPM.22R7.B1" 17876.9028 41.04739091 39.56090291 + "BPM.23R7.B1" 17930.35428 41.18441634 39.67733529 + "BPM.24R7.B1" 17983.80577 41.2989407 39.81762074 + "BPM.25R7.B1" 18037.25725 41.43667417 39.93403678 + "BPM.26R7.B1" 18090.70874 41.55117389 40.07369431 + "BPM.27R7.B1" 18144.16022 41.68821288 40.1901727 + "BPM.28R7.B1" 18197.6117 41.80275048 40.33045888 + "BPM.29R7.B1" 18251.06319 41.94048949 40.44679482 + "BPM.30R7.B1" 18304.51467 42.05497956 40.5864129 + "BPM.31R7.B1" 18357.96616 42.19201377 40.70294232 + "BPM.32R7.B1" 18411.41764 42.30656975 40.8432152 + "BPM.33R7.B1" 18464.86912 42.44431275 40.95951 + "BPM.34R7.B1" 18518.32061 42.55878216 41.09915847 + "BPM.33L8.B1" 18571.77209 42.69581155 41.21573429 + "BPM.32L8.B1" 18625.22358 42.81038193 41.35598373 + "BPM.31L8.B1" 18678.67506 42.94811907 41.47225341 + "BPM.30L8.B1" 18732.12654 43.06255764 41.6119569 + "BPM.29L8.B1" 18785.57803 43.19957314 41.72857037 + "BPM.28L8.B1" 18839.02951 43.31417144 41.86878039 + "BPM.27L8.B1" 18892.481 43.45192065 41.98502046 + "BPM.26L8.B1" 18945.93248 43.56634665 42.12477021 + "BPM.25L8.B1" 18999.38397 43.70337354 42.24141542 + "BPM.24L8.B1" 19052.83545 43.8179795 42.38159009 + "BPM.23L8.B1" 19106.28693 43.95571471 42.49779398 + "BPM.22L8.B1" 19159.73842 44.07011892 42.63757406 + "BPM.21L8.B1" 19213.1899 44.20713792 42.75424863 + "BPM.20L8.B1" 19266.64139 44.32414103 42.89383165 + "BPM.19L8.B1" 19320.09287 44.4641655 43.01298881 + "BPM.18L8.B1" 19373.54435 44.57782779 43.15699543 + "BPM.17L8.B1" 19426.99584 44.71504713 43.27320985 + "BPM.16L8.B1" 19480.44732 44.83216523 43.41319937 + "BPM.15L8.B1" 19533.89881 44.97197972 43.53278204 + "BPM.14L8.B1" 19587.35029 45.08552695 43.67629681 + "BPM.13L8.B1" 19640.80177 45.22293381 43.79215058 + "BPM.12L8.B1" 19694.25326 45.34031058 43.93262083 + "BPM.11L8.B1" 19747.70474 45.48378053 44.03757286 + "BPM.10L8.B1" 19799.54543 45.59280844 44.15748606 + "BPM.9L8.B1" 19838.61242 45.70938806 44.22187634 + "BPM.8L8.B1" 19879.07741 45.85776171 44.3140419 + "BPM.7L8.B1" 19918.1454 46.04671117 44.36689733 + "BPMR.6L8.B1" 19950.6144 46.10993394 44.40189993 + "BPM.5L8.B1" 20011.0334 46.20361532 44.52314898 + "BPMYB.4L8.B1" 20031.8004 46.23820738 44.58734122 + "BPMWB.4L8.B1" 20056.1919 46.32732761 44.64632107 + "BPMSX.4L8.B1" 20106.4249 46.43488244 44.83685364 + "BPMS.2L8.B1" 20144.3364 46.49047593 44.89245411 + "BPMSW.1L8.B1" 20154.2704 46.51425835 44.91020255 + "BPMSW.1L8.B1_DOROS" 20154.2704 46.51425835 44.91020255 + "BPMSW.1R8.B1" 20197.4604 46.87591208 45.27229772 + "BPMSW.1R8.B1_DOROS" 20197.4604 46.87591208 45.27229772 + "BPMS.2R8.B1" 20207.3944 46.89376877 45.29609369 + "BPMSX.4R8.B1" 20245.3059 46.94963872 45.35155388 + "BPMWB.4R8.B1" 20295.4629 47.13938942 45.45823877 + "BPMYB.4R8.B1" 20319.9304 47.19858884 45.54701063 + "BPMYB.5R8.B1" 20340.5074 47.27603005 45.57866288 + "BPM.6R8.B1" 20424.6154 47.45577328 45.7325515 + "BPM_A.7R8.B1" 20446.8554 47.4760259 45.77264675 + "BPM.8R8.B1" 20488.29241 47.5413265 45.91695507 + "BPM.9R8.B1" 20527.35742 47.68110198 46.12450577 + "BPM.10R8.B1" 20567.82043 47.87259493 46.20328609 + "BPM.11R8.B1" 20619.65914 47.97478288 46.32219022 + "BPM.12R8.B1" 20674.38266 48.10090201 46.44310087 + "BPM.13R8.B1" 20727.83117 48.21367332 46.58447638 + "BPM.14R8.B1" 20781.27969 48.349703 46.69849078 + "BPM.15R8.B1" 20834.72821 48.46324523 46.83500007 + "BPM.16R8.B1" 20888.17672 48.59880992 46.94843807 + "BPM.17R8.B1" 20941.62524 48.71242179 47.0839191 + "BPM.18R8.B1" 20995.07375 48.84845673 47.1979343 + "BPM.19R8.B1" 21048.52227 48.96200739 47.33445183 + "BPM.20R8.B1" 21101.97079 49.09758075 47.44789278 + "BPM.21R8.B1" 21155.4193 49.21118611 47.58337431 + "BPM.22R8.B1" 21208.86782 49.34721802 47.69738228 + "BPM.23R8.B1" 21262.31633 49.46136982 47.83375115 + "BPM.24R8.B1" 21315.76485 49.59765877 47.94744171 + "BPM.25R8.B1" 21369.21337 49.71119486 48.0834131 + "BPM.26R8.B1" 21422.66188 49.84723025 48.1974253 + "BPM.27R8.B1" 21476.1104 49.9613874 48.33379995 + "BPM.28R8.B1" 21529.55891 50.09768555 48.44749027 + "BPM.29R8.B1" 21583.00743 50.21121821 48.58346455 + "BPM.30R8.B1" 21636.45594 50.34725018 48.69747274 + "BPM.31R8.B1" 21689.90446 50.4614103 48.8338398 + "BPM.32R8.B1" 21743.35298 50.5977112 48.94752808 + "BPM.33R8.B1" 21796.80149 50.71123902 49.08350121 + "BPM.34R8.B1" 21850.25001 50.84726248 49.1975157 + "BPM.33L1.B1" 21903.69852 50.96142659 49.33388887 + "BPM.32L1.B1" 21957.14704 51.09773472 49.44757725 + "BPM.31L1.B1" 22010.59556 51.21126212 49.58355268 + "BPM.30L1.B1" 22064.04407 51.34728663 49.6975624 + "BPM.29L1.B1" 22117.49259 51.46144376 49.83392989 + "BPM.28L1.B1" 22170.9411 51.59774006 49.94761874 + "BPM.27L1.B1" 22224.38962 51.71127603 50.0835905 + "BPM.26L1.B1" 22277.83814 51.84731179 50.19760308 + "BPM.25L1.B1" 22331.28665 51.96146905 50.33397732 + "BPM.24L1.B1" 22384.73517 52.09776684 50.44766726 + "BPM.23L1.B1" 22438.18368 52.21129937 50.58364195 + "BPM.22L1.B1" 22491.6322 52.3473317 50.69765053 + "BPM.21L1.B1" 22545.08071 52.46148368 50.83401877 + "BPM.20L1.B1" 22598.52923 52.59786011 50.94734337 + "BPM.19L1.B1" 22651.97775 52.71146842 51.08281857 + "BPM.18L1.B1" 22705.42626 52.84750503 51.19682722 + "BPM.17L1.B1" 22758.87478 52.96166264 51.33320539 + "BPM.16L1.B1" 22812.32329 53.09804761 51.44653385 + "BPM.15L1.B1" 22865.77181 53.21165217 51.58200782 + "BPM.14L1.B1" 22919.22033 53.34768598 51.69600832 + "BPM.13L1.B1" 22972.66884 53.46183862 51.83238462 + "BPM.12L1.B1" 23026.11736 53.59594858 51.95591592 + "BPM.11L1.B1" 23079.56587 53.70797568 52.10346959 + "BPM.10L1.B1" 23132.34658 53.84341905 52.21294461 + "BPM.9L1.B1" 23171.4116 53.94762455 52.31991776 + "BPM.8L1.B1" 23211.87461 54.15334472 52.46271707 + "BPMR.7L1.B1" 23250.94062 54.23191975 52.66174489 + "BPM.6L1.B1" 23294.12462 54.32152798 52.71743795 + "BPMR.5L1.B1" 23326.02462 54.36715703 52.75110767 + "BPMYA.4L1.B1" 23347.14262 54.39183216 52.77576967 + "BPMWB.4L1.B1" 23368.27512 54.40980398 52.81615192 + "BPMSY.4L1.B1" 23461.05512 54.53135591 52.95129866 + "BPMS.2L1.B1" 23487.84062 54.55916908 52.9946953 + "BPMWF.A1L1.B1" 23497.63062 54.57798024 53.01921309 + "BPMSW.1L1.B1" 23497.79062 54.57845464 53.019687 + "BPMSW.1L1.B1_DOROS" 23497.79062 54.57845464 53.019687 + "BPMSW.1R1.B1" 23540.93362 54.92813323 53.3698539 + "BPMSW.1R1.B1_DOROS" 23540.93362 54.92813323 53.3698539 + "BPMWF.A1R1.B1" 23541.09362 54.92860967 53.3703287 + "BPMS.2R1.B1" 23550.89862 54.95327985 53.38916901 + "BPMSY.4R1.B1" 23577.68412 54.99686567 53.41692551 + "BPMWB.4R1.B1" 23670.46412 55.1321343 53.53798849 + "BPMYA.4R1.B1" 23691.59662 55.17237817 53.55589932 + "BPM.5R1.B1" 23719.00462 55.20177258 53.59127243 + "BPMSA.A6R1.B1" 23736.98012 55.21970444 53.61735364 + "BPMR.6R1.B1" 23750.90462 55.24087788 53.63278513 + "BPMSX.7R1.B1" 23757.12012 55.25052772 53.6404495 + "BPM_A.7R1.B1" 23778.62862 55.27673943 53.68488212 + "BPM.8R1.B1" 23820.06761 55.40500058 53.78458222 + "BPM.9R1.B1" 23859.1346 55.60827601 53.93052675 + "BPM.10R1.B1" 23899.59958 55.70262812 54.10082573 + "BPM.11R1.B1" 23952.38227 55.84554016 54.2035495 + "BPM.12R1.B1" 24007.10876 55.9628409 54.33402336 + "BPM.13R1.B1" 24060.56024 56.0994889 54.44768891 + "BPM.14R1.B1" 24114.01173 56.21309839 54.58373822 + "BPM.15R1.B1" 24167.46321 56.34926535 54.69736666 + "BPM.16R1.B1" 24220.91469 56.46282669 54.83333337 + "BPM.17R1.B1" 24274.36618 56.59827882 54.94717078 + "BPM.18R1.B1" 24327.81766 56.71188328 55.08321527 + "BPM.19R1.B1" 24381.26915 56.84804811 55.19684755 + "BPM.20R1.B1" 24434.72063 56.96162074 55.33281688 + "BPM.21R1.B1" 24488.17211 57.09708264 55.44665644 + "BPM.22R1.B1" 24541.6236 57.21068277 55.58270763 + "BPM.23R1.B1" 24595.07508 57.34676219 55.69670344 + "BPM.24R1.B1" 24648.52657 57.46086299 55.8330187 + "BPM.25R1.B1" 24701.97805 57.59712779 55.94673595 + "BPM.26R1.B1" 24755.42954 57.7107276 56.08278122 + "BPM.27R1.B1" 24808.88102 57.84680455 56.19678074 + "BPM.28R1.B1" 24862.3325 57.96091202 56.33309919 + "BPM.29R1.B1" 24915.78399 58.09718671 56.44681869 + "BPM.30R1.B1" 24969.23547 58.21078583 56.58287025 + "BPM.31R1.B1" 25022.68696 58.34686423 56.69686655 + "BPM.32R1.B1" 25076.13844 58.4609661 56.83318132 + "BPM.33R1.B1" 25129.58992 58.59723193 56.94689808 + "BPM.34R1.B1" 25183.04141 58.71083853 57.08294232 + "BPM.33L2.B1" 25236.49289 58.84692607 57.19694032 + "BPM.32L2.B1" 25289.94438 58.96102719 57.33325965 + "BPM.31L2.B1" 25343.39586 59.09729194 57.44698057 + "BPM.30L2.B1" 25396.84734 59.21089835 57.58303108 + "BPM.29L2.B1" 25450.29883 59.34698811 57.69702571 + "BPM.28L2.B1" 25503.75031 59.46108916 57.83334026 + "BPM.27L2.B1" 25557.2018 59.59735314 57.94705704 + "BPM.26L2.B1" 25610.65328 59.71095273 58.08310296 + "BPM.25L2.B1" 25664.10477 59.8470305 58.19710295 + "BPM.24L2.B1" 25717.55625 59.9611382 58.33342075 + "BPM.23L2.B1" 25771.00773 60.09741206 58.44713979 + "BPM.22L2.B1" 25824.45922 60.21101189 58.58319181 + "BPM.21L2.B1" 25877.9107 60.34709249 58.69718833 + "BPM.20L2.B1" 25931.36219 60.46059057 58.83364763 + "BPM.19L2.B1" 25984.81367 60.59612816 58.94711769 + "BPM.18L2.B1" 26038.26515 60.70979676 59.08266892 + "BPM.17L2.B1" 26091.71664 60.8458763 59.19666641 + "BPM.16L2.B1" 26145.16812 60.95938452 59.33313102 + "BPM.15L2.B1" 26198.61961 61.0949307 59.44660604 + "BPM.14L2.B1" 26252.07109 61.20859617 59.58216129 + "BPM.13L2.B1" 26305.52257 61.34467983 59.69615264 + "BPM.12L2.B1" 26358.97406 61.44630157 59.83582591 + "BPM.11L2.B1" 26412.42554 61.56549176 59.94338011 + "BPM.10L2.B1" 26464.26623 61.68916925 60.06078452 + "BPM.9L2.B1" 26503.33322 61.8323035 60.11734454 + "BPM.8L2.B1" 26543.79821 61.92994123 60.19427718 + "BPM.7L2.B1" 26582.8662 62.05639842 60.23877 + "BPMR.6L2.B1" 26614.9722 62.15841341 60.26434799 diff --git a/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B2.dat b/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B2.dat new file mode 100644 index 00000000..708e2e6b --- /dev/null +++ b/tests/inputs/correction/deltap/twiss_dpp_-1.0e-04_B2.dat @@ -0,0 +1,613 @@ +@ NAME %05s "TWISS" +@ TYPE %05s "TWISS" +@ SEQUENCE %05s "LHCB2" +@ PARTICLE %06s "PROTON" +@ MASS %le 0.9382720882 +@ CHARGE %le 1 +@ ENERGY %le 450 +@ PC %le 449.9990218 +@ GAMMA %le 479.6050162 +@ KBUNCH %le 1 +@ BCURRENT %le 0.0002071977796 +@ SIGE %le 0.001 +@ SIGT %le 1 +@ NPART %le 1.15e+11 +@ EX %le 1 +@ EY %le 1 +@ ET %le 0.001 +@ BV_FLAG %le -1 +@ LENGTH %le 26658.8832 +@ ALFA %le 0.0003474047693 +@ ORBIT5 %le -0 +@ GAMMATR %le 53.65153005 +@ Q1 %le 62.28001034 +@ Q2 %le 60.31000965 +@ DQ1 %le 2.140876813 +@ DQ2 %le 2.091551131 +@ DXMAX %le 2.881987588 +@ DYMAX %le 0.3528583454 +@ XCOMAX %le 8.241167909e-05 +@ YCOMAX %le 0.01300605746 +@ BETXMAX %le 585.5846171 +@ BETYMAX %le 645.4233188 +@ XCORMS %le 2.138569666e-05 +@ YCORMS %le 0.000965747394 +@ DXRMS %le 1.496722237 +@ DYRMS %le 0.09249722905 +@ DELTAP %le -0.0001 +@ SYNCH_1 %le 0 +@ SYNCH_2 %le 0 +@ SYNCH_3 %le 0 +@ SYNCH_4 %le 0 +@ SYNCH_5 %le 0 +@ TITLE %08s "no-title" +@ ORIGIN %16s "5.06.00 Linux 64" +@ DATE %08s "18/10/24" +@ TIME %08s "14.59.55" +* NAME S MUX MUY +$ %s %le %le %le + "BPMYB.5R8.B2" 16.238 0.02367266287 0.05375212056 + "BPMR.6R8.B2" 100.346 0.1783652148 0.1916756635 + "BPM_A.7R8.B2" 122.586 0.2134034858 0.2120590761 + "BPM.8R8.B2" 164.0249894 0.3365695997 0.2865904213 + "BPM.9R8.B2" 203.0919788 0.5755895137 0.3953646383 + "BPM.10R8.B2" 243.5569682 0.6683102287 0.5102924872 + "BPM.11R8.B2" 295.3976576 0.7914074504 0.6115314348 + "BPM.12R8.B2" 350.1241417 0.9184512332 0.7370695494 + "BPM.13R8.B2" 403.5756258 1.070969999 0.8487767017 + "BPM.14R8.B2" 457.0271099 1.184457592 0.985053587 + "BPM.15R8.B2" 510.478594 1.320753747 1.098516053 + "BPM.16R8.B2" 563.9300781 1.434476338 1.234240835 + "BPM.17R8.B2" 617.3815622 1.569852801 1.348236952 + "BPM.18R8.B2" 670.8330463 1.683333522 1.48451675 + "BPM.19R8.B2" 724.2845304 1.81962602 1.59798161 + "BPM.20R8.B2" 777.7360145 1.933356043 1.733704705 + "BPM.21R8.B2" 831.1874986 2.068737058 1.84770019 + "BPM.22R8.B2" 884.6389827 2.182212922 1.983984016 + "BPM.23R8.B2" 938.0904667 2.318416273 2.097817341 + "BPM.24R8.B2" 991.5419508 2.432644507 2.233899707 + "BPM.25R8.B2" 1044.993435 2.568787963 2.347781584 + "BPM.26R8.B2" 1098.444919 2.68226316 2.484063284 + "BPM.27R8.B2" 1151.896403 2.818465101 2.597897293 + "BPM.28R8.B2" 1205.347887 2.932695127 2.733980051 + "BPM.29R8.B2" 1258.799371 3.068840843 2.847863018 + "BPM.30R8.B2" 1312.250855 3.182318736 2.984146268 + "BPM.31R8.B2" 1365.70234 3.31852558 3.097978925 + "BPM.32R8.B2" 1419.153824 3.432751816 3.234061725 + "BPM.33R8.B2" 1472.605308 3.568891817 3.347944277 + "BPM.34R8.B2" 1526.056792 3.682373977 3.484224581 + "BPM.33L1.B2" 1579.508276 3.818586776 3.598056652 + "BPM.32L1.B2" 1632.95976 3.932812871 3.734140161 + "BPM.31L1.B2" 1686.411244 4.068952248 3.848024299 + "BPM.30L1.B2" 1739.862728 4.182432098 3.984307165 + "BPM.29L1.B2" 1793.314212 4.318642402 4.098139146 + "BPM.28L1.B2" 1846.765696 4.432870562 4.234221587 + "BPM.27L1.B2" 1900.21718 4.5690128 4.348103816 + "BPM.26L1.B2" 1953.668665 4.682488078 4.484385399 + "BPM.25L1.B2" 2007.120149 4.81869124 4.598219061 + "BPM.24L1.B2" 2060.571633 4.932921188 4.734301939 + "BPM.23L1.B2" 2114.023117 5.06906569 4.848185254 + "BPM.22L1.B2" 2167.474601 5.182541685 4.984468772 + "BPM.21L1.B2" 2220.926085 5.318746812 5.098301567 + "BPM.20L1.B2" 2274.377569 5.432407345 5.234520509 + "BPM.19L1.B2" 2327.829053 5.567873912 5.348147486 + "BPM.18L1.B2" 2381.280537 5.681417575 5.483931968 + "BPM.17L1.B2" 2434.732021 5.817620162 5.597764239 + "BPM.16L1.B2" 2488.183506 5.931287001 5.73398434 + "BPM.15L1.B2" 2541.63499 6.066757079 5.847613593 + "BPM.14L1.B2" 2595.086474 6.18029699 5.983399256 + "BPM.13L1.B2" 2648.537958 6.316500247 6.097229471 + "BPM.12L1.B2" 2701.989442 6.43757954 6.231767578 + "BPM.11L1.B2" 2755.440926 6.581256388 6.347870539 + "BPM.10L1.B2" 2808.223615 6.693319942 6.487101439 + "BPM.9L1.B2" 2847.290605 6.803451351 6.592580753 + "BPM.8L1.B2" 2887.755594 6.966811209 6.79970201 + "BPM.7L1.B2" 2926.823584 7.16752563 6.871035994 + "BPMSX.7L1.B2" 2957.502084 7.198223403 6.934304655 + "BPMR.6L1.B2" 2970.007584 7.21701096 6.946178093 + "BPMSA.A6L1.B2" 2977.035084 7.226794453 6.952866349 + "BPM.5L1.B2" 3001.907584 7.25112762 6.985108417 + "BPMYA.4L1.B2" 3023.025584 7.276596874 7.008239597 + "BPMWB.4L1.B2" 3044.082084 7.316906988 7.026077129 + "BPMSY.4L1.B2" 3136.938084 7.452804328 7.147322966 + "BPMS.2L1.B2" 3163.723584 7.496334869 7.175100271 + "BPMWF.A1L1.B2" 3173.513584 7.520880849 7.19390597 + "BPMSW.1L1.B2" 3173.673584 7.521354933 7.194380433 + "BPMSW.1L1.B2_DOROS" 3173.673584 7.521354933 7.194380433 + "BPMSW.1R1.B2" 3216.816584 7.870962611 7.544416792 + "BPMSW.1R1.B2_DOROS" 3216.816584 7.870962611 7.544416792 + "BPMWF.A1R1.B2" 3216.976584 7.871439674 7.544891608 + "BPMS.2R1.B2" 3226.781584 7.890373376 7.569475503 + "BPMSY.4R1.B2" 3253.567084 7.918271689 7.612916648 + "BPMWB.4R1.B2" 3346.423084 8.039722778 7.748277559 + "BPMYA.4R1.B2" 3367.479584 8.057526555 7.788512957 + "BPMR.5R1.B2" 3394.887584 8.089993701 7.81912167 + "BPM.6R1.B2" 3426.787584 8.124883919 7.85807556 + "BPMRA.7R1.B2" 3454.511584 8.16787151 7.890025396 + "BPM.8R1.B2" 3495.948594 8.255085717 8.010437349 + "BPM.9R1.B2" 3535.013605 8.397087428 8.245083121 + "BPM.10R1.B2" 3575.476615 8.573816782 8.339196157 + "BPM.11R1.B2" 3628.257326 8.681275827 8.480862856 + "BPM.12R1.B2" 3682.980842 8.818103514 8.59749646 + "BPM.13R1.B2" 3736.429358 8.932127474 8.734905949 + "BPM.14R1.B2" 3789.877874 9.068303693 8.848836236 + "BPM.15R1.B2" 3843.32639 9.181210013 8.985249332 + "BPM.16R1.B2" 3896.774906 9.316678236 9.098764024 + "BPM.17R1.B2" 3950.223421 9.430963658 9.234335253 + "BPM.18R1.B2" 4003.671937 9.567146653 9.348261913 + "BPM.19R1.B2" 4057.120453 9.680057752 9.484674021 + "BPM.20R1.B2" 4110.568969 9.815513873 9.598193292 + "BPM.21R1.B2" 4164.017485 9.92979797 9.733764913 + "BPM.22R1.B2" 4217.466001 10.06599768 9.847689901 + "BPM.23R1.B2" 4270.914517 10.17947756 9.983969977 + "BPM.24R1.B2" 4324.363033 10.31560773 10.09774508 + "BPM.25R1.B2" 4377.811549 10.42981521 10.23380995 + "BPM.26R1.B2" 4431.260065 10.56600954 10.34773405 + "BPM.27R1.B2" 4484.70858 10.6794897 10.48401133 + "BPM.28R1.B2" 4538.157096 10.8156193 10.59778834 + "BPM.29R1.B2" 4591.605612 10.92983013 10.73385534 + "BPM.30R1.B2" 4645.054128 11.06602959 10.84778045 + "BPM.31R1.B2" 4698.502644 11.17951093 10.98406014 + "BPM.32R1.B2" 4751.95116 11.31564346 11.09783477 + "BPM.33R1.B2" 4805.399676 11.4298495 11.23390002 + "BPM.34R1.B2" 4858.848192 11.56604149 11.3478246 + "BPM.33L2.B2" 4912.296708 11.67952857 11.48410044 + "BPM.32L2.B2" 4965.745224 11.81566863 11.59787559 + "BPM.31L2.B2" 5019.19374 11.92987419 11.73394364 + "BPM.30L2.B2" 5072.642255 12.06606567 11.8478702 + "BPM.29L2.B2" 5126.090771 12.17955079 11.98414911 + "BPM.28L2.B2" 5179.539287 12.31568916 12.09792266 + "BPM.27L2.B2" 5232.987803 12.42989668 12.23398767 + "BPM.26L2.B2" 5286.436319 12.56609058 12.34791198 + "BPM.25L2.B2" 5339.884835 12.67957072 12.48418907 + "BPM.24L2.B2" 5393.333351 12.81570075 12.59796588 + "BPM.23L2.B2" 5446.781867 12.92991161 12.73403307 + "BPM.22L2.B2" 5500.230383 13.06611064 12.84795838 + "BPM.21L2.B2" 5553.678899 13.17959048 12.98423817 + "BPM.20L2.B2" 5607.127414 13.31580994 13.09764557 + "BPM.19L2.B2" 5660.57593 13.4295231 13.23334865 + "BPM.18L2.B2" 5714.024446 13.56495356 13.34738393 + "BPM.17L2.B2" 5767.472962 13.67842866 13.4836637 + "BPM.16L2.B2" 5820.921478 13.81464548 13.59707485 + "BPM.15L2.B2" 5874.369994 13.92836695 13.73277744 + "BPM.14L2.B2" 5927.81851 14.06380468 13.84681183 + "BPM.13L2.B2" 5981.267026 14.17727454 13.9830969 + "BPM.12L2.B2" 6034.715542 14.31804561 14.08040078 + "BPM.11L2.B2" 6088.164058 14.42027519 14.19389996 + "BPM.10L2.B2" 6140.002768 14.53155981 14.29460227 + "BPM.9L2.B2" 6179.067779 14.65246696 14.3887624 + "BPM.8L2.B2" 6219.530789 14.87423188 14.54438825 + "BPM.7L2.B2" 6258.5968 14.92338021 14.76250747 + "BPM.6L2.B2" 6290.7028 14.95394257 14.81039412 + "BPMYB.5L2.B2" 6362.9018 15.09298617 14.913079 + "BPMYB.4L2.B2" 6383.4718 15.15756064 14.94726994 + "BPMWB.4L2.B2" 6407.8633 15.21634427 15.03628433 + "BPMSX.4L2.B2" 6458.0963 15.40658472 15.14332184 + "BPMS.2L2.B2" 6496.0078 15.46239494 15.19872075 + "BPMSW.1L2.B2" 6505.9418 15.48022092 15.22247267 + "BPMSW.1L2.B2_DOROS" 6505.9418 15.48022092 15.22247267 + "BPMSW.1R2.B2" 6549.1318 15.84194295 15.58465329 + "BPMSW.1R2.B2_DOROS" 6549.1318 15.84194295 15.58465329 + "BPMS.2R2.B2" 6559.0658 15.86574531 15.60241718 + "BPMSX.4R2.B2" 6596.9773 15.92133184 15.65801272 + "BPMWB.4R2.B2" 6647.1343 16.0284524 15.8479804 + "BPMYB.4R2.B2" 6671.6018 16.11743597 15.90740787 + "BPM.5R2.B2" 6701.1358 16.1568866 16.03085585 + "BPMR.6R2.B2" 6774.4318 16.3376336 16.1446997 + "BPM_A.7R2.B2" 6787.3068 16.37033349 16.15481359 + "BPM.8R2.B2" 6828.745789 16.48789858 16.20509282 + "BPM.9R2.B2" 6867.812779 16.62002923 16.26677587 + "BPM.10R2.B2" 6908.277768 16.73888068 16.34158877 + "BPM.11R2.B2" 6960.118458 16.88515915 16.44833495 + "BPM.12R2.B2" 7014.844942 16.99272004 16.58740215 + "BPM.13R2.B2" 7068.296426 17.12036874 16.69951582 + "BPM.14R2.B2" 7121.74791 17.23587296 16.83231883 + "BPM.15R2.B2" 7175.199394 17.37250676 16.94673368 + "BPM.16R2.B2" 7228.650878 17.48908913 17.08187768 + "BPM.17R2.B2" 7282.102362 17.63029871 17.19201016 + "BPM.18R2.B2" 7335.553846 17.7455546 17.32456888 + "BPM.19R2.B2" 7389.00533 17.88227129 17.43887383 + "BPM.20R2.B2" 7442.456814 17.99910414 17.57425267 + "BPM.21R2.B2" 7495.908299 18.14020779 17.68450421 + "BPM.22R2.B2" 7549.359783 18.25523472 17.81684959 + "BPM.23R2.B2" 7602.811267 18.39283403 17.92796038 + "BPM.24R2.B2" 7656.262751 18.50805758 18.05987372 + "BPM.25R2.B2" 7709.714235 18.6458649 18.17055363 + "BPM.26R2.B2" 7763.165719 18.76088149 18.30284833 + "BPM.27R2.B2" 7816.617203 18.89848115 18.41399084 + "BPM.28R2.B2" 7870.068687 19.01371807 18.54595114 + "BPM.29R2.B2" 7923.520171 19.15152582 18.65660971 + "BPM.30R2.B2" 7976.971655 19.26653694 18.78886368 + "BPM.31R2.B2" 8030.42314 19.40414975 18.90002663 + "BPM.32R2.B2" 8083.874624 19.51938826 19.03203652 + "BPM.33R2.B2" 8137.326108 19.65718085 19.14267194 + "BPM.34R2.B2" 8190.777592 19.77219277 19.27486316 + "BPM.33L3.B2" 8244.229076 19.90982162 19.3860404 + "BPM.32L3.B2" 8297.68056 20.0250648 19.5181072 + "BPM.31L3.B2" 8351.132044 20.16284672 19.62873894 + "BPM.30L3.B2" 8404.583528 20.2778549 19.76088321 + "BPM.29L3.B2" 8458.035012 20.41549742 19.87206392 + "BPM.28L3.B2" 8511.486496 20.53074287 20.00418381 + "BPM.27L3.B2" 8564.93798 20.66851251 20.11480863 + "BPM.26L3.B2" 8618.389465 20.78350872 20.24689026 + "BPM.25L3.B2" 8671.840949 20.92114701 20.35807247 + "BPM.24L3.B2" 8725.292433 21.03640391 20.49025012 + "BPM.23L3.B2" 8778.743917 21.17417337 20.60088588 + "BPM.22L3.B2" 8832.195401 21.28916806 20.73291995 + "BPM.21L3.B2" 8885.646885 21.42682339 20.84408794 + "BPM.20L3.B2" 8939.098369 21.54451315 20.97575455 + "BPM.19L3.B2" 8992.549853 21.68458424 21.08894016 + "BPM.18L3.B2" 9046.001337 21.79883157 21.22519238 + "BPM.17L3.B2" 9099.452821 21.93672221 21.33655364 + "BPM.16L3.B2" 9152.904306 22.05453989 21.46812379 + "BPM.15L3.B2" 9206.35579 22.19436549 21.58111391 + "BPM.14L3.B2" 9259.807274 22.30851305 21.71746648 + "BPM.13L3.B2" 9313.258758 22.44666812 21.82902212 + "BPM.12L3.B2" 9366.710242 22.54506808 21.96579393 + "BPM.11L3.B2" 9420.161726 22.65635526 22.07681959 + "BPM.10L3.B2" 9472.944415 22.74095099 22.20841323 + "BPM.9L3.B2" 9512.011405 22.82073527 22.26797077 + "BPM.8L3.B2" 9552.476394 22.91129062 22.33206782 + "BPM.7L3.B2" 9591.542384 23.0336492 22.38696487 + "BPMR.6L3.B2" 9664.181384 23.26895611 22.48096957 + "BPMWJ.A5L3.B2" 9705.809884 23.32001803 22.52677765 + "BPMW.5L3.B2" 9734.779884 23.33275823 22.59045075 + "BPMWE.4L3.B2" 9809.907884 23.46219355 22.66370285 + "BPMW.4L3.B2" 9837.452884 23.6100252 22.67498175 + "BPMW.4R3.B2" 9882.417884 23.6802308 22.7101232 + "BPMWE.4R3.B2" 9909.962884 23.69543419 22.75581277 + "BPMW.5R3.B2" 9985.090884 23.79874321 22.82942794 + "BPMWE.A5R3.B2" 10013.80888 23.88143797 22.84491476 + "BPMWC.6R3.B2" 10053.62688 23.93740402 22.88785527 + "BPM.6R3.B2" 10065.78138 23.94646677 22.91413251 + "BPM_A.7R3.B2" 10121.60538 24.03350566 23.00365212 + "BPM.8R3.B2" 10160.67137 24.10385826 23.13742019 + "BPM.9R3.B2" 10199.73836 24.16293638 23.35509408 + "BPM.10R3.B2" 10240.20335 24.23682835 23.43538977 + "BPM.11R3.B2" 10292.98604 24.36267849 23.53933866 + "BPM.12R3.B2" 10347.71253 24.5246603 23.65172718 + "BPM.13R3.B2" 10401.16401 24.63985706 23.7867101 + "BPM.14R3.B2" 10454.61549 24.77704162 23.89744878 + "BPM.15R3.B2" 10508.06698 24.89405843 24.02927436 + "BPM.16R3.B2" 10561.51846 25.0346636 24.14291379 + "BPM.17R3.B2" 10614.96995 25.14954517 24.27902542 + "BPM.18R3.B2" 10668.42143 25.28689221 24.38994103 + "BPM.19R3.B2" 10721.87291 25.40408429 24.52162446 + "BPM.20R3.B2" 10775.3244 25.54452032 24.63506949 + "BPM.21R3.B2" 10828.77588 25.65923059 24.77131863 + "BPM.22R3.B2" 10882.22737 25.79673861 24.88242161 + "BPM.23R3.B2" 10935.67885 25.91166089 25.01453655 + "BPM.24R3.B2" 10989.13033 26.04956666 25.12524547 + "BPM.25R3.B2" 11042.58182 26.16489215 25.25734639 + "BPM.26R3.B2" 11096.0333 26.30239686 25.36844861 + "BPM.27R3.B2" 11149.48479 26.41732807 25.50060754 + "BPM.28R3.B2" 11202.93627 26.55524708 25.61131589 + "BPM.29R3.B2" 11256.38775 26.67055241 25.74337048 + "BPM.30R3.B2" 11309.83924 26.80802953 25.85446445 + "BPM.31R3.B2" 11363.29072 26.92298438 25.98665696 + "BPM.32R3.B2" 11416.74221 27.06093041 26.09737921 + "BPM.33R3.B2" 11470.19369 27.17622207 26.22940433 + "BPM.34R3.B2" 11523.64518 27.31368843 26.34048716 + "BPM.33L4.B2" 11577.09666 27.42865511 26.4727198 + "BPM.32L4.B2" 11630.54814 27.56661214 26.58345257 + "BPM.31L4.B2" 11683.99963 27.68189013 26.71543384 + "BPM.30L4.B2" 11737.45111 27.81934423 26.82649541 + "BPM.29L4.B2" 11790.9026 27.93432114 26.9587594 + "BPM.28L4.B2" 11844.35408 28.07228071 27.06952106 + "BPM.27L4.B2" 11897.80556 28.18754733 27.20147979 + "BPM.26L4.B2" 11951.25705 28.32499777 27.31251842 + "BPM.25L4.B2" 12004.70853 28.43998847 27.44481327 + "BPM.24L4.B2" 12058.16002 28.57795843 27.55559488 + "BPM.23L4.B2" 12111.6115 28.69320225 27.68752055 + "BPM.22L4.B2" 12165.06298 28.83063062 27.79853142 + "BPM.21L4.B2" 12218.51447 28.94564273 27.93084632 + "BPM.20L4.B2" 12271.96595 29.08287772 28.04471694 + "BPM.19L4.B2" 12325.41744 29.19994468 28.1803385 + "BPM.18L4.B2" 12378.86892 29.34050865 28.29101739 + "BPM.17L4.B2" 12432.32041 29.45533906 28.42316099 + "BPM.16L4.B2" 12485.77189 29.5927249 28.53687729 + "BPM.15L4.B2" 12539.22337 29.70995912 28.67266324 + "BPM.14L4.B2" 12592.67486 29.85033788 28.78349257 + "BPM.13L4.B2" 12646.12634 29.96501571 28.91547693 + "BPM.12L4.B2" 12699.57783 30.10457541 29.02131252 + "BPM.11L4.B2" 12753.02931 30.22431897 29.14559936 + "BPMCS.10L4.B2" 12804.678 30.36492219 29.23811728 + "BPM.10L4.B2" 12804.87 30.3651157 29.2388008 + "BPMCS.9L4.B2" 12843.74499 30.46517247 29.32321235 + "BPM.9L4.B2" 12843.93699 30.46653612 29.32340275 + "BPMCS.8L4.B2" 12884.20998 30.67473721 29.38969795 + "BPM.8L4.B2" 12884.40198 30.67505709 29.39031296 + "BPMCS.7L4.B2" 12923.27597 30.8037193 29.46989111 + "BPM.7L4.B2" 12923.46797 30.80501715 29.47007422 + "BPMYA.6L4.B2" 13020.07197 31.01369471 29.56740548 + "BPMYB.5L4.B2" 13057.07197 31.03168633 29.59023533 + "BPMWA.B5L4.B2" 13159.46247 31.11753154 29.62949579 + "BPMWA.A5L4.B2" 13168.34747 31.12436588 29.63370088 + "BPMWA.A5R4.B2" 13216.39647 31.15743424 29.65880876 + "BPMWA.B5R4.B2" 13225.28147 31.16279127 29.66387311 + "BPMWI.A5R4.B2" 13251.14547 31.17707146 29.67927592 + "BPMYA.5R4.B2" 13327.74797 31.20948491 29.72840124 + "BPMYB.6R4.B2" 13359.31197 31.22956355 29.74114332 + "BPMCS.7R4.B2" 13455.63597 31.34893025 29.96323523 + "BPM.7R4.B2" 13455.82797 31.34913227 29.96533218 + "BPMCS.8R4.B2" 13493.42696 31.44680536 30.12359933 + "BPM.8R4.B2" 13493.61896 31.44802313 30.12379766 + "BPMCS.9R4.B2" 13532.49395 31.61251123 30.18490386 + "BPM.9R4.B2" 13532.68595 31.61281683 30.18544572 + "BPMCS.10R4.B2" 13572.95894 31.72609861 30.261512 + "BPM.10R4.B2" 13573.15094 31.72715354 30.26168701 + "BPM.11R4.B2" 13624.99162 31.87274353 30.36148788 + "BPM.12R4.B2" 13679.71811 31.98622169 30.49128663 + "BPM.13R4.B2" 13733.16959 32.11780957 30.60558492 + "BPM.14R4.B2" 13786.62108 32.23158234 30.74161342 + "BPM.15R4.B2" 13840.07256 32.36779291 30.85536661 + "BPM.16R4.B2" 13893.52405 32.48122956 30.99134761 + "BPM.17R4.B2" 13946.97553 32.61668988 31.10505156 + "BPM.18R4.B2" 14000.42701 32.73045383 31.241072 + "BPM.19R4.B2" 14053.8785 32.86665859 31.35482697 + "BPM.20R4.B2" 14107.32998 32.98010536 31.49080742 + "BPM.21R4.B2" 14160.78147 33.11557024 31.60451556 + "BPM.22R4.B2" 14214.23295 33.22933401 31.74054307 + "BPM.23R4.B2" 14267.68443 33.36546133 31.85466544 + "BPM.24R4.B2" 14321.13592 33.47940067 31.99100675 + "BPM.25R4.B2" 14374.5874 33.61562242 32.10459781 + "BPM.26R4.B2" 14428.03889 33.7293818 32.24061824 + "BPM.27R4.B2" 14481.49037 33.86550058 32.35474237 + "BPM.28R4.B2" 14534.94185 33.9794455 32.49108257 + "BPM.29R4.B2" 14588.39334 34.11567429 32.60467781 + "BPM.30R4.B2" 14641.84482 34.22943579 32.74070625 + "BPM.31R4.B2" 14695.29631 34.36555995 32.85482948 + "BPM.32R4.B2" 14748.74779 34.4795016 32.99116977 + "BPM.33R4.B2" 14802.19927 34.61572653 33.10475997 + "BPM.34R4.B2" 14855.65076 34.72949279 33.24077965 + "BPM.33L5.B2" 14909.10224 34.86562195 33.35490229 + "BPM.32L5.B2" 14962.55373 34.97956361 33.49124247 + "BPM.31L5.B2" 15016.00521 35.11578734 33.60483829 + "BPM.30L5.B2" 15069.4567 35.22955436 33.7408663 + "BPM.29L5.B2" 15122.90818 35.36568689 33.85498837 + "BPM.28L5.B2" 15176.35966 35.47962637 33.99132841 + "BPM.27L5.B2" 15229.81115 35.61584782 34.10491891 + "BPM.26L5.B2" 15283.26263 35.72960708 34.24094058 + "BPM.25L5.B2" 15336.71412 35.86572615 34.35506527 + "BPM.24L5.B2" 15390.1656 35.9796712 34.49140424 + "BPM.23L5.B2" 15443.61708 36.11589971 34.60499893 + "BPM.22L5.B2" 15497.06857 36.22966332 34.74102816 + "BPM.21L5.B2" 15550.52005 36.36579104 34.85515136 + "BPM.20L5.B2" 15603.97154 36.47916392 34.99162712 + "BPM.19L5.B2" 15657.42302 36.61470608 35.10496244 + "BPM.18L5.B2" 15710.8745 36.72853479 35.24048685 + "BPM.17L5.B2" 15764.32599 36.86465778 35.35460882 + "BPM.16L5.B2" 15817.77747 36.97803972 35.49108684 + "BPM.15L5.B2" 15871.22896 37.11358526 35.60442926 + "BPM.14L5.B2" 15924.68044 37.22741485 35.73995789 + "BPM.13L5.B2" 15978.13193 37.36355006 35.85407549 + "BPM.12L5.B2" 16031.58341 37.48432784 35.988876 + "BPM.11L5.B2" 16085.03489 37.62812341 36.10468633 + "BPM.10L5.B2" 16137.81758 37.74045548 36.24365844 + "BPM.9L5.B2" 16176.88457 37.85052267 36.34940922 + "BPM.8L5.B2" 16217.34956 38.01352426 36.5566807 + "BPM.7L5.B2" 16256.41755 38.21461847 36.6277718 + "BPMR.6L5.B2" 16293.31155 38.25425995 36.69720986 + "BPMWT.B6L5.B2" 16304.62155 38.27133145 36.70742106 + "BPMWT.A6L5.B2" 16310.44355 38.27859578 36.71344126 + "BPMWT.D6L5.B2" 16311.62155 38.27994552 36.71474427 + "BPMWT.C6L5.B2" 16321.69455 38.29010192 36.72722859 + "BPM.5L5.B2" 16325.21155 38.29314486 36.73222501 + "BPMYA.4L5.B2" 16352.61755 38.3237162 36.76482167 + "BPMWB.4L5.B2" 16373.67605 38.36394634 36.78269709 + "BPMSY.4L5.B2" 16466.53205 38.4995276 36.9043315 + "BPMS.2L5.B2" 16493.31755 38.54304891 36.93217333 + "BPMWF.A1L5.B2" 16503.12255 38.56766299 36.95105076 + "BPMSW.1L5.B2" 16503.28255 38.56813825 36.95152625 + "BPMSW.1L5.B2_DOROS" 16503.28255 38.56813825 36.95152625 + "BPMSW.1R5.B2" 16546.41055 38.91785387 37.30108506 + "BPMSW.1R5.B2_DOROS" 16546.41055 38.91785387 37.30108506 + "BPMWF.A1R5.B2" 16546.57055 38.91832961 37.30156125 + "BPMS.2R5.B2" 16556.37555 38.93721268 37.3262232 + "BPMSY.4R5.B2" 16583.16105 38.96504688 37.36981665 + "BPMWB.4R5.B2" 16676.01705 39.08649174 37.50537145 + "BPMYA.4R5.B2" 16697.07355 39.10433345 37.54552389 + "BPMR.5R5.B2" 16718.19155 39.12745756 37.57091324 + "BPM.6R5.B2" 16750.09155 39.16634646 37.60496349 + "BPMRA.7R5.B2" 16784.10555 39.21496504 37.64670127 + "BPM.8R5.B2" 16825.54256 39.30223451 37.76702491 + "BPM.9R5.B2" 16864.60757 39.44390992 38.00218097 + "BPM.10R5.B2" 16905.07058 39.62066404 38.0960427 + "BPM.11R5.B2" 16957.85129 39.72839381 38.2374156 + "BPM.12R5.B2" 17012.57481 39.86514058 38.35433857 + "BPM.13R5.B2" 17066.02333 39.97888046 38.49200415 + "BPM.14R5.B2" 17119.47184 40.11513955 38.60564822 + "BPM.15R5.B2" 17172.92036 40.22833616 38.74181589 + "BPM.16R5.B2" 17226.36887 40.3637391 38.85561806 + "BPM.17R5.B2" 17279.81739 40.47772927 38.99144104 + "BPM.18R5.B2" 17333.2659 40.61397721 39.10507659 + "BPM.19R5.B2" 17386.71442 40.72717372 39.24122925 + "BPM.20R5.B2" 17440.16294 40.86255735 39.35503786 + "BPM.21R5.B2" 17493.61145 40.97655487 39.49086383 + "BPM.22R5.B2" 17547.05997 41.11282764 39.6045058 + "BPM.23R5.B2" 17600.50848 41.22660067 39.74053558 + "BPM.24R5.B2" 17653.957 41.36267126 39.85459554 + "BPM.25R5.B2" 17707.40552 41.47658275 39.99091612 + "BPM.26R5.B2" 17760.85403 41.61283725 40.10455057 + "BPM.27R5.B2" 17814.30255 41.72660472 40.24056609 + "BPM.28R5.B2" 17867.75106 41.86266252 40.3546315 + "BPM.29R5.B2" 17921.19958 41.97658697 40.4909542 + "BPM.30R5.B2" 17974.6481 42.11285963 40.60459603 + "BPM.31R5.B2" 18028.09661 42.22662505 40.74062757 + "BPM.32R5.B2" 18081.54513 42.36268452 40.85468961 + "BPM.33R5.B2" 18134.99364 42.47660361 40.99100851 + "BPM.34R5.B2" 18188.44216 42.61286927 41.10464089 + "BPM.33L6.B2" 18241.89067 42.72664365 41.24065526 + "BPM.32L6.B2" 18295.33919 42.86271172 41.35471905 + "BPM.31L6.B2" 18348.78771 42.97663003 41.49104262 + "BPM.30L6.B2" 18402.23622 43.1128935 41.6046859 + "BPM.29L6.B2" 18455.68474 43.22667266 41.74071508 + "BPM.28L6.B2" 18509.13325 43.36275248 41.85477375 + "BPM.27L6.B2" 18562.58177 43.47666407 41.99109372 + "BPM.26L6.B2" 18616.03029 43.6129185 42.10472788 + "BPM.25L6.B2" 18669.4788 43.72668587 42.24074396 + "BPM.24L6.B2" 18722.92732 43.86274377 42.35480965 + "BPM.23L6.B2" 18776.37583 43.97666831 42.49113181 + "BPM.22L6.B2" 18829.82435 44.11294088 42.60477335 + "BPM.21L6.B2" 18883.27287 44.22671378 42.74080395 + "BPM.20L6.B2" 18936.72138 44.36287297 42.85449568 + "BPM.19L6.B2" 18990.1699 44.47629117 42.99045512 + "BPM.18L6.B2" 19043.61841 44.61177868 43.10420164 + "BPM.17L6.B2" 19097.06693 44.72554172 43.24021824 + "BPM.16L6.B2" 19150.51545 44.86169109 43.35391551 + "BPM.15L6.B2" 19203.96396 44.97512637 43.48987693 + "BPM.14L6.B2" 19257.41248 45.11062911 43.60363072 + "BPM.13L6.B2" 19310.86099 45.22439366 43.73966188 + "BPM.12L6.B2" 19364.30951 45.36352247 43.84225181 + "BPM.11L6.B2" 19417.75802 45.47944033 43.96112649 + "BPM.10L6.B2" 19469.59674 45.60528952 44.10973376 + "BPM.9L6.B2" 19508.66175 45.69903327 44.26175465 + "BPM.8L6.B2" 19549.12476 45.90430946 44.3804249 + "BPMYB.5L6.B2" 19646.21277 46.23218454 44.60025834 + "BPMYA.4L6.B2" 19682.61277 46.25995758 44.61499637 + "BPMSI.B4L6.B2" 19716.93327 46.27010824 44.64615825 + "BPMSI.B4L6.B2_ITLK" 19716.93327 46.27010824 44.64615825 + "BPMSI.A4L6.B2" 19717.56827 46.27031637 44.64680354 + "BPMSI.A4L6.B2_ITLK" 19717.56827 46.27031637 44.64680354 + "BPMSA.4L6.B2" 19810.82827 46.31287835 44.75532829 + "BPMSE.4R6.B2" 19902.39827 46.38953603 44.83605684 + "BPMSX.A4R6.B2" 19995.52327 46.48936265 44.87811244 + "BPMSX.A4R6.B2_ITLK" 19995.52327 46.48936265 44.87811244 + "BPMSX.B4R6.B2" 19996.10827 46.48992405 44.87829789 + "BPMSX.B4R6.B2_ITLK" 19996.10827 46.48992405 44.87829789 + "BPMYB.4R6.B2" 20026.21277 46.51655796 44.88693952 + "BPMYA.5R6.B2" 20062.61277 46.53476594 44.90308012 + "BPM.8R6.B2" 20158.33778 46.71472481 45.00319984 + "BPM.9R6.B2" 20197.40279 46.8883228 45.1475231 + "BPM.10R6.B2" 20237.8658 46.98548955 45.34747434 + "BPM.11R6.B2" 20289.70451 47.13185002 45.44526771 + "BPM.12R6.B2" 20344.42803 47.24573582 45.57194243 + "BPM.13R6.B2" 20397.87654 47.37707625 45.68878898 + "BPM.14R6.B2" 20451.32506 47.49170804 45.82919482 + "BPM.15R6.B2" 20504.77357 47.63002883 45.94208783 + "BPM.16R6.B2" 20558.22209 47.74171219 46.07717001 + "BPM.17R6.B2" 20611.67061 47.87435748 46.19396359 + "BPM.18R6.B2" 20665.11912 47.98891721 46.3342275 + "BPM.19R6.B2" 20718.56764 48.12731674 46.44698923 + "BPM.20R6.B2" 20772.01615 48.23908707 46.5822295 + "BPM.21R6.B2" 20825.46467 48.37169058 46.69915896 + "BPM.22R6.B2" 20878.91318 48.4861496 46.83926244 + "BPM.23R6.B2" 20932.3617 48.62364282 46.95585158 + "BPM.24R6.B2" 20985.81022 48.73818116 47.09564043 + "BPM.25R6.B2" 21039.25873 48.87541165 47.2119144 + "BPM.26R6.B2" 21092.70725 48.9898908 47.35205046 + "BPM.27R6.B2" 21146.15576 49.12740681 47.46862293 + "BPM.28R6.B2" 21199.60428 49.2419436 47.6083995 + "BPM.29R6.B2" 21253.0528 49.37918372 47.72469157 + "BPM.30R6.B2" 21306.50131 49.49366195 47.86484749 + "BPM.31R6.B2" 21359.94983 49.63117011 47.98138416 + "BPM.32R6.B2" 21413.39834 49.74568936 48.12112446 + "BPM.33R6.B2" 21466.84686 49.8829057 48.23745443 + "BPM.34R6.B2" 21520.29538 49.99740331 48.37763478 + "BPM.33L7.B2" 21573.74389 50.13493175 48.49414833 + "BPM.32L7.B2" 21627.19241 50.24944193 48.63388795 + "BPM.31L7.B2" 21680.64092 50.38665888 48.75024292 + "BPM.30L7.B2" 21734.08944 50.50115557 48.8904313 + "BPM.29L7.B2" 21787.53795 50.63867371 49.00690468 + "BPM.28L7.B2" 21840.98647 50.75318905 49.14661558 + "BPM.27L7.B2" 21894.43499 50.89041724 49.26300745 + "BPM.26L7.B2" 21947.8835 51.00492033 49.40321166 + "BPM.25L7.B2" 22001.33202 51.1424395 49.51966119 + "BPM.24L7.B2" 22054.78053 51.25695173 49.65938173 + "BPM.23L7.B2" 22108.22905 51.39418882 49.77579971 + "BPM.22L7.B2" 22161.67757 51.50868265 49.91600084 + "BPM.21L7.B2" 22215.12608 51.64617994 50.03241027 + "BPM.20L7.B2" 22268.5746 51.75725417 50.17294845 + "BPM.19L7.B2" 22322.02311 51.89067253 50.28606349 + "BPM.18L7.B2" 22375.47163 52.00589164 50.42101985 + "BPM.17L7.B2" 22428.92015 52.14349442 50.53759267 + "BPM.16L7.B2" 22482.36866 52.25463099 50.67801516 + "BPM.15L7.B2" 22535.81718 52.38798048 50.79097631 + "BPM.14L7.B2" 22589.26569 52.50312087 50.92605556 + "BPM.13L7.B2" 22642.71421 52.64078281 51.0427723 + "BPM.12L7.B2" 22696.16273 52.7538033 51.18259256 + "BPM.11L7.B2" 22749.61124 52.89264782 51.28398825 + "BPM.10L7.B2" 22802.39195 53.01139505 51.3994778 + "BPM.9L7.B2" 22841.45696 53.13313086 51.4612866 + "BPM.8L7.B2" 22881.91997 53.27641062 51.54389157 + "BPM.7L7.B2" 22920.98398 53.4467304 51.60536124 + "BPMR.6L7.B2" 22955.80198 53.50893403 51.66751751 + "BPMWC.6L7.B2" 22967.98048 53.54289635 51.67881812 + "BPMWE.5L7.B2" 23045.03448 53.63011106 51.84933984 + "BPMW.5L7.B2" 23068.23948 53.64054767 51.91069294 + "BPMWE.4L7.B2" 23103.32448 53.67357354 51.94342313 + "BPMW.4L7.B2" 23131.42948 53.74981329 51.95542841 + "BPMW.4R7.B2" 23247.47648 53.93757193 52.10595837 + "BPMWE.4R7.B2" 23275.58148 53.95083031 52.17671265 + "BPMW.5R7.B2" 23310.66648 53.99260131 52.21118924 + "BPMWE.5R7.B2" 23333.87148 54.08985019 52.22261756 + "BPM.6R7.B2" 23413.01098 54.28056041 52.33539434 + "BPM_A.7R7.B2" 23451.04698 54.31903118 52.42754319 + "BPM.8R7.B2" 23490.11099 54.39539795 52.50451993 + "BPM.9R7.B2" 23529.176 54.56181066 52.58712754 + "BPM.10R7.B2" 23569.63902 54.71316678 52.67034376 + "BPM.11R7.B2" 23622.41973 54.82281436 52.79267751 + "BPM.12R7.B2" 23677.14324 54.95844035 52.90501501 + "BPM.13R7.B2" 23730.59176 55.07452009 53.0353853 + "BPM.14R7.B2" 23784.04027 55.21201011 53.15125768 + "BPM.15R7.B2" 23837.48879 55.32290725 53.29230163 + "BPM.16R7.B2" 23890.93731 55.45635114 53.40591017 + "BPM.17R7.B2" 23944.38582 55.57173952 53.54037319 + "BPM.18R7.B2" 23997.83434 55.70929687 53.65642625 + "BPM.19R7.B2" 24051.28285 55.82025605 53.79736734 + "BPM.20R7.B2" 24104.73137 55.95361459 53.91081025 + "BPM.21R7.B2" 24158.17989 56.06895269 54.04537547 + "BPM.22R7.B2" 24211.6284 56.20662011 54.16161042 + "BPM.23R7.B2" 24265.07692 56.32106384 54.30162304 + "BPM.24R7.B2" 24318.52543 56.4581518 54.41823308 + "BPM.25R7.B2" 24371.97395 56.5727143 54.55811969 + "BPM.26R7.B2" 24425.42246 56.71035421 54.67436034 + "BPM.27R7.B2" 24478.87098 56.82478991 54.81439614 + "BPM.28R7.B2" 24532.3195 56.96188167 54.93100512 + "BPM.29R7.B2" 24585.76801 57.07646982 55.07086869 + "BPM.30R7.B2" 24639.21653 57.21412892 55.1871243 + "BPM.31R7.B2" 24692.66504 57.32854562 55.3272043 + "BPM.32R7.B2" 24746.11356 57.46563546 55.44378975 + "BPM.33R7.B2" 24799.56208 57.58022473 55.5836109 + "BPM.34R7.B2" 24853.01059 57.71786151 55.69988072 + "BPM.33L8.B2" 24906.45911 57.83228161 55.8399774 + "BPM.32L8.B2" 24959.90762 57.9693932 55.95655047 + "BPM.31L8.B2" 25013.35614 58.08399085 56.09635819 + "BPM.30L8.B2" 25066.80466 58.22162146 56.21265479 + "BPM.29L8.B2" 25120.25317 58.33603274 56.35278631 + "BPM.28L8.B2" 25173.70169 58.47315624 56.46932578 + "BPM.27L8.B2" 25227.1502 58.58776335 56.60909676 + "BPM.26L8.B2" 25280.59872 58.72538485 56.72541275 + "BPM.25L8.B2" 25334.04723 58.83977729 56.86555743 + "BPM.24L8.B2" 25387.49575 58.9768897 56.98208376 + "BPM.23L8.B2" 25440.94427 59.09152127 57.12184742 + "BPM.22L8.B2" 25494.39278 59.22915943 57.23819199 + "BPM.21L8.B2" 25547.8413 59.34353621 57.37836315 + "BPM.20L8.B2" 25601.28981 59.48159153 57.49089116 + "BPM.19L8.B2" 25654.73833 59.59352874 57.62621148 + "BPM.18L8.B2" 25708.18685 59.72644415 57.74337567 + "BPM.17L8.B2" 25761.63536 59.84074781 57.88336504 + "BPM.16L8.B2" 25815.08388 59.97885418 57.99577847 + "BPM.15L8.B2" 25868.53239 60.09088039 58.13127974 + "BPM.14L8.B2" 25921.98091 60.22377479 58.24857373 + "BPM.13L8.B2" 25975.42943 60.33799615 58.38839005 + "BPM.12L8.B2" 26028.87794 60.47950234 58.48850041 + "BPM.11L8.B2" 26082.32646 60.58756653 58.60630992 + "BPM.10L8.B2" 26134.16517 60.70992939 58.70633561 + "BPM.9L8.B2" 26173.23018 60.82045419 58.80004591 + "BPM.8L8.B2" 26213.69319 61.04378096 58.87140426 + "BPM.7L8.B2" 26252.7592 61.10245787 58.97373166 + "BPM.6L8.B2" 26285.2282 61.13326328 59.10365756 + "BPMR.5L8.B2" 26345.6472 61.2442188 59.30535137 + "BPMYB.4L8.B2" 26366.4142 61.30925694 59.33985805 + "BPMWB.4L8.B2" 26390.8817 61.36830079 59.42924479 + "BPMSX.4L8.B2" 26441.0387 61.55795462 59.53614219 + "BPMS.2L8.B2" 26478.9502 61.61373286 59.59154239 + "BPMSW.1L8.B2" 26488.8842 61.63156792 59.61527848 + "BPMSW.1L8.B2_DOROS" 26488.8842 61.63156792 59.61527848 + "BPMSW.1R8.B2" 26532.0742 61.99343942 59.97741812 + "BPMSW.1R8.B2_DOROS" 26532.0742 61.99343942 59.97741812 + "BPMS.2R8.B2" 26542.0082 62.0171879 59.99520345 + "BPMSX.4R8.B2" 26579.9197 62.07268471 60.05083877 + "BPMWI.4R8.B2" 26630.1527 62.18013049 60.24086734 + "BPMYB.4R8.B2" 26654.5442 62.26932212 60.29981313 diff --git a/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B1.dat b/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B1.dat new file mode 100644 index 00000000..a3f7dd6c --- /dev/null +++ b/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B1.dat @@ -0,0 +1,613 @@ +@ NAME %05s "TWISS" +@ TYPE %05s "TWISS" +@ SEQUENCE %05s "LHCB1" +@ PARTICLE %06s "PROTON" +@ MASS %le 0.9382720882 +@ CHARGE %le 1 +@ ENERGY %le 450 +@ PC %le 449.9990218 +@ GAMMA %le 479.6050162 +@ KBUNCH %le 1 +@ BCURRENT %le 0.0002071977796 +@ SIGE %le 0.001 +@ SIGT %le 1 +@ NPART %le 1.15e+11 +@ EX %le 1 +@ EY %le 1 +@ ET %le 0.001 +@ BV_FLAG %le 1 +@ LENGTH %le 26658.8832 +@ ALFA %le 0.0003482401534 +@ ORBIT5 %le -0 +@ GAMMATR %le 53.5871398 +@ Q1 %le 62.28001034 +@ Q2 %le 60.31000965 +@ DQ1 %le 2.084081542 +@ DQ2 %le 2.090490539 +@ DXMAX %le 2.864331872 +@ DYMAX %le 0.4081590698 +@ XCOMAX %le 0.0005659346719 +@ YCOMAX %le 0.01303346183 +@ BETXMAX %le 593.1843778 +@ BETYMAX %le 643.6539771 +@ XCORMS %le 4.775585789e-05 +@ YCORMS %le 0.0009518793834 +@ DXRMS %le 1.500780383 +@ DYRMS %le 0.1025985402 +@ DELTAP %le 0.00025 +@ SYNCH_1 %le 0 +@ SYNCH_2 %le 0 +@ SYNCH_3 %le 0 +@ SYNCH_4 %le 0 +@ SYNCH_5 %le 0 +@ TITLE %08s "no-title" +@ ORIGIN %16s "5.06.00 Linux 64" +@ DATE %08s "18/10/24" +@ TIME %08s "14.59.41" +* NAME S MUX MUY +$ %s %le %le %le + "BPMYB.5L2.B1" 28.288 0.02536286129 0.1395127101 + "BPMYB.4L2.B1" 48.858 0.05587090933 0.2244630791 + "BPMWI.4L2.B1" 73.3255 0.1444042893 0.2839308628 + "BPMSX.4L2.B1" 123.4825 0.2512290878 0.4737034647 + "BPMS.2L2.B1" 161.394 0.3067752959 0.529431884 + "BPMSW.1L2.B1" 171.328 0.3305766294 0.5472321653 + "BPMSW.1L2.B1_DOROS" 171.328 0.3305766294 0.5472321653 + "BPMSW.1R2.B1" 214.518 0.6923457612 0.9088539602 + "BPMSW.1R2.B1_DOROS" 214.518 0.6923457612 0.9088539602 + "BPMS.2R2.B1" 224.452 0.7101615291 0.9327168609 + "BPMSX.4R2.B1" 262.3635 0.7658671004 0.9883578851 + "BPMWB.4R2.B1" 312.5965 0.9554643763 1.095350026 + "BPMYB.4R2.B1" 336.988 1.014418297 1.183775953 + "BPMR.5R2.B1" 366.522 1.125593636 1.224660995 + "BPM.6R2.B1" 439.818 1.228881535 1.409141596 + "BPM_A.7R2.B1" 452.693 1.23907368 1.440336397 + "BPM.8R2.B1" 494.1300106 1.298636421 1.541620775 + "BPM.9R2.B1" 533.1950212 1.455290685 1.64370825 + "BPM.10R2.B1" 573.6580318 1.631694274 1.736928639 + "BPM.11R2.B1" 625.4967424 1.736041202 1.871865694 + "BPM.12R2.B1" 680.2202583 1.868788718 1.987045326 + "BPM.13R2.B1" 733.6687742 1.983107355 2.122922661 + "BPM.14R2.B1" 787.1172901 2.121215189 2.23428934 + "BPM.15R2.B1" 840.565806 2.233586984 2.366075574 + "BPM.16R2.B1" 894.0143219 2.367458442 2.473866012 + "BPM.17R2.B1" 947.4628378 2.482864557 2.602194096 + "BPM.18R2.B1" 1000.911354 2.620984101 2.71316775 + "BPM.19R2.B1" 1054.35987 2.733372547 2.845450523 + "BPM.20R2.B1" 1107.808386 2.867259254 2.953676728 + "BPM.21R2.B1" 1161.256901 2.982654579 3.081612893 + "BPM.22R2.B1" 1214.705417 3.120773466 3.192078449 + "BPM.23R2.B1" 1268.153933 3.236178431 3.323957325 + "BPM.24R2.B1" 1321.602449 3.373313114 3.435158481 + "BPM.25R2.B1" 1375.050965 3.488082899 3.567355957 + "BPM.26R2.B1" 1428.499481 3.626231971 3.677854612 + "BPM.27R2.B1" 1481.947997 3.741618433 3.809672578 + "BPM.28R2.B1" 1535.396513 3.878749042 3.920844024 + "BPM.29R2.B1" 1588.845029 3.993542331 4.053117249 + "BPM.30R2.B1" 1642.293545 4.131708284 4.16364295 + "BPM.31R2.B1" 1695.74206 4.247053506 4.295382785 + "BPM.32R2.B1" 1749.190576 4.384144464 4.406512453 + "BPM.33R2.B1" 1802.639092 4.498975538 4.538842578 + "BPM.34R2.B1" 1856.087608 4.637167486 4.649422593 + "BPM.33L3.B1" 1909.536124 4.752472095 4.781121383 + "BPM.32L3.B1" 1962.98464 4.889536295 4.892205883 + "BPM.31L3.B1" 2016.433156 5.004399859 5.024592421 + "BPM.30L3.B1" 2069.881672 5.142611165 5.135215959 + "BPM.29L3.B1" 2123.330188 5.257883044 5.266853229 + "BPM.28L3.B1" 2176.778704 5.394930076 5.377876818 + "BPM.27L3.B1" 2230.22722 5.509830006 5.510300734 + "BPM.26L3.B1" 2283.675735 5.648055867 5.620995046 + "BPM.25L3.B1" 2337.124251 5.763309233 5.752609482 + "BPM.24L3.B1" 2390.572767 5.900369921 5.863567323 + "BPM.23L3.B1" 2444.021283 6.01529629 5.996023142 + "BPM.22L3.B1" 2497.469799 6.153525866 6.10677475 + "BPM.21L3.B1" 2550.918315 6.268733988 6.23835583 + "BPM.20L3.B1" 2604.366831 6.406564783 6.346133511 + "BPM.19L3.B1" 2657.815347 6.519143952 6.474660498 + "BPM.18L3.B1" 2711.263863 6.653300748 6.585675144 + "BPM.17L3.B1" 2764.712379 6.768513965 6.717761457 + "BPM.16L3.B1" 2818.160894 6.906366653 6.825929215 + "BPM.15L3.B1" 2871.60941 7.018941521 6.954045959 + "BPM.14L3.B1" 2925.057926 7.153084834 7.064595715 + "BPM.13L3.B1" 2978.506442 7.268283776 7.197034269 + "BPM.12L3.B1" 3031.954958 7.404745012 7.311172774 + "BPM.11L3.B1" 3085.403474 7.531107356 7.44360271 + "BPM.10L3.B1" 3138.184185 7.680778063 7.55164564 + "BPM.9L3.B1" 3177.249195 7.741771242 7.668857844 + "BPM.8L3.B1" 3217.712206 7.818208121 7.83502166 + "BPM.7L3.B1" 3256.776216 7.876832292 8.008821774 + "BPM.6L3.B1" 3329.415216 7.988622971 8.128027508 + "BPMWG.A5L3.B1" 3371.119716 8.045818969 8.174567568 + "BPMW.5L3.B1" 3400.089716 8.129546363 8.19008694 + "BPMWE.4L3.B1" 3475.217716 8.233213598 8.263192129 + "BPMW.4L3.B1" 3502.762716 8.248412111 8.308745174 + "BPMW.4R3.B1" 3547.727716 8.318329036 8.34392681 + "BPMWE.4R3.B1" 3575.272716 8.465227656 8.355245092 + "BPMW.5R3.B1" 3650.400716 8.59514538 8.428910861 + "BPMWJ.A5R3.B1" 3679.118716 8.607851336 8.492505353 + "BPMWC.6R3.B1" 3718.936716 8.653988938 8.537546373 + "BPMR.6R3.B1" 3731.015216 8.694211324 8.545225871 + "BPM_A.7R3.B1" 3786.839216 8.88215476 8.616604118 + "BPM.8R3.B1" 3825.903227 8.992703344 8.678330475 + "BPM.9R3.B1" 3864.968238 9.097313876 8.730842863 + "BPM.10R3.B1" 3905.431248 9.17240047 8.793889443 + "BPM.11R3.B1" 3958.211959 9.265391811 8.895766507 + "BPM.12R3.B1" 4012.935475 9.36557586 9.018306154 + "BPM.13R3.B1" 4066.383991 9.482032279 9.13311386 + "BPM.14R3.B1" 4119.832506 9.5976535 9.263189788 + "BPM.15R3.B1" 4173.281022 9.736547134 9.370343343 + "BPM.16R3.B1" 4226.729538 9.848704147 9.500266347 + "BPM.17R3.B1" 4280.178054 9.981833378 9.612097382 + "BPM.18R3.B1" 4333.62657 10.09743619 9.742865555 + "BPM.19R3.B1" 4387.075086 10.23631747 9.850105215 + "BPM.20R3.B1" 4440.523602 10.34847786 9.979336717 + "BPM.21R3.B1" 4493.972118 10.48159158 10.09099349 + "BPM.22R3.B1" 4547.420634 10.59719924 10.22243092 + "BPM.23R3.B1" 4600.86915 10.73530232 10.3330253 + "BPM.24R3.B1" 4654.317666 10.8498529 10.46562157 + "BPM.25R3.B1" 4707.766181 10.98706191 10.57675199 + "BPM.26R3.B1" 4761.214697 11.10268357 10.7082402 + "BPM.27R3.B1" 4814.663213 11.24072564 10.81874272 + "BPM.28R3.B1" 4868.111729 11.35524817 10.95126118 + "BPM.29R3.B1" 4921.560245 11.49249044 11.06247831 + "BPM.30R3.B1" 4975.008761 11.60813592 11.19404605 + "BPM.31R3.B1" 5028.457277 11.74613359 11.30448393 + "BPM.32R3.B1" 5081.905793 11.86065011 11.43693188 + "BPM.33R3.B1" 5135.354309 11.99796503 11.54820855 + "BPM.34R3.B1" 5188.802825 12.11361347 11.67985875 + "BPM.33L4.B1" 5242.25134 12.25154087 11.79023043 + "BPM.32L4.B1" 5295.699856 12.36604181 11.92257127 + "BPM.31L4.B1" 5349.148372 12.50340059 12.0339073 + "BPM.30L4.B1" 5402.596888 12.61907861 12.16566136 + "BPM.29L4.B1" 5456.045404 12.75697811 12.27599309 + "BPM.28L4.B1" 5509.49392 12.87144692 12.4082459 + "BPM.27L4.B1" 5562.942436 13.00883366 12.51961916 + "BPM.26L4.B1" 5616.390952 13.12453198 12.6514717 + "BPM.25L4.B1" 5669.839468 13.26239023 12.76176288 + "BPM.24L4.B1" 5723.287984 13.37684349 12.89389171 + "BPM.23L4.B1" 5776.7365 13.51427192 13.00529337 + "BPM.22L4.B1" 5830.185015 13.62999652 13.1372657 + "BPM.21L4.B1" 5883.633531 13.7678247 13.24754961 + "BPM.20L4.B1" 5937.082047 13.87925996 13.38031275 + "BPM.19L4.B1" 5990.530563 14.0134022 13.48925313 + "BPM.18L4.B1" 6043.979079 14.12977595 13.61683263 + "BPM.17L4.B1" 6097.427595 14.26759359 13.72652219 + "BPM.16L4.B1" 6150.876111 14.3790321 13.8593891 + "BPM.15L4.B1" 6204.324627 14.51315978 13.96893038 + "BPM.14L4.B1" 6257.773143 14.62954165 14.09649381 + "BPM.13L4.B1" 6311.221659 14.76738666 14.20559072 + "BPM.12L4.B1" 6364.670174 14.88745421 14.33636545 + "BPM.11L4.B1" 6418.11869 15.03506541 14.43612172 + "BPMCS.10L4.B1" 6469.765401 15.14351776 14.54733963 + "BPM.10L4.B1" 6469.957401 15.14438303 14.54751296 + "BPMCS.9L4.B1" 6508.830412 15.26020283 14.6075697 + "BPM.9L4.B1" 6509.022412 15.2604734 14.6081396 + "BPMCS.8L4.B1" 6549.293422 15.4168114 14.69148143 + "BPM.8L4.B1" 6549.485422 15.41876727 14.69167597 + "BPMCS.7L4.B1" 6588.357433 15.6051623 14.74284227 + "BPM.7L4.B1" 6588.549433 15.60539588 14.74320737 + "BPMYB.6L4.B1" 6685.153433 15.71798861 14.8226278 + "BPMYA.5L4.B1" 6722.153433 15.74225554 14.83800272 + "BPMWI.A5L4.B1" 6798.755933 15.77408379 14.89429125 + "BPMWA.B5L4.B1" 6824.619933 15.78793085 14.91317994 + "BPMWA.A5L4.B1" 6833.504933 15.79310149 14.91947727 + "BPMWA.A5R4.B1" 6881.553933 15.82479407 14.95103278 + "BPMWA.B5R4.B1" 6890.438933 15.83130877 14.95633196 + "BPMYB.5R4.B1" 6992.829433 15.91326273 15.00490774 + "BPMYA.6R4.B1" 7024.393433 15.92877883 15.02595648 + "BPMCS.7R4.B1" 7120.717433 16.09493722 15.13639475 + "BPM.7R4.B1" 7120.909433 16.09626189 15.13657072 + "BPMCS.8R4.B1" 7158.506443 16.23892231 15.2710632 + "BPM.8R4.B1" 7158.698443 16.23918853 15.27348299 + "BPMCS.9R4.B1" 7197.571454 16.36940191 15.49406992 + "BPM.9R4.B1" 7197.763454 16.37098492 15.49426513 + "BPMCS.10R4.B1" 7238.034465 16.53560444 15.55730985 + "BPM.10R4.B1" 7238.226465 16.53581174 15.55789219 + "BPM.11R4.B1" 7290.065175 16.64940668 15.65765252 + "BPM.12R4.B1" 7344.788691 16.78359149 15.77623405 + "BPM.13R4.B1" 7398.237207 16.89603813 15.91725125 + "BPM.14R4.B1" 7451.685723 17.03206444 16.03163602 + "BPM.15R4.B1" 7505.134239 17.14644841 16.16744096 + "BPM.16R4.B1" 7558.582755 17.28241968 16.28083096 + "BPM.17R4.B1" 7612.031271 17.39548922 16.41744724 + "BPM.18R4.B1" 7665.479786 17.5315032 16.53183731 + "BPM.19R4.B1" 7718.928302 17.64590002 16.66764561 + "BPM.20R4.B1" 7772.376818 17.78189517 16.78104209 + "BPM.21R4.B1" 7825.825334 17.89496699 16.91767234 + "BPM.22R4.B1" 7879.27385 18.03098374 17.0320551 + "BPM.23R4.B1" 7932.722366 18.14549535 17.16782678 + "BPM.24R4.B1" 7986.170882 18.28168604 17.28102658 + "BPM.25R4.B1" 8039.619398 18.39478869 17.41741736 + "BPM.26R4.B1" 8093.067914 18.53079586 17.53180727 + "BPM.27R4.B1" 8146.51643 18.64531997 17.66758587 + "BPM.28R4.B1" 8199.964946 18.78153104 17.78079042 + "BPM.29R4.B1" 8253.413461 18.89463622 17.91719156 + "BPM.30R4.B1" 8306.861977 19.03064963 18.03157597 + "BPM.31R4.B1" 8360.310493 19.14515685 18.16735253 + "BPM.32R4.B1" 8413.759009 19.28134509 18.28055182 + "BPM.33R4.B1" 8467.207525 19.39445218 18.41693782 + "BPM.34R4.B1" 8520.656041 19.53046202 18.53132827 + "BPM.33L5.B1" 8574.104557 19.6449683 18.66711425 + "BPM.32L5.B1" 8627.553073 19.78115743 18.78032165 + "BPM.31L5.B1" 8681.001589 19.89426241 18.91671905 + "BPM.30L5.B1" 8734.450105 20.03027121 19.03110524 + "BPM.29L5.B1" 8787.89862 20.14478279 19.16688502 + "BPM.28L5.B1" 8841.347136 20.28098174 19.28008149 + "BPM.27L5.B1" 8894.795652 20.39408505 19.41646411 + "BPM.26L5.B1" 8948.244168 20.53008495 19.53085719 + "BPM.25L5.B1" 9001.692684 20.64460833 19.66664386 + "BPM.24L5.B1" 9055.1412 20.7808266 19.77984529 + "BPM.23L5.B1" 9108.589716 20.89393252 19.91623827 + "BPM.22L5.B1" 9162.038232 21.02993875 20.03062587 + "BPM.21L5.B1" 9215.486748 21.14444932 20.16640981 + "BPM.20L5.B1" 9268.935264 21.2806108 20.2797717 + "BPM.19L5.B1" 9322.383779 21.3935555 20.41640897 + "BPM.18L5.B1" 9375.832295 21.52937766 20.53082715 + "BPM.17L5.B1" 9429.280811 21.64389974 20.66661421 + "BPM.16L5.B1" 9482.729327 21.78008579 20.77998266 + "BPM.15L5.B1" 9536.177843 21.89303403 20.91663394 + "BPM.14L5.B1" 9589.626359 22.02885822 21.03104492 + "BPM.13L5.B1" 9643.074875 22.14336676 21.1668258 + "BPM.12L5.B1" 9696.523391 22.27741028 21.28984141 + "BPM.11L5.B1" 9749.971907 22.38900829 21.43794503 + "BPM.10L5.B1" 9802.752617 22.52436944 21.54770815 + "BPM.9L5.B1" 9841.817628 22.62888257 21.65416564 + "BPM.8L5.B1" 9882.280639 22.83434752 21.79631328 + "BPMR.7L5.B1" 9921.346649 22.91271331 21.99628271 + "BPM.6L5.B1" 9958.240649 22.99560577 22.0416051 + "BPMR.5L5.B1" 9990.140649 23.03718906 22.08080929 + "BPMYA.4L5.B1" 10017.54665 23.07271745 22.11018225 + "BPMWB.4L5.B1" 10038.68115 23.09073521 22.15026524 + "BPMSY.4L5.B1" 10131.46115 23.21240827 22.28455898 + "BPMS.2L5.B1" 10158.24665 23.24019039 22.3279868 + "BPMWF.A1L5.B1" 10168.05165 23.25900212 22.35263416 + "BPMSW.1L5.B1" 10168.21165 23.25947563 22.35311065 + "BPMSW.1L5.B1_DOROS" 10168.21165 23.25947563 22.35311065 + "BPMSW.1R5.B1" 10211.33965 23.60882735 22.70338338 + "BPMSW.1R5.B1_DOROS" 10211.33965 23.60882735 22.70338338 + "BPMWF.A1R5.B1" 10211.49965 23.60930644 22.70385548 + "BPMS.2R5.B1" 10221.30465 23.63410473 22.72259644 + "BPMSY.4R5.B1" 10248.09015 23.67784355 22.75022922 + "BPMWB.4R5.B1" 10340.87015 23.81262568 22.87111632 + "BPMYA.4R5.B1" 10362.00265 23.85256643 22.8890703 + "BPM.5R5.B1" 10383.12065 23.87696035 22.91376236 + "BPMWT.C6R5.B1" 10392.92765 23.8846474 22.93037559 + "BPMWT.D6R5.B1" 10403.00065 23.89444605 22.94512057 + "BPMWT.A6R5.B1" 10404.17865 23.89577202 22.9466754 + "BPMWT.B6R5.B1" 10410.00065 23.90300767 22.9538928 + "BPMR.6R5.B1" 10415.02065 23.91031171 22.95954088 + "BPM_A.7R5.B1" 10449.03465 23.95649992 23.01851443 + "BPM.8R5.B1" 10490.47364 24.08523597 23.11821671 + "BPM.9R5.B1" 10529.54063 24.28873976 23.26352244 + "BPM.10R5.B1" 10570.00562 24.38250981 23.43398337 + "BPM.11R5.B1" 10622.78831 24.52520114 23.53707043 + "BPM.12R5.B1" 10677.51479 24.64311733 23.66718747 + "BPM.13R5.B1" 10730.96627 24.77978937 23.7802968 + "BPM.14R5.B1" 10784.41776 24.89272613 23.91652081 + "BPM.15R5.B1" 10837.86924 25.0286152 24.03112796 + "BPM.16R5.B1" 10891.32073 25.14315293 24.16734595 + "BPM.17R5.B1" 10944.77221 25.27928154 24.28053749 + "BPM.18R5.B1" 10998.2237 25.3922246 24.41676642 + "BPM.19R5.B1" 11051.67518 25.52811639 24.53137575 + "BPM.20R5.B1" 11105.12666 25.64265401 24.66759641 + "BPM.21R5.B1" 11158.57815 25.77879098 24.78078503 + "BPM.22R5.B1" 11212.02963 25.89172913 24.91701392 + "BPM.23R5.B1" 11265.48112 26.02764702 25.03145309 + "BPM.24R5.B1" 11318.9326 26.14234456 25.1674132 + "BPM.25R5.B1" 11372.38408 26.27865279 25.28057942 + "BPM.26R5.B1" 11425.83557 26.39159684 25.416809 + "BPM.27R5.B1" 11479.28705 26.52752157 25.53125067 + "BPM.28R5.B1" 11532.73854 26.64221938 25.6672178 + "BPM.29R5.B1" 11586.19002 26.77853184 25.78038081 + "BPM.30R5.B1" 11639.6415 26.89146435 25.91660716 + "BPM.31R5.B1" 11693.09299 27.0273696 26.03104858 + "BPM.32R5.B1" 11746.54447 27.14207292 26.16701131 + "BPM.33R5.B1" 11799.99596 27.27839393 26.28017534 + "BPM.34R5.B1" 11853.44744 27.39132128 26.4164045 + "BPM.33L6.B1" 11906.89893 27.52721671 26.5308512 + "BPM.32L6.B1" 11960.35041 27.64191871 26.66682124 + "BPM.31L6.B1" 12013.80189 27.77824214 26.77998252 + "BPM.30L6.B1" 12067.25338 27.8911768 26.91620491 + "BPM.29L6.B1" 12120.70486 28.02708058 27.03064645 + "BPM.28L6.B1" 12174.15635 28.14177682 27.16661402 + "BPM.27L6.B1" 12227.60783 28.27809225 27.27977911 + "BPM.26L6.B1" 12281.05931 28.39103754 27.41600123 + "BPM.25L6.B1" 12334.5108 28.52695509 27.53044404 + "BPM.24L6.B1" 12387.96228 28.64165161 27.6664186 + "BPM.23L6.B1" 12441.41377 28.77797128 27.7795805 + "BPM.22L6.B1" 12494.86525 28.89091127 27.91579819 + "BPM.21L6.B1" 12548.31673 29.02681872 28.03023907 + "BPM.20L6.B1" 12601.76822 29.14138671 28.16624064 + "BPM.19L6.B1" 12655.2197 29.2774968 28.27959694 + "BPM.18L6.B1" 12708.67119 29.39040988 28.41604379 + "BPM.17L6.B1" 12762.12267 29.52631965 28.53048627 + "BPM.16L6.B1" 12815.57415 29.64088764 28.66649103 + "BPM.15L6.B1" 12869.02564 29.77700634 28.77984504 + "BPM.14L6.B1" 12922.47712 29.88991447 28.91629131 + "BPM.13L6.B1" 12975.92861 30.02580985 29.03073105 + "BPM.12L6.B1" 13029.38009 30.14183695 29.16638634 + "BPM.11L6.B1" 13082.83158 30.27704713 29.29252317 + "BPM.10L6.B1" 13134.67226 30.39205295 29.43953985 + "BPM.9L6.B1" 13173.73925 30.51149925 29.55335673 + "BPM.8L6.B1" 13214.20424 30.63506956 29.77807033 + "BPMYA.5L6.B1" 13311.29423 30.88009449 29.8801647 + "BPMYB.4L6.B1" 13347.69423 30.8952062 29.89917978 + "BPMSX.B4L6.B1" 13383.23473 30.92542737 29.90892354 + "BPMSX.B4L6.B1_ITLK" 13383.23473 30.92542737 29.90892354 + "BPMSX.A4L6.B1" 13383.81973 30.9259776 29.90910374 + "BPMSX.A4L6.B1_ITLK" 13383.81973 30.9259776 29.90910374 + "BPMSE.4L6.B1" 13476.94473 31.02461143 29.95071163 + "BPMSA.4R6.B1" 13568.51473 31.10193841 30.0347179 + "BPMSI.A4R6.B1" 13661.77473 31.14532858 30.15026773 + "BPMSI.A4R6.B1_ITLK" 13661.77473 31.14532858 30.15026773 + "BPMSI.B4R6.B1" 13662.40973 31.14554109 30.15093879 + "BPMSI.B4R6.B1_ITLK" 13662.40973 31.14554109 30.15093879 + "BPMYA.4R6.B1" 13691.29423 31.15436649 30.17850826 + "BPMYB.5R6.B1" 13727.69423 31.17549859 30.19644468 + "BPM.8R6.B1" 13823.42122 31.49757822 30.33859178 + "BPM.9R6.B1" 13862.48821 31.64459656 30.50313629 + "BPM.10R6.B1" 13902.9532 31.79987148 30.60675431 + "BPM.11R6.B1" 13954.79389 31.90313126 30.75299089 + "BPM.12R6.B1" 14009.52037 32.03900911 30.86637871 + "BPM.13R6.B1" 14062.97186 32.15544945 31.00195476 + "BPM.14R6.B1" 14116.42334 32.29243355 31.11993014 + "BPM.15R6.B1" 14169.87483 32.40859228 31.25804077 + "BPM.16R6.B1" 14223.32631 32.54914689 31.37635438 + "BPM.17R6.B1" 14276.77779 32.66391109 31.52248196 + "BPM.18R6.B1" 14330.22928 32.80097672 31.63957917 + "BPM.19R6.B1" 14383.68076 32.91729397 31.77785529 + "BPM.20R6.B1" 14437.13225 33.05774022 31.89703765 + "BPM.21R6.B1" 14490.58373 33.17235105 32.04284618 + "BPM.22R6.B1" 14544.03522 33.30952299 32.15913567 + "BPM.23R6.B1" 14597.4867 33.42314665 32.29848354 + "BPM.24R6.B1" 14650.93818 33.56064373 32.41498367 + "BPM.25R6.B1" 14704.38967 33.67597699 32.55539204 + "BPM.26R6.B1" 14757.84115 33.81310287 32.67160498 + "BPM.27R6.B1" 14811.29264 33.92672803 32.81097316 + "BPM.28R6.B1" 14864.74412 34.06425996 32.92754396 + "BPM.29R6.B1" 14918.1956 34.17958803 33.06791629 + "BPM.30R6.B1" 14971.64709 34.31667226 33.18406518 + "BPM.31R6.B1" 15025.09857 34.43029844 33.32347963 + "BPM.32R6.B1" 15078.55006 34.56786461 33.44011965 + "BPM.33R6.B1" 15132.00154 34.68319369 33.58044819 + "BPM.34R6.B1" 15185.45302 34.8202507 33.69652741 + "BPM.33L7.B1" 15238.90451 34.933877 33.83598739 + "BPM.32L7.B1" 15292.35599 35.07147174 33.95268764 + "BPM.31L7.B1" 15345.80748 35.18679065 34.09295694 + "BPM.30L7.B1" 15399.25896 35.32380301 34.20898616 + "BPM.29L7.B1" 15452.71045 35.43745287 34.34851138 + "BPM.28L7.B1" 15506.16193 35.57511095 34.46526098 + "BPM.27L7.B1" 15559.61341 35.69040299 34.60546975 + "BPM.26L7.B1" 15613.0649 35.82735375 34.721451 + "BPM.25L7.B1" 15666.51638 35.94102239 34.86103775 + "BPM.24L7.B1" 15719.96787 36.07872908 34.97782733 + "BPM.23L7.B1" 15773.41935 36.19400954 35.11795964 + "BPM.22L7.B1" 15826.87083 36.33092195 35.23390809 + "BPM.21L7.B1" 15880.32232 36.44461132 35.37357684 + "BPM.20L7.B1" 15933.7738 36.58148005 35.49438614 + "BPM.19L7.B1" 15987.22529 36.69890283 35.63849141 + "BPM.18L7.B1" 16040.67677 36.83946862 35.75342445 + "BPM.17L7.B1" 16094.12825 36.95298449 35.89392738 + "BPM.16L7.B1" 16147.57974 37.09008187 36.01514749 + "BPM.15L7.B1" 16201.03122 37.20767485 36.15831994 + "BPM.14L7.B1" 16254.48271 37.34798736 36.27297671 + "BPM.13L7.B1" 16307.93419 37.46136274 36.41443359 + "BPM.12L7.B1" 16361.38567 37.60160261 36.52393649 + "BPM.11L7.B1" 16414.83716 37.72195629 36.65061666 + "BPM.10L7.B1" 16467.61985 37.86499897 36.74204091 + "BPM.9L7.B1" 16506.68684 37.95811546 36.82146224 + "BPM.8L7.B1" 16547.15183 38.15171323 36.88326628 + "BPM.7L7.B1" 16586.21782 38.23457345 36.95937859 + "BPM.6L7.B1" 16621.03582 38.2811554 37.02540181 + "BPMWC.6L7.B1" 16633.13832 38.28867959 37.06707916 + "BPMWE.5L7.B1" 16710.19232 38.47651497 37.17260123 + "BPMW.5L7.B1" 16733.39732 38.57395248 37.18397845 + "BPMWE.4L7.B1" 16768.48232 38.61610594 37.21829621 + "BPMW.4L7.B1" 16796.58732 38.62950208 37.28880171 + "BPMW.4R7.B1" 16912.63432 38.81760567 37.43965822 + "BPMWE.4R7.B1" 16940.73932 38.89309203 37.45172181 + "BPMW.5R7.B1" 16975.82432 38.92583249 37.48458341 + "BPMWE.5R7.B1" 16999.02932 38.93619717 37.54601723 + "BPMR.6R7.B1" 17078.24482 39.02886618 37.71794826 + "BPM_A.7R7.B1" 17116.28082 39.10951107 37.77428748 + "BPM.8R7.B1" 17155.34681 39.24041877 37.85545849 + "BPM.9R7.B1" 17194.4138 39.42669527 37.93475163 + "BPM.10R7.B1" 17234.87878 39.52629881 38.0204535 + "BPM.11R7.B1" 17287.66147 39.65402972 38.12944387 + "BPM.12R7.B1" 17342.38796 39.774495 38.265659 + "BPM.13R7.B1" 17395.83944 39.91707764 38.38234599 + "BPM.14R7.B1" 17449.29093 40.03204244 38.52186379 + "BPM.15R7.B1" 17502.74241 40.16917338 38.6410715 + "BPM.16R7.B1" 17556.19389 40.28529127 38.78559869 + "BPM.17R7.B1" 17609.64538 40.42569126 38.90204013 + "BPM.18R7.B1" 17663.09686 40.54050838 39.04195929 + "BPM.19R7.B1" 17716.54835 40.67772624 39.16168032 + "BPM.20R7.B1" 17769.99983 40.79398881 39.30571934 + "BPM.21R7.B1" 17823.45131 40.93429013 39.42171554 + "BPM.22R7.B1" 17876.9028 41.04896144 39.56216161 + "BPM.23R7.B1" 17930.35428 41.18715453 39.67833472 + "BPM.24R7.B1" 17983.80577 41.30141745 39.81766613 + "BPM.25R7.B1" 18037.25725 41.43788043 39.93428506 + "BPM.26R7.B1" 18090.70874 41.55259019 40.07469863 + "BPM.27R7.B1" 18144.16022 41.69078175 40.19078826 + "BPM.28R7.B1" 18197.6117 41.80499161 40.33015891 + "BPM.29R7.B1" 18251.06319 41.94142427 40.44691968 + "BPM.30R7.B1" 18304.51467 42.05615855 40.58736625 + "BPM.31R7.B1" 18357.96616 42.19434706 40.70336944 + "BPM.32R7.B1" 18411.41764 42.30851151 40.84279534 + "BPM.33R7.B1" 18464.86912 42.44493542 40.95964272 + "BPM.34R7.B1" 18518.32061 42.55971512 41.10002704 + "BPM.33L8.B1" 18571.77209 42.69790936 41.21595794 + "BPM.32L8.B1" 18625.22358 42.81204035 41.35546293 + "BPM.31L8.B1" 18678.67506 42.94849316 41.47230372 + "BPM.30L8.B1" 18732.12654 43.06332872 41.6125049 + "BPM.29L8.B1" 18785.57803 43.20151164 41.72839523 + "BPM.28L8.B1" 18839.02951 43.31560162 41.86799881 + "BPM.27L8.B1" 18892.481 43.45206483 41.98488614 + "BPM.26L8.B1" 18945.93248 43.56694681 42.1250002 + "BPM.25L8.B1" 18999.38397 43.70512929 42.24085116 + "BPM.24L8.B1" 19052.83545 43.81917985 42.38054743 + "BPM.23L8.B1" 19106.28693 43.9556564 42.49746008 + "BPM.22L8.B1" 19159.73842 44.07056965 42.63747131 + "BPM.21L8.B1" 19213.1899 44.20872398 42.75330343 + "BPM.20L8.B1" 19266.64139 44.32559464 42.89243665 + "BPM.19L8.B1" 19320.09287 44.46490531 43.01285181 + "BPM.18L8.B1" 19373.54435 44.5790422 43.15757475 + "BPM.17L8.B1" 19426.99584 44.71737 43.2728107 + "BPM.16L8.B1" 19480.44732 44.8342813 43.4126797 + "BPM.15L8.B1" 19533.89881 44.97340997 43.53364263 + "BPM.14L8.B1" 19587.35029 45.08750828 43.67750654 + "BPM.13L8.B1" 19640.80177 45.22600521 43.79232421 + "BPM.12L8.B1" 19694.25326 45.34259734 43.93315899 + "BPM.11L8.B1" 19747.70474 45.48491769 44.03896986 + "BPM.10L8.B1" 19799.54543 45.59469168 44.15858241 + "BPM.9L8.B1" 19838.61242 45.71223854 44.22234564 + "BPM.8L8.B1" 19879.07741 45.85960426 44.31384755 + "BPM.7L8.B1" 19918.1454 46.04797236 44.36674288 + "BPMR.6L8.B1" 19950.6144 46.11188983 44.40194667 + "BPM.5L8.B1" 20011.0334 46.206308 44.52412791 + "BPMYB.4L8.B1" 20031.8004 46.24088677 44.588428 + "BPMWB.4L8.B1" 20056.1919 46.32922167 44.64713543 + "BPMSX.4L8.B1" 20106.4249 46.43565282 44.83649314 + "BPMS.2L8.B1" 20144.3364 46.49116968 44.89233839 + "BPMSW.1L8.B1" 20154.2704 46.51504447 44.9102085 + "BPMSW.1L8.B1_DOROS" 20154.2704 46.51504447 44.9102085 + "BPMSW.1R8.B1" 20197.4604 46.87707441 45.27174089 + "BPMSW.1R8.B1_DOROS" 20197.4604 46.87707441 45.27174089 + "BPMS.2R8.B1" 20207.3944 46.89477541 45.2955397 + "BPMSX.4R8.B1" 20245.3059 46.95025554 45.35116096 + "BPMWB.4R8.B1" 20295.4629 47.14051378 45.4582924 + "BPMYB.4R8.B1" 20319.9304 47.20013563 45.54708922 + "BPMYB.5R8.B1" 20340.5074 47.27769811 45.57865358 + "BPM.6R8.B1" 20424.6154 47.45623609 45.73180028 + "BPM_A.7R8.B1" 20446.8554 47.47640414 45.77182673 + "BPM.8R8.B1" 20488.29241 47.54163789 45.91651821 + "BPM.9R8.B1" 20527.35742 47.68205675 46.12411744 + "BPM.10R8.B1" 20567.82043 47.87343698 46.20254227 + "BPM.11R8.B1" 20619.65914 47.97503962 46.32118059 + "BPM.12R8.B1" 20674.38266 48.10114047 46.44241802 + "BPM.13R8.B1" 20727.83117 48.21448772 46.58394436 + "BPM.14R8.B1" 20781.27969 48.35048837 46.69751758 + "BPM.15R8.B1" 20834.72821 48.46385812 46.83360647 + "BPM.16R8.B1" 20888.17672 48.59985289 46.9478097 + "BPM.17R8.B1" 20941.62524 48.71393808 47.0841436 + "BPM.18R8.B1" 20995.07375 48.84994051 47.19772133 + "BPM.19R8.B1" 21048.52227 48.96331876 47.33381631 + "BPM.20R8.B1" 21101.97079 49.0993241 47.44802234 + "BPM.21R8.B1" 21155.4193 49.21340869 47.58436238 + "BPM.22R8.B1" 21208.86782 49.34941566 47.69793487 + "BPM.23R8.B1" 21262.31633 49.46291194 47.83399515 + "BPM.24R8.B1" 21315.76485 49.59911375 47.94800615 + "BPM.25R8.B1" 21369.21337 49.71323239 48.08411393 + "BPM.26R8.B1" 21422.66188 49.84923837 48.19769142 + "BPM.27R8.B1" 21476.1104 49.96274292 48.33375612 + "BPM.28R8.B1" 21529.55891 50.09895727 48.44776957 + "BPM.29R8.B1" 21583.00743 50.21307548 48.58388516 + "BPM.30R8.B1" 21636.45594 50.349084 48.69745779 + "BPM.31R8.B1" 21689.90446 50.46257581 48.83351739 + "BPM.32R8.B1" 21743.35298 50.59877002 48.94752937 + "BPM.33R8.B1" 21796.80149 50.71289325 49.08363796 + "BPM.34R8.B1" 21850.25001 50.84890698 49.19721449 + "BPM.33L1.B1" 21903.69852 50.96239383 49.33328099 + "BPM.32L1.B1" 21957.14704 51.09858089 49.44729876 + "BPM.31L1.B1" 22010.59556 51.21270305 49.58341533 + "BPM.30L1.B1" 22064.04407 51.34871853 49.69698725 + "BPM.29L1.B1" 22117.49259 51.46221066 49.83304529 + "BPM.28L1.B1" 22170.9411 51.59840423 49.94705689 + "BPM.27L1.B1" 22224.38962 51.71252354 50.08316771 + "BPM.26L1.B1" 22277.83814 51.84853267 50.19674546 + "BPM.25L1.B1" 22331.28665 51.96203651 50.33280711 + "BPM.24L1.B1" 22384.73517 52.09824764 50.4468203 + "BPM.23L1.B1" 22438.18368 52.21236658 50.58293891 + "BPM.22L1.B1" 22491.6322 52.34837832 50.69651183 + "BPM.21L1.B1" 22545.08071 52.46187358 50.83256764 + "BPM.20L1.B1" 22598.52923 52.59803055 50.94674576 + "BPM.19L1.B1" 22651.97775 52.71211697 51.08308256 + "BPM.18L1.B1" 22705.42626 52.84812777 51.19666014 + "BPM.17L1.B1" 22758.87478 52.96163122 51.33272166 + "BPM.16L1.B1" 22812.32329 53.09780032 51.44690257 + "BPM.15L1.B1" 22865.77181 53.21188645 51.58324577 + "BPM.14L1.B1" 22919.22033 53.34790021 51.69681826 + "BPM.13L1.B1" 22972.66884 53.46139512 51.83287546 + "BPM.12L1.B1" 23026.11736 53.5954046 51.95674442 + "BPM.11L1.B1" 23079.56587 53.70800458 52.10437182 + "BPM.10L1.B1" 23132.34658 53.84345244 52.21342414 + "BPM.9L1.B1" 23171.4116 53.94703173 52.32012861 + "BPM.8L1.B1" 23211.87461 54.15284276 52.46324035 + "BPMR.7L1.B1" 23250.94062 54.23187128 52.66225659 + "BPM.6L1.B1" 23294.12462 54.32149065 52.71777251 + "BPMR.5L1.B1" 23326.02462 54.36688777 52.75133111 + "BPMYA.4L1.B1" 23347.14262 54.39139491 52.77591902 + "BPMWB.4L1.B1" 23368.27512 54.40923715 52.81620218 + "BPMSY.4L1.B1" 23461.05512 54.5301626 52.95144517 + "BPMS.2L1.B1" 23487.84062 54.55798874 52.99495677 + "BPMWF.A1L1.B1" 23497.63062 54.57683703 53.01952301 + "BPMSW.1L1.B1" 23497.79062 54.57731254 53.01999767 + "BPMSW.1L1.B1_DOROS" 23497.79062 54.57731254 53.01999767 + "BPMSW.1R1.B1" 23540.93362 54.92715616 53.36972678 + "BPMSW.1R1.B1_DOROS" 23540.93362 54.92715616 53.36972678 + "BPMWF.A1R1.B1" 23541.09362 54.92763076 53.37020273 + "BPMS.2R1.B1" 23550.89862 54.95221057 53.3890946 + "BPMSY.4R1.B1" 23577.68412 54.99567321 53.41692971 + "BPMWB.4R1.B1" 23670.46412 55.13091239 53.53798341 + "BPMYA.4R1.B1" 23691.59662 55.17123924 53.5558454 + "BPM.5R1.B1" 23719.00462 55.20070905 53.59109221 + "BPMSA.A6R1.B1" 23736.98012 55.21868467 53.61706845 + "BPMR.6R1.B1" 23750.90462 55.23989887 53.63243953 + "BPMSX.7R1.B1" 23757.12012 55.24956345 53.64007447 + "BPM_A.7R1.B1" 23778.62862 55.27580289 53.68435173 + "BPM.8R1.B1" 23820.06761 55.40379124 53.78398027 + "BPM.9R1.B1" 23859.1346 55.6068188 53.93030536 + "BPM.10R1.B1" 23899.59958 55.70145377 54.10044171 + "BPM.11R1.B1" 23952.38227 55.84427844 54.20282196 + "BPM.12R1.B1" 24007.10876 55.96115123 54.33324362 + "BPM.13R1.B1" 24060.56024 56.09779565 54.44716999 + "BPM.14R1.B1" 24114.01173 56.21175616 54.58312227 + "BPM.15R1.B1" 24167.46321 56.34768931 54.69691101 + "BPM.16R1.B1" 24220.91469 56.46119932 54.83341335 + "BPM.17R1.B1" 24274.36618 56.59728716 54.94741443 + "BPM.18R1.B1" 24327.81766 56.71124544 55.08335718 + "BPM.19R1.B1" 24381.26915 56.84717334 55.19715053 + "BPM.20R1.B1" 24434.72063 56.96069144 55.33365558 + "BPM.21R1.B1" 24488.17211 57.09678996 55.44766033 + "BPM.22R1.B1" 24541.6236 57.21075147 55.58361168 + "BPM.23R1.B1" 24595.07508 57.346728 55.69723472 + "BPM.24R1.B1" 24648.52657 57.46039708 55.83348112 + "BPM.25R1.B1" 24701.97805 57.59665396 55.94745657 + "BPM.26R1.B1" 24755.42954 57.71061293 56.08339948 + "BPM.27R1.B1" 24808.88102 57.84658275 56.197026 + "BPM.28R1.B1" 24862.3325 57.96026011 56.33327413 + "BPM.29R1.B1" 24915.78399 58.09652893 56.44725433 + "BPM.30R1.B1" 24969.23547 58.2104754 56.58320969 + "BPM.31R1.B1" 25022.68696 58.34642978 56.69683608 + "BPM.32R1.B1" 25076.13844 58.46011392 56.83307868 + "BPM.33R1.B1" 25129.58992 58.59639324 56.94705081 + "BPM.34R1.B1" 25183.04141 58.71033527 57.08299798 + "BPM.33L2.B1" 25236.49289 58.84628005 57.19662828 + "BPM.32L2.B1" 25289.94438 58.95996324 57.33287433 + "BPM.31L2.B1" 25343.39586 59.09624092 57.4468536 + "BPM.30L2.B1" 25396.84734 59.21019711 57.58280821 + "BPM.29L2.B1" 25450.29883 59.34616553 57.69643156 + "BPM.28L2.B1" 25503.75031 59.45983364 57.83267602 + "BPM.27L2.B1" 25557.2018 59.59608941 57.94665276 + "BPM.26L2.B1" 25610.65328 59.71004934 58.08259771 + "BPM.25L2.B1" 25664.10477 59.84602027 58.19622291 + "BPM.24L2.B1" 25717.55625 59.95969663 58.33246898 + "BPM.23L2.B1" 25771.00773 60.09596428 58.44645048 + "BPM.22L2.B1" 25824.45922 60.20992722 58.58240486 + "BPM.21L2.B1" 25877.9107 60.34590548 58.69602598 + "BPM.20L2.B1" 25931.36219 60.45944653 58.83229987 + "BPM.19L2.B1" 25984.81367 60.59548977 58.94646978 + "BPM.18L2.B1" 26038.26515 60.70941681 59.08263998 + "BPM.17L2.B1" 26091.71664 60.84538928 59.19626498 + "BPM.16L2.B1" 26145.16812 60.95893854 59.33254191 + "BPM.15L2.B1" 26198.61961 61.09499243 59.44671614 + "BPM.14L2.B1" 26252.07109 61.20892259 59.58289429 + "BPM.13L2.B1" 26305.52257 61.34490358 59.69651583 + "BPM.12L2.B1" 26358.97406 61.44613281 59.83612348 + "BPM.11L2.B1" 26412.42554 61.56520612 59.9439331 + "BPM.10L2.B1" 26464.26623 61.68924119 60.06129735 + "BPM.9L2.B1" 26503.33322 61.83236646 60.11769921 + "BPM.8L2.B1" 26543.79821 61.92966741 60.1943767 + "BPM.7L2.B1" 26582.8662 62.05593531 60.23878356 + "BPMR.6L2.B1" 26614.9722 62.15820955 60.2643446 diff --git a/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B2.dat b/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B2.dat new file mode 100644 index 00000000..e8966143 --- /dev/null +++ b/tests/inputs/correction/deltap/twiss_dpp_2.5e-04_B2.dat @@ -0,0 +1,613 @@ +@ NAME %05s "TWISS" +@ TYPE %05s "TWISS" +@ SEQUENCE %05s "LHCB2" +@ PARTICLE %06s "PROTON" +@ MASS %le 0.9382720882 +@ CHARGE %le 1 +@ ENERGY %le 450 +@ PC %le 449.9990218 +@ GAMMA %le 479.6050162 +@ KBUNCH %le 1 +@ BCURRENT %le 0.0002071977796 +@ SIGE %le 0.001 +@ SIGT %le 1 +@ NPART %le 1.15e+11 +@ EX %le 1 +@ EY %le 1 +@ ET %le 0.001 +@ BV_FLAG %le -1 +@ LENGTH %le 26658.8832 +@ ALFA %le 0.0003474008205 +@ ORBIT5 %le -0 +@ GAMMATR %le 53.65183498 +@ Q1 %le 62.28001034 +@ Q2 %le 60.31000965 +@ DQ1 %le 2.091042746 +@ DQ2 %le 2.05399497 +@ DXMAX %le 2.891279603 +@ DYMAX %le 0.3523076613 +@ XCOMAX %le 0.000101218096 +@ YCOMAX %le 0.0130325939 +@ BETXMAX %le 581.9222078 +@ BETYMAX %le 638.9211219 +@ XCORMS %le 3.828052019e-05 +@ YCORMS %le 0.0009665355668 +@ DXRMS %le 1.496756431 +@ DYRMS %le 0.09235544901 +@ DELTAP %le 0.00025 +@ SYNCH_1 %le 0 +@ SYNCH_2 %le 0 +@ SYNCH_3 %le 0 +@ SYNCH_4 %le 0 +@ SYNCH_5 %le 0 +@ TITLE %08s "no-title" +@ ORIGIN %16s "5.06.00 Linux 64" +@ DATE %08s "18/10/24" +@ TIME %08s "14.59.45" +* NAME S MUX MUY +$ %s %le %le %le + "BPMYB.5R8.B2" 16.238 0.02367298094 0.05359499809 + "BPMR.6R8.B2" 100.346 0.178948633 0.1917109573 + "BPM_A.7R8.B2" 122.586 0.2141061214 0.2121693547 + "BPM.8R8.B2" 164.0249894 0.3370298177 0.2868457526 + "BPM.9R8.B2" 203.0919788 0.5755319564 0.395356491 + "BPM.10R8.B2" 243.5569682 0.6687590594 0.5098544608 + "BPM.11R8.B2" 295.3976576 0.7918567579 0.6111216101 + "BPM.12R8.B2" 350.1241417 0.9181293028 0.7370144631 + "BPM.13R8.B2" 403.5756258 1.070684304 0.8486553493 + "BPM.14R8.B2" 457.0271099 1.184806262 0.9843876825 + "BPM.15R8.B2" 510.478594 1.320739302 1.098338372 + "BPM.16R8.B2" 563.9300781 1.434094291 1.235064701 + "BPM.17R8.B2" 617.3815622 1.570187517 1.348909356 + "BPM.18R8.B2" 670.8330463 1.684309087 1.484638286 + "BPM.19R8.B2" 724.2845304 1.820242199 1.598593905 + "BPM.20R8.B2" 777.7360145 1.933603287 1.735323299 + "BPM.21R8.B2" 831.1874986 2.069703775 1.849168969 + "BPM.22R8.B2" 884.6389827 2.18382619 1.984904063 + "BPM.23R8.B2" 938.0904667 2.319806381 2.098682838 + "BPM.24R8.B2" 991.5419508 2.433314967 2.23514442 + "BPM.25R8.B2" 1044.993435 2.569566561 2.348964605 + "BPM.26R8.B2" 1098.444919 2.683688818 2.484693813 + "BPM.27R8.B2" 1151.896403 2.819666931 2.59847529 + "BPM.28R8.B2" 1205.347887 2.933181841 2.734940066 + "BPM.29R8.B2" 1258.799371 3.069442814 2.848763465 + "BPM.30R8.B2" 1312.250855 3.183552531 2.984501195 + "BPM.31R8.B2" 1365.70234 3.319514713 3.098281764 + "BPM.32R8.B2" 1419.153824 3.433035997 3.234740872 + "BPM.33R8.B2" 1472.605308 3.569305877 3.348559301 + "BPM.34R8.B2" 1526.056792 3.68341105 3.484291899 + "BPM.33L1.B2" 1579.508276 3.819364662 3.598076236 + "BPM.32L1.B2" 1632.95976 3.932884897 3.734539922 + "BPM.31L1.B2" 1686.411244 4.069153252 3.848363478 + "BPM.30L1.B2" 1739.862728 4.183270804 3.984099925 + "BPM.29L1.B2" 1793.314212 4.319244961 4.097876962 + "BPM.28L1.B2" 1846.765696 4.432752636 4.234338366 + "BPM.27L1.B2" 1900.21718 4.569001804 4.348161746 + "BPM.26L1.B2" 1953.668665 4.683124963 4.483891189 + "BPM.25L1.B2" 2007.120149 4.81910549 4.597669471 + "BPM.24L1.B2" 2060.571633 4.932619506 4.734134001 + "BPM.23L1.B2" 2114.023117 5.068878051 4.847960598 + "BPM.22L1.B2" 2167.474601 5.183001766 4.983696031 + "BPM.21L1.B2" 2220.926085 5.318985523 5.09746999 + "BPM.20L1.B2" 2274.377569 5.43237299 5.233960092 + "BPM.19L1.B2" 2327.829053 5.568415879 5.347982877 + "BPM.18L1.B2" 2381.280537 5.682504686 5.483946685 + "BPM.17L1.B2" 2434.732021 5.818488165 5.597724899 + "BPM.16L1.B2" 2488.183506 5.931881989 5.734218668 + "BPM.15L1.B2" 2541.63499 6.067932337 5.848243132 + "BPM.14L1.B2" 2595.086474 6.182021729 5.984212421 + "BPM.13L1.B2" 2648.537958 6.318010363 6.097987946 + "BPM.12L1.B2" 2701.989442 6.438325508 6.23290069 + "BPM.11L1.B2" 2755.440926 6.582218073 6.348936442 + "BPM.10L1.B2" 2808.223615 6.694904637 6.487606441 + "BPM.9L1.B2" 2847.290605 6.804833994 6.59304213 + "BPM.8L1.B2" 2887.755594 6.967169956 6.800625806 + "BPM.7L1.B2" 2926.823584 7.168843039 6.871843792 + "BPMSX.7L1.B2" 2957.502084 7.199694977 6.934856385 + "BPMR.6L1.B2" 2970.007584 7.218527608 6.946680369 + "BPMSA.A6L1.B2" 2977.035084 7.228319358 6.953340992 + "BPM.5L1.B2" 3001.907584 7.252628727 6.985454474 + "BPMYA.4L1.B2" 3023.025584 7.278000382 7.008510236 + "BPMWB.4L1.B2" 3044.082084 7.318024233 7.02630394 + "BPMSY.4L1.B2" 3136.938084 7.452829656 7.147607605 + "BPMS.2L1.B2" 3163.723584 7.496301192 7.175477162 + "BPMWF.A1L1.B2" 3173.513584 7.520897506 7.194340972 + "BPMSW.1L1.B2" 3173.673584 7.521373116 7.194816724 + "BPMSW.1L1.B2_DOROS" 3173.673584 7.521373116 7.194816724 + "BPMSW.1R1.B2" 3216.816584 7.87143909 7.544334424 + "BPMSW.1R1.B2_DOROS" 3216.816584 7.87143909 7.544334424 + "BPMWF.A1R1.B2" 3216.976584 7.871912632 7.544810204 + "BPMS.2R1.B2" 3226.781584 7.890710905 7.569455181 + "BPMSY.4R1.B2" 3253.567084 7.918422892 7.613038064 + "BPMWB.4R1.B2" 3346.423084 8.039475059 7.748540635 + "BPMYA.4R1.B2" 3367.479584 8.057316269 7.788666142 + "BPMR.5R1.B2" 3394.887584 8.089905065 7.819167141 + "BPM.6R1.B2" 3426.787584 8.124985738 7.857967074 + "BPMRA.7R1.B2" 3454.511584 8.168226806 7.889798004 + "BPM.8R1.B2" 3495.948594 8.255731765 8.009982052 + "BPM.9R1.B2" 3535.013605 8.397090733 8.245163749 + "BPM.10R1.B2" 3575.476615 8.573488086 8.339061039 + "BPM.11R1.B2" 3628.257326 8.681549772 8.480144846 + "BPM.12R1.B2" 3682.980842 8.81831317 8.596904291 + "BPM.13R1.B2" 3736.429358 8.931636564 8.734697705 + "BPM.14R1.B2" 3789.877874 9.067768678 8.848380213 + "BPM.15R1.B2" 3843.32639 9.181752712 8.984137344 + "BPM.16R1.B2" 3896.774906 9.317639725 9.098238327 + "BPM.17R1.B2" 3950.223421 9.431114818 9.234920389 + "BPM.18R1.B2" 4003.671937 9.567232731 9.348599488 + "BPM.19R1.B2" 4057.120453 9.681218165 9.484350746 + "BPM.20R1.B2" 4110.568969 9.817105695 9.598457462 + "BPM.21R1.B2" 4164.017485 9.93058793 9.73514375 + "BPM.22R1.B2" 4217.466001 10.06671622 9.848823955 + "BPM.23R1.B2" 4270.914517 10.18082189 9.984553577 + "BPM.24R1.B2" 4324.363033 10.3169158 10.09845793 + "BPM.25R1.B2" 4377.811549 10.4304247 10.23490391 + "BPM.26R1.B2" 4431.260065 10.56654006 10.34858282 + "BPM.27R1.B2" 4484.70858 10.68064645 10.48430561 + "BPM.28R1.B2" 4538.157096 10.81673965 10.5982136 + "BPM.29R1.B2" 4591.605612 10.93025631 10.73466486 + "BPM.30R1.B2" 4645.054128 11.06638322 10.84834693 + "BPM.31R1.B2" 4698.502644 11.18047554 10.98407839 + "BPM.32R1.B2" 4751.95116 11.31655127 11.09798434 + "BPM.33R1.B2" 4805.399676 11.43007354 11.23442869 + "BPM.34R1.B2" 4858.848192 11.56620734 11.34810603 + "BPM.33L2.B2" 4912.296708 11.6802963 11.48383132 + "BPM.32L2.B2" 4965.745224 11.81636525 11.5977419 + "BPM.31L2.B2" 5019.19374 11.92988632 11.73419321 + "BPM.30L2.B2" 5072.642255 12.06601842 11.84787604 + "BPM.29L2.B2" 5126.090771 12.18011981 11.98360502 + "BPM.28L2.B2" 5179.539287 12.31621015 12.09750677 + "BPM.27L2.B2" 5232.987803 12.42971887 12.23395435 + "BPM.26L2.B2" 5286.436319 12.56583127 12.34763698 + "BPM.25L2.B2" 5339.884835 12.67993781 12.48335823 + "BPM.24L2.B2" 5393.333351 12.81603396 12.59726247 + "BPM.23L2.B2" 5446.781867 12.92955046 12.73371527 + "BPM.22L2.B2" 5500.230383 13.06567441 12.84740109 + "BPM.21L2.B2" 5553.678899 13.1797803 12.98312841 + "BPM.20L2.B2" 5607.127414 13.3158369 13.097202 + "BPM.19L2.B2" 5660.57593 13.42919129 13.23391409 + "BPM.18L2.B2" 5714.024446 13.56513862 13.34762031 + "BPM.17L2.B2" 5767.472962 13.67924482 13.48334175 + "BPM.16L2.B2" 5820.921478 13.81530276 13.5974211 + "BPM.15L2.B2" 5874.369994 13.92866527 13.73413743 + "BPM.14L2.B2" 5927.81851 14.06462199 13.84784484 + "BPM.13L2.B2" 5981.267026 14.17872748 13.9835735 + "BPM.12L2.B2" 6034.715542 14.31945329 14.08095896 + "BPM.11L2.B2" 6088.164058 14.42105309 14.19482457 + "BPM.10L2.B2" 6140.002768 14.53210113 14.29551956 + "BPM.9L2.B2" 6179.067779 14.65354264 14.3892864 + "BPM.8L2.B2" 6219.530789 14.87509948 14.54452288 + "BPM.7L2.B2" 6258.5968 14.92400793 14.76332696 + "BPM.6L2.B2" 6290.7028 14.95444807 14.81116122 + "BPMYB.5L2.B2" 6362.9018 15.0933651 14.91330327 + "BPMYB.4L2.B2" 6383.4718 15.15813929 14.9472869 + "BPMWB.4L2.B2" 6407.8633 15.2171314 15.03600016 + "BPMSX.4L2.B2" 6458.0963 15.40716256 15.14342296 + "BPMS.2L2.B2" 6496.0078 15.462774 15.19914444 + "BPMSW.1L2.B2" 6505.9418 15.48053898 15.22298977 + "BPMSW.1L2.B2_DOROS" 6505.9418 15.48053898 15.22298977 + "BPMSW.1R2.B2" 6549.1318 15.84240476 15.58432326 + "BPMSW.1R2.B2_DOROS" 6549.1318 15.84240476 15.58432326 + "BPMS.2R2.B2" 6559.0658 15.86624382 15.60220092 + "BPMSX.4R2.B2" 6596.9773 15.92178727 15.65811401 + "BPMWB.4R2.B2" 6647.1343 16.02832703 15.84745817 + "BPMYB.4R2.B2" 6671.6018 16.11688679 15.90654157 + "BPM.5R2.B2" 6701.1358 16.15633452 16.03006368 + "BPMR.6R2.B2" 6774.4318 16.33780733 16.14462324 + "BPM_A.7R2.B2" 6787.3068 16.37056742 16.15478279 + "BPM.8R2.B2" 6828.745789 16.48778069 16.20513248 + "BPM.9R2.B2" 6867.812779 16.61931839 16.26654588 + "BPM.10R2.B2" 6908.277768 16.73845694 16.340725 + "BPM.11R2.B2" 6960.118458 16.88523467 16.44688781 + "BPM.12R2.B2" 7014.844942 16.99240424 16.5867034 + "BPM.13R2.B2" 7068.296426 17.11944827 16.69933103 + "BPM.14R2.B2" 7121.74791 17.23522839 16.83126351 + "BPM.15R2.B2" 7175.199394 17.3722846 16.94554921 + "BPM.16R2.B2" 7228.650878 17.48885724 17.08202516 + "BPM.17R2.B2" 7282.102362 17.6300099 17.19263427 + "BPM.18R2.B2" 7335.553846 17.74555135 17.32437368 + "BPM.19R2.B2" 7389.00533 17.8826708 17.43848055 + "BPM.20R2.B2" 7442.456814 17.99948726 17.57513622 + "BPM.21R2.B2" 7495.908299 18.14055724 17.68593199 + "BPM.22R2.B2" 7549.359783 18.25588021 17.81752386 + "BPM.23R2.B2" 7602.811267 18.39400128 17.92783387 + "BPM.24R2.B2" 7656.262751 18.50883873 18.06025855 + "BPM.25R2.B2" 7709.714235 18.64602441 18.17167151 + "BPM.26R2.B2" 7763.165719 18.7613706 18.3033649 + "BPM.27R2.B2" 7816.617203 18.89946046 18.41362331 + "BPM.28R2.B2" 7870.068687 19.01428277 18.54593093 + "BPM.29R2.B2" 7923.520171 19.15150561 18.65739807 + "BPM.30R2.B2" 7976.971655 19.26686364 18.78923075 + "BPM.31R2.B2" 8030.42314 19.40491555 18.89945228 + "BPM.32R2.B2" 8083.874624 19.51971985 19.03162574 + "BPM.33R2.B2" 8137.326108 19.65697478 19.14310915 + "BPM.34R2.B2" 8190.777592 19.77235334 19.27505926 + "BPM.33L3.B2" 8244.229076 19.91037334 19.38526861 + "BPM.32L3.B2" 8297.68056 20.02515397 19.51731631 + "BPM.31L3.B2" 8351.132044 20.16243053 19.62881634 + "BPM.30L3.B2" 8404.583528 20.27784737 19.76090859 + "BPM.29L3.B2" 8458.035012 20.41586975 19.87111284 + "BPM.28L3.B2" 8511.486496 20.53061089 20.00302495 + "BPM.27L3.B2" 8564.93798 20.66788901 20.11450665 + "BPM.26L3.B2" 8618.389465 20.78333013 20.24671778 + "BPM.25L3.B2" 8671.840949 20.92132352 20.35694941 + "BPM.24L3.B2" 8725.292433 21.03605567 20.48873699 + "BPM.23L3.B2" 8778.743917 21.1733796 20.60019065 + "BPM.22L3.B2" 8832.195401 21.28884349 20.73253929 + "BPM.21L3.B2" 8885.646885 21.42681574 20.84280832 + "BPM.20L3.B2" 8939.098369 21.54440459 20.97379935 + "BPM.19L3.B2" 8992.549853 21.68453243 21.08819881 + "BPM.18L3.B2" 9046.001337 21.79914677 21.22563151 + "BPM.17L3.B2" 9099.452821 21.93733349 21.33614191 + "BPM.16L3.B2" 9152.904306 22.05504859 21.4669514 + "BPM.15L3.B2" 9206.35579 22.19495844 21.58109977 + "BPM.14L3.B2" 9259.807274 22.30947745 21.71873167 + "BPM.13L3.B2" 9313.258758 22.44791072 21.82948493 + "BPM.12L3.B2" 9366.710242 22.54585823 21.96552139 + "BPM.11L3.B2" 9420.161726 22.65666346 22.07722797 + "BPM.10L3.B2" 9472.944415 22.74139616 22.20942123 + "BPM.9L3.B2" 9512.011405 22.82156707 22.2687208 + "BPM.8L3.B2" 9552.476394 22.91237139 22.33227343 + "BPM.7L3.B2" 9591.542384 23.0342936 22.38671805 + "BPMR.6L3.B2" 9664.181384 23.26937736 22.48050646 + "BPMWJ.A5L3.B2" 9705.809884 23.32072156 22.52653301 + "BPMW.5L3.B2" 9734.779884 23.33352905 22.59068016 + "BPMWE.4L3.B2" 9809.907884 23.46292547 22.66439432 + "BPMW.4L3.B2" 9837.452884 23.60987206 22.6757111 + "BPMW.4R3.B2" 9882.417884 23.68009309 22.71087259 + "BPMWE.4R3.B2" 9909.962884 23.69535455 22.75637116 + "BPMW.5R3.B2" 9985.090884 23.79919605 22.82936595 + "BPMWE.A5R3.B2" 10013.80888 23.88208415 22.8447117 + "BPMWC.6R3.B2" 10053.62688 23.93793822 22.88729586 + "BPM.6R3.B2" 10065.78138 23.94696652 22.91341166 + "BPM_A.7R3.B2" 10121.60538 24.0335053 23.00294216 + "BPM.8R3.B2" 10160.67137 24.10352197 23.13768535 + "BPM.9R3.B2" 10199.73836 24.16255431 23.3546513 + "BPM.10R3.B2" 10240.20335 24.23669001 23.43450127 + "BPM.11R3.B2" 10292.98604 24.36301386 23.53866974 + "BPM.12R3.B2" 10347.71253 24.52447877 23.65174779 + "BPM.13R3.B2" 10401.16401 24.63930708 23.78650248 + "BPM.14R3.B2" 10454.61549 24.77689335 23.89644741 + "BPM.15R3.B2" 10508.06698 24.89466319 24.02814949 + "BPM.16R3.B2" 10561.51846 25.03516301 24.14294448 + "BPM.17R3.B2" 10614.96995 25.14958991 24.27965997 + "BPM.18R3.B2" 10668.42143 25.28744404 24.38978644 + "BPM.19R3.B2" 10721.87291 25.40536265 24.52126888 + "BPM.20R3.B2" 10775.3244 25.5455878 24.63585298 + "BPM.21R3.B2" 10828.77588 25.65987195 24.77278609 + "BPM.22R3.B2" 10882.22737 25.79798006 24.88311144 + "BPM.23R3.B2" 10935.67885 25.91313466 25.01505577 + "BPM.24R3.B2" 10989.13033 26.05031808 25.12642618 + "BPM.25R3.B2" 11042.58182 26.16536312 25.25860528 + "BPM.26R3.B2" 11096.0333 26.30349351 25.3689477 + "BPM.27R3.B2" 11149.48479 26.41861245 25.50079084 + "BPM.28R3.B2" 11202.93627 26.55578498 25.61212767 + "BPM.29R3.B2" 11256.38775 26.67084937 25.74439845 + "BPM.30R3.B2" 11309.83924 26.80896518 25.854775 + "BPM.31R3.B2" 11363.29072 26.9240568 25.98651709 + "BPM.32R3.B2" 11416.74221 27.06122694 26.09782147 + "BPM.33R3.B2" 11470.19369 27.17633543 26.23019771 + "BPM.34R3.B2" 11523.64518 27.31447709 26.34062011 + "BPM.33L4.B2" 11577.09666 27.42952093 26.47227741 + "BPM.32L4.B2" 11630.54814 27.56666867 26.58352106 + "BPM.31L4.B2" 11683.99963 27.6818092 26.7159689 + "BPM.30L4.B2" 11737.45111 27.81994733 26.82645131 + "BPM.29L4.B2" 11790.9026 27.93496946 26.95802768 + "BPM.28L4.B2" 11844.35408 28.07213102 27.06921033 + "BPM.27L4.B2" 11897.80556 28.18729084 27.20174526 + "BPM.26L4.B2" 11951.25705 28.32541222 27.31230442 + "BPM.25L4.B2" 12004.70853 28.44041555 27.44381643 + "BPM.24L4.B2" 12058.16002 28.57759981 27.55490761 + "BPM.23L4.B2" 12111.6115 28.69277953 27.68748615 + "BPM.22L4.B2" 12165.06298 28.83087853 27.79813008 + "BPM.21L4.B2" 12218.51447 28.94586331 27.92959406 + "BPM.20L4.B2" 12271.96595 29.08218981 28.044225 + "BPM.19L4.B2" 12325.41744 29.19960149 28.18118626 + "BPM.18L4.B2" 12378.86892 29.34144152 28.29147177 + "BPM.17L4.B2" 12432.32041 29.45610653 28.42272786 + "BPM.16L4.B2" 12485.77189 29.59262367 28.53713069 + "BPM.15L4.B2" 12539.22337 29.71033838 28.67429172 + "BPM.14L4.B2" 12592.67486 29.85192684 28.78479575 + "BPM.13L4.B2" 12646.12634 29.96631834 28.91586358 + "BPM.12L4.B2" 12699.57783 30.10520969 29.02173278 + "BPM.11L4.B2" 12753.02931 30.22522251 29.1467542 + "BPMCS.10L4.B2" 12804.678 30.36634567 29.23936274 + "BPM.10L4.B2" 12804.87 30.36653932 29.2400439 + "BPMCS.9L4.B2" 12843.74499 30.46628118 29.32394245 + "BPM.9L4.B2" 12843.93699 30.46763632 29.32413144 + "BPMCS.8L4.B2" 12884.20998 30.67520055 29.38994402 + "BPM.8L4.B2" 12884.40198 30.67552177 29.39055514 + "BPMCS.7L4.B2" 12923.27597 30.80485511 29.46988349 + "BPM.7L4.B2" 12923.46797 30.80615775 29.47006672 + "BPMYA.6L4.B2" 13020.07197 31.01432275 29.5678188 + "BPMYB.5L4.B2" 13057.07197 31.03221732 29.59081114 + "BPMWA.B5L4.B2" 13159.46247 31.11771556 29.63033199 + "BPMWA.A5L4.B2" 13168.34747 31.12453908 29.63456022 + "BPMWA.A5R4.B2" 13216.39647 31.15760046 29.65977955 + "BPMWA.B5R4.B2" 13225.28147 31.1629635 29.66486023 + "BPMWI.A5R4.B2" 13251.14547 31.17726918 29.68029874 + "BPMYA.5R4.B2" 13327.74797 31.20978692 29.72939047 + "BPMYB.6R4.B2" 13359.31197 31.22994961 29.74209002 + "BPMCS.7R4.B2" 13455.63597 31.34974254 29.96261899 + "BPM.7R4.B2" 13455.82797 31.34994486 29.96471652 + "BPMCS.8R4.B2" 13493.42696 31.44745334 30.12416667 + "BPM.8R4.B2" 13493.61896 31.44866564 30.12436684 + "BPMCS.9R4.B2" 13532.49395 31.61248982 30.1858374 + "BPM.9R4.B2" 13532.68595 31.61279529 30.18638034 + "BPMCS.10R4.B2" 13572.95894 31.72633028 30.26221212 + "BPM.10R4.B2" 13573.15094 31.72738941 30.26238581 + "BPM.11R4.B2" 13624.99162 31.87338699 30.36111148 + "BPM.12R4.B2" 13679.71811 31.98648616 30.49038875 + "BPM.13R4.B2" 13733.16959 32.11758258 30.60572553 + "BPM.14R4.B2" 13786.62108 32.23164479 30.74217429 + "BPM.15R4.B2" 13840.07256 32.36814031 30.85532554 + "BPM.16R4.B2" 13893.52405 32.48155557 30.99134095 + "BPM.17R4.B2" 13946.97553 32.61709184 31.10598829 + "BPM.18R4.B2" 14000.42701 32.73114424 31.24241944 + "BPM.19R4.B2" 14053.8785 32.86762703 31.35557387 + "BPM.20R4.B2" 14107.32998 32.98105604 31.4915916 + "BPM.21R4.B2" 14160.78147 33.11660481 31.6062475 + "BPM.22R4.B2" 14214.23295 33.23066218 31.74268964 + "BPM.23R4.B2" 14267.68443 33.3672041 31.85566668 + "BPM.24R4.B2" 14321.13592 33.48077823 31.99142083 + "BPM.25R4.B2" 14374.5874 33.6164731 32.10604409 + "BPM.26R4.B2" 14428.03889 33.73052242 32.24247487 + "BPM.27R4.B2" 14481.49037 33.86704974 32.3554564 + "BPM.28R4.B2" 14534.94185 33.98063566 32.49120762 + "BPM.29R4.B2" 14588.39334 34.11634475 32.60583805 + "BPM.30R4.B2" 14641.84482 34.2303814 32.7422888 + "BPM.31R4.B2" 14695.29631 34.36689557 32.85527232 + "BPM.32R4.B2" 14748.74779 34.48049056 32.99101821 + "BPM.33R4.B2" 14802.19927 34.61621334 33.10563491 + "BPM.34R4.B2" 14855.65076 34.73024397 33.24207375 + "BPM.33L5.B2" 14909.10224 34.86674641 33.35506119 + "BPM.32L5.B2" 14962.55373 34.98034176 33.49080627 + "BPM.31L5.B2" 15016.00521 35.11606195 33.60543311 + "BPM.30L5.B2" 15069.4567 35.23010883 33.74188643 + "BPM.29L5.B2" 15122.90818 35.36664069 33.85486854 + "BPM.28L5.B2" 15176.35966 35.48021729 33.99061327 + "BPM.27L5.B2" 15229.81115 35.61591035 34.10523343 + "BPM.26L5.B2" 15283.26263 35.72995716 34.2416738 + "BPM.25L5.B2" 15336.71412 35.86648632 34.35465835 + "BPM.24L5.B2" 15390.1656 35.9800747 34.49040006 + "BPM.23L5.B2" 15443.61708 36.11578195 34.60502737 + "BPM.22L5.B2" 15497.06857 36.22983565 34.74148389 + "BPM.21L5.B2" 15550.52005 36.36638032 34.85446551 + "BPM.20L5.B2" 15603.97154 36.47983859 34.99023432 + "BPM.19L5.B2" 15657.42302 36.61532652 35.10505282 + "BPM.18L5.B2" 15710.8745 36.72933534 35.2417292 + "BPM.17L5.B2" 15764.32599 36.86586681 35.35471326 + "BPM.16L5.B2" 15817.77747 36.97933901 35.49048487 + "BPM.15L5.B2" 15871.22896 37.11483957 35.60531262 + "BPM.14L5.B2" 15924.68044 37.22885315 35.74199928 + "BPM.13L5.B2" 15978.13193 37.36540166 35.85497846 + "BPM.12L5.B2" 16031.58341 37.48577524 35.98917309 + "BPM.11L5.B2" 16085.03489 37.6290833 36.10601542 + "BPM.10L5.B2" 16137.81758 37.74177042 36.24538084 + "BPM.9L5.B2" 16176.88457 37.8521606 36.35007945 + "BPM.8L5.B2" 16217.34956 38.01451403 36.55725772 + "BPM.7L5.B2" 16256.41755 38.21564681 36.62913906 + "BPMR.6L5.B2" 16293.31155 38.25551866 36.6989202 + "BPMWT.B6L5.B2" 16304.62155 38.27267288 36.70912644 + "BPMWT.A6L5.B2" 16310.44355 38.27996857 36.7151359 + "BPMWT.D6L5.B2" 16311.62155 38.28132385 36.71643582 + "BPMWT.C6L5.B2" 16321.69455 38.29151886 36.7288771 + "BPM.5L5.B2" 16325.21155 38.29457225 36.73384962 + "BPMYA.4L5.B2" 16352.61755 38.32520805 36.76621017 + "BPMWB.4L5.B2" 16373.67605 38.36540079 36.78390718 + "BPMSY.4L5.B2" 16466.53205 38.50022537 36.90415955 + "BPMS.2L5.B2" 16493.31755 38.54352252 36.93185279 + "BPMWF.A1L5.B2" 16503.12255 38.56805067 36.95068528 + "BPMSW.1L5.B2" 16503.28255 38.56852463 36.95116016 + "BPMSW.1L5.B2_DOROS" 16503.28255 38.56852463 36.95116016 + "BPMSW.1R5.B2" 16546.41055 38.91894106 37.30180919 + "BPMSW.1R5.B2_DOROS" 16546.41055 38.91894106 37.30180919 + "BPMWF.A1R5.B2" 16546.57055 38.91941505 37.30228124 + "BPMS.2R5.B2" 16556.37555 38.93822073 37.32671509 + "BPMSY.4R5.B2" 16583.16105 38.96590673 37.3698854 + "BPMWB.4R5.B2" 16676.01705 39.08650085 37.50485516 + "BPMYA.4R5.B2" 16697.07355 39.10426806 37.54520405 + "BPMR.5R5.B2" 16718.19155 39.12733302 37.57079202 + "BPM.6R5.B2" 16750.09155 39.16622943 37.60515125 + "BPMRA.7R5.B2" 16784.10555 39.21502953 37.64724808 + "BPM.8R5.B2" 16825.54256 39.30284052 37.76767671 + "BPM.9R5.B2" 16864.60757 39.44459844 38.00146717 + "BPM.10R5.B2" 16905.07058 39.62038097 38.09604457 + "BPM.11R5.B2" 16957.85129 39.72837957 38.23793307 + "BPM.12R5.B2" 17012.57481 39.86569183 38.35389887 + "BPM.13R5.B2" 17066.02333 39.97909531 38.49096138 + "BPM.14R5.B2" 17119.47184 40.11468033 38.60545171 + "BPM.15R5.B2" 17172.92036 40.22859071 38.74193056 + "BPM.16R5.B2" 17226.36887 40.3650408 38.85522876 + "BPM.17R5.B2" 17279.81739 40.47858924 38.99119545 + "BPM.18R5.B2" 17333.2659 40.61414767 39.10567556 + "BPM.19R5.B2" 17386.71442 40.7280472 39.24213204 + "BPM.20R5.B2" 17440.16294 40.86448004 39.35543705 + "BPM.21R5.B2" 17493.61145 40.97804922 39.49140824 + "BPM.22R5.B2" 17547.05997 41.11363156 39.60589975 + "BPM.23R5.B2" 17600.50848 41.22765755 39.74234594 + "BPM.24R5.B2" 17653.957 41.36431425 39.85544622 + "BPM.25R5.B2" 17707.40552 41.47790077 39.99117896 + "BPM.26R5.B2" 17760.85403 41.61345755 40.10565875 + "BPM.27R5.B2" 17814.30255 41.72747415 40.24208703 + "BPM.28R5.B2" 17867.75106 41.8641127 40.35519555 + "BPM.29R5.B2" 17921.19958 41.9777184 40.49092842 + "BPM.30R5.B2" 17974.6481 42.11329972 40.60541806 + "BPM.31R5.B2" 18028.09661 42.22729927 40.74187378 + "BPM.32R5.B2" 18081.54513 42.36392111 40.85498211 + "BPM.33R5.B2" 18134.99364 42.47753427 40.99070577 + "BPM.34R5.B2" 18188.44216 42.61312605 41.10517743 + "BPM.33L6.B2" 18241.89067 42.7271232 41.24161365 + "BPM.32L6.B2" 18295.33919 42.86373693 41.35472842 + "BPM.31L6.B2" 18348.78771 42.97735007 41.49045574 + "BPM.30L6.B2" 18402.23622 43.11293827 41.6049422 + "BPM.29L6.B2" 18455.68474 43.22695499 41.74139892 + "BPM.28L6.B2" 18509.13325 43.363606 41.85450423 + "BPM.27L6.B2" 18562.58177 43.47719657 41.99022768 + "BPM.26L6.B2" 18616.03029 43.61275136 42.10470372 + "BPM.25L6.B2" 18669.4788 43.72676386 42.24114145 + "BPM.24L6.B2" 18722.92732 43.86340444 42.35425363 + "BPM.23L6.B2" 18776.37583 43.97701416 42.48997709 + "BPM.22L6.B2" 18829.82435 44.11259338 42.60446297 + "BPM.21L6.B2" 18883.27287 44.22661338 42.74092336 + "BPM.20L6.B2" 18936.72138 44.36323136 42.85420239 + "BPM.19L6.B2" 18990.1699 44.47667027 42.99018737 + "BPM.18L6.B2" 19043.61841 44.6120613 43.1046869 + "BPM.17L6.B2" 19097.06693 44.72606924 43.24112503 + "BPM.16L6.B2" 19150.51545 44.86267059 43.35441073 + "BPM.15L6.B2" 19203.96396 44.97613103 43.49039997 + "BPM.14L6.B2" 19257.41248 45.11154473 43.60491101 + "BPM.13L6.B2" 19310.86099 45.22555801 43.74136757 + "BPM.12L6.B2" 19364.30951 45.36527853 43.84312242 + "BPM.11L6.B2" 19417.75802 45.48084529 43.96123646 + "BPM.10L6.B2" 19469.59674 45.60603411 44.11072443 + "BPM.9L6.B2" 19508.66175 45.69985951 44.26307607 + "BPM.8L6.B2" 19549.12476 45.90577245 44.38072642 + "BPMYB.5L6.B2" 19646.21277 46.23294833 44.60094923 + "BPMYA.4L6.B2" 19682.61277 46.26088547 44.61582907 + "BPMSI.B4L6.B2" 19716.93327 46.27109862 44.64722434 + "BPMSI.B4L6.B2_ITLK" 19716.93327 46.27109862 44.64722434 + "BPMSI.A4L6.B2" 19717.56827 46.27130799 44.64787338 + "BPMSI.A4L6.B2_ITLK" 19717.56827 46.27130799 44.64787338 + "BPMSA.4L6.B2" 19810.82827 46.31407515 44.7562664 + "BPMSE.4R6.B2" 19902.39827 46.39075892 44.83618903 + "BPMSX.A4R6.B2" 19995.52327 46.49003668 44.87785178 + "BPMSX.A4R6.B2_ITLK" 19995.52327 46.49003668 44.87785178 + "BPMSX.B4R6.B2" 19996.10827 46.49059431 44.87803579 + "BPMSX.B4R6.B2_ITLK" 19996.10827 46.49059431 44.87803579 + "BPMYB.4R6.B2" 20026.21277 46.51705645 44.88661402 + "BPMYA.5R6.B2" 20062.61277 46.53516266 44.90265223 + "BPM.8R6.B2" 20158.33778 46.71493511 45.0027414 + "BPM.9R6.B2" 20197.40279 46.88921051 45.14812917 + "BPM.10R6.B2" 20237.8658 46.98606557 45.34735853 + "BPM.11R6.B2" 20289.70451 47.13166958 45.44457301 + "BPM.12R6.B2" 20344.42803 47.24584512 45.57167937 + "BPM.13R6.B2" 20397.87654 47.37775322 45.68917694 + "BPM.14R6.B2" 20451.32506 47.49205212 45.8289515 + "BPM.15R6.B2" 20504.77357 47.62954321 45.94166754 + "BPM.16R6.B2" 20558.22209 47.74182322 46.07782975 + "BPM.17R6.B2" 20611.67061 47.87565171 46.19515205 + "BPM.18R6.B2" 20665.11912 47.98992487 46.33473076 + "BPM.19R6.B2" 20718.56764 48.12746993 46.44735164 + "BPM.20R6.B2" 20772.01615 48.23979871 46.58372818 + "BPM.21R6.B2" 20825.46467 48.37361583 46.70114922 + "BPM.22R6.B2" 20878.91318 48.48783021 46.84051908 + "BPM.23R6.B2" 20932.3617 48.62457354 46.95645938 + "BPM.24R6.B2" 20985.81022 48.73929446 47.09685811 + "BPM.25R6.B2" 21039.25873 48.87715081 47.2136162 + "BPM.26R6.B2" 21092.70725 48.99136113 47.35291447 + "BPM.27R6.B2" 21146.15576 49.12814154 47.46893947 + "BPM.28R6.B2" 21199.60428 49.24289123 47.60942445 + "BPM.29R6.B2" 21253.0528 49.38075083 47.72609421 + "BPM.30R6.B2" 21306.50131 49.49491777 47.86533242 + "BPM.31R6.B2" 21359.94983 49.63168134 47.981433 + "BPM.32R6.B2" 21413.39834 49.74645009 48.12194937 + "BPM.33R6.B2" 21466.84686 49.88428503 48.23853819 + "BPM.34R6.B2" 21520.29538 49.99843597 48.37773848 + "BPM.33L7.B2" 21573.74389 50.13522093 48.49394142 + "BPM.32L7.B2" 21627.19241 50.25000649 48.63451441 + "BPM.31L7.B2" 21680.64092 50.38782586 48.75100457 + "BPM.30L7.B2" 21734.08944 50.50196263 48.89017088 + "BPM.29L7.B2" 21787.53795 50.63877357 49.00645364 + "BPM.28L7.B2" 21840.98647 50.75357774 49.14702485 + "BPM.27L7.B2" 21894.43499 50.89137231 49.26342598 + "BPM.26L7.B2" 21947.8835 51.00550235 49.40258694 + "BPM.25L7.B2" 22001.33202 51.14234777 49.51897652 + "BPM.24L7.B2" 22054.78053 51.25717667 49.65956808 + "BPM.23L7.B2" 22108.22905 51.39496808 49.77586382 + "BPM.22L7.B2" 22161.67757 51.5090618 49.91502844 + "BPM.21L7.B2" 22215.12608 51.64590035 50.03150566 + "BPM.20L7.B2" 22268.5746 51.75773172 50.17278757 + "BPM.19L7.B2" 22322.02311 51.89218672 50.28612515 + "BPM.18L7.B2" 22375.47163 52.00693586 50.4208143 + "BPM.17L7.B2" 22428.92015 52.14384445 50.53751498 + "BPM.16L7.B2" 22482.36866 52.25570856 50.67866849 + "BPM.15L7.B2" 22535.81718 52.39013573 50.79179741 + "BPM.14L7.B2" 22589.26569 52.50483929 50.92662846 + "BPM.13L7.B2" 22642.71421 52.6417665 51.04352616 + "BPM.12L7.B2" 22696.16273 52.7550498 51.1841567 + "BPM.11L7.B2" 22749.61124 52.89451045 51.28530661 + "BPM.10L7.B2" 22802.39195 53.01287515 51.39989579 + "BPM.9L7.B2" 22841.45696 53.13394055 51.46149608 + "BPM.8L7.B2" 22881.91997 53.27756922 51.54435843 + "BPM.7L7.B2" 22920.98398 53.44836176 51.60626554 + "BPMR.6L7.B2" 22955.80198 53.51029801 51.66877338 + "BPMWC.6L7.B2" 22967.98048 53.54404016 51.68011161 + "BPMWE.5L7.B2" 23045.03448 53.63078456 51.84986307 + "BPMW.5L7.B2" 23068.23948 53.64119333 51.91081162 + "BPMWE.4L7.B2" 23103.32448 53.67416834 51.94345044 + "BPMW.4L7.B2" 23131.42948 53.75052249 51.95544953 + "BPMW.4R7.B2" 23247.47648 53.93893955 52.10662065 + "BPMWE.4R7.B2" 23275.58148 53.95219038 52.17767842 + "BPMW.5R7.B2" 23310.66648 53.99383883 52.2121921 + "BPMWE.5R7.B2" 23333.87148 54.09045009 52.22361335 + "BPM.6R7.B2" 23413.01098 54.28114398 52.33576278 + "BPM_A.7R7.B2" 23451.04698 54.31987155 52.4273291 + "BPM.8R7.B2" 23490.11099 54.39656989 52.50432541 + "BPM.9R7.B2" 23529.176 54.56224334 52.58742728 + "BPM.10R7.B2" 23569.63902 54.71327633 52.67110962 + "BPM.11R7.B2" 23622.41973 54.82354502 52.79314372 + "BPM.12R7.B2" 23677.14324 54.95926375 52.90465318 + "BPM.13R7.B2" 23730.59176 55.07462658 53.03505745 + "BPM.14R7.B2" 23784.04027 55.21193781 53.15167089 + "BPM.15R7.B2" 23837.48879 55.32390184 53.29238278 + "BPM.16R7.B2" 23890.93731 55.45793344 53.40562004 + "BPM.17R7.B2" 23944.38582 55.57251878 53.54087131 + "BPM.18R7.B2" 23997.83434 55.70983926 53.65765763 + "BPM.19R7.B2" 24051.28285 55.82184294 53.79820031 + "BPM.20R7.B2" 24104.73137 55.95583418 53.91128544 + "BPM.21R7.B2" 24158.17989 56.07039973 54.04670144 + "BPM.22R7.B2" 24211.6284 56.20778921 54.16366037 + "BPM.23R7.B2" 24265.07692 56.32283411 54.30332983 + "BPM.24R7.B2" 24318.52543 56.46007027 54.41911936 + "BPM.25R7.B2" 24371.97395 56.57395626 54.55924138 + "BPM.26R7.B2" 24425.42246 56.71134381 54.6761644 + "BPM.27R7.B2" 24478.87098 56.82638883 54.81571634 + "BPM.28R7.B2" 24532.3195 56.96359384 54.93155632 + "BPM.29R7.B2" 24585.76801 57.07750271 55.07179019 + "BPM.30R7.B2" 24639.21653 57.2149507 55.1886713 + "BPM.31R7.B2" 24692.66504 57.32996802 55.32814817 + "BPM.32R7.B2" 24746.11356 57.46711677 55.44403206 + "BPM.33R7.B2" 24799.56208 57.58103144 55.584339 + "BPM.34R7.B2" 24853.01059 57.71850548 55.70115396 + "BPM.33L8.B2" 24906.45911 57.8335218 55.84053191 + "BPM.32L8.B2" 24959.90762 57.9706443 55.95649032 + "BPM.31L8.B2" 25013.35614 58.08456268 56.09689359 + "BPM.30L8.B2" 25066.80466 58.22206302 56.21364827 + "BPM.29L8.B2" 25120.25317 58.3370886 56.35296529 + "BPM.28L8.B2" 25173.70169 58.47421269 56.4689797 + "BPM.27L8.B2" 25227.1502 58.58812261 56.60943469 + "BPM.26L8.B2" 25280.59872 58.72562569 56.72610687 + "BPM.25L8.B2" 25334.04723 58.84064523 56.86535127 + "BPM.24L8.B2" 25387.49575 58.97773715 56.9814608 + "BPM.23L8.B2" 25440.94427 59.09167394 57.121982 + "BPM.22L8.B2" 25494.39278 59.22923607 57.23857074 + "BPM.21L8.B2" 25547.8413 59.34424115 57.37778585 + "BPM.20L8.B2" 25601.28981 59.48210766 57.49054123 + "BPM.19L8.B2" 25654.73833 59.59369186 57.62726227 + "BPM.18L8.B2" 25708.18685 59.72713307 57.74452844 + "BPM.17L8.B2" 25761.63536 59.84209127 57.88353824 + "BPM.16L8.B2" 25815.08388 59.98001222 57.99623537 + "BPM.15L8.B2" 25868.53239 60.09166435 58.13316191 + "BPM.14L8.B2" 25921.98091 60.2250871 58.25050034 + "BPM.13L8.B2" 25975.42943 60.33998904 58.38932542 + "BPM.12L8.B2" 26028.87794 60.48142892 58.48921089 + "BPM.11L8.B2" 26082.32646 60.58878717 58.60765998 + "BPM.10L8.B2" 26134.16517 60.7110038 58.70805541 + "BPM.9L8.B2" 26173.23018 60.8221261 58.80135833 + "BPM.8L8.B2" 26213.69319 61.04508136 58.87218059 + "BPM.7L8.B2" 26252.7592 61.10347085 58.97414842 + "BPM.6L8.B2" 26285.2282 61.13418725 59.10472204 + "BPMR.5L8.B2" 26345.6472 61.24516113 59.30648196 + "BPMYB.4L8.B2" 26366.4142 61.31039563 59.34074691 + "BPMWB.4L8.B2" 26390.8817 61.36961906 59.42953124 + "BPMSX.4L8.B2" 26441.0387 61.55900209 59.5364837 + "BPMS.2L8.B2" 26478.9502 61.61460835 59.59223283 + "BPMSW.1L8.B2" 26488.8842 61.63239347 59.61612015 + "BPMSW.1L8.B2_DOROS" 26488.8842 61.63239347 59.61612015 + "BPMSW.1R8.B2" 26532.0742 61.99436702 59.97746711 + "BPMSW.1R8.B2_DOROS" 26532.0742 61.99436702 59.97746711 + "BPMS.2R8.B2" 26542.0082 62.0181497 59.99530899 + "BPMSX.4R8.B2" 26579.9197 62.07361526 60.05117163 + "BPMWI.4R8.B2" 26630.1527 62.18054024 60.2411443 + "BPMYB.4R8.B2" 26654.5442 62.26933691 60.29985141 diff --git a/tests/unit/test_global_correction.py b/tests/unit/test_global_correction.py index 74a12a44..fa1dafe4 100644 --- a/tests/unit/test_global_correction.py +++ b/tests/unit/test_global_correction.py @@ -1,17 +1,37 @@ import numpy as np import pytest -from pandas.testing import assert_frame_equal import tfs +from pandas.testing import assert_frame_equal +from omc3.correction import response_madx, response_twiss from omc3.correction.constants import VALUE -from omc3.correction.handler import get_measurement_data -from omc3.global_correction import OPTICS_PARAMS_CHOICES, CORRECTION_DEFAULTS, global_correction_entrypoint as global_correction -from omc3.optics_measurements.constants import (BETA, DISPERSION, NORM_DISPERSION, F1001, F1010, - DISPERSION_NAME, BETA_NAME, PHASE_NAME, - NORM_DISP_NAME, F1010_NAME, TUNE, PHASE, - F1001_NAME) +from omc3.correction.handler import ( + _create_corrected_model, + _update_response, + get_measurement_data, +) +from omc3.global_correction import CORRECTION_DEFAULTS, OPTICS_PARAMS_CHOICES +from omc3.global_correction import global_correction_entrypoint as global_correction +from omc3.model import manager +from omc3.optics_measurements.constants import ( + BETA, + BETA_NAME, + DELTA, + DISPERSION, + DISPERSION_NAME, + EXT, + F1001, + F1001_NAME, + F1010, + F1010_NAME, + NORM_DISP_NAME, + NORM_DISPERSION, + PHASE, + PHASE_NAME, + TUNE, +) from omc3.scripts.fake_measurement_from_model import generate as fake_measurement -from tests.accuracy.test_global_correction import get_skew_params, get_normal_params +from tests.accuracy.test_global_correction import get_normal_params, get_skew_params FILENAME_MAP = { # Names to be output on input of certain parameters. @@ -74,7 +94,7 @@ def test_lhc_global_correct_methods(tmp_path, model_inj_beams, method): # create and load fake measurement n_correctors = 5 - meas_fake = fake_measurement( + fake_measurement( model=model_inj_beams.model_dir / "twiss.dat", twiss=correction_params.twiss, randomize=[], @@ -106,3 +126,100 @@ def test_lhc_global_correct_methods(tmp_path, model_inj_beams, method): if method == "pinv": assert len(correction.index) > n_correctors # unless by accident + +@pytest.mark.basic +def test_update_response(tmp_path, model_inj_beams): + """ Tests if the response is updated. """ + # create the accelerator instance + knob = "kqd.a78"#f'kq10.l1b{beam}' + accel_inst = manager.get_accelerator(model_inj_beams) + delta = tfs.TfsDataFrame( + 3.34e-05, + index=[knob], + columns=[DELTA] + ) + optics_params = ['PHASEX', 'PHASEY'] + + # Get a response dict from the model + ref_resp_dict = response_madx.create_fullresponse(accel_inst, [knob]) + + corr_model_path = tmp_path / f"twiss_cor{EXT}" + ref_model = _create_corrected_model(corr_model_path, [], accel_inst, False) + + # As orbit_dpp is not in the response, it should not be updated. First for response_madx + new_resp_dict = _update_response( + accel_inst=accel_inst, + corrected_elements=ref_model, + optics_params=optics_params, + corr_files=[], + variable_categories=[knob], + update_dpp=False, + update_response="madx" + ) + + # Check everything is the same, as model has not changed. + for key in ref_resp_dict.keys(): + assert_frame_equal(ref_resp_dict[key], new_resp_dict[key]) + + corr_file = tmp_path / "corr.madx" + with open(corr_file, "w") as f: + f.write(f"{knob} = {knob}{delta.loc[knob, DELTA]:+.16e};") + + # Now for response_madx with the model changed + new_resp_dict = _update_response( + accel_inst=accel_inst, + corrected_elements=ref_model, # This is not used in response_madx + optics_params=optics_params, + corr_files=[corr_file], + variable_categories=[knob], + update_dpp=False, + update_response="madx" + ) + for key in new_resp_dict.keys(): + # If the original response is 0, there is no reason why the new one should not be. + if not ref_resp_dict[key][knob].sum() == 0: + # The values are not the same, as the model has changed. + assert not ref_resp_dict[key].equals(new_resp_dict[key]) + + # Check the general structure of the response + assert new_resp_dict[key].columns.equals(ref_resp_dict[key].columns) + assert new_resp_dict[key].index.equals(ref_resp_dict[key].index) + + # Now for response_twiss + ref_resp_dict = response_twiss.create_response(accel_inst, [knob], optics_params) + + new_resp_dict = _update_response( + accel_inst=accel_inst, + corrected_elements=accel_inst.elements, + optics_params=optics_params, + #corr_files are not used in response_twiss but here to check it isn't used (as accel_inst.modifiers is always changed) + corr_files=[], + variable_categories=[knob], + update_dpp=False, + update_response="twiss" + ) + + # Check everything is the same, as model is the reference model. + for key in ref_resp_dict.keys(): + assert_frame_equal(ref_resp_dict[key], new_resp_dict[key]) + + corr_model = _create_corrected_model(corr_model_path, [corr_file], accel_inst, False) + assert not ref_model.equals(corr_model) # For debugging - if this is the problem, or response_twiss + + new_resp_dict = _update_response( + accel_inst=accel_inst, + corrected_elements=corr_model, + optics_params=optics_params, + corr_files=[], + variable_categories=[knob], + update_dpp=False, + update_response=True + ) + for key in new_resp_dict.keys(): # The new dict will only have the keys for the selected optics_params + # The values are not the same, as the model has changed. + assert not ref_resp_dict[key].equals(new_resp_dict[key]) + + # Check the general structure of the response + assert knob in new_resp_dict[key].columns + assert new_resp_dict[key].index.equals(ref_resp_dict[key].index) + \ No newline at end of file