Merged muonspin/musrfit into master

This commit is contained in:
Zaher Salman 2016-08-04 15:52:10 +02:00
commit 737f3dfaa4
5 changed files with 128 additions and 14 deletions

View File

@ -13,6 +13,7 @@ NEW 2016-04-22 Added the theory function muMinusExpTF for mu minus fits
NEW 2016-02-23 It is now possible to export the averaged data/Fourier NEW 2016-02-23 It is now possible to export the averaged data/Fourier
CHANGED 2016-04-26 start-/endTimeBin are now class members. This reduces CHANGED 2016-04-26 start-/endTimeBin are now class members. This reduces
the number of recalculations. the number of recalculations.
FIXED 2016-08-02 run lists are now properly loaded if containing nS-nE elements.
changes since 0.16.0 changes since 0.16.0
=================================== ===================================

View File

@ -1870,6 +1870,8 @@ void PTextEdit::musrMsr2Data()
QFileInfo fi; QFileInfo fi;
QString str; QString str;
int i, end; int i, end;
QStringList list;
bool ok;
fMsr2DataParam = dlg->getMsr2DataParam(); fMsr2DataParam = dlg->getMsr2DataParam();
fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output); fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output);
@ -2069,12 +2071,11 @@ void PTextEdit::musrMsr2Data()
} }
break; break;
case 1: // run list case 1: // run list
end = 0; list = getRunList(runList, ok);
while (!runList.section(' ', end, end, QString::SectionSkipEmpty).isEmpty()) { if (!ok)
end++; return;
} for (int i=0; i<list.size(); i++) {
for (int i=0; i<end; i++) { fln = list[i];
fln = runList.section(' ', i, i, QString::SectionSkipEmpty);
if (fMsr2DataParam->msrFileExtension.isEmpty()) if (fMsr2DataParam->msrFileExtension.isEmpty())
fln += ".msr"; fln += ".msr";
else else
@ -2644,6 +2645,58 @@ void PTextEdit::fillRecentFiles()
} }
} }
//----------------------------------------------------------------------------------------------------
/**
* <p> run list is split (space separated) and expanded (start-end -> start, start+1, ..., end) to a list
*
* \param runListStr list to be split and expanded
* \param ok true if everything is fine; false if an error has been encountered
*
* \return fully expanded run list
*/
QStringList PTextEdit::getRunList(QString runListStr, bool &ok)
{
QStringList result;
bool isInt;
QString str;
ok = true;
// first split space separated parts
QStringList tok = runListStr.split(' ', QString::SkipEmptyParts);
for (int i=0; i<tok.size(); i++) {
if (tok[i].contains('-')) { // list given, hence need to expand
QStringList runListTok = tok[i].split('-', QString::SkipEmptyParts);
if (runListTok.size() != 2) { // error
ok = false;
result.clear();
return result;
}
int start=0, end=0;
start = runListTok[0].toInt(&isInt);
if (!isInt) {
ok = false;
result.clear();
return result;
}
end = runListTok[1].toInt(&isInt);
if (!isInt) {
ok = false;
result.clear();
return result;
}
for (int i=start; i<=end; i++) {
str = QString("%1").arg(i);
result << str;
}
} else { // keep it
result << tok[i];
}
}
return result;
}
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
// END // END
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,8 @@
#define _PTEXTEDIT_H_ #define _PTEXTEDIT_H_
#include <QMainWindow> #include <QMainWindow>
#include <QString>
#include <QStringList>
#include <QMap> #include <QMap>
#include <QTimer> #include <QTimer>
#include <QString> #include <QString>
@ -175,6 +177,7 @@ private:
QAction *fRecentFilesAction[MAX_RECENT_FILES]; ///< array of the recent file actions QAction *fRecentFilesAction[MAX_RECENT_FILES]; ///< array of the recent file actions
void fillRecentFiles(); void fillRecentFiles();
QStringList getRunList(QString runListStr, bool &ok);
}; };

View File

@ -30,6 +30,8 @@
#include <iostream> #include <iostream>
using namespace std; using namespace std;
#include <QString>
#include <QStringList>
#include <QTextEdit> #include <QTextEdit>
#include <QStatusBar> #include <QStatusBar>
#include <QAction> #include <QAction>
@ -1867,7 +1869,9 @@ void PTextEdit::musrMsr2Data()
QString runListFileName; QString runListFileName;
QFileInfo fi; QFileInfo fi;
QString str; QString str;
int i, end; int i, end;
QStringList list;
bool ok;
fMsr2DataParam = dlg->getMsr2DataParam(); fMsr2DataParam = dlg->getMsr2DataParam();
fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output); fAdmin->setKeepMinuit2OutputFlag(fMsr2DataParam->keepMinuit2Output);
@ -2052,7 +2056,6 @@ void PTextEdit::musrMsr2Data()
QTextStream *stream; QTextStream *stream;
if (!fMsr2DataParam->global) { // standard fits if (!fMsr2DataParam->global) { // standard fits
switch(dlg->getRunTag()) { switch(dlg->getRunTag()) {
case 0: // first run / last run list case 0: // first run / last run list
if (fMsr2DataParam->firstRun != -1) { if (fMsr2DataParam->firstRun != -1) {
@ -2067,12 +2070,11 @@ void PTextEdit::musrMsr2Data()
} }
break; break;
case 1: // run list case 1: // run list
end = 0; list = getRunList(runList, ok);
while (!runList.section(' ', end, end, QString::SectionSkipEmpty).isEmpty()) { if (!ok)
end++; return;
} for (int i=0; i<list.size(); i++) {
for (int i=0; i<end; i++) { fln = list[i];
fln = runList.section(' ', i, i, QString::SectionSkipEmpty);
if (fMsr2DataParam->msrFileExtension.isEmpty()) if (fMsr2DataParam->msrFileExtension.isEmpty())
fln += ".msr"; fln += ".msr";
else else
@ -2642,6 +2644,58 @@ void PTextEdit::fillRecentFiles()
} }
} }
//----------------------------------------------------------------------------------------------------
/**
* <p> run list is split (space separated) and expanded (start-end -> start, start+1, ..., end) to a list
*
* \param runListStr list to be split and expanded
* \param ok true if everything is fine; false if an error has been encountered
*
* \return fully expanded run list
*/
QStringList PTextEdit::getRunList(QString runListStr, bool &ok)
{
QStringList result;
bool isInt;
QString str;
ok = true;
// first split space separated parts
QStringList tok = runListStr.split(' ', QString::SkipEmptyParts);
for (int i=0; i<tok.size(); i++) {
if (tok[i].contains('-')) { // list given, hence need to expand
QStringList runListTok = tok[i].split('-', QString::SkipEmptyParts);
if (runListTok.size() != 2) { // error
ok = false;
result.clear();
return result;
}
int start=0, end=0;
start = runListTok[0].toInt(&isInt);
if (!isInt) {
ok = false;
result.clear();
return result;
}
end = runListTok[1].toInt(&isInt);
if (!isInt) {
ok = false;
result.clear();
return result;
}
for (int i=start; i<=end; i++) {
str = QString("%1").arg(i);
result << str;
}
} else { // keep it
result << tok[i];
}
}
return result;
}
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------
// END // END
//---------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------

View File

@ -31,6 +31,8 @@
#define _PTEXTEDIT_H_ #define _PTEXTEDIT_H_
#include <QMainWindow> #include <QMainWindow>
#include <QString>
#include <QStringList>
#include <QMap> #include <QMap>
#include <QTimer> #include <QTimer>
#include <QString> #include <QString>
@ -175,6 +177,7 @@ private:
QAction *fRecentFilesAction[MAX_RECENT_FILES]; ///< array of the recent file actions QAction *fRecentFilesAction[MAX_RECENT_FILES]; ///< array of the recent file actions
void fillRecentFiles(); void fillRecentFiles();
QStringList getRunList(QString runListStr, bool &ok);
}; };