Dynamics of a charge in an electromagnetic field

Write a generic mathematica procedure to describe the motion of a charge in an arbitrary electric and magnetic field.
Try to use a compact (vector) notation.
Try to solve the differential equations with DSolve  (when possible) and/or NDSolve.
  Plot the solution: try different plotting approach.
  Plot other quantities, such as e.g. the kinetic energy

Needs["Calculus`VectorAnalysis`"]
kk  :=  qq ( ee  +  CrossProduct[vv[tt], bb])

Try not to use single letters as variables (rr instead of r, etc.) 
It is not so easy to have multiply defined variables, and one can easily do automatic reaplcing

Clear[rr]
rr[tt_] := {xx[tt], yy[tt], zz[tt]}

Clear[vv]
vv[tt_] := D[rr[t1], t1] /. t1 -> tt      
aa :=  D[rr[tt], {tt, 2}]

aa

ee = {e0, 0, 0}; bb = {0, 0, 0}

kk

A utility function

listop[list1_List, op_, list2_List]  :=   Table[
        op[list1[[ii]], list2[[ii]]], {ii, 1, 
          Length[list1]}]
listop[list1_List, op_, elem_]  :=   Table[
        op[list1[[ii]], elem], {ii, 1, 
          Length[list1]}]
listequal[a_, b_] :=  listop[a, Equal, b]

DSolve[listequal[aa, kk/mm], rr[tt], tt]

ee = e0 {Cos[ww tt], Sin[ww tt], 0}; bb = {0, 0, 0}

DSolve[listequal[aa, kk/mm], rr[tt], tt]

r0 = {0, 0, 0}; v0 = vv0 {1, 0, 0}

qq = 1; mm = 1; ww = 1; vv0 = 1; e0 = 1
neq = 
      Flatten[{ listequal[aa, kk/mm], listequal[rr[0], r0], 
          listequal[vv[0], v0]}]

NDSolve[neq, rr[tt], {tt, 0, 1}]

Now try with other more complicated fields, do different plots, etc