Example #1
0
 def get_correction_check_script(
         cls,
         accel: Lhc,
         corr_file: str = "changeparameters_couple.madx",
         chrom: bool = False) -> str:
     madx_script = accel.get_base_madx_script()
     madx_script += (
         f"exec, do_twiss_monitors_and_ips(LHCB{accel.beam}, '{accel.model_dir / 'twiss_no.dat'!s}', 0.0);\n"
         f"call, file = '{corr_file}';\n"
         f"exec, do_twiss_monitors_and_ips(LHCB{accel.beam}, '{accel.model_dir / 'twiss_cor.dat'!s}', 0.0);\n"
     )
     if chrom:
         madx_script += (
             f"exec, do_twiss_monitors_and_ips(LHCB{accel.beam}, '{accel.model_dir / 'twiss_cor_dpm.dat'}', %DELTAPM);\n"
             f"exec, do_twiss_monitors_and_ips(LHCB{accel.beam}, '{accel.model_dir / 'twiss_cor_dpp.dat'}', %DELTAPP);\n"
         )
     return madx_script
Example #2
0
 def get_madx_script(cls, accel: Lhc) -> str:  # nominal
     use_acd = "1" if (accel.excitation == AccExcitationMode.ACD) else "0"
     use_adt = "1" if (accel.excitation == AccExcitationMode.ADT) else "0"
     madx_script = accel.get_base_madx_script()
     madx_script += (
         f"exec, do_twiss_monitors(LHCB{accel.beam}, '{accel.model_dir / TWISS_DAT}', {accel.dpp});\n"
         f"exec, do_twiss_elements(LHCB{accel.beam}, '{accel.model_dir / TWISS_ELEMENTS_DAT}', {accel.dpp});\n"
     )
     if accel.excitation != AccExcitationMode.FREE or accel.drv_tunes is not None:
         # allow user to modify script and enable excitation, if driven tunes are given
         madx_script += (
             f"use_acd={use_acd};\nuse_adt={use_adt};\n"
             f"if(use_acd == 1){{\n"
             f"exec, twiss_ac_dipole({accel.nat_tunes[0]}, {accel.nat_tunes[1]}, {accel.drv_tunes[0]}, {accel.drv_tunes[1]}, {accel.beam}, '{accel.model_dir / TWISS_AC_DAT}', {accel.dpp});\n"
             f"}}else if(use_adt == 1){{\n"
             f"exec, twiss_adt({accel.nat_tunes[0]}, {accel.nat_tunes[1]}, {accel.drv_tunes[0]}, {accel.drv_tunes[1]}, {accel.beam}, '{accel.model_dir / TWISS_ADT_DAT}', {accel.dpp});\n"
             f"}}\n")
     return madx_script
Example #3
0
    def get_madx_script(cls, accel: Lhc) -> str:
        if accel.excitation is not AccExcitationMode.FREE:
            raise AcceleratorDefinitionError(
                "Don't set ACD or ADT for best knowledge model.")
        if accel.energy is None:
            raise AcceleratorDefinitionError(
                "Best knowledge model requires energy.")

        corrections_file = accel.model_dir / cls.CORRECTIONS_FILENAME  # existence is tested in madx
        mqts_file = accel.model_dir / cls.EXTRACTED_MQTS_FILENAME  # existence is tested in madx

        madx_script = accel.get_base_madx_script(best_knowledge=True)
        madx_script += (
            f"call, file = '{corrections_file}';\n"
            f"call, file = '{mqts_file}';\n"
            f"exec, do_twiss_monitors(LHCB{accel.beam}, '{accel.model_dir / TWISS_BEST_KNOWLEDGE_DAT}', {accel.dpp});\n"
            f"exec, do_twiss_elements(LHCB{accel.beam}, '{accel.model_dir / TWISS_ELEMENTS_BEST_KNOWLEDGE_DAT}', {accel.dpp});\n"
        )
        return madx_script