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); + +}