# Slit:x_set     - set slit position [mm]
# Slit:x         - read back slit position [mm]
# Slit:fc_signal - Faraday Cup (FC) signal [C]

import sys
import math
import types
import time
import random

from xal.ca import ChannelFactory
from xal.ca import Monitor
from xal.ca import Channel
from xal.ca import IEventSinkValue

channelFactory = ChannelFactory.newServerFactory()


class GaussDistrubution:
    def __init__(self, N, center, sigma, rel_base):
        """
		g(x) = (N/(sigma*sqrt(2*pi)))*exp(-(x-center)**2/(2*sigma**2))
		"""
        self.N = N
        self.center = center
        self.sigma = sigma
        self.base = rel_base * N / (sigma * math.sqrt(2 * math.pi))
        self.distance_to_slit_edge = 32.0  # mm
        self.beam_pipe_radius = 15  # mm
        self.step = sigma / 100