diff --git a/src/external/MuSRFitGUI/devel/MSR.pm b/src/external/MuSRFitGUI/devel/MSR.pm
index 0ccb9f31..389e16f2 100755
--- a/src/external/MuSRFitGUI/devel/MSR.pm
+++ b/src/external/MuSRFitGUI/devel/MSR.pm
@@ -1,6 +1,8 @@
#use strict;
package MSR;
+# This module provides some tools to create, manipulate and extract information from MSR files
+
my $EMPTY="";
my $SPACE=" ";
@@ -45,6 +47,8 @@ my $erradd = "d";
my $minadd = "_min";
my $maxadd = "_max";
+
+
##########################################################################
# CreateMSR
#
@@ -111,7 +115,7 @@ sub CreateMSR {
}
# Proper way
- if ( $All{"Minimization"} ne "" && $All{"ErrorCalc"} ne "" && $Step ne "PLOT" ) {
+ if ( $All{"Minimization"} ne $EMPTY && $All{"ErrorCalc"} ne $EMPTY && $Step ne "PLOT" ) {
$FITMINTYPE = $All{"Minimization"}."\n".$All{"ErrorCalc"};
}
@@ -131,11 +135,11 @@ sub CreateMSR {
# $RUNSType = 0 (Auto) or 1 (Manual)
my $RUNSType = 0;
my @RUNS=();
- if ($All{"RunNumbers"} ne "") {
+ if ($All{"RunNumbers"} ne $EMPTY) {
@RUNS=split( /,/, $All{"RunNumbers"});
$RUNSType = 0;
}
- elsif ($All{"RunFiles"} ne "") {
+ elsif ($All{"RunFiles"} ne $EMPTY) {
@RUNS=split( /,/, $All{"RunFiles"});
$RUNSType = 1;
}
@@ -269,13 +273,13 @@ sub CreateMSR {
foreach ("t0","Bg1","Bg2","Data1","Data2") {
$Name = "$_$NHist";
# If empty fill with defaults
- if ($All{$Name} eq "") {
+ if ($All{$Name} eq $EMPTY) {
$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"};
- if ($All{"t0$NHist"} ne "") {
+ if ($All{"t0$NHist"} ne $EMPTY) {
$T0_Line=$T0_Line." ".$All{"Data1$NHist"};
}
$NHist++;
@@ -286,7 +290,6 @@ sub CreateMSR {
if ($T0_Line ne "t0") {
- print "I am here\n";
$Data_Line= $Data_Line."\n".$T0_Line;
}
@@ -380,16 +383,19 @@ SAVE
# }
}
+ my $RRFBlock=MSR::CreateRRFBlock(\%All);
$PLOT_Block =
"###############################################################
PLOT $PLT
runs $RUNS_Line
$PRANGE_Line
+$RRFBlock
$logxy";
- if ($All{"FUNITS"} eq "") {$All{"FUNITS"}="MHz";}
- if ($All{"FAPODIZATION"} eq "") {$All{"FAPODIZATION"}="STRONG";}
- if ($All{"FPLOT"} eq "") {$All{"FPLOT"}="POWER";}
+ if ($All{"FUNITS"} eq $EMPTY) {$All{"FUNITS"}="MHz";}
+ if ($All{"FAPODIZATION"} eq $EMPTY) {$All{"FAPODIZATION"}="STRONG";}
+ if ($All{"FPLOT"} eq $EMPTY) {$All{"FPLOT"}="POWER";}
+ if ($All{"FPHASE"} eq $EMPTY) {$All{"FPHASE"}="8.5";}
$FOURIER_Block=
@@ -399,11 +405,13 @@ 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";
+phase FPHASE
+#range FRQMIN FRQMAX";
$FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g;
$FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g;
$FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g;
+ $FOURIER_Block=~ s/FPHASE/$All{"FPHASE"}/g;
# Don't know why but it is needed initially
$STAT_Block =
@@ -457,7 +465,7 @@ sub CreateMSRSingleHist {
}
# Proper way
- if ( $All{"Minimization"} ne "" && $All{"ErrorCalc"} ne "" && $Step ne "PLOT" ) {
+ if ( $All{"Minimization"} ne $EMPTY && $All{"ErrorCalc"} ne $EMPTY && $Step ne "PLOT" ) {
$FITMINTYPE = $All{"Minimization"}."\n".$All{"ErrorCalc"};
}
@@ -476,11 +484,11 @@ sub CreateMSRSingleHist {
# $RUNSType = 0 (Auto) or 1 (Manual)
my $RUNSType = 0;
my @RUNS=();
- if ($All{"RunNumbers"} ne "") {
+ if ($All{"RunNumbers"} ne $EMPTY) {
@RUNS=split( /,/, $All{"RunNumbers"});
$RUNSType = 0;
}
- elsif ($All{"RunFiles"} ne "") {
+ elsif ($All{"RunFiles"} ne $EMPTY) {
@RUNS=split( /,/, $All{"RunFiles"});
$RUNSType = 1;
}
@@ -507,6 +515,8 @@ sub CreateMSRSingleHist {
foreach my $RUN (@RUNS) {
#######################################################################
# For a single histogram fit we basically need to repeat this for each hist
+# However, "physical" parameters such as Asymmetry, relaxation etc. should
+# be the same for all histograms
foreach my $Hist (@Hists) {
# Prepare the Parameters and initial values block
@@ -626,13 +636,13 @@ sub CreateMSRSingleHist {
foreach ("t0","Bg1","Bg2","Data1","Data2") {
$Name = "$_$Hist";
# If empty fill with defaults
- if ($All{$Name} eq "") {
+ if ($All{$Name} eq $EMPTY) {
$All{$Name}=MSR::T0BgData($_,$Hist,$BeamLine);
}
}
$Bg_Line = $Bg_Line." ".$All{"Bg1$Hist"}." ".$All{"Bg2$Hist"};
$Data_Line =$Data_Line." ".$All{"Data1$Hist"}." ".$All{"Data2$Hist"};
- if ($All{"t0$Hist"} ne "") {
+ if ($All{"t0$Hist"} ne $EMPTY) {
$Data_Line=$Data_Line."\nt0 ".$All{"t0$Hist"};
}
@@ -732,16 +742,19 @@ SAVE
# }
}
+ my $RRFBlock=MSR::CreateRRFBlock(\%All);
$PLOT_Block =
"###############################################################
PLOT $PLT
runs $RUNS_Line
$PRANGE_Line
+$RRFBlock
$logxy";
- if ($All{"FUNITS"} eq "") {$All{"FUNITS"}="MHz";}
- if ($All{"FAPODIZATION"} eq "") {$All{"FAPODIZATION"}="STRONG";}
- if ($All{"FPLOT"} eq "") {$All{"FPLOT"}="POWER";}
+ if ($All{"FUNITS"} eq $EMPTY) {$All{"FUNITS"}="MHz";}
+ if ($All{"FAPODIZATION"} eq $EMPTY) {$All{"FAPODIZATION"}="STRONG";}
+ if ($All{"FPLOT"} eq $EMPTY) {$All{"FPLOT"}="POWER";}
+ if ($All{"FPHASE"} eq $EMPTY) {$All{"FPHASE"}="8.5";}
$FOURIER_Block=
@@ -751,11 +764,13 @@ 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";
+phase FPHASE
+#range FRQMIN FRQMAX";
$FOURIER_Block=~ s/FUNITS/$All{"FUNITS"}/g;
$FOURIER_Block=~ s/FAPODIZATION/$All{"FAPODIZATION"}/g;
$FOURIER_Block=~ s/FPLOT/$All{"FPLOT"}/g;
+ $FOURIER_Block=~ s/FPHASE/$All{"FPHASE"}/g;
# Don't know why but it is needed initially
$STAT_Block =
@@ -1005,7 +1020,7 @@ sub ExtractBlks {
# Identify different blocks
my $i=0;
- my $line ="";
+ my $line =$EMPTY;
foreach $line (@file)
{
if (grep {/FITPARAMETER/} $line) {$NFITPARAMETERS=$i;}
@@ -1103,7 +1118,7 @@ sub PrepParamTable {
"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", "60.", "dAa", "0.01",
"Aa_min", "0", "Aa_max", "0",
"q", "0.1", "dq", "0.01",
"q_min", "0", "q_max", "0",
@@ -1180,7 +1195,7 @@ sub PrepParamTable {
foreach my $Param (@Params) {
my $Param_ORG = $Param;
if ( $#FitTypes != 0 && ( $Param ne "Alpha" ) ){
- $Param = join( "", $Param, "_", "$Component" );
+ $Param = join( $EMPTY, $Param, "_", "$Component" );
}
$Shared = $All{"Sh_$Param"};
@@ -1189,7 +1204,7 @@ sub PrepParamTable {
$Param=$Param."_".$iRun;
# Check if this parameter has been initialized befor. If not take from defaults
$value = $All{"$Param"};
- if ( $value ne "" ) {
+ if ( $value ne $EMPTY ) {
$error = $All{"$erradd$Param"};
$minvalue = $All{"$Param$minadd"};
$maxvalue = $All{"$Param$maxadd"};
@@ -1197,10 +1212,14 @@ sub PrepParamTable {
# 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 ??
+
+# We have two options here, either take default values or take values of previous
+# run if available
+# $ParamPrev =~ s/$iRun-1/$iRun/g;
$value = $Defaults{$Param_ORG};
- $error = $Defaults{ join( "", $erradd, $Param_ORG ) };
- $minvalue = $Defaults{ join("", $Param_ORG, $minadd ) };
- $maxvalue = $Defaults{ join("", $Param_ORG, $maxadd ) };
+ $error = $Defaults{ join( $EMPTY, $erradd, $Param_ORG ) };
+ $minvalue = $Defaults{ join($EMPTY, $Param_ORG, $minadd ) };
+ $maxvalue = $Defaults{ join($EMPTY, $Param_ORG, $maxadd ) };
}
$values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN);
$ParTable{$PCount}=$values;
@@ -1230,7 +1249,7 @@ sub PrepParamTable {
my $Param_ORG = $Param;
$Param=$Param.$Hist;
if ( $#FitTypes != 0 && ( $Param_ORG ne "N0" && $Param_ORG ne "NBg" ) ){
- $Param = join( "", $Param, "_", "$Component" );
+ $Param = join( $EMPTY, $Param, "_", "$Component" );
}
$Shared = $All{"Sh_$Param"};
@@ -1239,7 +1258,7 @@ sub PrepParamTable {
$Param=$Param."_".$iRun;
# Check if this parameter has been initialized befor. If not take from defaults
$value = $All{"$Param"};
- if ( $value ne "" ) {
+ if ( $value ne $EMPTY ) {
$error = $All{"$erradd$Param"};
$minvalue = $All{"$Param$minadd"};
$maxvalue = $All{"$Param$maxadd"};
@@ -1248,9 +1267,9 @@ sub PrepParamTable {
# 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 ) };
+ $error = $Defaults{ join( $EMPTY, $erradd, $Param_ORG ) };
+ $minvalue = $Defaults{ join($EMPTY, $Param_ORG, $minadd ) };
+ $maxvalue = $Defaults{ join($EMPTY, $Param_ORG, $maxadd ) };
}
$values=join(",",$Param,$value,$error,$minvalue,$maxvalue,$RUN);
$ParTable{$PCount}=$values;
@@ -1282,7 +1301,7 @@ sub ExportParams {
# First assume nothing is shared
my $Shared = 0;
- my $TABLE="";
+ my $TABLE=$EMPTY;
my $HEADER="RUN";
my %All = %{$_[0]};
@@ -1341,7 +1360,7 @@ sub ExportParams {
foreach my $Param (@Params) {
my $Param_ORG = $Param;
if ( $#FitTypes != 0 && ( $Param ne "Alpha" ) ){
- $Param = join( "", $Param, "_", "$Component" );
+ $Param = join( $EMPTY, $Param, "_", "$Component" );
}
# $All{"Header"} - 0/1 for with/without header
if ($All{"Header"} && $iRun == 1) {
@@ -1390,7 +1409,7 @@ sub ExportParams {
my $Param_ORG = $Param;
$Param=$Param.$Hist;
if ( $#FitTypes != 0 && ( $Param_ORG ne "N0" && $Param_ORG ne "NBg" ) ){
- $Param = join( "", $Param, "_", "$Component" );
+ $Param = join( $EMPTY, $Param, "_", "$Component" );
}
$Shared = $All{"Sh_$Param"};
@@ -1466,12 +1485,11 @@ sub MSR2Dat {
foreach (sort { $RUN{$a} <=> $RUN{$b}} keys %RUN ) {
@RunParams=();
$NP=0;
-# print $_."=".$MAP{$_}."\n";
@tmp=split(/\s+/,$MAP{$_});
# Remove first element (map)
shift(@tmp);
foreach (@tmp) {
- if ($_ ne "" && $_>0 ) {
+ if ($_ ne $EMPTY && $_>0 ) {
@RunParams=(@RunParams,$_);
$NP++;
}
@@ -1612,6 +1630,28 @@ sub RUNFileNameMan {
return $RUN_Line;
}
+########################
+# ExtractInfoLEM
+########################
+# This creates the RRF related lines, these are the same always
+sub CreateRRFBlock {
+
+ my %All = %{$_[0]};
+
+ $RRFBlock="";
+ if ($All{"RRFFrq"}!= 0) {
+ if ($All{"RRFPhase"} eq $EMPTY) {$All{"RRFPhase"}=0;}
+ if ($All{"RRFPack"} eq $EMPTY) {$All{"RRFPack"}=1;}
+ $RRFBlock="rrf_freq ".$All{"RRFFrq"}." ".$All{"RRFUnits"}."\n";
+ $RRFBlock=$RRFBlock."rrf_phase ".$All{"RRFPhase"}."\n";
+ $RRFBlock=$RRFBlock."rrf_packing ".$All{"RRFPack"}."\n";
+ }
+ return $RRFBlock;
+}
+
+
+
+
########################
# ExtractInfoLEM
########################
@@ -1696,4 +1736,6 @@ sub ExtractInfoBulk {
}
+
+
1;
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.pl b/src/external/MuSRFitGUI/devel/MuSRFit.pl
index 856d3ede..3d11f3e5 100755
--- a/src/external/MuSRFitGUI/devel/MuSRFit.pl
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.pl
@@ -1,6 +1,6 @@
# Form implementation generated from reading ui file 'MuSRFit.ui'
#
-# Created: Fri Oct 9 23:56:08 2009
+# Created: Thu Mar 25 16:29:56 2010
# by: The PerlQt User Interface Compiler (puic)
#
# WARNING! All changes made in this file will be lost!
@@ -42,7 +42,8 @@ use Qt::slots
T0Update => [],
RunSelectionToggle => [],
fileBrowse => [],
- AppendToFunctions => [];
+ AppendToFunctions => [],
+ ResetFunctions => [];
use Qt::attributes qw(
musrfit_tabs
RUNSPage
@@ -188,6 +189,9 @@ use Qt::attributes qw(
AddConstraint
textLabel2_2_3_4
FunctionsBlock
+ textLabel1_6
+ ApplyFunc_2
+ ResetFunc
MenuBar
fileMenu
Edit
@@ -1578,7 +1582,7 @@ sub NEW
setName("MuSRFitform" );
}
setSizePolicy(Qt::SizePolicy(3, 3, 1, 1, this->sizePolicy()->hasHeightForWidth()) );
- setMinimumSize(Qt::Size(23, 270) );
+ setMinimumSize(Qt::Size(21, 275) );
setIcon($image0 );
setCentralWidget(Qt::Widget(this, "qt_central_widget"));
@@ -2458,8 +2462,8 @@ sub NEW
ConstPage = Qt::Widget(musrfit_tabs, "ConstPage");
my $LayoutWidget_16 = Qt::Widget(ConstPage, '$LayoutWidget_16');
- $LayoutWidget_16->setGeometry( Qt::Rect(5, 5, 545, 355) );
- my $layout29_4 = Qt::VBoxLayout($LayoutWidget_16, 11, 6, '$layout29_4');
+ $LayoutWidget_16->setGeometry( Qt::Rect(5, 5, 545, 350) );
+ my $layout31_2 = Qt::VBoxLayout($LayoutWidget_16, 11, 6, '$layout31_2');
textLabel2_2 = Qt::Label($LayoutWidget_16, "textLabel2_2");
$cg->setColor(&Qt::ColorGroup::Foreground, &black);
@@ -2514,10 +2518,10 @@ sub NEW
$cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
$pal->setDisabled($cg);
textLabel2_2->setPalette( $pal );
- $layout29_4->addWidget(textLabel2_2);
+ $layout31_2->addWidget(textLabel2_2);
TheoryBlock = Qt::TextEdit($LayoutWidget_16, "TheoryBlock");
- $layout29_4->addWidget(TheoryBlock);
+ $layout31_2->addWidget(TheoryBlock);
my $layout25_6 = Qt::HBoxLayout(undef, 0, 6, '$layout25_6');
@@ -2536,7 +2540,7 @@ sub NEW
AddConstraint = Qt::PushButton($LayoutWidget_16, "AddConstraint");
AddConstraint->setSizePolicy( Qt::SizePolicy(0, 7, 0, 0, AddConstraint->sizePolicy()->hasHeightForWidth()) );
$layout25_6->addWidget(AddConstraint);
- $layout29_4->addLayout($layout25_6);
+ $layout31_2->addLayout($layout25_6);
textLabel2_2_3_4 = Qt::Label($LayoutWidget_16, "textLabel2_2_3_4");
$cg->setColor(&Qt::ColorGroup::Foreground, &black);
@@ -2591,10 +2595,24 @@ sub NEW
$cg->setColor(&Qt::ColorGroup::LinkVisited, Qt::Color(82,24,139));
$pal->setDisabled($cg);
textLabel2_2_3_4->setPalette( $pal );
- $layout29_4->addWidget(textLabel2_2_3_4);
+ $layout31_2->addWidget(textLabel2_2_3_4);
FunctionsBlock = Qt::TextEdit($LayoutWidget_16, "FunctionsBlock");
- $layout29_4->addWidget(FunctionsBlock);
+ $layout31_2->addWidget(FunctionsBlock);
+
+ my $layout30 = Qt::HBoxLayout(undef, 0, 6, '$layout30');
+
+ textLabel1_6 = Qt::Label($LayoutWidget_16, "textLabel1_6");
+ $layout30->addWidget(textLabel1_6);
+
+ ApplyFunc_2 = Qt::PushButton($LayoutWidget_16, "ApplyFunc_2");
+ ApplyFunc_2->setMaximumSize( Qt::Size(100, 32767) );
+ $layout30->addWidget(ApplyFunc_2);
+
+ ResetFunc = Qt::PushButton($LayoutWidget_16, "ResetFunc");
+ ResetFunc->setMaximumSize( Qt::Size(100, 32767) );
+ $layout30->addWidget(ResetFunc);
+ $layout31_2->addLayout($layout30);
musrfit_tabs->insertTab( ConstPage, "" );
fileNewAction= Qt::Action(this, "fileNewAction");
@@ -2757,6 +2775,7 @@ sub NEW
Qt::Object::connect(T0, SIGNAL "activated()", this, SLOT "ShowMuSRT0()");
Qt::Object::connect(Plot, SIGNAL "activated()", this, SLOT "GoPlot()");
Qt::Object::connect(AddConstraint, SIGNAL "clicked()", this, SLOT "AppendToFunctions()");
+ Qt::Object::connect(ResetFunc, SIGNAL "clicked()", this, SLOT "ResetFunctions()");
setTabOrder(musrfit_tabs, RunNumbers);
setTabOrder(RunNumbers, BeamLine);
@@ -3041,6 +3060,9 @@ sub languageChange
textLabel1_4_6->setText( trUtf8("=") );
AddConstraint->setText( trUtf8("Add") );
textLabel2_2_3_4->setText( trUtf8("FUNCTIONS Block") );
+ textLabel1_6->setText( undef );
+ ApplyFunc_2->setText( trUtf8("Apply") );
+ ResetFunc->setText( trUtf8("Reset") );
musrfit_tabs->changeTab( ConstPage, trUtf8("Constraints") );
fileNewAction->setText( trUtf8("&New") );
fileNewAction->setMenuText( trUtf8("&New") );
@@ -3949,6 +3971,20 @@ sub AppendToFunctions
}
+sub ResetFunctions
+{
+
+# Clear drop down parameters menu
+# CParamsCombo->clear();
+# Then clear the text
+ ConstraintLine->setText("");
+ FunctionsBlock->setText("");
+# my $Full_T_Block= $All{"Full_T_Block"};
+ TheoryBlock->setText($Full_T_Block);
+
+
+}
+
1;
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui b/src/external/MuSRFitGUI/devel/MuSRFit.ui
index 8268a021..f1af428b 100755
--- a/src/external/MuSRFitGUI/devel/MuSRFit.ui
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.ui
@@ -22,8 +22,8 @@
- 23
- 270
+ 21
+ 275
@@ -3671,19 +3671,19 @@
- layout29_4
+ layout31
5
5
545
- 355
+ 350
- unnamed_2
+ unnamed
@@ -4277,6 +4277,52 @@
FunctionsBlock
+
+
+ layout30
+
+
+
+ unnamed
+
+
+
+ textLabel1_6
+
+
+
+
+
+
+
+ ApplyFunc_2
+
+
+
+ 100
+ 32767
+
+
+
+ Apply
+
+
+
+
+ ResetFunc
+
+
+
+ 100
+ 32767
+
+
+
+ Reset
+
+
+
+
@@ -5028,6 +5074,12 @@
MuSRFitform
AppendToFunctions()
+
+ ResetFunc
+ clicked()
+ MuSRFitform
+ ResetFunctions()
+
musrfit_tabs
@@ -5135,6 +5187,7 @@
RunSelectionToggle()
fileBrowse()
AppendToFunctions()
+ ResetFunctions()
diff --git a/src/external/MuSRFitGUI/devel/MuSRFit.ui.h b/src/external/MuSRFitGUI/devel/MuSRFit.ui.h
index da905e05..797e00c0 100755
--- a/src/external/MuSRFitGUI/devel/MuSRFit.ui.h
+++ b/src/external/MuSRFitGUI/devel/MuSRFit.ui.h
@@ -821,3 +821,15 @@ void MuSRFitform::AppendToFunctions()
$Full_T_Block=~ s/$ParName/fun$i/;
TheoryBlock->setText($Full_T_Block);
}
+
+void MuSRFitform::ResetFunctions()
+{
+# Clear drop down parameters menu
+# CParamsCombo->clear();
+# Then clear the text
+ ConstraintLine->setText("");
+ FunctionsBlock->setText("");
+# my $Full_T_Block= $All{"Full_T_Block"};
+ TheoryBlock->setText($Full_T_Block);
+
+}