diff --git a/src/musrgui/PAdmin.cpp b/src/musrgui/PAdmin.cpp index 46305472..d6b2bb3e 100644 --- a/src/musrgui/PAdmin.cpp +++ b/src/musrgui/PAdmin.cpp @@ -78,8 +78,12 @@ bool PAdminXMLParser::startElement( const QString&, const QString&, fKeyWord = eInstitute; } else if (qName == "file_format") { fKeyWord = eFileFormat; + } else if (qName == "lifetime_correction") { + fKeyWord = eLifetimeCorrection; } else if (qName == "msr_default_file_path") { fKeyWord = eMsrDefaultFilePath; + } else if (qName == "help_main") { + fKeyWord = eHelpMain; } return true; @@ -120,9 +124,19 @@ bool PAdminXMLParser::characters(const QString& str) case eFileFormat: fAdmin->setFileFormat(QString(str.ascii()).stripWhiteSpace()); break; + case eLifetimeCorrection: + bool flag; + if (str == "y") + flag = true; + else + flag = false; + fAdmin->setLifetimeCorrectionFlag(flag); case eMsrDefaultFilePath: fAdmin->setMsrDefaultFilePath(QString(str.ascii()).stripWhiteSpace()); break; + case eHelpMain: + fAdmin->setHelpMain(str); + break; default: break; } diff --git a/src/musrgui/PAdmin.h b/src/musrgui/PAdmin.h index 71c67190..fd9a262c 100644 --- a/src/musrgui/PAdmin.h +++ b/src/musrgui/PAdmin.h @@ -47,7 +47,8 @@ class PAdminXMLParser : public QXmlDefaultHandler private: enum EAdminKeyWords {eEmpty, eExecPath, eDefaultSavePath, eBeamline, eInstitute, eFileFormat, - eMsrDefaultFilePath}; + eLifetimeCorrection, eMsrDefaultFilePath, + eHelpMain}; bool startDocument(); bool startElement( const QString&, const QString&, const QString& , @@ -73,7 +74,9 @@ class PAdmin QString getBeamline() { return fBeamline; } QString getInstitute() { return fInstitute; } QString getFileFormat() { return fFileFormat; } + bool getLifetimeCorrectionFlag() { return fLifetimeCorrection; } QString getMsrDefaultFilePath() { return fMsrDefaultFilePath; } + QString getHelpMain() { return fHelpMain; } protected: void setExecPath(const QString str) { fExecPath = str; } @@ -81,7 +84,9 @@ class PAdmin void setBeamline(const QString str) { fBeamline = str; } void setInstitute(const QString str) { fInstitute = str; } void setFileFormat(const QString str) { fFileFormat = str; } + void setLifetimeCorrectionFlag(const bool flag) { fLifetimeCorrection = flag; } void setMsrDefaultFilePath(const QString str) { fMsrDefaultFilePath = str; } + void setHelpMain(const QString str) { fHelpMain = str; } private: friend class PAdminXMLParser; @@ -92,8 +97,11 @@ class PAdmin QString fBeamline; QString fInstitute; QString fFileFormat; + bool fLifetimeCorrection; QString fMsrDefaultFilePath; + + QString fHelpMain; }; #endif // _PADMIN_H_ diff --git a/src/musrgui/PGetAsymmetryRunBlockDialog.cpp b/src/musrgui/PGetAsymmetryRunBlockDialog.cpp index a26255a3..5c757a28 100644 --- a/src/musrgui/PGetAsymmetryRunBlockDialog.cpp +++ b/src/musrgui/PGetAsymmetryRunBlockDialog.cpp @@ -68,14 +68,14 @@ PGetAsymmetryRunBlockDialog::PGetAsymmetryRunBlockDialog() */ QString PGetAsymmetryRunBlockDialog::GetRunHeaderInfo() { - QString str; + QString str; - str = "RUN " + fRunFileName_lineEdit->text() + " "; - str += fBeamline_lineEdit->text().upper() + " "; - str += fInstitute_comboBox->currentText() + " "; - str += fFileFormat_comboBox->currentText() + " (name beamline institute data-file-format)\n"; + str = "RUN " + fRunFileName_lineEdit->text() + " "; + str += fBeamline_lineEdit->text().upper() + " "; + str += fInstitute_comboBox->currentText() + " "; + str += fFileFormat_comboBox->currentText() + " (name beamline institute data-file-format)\n"; - return str; + return str; } //---------------------------------------------------------------------------------------------------- diff --git a/src/musrgui/PGetSingleHistoRunBlockDialog.cpp b/src/musrgui/PGetSingleHistoRunBlockDialog.cpp index 98c2f5e8..b4d6b0e6 100644 --- a/src/musrgui/PGetSingleHistoRunBlockDialog.cpp +++ b/src/musrgui/PGetSingleHistoRunBlockDialog.cpp @@ -40,29 +40,25 @@ /** *

*/ -PGetSingleHistoRunBlockDialog::PGetSingleHistoRunBlockDialog() +PGetSingleHistoRunBlockDialog::PGetSingleHistoRunBlockDialog(QWidget * parent, const char *name, + bool modal, WFlags f, + const bool lifetimeCorrection) : + PGetSingleHistoRunBlockDialogBase(parent, name, modal, f) { fForward_lineEdit->setValidator( new QIntValidator(fForward_lineEdit) ); fNorm_lineEdit->setValidator( new QIntValidator(fNorm_lineEdit) ); -/* - fDataForwardStart_lineEdit->setValidator( new QIntValidator(fDataForwardStart_lineEdit) ); - fDataForwardEnd_lineEdit->setValidator( new QIntValidator(fDataForwardEnd_lineEdit) ); - fDataBackwardStart_lineEdit->setValidator( new QIntValidator(fDataBackwardStart_lineEdit) ); - fDataBackwardEnd_lineEdit->setValidator( new QIntValidator(fDataBackwardEnd_lineEdit) ); - fBackgroundForwardStart_lineEdit->setValidator( new QIntValidator(fBackgroundForwardStart_lineEdit) ); - fBackgroundForwardEnd_lineEdit->setValidator( new QIntValidator(fBackgroundForwardEnd_lineEdit) ); - fBackgroundBackwardStart_lineEdit->setValidator( new QIntValidator(fBackgroundBackwardStart_lineEdit) ); - fBackgroundBackwardEnd_lineEdit->setValidator( new QIntValidator(fBackgroundBackwardEnd_lineEdit) ); - fBackgroundForwardFix_lineEdit->setValidator( new QDoubleValidator(fBackgroundForwardFix_lineEdit) ); - fBackgroundBackwardFix_lineEdit->setValidator( new QDoubleValidator(fBackgroundBackwardFix_lineEdit) ); + fDataStart_lineEdit->setValidator( new QIntValidator(fDataStart_lineEdit) ); + fDataEnd_lineEdit->setValidator( new QIntValidator(fDataEnd_lineEdit) ); + fBackgroundFix_lineEdit->setValidator( new QDoubleValidator(fBackgroundFix_lineEdit) ); + fBackgroundFit_lineEdit->setValidator( new QIntValidator(fBackgroundFit_lineEdit) ); + fBackgroundStart_lineEdit->setValidator( new QIntValidator(fBackgroundStart_lineEdit) ); + fBackgroundEnd_lineEdit->setValidator( new QIntValidator(fBackgroundEnd_lineEdit) ); fFitRangeStart_lineEdit->setValidator( new QDoubleValidator(fFitRangeStart_lineEdit) ); fFitRangeEnd_lineEdit->setValidator( new QDoubleValidator(fFitRangeEnd_lineEdit) ); fPacking_lineEdit->setValidator( new QIntValidator(fPacking_lineEdit) ); - fAlpha_lineEdit->setValidator( new QIntValidator(fAlpha_lineEdit) ); - fBeta_lineEdit->setValidator( new QIntValidator(fBeta_lineEdit) ); - fT0Forward_lineEdit->setValidator( new QIntValidator(fT0Forward_lineEdit) ); - fT0Backward_lineEdit->setValidator( new QIntValidator(fT0Backward_lineEdit) ); -*/ + fT0_lineEdit->setValidator( new QIntValidator(fT0_lineEdit) ); + fLifetime_lineEdit->setValidator( new QIntValidator(fLifetime_lineEdit) ); + fLifetimeCorrection_checkBox->setChecked(lifetimeCorrection); } //---------------------------------------------------------------------------------------------------- @@ -73,6 +69,11 @@ QString PGetSingleHistoRunBlockDialog::GetRunHeaderInfo() { QString str=""; + str = "RUN " + fRunFileName_lineEdit->text() + " "; + str += fBeamline_lineEdit->text().upper() + " "; + str += fInstitute_comboBox->currentText() + " "; + str += fFileFormat_comboBox->currentText() + " (name beamline institute data-file-format)\n"; + return str; } @@ -82,7 +83,17 @@ QString PGetSingleHistoRunBlockDialog::GetRunHeaderInfo() */ QString PGetSingleHistoRunBlockDialog::GetMap(bool &valid) { - QString str=""; + QString str = fMap_lineEdit->text().stripWhiteSpace().remove(" "); + + // check if potentially proper map line + for (unsigned int i=0; itext() + "\n"; return str; } @@ -95,6 +106,15 @@ QString PGetSingleHistoRunBlockDialog::GetData(bool &valid) { QString str=""; + if (fDataStart_lineEdit->text().isEmpty() || fDataEnd_lineEdit->text().isEmpty()) { + valid = false; + } else { + str = "data "; + str += fDataStart_lineEdit->text() + " "; + str += fDataEnd_lineEdit->text() + "\n"; + valid = true; + } + return str; } @@ -106,6 +126,30 @@ QString PGetSingleHistoRunBlockDialog::GetBackground(bool &valid) { QString str=""; + valid = true; + + // check that either backgr.fix or background is given, but not both + if (fBackgroundStart_lineEdit->text().isEmpty() && fBackgroundEnd_lineEdit->text().isEmpty() && + fBackgroundFix_lineEdit->text().isEmpty() && + fBackgroundFit_lineEdit->text().isEmpty()) { + valid = false; + str = "background 0 10\n"; + } else { + if (!fBackgroundStart_lineEdit->text().isEmpty()) { // assume the rest is given, not fool prove but ... + str = "background "; + str += fBackgroundStart_lineEdit->text() + " "; + str += fBackgroundEnd_lineEdit->text() + "\n"; + } + if (!fBackgroundFix_lineEdit->text().isEmpty()) { + str = "backgr.fix "; + str += fBackgroundFix_lineEdit->text() + "\n"; + } + if (!fBackgroundFit_lineEdit->text().isEmpty()) { + str = "backgr.fit "; + str += fBackgroundFit_lineEdit->text() + "\n"; + } + } + return str; } @@ -117,6 +161,16 @@ QString PGetSingleHistoRunBlockDialog::GetFitRange(bool &valid) { QString str=""; + if (fFitRangeStart_lineEdit->text().isEmpty() || fFitRangeEnd_lineEdit->text().isEmpty()) { + str += "fit 0.0 10.0\n"; + valid = false; + } else { + str += "fit "; + str += fFitRangeStart_lineEdit->text() + " "; + str += fFitRangeEnd_lineEdit->text() + "\n"; + valid = true; + } + return str; } @@ -128,6 +182,14 @@ QString PGetSingleHistoRunBlockDialog::GetPacking(bool &present) { QString str=""; + if (fPacking_lineEdit->text().isEmpty()) { + present = false; + str += "packing 1\n"; + } else { + present = true; + str += "packing " + fPacking_lineEdit->text() + "\n\n"; + } + return str; } @@ -139,6 +201,14 @@ QString PGetSingleHistoRunBlockDialog::GetT0(bool &present) { QString str=""; + if (!fT0_lineEdit->text().isEmpty()) { + str = "t0 "; + str += fT0_lineEdit->text() + "\n"; + present = true; + } else { + present = false; + } + return str; } @@ -150,6 +220,14 @@ QString PGetSingleHistoRunBlockDialog::GetMuonLifetimeParam(bool &present) { QString str=""; + if (!fLifetime_lineEdit->text().isEmpty()) { + str = "lifetime "; + str += fLifetime_lineEdit->text() + "\n"; + present = true; + } else { + present = false; + } + return str; } @@ -161,6 +239,13 @@ QString PGetSingleHistoRunBlockDialog::GetLifetimeCorrection(bool &present) { QString str=""; + if (fLifetimeCorrection_checkBox->isChecked()) { + str = "lifetimecorrection\n"; + present = true; + } else { + present = false; + } + return str; } diff --git a/src/musrgui/PGetSingleHistoRunBlockDialog.h b/src/musrgui/PGetSingleHistoRunBlockDialog.h index 0772ad46..841d53be 100644 --- a/src/musrgui/PGetSingleHistoRunBlockDialog.h +++ b/src/musrgui/PGetSingleHistoRunBlockDialog.h @@ -40,7 +40,8 @@ class PGetSingleHistoRunBlockDialog : public PGetSingleHistoRunBlockDialogBase { public: - PGetSingleHistoRunBlockDialog(); + PGetSingleHistoRunBlockDialog(QWidget * parent = 0, const char * name = 0, bool modal = FALSE, + WFlags f = 0, const bool lifetimeCorrection = true); QString GetRunHeaderInfo(); QString GetMap(bool &valid); diff --git a/src/musrgui/PSubTextEdit.cpp b/src/musrgui/PSubTextEdit.cpp index 50e95175..c737a721 100644 --- a/src/musrgui/PSubTextEdit.cpp +++ b/src/musrgui/PSubTextEdit.cpp @@ -40,6 +40,7 @@ #include "forms/PGetTitleDialog.h" #include "PGetParameterDialog.h" #include "PGetAsymmetryRunBlockDialog.h" +#include "PGetSingleHistoRunBlockDialog.h" #include "PGetFourierDialog.h" #include "PGetPlotDialog.h" @@ -47,7 +48,8 @@ /** *

*/ -PSubTextEdit::PSubTextEdit(QWidget *parent, const char *name) : QTextEdit(parent, name) +PSubTextEdit::PSubTextEdit(QWidget *parent, const char *name, const bool lifetimeCorrectionFlag) : + QTextEdit(parent, name), fLifetimeCorrectionFlag(lifetimeCorrectionFlag) { } @@ -177,7 +179,7 @@ void PSubTextEdit::insertAsymRunBlock() str += workStr; } - // add alpha if present + // add beta if present workStr = dlg->GetBetaParameter(present); if (present) { str += workStr; @@ -205,7 +207,7 @@ void PSubTextEdit::insertAsymRunBlock() str += workStr; if (!valid) { QMessageBox::critical(this, "**ERROR**", - "Either Background or Background.Fix is needed!\nWill set Background to 0..10, please correct!", + "Either background or backgr.fix is needed!\nWill set background to 0..10, please correct!", QMessageBox::Ok, QMessageBox::NoButton); } @@ -258,6 +260,98 @@ void PSubTextEdit::insertAsymRunBlock() */ void PSubTextEdit::insertSingleHistRunBlock() { + PGetSingleHistoRunBlockDialog *dlg = new PGetSingleHistoRunBlockDialog(); + if (dlg->exec() == QDialog::Accepted) { + QString str, workStr; + bool valid = true, present = true; + // check if there is already a run block present, necessary because of the '####' line + // STILL MISSING + + // add run line + str += dlg->GetRunHeaderInfo(); + + // add fittype + str += "fittype 0 (single histogram fit)\n"; + + // add map + workStr = dlg->GetMap(valid); + if (valid) { + str += workStr; + } else { + QMessageBox::critical(this, "**ERROR**", + "Given map not valid, will add a default map line", + QMessageBox::Ok, QMessageBox::NoButton); + str += "map 0 0 0 0 0 0 0 0 0 0\n"; + } + + // add forward + str += dlg->GetForward(); + + // add norm + str += dlg->GetNorm(); + + // add lifetime parameter + workStr = dlg->GetMuonLifetimeParam(present); + if (present) { + str += workStr; + } + + // add lifetime correction flag if present + workStr = dlg->GetLifetimeCorrection(present); + if (present) { + str += workStr; + } + + // add background, backgr.fix or backgr.fit + workStr = dlg->GetBackground(valid); + str += workStr; + if (!valid) { + QMessageBox::critical(this, "**ERROR**", + "Either background, backgr.fix, or backgr.fit is needed!\nWill set background to 0..10, please correct!", + QMessageBox::Ok, QMessageBox::NoButton); + } + + // add t0 if present + workStr = dlg->GetT0(present); + if (present) { + str += workStr; + } else { + QMessageBox::warning(this, "**ERROR**", + "T0's not given, assume that they are present in the data file!", + QMessageBox::Ok, QMessageBox::NoButton); + } + + // add data + workStr = dlg->GetData(valid); + if (valid) { + str += workStr; + } else { + QMessageBox::critical(this, "**ERROR**", + "Not all Data entries are present.Fix is needed!\nWill not set anything!", + QMessageBox::Ok, QMessageBox::NoButton); + } + + // add fit range + workStr = dlg->GetFitRange(valid); + str += workStr; + if (!valid) { + QMessageBox::critical(this, "**ERROR**", + "No valid fit range is given.Fix is needed!\nWill add a default one!", + QMessageBox::Ok, QMessageBox::NoButton); + } + + // add packing + workStr = dlg->GetPacking(present); + str += workStr; + if (!present) { + QMessageBox::critical(this, "**ERROR**", + "No valid packing/binning is given.Fix is needed!\nWill add a default one!", + QMessageBox::Ok, QMessageBox::NoButton); + } + + // insert Asymmetry Run Block at the current cursor position + insert(str); + } } //---------------------------------------------------------------------------------------------------- diff --git a/src/musrgui/PSubTextEdit.h b/src/musrgui/PSubTextEdit.h index 00214ba7..5a9e89d4 100644 --- a/src/musrgui/PSubTextEdit.h +++ b/src/musrgui/PSubTextEdit.h @@ -38,24 +38,28 @@ class PSubTextEdit : public QTextEdit { Q_OBJECT -public: - PSubTextEdit( QWidget *parent = 0, const char *name = 0 ); + public: + PSubTextEdit( QWidget *parent = 0, const char *name = 0 , const bool lifetimeCorrectionFlag = true); -protected: - virtual QPopupMenu *createPopupMenu( const QPoint &pos); + protected: + virtual QPopupMenu *createPopupMenu( const QPoint &pos); + + private slots: + void insertTitle(); + void insertParameterBlock(); + void insertTheoryBlock(); + void insertFunctionBlock(); + void insertAsymRunBlock(); + void insertSingleHistRunBlock(); + void insertNonMusrRunBlock(); + void insertCommandBlock(); + void insertFourierBlock(); + void insertPlotBlock(); + void insertStatisticBlock(); + + private: + bool fLifetimeCorrectionFlag; -private slots: - void insertTitle(); - void insertParameterBlock(); - void insertTheoryBlock(); - void insertFunctionBlock(); - void insertAsymRunBlock(); - void insertSingleHistRunBlock(); - void insertNonMusrRunBlock(); - void insertCommandBlock(); - void insertFourierBlock(); - void insertPlotBlock(); - void insertStatisticBlock(); }; #endif // _PSUBTEXTEDIT_H_ diff --git a/src/musrgui/PTextEdit.cpp b/src/musrgui/PTextEdit.cpp index d7a4f739..6132a4ef 100644 --- a/src/musrgui/PTextEdit.cpp +++ b/src/musrgui/PTextEdit.cpp @@ -329,7 +329,7 @@ void PTextEdit::load( const QString &f ) { if ( !QFile::exists( f ) ) return; - PSubTextEdit *edit = new PSubTextEdit( fTabWidget ); + PSubTextEdit *edit = new PSubTextEdit( fTabWidget, "PSubTextEdit", fAdmin->getLifetimeCorrectionFlag() ); edit->setTextFormat( PlainText ); edit->setFamily("Courier"); edit->setPointSize(11); // 11pt @@ -410,7 +410,7 @@ bool PTextEdit::validRunList(const QString runList) */ void PTextEdit::fileNew() { - PSubTextEdit *edit = new PSubTextEdit( fTabWidget ); + PSubTextEdit *edit = new PSubTextEdit( fTabWidget, "PSubTextEdit", fAdmin->getLifetimeCorrectionFlag() ); edit->setTextFormat( PlainText ); edit->setFamily("Courier"); edit->setPointSize(11); // 11pt diff --git a/src/musrgui/musrgui_startup.xml b/src/musrgui/musrgui_startup.xml index 1e438ed1..3df63081 100644 --- a/src/musrgui/musrgui_startup.xml +++ b/src/musrgui/musrgui_startup.xml @@ -13,6 +13,12 @@ mue4 psi root-npp + y + + + For a detailed description of the aim and structure of a msr-file see http://wiki.intranet.psi.ch. + +