From d79380d2b8841d9bf559e4f44fab9b27a7aec5c1 Mon Sep 17 00:00:00 2001 From: sakul-45 <81963567+sakul-45@users.noreply.github.com> Date: Sun, 11 Jul 2021 16:37:18 +0200 Subject: [PATCH] Finished first idea of UI --- pre_simulation_TREPR.m | 280 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 276 insertions(+), 4 deletions(-) diff --git a/pre_simulation_TREPR.m b/pre_simulation_TREPR.m index 4221c6d..58627ad 100644 --- a/pre_simulation_TREPR.m +++ b/pre_simulation_TREPR.m @@ -1,7 +1,279 @@ -function [outputArg1,outputArg2] = pre_simulation_TREPR(inputArg1,inputArg2) +function [Exp,Sys,params] = pre_simulation_TREPR(dataIN,params) %PRE_SIMULATION_TREPR Summary of this function goes here % Detailed explanation goes here -outputArg1 = inputArg1; -outputArg2 = inputArg2; -end +%% creating UI +fig = figure; +fig.Name = 'Manual Simulation'; +fig.Units = 'Normalized'; +fig.Position = [.15 .2 .7 .6]; +fig.Tag = 'Normalize'; + +%panel for plot +plotpanel = uipanel(fig); +plotpanel.Units = 'Normalized'; +plotpanel.Position = [.01 .01 .7 .98]; +%axes for plot +ax = axes(plotpanel); +ax.XLabel.String = 'magnetic field'; +ax.YLabel.String = 'Intensity'; +%plot current data in figure with field as x axis +plot(ax,0.1*params.Field_Vector,params.max_mean,'r') +axis tight + +%% create push buttons +a = uicontrol(fig,'Style','pushbutton'); +a.String = 'Apply'; +a.Units = 'Normalized'; +a.Position = [.71 .06 .28 .05]; +a.FontUnits = 'Normalized'; +a.FontSize = 0.6; +a.Tag = 'Apply'; +a.Callback = @PreSimApplyButtonPushed; + +d = uicontrol(fig,'Style','pushbutton'); +d.String = 'Done'; +d.Units = 'Normalized'; +d.Position = [.71 .01 .28 .05]; +d.FontUnits = 'Normalized'; +d.FontSize = 0.6; +d.Tag = 'Done'; +d.Callback = @PreSimDoneButtonPushed; + +%% create input and text fields (Triplet) +textTrip = uicontrol(fig,'Style','text'); +textTrip.String = 'Triplett populations'; +textTrip.Units = 'Normalized'; +textTrip.Position = [.71 .94 .28 .05]; +textTrip.HorizontalAlignment = 'center'; +textTrip.FontUnits = 'Normalized'; +textTrip.FontSize = 0.6; +textTrip.FontWeight = 'bold'; +textTrip.Tag = 'textTrip'; + +textTx = uicontrol(fig,'Style','text'); +textTx.String = 'T_1 = '; +textTx.Units = 'Normalized'; +textTx.Position = [.71 .89 .04333 .05]; +textTx.HorizontalAlignment = 'right'; +textTx.FontUnits = 'Normalized'; +textTx.FontSize = 0.6; +textTx.Tag = 'textTx'; + +InpTx = uicontrol(fig,'Style','edit'); +InpTx.String = '1'; +InpTx.Units = 'Normalized'; +InpTx.Position = [.75334 .89 .04333 .05]; +InpTx.HorizontalAlignment = 'left'; +InpTx.FontUnits = 'Normalized'; +InpTx.FontSize = 0.6; +InpTx.Tag = 'InpTx'; + +textTy = uicontrol(fig,'Style','text'); +textTy.String = 'T_2 = '; +textTy.Units = 'Normalized'; +textTy.Position = [.80668 .89 .04333 .05]; +textTy.HorizontalAlignment = 'right'; +textTy.FontUnits = 'Normalized'; +textTy.FontSize = 0.6; +textTy.Tag = 'textTy'; + +InpTy = uicontrol(fig,'Style','edit'); +InpTy.String = '1'; +InpTy.Units = 'Normalized'; +InpTy.Position = [.85001 .89 .04333 .05]; +InpTy.HorizontalAlignment = 'left'; +InpTy.FontUnits = 'Normalized'; +InpTy.FontSize = 0.6; +InpTy.Tag = 'InpTy'; + +textTz = uicontrol(fig,'Style','text'); +textTz.String = 'T_3 = '; +textTz.Units = 'Normalized'; +textTz.Position = [.90334 .89 .04333 .05]; +textTz.HorizontalAlignment = 'right'; +textTz.FontUnits = 'Normalized'; +textTz.FontSize = 0.6; +textTz.Tag = 'textTz'; + +InpTz = uicontrol(fig,'Style','edit'); +InpTz.String = '1'; +InpTz.Units = 'Normalized'; +InpTz.Position = [.94667 .89 .04333 .05]; +InpTz.HorizontalAlignment = 'left'; +InpTz.FontUnits = 'Normalized'; +InpTz.FontSize = 0.6; +InpTz.Tag = 'InpTz'; + +%% create input and text fields (D & E) +textDE = uicontrol(fig,'Style','text'); +textDE.String = 'D tensor'; +textDE.Units = 'Normalized'; +textDE.Position = [.71 .77 .28 .05]; +textDE.HorizontalAlignment = 'center'; +textDE.FontUnits = 'Normalized'; +textDE.FontSize = 0.6; +textDE.FontWeight = 'bold'; +textDE.Tag = 'textDE'; + +textD = uicontrol(fig,'Style','text'); +textD.String = 'D = '; +textD.Units = 'Normalized'; +textD.Position = [.71 .72 .0675 .05]; +textD.HorizontalAlignment = 'right'; +textD.FontUnits = 'Normalized'; +textD.FontSize = 0.6; +textD.Tag = 'textD'; + +InpD = uicontrol(fig,'Style','edit'); +InpD.String = '1/2 width'; +InpD.Units = 'Normalized'; +InpD.Position = [.7775 .72 .0675 .05]; +InpD.HorizontalAlignment = 'left'; +InpD.FontUnits = 'Normalized'; +InpD.FontSize = 0.6; +InpD.Tag = 'InpD'; + +textE = uicontrol(fig,'Style','text'); +textE.String = 'E = '; +textE.Units = 'Normalized'; +textE.Position = [.855 .72 .0675 .05]; +textE.HorizontalAlignment = 'right'; +textE.FontUnits = 'Normalized'; +textE.FontSize = 0.6; +textE.Tag = 'textE'; + +InpE = uicontrol(fig,'Style','edit'); +InpE.String = '1/3 D'; +InpE.Units = 'Normalized'; +InpE.Position = [.9225 .72 .0675 .05]; +InpE.HorizontalAlignment = 'left'; +InpE.FontUnits = 'Normalized'; +InpE.FontSize = 0.6; +InpE.Tag = 'InpE'; + +%% create input and text fields (Spin & g) +textSG = uicontrol(fig,'Style','text'); +textSG.String = 'Spin and g-value'; +textSG.Units = 'Normalized'; +textSG.Position = [.71 .60 .28 .05]; +textSG.HorizontalAlignment = 'center'; +textSG.FontUnits = 'Normalized'; +textSG.FontSize = 0.6; +textSG.FontWeight = 'bold'; +textSG.Tag = 'textSG'; + +textS = uicontrol(fig,'Style','text'); +textS.String = 'Spin = '; +textS.Units = 'Normalized'; +textS.Position = [.71 .55 .0675 .05]; +textS.HorizontalAlignment = 'right'; +textS.FontUnits = 'Normalized'; +textS.FontSize = 0.6; +textS.Tag = 'textS'; + +InpS = uicontrol(fig,'Style','edit'); +InpS.String = '1'; +InpS.Units = 'Normalized'; +InpS.Position = [.7775 .55 .0675 .05]; +InpS.HorizontalAlignment = 'left'; +InpS.FontUnits = 'Normalized'; +InpS.FontSize = 0.6; +InpS.Tag = 'InpS'; + +textG = uicontrol(fig,'Style','text'); +textG.String = 'g-value = '; +textG.Units = 'Normalized'; +textG.Position = [.855 .55 .0675 .05]; +textG.HorizontalAlignment = 'right'; +textG.FontUnits = 'Normalized'; +textG.FontSize = 0.6; +textG.Tag = 'textG'; + +InpG = uicontrol(fig,'Style','edit'); +InpG.String = '2'; +InpG.Units = 'Normalized'; +InpG.Position = [.9225 .55 .0675 .05]; +InpG.HorizontalAlignment = 'left'; +InpG.FontUnits = 'Normalized'; +InpG.FontSize = 0.6; +InpG.Tag = 'InpG'; + +%% create input and text fields (linewidth) +textLW = uicontrol(fig,'Style','text'); +textLW.String = 'Linewidth'; +textLW.Units = 'Normalized'; +textLW.Position = [.71 .43 .28 .05]; +textLW.HorizontalAlignment = 'center'; +textLW.FontUnits = 'Normalized'; +textLW.FontSize = 0.6; +textLW.FontWeight = 'bold'; +textLW.Tag = 'textLW'; + +textGauss = uicontrol(fig,'Style','text'); +textGauss.String = 'lw(Gau) = '; +textGauss.Units = 'Normalized'; +textGauss.Position = [.71 .38 .0675 .05]; +textGauss.HorizontalAlignment = 'right'; +textGauss.FontUnits = 'Normalized'; +textGauss.FontSize = 0.6; +textGauss.Tag = 'textGauss'; + +InpGauss = uicontrol(fig,'Style','edit'); +InpGauss.String = '1'; +InpGauss.Units = 'Normalized'; +InpGauss.Position = [.7775 .38 .0675 .05]; +InpGauss.HorizontalAlignment = 'left'; +InpGauss.FontUnits = 'Normalized'; +InpGauss.FontSize = 0.6; +InpGauss.Tag = 'InpGauss'; + +textLor = uicontrol(fig,'Style','text'); +textLor.String = 'lw(Lor) = '; +textLor.Units = 'Normalized'; +textLor.Position = [.855 .38 .0675 .05]; +textLor.HorizontalAlignment = 'right'; +textLor.FontUnits = 'Normalized'; +textLor.FontSize = 0.6; +textLor.Tag = 'textLor'; + +InpLor = uicontrol(fig,'Style','edit'); +InpLor.String = '0'; +InpLor.Units = 'Normalized'; +InpLor.Position = [.9225 .38 .0675 .05]; +InpLor.HorizontalAlignment = 'left'; +InpLor.FontUnits = 'Normalized'; +InpLor.FontSize = 0.6; +InpLor.Tag = 'InpLor'; + +uicontrol(InpTx); %passes focus to first input +uiwait(fig) + +%% Callback functions + function PreSimApplyButtonPushed(src,event) + %get values from params + Exp.mwFreq = params.mwFreq; % GHz + Exp.nPoints = length(params.Field_Vector); + Exp.CenterSweep = 0.1*[params.Field_Center params.Field_Sweep]; % mT (converted from Gauss) + Exp.Harmonic = 0; % zeroth harmonic + %get values from UI + T1 = str2double(get(InpTx,'String')); + T2 = str2double(get(InpTy,'String')); + T3 = str2double(get(InpTz,'String')); + Exp.Temperature = [T1 T2 T3]; %Triplet population + Sys.S = str2double(get(InpS,'String')); % Total Spin + Sys.g = str2double(get(InpG,'String')); % g-value + D = str2double(get(InpD,'String')); + E = str2double(get(InpE,'String')); + Sys.D = [D E]; % MHz, D and E values + lwGau = str2double(get(InpGauss,'String')); + lwLor = str2double(get(InpLor,'String')); + Sys.lw = [lwGau lwLor]; % mT, linewidth needs to be optimised + + end + + function PreSimDoneButtonPushed(src,event) + close 'Manual Simulation' + end + +end