Skip to content

Run III ions configuration

config_runIII_ions.yaml
config_particles:
  r_min: 4.0
  r_max: 20.0
  n_r: 256
  n_angles: 5
  n_split: 5
  path_distribution_folder_output: particles

config_mad:
  # Links to be made for tools and scripts
  links:
    acc-models-lhc: /afs/cern.ch/eng/lhc/optics

  # Optics file
  optics_file: acc-models-lhc/runIII/RunIII_dev/ION_2024/opticsfile.21

  # Beam parameters
  beam_config:
    lhcb1:
      # Lead ions
      beam_energy_tot: 557600 # [GeV] corresponds to 6.8 Z TeV
      particle_mass: 193.6872729 # [GeV]
      particle_charge: 82
    lhcb2:
      # Lead ions
      beam_energy_tot: 557600 # [GeV] corresponds to 6.8 Z TeV
      particle_mass: 193.6872729 # [GeV]
      particle_charge: 82

  # Ions being simulated
  ions: true

  # Enable machine imperfections
  enable_imperfections: false

  # Enable knob synthesis (for coupling correction, if no imperfections)
  enable_knob_synthesis: true

  # Rename the coupling knobs to avoid conflict between b1 and b2
  # (for hllhc using old fortran code to generate the knobs)
  rename_coupling_knobs: true

  # Optics version, for choice of correction algorithms
  # (ver_lhc_run or ver_hllhc_optics)
  ver_hllhc_optics:
  ver_lhc_run: 3.0

  # Parameters for machine imperfections
  pars_for_imperfections:
    par_myseed: 1
    par_correct_for_D2: 0
    par_correct_for_MCBX: 0
    par_on_errors_LHC: 1
    par_off_errors_Q4_inIP15: 0
    par_off_errors_Q5_inIP15: 0
    par_on_errors_MBH: 1
    par_on_errors_Q4: 1
    par_on_errors_D2: 1
    par_on_errors_D1: 1
    par_on_errors_IT: 1
    par_on_errors_MCBRD: 0
    par_on_errors_MCBXF: 0
    par_on_errors_NLC: 0
    par_write_errortable: 1

  phasing:
    # RF voltage and phases
    vrf400: 1148.0 # [MV]
    lagrf400.b1: 0.5 # [rad]
    lagrf400.b2: 0. # [rad]

  # To make some specifics checks
  sanity_checks: true

  # Path of the collider file to be saved (usually at the end of the first generation)
  path_collider_file_for_configuration_as_output: collider_file_for_configuration.json
  compress: true # will compress the collider file, filename will end with .zip

# Configuration for tuning of the collider
config_collider:
  # Even though the file doesn't end with .zip, scrip will first try to load it as a zip file
  path_collider_file_for_configuration_as_input: ../collider_file_for_configuration.json
  config_knobs_and_tuning:
    knob_settings:
      # Orbit knobs
      on_x1: 170 # [urad]
      on_sep1: 1e-3 # [mm]
      on_x2v: -170 # [urad]
      on_sep2h: 1e-3 # [mm]
      on_sep2v: 0 # [mm]
      on_x5: 170 # [urad]
      on_sep5: 1e-3 # [mm]
      on_x8h: -135 # [urad]
      on_sep8h: 0 # [mm]
      on_sep8v: 1e-10 # [mm]
      on_ov2: 0 # [mm]
      on_ov5: 0 # [mm]

      # Spurious dispersion correction
      on_disp: 1.000

      # Magnets of the experiments
      on_alice_normalized: 1
      on_lhcb_normalized: -1
      on_sol_atlas: 0
      on_sol_cms: 0
      on_sol_alice: 0

      # Octupoles
      i_oct_b1: 100. # [A]
      i_oct_b2: 100. # [A]

    # Tunes and chromaticities
    qx:
      lhcb1: 62.31
      lhcb2: 62.31
    qy:
      lhcb1: 60.32
      lhcb2: 60.32
    dqx:
      lhcb1: 10
      lhcb2: 10
    dqy:
      lhcb1: 10
      lhcb2: 10

    # Linear coupling
    delta_cmr: 0.0
    delta_cmi: 0.0

    knob_names:
      lhcb1:
        q_knob_1: dqx.b1_sq
        q_knob_2: dqy.b1_sq
        dq_knob_1: dqpx.b1_sq
        dq_knob_2: dqpy.b1_sq
        c_minus_knob_1: cmrs.b1_sq
        c_minus_knob_2: cmis.b1_sq

      lhcb2:
        q_knob_1: dqx.b2_sq
        q_knob_2: dqy.b2_sq
        dq_knob_1: dqpx.b2_sq
        dq_knob_2: dqpy.b2_sq
        c_minus_knob_1: cmrs.b2_sq
        c_minus_knob_2: cmis.b2_sq

  config_beambeam:
    skip_beambeam: false
    bunch_spacing_buckets: 10
    num_slices_head_on: 11
    num_long_range_encounters_per_side:
      ip1: 20
      ip2: 18
      ip5: 20
      ip8: 18
    sigma_z: 0.0824
    num_particles_per_bunch: 180000000.0
    nemitt_x: 1.65e-6
    nemitt_y: 1.65e-6
    mask_with_filling_pattern:
      # If not already existing in the study-da package, pattern must have an absolute path or be
      # added as a dependency for the run file
      pattern_fname: 50ns_1240b_1088_1088_398_56bpi_PbPb_converted.json
      i_bunch_b1:      # If not specified, the bunch with the worst schedule is chosen
      i_bunch_b2:      # Same. A value for i_bunch_b1 and i_bunch_b2 must be specified if pattern_fname is specified
    cross_section: 281e-24

  skip_leveling: false
  config_lumi_leveling:
    ip1:
      luminosity: 6.4e+27
      num_colliding_bunches:
      impose_separation_orthogonal_to_crossing: false
      knobs:
      - on_sep1
      bump_range:
        lhcb1:
        - e.ds.l1.b1
        - s.ds.r1.b1
        lhcb2:
        - s.ds.r1.b2
        - e.ds.l1.b2
      preserve_angles_at_ip: true
      preserve_bump_closure: true
      corrector_knob_names:
      - corr_co_acbyvs4.l1b1
      - corr_co_acbyhs4.l1b1
      - corr_co_acbyvs4.r1b2
      - corr_co_acbyhs4.r1b2
      - corr_co_acbyhs4.r1b1
      - corr_co_acbyvs4.r1b1
      - corr_co_acbyhs4.l1b2
      - corr_co_acbyvs4.l1b2
      - corr_co_acbcv5.l1b1
      - corr_co_acbch5.r1b1
      - corr_co_acbcv5.r1b2
      - corr_co_acbch5.l1b2

    ip5:
      luminosity: 6.4e+27
      num_colliding_bunches:
      impose_separation_orthogonal_to_crossing: false
      knobs:
      - on_sep5
      bump_range:
        lhcb1:
        - e.ds.l5.b1
        - s.ds.r5.b1
        lhcb2:
        - s.ds.r5.b2
        - e.ds.l5.b2
      preserve_angles_at_ip: true
      preserve_bump_closure: true
      corrector_knob_names:
      - corr_co_acbcv5.l5b1
      - corr_co_acbch5.r5b1
      - corr_co_acbyhs4.l5b1
      - corr_co_acbyhs4.r5b1
      - corr_co_acbyvs4.l5b1
      - corr_co_acbyvs4.r5b1
      - corr_co_acbcv5.r5b2
      - corr_co_acbch5.l5b2
      - corr_co_acbyhs4.l5b2
      - corr_co_acbyhs4.r5b2
      - corr_co_acbyvs4.l5b2
      - corr_co_acbyvs4.r5b2

    ip2:
      luminosity: 6.4e+27
      num_colliding_bunches:
      impose_separation_orthogonal_to_crossing: false
      knobs:
      - on_sep2h
      bump_range:
        lhcb1:
        - e.ds.l2.b1
        - s.ds.r2.b1
        lhcb2:
        - s.ds.r2.b2
        - e.ds.l2.b2
      preserve_angles_at_ip: true
      preserve_bump_closure: true
      corrector_knob_names:
        # to preserve angles at ip
      - corr_co_acbyvs4.l2b1
      - corr_co_acbyhs4.l2b1
      - corr_co_acbyvs4.r2b2
      - corr_co_acbyhs4.r2b2
          # to close the bumps
      - corr_co_acbyvs4.l2b2
      - corr_co_acbyhs4.l2b2
      - corr_co_acbyvs4.r2b1
      - corr_co_acbyhs4.r2b1
      - corr_co_acbyhs5.l2b2
      - corr_co_acbyvs5.l2b2
      - corr_co_acbchs5.r2b1
      - corr_co_acbcvs5.r2b1

    # ! There seems to be a problem with the lumi optimizer at IP8
    # ! Not important for the moment as we only consider head-on, but will have to be solved
    # ip8:
    #   luminosity: 1.0e+27
    #   num_colliding_bunches:
    #   impose_separation_orthogonal_to_crossing: false
    #   knobs:
    #     - on_sep8v
    #   bump_range:
    #     lhcb1:
    #       - e.ds.l8.b1
    #       - s.ds.r8.b1
    #     lhcb2:
    #       - s.ds.r8.b2
    #       - e.ds.l8.b2
    #   preserve_angles_at_ip: true
    #   preserve_bump_closure: true
    #   corrector_knob_names:
    #     # to preserve angles at ip
    #     - corr_co_acbyvs4.l8b1
    #     - corr_co_acbyhs4.l8b1
    #     - corr_co_acbyvs4.r8b2
    #     - corr_co_acbyhs4.r8b2
    #       # to close the bumps
    #     - corr_co_acbyvs4.l8b2
    #     - corr_co_acbyhs4.l8b2
    #     - corr_co_acbyvs4.r8b1
    #     - corr_co_acbyhs4.r8b1
    #     - corr_co_acbcvs5.l8b2
    #     - corr_co_acbchs5.l8b2
    #     - corr_co_acbyvs5.r8b1
    #     - corr_co_acbyhs5.r8b1

  # Save collider or not (usually at the end of the collider tuning)
  save_output_collider: false
  path_collider_file_for_tracking_as_output: collider_file_for_tracking.json
  compress: true # will compress the collider file, filename will end with .zip

config_simulation:
  # Collider file to load for the tracking
  path_collider_file_for_tracking_as_input: ../collider_file_for_tracking.json

  # Distribution in the normalized xy space
  path_distribution_folder_input: ../particles
  distribution_file: 00.parquet

  # Output particle file
  path_distribution_file_output: output_particles.parquet

  # Initial off-momentum
  delta_max: 0.00024

  # Tracking
  n_turns: 1000000 # number of turns to track

  # Beam to track
  beam: lhcb1 #lhcb1 or lhcb2

  # Context for the simulation
  context: cpu   # 'cupy' # opencl

  # Device number for GPU simulation
  device_number: # 0