diff --git a/ChangeLog b/ChangeLog index 9751af3c..b35eaeaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,7 @@ FIXED bug reported in MUSR-183: missing background for 2nd histo in asymmetry fi FIXED Makefiles so that the NeXus support will not be built if it has not been enabled during the configure stage FIXED ASCII export from musrview in case of a Fourier-Power- or Fourier-Phase-difference plot FIXED bug in asymmetry fit with fixed background +CHANGED musredit/musrgui msr2data interface such that it is hopefully closer to the command line (MUSR-162, MUSR-173) CHANGED the behavior of msr2data so that * it proceeds to the next run if a fit did not converge (and does not stop as before) * it always tries to read the data files if the nosummary option is not present diff --git a/src/musredit/PAdmin.cpp b/src/musredit/PAdmin.cpp index 865a9d1b..ec37482d 100644 --- a/src/musredit/PAdmin.cpp +++ b/src/musredit/PAdmin.cpp @@ -117,8 +117,8 @@ bool PAdminXMLParser::startElement( const QString&, const QString&, fKeyWord = eChainFit; } else if (qName == "write_data_header") { fKeyWord = eWriteDataHeader; - } else if (qName == "summary_files_present") { - fKeyWord = eSummaryFilesPresent; + } else if (qName == "ignore_data_header_info") { + fKeyWord = eIgnoreDataHeaderInfo; } else if (qName == "keep_minuit2_output") { fKeyWord = eKeepMinuit2Output; } else if (qName == "write_column_data") { @@ -133,6 +133,8 @@ bool PAdminXMLParser::startElement( const QString&, const QString&, fKeyWord = eFitOnly; } else if (qName == "global") { fKeyWord = eGlobal; + } else if (qName == "global_plus") { + fKeyWord = eGlobalPlus; } else if (qName == "func_pixmap_path") { fKeyWord = eTheoFuncPixmapPath; } else if (qName == "func") { @@ -288,12 +290,12 @@ bool PAdminXMLParser::characters(const QString& str) flag = false; fAdmin->fMsr2DataParam.writeDbHeader = flag; break; - case eSummaryFilesPresent: + case eIgnoreDataHeaderInfo: if (str == "y") flag = true; else flag = false; - fAdmin->fMsr2DataParam.summaryFilePresent = flag; + fAdmin->fMsr2DataParam.ignoreDataHeaderInfo = flag; break; case eKeepMinuit2Output: if (str == "y") @@ -344,6 +346,13 @@ bool PAdminXMLParser::characters(const QString& str) flag = false; fAdmin->fMsr2DataParam.global = flag; break; + case eGlobalPlus: + if (str == "y") + flag = true; + else + flag = false; + fAdmin->fMsr2DataParam.globalPlus = flag; + break; case eTheoFuncPixmapPath: fAdmin->setTheoFuncPixmapPath(QString(str.toLatin1()).trimmed()); break; @@ -544,7 +553,7 @@ PAdmin::PAdmin() fMsr2DataParam.templateRunNo = -1; fMsr2DataParam.dbOutputFileName = QString(""); fMsr2DataParam.writeDbHeader = true; - fMsr2DataParam.summaryFilePresent = true; + fMsr2DataParam.ignoreDataHeaderInfo = false; fMsr2DataParam.keepMinuit2Output = false; fMsr2DataParam.writeColumnData = false; fMsr2DataParam.recreateDbFile = false; @@ -554,6 +563,7 @@ PAdmin::PAdmin() fMsr2DataParam.createMsrFileOnly = false; fMsr2DataParam.fitOnly = false; fMsr2DataParam.global = false; + fMsr2DataParam.globalPlus = false; // XML Parser part QString fln = "musredit_startup.xml"; diff --git a/src/musredit/PAdmin.h b/src/musredit/PAdmin.h index 47c91626..80b87501 100644 --- a/src/musredit/PAdmin.h +++ b/src/musredit/PAdmin.h @@ -75,8 +75,8 @@ class PAdminXMLParser : public QXmlDefaultHandler eTheoFuncPixmapPath, eFunc, eFuncName, eFuncComment, eFuncLabel, eFuncPixmap, eFuncParams, eHelpMain, eHelpTitle, eHelpParameters, eHelpTheory, eHelpFunctions, eHelpRun, eHelpCommand, eHelpFourier, eHelpPlot, eHelpStatistic, eHelpMsr2Data, - eChainFit, eWriteDataHeader, eSummaryFilesPresent, eKeepMinuit2Output, eWriteColumnData, - eRecreateDataFile, eOpenFileAfterFitting, eCreateMsrFileOnly, eFitOnly, eGlobal}; + eChainFit, eWriteDataHeader, eIgnoreDataHeaderInfo, eKeepMinuit2Output, eWriteColumnData, + eRecreateDataFile, eOpenFileAfterFitting, eCreateMsrFileOnly, eFitOnly, eGlobal, eGlobalPlus}; bool startDocument(); bool startElement( const QString&, const QString&, const QString& , diff --git a/src/musredit/PHelp.h b/src/musredit/PHelp.h index 23bee3bd..fb2fbc8a 100644 --- a/src/musredit/PHelp.h +++ b/src/musredit/PHelp.h @@ -64,7 +64,6 @@ class PHelp : public QMainWindow QWebView *fView; ///< web viewer QLineEdit *fLocationEdit; ///< url address line edit int fProgress; ///< progress value (0-100) while loading an url - }; #endif // _PHELP_H_ diff --git a/src/musredit/PMsr2DataDialog.cpp b/src/musredit/PMsr2DataDialog.cpp index 7c890ca0..b3b7469f 100644 --- a/src/musredit/PMsr2DataDialog.cpp +++ b/src/musredit/PMsr2DataDialog.cpp @@ -91,7 +91,7 @@ PMsr2DataDialog::PMsr2DataDialog(PMsr2DataParam *msr2DataParam, const QString he } fWriteDataHeader_checkBox->setChecked(fMsr2DataParam->writeDbHeader); - fSummaryPresent_checkBox->setChecked(fMsr2DataParam->summaryFilePresent); + fIgnoreDataHeaderInfo_checkBox->setChecked(fMsr2DataParam->ignoreDataHeaderInfo); fKeepMinuit2Output_checkBox->setChecked(fMsr2DataParam->keepMinuit2Output); fWriteColumnData_checkBox->setChecked(fMsr2DataParam->writeColumnData); fRecreateDataFile_checkBox->setChecked(fMsr2DataParam->recreateDbFile); @@ -101,6 +101,10 @@ PMsr2DataDialog::PMsr2DataDialog(PMsr2DataParam *msr2DataParam, const QString he fCreateMsrFileOnly_checkBox->setChecked(fMsr2DataParam->createMsrFileOnly); fFitOnly_checkBox->setChecked(fMsr2DataParam->fitOnly); fGlobal_checkBox->setChecked(fMsr2DataParam->global); + fGlobalPlus_checkBox->setChecked(fMsr2DataParam->globalPlus); + + connect(fGlobal_checkBox, SIGNAL(clicked(bool)), this, SLOT(globalOptionSet(bool))); + connect(fGlobalPlus_checkBox, SIGNAL(clicked(bool)), this, SLOT(globalPlusOptionSet(bool))); } //---------------------------------------------------------------------------------------------------- @@ -129,7 +133,7 @@ PMsr2DataParam* PMsr2DataDialog::getMsr2DataParam() } fMsr2DataParam->dbOutputFileName = fDataOutputFileName_lineEdit->text(); fMsr2DataParam->writeDbHeader = fWriteDataHeader_checkBox->isChecked(); - fMsr2DataParam->summaryFilePresent = fSummaryPresent_checkBox->isChecked(); + fMsr2DataParam->ignoreDataHeaderInfo = fIgnoreDataHeaderInfo_checkBox->isChecked(); fMsr2DataParam->keepMinuit2Output = fKeepMinuit2Output_checkBox->isChecked(); fMsr2DataParam->writeColumnData = fWriteColumnData_checkBox->isChecked(); fMsr2DataParam->recreateDbFile = fRecreateDataFile_checkBox->isChecked(); @@ -139,6 +143,7 @@ PMsr2DataParam* PMsr2DataDialog::getMsr2DataParam() fMsr2DataParam->createMsrFileOnly = fCreateMsrFileOnly_checkBox->isChecked(); fMsr2DataParam->fitOnly = fFitOnly_checkBox->isChecked(); fMsr2DataParam->global = fGlobal_checkBox->isChecked(); + fMsr2DataParam->globalPlus = fGlobalPlus_checkBox->isChecked(); return fMsr2DataParam; } @@ -271,7 +276,6 @@ void PMsr2DataDialog::fitOnlyChanged(int buttonState) { if (buttonState == Qt::Checked) { fCreateMsrFileOnly_checkBox->setChecked(false); - fGlobal_checkBox->setChecked(false); fTemplateRunNumber_lineEdit->clear(); } } @@ -294,6 +298,34 @@ void PMsr2DataDialog::helpContent() } } +//---------------------------------------------------------------------------------------------------- +/** + *
Unchecks global+ if global is checked since global/global+ are excluding options + * + * \param checked true, if the check-box is checked + */ +void PMsr2DataDialog::globalOptionSet(bool checked) +{ + if (checked) { + if (fGlobalPlus_checkBox->isChecked()) + fGlobalPlus_checkBox->setChecked(false); + } +} + +//---------------------------------------------------------------------------------------------------- +/** + *
Unchecks global if global+ is checked since global/global+ are excluding options
+ *
+ * \param checked true, if the check-box is checked
+ */
+void PMsr2DataDialog::globalPlusOptionSet(bool checked)
+{
+ if (checked) {
+ if (fGlobal_checkBox->isChecked())
+ fGlobal_checkBox->setChecked(false);
+ }
+}
+
//----------------------------------------------------------------------------------------------------
// END
//----------------------------------------------------------------------------------------------------
diff --git a/src/musredit/PMsr2DataDialog.h b/src/musredit/PMsr2DataDialog.h
index 12fae817..59dacdc6 100644
--- a/src/musredit/PMsr2DataDialog.h
+++ b/src/musredit/PMsr2DataDialog.h
@@ -62,6 +62,10 @@ class PMsr2DataDialog : public QDialog, private Ui::PMsr2DataDialog
void fitOnlyChanged(int);
void helpContent();
+ private slots:
+ void globalOptionSet(bool checked);
+ void globalPlusOptionSet(bool checked);
+
private:
int fRunTag; ///< -1 = not valid, 0 = first last, 1 = run list, 2 = run list file name
PMsr2DataParam *fMsr2DataParam; ///< data structure used to handle the necessary input for msr2data.
diff --git a/src/musredit/PTextEdit.cpp b/src/musredit/PTextEdit.cpp
index dda31c42..8d57576c 100644
--- a/src/musredit/PTextEdit.cpp
+++ b/src/musredit/PTextEdit.cpp
@@ -1837,8 +1837,8 @@ void PTextEdit::musrMsr2Data()
if (!fMsr2DataParam->writeDbHeader)
cmd.append("noheader");
- // no summary flag?
- if (!fMsr2DataParam->summaryFilePresent)
+ // ignore data header info flag present?
+ if (fMsr2DataParam->ignoreDataHeaderInfo)
cmd.append("nosummary");
// template run no fitting but: (i) no fit only flag, (ii) no create msr-file only flag
@@ -1869,8 +1869,8 @@ void PTextEdit::musrMsr2Data()
cmd.append("-k");
}
- // replace msr-file title by data file title
- if (fMsr2DataParam->titleFromDataFile) {
+ // replace msr-file title by data file title. Add flag only if a fit is done
+ if (fMsr2DataParam->titleFromDataFile && (fMsr2DataParam->fitOnly || fMsr2DataParam->templateRunNo != -1)) {
cmd.append("-t");
}
@@ -1890,18 +1890,22 @@ void PTextEdit::musrMsr2Data()
cmd.append("global");
}
- // recreate db file
- if (fMsr2DataParam->recreateDbFile) {
- if (QFile::exists(fMsr2DataParam->dbOutputFileName)) {
- if (!QFile::remove(fMsr2DataParam->dbOutputFileName)) {
- str = QString("Couldn't delete db-file '%1'. Will **NOT** proceed.").arg(fMsr2DataParam->dbOutputFileName);
- QMessageBox::critical(this, "**ERROR**", str,
- QMessageBox::Ok, QMessageBox::NoButton);
- return;
- }
+ // global+ flag check
+ if (fMsr2DataParam->globalPlus) {
+ if (fMsr2DataParam->chainFit) {
+ cmd.append("global+");
+ } else {
+ cmd.append("global+!");
}
}
+ // recreate db file
+ if (fMsr2DataParam->recreateDbFile) {
+ cmd.append("new");
+ }
+
+// qDebug() << ">> " << cmd << endl;
+
PFitOutputHandler fitOutputHandler(QFileInfo(*fFilenames.find( currentEditor() )).absolutePath(), cmd);
fitOutputHandler.setModal(true);
fFileSystemWatcherActive = false;
diff --git a/src/musredit/forms/PMsr2DataDialog.ui b/src/musredit/forms/PMsr2DataDialog.ui
index 60dd0ae2..b1f7a5ab 100644
--- a/src/musredit/forms/PMsr2DataDialog.ui
+++ b/src/musredit/forms/PMsr2DataDialog.ui
@@ -2,6 +2,9 @@
Unchecks global+ if global is checked since global/global+ are excluding options
+ *
+ * \param checked true, if the check-box is checked
+ */
+void PMsr2DataDialog::globalOptionSet(bool checked)
+{
+ if (checked) {
+ if (fGlobalPlus_checkBox->isChecked())
+ fGlobalPlus_checkBox->setChecked(false);
+ }
+}
+
+//----------------------------------------------------------------------------------------------------
+/**
+ * Unchecks global if global+ is checked since global/global+ are excluding options
+ *
+ * \param checked true, if the check-box is checked
+ */
+void PMsr2DataDialog::globalPlusOptionSet(bool checked)
+{
+ if (checked) {
+ if (fGlobal_checkBox->isChecked())
+ fGlobal_checkBox->setChecked(false);
+ }
+}
+
//----------------------------------------------------------------------------------------------------
// END
//----------------------------------------------------------------------------------------------------
diff --git a/src/musrgui/PMsr2DataDialog.h b/src/musrgui/PMsr2DataDialog.h
index 24aad2f9..c0cd3551 100644
--- a/src/musrgui/PMsr2DataDialog.h
+++ b/src/musrgui/PMsr2DataDialog.h
@@ -52,6 +52,10 @@ class PMsr2DataDialog : public PMsr2DataDialogBase
void createMsrFileOnlyChanged(int);
void fitOnlyChanged(int);
+ private slots:
+ void globalOptionSet(bool checked);
+ void globalPlusOptionSet(bool checked);
+
private:
int fRunTag; // -1 = not valid, 0 = first last, 1 = run list, 2 = run list file name
PMsr2DataParam *fMsr2DataParam;
diff --git a/src/musrgui/PTextEdit.cpp b/src/musrgui/PTextEdit.cpp
index d325e8b7..e2a69f0d 100644
--- a/src/musrgui/PTextEdit.cpp
+++ b/src/musrgui/PTextEdit.cpp
@@ -1564,8 +1564,8 @@ void PTextEdit::musrMsr2Data()
if (!fMsr2DataParam->writeDbHeader)
cmd.append("noheader");
- // no summary flag?
- if (!fMsr2DataParam->summaryFilePresent)
+ // ignore data header info flag present?
+ if (fMsr2DataParam->ignoreDataHeaderInfo)
cmd.append("nosummary");
// template run no fitting but: (i) no fit only flag, (ii) no create msr-file only flag
@@ -1596,8 +1596,8 @@ void PTextEdit::musrMsr2Data()
cmd.append("-k");
}
- // replace msr-file title by data file title
- if (fMsr2DataParam->titleFromDataFile) {
+ // replace msr-file title by data file title. Add flag only if a fit is done
+ if (fMsr2DataParam->titleFromDataFile && (fMsr2DataParam->fitOnly || fMsr2DataParam->templateRunNo != -1)) {
cmd.append("-t");
}
@@ -1617,16 +1617,18 @@ void PTextEdit::musrMsr2Data()
cmd.append("global");
}
+ // global+ flag check
+ if (fMsr2DataParam->globalPlus) {
+ if (fMsr2DataParam->chainFit) {
+ cmd.append("global+");
+ } else {
+ cmd.append("global+!");
+ }
+ }
+
// recreate db file
if (fMsr2DataParam->recreateDbFile) {
- if (QFile::exists(fMsr2DataParam->dbOutputFileName)) {
- if (!QFile::remove(fMsr2DataParam->dbOutputFileName)) {
- str = QString("Couldn't delete db-file '%1'. Will **NOT** proceed.").arg(fMsr2DataParam->dbOutputFileName);
- QMessageBox::critical(this, "**ERROR**", str,
- QMessageBox::Ok, QMessageBox::NoButton);
- return;
- }
- }
+ cmd.append("new");
}
PFitOutputHandler fitOutputHandler(QFileInfo(*fFilenames.find( currentEditor() )).dirPath(), cmd);
diff --git a/src/musrgui/forms/PMsr2DataDialogBase.ui b/src/musrgui/forms/PMsr2DataDialogBase.ui
index 2572e3cc..59cb9aa2 100644
--- a/src/musrgui/forms/PMsr2DataDialogBase.ui
+++ b/src/musrgui/forms/PMsr2DataDialogBase.ui
@@ -397,25 +397,6 @@