DBPM = 1 DWSC = 2 DBLM = 3 DLAC = 4 elements = ( (DBPM, "SINEG01-DBPM340", 3.0149), (DBPM, "SINSB01-DBPM150", 7.9459), (DBPM, "SINSB02-DBPM150", 12.9489), (DBPM, "SINLH01-DBPM060", 14.5560), (DBPM, "SINLH02-DBPM210", 16.4806), (DBLM, "SINLH02-DBLM230", 16.8546), (DBPM, "SINLH02-DBPM240", 17.4826), (DBLM, "SINLH02-DBLM235", 17.4049), (DBPM, "SINLH03-DBPM010", 19.2172), (DBPM, "SINLH03-DBPM050", 20.4632), (DBPM, "SINLH03-DBPM090", 21.6002), (DBPM, "SINSB03-DBPM120", 26.9202), (DBPM, "SINSB03-DBPM220", 32.4202), (DBPM, "SINSB04-DBPM120", 37.9202), (DBPM, "SINSB04-DBPM220", 43.4202), (DBPM, "SINSB05-DBPM120", 48.9202), (DBPM, "SINSB05-DBPM220", 54.4202), (DBPM, "SINXB01-DBPM120", 56.2420), (DBPM, "SINBC01-DBPM010", 60.2912), (DBPM, "SINBC01-DBPM030", 61.0912), (DBPM, "SINBC01-DBPM080", 64.4172), (DBPM, "SINBC01-DBPM100", 65.9432), (DBPM, "SINBC02-DBPM140", 69.3739), (DBPM, "SINBC02-DBPM320", 77.5610), (DBPM, "SINDI01-DBPM010", 82.0967), (DBPM, "SINDI01-DBPM060", 83.5117), (DWSC, "SINDI01-DWSC090", 84.2537), (DBPM, "SINDI02-DBPM010", 86.0767), (DBLM, "SINDI02-DBLM025", 86.862), (DBPM, "SINDI02-DBPM040", 88.3857), (DLAC, "SINDI02-DLAC0550", 89.05), (DBPM, "SINDI02-DBPM080", 90.6297), (DBLM, "SINDI02-DBLM085", 90.7796), (DBPM, "S10CB01-DBPM220", 95.3947), (DBPM, "S10CB01-DBPM420", 100.2947), (DBPM, "S10CB02-DBPM220", 105.1947), (DBPM, "S10CB02-DBPM420", 110.0947), (DWSC, "S10DI01-DWSC010", 110.8237), (DBLM, "S10DI01-DBLM045", 111.67), (DBLM, "S10DI01-DBLM015", 113.632), (DBPM, "S10BD01-DBPM020", 114.6628), (DBPM, "S10DI01-DBPM110", 114.9947), (DBPM, "S10CB03-DBPM220", 119.8947), (DBPM, "S10CB03-DBPM420", 124.7947), (DWSC, "S10CB03-DWSC440", 125.2127), (DBPM, "S10CB04-DBPM220", 129.6947), (DBLM, "S10CB04-DBLM240", 130.1525), (DBPM, "S10CB04-DBPM420", 134.5947), (DBPM, "S10CB05-DBPM220", 139.4947), (DBPM, "S10CB05-DBPM420", 144.3947), (DWSC, "S10CB05-DWSC440", 144.8127), (DBPM, "S10CB06-DBPM220", 149.2947), (DBLM, "S10CB06-DBLM240", 149.7525), (DBPM, "S10CB06-DBPM420", 154.1947), (DBPM, "S10CB07-DBPM220", 159.0947), (DBPM, "S10CB07-DBPM420", 163.9947), (DWSC, "S10CB07-DWSC440", 164.4127), (DBPM, "S10CB08-DBPM220", 168.8947), (DBLM, "S10CB08-DBLM240", 169.3525), (DBPM, "S10CB08-DBPM420", 173.7947), (DBPM, "S10CB09-DBPM220", 178.6947), (DBPM, "S10BC01-DBPM010", 183.5947), (DWSC, "S10BC01-DWSC030", 184.0127), (DBPM, "S10BC01-DBPM050", 187.8307), (DBLM, "S10BC01-DBLM065", 188.684), (DBPM, "S10BC01-DBPM090", 192.2847), (DBPM, "S10BC02-DBPM140", 196.7798), (DBPM, "S10BC02-DBPM320", 206.5399), (DBPM, "S10MA01-DBPM010", 211.2940), (DBPM, "S10MA01-DBPM060", 215.6600), (DBPM, "S10MA01-DBPM120", 220.1200), (DBPM, "S20CB01-DBPM420", 229.0850), (DWSC, "S20CB01-DWSC440", 229.5030), (DBPM, "S20CB02-DBPM420", 238.1850), (DBLM, "S20CB02-DBLM435", 238.6325), (DBPM, "S20CB03-DBPM420", 247.2850), (DBPM, "S20SY01-DBPM010", 256.3850), (DBPM, "S20SY01-DBPM040", 262.5020), (DBPM, "S20SY01-DBPM060", 263.6280), (DWSC, "S20SY01-DWSC070", 263.8280), (DBLM, "S20SY02-DBLM075", 268.617), (DBPM, "S20SY02-DBPM080", 269.1300), (DBPM, "S20SY02-DBPM120", 271.0800), (DBPM, "S20SY02-DBPM150", 272.7600), (DWSC, "S20SY02-DWSC160", 273.1350), (DBPM, "SATSY01-DBPM010", 279.1202), (DBPM, "S20SY03-DBPM010", 280.6200), (DBLM, "S20SY03-DBLM025", 281.156), (DBPM, "SATSY01-DBPM060", 284.6202), (DBPM, "S20SY03-DBPM040", 286.9200), (DBPM, "SATSY01-DBPM100", 288.9352), (DBPM, "S20SY03-DBPM080", 294.3800), (DWSC, "S20SY03-DWSC090", 294.5800), (DBLM, "S20SY03-DBLM110", 295.258), (DBPM, "SATSY01-DBPM240", 296.1202), (DBPM, "SATSY01-DBPM290", 302.8202), (DBPM, "S30CB01-DBPM420", 303.8150), (DWSC, "S30CB01-DWSC440", 304.2330), (DBPM, "SATSY02-DBPM020", 306.8663), (DBPM, "SATSY02-DBPM210", 312.6833), (DBPM, "S30CB02-DBPM420", 312.9150), (DBLM, "S30CB02-DBLM445", 313.3625), (DBPM, "SATSY03-DBPM030", 317.2003), (DBPM, "SATSY03-DBPM060", 320.0003), (DBPM, "S30CB03-DBPM420", 322.0150), (DBPM, "SATSY03-DBPM090", 322.8003), (DWSC, "SATSY03-DWSC110", 325.1663), (DBPM, "SATSY03-DBPM120", 325.6003), (DBPM, "S30CB04-DBPM420", 331.1150), (DBLM, "SATCL01-DBLM135", 331.1179), (DBPM, "SATCL01-DBPM140", 331.9185), (DBPM, "S30CB05-DBPM420", 340.2150), (DWSC, "S30CB05-DWSC440", 340.6330), (DBPM, "SATDI01-DBPM030", 340.8637), (DBPM, "SATDI01-DBPM060", 342.7637), (DWSC, "SATDI01-DWSC065", 342.9837), (DBPM, "SATDI01-DBPM210", 349.2197), (DBPM, "S30CB06-DBPM420", 349.3150), (DBLM, "S30CB06-DBLM445", 349.7625), (DBLM, "SATDI01-DBLM225", 349.5613), (DBPM, "SATDI01-DBPM240", 352.1997), (DBPM, "SATDI01-DBPM270", 355.1797), (DWSC, "SATDI01-DWSC290", 356.4797), (DBPM, "SATDI01-DBPM320", 357.0907), (DBPM, "S30CB07-DBPM420", 358.4150), (DBPM, "SATCB01-DBPM220", 361.5357), (DBLM, "SATCB01-DBLM245", 361.8578), (DBPM, "SATCB01-DBPM420", 366.4357), (DBPM, "S30CB08-DBPM420", 367.5150), (DBPM, "S30CB09-DBPM420", 376.6150), (DWSC, "S30CB09-DWSC440", 377.0330), (DBPM, "SATMA01-DBPM010", 377.2657), (DBPM, "SATMA01-DBPM020", 379.3147), (DBPM, "SATMA01-DBPM040", 381.3637), (DBLM, "SATMA01-DBLM065", 381.6948), (DBPM, "S30CB10-DBPM420", 385.7150), (DBLM, "S30CB10-DBLM445", 386.271), (DBPM, "S30CB11-DBPM420", 394.8150), (DBPM, "S30CB12-DBPM420", 403.9150), (DBPM, "S30CB13-DBPM420", 413.0150), (DWSC, "S30CB13-DWSC440", 413.4330), (DBPM, "S30CB14-DBPM420", 422.1150), (DBLM, "S30CB14-DBLM445", 422.691), (DBPM, "S30CB15-DBPM420", 431.2150), (DBPM, "SARCL01-DBPM010", 440.3150), (DBPM, "SARCL01-DBPM060", 444.6750), (DBPM, "SARCL01-DBPM120", 450.7750), (DBPM, "SARCL01-DBPM150", 452.1510), (DWSC, "SARCL01-DWSC160", 452.3510), (DBPM, "SARCL02-DBPM110", 456.9100), (DBLM, "SARCL02-DBLM135", 457.9854), (DBPM, "SARCL02-DBPM220", 460.9609), (DBPM, "SARCL02-DBPM260", 462.7569), (DWSC, "SARCL02-DWSC270", 462.9769), (DBPM, "SARCL02-DBPM330", 466.6909), (DBLM, "SARCL02-DBLM355", 467.686), (DBPM, "SARCL02-DBPM470", 471.1067), (DBPM, "SARMA01-DBPM040", 476.4267), (DBPM, "SARMA01-DBPM100", 483.2767), (DBPM, "SARMA02-DBPM010", 487.9617), (DBPM, "SARMA02-DBPM020", 490.0107), (DBPM, "SARMA02-DBPM040", 492.0597), (DWSC, "SARMA02-DWSC060", 492.3767), (DBPM, "SARMA02-DBPM110", 496.8097), (DBLM, "SARUN01-DBLM065", 497.8392), (DBPM, "SARUN01-DBPM070", 501.5597), (DBPM, "SARUN02-DBPM070", 506.3097), (DBLM, "SARUN03-DBLM030", 506.671), (DBPM, "SARUN03-DBPM070", 511.0597), (DBLM, "SARUN04-DBLM030", 511.421), (DBPM, "SARUN04-DBPM070", 515.8097), (DBLM, "SARUN05-DBLM030", 516.171), (DBPM, "SARUN05-DBPM070", 520.5597), (DBLM, "SARUN06-DBLM030", 520.921), (DBPM, "SARUN06-DBPM070", 525.3097), (DBLM, "SARUN07-DBLM030", 525.671), (DBPM, "SARUN07-DBPM070", 530.0597), (DBLM, "SARUN08-DBLM030", 530.421), (DBPM, "SARUN08-DBPM070", 534.8097), (DBLM, "SARUN09-DBLM030", 535.171), (DBPM, "SARUN09-DBPM070", 539.5597), (DBLM, "SARUN10-DBLM030", 539.921), (DBPM, "SARUN10-DBPM070", 544.3097), (DBLM, "SARUN11-DBLM030", 544.671), (DBPM, "SARUN11-DBPM070", 549.0597), (DBLM, "SARUN12-DBLM030", 549.421), (DBPM, "SARUN12-DBPM070", 553.8097), (DBLM, "SARUN13-DBLM030", 554.171), (DBPM, "SARUN13-DBPM070", 558.5597), (DBLM, "SARUN14-DBLM030", 558.921), (DBPM, "SARUN14-DBPM070", 563.3097), (DBLM, "SARUN15-DBLM030", 563.671), (DBLM, "SARUN15-DBLM035", 567.970985), (DBPM, "SARUN15-DBPM070", 568.0597), (DBPM, "SARUN16-DBPM070", 572.8097), (DBPM, "SARUN17-DBPM070", 577.5597), (DBPM, "SARUN18-DBPM070", 582.3097), (DBPM, "SARUN19-DBPM070", 587.0597), (DWSC, "SARUN20-DWSC010", 587.3767), (DBLM, "SARUN20-DBLM035", 590.41), (DBPM, "SARUN20-DBPM070", 591.8097), (DBPM, "SARBD01-DBPM040", 593.9132), (DBPM, "SARBD02-DBPM010", 596.9584), (DBPM, "SARBD02-DBPM040", 598.3943), ) def get_section(element): return element[1:3] def get_section_type(element): section = get_section(element) if section == "AR": return "ARAMIS" if section == "AT": return "ATH0S" if section == "IN": return "INJECTOR" if section in["10", "20", "30"] : return "LINAC" return None def get_beamline(element): section = get_section(element) if section == "AR": return "ARAMIS" if section == "AT": return "ATH0S" return None def get_blms(): ret = [] for element in elements: if element[0]==DBLM: ret.append(element[1]) return ret def get_bpms(): ret = [] for element in elements: if element[0]==DBPM: ret.append(element[1]) return ret def get_wire_scanners(): ret = [] for element in elements: if element[0]==DWSC: ret.append(element[1]) return ret def get_dlacs(): ret = [] for element in elements: if element[0]==DLAC: ret.append(element[1]) return ret def get_wire_scanners_bpms(wire_scan): last = None ret = [] for element in elements: if element[0]==DWSC and element[1] == wire_scan: ret = [last,] elif element[0]==DBPM: if get_beamline(element[1]) == get_beamline(wire_scan): if len(ret) > 0: return [ret[0],element[1]] last = element[1] return None def get_wire_scanners_blms(wire_scan): last = None ret = None for element in elements: if element[0]==DWSC and element[1] == wire_scan: ret = [] elif element[0]==DBLM and (ret is not None): bl = get_beamline(element[1]) if bl == get_beamline(wire_scan): ret.append(element[1]) if len(ret) == 2: return ret if ret is not None and len(ret)==1: ret.append(None) return ret def get_camera_type(camera_name): if "LCAM" in camera_name: return "LASER" if "DSCR" in camera_name or \ "DSRM" in camera_name or \ "DLAC" in camera_name: return "ELECTRONS" if "PROF" in camera_name or \ "PPRM" in camera_name or \ "PSSS" in camera_name or \ "PSCR" in camera_name or \ "PSRD" in camera_name: return "PHOTONICS" return "UNKNOWN"