"""
Datacard to simulate 200MeV/c protons
"""
# pylint: disable=C0103, W0611

import os

output_json_file_name = "proton_check_simulation.json"
output_json_file_type = "text"

# Used by MapCppSimulation
keep_tracks = True # set to true to keep start and end point of every track
keep_steps = False # set to true to keep start and end point of every track and
                   # every step point
simulation_geometry_filename = "Stage4.dat" # geometry used by simulation
maximum_number_of_steps = 10000
simulation_reference_particle = {
    "position":{"x":0.0, "y":-0.0, "z":2000.0},
    "momentum":{"x":0.0, "y":0.0, "z":1.0},
    "particle_id":2212, "energy":959.1, "time":0.0, "random_seed":10
}


# used by InputPySpillGenerator to determine the number of empty spills that
# will be generated by the simulation
spill_generator_number_of_spills = 1000
# used by MapPyBeamMaker to generate input particle 
# This is a sample beam distribution based on guesses by Chris Rogers of what
# an optimised beam might look like
beam = {
    "particle_generator":"binomial", # routine for generating empty primaries
    "binomial_n":1.0, # number of coin tosses
    "binomial_p":1.0, # probability of making a particle on each toss
    "random_seed":5, # random seed for beam generation; controls also how the MC
                     # seeds are generated
    "definitions":[
    ##### 200MeV/c PROTONS #######
    {
       "reference":simulation_reference_particle, # reference particle
       "random_seed_algorithm":"incrementing_random", # algorithm for seeding MC
       "weight":100., # probability of generating a particle
       "transverse":{
          "transverse_mode":"constant_solenoid", # transverse distribution matched to constant solenoid field
          "emittance_4d":3., # 4d emittance
          "normalised_angular_momentum":0.1, # angular momentum from diffuser
          "bz":4.e-3 # magnetic field strength for angular momentum calculation
       },
       "longitudinal":{"longitudinal_mode":"sawtooth_time", # longitudinal distribution sawtooth in time
                   "momentum_variable":"p", # Gaussian in total momentum (options energy, pz)
                   "sigma_p":25., # RMS total momentum
                   "t_start":-1.e6, # start time of sawtooth
                   "t_end":+1.e6}, # end time of sawtooth
       "coupling":{"coupling_mode":"none"} # no dispersion
    }]
}

particle_decay = False
