add musrWiz to musredit_qt5 directly in musrfit.

This commit is contained in:
2017-03-25 12:34:14 +01:00
parent f8503db8b8
commit 377c2acc02
27 changed files with 6791 additions and 0 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,202 @@
/****************************************************************************
PAdmin.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
*****************************************************************************/
/***************************************************************************
* Copyright (C) 2010-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PADMIN_H_
#define _PADMIN_H_
#include <QObject>
#include <QVector>
#include <QtXml>
#include "PTheoTemplate.h"
#include "PMusrfitFunc.h"
#include "PInstrumentDef.h"
class PAdmin;
//---------------------------------------------------------------------------
class PFuncXMLParser : public QXmlDefaultHandler
{
public:
PFuncXMLParser(PAdmin*);
virtual ~PFuncXMLParser() {}
private:
enum EFuncKeyWords {eEmpty,
eTemplateName, eTemplateTheo, eTemplateFunc,
eName, eAbbrv, eNoOfParam, eParam,
eParamName, eParamValue, eParamMap};
bool startDocument();
bool startElement(const QString&, const QString&, const QString& ,
const QXmlAttributes& qAttr);
bool endElement( const QString&, const QString&, const QString& );
bool characters(const QString&);
bool endDocument();
bool warning( const QXmlParseException & exception );
bool error( const QXmlParseException & exception );
bool fatalError( const QXmlParseException & exception );
EFuncKeyWords fKeyWord; ///< key word tag to know how to handle the content
PAdmin *fAdmin; ///< a pointer to the main administration class object
PTheoTemplate fTheoTemplate;
PMusrfitFunc fFunc;
PFuncParam fParam;
};
//---------------------------------------------------------------------------
class PInstrumentDefXMLParser : public QXmlDefaultHandler
{
public:
PInstrumentDefXMLParser(PAdmin*);
virtual ~PInstrumentDefXMLParser() {}
private:
enum EKeyWords {eEmpty, eInstitute, eInstrument, eRunNameTemplate,
eBeamline, eDataFileFormat, eTf, eZf, eLf,
eNoOfDetectors, eFgbOffset, eLgb, eBkgRange,
eLogicDetector};
bool startDocument();
bool startElement(const QString&, const QString&, const QString& ,
const QXmlAttributes& qAttr);
bool endElement( const QString&, const QString&, const QString& );
bool characters(const QString&);
bool endDocument();
bool warning( const QXmlParseException & exception );
bool error( const QXmlParseException & exception );
bool fatalError( const QXmlParseException & exception );
EKeyWords fKeyWord; ///< key word tag to know how to handle the content
PAdmin *fAdmin; ///< a pointer to the main administration class object
QString fInstituteName;
PInstrument *fInstrument;
PSetup *fSetup;
};
//---------------------------------------------------------------------------
class PMusrWizDefault
{
public:
PMusrWizDefault();
~PMusrWizDefault() {}
QString getInstitute() { return fInstitute; }
QString getInstrument() { return fInstrument; }
QString getFitType() { return fFitType; }
void setInstitute(QString str) { fInstitute = str; }
void setInstrument(QString str) { fInstrument = str; }
void setFitType(QString str) { fFitType = str; }
private:
QString fInstitute;
QString fInstrument;
QString fFitType;
};
//---------------------------------------------------------------------------
class PMusrWizDefaultXMLParser : public QXmlDefaultHandler
{
public:
PMusrWizDefaultXMLParser(PAdmin*);
virtual ~PMusrWizDefaultXMLParser() {}
private:
enum EKeyWords {eEmpty, eInstitute, eInstrument, eFitType};
bool startDocument();
bool startElement(const QString&, const QString&, const QString& ,
const QXmlAttributes& );
bool endElement( const QString&, const QString&, const QString& );
bool characters(const QString&);
bool endDocument();
bool warning( const QXmlParseException & exception );
bool error( const QXmlParseException & exception );
bool fatalError( const QXmlParseException & exception );
EKeyWords fKeyWord; ///< key word tag to know how to handle the content
PAdmin *fAdmin; ///< a pointer to the main administration class object
PMusrWizDefault fDefault;
};
//---------------------------------------------------------------------------
class PAdmin : public QObject
{
public:
PAdmin();
~PAdmin() {}
bool IsValid() { return fValid; }
void dump(int tag);
QString getDefaultInstitute() { return fDefault.getInstitute(); }
QString getDefaultInstrument() { return fDefault.getInstrument(); }
QString getDefaultFitType() { return fDefault.getFitType(); }
QStringList getInstituteList();
QStringList getInstrumentList(QString institute);
PInstrument *getInstrument(QString institute, QString instrument);
int getTheoTemplateSize() { return fTheoTemplate.size(); }
QVector<PTheoTemplate> getTheoTemplates() { return fTheoTemplate; }
PTheoTemplate getTheoTemplate(int idx);
int getMusrfitFuncSize() { return fMusrfitFunc.size(); }
QVector<PMusrfitFunc> getMusrfitFunc() { return fMusrfitFunc; }
PMusrfitFunc getMusrfitFunc(QString name);
protected:
int addInstrument(QString institute, PInstrument instrument);
private:
friend class PFuncXMLParser;
friend class PInstrumentDefXMLParser;
friend class PMusrWizDefaultXMLParser;
bool fValid;
PMusrWizDefault fDefault;
QVector<PInstitute> fInstitute;
QVector<PTheoTemplate> fTheoTemplate;
QVector<PMusrfitFunc> fMusrfitFunc;
int loadMusrWizDefault(QString fln);
int loadMusrfitFunc(QString fln);
int loadInstrumentDef(QString fln);
};
#endif // _PADMIN_H_

View File

@ -0,0 +1,153 @@
/***************************************************************************
PInstrumentDef.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "PInstrumentDef.h"
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
*
*/
PSetup::PSetup()
{
fName = "";
fNoOfDetectors = -1;
fFgbOffset = -1;
fLgb = -1;
fBkgStartBin = -1;
fBkgEndBin = -1;
}
//--------------------------------------------------------------------------
/**
* @brief PSetup::getDetector
* @param idx
* @return
*/
PDetector* PSetup::getDetector(int idx)
{
if (idx >= fLogicDetectors.size())
return 0;
return &fLogicDetectors[idx];
}
//--------------------------------------------------------------------------
/**
* @brief PSetup::getAsymDetector
* @param idx
* @return
*/
PDetector* PSetup::getAsymDetector(int idx)
{
if (idx >= fLogicAsymDetectors.size())
return 0;
return &fLogicAsymDetectors[idx];
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
*
*/
PInstrument::PInstrument()
{
fRunNameTemplate = "";
fBeamline = "";
fDataFileFormat = "";
fInstitue = "";
fName = "";
}
//--------------------------------------------------------------------------
/**
* @brief PInstrument::getZFSetup
* @param name
* @return
*/
PSetup* PInstrument::getZFSetup(QString name)
{
for (int i=0; i<fZF.size(); i++) {
if (fZF[i].getName() == name)
return &fZF[i];
}
return 0;
}
//--------------------------------------------------------------------------
/**
* @brief PInstrument::getTFSetup
* @param name
* @return
*/
PSetup* PInstrument::getTFSetup(QString name)
{
for (int i=0; i<fTF.size(); i++) {
if (fTF[i].getName() == name)
return &fTF[i];
}
return 0;
}
//--------------------------------------------------------------------------
/**
* @brief PInstrument::getLFSetup
* @param name
* @return
*/
PSetup* PInstrument::getLFSetup(QString name)
{
for (int i=0; i<fLF.size(); i++) {
if (fLF[i].getName() == name)
return &fLF[i];
}
return 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/**
*
*/
PInstitute::PInstitute()
{
fName = "";
}
//--------------------------------------------------------------------------
/**
*
*/
PInstrument *PInstitute::getInstrument(QString name)
{
for (int i=0; i<fInstrument.size(); i++) {
if (fInstrument[i].getName() == name)
return &fInstrument[i];
}
return 0;
}

View File

@ -0,0 +1,163 @@
/***************************************************************************
PInstrumentDef.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PINSTRUMENTDEF_H_
#define _PINSTRUMENTDEF_H_
#include <QString>
#include <QVector>
//---------------------------------------------------------------------------
class PDetector
{
public:
PDetector() {}
~PDetector() {}
void setName(QString str) { fName = str; }
void setRelGeomPhase(double phase) { fRelGeomPhase = phase; }
void setForwards(QVector<int> num) { fForward = num; }
void setBackwards(QVector<int> num) { fBackward = num; }
void setAlpha(double alpha) { fAlpha = alpha; }
QString getName() { return fName; }
double getRelGeomPhase() { return fRelGeomPhase; }
QVector<int> getForwards() { return fForward; }
QVector<int> getBackwards() { return fBackward; }
double getAlpha() { return fAlpha; }
private:
QString fName;
QVector<int> fForward;
QVector<int> fBackward;
double fAlpha;
double fRelGeomPhase;
};
//---------------------------------------------------------------------------
class PSetup
{
public:
PSetup();
~PSetup() {}
void setName(QString str) { fName = str; }
void setNoOfDetectors(int no) { fNoOfDetectors = no; }
void setFgbOffset(int fgbOffset) { fFgbOffset = fgbOffset; }
void setLgb(int lgb) { fLgb = lgb; }
void setBkgRange(int start, int end) { fBkgStartBin = start; fBkgEndBin = end; }
void addDetector(PDetector detector) { fLogicDetectors.push_back(detector); }
void addAsymDetector(PDetector detector) { fLogicAsymDetectors.push_back(detector); }
QString getName() { return fName; }
int getNoOfDetectors() { return fNoOfDetectors; }
int getNoOfLogicalDetectors() { return fLogicDetectors.size(); }
int getNoOfLogicalAsymDetectors() { return fLogicAsymDetectors.size(); }
int getFgbOffset() { return fFgbOffset; }
int getLgb() { return fLgb; }
int getBkgStartBin() { return fBkgStartBin; }
int getBkgEndBin() { return fBkgEndBin; }
PDetector* getDetector(int idx);
PDetector* getAsymDetector(int idx);
private:
QString fName;
int fNoOfDetectors;
int fFgbOffset;
int fLgb;
int fBkgStartBin;
int fBkgEndBin;
QVector<PDetector> fLogicDetectors;
QVector<PDetector> fLogicAsymDetectors;
};
//---------------------------------------------------------------------------
class PInstrument
{
public:
PInstrument();
~PInstrument() {}
void setRunNameTemplate(QString str) { fRunNameTemplate = str; }
void setBeamline(QString str) { fBeamline = str; }
void setDataFileFormat(QString str) { fDataFileFormat = str; }
void setInstitue(QString str) { fInstitue = str; }
void setName(QString str) { fName = str; }
void addSetupZF(PSetup zf) { fZF.push_back(zf); }
void addSetupTF(PSetup tf) { fTF.push_back(tf); }
void addSetupLF(PSetup lf) { fLF.push_back(lf); }
QString getRunNameTemplate() { return fRunNameTemplate; }
QString getBeamline() { return fBeamline; }
QString getDataFileFormat() { return fDataFileFormat; }
QString getInstitute() { return fInstitue; }
QString getName() { return fName; }
QVector<PSetup> getZFSetups() { return fZF; }
QVector<PSetup> getTFSetups() { return fTF; }
QVector<PSetup> getLFSetups() { return fLF; }
PSetup* getZFSetup(QString name="");
PSetup* getTFSetup(QString name="");
PSetup* getLFSetup(QString name="");
private:
QString fRunNameTemplate;
QString fBeamline;
QString fDataFileFormat;
QString fInstitue;
QString fName;
QVector<PSetup> fZF;
QVector<PSetup> fTF;
QVector<PSetup> fLF;
};
//---------------------------------------------------------------------------
class PInstitute
{
public:
PInstitute();
~PInstitute() {}
void setName(QString str) { fName = str; }
void addInstrument(PInstrument instrument) { fInstrument.push_back(instrument); }
QString getName() { return fName; }
QVector<PInstrument> getInstruments() { return fInstrument; }
PInstrument *getInstrument(QString name);
private:
QString fName;
QVector<PInstrument> fInstrument;
};
#endif // _PINSTRUMENTDEF_H_

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,412 @@
/***************************************************************************
PMusrWiz.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PMUSRWIZ_
#define _PMUSRWIZ_
#include <QString>
#include <QStringList>
#include <QWizard>
#include <QWizardPage>
#include <QObject>
#include <QLineEdit>
#include <QComboBox>
#include <QCheckBox>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QLabel>
#include <QFormLayout>
#include "musrWiz.h"
#include "PAdmin.h"
#define INST_UNDEF 0
#define INST_PSI 1
#define INST_TRIUMF 2
#define INST_ISIS 3
#define INST_JPARC 4
#define FIT_TYPE_UNDEF 0
#define FIT_TYPE_SINGLE_HISTO 1
#define FIT_TYPE_SINGLE_HISTO_RRF 2
#define FIT_TYPE_ASYMMETRY 3
#define FIT_TYPE_ASYMMETRY_RRF 4
#define FIT_TYPE_MU_MINUS 5
#define FIT_TYPE_NONE_MUSR 6
#define MEASURE_UNDEF 0
#define MEASURE_ZF 1
#define MEASURE_TF 2
#define MEASURE_LF 3
#define T0_FROM_FILE 0
#define T0_FROM_MUSR_T0 1
#define T0_ENTER_WIZ 2
//-------------------------------------------------------------------
typedef struct {
QLineEdit *paramName;
QLineEdit *paramVal;
QLineEdit *paramStep;
QLineEdit *paramBoundLow;
QLineEdit *paramBoundHigh;
} PParamGui;
//-------------------------------------------------------------------
class PMsrData
{
public:
PMsrData();
~PMsrData();
void clearParam() { fParam.clear(); }
void clearFunc() { fFunc.clear(); }
void clearMap() { fMap.clear(); }
void setMsrPathName(QString str) { fMsrPathName = str; }
void setMsrFileName(QString fileName) { fMsrFileName = fileName; }
void appendMsrFileName(QString str) { fMsrFileName += str; }
void setYear(QString year) { fYear = year; }
void setRunNumber(int runNo) { fRunNumber = runNo; }
void setInstitute(QString institute) { fInstitute = institute; }
void setInstrument(QString instrument) { fInstrument = instrument; }
void setSetup(QString setup) { fSetup = setup; }
void setFitType(int fitType) { fFitType = fitType; }
void setTypeOfMeasurement(int type) { fTypeOfMeasurement = type; }
void setT0Tag(int tag) { fT0Tag = tag; }
void setT0(int t0) { fT0 = t0; }
void setTheory(QString str) { fTheo = str; }
void setParam(QVector<PParam> param) { fParam = param; }
void setParam(int idx, PParam param);
void appendParam(QVector<PParam> param);
void setMap(QVector<PParam> map) { fMap = map; }
void setMap(int idx, PParam map);
void appendMap(QVector<PParam> map);
void setMapTemplateName(int idx, QString name);
void setFunc(int funNo, QString str="??");
void setPacking(int pack) { fPacking = abs(pack); }
void setFitStart(double start) { fFitStart = start; }
void setFitEnd(double end) { fFitEnd = end; }
void setCmd(QString cmd) { fCommands = cmd; }
void setTemplate(int templ) { fTemplate = templ; }
void setTemplate(PTheoTemplate templ) { fTheoTempl = templ; }
QString getMsrPathName() { return fMsrPathName; }
QString getMsrFileName() { return fMsrFileName; }
QString getYear() { return fYear; }
int getRunNumber() { return fRunNumber; }
QString getInstitute() { return fInstitute; }
QString getInstrument() { return fInstrument; }
QString getSetup() { return fSetup; }
int getFitType() { return fFitType; }
QString getFitTypeString();
int getTypeOfMeasurement() { return fTypeOfMeasurement; }
int getT0Tag() { return fT0Tag; }
int getT0() { return fT0; }
QString getTheory() { return fTheo; }
int getNoOfParam() { return fParam.size(); }
PParam getParam(int idx);
int getNoOfMap() { return fMap.size(); }
PParam getMap(int idx);
int getNoOfFunc() { return fFunc.size(); }
int getFuncNo(int idx);
bool isPresent(const QString funStr);
QString getFunc(int funNo);
QString getFuncAll();
int getPacking() { return fPacking; }
double getFitStart() { return fFitStart; }
double getFitEnd() { return fFitEnd; }
QString getCmd() { return fCommands; }
bool isTemplate() { return (fTemplate == -1) ? false : true; }
PTheoTemplate getTemplate() { return fTheoTempl; }
void sort(QString whichVec);
void removeFunc(QVector<int> &funList);
private:
int fTemplate;
QString fMsrPathName;
QString fMsrFileName;
int fRunNumber;
QString fInstitute;
QString fInstrument;
QString fSetup;
int fFitType;
int fTypeOfMeasurement;
int fT0Tag;
int fT0;
QString fYear;
int fPacking;
double fFitStart;
double fFitEnd;
QString fCommands;
QString fTheo;
PTheoTemplate fTheoTempl;
QVector<PParam> fParam;
QVector<PFunc> fFunc;
QVector<PParam> fMap;
};
//-------------------------------------------------------------------
class PShowTheo : public QDialog
{
public:
PShowTheo(QString theo, QString func = QString(""),
QWidget *parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
};
//-------------------------------------------------------------------
class PIntroPage : public QWizardPage
{
Q_OBJECT
public:
PIntroPage(PAdmin *admin, PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
bool validatePage();
private slots:
void handleInstituteChanged(int idx);
void handleFitType(int idx);
void checkSetup(int idx);
void handleT0(int idx);
private:
PAdmin *fAdmin;
PMsrData *fMsrData;
QLineEdit *fMsrFileName;
QLineEdit *fYear;
QLineEdit *fRunNumber;
QComboBox *fInstitute;
QComboBox *fInstrument;
QComboBox *fFitType;
QComboBox *fMeasurementType;
QComboBox *fT0;
};
//-------------------------------------------------------------------
class PTheoPage : public QWizardPage
{
Q_OBJECT
public:
PTheoPage(PAdmin *admin, PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
void initializePage();
bool validatePage();
private slots:
void templateState(int);
void clearAll();
void addTheory();
void checkTheory();
private:
PAdmin *fAdmin;
PMsrData *fMsrData;
bool fTheoValid;
bool fHaveMap;
bool fHaveFunc;
int fTheoBlockNo;
QVector<PParam> fParamList;
QVector<PParam> fMapList;
QVector<int> fFunList;
QPlainTextEdit *fTheo;
QCheckBox *fEditTemplate;
QPushButton *fClearAll;
QComboBox *fTheoSelect;
QPushButton *fTheoAdd;
QPushButton *fCheckTheo;
QString getTheoryFunction(int idx);
bool analyzeTokens(QString str, int noOfTokens);
void dealWithParam(QString theo, int paramNo, int paramIdx);
void dealWithMap(QString theo, int mapNo, int paramIdx);
void dealWithFun(int funNo);
};
//-------------------------------------------------------------------
class PFuncPage : public QWizardPage
{
Q_OBJECT
public:
PFuncPage(PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
void initializePage();
void cleanupPage();
bool validatePage();
private slots:
void showTheo();
private:
PMsrData *fMsrData;
QFormLayout *fMapPageLayout;
QPlainTextEdit *fFunc;
QPushButton *fShowTheo;
int getFuncNo(const QString str);
};
//-------------------------------------------------------------------
class PMapPage : public QWizardPage
{
Q_OBJECT
public:
PMapPage(PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
void initializePage();
bool validatePage();
private slots:
void showTheo();
private:
PMsrData *fMsrData;
QFormLayout *fMapPageLayout;
QVector<PParamGui> fMapGuiVec;
QPushButton *fShowTheo;
};
//-------------------------------------------------------------------
class PParamPage : public QWizardPage
{
Q_OBJECT
public:
PParamPage(PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
void initializePage();
bool validatePage();
private slots:
void showTheo();
private:
PMsrData *fMsrData;
QFormLayout *fParameterPageLayout;
QVector<PParamGui> fParamGuiVec;
QPushButton *fShowTheo;
};
//-------------------------------------------------------------------
class PFitInfoPage : public QWizardPage
{
Q_OBJECT
public:
PFitInfoPage(PMsrData *data, QWidget *parent=0);
int nextId() const Q_DECL_OVERRIDE;
void initializePage();
bool validatePage();
private:
PMsrData *fMsrData;
QLineEdit *fFitRangeStart;
QLineEdit *fFitRangeEnd;
QLineEdit *fPacking;
QPlainTextEdit *fCommands;
};
//-------------------------------------------------------------------
class PConclusionPage : public QWizardPage
{
Q_OBJECT
public:
PConclusionPage(PAdmin *admin, PMsrData *data, QString *msrFilePath, QWidget *parent=0);
private slots:
void saveAsMsrFile();
void saveAsTemplate();
private:
QString *fMsrFilePath;
PAdmin *fAdmin;
PMsrData *fMsrData;
QPushButton *fSaveAsMsrFile;
QPushButton *fSaveAsTemplate;
};
//-------------------------------------------------------------------
class PMusrWiz : public QWizard
{
Q_OBJECT
friend class PIntroPage;
friend class PTheoPage;
friend class PMapPage;
friend class PFuncPage;
friend class PParamPage;
friend class PFitInfoPage;
public:
PMusrWiz(QWidget *parent=Q_NULLPTR);
PMusrWiz(PAdmin *admin, PMsrData *msrData, QWidget *parent=Q_NULLPTR);
virtual ~PMusrWiz();
private slots:
virtual int writeMsrFile(int result);
virtual void help();
protected:
enum {ePageIntro, ePageTheory, ePageMaps, ePageFunctions, ePageParameters, ePageFitInfo, ePageConclusion};
private:
QString fMsrFilePath;
PAdmin *fAdmin;
PMsrData *fMsrData;
QString getRunName(PInstrument *instru);
virtual int writeMsrFileSingleHisto();
virtual int writeMsrFileAsymmetry();
};
#endif // _PMUSRWIZ_

View File

@ -0,0 +1,56 @@
/***************************************************************************
PMusrfitFunc.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "PMusrfitFunc.h"
//---------------------------------------------------------------------------
/**
*
*/
void PMusrfitFunc::initFunc()
{
fName = "UnDef";
fAbbrv = "UnDef";
fNoOfParam = -1;
fParam.clear();
}
//---------------------------------------------------------------------------
/**
*
*/
PFuncParam PMusrfitFunc::getFuncParam(int idx)
{
PFuncParam param;
if ((idx >= 0) && (idx < fParam.size()))
param = fParam[idx];
return param;
}

View File

@ -0,0 +1,84 @@
/***************************************************************************
PMusrfitFunc.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PMUSRFITFUNC_H_
#define _PMUSRFITFUNC_H_
#include <QString>
#include <QVector>
//---------------------------------------------------------------------------
class PFuncParam {
public:
PFuncParam() { initParam(); }
~PFuncParam() {}
void initParam() { fName = "UnDef"; fValue = 0.0; fMap = false; }
void setParamName(QString name) { fName = name; }
void setParamValue(double dval) { fValue = dval; }
void setParamMap(bool isMap) { fMap = isMap; }
QString getParamName() { return fName; }
double getParamValue() { return fValue; }
bool isMap() { return fMap; }
private:
QString fName;
double fValue;
bool fMap;
};
//---------------------------------------------------------------------------
class PMusrfitFunc {
public:
PMusrfitFunc() { initFunc(); }
~PMusrfitFunc() {}
void initFunc();
void setName(QString name) { fName = name; }
void setAbbrv(QString abbrv) { fAbbrv = abbrv; }
void setNoOfParam(int ival) { fNoOfParam = ival; }
void addFuncParam(PFuncParam param) { fParam.push_back(param); }
QString getName() { return fName; }
QString getAbbrv() { return fAbbrv; }
int getNoOfParam() { return fNoOfParam; }
PFuncParam getFuncParam(int idx);
QVector<PFuncParam> *getFuncParams() { return &fParam; }
private:
QString fName;
QString fAbbrv;
int fNoOfParam;
QVector<PFuncParam> fParam;
};
#endif // _PMUSRFITFUNC_H_

View File

@ -0,0 +1,156 @@
/***************************************************************************
PTheoTemplate.cpp
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "PTheoTemplate.h"
//---------------------------------------------------------------------------
/**
*
*/
void PTheoTemplate::init()
{
fPreDefName = QString("");
fTheory = QString("");
fParam.clear();
fFunc.clear();
fMap.clear();
}
//---------------------------------------------------------------------------
/**
*
*/
QString PTheoTemplate::getFunc(int idx)
{
if ((idx < 0) || (idx >= fFunc.size()))
return QString("");
return fFunc[idx];
}
//---------------------------------------------------------------------------
/**
*
*/
int PTheoTemplate::getFuncNo(int idx)
{
if ((idx < 0) || (idx >= fFunc.size()))
return -1;
QString funStr = fFunc[idx];
int idxEnd = funStr.indexOf("=");
funStr.remove(idxEnd, funStr.length()-idxEnd);
funStr.remove(0,3);
bool ok;
int ival = funStr.toInt(&ok);
if (!ok)
return -1;
return ival;
}
//---------------------------------------------------------------------------
/**
*
*/
PParam PTheoTemplate::getMap(int idx)
{
PParam map;
if ((idx < 0) || (idx >= fMap.size()))
return map;
return fMap[idx];
}
//---------------------------------------------------------------------------
/**
*
*/
PParam PTheoTemplate::getParam(int idx)
{
PParam param;
if ((idx < 0) || (idx >= fParam.size()))
return param;
return fParam[idx];
}
//---------------------------------------------------------------------------
/**
*
*/
void PTheoTemplate::appendFunc(QString str)
{
// for now just push function string. In the future it might be
// wise to check if the function is already present.
fFunc.push_back(str);
}
//---------------------------------------------------------------------------
/**
*
*/
void PTheoTemplate::appendMap(PParam map)
{
bool found = false;
for (int i=0; i<fMap.size(); i++) {
if (fMap[i].getNumber() == map.getNumber()) {
found = true;
break;
}
}
if (!found)
fMap.push_back(map);
}
//---------------------------------------------------------------------------
/**
*
*/
void PTheoTemplate::appendParam(PParam param)
{
bool found = false;
for (int i=0; i<fParam.size(); i++) {
if (fParam[i].getNumber() == param.getNumber()) {
found = true;
break;
}
}
if (!found)
fParam.push_back(param);
}
//---------------------------------------------------------------------------
// END
//---------------------------------------------------------------------------

View File

@ -0,0 +1,69 @@
/***************************************************************************
PTheoTemplate.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _PTHEOTEMPLATE_H_
#define _PTHEOTEMPLATE_H_
#include <QString>
#include <QVector>
#include "musrWiz.h"
class PTheoTemplate {
public:
PTheoTemplate() { init(); }
~PTheoTemplate() {}
void init();
QString getName() { return fPreDefName; }
QString getTheory() { return fTheory; }
int getNoOfFunc() { return fFunc.size(); }
QString getFunc(int idx);
int getFuncNo(int idx);
int getNoOfMap() { return fMap.size(); }
PParam getMap(int idx);
int getNoOfParam() { return fParam.size(); }
PParam getParam(int idx);
void setName(QString str) { fPreDefName = str; }
void setTheory(QString str) { fTheory = str; }
void appendFunc(QString str);
void appendParam(PParam param);
void appendMap(PParam map);
private:
QString fPreDefName;
QString fTheory;
QVector<PParam> fParam;
QVector<QString> fFunc;
QVector<PParam> fMap;
};
#endif // _PTHEOTEMPLATE_H_

View File

@ -0,0 +1 @@
A wizard to create msr-files for a given instrument from scratch

View File

@ -0,0 +1,502 @@
<?xml version="1.0" encoding="UTF-8"?>
<musrfit-functions>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- theory function templates -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<theo_template>
<pre_def_name>T: 1 [exp x cos](TF)</pre_def_name>
<theory>a 1\nse 2\ntf fun1 4</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy" value="0.2" step="0.02"/>
<template_param no="2" name="Lambda" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq" value="100.0" step="1.0"/>
</theo_template>
<theo_template>
<pre_def_name>T: 2 [exp x cos](TF)</pre_def_name>
<theory>a 1\nse 2\ntf fun1 4\n+\na 5\nse 6\ntf fun1 7</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy_0" value="0.1" step="0.02"/>
<template_param no="2" name="Lambda_0" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq_0" value="100.0" step="1.0"/>
<template_param no="5" name="Asy_1" value="0.1" step="0.02"/>
<template_param no="6" name="Lambda_1" value="0.5" step="0.02"/>
<template_param no="7" name="Frq_1" value="110.0" step="1.0"/>
</theo_template>
<theo_template>
<pre_def_name>T: 3 [exp x cos](TF)</pre_def_name>
<theory>a 1\nse 2\ntf fun1 4\n+\na 5\nse 6\ntf fun1 7\n+\na 8\nse 9\ntf fun1 10</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy_0" value="0.1" step="0.02"/>
<template_param no="2" name="Lambda_0" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq_0" value="100.0" step="1.0"/>
<template_param no="5" name="Asy_1" value="0.1" step="0.02"/>
<template_param no="6" name="Lambda_1" value="0.5" step="0.1"/>
<template_param no="7" name="Frq_1" value="110.0" step="1.0"/>
<template_param no="8" name="Asy_2" value="0.1" step="0.02"/>
<template_param no="9" name="Lambda_2" value="1.5" step="0.1"/>
<template_param no="10" name="Frq_2" value="120.0" step="1.0"/>
</theo_template>
<theo_template>
<pre_def_name>T: 1 [gauss x cos](TF)</pre_def_name>
<theory>a 1\nsg 2\ntf fun1 4</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy" value="0.2" step="0.02"/>
<template_param no="2" name="Sigma" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq" value="100.0" step="1.0"/>
</theo_template>
<theo_template>
<pre_def_name>T: 2 [gauss x cos](TF)</pre_def_name>
<theory>a 1\nsg 2\ntf fun1 4\n+\na 5\nsg 6\ntf fun1 7</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy_0" value="0.1" step="0.02"/>
<template_param no="2" name="Sigma_0" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq_0" value="100.0" step="1.0"/>
<template_param no="5" name="Asy_1" value="0.1" step="0.02"/>
<template_param no="6" name="Sigma_1" value="0.5" step="0.02"/>
<template_param no="7" name="Frq_1" value="110.0" step="1.0"/>
</theo_template>
<theo_template>
<pre_def_name>T: 3 [gauss x cos](TF)</pre_def_name>
<theory>a 1\nsg 2\ntf fun1 4\n+\na 5\nsg 6\ntf fun1 7\n+\na 8\nsg 9\ntf fun1 10</theory>
<theo_fun>fun1=par3+map1</theo_fun>
<theo_map no="1" name="RelPh"/>
<template_param no="1" name="Asy_0" value="0.1" step="0.02"/>
<template_param no="2" name="Sigma_0" value="0.5" step="0.02"/>
<template_param no="3" name="Ph" value="0.0" step="10.0"/>
<template_param no="4" name="Frq_0" value="100.0" step="1.0"/>
<template_param no="5" name="Asy_1" value="0.1" step="0.02"/>
<template_param no="6" name="Sigma_1" value="0.5" step="0.1"/>
<template_param no="7" name="Frq_1" value="110.0" step="1.0"/>
<template_param no="8" name="Asy_2" value="0.1" step="0.02"/>
<template_param no="9" name="Sigma_2" value="1.5" step="0.1"/>
<template_param no="10" name="Frq_2" value="120.0" step="1.0"/>
</theo_template>
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- List of all predefined theory functions -->
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Asymmetry -->
<func>
<name>asymmetry</name>
<abbrv>a</abbrv>
<no_of_parameters>1</no_of_parameters>
<parameter>
<param_name>Asym</param_name>
<param_value>0.2</param_value>
</parameter>
</func>
<!-- Exp -->
<func>
<name>simplExpo</name>
<abbrv>se</abbrv>
<no_of_parameters>1</no_of_parameters>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.5</param_value>
</parameter>
</func>
<!-- Gaussian -->
<func>
<name>simpleGss</name>
<abbrv>sg</abbrv>
<no_of_parameters>1</no_of_parameters>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.5</param_value>
</parameter>
</func>
<!-- Streteched Exp -->
<func>
<name>generExpo</name>
<abbrv>ge</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Beta</param_name>
<param_value>1.5</param_value>
</parameter>
</func>
<!-- Cos -->
<func>
<name>TFieldCos</name>
<abbrv>tf</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
<param_is_map>y</param_is_map>
</parameter>
<parameter>
<param_name>Freq</param_name>
<param_value>10.0</param_value>
</parameter>
</func>
<!-- internal field -->
<func>
<name>internFld</name>
<abbrv>if</abbrv>
<no_of_parameters>5</no_of_parameters>
<parameter>
<param_name>Weight</param_name>
<param_value>0.66</param_value>
</parameter>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Freq</param_name>
<param_value>10.0</param_value>
</parameter>
<parameter>
<param_name>LambdaT</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>LambdaL</param_name>
<param_value>0.1</param_value>
</parameter>
</func>
<!-- Bessel -->
<func>
<name>Bessel</name>
<abbrv>b</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Freq</param_name>
<param_value>10.0</param_value>
</parameter>
</func>
<!-- internal Bessel -->
<func>
<name>internBsl</name>
<abbrv>ib</abbrv>
<no_of_parameters>5</no_of_parameters>
<parameter>
<param_name>Weight</param_name>
<param_value>0.66</param_value>
</parameter>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Freq</param_name>
<param_value>10.0</param_value>
</parameter>
<parameter>
<param_name>LambdaT</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>LambdaL</param_name>
<param_value>0.1</param_value>
</parameter>
</func>
<!-- GKT ZF -->
<func>
<name>statGssKT</name>
<abbrv>stg</abbrv>
<no_of_parameters>1</no_of_parameters>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- GKT LF -->
<func>
<name>statGssKTLF</name>
<abbrv>sgktlf</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Hopp</param_name>
<param_value>0.1</param_value>
</parameter>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- GKT LF dynamic -->
<func>
<name>dynGssKTLF</name>
<abbrv>dgktlf</abbrv>
<no_of_parameters>3</no_of_parameters>
<parameter>
<param_name>Freq</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.3</param_value>
</parameter>
<parameter>
<param_name>Gamma</param_name>
<param_value>0.5</param_value>
</parameter>
</func>
<!-- expKT ZF -->
<func>
<name>statExpKT</name>
<abbrv>sekt</abbrv>
<no_of_parameters>1</no_of_parameters>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- expKT LF -->
<func>
<name>statExpKTLF</name>
<abbrv>sektlf</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Hopp</param_name>
<param_value>0.1</param_value>
</parameter>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- expKT LF dynamic -->
<func>
<name>dynExpKTLF</name>
<abbrv>dektlf</abbrv>
<no_of_parameters>3</no_of_parameters>
<parameter>
<param_name>Freq</param_name>
<param_value>0.1</param_value>
</parameter>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.3</param_value>
</parameter>
<parameter>
<param_name>Gamma</param_name>
<param_value>0.5</param_value>
</parameter>
</func>
<!-- KT Exp+Gaussian ZF -->
<func>
<name>combiLGKT</name>
<abbrv>lgkt</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.2</param_value>
</parameter>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- KT Stretched -->
<func>
<name>strKT</name>
<abbrv>skt</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.3</param_value>
</parameter>
<parameter>
<param_name>Beta</param_name>
<param_value>2.0</param_value>
</parameter>
</func>
<!-- Spin Glass Function -->
<func>
<name>spinGlass</name>
<abbrv>spg</abbrv>
<no_of_parameters>3</no_of_parameters>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.3</param_value>
</parameter>
<parameter>
<param_name>Gamma</param_name>
<param_value>0.1</param_value>
</parameter>
<parameter>
<param_name>q</param_name>
<param_value>0.8</param_value>
</parameter>
</func>
<!-- Random Anisotropy Hyperfine Fiels -->
<func>
<name>rdAnisoHf</name>
<abbrv>rahf</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Nu</param_name>
<param_value>1.5</param_value>
</parameter>
<parameter>
<param_name>Lambda</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- Abragam -->
<func>
<name>abragam</name>
<abbrv>ab</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Sigma</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Gamma</param_name>
<param_value>0.2</param_value>
</parameter>
</func>
<!-- skewed Gaussian -->
<func>
<name>skewedGss</name>
<abbrv>skg</abbrv>
<no_of_parameters>4</no_of_parameters>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Freq</param_name>
<param_value>10.0</param_value>
</parameter>
<parameter>
<param_name>SigmaPlus</param_name>
<param_value>1.1</param_value>
</parameter>
<parameter>
<param_name>SigmaMinus</param_name>
<param_value>0.3</param_value>
</parameter>
</func>
<!-- static Noakes Kalvius ZF function -->
<func>
<name>staticNKZF</name>
<abbrv>snkzf</abbrv>
<no_of_parameters>2</no_of_parameters>
<parameter>
<param_name>Delta</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Rb</param_name>
<param_value>0.2</param_value>
</parameter>
</func>
<!-- static Noakes Kalvius TF function -->
<func>
<name>staticNKTF</name>
<abbrv>snktf</abbrv>
<no_of_parameters>4</no_of_parameters>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Frq</param_name>
<param_value>10.5</param_value>
</parameter>
<parameter>
<param_name>Delta</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Rb</param_name>
<param_value>0.2</param_value>
</parameter>
</func>
<!-- dynamic Noakes Kalvius ZF function -->
<func>
<name>dynamicNKZF</name>
<abbrv>dnkzf</abbrv>
<no_of_parameters>3</no_of_parameters>
<parameter>
<param_name>Delta</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Rb</param_name>
<param_value>0.2</param_value>
</parameter>
<parameter>
<param_name>Hopp</param_name>
<param_value>1.0</param_value>
</parameter>
</func>
<!-- dynamic Noakes Kalvius TF function -->
<func>
<name>dynamicNKTF</name>
<abbrv>dnktf</abbrv>
<no_of_parameters>5</no_of_parameters>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Frq</param_name>
<param_value>10.5</param_value>
</parameter>
<parameter>
<param_name>Delta</param_name>
<param_value>0.5</param_value>
</parameter>
<parameter>
<param_name>Rb</param_name>
<param_value>0.2</param_value>
</parameter>
<parameter>
<param_name>Hopp</param_name>
<param_value>1.0</param_value>
</parameter>
</func>
<!-- mu^- exp TF -->
<func>
<name>muMinusExpTF</name>
<abbrv>mmsetf</abbrv>
<no_of_parameters>6</no_of_parameters>
<parameter>
<param_name>N0</param_name>
<param_value>100.0</param_value>
</parameter>
<parameter>
<param_name>Tau</param_name>
<param_value>1.0</param_value>
</parameter>
<parameter>
<param_name>Asym</param_name>
<param_value>0.08</param_value>
</parameter>
<parameter>
<param_name>Lambda</param_name>
<param_value>1.1</param_value>
</parameter>
<parameter>
<param_name>Ph</param_name>
<param_value>0.0</param_value>
</parameter>
<parameter>
<param_name>Frq</param_name>
<param_value>10.2</param_value>
</parameter>
</func>
</musrfit-functions>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22.000001 22"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="musrWiz-22x22-dark.svg">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333333 : 1"
id="perspective3013" />
<inkscape:perspective
id="perspective3023"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3066"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3088"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.054545"
inkscape:cx="-4.212784"
inkscape:cy="11.88778"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="pt"
inkscape:window-width="2560"
inkscape:window-height="1382"
inkscape:window-x="0"
inkscape:window-y="-3"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
showguides="true"
borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid
type="xygrid"
id="grid5486" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="rect3029"
width="19"
height="3"
x="-741.21826"
y="742.63245"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
rx="0.40000001" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="rect3052"
width="3"
height="3"
x="-720.23883"
y="742.63245"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
rx="0.40000001" />
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 Z"
transform="translate(1.0000003,1036.3622)" />
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056-3"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 Z"
transform="matrix(0.66725213,0,0,0.66725213,7.9964878,1032.6949)" />
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056-3-4"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 Z"
transform="matrix(0.66725213,0,0,0.66725213,14.996488,1044.6949)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22.000001 22"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
sodipodi:docname="musrWiz.svg">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333333 : 1"
id="perspective3013" />
<inkscape:perspective
id="perspective3023"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3066"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3088"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="31.054545"
inkscape:cx="1.6961739"
inkscape:cy="11.952183"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="pt"
inkscape:window-width="2560"
inkscape:window-height="1380"
inkscape:window-x="-4"
inkscape:window-y="-3"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
showguides="true"
borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid
type="xygrid"
id="grid5486" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1030.3622)">
<rect
style="fill:#000000;fill-opacity:1;stroke:none"
id="rect3029"
width="19"
height="3"
x="-741.21826"
y="742.63245"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
rx="0.40000001" />
<rect
style="fill:#000000;fill-opacity:1;stroke:none"
id="rect3052"
width="3"
height="3"
x="-720.23883"
y="742.63245"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
rx="0.40000001" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 z"
transform="translate(1.0000003,1036.3622)" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056-3"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 z"
transform="matrix(0.66725213,0,0,0.66725213,7.9964878,1032.6949)" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056-3-4"
sodipodi:sides="4"
sodipodi:cx="3"
sodipodi:cy="1"
sodipodi:r1="3"
sodipodi:r2="1.2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="M 6,1 C 6,1.2312754 4.0120646,1.6849918 3.8485282,1.8485282 3.6849918,2.0120646 3.2312754,4 3,4 2.7687246,4 2.3150082,2.0120646 2.1514718,1.8485282 1.9879354,1.6849918 0,1.2312754 0,1 0,0.7687246 1.9879354,0.31500824 2.1514718,0.15147183 2.3150082,-0.01206457 2.7687246,-2 3,-2 3.2312754,-2 3.6849918,-0.01206458 3.8485282,0.15147183 4.0120646,0.31500823 6,0.7687246 6,1 z"
transform="matrix(0.66725213,0,0,0.66725213,14.996488,1044.6949)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="32"
viewBox="0 0 32.000001 32"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="musrWiz-32x32-dark.svg">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333333 : 1"
id="perspective3013" />
<inkscape:perspective
id="perspective3023"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3066"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3088"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="26.6875"
inkscape:cx="2.529274"
inkscape:cy="16.822768"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="pt"
inkscape:window-width="2560"
inkscape:window-height="1382"
inkscape:window-x="0"
inkscape:window-y="-3"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
showguides="true"
borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid
type="xygrid"
id="grid5486" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1020.3622)">
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056"
sodipodi:sides="4"
sodipodi:cx="6"
sodipodi:cy="1029.3622"
sodipodi:r1="4"
sodipodi:r2="2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 10,1029.3622 c 0,0.2947 -2.3773843,1.2058 -2.5857864,1.4142 -0.2084022,0.2084 -1.1194884,2.5858 -1.4142136,2.5858 -0.2947252,0 -1.2058114,-2.3774 -1.4142136,-2.5858 C 4.3773843,1030.568 2,1029.6569 2,1029.3622 c 0,-0.2947 2.3773843,-1.2058 2.5857864,-1.4142 0.2084022,-0.2084 1.1194884,-2.5858 1.4142136,-2.5858 0.2947252,0 1.2058114,2.3774 1.4142136,2.5858 C 7.6226157,1028.1564 10,1029.0675 10,1029.3622 Z" />
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056-3"
sodipodi:sides="4"
sodipodi:cx="15"
sodipodi:cy="1024.3622"
sodipodi:r1="3"
sodipodi:r2="1.5"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 18,1024.3622 c 0,0.221 -1.783038,0.9043 -1.93934,1.0606 -0.156301,0.1563 -0.839616,1.9394 -1.06066,1.9394 -0.221044,0 -0.904359,-1.7831 -1.06066,-1.9394 C 13.783038,1025.2665 12,1024.5832 12,1024.3622 c 0,-0.2211 1.783038,-0.9044 1.93934,-1.0607 0.156301,-0.1563 0.839616,-1.9393 1.06066,-1.9393 0.221044,0 0.904359,1.783 1.06066,1.9393 0.156302,0.1563 1.93934,0.8396 1.93934,1.0607 z" />
<path
sodipodi:type="star"
style="fill:#f2f2f2;fill-opacity:1;stroke:none"
id="path3056-3-4"
sodipodi:sides="4"
sodipodi:cx="25"
sodipodi:cy="1042.3622"
sodipodi:r1="3"
sodipodi:r2="1.5"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 28,1042.3622 c 0,0.221 -1.783038,0.9043 -1.93934,1.0606 -0.156301,0.1563 -0.839616,1.9394 -1.06066,1.9394 -0.221044,0 -0.904359,-1.7831 -1.06066,-1.9394 C 23.783038,1043.2665 22,1042.5832 22,1042.3622 c 0,-0.2211 1.783038,-0.9044 1.93934,-1.0607 0.156301,-0.1563 0.839616,-1.9393 1.06066,-1.9393 0.221044,0 0.904359,1.783 1.06066,1.9393 0.156302,0.1563 1.93934,0.8396 1.93934,1.0607 z" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:#f2f2f2;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4712"
width="28"
height="4"
x="-738.83655"
y="742.13245"
rx="0.40000001"
ry="0.40000001"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
<rect
style="fill:#f2f2f2;fill-opacity:1;stroke:#f2f2f2;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4714"
width="4"
height="4"
x="-708.16895"
y="742.12415"
rx="0.40000001"
ry="0.40000001"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

View File

@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="32"
height="32"
viewBox="0 0 32.000001 32"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="musrWiz-32x32.svg">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 11 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="22 : 11 : 1"
inkscape:persp3d-origin="11 : 7.3333333 : 1"
id="perspective3013" />
<inkscape:perspective
id="perspective3023"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3066"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3088"
inkscape:persp3d-origin="0.49999999 : 0.33333333 : 1"
inkscape:vp_z="0.99999999 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="26.6875"
inkscape:cx="9.4051522"
inkscape:cy="16.897709"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="pt"
inkscape:window-width="1920"
inkscape:window-height="1021"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:snap-grids="true"
showguides="true"
borderlayer="true"
inkscape:showpageshadow="false">
<inkscape:grid
type="xygrid"
id="grid5486" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1020.3622)">
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056"
sodipodi:sides="4"
sodipodi:cx="6"
sodipodi:cy="1029.3622"
sodipodi:r1="4"
sodipodi:r2="2"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 10,1029.3622 c 0,0.2947 -2.3773843,1.2058 -2.5857864,1.4142 -0.2084022,0.2084 -1.1194884,2.5858 -1.4142136,2.5858 -0.2947252,0 -1.2058114,-2.3774 -1.4142136,-2.5858 C 4.3773843,1030.568 2,1029.6569 2,1029.3622 c 0,-0.2947 2.3773843,-1.2058 2.5857864,-1.4142 0.2084022,-0.2084 1.1194884,-2.5858 1.4142136,-2.5858 0.2947252,0 1.2058114,2.3774 1.4142136,2.5858 C 7.6226157,1028.1564 10,1029.0675 10,1029.3622 Z" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056-3"
sodipodi:sides="4"
sodipodi:cx="15"
sodipodi:cy="1024.3622"
sodipodi:r1="3"
sodipodi:r2="1.5"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 18,1024.3622 c 0,0.221 -1.783038,0.9043 -1.93934,1.0606 -0.156301,0.1563 -0.839616,1.9394 -1.06066,1.9394 -0.221044,0 -0.904359,-1.7831 -1.06066,-1.9394 C 13.783038,1025.2665 12,1024.5832 12,1024.3622 c 0,-0.2211 1.783038,-0.9044 1.93934,-1.0607 0.156301,-0.1563 0.839616,-1.9393 1.06066,-1.9393 0.221044,0 0.904359,1.783 1.06066,1.9393 0.156302,0.1563 1.93934,0.8396 1.93934,1.0607 z" />
<path
sodipodi:type="star"
style="fill:#000000;fill-opacity:1;stroke:none"
id="path3056-3-4"
sodipodi:sides="4"
sodipodi:cx="25"
sodipodi:cy="1042.3622"
sodipodi:r1="3"
sodipodi:r2="1.5"
sodipodi:arg1="0"
sodipodi:arg2="0.78539816"
inkscape:flatsided="false"
inkscape:rounded="0.1"
inkscape:randomized="0"
d="m 28,1042.3622 c 0,0.221 -1.783038,0.9043 -1.93934,1.0606 -0.156301,0.1563 -0.839616,1.9394 -1.06066,1.9394 -0.221044,0 -0.904359,-1.7831 -1.06066,-1.9394 C 23.783038,1043.2665 22,1042.5832 22,1042.3622 c 0,-0.2211 1.783038,-0.9044 1.93934,-1.0607 0.156301,-0.1563 0.839616,-1.9393 1.06066,-1.9393 0.221044,0 0.904359,1.783 1.06066,1.9393 0.156302,0.1563 1.93934,0.8396 1.93934,1.0607 z" />
<rect
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4712"
width="28"
height="4"
x="-738.83655"
y="742.13245"
rx="0.40000001"
ry="0.40000001"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
<rect
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect4714"
width="4"
height="4"
x="-708.16895"
y="742.12415"
rx="0.40000001"
ry="0.40000001"
transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<instrument_def_isis xmlns="http://www.isis.stfc.ac.uk/instruments/hifi/">
<institute>ISIS</institute>
<!-- +++++++++++++++++++++++++++ H I F I ++++++++++++++++++++++++++++++++++++ -->
<instrument name="HIFI">
<run_name_template>HIFINNNNNNNN</run_name_template>
<beamline>HIFI</beamline>
<data_file_format>NEXUS</data_file_format>
<tf>
<no_of_detectors>128</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>2047</lgb>
<logic_detector name="L" rel_phase="0" forward="5 6 7 8 9 10 11 12 13 52 53 54 55 56 57 58 59 60" note="green"/>
<logic_detector name="R" rel_phase="90" forward="21 22 23 24 25 26 27 28 29 36 37 38 39 40 41 42 43 44" note="green"/>
</tf>
<zf>
<!-- not yet defined -->
</zf>
<lf>
<!-- not yet defined -->
</lf>
</instrument>
</instrument_def_isis>

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<instrument_def_psi xmlns="https://www.psi.ch/lmu/instrumentation">
<institute>PSI</institute>
<!-- +++++++++++++++++++++++++++ H A L 9 5 0 0 ++++++++++++++++++++++++++++++++++++ -->
<instrument name="HAL9500">
<run_name_template>dYYYY/tdc/tdc_hifi_YYYY_NNNNN </run_name_template>
<beamline>PIE3</beamline>
<data_file_format>PSI-MDU</data_file_format>
<tf>
<no_of_detectors>16</no_of_detectors>
<fgb_offset>50</fgb_offset>
<lgb>409500</lgb>
<asym_bkg_range>500 15000</asym_bkg_range>
<logic_detector name="F1" rel_phase="0.0" forward="2"/>
<logic_detector name="F2" rel_phase="45.0" forward="3"/>
<logic_detector name="F3" rel_phase="90.0" forward="4"/>
<logic_detector name="F4" rel_phase="135.0" forward="5"/>
<logic_detector name="F5" rel_phase="180.0" forward="6"/>
<logic_detector name="F6" rel_phase="225.0" forward="7"/>
<logic_detector name="F7" rel_phase="270.0" forward="8"/>
<logic_detector name="F8" rel_phase="315.0" forward="9"/>
<logic_detector name="B1" rel_phase="0.0" forward="10"/>
<logic_detector name="B2" rel_phase="45.0" forward="11"/>
<logic_detector name="B3" rel_phase="90.0" forward="12"/>
<logic_detector name="B4" rel_phase="135.0" forward="13"/>
<logic_detector name="B5" rel_phase="180.0" forward="14"/>
<logic_detector name="B6" rel_phase="225.0" forward="15"/>
<logic_detector name="B7" rel_phase="270.0" forward="16"/>
<logic_detector name="B8" rel_phase="315.0" forward="17"/>
<logic_asym_detector name="F15" rel_phase="0.0" forward="2" backward="6" alpha="1.0"/>
<logic_asym_detector name="F26" rel_phase="45.0" forward="3" backward="7" alpha="1.0"/>
<logic_asym_detector name="F37" rel_phase="90.0" forward="4" backward="8" alpha="1.0"/>
<logic_asym_detector name="F48" rel_phase="135.0" forward="5" backward="9" alpha="1.0"/>
<logic_asym_detector name="B15" rel_phase="0.0" forward="10" backward="14" alpha="1.0"/>
<logic_asym_detector name="B26" rel_phase="45.0" forward="11" backward="15" alpha="1.0"/>
<logic_asym_detector name="B37" rel_phase="90.0" forward="12" backward="16" alpha="1.0"/>
<logic_asym_detector name="B48" rel_phase="135.0" forward="13" backward="17" alpha="1.0"/>
</tf>
<zf>
<!-- not yet defined -->
</zf>
<lf>
<!-- not yet defined -->
</lf>
</instrument>
<!-- +++++++++++++++++++++++++++ L E M +++++++++++++++++++++++++++++++++++++++++++++++++ -->
<instrument name="LEM">
<run_name_template>YYYY/lemYY_his_NNNN</run_name_template>
<beamline>MUE4</beamline>
<data_file_format>MUSR-ROOT</data_file_format>
<tf name="WEW">
<no_of_detectors>8</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_detector name="L" rel_phase="0.0" forward="1 5"/>
<logic_detector name="T" rel_phase="90.0" forward="2 6"/>
<logic_detector name="R" rel_phase="180.0" forward="3 7"/>
<logic_detector name="B" rel_phase="270.0" forward="4 8"/>
<logic_asym_detector name="LR" rel_phase="0.0" forward="1 5" backward="3 7" alpha="1.0"/>
<logic_asym_detector name="TB" rel_phase="90.0" forward="2 6" backward="4 8" alpha="1.0"/>
</tf>
<tf name="Bpar">
<no_of_detectors>4</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_detector name="L" rel_phase="0.0" forward="1 5"/>
<logic_detector name="R" rel_phase="160.0" forward="3 7"/>
<logic_asym_detector name="LR" rel_phase="0.0" forward="1 5" backward="3 7" alpha="1.0"/>
</tf>
<zf name="NPP">
<no_of_detectors>4</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_asym_detector name="LR" rel_phase="0.0" forward="1 5" backward="3 7" alpha="1.0"/>
</zf>
<zf name="PPC">
<no_of_detectors>4</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_asym_detector name="LR" rel_phase="0.0" forward="21 25" backward="23 27" alpha="1.0"/>
</zf>
<lf name="NPP">
<no_of_detectors>8</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_asym_detector name="UD" rel_phase="0.0" forward="1 2 3 4" backward="5 6 7 8" alpha="1.0"/>
</lf>
<lf name="PPC">
<no_of_detectors>8</no_of_detectors>
<fgb_offset>0</fgb_offset>
<lgb>63000</lgb>
<asym_bkg_range>200 1500</asym_bkg_range>
<logic_asym_detector name="UD" rel_phase="0.0" forward="21 22 23 24" backward="25 26 27 28" alpha="1.0"/>
</lf>
</instrument>
<!-- +++++++++++++++++++++++++++ G P S +++++++++++++++++++++++++++++++++++++++++++++++++ -->
<instrument name="GPS">
<run_name_template>dYYYY/tdc/deltat_tdc_gps_NNNN</run_name_template>
<beamline>PIM3</beamline>
<data_file_format>PSI-BIN</data_file_format>
<tf name="WEP">
<no_of_detectors>6</no_of_detectors>
<fgb_offset>10</fgb_offset>
<lgb>25600</lgb>
<asym_bkg_range>50 300</asym_bkg_range>
<logic_detector name="B" rel_phase="-45.0" forward="2"/>
<logic_detector name="U" rel_phase="45.0" forward="3"/>
<logic_detector name="F" rel_phase="135.0" forward="1"/>
<logic_detector name="D" rel_phase="225.0" forward="4"/>
<logic_asym_detector name="FB" rel_phase="-45.0" forward="2" backward="1" alpha="0.75"/>
<logic_asym_detector name="UD" rel_phase="45" forward="3" backward="4" alpha="1.0"/>
</tf>
<tf name="WED(L)">
<no_of_detectors>6</no_of_detectors>
<fgb_offset>10</fgb_offset>
<lgb>25600</lgb>
<asym_bkg_range>50 300</asym_bkg_range>
<logic_detector name="U" rel_phase="0.0" forward="3"/>
<logic_detector name="D" rel_phase="180.0" forward="4"/>
<logic_detector name="R" rel_phase="90.0" forward="5"/>
<logic_detector name="L" rel_phase="-90.0" forward="6"/>
<logic_asym_detector name="UD" rel_phase="0.0" forward="3" backward="4" alpha="1.0"/>
<logic_asym_detector name="RL" rel_phase="-90.0" forward="5" backward="6" alpha="1.0"/>
</tf>
<zf>
<no_of_detectors>6</no_of_detectors>
<fgb_offset>10</fgb_offset>
<lgb>25600</lgb>
<asym_bkg_range>50 300</asym_bkg_range>
<logic_asym_detector name="FB" rel_phase="0.0" forward="2" backward="1" alpha="0.5"/>
</zf>
<lf name="WED(L)">
<no_of_detectors>6</no_of_detectors>
<fgb_offset>20</fgb_offset>
<lgb>25600</lgb>
<asym_bkg_range>50 300</asym_bkg_range>
<logic_asym_detector name="FB" rel_phase="0.0" forward="2" backward="1" alpha="0.5"/>
</lf>
</instrument>
</instrument_def_psi>

View File

@ -0,0 +1,138 @@
#include <iostream>
#include <fstream>
#include <QApplication>
#include <QProcess>
#include <QMessageBox>
#include <QObject>
#include "git-revision.h"
#include "musrWiz.h"
#include "PAdmin.h"
#include "PMusrWiz.h"
//-------------------------------------------------------------------
/**
*
*/
void PParam::init()
{
fName = QString("UnDef");
fNumber = -1;
fValue = 0.0;
fStep = 0.0;
fPosErr = QString("UnDef");
fBoundLow = QString("UnDef");
fBoundHigh = QString("UnDef");
}
//-------------------------------------------------------------------
/**
*
*/
void musrWiz_syntax()
{
std::cout << "usage: musrWiz [[--version | -v] | --debug [0|1|2] | --help]" << std::endl << std::endl;
std::cout << " --version | -v : print current git-version." << std::endl;
std::cout << " --debug 0 : dump's the instrument definition(s) at startup." << std::endl;
std::cout << " --debug 1 : dump's the musrfit functions at startup." << std::endl;
std::cout << " --debug 2 : dump's the musrfit functions and instrument definition(s) at startup." << std::endl;
std::cout << " --log : writes a log-file '.musrWiz.log' which contains the path-file-name of" << std::endl;
std::cout << " the created msr-file." << std::endl;
std::cout << " --help : shows this help." << std::endl << std::endl;
}
//-------------------------------------------------------------------
/**
*
*/
int main(int argc, char *argv[])
{
int dump = -1;
bool logFile = false;
if (argc == 2) {
if (!strcmp(argv[1], "--version") || (!strcmp(argv[1], "-v"))) {
std::cout << std::endl << "musrWiz - alpha - git-branch: " << GIT_BRANCH << ", git-rev: " << GIT_CURRENT_SHA1 << std::endl << std::endl;
return 0;
} else if (!strcmp(argv[1], "--help")) {
musrWiz_syntax();
return 0;
} else if (!strcmp(argv[1], "--log")) { // thought to be used from within musredit only
logFile = true;
} else {
musrWiz_syntax();
return 0;
}
} else if (argc == 3) {
dump = atoi(argv[2]);
if ((dump < 0) || (dump > 2)) {
musrWiz_syntax();
return 0;
}
}
Q_INIT_RESOURCE(musrWiz);
QApplication app(argc, argv);
PAdmin *admin = new PAdmin();
if (!admin->IsValid()) {
delete admin;
return 1;
}
admin->dump(dump);
PMsrData *info = new PMsrData(); // this content will eventually be set by the xml-handler
PMusrWiz wizard(admin, info);
wizard.show();
app.exec();
int result = wizard.result();
if (result == 1) { // if everything went fine up to this point
// check if a log-file shall be written
if (logFile) {
std::ofstream fout(".musrWiz.log", std::ofstream::out);
fout << "path-file-name: " << info->getMsrPathName().toLatin1().data() << "/" << info->getMsrFileName().toLatin1().data() << std::endl;
fout.close();
}
// check if musrt0 shall be called. If the option --log is set, only add musrt0 flag to in the .musrWiz.log file
if (info->getT0Tag() == T0_FROM_MUSR_T0) {
if (logFile) {
std::ofstream fout(".musrWiz.log", std::ofstream::app);
fout << "musrt0-tag: yes" << std::endl;
fout.close();
} else {
QProcessEnvironment pe = QProcessEnvironment::systemEnvironment();
QString musrt0Path = pe.value("MUSRFITPATH", "??");
if (musrt0Path == "??") { // not found hence try ROOTSYS
musrt0Path = pe.value("ROOTSYS", "??");
if (musrt0Path != "??") {
musrt0Path += "/bin";
}
}
if (musrt0Path != "??") {
QString musrt0 = musrt0Path + "/musrt0";
QString pathFln = QString("%1/%2").arg(info->getMsrPathName()).arg(info->getMsrFileName());
QStringList arguments;
arguments << pathFln;
QProcess::startDetached(musrt0, arguments, "./");
} else {
QMessageBox::warning(0, "WARNING", "Couldn't find musrt0 :-(.\n Only the msr-file has been generated.");
}
}
}
}
if (info)
delete info;
if (admin)
delete admin;
return result;
}

View File

@ -0,0 +1,75 @@
/***************************************************************************
musrWiz.h
Author: Andreas Suter
e-mail: andreas.suter@psi.ch
***************************************************************************/
/***************************************************************************
* Copyright (C) 2007-2016 by Andreas Suter *
* andreas.suter@psi.ch *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef _MUSRWIZ_H_
#define _MUSRWIZ_H_
#include <QString>
//-------------------------------------------------------------------
class PParam {
public:
PParam() { init(); }
~PParam() {}
void init();
QString getName() { return fName; }
int getNumber() { return fNumber; }
double getValue() { return fValue; }
double getStep() { return fStep; }
QString getPosErr() { return fPosErr; }
QString getBoundLow() { return fBoundLow; }
QString getBoundHigh() { return fBoundHigh; }
void setName(QString str) { fName = str; }
void setNumber(int ival) { fNumber = ival; }
void setValue(double dval) { fValue = dval; }
void setStep(double dval) { fStep = dval; }
void setPosErr(QString str) { fPosErr = str; }
void setBoundLow(QString str) { fBoundLow = str; }
void setBoundHigh(QString str) { fBoundHigh = str; }
private:
QString fName;
int fNumber;
double fValue;
double fStep;
QString fPosErr;
QString fBoundLow;
QString fBoundHigh;
};
//-------------------------------------------------------------------
typedef struct {
int number;
QString fun;
} PFunc;
#endif // _MUSRWIZ_H_

View File

@ -0,0 +1,58 @@
TEMPLATE = app
TARGET = musrWiz
# install path for the application
unix:target.path = $$(ROOTSYS)/bin
INSTALLS += target
# install path for the XML instrument def file
unix: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
}
INSTALLS += instrumendDef
# install path for the XML musrfit funcs file
unix: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
}
INSTALLS += musrfitFunc
# install path for the musrWiz defaults XML
unix: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
}
INSTALLS += musrWizDefault
CONFIG += qt \
warn_on \
release \
#CONFIG += console
QT += widgets
QT += xml
QT += core
QT += svg
INCLUDEPATH += "../../include"
HEADERS = musrWiz.h \
PTheoTemplate.h \
PMusrfitFunc.h \
PInstrumentDef.h \
PAdmin.h \
PMusrWiz.h
SOURCES = PTheoTemplate.cpp \
PMusrfitFunc.cpp \
PInstrumentDef.cpp \
PAdmin.cpp \
PMusrWiz.cpp \
musrWiz.cpp
RESOURCES = musrWiz.qrc

View File

@ -0,0 +1,8 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>icons/musrWiz-22x22.svg</file>
<file>icons/musrWiz-22x22-dark.svg</file>
<file>icons/musrWiz-32x32.svg</file>
<file>icons/musrWiz-32x32-dark.svg</file>
</qresource>
</RCC>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<musrwiz>
<default_settings>
<institute>PSI</institute>
<instrument>LEM</instrument>
<fit_type>Single Histo</fit_type>
</default_settings>
</musrwiz>

View File

@ -0,0 +1,20 @@
TEMPLATE = subdirs
TARGET = musredit
SUBDIRS = \
musrStep \
musrWiz \
musredit
# where to find the sub-projects - give the folders
musrStep.subdir = musrStep
musrWiz.subdir = musrWiz
musredit.subdir = musredit
# what sub-project depends on others
musredit.depends = musrStep musrWiz
# build the project sequentially as listed in SUBDIRS !
CONFIG += ordered