Commit fcbb1049 authored by Aleksandra Mnich's avatar Aleksandra Mnich
Browse files

Merge branch 'release_1.5.66' into 'dev'

Release 1.5.66

See merge request !56
parents b7ca4358 92e19ddc
Pipeline #3172820 canceled with stages
RELEASE NOTES
=============
Version: 1.5.66
- Adapt notebooks to the CI: [SIGMON-141](https://its.cern.ch/jira/browse/SIGMON-141)
- IPQ query fails: [SIGMON-152](https://its.cern.ch/jira/browse/SIGMON-152)
- Notebooks failure: [SIGMON-183](https://its.cern.ch/jira/browse/SIGMON-183)
- circuit type ambiguity: [SIGMON-154](https://its.cern.ch/jira/browse/SIGMON-154)
- Matplotlib inline with papermill: [SIGMON-173](https://its.cern.ch/jira/browse/SIGMON-173)
- HWC_RQ_QHDA: add a comparison to the reference: [SIGMON-175](https://its.cern.ch/jira/browse/SIGMON-175)
- Analyse notebook content in the tests: [SIGMON-149](https://its.cern.ch/jira/browse/SIGMON-149)
- add missing notebooks to the test: [SIGMON-200](https://its.cern.ch/jira/browse/SIGMON-200)
- fix for multiple executions: [SIGMON-202](https://its.cern.ch/jira/browse/SIGMON-202)
- new AN_RB_FPA notebook: [SIGMON-132](https://its.cern.ch/jira/browse/SIGMON-132)
- same env in GitLab as on SWAN: [SIGMON-198](https://its.cern.ch/jira/browse/SIGMON-198)
- do not crash: [SIGMON-145](https://its.cern.ch/jira/browse/SIGMON-145)
- update RB FPA SNAP: [SIGMON-145](https://its.cern.ch/jira/browse/SIGMON-145)
- AN_RB_PLI1.d2 updated: [SIGMON-225](https://its.cern.ch/jira/browse/SIGMON-225)
- ...: [SIGMON-82](https://its.cern.ch/jira/browse/SIGMON-82)
__version__ = "1.5.65"
__version__ = "1.5.66"
This source diff could not be displayed because it is too large. You can view the blob instead.
%% Cell type:code id:b935416f tags:
%% Cell type:code id:30037c48 tags:
 
``` python
"""Manual spark configuration based on the default Spark configuration from the NXCALS bundle
and https://gitlab.cern.ch/msobiesz/spark-pipelines/-/blob/master/NXCALS-example-for-DAaaS.ipynb.
Used unless the spark context is already created. (outside of SWAN service or pyspark)
"""
if 'spark' not in locals() and 'spark' not in globals():
import os
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
 
nxcals_jars = os.getenv('NXCALS_JARS')
conf = SparkConf()
conf.set('spark.master', 'yarn')
conf.set("spark.driver.host", "spark-runner.cern.ch")
conf.set("spark.driver.port", '5001')
conf.set("spark.blockManager.port", '5101')
conf.set("spark.ui.port", '5201')
conf.set('spark.executorEnv.PYTHONPATH', os.getenv('PYTHONPATH'))
conf.set('spark.executorEnv.LD_LIBRARY_PATH', os.getenv('LD_LIBRARY_PATH'))
conf.set('spark.executorEnv.JAVA_HOME', os.getenv('JAVA_HOME'))
conf.set('spark.executorEnv.SPARK_HOME', os.getenv('SPARK_HOME'))
conf.set('spark.executorEnv.SPARK_EXTRA_CLASSPATH', os.getenv('SPARK_DIST_CLASSPATH'))
conf.set('spark.driver.extraClassPath', nxcals_jars)
conf.set('spark.executor.extraClassPath', nxcals_jars)
conf.set('spark.driver.extraJavaOptions',
"-Dservice.url=https://cs-ccr-nxcals5.cern.ch:19093,https://cs-ccr-nxcals5.cern.ch:19094,"
"https://cs-ccr-nxcals6.cern.ch:19093,https://cs-ccr-nxcals6.cern.ch:19094,"
"https://cs-ccr-nxcals7.cern.ch:19093,https://cs-ccr-nxcals7.cern.ch:19094,"
"https://cs-ccr-nxcals8.cern.ch:19093,https://cs-ccr-nxcals8.cern.ch:19094,"
"https://cs-ccr-nxcalsstr4.cern.ch:19093,https://cs-ccr-nxcalsstr5.cern.ch:19093")
 
sc = SparkContext(conf=conf)
spark = SparkSession(sc)
```
 
%% Cell type:markdown id:c8908db1 tags:
%% Cell type:markdown id:832496cd tags:
 
<h1><center>Analysis of PLI3.d2 HWC Test in an RB Circuit</center></h1>
<img src="https://gitlab.cern.ch/LHCData/lhc-sm-hwc/raw/master/figures/rb/RB.png" width=75%>
 
The circuit is powered up to I_INTERM_2. After a short plateau a powering failure is simulated by the power converter. After a minute the EE system is activated by a quench simulation in a current lead.
The aim of this test is to verify the correct functionality of the PC when a powering failure is generated.
 
<img src="https://gitlab.cern.ch/LHCData/lhc-sm-hwc/raw/master/figures/rb/PLI3_current.png" width=50%>
 
The required analysis and signatures are listed below.
 
|Responsible|Type of analysis|Criterion|
|-----------|----------------|---------|
|PC|PC voltage check|PC voltage ~ -1.5 V ± 0.5 V, 1 s after the EE activation. The current decay time constant should be within 20% of Decay_Time_const. Smooth exponential waveform on the PC voltage and current during the whole decay|
|PC|Earth Current Analysis|The maximum earth current <50 mA during EE activation disregarding the peak at the opening of the EE system.|
|EE|Energy discharge|Maximum voltage on EE resistance ($R*I$±10%) and maximum temperature of the EE resistance (±10% from theoretical value)|
|EE|Energy discharge|Time delay on switch opening (300±50ms at odd point and 600±50ms at even point)|
 
source: Powering Procedure and Acceptance Criteria for the 13 kA Dipole Circuits, MP3 Procedure, <a href="https://edms.cern.ch/document/874713">https://edms.cern.ch/document/874713</a>
 
%% Cell type:markdown id:bf3a2c25 tags:
%% Cell type:markdown id:df3675f9 tags:
 
# Analysis Assumptions
- We consider standard analysis scenarios, i.e., all signals can be queried. If a signal is missing, an analysis can raise a warning and continue or an error and abort the analysis.
- It is recommended to execute each cell one after another. However, since the signals are queried prior to analysis, any order of execution is allowed. In case an analysis cell is aborted, the following ones may not be executed (e.g. I\_MEAS not present).
 
# Plot Convention
- Scales are labeled with signal name followed by a comma and a unit in square brackets, e.g., I_MEAS, [A].
- If a reference signal is present, it is represented with a dashed line.
- If the main current is present, its axis is on the left. Remaining signals are attached to the axis on the right. The legend of these signals is located on the lower left and upper right, respectively.
- The grid comes from the left axis.
- The title contains timestamp, circuit name, and signal name allowing to re-access the signal.
- The plots assigned to the left scale have colors: blue (C0) and orange (C1). Plots presented on the right have colors red (C2) and green (C3).
- Each plot has an individual time-synchronization mentioned explicitly in the description.
- If an axis has a single signal, then the color of the label matches the signal's color. Otherwise, the label color is black.
 
%% Cell type:markdown id:ff221b9b tags:
%% Cell type:markdown id:632ae929 tags:
 
# 0. Initialise Working Environment
 
%% Cell type:code id:bc9a3d46 tags:
%% Cell type:code id:0173423c tags:
 
``` python
# External libraries
print('Loading (1/11)'); import sys; import pandas as pd
print('Loading (2/11)'); from IPython.display import display, Javascript, clear_output
print('Loading (1/12)'); import sys; import pandas as pd
print('Loading (2/12)'); from IPython.display import display, Javascript, clear_output
 
# Internal libraries
print('Loading (3/11)'); import lhcsmapi
print('Loading (4/11)'); from lhcsmapi.Time import Time
print('Loading (5/11)'); from lhcsmapi.Timer import Timer
print('Loading (6/11)'); from lhcsmapi.analysis.RbCircuitQuery import RbCircuitQuery
print('Loading (7/11)'); from lhcsmapi.analysis.RbCircuitAnalysis import RbCircuitAnalysis
print('Loading (8/11)'); from lhcsmapi.analysis.report_template import apply_report_template
print('Loading (9/11)'); from lhcsmapi.gui.hwc.HwcSearchModuleMediator import HwcSearchModuleMediator
print('Loading (10/11)'); from lhcsmapi.pyedsl.PlotBuilder import create_hwc_plot_title_with_circuit_name
print('Loading (11/11)'); from lhcsmapi.analysis.expert_input import get_expert_decision
print('Loading (3/12)'); import lhcsmapi
print('Loading (4/12)'); from lhcsmapi.Time import Time
print('Loading (5/12)'); from lhcsmapi.Timer import Timer
print('Loading (6/12)'); from lhcsmapi.analysis.RbCircuitQuery import RbCircuitQuery
print('Loading (7/12)'); from lhcsmapi.analysis.RbCircuitAnalysis import RbCircuitAnalysis
print('Loading (8/12)'); from lhcsmapi.analysis.report_template import apply_report_template
print('Loading (9/12)'); from lhcsmapi.gui.hwc.HwcSearchModuleMediator import HwcSearchModuleMediator
print('Loading (10/12)'); from lhcsmapi.pyedsl.PlotBuilder import create_hwc_plot_title_with_circuit_name
print('Loading (11/12)'); from lhcsmapi.analysis.expert_input import get_expert_decision
print('Loading (12/12)'); import lhcsmnb.utils
 
clear_output()
lhcsmapi.get_lhcsmapi_version()
lhcsmapi.get_lhcsmhwc_version('../__init__.py')
print('Analysis performed by %s' % HwcSearchModuleMediator.get_user())
```
 
%%%% Output: stream
 
Analysis executed with lhc-sm-api version: 1.5.17
Analysis executed with lhc-sm-hwc notebooks version: 1.5.65
Analysis performed by root
 
%% Cell type:markdown id:b380918f tags:
%% Cell type:markdown id:6400f180 tags:
 
# 1. User Input
1. Copy code from AccTesting and paste into an empty cell below
<img src="https://gitlab.cern.ch/LHCData/lhc-sm-hwc/-/raw/master/figures/swan-manual-acctesting-integration.png">
 
- If you only want to test the notebook only for the copy&paste feature (without opening the AccTesting), please copy and execute the code below
```
hwc_test = 'PLI3.d2'
circuit_name = 'RB.A12'
campaign = 'HWC_2017'
t_start = '2017-04-22 13:22:37.202'
t_end = '2017-04-22 14:01:44.575'
```
 
2. To analyze a historical test with a browser GUI, copy and execute the following code in the cell below
```
circuit_type = 'RB'
hwc_test = 'PLI3.d2'
hwcb = HwcSearchModuleMediator(circuit_type=circuit_type, hwc_test=hwc_test, hwc_summary_path='/eos/project/l/lhcsm/hwc/HWC_Summary.csv')
```
 
- After opening the browser GUI, choose a circuit name in order to display HWC test with, campaign name as well as start and end time
 
%% Cell type:code id:ebfb9d0a tags:parameters
%% Cell type:code id:440b8696 tags:parameters
 
``` python
hwc_test = 'PLI3.d2'
circuit_name = 'RB.A34'
campaign= 'Recommissioning post LS2'
t_start = '2021-03-24 22:19:06.563000000'
t_end = '2021-03-24 22:44:23.159000000'
```
 
%% Cell type:code id:e9835fa4 tags:injected-parameters
%% Cell type:code id:a9a19a5f tags:injected-parameters
 
``` python
# Parameters
hwc_test = "PLI3.d2"
circuit_name = "RB.A34"
campaign = "Recommissioning post LS2"
t_start = "2021-03-24 22:19:06.563000000"
t_end = "2021-03-24 22:44:23.159000000"
is_automatic = True
parametrized_marker = None
```
 
%% Cell type:code id:6eefe1e2 tags:
%% Cell type:code id:f9793efc tags:
 
``` python
print('hwc_test = \'%s\'\ncircuit_name = \'%s\'\ncampaign = \'%s\'\nt_start = \'%s\'\nt_end = \'%s\'' % (hwc_test, circuit_name, campaign, t_start, t_end))
```
 
%%%% Output: stream
 
hwc_test = 'PLI3.d2'
circuit_name = 'RB.A34'
campaign = 'Recommissioning post LS2'
t_start = '2021-03-24 22:19:06.563000000'
t_end = '2021-03-24 22:44:23.159000000'
 
%% Cell type:markdown id:a28a3182 tags:
%% Cell type:markdown id:393eb965 tags:
 
# 2. Query All Signals Prior to Analysis
 
%% Cell type:code id:5782218c tags:skip_output
%% Cell type:code id:38a70510 tags:skip_output
 
``` python
circuit_type = 'RB'
 
if 'hwcb' in locals():
circuit_name = hwcb.get_circuit_name()
t_start = Time.to_unix_timestamp(hwcb.get_start_time())
t_end = Time.to_unix_timestamp(hwcb.get_end_time())
t_start_ref = Time.to_unix_timestamp(hwcb.get_ref_start_time())
t_end_ref = Time.to_unix_timestamp(hwcb.get_ref_end_time())
is_automatic = hwcb.is_automatic_mode()
else:
t_start = Time.to_unix_timestamp(t_start)
t_end = Time.to_unix_timestamp(t_end)
t_start_ref, t_end_ref = HwcSearchModuleMediator.get_last_ref_start_end_time('/eos/project/l/lhcsm/hwc/HWC_Summary.csv', circuit_name, hwc_test, Time.to_string_short(t_start))
print(t_start_ref, t_end_ref)
t_start_ref, t_end_ref = Time.to_unix_timestamp(t_start_ref), Time.to_unix_timestamp(t_end_ref)
is_automatic = False
 
rb_query = RbCircuitQuery(circuit_type, circuit_name, max_executions=30)
rb_analysis = RbCircuitAnalysis(circuit_type, results_table=None, is_automatic=is_automatic)
 
with Timer():
# PC
i_meas_nxcals_df = rb_query.query_signal_nxcals(t_start, t_end, t0=t_start, system='PC', signal_names='I_MEAS', spark=spark)[0]
 
source_timestamp_pc = rb_query.find_source_timestamp_pc(t_start, t_end)
timestamp_fgc = source_timestamp_pc.at[0, 'timestamp']
 
source_timestamp_pc_ref = rb_query.find_source_timestamp_pc(t_start_ref, t_end_ref)
timestamp_fgc_ref = source_timestamp_pc_ref.at[0, 'timestamp']
 
# PIC
timestamp_pic = rb_query.find_timestamp_pic(timestamp_fgc, spark=spark, duration=[(t_end-timestamp_fgc, 'ns')])
timestamp_pic_ref = rb_query.find_timestamp_pic(timestamp_fgc_ref, spark=spark, duration=[(t_end_ref-timestamp_fgc_ref, 'ns')])
i_a_df, i_ref_df = rb_query.query_pc_pm(timestamp_fgc, timestamp_fgc, signal_names=['I_A', 'I_REF'])
i_meas_df, i_earth_df, i_earth_pcnt_df, v_meas_df = rb_query.query_pc_pm(timestamp_fgc, min(timestamp_pic), signal_names=['I_MEAS', 'I_EARTH', 'I_EARTH_PCNT', 'V_MEAS'])
 
# PC Reference
i_meas_nxcals_pic_sync_df = rb_query.query_signal_nxcals(t_start, t_end, t0=min(timestamp_pic), system='PC', signal_names='I_MEAS', spark=spark)[0]
i_meas_nxcals_pic_sync_ref_df = rb_query.query_signal_nxcals(t_start_ref, t_end_ref, t0=min(timestamp_pic_ref), system='PC', signal_names='I_MEAS', spark=spark)[0]
if isinstance(t_start_ref, int):
source_timestamp_pc_ref = rb_query.find_source_timestamp_pc(t_start_ref, t_end_ref)
timestamp_fgc_ref = source_timestamp_pc_ref.at[0, 'timestamp']
else:
timestamp_fgc_ref = float('nan')
 
# PIC Reference
#timestamp_pic_ref = rb_query.find_timestamp_pic(timestamp_fgc_ref, spark=spark, duration=[(t_end_ref-timestamp_fgc_ref, 'ns')])
i_meas_ref_df = rb_query.query_pc_pm(timestamp_fgc_ref, min(timestamp_pic_ref), signal_names=['I_MEAS'])[0]
 
# EE Voltage
source_timestamp_ee_odd_df = rb_query.find_source_timestamp_ee(timestamp_fgc, system='EE_ODD')
timestamp_ee_odd = source_timestamp_ee_odd_df.loc[0, 'timestamp']
source_ee_odd = source_timestamp_ee_odd_df.loc[0, 'source']
timestamp_ee_odd = lhcsmnb.utils.get_at(source_timestamp_ee_odd_df, 0, 'timestamp')
source_ee_odd = lhcsmnb.utils.get_at(source_timestamp_ee_odd_df, 0, 'source')
u_dump_res_odd_df = rb_query.query_ee_u_dump_res_pm(timestamp_ee_odd, min(timestamp_pic), system='EE_ODD', signal_names=['U_DUMP_RES'])[0]
 
source_timestamp_ee_even_df = rb_query.find_source_timestamp_ee(timestamp_fgc, system='EE_EVEN')
timestamp_ee_even = source_timestamp_ee_even_df.loc[0, 'timestamp']
source_ee_even = source_timestamp_ee_even_df.loc[0, 'source']
timestamp_ee_even = lhcsmnb.utils.get_at(source_timestamp_ee_even_df, 0, 'timestamp')
source_ee_even = lhcsmnb.utils.get_at(source_timestamp_ee_even_df, 0, 'source')
u_dump_res_even_df = rb_query.query_ee_u_dump_res_pm(timestamp_ee_even, min(timestamp_pic), system='EE_EVEN', signal_names=['U_DUMP_RES'])[0]
 
# EE Temperature
t_res_odd_0_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_odd_df.loc[0, 'timestamp'], min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
t_res_odd_0_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_odd_df, 0, 'timestamp'), min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
if len(source_timestamp_ee_odd_df) > 1:
t_res_odd_1_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_odd_df.loc[1, 'timestamp'], min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
t_res_odd_1_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_odd_df, 1, 'timestamp'), min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
else:
t_res_odd_1_df = [pd.DataFrame(columns=['T_RES_BODY_1']), pd.DataFrame(columns=['T_RES_BODY_2']), pd.DataFrame(columns=['T_RES_BODY_3'])]
 
t_res_even_0_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_even_df.loc[0, 'timestamp'], min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
t_res_even_0_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_even_df, 0, 'timestamp'), min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
if len(source_timestamp_ee_even_df) > 1:
t_res_even_1_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_even_df.loc[1, 'timestamp'], min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
t_res_even_1_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_even_df, 1, 'timestamp'), min(timestamp_pic), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
else:
t_res_even_1_df = [pd.DataFrame(columns=['T_RES_BODY_1']), pd.DataFrame(columns=['T_RES_BODY_2']), pd.DataFrame(columns=['T_RES_BODY_3'])]
 
# EE Voltage Reference
if isinstance(t_start_ref, int):
source_timestamp_ee_odd_ref_df = rb_query.find_source_timestamp_ee(timestamp_fgc_ref, system='EE_ODD')
source_timestamp_ee_even_ref_df = rb_query.find_source_timestamp_ee(timestamp_fgc_ref, system='EE_EVEN')
 
u_dump_res_odd_ref_df = rb_query.query_ee_u_dump_res_pm(source_timestamp_ee_odd_ref_df.loc[0, 'timestamp'], min(timestamp_pic_ref), system='EE_ODD', signal_names=['U_DUMP_RES'])[0]
u_dump_res_odd_ref_df = rb_query.query_ee_u_dump_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_odd_ref_df, 0, 'timestamp'), min(timestamp_pic_ref), system='EE_ODD', signal_names=['U_DUMP_RES'])[0]
 
u_dump_res_even_ref_df = rb_query.query_ee_u_dump_res_pm(source_timestamp_ee_even_ref_df.loc[0, 'timestamp'], min(timestamp_pic_ref), system='EE_EVEN', signal_names=['U_DUMP_RES'])[0]
u_dump_res_even_ref_df = rb_query.query_ee_u_dump_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_even_ref_df, 0, 'timestamp'), min(timestamp_pic_ref), system='EE_EVEN', signal_names=['U_DUMP_RES'])[0]
 
# EE Temperature Reference
t_res_odd_0_ref_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_odd_ref_df.loc[0, 'timestamp'], min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
t_res_odd_0_ref_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_odd_ref_df, 0, 'timestamp'), min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
if len(source_timestamp_ee_odd_ref_df) > 1:
t_res_odd_1_ref_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_odd_ref_df.loc[1, 'timestamp'], min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
t_res_odd_1_ref_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_odd_ref_df, 1, 'timestamp'), min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_ODD')
else:
t_res_odd_1_ref_df = [pd.DataFrame(columns=['T_RES_BODY_1']), pd.DataFrame(columns=['T_RES_BODY_2']), pd.DataFrame(columns=['T_RES_BODY_3'])]
t_res_even_0_ref_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_even_ref_df.loc[0, 'timestamp'], min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
t_res_even_0_ref_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_even_ref_df, 0, 'timestamp'), min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
if len(source_timestamp_ee_even_ref_df) > 1:
t_res_even_1_ref_df = rb_query.query_ee_t_res_pm(source_timestamp_ee_even_ref_df.loc[1, 'timestamp'], min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
t_res_even_1_ref_df = rb_query.query_ee_t_res_pm(lhcsmnb.utils.get_at(source_timestamp_ee_even_ref_df, 1, 'timestamp'), min(timestamp_pic_ref), signal_names=['T_RES_BODY_1', 'T_RES_BODY_2', 'T_RES_BODY_3'], system='EE_EVEN')
else:
t_res_even_1_ref_df = [pd.DataFrame(columns=['T_RES_BODY_1']), pd.DataFrame(columns=['T_RES_BODY_2']), pd.DataFrame(columns=['T_RES_BODY_3'])]
 
# DFB
source_timestamp_leads_odd_df = rb_query.find_timestamp_leads(timestamp_fgc, 'LEADS_ODD')
t0 = t_start if source_timestamp_leads_odd_df.empty else timestamp_fgc
u_hts_odd_dfs = rb_query.query_leads(t0, source_timestamp_leads_odd_df, system='LEADS_ODD', signal_names=['U_HTS'], spark=spark, duration=[(t_end-t_start, 'ns')])
u_res_odd_dfs = rb_query.query_leads(t0, source_timestamp_leads_odd_df, system='LEADS_ODD', signal_names=['U_RES'], spark=spark, duration=[(t_end-t_start, 'ns')])
 
source_timestamp_leads_even_df = rb_query.find_timestamp_leads(timestamp_fgc, 'LEADS_EVEN')
t0 = t_start if source_timestamp_leads_even_df.empty else timestamp_fgc
u_hts_even_dfs = rb_query.query_leads(t_start, source_timestamp_leads_even_df, system='LEADS_EVEN', signal_names=['U_HTS'], spark=spark, duration=[(t_end-t_start, 'ns')])
u_res_even_dfs = rb_query.query_leads(t_start, source_timestamp_leads_even_df, system='LEADS_EVEN', signal_names=['U_RES'], spark=spark, duration=[(t_end-t_start, 'ns')])
 
timestamp_dct = {'FGC': timestamp_fgc, 'PIC': min(timestamp_pic), 'EE_EVEN': timestamp_ee_even, 'EE_ODD': timestamp_ee_odd, 'LEADS_ODD': source_timestamp_leads_odd_df, 'LEADS_EVEN': source_timestamp_leads_even_df}
```
 
%%%% Output: stream
 
2015-04-01 18:59:39.927 2015-04-01 19:24:08.540
 
%%%% Output: display_data
 
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: FGC, className: lhc_self_pmd, source: RPTE.UA43.RB.A34 from 2021-03-24 22:19:06.563 to 2021-03-24 22:44:23.159
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: FGC, className: 51_self_pmd, source: RPTE.UA43.RB.A34 from 2015-04-01 18:59:39.927 to 2015-04-01 19:24:08.540
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying NXCALS signal(s) RB.A34.EVEN:ST_ABORT_PIC, RB.A34.ODD:ST_ABORT_PIC from 2021-03-24 22:37:42.880 to 2021-03-24 22:44:23.159
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying NXCALS signal(s) RB.A34.EVEN:ST_ABORT_PIC, RB.A34.ODD:ST_ABORT_PIC from 2015-04-01 19:17:52.120 to 2015-04-01 19:24:08.540
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) STATUS.I_REF, IAB.I_A for system: RPTE.UA43.RB.A34, className: lhc_self_pmd, source: FGC at 2021-03-24 22:37:42.880
Querying PM event signal(s) IAB.I_A, STATUS.I_REF for system: RPTE.UA43.RB.A34, className: lhc_self_pmd, source: FGC at 2021-03-24 22:37:42.880
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) IEARTH.I_EARTH, STATUS.I_EARTH_PCNT, STATUS.I_MEAS, STATUS.V_MEAS for system: RPTE.UA43.RB.A34, className: lhc_self_pmd, source: FGC at 2021-03-24 22:37:42.880
Querying PM event signal(s) STATUS.I_MEAS, STATUS.I_EARTH_PCNT, IEARTH.I_EARTH, STATUS.V_MEAS for system: RPTE.UA43.RB.A34, className: lhc_self_pmd, source: FGC at 2021-03-24 22:37:42.880
 
%%%% Output: display_data
 
 
%%%% Output: display_data
 
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: FGC, className: 51_self_pmd, source: RPTE.UA43.RB.A34 from 2015-04-01 18:59:39.927 to 2015-04-01 19:24:08.540
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) STATUS.I_MEAS for system: RPTE.UA43.RB.A34, className: 51_self_pmd, source: FGC at 2015-04-01 19:17:52.120
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMSNRB, source: UJ33.RB.A34 from 2021-03-24 22:37:32.880 to 2021-03-24 22:54:22.880
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:U_DUMP_RES for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:43:06.046
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMSNRB, source: UA43.RB.A34 from 2021-03-24 22:37:32.880 to 2021-03-24 22:54:22.880
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:U_DUMP_RES for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:43:06.546
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:T_RES_BODY_1, UJ33.RB.A34:T_RES_BODY_2, UJ33.RB.A34:T_RES_BODY_3 for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:43:06.046
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:T_RES_BODY_1, UJ33.RB.A34:T_RES_BODY_2, UJ33.RB.A34:T_RES_BODY_3 for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:50:35.604
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:T_RES_BODY_2, UA43.RB.A34:T_RES_BODY_3, UA43.RB.A34:T_RES_BODY_1 for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:43:06.546
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:T_RES_BODY_2, UA43.RB.A34:T_RES_BODY_3, UA43.RB.A34:T_RES_BODY_1 for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2021-03-24 22:50:50.804
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMSNRB, source: UJ33.RB.A34 from 2015-04-01 19:17:42.120 to 2015-04-01 19:34:32.120
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMSNRB, source: UA43.RB.A34 from 2015-04-01 19:17:42.120 to 2015-04-01 19:34:32.120
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:U_DUMP_RES for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:19:39.046
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:U_DUMP_RES for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:19:39.262
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:T_RES_BODY_1, UJ33.RB.A34:T_RES_BODY_2, UJ33.RB.A34:T_RES_BODY_3 for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:19:39.046
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UJ33.RB.A34:T_RES_BODY_1, UJ33.RB.A34:T_RES_BODY_2, UJ33.RB.A34:T_RES_BODY_3 for system: UJ33.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:27:07.404
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:T_RES_BODY_2, UA43.RB.A34:T_RES_BODY_3, UA43.RB.A34:T_RES_BODY_1 for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:19:39.262
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) UA43.RB.A34:T_RES_BODY_2, UA43.RB.A34:T_RES_BODY_3, UA43.RB.A34:T_RES_BODY_1 for system: UA43.RB.A34, className: DQAMSNRB, source: QPS at 2015-04-01 19:27:14.204
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMGNDRBODD, source: RB.A34 from 2021-03-24 22:37:32.880 to 2021-03-24 22:44:22.880
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) DFLAS.7R3.RB.A34.LD4:U_HTS, DFLAS.7R3.RB.A34.LD3:U_HTS for system: RB.A34, className: DQAMGNDRBODD, source: QPS at 2021-03-24 22:43:06.012
Querying PM event signal(s) DFLAS.7R3.RB.A34.LD3:U_HTS, DFLAS.7R3.RB.A34.LD4:U_HTS for system: RB.A34, className: DQAMGNDRBODD, source: QPS at 2021-03-24 22:43:06.012
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) DFLAS.7R3.RB.A34.LD3:U_RES, DFLAS.7R3.RB.A34.LD4:U_RES for system: RB.A34, className: DQAMGNDRBODD, source: QPS at 2021-03-24 22:43:06.012
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event timestamps for system: QPS, className: DQAMGNDRBEVEN, source: RB.A34 from 2021-03-24 22:37:32.880 to 2021-03-24 22:44:22.880
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) DFLAS.7L4.RB.A34.LD2:U_HTS, DFLAS.7L4.RB.A34.LD1:U_HTS for system: RB.A34, className: DQAMGNDRBEVEN, source: QPS at 2021-03-24 22:43:06.807
Querying PM event signal(s) DFLAS.7L4.RB.A34.LD1:U_HTS, DFLAS.7L4.RB.A34.LD2:U_HTS for system: RB.A34, className: DQAMGNDRBEVEN, source: QPS at 2021-03-24 22:43:06.807
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
Querying PM event signal(s) DFLAS.7L4.RB.A34.LD1:U_RES, DFLAS.7L4.RB.A34.LD2:U_RES for system: RB.A34, className: DQAMGNDRBEVEN, source: QPS at 2021-03-24 22:43:06.807
Querying PM event signal(s) DFLAS.7L4.RB.A34.LD2:U_RES, DFLAS.7L4.RB.A34.LD1:U_RES for system: RB.A34, className: DQAMGNDRBEVEN, source: QPS at 2021-03-24 22:43:06.807
Elapsed: 91.205 s.
 
%%%% Output: stream
Elapsed: 96.163 s.
%% Cell type:markdown id:54412d77 tags:
%% Cell type:markdown id:12d8f23b tags:
 
# 3. Timestamps
 
%% Cell type:code id:56052869 tags:
%% Cell type:code id:e2dc0e92 tags:
 
``` python
rb_analysis.create_timestamp_table(timestamp_dct)
```
 
%%%% Output: display_data
 
 
%%%% Output: stream
 
FGC is the first timestamp, potentially a PC trip not a quench!
 
%% Cell type:markdown id:c20a7760 tags:
%% Cell type:markdown id:0dedeadc tags:
 
# 4. Power Converter
## 4.1. Plot of the Power Converter Main Current
 
*GRAPHS*:
 
- t = 0 s corresponds to the start of the test
 
%% Cell type:code id:d1ac0b64 tags:
%% Cell type:code id:f0587389 tags:
 
``` python
import matplotlib as mpl
mpl.rcParams['savefig.dpi'] = 80
mpl.rcParams['figure.dpi'] = 80
%matplotlib inline
title = create_hwc_plot_title_with_circuit_name(circuit_name=circuit_name, hwc_test=hwc_test, t_start=t_start, t_end=t_end, signal='I_MEAS')
rb_analysis.plot_i_meas(i_meas_nxcals_df, title=title)
```
 
%%%% Output: display_data
 
![](data:image/png;base64,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