Added new functions invloving combiKT.
This commit is contained in:
169
src/external/MuSRFitGUI/MSR.pm
vendored
169
src/external/MuSRFitGUI/MSR.pm
vendored
@ -7,7 +7,7 @@ my $EMPTY="";
|
||||
my $SPACE=" ";
|
||||
|
||||
my %DATADIRS = (
|
||||
"LEM", "/mnt/data/nemu/his",
|
||||
"LEM", "/afs/psi.ch/project/bulkmusr/data/lem",
|
||||
"GPS", "/afs/psi.ch/project/bulkmusr/data/gps",
|
||||
"LTF", "/afs/psi.ch/project/bulkmusr/data/ltf",
|
||||
"Dolly", "/afs/psi.ch/project/bulkmusr/data/dolly",
|
||||
@ -48,6 +48,7 @@ my $minadd = "_min";
|
||||
my $maxadd = "_max";
|
||||
|
||||
|
||||
|
||||
##########################################################################
|
||||
# CreateMSR
|
||||
#
|
||||
@ -93,7 +94,7 @@ sub CreateMSR {
|
||||
|
||||
my @Hists = split( /,/, $All{"LRBF"} );
|
||||
# TODO
|
||||
# : to separate twoo sets of asymmetries with same parameters
|
||||
# : to separate two sets of asymmetries with same parameters
|
||||
# Check the number of histograms
|
||||
# should be 2 or 4 histograms
|
||||
# should be checked in GUI
|
||||
@ -108,6 +109,7 @@ sub CreateMSR {
|
||||
my $BeamLine = $All{"BeamLine"};
|
||||
my $YEAR = $All{"YEAR"};
|
||||
|
||||
# Works for CGI script
|
||||
my $Step = $All{"go"};
|
||||
if ( $Step eq "PLOT" ) {
|
||||
$FITMINTYPE = $EMPTY;
|
||||
@ -178,7 +180,8 @@ FUNCTIONS
|
||||
}
|
||||
}
|
||||
|
||||
$shcount = 1;
|
||||
# Initialise $shcount, a counter for shared parameters
|
||||
my $shcount = 1;
|
||||
my $RUN_Block = $EMPTY;
|
||||
my $RUNS_Line = $EMPTY;
|
||||
|
||||
@ -358,7 +361,10 @@ FUNCTIONS
|
||||
|
||||
# Start constructing all blocks
|
||||
my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"};
|
||||
# $TitleLine =~ s/,/:/g;
|
||||
# if ($All{"RUNSType"}) {
|
||||
# $TitleLine = $EMPTY;
|
||||
# }
|
||||
# $TitleLine =~ s/\n//g;
|
||||
|
||||
# Get parameter block from MSR::PrepParamTable(\%All);
|
||||
my $FitParaBlk = "
|
||||
@ -368,6 +374,7 @@ 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});
|
||||
@ -461,11 +468,8 @@ STATISTIC --- 0000-00-00 00:00:00
|
||||
# Empty line at the end of each block
|
||||
my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$FUNCTIONS_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);
|
||||
# Return information and file
|
||||
return($Full_T_Block,\@Paramcomp,$FullMSRFile);
|
||||
}
|
||||
|
||||
|
||||
@ -493,6 +497,7 @@ sub CreateMSRSingleHist {
|
||||
my $BeamLine = $All{"BeamLine"};
|
||||
my $YEAR = $All{"YEAR"};
|
||||
|
||||
# Works for CGI script
|
||||
my $Step = $All{"go"};
|
||||
if ( $Step eq "PLOT" ) {
|
||||
$FITMINTYPE = $EMPTY;
|
||||
@ -514,6 +519,8 @@ sub CreateMSRSingleHist {
|
||||
my ($Full_T_Block,$Paramcomp_ref)=MSR::CreateTheory(@FitTypes);
|
||||
my @Paramcomp = @$Paramcomp_ref;
|
||||
|
||||
print "Paramcomp= $Paramcomp[0]";
|
||||
|
||||
# If we have a FUNCTIONS Block the Full_T_Block should be
|
||||
# replaced by Func_T_Block
|
||||
$FUNCTIONS_Block = $EMPTY;
|
||||
@ -569,6 +576,8 @@ FUNCTIONS
|
||||
my $Range_Order = 1;
|
||||
my $iHist = 0;
|
||||
foreach my $RUN (@RUNS) {
|
||||
# Until here identical to sub CreateMSR
|
||||
|
||||
#######################################################################
|
||||
# For a single histogram fit we basically need to repeat this for each hist
|
||||
# However, "physical" parameters such as Asymmetry, relaxation etc. should
|
||||
@ -599,6 +608,13 @@ FUNCTIONS
|
||||
my @Params = split( /\s+/, $Parameters );
|
||||
# Only the first histiograms has new physical parameters
|
||||
# the others keep only Phi if they have it
|
||||
if ($iHist != 0) {
|
||||
# look for Phi
|
||||
# if ( grep( /^Phi$/, @Params ) ) {
|
||||
# if it is there keep only that
|
||||
# @Params=("Phi");
|
||||
# }
|
||||
}
|
||||
|
||||
# For the first component we need No and NBg for SingleHist fits
|
||||
if ( $component == 1 ) {
|
||||
@ -648,9 +664,14 @@ FUNCTIONS
|
||||
$NoBg_Line = $NoBg_Line . "backgr.fit $PCount\n";
|
||||
}
|
||||
}
|
||||
|
||||
# End of No and NBg Lines
|
||||
# Now deal with physical parameters and phases
|
||||
elsif ( $Param_ORG ne "Phi" && $Param_ORG ne "No" && $Param_ORG ne "NBg") {
|
||||
|
||||
}
|
||||
####################################################################################################
|
||||
print $Full_T_Block."\n";
|
||||
|
||||
|
||||
# Start preparing the parameters block
|
||||
if ($Shared) {
|
||||
@ -747,7 +768,7 @@ FUNCTIONS
|
||||
|
||||
# Start constructing all block
|
||||
my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"};
|
||||
$TitleLine =~ s/,/:/g;
|
||||
# $TitleLine =~ s/\n//g;
|
||||
|
||||
# Get parameter block from MSR::PrepParamTable(\%All);
|
||||
my $FitParaBlk = "
|
||||
@ -845,11 +866,8 @@ STATISTIC --- 0000-00-00 00:00:00
|
||||
# Empty line at the end of each block
|
||||
my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$FUNCTIONS_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);
|
||||
# Return information and file
|
||||
return($Full_T_Block,\@Paramcomp,$FullMSRFile);
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
@ -914,7 +932,7 @@ sub CreateTheory {
|
||||
"statExpKT", "Lam",
|
||||
"statExpKTLF", "Frq Aa",
|
||||
"dynExpKTLF", "Frq Aa Lam",
|
||||
"combiLGKT", "Lam Sgm",
|
||||
"combiLGKT", "Del Sgm",
|
||||
"spinGlass", "Lam gam q",
|
||||
"rdAnisoHf", "Frq Lam",
|
||||
"TFieldCos", "Phi Frq",
|
||||
@ -1039,6 +1057,11 @@ sub CreateTheory {
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'dynGssKTLF'} );
|
||||
}
|
||||
|
||||
elsif ( $FitType eq "LGKT" ) {
|
||||
$T_Block = $T_Block . "\n" . "combiLGKT " . $THEORY{'combiLGKT'};
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} );
|
||||
}
|
||||
|
||||
# Now some more combined functions (multiplication).
|
||||
|
||||
# Lorentzian KT LF multiplied by exponential
|
||||
@ -1077,6 +1100,24 @@ sub CreateTheory {
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'statGssKTLF'} );
|
||||
}
|
||||
|
||||
# Lorentzian or Gaussian KT ZF multiplied by exponential
|
||||
elsif ( $FitType eq "LGKTExp" ) {
|
||||
$T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'};
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} );
|
||||
$T_Block =
|
||||
$T_Block . "\n" . "combiLGKT " . $THEORY{'combiLGKT'};
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} );
|
||||
}
|
||||
|
||||
# Lorentzian or Gaussian KT ZF multiplied by stretched exponential
|
||||
elsif ( $FitType eq "LGKTSExp" ) {
|
||||
$T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} );
|
||||
$T_Block =
|
||||
$T_Block . "\n" . "combiLGKT " . $THEORY{'combiLGKT'};
|
||||
$Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} );
|
||||
}
|
||||
|
||||
# Lorentzian or Gaussian KT LF multiplied by stretched exponential
|
||||
elsif ( $FitType eq "MolMag" ) {
|
||||
$T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'};
|
||||
@ -1241,6 +1282,10 @@ sub PrepParamTable {
|
||||
"bgrlx_min", "0", "bgrlx_max", "0",
|
||||
"Frq", "1.0", "dFrq", "1.",
|
||||
"Frq_min", "0", "Frq_max", "0",
|
||||
"Frql", "1.0", "dFrql", "1.",
|
||||
"Frql_min", "0", "Frql_max", "0",
|
||||
"Frqg", "1.0", "dFrqg", "1.",
|
||||
"Frqg_min", "0", "Frqg_max", "0",
|
||||
"Field", "100.0", "dField", "1.",
|
||||
"Field_min", "0", "Field_max", "0",
|
||||
"Energy", "14.1", "dEnergy", "0.",
|
||||
@ -1314,7 +1359,10 @@ sub PrepParamTable {
|
||||
$Shared = $All{"Sh_$Param"};
|
||||
if ( $Shared!=1 || $iRun == 1 ) {
|
||||
# It there are multiple runs index the parameters accordingly
|
||||
my $RUNtmp=sprintf("%04d",$RUN);
|
||||
my $RUNtmp = sprintf("%04d",$RUN);
|
||||
if ($All{"RUNSType"}) {
|
||||
$RUNtmp = $iRun;
|
||||
}
|
||||
if ($Shared!=1) {$Param=$Param."_".$RUNtmp;}
|
||||
# Check if this parameter has been initialized befor. If not take from defaults
|
||||
$value = $All{"$Param"};
|
||||
@ -1423,6 +1471,7 @@ sub ExportParams {
|
||||
my $HEADER="RUN";
|
||||
|
||||
my %All = %{$_[0]};
|
||||
|
||||
my @RUNS = ();
|
||||
if ($All{"RUNSType"}) {
|
||||
@RUNS = split( /,/, $All{"RunFiles"} );
|
||||
@ -1674,51 +1723,57 @@ sub RUNFileNameAuto {
|
||||
|
||||
# Take this information as input arguments
|
||||
(my $RUN) = @_;
|
||||
my @tmp = split(/\./,$RUN);
|
||||
my $EXT = @tmp[$#tmp];
|
||||
my $EXT = $EMPTY;
|
||||
my $key = $EMPTY;
|
||||
# Find out the type of file (possibilities are root, bin and msr).
|
||||
foreach $key (keys %EXTs) {
|
||||
if (index($RUN,$key) != -1) {
|
||||
$EXT = $key;
|
||||
}
|
||||
}
|
||||
|
||||
$RUN =~ s/\.[^.]+$//;
|
||||
|
||||
$RUN_Line = join( $SPACE,
|
||||
"RUN", $RUN, "MUE4", "PSI",$EXTs{$EXT});
|
||||
} else {
|
||||
my $DATADIR = $DATADIRS{$BeamLine};
|
||||
my $RUNtmp=sprintf("%04d",$RUN);
|
||||
my $DATADIR = $DATADIRS{$BeamLine};
|
||||
my $RUNtmp=sprintf("%04d",$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" || $BeamLine eq "LEM (PPC)") {
|
||||
$RUN_File_Name = "lem" . substr( $YEAR, 2 ) . "_his_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/$YEAR/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "GPS" ) {
|
||||
$RUN_File_Name = "deltat_tdc_gps_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "LTF" ) {
|
||||
$RUN_File_Name = "deltat_tdc_ltf_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "Dolly" ) {
|
||||
$RUN_File_Name = "deltat_tdc_dolly_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "GPD" ) {
|
||||
$RUN_File_Name = "deltat_tdc_gpd_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
$RUN_Line = join( $SPACE,
|
||||
"RUN", $RUNFILE, $BeamLines{$BeamLine}, "PSI",
|
||||
$Def_Format{$BeamLine} );
|
||||
# Get current year
|
||||
my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
|
||||
localtime( time() );
|
||||
my $current_year = $year + 1900;
|
||||
|
||||
if ( $BeamLine eq "LEM" || $BeamLine eq "LEM (PPC)") {
|
||||
$RUN_File_Name = "lem" . substr( $YEAR, 2 ) . "_his_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "GPS" ) {
|
||||
$RUN_File_Name = "deltat_tdc_gps_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "LTF" ) {
|
||||
$RUN_File_Name = "deltat_tdc_ltf_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "Dolly" ) {
|
||||
$RUN_File_Name = "deltat_tdc_dolly_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
elsif ( $BeamLine eq "GPD" ) {
|
||||
$RUN_File_Name = "deltat_tdc_gpd_" . $RUNtmp;
|
||||
$RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name";
|
||||
}
|
||||
$RUN_Line = join( $SPACE,
|
||||
"RUN", $RUNFILE, $BeamLines{$BeamLine}, "PSI",
|
||||
$Def_Format{$BeamLine} );
|
||||
}
|
||||
return $RUN_Line;
|
||||
}
|
||||
|
||||
########################
|
||||
# ExtractInfoLEM
|
||||
# CreateRRFBlock
|
||||
########################
|
||||
# This creates the RRF related lines, these are the same always
|
||||
sub CreateRRFBlock {
|
||||
@ -1745,6 +1800,7 @@ sub CreateRRFBlock {
|
||||
# Uset to extract information from summary files
|
||||
sub ExtractInfoLEM {
|
||||
my ($RUN,$YEAR,$Arg) = @_;
|
||||
# Use file header
|
||||
my $Summ_File_Name = "lem" . substr( $YEAR, 2 ) . "_" . $RUN . ".summ";
|
||||
my $SummFile = "$SUMM_DIR/$YEAR/$Summ_File_Name";
|
||||
|
||||
@ -1897,7 +1953,7 @@ sub CreateMSRSh {
|
||||
|
||||
my @Hists = split( /,/, $All{"LRBF"} );
|
||||
# TODO
|
||||
# : to separate twoo sets of asymmetries with same parameters
|
||||
# : to separate two sets of asymmetries with same parameters
|
||||
# Check the number of histograms
|
||||
# should be 2 or 4 histograms
|
||||
# should be checked in GUI
|
||||
@ -2160,7 +2216,7 @@ FUNCTIONS
|
||||
|
||||
# Start constructing all blocks
|
||||
my $TitleLine = $All{"TITLE"}."\n# Run Numbers: ".$All{"RunNumbers"};
|
||||
# $TitleLine =~ s/,/:/g;
|
||||
# $TitleLine =~ s/\n//g;
|
||||
|
||||
# Get parameter block from MSR::PrepParamTable(\%All);
|
||||
my $FitParaBlk =
|
||||
@ -2263,11 +2319,8 @@ STATISTIC --- 0000-00-00 00:00:00
|
||||
# Empty line at the end of each block
|
||||
my $FullMSRFile = "$TitleLine$FitParaBlk\n$Full_T_Block\n$FUNCTIONS_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);
|
||||
# Return information and file
|
||||
return($Full_T_Block,\@Paramcomp,$FullMSRFile);
|
||||
}
|
||||
|
||||
########################
|
||||
|
46
src/external/MuSRFitGUI/MuSRFit.pl
vendored
46
src/external/MuSRFitGUI/MuSRFit.pl
vendored
@ -1,6 +1,6 @@
|
||||
# Form implementation generated from reading ui file 'MuSRFit.ui'
|
||||
#
|
||||
# Created: Thu Jun 14 14:52:06 2012
|
||||
# Created: Thu Sep 5 14:20:55 2013
|
||||
# by: The PerlQt User Interface Compiler (puic)
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
@ -1708,7 +1708,7 @@ sub NEW
|
||||
setName("MuSRFitform" );
|
||||
}
|
||||
setSizePolicy(Qt::SizePolicy(7, 7, 1, 1, this->sizePolicy()->hasHeightForWidth()) );
|
||||
setMinimumSize(Qt::Size(582, 502) );
|
||||
setMinimumSize(Qt::Size(582, 505) );
|
||||
setIcon($image0 );
|
||||
|
||||
setCentralWidget(Qt::Widget(this, "qt_central_widget"));
|
||||
@ -3068,7 +3068,7 @@ sub NEW
|
||||
MenuBar->insertSeparator( 8 );
|
||||
|
||||
languageChange();
|
||||
my $resize = Qt::Size(582, 502);
|
||||
my $resize = Qt::Size(611, 559);
|
||||
$resize = $resize->expandedTo(minimumSizeHint());
|
||||
resize( $resize );
|
||||
clearWState( &Qt::WState_Polished );
|
||||
@ -3226,8 +3226,11 @@ sub languageChange
|
||||
FitType2->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
|
||||
FitType2->insertItem( trUtf8("MolMag") );
|
||||
FitType2->insertItem( trUtf8("Meissner State Model") );
|
||||
FitType2->insertItem( trUtf8("Lor-Gss combi KT") );
|
||||
FitType2->insertItem( trUtf8("Lor-Gss combi KT x Exp") );
|
||||
FitType2->insertItem( trUtf8("Lor-Gss combi KT x SExp") );
|
||||
FitType2->insertItem( trUtf8("None") );
|
||||
FitType2->setCurrentItem( int(15) );
|
||||
FitType2->setCurrentItem( int(18) );
|
||||
TfsLabel->setText( trUtf8("Final Time") );
|
||||
FitType1->clear();
|
||||
FitType1->insertItem( trUtf8("Exponential") );
|
||||
@ -3245,6 +3248,9 @@ sub languageChange
|
||||
FitType1->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
|
||||
FitType1->insertItem( trUtf8("MolMag") );
|
||||
FitType1->insertItem( trUtf8("Meissner State Model") );
|
||||
FitType1->insertItem( trUtf8("Lor-Gss combi KT") );
|
||||
FitType1->insertItem( trUtf8("Lor-Gss combi KT x Exp") );
|
||||
FitType1->insertItem( trUtf8("Lor-Gss combi KT x SExp") );
|
||||
BINS->setText( trUtf8("100") );
|
||||
Comp3Label->setText( trUtf8("Third Component") );
|
||||
Tis->setText( trUtf8("0") );
|
||||
@ -3268,8 +3274,11 @@ sub languageChange
|
||||
FitType3->insertItem( trUtf8("Gaussian Kubo-Toyabe LF x Str Exp") );
|
||||
FitType3->insertItem( trUtf8("MolMag") );
|
||||
FitType3->insertItem( trUtf8("Meissner State Model") );
|
||||
FitType3->insertItem( trUtf8("Lor-Gss combi KT") );
|
||||
FitType3->insertItem( trUtf8("Lor-Gss combi KT x Exp") );
|
||||
FitType3->insertItem( trUtf8("Lor-Gss combi KT x SExp") );
|
||||
FitType3->insertItem( trUtf8("None") );
|
||||
FitType3->setCurrentItem( int(15) );
|
||||
FitType3->setCurrentItem( int(18) );
|
||||
Comp2Label->setText( trUtf8("Second Component") );
|
||||
FitAsyTypeLabel->setText( trUtf8("Fit type") );
|
||||
FitAsyType->clear();
|
||||
@ -3795,7 +3804,10 @@ sub CreateAllInput
|
||||
12,"GLFSExp",
|
||||
13,"MolMag",
|
||||
14,"Meissner",
|
||||
15,"None"
|
||||
15,"LGKT",
|
||||
16,"LGKTExp",
|
||||
17,"LGKTSExp",
|
||||
18,"None"
|
||||
);
|
||||
|
||||
my $FT1=FitType1->currentItem;
|
||||
@ -3945,10 +3957,19 @@ sub CallMSRCreate
|
||||
if ($Answer) {
|
||||
if ( $All{"FitAsyType"} eq "Asymmetry" ) {
|
||||
if ($All{"RUNSType"}) {
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSR(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
} else {
|
||||
# my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSh(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
|
||||
# my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSRSh(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSR(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
|
||||
# if it is multiple runs then the produced file is a template
|
||||
my $FILENAME=$All{"FILENAME"}.".msr";
|
||||
my $Extension = "_".$All{"BeamLine"}."_".$All{"YEAR"};
|
||||
@ -3972,10 +3993,13 @@ sub CallMSRCreate
|
||||
close(FTO);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
elsif ( $All{"FitAsyType"} eq "SingleHist" ) {
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSRSingleHist(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
}
|
||||
UpdateMSRFileInitTable();
|
||||
}
|
||||
|
55
src/external/MuSRFitGUI/MuSRFit.ui
vendored
55
src/external/MuSRFitGUI/MuSRFit.ui
vendored
@ -8,8 +8,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>582</width>
|
||||
<height>502</height>
|
||||
<width>611</width>
|
||||
<height>559</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -23,7 +23,7 @@
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>582</width>
|
||||
<height>502</height>
|
||||
<height>505</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="caption">
|
||||
@ -770,6 +770,21 @@
|
||||
<string>Meissner State Model</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x Exp</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x SExp</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
@ -787,7 +802,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentItem">
|
||||
<number>15</number>
|
||||
<number>18</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="2" column="1">
|
||||
@ -885,6 +900,21 @@
|
||||
<string>Meissner State Model</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x Exp</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x SExp</string>
|
||||
</property>
|
||||
</item>
|
||||
<property name="name">
|
||||
<cstring>FitType1</cstring>
|
||||
</property>
|
||||
@ -1590,6 +1620,21 @@
|
||||
<string>Meissner State Model</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x Exp</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Lor-Gss combi KT x SExp</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
@ -1607,7 +1652,7 @@
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="currentItem">
|
||||
<number>15</number>
|
||||
<number>18</number>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="0" column="1">
|
||||
|
27
src/external/MuSRFitGUI/MuSRFit.ui.h
vendored
27
src/external/MuSRFitGUI/MuSRFit.ui.h
vendored
@ -328,7 +328,10 @@ void MuSRFitform::CreateAllInput()
|
||||
12,"GLFSExp",
|
||||
13,"MolMag",
|
||||
14,"Meissner",
|
||||
15,"None"
|
||||
15,"LGKT",
|
||||
16,"LGKTExp",
|
||||
17,"LGKTSExp",
|
||||
18,"None"
|
||||
);
|
||||
|
||||
my $FT1=FitType1->currentItem;
|
||||
@ -476,10 +479,19 @@ void MuSRFitform::CallMSRCreate()
|
||||
if ($Answer) {
|
||||
if ( $All{"FitAsyType"} eq "Asymmetry" ) {
|
||||
if ($All{"RUNSType"}) {
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSR(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
} else {
|
||||
# my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSh(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSR(\%All);
|
||||
# my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSRSh(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSR(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
|
||||
# if it is multiple runs then the produced file is a template
|
||||
my $FILENAME=$All{"FILENAME"}.".msr";
|
||||
my $Extension = "_".$All{"BeamLine"}."_".$All{"YEAR"};
|
||||
@ -503,10 +515,13 @@ void MuSRFitform::CallMSRCreate()
|
||||
close(FTO);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
elsif ( $All{"FitAsyType"} eq "SingleHist" ) {
|
||||
my ($Full_T_Block,$Paramcomp_ref)= MSR::CreateMSRSingleHist(\%All);
|
||||
my ($Full_T_Block,$Paramcomp_ref,$FullMSRFile)= MSR::CreateMSRSingleHist(\%All);
|
||||
# Open output file FILENAME.msr
|
||||
open( OUTF,q{>},"$FILENAME" );
|
||||
print OUTF ("$FullMSRFile");
|
||||
close(OUTF);
|
||||
}
|
||||
UpdateMSRFileInitTable();
|
||||
}
|
||||
|
29
src/external/libBNMR/TBNMR.cpp
vendored
29
src/external/libBNMR/TBNMR.cpp
vendored
@ -42,6 +42,7 @@
|
||||
ClassImp(TBNMR) // for the ROOT-dictionary
|
||||
ClassImp(ExpRlx)
|
||||
ClassImp(SExpRlx)
|
||||
ClassImp(MLRes)
|
||||
|
||||
double TBNMR::operator()(double x, const vector<double> &par) const {
|
||||
assert(par.size()==1); // make sure the number of parameters handed to the function is correct
|
||||
@ -102,3 +103,31 @@ double SExpRlx::operator()(double x, const vector<double> &par) const {
|
||||
return y;
|
||||
}
|
||||
|
||||
double MLRes::operator()(double x, const vector<double> &par) const {
|
||||
assert(par.size()==3); // make sure the number of parameters handed to the function is correct
|
||||
|
||||
// par[0] time of beam off
|
||||
// par[1] is the relaxation rate
|
||||
// par[2] is the exponent
|
||||
double tau_p;
|
||||
double y;
|
||||
|
||||
tau_p = (tau_Li/(1.+par[1]*tau_Li));
|
||||
|
||||
|
||||
if ( x >= 0 && x <= par[0] ) {
|
||||
TF1 sexp("sexp", "exp(-([0]-x)/[3])*exp(-pow(([1]*([0]-x)),[2]))", 0.0, 10000.0);
|
||||
sexp.SetParameters(x, par[1], par[2],tau_Li);
|
||||
sexp.SetNpx(1000);
|
||||
y=sexp.Integral(0.0,x)/(1-exp(-x/tau_Li))/tau_Li;
|
||||
} else if ( x > par[0] ) {
|
||||
TF1 sexp("sexp", "exp(-([3]-x)/[4])*exp(-pow(([1]*([0]-x)),[2]))", 0.0, 10000.0);
|
||||
sexp.SetParameters(x, par[1], par[2], par[0],tau_Li);
|
||||
sexp.SetNpx(1000);
|
||||
y=sexp.Integral(0.0,par[0])/(1-exp(-x/tau_Li))/tau_Li;
|
||||
} else {
|
||||
y = 0;
|
||||
}
|
||||
return y;
|
||||
}
|
||||
|
||||
|
18
src/external/libBNMR/TBNMR.h
vendored
18
src/external/libBNMR/TBNMR.h
vendored
@ -90,3 +90,21 @@ public:
|
||||
// definition of the class for the ROOT-dictionary
|
||||
ClassDef(SExpRlx,1)
|
||||
};
|
||||
|
||||
class MLRes : public PUserFcnBase {
|
||||
|
||||
public:
|
||||
// default constructor and destructor
|
||||
MLRes(){}
|
||||
~MLRes(){}
|
||||
|
||||
Bool_t NeedGlobalPart() const { return false; }
|
||||
void SetGlobalPart(vector<void *> &globalPart, UInt_t idx) { }
|
||||
Bool_t GlobalPartIsValid() const { return true; }
|
||||
|
||||
// function operator
|
||||
double operator()(double, const vector<double>&) const;
|
||||
|
||||
// definition of the class for the ROOT-dictionary
|
||||
ClassDef(MLRes,1)
|
||||
};
|
||||
|
1
src/external/libBNMR/TBNMRLinkDef.h
vendored
1
src/external/libBNMR/TBNMRLinkDef.h
vendored
@ -38,5 +38,6 @@
|
||||
#pragma link C++ class TBNMR+;
|
||||
#pragma link C++ class ExpRlx+;
|
||||
#pragma link C++ class SExpRlx+;
|
||||
#pragma link C++ class MLRes+;
|
||||
|
||||
#endif //__CINT__
|
||||
|
Reference in New Issue
Block a user