diff --git a/src/external/MuSRFitGUI/MSR.pm b/src/external/MuSRFitGUI/MSR.pm index b496f419..a6585671 100755 --- a/src/external/MuSRFitGUI/MSR.pm +++ b/src/external/MuSRFitGUI/MSR.pm @@ -11,13 +11,14 @@ my %DATADIRS = ( "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" + "GPD", "/afs/psi.ch/project/bulkmusr/data/gpd", + "HAL", "/afs/psi.ch/project/bulkmusr/data/hifi" ); -my %BeamLines = ( "LEM", "MUE4", "LEM (PPC)", "MUE4", "GPS", "PIM3", "LTF", "PIM3", "Dolly", "PIE1", "GPD", "PIE1" ); +my %BeamLines = ( "LEM", "MUE4", "LEM (PPC)", "MUE4", "GPS", "PIM3", "LTF", "PIM3", "Dolly", "PIE1", "GPD", "PIE1" , "HAL", "PIE3"); my %Def_Format = - ( "LEM", "ROOT-NPP", "LEM (PPC)", "ROOT-PPC", "GPS", "PSI-BIN", "LTF", "PSI-BIN", "Dolly", "PSI-BIN" , "GPD", "PSI-BIN"); + ( "LEM", "MUSR-ROOT", "LEM (PPC)", "ROOT-PPC", "GPS", "PSI-BIN", "LTF", "PSI-BIN", "Dolly", "PSI-BIN" , "GPD", "PSI-BIN", "HAL", "PSI-MDU"); # Additional information to extract run properties from database # For LEM use summary files @@ -28,6 +29,7 @@ $SUMM_DIR="/afs/psi.ch/project/nemu/data/summ/"; "Dolly","/afs/psi.ch/project/bulkmusr/olddata/list/", "GPD","/afs/psi.ch/project/bulkmusr/olddata/list/", "ALC","/afs/psi.ch/project/bulkmusr/olddata/list/", + "HAL","/afs/psi.ch/project/bulkmusr/olddata/list/", "LTF","/afs/psi.ch/project/bulkmusr/olddata/list/"); # Information available since @@ -36,6 +38,7 @@ $SUMM_DIR="/afs/psi.ch/project/nemu/data/summ/"; "Dolly","1998", "GPD","1993", "ALC","1993", + "HAL","2012", "LTF","1995"); # And to deal with old names of bulk muons @@ -160,6 +163,9 @@ FUNCTIONS my $RUNSType = 0; my @RUNS=(); if ($All{"RunNumbers"} ne $EMPTY) { + # Remove spaces and other illegal characters + $All{"RunNumbers"} =~ s/ //g; + $All{"RunNumbers"} =~ s/[a-zA-Z]//g; @RUNS=split( /,/, $All{"RunNumbers"}); $RUNSType = 0; } @@ -415,13 +421,11 @@ SAVE # 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"; - # } + if ($All{"Yi"} != $All{"Yf"}) { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"}; + } else { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}; + } } $VIEWBIN_Line =""; @@ -441,7 +445,10 @@ $logxy"; 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";} - + my $FrqRange = "#range ".$All{"FRQMIN"}." ".$All{"FRQMAX"}; + if ($All{"FRQMAX"} ne $EMPTY && $All{"FRQMIN"} ne $EMPTY) { + $FrqRange = "range ".$All{"FRQMIN"}." ".$All{"FRQMAX"}; + } $FOURIER_Block= "############################################################### @@ -451,12 +458,13 @@ fourier_power 12 apodization FAPODIZATION # NONE, WEAK, MEDIUM, STRONG plot FPLOT # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE phase FPHASE -#range FRQMIN FRQMAX"; +FRQRANGE"; $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; + $FOURIER_Block=~ s/FRQRANGE/$FrqRange/g; # Don't know why but it is needed initially $STAT_Block = @@ -519,8 +527,6 @@ 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; @@ -664,6 +670,7 @@ 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") { @@ -817,13 +824,11 @@ SAVE # 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"; - # } + if ($All{"Yi"} != $All{"Yf"}) { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"}; + } else { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}; + } } my $RRFBlock=MSR::CreateRRFBlock(\%All); @@ -1057,11 +1062,18 @@ sub CreateTheory { $Parameters = join( $SPACE, $Parameters, $THEORY{'dynGssKTLF'} ); } + # Static Lorentzian or Gaussian KF ZF elsif ( $FitType eq "LGKT" ) { $T_Block = $T_Block . "\n" . "combiLGKT " . $THEORY{'combiLGKT'}; $Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} ); } + # Static Stretched KF ZF + elsif ( $FitType eq "STRKT" ) { + $T_Block = $T_Block . "\n" . "strKT " . $THEORY{'strKT'}; + $Parameters = join( $SPACE, $Parameters, $THEORY{'strKT'} ); + } + # Now some more combined functions (multiplication). # Lorentzian KT LF multiplied by exponential @@ -1109,6 +1121,15 @@ sub CreateTheory { $Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} ); } + # Stretched KT ZF multiplied by exponential + elsif ( $FitType eq "STRKTExp" ) { + $T_Block = $T_Block . "\n" . "simplExpo " . $THEORY{'simplExpo'}; + $Parameters = join( $SPACE, $Parameters, $THEORY{'simplExpo'} ); + $T_Block = + $T_Block . "\n" . "strKT " . $THEORY{'strKT'}; + $Parameters = join( $SPACE, $Parameters, $THEORY{'strKT'} ); + } + # Lorentzian or Gaussian KT ZF multiplied by stretched exponential elsif ( $FitType eq "LGKTSExp" ) { $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; @@ -1118,6 +1139,15 @@ sub CreateTheory { $Parameters = join( $SPACE, $Parameters, $THEORY{'combiLGKT'} ); } + # Stretched KT ZF multiplied by stretched exponential + elsif ( $FitType eq "STRKTSExp" ) { + $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; + $Parameters = join( $SPACE, $Parameters, $THEORY{'generExpo'} ); + $T_Block = + $T_Block . "\n" . "strKT " . $THEORY{'strKT'}; + $Parameters = join( $SPACE, $Parameters, $THEORY{'strKT'} ); + } + # Lorentzian or Gaussian KT LF multiplied by stretched exponential elsif ( $FitType eq "MolMag" ) { $T_Block = $T_Block . "\n" . "generExpo " . $THEORY{'generExpo'}; @@ -1717,7 +1747,7 @@ sub RUNFileNameAuto { my $RUN_Line=$EMPTY; # if BeamLine is empty assume manual name if ($BeamLine eq $EMPTY) { - my %EXTs = ("root","ROOT-NPP", + my %EXTs = ("root","MUSR-ROOT", "bin","PSI-BIN", "msr","MUD"); @@ -1764,6 +1794,11 @@ sub RUNFileNameAuto { elsif ( $BeamLine eq "GPD" ) { $RUN_File_Name = "deltat_tdc_gpd_" . $RUNtmp; $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; + } + elsif ( $BeamLine eq "HAL" ) { + $RUNtmp=sprintf("%05d",$RUNtmp); + $RUN_File_Name = "tdc_hifi_" . $YEAR . "_" . $RUNtmp; + $RUNFILE = "$DATADIR/d$YEAR/tdc/$RUN_File_Name"; } $RUN_Line = join( $SPACE, "RUN", $RUNFILE, $BeamLines{$BeamLine}, "PSI", @@ -1792,6 +1827,52 @@ sub CreateRRFBlock { } +######################## +# ExtractInfo +######################## +# Used to extract information from data file header. The header (using +# "dump_header" is sent to this function from musrfit.cgi or MuSRFit +sub ExtractInfo { + my ($header,$Arg) = @_; + + my @lines = split(/\n/,$header); + + if ( $Arg eq "TITLE" ) { + $RTRN_Val = $lines[3]; + $RTRN_Val =~ s/\n//g; + } + elsif ( $Arg eq "Temp" ) { + foreach my $line (@lines) { + if ( $line =~ /Mean Sample_CF1/ ) { + ( my $tmp, my $T ) = split( /=/, $line ); + ( $T, $tmp ) = split( /\(/, $T ); + $RTRN_Val = $T; + } + } + + } + elsif ( $Arg eq "Field" ) { + foreach my $line (@lines) { + if ( $line =~ /Mean B field/ ) { + ( $tmp, my $B ) = split( /=/, $line ); + ( $B, $tmp ) = split( /\(/, $B ); + $RTRN_Val = $B; + } + } + } + elsif ( $Arg eq "Energy" ) { + foreach my $line (@lines) { + if ( $line =~ /implantation energy/ ) { + ( my $tmp1, my $tmp2, my $E ) = split( /=/, $line ); + ( $E, $tmp ) = split( /keV/, $E ); + $RTRN_Val = $E; + } + } + + } + # $RTRN_Val =~ s/[\.\~\/\&\*\[\;\>\<\^\$\(\)\`\|\]\'\@]//g; + return $RTRN_Val; +} ######################## @@ -2224,7 +2305,7 @@ FUNCTIONS FITPARAMETER ############################################################### # No Name Value Err Min Max "; - my %PTable=MSR::PrepParamTableSh(\%All); + 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++) { @@ -2266,13 +2347,11 @@ SAVE # 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"; - # } + if ($All{"Yi"} != $All{"Yf"}) { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}." ".$All{"Yi"}." ".$All{"Yf"}; + } else { + $PRANGE_Line = "range ".$All{"Xi"}." ".$All{"Xf"}; + } } $VIEWBIN_Line =""; diff --git a/src/external/libBNMR/ExpRlx-MUD.msr b/src/external/libBNMR/ExpRlx-MUD.msr index ccbf0bb4..ef423491 100644 --- a/src/external/libBNMR/ExpRlx-MUD.msr +++ b/src/external/libBNMR/ExpRlx-MUD.msr @@ -4,23 +4,23 @@ FITPARAMETER ############################################################### # No Name Value Err Min Max - 1 Alphap 1.11662 0.00020 none - 2 Asyp 0 0.00038 none - 3 T 1e6 0 none - 4 Rlx 0.969e6 0.020 none - 5 Pos 1 0 none - 6 Neg -1 0 none + 1 Alpha 1.11587 0.00038 none + 2 Asy 0.0570 0.0011 none + 3 T 1 0 none + 4 Rlx 1.015 0.023 none + 5 One 1 0 none + 6 Bet -1.052 0.027 none ############################################################### THEORY ############################################################### asymmetry fun1 -userFcn libBNMR.so ExpRlx 3 4 +userFcn .libs/libBNMR.so ExpRlx 3 4 ############################################################### FUNCTIONS ############################################################### -fun1 = map1 * map2 +fun1 = 0.5 * map1 * map2 ############################################################### RUN 045674 BNMR TRIUMF MUD (name beamline institute data-file-format) @@ -28,11 +28,12 @@ fittype 2 (asymmetry fit) alpha 1 forward 3 backward 4 -data 11 799 11 799 -background 800 900 800 900 # estimated bkg: 416.9700 / 465.7600 -t0 0.0 0.0 +data 11 800 11 800 +#backgr.fix 0 +background 1 9 1 9 # estimated bkg: 8.0000 / 9.6250 +t0 10.0 10.0 map 2 5 0 0 0 0 0 0 0 0 -fit 5e5 8e6 +fit 0.5 8 packing 5 RUN 045674 BNMR TRIUMF MUD (name beamline institute data-file-format) @@ -40,11 +41,12 @@ fittype 2 (asymmetry fit) alpha 1 forward 5 backward 6 -data 11 799 11 799 -background 800 900 800 900 # estimated bkg: 430.9200 / 479.4500 -t0 0.0 0.0 +data 11 800 11 800 +#backgr.fix 0 +background 1 9 1 9 # estimated bkg: 11.6250 / 15.6250 +t0 10.0 10.0 map 2 6 0 0 0 0 0 0 0 0 -fit 5e5 8e6 +fit 0.5 8 packing 5 @@ -58,16 +60,17 @@ SAVE PLOT 2 (asymmetry plot) runs 1 2 use_fit_ranges +view_packing 10 ############################################################### FOURIER -units MHz # units either 'Gauss', 'MHz', or 'Mc/s' +units MHz # units either 'Gauss', 'Tesla', 'MHz', or 'Mc/s' fourier_power 12 apodization STRONG # NONE, WEAK, MEDIUM, STRONG plot POWER # REAL, IMAG, REAL_AND_IMAG, POWER, PHASE phase 8 #range FRQMIN FRQMAX ############################################################### -STATISTIC --- 2014-11-14 16:37:41 - chisq = 372.2, NDF = 295, chisq/NDF = 1.261744 +STATISTIC --- 2015-04-14 11:00:19 + chisq = 399.5, NDF = 290, chisq/NDF = 1.377736 diff --git a/src/external/libBNMR/ExpRlx.msr b/src/external/libBNMR/ExpRlx.msr index 8b0d79c9..2b3f52ac 100644 --- a/src/external/libBNMR/ExpRlx.msr +++ b/src/external/libBNMR/ExpRlx.msr @@ -9,7 +9,7 @@ FITPARAMETER ############################################################### THEORY asymmetry 1 -userFcn /home/l_salman/LEM/musrfit/src/external/libBNMR/libBNMR.so ExpRlx 2 3 +userFcn /usr/local/lib/libBNMR.so ExpRlx 2 3 ############################################################### RUN 45377 MUE4 PSI ASCII (name beamline institute data-file-format) diff --git a/src/external/libBNMR/SExpRlx.msr b/src/external/libBNMR/SExpRlx.msr index a296e449..636583f8 100644 --- a/src/external/libBNMR/SExpRlx.msr +++ b/src/external/libBNMR/SExpRlx.msr @@ -10,7 +10,7 @@ FITPARAMETER ############################################################### THEORY asymmetry 1 -userFcn /home/l_salman/LEM/musrfit/src/external/libBNMR/libBNMR.so SExpRlx 2 3 4 +userFcn /usr/local/lib/libBNMR.so SExpRlx 2 3 4 ############################################################### RUN 45377 MUE4 PSI ASCII (name beamline institute data-file-format)