proper implementation of PGetSingleHistoRunBlockDialog

This commit is contained in:
nemu 2009-03-16 07:47:33 +00:00
parent aa99881488
commit e3eb423cbe
9 changed files with 259 additions and 47 deletions

View File

@ -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;
}

View File

@ -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_

View File

@ -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;
}
//----------------------------------------------------------------------------------------------------

View File

@ -40,29 +40,25 @@
/**
* <p>
*/
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; i<str.length(); i++) {
if (!str[i].isDigit()) {
valid = false;
break;
}
}
str = "map " + fMap_lineEdit->text() + "\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;
}

View File

@ -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);

View File

@ -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 @@
/**
* <p>
*/
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 <b>background</b> or <b>backgr.fix</b> is needed!\nWill set <b>background</b> 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 <b>background</b>, <b>backgr.fix</b>, or <b>backgr.fit</b> is needed!\nWill set <b>background</b> 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);
}
}
//----------------------------------------------------------------------------------------------------

View File

@ -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_

View File

@ -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

View File

@ -13,6 +13,12 @@
<beamline>mue4</beamline>
<institute>psi</institute>
<file_format>root-npp</file_format>
<lifetime_correction>y</lifetime_correction>
</msr_file_defaults>
<help_section>
<help_main>
For a detailed description of the aim and structure of a msr-file see http://wiki.intranet.psi.ch.
</help_main>
</help_section>
</musrgui_startup>