Merge branch 'root6' of https://git.psi.ch/nemu/musrfit into root6

This commit is contained in:
suter_a 2017-05-14 20:43:06 +02:00
commit 25685b8989
7 changed files with 382 additions and 336 deletions

View File

@ -888,7 +888,6 @@ bool PMusrWizDefaultXMLParser::fatalError( const QXmlParseException & exception
PAdmin::PAdmin() : QObject()
{
QString path, fln, pathFln;
bool found = false;
int count = 0;
fValid = true;
@ -900,51 +899,30 @@ PAdmin::PAdmin() : QObject()
// 2nd: check $HOME/.musrfit/musrWiz/musrWiz.xml
path = std::getenv("HOME");
pathFln = path + "/.musrfit/musrWiz/musrWiz.xml";
if (QFile::exists(pathFln)) {
found = true;
}
} else {
found = true;
}
if (found) {
if (loadMusrWizDefault(pathFln)) {
QMessageBox::warning(0, "WARNING", "Couldn't find musrWiz.xml file.");
}
}
// load musrfit funcs
found = false;
// 1st: check local directory
pathFln = QString("./musrfit_funcs.xml");
if (!QFile::exists(pathFln)) {
// 2nd: check $HOME/.musrfit/musrWiz/musrfit_funcs.xml
path = std::getenv("HOME");
pathFln = path + "/.musrfit/musrWiz/musrfit_funcs.xml";
if (QFile::exists(pathFln)) {
found = true;
if (loadMusrfitFunc(pathFln)) {
fValid = false;
QMessageBox::critical(0, "FATAL ERROR", "Couldn't find any musrfit function definitions.");
return;
}
} else {
found = true;
}
if (!found) {
fValid = false;
QMessageBox::critical(0, "FATAL ERROR", "Couldn't find musrfit_funcs.xml.");
return;
}
if (loadMusrfitFunc(pathFln)) {
fValid = false;
QMessageBox::critical(0, "FATAL ERROR", "Couldn't find any musrfit function definitions.");
return;
}
// load instrument definitions
found = false;
QStringList instStr;
instStr << "psi" << "triumf" << "isis" << "jparc";
for (int i=0; i<instStr.size(); i++) {
found = false;
// XML Parser part
// 1st: check local directory
path = QString("./");
@ -953,18 +931,12 @@ PAdmin::PAdmin() : QObject()
if (!QFile::exists(pathFln)) {
// 2nd: check $HOME/.musrfit/musrWiz/instrument_def_XXX.xml
path = std::getenv("HOME");
pathFln = path + "/.musrfit/musrWiz/" + fln;
if (QFile::exists(pathFln)) {
found = true;
}
} else {
found = true;
}
if (found) {
count++;
if (loadInstrumentDef(pathFln)) {
path += "/.musrfit/musrWiz/";
if (loadInstrumentDef(path, fln)) {
fValid = false;
return;
} else {
count++;
}
}
}
@ -1248,6 +1220,31 @@ PInstrument *PAdmin::getInstrument(QString institute, QString instrument)
*/
int PAdmin::loadMusrWizDefault(QString fln)
{
// check if fln already exists
if (!QFile::exists(fln)) {
QFile file(":/musrWiz.xml");
if (file.exists()) {
// get $HOME
QProcessEnvironment procEnv = QProcessEnvironment::systemEnvironment();
QString pathName = procEnv.value("HOME", "");
pathName += "/.musrfit/musrWiz";
// check if the directory $HOME/.musrfit/musrWiz exists if not create it
QDir dir(pathName);
if (!dir.exists()) {
// directory $HOME/.musrfit/musredit does not exist hence create it
dir.mkpath(pathName);
}
pathName += "/musrWiz.xml";
if (file.copy(pathName)) {
cout << "**INFO** '" << pathName.toLatin1().data() << "' did not exist, hence it is created." << endl;
} else {
QString msg = QString("Couldn't create '%1'. Please check.").arg(pathName);
QMessageBox::critical(0, "ERROR", msg);
return 1;
}
}
}
PMusrWizDefaultXMLParser handler(this);
QFile xmlFile(fln);
QXmlInputSource source( &xmlFile );
@ -1267,6 +1264,24 @@ int PAdmin::loadMusrWizDefault(QString fln)
*/
int PAdmin::loadMusrfitFunc(QString fln)
{
// check if fln already exists
if (!QFile::exists(fln)) {
QFile file(":/func_defs/musrfit_funcs.xml");
if (file.exists()) {
// get $HOME
QProcessEnvironment procEnv = QProcessEnvironment::systemEnvironment();
QString pathName = procEnv.value("HOME", "");
pathName += "/.musrfit/musrWiz/musrfit_funcs.xml";
if (file.copy(pathName)) {
cout << "**INFO** '" << pathName.toLatin1().data() << "' did not exist, hence it is created." << endl;
} else {
QString msg = QString("Couldn't create '%1'. Please check.").arg(pathName);
QMessageBox::critical(0, "ERROR", msg);
return 1;
}
}
}
PFuncXMLParser handler(this);
QFile xmlFile(fln);
QXmlInputSource source( &xmlFile );
@ -1283,18 +1298,41 @@ int PAdmin::loadMusrfitFunc(QString fln)
//--------------------------------------------------------------------------
/**
* @brief PAdmin::loadInstrumentDef
* @param path
* @param fln
* @return
*/
int PAdmin::loadInstrumentDef(QString fln)
int PAdmin::loadInstrumentDef(QString path, QString fln)
{
// check if fln already exists
QString pathFln = path+fln;
if (!QFile::exists(pathFln)) {
QString resFln = QString(":/instrument_defs/%1").arg(fln);
QFile file(resFln);
if (file.exists()) {
// get $HOME
QProcessEnvironment procEnv = QProcessEnvironment::systemEnvironment();
QString pathName = procEnv.value("HOME", "");
pathName += "/.musrfit/musrWiz/" + fln;
if (file.copy(pathName)) {
cout << "**INFO** '" << pathName.toLatin1().data() << "' did not exist, hence it is created." << endl;
} else {
QString msg = QString("Couldn't create '%1'. Please check.").arg(pathName);
QMessageBox::critical(0, "ERROR", msg);
return 1;
}
} else {
return 0;
}
}
PInstrumentDefXMLParser handler(this);
QFile xmlFile(fln);
QFile xmlFile(pathFln);
QXmlInputSource source( &xmlFile );
QXmlSimpleReader reader;
reader.setContentHandler( &handler );
if (!reader.parse(source)) {
QString errMsg = QString("Error parsing %1 instrument def file.").arg(fln);
QString errMsg = QString("Error parsing %1 instrument def file.").arg(pathFln);
QMessageBox::critical(0, "ERROR", errMsg);
return 1;
}

View File

@ -196,7 +196,7 @@ class PAdmin : public QObject
int loadMusrWizDefault(QString fln);
int loadMusrfitFunc(QString fln);
int loadInstrumentDef(QString fln);
int loadInstrumentDef(QString path, QString fln);
};
#endif // _PADMIN_H_

View File

@ -31,36 +31,6 @@ win32:target.path = c:/musrfit/bin
INSTALLS += target
# install path for the XML instrument def file
unix:instrumendDef.path = $$(HOME)/.musrfit/musrWiz
macx:instrumendDef.path = $$(HOME)/.musrfit/musrWiz
instrumendDef.files = instrument_defs/instrument_def_psi.xml
exists( $$(HOME)/.musrfit/musrWiz/instrument_def_psi.xml ) {
unix:instrumendDef.extra = mv $$(HOME)/.musrfit/musrWiz/instrument_def_psi.xml $$(HOME)/.musrfit/musrWiz/instrument_def_psi.xml.backup
macx:instrumendDef.extra = mv $$(HOME)/.musrfit/musrWiz/instrument_def_psi.xml $$(HOME)/.musrfit/musrWiz/instrument_def_psi.xml.backup
}
INSTALLS += instrumendDef
# install path for the XML musrfit funcs file
unix:musrfitFunc.path = $$(HOME)/.musrfit/musrWiz
macx:musrfitFunc.path = $$(HOME)/.musrfit/musrWiz
musrfitFunc.files = func_defs/musrfit_funcs.xml
exists( $$(HOME)/.musrfit/musrWiz/musrfit_funcs.xml ) {
unix:musrfitFunc.extra = mv $$(HOME)/.musrfit/musrWiz/musrfit_funcs.xml $$(HOME)/.musrfit/musrWiz/musrfit_funcs.xml.backup
macx:musrfitFunc.extra = mv $$(HOME)/.musrfit/musrWiz/musrfit_funcs.xml $$(HOME)/.musrfit/musrWiz/musrfit_funcs.xml.backup
}
INSTALLS += musrfitFunc
# install path for the musrWiz defaults XML
unix:musrWizDefault.path = $$(HOME)/.musrfit/musrWiz
macx:musrWizDefault.path = $$(HOME)/.musrfit/musrWiz
musrWizDefault.files = musrWiz.xml
exists( $$(HOME)/.musrfit/musrWiz/musrWiz.xml ) {
unix:musrWizDefault.extra = mv $$(HOME)/.musrfit/musrWiz/musrWiz.xml $$(HOME)/.musrfit/musrWiz/musrWiz.xml.backup
macx:musrWizDefault.extra = mv $$(HOME)/.musrfit/musrWiz/musrWiz.xml $$(HOME)/.musrfit/musrWiz/musrWiz.xml.backup
}
INSTALLS += musrWizDefault
CONFIG += qt \
warn_on \
release

View File

@ -4,5 +4,9 @@
<file>icons/musrWiz-22x22-dark.svg</file>
<file>icons/musrWiz-32x32.svg</file>
<file>icons/musrWiz-32x32-dark.svg</file>
<file>musrWiz.xml</file>
<file>func_defs/musrfit_funcs.xml</file>
<file>instrument_defs/instrument_def_psi.xml</file>
<file>instrument_defs/instrument_def_isis.xml</file>
</qresource>
</RCC>

View File

@ -38,6 +38,7 @@ using namespace std;
#include <QVector>
#include <QDir>
#include <QProcessEnvironment>
#include <QSysInfo>
#include "musrfit-info.h"
#include "PAdmin.h"
@ -671,7 +672,7 @@ PAdmin::PAdmin() : QObject()
path = procEnv.value("ROOTSYS", "");
pathFln = path + "/bin/" + fln;
if (!QFile::exists(pathFln)) {
// 5th: not found anyware hence create it
// 5th: not found anywhere hence create it
path = procEnv.value("HOME", "");
pathFln = path + "/.musrfit/musredit/" + fln;
createMusreditStartupFile();
@ -1000,280 +1001,52 @@ void PAdmin::createMusreditStartupFile()
// create default musredit_startup.xml file in $HOME/.musrfit/musredit
pathName += "/musredit_startup.xml";
// get the default musredit_startup.xml.in from the internal resources
QFile fres(":/musredit_startup.xml.in");
if (!fres.exists()) {
QString msg = QString("Neither couldn't find nor create musredit_startup.xml. Things are likely not to work.");
QMessageBox::critical(0, "ERROR", msg);
return;
}
if (!fres.open(QIODevice::ReadOnly | QIODevice::Text)) {
QString msg = QString("Couldn't open internal resource file musredit_startup.xml.in. Things are likely not to work.");
QMessageBox::critical(0, "ERROR", msg);
return;
}
// text stream for fres
QTextStream fin(&fres);
// musredit_startup.xml default file
QFile file(pathName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
// text stream for file
QTextStream fout(&file);
fout << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
fout << "<musredit_startup xmlns=\"http://lmu.web.psi.ch/musrfit/user/MUSR/MusrGui.html\">" << endl;
fout << " <comment>" << endl;
fout << " This is handling default setting parameters for the musredit." << endl;
fout << " </comment>" << endl;
fout << " <general>" << endl;
fout << " <exec_path>" << MUSRFIT_PREFIX << "/bin</exec_path>" << endl;
fout << " <default_save_path>./</default_save_path>" << endl;
fout << " <msr_default_file_path>" << MUSRFIT_DOC_DIR << "/templates</msr_default_file_path>" << endl;
fout << " <timeout>3600</timeout>" << endl;
fout << " <keep_minuit2_output>n</keep_minuit2_output>" << endl;
fout << " <dump_ascii>n</dump_ascii>" << endl;
fout << " <dump_root>n</dump_root>" << endl;
fout << " <title_from_data_file>y</title_from_data_file>" << endl;
fout << " <chisq_per_run_block>n</chisq_per_run_block>" << endl;
fout << " <estimate_n0>y</estimate_n0>" << endl;
fout << " <musrview_show_fourier>n</musrview_show_fourier>" << endl;
fout << " <musrview_show_avg>n</musrview_show_avg>" << endl;
fout << " <enable_musrt0>y</enable_musrt0>" << endl;
fout << " </general>" << endl;
fout << " <recent_files>" << endl;
fout << " <path_file_name>" << MUSRFIT_DOC_DIR << "/examples/test-histo-PSI-BIN.msr</path_file_name>" << endl;
fout << " </recent_files>" << endl;
fout << " <help_section>" << endl;
fout << " <musr_web_main>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html</musr_web_main>" << endl;
fout << " <musr_web_title>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheTitle</musr_web_title>" << endl;
fout << " <musr_web_parameters>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheFitparameterBlock</musr_web_parameters>" << endl;
fout << " <musr_web_theory>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheTheoryBlock</musr_web_theory>" << endl;
fout << " <musr_web_functions>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheFunctionsBlock</musr_web_functions>" << endl;
fout << " <musr_web_run>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheRunBlock</musr_web_run>" << endl;
fout << " <musr_web_command>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheCommandsBlock</musr_web_command>" << endl;
fout << " <musr_web_fourier>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheFourierBlock</musr_web_fourier>" << endl;
fout << " <musr_web_plot>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#ThePlotBlock</musr_web_plot>" << endl;
fout << " <musr_web_statistic>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#TheStatisticBlock</musr_web_statistic>" << endl;
fout << " <musr_web_msr2data>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/Msr2Data.html</musr_web_msr2data>" << endl;
fout << " <musr_web_musrFT>file://" << MUSRFIT_DOC_DIR << "/html/user/MUSR/MusrFit.html#A_2.3_musrFT</musr_web_musrFT>" << endl;
fout << " </help_section>" << endl;
fout << " <font_settings>" << endl;
#ifdef Q_OS_MAC
fout << " <font_name>Courier New</font_name>" << endl;
fout << " <font_size>16</font_size>" << endl;
#else
fout << " <font_name>Monospace</font_name>" << endl;
fout << " <font_size>12</font_size>" << endl;
#endif
fout << " </font_settings>" << endl;
fout << " <msr_file_defaults>" << endl;
fout << " <beamline>mue4</beamline>" << endl;
fout << " <institute>psi</institute>" << endl;
fout << " <file_format>root-npp</file_format>" << endl;
fout << " <lifetime_correction>y</lifetime_correction>" << endl;
fout << " </msr_file_defaults>" << endl;
fout << " <msr2data_defaults>" << endl;
fout << " <chain_fit>y</chain_fit>" << endl;
fout << " <write_data_header>y</write_data_header>" << endl;
fout << " <ignore_data_header_info>n</ignore_data_header_info>" << endl;
fout << " <keep_minuit2_output>n</keep_minuit2_output>" << endl;
fout << " <write_column_data>n</write_column_data>" << endl;
fout << " <recreate_data_file>n</recreate_data_file>" << endl;
fout << " <open_file_after_fitting>y</open_file_after_fitting>" << endl;
fout << " <create_msr_file_only>n</create_msr_file_only>" << endl;
fout << " <fit_only>n</fit_only>" << endl;
fout << " <global>n</global>" << endl;
fout << " <global_plus>n</global_plus>" << endl;
fout << " </msr2data_defaults>" << endl;
fout << " <func_pixmap_path>" << MUSRFIT_DOC_DIR << "/latex_images</func_pixmap_path>" << endl;
fout << " <theory_functions>" << endl;
fout << " <func>" << endl;
fout << " <name>asymmetry</name>" << endl;
fout << " <comment></comment>" << endl;
fout << " <label>Asymmetry</label>" << endl;
fout << " <pixmap>asymmetry.png</pixmap>" << endl;
fout << " <params>1</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>simplExpo</name>" << endl;
fout << " <comment>(rate)</comment>" << endl;
fout << " <label>simple Exp</label>" << endl;
fout << " <pixmap>simpleExp.png</pixmap>" << endl;
fout << " <params>1</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>generExpo</name>" << endl;
fout << " <comment>(rate exponent)</comment>" << endl;
fout << " <label>general Exp</label>" << endl;
fout << " <pixmap>generalExp.png</pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>simpleGss</name>" << endl;
fout << " <comment>(rate)</comment>" << endl;
fout << " <label>simple Gauss</label>" << endl;
fout << " <pixmap>simpleGauss.png</pixmap>" << endl;
fout << " <params>1</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>statGssKT</name>" << endl;
fout << " <comment>(rate)</comment>" << endl;
fout << " <label>static Gauss KT</label>" << endl;
fout << " <pixmap>statGssKT.png</pixmap>" << endl;
fout << " <params>1</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>statGssKTLF</name>" << endl;
fout << " <comment>(frequency damping)</comment>" << endl;
fout << " <label>static Gauss KT LF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>dynGssKTLF</name>" << endl;
fout << " <comment>(frequency damping hopping-rate)</comment>" << endl;
fout << " <label>dynamic Gauss KT LF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>3</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>statExpKT</name>" << endl;
fout << " <comment>(rate)</comment>" << endl;
fout << " <label>static Lorentz KT</label>" << endl;
fout << " <pixmap>statExpKT.png</pixmap>" << endl;
fout << " <params>1</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>statExpKTLF</name>" << endl;
fout << " <comment>(frequency damping)</comment>" << endl;
fout << " <label>static Lorentz KT LF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>dynExpKTLF</name>" << endl;
fout << " <comment>(frequency damping hopping-rate)</comment>" << endl;
fout << " <label>dynamic Lorentz KT LF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>3</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>combiLGKT</name>" << endl;
fout << " <comment>(lorentzRate gaussRate)</comment>" << endl;
fout << " <label>combined Lorentz-Gauss KT</label>" << endl;
fout << " <pixmap>combiLGKT.png</pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>strKT</name>" << endl;
fout << " <comment>(rate beta)</comment>" << endl;
fout << " <label>stretched Kubo-Toyabe</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>spinGlass</name>" << endl;
fout << " <comment>(rate hopping-rate order)</comment>" << endl;
fout << " <label>zero field spin glass function</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>3</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>rdAnisoHf</name>" << endl;
fout << " <comment>(frequency rate)</comment>" << endl;
fout << " <label>random anisotropic hyperfine function</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>abragam</name>" << endl;
fout << " <comment>(rate hopping-rate)</comment>" << endl;
fout << " <label>Abragam</label>" << endl;
fout << " <pixmap>abragam.png</pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>TFieldCos</name>" << endl;
fout << " <comment>(phase frequency)</comment>" << endl;
fout << " <label>TF cos</label>" << endl;
fout << " <pixmap>tfCos.png</pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>internFld</name>" << endl;
fout << " <comment>(fraction phase frequency Trate Lrate)</comment>" << endl;
fout << " <label>internal Lorentz field</label>" << endl;
fout << " <pixmap>internalField.png</pixmap>" << endl;
fout << " <params>5</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>internFldGK</name>" << endl;
fout << " <comment>(fraction frequency Trate Lrate beta)</comment>" << endl;
fout << " <label>internal field, Gaussian broadened</label>" << endl;
fout << " <pixmap>internalFieldGK.png</pixmap>" << endl;
fout << " <params>5</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>internFldLL</name>" << endl;
fout << " <comment>(fraction frequency Trate Lrate)</comment>" << endl;
fout << " <label>internal field, Lorentzian broadened</label>" << endl;
fout << " <pixmap>internalFieldLL.png</pixmap>" << endl;
fout << " <params>4</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>bessel</name>" << endl;
fout << " <comment>(phase frequency)</comment>" << endl;
fout << " <label>spherical Bessel 0th order</label>" << endl;
fout << " <pixmap>bessel.png</pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>internBsl</name>" << endl;
fout << " <comment>(fraction phase frequency Trate Lrate)</comment>" << endl;
fout << " <label>static internal Bessel</label>" << endl;
fout << " <pixmap>internalBessel.png</pixmap>" << endl;
fout << " <params>5</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>skewedGss</name>" << endl;
fout << " <comment>(phase frequency rate_m rate_p)</comment>" << endl;
fout << " <label>skewed Gaussian</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>4</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>staticNKZF</name>" << endl;
fout << " <comment>(damping_D0 R_b)</comment>" << endl;
fout << " <label>static Noakes-Kalvius ZF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>2</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>staticNKTF</name>" << endl;
fout << " <comment>(phase frequency damping_D0 R_b)</comment>" << endl;
fout << " <label>static Noakes-Kalvius TF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>4</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>dynamicNKZF</name>" << endl;
fout << " <comment>(damping_D0 R_b nu_c)</comment>" << endl;
fout << " <label>dynamic Noakes-Kalvius ZF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>3</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>dynamicNKTF</name>" << endl;
fout << " <comment>(phase frequency damping_D0 R_b nu_c)</comment>" << endl;
fout << " <label>dynamic Noakes-Kalvius TF</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>5</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>polynom</name>" << endl;
fout << " <comment>(tshift p0 p1 ... pn)</comment>" << endl;
fout << " <label>polynom</label>" << endl;
fout << " <pixmap>polynom.png</pixmap>" << endl;
fout << " <params>4</params>" << endl;
fout << " </func>" << endl;
fout << " <func>" << endl;
fout << " <name>userFcn</name>" << endl;
fout << " <comment></comment>" << endl;
fout << " <label>user function</label>" << endl;
fout << " <pixmap></pixmap>" << endl;
fout << " <params>0</params>" << endl;
fout << " </func>" << endl;
fout << " </theory_functions>" << endl;
fout << "</musredit_startup>" << endl;
QString line;
while (!fin.atEnd()) {
line = fin.readLine();
line.replace("@prefix@", MUSRFIT_PREFIX);
line.replace("@DOCDIR@", MUSRFIT_DOC_DIR);
if (line.contains("<font_name>")) { // defaults: linux: Monospace, macOS: Courier New
if (QSysInfo::macVersion() != QSysInfo::MV_None) {
line.replace("Monospace", "Courier New");
}
}
if (line.contains("<font_size>")) { // defaults: linux: 12, macOS: 16
if (QSysInfo::macVersion() != QSysInfo::MV_None) {
line.replace("12", "16");
}
}
fout << line << endl;
}
file.close();
fres.close();
}
//--------------------------------------------------------------------------

View File

@ -63,5 +63,6 @@
<file>latex_images/statExpKT.png</file>
<file>latex_images/statGssKT.png</file>
<file>latex_images/tfCos.png</file>
<file>musredit_startup.xml.in</file>
</qresource>
</RCC>

View File

@ -0,0 +1,260 @@
<?xml version="1.0" encoding="UTF-8"?>
<musredit_startup xmlns="http://lmu.web.psi.ch/musrfit/user/MUSR/MusrGui.html">
<comment>
This is handling default setting parameters for the musredit.
</comment>
<general>
<exec_path>@prefix@/bin</exec_path>
<default_save_path>./</default_save_path>
<msr_default_file_path>@DOCDIR@/templates</msr_default_file_path>
<timeout>3600</timeout>
<keep_minuit2_output>n</keep_minuit2_output>
<dump_ascii>n</dump_ascii>
<dump_root>n</dump_root>
<title_from_data_file>y</title_from_data_file>
<chisq_per_run_block>n</chisq_per_run_block>
<estimate_n0>y</estimate_n0>
<musrview_show_fourier>n</musrview_show_fourier>
<musrview_show_avg>n</musrview_show_avg>
<enable_musrt0>y</enable_musrt0>
</general>
<recent_files>
<path_file_name>@DOCDIR@/examples/test-histo-PSI-BIN.msr</path_file_name>
</recent_files>
<help_section>
<musr_web_main>file://@DOCDIR@/html/user/MUSR/MusrFit.html</musr_web_main>
<musr_web_title>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheTitle</musr_web_title>
<musr_web_parameters>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheFitparameterBlock</musr_web_parameters>
<musr_web_theory>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheTheoryBlock</musr_web_theory>
<musr_web_functions>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheFunctionsBlock</musr_web_functions>
<musr_web_run>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheRunBlock</musr_web_run>
<musr_web_command>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheCommandsBlock</musr_web_command>
<musr_web_fourier>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheFourierBlock</musr_web_fourier>
<musr_web_plot>file://@DOCDIR@/html/user/MUSR/MusrFit.html#ThePlotBlock</musr_web_plot>
<musr_web_statistic>file://@DOCDIR@/html/user/MUSR/MusrFit.html#TheStatisticBlock</musr_web_statistic>
<musr_web_msr2data>file://@DOCDIR@/html/user/MUSR/Msr2Data.html</musr_web_msr2data>
<musr_web_musrFT>file://@DOCDIR@/html/user/MUSR/MusrFit.html#A_2.3_musrFT</musr_web_musrFT>
</help_section>
<font_settings>
<font_name>Monospace</font_name>
<font_size>12</font_size>
</font_settings>
<msr_file_defaults>
<beamline>mue4</beamline>
<institute>psi</institute>
<file_format>root-npp</file_format>
<lifetime_correction>y</lifetime_correction>
</msr_file_defaults>
<msr2data_defaults>
<chain_fit>y</chain_fit>
<write_data_header>y</write_data_header>
<ignore_data_header_info>n</ignore_data_header_info>
<keep_minuit2_output>n</keep_minuit2_output>
<write_column_data>n</write_column_data>
<recreate_data_file>n</recreate_data_file>
<open_file_after_fitting>y</open_file_after_fitting>
<create_msr_file_only>n</create_msr_file_only>
<fit_only>n</fit_only>
<global>n</global>
<global_plus>n</global_plus>
</msr2data_defaults>
<func_pixmap_path>@DOCDIR@/latex_images</func_pixmap_path>
<theory_functions>
<func>
<name>asymmetry</name>
<comment></comment>
<label>Asymmetry</label>
<pixmap>asymmetry.png</pixmap>
<params>1</params>
</func>
<func>
<name>simplExpo</name>
<comment>(rate)</comment>
<label>simple Exp</label>
<pixmap>simpleExp.png</pixmap>
<params>1</params>
</func>
<func>
<name>generExpo</name>
<comment>(rate exponent)</comment>
<label>general Exp</label>
<pixmap>generalExp.png</pixmap>
<params>2</params>
</func>
<func>
<name>simpleGss</name>
<comment>(rate)</comment>
<label>simple Gauss</label>
<pixmap>simpleGauss.png</pixmap>
<params>1</params>
</func>
<func>
<name>statGssKT</name>
<comment>(rate)</comment>
<label>static Gauss KT</label>
<pixmap>statGssKT.png</pixmap>
<params>1</params>
</func>
<func>
<name>statGssKTLF</name>
<comment>(frequency damping)</comment>
<label>static Gauss KT LF</label>
<pixmap></pixmap>
<params>2</params>
</func>
<func>
<name>dynGssKTLF</name>
<comment>(frequency damping hopping-rate)</comment>
<label>dynamic Gauss KT LF</label>
<pixmap></pixmap>
<params>3</params>
</func>
<func>
<name>statExpKT</name>
<comment>(rate)</comment>
<label>static Lorentz KT</label>
<pixmap>statExpKT.png</pixmap>
<params>1</params>
</func>
<func>
<name>statExpKTLF</name>
<comment>(frequency damping)</comment>
<label>static Lorentz KT LF</label>
<pixmap></pixmap>
<params>2</params>
</func>
<func>
<name>dynExpKTLF</name>
<comment>(frequency damping hopping-rate)</comment>
<label>dynamic Lorentz KT LF</label>
<pixmap></pixmap>
<params>3</params>
</func>
<func>
<name>combiLGKT</name>
<comment>(lorentzRate gaussRate)</comment>
<label>combined Lorentz-Gauss KT</label>
<pixmap>combiLGKT.png</pixmap>
<params>2</params>
</func>
<func>
<name>strKT</name>
<comment>(rate beta)</comment>
<label>stretched Kubo-Toyabe</label>
<pixmap></pixmap>
<params>2</params>
</func>
<func>
<name>spinGlass</name>
<comment>(rate hopping-rate order)</comment>
<label>zero field spin glass function</label>
<pixmap></pixmap>
<params>3</params>
</func>
<func>
<name>rdAnisoHf</name>
<comment>(frequency rate)</comment>
<label>random anisotropic hyperfine function</label>
<pixmap></pixmap>
<params>2</params>
</func>
<func>
<name>abragam</name>
<comment>(rate hopping-rate)</comment>
<label>Abragam</label>
<pixmap>abragam.png</pixmap>
<params>2</params>
</func>
<func>
<name>TFieldCos</name>
<comment>(phase frequency)</comment>
<label>TF cos</label>
<pixmap>tfCos.png</pixmap>
<params>2</params>
</func>
<func>
<name>internFld</name>
<comment>(fraction phase frequency Trate Lrate)</comment>
<label>internal Lorentz field</label>
<pixmap>internalField.png</pixmap>
<params>5</params>
</func>
<func>
<name>internFldGK</name>
<comment>(fraction frequency Trate Lrate beta)</comment>
<label>internal field, Gaussian broadened</label>
<pixmap>internalFieldGK.png</pixmap>
<params>5</params>
</func>
<func>
<name>internFldLL</name>
<comment>(fraction frequency Trate Lrate)</comment>
<label>internal field, Lorentzian broadened</label>
<pixmap>internalFieldLL.png</pixmap>
<params>4</params>
</func>
<func>
<name>bessel</name>
<comment>(phase frequency)</comment>
<label>spherical Bessel 0th order</label>
<pixmap>bessel.png</pixmap>
<params>2</params>
</func>
<func>
<name>internBsl</name>
<comment>(fraction phase frequency Trate Lrate)</comment>
<label>static internal Bessel</label>
<pixmap>internalBessel.png</pixmap>
<params>5</params>
</func>
<func>
<name>skewedGss</name>
<comment>(phase frequency rate_m rate_p)</comment>
<label>skewed Gaussian</label>
<pixmap></pixmap>
<params>4</params>
</func>
<func>
<name>staticNKZF</name>
<comment>(damping_D0 R_b)</comment>
<label>static Noakes-Kalvius ZF</label>
<pixmap></pixmap>
<params>2</params>
</func>
<func>
<name>staticNKTF</name>
<comment>(phase frequency damping_D0 R_b)</comment>
<label>static Noakes-Kalvius TF</label>
<pixmap></pixmap>
<params>4</params>
</func>
<func>
<name>dynamicNKZF</name>
<comment>(damping_D0 R_b nu_c)</comment>
<label>dynamic Noakes-Kalvius ZF</label>
<pixmap></pixmap>
<params>3</params>
</func>
<func>
<name>dynamicNKTF</name>
<comment>(phase frequency damping_D0 R_b nu_c)</comment>
<label>dynamic Noakes-Kalvius TF</label>
<pixmap></pixmap>
<params>5</params>
</func>
<func>
<name>polynom</name>
<comment>(tshift p0 p1 ... pn)</comment>
<label>polynom</label>
<pixmap>polynom.png</pixmap>
<params>4</params>
</func>
<func>
<name>userFcn</name>
<comment></comment>
<label>user function</label>
<pixmap></pixmap>
<params>0</params>
</func>
</theory_functions>
</musredit_startup>