GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
QFitDataWidget.cpp
Go to the documentation of this file.
1 // $Id$
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #include "QFitDataWidget.h"
15 #include "QFitItem.h"
16 #include "TGo4FitData.h"
17 #include "TGo4FitModel.h"
18 #include "TGo4Fitter.h"
19 #include "TGo4FitGuiTypes.h"
20 
21 QFitDataWidget::QFitDataWidget(QWidget *parent, const char *name)
22  : QFitNamedWidget(parent, name)
23 {
24  setupUi(this);
25 
26  QObject::connect(NumCalibrSpin, QOverload<int>::of(&QSpinBox::valueChanged), this, &QFitDataWidget::NumCalibrSpin_valueChanged);
27  QObject::connect(UseBinsChk, &QCheckBox::toggled, this, &QFitDataWidget::UseBinsChk_toggled);
28  QObject::connect(SigmaCmb, QOverload<int>::of(&QComboBox::activated), this, &QFitDataWidget::SigmaCmb_activated);
29  QObject::connect(SigmaEdt, &QGo4LineEdit::textChanged, this, &QFitDataWidget::SigmaEdt_textChanged);
30  QObject::connect(BinsLimitEdt, &QGo4LineEdit::textChanged, this, &QFitDataWidget::BinsLimitEdt_textChanged);
31  QObject::connect(AmplChk, &QCheckBox::toggled, this, &QFitDataWidget::AmplChk_toggled);
32  QObject::connect(UseBuffersChk, &QCheckBox::toggled, this, &QFitDataWidget::UseBuffersChk_toggled);
33 }
34 
36 {
37  return dynamic_cast<TGo4FitData *>(GetObject());
38 }
39 
41 {
43 
44  if(GetData()) {
45  if(GetData()->GetDataType()==TGo4FitData::dtHistogram) DataInfoLbl->setText("Data type: histogramic");
46  else DataInfoLbl->setText("Data type: set of points");
47  DataInfoLbl->adjustSize();
48 
49  AmplChk->setChecked(GetData()->GetAmplPar() != nullptr);
50  AmplChk->setEnabled(GetData()->CanAmplTouch());
51 
52  NumCalibrSpin->setValue(GetData()->GetNumberOfTransSlots());
53  UseBinsChk->setChecked(GetData()->GetUseBinScale());
54  SigmaCmb->setCurrentIndex(GetData()->GetSigmaSource());
55  SigmaEdt->setEnabled(GetData()->GetSigmaSource()==2);
56  SigmaEdt->setText(QString::number(GetData()->GetSigmaValue()));
57  BinsLimitEdt->setText(QString::number(GetData()->GetExcludeLessThen()));
58  UseBuffersChk->setChecked(GetData()->GetUseBuffers());
59 
60  QString info("Models:");
61 
62  TGo4Fitter *fitter = dynamic_cast<TGo4Fitter*> (GetItem()->Parent()->Object());
63  if (fitter)
64  for (Int_t nmodel = 0; nmodel < fitter->GetNumModel(); nmodel++) {
65  TGo4FitModel *model = fitter->GetModel(nmodel);
66  if (model->IsAssignTo(GetData()->GetName())) {
67  info += " ";
68  info += model->GetName();
69  }
70  }
71  ModelsLbl->setText(info);
72  ModelsLbl->adjustSize();
73  }
74 }
75 
77 {
78  if (!fbFillWidget && GetData())
79  if (GetData()->SetNumberOfTransSlots(num)) {
80  if (GetFitter())
82  UpdateWidgetItem(true);
84  }
85 }
86 
88 {
89  if (!fbFillWidget && GetData())
90  GetData()->SetUseBinScale(zn);
91 }
92 
94 {
95  if (!fbFillWidget && GetData()) {
96  GetData()->SetSigmaSource(zn, -1.);
97  SigmaEdt->setEnabled(zn == 2);
98  }
99 }
100 
101 void QFitDataWidget::SigmaEdt_textChanged( const QString & value)
102 {
103  if(!fbFillWidget && GetData()) {
104  bool ok = true;
105  double zn = value.toDouble(&ok);
106  if(ok) GetData()->SetSigmaValue(zn);
107  }
108 }
109 
110 void QFitDataWidget::BinsLimitEdt_textChanged( const QString & value)
111 {
112  if (!fbFillWidget && GetData()) {
113  bool ok = true;
114  double zn = value.toDouble(&ok);
115  if (ok)
117  }
118 }
119 
121 {
122  if (!fbFillWidget && GetData() && GetData()->CanAmplTouch()) {
123  bool res = false;
124  if (chk)
125  res = GetData()->MakeAmpl();
126  else
127  res = GetData()->RemoveAmpl();
128  if (res)
130  }
131 }
132 
134 {
135  if (!fbFillWidget && GetData())
136  GetData()->SetUseBuffers(zn);
137 }
void SetUpdateSlotList()
void SetUseBuffers(Bool_t iUse)
void FillSpecificData() override
void SetSigmaValue(Double_t SigmaValue)
Definition: TGo4FitData.h:112
virtual void NumCalibrSpin_valueChanged(int num)
void SetExcludeLessThen(Double_t limit=0.)
Definition: TGo4FitData.h:117
void SetSigmaSource(Int_t TakeFrom, Double_t SigmaValue=1.)
Definition: TGo4FitData.h:101
bool fbFillWidget
Definition: QFitWidget.h:63
virtual void BinsLimitEdt_textChanged(const QString &value)
Bool_t IsAssignTo(const char *DataName) const
Definition: TGo4FitModel.h:141
virtual void SigmaEdt_textChanged(const QString &value)
virtual void UseBinsChk_toggled(bool zn)
void FillSpecificData() override
TGo4FitModel * GetModel(Int_t n)
Definition: TGo4Fitter.cxx:200
virtual void UpdateItemsOfType(int typ, bool allitems=false)
Definition: QFitWidget.cpp:98
Int_t GetNumModel() const
Definition: TGo4Fitter.h:178
virtual void AmplChk_toggled(bool chk)
TObject * Object() const
Definition: QFitItem.h:27
virtual TObject * GetObject()
Definition: QFitWidget.cpp:50
QFitItem * Parent() const
Definition: QFitItem.h:35
virtual QFitItem * GetItem()
Definition: QFitWidget.cpp:45
QFitDataWidget(QWidget *parent=nullptr, const char *name=nullptr)
void SetUseBinScale(Bool_t iUseBinScale)
Definition: TGo4FitData.h:73
Bool_t MakeAmpl(Bool_t isFixed=kFALSE)
virtual TGo4FitData * GetData()
virtual void SigmaCmb_activated(int zn)
virtual void UseBuffersChk_toggled(bool)
virtual TGo4Fitter * GetFitter()
Definition: QFitWidget.cpp:57
virtual void UpdateWidgetItem(bool trace)
Definition: QFitWidget.cpp:86