function p = electronCrunch(data,dV,dD,Vcut)
switch nargin
    case 1
        dV = 0;
        dD = 0;
        Vcut = 110;
    case 2
        dD = 0;
        Vcut = 110;
    case 3
        Vcut = 110;
end
        
eOm_actual = 1.6e-19 / 9.11e-31;
V = data(:,1);
ind = find(V>=Vcut);
V = V(ind) - dV;
D = data(ind,3)/100 + dD/1000;
r = D/2;
I = data(ind,2);

N = 130;
R = 0.15;
B = (8.99e-7*N/R)*I;
X = 0.5*eOm_actual*(r.*B).^2;
Y = V;
p = polyfit(X,Y,1);
X_fit = [0,200];
Y_fit = polyval(p,X_fit);

figure(1)
plot(X,Y,'o',X_fit,Y_fit)
title(sprintf('slope %f',p(1)))
ylabel('V')
xlabel('0.5*accepted(e/m)*(r.*B).^2')

figure(2)
eOm = 2*V./(r.*B).^2;
eOm_mean = mean(eOm)/eOm_actual;
plot(V,eOm/eOm_actual,'o')
title(sprintf('mean value %f',eOm_mean))
xlabel('V')
ylabel('estmated(e/m)/accepted(e/m)')
end