Lattice

PS: Since phantasy is still under development, this notebook might be updated frequently.

Import modules/packages


In [1]:
import phantasy
import matplotlib.pyplot as plt
%matplotlib inline

Model Machine


In [2]:
mp = phantasy.MachinePortal(machine='FRIB_FLAME', segment='LINAC')


WARNING: 2017-05-31 14:16:58,149: phantasy.library.operation.core: Load new machine: FRIB_FLAME segment: LINAC

Inspect mp


In [3]:
mp.inspect_mconf()


machine config path  : /home/tong/FRIB/projects/machines/FRIB_FLAME/phyutil.ini
----------------------
machine name         : FRIB_FLAME
----------------------
All valid lattices   : LINAC LS1
----------------------
Section - COMMON
----------------------
root_data_dir        : ~/phantasy_data
segments             : LINAC LS1
default_segment      : LINAC
----------------------
Section - LINAC
----------------------
controls_protocol    : EPICS
s_end                : 158.094
config_file          : phyutil.cfg
impact_map           : ls1_fs1.map
s_begin              : 0.0
settings_file        : baseline_settings.json
model_data_dir       : model_data
cfs_tag              : FRIB.LINAC
cfs_property_names   : elem*
model                : flame
layout_file          : baseline_layout.csv
ss_url               : http://localhost:4810
loop                 : 0
cfs_url              : https://localhost:8181/ChannelFinder
----------------------
Section - LS1
----------------------
controls_protocol    : EPICS
s_end                : 80.000
config_file          : phyutil.cfg
s_begin              : 0.0
settings_file        : baseline_settings.json
cfs_tag              : phyutil.sys.LS1
cfs_property_names   : elem*
model                : flame
layout_file          : baseline_layout.csv
ss_url               : None
loop                 : 0
cfs_url              : https://localhost:8181/ChannelFinder
Out[3]:
{u'config': {'COMMON': {'default_segment': 'LINAC',
   'root_data_dir': '~/phantasy_data',
   'segments': 'LINAC LS1'},
  'LINAC': {'cfs_property_names': 'elem*',
   'cfs_tag': 'FRIB.LINAC',
   'cfs_url': 'https://localhost:8181/ChannelFinder',
   'config_file': 'phyutil.cfg',
   'controls_protocol': 'EPICS',
   'impact_map': 'ls1_fs1.map',
   'layout_file': 'baseline_layout.csv',
   'loop': '0',
   'model': 'flame',
   'model_data_dir': 'model_data',
   's_begin': '0.0',
   's_end': '158.094',
   'settings_file': 'baseline_settings.json',
   'ss_url': 'http://localhost:4810'},
  'LS1': {'cfs_property_names': 'elem*',
   'cfs_tag': 'phyutil.sys.LS1',
   'cfs_url': 'https://localhost:8181/ChannelFinder',
   'config_file': 'phyutil.cfg',
   'controls_protocol': 'EPICS',
   'layout_file': 'baseline_layout.csv',
   'loop': '0',
   'model': 'flame',
   's_begin': '0.0',
   's_end': '80.000',
   'settings_file': 'baseline_settings.json',
   'ss_url': 'None'}},
 u'lattices': ['LINAC', 'LS1'],
 u'machine': u'FRIB_FLAME',
 u'path': u'/home/tong/FRIB/projects/machines/FRIB_FLAME/phyutil.ini'}

Load another lattice (segment)


In [4]:
mp.load_lattice('LS1')
# Please note: 'LS1' maybe not consistent with the real configuration, just for demonstration.
# The configuration for 'LS1' segment should be updated.


WARNING: 2017-05-31 14:16:59,526: phantasy.library.operation.core: Load new machine: FRIB_FLAME segment: LS1
Out[4]:
{u'lat0name': 'LS1', u'lattices': {'LS1': #name of segment: LS1
  #index         name         family     position   length    
  0   LS1_CA01:CAV1_D1127 CAV  0.2071     0.2400    
  1   LS1_CA01:BPM_D1129  BPM  0.5113     0.0000    
  2   LS1_CA01:SOL1_D1131 SOL  0.6433     0.2000    
  3   LS1_CA01:DCV_D1131  VCOR 0.7433     0.0000    
  4   LS1_CA01:DCH_D1131  HCOR 0.7433     0.0000    
  5   LS1_CA01:CAV2_D1135 CAV  0.9867     0.2400    
  6   LS1_CA01:CAV3_D1143 CAV  1.7664     0.2400    
  7   LS1_CA01:BPM_D1144  BPM  2.0706     0.0000    
  8   LS1_CA01:SOL2_D1147 SOL  2.2026     0.2000    
  9   LS1_CA01:DCH_D1147  HCOR 2.3026     0.0000    
  10  LS1_CA01:DCV_D1147  VCOR 2.3026     0.0000    
  11  LS1_CA01:CAV4_D1150 CAV  2.5460     0.2400    
  12  LS1_WA01:BPM_D1155  BPM  3.1091     0.0000    
  13  LS1_CA02:CAV1_D1161 CAV  3.5802     0.2400    
  14  LS1_CA02:BPM_D1163  BPM  3.8844     0.0000    
  15  LS1_CA02:SOL1_D1165 SOL  4.0164     0.2000    
  16  LS1_CA02:DCV_D1165  VCOR 4.1164     0.0000    
  17  LS1_CA02:DCH_D1165  HCOR 4.1164     0.0000    
  18  LS1_CA02:CAV2_D1169 CAV  4.3598     0.2400    
  19  LS1_CA02:CAV3_D1176 CAV  5.1395     0.2400    
  20  LS1_CA02:BPM_D1178  BPM  5.4437     0.0000    
  21  LS1_CA02:SOL2_D1180 SOL  5.5757     0.2000    
  22  LS1_CA02:DCV_D1180  VCOR 5.6757     0.0000    
  23  LS1_CA02:DCH_D1180  HCOR 5.6757     0.0000    
  24  LS1_CA02:CAV4_D1184 CAV  5.9191     0.2400    
  25  LS1_WA02:BPM_D1189  BPM  6.4822     0.0000    
  26  LS1_CA03:CAV1_D1194 CAV  6.9533     0.2400    
  27  LS1_CA03:BPM_D1196  BPM  7.2575     0.0000    
  28  LS1_CA03:SOL1_D1199 SOL  7.3895     0.2000    
  29  LS1_CA03:DCV_D1199  VCOR 7.4895     0.0000    
  30  LS1_CA03:DCH_D1199  HCOR 7.4895     0.0000    
  31  LS1_CA03:CAV2_D1202 CAV  7.7329     0.2400    
  32  LS1_CA03:CAV3_D1210 CAV  8.5126     0.2400    
  33  LS1_CA03:BPM_D1212  BPM  8.8168     0.0000    
  34  LS1_CA03:SOL2_D1214 SOL  8.9488     0.2000    
  35  LS1_CA03:DCH_D1214  HCOR 9.0488     0.0000    
  36  LS1_CA03:DCV_D1214  VCOR 9.0488     0.0000    
  37  LS1_CA03:CAV4_D1218 CAV  9.2922     0.2400    
  38  LS1_WA03:BPM_D1222  BPM  9.8553     0.0000    
  39  LS1_WA03:PM_D1223   PM   9.9293     0.0000    
  40  LS1_CB01:CAV1_D1229 CAV  10.3666    0.3000    
  41  LS1_CB01:BPM_D1231  BPM  10.7622    0.0000    
  42  LS1_CB01:SOL1_D1235 SOL  10.8942    0.5000    
  43  LS1_CB01:DCV_D1235  VCOR 11.1442    0.0000    
  44  LS1_CB01:DCH_D1235  HCOR 11.1442    0.0000    
  45  LS1_CB01:CAV2_D1241 CAV  11.5689    0.3000    
  46  LS1_CB01:CAV3_D1245 CAV  11.9666    0.3000    
  47  LS1_CB01:CAV4_D1249 CAV  12.3643    0.3000    
  48  LS1_CB01:BPM_D1251  BPM  12.7599    0.0000    
  49  LS1_CB01:SOL2_D1255 SOL  12.8919    0.5000    
  50  LS1_CB01:DCV_D1255  VCOR 13.1419    0.0000    
  51  LS1_CB01:DCH_D1255  HCOR 13.1419    0.0000    
  52  LS1_CB01:CAV5_D1261 CAV  13.5667    0.3000    
  53  LS1_CB01:CAV6_D1265 CAV  13.9644    0.3000    
  54  LS1_CB01:CAV7_D1269 CAV  14.3620    0.3000    
  55  LS1_CB01:BPM_D1271  BPM  14.7576    0.0000    
  56  LS1_CB01:SOL3_D1275 SOL  14.8897    0.5000    
  57  LS1_CB01:DCH_D1275  HCOR 15.1397    0.0000    
  58  LS1_CB01:DCV_D1275  VCOR 15.1397    0.0000    
  59  LS1_CB01:CAV8_D1281 CAV  15.5644    0.3000    
  60  LS1_WB01:BPM_D1286  BPM  16.2277    0.0000    
  61  LS1_WB01:PM_D1287   PM   16.3017    0.0000    
  62  LS1_CB02:CAV1_D1293 CAV  16.7390    0.3000    
  63  LS1_CB02:BPM_D1295  BPM  17.1346    0.0000    
  64  LS1_CB02:SOL1_D1299 SOL  17.2666    0.5000    
  65  LS1_CB02:DCV_D1299  VCOR 17.5166    0.0000    
  66  LS1_CB02:DCH_D1299  HCOR 17.5166    0.0000    
  67  LS1_CB02:CAV2_D1305 CAV  17.9414    0.3000    
  68  LS1_CB02:CAV3_D1309 CAV  18.3391    0.3000    
  69  LS1_CB02:CAV4_D1313 CAV  18.7367    0.3000    
  70  LS1_CB02:BPM_D1315  BPM  19.1323    0.0000    
  71  LS1_CB02:SOL2_D1319 SOL  19.2644    0.5000    
  72  LS1_CB02:DCH_D1319  HCOR 19.5144    0.0000    
  73  LS1_CB02:DCV_D1319  VCOR 19.5144    0.0000    
  74  LS1_CB02:CAV5_D1325 CAV  19.9391    0.3000    
  75  LS1_CB02:CAV6_D1329 CAV  20.3368    0.3000    
  76  LS1_CB02:CAV7_D1333 CAV  20.7345    0.3000    
  77  LS1_CB02:BPM_D1335  BPM  21.1301    0.0000    
  78  LS1_CB02:SOL3_D1339 SOL  21.2621    0.5000    
  79  LS1_CB02:DCV_D1339  VCOR 21.5121    0.0000    
  80  LS1_CB02:DCH_D1339  HCOR 21.5121    0.0000    
  81  LS1_CB02:CAV8_D1345 CAV  21.9368    0.3000    
  82  LS1_WB02:BPM_D1350  BPM  22.6001    0.0000    
  83  LS1_WB02:PM_D1350   PM   22.6741    0.0000    
  84  LS1_CB03:CAV1_D1356 CAV  23.1114    0.3000    
  85  LS1_CB03:BPM_D1359  BPM  23.5070    0.0000    
  86  LS1_CB03:SOL1_D1363 SOL  23.6391    0.5000    
  87  LS1_CB03:DCH_D1363  HCOR 23.8891    0.0000    
  88  LS1_CB03:DCV_D1363  VCOR 23.8891    0.0000    
  89  LS1_CB03:CAV2_D1368 CAV  24.3138    0.3000    
  90  LS1_CB03:CAV3_D1372 CAV  24.7115    0.3000    
  91  LS1_CB03:CAV4_D1376 CAV  25.1092    0.3000    
  92  LS1_CB03:BPM_D1379  BPM  25.5048    0.0000    
  93  LS1_CB03:SOL2_D1383 SOL  25.6368    0.5000    
  94  LS1_CB03:DCH_D1383  HCOR 25.8868    0.0000    
  95  LS1_CB03:DCV_D1383  VCOR 25.8868    0.0000    
  96  LS1_CB03:CAV5_D1388 CAV  26.3115    0.3000    
  97  LS1_CB03:CAV6_D1392 CAV  26.7092    0.3000    
  98  LS1_CB03:CAV7_D1396 CAV  27.1069    0.3000    
  99  LS1_CB03:BPM_D1399  BPM  27.5025    0.0000    
  100 LS1_CB03:SOL3_D1403 SOL  27.6345    0.5000    
  101 LS1_CB03:DCV_D1403  VCOR 27.8845    0.0000    
  102 LS1_CB03:DCH_D1403  HCOR 27.8845    0.0000    
  103 LS1_CB03:CAV8_D1408 CAV  28.3092    0.3000    
  104 LS1_WB03:BPM_D1413  BPM  28.9726    0.0000    
  105 LS1_WB03:PM_D1414   PM   29.0466    0.0000    
  106 LS1_CB04:CAV1_D1420 CAV  29.4839    0.3000    
  107 LS1_CB04:BPM_D1423  BPM  29.8795    0.0000    
  108 LS1_CB04:SOL1_D1426 SOL  30.0115    0.5000    
  109 LS1_CB04:DCH_D1426  HCOR 30.2615    0.0000    
  110 LS1_CB04:DCV_D1426  VCOR 30.2615    0.0000    
  111 LS1_CB04:CAV2_D1432 CAV  30.6862    0.3000    
  112 LS1_CB04:CAV3_D1436 CAV  31.0839    0.3000    
  113 LS1_CB04:CAV4_D1440 CAV  31.4816    0.3000    
  114 LS1_CB04:BPM_D1442  BPM  31.8772    0.0000    
  115 LS1_CB04:SOL2_D1446 SOL  32.0092    0.5000    
  116 LS1_CB04:DCH_D1446  HCOR 32.2592    0.0000    
  117 LS1_CB04:DCV_D1446  VCOR 32.2592    0.0000    
  118 LS1_CB04:CAV5_D1452 CAV  32.6839    0.3000    
  119 LS1_CB04:CAV6_D1456 CAV  33.0816    0.3000    
  120 LS1_CB04:CAV7_D1460 CAV  33.4793    0.3000    
  121 LS1_CB04:BPM_D1462  BPM  33.8749    0.0000    
  122 LS1_CB04:SOL3_D1466 SOL  34.0069    0.5000    
  123 LS1_CB04:DCV_D1466  VCOR 34.2569    0.0000    
  124 LS1_CB04:DCH_D1466  HCOR 34.2569    0.0000    
  125 LS1_CB04:CAV8_D1472 CAV  34.6817    0.3000    
  126 LS1_WB04:BPM_D1477  BPM  35.3450    0.0000    
  127 LS1_CB05:CAV1_D1484 CAV  35.8563    0.3000    
  128 LS1_CB05:BPM_D1486  BPM  36.2519    0.0000    
  129 LS1_CB05:SOL1_D1490 SOL  36.3839    0.5000    
  130 LS1_CB05:DCV_D1490  VCOR 36.6339    0.0000    
  131 LS1_CB05:DCH_D1490  HCOR 36.6339    0.0000    
  132 LS1_CB05:CAV2_D1496 CAV  37.0586    0.3000    
  133 LS1_CB05:CAV3_D1500 CAV  37.4563    0.3000    
  134 LS1_CB05:CAV4_D1504 CAV  37.8540    0.3000    
  135 LS1_CB05:BPM_D1506  BPM  38.2496    0.0000    
  136 LS1_CB05:SOL2_D1510 SOL  38.3816    0.5000    
  137 LS1_CB05:DCH_D1510  HCOR 38.6316    0.0000    
  138 LS1_CB05:DCV_D1510  VCOR 38.6316    0.0000    
  139 LS1_CB05:CAV5_D1516 CAV  39.0564    0.3000    
  140 LS1_CB05:CAV6_D1520 CAV  39.4541    0.3000    
  141 LS1_CB05:CAV7_D1524 CAV  39.8517    0.3000    
  142 LS1_CB05:BPM_D1526  BPM  40.2473    0.0000    
  143 LS1_CB05:SOL3_D1530 SOL  40.3794    0.5000    
  144 LS1_CB05:DCH_D1530  HCOR 40.6294    0.0000    
  145 LS1_CB05:DCV_D1530  VCOR 40.6294    0.0000    
  146 LS1_CB05:CAV8_D1536 CAV  41.0541    0.3000    
  147 LS1_WB05:BPM_D1541  BPM  41.7174    0.0000    
  148 LS1_CB06:CAV1_D1548 CAV  42.2287    0.3000    
  149 LS1_CB06:BPM_D1550  BPM  42.6243    0.0000    
  150 LS1_CB06:SOL1_D1554 SOL  42.7563    0.5000    
  151 LS1_CB06:DCV_D1554  VCOR 43.0063    0.0000    
  152 LS1_CB06:DCH_D1554  HCOR 43.0063    0.0000    
  153 LS1_CB06:CAV2_D1560 CAV  43.4311    0.3000    
  154 LS1_CB06:CAV3_D1564 CAV  43.8288    0.3000    
  155 LS1_CB06:CAV4_D1567 CAV  44.2264    0.3000    
  156 LS1_CB06:BPM_D1570  BPM  44.6220    0.0000    
  157 LS1_CB06:SOL2_D1574 SOL  44.7541    0.5000    
  158 LS1_CB06:DCH_D1574  HCOR 45.0041    0.0000    
  159 LS1_CB06:DCV_D1574  VCOR 45.0041    0.0000    
  160 LS1_CB06:CAV5_D1580 CAV  45.4288    0.3000    
  161 LS1_CB06:CAV6_D1583 CAV  45.8265    0.3000    
  162 LS1_CB06:CAV7_D1587 CAV  46.2242    0.3000    
  163 LS1_CB06:BPM_D1590  BPM  46.6198    0.0000    
  164 LS1_CB06:SOL3_D1594 SOL  46.7518    0.5000    
  165 LS1_CB06:DCH_D1594  HCOR 47.0018    0.0000    
  166 LS1_CB06:DCV_D1594  VCOR 47.0018    0.0000    
  167 LS1_CB06:CAV8_D1599 CAV  47.4265    0.3000    
  168 LS1_WB06:BPM_D1605  BPM  48.0898    0.0000    
  169 LS1_CB07:CAV1_D1611 CAV  48.6011    0.3000    
  170 LS1_CB07:BPM_D1614  BPM  48.9967    0.0000    
  171 LS1_CB07:SOL1_D1618 SOL  49.1288    0.5000    
  172 LS1_CB07:DCH_D1618  HCOR 49.3788    0.0000    
  173 LS1_CB07:DCV_D1618  VCOR 49.3788    0.0000    
  174 LS1_CB07:CAV2_D1623 CAV  49.8035    0.3000    
  175 LS1_CB07:CAV3_D1627 CAV  50.2012    0.3000    
  176 LS1_CB07:CAV4_D1631 CAV  50.5989    0.3000    
  177 LS1_CB07:BPM_D1634  BPM  50.9945    0.0000    
  178 LS1_CB07:SOL2_D1637 SOL  51.1265    0.5000    
  179 LS1_CB07:DCH_D1637  HCOR 51.3765    0.0000    
  180 LS1_CB07:DCV_D1637  VCOR 51.3765    0.0000    
  181 LS1_CB07:CAV5_D1643 CAV  51.8012    0.3000    
  182 LS1_CB07:CAV6_D1647 CAV  52.1989    0.3000    
  183 LS1_CB07:CAV7_D1651 CAV  52.5966    0.3000    
  184 LS1_CB07:BPM_D1654  BPM  52.9922    0.0000    
  185 LS1_CB07:SOL3_D1657 SOL  53.1242    0.5000    
  186 LS1_CB07:DCH_D1657  HCOR 53.3742    0.0000    
  187 LS1_CB07:DCV_D1657  VCOR 53.3742    0.0000    
  188 LS1_CB07:CAV8_D1663 CAV  53.7989    0.3000    
  189 LS1_WB07:BPM_D1668  BPM  54.4623    0.0000    
  190 LS1_CB08:CAV1_D1675 CAV  54.9736    0.3000    
  191 LS1_CB08:BPM_D1677  BPM  55.3692    0.0000    
  192 LS1_CB08:SOL1_D1681 SOL  55.5012    0.5000    
  193 LS1_CB08:DCH_D1681  HCOR 55.7512    0.0000    
  194 LS1_CB08:DCV_D1681  VCOR 55.7512    0.0000    
  195 LS1_CB08:CAV2_D1687 CAV  56.1759    0.3000    
  196 LS1_CB08:CAV3_D1691 CAV  56.5736    0.3000    
  197 LS1_CB08:CAV4_D1695 CAV  56.9713    0.3000    
  198 LS1_CB08:BPM_D1697  BPM  57.3669    0.0000    
  199 LS1_CB08:SOL2_D1701 SOL  57.4989    0.5000    
  200 LS1_CB08:DCV_D1701  VCOR 57.7489    0.0000    
  201 LS1_CB08:DCH_D1701  HCOR 57.7489    0.0000    
  202 LS1_CB08:CAV5_D1707 CAV  58.1736    0.3000    
  203 LS1_CB08:CAV6_D1711 CAV  58.5713    0.3000    
  204 LS1_CB08:CAV7_D1715 CAV  58.9690    0.3000    
  205 LS1_CB08:BPM_D1717  BPM  59.3646    0.0000    
  206 LS1_CB08:SOL3_D1721 SOL  59.4966    0.5000    
  207 LS1_CB08:DCH_D1721  HCOR 59.7466    0.0000    
  208 LS1_CB08:DCV_D1721  VCOR 59.7466    0.0000    
  209 LS1_CB08:CAV8_D1727 CAV  60.1714    0.3000    
  210 LS1_WB08:BPM_D1732  BPM  60.8347    0.0000    
  211 LS1_CB09:CAV1_D1739 CAV  61.3460    0.3000    
  212 LS1_CB09:BPM_D1741  BPM  61.7416    0.0000    
  213 LS1_CB09:SOL1_D1745 SOL  61.8736    0.5000    
  214 LS1_CB09:DCV_D1745  VCOR 62.1236    0.0000    
  215 LS1_CB09:DCH_D1745  HCOR 62.1236    0.0000    
  216 LS1_CB09:CAV2_D1751 CAV  62.5483    0.3000    
  217 LS1_CB09:CAV3_D1755 CAV  62.9460    0.3000    
  218 LS1_CB09:CAV4_D1759 CAV  63.3437    0.3000    
  219 LS1_CB09:BPM_D1761  BPM  63.7393    0.0000    
  220 LS1_CB09:SOL2_D1765 SOL  63.8713    0.5000    
  221 LS1_CB09:DCH_D1765  HCOR 64.1213    0.0000    
  222 LS1_CB09:DCV_D1765  VCOR 64.1213    0.0000    
  223 LS1_CB09:CAV5_D1771 CAV  64.5461    0.3000    
  224 LS1_CB09:CAV6_D1775 CAV  64.9438    0.3000    
  225 LS1_CB09:CAV7_D1779 CAV  65.3414    0.3000    
  226 LS1_CB09:BPM_D1781  BPM  65.7370    0.0000    
  227 LS1_CB09:SOL3_D1785 SOL  65.8691    0.5000    
  228 LS1_CB09:DCV_D1785  VCOR 66.1191    0.0000    
  229 LS1_CB09:DCH_D1785  HCOR 66.1191    0.0000    
  230 LS1_CB09:CAV8_D1791 CAV  66.5438    0.3000    
  231 LS1_WB09:BPM_D1796  BPM  67.2071    0.0000    
  232 LS1_CB10:CAV1_D1802 CAV  67.7184    0.3000    
  233 LS1_CB10:BPM_D1805  BPM  68.1140    0.0000    
  234 LS1_CB10:SOL1_D1809 SOL  68.2460    0.5000    
  235 LS1_CB10:DCH_D1809  HCOR 68.4960    0.0000    
  236 LS1_CB10:DCV_D1809  VCOR 68.4960    0.0000    
  237 LS1_CB10:CAV2_D1814 CAV  68.9208    0.3000    
  238 LS1_CB10:CAV3_D1818 CAV  69.3185    0.3000    
  239 LS1_CB10:CAV4_D1822 CAV  69.7161    0.3000    
  240 LS1_CB10:BPM_D1825  BPM  70.1117    0.0000    
  241 LS1_CB10:SOL2_D1829 SOL  70.2438    0.5000    
  242 LS1_CB10:DCH_D1829  HCOR 70.4938    0.0000    
  243 LS1_CB10:DCV_D1829  VCOR 70.4938    0.0000    
  244 LS1_CB10:CAV5_D1834 CAV  70.9185    0.3000    
  245 LS1_CB10:CAV6_D1838 CAV  71.3162    0.3000    
  246 LS1_CB10:CAV7_D1842 CAV  71.7139    0.3000    
  247 LS1_CB10:BPM_D1845  BPM  72.1095    0.0000    
  248 LS1_CB10:SOL3_D1849 SOL  72.2415    0.5000    
  249 LS1_CB10:DCV_D1849  VCOR 72.4915    0.0000    
  250 LS1_CB10:DCH_D1849  HCOR 72.4915    0.0000    
  251 LS1_CB10:CAV8_D1854 CAV  72.9162    0.3000    
  252 LS1_WB10:BPM_D1860  BPM  73.5795    0.0000    
  253 LS1_CB11:CAV1_D1866 CAV  74.0908    0.3000    
  254 LS1_CB11:BPM_D1869  BPM  74.4864    0.0000    
  255 LS1_CB11:SOL1_D1872 SOL  74.6185    0.5000    
  256 LS1_CB11:DCH_D1872  HCOR 74.8685    0.0000    
  257 LS1_CB11:DCV_D1872  VCOR 74.8685    0.0000    
  258 LS1_CB11:CAV2_D1878 CAV  75.2932    0.3000    
  259 LS1_CB11:CAV3_D1882 CAV  75.6909    0.3000    
  260 LS1_CB11:CAV4_D1886 CAV  76.0886    0.3000    
  261 LS1_CB11:BPM_D1889  BPM  76.4842    0.0000    
  262 LS1_CB11:SOL2_D1892 SOL  76.6162    0.5000    
  263 LS1_CB11:DCH_D1892  HCOR 76.8662    0.0000    
  264 LS1_CB11:DCV_D1892  VCOR 76.8662    0.0000    
  265 LS1_CB11:CAV5_D1898 CAV  77.2909    0.3000    
  266 LS1_CB11:CAV6_D1902 CAV  77.6886    0.3000    
  267 LS1_CB11:CAV7_D1906 CAV  78.0863    0.3000    
  268 LS1_CB11:BPM_D1909  BPM  78.4819    0.0000    
  269 LS1_CB11:SOL3_D1912 SOL  78.6139    0.5000    
  270 LS1_CB11:DCV_D1912  VCOR 78.8639    0.0000    
  271 LS1_CB11:DCH_D1912  HCOR 78.8639    0.0000    
  272 LS1_CB11:CAV8_D1918 CAV  79.2886    0.3000    
  273 LS1_WB11:BPM_D1923  BPM  79.9520    0.0000    
  274 LS1_BTS:DCH_D1937   HCOR 81.3660    0.0000    
  275 LS1_BTS:DCV_D1937   VCOR 81.3660    0.0000    
  276 LS1_BTS:QH_D1942    QUAD 81.7160    0.2500    
  277 LS1_BTS:QV_D1950    QUAD 82.4660    0.2500    
  278 LS1_BTS:DCH_D1964   HCOR 84.0140    0.0000    
  279 LS1_BTS:DCV_D1964   VCOR 84.0140    0.0000    
  280 LS1_BTS:BPM_D1966   BPM  84.1830    0.1370    
  281 LS1_BTS:QH_D1969    QUAD 84.3640    0.2500    
  282 LS1_BTS:QV_D1976    QUAD 85.1140    0.2500    
  283 LS1_BTS:BPM_D1980   BPM  85.6000    0.0000    
  284 LS1_BTS:DCV_D1997   VCOR 87.3490    0.0000    
  285 LS1_BTS:DCH_D1997   HCOR 87.3490    0.0000    
  286 LS1_BTS:QH_D2002    QUAD 87.6990    0.2500    
  287 LS1_BTS:QV_D2013    QUAD 88.8352    0.2500    
  288 LS1_BTS:DCV_D2024   VCOR 90.0552    0.0000    
  289 LS1_BTS:DCH_D2024   HCOR 90.0552    0.0000    
  290 LS1_BTS:BPM_D2027   BPM  90.2242    0.1370    
  291 LS1_BTS:QH_D2029    QUAD 90.4052    0.2500    
  292 LS1_BTS:QV_D2042    QUAD 91.7414    0.2500    
  293 LS1_BTS:BPM_D2049   BPM  92.5674    0.0000    
  294 LS1_BTS:PM_D2050    PM   92.6414    0.0000    
  295 LS1_BTS:DCV_D2061   VCOR 93.7105    0.0000    
  296 LS1_BTS:DCH_D2061   HCOR 93.7105    0.0000    
  297 LS1_BTS:QV_D2066    QUAD 94.0605    0.2500    
  298 LS1_BTS:QH_D2073    QUAD 94.8105    0.2500    
  299 LS1_CH01:CAV1_D2085 CAV  96.0075    0.3000    
  300 LS1_CH01:CAV2_D2089 CAV  96.4052    0.3000    
  301 LS1_CH01:CAV3_D2096 CAV  97.1003    0.3000    
  302 LS1_CH01:CAV4_D2100 CAV  97.4980    0.3000    
  303 LS1_BTS:DCV_D2114   VCOR 98.9856    0.0000    
  304 LS1_BTS:DCH_D2114   HCOR 98.9856    0.0000    
  305 LS1_BTS:BPM_D2116   BPM  99.1546    0.1370    
  306 LS1_BTS:QV_D2118    QUAD 99.3356    0.2500    
  307 LS1_BTS:QH_D2126    QUAD 100.0856   0.2500    
  308 LS1_BTS:BPM_D2132   BPM  100.8670   0.0000    
  309 LS1_BTS:PM_D2133    PM   100.9410   0.0000    }, u'machconf': <phantasy.library.parser.config.Configuration instance at 0x7f0d14d017a0>, u'machname': 'FRIB_FLAME', u'machpath': '/home/tong/FRIB/projects/machines/FRIB_FLAME'}

List all loaded lattices


In [5]:
mp.lattice_names


Out[5]:
['LINAC', 'LS1']

In [6]:
# Current working lattice:
mp.work_lattice_name


Out[6]:
'LS1'

In [7]:
# Switch lattice to 'LINAC'
mp.use_lattice('LINAC')


Out[7]:
'LINAC'

In [8]:
# Current working lattice now:
mp.work_lattice_name


Out[8]:
'LINAC'

Currently (phantasy of version 0.5.0), one can operate lattice by explicitly getting working lattice, The future plan is most operation should be able to reach through MachinePortal.

Get working lattice


In [9]:
lat = mp.work_lattice_conf

Inspect lattice


In [10]:
print("Lattice name   : %s" % lat.name)
print("Machine name   : %s" % lat.mname)
print("Lattice groups : %s" % lat.group.keys())
## more to be shown, not final version.


Lattice name   : LINAC
Machine name   : FRIB_FLAME
Lattice groups : [u'BPM', u'HCOR', u'CAV', u'SOL', u'VCOR', u'SEXT', u'BEND', u'QUAD', u'PM']

Locate Elements

Two methods (to date) could be used to locate elements: get_elements() and next_elements().

get_elements()


In [11]:
# Invalid name:
lat.get_elements(name='NOEXISTS')


Out[11]:
[]

In [12]:
# name:
lat.get_elements(name='FS1_BMS:DCV_D2662')


Out[12]:
[FS1_BMS:DCV_D2662 [VCOR] @ sb=153.794690]

In [13]:
# name pattern
lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'])


Out[13]:
[LS1_BTS:DCV_D1937 [VCOR] @ sb=81.365954,
 LS1_BTS:DCV_D1964 [VCOR] @ sb=84.013954,
 LS1_BTS:DCV_D1997 [VCOR] @ sb=87.348954,
 LS1_BTS:DCV_D2024 [VCOR] @ sb=90.055166,
 LS1_BTS:DCV_D2061 [VCOR] @ sb=93.710487,
 LS1_BTS:DCV_D2114 [VCOR] @ sb=98.985556,
 FS1_BMS:DCH_D2662 [HCOR] @ sb=153.794690,
 FS1_BMS:DCV_D2662 [VCOR] @ sb=153.794690,
 FS1_BMS:BPM_D2664 [BPM] @ sb=153.963690,
 FS1_BMS:QH_D2666 [QUAD] @ sb=154.144690]

In [14]:
# multiple filters, e.g. type:
lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'], type='BPM')
assert lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'], type='BPM') == \
       lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'], type='BP?')

In [15]:
# with hybrid types:
lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'], type=['BPM', 'QUAD'])


Out[15]:
[FS1_BMS:BPM_D2664 [BPM] @ sb=153.963690,
 FS1_BMS:QH_D2666 [QUAD] @ sb=154.144690]

In [16]:
# get sub-lattice regarding to s-position range:
lat.get_elements(srange=(10, 11))


Out[16]:
[LS1_CB01:CAV1_D1229 [CAV] @ sb=10.366596,
 LS1_CB01:BPM_D1231 [BPM] @ sb=10.762191,
 LS1_CB01:SOL1_D1235 [SOL] @ sb=10.894207]

In [17]:
# multiple filters with srange:
lat.get_elements(name=['FS1_B?*D266?', 'LS1_B*DCV*'], type=['BPM', 'QUAD'], srange=(154, 155))


Out[17]:
[FS1_BMS:QH_D2666 [QUAD] @ sb=154.144690]

next_elements()


In [18]:
# locate reference element:
ref_elem = lat.get_elements(name='*')[6]

In [19]:
ref_elem


Out[19]:
LS1_CA01:CAV3_D1143 [CAV] @ sb=1.766370

In [20]:
# get the next element of ref_elem, i.e. the first element downstream
lat.next_elements(ref_elem)


Out[20]:
[LS1_CA01:BPM_D1144 [BPM] @ sb=2.070634]

In [21]:
# get the last one of the next two elements
lat.next_elements(ref_elem, count=2)


Out[21]:
[LS1_CA01:SOL2_D1147 [SOL] @ sb=2.202637]

In [22]:
# get all of the next two elements
lat.next_elements(ref_elem, count=2, range='0::1')


Out[22]:
[LS1_CA01:BPM_D1144 [BPM] @ sb=2.070634,
 LS1_CA01:SOL2_D1147 [SOL] @ sb=2.202637]

In [23]:
# get all of the two elements before ref_elem
lat.next_elements(ref_elem, count=-2, range='0::1')


Out[23]:
[LS1_CA01:DCH_D1131 [HCOR] @ sb=0.743330,
 LS1_CA01:CAV2_D1135 [CAV] @ sb=0.986724]

In [24]:
# get the next two BPM elements of ref_elem,
# return including ref_elem itself
lat.next_elements(ref_elem, count=2, type=['BPM'], ref_include=True, range='0::1')


Out[24]:
[LS1_CA01:CAV3_D1143 [CAV] @ sb=1.766370,
 LS1_CA01:BPM_D1144 [BPM] @ sb=2.070634,
 LS1_WA01:BPM_D1155 [BPM] @ sb=3.109095]

In [25]:
# with hybrid types
lat.next_elements(ref_elem, count=2, type=['BPM', 'CAV'], range='0::1')


Out[25]:
[LS1_CA01:BPM_D1144 [BPM] @ sb=2.070634,
 LS1_CA01:CAV4_D1150 [CAV] @ sb=2.546031,
 LS1_WA01:BPM_D1155 [BPM] @ sb=3.109095,
 LS1_CA02:CAV1_D1161 [CAV] @ sb=3.580158]