diff --git a/src/external/MuSRFitGUI/devel/MSR.pm b/src/external/MuSRFitGUI/devel/MSR.pm
new file mode 100755
index 00000000..08f1ae23
--- /dev/null
+++ b/src/external/MuSRFitGUI/devel/MSR.pm
@@ -0,0 +1,1326 @@
+#use strict;
+package MSR;
+
+my $EMPTY="";
+my $SPACE=" ";
+
+my %DATADIRS = (
+ "LEM", "/mnt/data/nemu/his",
+ "GPS", "/afs/psi.ch/project/bulkmusr/data/gps",
+ "LTF", "/afs/psi.ch/project/bulkmusr/data/ltf",
+ "Dolly", "/afs/psi.ch/project/bulkmusr/data/dolly",
+ "GPD", "/afs/psi.ch/project/bulkmusr/data/gpd"
+ );
+
+my %BeamLines = ( "LEM", "MUE4", "GPS", "PIM3", "LTF", "PIM3", "Dolly", "PIE1", "GPD", "PIE1" );
+
+my %Def_Format =
+ ( "LEM", "ROOT-NPP", "GPS", "PSI-BIN", "LTF", "PSI-BIN", "Dolly", "PSI-BIN" , "GPD", "PSI-BIN");
+
+# Additions to paremeters' names
+my $erradd = "d";
+my $minadd = "_min";
+my $maxadd = "_max";
+
+##########################################################################
+# CreateMSR
+#
+# Input in %All
+# Required:
+# $All{"FitType1/2/3"} - Function types, 3 components
+# $All{"LRBF"} - Histograms, comma separated
+# $All{"Tis"}
+# $All{"Tfs"}
+# $All{"BINS"}
+# $All{"FILENAME"}
+# $All{"go"}
+# $All{"TITLE"}
+# $All{"RunNumbers"}
+# $All{"FitAsyType"}
+# $All{"BeamLine"}
+# $All{"YEAR"}
+#
+# Optional:
+# $All{"Sh_$Param"}
+# $All{"ltc"}
+# $All{"$Param"} value, error, min, and max
+# $All{"logx/y"}
+# $All{"Xi/f"}
+#
+# Output
+# $Full_T_Block - Full theory block
+# @Paramcomp - Space separated list of parameters for each component
+# FILENAME.msr - MSR file saved
+#
+##########################################################################
+sub CreateMSR {
+ my %All = %{$_[0]};
+
+ # Start with empty array
+ my @FitTypes = ();
+
+ foreach ($All{"FitType1"},$All{"FitType2"},$All{"FitType3"}) {
+ if ($_ ne "None") {
+ @FitTypes=(@FitTypes,$_);
+ }
+ }
+
+ my @Hists = split( /,/, $All{"LRBF"} );
+ my @TiVals = split( /,/, $All{"Tis"} );
+ my @TfVals = split( /,/, $All{"Tfs"} );
+ my @BINVals = split( /,/, $All{"BINS"} );
+ my $FILENAME = $All{"FILENAME"};
+ my $BeamLine = $All{"BeamLine"};
+ my $YEAR = $All{"YEAR"};
+
+ my $Step = $All{"go"};
+ if ( $Step eq "PLOT" ) {
+ $FITMINTYPE = $EMPTY;
+ }
+ elsif ( $Step eq "MIGRAD" ) {
+ $FITMINTYPE = "MINIMIZE\nMIGRAD\nHESSE";
+ }
+ elsif ( $Step eq "MINOS" ) {
+ $FITMINTYPE = "MIGRAD\nMINOS";
+ }
+ elsif ( $Step eq "SIMPLEX" ) {
+ $FITMINTYPE = "SCAN\nSIMPLEX";
+ }
+
+
+ # First create the THEORY Block
+ my ($Full_T_Block,$Paramcomp_ref)=MSR::CreateTheory(@FitTypes);
+
+ my @Paramcomp = @$Paramcomp_ref;
+
+ # Counter for RUNS
+ my $iRun = 1;
+
+ # Counter of Params
+ my $PCount = 1;
+
+ # Need to select here RUNSAuto or RUNSManual
+ # $RUNSType = 0 (Auto) or 1 (Manual)
+ my $RUNSType = 0;
+ my @RUNS=();
+ if ($All{"RunNumbers"} ne "") {
+ @RUNS=split( /,/, $All{"RunNumbers"});
+ $RUNSType = 0;
+ }
+ elsif ($All{"RunFiles"} ne "") {
+ @RUNS=split( /,/, $All{"RunFiles"});
+ $RUNSType = 1;
+ }
+
+ # $shcount is a counter for shared parameters
+ if ( $#RUNS == 0 ) {
+ my $shcount = 1;
+ }
+ else {
+ if ( $All{"Sh_Alpha"} == 1 ) {
+ my $shcount = 1;
+ } else {
+ my $shcount = 0;
+ }
+ }
+
+ $shcount = 1;
+ my $RUN_Block = $EMPTY;
+ my $RUNS_Line = $EMPTY;
+
+ # range order
+ my $Range_Order = 1;
+ foreach my $RUN (@RUNS) {
+#######################################################################
+ # Prepare the Parameters and initial values block
+ my $component = 0;
+ my $Single_RUN = $EMPTY;
+
+ # Prepare map line for each run
+ my $MAP_Line = "map ";
+
+ # How many non-shared parameter for this RUN?
+ my $nonsh = 0;
+
+ # Prepeare Alpha line for the RUN block. Empty initially.
+ my $Alpha_Line = $EMPTY;
+
+ # Loop over all components in the fit
+ foreach my $FitType (@FitTypes) {
+ ++$component;
+ my $Parameters = $Paramcomp[ $component - 1 ];
+ my @Params = split( /\s+/, $Parameters );
+
+ # For the first component we need Alpha for Asymmetry fits
+ if ($component == 1) {
+ unshift( @Params, "Alpha" );
+ }
+
+ foreach $Param (@Params) {
+ $Param_ORG = $Param;
+ if ( ($#FitTypes != 0) && ($Param ne "Alpha") ) {
+ $Param = join( $EMPTY, $Param, "_", "$component" );
+ }
+
+ # If we have only one RUN then everything is shared
+ if ( $#RUNS == 0 ) {
+ $Shared = 1;
+ }
+ # Otherwise check input if it was marked as shared
+ else {
+ $Shared = $All{"Sh_$Param"};
+ }
+
+ # Alpha Line
+ #
+ # If you encounter alpha in the parameters list make sure
+ # to fill this line for the RUN block.
+ if ( $Param_ORG eq "Alpha" ) {
+ if ($Shared) {
+ # If alpha is shared use always the same line
+ $Alpha_Line = "alpha 1\n";
+ }
+ else {
+ # Otherwise modify alpha line accordingly
+ $Alpha_Line = "alpha $PCount\n";
+ }
+ }
+
+ # End of Alpha Line
+####################################################################################################
+
+ # Start preparing the parameters block
+ if ($Shared) {
+
+ # Parameter is shared enough to keep order from first run
+ if ( $iRun == 1 ) {
+ $Full_T_Block =~ s/$Param_ORG/$PCount/;
+ ++$shcount;
+ ++$PCount;
+ }
+ } else {
+ # Parameter is not shared, use map unless it is a single RUN fit
+ # Skip adding to map line in these cases
+ if ( $Param ne "Alpha" && $#RUNS != 0 )
+ {
+ ++$nonsh;
+ $Full_T_Block =~ s/$Param_ORG/map$nonsh/;
+ $MAP_Line = join( ' ', $MAP_Line, $PCount );
+ }
+ ++$PCount;
+ }
+ $NtotPar = $PCount;
+ }
+ }
+
+ # Finished preparing the FITPARAMETERS block
+#######################################################################
+
+ # For each defined range we need a block in the RUN-Block
+ # Also for each histogram in Single Histograms fits
+ # Also for Imaginaryand and Real for RRF fits
+
+ $RUN = $RUNS[ $iRun - 1 ];
+
+ if ($All{"RUNSType"}) {
+ $RUN_Line = MSR::RUNFileNameMan($RUN);
+ } else {
+ $RUN_Line = MSR::RUNFileNameAuto($RUN,$YEAR,$BeamLine);
+ }
+
+
+ $Type_Line = "fittype 2";
+ $PLT = 2;
+ $Hist_Lines =
+ "forward $Hists[0]\nbackward $Hists[1]";
+
+ $Bg_Line = "background";
+ $Data_Line = "data";
+ $NHist=1;
+ foreach $Hist (@Hists) {
+ foreach ("t0","Bg1","Bg2","Data1","Data2") {
+ $Name = "$_$NHist";
+# If empty fill with defaults
+ if ($All{$Name} eq "") {
+ $All{$Name}=MSR::T0BgData($_,$Hist,$BeamLine);
+ }
+ }
+ $Bg_Line = $Bg_Line." ".$All{"Bg1$NHist"}." ".$All{"Bg2$NHist"};
+ $Data_Line =$Data_Line." ".$All{"Data1$NHist"}." ".$All{"Data2$NHist"};
+ $NHist++;
+ }
+
+ $FRANGE_Line = "fit TINI TFIN";
+ $PAC_Line = "packing BINNING";
+
+ $Single_RUN =
+"$RUN_Line\n$Type_Line\n$Alpha_Line$Hist_Lines\n$Bg_Line\n$Data_Line\n$MAP_Line\n$FRANGE_Line\n$PAC_Line\n\n";
+
+ # Now add the appropriate values of fit range and packing
+ my $Range_Min = 8;
+ my $Range_Max = 0;
+ my $k = 0;
+ foreach my $Ti (@TiVals) {
+ my $Tf = $TfVals[$k];
+ my $BIN = $BINVals[$k];
+ $RUN_Block = $RUN_Block . $Single_RUN;
+ $RUN_Block =~ s/TINI/$Ti/g;
+ $RUN_Block =~ s/TFIN/$Tf/g;
+ $RUN_Block =~ s/BINNING/$BIN/g;
+
+ # For multiple ranges use this
+ if ( $Ti < $Range_Min ) { $Range_Min = $Ti; }
+ if ( $Tf > $Range_Max ) { $Range_Max = $Tf; }
+
+ $RUNS_Line = "$RUNS_Line " . $Range_Order;
+ ++$k;
+ ++$Range_Order;
+ }
+ ++$iRun;
+ }
+
+ # The number of runs is
+ $NRUNS = $iRun - 1;
+
+# Start constructing all blocks
+ my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"};
+ $TitleLine =~ s/,/:/g;
+
+ # Get parameter block from MSR::PrepParamTable(\%All);
+ my $FitParaBlk = "
+###############################################################
+FITPARAMETER
+###############################################################
+# No Name Value Err Min Max ";
+ my %PTable=MSR::PrepParamTable(\%All);
+ my $NParam=scalar keys( %PTable );
+# Fill the table with labels and values of parametr
+ for (my $iP=0;$iP<$NParam;$iP++) {
+ my ($Param,$value,$error,$minvalue,$maxvalue,$RUNtmp) = split(/,/,$PTable{$iP});
+ if ( $minvalue == $maxvalue ) {
+ $minvalue = $EMPTY;
+ $maxvalue = $EMPTY;
+ }
+ $PCount=$iP+1;
+ $FitParaBlk = $FitParaBlk."
+ $PCount $Param $value $error $error $minvalue $maxvalue";
+ }
+
+
+ $Full_T_Block = "
+###############################################################
+THEORY
+###############################################################
+$Full_T_Block
+";
+
+ $RUN_Block =
+ "###############################################################
+$RUN_Block";
+
+ $COMMANDS_Block =
+ "###############################################################
+COMMANDS
+FITMINTYPE
+SAVE
+";
+ $COMMANDS_Block =~ s/FITMINTYPE/$FITMINTYPE/g;
+
+ # Check if log x and log y are selected
+ my $logxy = $EMPTY;
+ if ( $All{"logx"} eq "y" ) { $logxy = $logxy . "logx\n"; }
+ if ( $All{"logy"} eq "y" ) { $logxy = $logxy . "logy\n"; }
+
+ # Check if a plot range is defined (i.e. different from fit)
+ $PRANGE_Line = "use_fit_ranges";
+ if ( $All{"Xi"} != $All{"Xf"} ) {
+
+ # if ($Yi != $Yf) {
+ $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"};
+
+ # } else {
+ # $PRANGE_Line = "range $Xi $Xf";
+ # }
+ }
+
+ $PLOT_Block =
+ "###############################################################
+PLOT $PLT
+runs $RUNS_Line
+$PRANGE_Line
+$logxy";
+
+ if ($All{"FUNITS"} eq "") {$All{"FUNITS"}="MHz";}
+ if ($All{"FAPODIZATION"} eq "") {$All{"FAPODIZATION"}="STRONG";}
+ if ($All{"FPLOT"} eq "") {$All{"FPLOT"}="POWER";}
+
+
+ $FOURIER_Block=
+ "###############################################################
+FOURIER
+units FUNITS # units either 'Gauss', 'MHz', or 'Mc/s'
+fourier_power 12
+apodization FAPODIZATION # NONE, WEAK, MEDIUM, STRONG
+plot FPLOT # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
+phase 8.50";
+
+ $FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g;
+ $FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g;
+ $FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g;
+
+ # Don't know why but it is needed initially
+ $STAT_Block =
+ "###############################################################
+STATISTIC --- 0000-00-00 00:00:00
+*** FIT DID NOT CONVERGE ***";
+
+
+ # Empty line at the end of each block
+ my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$RUN_Block\n$COMMANDS_Block\n$PLOT_Block\n$FOURIER_Block\n$STAT_Block\n";
+
+# Open output file FILENAME.msr
+ open( OUTF,q{>},"$FILENAME.msr" );
+ print OUTF ("$FullMSRFile");
+ close(OUTF);
+ return($Full_T_Block,\@Paramcomp);
+}
+
+########################
+# CreateMSRSingleHist
+########################
+sub CreateMSRSingleHist {
+ my %All = %{$_[0]};
+
+ # Start with empty array
+ my @FitTypes = ();
+
+ foreach ($All{"FitType1"},$All{"FitType2"},$All{"FitType3"}) {
+ if ($_ ne "None") {
+ @FitTypes=(@FitTypes,$_);
+ }
+ }
+
+ my @Hists = split( /,/, $All{"LRBF"} );
+ my @TiVals = split( /,/, $All{"Tis"} );
+ my @TfVals = split( /,/, $All{"Tfs"} );
+ my @BINVals = split( /,/, $All{"BINS"} );
+ my $FILENAME = $All{"FILENAME"};
+ my $BeamLine = $All{"BeamLine"};
+ my $YEAR = $All{"YEAR"};
+
+ my $Step = $All{"go"};
+ if ( $Step eq "PLOT" ) {
+ $FITMINTYPE = $EMPTY;
+ } elsif ( $Step eq "MIGRAD" ) {
+ $FITMINTYPE = "MINIMIZE\nMIGRAD\nHESSE";
+ } elsif ( $Step eq "MINOS" ) {
+ $FITMINTYPE = "MIGRAD\nMINOS";
+ } elsif ( $Step eq "SIMPLEX" ) {
+ $FITMINTYPE = "SCAN\nSIMPLEX";
+ }
+
+ # First create the THEORY Block
+ my ($Full_T_Block,$Paramcomp_ref)=MSR::CreateTheory(@FitTypes);
+ my @Paramcomp = @$Paramcomp_ref;
+
+ # Counter for RUNS
+ my $iRun = 1;
+
+ # Counter of Params
+ my $PCount = 1;
+
+ # Need to select here RUNSAuto or RUNSManual
+ # $RUNSType = 0 (Auto) or 1 (Manual)
+ my $RUNSType = 0;
+ my @RUNS=();
+ if ($All{"RunNumbers"} ne "") {
+ @RUNS=split( /,/, $All{"RunNumbers"});
+ $RUNSType = 0;
+ }
+ elsif ($All{"RunFiles"} ne "") {
+ @RUNS=split( /,/, $All{"RunFiles"});
+ $RUNSType = 1;
+ }
+
+ # $shcount is a counter for shared parameters
+ if ( $#RUNS == 0 && $#Hists == 0) {
+ my $shcount = 1;
+ } else {
+ if ( $All{"Sh_N0"} == 1 ) {
+ my $shcount = 1;
+ } elsif ( $All{"Sh_NBg"} == 1 ) {
+ my $shcount = 1;
+ } else {
+ my $shcount = 0;
+ }
+ }
+
+ $shcount = 1;
+ my $RUN_Block = $EMPTY;
+ my $RUNS_Line = $EMPTY;
+
+ # range order
+ my $Range_Order = 1;
+ foreach my $RUN (@RUNS) {
+#######################################################################
+# For a single histogram fit we basically need to repeat this for each hist
+ foreach my $Hist (@Hists) {
+
+ # Prepare the Parameters and initial values block
+ my $component = 0;
+ my $Single_RUN = $EMPTY;
+
+ # Prepare map line for each run
+ my $MAP_Line = "map ";
+
+ # How many non-shared parameter for this RUN?
+ my $nonsh = 0;
+
+ # Prepeare N0/NBg line for the RUN block. Empty initially.
+ my $N0Bg_Line = $EMPTY;
+
+ # Loop over all components in the fit
+ foreach my $FitType (@FitTypes) {
+ ++$component;
+ my $Parameters = $Paramcomp[ $component - 1 ];
+ my @Params = split( /\s+/, $Parameters );
+
+ # For the first component we need N0 and NBg for SingleHist fits
+ if ( $component == 1 && $All{"FitAsyType"} eq "SingleHist" ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+ foreach $Param (@Params) {
+ $Param_ORG = $Param;
+ $Param=$Param.$Hist;
+ if ( ($#FitTypes != 0) && ( $Param ne "N0" && $Param ne "NBg" ) ) {
+ $Param = join( $EMPTY, $Param, "_", "$component" );
+ }
+
+ # If we have only one RUN with one Histogram then everything is shared
+ if ( $#RUNS == 0 && $#Hists == 0 ) {
+ $Shared = 1;
+ }
+ # Otherwise check input if it was marked as shared
+ else {
+ $Shared = $All{"Sh_$Param"};
+ }
+
+ # N0 and NBg Lines
+ #
+ # If you encounter N0 in the parameters list make sure
+ # to fill this line for the RUN block.
+ if ( $Param_ORG eq "N0" ) {
+ if ($Shared) {
+ $N0Bg_Line = "norm 1\n";
+ }
+ else {
+ $N0Bg_Line = "norm $PCount\n";
+ }
+
+ # Optional - add lifetime correction for SingleHist fits
+ if ( $All{"ltc"} eq "y" ) {
+ $N0Bg_Line = $N0Bg_Line . "lifetimecorrection\n";
+ }
+ }
+ # If you encounter NBg in the parameters list make sure
+ # to fill this line for the RUN block.
+ elsif ( $Param_ORG eq "NBg" ) {
+ if ($Shared) {
+ $N0Bg_Line = $N0Bg_Line . "backgr.fit 2\n";
+ }
+ else {
+ $N0Bg_Line = $N0Bg_Line . "backgr.fit $PCount\n";
+ }
+ }
+
+ # End of N0 and NBg Lines
+####################################################################################################
+
+ # Start preparing the parameters block
+ if ($Shared) {
+ # Parameter is shared enough to keep order from first run
+ if ( $iRun == 1 ) {
+ $Full_T_Block =~ s/$Param_ORG/$PCount/;
+ ++$shcount;
+ ++$PCount;
+ }
+ } else {
+ # Parameter is not shared, use map unless it is a single RUN fit
+ # Skip adding to map line in these cases
+ if ( $Param ne "N0" && $Param ne "NBg" && ($#RUNS != 0 || $#Hist != 0)) {
+ ++$nonsh;
+ $Full_T_Block =~ s/$Param_ORG/map$nonsh/;
+ $MAP_Line = join( ' ', $MAP_Line, $PCount );
+ }
+ ++$PCount;
+ }
+ $NtotPar = $PCount;
+ }
+ }
+
+ # Finished preparing the FITPARAMETERS block
+#######################################################################
+
+ # For each defined range we need a block in the RUN-Block
+ # Also for each histogram in Single Histograms fits
+ # Also for Imaginaryand and Real for RRF fits
+
+
+# This part can be shifted before the RUNS loop
+
+ $RUN = $RUNS[ $iRun - 1 ];
+
+ if ($All{"RUNSType"}) {
+ $RUN_Line = MSR::RUNFileNameMan($RUN);
+ } else {
+ $RUN_Line = MSR::RUNFileNameAuto($RUN,$YEAR,$BeamLine);
+ }
+
+ # What kind of fit? 0 - Single Histogram, 2 - Asymmetry, 4 - RRF
+ $Type_Line = "fittype 0";
+ $PLT = 0;
+ $Hist_Lines = "forward HIST";
+ $Bg_Line = $EMPTY;
+ $Data_Line = "data 3419 63000";
+
+ # Omit background and data lines for LTG,GPS and Dolly
+ if ( $BeamLine eq "Dolly" ) {
+ $Bg_Line = "background 50 250 50 250";
+ $Data_Line ="data 297 8000 294 8000";
+ } elsif ( $BeamLine eq "GPS" ) {
+ $Bg_Line = "background 40 120 40 120";
+ $Data_Line = "data 135 8000 135 8000";
+# $Data_Line = "data 135 8000 135 8000";
+ }
+
+ # $MAP_Line = "map 0 0 0 0 0 0 0 0 0 0";
+ $FRANGE_Line = "fit TINI TFIN";
+ $PAC_Line = "packing BINNING";
+
+ $Single_RUN = $EMPTY;
+ $Tmp_Hist_Line = $Hist_Lines;
+ $Tmp_Hist_Line =~ s/HIST/$Hist/g;
+ $Single_RUN = $Single_RUN
+ . "$RUN_Line\n$Type_Line\n$N0Bg_Line$Tmp_Hist_Line\n$Data_Line\n$MAP_Line\n$FRANGE_Line\n$PAC_Line\n\n";
+
+ # Now add the appropriate values of fit range and packing
+ my $Range_Min = 8;
+ my $Range_Max = 0;
+ my $k = 0;
+ foreach my $Ti (@TiVals) {
+ my $Tf = $TfVals[$k];
+ my $BIN = $BINVals[$k];
+ $RUN_Block = $RUN_Block . $Single_RUN;
+ $RUN_Block =~ s/TINI/$Ti/g;
+ $RUN_Block =~ s/TFIN/$Tf/g;
+ $RUN_Block =~ s/BINNING/$BIN/g;
+
+ # For multiple ranges use this
+ if ( $Ti < $Range_Min ) { $Range_Min = $Ti; }
+ if ( $Tf > $Range_Max ) { $Range_Max = $Tf; }
+ $RUNS_Line = "$RUNS_Line " . $Range_Order;
+ ++$k;
+ ++$Range_Order;
+ }
+ }
+ ++$iRun;
+ }
+
+ # The number of runs is
+ $NRUNS = $iRun - 1;
+
+# Start constructing all block
+ my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"};
+ $TitleLine =~ s/,/:/g;
+
+ # Get parameter block from MSR::PrepParamTable(\%All);
+ my $FitParaBlk = "
+###############################################################
+FITPARAMETER
+###############################################################
+# No Name Value Err Min Max ";
+ my %PTable=MSR::PrepParamTable(\%All);
+ my $NParam=scalar keys( %PTable );
+# Fill the table with labels and values of parametr
+ for (my $iP=0;$iP<$NParam;$iP++) {
+ my ($Param,$value,$error,$minvalue,$maxvalue,$RUNtmp) = split(/,/,$PTable{$iP});
+ if ( $minvalue == $maxvalue ) {
+ $minvalue = $EMPTY;
+ $maxvalue = $EMPTY;
+ }
+ $PCount=$iP+1;
+ $FitParaBlk = $FitParaBlk."
+ $PCount $Param $value $error $error $minvalue $maxvalue";
+ }
+
+ $Full_T_Block = "
+###############################################################
+THEORY
+###############################################################
+$Full_T_Block
+";
+
+ $RUN_Block =
+ "###############################################################
+$RUN_Block";
+
+ $COMMANDS_Block =
+ "###############################################################
+COMMANDS
+FITMINTYPE
+SAVE
+";
+ $COMMANDS_Block =~ s/FITMINTYPE/$FITMINTYPE/g;
+
+ # Check if log x and log y are selected
+ my $logxy = $EMPTY;
+ if ( $All{"logx"} eq "y" ) { $logxy = $logxy . "logx\n"; }
+ if ( $All{"logy"} eq "y" ) { $logxy = $logxy . "logy\n"; }
+
+ # Check if a plot range is defined (i.e. different from fit)
+ $PRANGE_Line = "use_fit_ranges";
+ if ( $All{"Xi"} != $All{"Xf"} ) {
+
+ # if ($Yi != $Yf) {
+ $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"};
+
+ # } else {
+ # $PRANGE_Line = "range $Xi $Xf";
+ # }
+ }
+
+ $PLOT_Block =
+ "###############################################################
+PLOT $PLT
+runs $RUNS_Line
+$PRANGE_Line
+$logxy";
+
+ if ($All{"FUNITS"} eq "") {$All{"FUNITS"}="MHz";}
+ if ($All{"FAPODIZATION"} eq "") {$All{"FAPODIZATION"}="STRONG";}
+ if ($All{"FPLOT"} eq "") {$All{"FPLOT"}="POWER";}
+
+
+ $FOURIER_Block=
+ "###############################################################
+FOURIER
+units FUNITS # units either 'Gauss', 'MHz', or 'Mc/s'
+fourier_power 12
+apodization FAPODIZATION # NONE, WEAK, MEDIUM, STRONG
+plot FPLOT # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE
+phase 8.50";
+
+ $FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g;
+ $FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g;
+ $FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g;
+
+ # Don't know why but it is needed initially
+ $STAT_Block =
+ "###############################################################
+STATISTIC --- 0000-00-00 00:00:00
+*** FIT DID NOT CONVERGE ***";
+
+
+ # Empty line at the end of each block
+ my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$RUN_Block\n$COMMANDS_Block\n$PLOT_Block\n$FOURIER_Block\n$STAT_Block\n";
+
+# Open output file FILENAME.msr
+ open( OUTF,q{>},"$FILENAME.msr" );
+ print OUTF ("$FullMSRFile");
+ close(OUTF);
+ return($Full_T_Block,\@Paramcomp);
+}
+
+
+########################
+# Createheory
+########################
+sub CreateTheory {
+ # This subroutine requires:
+ # @FitTypes - the array of the types of components (summed)
+
+ # It will return:
+ # $Full_T_Block - the full theory block with names of parameters
+ # @Paramcomp - an array of space separated list of parameters
+ # each member of the array is one component
+
+ my (@FitTypes) = @_;
+
+ # Start from this theory line for the different fitting functions
+ my %THEORY = (
+ "asymmetry", "Asy",
+ "simplExpo", "Lam",
+ "generExpo", "Lam Bet",
+ "simpleGss", "Sgm",
+ "statGssKT", "Sgm",
+ "statGssKTLF", "Frq Sgm",
+ "dynGssKTLF", "Frq Sgm Lam",
+ "statExpKT", "Lam",
+ "statExpKTLF", "Frq Aa",
+ "dynExpKTLF", "Frq Aa Lam",
+ "combiLGKT", "Lam Sgm",
+ "spinGlass", "Lam gam q",
+ "rdAnisoHf", "Frq Lam",
+ "TFieldCos", "Phi Frq",
+ "internFld", "Alp Phi Frq LamT LamL",
+ "Bessel", "Phi Frq",
+ "internBsl", "Alp Phi Frq LamT LamL",
+ "abragam", "Sgm gam",
+ "Meissner", "Phi Energy Field DeadLayer Lambda",
+ "skewedGss", "Phi Frq Sgmm Sgmp"
+ );
+
+#######################################################################
+ # Generate the full THEORY block
+ my $Full_T_Block = $EMPTY;
+ my $component = 0;
+ foreach my $FitType (@FitTypes) {
+ ++$component;
+ # Add components
+ if ( $component > 1 ) {
+ $Full_T_Block = $Full_T_Block . "\n+\n";
+ }
+
+ # For each component there is a THEORY block starting with "asymmetry"
+ my $T_Block = "asymmetry " . $THEORY{'asymmetry'};
+ my $Parameters = $THEORY{'asymmetry'};
+
+ # Compose the THEORY block
+ # The duplicate names are changed for multiplied signals or just
+ # change names to match parameters list declared for the function
+
+ # Stretch exponential
+ if ( $FitType eq "Stretch" ) {
+ $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} );
+ }
+
+ # Exponential
+ elsif ( $FitType eq "Exponential" ) {
+ $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} );
+ }
+
+ # Gaussian
+ elsif ( $FitType eq "Gaussian" ) {
+ $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} );
+ }
+
+ # Exponential with 0 relaxation
+ elsif ( $FitType eq "Background" ) {
+
+ # Do nothing
+ }
+
+ # Oscillationg exponential
+ elsif ( $FitType eq "ExponentialCos" ) {
+ $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} );
+ $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} );
+ }
+
+ # Oscillationg gaussian
+ elsif ( $FitType eq "GaussianCos" ) {
+ $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} );
+ $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} );
+ }
+
+ # Oscillationg stretch exponential
+ elsif ( $FitType eq "StretchCos" ) {
+ $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} );
+ $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} );
+ }
+
+ # Oscillationg Gaussian
+ elsif ( $FitType eq "GaussianCos" ) {
+ $T_Block = $T_Block . "\n" . "simpelGss " . $THEORY{'simpelGss'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} );
+ $T_Block = $T_Block . "\n" . "TFieldCos " . $THEORY{'TFieldCos'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'TFieldCos'} );
+ }
+
+ # Static Lorentzian KT
+ elsif ( $FitType eq "SLKT" ) {
+ $T_Block = $T_Block . "\n" . "statExpKT " . $THEORY{'statExpKT'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKT'} );
+ }
+
+ # Static Lorentzian KT LF
+ elsif ( $FitType eq "SLKTLF" ) {
+ $T_Block =
+ $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} );
+ }
+
+ # Dynamic Lorentzian KT LF
+ elsif ( $FitType eq "LDKTLF" ) {
+ $T_Block = $T_Block . "\n" . "dynExpKTLF " . $THEORY{'dynExpKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'dynExpKTLF'} );
+ }
+
+ # Static Gaussian KT
+ elsif ( $FitType eq "SGKT" ) {
+ $T_Block = $T_Block . "\n" . "statGssKT " . $THEORY{'statGssKT'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKT'} );
+ }
+
+ # Static Gaussian KT LF
+ elsif ( $FitType eq "SGKTLF" ) {
+ $T_Block =
+ $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} );
+ }
+
+ # Dynamic Gaussian KT LF
+ elsif ( $FitType eq "GDKTLF" ) {
+ $T_Block = $T_Block . "\n" . "dynGssKTLF " . $THEORY{'dynGssKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'dynGssKTLF'} );
+ }
+
+ # Now some more combined functions (multiplication).
+
+ # Lorentzian KT LF multiplied by exponential
+ elsif ( $FitType eq "LLFExp" ) {
+ $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} );
+ $T_Block =
+ $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} );
+ }
+
+ # Lorentzian KT LF multiplied by stretched exponential
+ elsif ( $FitType eq "LLFSExp" ) {
+ $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} );
+ $T_Block =
+ $T_Block . "\n" . "statExpKTLF " . $THEORY{'statExpKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statExpKTLF'} );
+ }
+
+ # Gaussian KT LF multiplied by exponential
+ elsif ( $FitType eq "GLFExp" ) {
+ $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} );
+ $T_Block =
+ $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} );
+ }
+
+ # Gaussian KT LF multiplied by stretched exponential
+ elsif ( $FitType eq "GLFSExp" ) {
+ $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} );
+ $T_Block =
+ $T_Block . "\n" . "statGssKTLF " . $THEORY{'statGssKTLF'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} );
+ }
+
+ # Meissner state model
+ elsif ( $FitType eq "Meissner" ) {
+ $T_Block = $T_Block . "\n" . "simpleGss " . $THEORY{'simpleGss'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'simpleGss'} );
+ $T_Block =
+ $T_Block . "\n"
+ . "userFcn libTFitPofB.so TLondon1DHS "
+ . $THEORY{'Meissner'};
+ $Parameters = join( $SPACE, $Parameters, $THEORY{'Meissner'} );
+ }
+
+ $Paramcomp[ $component - 1 ] = $Parameters;
+ $Full_T_Block = $Full_T_Block . $T_Block;
+
+ # Finished preparing the THEORY block
+#######################################################################
+ }
+ return($Full_T_Block,\@Paramcomp);
+} # End CreateTheory
+
+########################
+# ExtractParamBlk
+########################
+sub ExtractParamBlk {
+# This subroutine takes the MSR file as input and extracts the parameters
+# with the corresponding values, errors etc...
+
+# Take the msr file as input array of lines
+ my @file=@_;
+
+ my $NFITPARAMETERS=0;
+ my $NTHEORY=0;
+ my $NRUN=0;
+
+# Remove comment lines
+ @file = grep {!/^\#/} @file;
+# Remove empty lines
+ @file = grep {/\S/} @file;
+
+# Identify different blocks
+ my $i=0;
+ my $line ="";
+ foreach $line (@file)
+ {
+ if (grep {/FITPARAMETER/} $line) {$NFITPARAMETERS=$i;}
+ if (grep {/THEORY/} $line) { $NTHEORY=$i;}
+ if ((grep {/RUN/} $line) & $NRUN==0) { $NRUN=$i;}
+ $i++;
+ }
+ my @FPBlock=@file[$NFITPARAMETERS+1..$NTHEORY-1];
+ my @TBlock=@file[$NTHEORY+1..$NRUN-1];
+
+# Split parameter's line to extract values and errors
+ foreach $line (@FPBlock) {
+ my @Param=split(/\s+/,$line);
+ }
+
+ return(\@FPBlock)
+}
+
+
+########################
+# T0BgData
+# Function return the defaul value of t0, Bg and Data bin
+# input should be
+# $Name is t0,Bg1,Bg2,Data1,Data2
+# $Hist is the histogram number
+# $BeamLine in the name of beamline
+########################
+sub T0BgData {
+# Take this information as input arguments
+ (my $Name, my $Hist, my $BeamLine) = @_;
+
+# These are the default values, ordered by beamline
+# Comma at the beginning means take default t0 from file
+# The order is pairs of "HistNumber","t0,Bg1,Bg2,Data1,Data2"
+ my %LEM=("1",",66000,66500,3419,63000",
+ "2",",66000,66500,3419,63000",
+ "3",",66000,66500,3419,63000",
+ "4",",66000,66500,3419,63000");
+
+ my %GPS=("1",",40,120,135,8000",
+ "2",",40,120,135,8000",
+ "3",",40,120,135,8000",
+ "4",",40,120,135,8000");
+
+ my %Dolly=("1",",50,250,297,8000",
+ "2",",50,250,297,8000",
+ "3",",50,250,297,8000",
+ "4",",50,250,297,8000");
+
+ my %RV=();
+
+ if ($BeamLine eq "LEM") {
+ my $HistParams=$LEM{$Hist};
+ ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams);
+ }
+ elsif ($BeamLine eq "Dolly") {
+ my $HistParams=$Dolly{$Hist};
+ ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams);
+ }
+ elsif ($BeamLine eq "GPS") {
+ my $HistParams=$GPS{$Hist};
+ ($RV{"t0"},$RV{"Bg1"},$RV{"Bg2"},$RV{"Data1"},$RV{"Data2"})=split(/,/,$HistParams);
+ }
+ return $RV{$Name};
+
+}
+
+########################
+# PrepParamTable
+# Function return a Hash with a table of parameters for the fit
+# input should be
+# %All
+########################
+sub PrepParamTable {
+# Take this information as input arguments
+# "Smart" default value of the fit parameters.
+ my %Defaults = (
+ "Asy", "0.15", "dAsy", "0.01",
+ "Asy_min", "0", "Asy_max", "0",
+ "Alpha", "1.0", "dAlpha", "0.01",
+ "Alpha_min", "0", "Alpha_max", "0",
+ "N0", "300.0", "dN0", "0.01",
+ "N0_min", "0", "N0_max", "0",
+ "NBg", "30.0", "dNBg", "0.01",
+ "NBg_min", "0", "NBg_max", "0",
+ "Lam", "1.0", "dLam", "0.01",
+ "Lam_min", "0", "Lam_max", "0",
+ "Gam", "1.0", "dGam", "0.01",
+ "Gam_min", "0", "Gam_max", "0",
+ "Bet", "0.5", "dBet", "0.01",
+ "Bet_min", "0", "Bet_max", "0",
+ "Two", "2.0", "dTwo", "0.0",
+ "Two_min", "0", "Two_max", "0",
+ "Del", "0.1", "dDel", "0.01",
+ "Del_min", "0", "Del_max", "0",
+ "Sgm", "0.1", "dSgm", "0.01",
+ "Sgm_min", "0", "Sgm_max", "0",
+ "Aa", "0.1", "dAa", "0.01",
+ "Aa_min", "0", "Aa_max", "0",
+ "q", "0.1", "dq", "0.01",
+ "q_min", "0", "q_max", "0",
+ "Bg", "0.036", "dBg", "0.01",
+ "Bg_min", "0", "Bg_max", "0",
+ "bgrlx", "0.", "dbgrlx", "0.0",
+ "bgrlx_min", "0", "bgrlx_max", "0",
+ "Frq", "1.0", "dFrq", "1.",
+ "Frq_min", "0", "Frq_max", "0",
+ "Field", "100.0", "dField", "1.",
+ "Field_min", "0", "Field_max", "0",
+ "Energy", "14.1", "dEnergy", "0.",
+ "Energy_min", "0", "Energy_max", "0",
+ "DeadLayer", "10.", "dDeadLayer", "0.1",
+ "DeadLayer_min", "0", "DeadLayer_max", "0",
+ "Lambda", "128.1", "dLambda", "0.1",
+ "Lambda_min", "0", "Lambda_max", "0",
+ "Phi", "1.", "dPhi", "0.01",
+ "Phi_min", "0", "Phi_max", "0"
+ );
+
+ my $erradd = "d";
+ my $minadd = "_min";
+ my $maxadd = "_max";
+
+# First assume nothing is shared
+ my $Shared = 0;
+
+# Reset output Hash
+ %ParTable = ();
+
+ my %All = %{$_[0]};
+ my @RUNS = ();
+ if ($All{"RUNSType"}) {
+ @RUNS = split( /,/, $All{"RunFiles"} );
+ } else {
+ @RUNS = split( /,/, $All{"RunNumbers"} );
+ }
+ my @Hists = split( /,/, $All{"LRBF"} );
+
+ my @FitTypes =();
+ foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) {
+ if ( $FitType ne "None" ) { push( @FitTypes, $FitType ); }
+ }
+# Get theory block to determine the size of the table
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes);
+# For now the line below does not work. Why?
+# my $Paramcomp_ref=$All{"Paramcomp_ref"};
+ my @Paramcomp = @$Paramcomp_ref;
+ my $Full_T_Block= $All{"Full_T_Block"};
+ my $PCount =0;
+ my $iRun =0;
+ my $value =0;
+ my $error = 0;
+ my $minvalue = 0;
+ my $maxvalue = 0;
+ my $Component=1;
+
+ foreach my $RUN (@RUNS) {
+ $iRun++;
+ $Component=1;
+ if ($All{"FitAsyType"} eq "Asymmetry") {
+ foreach my $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+ if ( $Component == 1 ) {
+ unshift( @Params, "Alpha" );
+ }
+
+# This is the counter for parameters of this component
+ my $NP=1;
+ $Shared = 0;
+# Change state/label of parameters
+ foreach my $Param (@Params) {
+ my $Param_ORG = $Param;
+ if ( $#FitTypes != 0 && ( $Param ne "Alpha" ) ){
+ $Param = join( "", $Param, "_", "$Component" );
+ }
+
+ $Shared = $All{"Sh_$Param"};
+ if ( $Shared!=1 || $iRun == 1 ) {
+# It there are multiple runs index the parameters accordingly
+ $Param=$Param."_".$iRun;
+# Check if this parameter has been initialized befor. If not take from defaults
+ $value = $All{"$Param"};
+ if ( $value ne "" ) {
+ $error = $All{"$erradd$Param"};
+ $minvalue = $All{"$Param$minadd"};
+ $maxvalue = $All{"$Param$maxadd"};
+ } else {
+# I need this although it is already in the MSR.pm module, just for this table
+# We can remove it from the MSR module later...
+# Or keep in the MSR as function ??
+ $value = $Defaults{$Param_ORG};
+ $error = $Defaults{ join( "", $erradd, $Param_ORG ) };
+ $minvalue = $Defaults{ join("", $Param_ORG, $minadd ) };
+ $maxvalue = $Defaults{ join("", $Param_ORG, $maxadd ) };
+ }
+ $values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN);
+ $ParTable{$PCount}=$values;
+ $PCount++;
+ }
+ $NP++;
+ }
+ $Component++;
+ }
+ }
+ elsif ($All{"FitAsyType"} eq "SingleHist") {
+# For a single histogram fit we basically need to repeat this for each hist
+ foreach my $Hist (@Hists) {
+ $Component=1;
+ foreach my $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+ if ( $Component == 1 ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+# This is the counter for parameters of this component
+ my $NP=1;
+ $Shared = 0;
+# Change state/label of parameters
+ foreach my $Param (@Params) {
+ my $Param_ORG = $Param;
+ $Param=$Param.$Hist;
+ if ( $#FitTypes != 0 && ( $Param_ORG ne "N0" && $Param_ORG ne "NBg" ) ){
+ $Param = join( "", $Param, "_", "$Component" );
+ }
+
+ $Shared = $All{"Sh_$Param"};
+ if ( $Shared!=1 || $iRun == 1 ) {
+# It there are multiple runs index the parameters accordingly
+ $Param=$Param."_".$iRun;
+# Check if this parameter has been initialized befor. If not take from defaults
+ $value = $All{"$Param"};
+ if ( $value ne "" ) {
+ $error = $All{"$erradd$Param"};
+ $minvalue = $All{"$Param$minadd"};
+ $maxvalue = $All{"$Param$maxadd"};
+ } else {
+# I need this although it is already in the MSR.pm module, just for this table
+# We can remove it from the MSR module later...
+# Or keep in the MSR as function ??
+ $value = $Defaults{$Param_ORG};
+ $error = $Defaults{ join( "", $erradd, $Param_ORG ) };
+ $minvalue = $Defaults{ join("", $Param_ORG, $minadd ) };
+ $maxvalue = $Defaults{ join("", $Param_ORG, $maxadd ) };
+ }
+ $values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN);
+ $ParTable{$PCount}=$values;
+ $PCount++;
+ }
+ $NP++;
+ }
+ $Component++;
+ }
+ }
+ }
+
+ }
+ return %ParTable;
+}
+
+
+########################
+# RUNFileNameAuto
+# Function return the RUN_Line for a given RUN
+# input should be
+# $RUN is the run number
+# $YEAR is the year
+# $BeamLine in the name of beamline
+########################
+sub RUNFileNameAuto {
+# Take this information as input arguments
+ (my $RUN, my $YEAR, my $BeamLine) = @_;
+
+ my $DATADIR = $DATADIRS{$BeamLine};
+ my $RUNtmp = $EMPTY;
+ if ( $RUN < 10 ) { $RUNtmp = "000" . $RUN; }
+ elsif ( $RUN < 100 ) { $RUNtmp = "00" . $RUN; }
+ elsif ( $RUN < 1000 ) { $RUNtmp = "0" . $RUN; }
+ else { $RUNtmp=$RUN; }
+
+ # Get current year
+ my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
+ localtime( time() );
+ my $current_year = $year + 1900;
+
+ if ( $BeamLine eq "LEM" ) {
+ $RUN_File_Name = "lem" . substr( $YEAR, 2 ) . "_his_" . $RUNtmp;
+ $RUNFILE = "$DATADIR/$YEAR/$RUN_File_Name";
+ }
+ elsif ( $BeamLine eq "GPS" ) {
+ $RUN_File_Name = "deltat_pta_gps_" . $RUNtmp;
+ if ( $YEAR == $current_year ) {
+ $RUNFILE = "$DATADIR/$RUN_File_Name";
+ }
+ else {
+ $RUNFILE = "$DATADIR/d$YEAR/pta/$RUN_File_Name";
+ }
+ }
+ elsif ( $BeamLine eq "LTF" ) {
+ $RUN_File_Name = "deltat_pta_ltf_" . $RUNtmp;
+ if ( $YEAR == $current_year ) {
+ $RUNFILE = "$DATADIR/$RUN_File_Name";
+ }
+ else {
+ $RUNFILE = "$DATADIR/d$YEAR/pta/$RUN_File_Name";
+ }
+ }
+ elsif ( $BeamLine eq "Dolly" ) {
+ $RUN_File_Name = "deltat_pta_dolly_" . $RUNtmp;
+ if ( $YEAR == $current_year ) {
+ $RUNFILE = "$DATADIR/$RUN_File_Name";
+ }
+ else {
+ $RUNFILE = "$DATADIR/d$YEAR/pta/$RUN_File_Name";
+ }
+ }
+ elsif ( $BeamLine eq "GPD" ) {
+ $RUN_File_Name = "deltat_pta_gpd_" . $RUNtmp;
+ if ( $YEAR == $current_year ) {
+ $RUNFILE = "$DATADIR/$RUN_File_Name";
+ }
+ else {
+ $RUNFILE = "$DATADIR/d$YEAR/pta/$RUN_File_Name";
+ }
+ }
+ my $RUN_Line = join( $SPACE,
+ "RUN", $RUNFILE, $BeamLines{$BeamLine}, "PSI",
+ $Def_Format{$BeamLine} );
+
+ return $RUN_Line;
+}
+
+########################
+# RUNFileNameMan
+# Function return the RUN_Line for a given RUN
+# input should be
+# $RUN is the run number
+# $YEAR is the year
+# $BeamLine in the name of beamline
+########################
+sub RUNFileNameMan {
+ my %EXTs = ("root","ROOT-NPP",
+ "bin","PSI-BIN",
+ "msr","MUD");
+
+# Take this information as input arguments
+ (my $RUN) = @_;
+ my @tmp = split(/\./,$RUN);
+ my $EXT = @tmp[$#tmp];
+
+ $RUN =~ s/\.[^.]+$//;
+
+ my $RUN_Line = join( $SPACE,
+ "RUN", $RUN, "MUE4", "PSI",$EXTs{$EXT});
+
+ return $RUN_Line;
+}
+
+1;
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.pl b/src/external/MuSRFitGUI/devel/MuSRFit.pl
new file mode 100755
index 00000000..ab7e72ed
--- /dev/null
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.pl
@@ -0,0 +1,2816 @@
+# Form implementation generated from reading ui file 'MuSRFit.ui'
+#
+# Created: Thu Sep 10 17:43:10 2009
+# by: The PerlQt User Interface Compiler (puic)
+#
+# WARNING! All changes made in this file will be lost!
+
+
+use strict;
+use utf8;
+
+
+package MuSRFitform;
+use Qt;
+use Qt::isa qw(Qt::MainWindow);
+use Qt::slots
+ fileOpen => [],
+ fileSave => [],
+ fileChangeDir => [],
+ filePrint => [],
+ fileExit => [],
+ editUndo => [],
+ editRedo => [],
+ editCut => [],
+ editCopy => [],
+ editPaste => [],
+ helpIndex => [],
+ helpContents => [],
+ helpAbout => [],
+ CreateAllInput => [],
+ CallMSRCreate => [],
+ UpdateMSRFileInitTable => [],
+ ActivateT0Hists => [],
+ ActivateShComp => [],
+ InitializeTab => [],
+ TabChanged => [],
+ GoFit => [],
+ GoPlot => [],
+ ShowMuSRT0 => [],
+ T0Update => [],
+ RunSelectionToggle => [],
+ fileBrowse => [];
+use Qt::attributes qw(
+ musrfit_tabs
+ RUNSPage
+ groupBox7
+ FitType2
+ TfsLabel
+ FitType1
+ BINS
+ Comp3Label
+ Tis
+ Tfs
+ Comp1Label
+ BINSLabel
+ TisLabel
+ FitType3
+ Comp2Label
+ FitAsyTypeLabel
+ FitAsyType
+ LRBFLabel
+ LRBF
+ RUNSAuto
+ BeamLineLabel
+ BeamLine
+ YEARLabel
+ YEAR
+ RunNumbers
+ RUNSMan
+ RunFiles
+ Browse
+ PlotMSR_2
+ go_2
+ TabPage
+ Minimization
+ MINIMIZE
+ MIGRAD
+ SIMPLEX
+ ErrorCalc
+ HESSE
+ MINOS
+ go
+ PlotMSR
+ FitTextOutput
+ SharingPahe
+ buttonGroupSharing
+ SharingComp1
+ ShParam_1_1
+ ShParam_1_2
+ ShParam_1_3
+ ShParam_1_4
+ ShParam_1_5
+ ShParam_1_6
+ ShParam_1_7
+ ShParam_1_8
+ ShParam_1_9
+ Comp1ShLabel
+ SharingComp2
+ Comp2ShLabel
+ ShParam_2_1
+ ShParam_2_2
+ ShParam_2_3
+ ShParam_2_4
+ ShParam_2_5
+ ShParam_2_6
+ ShParam_2_7
+ ShParam_2_8
+ ShParam_2_9
+ SharingComp3
+ Comp3ShLabel
+ ShParam_3_1
+ ShParam_3_2
+ ShParam_3_3
+ ShParam_3_4
+ ShParam_3_5
+ ShParam_3_6
+ ShParam_3_7
+ ShParam_3_8
+ ShParam_3_9
+ InitializationPage
+ InitParamTable
+ FittingPage
+ groupTitle
+ TITLELabel
+ TITLE
+ FILENAMELabel
+ FILENAME
+ textMSROutput
+ TabPage_2
+ FUnitsLabel
+ FApodizationLabel
+ FPlotLabel
+ FUnits
+ FApodization
+ FPlot
+ textLabel1
+ textLabel1_3
+ textLabel1_3_5
+ lineEdit28
+ textLabel1_3_2
+ textLabel1_3_6
+ textLabel1_2
+ textLabel1_3_3
+ textLabel1_3_7
+ lineEdit28_2
+ textLabel1_3_4
+ textLabel1_3_8
+ TabPage_3
+ groupHist0
+ textLabel2
+ textLabel2_2_2_3
+ textLabel2_2_2
+ textLabel2_2_2_2
+ textLabel2_2_2_2_2
+ groupHist1
+ t01
+ Bg11
+ Bg21
+ Data11
+ Data21
+ groupHist2
+ t02
+ Bg12
+ Bg22
+ Data12
+ Data22
+ groupHist3
+ t03
+ Bg13
+ Bg23
+ Data13
+ Data23
+ groupHist4
+ t04
+ Bg14
+ Bg24
+ Data14
+ Data24
+ ShowT0
+ TabPage_4
+ textLabel2_2
+ TheoryBlock
+ CParamsCombo
+ textLabel1_4
+ ConstraintLine
+ AddConstraint
+ textLabel2_2_3
+ FunctionsBlock
+ MenuBar
+ fileMenu
+ editMenu
+ Options
+ helpMenu
+ toolBar
+ fileNewAction
+ fileOpenAction
+ fileSaveAction
+ fileSaveAsAction
+ filePrintAction
+ fileExitAction
+ editUndoAction
+ editRedoAction
+ editCutAction
+ editCopyAction
+ editPasteAction
+ editFindAction
+ helpContentsAction
+ helpIndexAction
+ helpAboutAction
+ Action
+ separatorAction
+ FileExistCheck
+ ManualFile
+ fileChangeDirAction
+ Action_2
+ Action_3
+ optionsnew_itemAction
+);
+
+
+our $image0;
+our $image0_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0xd3, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x94, 0x51, 0x0e, 0x84,
+ 0x20, 0x0c, 0x44, 0xa7, 0x86, 0x4b, 0xd9, 0xfb, 0x67, 0x3c, 0x16, 0xfe,
+ 0x50, 0xb7, 0xa9, 0x55, 0x01, 0xdd, 0x97, 0x10, 0x49, 0x83, 0x43, 0x5b,
+ 0x06, 0x84, 0x24, 0x22, 0xab, 0x6a, 0xb5, 0xf9, 0x46, 0xca, 0x69, 0x41,
+ 0x07, 0x4b, 0x0c, 0xa8, 0x13, 0xcd, 0x36, 0xea, 0xa5, 0xf8, 0x9f, 0x05,
+ 0x00, 0x49, 0x81, 0x13, 0x52, 0xd5, 0x3a, 0xac, 0x8a, 0x96, 0xb1, 0x65,
+ 0x64, 0x02, 0x56, 0xfe, 0x46, 0x8a, 0xc5, 0x46, 0xb3, 0x3e, 0xb5, 0xc2,
+ 0x98, 0xed, 0xed, 0xa3, 0xf0, 0x5b, 0x16, 0x55, 0xad, 0xbe, 0xf4, 0xb8,
+ 0xc0, 0x62, 0xa3, 0xe9, 0x2f, 0xbc, 0x11, 0x7d, 0x83, 0x64, 0x3e, 0xbe,
+ 0x62, 0x75, 0xd5, 0x3d, 0xd1, 0xdd, 0x63, 0x73, 0x45, 0xaf, 0x3b, 0x3e,
+ 0x3b, 0xbc, 0xb8, 0xe1, 0x94, 0x70, 0x76, 0x3b, 0x23, 0xdd, 0xc2, 0xde,
+ 0x39, 0x24, 0xc5, 0x8b, 0x67, 0x6d, 0x2a, 0x67, 0x89, 0x7b, 0x71, 0x7f,
+ 0x4b, 0x25, 0xdc, 0xd8, 0x48, 0xf5, 0xa3, 0xb9, 0xe4, 0xf8, 0xc6, 0x51,
+ 0xdd, 0x20, 0x09, 0x92, 0xc8, 0x62, 0x05, 0x68, 0x0f, 0x4f, 0x82, 0xc5,
+ 0x55, 0xb5, 0x1e, 0x6b, 0x92, 0xfe, 0x5a, 0x25, 0x02, 0xc0, 0xcc, 0x3b,
+ 0xd4, 0x0a, 0x13, 0xb9, 0x8a, 0x13, 0x3f, 0xaf, 0x17, 0xcb, 0x28, 0x66,
+ 0x39, 0x83, 0x3f, 0xc4, 0xdb, 0x56, 0xbc, 0xe1, 0x7f, 0xaf, 0xdb, 0x97,
+ 0x62, 0xde, 0xeb, 0x43, 0x8f, 0xd0, 0x08, 0x3b, 0xbf, 0x32, 0x98, 0xdf,
+ 0x1b, 0xba, 0x5b, 0x87, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82;
+
+our $image1;
+our $image1_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0x7f, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x95, 0x51, 0x0a, 0x00,
+ 0x21, 0x08, 0x44, 0x75, 0xd9, 0xdb, 0x04, 0x1e, 0xc0, 0xe8, 0xfa, 0x5e,
+ 0xcb, 0xfd, 0xda, 0x85, 0x2d, 0x4b, 0x11, 0xfa, 0x6b, 0x20, 0x28, 0xa3,
+ 0x57, 0x0c, 0x53, 0xa1, 0x88, 0xc0, 0x0e, 0xdd, 0x7d, 0x81, 0x99, 0x35,
+ 0xb2, 0x50, 0x44, 0x70, 0x35, 0x7f, 0x59, 0x45, 0x55, 0x9d, 0x36, 0x00,
+ 0x00, 0x22, 0x72, 0x0f, 0x60, 0x82, 0x3d, 0x11, 0x91, 0x0b, 0x1f, 0xac,
+ 0x88, 0xa8, 0x94, 0xf2, 0xf5, 0x99, 0x59, 0x2d, 0x5b, 0x52, 0xe0, 0x5a,
+ 0xeb, 0x6f, 0x6c, 0xc1, 0x53, 0xe0, 0xd6, 0xda, 0x50, 0xeb, 0xe1, 0x29,
+ 0x30, 0xe2, 0x32, 0x10, 0x39, 0xf0, 0x9b, 0x0c, 0x6f, 0xb3, 0x54, 0x2a,
+ 0x22, 0x3a, 0xe0, 0x03, 0x3e, 0xe0, 0x85, 0xcc, 0x2b, 0x1d, 0x79, 0x0b,
+ 0x3c, 0xe1, 0xae, 0x3f, 0x6f, 0x9b, 0x15, 0x0f, 0x6d, 0x54, 0x33, 0xaf,
+ 0x47, 0xa4, 0xf4, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82;
+
+our $image2;
+our $image2_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0xae, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x94, 0x51, 0x0e, 0xc3,
+ 0x20, 0x0c, 0x43, 0x6d, 0xb4, 0x53, 0x71, 0xb6, 0x69, 0x1f, 0xd3, 0xce,
+ 0xe6, 0x6b, 0xb1, 0x8f, 0x51, 0x35, 0xa2, 0x19, 0x23, 0x5a, 0xf0, 0x4f,
+ 0x44, 0x2b, 0x5e, 0x2c, 0x03, 0xa1, 0x24, 0xec, 0x50, 0xd9, 0x42, 0xdd,
+ 0x09, 0xbe, 0x45, 0x37, 0xd4, 0x5a, 0x9b, 0x5d, 0x4b, 0xe2, 0xf8, 0x5f,
+ 0x12, 0x43, 0xe0, 0x63, 0x93, 0xd7, 0x48, 0x12, 0x6d, 0x53, 0x66, 0x1d,
+ 0x9e, 0x85, 0x4a, 0x62, 0x4a, 0xc6, 0x63, 0x3c, 0x40, 0xcf, 0xf8, 0x57,
+ 0x6e, 0x51, 0x28, 0x00, 0x10, 0x40, 0x6b, 0x0d, 0x00, 0xda, 0xb1, 0x04,
+ 0xb9, 0xc6, 0x9d, 0x19, 0xe8, 0x87, 0x77, 0x42, 0x01, 0xf6, 0x4e, 0xbc,
+ 0x7c, 0x8f, 0x34, 0x2f, 0xc6, 0x78, 0xb0, 0xce, 0x55, 0x3c, 0xc7, 0x6b,
+ 0x75, 0x2e, 0x37, 0xe3, 0x68, 0xd6, 0x9e, 0xdc, 0x8c, 0x2d, 0xf4, 0xf5,
+ 0x8c, 0x01, 0xef, 0x8f, 0x4f, 0x75, 0x33, 0xfe, 0x17, 0x6a, 0x1e, 0x48,
+ 0x2e, 0xf4, 0xe2, 0x38, 0x0b, 0x6a, 0xc0, 0xb9, 0xd0, 0xd3, 0x6a, 0x57,
+ 0x16, 0x14, 0x30, 0x83, 0x3e, 0x13, 0x0a, 0xac, 0xde, 0xf6, 0x2f, 0x9a,
+ 0xcd, 0x8a, 0xb4, 0x79, 0x3c, 0xea, 0x0d, 0x05, 0x19, 0x70, 0xcd, 0xbc,
+ 0x4f, 0x01, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
+ 0x42, 0x60, 0x82;
+
+our $image3;
+our $image3_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0xad, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xd5, 0x95, 0x31, 0x0e, 0x84,
+ 0x20, 0x10, 0x45, 0x3f, 0x86, 0x86, 0xc4, 0x82, 0xf3, 0xd0, 0xcc, 0xc5,
+ 0x8c, 0x85, 0xf1, 0x62, 0x34, 0x73, 0x1e, 0x0b, 0x92, 0x2d, 0x77, 0x0b,
+ 0x33, 0x86, 0x15, 0x0d, 0x62, 0xd0, 0x84, 0xd7, 0x10, 0x0c, 0xbe, 0x7c,
+ 0xc6, 0x41, 0x14, 0x33, 0xe3, 0x09, 0x34, 0x00, 0x38, 0xe7, 0xbe, 0x35,
+ 0xa5, 0xcc, 0xac, 0xb4, 0x4c, 0xe6, 0x69, 0x1d, 0x87, 0x11, 0xf0, 0xde,
+ 0x17, 0x89, 0x88, 0x68, 0x7b, 0x87, 0x88, 0x00, 0x00, 0x5d, 0xa5, 0x90,
+ 0x09, 0x3a, 0xbf, 0xe4, 0x18, 0x13, 0x2c, 0x3e, 0xfd, 0xb2, 0xcd, 0x25,
+ 0xa9, 0x90, 0x4d, 0x6c, 0x82, 0x85, 0x09, 0x36, 0x79, 0x1e, 0x4b, 0x81,
+ 0xb5, 0x94, 0x52, 0xce, 0x4b, 0xe2, 0xbb, 0x64, 0x4b, 0xb1, 0x4f, 0x76,
+ 0x95, 0xc7, 0x12, 0xb7, 0x27, 0x4e, 0x6a, 0x3c, 0x4f, 0x69, 0xeb, 0xe4,
+ 0x88, 0xbb, 0xe1, 0x54, 0x7c, 0xb6, 0xb0, 0x94, 0x77, 0xdb, 0x6d, 0x18,
+ 0xcb, 0x45, 0xfb, 0x5d, 0xde, 0x3e, 0xd2, 0xf1, 0x8f, 0xea, 0xe8, 0x9b,
+ 0xb4, 0xd7, 0x6e, 0xed, 0x89, 0x95, 0xdc, 0x79, 0xb5, 0xae, 0x27, 0x66,
+ 0x56, 0x7f, 0xe2, 0xda, 0xfc, 0x00, 0x45, 0x36, 0x2b, 0xc8, 0x71, 0x7a,
+ 0x5b, 0x49, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
+ 0x60, 0x82;
+
+our $image4;
+our $image4_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x02,
+ 0x8c, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0x8d, 0x95, 0xaf, 0x7b, 0xdb,
+ 0x30, 0x10, 0x86, 0xdf, 0xec, 0x09, 0x38, 0x31, 0x9b, 0xc5, 0x30, 0xb0,
+ 0x61, 0x35, 0x0c, 0x2c, 0xf4, 0x58, 0xcb, 0x5a, 0x18, 0xb8, 0x3f, 0x61,
+ 0x81, 0xa3, 0x63, 0xa3, 0x85, 0x1d, 0xeb, 0xd8, 0x02, 0x0b, 0x1d, 0xd6,
+ 0xb0, 0x1a, 0x0a, 0xda, 0xcc, 0x62, 0x77, 0x2c, 0x03, 0xb2, 0x1d, 0xe7,
+ 0xd7, 0xb3, 0x8a, 0x28, 0x96, 0x2e, 0xef, 0x7d, 0xba, 0xef, 0x2c, 0x4f,
+ 0xca, 0xb2, 0xe4, 0xd2, 0x68, 0xdb, 0x76, 0x2f, 0x22, 0xa4, 0x69, 0x7a,
+ 0xb4, 0x6e, 0x66, 0x00, 0xa8, 0x2a, 0x00, 0x21, 0x04, 0x92, 0x24, 0xc1,
+ 0x39, 0x37, 0x19, 0xc7, 0x4d, 0x2f, 0x52, 0x01, 0x11, 0x21, 0xcf, 0xf3,
+ 0x01, 0x74, 0xba, 0x37, 0x12, 0x80, 0xf7, 0xfe, 0x2c, 0xe6, 0x2a, 0x18,
+ 0xa0, 0xaa, 0xaa, 0x33, 0xd8, 0x69, 0x22, 0x55, 0xc5, 0x39, 0xf7, 0x79,
+ 0xf0, 0x25, 0x80, 0x99, 0x9d, 0x25, 0xe8, 0xe7, 0x53, 0xf8, 0x97, 0x2b,
+ 0xdc, 0xbd, 0x99, 0x0d, 0xc1, 0xce, 0x39, 0x9c, 0x73, 0x47, 0xf5, 0xee,
+ 0xeb, 0x2f, 0x22, 0x67, 0xf5, 0xbd, 0xaa, 0x58, 0x55, 0x49, 0x92, 0x84,
+ 0xb6, 0x6d, 0x11, 0x91, 0xc1, 0xa8, 0xf1, 0xb8, 0x74, 0xfc, 0xcf, 0x28,
+ 0xc6, 0xcc, 0xce, 0x3a, 0x62, 0x0c, 0xed, 0x93, 0x5d, 0x32, 0xf7, 0xaa,
+ 0xe2, 0x5e, 0xcd, 0x25, 0xa5, 0xe3, 0x75, 0x55, 0x3d, 0xea, 0x90, 0xff,
+ 0x82, 0xeb, 0xba, 0x66, 0x3e, 0x9f, 0x93, 0x65, 0xd9, 0x55, 0x78, 0x6f,
+ 0xe4, 0x76, 0xbb, 0x25, 0x84, 0xb0, 0x17, 0x49, 0xc8, 0xb2, 0x74, 0xa8,
+ 0xf5, 0x11, 0x58, 0x55, 0xf7, 0xde, 0x7b, 0xaa, 0x5d, 0x85, 0x14, 0x82,
+ 0x88, 0x0c, 0x80, 0xd3, 0xb9, 0x57, 0xda, 0xd6, 0x2d, 0x65, 0x59, 0xd2,
+ 0x84, 0x86, 0x9b, 0x9b, 0x9b, 0x7d, 0x51, 0x14, 0xa4, 0x69, 0x3a, 0x99,
+ 0xf4, 0x6f, 0x9e, 0xaa, 0xee, 0xab, 0xca, 0x13, 0xea, 0x06, 0x35, 0x80,
+ 0xcb, 0x4a, 0x01, 0x9c, 0xa4, 0x08, 0x02, 0x0e, 0x7c, 0xed, 0x79, 0x7f,
+ 0xdf, 0xd1, 0x34, 0x35, 0xaa, 0xc6, 0x62, 0x31, 0x67, 0xb5, 0x5a, 0x45,
+ 0xc5, 0xbd, 0xd2, 0xe2, 0xee, 0x0e, 0x97, 0xa6, 0xa8, 0x1a, 0x98, 0x72,
+ 0x66, 0x8b, 0x19, 0x20, 0x94, 0x6c, 0x79, 0xe3, 0x2f, 0x4b, 0x5b, 0xb2,
+ 0xfc, 0xc8, 0xa9, 0xaa, 0x1d, 0xa8, 0xe1, 0x80, 0x8f, 0xf7, 0x0f, 0x7e,
+ 0xe9, 0x33, 0xd3, 0x08, 0x6d, 0x78, 0xf8, 0xfa, 0x40, 0x32, 0x4b, 0xae,
+ 0xaa, 0xec, 0x47, 0x45, 0xc5, 0x4f, 0x7e, 0xe0, 0xf1, 0xec, 0xd8, 0xf1,
+ 0x22, 0x2f, 0x14, 0xfe, 0x9e, 0x97, 0xf6, 0x99, 0xba, 0x0e, 0x18, 0x46,
+ 0xe3, 0x3d, 0xd3, 0xd0, 0x04, 0x9e, 0x9e, 0xee, 0xaf, 0xba, 0x7b, 0x3a,
+ 0x52, 0x52, 0xee, 0x58, 0x52, 0x22, 0x14, 0x14, 0xdc, 0xde, 0xde, 0x92,
+ 0x48, 0x46, 0x6b, 0x35, 0xcf, 0x2f, 0xbf, 0x09, 0x21, 0x90, 0xce, 0x52,
+ 0xa6, 0x06, 0x78, 0x5f, 0xc7, 0x7e, 0x34, 0x03, 0x11, 0x62, 0x8e, 0x98,
+ 0x48, 0x04, 0x1c, 0x2e, 0x56, 0xdc, 0x14, 0xc4, 0xf1, 0xcd, 0xbe, 0x73,
+ 0x8f, 0x27, 0xb3, 0x8c, 0x1d, 0x15, 0x98, 0x91, 0x66, 0x59, 0xdc, 0xef,
+ 0xdc, 0x99, 0xb6, 0x75, 0x8d, 0x17, 0x89, 0xf5, 0x34, 0x63, 0xf0, 0xcd,
+ 0x41, 0x74, 0xb1, 0x3b, 0x89, 0x33, 0x50, 0x01, 0xe2, 0x9a, 0x00, 0xde,
+ 0x1a, 0x8c, 0x78, 0x87, 0xf8, 0xaa, 0x1a, 0x3c, 0x71, 0x74, 0xed, 0xd6,
+ 0x2f, 0x58, 0x0f, 0xc4, 0x86, 0xa6, 0x50, 0xa2, 0x29, 0xb1, 0x9d, 0x87,
+ 0xc8, 0xa1, 0x73, 0xa4, 0xf7, 0x74, 0x34, 0x14, 0x65, 0x8a, 0x80, 0xb5,
+ 0xa3, 0x3f, 0x68, 0x27, 0x76, 0x1c, 0x68, 0x80, 0x28, 0xd8, 0xe9, 0x8e,
+ 0xc3, 0xac, 0xa5, 0x3b, 0x67, 0x7f, 0x36, 0xf2, 0x7c, 0xc9, 0x17, 0x6c,
+ 0xa4, 0x72, 0x10, 0xab, 0xf1, 0xd1, 0xba, 0xf9, 0x08, 0xea, 0xfa, 0xb0,
+ 0x0e, 0xda, 0x01, 0xbb, 0x72, 0xce, 0x66, 0x33, 0x56, 0xab, 0xa7, 0xa8,
+ 0xd8, 0x7b, 0xdf, 0x5b, 0x05, 0x62, 0x10, 0x04, 0x08, 0xd1, 0x39, 0xb3,
+ 0x88, 0x91, 0x5e, 0x95, 0x1d, 0x60, 0x1c, 0x6a, 0x8e, 0x19, 0x22, 0xb0,
+ 0x5e, 0xaf, 0xc9, 0xb2, 0x6c, 0x32, 0x9d, 0xcf, 0xe7, 0xbc, 0x6d, 0xde,
+ 0xf8, 0xb3, 0xd9, 0xa0, 0x6a, 0xc4, 0xfb, 0x47, 0x38, 0x6a, 0x3e, 0x19,
+ 0x3d, 0xcb, 0x01, 0x39, 0x9c, 0xb3, 0xeb, 0xa6, 0xf5, 0x7a, 0x4d, 0x9e,
+ 0xe7, 0x13, 0x80, 0xe1, 0x95, 0xae, 0xeb, 0x7a, 0xff, 0xfa, 0xba, 0xa1,
+ 0xe9, 0xbe, 0x5f, 0x8a, 0x76, 0xa6, 0x1c, 0x9c, 0x39, 0x7c, 0x35, 0x40,
+ 0xb5, 0x8d, 0xbf, 0x83, 0x91, 0x2f, 0x73, 0x1e, 0x1f, 0x1f, 0x59, 0x2c,
+ 0x16, 0xc3, 0x25, 0xf4, 0x0f, 0x01, 0x0f, 0x7c, 0xb0, 0xf1, 0xb5, 0xc3,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
+ 0x82;
+
+our $image5;
+our $image5_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0x9b, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x94, 0x3b, 0x0e, 0x80,
+ 0x20, 0x0c, 0x86, 0x5b, 0xe3, 0xa9, 0x18, 0x89, 0xc7, 0x32, 0x0e, 0x84,
+ 0x63, 0x99, 0x8e, 0xbd, 0x16, 0x4e, 0x68, 0x41, 0x79, 0x49, 0x18, 0x4c,
+ 0xfc, 0xc7, 0xb6, 0x7c, 0x6d, 0xe8, 0x03, 0x99, 0x19, 0x46, 0x68, 0x1a,
+ 0x42, 0xfd, 0xc1, 0x52, 0x73, 0x4b, 0xb0, 0x52, 0xe4, 0x9e, 0xec, 0xd6,
+ 0x00, 0xe8, 0x45, 0xa3, 0xb4, 0xa1, 0x9f, 0x0a, 0xa5, 0xc8, 0x31, 0x87,
+ 0xce, 0x12, 0x30, 0x96, 0x7c, 0x1f, 0x54, 0x1c, 0xc3, 0x63, 0x60, 0x29,
+ 0x31, 0xed, 0xe4, 0x7c, 0xe5, 0xb7, 0x3f, 0xf6, 0x41, 0x12, 0xca, 0xac,
+ 0x31, 0x05, 0x95, 0x09, 0xd7, 0xed, 0xb2, 0x3d, 0x36, 0x2f, 0x86, 0xa6,
+ 0x80, 0x39, 0x65, 0xa7, 0xe2, 0x2d, 0xb4, 0x08, 0xae, 0x6d, 0x5a, 0x33,
+ 0xb8, 0x07, 0x5e, 0xb5, 0x20, 0x25, 0xb8, 0xf7, 0x5b, 0x73, 0xd9, 0xb0,
+ 0xe7, 0xba, 0xd1, 0x4e, 0x4e, 0x4e, 0x82, 0xec, 0x49, 0xd7, 0x4a, 0xa7,
+ 0xa0, 0x00, 0x9d, 0x15, 0xe7, 0xf4, 0xbd, 0xeb, 0xf6, 0x83, 0x4f, 0x1d,
+ 0x17, 0x25, 0x46, 0xd1, 0x7f, 0x21, 0xbe, 0x92, 0x00, 0x00, 0x00, 0x00,
+ 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
+
+our $image6;
+our $image6_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0x93, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xed, 0x94, 0x3d, 0x0e, 0x80,
+ 0x20, 0x0c, 0x46, 0xa9, 0xf1, 0x54, 0x8c, 0xc4, 0x63, 0x19, 0x07, 0xc2,
+ 0xb1, 0x48, 0xc7, 0x5e, 0x0b, 0x27, 0xb0, 0x22, 0x60, 0x83, 0xb2, 0xf1,
+ 0x2d, 0x24, 0xd0, 0x3e, 0xfa, 0x07, 0x40, 0x44, 0x6a, 0x84, 0x96, 0x21,
+ 0xd4, 0x09, 0xe6, 0x5a, 0xf3, 0x0d, 0xf4, 0x18, 0xf6, 0xa3, 0x6c, 0x4c,
+ 0x64, 0x40, 0x0a, 0x06, 0x3e, 0x15, 0x5a, 0x63, 0x90, 0x38, 0xd5, 0x2e,
+ 0xd0, 0x1a, 0x43, 0x3c, 0x4b, 0x11, 0xa3, 0xbf, 0xa0, 0x2d, 0x47, 0xbe,
+ 0x72, 0xbb, 0x3c, 0xa8, 0x54, 0xe3, 0x98, 0x7e, 0x2b, 0x5d, 0x22, 0x03,
+ 0x25, 0x58, 0x29, 0xd3, 0xae, 0xe6, 0xb5, 0x22, 0xfd, 0x04, 0xce, 0xe1,
+ 0xbf, 0x82, 0xdf, 0x1a, 0xdd, 0x05, 0x96, 0x4c, 0x4f, 0x02, 0x3b, 0x2b,
+ 0x73, 0x92, 0x8e, 0x64, 0x75, 0x8e, 0x9d, 0x55, 0xca, 0x6c, 0xf2, 0x07,
+ 0x91, 0xeb, 0x56, 0x0a, 0xde, 0x90, 0xda, 0xeb, 0x93, 0x0a, 0xe6, 0x7f,
+ 0x3c, 0xc1, 0x0f, 0x9d, 0x5b, 0xa7, 0x46, 0x08, 0x5c, 0x06, 0xe1, 0xe5,
+ 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
+
+our $image7;
+our $image7_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0x9d, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xcd, 0xd4, 0x41, 0x0e, 0x80,
+ 0x20, 0x0c, 0x04, 0xc0, 0xd6, 0xf8, 0xaa, 0x9e, 0x79, 0x36, 0xe7, 0xfd,
+ 0x16, 0x9e, 0x9a, 0x20, 0x22, 0x2c, 0xa0, 0xd1, 0x5e, 0x4c, 0x34, 0x0e,
+ 0xed, 0xa6, 0x41, 0x01, 0xc8, 0x1b, 0xb5, 0xb5, 0x3e, 0x9a, 0x59, 0x1a,
+ 0x79, 0x4f, 0xc3, 0x2b, 0xf5, 0x1f, 0x98, 0x89, 0x81, 0x82, 0x6b, 0x10,
+ 0x00, 0x5d, 0x82, 0x19, 0x60, 0x0a, 0xf6, 0xf2, 0xae, 0xd9, 0x18, 0x44,
+ 0x44, 0x94, 0xd9, 0xe3, 0x1c, 0x64, 0xa7, 0xf8, 0x76, 0x2b, 0xbc, 0xcb,
+ 0x91, 0xcc, 0xc9, 0x8c, 0x63, 0xca, 0x9f, 0x8f, 0xc0, 0x8e, 0x79, 0xb7,
+ 0x66, 0x31, 0x31, 0x07, 0x74, 0xee, 0x8a, 0x98, 0x80, 0x70, 0x1a, 0x1f,
+ 0x08, 0x0a, 0x04, 0xed, 0xe1, 0xb7, 0x70, 0x0d, 0x2d, 0x0f, 0x68, 0xe1,
+ 0x55, 0xb8, 0x87, 0x32, 0xf8, 0x05, 0x66, 0xd1, 0x5e, 0x0d, 0xed, 0x31,
+ 0x93, 0xed, 0x14, 0x5c, 0x56, 0x6b, 0xba, 0x7d, 0xf4, 0xe7, 0xbc, 0xeb,
+ 0x56, 0x64, 0xd5, 0xbb, 0x22, 0x1f, 0x77, 0x36, 0x6f, 0xea, 0x12, 0x9a,
+ 0xa9, 0x03, 0xbb, 0x25, 0x61, 0xad, 0xb1, 0xd6, 0xf6, 0xe7, 0x00, 0x00,
+ 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
+
+our $image8;
+our $image8_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0xd3, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x95, 0xb1, 0x0e, 0x83,
+ 0x30, 0x0c, 0x44, 0xcf, 0x88, 0xaf, 0x8a, 0x18, 0xd9, 0xf9, 0x19, 0x36,
+ 0xd4, 0x85, 0xaa, 0x7f, 0xd5, 0xd9, 0x9f, 0xd5, 0xeb, 0x50, 0x99, 0x46,
+ 0x10, 0x93, 0x10, 0x94, 0x93, 0xbc, 0x70, 0xc9, 0xf3, 0xc9, 0x49, 0x84,
+ 0xa8, 0x2a, 0x5a, 0xa8, 0x6b, 0x42, 0x05, 0x20, 0x00, 0x78, 0xb6, 0x40,
+ 0x55, 0xa5, 0x1a, 0x4c, 0xa6, 0xd9, 0x22, 0x52, 0x0d, 0xef, 0xf7, 0x10,
+ 0x93, 0x35, 0x23, 0x09, 0x11, 0xe1, 0x55, 0xf8, 0x06, 0xf6, 0x52, 0xd7,
+ 0xc2, 0xb7, 0x51, 0xa4, 0x12, 0xff, 0xbe, 0xad, 0xa7, 0x00, 0xd5, 0x31,
+ 0xd9, 0xac, 0x60, 0xc6, 0x2b, 0xc8, 0x87, 0xe3, 0x3f, 0x5d, 0x78, 0xf7,
+ 0x5f, 0x24, 0x87, 0x8a, 0x1b, 0xee, 0x3d, 0xd3, 0x30, 0x2c, 0x08, 0xe1,
+ 0x7d, 0x48, 0xb6, 0x81, 0x49, 0x1e, 0x2a, 0x96, 0xe7, 0x4d, 0x53, 0x1a,
+ 0xee, 0xde, 0x0a, 0x83, 0x79, 0xbe, 0x79, 0xf3, 0xdc, 0x01, 0xf8, 0x00,
+ 0x58, 0x10, 0xc2, 0x8b, 0x36, 0x96, 0xa2, 0x5b, 0x71, 0xe6, 0xdb, 0x9c,
+ 0x4d, 0x21, 0xbc, 0xa9, 0x3a, 0xca, 0xad, 0xc4, 0xa9, 0x43, 0xb5, 0x46,
+ 0xb7, 0x13, 0x7b, 0xaa, 0x4e, 0x9c, 0x6b, 0xde, 0x2c, 0x71, 0x67, 0x69,
+ 0xbc, 0x8a, 0x13, 0xe7, 0x2a, 0x56, 0x9f, 0x7b, 0xff, 0x76, 0x3f, 0xab,
+ 0x67, 0x9c, 0x53, 0xf5, 0x8c, 0xaf, 0x6c, 0x2a, 0x51, 0x11, 0x78, 0xff,
+ 0x08, 0x8a, 0xf6, 0xb4, 0xfa, 0x99, 0x7e, 0x01, 0xdf, 0xa4, 0x98, 0x7b,
+ 0x8b, 0x94, 0x35, 0x47, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
+ 0xae, 0x42, 0x60, 0x82;
+
+our $image9;
+our $image9_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x00,
+ 0xec, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x95, 0x4d, 0x0e, 0x83,
+ 0x20, 0x10, 0x85, 0xdf, 0x98, 0x9e, 0x6a, 0x12, 0x37, 0xbd, 0x96, 0xc4,
+ 0x45, 0x83, 0xd7, 0xea, 0xa6, 0xc9, 0x5c, 0x6b, 0xba, 0x40, 0x2d, 0xc8,
+ 0x50, 0xd0, 0xd2, 0x97, 0x98, 0x09, 0x3f, 0xf3, 0xcd, 0x13, 0x04, 0x49,
+ 0x44, 0xf0, 0x0f, 0xdd, 0xbe, 0x0d, 0x32, 0xb3, 0x1e, 0xfb, 0x44, 0x84,
+ 0x5a, 0xc0, 0xb4, 0x39, 0xb6, 0x20, 0x00, 0xa0, 0x51, 0x2f, 0x15, 0x90,
+ 0x56, 0xb1, 0xa1, 0x15, 0x6a, 0xb5, 0x37, 0x59, 0xf9, 0x04, 0x40, 0x01,
+ 0xc0, 0x3f, 0x3c, 0x00, 0x07, 0xc0, 0xc3, 0xcd, 0x6e, 0x07, 0xc5, 0x2e,
+ 0xe3, 0xb6, 0x35, 0x3f, 0x76, 0x4e, 0x00, 0xf4, 0x38, 0x49, 0x5e, 0xf5,
+ 0x0d, 0xe5, 0x91, 0x33, 0x78, 0x0c, 0x1e, 0x42, 0x08, 0x83, 0x21, 0x9e,
+ 0x51, 0x39, 0x6f, 0xfd, 0x2a, 0x7c, 0x32, 0x89, 0x47, 0x6e, 0x04, 0xa7,
+ 0x79, 0x06, 0xf8, 0x33, 0x18, 0xbf, 0xde, 0xb9, 0x98, 0x6a, 0xb0, 0x2b,
+ 0x5f, 0x89, 0xa9, 0xd6, 0xcd, 0x2b, 0xc3, 0xdd, 0x9c, 0x27, 0xd9, 0x4a,
+ 0x37, 0xcf, 0x5c, 0xe3, 0xa3, 0x13, 0xd5, 0xa9, 0x88, 0x23, 0x5a, 0xa0,
+ 0x3a, 0x65, 0x87, 0x27, 0x5b, 0xe3, 0x12, 0x9c, 0x68, 0xc9, 0xa0, 0x71,
+ 0xc1, 0x00, 0x5f, 0x54, 0xe4, 0x4e, 0xcd, 0x8e, 0x6b, 0xae, 0x2d, 0x78,
+ 0x37, 0xc7, 0x47, 0x78, 0x17, 0xc7, 0x56, 0xd1, 0x9f, 0x1d, 0x5b, 0x05,
+ 0x89, 0x96, 0xbe, 0x6b, 0xdc, 0xcd, 0xb1, 0xa5, 0xdd, 0xc0, 0x7a, 0xd1,
+ 0x6b, 0xf9, 0xf1, 0x7a, 0x56, 0x80, 0x57, 0xaa, 0xfd, 0xf3, 0x98, 0x9f,
+ 0x85, 0xeb, 0xfd, 0xbb, 0xaa, 0xe0, 0xab, 0x7a, 0x03, 0x0d, 0x36, 0xe3,
+ 0xe7, 0x4e, 0x20, 0x86, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
+ 0x44, 0xae, 0x42, 0x60, 0x82;
+
+our $image10;
+our $image10_data = pack 'C*',
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
+ 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x16,
+ 0x08, 0x06, 0x00, 0x00, 0x00, 0xc4, 0xb4, 0x6c, 0x3b, 0x00, 0x00, 0x02,
+ 0x59, 0x49, 0x44, 0x41, 0x54, 0x38, 0x8d, 0xb5, 0x95, 0x21, 0x93, 0x1b,
+ 0x39, 0x10, 0x46, 0x9f, 0xb7, 0x02, 0x7a, 0x98, 0xc4, 0x2c, 0x28, 0x38,
+ 0xcb, 0x6c, 0xb6, 0x86, 0x03, 0x1d, 0x68, 0x96, 0x85, 0xf9, 0x5d, 0x86,
+ 0x81, 0x6b, 0x66, 0xc3, 0x85, 0x03, 0x3d, 0xcc, 0x03, 0x05, 0x35, 0x4c,
+ 0x62, 0xdd, 0x6c, 0x02, 0x1c, 0x57, 0x6d, 0x2e, 0x97, 0xf3, 0xa6, 0x72,
+ 0xfb, 0x21, 0xa9, 0x4b, 0xf5, 0xf4, 0x49, 0xad, 0x6e, 0x2d, 0xfa, 0xbe,
+ 0xe7, 0x23, 0xf4, 0xf0, 0x21, 0x54, 0xe0, 0xd3, 0xdb, 0x49, 0x29, 0x65,
+ 0x4e, 0x29, 0x91, 0x73, 0xa6, 0x9a, 0x01, 0xe0, 0x44, 0x88, 0x31, 0x12,
+ 0x63, 0xa4, 0x69, 0x9a, 0xc5, 0x1f, 0x83, 0x73, 0xce, 0x73, 0x7f, 0x3e,
+ 0xe3, 0x63, 0x60, 0xbd, 0xfb, 0x0c, 0x4e, 0xae, 0xf1, 0x94, 0x18, 0x5e,
+ 0xcf, 0xa4, 0x94, 0xd8, 0x6c, 0x36, 0xb3, 0xf7, 0xfe, 0x5d, 0xf0, 0x45,
+ 0xdf, 0xf7, 0xe4, 0x9c, 0xe7, 0x97, 0x97, 0x17, 0x36, 0x9f, 0x3b, 0x36,
+ 0x5f, 0x76, 0x00, 0x98, 0x19, 0x6a, 0x8a, 0x61, 0x54, 0xab, 0xf4, 0xdf,
+ 0x8e, 0x48, 0x36, 0xb6, 0xdb, 0xed, 0xbb, 0x9c, 0x3f, 0xa8, 0xea, 0xdc,
+ 0x9f, 0x7b, 0xba, 0xaf, 0xcf, 0xb4, 0xdb, 0x0e, 0x33, 0xc3, 0x92, 0xa0,
+ 0x69, 0x09, 0x63, 0xa0, 0xf6, 0x42, 0xc9, 0x85, 0x76, 0xdb, 0x41, 0xf0,
+ 0x0c, 0xc3, 0xf0, 0xae, 0xab, 0x78, 0x48, 0x29, 0xe1, 0x63, 0x64, 0xd3,
+ 0x75, 0x00, 0x48, 0x5e, 0x52, 0x52, 0x66, 0xb2, 0x81, 0x49, 0x46, 0xc4,
+ 0x3c, 0xd2, 0x47, 0xac, 0x56, 0xe2, 0xa6, 0x65, 0x4c, 0x89, 0x52, 0xca,
+ 0x7c, 0x1f, 0x3c, 0x4d, 0xb4, 0x9b, 0x35, 0x86, 0x61, 0x05, 0xd2, 0x98,
+ 0x48, 0x7e, 0x44, 0x43, 0x21, 0x93, 0x30, 0x29, 0x34, 0x08, 0x96, 0x0d,
+ 0x44, 0x90, 0xe0, 0xc8, 0x39, 0xdf, 0x77, 0x6c, 0xaa, 0x38, 0xef, 0x28,
+ 0x56, 0xc8, 0xcd, 0x44, 0x59, 0x4f, 0x88, 0x13, 0xac, 0x18, 0x8e, 0x08,
+ 0x78, 0x52, 0x1d, 0x51, 0xa7, 0x60, 0x20, 0xae, 0x61, 0x9a, 0xa6, 0xbb,
+ 0xe0, 0x4f, 0x00, 0x55, 0x0d, 0x11, 0x40, 0x15, 0x03, 0x30, 0x43, 0x72,
+ 0xa4, 0xb1, 0x40, 0x4e, 0x3d, 0xda, 0x26, 0xc0, 0x63, 0xa5, 0x02, 0x02,
+ 0xd7, 0x55, 0xff, 0xed, 0x18, 0x0c, 0xcc, 0xae, 0x49, 0xb3, 0xdb, 0x18,
+ 0x1a, 0x13, 0xf2, 0x78, 0xa6, 0xb4, 0x19, 0x82, 0x80, 0x29, 0x26, 0x60,
+ 0xb5, 0x20, 0x22, 0xf7, 0xc1, 0xc1, 0x07, 0x52, 0x4a, 0x98, 0x5e, 0x81,
+ 0x56, 0x0d, 0xc3, 0xc8, 0x96, 0xb0, 0x50, 0x31, 0xc0, 0xca, 0x35, 0xa6,
+ 0x55, 0x29, 0xa5, 0x12, 0x63, 0xbc, 0x0f, 0x8e, 0x31, 0x92, 0xfb, 0x0b,
+ 0x5a, 0x15, 0xb3, 0x7a, 0x05, 0x14, 0x43, 0xcc, 0x43, 0x12, 0x6a, 0xad,
+ 0xfc, 0x38, 0x08, 0x35, 0x4f, 0x04, 0x04, 0xe7, 0xdc, 0x3b, 0x1c, 0x87,
+ 0xb0, 0x08, 0xde, 0x33, 0xbc, 0xbe, 0xa2, 0x80, 0x2a, 0x80, 0x92, 0x38,
+ 0x53, 0xdc, 0x88, 0x13, 0xa1, 0x94, 0x4a, 0x29, 0x15, 0x1b, 0x12, 0x6d,
+ 0xdb, 0xe2, 0x83, 0x27, 0xe7, 0x3c, 0xab, 0xea, 0x6f, 0x9f, 0xdd, 0x03,
+ 0xc0, 0x6a, 0xb5, 0xc2, 0x15, 0xa8, 0xc7, 0x33, 0x8d, 0x29, 0x8d, 0x35,
+ 0xf8, 0x65, 0x83, 0x44, 0x87, 0x18, 0x04, 0x03, 0x5e, 0x2f, 0x3c, 0x3d,
+ 0x3d, 0xf1, 0xf8, 0xf8, 0xb8, 0x48, 0x63, 0xe2, 0x74, 0x3a, 0xb1, 0xdf,
+ 0xef, 0xc9, 0x39, 0xff, 0x2b, 0x7c, 0x71, 0x6b, 0x9b, 0xaa, 0x3a, 0x0f,
+ 0xc3, 0xc0, 0x98, 0x12, 0xe2, 0x04, 0x9a, 0x6b, 0x82, 0xac, 0x54, 0xc4,
+ 0xa0, 0xeb, 0x3a, 0x42, 0x08, 0xb7, 0x52, 0x9e, 0x8f, 0xc7, 0x23, 0x87,
+ 0xc3, 0x01, 0xe7, 0x1c, 0xbb, 0xdd, 0x8e, 0xd5, 0x6a, 0xf5, 0x53, 0xa9,
+ 0x2f, 0xfe, 0xd9, 0x8f, 0x4b, 0x29, 0x73, 0xce, 0x99, 0x5a, 0x2b, 0x22,
+ 0x82, 0xf7, 0xfe, 0x96, 0xac, 0x5f, 0xfa, 0x43, 0x4a, 0x69, 0xfe, 0xe1,
+ 0x9a, 0xae, 0xeb, 0x7e, 0xda, 0xfc, 0x17, 0xf0, 0x9f, 0x4a, 0x55, 0xe7,
+ 0xd3, 0xe9, 0xc4, 0xe1, 0x70, 0x60, 0xb9, 0x5c, 0xf2, 0xfc, 0xfc, 0xcc,
+ 0x7a, 0xbd, 0x5e, 0xfc, 0x35, 0xf8, 0xa6, 0xcb, 0xe5, 0x32, 0xef, 0xf7,
+ 0x7b, 0xa6, 0x69, 0x62, 0xbb, 0xdd, 0xfe, 0xbd, 0xe3, 0xb7, 0x2a, 0xa5,
+ 0xcc, 0x87, 0xc3, 0x01, 0x55, 0xfd, 0x7f, 0xc1, 0x6f, 0xf5, 0x61, 0x7f,
+ 0xde, 0x77, 0x3b, 0x42, 0x7a, 0x02, 0x0f, 0x23, 0xb1, 0x5a, 0x00, 0x00,
+ 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82;
+
+
+sub NEW
+{
+ shift->SUPER::NEW(@_[0..2]);
+ statusBar();
+
+ $image0 = Qt::Pixmap();
+ $image0->loadFromData($image0_data, length ($image0_data), "PNG");
+ $image1 = Qt::Pixmap();
+ $image1->loadFromData($image1_data, length ($image1_data), "PNG");
+ $image2 = Qt::Pixmap();
+ $image2->loadFromData($image2_data, length ($image2_data), "PNG");
+ $image3 = Qt::Pixmap();
+ $image3->loadFromData($image3_data, length ($image3_data), "PNG");
+ $image4 = Qt::Pixmap();
+ $image4->loadFromData($image4_data, length ($image4_data), "PNG");
+ $image5 = Qt::Pixmap();
+ $image5->loadFromData($image5_data, length ($image5_data), "PNG");
+ $image6 = Qt::Pixmap();
+ $image6->loadFromData($image6_data, length ($image6_data), "PNG");
+ $image7 = Qt::Pixmap();
+ $image7->loadFromData($image7_data, length ($image7_data), "PNG");
+ $image8 = Qt::Pixmap();
+ $image8->loadFromData($image8_data, length ($image8_data), "PNG");
+ $image9 = Qt::Pixmap();
+ $image9->loadFromData($image9_data, length ($image9_data), "PNG");
+ $image10 = Qt::Pixmap();
+ $image10->loadFromData($image10_data, length ($image10_data), "PNG");
+
+ if ( name() eq "unnamed" )
+ {
+ setName("MuSRFitform" );
+ }
+ setSizePolicy(Qt::SizePolicy(3, 3, 1, 1, this->sizePolicy()->hasHeightForWidth()) );
+ setMinimumSize(Qt::Size(21, 227) );
+ setIcon($image0 );
+
+ setCentralWidget(Qt::Widget(this, "qt_central_widget"));
+
+ musrfit_tabs = Qt::TabWidget(centralWidget(), "musrfit_tabs");
+ musrfit_tabs->setEnabled( 1 );
+ musrfit_tabs->setGeometry( Qt::Rect(10, 10, 560, 400) );
+ musrfit_tabs->setSizePolicy( Qt::SizePolicy(7, 7, 1, 1, musrfit_tabs->sizePolicy()->hasHeightForWidth()) );
+ musrfit_tabs->setMinimumSize( Qt::Size(560, 400) );
+ musrfit_tabs->setMaximumSize( Qt::Size(95, 32767) );
+ musrfit_tabs->setTabShape( &Qt::TabWidget::Rounded() );
+
+ RUNSPage = Qt::Widget(musrfit_tabs, "RUNSPage");
+
+ groupBox7 = Qt::GroupBox(RUNSPage, "groupBox7");
+ groupBox7->setGeometry( Qt::Rect(11, 100, 538, 164) );
+ my $pal = Qt::Palette();
+ my $cg = Qt::ColorGroup();
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(247,249,251));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,192));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(128,0,128));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(239,243,247));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(119,121,123));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(159,161,164));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(173,176,179));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,192));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(128,0,128));
+ $pal->setDisabled($cg);
+ groupBox7->setPalette( $pal );
+ groupBox7->setBackgroundOrigin( &Qt::GroupBox::AncestorOrigin() );
+ groupBox7->setFrameShape( &Qt::GroupBox::GroupBoxPanel() );
+ groupBox7->setFrameShadow( &Qt::GroupBox::Sunken() );
+ groupBox7->setLineWidth( int(1) );
+ groupBox7->setMargin( int(0) );
+ groupBox7->setAlignment( int(&Qt::GroupBox::AlignTop) );
+
+ my $LayoutWidget = Qt::Widget(groupBox7, '$LayoutWidget');
+ $LayoutWidget->setGeometry( Qt::Rect(8, 21, 520, 125) );
+ my $layout42 = Qt::GridLayout($LayoutWidget, 1, 1, 5, 6, '$layout42');
+
+ FitType2 = Qt::ComboBox(0, $LayoutWidget, "FitType2");
+ FitType2->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType2->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(FitType2, 1, 1);
+
+ TfsLabel = Qt::Label($LayoutWidget, "TfsLabel");
+ TfsLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, TfsLabel->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(TfsLabel, 2, 1);
+
+ FitType1 = Qt::ComboBox(0, $LayoutWidget, "FitType1");
+ FitType1->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType1->sizePolicy()->hasHeightForWidth()) );
+ FitType1->setSizeLimit( int(20) );
+ FitType1->setAutoCompletion( 0 );
+ FitType1->setDuplicatesEnabled( 0 );
+
+ $layout42->addWidget(FitType1, 1, 0);
+
+ BINS = Qt::LineEdit($LayoutWidget, "BINS");
+ BINS->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, BINS->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(BINS, 3, 2);
+
+ Comp3Label = Qt::Label($LayoutWidget, "Comp3Label");
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setDisabled($cg);
+ Comp3Label->setPalette( $pal );
+
+ $layout42->addWidget(Comp3Label, 0, 2);
+
+ Tis = Qt::LineEdit($LayoutWidget, "Tis");
+ Tis->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, Tis->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(Tis, 3, 0);
+
+ Tfs = Qt::LineEdit($LayoutWidget, "Tfs");
+ Tfs->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, Tfs->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(Tfs, 3, 1);
+
+ Comp1Label = Qt::Label($LayoutWidget, "Comp1Label");
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setDisabled($cg);
+ Comp1Label->setPalette( $pal );
+
+ $layout42->addWidget(Comp1Label, 0, 0);
+
+ BINSLabel = Qt::Label($LayoutWidget, "BINSLabel");
+ BINSLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, BINSLabel->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(BINSLabel, 2, 2);
+
+ TisLabel = Qt::Label($LayoutWidget, "TisLabel");
+ TisLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, TisLabel->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(TisLabel, 2, 0);
+
+ FitType3 = Qt::ComboBox(0, $LayoutWidget, "FitType3");
+ FitType3->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitType3->sizePolicy()->hasHeightForWidth()) );
+
+ $layout42->addWidget(FitType3, 1, 2);
+
+ Comp2Label = Qt::Label($LayoutWidget, "Comp2Label");
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setDisabled($cg);
+ Comp2Label->setPalette( $pal );
+
+ $layout42->addWidget(Comp2Label, 0, 1);
+
+ my $LayoutWidget_2 = Qt::Widget(RUNSPage, '$LayoutWidget_2');
+ $LayoutWidget_2->setGeometry( Qt::Rect(21, 265, 515, 40) );
+ my $layout23 = Qt::HBoxLayout($LayoutWidget_2, 0, 3, '$layout23');
+
+ FitAsyTypeLabel = Qt::Label($LayoutWidget_2, "FitAsyTypeLabel");
+ FitAsyTypeLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitAsyTypeLabel->sizePolicy()->hasHeightForWidth()) );
+ $layout23->addWidget(FitAsyTypeLabel);
+
+ FitAsyType = Qt::ComboBox(0, $LayoutWidget_2, "FitAsyType");
+ FitAsyType->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FitAsyType->sizePolicy()->hasHeightForWidth()) );
+ $layout23->addWidget(FitAsyType);
+
+ LRBFLabel = Qt::Label($LayoutWidget_2, "LRBFLabel");
+ LRBFLabel->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, LRBFLabel->sizePolicy()->hasHeightForWidth()) );
+ $layout23->addWidget(LRBFLabel);
+
+ LRBF = Qt::LineEdit($LayoutWidget_2, "LRBF");
+ LRBF->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, LRBF->sizePolicy()->hasHeightForWidth()) );
+ $layout23->addWidget(LRBF);
+
+ my $LayoutWidget_3 = Qt::Widget(RUNSPage, '$LayoutWidget_3');
+ $LayoutWidget_3->setGeometry( Qt::Rect(4, 3, 440, 95) );
+ my $layout43 = Qt::VBoxLayout($LayoutWidget_3, 5, 6, '$layout43');
+
+ RUNSAuto = Qt::GroupBox($LayoutWidget_3, "RUNSAuto");
+ RUNSAuto->setSizePolicy( Qt::SizePolicy(5, 7, 0, 0, RUNSAuto->sizePolicy()->hasHeightForWidth()) );
+ RUNSAuto->setMargin( int(5) );
+
+ BeamLineLabel = Qt::Label(RUNSAuto, "BeamLineLabel");
+ BeamLineLabel->setGeometry( Qt::Rect(22, 55, 99, 26) );
+ BeamLineLabel->setMinimumSize( Qt::Size(0, 20) );
+
+ BeamLine = Qt::ComboBox(0, RUNSAuto, "BeamLine");
+ BeamLine->setGeometry( Qt::Rect(122, 55, 100, 26) );
+ BeamLine->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, BeamLine->sizePolicy()->hasHeightForWidth()) );
+ BeamLine->setMinimumSize( Qt::Size(0, 20) );
+
+ YEARLabel = Qt::Label(RUNSAuto, "YEARLabel");
+ YEARLabel->setGeometry( Qt::Rect(251, 55, 55, 26) );
+ YEARLabel->setMinimumSize( Qt::Size(0, 20) );
+
+ YEAR = Qt::ComboBox(0, RUNSAuto, "YEAR");
+ YEAR->setGeometry( Qt::Rect(320, 55, 100, 26) );
+ YEAR->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, YEAR->sizePolicy()->hasHeightForWidth()) );
+ YEAR->setMinimumSize( Qt::Size(0, 20) );
+
+ RunNumbers = Qt::LineEdit(RUNSAuto, "RunNumbers");
+ RunNumbers->setGeometry( Qt::Rect(15, 25, 405, 26) );
+ RunNumbers->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, RunNumbers->sizePolicy()->hasHeightForWidth()) );
+ RunNumbers->setMinimumSize( Qt::Size(0, 23) );
+ $layout43->addWidget(RUNSAuto);
+
+ RUNSMan = Qt::GroupBox($LayoutWidget_3, "RUNSMan");
+ RUNSMan->setEnabled( 1 );
+ RUNSMan->setMargin( int(5) );
+
+ RunFiles = Qt::LineEdit(RUNSMan, "RunFiles");
+ RunFiles->setEnabled( 1 );
+ RunFiles->setGeometry( Qt::Rect(15, 25, 405, 26) );
+ RunFiles->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, RunFiles->sizePolicy()->hasHeightForWidth()) );
+ RunFiles->setMinimumSize( Qt::Size(0, 23) );
+
+ Browse = Qt::PushButton(RUNSMan, "Browse");
+ Browse->setEnabled( 1 );
+ Browse->setGeometry( Qt::Rect(320, 55, 100, 26) );
+ Browse->setSizePolicy( Qt::SizePolicy(0, 0, 0, 0, Browse->sizePolicy()->hasHeightForWidth()) );
+ Browse->setMinimumSize( Qt::Size(0, 20) );
+ $layout43->addWidget(RUNSMan);
+
+ my $LayoutWidget_4 = Qt::Widget(RUNSPage, '$LayoutWidget_4');
+ $LayoutWidget_4->setGeometry( Qt::Rect(445, 25, 97, 68) );
+ my $layout27 = Qt::VBoxLayout($LayoutWidget_4, 0, 6, '$layout27');
+
+ PlotMSR_2 = Qt::PushButton($LayoutWidget_4, "PlotMSR_2");
+ PlotMSR_2->setSizePolicy( Qt::SizePolicy(7, 0, 1, 0, PlotMSR_2->sizePolicy()->hasHeightForWidth()) );
+ PlotMSR_2->setMinimumSize( Qt::Size(95, 30) );
+ PlotMSR_2->setMaximumSize( Qt::Size(95, 30) );
+ PlotMSR_2->setAutoDefault( 0 );
+ PlotMSR_2->setDefault( 1 );
+ $layout27->addWidget(PlotMSR_2);
+
+ go_2 = Qt::PushButton($LayoutWidget_4, "go_2");
+ go_2->setSizePolicy( Qt::SizePolicy(7, 0, 1, 0, go_2->sizePolicy()->hasHeightForWidth()) );
+ go_2->setMinimumSize( Qt::Size(95, 30) );
+ go_2->setMaximumSize( Qt::Size(95, 30) );
+ go_2->setAutoDefault( 0 );
+ go_2->setDefault( 1 );
+ $layout27->addWidget(go_2);
+ musrfit_tabs->insertTab( RUNSPage, "" );
+
+ TabPage = Qt::Widget(musrfit_tabs, "TabPage");
+
+ Minimization = Qt::ButtonGroup(TabPage, "Minimization");
+ Minimization->setGeometry( Qt::Rect(6, 1, 200, 125) );
+ Minimization->setExclusive( 1 );
+ Minimization->setRadioButtonExclusive( 1 );
+ Minimization->setProperty( "selectedId", Qt::Variant(int(0) ) );
+
+ MINIMIZE = Qt::RadioButton(Minimization, "MINIMIZE");
+ MINIMIZE->setGeometry( Qt::Rect(16, 30, 83, 22) );
+ MINIMIZE->setChecked( 1 );
+
+ MIGRAD = Qt::RadioButton(Minimization, "MIGRAD");
+ MIGRAD->setGeometry( Qt::Rect(16, 59, 83, 22) );
+
+ SIMPLEX = Qt::RadioButton(Minimization, "SIMPLEX");
+ SIMPLEX->setGeometry( Qt::Rect(16, 88, 83, 22) );
+
+ ErrorCalc = Qt::ButtonGroup(TabPage, "ErrorCalc");
+ ErrorCalc->setGeometry( Qt::Rect(208, 1, 200, 125) );
+ ErrorCalc->setAlignment( int(&Qt::ButtonGroup::AlignTop) );
+ ErrorCalc->setExclusive( 1 );
+ ErrorCalc->setRadioButtonExclusive( 1 );
+ ErrorCalc->setProperty( "selectedId", Qt::Variant(int(0) ) );
+
+ HESSE = Qt::RadioButton(ErrorCalc, "HESSE");
+ HESSE->setGeometry( Qt::Rect(19, 30, 69, 22) );
+ HESSE->setChecked( 1 );
+
+ MINOS = Qt::RadioButton(ErrorCalc, "MINOS");
+ MINOS->setGeometry( Qt::Rect(19, 59, 69, 22) );
+
+ my $LayoutWidget_5 = Qt::Widget(TabPage, '$LayoutWidget_5');
+ $LayoutWidget_5->setGeometry( Qt::Rect(418, 5, 125, 120) );
+ my $layout28 = Qt::VBoxLayout($LayoutWidget_5, 11, 6, '$layout28');
+
+ go = Qt::PushButton($LayoutWidget_5, "go");
+ go->setSizePolicy( Qt::SizePolicy(7, 0, 1, 0, go->sizePolicy()->hasHeightForWidth()) );
+ go->setMinimumSize( Qt::Size(95, 30) );
+ go->setMaximumSize( Qt::Size(95, 30) );
+ go->setAutoDefault( 0 );
+ go->setDefault( 1 );
+ $layout28->addWidget(go);
+
+ PlotMSR = Qt::PushButton($LayoutWidget_5, "PlotMSR");
+ PlotMSR->setSizePolicy( Qt::SizePolicy(7, 0, 1, 0, PlotMSR->sizePolicy()->hasHeightForWidth()) );
+ PlotMSR->setMinimumSize( Qt::Size(95, 30) );
+ PlotMSR->setMaximumSize( Qt::Size(95, 30) );
+ PlotMSR->setAutoDefault( 0 );
+ PlotMSR->setDefault( 1 );
+ $layout28->addWidget(PlotMSR);
+
+ FitTextOutput = Qt::TextEdit(TabPage, "FitTextOutput");
+ FitTextOutput->setGeometry( Qt::Rect(5, 130, 545, 230) );
+ FitTextOutput->setOverwriteMode( 1 );
+ musrfit_tabs->insertTab( TabPage, "" );
+
+ SharingPahe = Qt::Widget(musrfit_tabs, "SharingPahe");
+
+ buttonGroupSharing = Qt::ButtonGroup(SharingPahe, "buttonGroupSharing");
+ buttonGroupSharing->setGeometry( Qt::Rect(5, 5, 545, 355) );
+ buttonGroupSharing->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, buttonGroupSharing->sizePolicy()->hasHeightForWidth()) );
+ buttonGroupSharing->setAlignment( int(&Qt::ButtonGroup::AlignLeft) );
+ buttonGroupSharing->setCheckable( 0 );
+
+ SharingComp1 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp1");
+ SharingComp1->setEnabled( 0 );
+ SharingComp1->setGeometry( Qt::Rect(31, 20, 162, 330) );
+ SharingComp1->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp1->sizePolicy()->hasHeightForWidth()) );
+ SharingComp1->setAlignment( int(&Qt::ButtonGroup::AlignLeft) );
+
+ my $LayoutWidget_6 = Qt::Widget(SharingComp1, '$LayoutWidget_6');
+ $LayoutWidget_6->setGeometry( Qt::Rect(40, 60, 81, 266) );
+ my $layout14 = Qt::VBoxLayout($LayoutWidget_6, 0, 0, '$layout14');
+
+ ShParam_1_1 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_1");
+ $layout14->addWidget(ShParam_1_1);
+
+ ShParam_1_2 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_2");
+ $layout14->addWidget(ShParam_1_2);
+
+ ShParam_1_3 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_3");
+ $layout14->addWidget(ShParam_1_3);
+
+ ShParam_1_4 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_4");
+ $layout14->addWidget(ShParam_1_4);
+
+ ShParam_1_5 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_5");
+ ShParam_1_5->setEnabled( 0 );
+ ShParam_1_5->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_1_5->setTristate( 0 );
+ $layout14->addWidget(ShParam_1_5);
+
+ ShParam_1_6 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_6");
+ ShParam_1_6->setEnabled( 0 );
+ ShParam_1_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_1_6->setTristate( 0 );
+ $layout14->addWidget(ShParam_1_6);
+
+ ShParam_1_7 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_7");
+ ShParam_1_7->setEnabled( 0 );
+ ShParam_1_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_1_7->setTristate( 0 );
+ $layout14->addWidget(ShParam_1_7);
+
+ ShParam_1_8 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_8");
+ ShParam_1_8->setEnabled( 0 );
+ ShParam_1_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_1_8->setTristate( 0 );
+ $layout14->addWidget(ShParam_1_8);
+
+ ShParam_1_9 = Qt::CheckBox($LayoutWidget_6, "ShParam_1_9");
+ ShParam_1_9->setEnabled( 0 );
+ ShParam_1_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_1_9->setTristate( 0 );
+ $layout14->addWidget(ShParam_1_9);
+
+ Comp1ShLabel = Qt::Label(SharingComp1, "Comp1ShLabel");
+ Comp1ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) );
+ Comp1ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) );
+
+ SharingComp2 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp2");
+ SharingComp2->setEnabled( 0 );
+ SharingComp2->setGeometry( Qt::Rect(199, 20, 162, 330) );
+ SharingComp2->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp2->sizePolicy()->hasHeightForWidth()) );
+
+ Comp2ShLabel = Qt::Label(SharingComp2, "Comp2ShLabel");
+ Comp2ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) );
+ Comp2ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) );
+
+ my $LayoutWidget_7 = Qt::Widget(SharingComp2, '$LayoutWidget_7');
+ $LayoutWidget_7->setGeometry( Qt::Rect(40, 60, 81, 266) );
+ my $layout13 = Qt::VBoxLayout($LayoutWidget_7, 0, 0, '$layout13');
+
+ ShParam_2_1 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_1");
+ $layout13->addWidget(ShParam_2_1);
+
+ ShParam_2_2 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_2");
+ $layout13->addWidget(ShParam_2_2);
+
+ ShParam_2_3 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_3");
+ $layout13->addWidget(ShParam_2_3);
+
+ ShParam_2_4 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_4");
+ $layout13->addWidget(ShParam_2_4);
+
+ ShParam_2_5 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_5");
+ $layout13->addWidget(ShParam_2_5);
+
+ ShParam_2_6 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_6");
+ ShParam_2_6->setEnabled( 0 );
+ ShParam_2_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_2_6->setTristate( 0 );
+ $layout13->addWidget(ShParam_2_6);
+
+ ShParam_2_7 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_7");
+ ShParam_2_7->setEnabled( 0 );
+ ShParam_2_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_2_7->setTristate( 0 );
+ $layout13->addWidget(ShParam_2_7);
+
+ ShParam_2_8 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_8");
+ ShParam_2_8->setEnabled( 0 );
+ ShParam_2_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_2_8->setTristate( 0 );
+ $layout13->addWidget(ShParam_2_8);
+
+ ShParam_2_9 = Qt::CheckBox($LayoutWidget_7, "ShParam_2_9");
+ ShParam_2_9->setEnabled( 0 );
+ ShParam_2_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_2_9->setTristate( 0 );
+ $layout13->addWidget(ShParam_2_9);
+
+ SharingComp3 = Qt::ButtonGroup(buttonGroupSharing, "SharingComp3");
+ SharingComp3->setEnabled( 0 );
+ SharingComp3->setGeometry( Qt::Rect(367, 20, 162, 330) );
+ SharingComp3->setSizePolicy( Qt::SizePolicy(5, 3, 0, 0, SharingComp3->sizePolicy()->hasHeightForWidth()) );
+ SharingComp3->setAlignment( int(&Qt::ButtonGroup::AlignJustify | &Qt::ButtonGroup::AlignVCenter) );
+
+ Comp3ShLabel = Qt::Label(SharingComp3, "Comp3ShLabel");
+ Comp3ShLabel->setGeometry( Qt::Rect(2, 30, 185, 20) );
+ Comp3ShLabel->setPaletteBackgroundColor( Qt::Color(255, 255, 127) );
+
+ my $LayoutWidget_8 = Qt::Widget(SharingComp3, '$LayoutWidget_8');
+ $LayoutWidget_8->setGeometry( Qt::Rect(41, 58, 81, 266) );
+ my $layout15 = Qt::VBoxLayout($LayoutWidget_8, 11, 6, '$layout15');
+
+ ShParam_3_1 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_1");
+ $layout15->addWidget(ShParam_3_1);
+
+ ShParam_3_2 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_2");
+ $layout15->addWidget(ShParam_3_2);
+
+ ShParam_3_3 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_3");
+ $layout15->addWidget(ShParam_3_3);
+
+ ShParam_3_4 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_4");
+ $layout15->addWidget(ShParam_3_4);
+
+ ShParam_3_5 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_5");
+ $layout15->addWidget(ShParam_3_5);
+
+ ShParam_3_6 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_6");
+ ShParam_3_6->setEnabled( 0 );
+ ShParam_3_6->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_3_6->setTristate( 0 );
+ $layout15->addWidget(ShParam_3_6);
+
+ ShParam_3_7 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_7");
+ ShParam_3_7->setEnabled( 0 );
+ ShParam_3_7->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_3_7->setTristate( 0 );
+ $layout15->addWidget(ShParam_3_7);
+
+ ShParam_3_8 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_8");
+ ShParam_3_8->setEnabled( 0 );
+ ShParam_3_8->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_3_8->setTristate( 0 );
+ $layout15->addWidget(ShParam_3_8);
+
+ ShParam_3_9 = Qt::CheckBox($LayoutWidget_8, "ShParam_3_9");
+ ShParam_3_9->setEnabled( 0 );
+ ShParam_3_9->setPaletteBackgroundColor( Qt::Color(234, 233, 232) );
+ ShParam_3_9->setTristate( 0 );
+ $layout15->addWidget(ShParam_3_9);
+ musrfit_tabs->insertTab( SharingPahe, "" );
+
+ InitializationPage = Qt::Widget(musrfit_tabs, "InitializationPage");
+
+ InitParamTable = Qt::Table(InitializationPage, "InitParamTable");
+ InitParamTable->setNumCols(InitParamTable->numCols() + 1);
+ InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Value"));
+ InitParamTable->setNumCols(InitParamTable->numCols() + 1);
+ InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Error"));
+ InitParamTable->setNumCols(InitParamTable->numCols() + 1);
+ InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Min"));
+ InitParamTable->setNumCols(InitParamTable->numCols() + 1);
+ InitParamTable->horizontalHeader()->setLabel(InitParamTable->numCols() - 1, trUtf8("Max"));
+ InitParamTable->setGeometry( Qt::Rect(5, 5, 545, 355) );
+ InitParamTable->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, InitParamTable->sizePolicy()->hasHeightForWidth()) );
+ InitParamTable->setMaximumSize( Qt::Size(32767, 32767) );
+ InitParamTable->setFocusPolicy( &Qt::Table::TabFocus() );
+ InitParamTable->setFrameShape( &Qt::Table::PopupPanel() );
+ InitParamTable->setLineWidth( int(2) );
+ InitParamTable->setMargin( int(0) );
+ InitParamTable->setMidLineWidth( int(0) );
+ InitParamTable->setResizePolicy( &Qt::Table::Default() );
+ InitParamTable->setVScrollBarMode( &Qt::Table::Auto() );
+ InitParamTable->setDragAutoScroll( 0 );
+ InitParamTable->setNumRows( int(0) );
+ InitParamTable->setNumCols( int(4) );
+ InitParamTable->setShowGrid( 1 );
+ InitParamTable->setRowMovingEnabled( 0 );
+ InitParamTable->setFocusStyle( &Qt::Table::SpreadSheet() );
+ musrfit_tabs->insertTab( InitializationPage, "" );
+
+ FittingPage = Qt::Widget(musrfit_tabs, "FittingPage");
+
+ my $LayoutWidget_9 = Qt::Widget(FittingPage, '$LayoutWidget_9');
+ $LayoutWidget_9->setGeometry( Qt::Rect(5, 5, 545, 355) );
+ my $layout25 = Qt::VBoxLayout($LayoutWidget_9, 0, 6, '$layout25');
+
+ groupTitle = Qt::GroupBox($LayoutWidget_9, "groupTitle");
+ groupTitle->setMargin( int(5) );
+
+ my $LayoutWidget_10 = Qt::Widget(groupTitle, '$LayoutWidget_10');
+ $LayoutWidget_10->setGeometry( Qt::Rect(6, 8, 515, 100) );
+ my $layout25_2 = Qt::VBoxLayout($LayoutWidget_10, 11, 6, '$layout25_2');
+
+ TITLELabel = Qt::Label($LayoutWidget_10, "TITLELabel");
+ TITLELabel->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, TITLELabel->sizePolicy()->hasHeightForWidth()) );
+ $layout25_2->addWidget(TITLELabel);
+
+ TITLE = Qt::LineEdit($LayoutWidget_10, "TITLE");
+ TITLE->setSizePolicy( Qt::SizePolicy(5, 0, 1, 1, TITLE->sizePolicy()->hasHeightForWidth()) );
+ $layout25_2->addWidget(TITLE);
+
+ my $layout17 = Qt::HBoxLayout(undef, 0, 6, '$layout17');
+
+ FILENAMELabel = Qt::Label($LayoutWidget_10, "FILENAMELabel");
+ $layout17->addWidget(FILENAMELabel);
+
+ FILENAME = Qt::LineEdit($LayoutWidget_10, "FILENAME");
+ FILENAME->setSizePolicy( Qt::SizePolicy(5, 0, 0, 0, FILENAME->sizePolicy()->hasHeightForWidth()) );
+ $layout17->addWidget(FILENAME);
+ $layout25_2->addLayout($layout17);
+ $layout25->addWidget(groupTitle);
+
+ textMSROutput = Qt::TextEdit($LayoutWidget_9, "textMSROutput");
+ textMSROutput->setOverwriteMode( 1 );
+ $layout25->addWidget(textMSROutput);
+ musrfit_tabs->insertTab( FittingPage, "" );
+
+ TabPage_2 = Qt::Widget(musrfit_tabs, "TabPage_2");
+
+ my $LayoutWidget_11 = Qt::Widget(TabPage_2, '$LayoutWidget_11');
+ $LayoutWidget_11->setGeometry( Qt::Rect(5, 5, 545, 94) );
+ my $layout33 = Qt::HBoxLayout($LayoutWidget_11, 11, 6, '$layout33');
+
+ my $layout26 = Qt::VBoxLayout(undef, 0, 6, '$layout26');
+
+ FUnitsLabel = Qt::Label($LayoutWidget_11, "FUnitsLabel");
+ $layout26->addWidget(FUnitsLabel);
+
+ FApodizationLabel = Qt::Label($LayoutWidget_11, "FApodizationLabel");
+ $layout26->addWidget(FApodizationLabel);
+
+ FPlotLabel = Qt::Label($LayoutWidget_11, "FPlotLabel");
+ $layout26->addWidget(FPlotLabel);
+ $layout33->addLayout($layout26);
+
+ my $layout27_2 = Qt::VBoxLayout(undef, 0, 6, '$layout27_2');
+
+ FUnits = Qt::ComboBox(0, $LayoutWidget_11, "FUnits");
+ FUnits->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FUnits->sizePolicy()->hasHeightForWidth()) );
+ $layout27_2->addWidget(FUnits);
+
+ FApodization = Qt::ComboBox(0, $LayoutWidget_11, "FApodization");
+ FApodization->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FApodization->sizePolicy()->hasHeightForWidth()) );
+ $layout27_2->addWidget(FApodization);
+
+ FPlot = Qt::ComboBox(0, $LayoutWidget_11, "FPlot");
+ FPlot->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, FPlot->sizePolicy()->hasHeightForWidth()) );
+ $layout27_2->addWidget(FPlot);
+ $layout33->addLayout($layout27_2);
+
+ my $layout28_2 = Qt::VBoxLayout(undef, 0, 6, '$layout28_2');
+
+ textLabel1 = Qt::Label($LayoutWidget_11, "textLabel1");
+ $layout28_2->addWidget(textLabel1);
+
+ textLabel1_3 = Qt::Label($LayoutWidget_11, "textLabel1_3");
+ $layout28_2->addWidget(textLabel1_3);
+
+ textLabel1_3_5 = Qt::Label($LayoutWidget_11, "textLabel1_3_5");
+ $layout28_2->addWidget(textLabel1_3_5);
+ $layout33->addLayout($layout28_2);
+
+ my $layout29 = Qt::VBoxLayout(undef, 0, 6, '$layout29');
+
+ lineEdit28 = Qt::LineEdit($LayoutWidget_11, "lineEdit28");
+ lineEdit28->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, lineEdit28->sizePolicy()->hasHeightForWidth()) );
+ $layout29->addWidget(lineEdit28);
+
+ textLabel1_3_2 = Qt::Label($LayoutWidget_11, "textLabel1_3_2");
+ $layout29->addWidget(textLabel1_3_2);
+
+ textLabel1_3_6 = Qt::Label($LayoutWidget_11, "textLabel1_3_6");
+ $layout29->addWidget(textLabel1_3_6);
+ $layout33->addLayout($layout29);
+
+ my $layout31 = Qt::VBoxLayout(undef, 0, 6, '$layout31');
+
+ textLabel1_2 = Qt::Label($LayoutWidget_11, "textLabel1_2");
+ $layout31->addWidget(textLabel1_2);
+
+ textLabel1_3_3 = Qt::Label($LayoutWidget_11, "textLabel1_3_3");
+ $layout31->addWidget(textLabel1_3_3);
+
+ textLabel1_3_7 = Qt::Label($LayoutWidget_11, "textLabel1_3_7");
+ $layout31->addWidget(textLabel1_3_7);
+ $layout33->addLayout($layout31);
+
+ my $layout32 = Qt::VBoxLayout(undef, 0, 6, '$layout32');
+
+ lineEdit28_2 = Qt::LineEdit($LayoutWidget_11, "lineEdit28_2");
+ lineEdit28_2->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, lineEdit28_2->sizePolicy()->hasHeightForWidth()) );
+ $layout32->addWidget(lineEdit28_2);
+
+ textLabel1_3_4 = Qt::Label($LayoutWidget_11, "textLabel1_3_4");
+ $layout32->addWidget(textLabel1_3_4);
+
+ textLabel1_3_8 = Qt::Label($LayoutWidget_11, "textLabel1_3_8");
+ $layout32->addWidget(textLabel1_3_8);
+ $layout33->addLayout($layout32);
+ musrfit_tabs->insertTab( TabPage_2, "" );
+
+ TabPage_3 = Qt::Widget(musrfit_tabs, "TabPage_3");
+
+ my $LayoutWidget_12 = Qt::Widget(TabPage_3, '$LayoutWidget_12');
+ $LayoutWidget_12->setGeometry( Qt::Rect(7, 5, 540, 180) );
+ my $layout27_3 = Qt::HBoxLayout($LayoutWidget_12, 0, 6, '$layout27_3');
+
+ groupHist0 = Qt::GroupBox($LayoutWidget_12, "groupHist0");
+ groupHist0->setSizePolicy( Qt::SizePolicy(5, 5, 0, 0, groupHist0->sizePolicy()->hasHeightForWidth()) );
+ groupHist0->setMinimumSize( Qt::Size(0, 0) );
+
+ my $LayoutWidget_13 = Qt::Widget(groupHist0, '$LayoutWidget_13');
+ $LayoutWidget_13->setGeometry( Qt::Rect(5, 18, 100, 150) );
+ my $layout16_2 = Qt::VBoxLayout($LayoutWidget_13, 11, 6, '$layout16_2');
+
+ textLabel2 = Qt::Label($LayoutWidget_13, "textLabel2");
+ $layout16_2->addWidget(textLabel2);
+
+ textLabel2_2_2_3 = Qt::Label($LayoutWidget_13, "textLabel2_2_2_3");
+ $layout16_2->addWidget(textLabel2_2_2_3);
+
+ textLabel2_2_2 = Qt::Label($LayoutWidget_13, "textLabel2_2_2");
+ $layout16_2->addWidget(textLabel2_2_2);
+
+ textLabel2_2_2_2 = Qt::Label($LayoutWidget_13, "textLabel2_2_2_2");
+ $layout16_2->addWidget(textLabel2_2_2_2);
+
+ textLabel2_2_2_2_2 = Qt::Label($LayoutWidget_13, "textLabel2_2_2_2_2");
+ $layout16_2->addWidget(textLabel2_2_2_2_2);
+ $layout27_3->addWidget(groupHist0);
+
+ groupHist1 = Qt::GroupBox($LayoutWidget_12, "groupHist1");
+ groupHist1->setFrameShadow( &Qt::GroupBox::Plain() );
+
+ my $LayoutWidget_14 = Qt::Widget(groupHist1, '$LayoutWidget_14');
+ $LayoutWidget_14->setGeometry( Qt::Rect(8, 17, 75, 150) );
+ my $layout18 = Qt::VBoxLayout($LayoutWidget_14, 0, 0, '$layout18');
+
+ t01 = Qt::LineEdit($LayoutWidget_14, "t01");
+ $layout18->addWidget(t01);
+
+ Bg11 = Qt::LineEdit($LayoutWidget_14, "Bg11");
+ $layout18->addWidget(Bg11);
+
+ Bg21 = Qt::LineEdit($LayoutWidget_14, "Bg21");
+ $layout18->addWidget(Bg21);
+
+ Data11 = Qt::LineEdit($LayoutWidget_14, "Data11");
+ $layout18->addWidget(Data11);
+
+ Data21 = Qt::LineEdit($LayoutWidget_14, "Data21");
+ $layout18->addWidget(Data21);
+ $layout27_3->addWidget(groupHist1);
+
+ groupHist2 = Qt::GroupBox($LayoutWidget_12, "groupHist2");
+ groupHist2->setEnabled( 1 );
+ groupHist2->setFrameShadow( &Qt::GroupBox::Plain() );
+
+ my $LayoutWidget_15 = Qt::Widget(groupHist2, '$LayoutWidget_15');
+ $LayoutWidget_15->setGeometry( Qt::Rect(8, 17, 75, 150) );
+ my $layout18_2 = Qt::VBoxLayout($LayoutWidget_15, 0, 0, '$layout18_2');
+
+ t02 = Qt::LineEdit($LayoutWidget_15, "t02");
+ $layout18_2->addWidget(t02);
+
+ Bg12 = Qt::LineEdit($LayoutWidget_15, "Bg12");
+ $layout18_2->addWidget(Bg12);
+
+ Bg22 = Qt::LineEdit($LayoutWidget_15, "Bg22");
+ $layout18_2->addWidget(Bg22);
+
+ Data12 = Qt::LineEdit($LayoutWidget_15, "Data12");
+ $layout18_2->addWidget(Data12);
+
+ Data22 = Qt::LineEdit($LayoutWidget_15, "Data22");
+ $layout18_2->addWidget(Data22);
+ $layout27_3->addWidget(groupHist2);
+
+ groupHist3 = Qt::GroupBox($LayoutWidget_12, "groupHist3");
+ groupHist3->setEnabled( 1 );
+ groupHist3->setFrameShadow( &Qt::GroupBox::Plain() );
+
+ my $LayoutWidget_16 = Qt::Widget(groupHist3, '$LayoutWidget_16');
+ $LayoutWidget_16->setGeometry( Qt::Rect(8, 17, 75, 150) );
+ my $layout18_3 = Qt::VBoxLayout($LayoutWidget_16, 0, 0, '$layout18_3');
+
+ t03 = Qt::LineEdit($LayoutWidget_16, "t03");
+ $layout18_3->addWidget(t03);
+
+ Bg13 = Qt::LineEdit($LayoutWidget_16, "Bg13");
+ $layout18_3->addWidget(Bg13);
+
+ Bg23 = Qt::LineEdit($LayoutWidget_16, "Bg23");
+ $layout18_3->addWidget(Bg23);
+
+ Data13 = Qt::LineEdit($LayoutWidget_16, "Data13");
+ $layout18_3->addWidget(Data13);
+
+ Data23 = Qt::LineEdit($LayoutWidget_16, "Data23");
+ $layout18_3->addWidget(Data23);
+ $layout27_3->addWidget(groupHist3);
+
+ groupHist4 = Qt::GroupBox($LayoutWidget_12, "groupHist4");
+ groupHist4->setEnabled( 1 );
+ groupHist4->setFrameShadow( &Qt::GroupBox::Plain() );
+
+ my $LayoutWidget_17 = Qt::Widget(groupHist4, '$LayoutWidget_17');
+ $LayoutWidget_17->setGeometry( Qt::Rect(8, 17, 75, 150) );
+ my $layout18_4 = Qt::VBoxLayout($LayoutWidget_17, 0, 0, '$layout18_4');
+
+ t04 = Qt::LineEdit($LayoutWidget_17, "t04");
+ $layout18_4->addWidget(t04);
+
+ Bg14 = Qt::LineEdit($LayoutWidget_17, "Bg14");
+ $layout18_4->addWidget(Bg14);
+
+ Bg24 = Qt::LineEdit($LayoutWidget_17, "Bg24");
+ $layout18_4->addWidget(Bg24);
+
+ Data14 = Qt::LineEdit($LayoutWidget_17, "Data14");
+ $layout18_4->addWidget(Data14);
+
+ Data24 = Qt::LineEdit($LayoutWidget_17, "Data24");
+ $layout18_4->addWidget(Data24);
+ $layout27_3->addWidget(groupHist4);
+
+ ShowT0 = Qt::PushButton(TabPage_3, "ShowT0");
+ ShowT0->setGeometry( Qt::Rect(451, 190, 95, 30) );
+ ShowT0->setMinimumSize( Qt::Size(95, 30) );
+ ShowT0->setMaximumSize( Qt::Size(95, 30) );
+ ShowT0->setAutoDefault( 0 );
+ ShowT0->setDefault( 1 );
+ musrfit_tabs->insertTab( TabPage_3, "" );
+
+ TabPage_4 = Qt::Widget(musrfit_tabs, "TabPage_4");
+
+ my $LayoutWidget_18 = Qt::Widget(TabPage_4, '$LayoutWidget_18');
+ $LayoutWidget_18->setGeometry( Qt::Rect(3, 3, 550, 355) );
+ my $layout29_2 = Qt::VBoxLayout($LayoutWidget_18, 11, 6, '$layout29_2');
+
+ textLabel2_2 = Qt::Label($LayoutWidget_18, "textLabel2_2");
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setDisabled($cg);
+ textLabel2_2->setPalette( $pal );
+ $layout29_2->addWidget(textLabel2_2);
+
+ TheoryBlock = Qt::TextEdit($LayoutWidget_18, "TheoryBlock");
+ $layout29_2->addWidget(TheoryBlock);
+
+ my $layout25_3 = Qt::HBoxLayout(undef, 0, 6, '$layout25_3');
+
+ CParamsCombo = Qt::ComboBox(0, $LayoutWidget_18, "CParamsCombo");
+ CParamsCombo->setSizePolicy( Qt::SizePolicy(0, 7, 0, 0, CParamsCombo->sizePolicy()->hasHeightForWidth()) );
+ $layout25_3->addWidget(CParamsCombo);
+
+ textLabel1_4 = Qt::Label($LayoutWidget_18, "textLabel1_4");
+ $layout25_3->addWidget(textLabel1_4);
+
+ ConstraintLine = Qt::LineEdit($LayoutWidget_18, "ConstraintLine");
+ ConstraintLine->setSizePolicy( Qt::SizePolicy(7, 7, 0, 0, ConstraintLine->sizePolicy()->hasHeightForWidth()) );
+ ConstraintLine->setMinimumSize( Qt::Size(0, 25) );
+ $layout25_3->addWidget(ConstraintLine);
+
+ AddConstraint = Qt::PushButton($LayoutWidget_18, "AddConstraint");
+ AddConstraint->setSizePolicy( Qt::SizePolicy(0, 7, 0, 0, AddConstraint->sizePolicy()->hasHeightForWidth()) );
+ $layout25_3->addWidget(AddConstraint);
+ $layout29_2->addLayout($layout25_3);
+
+ textLabel2_2_3 = Qt::Label($LayoutWidget_18, "textLabel2_2_3");
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, Qt::Color(242,247,252));
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, &black);
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, &black);
+ $pal->setActive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, &black);
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, &black);
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, &black);
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setInactive($cg);
+ $cg->setColor(&Qt::ColorGroup::Foreground, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Button, Qt::Color(230,240,249));
+ $cg->setColor(&Qt::ColorGroup::Light, &white);
+ $cg->setColor(&Qt::ColorGroup::Midlight, &white);
+ $cg->setColor(&Qt::ColorGroup::Dark, Qt::Color(115,120,124));
+ $cg->setColor(&Qt::ColorGroup::Mid, Qt::Color(154,160,166));
+ $cg->setColor(&Qt::ColorGroup::Text, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::BrightText, &white);
+ $cg->setColor(&Qt::ColorGroup::ButtonText, Qt::Color(128,128,128));
+ $cg->setColor(&Qt::ColorGroup::Base, &white);
+ $cg->setColor(&Qt::ColorGroup::Background, Qt::Color(255,255,127));
+ $cg->setColor(&Qt::ColorGroup::Shadow, &black);
+ $cg->setColor(&Qt::ColorGroup::Highlight, Qt::Color(0,0,128));
+ $cg->setColor(&Qt::ColorGroup::HighlightedText, &white);
+ $cg->setColor(&Qt::ColorGroup::Link, Qt::Color(0,0,238));
+ $cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
+ $pal->setDisabled($cg);
+ textLabel2_2_3->setPalette( $pal );
+ $layout29_2->addWidget(textLabel2_2_3);
+
+ FunctionsBlock = Qt::TextEdit($LayoutWidget_18, "FunctionsBlock");
+ $layout29_2->addWidget(FunctionsBlock);
+ musrfit_tabs->insertTab( TabPage_4, "" );
+
+ fileNewAction= Qt::Action(this, "fileNewAction");
+ fileNewAction->setIconSet( Qt::IconSet($image1) );
+ fileOpenAction= Qt::Action(this, "fileOpenAction");
+ fileOpenAction->setEnabled( 0 );
+ fileOpenAction->setIconSet( Qt::IconSet($image2) );
+ fileSaveAction= Qt::Action(this, "fileSaveAction");
+ fileSaveAction->setIconSet( Qt::IconSet($image3) );
+ fileSaveAsAction= Qt::Action(this, "fileSaveAsAction");
+ filePrintAction= Qt::Action(this, "filePrintAction");
+ filePrintAction->setEnabled( 0 );
+ filePrintAction->setIconSet( Qt::IconSet($image4) );
+ fileExitAction= Qt::Action(this, "fileExitAction");
+ editUndoAction= Qt::Action(this, "editUndoAction");
+ editUndoAction->setEnabled( 0 );
+ editUndoAction->setIconSet( Qt::IconSet($image5) );
+ editRedoAction= Qt::Action(this, "editRedoAction");
+ editRedoAction->setEnabled( 0 );
+ editRedoAction->setIconSet( Qt::IconSet($image6) );
+ editCutAction= Qt::Action(this, "editCutAction");
+ editCutAction->setEnabled( 0 );
+ editCutAction->setIconSet( Qt::IconSet($image7) );
+ editCopyAction= Qt::Action(this, "editCopyAction");
+ editCopyAction->setEnabled( 0 );
+ editCopyAction->setIconSet( Qt::IconSet($image8) );
+ editPasteAction= Qt::Action(this, "editPasteAction");
+ editPasteAction->setEnabled( 0 );
+ editPasteAction->setIconSet( Qt::IconSet($image9) );
+ editFindAction= Qt::Action(this, "editFindAction");
+ editFindAction->setIconSet( Qt::IconSet($image10) );
+ helpContentsAction= Qt::Action(this, "helpContentsAction");
+ helpContentsAction->setEnabled( 0 );
+ helpIndexAction= Qt::Action(this, "helpIndexAction");
+ helpIndexAction->setEnabled( 0 );
+ helpAboutAction= Qt::Action(this, "helpAboutAction");
+ Action= Qt::Action(this, "Action");
+ separatorAction= Qt::Action(this, "separatorAction");
+ FileExistCheck= Qt::Action(this, "FileExistCheck");
+ FileExistCheck->setToggleAction( 1 );
+ FileExistCheck->setOn( 1 );
+ ManualFile= Qt::Action(this, "ManualFile");
+ ManualFile->setToggleAction( 1 );
+ fileChangeDirAction= Qt::Action(this, "fileChangeDirAction");
+ Action_2= Qt::Action(this, "Action_2");
+ Action_3= Qt::Action(this, "Action_3");
+ optionsnew_itemAction= Qt::Action(this, "optionsnew_itemAction");
+
+
+ toolBar = Qt::ToolBar("", this, &DockTop);
+
+ fileOpenAction->addTo(toolBar);
+ fileSaveAction->addTo(toolBar);
+ fileSaveAsAction->addTo(toolBar);
+ filePrintAction->addTo(toolBar);
+ fileExitAction->addTo(toolBar);
+
+
+ MenuBar= Qt::MenuBar( this, "MenuBar");
+
+ MenuBar->setEnabled( 1 );
+
+ fileMenu = Qt::PopupMenu( this );
+ fileOpenAction->addTo( fileMenu );
+ fileSaveAction->addTo( fileMenu );
+ fileChangeDirAction->addTo( fileMenu );
+ fileMenu->insertSeparator();
+ filePrintAction->addTo( fileMenu );
+ fileMenu->insertSeparator();
+ fileExitAction->addTo( fileMenu );
+ MenuBar->insertItem( "", fileMenu, 2 );
+
+ editMenu = Qt::PopupMenu( this );
+ editUndoAction->addTo( editMenu );
+ editRedoAction->addTo( editMenu );
+ editMenu->insertSeparator();
+ editCutAction->addTo( editMenu );
+ editCopyAction->addTo( editMenu );
+ editPasteAction->addTo( editMenu );
+ MenuBar->insertItem( "", editMenu, 3 );
+
+ Options = Qt::PopupMenu( this );
+ FileExistCheck->addTo( Options );
+ ManualFile->addTo( Options );
+ MenuBar->insertItem( "", Options, 4 );
+
+ helpMenu = Qt::PopupMenu( this );
+ helpContentsAction->addTo( helpMenu );
+ helpIndexAction->addTo( helpMenu );
+ helpMenu->insertSeparator();
+ helpAboutAction->addTo( helpMenu );
+ MenuBar->insertItem( "", helpMenu, 5 );
+
+ MenuBar->insertSeparator( 6 );
+
+ languageChange();
+ my $resize = Qt::Size(579, 497);
+ $resize = $resize->expandedTo(minimumSizeHint());
+ resize( $resize );
+ clearWState( &Qt::WState_Polished );
+
+ Qt::Object::connect(helpAboutAction, SIGNAL "activated()", this, SLOT "helpAbout()");
+ Qt::Object::connect(helpContentsAction, SIGNAL "activated()", this, SLOT "helpContents()");
+ Qt::Object::connect(helpIndexAction, SIGNAL "activated()", this, SLOT "helpIndex()");
+ Qt::Object::connect(editPasteAction, SIGNAL "activated()", this, SLOT "editPaste()");
+ Qt::Object::connect(editCopyAction, SIGNAL "activated()", this, SLOT "editCopy()");
+ Qt::Object::connect(editCutAction, SIGNAL "activated()", this, SLOT "editCut()");
+ Qt::Object::connect(editRedoAction, SIGNAL "activated()", this, SLOT "editRedo()");
+ Qt::Object::connect(editUndoAction, SIGNAL "activated()", this, SLOT "editUndo()");
+ Qt::Object::connect(fileExitAction, SIGNAL "activated()", this, SLOT "fileExit()");
+ Qt::Object::connect(filePrintAction, SIGNAL "activated()", this, SLOT "filePrint()");
+ Qt::Object::connect(fileSaveAction, SIGNAL "activated()", this, SLOT "fileSave()");
+ Qt::Object::connect(fileOpenAction, SIGNAL "activated()", this, SLOT "fileOpen()");
+ Qt::Object::connect(fileChangeDirAction, SIGNAL "activated()", this, SLOT "fileChangeDir()");
+ Qt::Object::connect(musrfit_tabs, SIGNAL "selected(const QString&)", this, SLOT "TabChanged()");
+ Qt::Object::connect(go, SIGNAL "clicked()", this, SLOT "GoFit()");
+ Qt::Object::connect(ShowT0, SIGNAL "clicked()", this, SLOT "ShowMuSRT0()");
+ Qt::Object::connect(PlotMSR, SIGNAL "clicked()", this, SLOT "GoPlot()");
+ Qt::Object::connect(InitParamTable, SIGNAL "valueChanged(int,int)", this, SLOT "CallMSRCreate()");
+ Qt::Object::connect(ManualFile, SIGNAL "toggled(bool)", this, SLOT "RunSelectionToggle()");
+ Qt::Object::connect(go_2, SIGNAL "clicked()", this, SLOT "GoFit()");
+ Qt::Object::connect(PlotMSR_2, SIGNAL "pressed()", this, SLOT "GoPlot()");
+ Qt::Object::connect(Browse, SIGNAL "clicked()", this, SLOT "fileBrowse()");
+ Qt::Object::connect(BeamLine, SIGNAL "activated(int)", this, SLOT "T0Update()");
+
+ setTabOrder(musrfit_tabs, RunNumbers);
+ setTabOrder(RunNumbers, BeamLine);
+ setTabOrder(BeamLine, YEAR);
+ setTabOrder(YEAR, RunFiles);
+ setTabOrder(RunFiles, Browse);
+ setTabOrder(Browse, FitType1);
+ setTabOrder(FitType1, FitType2);
+ setTabOrder(FitType2, FitType3);
+ setTabOrder(FitType3, Tis);
+ setTabOrder(Tis, Tfs);
+ setTabOrder(Tfs, BINS);
+ setTabOrder(BINS, FitAsyType);
+ setTabOrder(FitAsyType, LRBF);
+ setTabOrder(LRBF, PlotMSR_2);
+ setTabOrder(PlotMSR_2, go_2);
+ setTabOrder(go_2, MINIMIZE);
+ setTabOrder(MINIMIZE, HESSE);
+ setTabOrder(HESSE, go);
+ setTabOrder(go, PlotMSR);
+ setTabOrder(PlotMSR, FitTextOutput);
+ setTabOrder(FitTextOutput, ShParam_1_1);
+ setTabOrder(ShParam_1_1, ShParam_1_2);
+ setTabOrder(ShParam_1_2, ShParam_1_3);
+ setTabOrder(ShParam_1_3, ShParam_1_4);
+ setTabOrder(ShParam_1_4, ShParam_1_5);
+ setTabOrder(ShParam_1_5, ShParam_1_6);
+ setTabOrder(ShParam_1_6, ShParam_1_7);
+ setTabOrder(ShParam_1_7, ShParam_1_8);
+ setTabOrder(ShParam_1_8, ShParam_1_9);
+ setTabOrder(ShParam_1_9, ShParam_2_1);
+ setTabOrder(ShParam_2_1, ShParam_2_2);
+ setTabOrder(ShParam_2_2, ShParam_2_3);
+ setTabOrder(ShParam_2_3, ShParam_2_4);
+ setTabOrder(ShParam_2_4, ShParam_2_5);
+ setTabOrder(ShParam_2_5, ShParam_2_6);
+ setTabOrder(ShParam_2_6, ShParam_2_7);
+ setTabOrder(ShParam_2_7, ShParam_2_8);
+ setTabOrder(ShParam_2_8, ShParam_2_9);
+ setTabOrder(ShParam_2_9, ShParam_3_1);
+ setTabOrder(ShParam_3_1, ShParam_3_2);
+ setTabOrder(ShParam_3_2, ShParam_3_3);
+ setTabOrder(ShParam_3_3, ShParam_3_4);
+ setTabOrder(ShParam_3_4, ShParam_3_5);
+ setTabOrder(ShParam_3_5, ShParam_3_6);
+ setTabOrder(ShParam_3_6, ShParam_3_7);
+ setTabOrder(ShParam_3_7, ShParam_3_8);
+ setTabOrder(ShParam_3_8, ShParam_3_9);
+ setTabOrder(ShParam_3_9, InitParamTable);
+ setTabOrder(InitParamTable, TITLE);
+ setTabOrder(TITLE, FILENAME);
+ setTabOrder(FILENAME, textMSROutput);
+ setTabOrder(textMSROutput, FUnits);
+ setTabOrder(FUnits, FApodization);
+ setTabOrder(FApodization, FPlot);
+ setTabOrder(FPlot, lineEdit28);
+ setTabOrder(lineEdit28, lineEdit28_2);
+ setTabOrder(lineEdit28_2, t01);
+ setTabOrder(t01, Bg11);
+ setTabOrder(Bg11, Bg21);
+ setTabOrder(Bg21, Data11);
+ setTabOrder(Data11, Data21);
+ setTabOrder(Data21, t02);
+ setTabOrder(t02, Bg12);
+ setTabOrder(Bg12, Bg22);
+ setTabOrder(Bg22, Data12);
+ setTabOrder(Data12, Data22);
+ setTabOrder(Data22, t03);
+ setTabOrder(t03, Bg13);
+ setTabOrder(Bg13, Bg23);
+ setTabOrder(Bg23, Data13);
+ setTabOrder(Data13, Data23);
+ setTabOrder(Data23, t04);
+ setTabOrder(t04, Bg14);
+ setTabOrder(Bg14, Bg24);
+ setTabOrder(Bg24, Data14);
+ setTabOrder(Data14, Data24);
+ setTabOrder(Data24, ShowT0);
+
+ TfsLabel->setBuddy(this->Tfs);
+ Comp1Label->setBuddy(this->FitType1);
+ BINSLabel->setBuddy(this->BINS);
+ TisLabel->setBuddy(this->Tis);
+ TITLELabel->setBuddy(this->TITLE);
+ FILENAMELabel->setBuddy(this->FILENAME);
+}
+
+
+# Sets the strings of the subwidgets using the current
+# language.
+
+sub languageChange
+{
+ setCaption(trUtf8("MuSRFit GUI") );
+ setIconText(trUtf8("MuSRFitGUI") );
+ groupBox7->setTitle( trUtf8("Theory Function") );
+ FitType2->clear();
+ FitType2->insertItem( trUtf8("Exponential") );
+ FitType2->insertItem( trUtf8("Gaussian") );
+ FitType2->insertItem( trUtf8("Stretch Exp.") );
+ FitType2->insertItem( trUtf8("Exponential Cos") );
+ FitType2->insertItem( trUtf8("Gaussian Cos") );
+ FitType2->insertItem( trUtf8("Stretch Cos") );
+ FitType2->insertItem( trUtf8("Lorentzian Dynamic KT") );
+ FitType2->insertItem( trUtf8("Gaussian Dynamic KT") );
+ FitType2->insertItem( trUtf8("Background") );
+ FitType2->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") );
+ FitType2->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") );
+ FitType2->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") );
+ FitType2->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
+ FitType2->insertItem( trUtf8("Meissner State Model") );
+ FitType2->insertItem( trUtf8("None") );
+ FitType2->setCurrentItem( int(14) );
+ TfsLabel->setText( trUtf8("Final Time") );
+ FitType1->clear();
+ FitType1->insertItem( trUtf8("Exponential") );
+ FitType1->insertItem( trUtf8("Gaussian") );
+ FitType1->insertItem( trUtf8("Stretch Exp.") );
+ FitType1->insertItem( trUtf8("Exponential Cos") );
+ FitType1->insertItem( trUtf8("Gaussian Cos") );
+ FitType1->insertItem( trUtf8("Stretch Cos") );
+ FitType1->insertItem( trUtf8("Lorentzian Dynamic KT") );
+ FitType1->insertItem( trUtf8("Gaussian Dynamic KT") );
+ FitType1->insertItem( trUtf8("Background") );
+ FitType1->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") );
+ FitType1->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") );
+ FitType1->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") );
+ FitType1->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
+ FitType1->insertItem( trUtf8("Meissner State Model") );
+ FitType1->insertItem( trUtf8("None") );
+ BINS->setText( trUtf8("100") );
+ Comp3Label->setText( trUtf8("Third Component") );
+ Tis->setText( trUtf8("0") );
+ Tfs->setText( trUtf8("8") );
+ Comp1Label->setText( trUtf8("First Component") );
+ BINSLabel->setText( trUtf8("Binning Factor") );
+ TisLabel->setText( trUtf8("Initial Time") );
+ FitType3->clear();
+ FitType3->insertItem( trUtf8("Exponential") );
+ FitType3->insertItem( trUtf8("Gaussian") );
+ FitType3->insertItem( trUtf8("Stretch Exp.") );
+ FitType3->insertItem( trUtf8("Exponential Cos") );
+ FitType3->insertItem( trUtf8("Gaussian Cos") );
+ FitType3->insertItem( trUtf8("Stretch Cos") );
+ FitType3->insertItem( trUtf8("Lorentzian Dynamic KT") );
+ FitType3->insertItem( trUtf8("Gaussian Dynamic KT") );
+ FitType3->insertItem( trUtf8("Background") );
+ FitType3->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Exp") );
+ FitType3->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Exp") );
+ FitType3->insertItem( trUtf8("Lorentzian Kubo-Toyabe LF x Str Exp") );
+ FitType3->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
+ FitType3->insertItem( trUtf8("Meissner State Model") );
+ FitType3->insertItem( trUtf8("None") );
+ FitType3->setCurrentItem( int(14) );
+ Comp2Label->setText( trUtf8("Second Component") );
+ FitAsyTypeLabel->setText( trUtf8("Fit type") );
+ FitAsyType->clear();
+ FitAsyType->insertItem( trUtf8("Asymmetry") );
+ FitAsyType->insertItem( trUtf8("SingleHist") );
+ LRBFLabel->setText( trUtf8("Histograms list") );
+ LRBF->setText( trUtf8("1,3") );
+ RUNSAuto->setTitle( trUtf8("RUN Numbers") );
+ BeamLineLabel->setText( trUtf8("On beam line") );
+ BeamLine->clear();
+ BeamLine->insertItem( trUtf8("LEM") );
+ BeamLine->insertItem( trUtf8("GPS") );
+ BeamLine->insertItem( trUtf8("Dolly") );
+ BeamLine->insertItem( trUtf8("LTF") );
+ YEARLabel->setText( trUtf8("Year") );
+ YEAR->clear();
+ YEAR->insertItem( trUtf8("2009") );
+ YEAR->insertItem( trUtf8("2008") );
+ YEAR->insertItem( trUtf8("2007") );
+ YEAR->insertItem( trUtf8("2006") );
+ YEAR->insertItem( trUtf8("2005") );
+ YEAR->insertItem( trUtf8("2004") );
+ Qt::ToolTip::add(RunNumbers, trUtf8("Numbers of RUNs to fit. Multiple runs are comma separated."));
+ Qt::WhatsThis::add(RunNumbers, trUtf8("Numbers of RUNs to fit. Multiple runs are comma separated."));
+ RUNSMan->setTitle( trUtf8("RUN Files") );
+ Qt::ToolTip::add(RunFiles, trUtf8("Names of data files to be fit. Multiple data files are comma separated."));
+ Qt::WhatsThis::add(RunFiles, trUtf8("Names of data files to be fit. Multiple data files are comma separated."));
+ Browse->setText( trUtf8("Browse") );
+ Qt::ToolTip::add(Browse, trUtf8("Browse to select data files for fitting."));
+ Qt::WhatsThis::add(Browse, trUtf8("Browse to select data files for fitting."));
+ PlotMSR_2->setText( trUtf8("Plot") );
+ go_2->setText( trUtf8("Fit") );
+ musrfit_tabs->changeTab( RUNSPage, trUtf8("RUNS") );
+ Minimization->setTitle( trUtf8("Minimization") );
+ MINIMIZE->setText( trUtf8("Minimize") );
+ MIGRAD->setText( trUtf8("Migrad") );
+ SIMPLEX->setText( trUtf8("Simplex") );
+ ErrorCalc->setTitle( trUtf8("Error Calculation") );
+ HESSE->setText( trUtf8("Hesse") );
+ MINOS->setText( trUtf8("Minos") );
+ go->setText( trUtf8("Fit") );
+ PlotMSR->setText( trUtf8("Plot") );
+ musrfit_tabs->changeTab( TabPage, trUtf8("Fitting") );
+ buttonGroupSharing->setTitle( trUtf8("Shared Parameters") );
+ SharingComp1->setTitle( trUtf8("1st Component") );
+ ShParam_1_1->setText( trUtf8("Param1") );
+ ShParam_1_2->setText( trUtf8("Param2") );
+ ShParam_1_3->setText( trUtf8("Param3") );
+ ShParam_1_4->setText( trUtf8("Param4") );
+ ShParam_1_5->setText( trUtf8("Param5") );
+ ShParam_1_6->setText( trUtf8("Param6") );
+ ShParam_1_7->setText( trUtf8("Param7") );
+ ShParam_1_8->setText( trUtf8("Param8") );
+ ShParam_1_9->setText( trUtf8("Param9") );
+ Comp1ShLabel->setText( trUtf8("FitType1") );
+ SharingComp2->setTitle( trUtf8("2nd Component") );
+ Comp2ShLabel->setText( trUtf8("FitType2") );
+ ShParam_2_1->setText( trUtf8("Param1") );
+ ShParam_2_2->setText( trUtf8("Param2") );
+ ShParam_2_3->setText( trUtf8("Param3") );
+ ShParam_2_4->setText( trUtf8("Param4") );
+ ShParam_2_5->setText( trUtf8("Param5") );
+ ShParam_2_6->setText( trUtf8("Param6") );
+ ShParam_2_7->setText( trUtf8("Param7") );
+ ShParam_2_8->setText( trUtf8("Param8") );
+ ShParam_2_9->setText( trUtf8("Param9") );
+ SharingComp3->setTitle( trUtf8("3rd Component") );
+ Comp3ShLabel->setText( trUtf8("FitType3") );
+ ShParam_3_1->setText( trUtf8("Param1") );
+ ShParam_3_2->setText( trUtf8("Param2") );
+ ShParam_3_3->setText( trUtf8("Param3") );
+ ShParam_3_4->setText( trUtf8("Param4") );
+ ShParam_3_5->setText( trUtf8("Param5") );
+ ShParam_3_6->setText( trUtf8("Param6") );
+ ShParam_3_7->setText( trUtf8("Param7") );
+ ShParam_3_8->setText( trUtf8("Param8") );
+ ShParam_3_9->setText( trUtf8("Param9") );
+ musrfit_tabs->changeTab( SharingPahe, trUtf8("Sharing") );
+ InitParamTable->horizontalHeader()->setLabel( 0, trUtf8("Value") );
+ InitParamTable->horizontalHeader()->setLabel( 1, trUtf8("Error") );
+ InitParamTable->horizontalHeader()->setLabel( 2, trUtf8("Min") );
+ InitParamTable->horizontalHeader()->setLabel( 3, trUtf8("Max") );
+ musrfit_tabs->changeTab( InitializationPage, trUtf8("Initialization") );
+ groupTitle->setTitle( undef );
+ TITLELabel->setText( trUtf8("Enter the label (defaul is run title from the first run)") );
+ TITLE->setText( trUtf8("","Title line for MSR file (optional)") );
+ Qt::ToolTip::add(TITLE, trUtf8("Title line for MSR file (optional)"));
+ Qt::WhatsThis::add(TITLE, trUtf8("Title line for MSR file (optional)"));
+ FILENAMELabel->setText( trUtf8("Enter [name] for output [name].msr file (optional)") );
+ Qt::ToolTip::add(FILENAME, trUtf8("Name of the produced MSR file (optional)"));
+ Qt::WhatsThis::add(FILENAME, trUtf8("Name of the produced MSR file (optional)"));
+ musrfit_tabs->changeTab( FittingPage, trUtf8("MSR File") );
+ FUnitsLabel->setText( trUtf8("Units") );
+ FApodizationLabel->setText( trUtf8("Apodization") );
+ FPlotLabel->setText( trUtf8("Plot") );
+ FUnits->clear();
+ FUnits->insertItem( trUtf8("MHz") );
+ FUnits->insertItem( trUtf8("Gauss") );
+ FUnits->insertItem( trUtf8("Mc/s") );
+ FApodization->clear();
+ FApodization->insertItem( trUtf8("STRONG") );
+ FApodization->insertItem( trUtf8("MEDIUM") );
+ FApodization->insertItem( trUtf8("WEAK") );
+ FApodization->insertItem( trUtf8("NONE") );
+ FPlot->clear();
+ FPlot->insertItem( trUtf8("power") );
+ FPlot->insertItem( trUtf8("real") );
+ FPlot->insertItem( trUtf8("imag") );
+ FPlot->insertItem( trUtf8("real_and_imag") );
+ FPlot->insertItem( trUtf8("phase") );
+ textLabel1->setText( trUtf8("Range: from") );
+ textLabel1_3->setText( undef );
+ textLabel1_3_5->setText( undef );
+ textLabel1_3_2->setText( undef );
+ textLabel1_3_6->setText( undef );
+ textLabel1_2->setText( trUtf8("to") );
+ textLabel1_3_3->setText( undef );
+ textLabel1_3_7->setText( undef );
+ textLabel1_3_4->setText( undef );
+ textLabel1_3_8->setText( undef );
+ musrfit_tabs->changeTab( TabPage_2, trUtf8("Fourier") );
+ groupHist0->setTitle( undef );
+ textLabel2->setText( trUtf8("t0") );
+ textLabel2_2_2_3->setText( trUtf8("Bg1") );
+ textLabel2_2_2->setText( trUtf8("Bg2") );
+ textLabel2_2_2_2->setText( trUtf8("Data 1") );
+ textLabel2_2_2_2_2->setText( trUtf8("Data 2") );
+ groupHist1->setTitle( trUtf8("Hist1") );
+ groupHist2->setTitle( trUtf8("Hist2") );
+ groupHist3->setTitle( trUtf8("Hist3") );
+ groupHist4->setTitle( trUtf8("Hist4") );
+ ShowT0->setText( trUtf8("Show") );
+ musrfit_tabs->changeTab( TabPage_3, trUtf8("t0/Bg Bins") );
+ textLabel2_2->setText( trUtf8("THEORY Block") );
+ textLabel1_4->setText( trUtf8("=") );
+ AddConstraint->setText( trUtf8("Add") );
+ textLabel2_2_3->setText( trUtf8("FUNCTIONS Block") );
+ musrfit_tabs->changeTab( TabPage_4, trUtf8("Constraints") );
+ fileNewAction->setText( trUtf8("&New") );
+ fileNewAction->setMenuText( trUtf8("&New") );
+ fileNewAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+N") ) );
+ fileOpenAction->setText( trUtf8("&Open MSR...") );
+ fileOpenAction->setMenuText( trUtf8("&Open MSR...") );
+ fileOpenAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+O") ) );
+ fileSaveAction->setText( trUtf8("&Save MSR") );
+ fileSaveAction->setMenuText( trUtf8("&Save MSR") );
+ fileSaveAction->setStatusTip( trUtf8("&Save MSR") );
+ fileSaveAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+S") ) );
+ fileSaveAsAction->setText( trUtf8("Save MSR &As...") );
+ fileSaveAsAction->setMenuText( trUtf8("Save MSR &As...") );
+ fileSaveAsAction->setAccel( Qt::KeySequence( undef ) );
+ filePrintAction->setText( trUtf8("Print") );
+ filePrintAction->setMenuText( trUtf8("&Print...") );
+ filePrintAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+P") ) );
+ fileExitAction->setText( trUtf8("Exit") );
+ fileExitAction->setMenuText( trUtf8("E&xit") );
+ fileExitAction->setAccel( Qt::KeySequence( undef ) );
+ editUndoAction->setText( trUtf8("Undo") );
+ editUndoAction->setMenuText( trUtf8("&Undo") );
+ editUndoAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+Z") ) );
+ editRedoAction->setText( trUtf8("Redo") );
+ editRedoAction->setMenuText( trUtf8("&Redo") );
+ editRedoAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+Y") ) );
+ editCutAction->setText( trUtf8("Cut") );
+ editCutAction->setMenuText( trUtf8("Cu&t") );
+ editCutAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+X") ) );
+ editCopyAction->setText( trUtf8("Copy") );
+ editCopyAction->setMenuText( trUtf8("&Copy") );
+ editCopyAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+C") ) );
+ editPasteAction->setText( trUtf8("Paste") );
+ editPasteAction->setMenuText( trUtf8("&Paste") );
+ editPasteAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+V") ) );
+ editFindAction->setText( trUtf8("Find") );
+ editFindAction->setMenuText( trUtf8("&Find...") );
+ editFindAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+F") ) );
+ helpContentsAction->setText( trUtf8("Contents") );
+ helpContentsAction->setMenuText( trUtf8("&Contents...") );
+ helpContentsAction->setAccel( Qt::KeySequence( undef ) );
+ helpIndexAction->setText( trUtf8("Index") );
+ helpIndexAction->setMenuText( trUtf8("&Index...") );
+ helpIndexAction->setAccel( Qt::KeySequence( undef ) );
+ helpAboutAction->setText( trUtf8("About") );
+ helpAboutAction->setMenuText( trUtf8("&About") );
+ helpAboutAction->setAccel( Qt::KeySequence( undef ) );
+ Action->setText( trUtf8("Unnamed") );
+ Action->setMenuText( trUtf8("Unnamed") );
+ separatorAction->setText( undef );
+ separatorAction->setMenuText( undef );
+ FileExistCheck->setText( trUtf8("File exist check") );
+ FileExistCheck->setMenuText( trUtf8("File exist check") );
+ FileExistCheck->setWhatsThis( trUtf8("Enable/Disable checking for MSR files.") );
+ ManualFile->setText( trUtf8("Maual file selection") );
+ ManualFile->setMenuText( trUtf8("Maual file selection") );
+ fileChangeDirAction->setText( trUtf8("&Change dir") );
+ fileChangeDirAction->setMenuText( trUtf8("&Change dir") );
+ fileChangeDirAction->setAccel( Qt::KeySequence( trUtf8("Ctrl+C") ) );
+ Action_2->setText( trUtf8("Unnamed") );
+ Action_3->setText( trUtf8("Unnamed") );
+ optionsnew_itemAction->setText( trUtf8("new item") );
+ optionsnew_itemAction->setMenuText( trUtf8("new item") );
+ toolBar->setLabel( trUtf8("Tools") );
+ MenuBar->findItem( 2 )->setText( trUtf8("&File") );
+ MenuBar->findItem( 3 )->setText( trUtf8("&Edit") );
+ MenuBar->findItem( 4 )->setText( trUtf8("Options") );
+ MenuBar->findItem( 5 )->setText( trUtf8("&Help") );
+}
+
+
+sub fileOpen
+{
+
+ my $file=Qt::FileDialog::getOpenFileName(
+ ".",
+ "MSR Files (*.msr *.mlog)",
+ this,
+ "open file dialog",
+ "Choose a MSR file");
+ print "Selected file: $file\n";
+# TODO: Possibly decipher the MSR file and setup the GUI accordingly
+# Find run numbers, beamlines etc.
+# Get theory block and understand it
+# Get parameters list and update table
+
+
+}
+
+sub fileSave
+{
+
+ my %All=CreateAllInput();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ my $file=Qt::FileDialog::getSaveFileName(
+ "$FILENAME",
+ "MSR Files (*.msr *.mlog)",
+ this,
+ "save file dialog",
+ "Choose a filename to save under");
+
+# If the user gave a filename the copy to it
+ if ($file ne "") {
+# TODO: check if the extension is correct, or add it.
+ if (-e $FILENAME) {
+ my $cmd="cp $FILENAME $file";
+ my $pid=system($cmd);
+ } else {
+ if ($file ne "") {
+ my $Warning = "Warning: No MSR file found yet!";
+ my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning);
+ }
+ }
+ }
+
+}
+
+sub fileChangeDir
+{
+
+ my $newdir=Qt::FileDialog::getExistingDirectory(
+ "",
+ this,
+ "get existing directory",
+ "Choose a directory",
+ 1);
+ chdir ("$newdir");
+
+}
+
+sub filePrint
+{
+ print "MuSRFitform->filePrint(): Not implemented yet.\n";
+}
+
+sub fileExit
+{
+
+ Qt::Application::exit( 0 );
+
+}
+
+sub editUndo
+{
+ print "MuSRFitform->editUndo(): Not implemented yet.\n";
+}
+
+sub editRedo
+{
+ print "MuSRFitform->editRedo(): Not implemented yet.\n";
+}
+
+sub editCut
+{
+ print "MuSRFitform->editCut(): Not implemented yet.\n";
+}
+
+sub editCopy
+{
+ print "MuSRFitform->editCopy(): Not implemented yet.\n";
+}
+
+sub editPaste
+{
+ print "MuSRFitform->editPaste(): Not implemented yet.\n";
+}
+
+sub helpIndex
+{
+ print "MuSRFitform->helpIndex(): Not implemented yet.\n";
+}
+
+sub helpContents
+{
+ print "MuSRFitform->helpContents(): Not implemented yet.\n";
+}
+
+sub helpAbout
+{
+
+ my $AboutText="
+ This is a GUI that uses the musrfit binary, developed by Andreas Suter,
+ to fit muSR spectra.
+
+ MuSRFitGUI is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ MuSRFitGUI is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with MuSRFitGUI. If not, see .
+
+ Copyright 2009 by Zaher Salman and the LEM Group.
+
+ ";
+ my $AboutWindow = Qt::MessageBox::information( this, "About MuSRFit GUI",$AboutText);
+
+}
+
+sub CreateAllInput
+{
+
+# TODO: Need to deliver shared parameters also
+ my %All=();
+# From RUNS Tab
+ $All{"TITLE"}= TITLE->text;
+ $All{"FILENAME"}= FILENAME->text;
+ $All{"RunNumbers"} = RunNumbers->text;
+ $All{"RunFiles"} = RunFiles->text;
+ $All{"BeamLine"} = BeamLine->currentText;
+ $All{"RUNSType"} = ManualFile->isOn();
+ $All{"YEAR"} =YEAR->currentText;
+ $All{"Tis"} = Tis->text;
+ $All{"Tfs"} = Tfs->text;
+ $All{"BINS"} = BINS->text;
+ $All{"FitAsyType"} = FitAsyType->currentText;
+ $All{"LRBF"} = LRBF->text;
+
+ RunSelectionToggle();
+ my @RUNS = ();
+ if ($All{"RUNSType"} ) {
+ @RUNS = split( /,/, $All{"RunFiles"});
+ } else {
+ $All{"RunNumbers"} =~ s/[\ \.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]/,/g;
+ @RUNS = split( /,/, $All{"RunNumbers"} );
+ }
+
+ my @Hists = split(/,/, $All{"LRBF"} );
+
+# From Fourier Tab
+ $All{"FUNITS"}= FUnits->currentText;
+ $All{"FAPODIZATION"}= FApodization->currentText;
+ $All{"FPLOT"}= FPlot->currentText;
+
+# Get values of t0 and Bg/Data bins if given
+ my $NHist = 1;
+ foreach my $Hist (@Hists) {
+ foreach ("t0","Bg1","Bg2","Data1","Data2") {
+ my $Name = "$_$NHist";
+ $All{$Name}=child($Name)->text;
+# TODO: If empty fill with defaults
+ if ($All{$Name} eq "") {
+ $All{$Name}=MSR::T0BgData($_,$Hist,$All{"BeamLine"});
+ child($Name)->setText($All{$Name});
+ }
+ }
+ $NHist++;
+ }
+
+# Construct fittypes that can be understood by MSR.pm
+ my %FTs=(0,"Exponential",
+ 1,"Gaussian",
+ 2,"Stretch",
+ 3,"ExponentialCos",
+ 4,"GaussianCos",
+ 5,"StretchCos",
+ 6,"LDKTLF",
+ 7,"GDKTLF",
+ 8,"Background",
+ 9,"LLFExp",
+ 10,"GLFExp",
+ 11,"LLFSExp",
+ 12,"GLFSExp",
+ 13,"Meissner",
+ 14,"None"
+ );
+
+ my $FT1=FitType1->currentItem;
+ my $FT2=FitType2->currentItem;
+ my $FT3=FitType3->currentItem;
+ $All{"FitType1"} = $FTs{$FT1};
+ $All{"FitType2"} = $FTs{$FT2};
+ $All{"FitType3"} = $FTs{$FT3};
+ my @FitTypes =();
+ my $FitType="";
+ foreach $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) {
+ if ( $FitType ne "None" ) {
+ push( @FitTypes, $FitType );
+ }
+ }
+
+# Also theory block and paramets list
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes);
+ $All{"Full_T_Block"}=$Full_T_Block;
+ $All{"Paramcomp_ref"}=$Paramcomp_ref;
+ my @Paramcomp = @$Paramcomp_ref;
+
+# Read initial values of paramets from tabel
+ my $erradd = "d";
+ my $minadd = "_min";
+ my $maxadd = "_max";
+ my $NRows = InitParamTable->numRows();
+ my $Header=InitParamTable->verticalHeader();
+ if ($NRows > 0) {
+ for (my $i=0;$i<$NRows;$i++) {
+# Take label of row, i.e. name of parameter
+ my $Param=$Header->label($i);
+# Then take the value, error, max and min (as numbers)
+ $All{"$Param"}=1.0*InitParamTable->text($i,0);
+ $All{"$erradd$Param"}=1.0*InitParamTable->text($i,1);
+ $All{"$Param$minadd"}=1.0*InitParamTable->text($i,2);
+ $All{"$Param$maxadd"}=1.0*InitParamTable->text($i,3);
+ }
+ }
+
+
+# Shared settings are detected here
+ my $Shared = 0;
+ my $PCount =0;
+ my $Component=1;
+ foreach $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+
+ if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) {
+ unshift( @Params, "Alpha" );
+ }
+ elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+# This is the counter for parameters of this component
+ my $NP=1;
+ $Shared = 0;
+# Change state/label of parameters
+ foreach my $Param (@Params) {
+ my $Param_ORG = $Param;
+# TODO: I need to take care of single hist fits here
+ if ( $All{"FitAsyType"} eq "SingleHist" ) {
+ $Param=$Param.$Hists[0];
+ }
+ if ( $#FitTypes != 0 && ( $Param ne "Alpha" && $Param ne "N0" && $Param ne "NBg" ) ){
+ $Param = join( "", $Param, "_", $Component);
+ }
+
+# Is there any point of sharing, multiple runs?
+ if ( $#RUNS == 0 && $All{"FitAsyType"} eq "Asymmetry") {
+ $Shared = 1;
+ }
+ elsif ( $#RUNS == 0 && $#Hists == 0 && $All{"FitAsyType"} eq "SingleHist" ) {
+ $Shared = 1;
+ } else {
+# Check if shared or not, construct name of checkbox, find its handle and then
+# check if it is checked
+ my $ChkName="ShParam_".$Component."_".$NP;
+ my $ChkBx = child($ChkName);
+ $Shared = $ChkBx->isChecked();
+ }
+ $All{"Sh_$Param"}=$Shared;
+ $NP++;
+ }
+#Loop on parameters
+ $Component++;
+ }
+# Loop on components
+# Done with shared parameters detecting
+
+# Construct a default filename if empty
+ if ( $All{"FILENAME"} eq "" && !$All{"RUNSType"}) {
+ $All{"FILENAME"}=$RUNS[0]."_".$All{"BeamLine"}."_".$All{"YEAR"};
+ } else {
+ $All{"FILENAME"}="TMP";
+ }
+
+ if ( $All{"go"} eq "" ) {
+ $All{"go"}="PLOT";
+ }
+
+# Get minimization process
+ my $Min = Minimization->selectedId();
+ if ($Min==0) {
+ $All{"Minimization"}= "MINIMIZE";
+ $All{"go"}="MIGRAD";
+ }
+ elsif ($Min==1) {
+ $All{"Minimization"}= "MIGRAD";
+ $All{"go"}="MIGRAD";
+ }
+ elsif ($Min==2) {
+ $All{"Minimization"}= "SIMPLEX";
+ $All{"go"}="SIMPLAEX";
+ }
+
+# Get Error calculation process
+ my $Err = ErrorCalc->selectedId();
+ if ($Err==0) {
+ $All{"ErrorCalc"}= "HESSE";
+# $All{"go"}="MIGRAD";
+ }
+ elsif ($Err==1) {
+ $All{"ErrorCalc"}= "MINOS";
+ $All{"go"}="MINOS";
+ }
+
+# Return Hash with all important values
+ return %All;
+
+}
+
+sub CallMSRCreate
+{
+
+ use MSR;
+ my %All=CreateAllInput();
+ if ($All{"RunNumbers"} ne "" || $All{"RunFiles"} ne "") {
+ if ( $All{"FitAsyType"} eq "Asymmetry" ) {
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
+ }
+ elsif ( $All{"FitAsyType"} eq "SingleHist" ) {
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All);
+ }
+ UpdateMSRFileInitTable();
+ }
+
+}
+
+sub UpdateMSRFileInitTable
+{
+
+ my %All=CreateAllInput();
+ my $FILENAME=$All{"FILENAME"};
+ open (MSRF,q{<},"$FILENAME.msr" );
+ my @lines = ;
+ close(IFILE);
+ textMSROutput->setText("");
+ foreach my $line (@lines) {
+ textMSROutput->append("$line");
+ }
+
+ my $FPBlock_ref=MSR::ExtractParamBlk(@lines);
+ my @FPBloc = @$FPBlock_ref;
+
+ my $PCount=0;
+ foreach my $line (@FPBloc) {
+ $PCount++;
+ my @Param=split(/\s+/,$line);
+
+# Depending on home many elements in @Param determine what they mean
+# 0th element is empty (always)
+# 1st element is the order (always)
+# 2nd element is the name (always)
+# 3rd element is the value (always)
+# 4th element can be taken as step/error (always)
+# 5th element can be
+# if it is last element or there are two more = positive error, check $#Param=5/7
+# if there is only one more = minimum, check $#Param=6
+
+# To summarize, check the value of $#Param
+ my $value=1.0*$Param[3];
+ my $error = 1.0*$Param[4];
+ my $minvalue=0.0;
+ my $maxvalue=0.0;
+ if ($#Param == 4) {
+ $minvalue=0.0;
+ $maxvalue=0.0;
+ }
+ elsif ($#Param == 6) {
+ $minvalue=1.0*$Param[5];
+ $maxvalue=1.0*$Param[6];
+ }
+ elsif ($#Param == 5 || $#Param == 7) {
+ $minvalue=1.0*$Param[6];
+ $maxvalue=1.0*$Param[7];
+ }
+# Now update the initialization tabel
+ InitParamTable->setText($PCount-1,0,$value);
+ InitParamTable->setText($PCount-1,1,$error);
+ InitParamTable->setText($PCount-1,2,$minvalue);
+ InitParamTable->setText($PCount-1,3,$maxvalue);
+# Set bg color to mark different runs
+ }
+ return;
+
+}
+
+sub ActivateT0Hists
+{
+
+ my %All=CreateAllInput();
+ my @Hists = split(/,/, $All{"LRBF"} );
+ my $HistBox = "";
+ for (my $iHist=1; $iHist<=4; $iHist++) {
+ $HistBox="groupHist$iHist";
+ my $HistBoxHandle = child($HistBox);
+ if ($iHist<=$#Hists+1) {
+# Activate this histogram box
+ $HistBoxHandle->setHidden(0);
+ $HistBoxHandle->setEnabled(1);
+ $HistBoxHandle->setTitle("Hist # $Hists[$iHist-1]");
+ } else {
+# Deactivate this histogram box
+ $HistBoxHandle->setHidden(1);
+ $HistBoxHandle->setEnabled(0);
+ }
+ }
+
+# TODO: Set default values
+
+
+}
+
+sub ActivateShComp
+{
+
+ my %All=CreateAllInput();
+ my @RUNS = split( /,/, $All{"RunNumbers"} );
+
+# Hide all sharing components
+ SharingComp1->setHidden(1);
+ SharingComp2->setHidden(1);
+ SharingComp3->setHidden(1);
+ SharingComp1->setEnabled(0);
+ SharingComp2->setEnabled(0);
+ SharingComp3->setEnabled(0);
+
+ my @FitTypes =();
+ foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) {
+ if ( $FitType ne "None" ) {
+ push( @FitTypes, $FitType );
+ }
+ }
+
+# Get number of parameters to determine the size of the table
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes);
+# For now the line below does not work. Why?
+# my $Paramcomp_ref=$All{"Paramcomp_ref"};
+ my @Paramcomp = @$Paramcomp_ref;
+ my $Full_T_Block= $All{"Full_T_Block"};
+
+ my $Component=1;
+ CParamsCombo->clear();
+ TheoryBlock->setText($Full_T_Block);
+ foreach my $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+
+ if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) {
+ unshift( @Params, "Alpha" );
+ }
+ elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+
+# Make the component appear first (only if we have multiple runs)
+ my $ShCompG="SharingComp".$Component;
+ my $ShCG = child($ShCompG);
+ if ($#RUNS>0) {
+ $ShCG->setHidden(0);
+ $ShCG->setEnabled(1);
+ }
+ my $CompShLabel = "Comp".$Component."ShLabel";
+ my $CompShL = child($CompShLabel);
+ $CompShL->setText($All{"FitType$Component"});
+
+# Change state/label of parameters
+# Also add it to the constraints drop down menu
+ for (my $i=1; $i<=9;$i++) {
+ my $ParamChkBx="ShParam_".$Component."_".$i;
+ my $ChkBx = child($ParamChkBx);
+ my $CParam = $Params[$i-1]." ".$Component;
+ if ($Params[$i-1] ne "") {
+ $ChkBx->setHidden(0);
+ $ChkBx->setEnabled(1);
+ $ChkBx ->setText($Params[$i-1]);
+ CParamsCombo->insertItem($CParam,-1);
+ } else {
+ $ChkBx->setHidden(1);
+ }
+ }
+ $Component++;
+ }
+
+}
+
+sub InitializeTab
+{
+
+ my %All=CreateAllInput();
+ InitParamTable->setLeftMargin(100);
+ my $NRows = InitParamTable->numRows();
+
+# Remove any rows in table
+ if ($NRows > 0) {
+ for (my $i=0;$i<$NRows;$i++) {
+# TODO: Better remove the row rather than hide it.
+ InitParamTable->hideRow($i);
+ }
+ }
+
+ my %PTable=MSR::PrepParamTable(\%All);
+
+# Setup the table with the right size
+ my $NParam=scalar keys( %PTable );
+ if ($NParam>$NRows) {
+ InitParamTable->setNumRows($NParam);
+ }
+
+# Fill the table with labels and values of parametr
+ for (my $PCount=0;$PCount<$NParam;$PCount++) {
+ my ($Param,$value,$error,$minvalue,$maxvalue,$RUN) = split(/,/,$PTable{$PCount});
+# If you use this then reading the parameters from the table is a problem
+# You need to extract the correct parameter name from the row label
+# InitParamTable->verticalHeader()->setLabel( $PCount,"$RUN: $Param");
+ InitParamTable->verticalHeader()->setLabel( $PCount,"$Param");
+ InitParamTable->showRow($PCount);
+ InitParamTable->setText($PCount,0,$value);
+ InitParamTable->setText($PCount,1,$error);
+ InitParamTable->setText($PCount,2,$minvalue);
+ InitParamTable->setText($PCount,3,$maxvalue);
+ }
+
+}
+
+sub TabChanged
+{
+
+# TODO: First check if there are some runs given, otherwise disbale
+# TODO: Check if the MSR file exists and decide whether to use it or not
+ my %All=CreateAllInput();
+
+ my $SlectedTab = musrfit_tabs->currentPageIndex;
+# Check if the option for checking for existing files is selected
+ my $FileExistCheck= FileExistCheck->isOn();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if ($All{"RunNumbers"} ne "" && $SlectedTab==4 && $FileExistCheck==1) {
+ if (-e $FILENAME) {
+# Warning: MSR file exists
+ my $Warning = "Warning: MSR file $FILENAME Already exists!\nIf you continue it will overwriten.";
+ my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning);
+# my $Answer= Qt::MessageBox::warning( this, "Warning",$Warning, "&No", "&Yes", undef, 1,1);
+# $Answer =1,0 for yes and no
+# print "Answer=$Answer\n";
+ }
+ }
+
+# First make sure we have sharing initialized
+ ActivateShComp();
+ InitializeTab();
+ UpdateMSRFileInitTable();
+# And also setup T0 and Bg bins
+ ActivateT0Hists();
+
+}
+
+sub GoFit
+{
+
+ my %All=CreateAllInput();
+ CallMSRCreate();
+# musrfit_tabs->setCurrentTab(1);
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrfit -t $FILENAME";
+ my $pid = open(FTO,"$cmd 2>&1 |");
+ while () {
+ FitTextOutput->append("$_");
+# print "line= ".$_;
+ }
+ close(FTO);
+ $cmd="musrview $FILENAME &";
+ $pid = system($cmd);
+ } else {
+ FitTextOutput->append("Cannot find MSR file!");
+ }
+ FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------");
+# update MSR File tab and initialization table
+ UpdateMSRFileInitTable();
+ return;
+
+}
+
+sub GoPlot
+{
+
+ my %All=CreateAllInput();
+ CallMSRCreate();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrview $FILENAME &";
+ my $pid = system($cmd);
+ } else {
+ FitTextOutput->append("Cannot find MSR file!");
+ FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------");
+ }
+ return;
+
+}
+
+sub ShowMuSRT0
+{
+
+ my %All=CreateAllInput();
+# Create MSR file and then run musrt0
+ CallMSRCreate();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrt0 $FILENAME &";
+ my $pid = system($cmd);
+ } else {
+ print STDERR "Cannot find MSR file!\n";
+ }
+ return;
+
+}
+
+sub T0Update
+{
+
+ my %All = CreateAllInput();
+ my @Hists = split(/,/, $All{"LRBF"} );
+
+# Get values of t0 and Bg/Data bins if given
+ my $NHist = 1;
+ foreach my $Hist (@Hists) {
+ foreach ("t0","Bg1","Bg2","Data1","Data2") {
+ my $Name = "$_$NHist";
+ my $tmp=MSR::T0BgData($_,$Hist,$All{"BeamLine"});
+ child($Name)->setText($tmp);
+ }
+ $NHist++
+ }
+
+
+}
+
+sub RunSelectionToggle
+{
+
+ my $ManualFile= ManualFile->isOn();
+ if ($ManualFile) {
+# Manual RUN selection
+ RUNSMan->setEnabled(1);
+ RUNSMan->setHidden(0);
+ RunNumbers->setText("");
+ RUNSAuto->setEnabled(0);
+ RUNSAuto->setHidden(1);
+ } else {
+# Auto RUN selection
+ RUNSMan->setEnabled(0);
+ RUNSMan->setHidden(1);
+ RunFiles->setText("");
+ RUNSAuto->setEnabled(1);
+ RUNSAuto->setHidden(0);
+ }
+
+}
+
+sub fileBrowse
+{
+
+ my $files_ref=Qt::FileDialog::getOpenFileNames(
+ "Data files (*.root *.bin)",
+ "./",
+ this,
+ "open files dialog",
+ "Select one or more files to fit");
+ my @files = @$files_ref;
+ my $RunFiles=join(",",@files);
+ RunFiles->setText($RunFiles);
+
+}
+
+1;
+
+
+package main;
+
+use Qt;
+use MuSRFitform;
+
+my $a = Qt::Application(\@ARGV);
+my $w = MuSRFitform;
+$a->setMainWidget($w);
+$w->show;
+exit $a->exec;
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui b/src/external/MuSRFitGUI/devel/MuSRFit.ui
new file mode 100755
index 00000000..d900b62d
--- /dev/null
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.ui
@@ -0,0 +1,5220 @@
+
+MuSRFitform
+
+
+ MuSRFitform
+
+
+
+ 0
+ 0
+ 579
+ 497
+
+
+
+
+ 3
+ 3
+ 1
+ 1
+
+
+
+
+ 21
+ 227
+
+
+
+ MuSRFit GUI
+
+
+ image0
+
+
+ MuSRFitGUI
+
+
+
+ musrfit_tabs
+
+
+ true
+
+
+
+ 10
+ 10
+ 560
+ 400
+
+
+
+
+ 7
+ 7
+ 1
+ 1
+
+
+
+
+ 560
+ 400
+
+
+
+
+ 95
+ 32767
+
+
+
+ Rounded
+
+
+
+ RUNSPage
+
+
+ RUNS
+
+
+
+ groupBox7
+
+
+
+ 11
+ 100
+ 538
+ 164
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 239
+ 243
+ 247
+
+
+ 255
+ 255
+ 255
+
+
+ 247
+ 249
+ 251
+
+
+ 119
+ 121
+ 123
+
+
+ 159
+ 161
+ 164
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 173
+ 176
+ 179
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 239
+ 243
+ 247
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 119
+ 121
+ 123
+
+
+ 159
+ 161
+ 164
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 173
+ 176
+ 179
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 192
+
+
+ 128
+ 0
+ 128
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 239
+ 243
+ 247
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 119
+ 121
+ 123
+
+
+ 159
+ 161
+ 164
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 173
+ 176
+ 179
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 192
+
+
+ 128
+ 0
+ 128
+
+
+
+
+
+ AncestorOrigin
+
+
+ GroupBoxPanel
+
+
+ Sunken
+
+
+ 1
+
+
+ 0
+
+
+ Theory Function
+
+
+ AlignTop
+
+
+
+ layout42
+
+
+
+ 8
+ 21
+ 520
+ 125
+
+
+
+
+ unnamed
+
+
+ 5
+
+
+ -
+
+ Exponential
+
+
+ -
+
+ Gaussian
+
+
+ -
+
+ Stretch Exp.
+
+
+ -
+
+ Exponential Cos
+
+
+ -
+
+ Gaussian Cos
+
+
+ -
+
+ Stretch Cos
+
+
+ -
+
+ Lorentzian Dynamic KT
+
+
+ -
+
+ Gaussian Dynamic KT
+
+
+ -
+
+ Background
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Meissner State Model
+
+
+ -
+
+ None
+
+
+
+ FitType2
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 14
+
+
+
+
+ TfsLabel
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Final Time
+
+
+ Tfs
+
+
+
+ -
+
+ Exponential
+
+
+ -
+
+ Gaussian
+
+
+ -
+
+ Stretch Exp.
+
+
+ -
+
+ Exponential Cos
+
+
+ -
+
+ Gaussian Cos
+
+
+ -
+
+ Stretch Cos
+
+
+ -
+
+ Lorentzian Dynamic KT
+
+
+ -
+
+ Gaussian Dynamic KT
+
+
+ -
+
+ Background
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Meissner State Model
+
+
+ -
+
+ None
+
+
+
+ FitType1
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 20
+
+
+ false
+
+
+ false
+
+
+
+
+ BINS
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 100
+
+
+
+
+ Comp3Label
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 242
+ 247
+ 252
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+
+ Third Component
+
+
+ FitType1_2_2
+
+
+
+
+ Tis
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 0
+
+
+
+
+ Tfs
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 8
+
+
+
+
+ Comp1Label
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 242
+ 247
+ 252
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+
+ First Component
+
+
+ FitType1
+
+
+
+
+ BINSLabel
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Binning Factor
+
+
+ BINS
+
+
+
+
+ TisLabel
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Initial Time
+
+
+ Tis
+
+
+
+ -
+
+ Exponential
+
+
+ -
+
+ Gaussian
+
+
+ -
+
+ Stretch Exp.
+
+
+ -
+
+ Exponential Cos
+
+
+ -
+
+ Gaussian Cos
+
+
+ -
+
+ Stretch Cos
+
+
+ -
+
+ Lorentzian Dynamic KT
+
+
+ -
+
+ Gaussian Dynamic KT
+
+
+ -
+
+ Background
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Exp
+
+
+ -
+
+ Lorentzian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Gaussian Kubo-Toyabe LF x Str Exp
+
+
+ -
+
+ Meissner State Model
+
+
+ -
+
+ None
+
+
+
+ FitType3
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 14
+
+
+
+
+ Comp2Label
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 242
+ 247
+ 252
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+
+ Second Component
+
+
+ FitType1_2
+
+
+
+
+
+
+
+ layout23
+
+
+
+ 21
+ 265
+ 515
+ 40
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+ 3
+
+
+
+ FitAsyTypeLabel
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Fit type
+
+
+
+ -
+
+ Asymmetry
+
+
+ -
+
+ SingleHist
+
+
+
+ FitAsyType
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+
+
+ LRBFLabel
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Histograms list
+
+
+
+
+ LRBF
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ 1,3
+
+
+
+
+
+
+ layout43
+
+
+
+ 4
+ 3
+ 440
+ 95
+
+
+
+
+ unnamed
+
+
+ 5
+
+
+
+ RUNSAuto
+
+
+
+ 5
+ 7
+ 0
+ 0
+
+
+
+ 5
+
+
+ RUN Numbers
+
+
+
+ BeamLineLabel
+
+
+
+ 22
+ 55
+ 99
+ 26
+
+
+
+
+ 0
+ 20
+
+
+
+ On beam line
+
+
+
+ -
+
+ LEM
+
+
+ -
+
+ GPS
+
+
+ -
+
+ Dolly
+
+
+ -
+
+ LTF
+
+
+
+ BeamLine
+
+
+
+ 122
+ 55
+ 100
+ 26
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 20
+
+
+
+
+
+ YEARLabel
+
+
+
+ 251
+ 55
+ 55
+ 26
+
+
+
+
+ 0
+ 20
+
+
+
+ Year
+
+
+
+ -
+
+ 2009
+
+
+ -
+
+ 2008
+
+
+ -
+
+ 2007
+
+
+ -
+
+ 2006
+
+
+ -
+
+ 2005
+
+
+ -
+
+ 2004
+
+
+
+ YEAR
+
+
+
+ 320
+ 55
+ 100
+ 26
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 20
+
+
+
+
+
+ RunNumbers
+
+
+
+ 15
+ 25
+ 405
+ 26
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 23
+
+
+
+ Numbers of RUNs to fit. Multiple runs are comma separated.
+
+
+ Numbers of RUNs to fit. Multiple runs are comma separated.
+
+
+
+
+
+ RUNSMan
+
+
+ true
+
+
+ 5
+
+
+ RUN Files
+
+
+
+ RunFiles
+
+
+ true
+
+
+
+ 15
+ 25
+ 405
+ 26
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 23
+
+
+
+ Names of data files to be fit. Multiple data files are comma separated.
+
+
+ Names of data files to be fit. Multiple data files are comma separated.
+
+
+
+
+ Browse
+
+
+ true
+
+
+
+ 320
+ 55
+ 100
+ 26
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+
+ 0
+ 20
+
+
+
+ Browse
+
+
+ Browse to select data files for fitting.
+
+
+ Browse to select data files for fitting.
+
+
+
+
+
+
+
+ layout27
+
+
+
+ 445
+ 25
+ 97
+ 68
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+
+ PlotMSR_2
+
+
+
+ 7
+ 0
+ 1
+ 0
+
+
+
+
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+ Plot
+
+
+ false
+
+
+ true
+
+
+
+
+ go_2
+
+
+
+ 7
+ 0
+ 1
+ 0
+
+
+
+
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+ Fit
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+
+ TabPage
+
+
+ Fitting
+
+
+
+ Minimization
+
+
+
+ 6
+ 1
+ 200
+ 125
+
+
+
+ Minimization
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+
+ MINIMIZE
+
+
+
+ 16
+ 30
+ 83
+ 22
+
+
+
+ Minimize
+
+
+ true
+
+
+
+
+ MIGRAD
+
+
+
+ 16
+ 59
+ 83
+ 22
+
+
+
+ Migrad
+
+
+
+
+ SIMPLEX
+
+
+
+ 16
+ 88
+ 83
+ 22
+
+
+
+ Simplex
+
+
+
+
+
+ ErrorCalc
+
+
+
+ 208
+ 1
+ 200
+ 125
+
+
+
+ Error Calculation
+
+
+ AlignTop
+
+
+ true
+
+
+ true
+
+
+ 0
+
+
+
+ HESSE
+
+
+
+ 19
+ 30
+ 69
+ 22
+
+
+
+ Hesse
+
+
+ true
+
+
+
+
+ MINOS
+
+
+
+ 19
+ 59
+ 69
+ 22
+
+
+
+ Minos
+
+
+
+
+
+ layout28
+
+
+
+ 418
+ 5
+ 125
+ 120
+
+
+
+
+ unnamed
+
+
+
+ go
+
+
+
+ 7
+ 0
+ 1
+ 0
+
+
+
+
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+ Fit
+
+
+ false
+
+
+ true
+
+
+
+
+ PlotMSR
+
+
+
+ 7
+ 0
+ 1
+ 0
+
+
+
+
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+ Plot
+
+
+ false
+
+
+ true
+
+
+
+
+
+
+ FitTextOutput
+
+
+
+ 5
+ 130
+ 545
+ 230
+
+
+
+ true
+
+
+
+
+
+ SharingPahe
+
+
+ Sharing
+
+
+
+ buttonGroupSharing
+
+
+
+ 5
+ 5
+ 545
+ 355
+
+
+
+
+ 7
+ 7
+ 0
+ 0
+
+
+
+ Shared Parameters
+
+
+ AlignLeft
+
+
+ false
+
+
+
+ SharingComp1
+
+
+ false
+
+
+
+ 31
+ 20
+ 162
+ 330
+
+
+
+
+ 5
+ 3
+ 0
+ 0
+
+
+
+ 1st Component
+
+
+ AlignLeft
+
+
+
+ layout14
+
+
+
+ 40
+ 60
+ 81
+ 266
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+ 0
+
+
+
+ ShParam_1_1
+
+
+ Param1
+
+
+
+
+ ShParam_1_2
+
+
+ Param2
+
+
+
+
+ ShParam_1_3
+
+
+ Param3
+
+
+
+
+ ShParam_1_4
+
+
+ Param4
+
+
+
+
+ ShParam_1_5
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param5
+
+
+ false
+
+
+
+
+ ShParam_1_6
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param6
+
+
+ false
+
+
+
+
+ ShParam_1_7
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param7
+
+
+ false
+
+
+
+
+ ShParam_1_8
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param8
+
+
+ false
+
+
+
+
+ ShParam_1_9
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param9
+
+
+ false
+
+
+
+
+
+
+ Comp1ShLabel
+
+
+
+ 2
+ 30
+ 185
+ 20
+
+
+
+
+ 255
+ 255
+ 127
+
+
+
+ FitType1
+
+
+
+
+
+ SharingComp2
+
+
+ false
+
+
+
+ 199
+ 20
+ 162
+ 330
+
+
+
+
+ 5
+ 3
+ 0
+ 0
+
+
+
+ 2nd Component
+
+
+
+ Comp2ShLabel
+
+
+
+ 2
+ 30
+ 185
+ 20
+
+
+
+
+ 255
+ 255
+ 127
+
+
+
+ FitType2
+
+
+
+
+ layout13
+
+
+
+ 40
+ 60
+ 81
+ 266
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+ 0
+
+
+
+ ShParam_2_1
+
+
+ Param1
+
+
+
+
+ ShParam_2_2
+
+
+ Param2
+
+
+
+
+ ShParam_2_3
+
+
+ Param3
+
+
+
+
+ ShParam_2_4
+
+
+ Param4
+
+
+
+
+ ShParam_2_5
+
+
+ Param5
+
+
+
+
+ ShParam_2_6
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param6
+
+
+ false
+
+
+
+
+ ShParam_2_7
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param7
+
+
+ false
+
+
+
+
+ ShParam_2_8
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param8
+
+
+ false
+
+
+
+
+ ShParam_2_9
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param9
+
+
+ false
+
+
+
+
+
+
+
+ SharingComp3
+
+
+ false
+
+
+
+ 367
+ 20
+ 162
+ 330
+
+
+
+
+ 5
+ 3
+ 0
+ 0
+
+
+
+ 3rd Component
+
+
+ AlignJustify|AlignVCenter
+
+
+
+ Comp3ShLabel
+
+
+
+ 2
+ 30
+ 185
+ 20
+
+
+
+
+ 255
+ 255
+ 127
+
+
+
+ FitType3
+
+
+
+
+ layout15
+
+
+
+ 41
+ 58
+ 81
+ 266
+
+
+
+
+ unnamed
+
+
+
+ ShParam_3_1
+
+
+ Param1
+
+
+
+
+ ShParam_3_2
+
+
+ Param2
+
+
+
+
+ ShParam_3_3
+
+
+ Param3
+
+
+
+
+ ShParam_3_4
+
+
+ Param4
+
+
+
+
+ ShParam_3_5
+
+
+ Param5
+
+
+
+
+ ShParam_3_6
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param6
+
+
+ false
+
+
+
+
+ ShParam_3_7
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param7
+
+
+ false
+
+
+
+
+ ShParam_3_8
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param8
+
+
+ false
+
+
+
+
+ ShParam_3_9
+
+
+ false
+
+
+
+ 234
+ 233
+ 232
+
+
+
+ Param9
+
+
+ false
+
+
+
+
+
+
+
+
+
+ InitializationPage
+
+
+ Initialization
+
+
+
+
+ Value
+
+
+
+
+ Error
+
+
+
+
+ Min
+
+
+
+
+ Max
+
+
+
+ InitParamTable
+
+
+
+ 5
+ 5
+ 545
+ 355
+
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+ 32767
+ 32767
+
+
+
+ TabFocus
+
+
+ PopupPanel
+
+
+ 2
+
+
+ 0
+
+
+ 0
+
+
+ Default
+
+
+ Auto
+
+
+ false
+
+
+ 0
+
+
+ 4
+
+
+ true
+
+
+ false
+
+
+ SpreadSheet
+
+
+
+
+
+ FittingPage
+
+
+ MSR File
+
+
+
+ layout25
+
+
+
+ 5
+ 5
+ 545
+ 355
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+
+ groupTitle
+
+
+ 5
+
+
+
+
+
+
+ layout25
+
+
+
+ 6
+ 8
+ 515
+ 100
+
+
+
+
+ unnamed_2
+
+
+
+ TITLELabel
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+ Enter the label (defaul is run title from the first run)
+
+
+ TITLE
+
+
+
+
+ TITLE
+
+
+
+ 5
+ 0
+ 1
+ 1
+
+
+
+
+ Title line for MSR file (optional)
+
+
+ Title line for MSR file (optional)
+
+
+ Title line for MSR file (optional)
+
+
+
+
+ layout17
+
+
+
+ unnamed_2
+
+
+
+ FILENAMELabel
+
+
+ Enter [name] for output [name].msr file (optional)
+
+
+ FILENAME
+
+
+
+
+ FILENAME
+
+
+
+ 5
+ 0
+ 0
+ 0
+
+
+
+ Name of the produced MSR file (optional)
+
+
+ Name of the produced MSR file (optional)
+
+
+
+
+
+
+
+
+
+ textMSROutput
+
+
+ true
+
+
+
+
+
+
+
+ TabPage
+
+
+ Fourier
+
+
+
+ layout33
+
+
+
+ 5
+ 5
+ 545
+ 94
+
+
+
+
+ unnamed
+
+
+
+ layout26
+
+
+
+ unnamed
+
+
+
+ FUnitsLabel
+
+
+ Units
+
+
+
+
+ FApodizationLabel
+
+
+ Apodization
+
+
+
+
+ FPlotLabel
+
+
+ Plot
+
+
+
+
+
+
+ layout27
+
+
+
+ unnamed
+
+
+ -
+
+ MHz
+
+
+ -
+
+ Gauss
+
+
+ -
+
+ Mc/s
+
+
+
+ FUnits
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+ -
+
+ STRONG
+
+
+ -
+
+ MEDIUM
+
+
+ -
+
+ WEAK
+
+
+ -
+
+ NONE
+
+
+
+ FApodization
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+ -
+
+ power
+
+
+ -
+
+ real
+
+
+ -
+
+ imag
+
+
+ -
+
+ real_and_imag
+
+
+ -
+
+ phase
+
+
+
+ FPlot
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+
+
+
+ layout28
+
+
+
+ unnamed
+
+
+
+ textLabel1
+
+
+ Range: from
+
+
+
+
+ textLabel1_3
+
+
+
+
+
+
+
+ textLabel1_3_5
+
+
+
+
+
+
+
+
+
+ layout29
+
+
+
+ unnamed
+
+
+
+ lineEdit28
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+
+ textLabel1_3_2
+
+
+
+
+
+
+
+ textLabel1_3_6
+
+
+
+
+
+
+
+
+
+ layout31
+
+
+
+ unnamed
+
+
+
+ textLabel1_2
+
+
+ to
+
+
+
+
+ textLabel1_3_3
+
+
+
+
+
+
+
+ textLabel1_3_7
+
+
+
+
+
+
+
+
+
+ layout32
+
+
+
+ unnamed
+
+
+
+ lineEdit28_2
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+
+ textLabel1_3_4
+
+
+
+
+
+
+
+ textLabel1_3_8
+
+
+
+
+
+
+
+
+
+
+
+
+ TabPage
+
+
+ t0/Bg Bins
+
+
+
+ layout27
+
+
+
+ 7
+ 5
+ 540
+ 180
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+
+ groupHist0
+
+
+
+ 5
+ 5
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ layout16_2
+
+
+
+ 5
+ 18
+ 100
+ 150
+
+
+
+
+ unnamed_2
+
+
+
+ textLabel2
+
+
+ t0
+
+
+
+
+ textLabel2_2_2_3
+
+
+ Bg1
+
+
+
+
+ textLabel2_2_2
+
+
+ Bg2
+
+
+
+
+ textLabel2_2_2_2
+
+
+ Data 1
+
+
+
+
+ textLabel2_2_2_2_2
+
+
+ Data 2
+
+
+
+
+
+
+
+ groupHist1
+
+
+ Plain
+
+
+ Hist1
+
+
+
+ layout18
+
+
+
+ 8
+ 17
+ 75
+ 150
+
+
+
+
+ unnamed
+
+
+ 0
+
+
+ 0
+
+
+
+ t01
+
+
+
+
+ Bg11
+
+
+
+
+ Bg21
+
+
+
+
+ Data11
+
+
+
+
+ Data21
+
+
+
+
+
+
+
+ groupHist2
+
+
+ true
+
+
+ Plain
+
+
+ Hist2
+
+
+
+ layout18_2
+
+
+
+ 8
+ 17
+ 75
+ 150
+
+
+
+
+ unnamed_2
+
+
+ 0
+
+
+ 0
+
+
+
+ t02
+
+
+
+
+ Bg12
+
+
+
+
+ Bg22
+
+
+
+
+ Data12
+
+
+
+
+ Data22
+
+
+
+
+
+
+
+ groupHist3
+
+
+ true
+
+
+ Plain
+
+
+ Hist3
+
+
+
+ layout18_3
+
+
+
+ 8
+ 17
+ 75
+ 150
+
+
+
+
+ unnamed_2
+
+
+ 0
+
+
+ 0
+
+
+
+ t03
+
+
+
+
+ Bg13
+
+
+
+
+ Bg23
+
+
+
+
+ Data13
+
+
+
+
+ Data23
+
+
+
+
+
+
+
+ groupHist4
+
+
+ true
+
+
+ Plain
+
+
+ Hist4
+
+
+
+ layout18_4
+
+
+
+ 8
+ 17
+ 75
+ 150
+
+
+
+
+ unnamed_2
+
+
+ 0
+
+
+ 0
+
+
+
+ t04
+
+
+
+
+ Bg14
+
+
+
+
+ Bg24
+
+
+
+
+ Data14
+
+
+
+
+ Data24
+
+
+
+
+
+
+
+
+
+ ShowT0
+
+
+
+ 451
+ 190
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+
+ 95
+ 30
+
+
+
+ Show
+
+
+ false
+
+
+ true
+
+
+
+
+
+ TabPage
+
+
+ Constraints
+
+
+
+ layout29
+
+
+
+ 3
+ 3
+ 550
+ 355
+
+
+
+
+ unnamed
+
+
+
+ textLabel2_2
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 242
+ 247
+ 252
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+
+ THEORY Block
+
+
+
+
+ TheoryBlock
+
+
+
+
+ layout25
+
+
+
+ unnamed
+
+
+
+ CParamsCombo
+
+
+
+ 0
+ 7
+ 0
+ 0
+
+
+
+
+
+ textLabel1_4
+
+
+ =
+
+
+
+
+ ConstraintLine
+
+
+
+ 7
+ 7
+ 0
+ 0
+
+
+
+
+ 0
+ 25
+
+
+
+
+
+ AddConstraint
+
+
+
+ 0
+ 7
+ 0
+ 0
+
+
+
+ Add
+
+
+
+
+
+
+ textLabel2_2_3
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 242
+ 247
+ 252
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+
+
+ 128
+ 128
+ 128
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 128
+ 128
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 230
+ 240
+ 249
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 255
+
+
+ 115
+ 120
+ 124
+
+
+ 154
+ 160
+ 166
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 0
+
+
+ 255
+ 255
+ 255
+
+
+ 255
+ 255
+ 127
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 128
+
+
+ 255
+ 255
+ 255
+
+
+ 0
+ 0
+ 238
+
+
+ 82
+ 24
+ 139
+
+
+
+
+
+ FUNCTIONS Block
+
+
+
+
+ FunctionsBlock
+
+
+
+
+
+
+
+
+
+ MenuBar
+
+
+ true
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+ toolBar
+
+
+ Tools
+
+
+
+
+
+
+
+
+
+
+
+ fileNewAction
+
+
+ image1
+
+
+ &New
+
+
+ &New
+
+
+ Ctrl+N
+
+
+
+
+ fileOpenAction
+
+
+ false
+
+
+ image2
+
+
+ &Open MSR...
+
+
+ &Open MSR...
+
+
+ Ctrl+O
+
+
+
+
+ fileSaveAction
+
+
+ image3
+
+
+ &Save MSR
+
+
+ &Save MSR
+
+
+ &Save MSR
+
+
+ Ctrl+S
+
+
+
+
+ fileSaveAsAction
+
+
+ Save MSR &As...
+
+
+ Save MSR &As...
+
+
+
+
+
+
+
+ filePrintAction
+
+
+ false
+
+
+ image4
+
+
+ Print
+
+
+ &Print...
+
+
+ Ctrl+P
+
+
+
+
+ fileExitAction
+
+
+ Exit
+
+
+ E&xit
+
+
+
+
+
+
+
+ editUndoAction
+
+
+ false
+
+
+ image5
+
+
+ Undo
+
+
+ &Undo
+
+
+ Ctrl+Z
+
+
+
+
+ editRedoAction
+
+
+ false
+
+
+ image6
+
+
+ Redo
+
+
+ &Redo
+
+
+ Ctrl+Y
+
+
+
+
+ editCutAction
+
+
+ false
+
+
+ image7
+
+
+ Cut
+
+
+ Cu&t
+
+
+ Ctrl+X
+
+
+
+
+ editCopyAction
+
+
+ false
+
+
+ image8
+
+
+ Copy
+
+
+ &Copy
+
+
+ Ctrl+C
+
+
+
+
+ editPasteAction
+
+
+ false
+
+
+ image9
+
+
+ Paste
+
+
+ &Paste
+
+
+ Ctrl+V
+
+
+
+
+ editFindAction
+
+
+ image10
+
+
+ Find
+
+
+ &Find...
+
+
+ Ctrl+F
+
+
+
+
+ helpContentsAction
+
+
+ false
+
+
+ Contents
+
+
+ &Contents...
+
+
+
+
+
+
+
+ helpIndexAction
+
+
+ false
+
+
+ Index
+
+
+ &Index...
+
+
+
+
+
+
+
+ helpAboutAction
+
+
+ About
+
+
+ &About
+
+
+
+
+
+
+
+ Action
+
+
+ Unnamed
+
+
+ Unnamed
+
+
+
+
+ separatorAction
+
+
+
+
+
+
+
+
+
+
+ FileExistCheck
+
+
+ true
+
+
+ true
+
+
+ File exist check
+
+
+ File exist check
+
+
+ Enable/Disable checking for MSR files.
+
+
+
+
+ ManualFile
+
+
+ true
+
+
+ Maual file selection
+
+
+ Maual file selection
+
+
+
+
+ fileChangeDirAction
+
+
+ &Change dir
+
+
+ &Change dir
+
+
+ Ctrl+C
+
+
+
+
+ Action_2
+
+
+ Unnamed
+
+
+
+
+ Action_3
+
+
+ Unnamed
+
+
+
+
+ optionsnew_itemAction
+
+
+ new item
+
+
+ new item
+
+
+
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000d349444154388db594510e84200c44a7864bd9fb673c16fe50b7a95501dd97104983435b06842422ab6ab5f946ca6941074b0ca813cd36eaa5f89f050049811352d53aac8a96b165640256fe468ac546b33eb5c298ededa3f05b1655adbef4b8c062a3e92fbc117d83643ebe6275d53dd1dd637345af3b3e3bbcb8e19470763b23ddc2de3924c58b676d2a67897b717f4b25dcd848f5a3b9e4f8c651dd200992c86205680f4f82c555b51e6b92fe5a2502c0cc3bd40a13b98a133faf17cb286639833fc4db56bce17fafdb9762deeb438fd0083bbf3298df1bba5b870000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000007f49444154388ded95510a0021084475d9db041ec0e8fa5ecbfdda852d4b11fa6b2028a3570c53a188c00edd7d819935b2504470357f5945559d36000022720f60823d11910b1fac88a894f2f599592d5b52e05aeb6f6cc153e0d6da50ebe12930e2321039f09b0c6fb3542a223ae0033ee085cc2b1d790b3ce1ae3f6f9b150f6d5433af47a4f4c20000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000ae49444154388db594510ec3200c436db45371b6691fd3cee66bb18f5135a219235af04f442b5e2c03a124ec50d942dd09be4537d45a9b5d4be2f85f1243e06393d748126d53661d9e854a624ac6633c40cff8576e51280010406b0d00dab104b9c69d19e887774201f64ebc7c8f342fc678b0ce553cc76b752e37e368d69edc8c2df4f58c01ef8f4f7533fe176a1e482ef4e2380b6ac0b9d0d36a57161430833e130aacdef62f9acd8ab4793cea0d051970cdbc4f01b20000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000ad49444154388dd595310e842010453f8686c482f3d0ccc58c85f16234731e0b922d770b3386150d62d084d7100cbe7cc6411433e309340038e7be35a5ccacb44ce6691d8711f0de178988687b878800005da590093abfe418132c3efdb2cd25a9904d6c82850936791e4b81b59452ce4be2bb644bb14f7695c712b7274e6a3c4f69ebe488bbe1547cb6b09477db6d18cb45fb5dde3ed2f18feae89bb4d76eed8995dc79b5ae2766567fe2dafc0045362bc8717a5b490000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000028c49444154388d8d95af7bdb301086dfec0938319bc530b061350c2cf458cb5a18b83f6181a363a3851debd8020b1dd6b01a0adacc62772c03b21de7d7b38a28962eef7dbaef2c4fcab2e4d268db762f22a4697ab46e6600a82a0021049224c1393719c74d2f52011121cff30174ba371280f7fe2ce62a18a0aaaa33d8692255c539f779f02580999d25e8e753f8972bdcbd990dc1ce399c7347f5eeeb2f2267f5bdaa5855499284b66d1191c1a8f1b874fccf28c6ccce3a620ced935d32f7aae25ecd25a5e375553dea90ff82ebba663e9f9365d955786fe476bb2584b01749c8b274a8f5115855f7de7baa5d851482880c80d3b957dad62d6559d284869b9b9b7d5114a4693a99f46f9eaaeeabca13ea063580cb4a019ca408020e7ced797fdfd13435aac6623167b55a45c5bdd2e2ee0e97a6a81a9872668b1920946c79e32f4b5bb2fcc8a9aa1da8e1808ff70f7ee933d3086d78f8fa40324baeaaec4745c54f7ee0f1ecd8f1222f14fe9e97f699ba0e1846e33dd3d0049e9eeeafba7b3a5252ee5852221414dcdede9248466b35cf2fbf092190ce52a606785fc77e340311628e9848041c2e56dc14c4f1cdbe738f27b38c1d1598916659dcefdc99b6758d1789f53463f0cd4174b13b89335001e29a00de1a8c7887f8aa1a3c7174edd62f580fc486a650a229b19d87c8a173a4f7743414658a80b5a33f6827761c688028d8e98ec3aca53b677f36f27cc9176ca47210abf1d1baf908eafab00eda01bb72ce663356aba7a8d87bdf5b0562100408d139b388915e951d601c6a8e1922b05eafc9b26c329dcfe7bc6ddef8b3d9a06ac4fb47386a3e193dcb01399cb3eba6f57a4d9ee71380e195aeeb7afffabaa1e9be5f8a76a61c9c397c3540b58dbf83912f731e1f1f592c16c325f40f010f7cb0f1b5c3040000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000009b49444154388ded943b0e80200c865be3a91889c7320e8463998ebd164e68417949184cfcc7b67c6de803991946681a42fdc152734bb052e49eecd600e845a3b4a19f0aa5c83187ce1230967c1f541cc363602931ede47ce5b73ff64112caac31059509d7edb23d362f86a6803965a7e22db408ae6d5a33b8075eb52025b8f75b73d9b0e7bad14e4e4e82ec49d74aa7a0009d15e7f4bdebf6834f1d172546d17f21be920000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000009349444154388ded943d0e80200c46a9f1548cc4631907c2b148c75e0b27b0226083b2f12d24d03efa0740446a849621d409e65af30df418f6a36c4c64400a063e155a639038d52ed01a433c4b11a3bfa02d47be72bb3ca854e3987e2b5d2203255829d3aee6b522fd04cee1bf82df1add05964c4f023b2b73928e64758e9d55ca6cf20791eb560ade90daeb930ae67f3cc10f9d5ba746085c06e1e50000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000009d49444154388dcdd4410e80200c04c0d6f8aa9e7936e7fd169e9a20222ca0d15e4c340eeda64101c81bb5b53e9a591a794fc32bf51f988981826b10005d8219600af6f2aed918444494d9e31c64a7f8762bbccb91ccc98c63ca9f8fc08e79b76631310774ee8a9880701a1f080a04ede1b7700d2d0f68e155b88732f80566d15e0ded3193ed145c566bba7df4e7bceb5664d5bb221f77366fea129aa903bb2561adb1d6f6e70000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000d349444154388db595b10e83300c44cf88af8a18d9f91936d485aa7fd5d99fd5eb5099461093109493bc70c9f3c94984a82a5aa86b4205200078b64055a51a4ca6d922520deff7109335230911e155f806f652d7c2b751a412ffbeada700d531d9ac60c62bc887e33f5d78f75f24878a1bee3dd3302c08e17d48b681491e2a96e74d531aeede0a8379be79f3dc01f8005810c28b3696a25b71e6db9c4d21bca93acaadc4a943b546b7137baa4e9c6bde2c716769bc8a13e72a569f7bff763fab679c53f58caf6c2a511178ff088af6b4fa997e01dfa4987b8b9435470000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000000ec49444154388db5954d0e83201085df989e6a1237bd96c44583d7eaa6c95c6bba402dc850d0d29798093ff3cd13044944f00fddbe0d32b31efb44845ac0b439b62000a0512f159056b1a1156ab53759f9044001c03f3c0007c0c3cd6e07c52ee3b6353f764e00f438495ef50de59133780c1e420883219e51396ffd2a7c3289476e04a77906f83318bfdeb9986ab02b5f89a9d6cd2bc3dd9c27d94a37cf5ce3a313d5a988235aa03a6587275be3129c68c9a071c1005f54e44ecd8e6bae2d7837c7477817c756d19f1d5b058996be6bdccdb1a5ddc07ad16bf9f17a568057aafdf3989f85ebfdbbaae0ab7a030d36e3e74e2086d10000000049454e44ae426082
+
+
+ 89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000025949444154388db59521931b3910469fb7027a98c42c2838cb6cb686031d689685f95d86816b66c385033dcc0305354c62dd6c021c576d2e97f3a672fb21a94bf5f449ad6e2dfabee723f4f02154e0d3db4929654e299173a69a01e04488311263a4699ac51f8373ce737f3ee36360bdfb0c4eaef194185ecfa494d86c36b3f7fe5df045dff7e49ce7979717369f3b365f760098196a8a6154abf4df8e4836b6dbedbb9c3fa8eadc9f7bbaafcfb4db0e33c392a0690963a0f642c98576db41f00cc3f0aeab784829e16364d37500485e525266b2814946c43cd247ac56e2a6654c8952ca7c1f3c4db49b35866105d298487e4443219330293408960d4490e0c839df776caa38ef2856c8cd44594f8813ac188e0878521d51a76020ae619aa6bbe04f00550d11401503304372a4b1404e3dda26c063a50202d755ffed180cccae49b3db181a13f278a6b4198280292660b52022f7c1c107524a985e81560dc3c896b05031c0ca35a65529a51263bc0f8e3192fb0b5a15b37a051443cc43126aadfc3808354f0404e7dc3b1c87b008de33bcbea2802a80923853dc8813a1944a29151b126ddbe28327e73cabea6f9fdd03c06ab5c215a8c7338d298d35f8658344871804035e2f3c3d3df1f8f8b84863e2743ab1dfefc939ff2b7c716b9baa3a0fc3c09812e2049a6b82ac54c4a0eb3a4208b7529e8fc72387c301e71cbbdd8ed56af553a92ffed98f4b2973ce995a2b2282f7fe96ac5ffa434a69fee19aaeeb7edafc17f09f4a55e7d3e9c4e17060b95cf2fcfccc7abd5efc35f8a6cbe532eff77ba66962bbddfebde3b72aa5cc87c30155fd7fc16ff5617fde773b427a020f23b15a0000000049454e44ae426082
+
+
+
+
+ helpAboutAction
+ activated()
+ MuSRFitform
+ helpAbout()
+
+
+ helpContentsAction
+ activated()
+ MuSRFitform
+ helpContents()
+
+
+ helpIndexAction
+ activated()
+ MuSRFitform
+ helpIndex()
+
+
+ editPasteAction
+ activated()
+ MuSRFitform
+ editPaste()
+
+
+ editCopyAction
+ activated()
+ MuSRFitform
+ editCopy()
+
+
+ editCutAction
+ activated()
+ MuSRFitform
+ editCut()
+
+
+ editRedoAction
+ activated()
+ MuSRFitform
+ editRedo()
+
+
+ editUndoAction
+ activated()
+ MuSRFitform
+ editUndo()
+
+
+ fileExitAction
+ activated()
+ MuSRFitform
+ fileExit()
+
+
+ filePrintAction
+ activated()
+ MuSRFitform
+ filePrint()
+
+
+ fileSaveAction
+ activated()
+ MuSRFitform
+ fileSave()
+
+
+ fileOpenAction
+ activated()
+ MuSRFitform
+ fileOpen()
+
+
+ fileChangeDirAction
+ activated()
+ MuSRFitform
+ fileChangeDir()
+
+
+ musrfit_tabs
+ selected(const QString&)
+ MuSRFitform
+ TabChanged()
+
+
+ go
+ clicked()
+ MuSRFitform
+ GoFit()
+
+
+ ShowT0
+ clicked()
+ MuSRFitform
+ ShowMuSRT0()
+
+
+ PlotMSR
+ clicked()
+ MuSRFitform
+ GoPlot()
+
+
+ InitParamTable
+ valueChanged(int,int)
+ MuSRFitform
+ CallMSRCreate()
+
+
+ ManualFile
+ toggled(bool)
+ MuSRFitform
+ RunSelectionToggle()
+
+
+ go_2
+ clicked()
+ MuSRFitform
+ GoFit()
+
+
+ PlotMSR_2
+ pressed()
+ MuSRFitform
+ GoPlot()
+
+
+ Browse
+ clicked()
+ MuSRFitform
+ fileBrowse()
+
+
+ BeamLine
+ activated(int)
+ MuSRFitform
+ T0Update()
+
+
+
+ musrfit_tabs
+ RunNumbers
+ BeamLine
+ YEAR
+ RunFiles
+ Browse
+ FitType1
+ FitType2
+ FitType3
+ Tis
+ Tfs
+ BINS
+ FitAsyType
+ LRBF
+ PlotMSR_2
+ go_2
+ MINIMIZE
+ HESSE
+ go
+ PlotMSR
+ FitTextOutput
+ ShParam_1_1
+ ShParam_1_2
+ ShParam_1_3
+ ShParam_1_4
+ ShParam_1_5
+ ShParam_1_6
+ ShParam_1_7
+ ShParam_1_8
+ ShParam_1_9
+ ShParam_2_1
+ ShParam_2_2
+ ShParam_2_3
+ ShParam_2_4
+ ShParam_2_5
+ ShParam_2_6
+ ShParam_2_7
+ ShParam_2_8
+ ShParam_2_9
+ ShParam_3_1
+ ShParam_3_2
+ ShParam_3_3
+ ShParam_3_4
+ ShParam_3_5
+ ShParam_3_6
+ ShParam_3_7
+ ShParam_3_8
+ ShParam_3_9
+ InitParamTable
+ TITLE
+ FILENAME
+ textMSROutput
+ FUnits
+ FApodization
+ FPlot
+ lineEdit28
+ lineEdit28_2
+ t01
+ Bg11
+ Bg21
+ Data11
+ Data21
+ t02
+ Bg12
+ Bg22
+ Data12
+ Data22
+ t03
+ Bg13
+ Bg23
+ Data13
+ Data23
+ t04
+ Bg14
+ Bg24
+ Data14
+ Data24
+ ShowT0
+
+
+ MuSRFit.ui.h
+
+
+ fileOpen()
+ fileSave()
+ fileChangeDir()
+ filePrint()
+ fileExit()
+ editUndo()
+ editRedo()
+ editCut()
+ editCopy()
+ editPaste()
+ helpIndex()
+ helpContents()
+ helpAbout()
+ CreateAllInput()
+ CallMSRCreate()
+ UpdateMSRFileInitTable()
+ ActivateT0Hists()
+ ActivateShComp()
+ InitializeTab()
+ TabChanged()
+ GoFit()
+ GoPlot()
+ ShowMuSRT0()
+ T0Update()
+ RunSelectionToggle()
+ fileBrowse()
+
+
+
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui.h b/src/external/MuSRFitGUI/devel/MuSRFit.ui.h
new file mode 100755
index 00000000..82a55558
--- /dev/null
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.ui.h
@@ -0,0 +1,704 @@
+/****************************************************************************
+** ui.h extension file, included from the uic-generated form implementation.
+**
+** If you want to add, delete, or rename functions or slots, use
+** Qt Designer to update this file, preserving your code.
+**
+** You should not define a constructor or destructor in this file.
+** Instead, write your code in functions called init() and destroy().
+** These will automatically be called by the form's constructor and
+** destructor.
+*****************************************************************************/
+
+# This file is part of MuSRFitGUI.
+#
+# MuSRFitGUI is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# MuSRFitGUI is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with MuSRFitGUI. If not, see .
+#
+# Copyright 2009 by Zaher Salman and the LEM Group.
+#
+
+void Form1::fileOpen()
+{
+ my $file=Qt::FileDialog::getOpenFileName(
+ ".",
+ "MSR Files (*.msr *.mlog)",
+ this,
+ "open file dialog",
+ "Choose a MSR file");
+ print "Selected file: $file\n";
+# TODO: Possibly decipher the MSR file and setup the GUI accordingly
+# Find run numbers, beamlines etc.
+# Get theory block and understand it
+# Get parameters list and update table
+
+}
+
+
+void Form1::fileSave()
+{
+ my %All=CreateAllInput();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ my $file=Qt::FileDialog::getSaveFileName(
+ "$FILENAME",
+ "MSR Files (*.msr *.mlog)",
+ this,
+ "save file dialog",
+ "Choose a filename to save under");
+
+# If the user gave a filename the copy to it
+ if ($file ne "") {
+# TODO: check if the extension is correct, or add it.
+ if (-e $FILENAME) {
+ my $cmd="cp $FILENAME $file";
+ my $pid=system($cmd);
+ } else {
+ if ($file ne "") {
+ my $Warning = "Warning: No MSR file found yet!";
+ my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning);
+ }
+ }
+ }
+}
+
+void Form1::fileChangeDir()
+{
+ my $newdir=Qt::FileDialog::getExistingDirectory(
+ "",
+ this,
+ "get existing directory",
+ "Choose a directory",
+ 1);
+ chdir ("$newdir");
+}
+
+void Form1::filePrint()
+{
+
+}
+
+
+void Form1::fileExit()
+{
+ Qt::Application::exit( 0 );
+}
+
+
+void Form1::editUndo()
+{
+
+}
+
+
+void Form1::editRedo()
+{
+
+}
+
+
+void Form1::editCut()
+{
+
+}
+
+
+void Form1::editCopy()
+{
+
+}
+
+
+void Form1::editPaste()
+{
+
+}
+
+
+void Form1::helpIndex()
+{
+
+}
+
+
+void Form1::helpContents()
+{
+
+}
+
+void Form1::helpAbout()
+{
+ my $AboutText="
+ This is a GUI that uses the musrfit binary, developed by Andreas Suter,
+ to fit muSR spectra.
+
+ MuSRFitGUI is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ MuSRFitGUI is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with MuSRFitGUI. If not, see .
+
+ Copyright 2009 by Zaher Salman and the LEM Group.
+
+ ";
+ my $AboutWindow = Qt::MessageBox::information( this, "About MuSRFit GUI",$AboutText);
+}
+
+void MuSRFitform::CreateAllInput()
+{
+# TODO: Need to deliver shared parameters also
+ my %All=();
+# From RUNS Tab
+ $All{"TITLE"}= TITLE->text;
+ $All{"FILENAME"}= FILENAME->text;
+ $All{"RunNumbers"} = RunNumbers->text;
+ $All{"RunFiles"} = RunFiles->text;
+ $All{"BeamLine"} = BeamLine->currentText;
+ $All{"RUNSType"} = ManualFile->isOn();
+ $All{"YEAR"} =YEAR->currentText;
+ $All{"Tis"} = Tis->text;
+ $All{"Tfs"} = Tfs->text;
+ $All{"BINS"} = BINS->text;
+ $All{"FitAsyType"} = FitAsyType->currentText;
+ $All{"LRBF"} = LRBF->text;
+
+ RunSelectionToggle();
+ my @RUNS = ();
+ if ($All{"RUNSType"} ) {
+ @RUNS = split( /,/, $All{"RunFiles"});
+ } else {
+ $All{"RunNumbers"} =~ s/[\ \.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]/,/g;
+ @RUNS = split( /,/, $All{"RunNumbers"} );
+ }
+
+ my @Hists = split(/,/, $All{"LRBF"} );
+
+# From Fourier Tab
+ $All{"FUNITS"}= FUnits->currentText;
+ $All{"FAPODIZATION"}= FApodization->currentText;
+ $All{"FPLOT"}= FPlot->currentText;
+
+# Get values of t0 and Bg/Data bins if given
+ my $NHist = 1;
+ foreach my $Hist (@Hists) {
+ foreach ("t0","Bg1","Bg2","Data1","Data2") {
+ my $Name = "$_$NHist";
+ $All{$Name}=child($Name)->text;
+# TODO: If empty fill with defaults
+ if ($All{$Name} eq "") {
+ $All{$Name}=MSR::T0BgData($_,$Hist,$All{"BeamLine"});
+ child($Name)->setText($All{$Name});
+ }
+ }
+ $NHist++;
+ }
+
+# Construct fittypes that can be understood by MSR.pm
+ my %FTs=(0,"Exponential",
+ 1,"Gaussian",
+ 2,"Stretch",
+ 3,"ExponentialCos",
+ 4,"GaussianCos",
+ 5,"StretchCos",
+ 6,"LDKTLF",
+ 7,"GDKTLF",
+ 8,"Background",
+ 9,"LLFExp",
+ 10,"GLFExp",
+ 11,"LLFSExp",
+ 12,"GLFSExp",
+ 13,"Meissner",
+ 14,"None"
+ );
+
+ my $FT1=FitType1->currentItem;
+ my $FT2=FitType2->currentItem;
+ my $FT3=FitType3->currentItem;
+ $All{"FitType1"} = $FTs{$FT1};
+ $All{"FitType2"} = $FTs{$FT2};
+ $All{"FitType3"} = $FTs{$FT3};
+ my @FitTypes =();
+ my $FitType="";
+ foreach $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) {
+ if ( $FitType ne "None" ) {
+ push( @FitTypes, $FitType );
+ }
+ }
+
+# Also theory block and paramets list
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes);
+ $All{"Full_T_Block"}=$Full_T_Block;
+ $All{"Paramcomp_ref"}=$Paramcomp_ref;
+ my @Paramcomp = @$Paramcomp_ref;
+
+# Read initial values of paramets from tabel
+ my $erradd = "d";
+ my $minadd = "_min";
+ my $maxadd = "_max";
+ my $NRows = InitParamTable->numRows();
+ my $Header=InitParamTable->verticalHeader();
+ if ($NRows > 0) {
+ for (my $i=0;$i<$NRows;$i++) {
+# Take label of row, i.e. name of parameter
+ my $Param=$Header->label($i);
+# Then take the value, error, max and min (as numbers)
+ $All{"$Param"}=1.0*InitParamTable->text($i,0);
+ $All{"$erradd$Param"}=1.0*InitParamTable->text($i,1);
+ $All{"$Param$minadd"}=1.0*InitParamTable->text($i,2);
+ $All{"$Param$maxadd"}=1.0*InitParamTable->text($i,3);
+ }
+ }
+
+
+# Shared settings are detected here
+ my $Shared = 0;
+ my $PCount =0;
+ my $Component=1;
+ foreach $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+
+ if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) {
+ unshift( @Params, "Alpha" );
+ }
+ elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+# This is the counter for parameters of this component
+ my $NP=1;
+ $Shared = 0;
+# Change state/label of parameters
+ foreach my $Param (@Params) {
+ my $Param_ORG = $Param;
+# TODO: I need to take care of single hist fits here
+ if ( $All{"FitAsyType"} eq "SingleHist" ) {
+ $Param=$Param.$Hists[0];
+ }
+ if ( $#FitTypes != 0 && ( $Param ne "Alpha" && $Param ne "N0" && $Param ne "NBg" ) ){
+ $Param = join( "", $Param, "_", $Component);
+ }
+
+# Is there any point of sharing, multiple runs?
+ if ( $#RUNS == 0 && $All{"FitAsyType"} eq "Asymmetry") {
+ $Shared = 1;
+ }
+ elsif ( $#RUNS == 0 && $#Hists == 0 && $All{"FitAsyType"} eq "SingleHist" ) {
+ $Shared = 1;
+ } else {
+# Check if shared or not, construct name of checkbox, find its handle and then
+# check if it is checked
+ my $ChkName="ShParam_".$Component."_".$NP;
+ my $ChkBx = child($ChkName);
+ $Shared = $ChkBx->isChecked();
+ }
+ $All{"Sh_$Param"}=$Shared;
+ $NP++;
+ }
+#Loop on parameters
+ $Component++;
+ }
+# Loop on components
+# Done with shared parameters detecting
+
+# Construct a default filename if empty
+ if ( $All{"FILENAME"} eq "" && !$All{"RUNSType"}) {
+ $All{"FILENAME"}=$RUNS[0]."_".$All{"BeamLine"}."_".$All{"YEAR"};
+ } else {
+ $All{"FILENAME"}="TMP";
+ }
+
+ if ( $All{"go"} eq "" ) {
+ $All{"go"}="PLOT";
+ }
+
+# Get minimization process
+ my $Min = Minimization->selectedId();
+ if ($Min==0) {
+ $All{"Minimization"}= "MINIMIZE";
+ $All{"go"}="MIGRAD";
+ }
+ elsif ($Min==1) {
+ $All{"Minimization"}= "MIGRAD";
+ $All{"go"}="MIGRAD";
+ }
+ elsif ($Min==2) {
+ $All{"Minimization"}= "SIMPLEX";
+ $All{"go"}="SIMPLAEX";
+ }
+
+# Get Error calculation process
+ my $Err = ErrorCalc->selectedId();
+ if ($Err==0) {
+ $All{"ErrorCalc"}= "HESSE";
+# $All{"go"}="MIGRAD";
+ }
+ elsif ($Err==1) {
+ $All{"ErrorCalc"}= "MINOS";
+ $All{"go"}="MINOS";
+ }
+
+# Return Hash with all important values
+ return %All;
+}
+
+void MuSRFitform::CallMSRCreate()
+{
+ use MSR;
+ my %All=CreateAllInput();
+ if ($All{"RunNumbers"} ne "" || $All{"RunFiles"} ne "") {
+ if ( $All{"FitAsyType"} eq "Asymmetry" ) {
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
+ }
+ elsif ( $All{"FitAsyType"} eq "SingleHist" ) {
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All);
+ }
+ UpdateMSRFileInitTable();
+ }
+}
+
+void MuSRFitform::UpdateMSRFileInitTable()
+{
+ my %All=CreateAllInput();
+ my $FILENAME=$All{"FILENAME"};
+ open (MSRF,q{<},"$FILENAME.msr" );
+ my @lines = ;
+ close(IFILE);
+ textMSROutput->setText("");
+ foreach my $line (@lines) {
+ textMSROutput->append("$line");
+ }
+
+ my $FPBlock_ref=MSR::ExtractParamBlk(@lines);
+ my @FPBloc = @$FPBlock_ref;
+
+ my $PCount=0;
+ foreach my $line (@FPBloc) {
+ $PCount++;
+ my @Param=split(/\s+/,$line);
+
+# Depending on home many elements in @Param determine what they mean
+# 0th element is empty (always)
+# 1st element is the order (always)
+# 2nd element is the name (always)
+# 3rd element is the value (always)
+# 4th element can be taken as step/error (always)
+# 5th element can be
+# if it is last element or there are two more = positive error, check $#Param=5/7
+# if there is only one more = minimum, check $#Param=6
+
+# To summarize, check the value of $#Param
+ my $value=1.0*$Param[3];
+ my $error = 1.0*$Param[4];
+ my $minvalue=0.0;
+ my $maxvalue=0.0;
+ if ($#Param == 4) {
+ $minvalue=0.0;
+ $maxvalue=0.0;
+ }
+ elsif ($#Param == 6) {
+ $minvalue=1.0*$Param[5];
+ $maxvalue=1.0*$Param[6];
+ }
+ elsif ($#Param == 5 || $#Param == 7) {
+ $minvalue=1.0*$Param[6];
+ $maxvalue=1.0*$Param[7];
+ }
+# Now update the initialization tabel
+ InitParamTable->setText($PCount-1,0,$value);
+ InitParamTable->setText($PCount-1,1,$error);
+ InitParamTable->setText($PCount-1,2,$minvalue);
+ InitParamTable->setText($PCount-1,3,$maxvalue);
+# Set bg color to mark different runs
+ }
+ return;
+}
+
+void MuSRFitform::ActivateT0Hists()
+{
+ my %All=CreateAllInput();
+ my @Hists = split(/,/, $All{"LRBF"} );
+ my $HistBox = "";
+ for (my $iHist=1; $iHist<=4; $iHist++) {
+ $HistBox="groupHist$iHist";
+ my $HistBoxHandle = child($HistBox);
+ if ($iHist<=$#Hists+1) {
+# Activate this histogram box
+ $HistBoxHandle->setHidden(0);
+ $HistBoxHandle->setEnabled(1);
+ $HistBoxHandle->setTitle("Hist # $Hists[$iHist-1]");
+ } else {
+# Deactivate this histogram box
+ $HistBoxHandle->setHidden(1);
+ $HistBoxHandle->setEnabled(0);
+ }
+ }
+
+# TODO: Set default values
+
+}
+
+void MuSRFitform::ActivateShComp()
+{
+ my %All=CreateAllInput();
+ my @RUNS = split( /,/, $All{"RunNumbers"} );
+
+# Hide all sharing components
+ SharingComp1->setHidden(1);
+ SharingComp2->setHidden(1);
+ SharingComp3->setHidden(1);
+ SharingComp1->setEnabled(0);
+ SharingComp2->setEnabled(0);
+ SharingComp3->setEnabled(0);
+
+ my @FitTypes =();
+ foreach my $FitType ($All{"FitType1"}, $All{"FitType2"}, $All{"FitType3"}) {
+ if ( $FitType ne "None" ) {
+ push( @FitTypes, $FitType );
+ }
+ }
+
+# Get number of parameters to determine the size of the table
+ my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateTheory(@FitTypes);
+# For now the line below does not work. Why?
+# my $Paramcomp_ref=$All{"Paramcomp_ref"};
+ my @Paramcomp = @$Paramcomp_ref;
+ my $Full_T_Block= $All{"Full_T_Block"};
+
+ my $Component=1;
+ CParamsCombo->clear();
+ TheoryBlock->setText($Full_T_Block);
+ foreach my $FitType (@FitTypes) {
+ my $Parameters=$Paramcomp[$Component-1];
+ my @Params = split( /\s+/, $Parameters );
+
+ if ( $Component == 1 && $All{"FitAsyType"} eq "Asymmetry" ) {
+ unshift( @Params, "Alpha" );
+ }
+ elsif ( $Component == 1 && $All{"FitAsyType"} eq "SingleHist" ) {
+ unshift( @Params, ( "N0", "NBg" ) );
+ }
+
+
+# Make the component appear first (only if we have multiple runs)
+ my $ShCompG="SharingComp".$Component;
+ my $ShCG = child($ShCompG);
+ if ($#RUNS>0) {
+ $ShCG->setHidden(0);
+ $ShCG->setEnabled(1);
+ }
+ my $CompShLabel = "Comp".$Component."ShLabel";
+ my $CompShL = child($CompShLabel);
+ $CompShL->setText($All{"FitType$Component"});
+
+# Change state/label of parameters
+# Also add it to the constraints drop down menu
+ for (my $i=1; $i<=9;$i++) {
+ my $ParamChkBx="ShParam_".$Component."_".$i;
+ my $ChkBx = child($ParamChkBx);
+ my $CParam = $Params[$i-1]." ".$Component;
+ if ($Params[$i-1] ne "") {
+ $ChkBx->setHidden(0);
+ $ChkBx->setEnabled(1);
+ $ChkBx ->setText($Params[$i-1]);
+ CParamsCombo->insertItem($CParam,-1);
+ } else {
+ $ChkBx->setHidden(1);
+ }
+ }
+ $Component++;
+ }
+}
+
+void MuSRFitform::InitializeTab()
+{
+ my %All=CreateAllInput();
+ InitParamTable->setLeftMargin(100);
+ my $NRows = InitParamTable->numRows();
+
+# Remove any rows in table
+ if ($NRows > 0) {
+ for (my $i=0;$i<$NRows;$i++) {
+# TODO: Better remove the row rather than hide it.
+ InitParamTable->hideRow($i);
+ }
+ }
+
+ my %PTable=MSR::PrepParamTable(\%All);
+
+# Setup the table with the right size
+ my $NParam=scalar keys( %PTable );
+ if ($NParam>$NRows) {
+ InitParamTable->setNumRows($NParam);
+ }
+
+# Fill the table with labels and values of parametr
+ for (my $PCount=0;$PCount<$NParam;$PCount++) {
+ my ($Param,$value,$error,$minvalue,$maxvalue,$RUN) = split(/,/,$PTable{$PCount});
+# If you use this then reading the parameters from the table is a problem
+# You need to extract the correct parameter name from the row label
+# InitParamTable->verticalHeader()->setLabel( $PCount,"$RUN: $Param");
+ InitParamTable->verticalHeader()->setLabel( $PCount,"$Param");
+ InitParamTable->showRow($PCount);
+ InitParamTable->setText($PCount,0,$value);
+ InitParamTable->setText($PCount,1,$error);
+ InitParamTable->setText($PCount,2,$minvalue);
+ InitParamTable->setText($PCount,3,$maxvalue);
+ }
+}
+
+void MuSRFitform::TabChanged()
+{
+# TODO: First check if there are some runs given, otherwise disbale
+# TODO: Check if the MSR file exists and decide whether to use it or not
+ my %All=CreateAllInput();
+
+ my $SlectedTab = musrfit_tabs->currentPageIndex;
+# Check if the option for checking for existing files is selected
+ my $FileExistCheck= FileExistCheck->isOn();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if ($All{"RunNumbers"} ne "" && $SlectedTab==4 && $FileExistCheck==1) {
+ if (-e $FILENAME) {
+# Warning: MSR file exists
+ my $Warning = "Warning: MSR file $FILENAME Already exists!\nIf you continue it will overwriten.";
+ my $WarningWindow = Qt::MessageBox::information( this, "Warning",$Warning);
+# my $Answer= Qt::MessageBox::warning( this, "Warning",$Warning, "&No", "&Yes", undef, 1,1);
+# $Answer =1,0 for yes and no
+# print "Answer=$Answer\n";
+ }
+ }
+
+# First make sure we have sharing initialized
+ ActivateShComp();
+ InitializeTab();
+ UpdateMSRFileInitTable();
+# And also setup T0 and Bg bins
+ ActivateT0Hists();
+}
+
+
+void MuSRFitform::GoFit()
+{
+ my %All=CreateAllInput();
+ CallMSRCreate();
+# musrfit_tabs->setCurrentTab(1);
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrfit -t $FILENAME";
+ my $pid = open(FTO,"$cmd 2>&1 |");
+ while () {
+ FitTextOutput->append("$_");
+# print "line= ".$_;
+ }
+ close(FTO);
+ $cmd="musrview $FILENAME &";
+ $pid = system($cmd);
+ } else {
+ FitTextOutput->append("Cannot find MSR file!");
+ }
+ FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------");
+# update MSR File tab and initialization table
+ UpdateMSRFileInitTable();
+ return;
+}
+
+void MuSRFitform::GoPlot()
+{
+ my %All=CreateAllInput();
+ CallMSRCreate();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrview $FILENAME &";
+ my $pid = system($cmd);
+ } else {
+ FitTextOutput->append("Cannot find MSR file!");
+ FitTextOutput->append("-----------------------------------------------------------------------------------------------------------------------------");
+ }
+ return;
+}
+
+
+void MuSRFitform::ShowMuSRT0()
+{
+ my %All=CreateAllInput();
+# Create MSR file and then run musrt0
+ CallMSRCreate();
+ my $FILENAME=$All{"FILENAME"}.".msr";
+ if (-e $FILENAME) {
+ my $cmd="musrt0 $FILENAME &";
+ my $pid = system($cmd);
+ } else {
+ print STDERR "Cannot find MSR file!\n";
+ }
+ return;
+}
+
+
+void MuSRFitform::T0Update()
+{
+ my %All = CreateAllInput();
+ my @Hists = split(/,/, $All{"LRBF"} );
+
+# Get values of t0 and Bg/Data bins if given
+ my $NHist = 1;
+ foreach my $Hist (@Hists) {
+ foreach ("t0","Bg1","Bg2","Data1","Data2") {
+ my $Name = "$_$NHist";
+ my $tmp=MSR::T0BgData($_,$Hist,$All{"BeamLine"});
+ child($Name)->setText($tmp);
+ }
+ $NHist++
+ }
+
+}
+
+
+void MuSRFitform::RunSelectionToggle()
+{
+ my $ManualFile= ManualFile->isOn();
+ if ($ManualFile) {
+# Manual RUN selection
+ RUNSMan->setEnabled(1);
+ RUNSMan->setHidden(0);
+ RunNumbers->setText("");
+ RUNSAuto->setEnabled(0);
+ RUNSAuto->setHidden(1);
+ } else {
+# Auto RUN selection
+ RUNSMan->setEnabled(0);
+ RUNSMan->setHidden(1);
+ RunFiles->setText("");
+ RUNSAuto->setEnabled(1);
+ RUNSAuto->setHidden(0);
+ }
+}
+
+void MuSRFitform::fileBrowse()
+{
+ my $files_ref=Qt::FileDialog::getOpenFileNames(
+ "Data files (*.root *.bin)",
+ "./",
+ this,
+ "open files dialog",
+ "Select one or more files to fit");
+ my @files = @$files_ref;
+ my $RunFiles=join(",",@files);
+ RunFiles->setText($RunFiles);
+}
+