Metadata
The Metadata (lhcsmapi.metadata) module contains methods to retrieve various signal and circuit names.
In order to avoid storing full names and enable updating signal names based on time. A signal hierarchy is encoded with a dictionary and can be accessed through links in the table below
1. Signal Metadata¶
SignalMetadata class stores information about signal and circuit names as well as corresponding metadata.
- get beam mode description
In [27]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_beam_mode_details()
Out[27]:
| Mode | Name | Description | |
|---|---|---|---|
| 0 | 1 | NOMODE | No mode, data is not available, not set |
| 1 | 2 | SETUP | Setup |
| 2 | 3 | INJPILOT | Pilot injection |
| 3 | 4 | INJINTR | Intermediate injection |
| 4 | 5 | INJNOMN | Nominal injection |
| 5 | 6 | PRERAMP | Before ramp |
| 6 | 7 | RAMP | Ramp |
| 7 | 8 | FLATTOP | Flat top |
| 8 | 9 | SQUEEZE | Squeeze |
| 9 | 10 | ADJUST | Adjust beam on flat top |
| 10 | 11 | STABLE | Stable beam for physics |
| 11 | 12 | UNSTABLE | Unstable beam |
| 12 | 13 | BEAMDUMP | Beam dump |
| 13 | 14 | RAMPDOWN | Ramp down |
| 14 | 15 | RECOVERY | Recovering |
| 15 | 16 | INJDUMP | Inject and dump |
| 16 | 17 | CIRCDUMP | Circulate and dump |
| 17 | 18 | ABORT | Recovery after a beam permit flag drop |
| 18 | 19 | CYCLING | Pre-cycle before injection, no beam |
| 19 | 20 | WBDUMP | Warning beam dump |
| 20 | 21 | NOBEAM | No beam or preparation for beam |
- get circuit types
In [28]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_circuit_types()
Out[28]:
['RB',
'RQ',
'IT',
'IPD2_B1B2',
'IPD2',
'IPQ2',
'IPQ4',
'IPQ8',
'600A',
'60A',
'80-120A']
- get circuit names
In [29]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_circuit_names('RB')
Out[29]:
['RB.A12',
'RB.A23',
'RB.A34',
'RB.A45',
'RB.A56',
'RB.A67',
'RB.A78',
'RB.A81']
- get signal name for PM
In [30]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_signal_name('RB', 'RB.A12', 'PC', 'PM', 'I_MEAS')
Out[30]:
'STATUS.I_MEAS'
- get signal name for CALS
In [31]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_signal_name('RB', 'RB.A12', 'PC', 'CALS', 'I_MEAS')
Out[31]:
'RPTE.UA23.RB.A12:I_MEAS'
- get signal name for NXCALS
In [32]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_signal_name('RB', 'RB.A12', 'PC', 'NXCALS', 'I_MEAS')
Out[32]:
'I_MEAS'
- get metadata for PM
In [33]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_circuit_signal_database_metadata('RB', 'RB.A12', 'PC', 'PM')
Out[33]:
{'system': 'FGC',
'source': 'RPTE.UA23.RB.A12',
'className': '51_self_pmd',
'I_REF': 'STATUS.I_REF',
'I_MEAS': 'STATUS.I_MEAS',
'V_REF': 'STATUS.V_REF',
'V_MEAS': 'STATUS.V_MEAS',
'I_EARTH': 'IEARTH.IEARTH',
'I_EARTH_PCNT': 'STATUS.I_EARTH_PCNT',
'I_A': 'IAB.I_A',
'I_B': 'IAB.I_B'}
- get metadata for NXCALS
In [34]:
from lhcsmapi.metadata.SignalMetadata import SignalMetadata
SignalMetadata.get_circuit_signal_database_metadata('RB', 'RB.A12', 'PC', 'NXCALS')
Out[34]:
{'system': 'CMW',
'device': 'RPTE.UA23.RB.A12',
'property': 'SUB',
'I_MEAS': 'I_MEAS'}
2. Mapping Metadata¶
Some signal names obtained with SignalMetadata functions have a wildcard in order to save space and exploit signal naming convention.
MappingMetadata class stores information about circuit topology, e.g., order and names of magnets in a particular circuit.
There is a collection of csv files containing circuit topology summarised in the table below.
- QPS crate name for a magnet
In [35]:
from lhcsmapi.metadata.MappingMetadata import MappingMetadata
MappingMetadata.get_crate_name_from_magnet_name('RB', 'MB.A16L2')
Out[35]:
'B16L2'
- QPS crates for RB
In [36]:
from lhcsmapi.metadata.MappingMetadata import MappingMetadata
MappingMetadata.get_crates_for_circuit_names('RB', 'RB.A12')
Out[36]:
['B8R1',
'B9R1',
'B10R1',
'B11R1',
'B12R1',
'B13R1',
'B14R1',
'B15R1',
'B16R1',
'B17R1',
'B18R1',
'B19R1',
'B20R1',
'B21R1',
'B22R1',
'B23R1',
'B24R1',
'B25R1',
'B26R1',
'B27R1',
'B28R1',
'B29R1',
'B30R1',
'B31R1',
'B32R1',
'B33R1',
'B34R1',
'B34L2',
'B33L2',
'B32L2',
'B31L2',
'B30L2',
'B29L2',
'B28L2',
'B27L2',
'B26L2',
'B25L2',
'B24L2',
'B23L2',
'B22L2',
'B21L2',
'B20L2',
'B19L2',
'B18L2',
'B17L2',
'B16L2',
'B15L2',
'B14L2',
'B13L2',
'B12L2',
'B11L2',
'B10L2',
'B9L2',
'B8L2']