import numpy as np
from decimal import Decimal
c=299792458 #km/s
mp=1.6726*10**(-27)
me=9.1094*10**(-31)
elec=1.6*10**(-19)
def gamma(v):
  return 1./np.sqrt(1-(v**2/c**2))

def p_v_to_e(v):
  e=gamma(v)*mp*c**2-mp*c**2
  print "kin_e (MeV)= ",e/elec/10**6

def p_e_to_v(e):
  v=c*np.sqrt(1-(mp*c**2/e)**2)
  print "v (m/s),v/c= ", v, v/c

def e_v_to_e(v):
  e=gamma(v)*me*c**2-me*c**2
  print "kin_e (MeV)= ",e/elec/10**6

def e_e_to_v(e):
  v=c*np.sqrt(1-(me*c**2/e)**2)
  print "v (m/s),v/c= ",v, v/c

def p_e_to_bg(e):
  v=c*np.sqrt(1-(mp*c**2/e)**2)
  b=v/c
  g=1/(np.sqrt(1-b**2))
  print "beta*gamma = ", b*g

def e_e_to_bg(e):
  v=c*np.sqrt(1-(me*c**2/e)**2)
  b=v/c
  g=1./(np.sqrt(1.-b**2))
  print "beta*gamma = ", b*g


b=np.float64(raw_input("magnetic field in nT: "))
b=b*1e-9

print "!!!! I dont believe these values! plz repair me! Kuehl, 29.22.18"
print "Select Particle:"
print "(1) proton energy gyro"
#print "(2) proton gyro to energy"

mode=raw_input("Mode: ")
if mode=="1":
  e=np.float64(raw_input("kinetic energy in MeV: "))
  e=e*10**6*elec+mp*c**2
  v=c*np.sqrt(1-(mp*c**2/e)**2)

  mrel=mp*gamma(v)
  r=mrel*v/(elec*b)
  print "r_gyro = ", r, "m"
  print "r_gyro = ", r/1.5e11, "au"
  

#else:
#  r=float(raw_input("gyro radius in m: "))
#  if mode=="2": p_v_to_e(v)
#  if mode=="4": e_v_to_e(v)


