18 #include <QtCore/QSignalMapper>
23 #include <QMessageBox>
24 #include <QApplication>
25 #include <QFileDialog>
26 #include <QInputDialog>
29 #include "TObjArray.h"
37 #include "TPaveStats.h"
41 #include "TGo4LockGuard.h"
104 QObject::connect(FitList, SIGNAL(currentItemChanged ( QTreeWidgetItem *, QTreeWidgetItem * )),
this, SLOT(
FitList_currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)));
114 QObject::connect(Wiz_ModelList, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
this, SLOT(
Wiz_ModelList_doubleClicked(QListWidgetItem*)));
115 QObject::connect(Wiz_ModelList, SIGNAL(itemChanged(QListWidgetItem*)),
this, SLOT(
Wiz_ModelList_itemChanged(QListWidgetItem*)));
128 QObject::connect(Wiz_DataList, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
this, SLOT(
Wiz_DataList_doubleClicked(QListWidgetItem*)));
129 QObject::connect(Wiz_DataList, SIGNAL(itemClicked(QListWidgetItem*)),
this, SLOT(
Wiz_DataListSelect(QListWidgetItem*)));
130 QObject::connect(Wiz_DataList, SIGNAL(itemChanged(QListWidgetItem*)),
this, SLOT(
Wiz_DataListSelect(QListWidgetItem*)));
131 QObject::connect(Wiz_DataList, SIGNAL(itemPressed(QListWidgetItem*)),
this, SLOT(
Wiz_DataListSelect(QListWidgetItem*)));
132 QObject::connect(Wiz_ModelList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
this, SLOT(
Wiz_ModelListSelect(QListWidgetItem*)));
134 QObject::connect(LineParsChk, SIGNAL(toggled(
bool)),
this, SLOT(
LineParsChk_toggled(
bool)));
179 FitList->setContextMenuPolicy(Qt::CustomContextMenu);
198 QTableWidgetItem* item =
new QTableWidgetItem;
199 item->setFlags(item->flags() & ~
Qt::ItemIsEditable);
200 Wiz_DataSlotsTable->setItemPrototype(item);
201 Wiz_DataSlotsTable->setContextMenuPolicy(Qt::CustomContextMenu);
206 MenuBar =
new QMenuBar(MenuFrame);
209 MenuBar->setNativeMenuBar(kFALSE);
216 ViewMap =
new QSignalMapper(
this);
221 SettMap =
new QSignalMapper(
this);
257 ItemMap =
new QSignalMapper(
this);
261 Wiz_DataSlotsTable->horizontalHeader()->setStretchLastSection(
true);
262 Wiz_ParTable->horizontalHeader()->setStretchLastSection(
true);
270 gridLayout->setContentsMargins(3,3,3,3);
271 gridLayout->setSpacing(1);
274 MenuBar->setMinimumHeight(MenuFrame->height());
301 if (cl==0)
return false;
303 return (cl->InheritsFrom(TGo4Fitter::Class())) ||
304 (cl->InheritsFrom(TH1::Class())) ||
305 (cl->InheritsFrom(TGraph::Class()));
312 if (cl->InheritsFrom(TGo4Fitter::Class())) {
318 #if QT_VERSION < QT_VERSION_CHECK(6,0,0)
319 QPoint pos =
event->pos();
321 QPoint pos =
event->position().toPoint();
324 QWidget* w = childAt(pos);
326 if (w == Wiz_DataSlotsTable) {
327 QPoint pnt = Wiz_DataSlotsTable->mapFrom(
this, pos);
328 QTableWidgetItem* item = Wiz_DataSlotsTable->itemAt(pnt);
330 int nrow = item ? item->row() : -1;
332 if ((nrow<0) || (nrow>
fxWizSlots->GetLast()))
return;
342 }
else if(w == (QWidget*)FitList->viewport()) {
343 QPoint pnt = FitList->viewport()->mapFrom(
this, pos);
371 if (strcmp(linkname,
"Fitter")==0) {
433 if ((panel==0) || (pad==0))
return;
464 if ((panel!=0) && (pad!=0)) {
487 if (panel==0)
return;
537 AddLink(itemname.toLatin1().constData(),
"Fitter");
556 if (fitter==0)
return 0;
560 return dynamic_cast<TGo4Fitter*
> (fitter->Clone());
591 if ((panel!=0) && (pad!=0)) {
594 if (!overwrite && (fitterslot!=0))
608 if ( QMessageBox::information(0,
609 QString(
"Delete fitter"),
610 QString(
"Are you sure?"),
611 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
659 QTableWidget* tab = ParsTable;
665 for(
int ncol=0;ncol<tab->columnCount();ncol++) {
667 str+=tab->horizontalHeaderItem(ncol)->text();
671 for(
int nrow=0;nrow<tab->rowCount();nrow++) {
672 str = tab->verticalHeaderItem(nrow)->text();
673 for(
int ncol=0;ncol<tab->columnCount();ncol++) {
675 str+=tab->item(nrow, ncol)->text();
715 if (fitter==0)
return;
717 if (fitter->
GetNumData()!=1) { std::cout <<
" Incorrect data" << std::endl;
return; }
735 fitter->
AddPolynoms(data->GetName(),
"Pol", Smp_PolOrderSpin->value(), NumDim);
751 if (model && ((nmodel==1) || (nmodel==2)))
LocateModel(model, data,
false);
762 if (fitter==0)
return;
773 if (fitter==0)
return;
776 if (finder==0)
return;
780 else data = fitter->
GetData(0);
811 if (fitter==0)
return;
818 while (n<fitter->GetNumActions()) {
820 if (action==finder) n++;
827 QString cmd(
"MIGRAD ");
830 minuit->
AddCommand(cmd.toLatin1().constData());
875 if (selecteddata && (data!=selecteddata))
continue;
893 if (selecteddata==0) NeedPads = fitter->
GetNumData();
897 int DivX = (int)TMath::Sqrt(NeedPads*1.);
899 while (DivX*DivY<NeedPads) DivY++;
907 if (selecteddata && (data!=selecteddata))
continue;
909 const char* drawopt = 0;
923 if ((panel==0) || (pad==0))
continue;
946 Double_t x1 = x2 - gStyle->GetStatW();
947 Double_t y1 = y2 - gStyle->GetStatH();
949 if (LineParsChk->isChecked()) {
954 TPaveStats* stats =
dynamic_cast<TPaveStats*
> (pad->GetPrimitive(
"stats"));
956 x1 = stats->GetX1NDC();
957 x2 = stats->GetX2NDC();
958 y2 = stats->GetY1NDC() - 0.03;
959 y1 = y2 - (stats->GetY2NDC() - stats->GetY1NDC());
960 if (y1<0.02) y1 = 0.02;
963 TLegend* leg =
dynamic_cast<TLegend*
> (pad->GetPrimitive(
"fitlegend"));
965 x1 = leg->GetX1NDC();
966 x2 = leg->GetX2NDC();
967 y2 = leg->GetY1NDC() - 0.03;
968 y1 = y2 - (leg->GetY2NDC() - leg->GetY1NDC());
969 if (y1<0.02) y1 = 0.02;
972 TPaveStats* info =
dynamic_cast<TPaveStats*
>
975 bool infocreated =
false;
982 info =
new TPaveStats(x1,y1,x2,y2,
"brNDC");
983 info->SetFillColor(gStyle->GetStatColor());
984 info->SetFillStyle(gStyle->GetStatStyle());
985 info->SetBorderSize(gStyle->GetStatBorderSize());
986 info->SetTextFont(gStyle->GetStatFont());
987 if (gStyle->GetStatFont()%10 > 2)
988 info->SetTextSize(gStyle->GetStatFontSize());
989 info->SetFitFormat(gStyle->GetFitFormat());
990 info->SetStatFormat(gStyle->GetStatFormat());
991 info->SetTextColor(gStyle->GetStatTextColor());
992 info->SetTextAlign(12);
993 info->SetName(
"fitinfo");
996 info->AddText(data->GetName());
997 info->AddLine(0,0,0,0);
999 if (LineParsChk->isChecked())
1004 if (!model->
IsAssignTo(data->GetName()))
continue;
1006 if (LineParsChk->isChecked()) {
1007 Double_t ampl, pos, width;
1011 if (!model->
GetWidth(0,width)) width = 0.;
1013 bool recalculatew = (model->InheritsFrom(TGo4FitModelGauss1::Class()) ||
1014 model->InheritsFrom(TGo4FitModelGauss2::Class()) ||
1015 model->InheritsFrom(TGo4FitModelGaussN::Class())) &&
1017 double widthk = recalculatew ? 2.3548 : 1.0;
1019 TString tt = TString::Format(
"%7s | %s%s | %s%s %s%s",
1021 "%", gStyle->GetStatFormat(),
1022 "%", gStyle->GetStatFormat(),
1023 "%", gStyle->GetStatFormat());
1025 info->AddText(Form(tt.Data(), ampl, pos, width*widthk));
1028 for(Int_t np=0;np<model->
NumPars();np++) {
1030 if (len>maxparlen) maxparlen = len;
1032 TString tt = TString::Format(
"%s%ds = %s%s",
"%",maxparlen,
"%",gStyle->GetStatFormat());
1034 for(Int_t np=0;np<model->
NumPars();np++)
1044 TObject* model = fitter->
CreateDrawObject(
"Model", data->GetName(), kTRUE);
1049 TObject* model = fitter->
CreateDrawObject(
"Background", data->GetName(), kTRUE,
"Background");
1056 if (!model->
IsAssignTo(data->GetName()))
continue;
1058 TObject* comp = fitter->
CreateDrawObject(model->GetName(), data->GetName(), kTRUE, model->GetName());
1059 if (comp==0)
continue;
1087 if ( QMessageBox::information(0,
1088 QString(
"Clear fitter"),
1089 QString(
"Are you sure?"),
1090 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1102 if (fitter==0)
return;
1105 if ( QMessageBox::information(0,
1106 QString(
"Clear fitter"),
1107 QString(
"Are you sure?"),
1108 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1118 if (fitter==0)
return;
1120 QString fname(fitter->GetName());
1124 fname = QFileDialog::getSaveFileName(
this,
1125 "Save fitter dialog",
1127 "Root file (*.root)");
1128 if (fname.isNull())
return;
1133 TFile f(fname.toLatin1().constData(),
"recreate");
1139 TObject* obj = item->
Object();
1144 if (obj->InheritsFrom(TGo4Fitter::Class()))
1145 str = QInputDialog::getText(
this,
1146 QString(
"Go4 Fit Panel"),
1147 QString(
"Enter parameters for Print() command"),
1148 QLineEdit::Normal, str, &ok);
1156 ListStack->addWidget(widget);
1159 ListStack->setCurrentWidget(widget);
1173 if ((data==0) || (fitter==0))
return;
1176 if ( QMessageBox::information(0,
1177 QString(
"Delete data"),
1178 QString(
"Are you sure to delete ") + data->GetName(),
1179 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1195 if (fitter==0)
return;
1198 if ( QMessageBox::information(0,
1199 QString(
"Delete all data"),
1200 QString(
"Are you sure to delete all data objects"),
1201 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1216 if ((item==0) || (item->
Parent()==0))
return;
1220 if ((data==0) || (fitter==0))
return;
1223 if ( QMessageBox::information(0,
1224 QString(
"Delete models"),
1225 QString(
"Are you sure to delete models, associated to ") + data->GetName(),
1226 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1250 if ((model==0) || (fitter==0))
return;
1253 if ( QMessageBox::information(0,
1254 QString(
"Delete model"),
1255 QString(
"Are you sure to delete ") + model->GetName(),
1256 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1268 if (fitter==0)
return;
1271 if ( QMessageBox::information(0,
1272 QString(
"Delete all models"),
1273 QString(
"Are you sure to delete all models objects"),
1274 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1290 if ((fitter==0) || (model==0))
return;
1305 if (fitter==0)
return;
1308 if (data==0)
return;
1320 FitList->setCurrentItem(curr, QItemSelectionModel::Select);
1330 if (fitter==0)
return;
1343 FitList->setCurrentItem(curr, QItemSelectionModel::Select);
1349 if (item == 0)
return;
1352 if (model == 0)
return;
1364 if (model==0)
return;
1377 if ((model==0) || (fitter==0))
return;
1390 if ((model==0) || (fitter==0))
return;
1401 if (item==0)
return;
1407 int num = item->
Tag();
1412 if ( QMessageBox::information(0,
1413 QString(
"Remove condition"),
1414 QString(
"Are you sure to delete condition ") + item->text(0),
1415 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1431 if ( QMessageBox::information(0,
1432 QString(
"Delete conditions"),
1433 QString(
"Are you sure to delete all conditions"),
1434 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1448 if (item->
Object()->InheritsFrom(TGo4FitData::Class()))
1449 data = dynamic_cast<TGo4FitData*> (item->
Object());
1453 if ((model!=0) && (fitter!=0))
1460 Double_t minx = 0., maxx = 100., miny = 0., maxy = 100;
1464 minx = pad->GetUxmin(); maxx = pad->GetUxmax();
1465 miny = pad->GetUymin(); maxy = pad->GetUymax();
1469 Double_t ddx = 0.1*(maxx-minx);
1472 Double_t ddy = 0.1*(maxy-miny);
1479 if (
id==0) comp->
SetRange(0, minx, maxx);
else
1485 TCutG* cut =
new TCutG(name, 5);
1486 cut->SetTitle(
"range cut of X and Y axis");
1487 cut->SetPoint(0, minx, miny);
1488 cut->SetPoint(1, maxx, miny);
1489 cut->SetPoint(2, maxx, maxy);
1490 cut->SetPoint(3, minx, maxy);
1491 cut->SetPoint(4, minx, miny);
1500 if (item==0)
return;
1504 if(action && fitter) {
1506 if ( QMessageBox::information(0,
1507 QString(
"Delete action"),
1508 QString(
"Are you sure to delete ") + item->text(0),
1509 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1518 if ((item==0) || (item->
Parent()==0))
return;
1523 if(action && fitter) {
1529 FitList->setCurrentItem(item, QItemSelectionModel::Select);
1536 if ((item==0) || (fitter==0))
return;
1539 if (action==0)
return;
1553 if ((item==0) || (fitter==0))
return;
1571 if ( QMessageBox::information(0,
1572 QString(
"Delete output actions"),
1573 QString(
"Are you sure to delete all output actions") + item->text(0),
1574 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1586 if ( QMessageBox::information(0,
1587 QString(
"Delete all actions"),
1588 QString(
"Are you sure to delete all actions"),
1589 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1615 TObjArray* lst =
dynamic_cast<TObjArray*
> (item->
Parent()->
Object());
1617 if((depen==0) || (lst==0))
return;
1620 if ( QMessageBox::information(0,
1621 QString(
"Delete dependency item"),
1622 QString(
"Are you sure to delete ") + item->text(0),
1623 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1634 if (item==0)
return;
1635 TObjArray* lst =
dynamic_cast<TObjArray*
> (item->
Object());
1639 if ( QMessageBox::information(0,
1640 QString(
"Delete all"),
1641 QString(
"Are you sure to delete all items from ") + item->text(0),
1642 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1651 if (item==0)
return;
1653 TObjArray* lst =
dynamic_cast<TObjArray*
> (item->
Object());
1666 if (item==0)
return;
1669 if (pars==0)
return;
1676 if (item==0)
return;
1679 if (pars==0)
return;
1690 if (item==0)
return;
1692 if (pars==0)
return;
1695 if ( QMessageBox::information(0,
1696 QString(
"Delete all"),
1697 QString(
"Are you sure to delete all items"),
1698 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1707 if (item==0)
return;
1716 if (item==0)
return;
1729 if (item==0)
return;
1732 if (pars==0)
return;
1737 name = TString::Format(
"Par%d", num++);
1738 }
while (pars->
FindPar(name.Data()));
1739 pars->
CreatePar(name.Data(),
"additional parameter",0.);
1746 if (item==0)
return;
1750 if ((pars==0) || (par==0))
return;
1753 if ( QMessageBox::information(0,
1754 QString(
"Delete item"),
1755 QString(
"Are you sure to delete ") + par->GetName(),
1756 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1765 if (item==0)
return;
1769 if ((res==0) || (minuit==0))
return;
1772 if ( QMessageBox::information(0,
1773 QString(
"Delete result"),
1774 QString(
"Are you sure to delete ") + res->GetName(),
1775 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
1785 if (item==0)
return;
1789 for (
int n=0; n < item->childCount(); n++)
1790 UpdateItem(dynamic_cast<QFitItem*>(item->child(n)),
true);
1800 if (fititem==0)
return;
1802 QSignalMapper map(
this);
1809 menu.exec(FitList->viewport()->mapToGlobal(pnt));
1820 if (fititem==0)
return;
1850 QWidget* w = PageEmpty;
1852 case 1: w = PageSimple;
break;
1853 case 2: w = PageWizard;
break;
1854 case 3: w = PageExtended;
break;
1855 case 100: w = PageParameters;
break;
1857 if (w!=WidgetStack->currentWidget())
1858 WidgetStack->setCurrentWidget(w);
1866 if (info!=0) status=info;
else {
1868 status = QString(
"Active: ") +
ActivePad()->GetName();
1870 status +=
". Muiltifit";
1872 }
else status =
"Workspace";
1873 if (fitter==0) status+=
". No fitter";
1874 else status = status +
". Fitter: "+fitter->GetName();
1876 MainStatusLbl->setText(status);
1877 MainStatusLbl->update();
1878 MainStatusLbl->repaint();
1880 MainAttachBtn->setEnabled(
true);
1883 MainParsBtn->setText(
"Back");
1884 MainParsBtn->setToolTip(
"Back to last selected page");
1886 MainParsBtn->setText(
"Pars");
1887 MainParsBtn->setToolTip(
"Show list of fitter parameters");
1891 MainFitBtn->setEnabled(
false);
1892 MainDrawBtn->setEnabled(
false);
1893 MainFindBtn->setEnabled(
false);
1894 MainParsBtn->setEnabled(
false);
1896 MainFitBtn->setEnabled((fitter->
GetNumData()>0) &&
1898 MainDrawBtn->setEnabled(fitter->
GetNumData()>0);
1901 MainParsBtn->setEnabled(
true);
1914 itemtext = item->text(0);
2006 if (panel!=0) padname = QString(
"panel \"") + panel->windowTitle() +
"\"";
2037 case 99: parentWidget()->close();
break;
2044 if ((
ItemMenu==0) || (item==0))
return;
2052 if (item==0) item =
dynamic_cast<QFitItem*
> (FitList->currentItem());
2053 if (item==0)
return;
2115 QWidget::focusInEvent(event);
2121 QWidget::changeEvent(event);
2134 PF_AmplLbl->setText(QString(
"Threshold: ")+QString::number(finder->
Get0MaxAmplFactor()*100)+
"%");
2136 PF_AmplLbl->setText(
"Threshold:");
2137 PF_AmplLbl->adjustSize();
2145 PF_RelNoiseLbl->setText(QString(
"Noise factor: ")+QString::number(finder->
Get2NoiseFactor()));
2147 PF_RelNoiseLbl->setText(
"Noise factor: ");
2148 PF_RelNoiseLbl->adjustSize();
2155 double zn = str.toDouble(&ok);
2167 double zn = str.toDouble(&ok);
2179 double zn = str.toDouble(&ok);
2220 double zn = str.toDouble(&ok);
2246 bool updatestack =
false, updatepaint =
false;
2248 Wiz_DataList->clear();
2260 QListWidgetItem* item =
new QListWidgetItem(data->GetName());
2261 if (strcmp(data->GetName(),
fxWizDataName.toLatin1().constData())==0) {
2263 item->setSelected(
true);
2265 Wiz_DataList->addItem(item);
2286 Wiz_PFSetupBtn->setEnabled(data!=0);
2289 Wiz_RebuildDataBtn->setVisible(
false);
2290 Wiz_AddDataBtn->setVisible(
true);
2291 Wiz_DelDataBtn->setVisible(
true);
2292 Wiz_AddDataBtn->setEnabled(fitter!=0);
2293 Wiz_DelDataBtn->setEnabled(data!=0);
2295 Wiz_RebuildDataBtn->setVisible(
true);
2296 Wiz_RebuildDataBtn->setEnabled(fitter!=0);
2297 Wiz_AddDataBtn->setVisible(
false);
2298 Wiz_DelDataBtn->setVisible(
false);
2306 Wiz_ModelList->clear();
2318 if (!model->
IsAssignTo(data->GetName()))
continue;
2320 bool assign =
false;
2321 if (data && model->
IsAssignTo(data->GetName())) assign =
true;
2322 QListWidgetItem* item =
new QListWidgetItem(model->GetName());
2323 item->setCheckState(assign ? Qt::Checked : Qt::Unchecked );
2324 if (strcmp(model->GetName(),
fxWizModelName.toLatin1().constData())==0) {
2326 item->setSelected(
true);
2328 Wiz_ModelList->addItem(item);
2333 Wiz_ModelList->setCurrentRow(selindx);
2366 Wiz_AddModelBtn->setEnabled(
true);
2367 Wiz_DelModelBtn->setEnabled(model!=0);
2368 Wiz_CloneModelBtn->setEnabled(model!=0);
2369 Wiz_ShowAllMod->setEnabled(
true);
2371 Wiz_AddModelBtn->setEnabled(
false);
2372 Wiz_DelModelBtn->setEnabled(
false);
2373 Wiz_CloneModelBtn->setEnabled(
false);
2374 Wiz_ShowAllMod->setEnabled(
false);
2387 QWidget* target = 0;
2391 target = Wiz_EmptyPage;
2394 target = Wiz_FitterPage;
2398 Wiz_FitFuncCmb->setCurrentIndex(typ);
2408 if (model==0)
break;
2410 target = Wiz_ModelPage;
2414 Wiz_ModelInfoLbl->setText(modelinfo);
2430 target = Wiz_DataPage;
2432 QString datainfo(
"Data: ");
2433 datainfo += data->GetName();
2434 datainfo +=
" of class: ";
2435 datainfo += data->ClassName();
2437 datainfo +=
"\nCounts=";
2439 datainfo += QString::number(v);
2442 datainfo +=
"\nIntegral=";
2444 datainfo += QString::number(v);
2446 Wiz_DataInfoLbl->setText(datainfo);
2448 QString models(
"Models:");
2452 if (models.length()>45) {
2457 models += model->GetName();
2460 Wiz_DataModelsLbl->setText(models);
2462 Wiz_DataBufChk->setChecked(
2470 Wiz_DataSlotsTable->setRowCount(
fxWizSlots->GetLast()+1);
2474 if (slot==0)
continue;
2476 Wiz_DataSlotsTable->setVerticalHeaderItem(n,
new QTableWidgetItem(slot->GetName()));
2480 Wiz_DataSlotsTable->setItem(n, 0,
new QTableWidgetItem(
" --- "));
2481 Wiz_DataSlotsTable->setItem(n, 1,
new QTableWidgetItem(slot->
GetClass()->GetName()));
2482 Wiz_DataSlotsTable->setItem(n, 2,
new QTableWidgetItem(
"false"));
2484 Wiz_DataSlotsTable->setItem(n, 0,
new QTableWidgetItem(obj->GetName()));
2485 Wiz_DataSlotsTable->setItem(n, 1,
new QTableWidgetItem(obj->ClassName()));
2486 if (slot->
GetOwned()) Wiz_DataSlotsTable->setItem(n, 2,
new QTableWidgetItem(
"true"));
2487 else Wiz_DataSlotsTable->setItem(n, 2,
new QTableWidgetItem(
"false"));
2493 Wiz_DataSlotsTable->resizeColumnsToContents ();
2498 Wiz_DrawDataBtn->setEnabled(data!=0);
2503 target = Wiz_PFPage;
2506 if (finder==0)
break;
2516 PF_MinWidthEdt->setText(QString::number(finder->
Get0MinWidth()));
2517 PF_MaxWidthEdt->setText(QString::number(finder->
Get0MaxWidth()));
2521 PF_WidthEdit->setText(QString::number(finder->
Get1LineWidth()));
2524 PF_RelNoiseSlider->setValue(101 - zn);
2533 if (target) Wiz_Stack->setCurrentWidget(target);
2534 else Wiz_Stack->setCurrentWidget(Wiz_EmptyPage);
2551 if ((fitter!=0) && (data!=0) && (
fiPaintMode==1)) {
2559 if ((fitter!=0) && (model!=0) && (
fiPaintMode==2)) {
2573 QString name = item->text();
2588 QString name = item->text();
2598 if ((fitter!=0) && (data!=0) && (model!=0)) {
2599 bool wasassigned = model->
IsAssignTo(data->GetName());
2600 bool isassigned = (item->checkState() == Qt::Checked);
2602 if (wasassigned != isassigned) {
2604 else fitter->
AssignModelTo(model->GetName(), data->GetName());
2620 QSignalMapper map(
this);
2625 QAction* act = menu.exec(Wiz_AddDataBtn->mapToGlobal(QPoint(5,5)));
2629 for(
id=0;
id<100;
id++)
2630 if (act == (QAction*) map.mapping(
id))
break;
2663 QSignalMapper map(
this);
2668 QAction* act = menu.exec(Wiz_AddModelBtn->mapToGlobal(QPoint(5,5)));
2671 for(
id=0;
id<100;
id++)
2672 if (act == (QAction*) map.mapping(
id))
break;
2686 if (fitter==0)
return;
2689 if ( QMessageBox::information(0,
"Delete models",
2690 QString(
"Are you sure to delete selected models"),
2691 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
2693 for(uint n=0; n<Wiz_ModelList->count();n++) {
2694 if (!Wiz_ModelList->item(n)->isSelected())
continue;
2695 QString name = Wiz_ModelList->item(n)->text();
2696 fitter->
RemoveModel(name.toLatin1().constData(), kTRUE);
2710 if (fitter==0)
return;
2712 for(uint n=0; n<Wiz_ModelList->count();n++) {
2713 if (!Wiz_ModelList->item(n)->isSelected())
continue;
2714 QString name = Wiz_ModelList->item(n)->text();
2715 fitter->
CloneModel(name.toLatin1().constData());
2744 fitter->SetName(name.toLatin1().constData());
2764 if ((data==0) || (fitter==0))
return;
2766 QString newname = QInputDialog::getText(
this,
"Change data name",
"Input new name", QLineEdit::Normal, data->GetName(), &ok);
2767 if (ok && (newname.length()>0) && (newname!=data->GetName())) {
2768 if (fitter->
FindData(newname.toLatin1().constData())) {
2769 QMessageBox::information(
this,
"Fit panel",
"Unable to rename data.\n Name " +
2770 newname +
" already exists",
"return");
2774 data->SetName(newname.toLatin1().constData());
2786 if ((model==0) || (fitter==0))
return;
2788 QString newname = QInputDialog::getText(
this,
"Change model name",
"Input new name", QLineEdit::Normal, model->GetName(), &ok);
2789 if (ok && (newname.length()>0) && (newname!=model->GetName())) {
2790 if (fitter->
FindModel(newname.toLatin1().constData())) {
2791 QMessageBox::information(
this,
"Fit panel", QString(
"Unable to rename model.\n Name ")+
2792 newname +
" already exists\n",
"Return");
2795 model->SetName(newname.toLatin1().constData());
2806 QString name = item->text();
2808 bool checked = (item->checkState() == Qt::Checked);
2818 if ((fitter!=0) && (data!=0) && (model!=0)) {
2819 bool wasassigned = model->
IsAssignTo(data->GetName());
2821 if (wasassigned!=checked) {
2823 else fitter->
AssignModelTo(model->GetName(), data->GetName());
2866 QTableWidgetItem* item = Wiz_DataSlotsTable->itemAt(pnt);
2868 int nrow = item ? item->row() : -1;
2870 if ((nrow<0) || (nrow>
fxWizSlots->GetLast()))
return;
2873 if (slot==0)
return;
2875 QSignalMapper map(
this);
2879 QAction* act = menu.exec(Wiz_DataSlotsTable->mapToGlobal(pnt));
2881 for (
int id=0;
id<10000;
id++)
2882 if (act == (QAction*) map.mapping(
id))
2920 QApplication::setOverrideCursor(Qt::WaitCursor);
2924 QApplication::restoreOverrideCursor();
2948 if (fitter==0)
return;
2953 if ((FF==0) && (NDF==0)) Par_FitterResLbl->hide();
2955 Par_FitterResLbl->setText(
"Result: Fit func = " + QString::number(FF) +
2956 " NDF = " + QString::number(NDF));
2957 Par_FitterResLbl->show();
2969 if (fitter==0)
return;
2972 WidgetStack->setCurrentWidget(PageParameters);
2985 if ((table==0) || (fitter==0) || (TableList==0))
return;
2987 if (model && LinesView)
return;
3006 for (
int naxis=0;naxis<10;naxis++)
3011 table->setColumnCount(nfcol+(MaxAxis+1)*2);
3012 table->setHorizontalHeaderItem(0,
new QTableWidgetItem(
"Amplitude"));
3016 case 1: capt =
"Counts";
break;
3017 case 2: capt =
"Integral";
break;
3018 case 3: capt =
"Gauss Int";
break;
3020 if (!capt.isEmpty()) {
3021 table->setHorizontalHeaderItem(1,
new QTableWidgetItem(capt));
3022 table->setHorizontalHeaderItem(2,
new QTableWidgetItem(
"Error"));
3025 for (
int naxis=0;naxis<=MaxAxis;naxis++) {
3026 capt = QString(
"Position ") + QString::number(naxis);
3027 table->setHorizontalHeaderItem(nfcol + naxis*2,
new QTableWidgetItem(capt));
3029 capt = QString(
"FWHM ");
3031 capt = QString(
"Sigma ");
3032 capt += QString::number(naxis);
3033 table->setHorizontalHeaderItem(nfcol+1 + naxis*2,
new QTableWidgetItem(capt));
3042 bool recalculatew = (m->InheritsFrom(TGo4FitModelGauss1::Class()) ||
3043 m->InheritsFrom(TGo4FitModelGauss2::Class()) ||
3044 m->InheritsFrom(TGo4FitModelGaussN::Class())) &&
3046 double widthk = recalculatew ? 2.3548 : 1.0;
3048 table->setVerticalHeaderItem(n,
new QTableWidgetItem(m->GetName()));
3050 QTableWidgetItem* item0 =
new QTableWidgetItem(QString::number(m->
GetAmplValue()));
3054 item0->setFlags(item0->flags() & ~
Qt::ItemIsEnabled);
3055 table->setItem(n, 0, item0);
3077 QTableWidgetItem* item1;
3079 item1 =
new QTableWidgetItem(
"---");
3081 item1 =
new QTableWidgetItem(QString::number(v));
3082 item1->setFlags(item1->flags() & ~
Qt::ItemIsEnabled);
3083 table->setItem(n, 1, item1);
3085 QTableWidgetItem* item2;
3087 item2 =
new QTableWidgetItem(
"---");
3089 item2 =
new QTableWidgetItem(QString::number(amplpar->
GetError() / amplpar->
GetValue() * v));
3090 item2->setFlags(item2->flags() & ~
Qt::ItemIsEnabled);
3091 table->setItem(n, 2, item2);
3094 for (
int naxis=0;naxis<=MaxAxis;naxis++) {
3096 Double_t pos, width;
3098 QTableWidgetItem* item;
3101 item =
new QTableWidgetItem(QString::number(pos));
3103 item =
new QTableWidgetItem(
"---");
3104 item->setFlags(item->flags() & ~
Qt::ItemIsEnabled);
3107 table->setItem(n, nfcol+naxis*2, item);
3110 item =
new QTableWidgetItem(QString::number(width*widthk));
3112 item =
new QTableWidgetItem(
"---");
3113 item->setFlags(item->flags() & ~
Qt::ItemIsEnabled);
3115 table->setItem(n, nfcol+1+naxis*2, item);
3121 TGo4FitParsList* pars = (model==0) ? dynamic_cast<TGo4FitParsList*> (fitter) :
3123 if (pars==0)
return;
3125 for(Int_t n=0; n<pars->
NumPars();n++)
3126 TableList->Add(pars->
GetPar(n));
3128 table->setColumnCount(6);
3129 table->setHorizontalHeaderItem(0,
new QTableWidgetItem(
"Fixed"));
3130 table->setHorizontalHeaderItem(1,
new QTableWidgetItem(
"Value"));
3131 table->setHorizontalHeaderItem(2,
new QTableWidgetItem(
"Error"));
3132 table->setHorizontalHeaderItem(3,
new QTableWidgetItem(
"Epsilon"));
3133 table->setHorizontalHeaderItem(4,
new QTableWidgetItem(
"Min"));
3134 table->setHorizontalHeaderItem(5,
new QTableWidgetItem(
"Max"));
3136 table->setRowCount(TableList->GetLast()+1);
3138 for(Int_t n=0;n<=TableList->GetLast();n++) {
3140 if (par==0)
continue;
3142 if (model) table->setVerticalHeaderItem(n,
new QTableWidgetItem(par->GetName()));
3143 else table->setVerticalHeaderItem(n,
new QTableWidgetItem(par->
GetFullName()));
3145 QTableWidgetItem* checkitem =
new QTableWidgetItem(
"fix");
3146 checkitem->setCheckState(par->
GetFixed() ? Qt::Checked : Qt::Unchecked);
3147 table->setItem(n, 0, checkitem);
3149 QTableWidgetItem* item =
new QTableWidgetItem(QString::number(par->
GetValue()));
3151 item->setFlags(item->flags() & ~
Qt::ItemIsEnabled);
3152 table->setItem(n, 1, item);
3154 table->setItem(n, 2,
new QTableWidgetItem(QString::number(par->
GetError())));
3156 Double_t eps, min, max;
3157 if (par->
GetEpsilon(eps)) table->setItem(n, 3,
new QTableWidgetItem(QString::number(eps)));
3158 else table->setItem(n, 3,
new QTableWidgetItem(
""));
3161 table->setItem(n, 4,
new QTableWidgetItem(QString::number(min)));
3162 table->setItem(n, 5,
new QTableWidgetItem(QString::number(max)));
3164 table->setItem(n, 4,
new QTableWidgetItem(
""));
3165 table->setItem(n, 5,
new QTableWidgetItem(
""));
3169 table->resizeColumnsToContents();
3170 table->resizeRowsToContents();
3180 if ((nrow<0) || (nrow>TableList->GetLast()))
return;
3184 if (model==0)
return;
3186 bool recalculatew = (model->InheritsFrom(TGo4FitModelGauss1::Class()) ||
3187 model->InheritsFrom(TGo4FitModelGauss2::Class()) ||
3188 model->InheritsFrom(TGo4FitModelGaussN::Class())) &&
3190 double widthk = recalculatew ? 2.3548 : 1.0;
3193 double zn = table->item(nrow, ncol)->text().toDouble(&ok);
3198 int naxis = (ncol-nfcol) /2;
3199 if ((ncol-nfcol) % 2 == 0) model->
SetPosition(naxis, zn);
3200 else model->
SetWidth(naxis, zn/widthk);
3210 if (table->item(nrow,0)->checkState()==Qt::Checked) par->
SetFixed(kTRUE);
else
3211 if (table->item(nrow,0)->checkState()==Qt::Unchecked) par->
SetFixed(kFALSE);
3213 table->item(nrow,1)->setFlags(table->item(nrow,1)->flags() & ~
Qt::ItemIsEnabled);
3215 table->item(nrow,1)->setFlags(table->item(nrow,1)->flags() | Qt::ItemIsEnabled);
3221 double zn = table->item(nrow,1)->text().toDouble(&ok);
3231 double zn = table->item(nrow,2)->text().toDouble(&ok);
3236 double zn = table->item(nrow,3)->text().toDouble(&ok);
3241 std::cout <<
"Changing col " << ncol << std::endl;
3244 bool range_changed =
false;
3245 double zn = table->item(nrow, ncol)->text().toDouble(&ok);
3248 bool changemin =
false;
3249 bool changemax =
false;
3256 if (min<vvv) max = 2*vvv - min;
3261 if (max>vvv) min = 2*vvv - max;
3268 if (max<min) { max = min; changemax =
true; }
3272 if (min>max) { min = max; changemin =
true; }
3275 range_changed =
true;
3278 table->item(nrow, 4)->setText(QString::number(min));
3280 table->item(nrow, 5)->setText(QString::number(max));
3283 if ((table->item(nrow, ncol)->text().length()==0) &&
3284 (table->item(nrow, 9-ncol)->text().length()==0)) {
3286 range_changed =
true;
3291 if (range_changed) {
3293 table->item(nrow,0)->
3294 setCheckState(par->
GetFixed() ? Qt::Checked : Qt::Unchecked);
3296 table->item(nrow,1)->setFlags(table->item(nrow,1)->flags() & ~
Qt::ItemIsEnabled);
3298 table->item(nrow,1)->setFlags(table->item(nrow,1)->flags() | Qt::ItemIsEnabled);
3299 table->item(nrow,1)->setText(QString::number(par->
GetValue()));
3335 Wiz_PFPolynSpin->setEnabled(zn);
3427 if ((panel==0) || (pad==0))
return 0;
3444 if ((fitter==0) || (panel==0) || (pad==0))
return;
3448 for (Int_t n=0;n<npads;n++) {
3449 TPad* subpad = panel->
GetSubPad(pad, n,
false);
3452 if (obj==0)
continue;
3456 if (obj->InheritsFrom(TH1::Class()))
3459 if (obj->InheritsFrom(TGraph::Class()))
3509 if (fitter) Wiz_FitNameEdt->setText(QString(fitter->GetName()));
3510 else Wiz_FitNameEdt->setText(QString(
""));
3532 FitList->setSortingEnabled(
false);
3540 fitteritem->setExpanded(
true);
3541 FitList->setCurrentItem(fitteritem, QItemSelectionModel::Select);
3555 if (fitter==0)
return;
3557 for(Int_t n = 0; n<fitter->
NumSlots();n++) {
3559 if (pad==0)
continue;
3568 if((item==0) || (menu==0))
return false;
3573 AddIdAction(menu, map,
"Create appropriate fitter", 9);
3583 AddIdAction(menu, map,
"Memorize parameters", 706);
3584 AddIdAction(menu, map,
"Remember parameters", 707);
3591 AddIdAction(menu, map,
"Remove associated models", 102);
3619 if (fitter && model) {
3620 AddIdAction(menu, map,
"Clear all assignments", 301);
3621 AddIdAction(menu, map,
"Assign to all data", 302);
3622 menu->addSeparator();
3630 AddIdAction(menu, map, QString(
"Clear assignment to ") + item->text(0), 303);
3633 AddIdAction(menu, map,
"Remove range condition", 401);
3636 AddIdAction(menu, map,
"Remove range condition", 401);
3643 menu->addSeparator();
3649 menu->addSeparator();
3666 AddIdAction(menu, map,
"Execute norm actions", 504);
3667 AddIdAction(menu, map,
"Execute all actions", 507);
3669 AddIdAction(menu, map,
"Delete output actions", 506);
3670 menu->addSeparator();
3674 AddIdAction(menu, map,
"Add amplitude estimation", 511);
3702 AddIdAction(menu, map,
"Memorize parameters", 706);
3703 AddIdAction(menu, map,
"Remember parameters", 707);
3707 AddIdAction(menu, map,
"Delete result entry", 801);
3719 AddIdAction(menu, map,
"Update slots from sources", 904);
3722 return ! menu->isEmpty();
3727 if ((slot==0) || (menu==0))
return false;
3730 AddIdAction(menu, map,
"Clone object in slot", 1000);
3733 AddIdAction(menu, map,
"Clear object in slot", 1001);
3738 if (!menu->isEmpty()) menu->addSeparator();
3741 AddIdAction(menu, map,
"Brake connection to slot", 1004);
3744 for(Int_t n=0;n<fitter->
NumSlots();n++) {
3750 if (!menu->isEmpty()) menu->addSeparator();
3754 if (slot->
GetClass() == TGo4FitAxisTrans::Class()) {
3755 AddIdAction(menu, map, TGo4FitLinearTrans::Class()->GetName(), 1300);
3756 AddIdAction(menu, map, TGo4FitMatrixTrans::Class()->GetName(), 1301);
3759 return ! menu->isEmpty();
3767 if ((slot==0) || (fitter==0))
return;
3779 if ( QMessageBox::information(0,
3780 QString(
"Clear slot"),
3781 QString(
"Are you sure to clear object from slot ") + slot->GetName(),
3782 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
3787 for(Int_t i=0;i<fitter->
NumSlots();i++) {
3806 if ((
id>=1100) && (
id<1200)) obj =
CreateData(
id-1100,
"Data");
else
3807 if ((
id>=1200) && (
id<1300)) obj =
CreateModel(
id-1200,
"Model", 0, 0);
else
3808 if (
id==1300) obj =
new TGo4FitLinearTrans(
"Trans",
"Linear axis transformation");
else
3809 if (
id==1301) obj =
new TGo4FitMatrixTrans(
"Trans",
"Matrix axis transformation");
else
3822 item->setExpanded(
true);
3829 if (item==0)
return;
3834 while (item->childCount() > 0)
3835 delete item->child(0);
3866 if (model==0)
break;
3900 if (fitter==0)
break;
3904 if (action->InheritsFrom(TGo4FitterConfig::Class())) ot =
FitGui::ot_config;
else
3929 if (minuit==0)
break;
3940 if (pars==0)
return;
3941 for (Int_t n = pars->
NumPars()-1; n>=0;n--)
3952 if (obj->InheritsFrom(TGo4FitData::Class()))
3956 if (obj->InheritsFrom(TGo4FitModel::Class()))
3960 if (obj->InheritsFrom(TGo4FitLinearTrans::Class()))
3964 if (obj->InheritsFrom(TGo4FitMatrixTrans::Class()))
3968 if (obj->InheritsFrom(TGo4FitAxisTrans::Class()))
3977 if (fitter==0)
break;
3996 if (trace && (item->
Object()!=0)) {
3998 if (topitem==0)
return;
4001 QTreeWidgetItemIterator iter(topitem);
4005 if ((it!=0) && (it!=item) &&
4015 if (item==0)
return;
4028 if (par) text +=
" = " + QString::number(par->
GetValue());
4041 Double_t left, right;
4043 text = QString::number(naxis) +
": ";
4046 case 0: text+=
"[" + QString::number(left) +
"..." + QString::number(right) +
"]";
break;
4047 case 1: text+=
"... " + QString::number(left) +
"] [" + QString::number(right) +
" ...";
break;
4048 case 2: text+=
"[" + QString::number(left) +
" ...";
break;
4049 case 3: text+=
"... " + QString::number(right) +
"]";
break;
4065 if (depen==0)
break;
4084 item->setText(0, text);
4086 if (trace && (item->
Object()!=0)) {
4088 if (topitem==0)
return;
4090 QTreeWidgetItemIterator iter(topitem);
4094 if ((it!=0) && (it!=item) &&
4097 it->setText(0, text);
4108 std::cout <<
"Did not found " << std::endl;
4112 QTreeWidgetItemIterator iter(parent);
4132 QTreeWidgetItemIterator iter(parent);
4137 if ((obj==0) || (item->
Object()==obj))
4165 if ((oldwidget!=0) && (oldwidget->
GetItem()==widgetitem)) {
4174 if (widgetitem==0)
return true;
4207 widget->
SetItem(
this, widgetitem);
4208 ListStack->addWidget(widget);
4209 ListStack->setCurrentWidget(widget);
4217 if (item==0)
return false;
4221 if (gritem==0)
return false;
4224 if (fitter==0)
return false;
4242 if (model==0)
return false;
4262 if (comp==0)
return false;
4263 int nrange = gritem->
Tag();
4269 if (comp==0)
return false;
4275 if (child==0)
return false;
4303 if (item==0)
return;
4305 if (pars==0)
return;
4306 for (Int_t n = pars->
NumPars()-1; n>=0;n--)
4312 if ((parent==0) || (lst==0))
return;
4313 for(Int_t n = lst->GetLast();n>=0;n--) {
4315 if (slot && ((slot->
GetOwner()==owner) || (owner==0)))
4322 if (parent==0)
return;
4324 TObjArray* lst =
dynamic_cast<TObjArray*
> (parent->
Object());
4326 for(Int_t n=lst->GetLast();n>=0;n--)
4332 if (! menu->isEmpty()) menu->addSeparator();
4337 AddIdAction(menu, map,
"Add 1-order polynom",
id+21);
4338 AddIdAction(menu, map,
"Add 3-order polynom",
id+22);
4339 AddIdAction(menu, map,
"Add 7-order polynom",
id+23);
4340 menu->addSeparator();
4343 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelPolynom::Class()->GetName(),
id+0);
4344 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelGauss1::Class()->GetName(),
id+1);
4345 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelGauss2::Class()->GetName(),
id+2);
4346 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelGaussN::Class()->GetName(),
id+3);
4347 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelFormula::Class()->GetName(),
id+4);
4348 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelFunction::Class()->GetName(),
id+5);
4349 AddIdAction(menu, map, QString(
"Make ") + TGo4FitModelFromData::Class()->GetName(),
id+6);
4354 if (!menu->isEmpty()) menu->addSeparator();
4355 AddIdAction(menu, map, QString(
"Make ") + TGo4FitDataHistogram::Class()->GetName(),
id+0);
4356 AddIdAction(menu, map, QString(
"Make ") + TGo4FitDataGraph::Class()->GetName(),
id+1);
4357 AddIdAction(menu, map, QString(
"Make ") + TGo4FitDataProfile::Class()->GetName(),
id+2);
4358 AddIdAction(menu, map, QString(
"Make ") + TGo4FitDataRidge::Class()->GetName(),
id+3);
4373 if ((histo==0) || (histo->GetDimension()!=1))
return false;
4375 Double_t pos, width, ampl;
4379 Int_t nbin = histo->GetXaxis()->FindBin(pos);
4380 ampl = histo->GetBinContent(nbin);
4382 Double_t limit = pad->GetUymin()*.7 + pad->GetUymax()*.3;
4383 if (ampl<limit) ampl = limit;
4386 arr->SetLineColor(2);
4387 arr->SetLineWidth(1);
4393 warr->SetLineColor(2);
4394 warr->SetLineWidth(1);
4417 if ((fitter==0) || (data==0))
return false;
4436 if ((histo==0) || (histo->GetDimension()!=1))
return false;
4438 double range = 0.1 * (histo->GetXaxis()->GetXmax() - histo->GetXaxis()->GetXmin());
4440 double ampl = (0.07 + nrange*0.02) * (histo->GetMaximum() - histo->GetMinimum()) + histo->GetMinimum();
4442 double size = 0.015;
4445 Double_t left, right;
4449 if (naxis!=0)
return false;
4461 arr->SetLineColor(3);
4462 arr->SetLineWidth(3);
4477 if (fitter==0)
return 0;
4480 if (finder!=0)
return finder;
4509 if (fitter==0)
return 0;
4522 if (fitter==0)
return 0;
4525 if (data==0)
return 0;
4537 if (fitter==0)
return;
4539 if ( QMessageBox::information(0,
4540 QString(
"Remake data list"),
4541 QString(
"Remove all current data?"),
4542 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return;
4555 if ((data==0) || (fitter==0))
return false;
4558 if ( QMessageBox::information(0,
4559 QString(
"Delete data"),
4560 QString(
"Are you sure to delete ") + data->GetName(),
4561 QMessageBox::Yes, QMessageBox::No) == QMessageBox::No )
return false;
4578 if ((pad==0) || (data==0))
return;
4581 if (
ActivePanel()->GetVisibleRange(pad, 0, xmin, xmax))
4596 if ((pad!=0) && (data!=0)) {
4599 if (
ActivePanel()->GetVisibleRange(pad, 0, xmin, xmax))
4607 if ((model==0) || (info==0))
return;
4609 *info += model->GetName();
4610 *info +=
" of class: ";
4611 *info += model->ClassName();
4613 if (model->InheritsFrom(TGo4FitModelFormula::Class())) {
4616 *info +=
"\nFormula: ";
4621 if (model->InheritsFrom(TGo4FitModelFunction::Class())) {
4624 *info +=
"\nFunction: ";
4633 if ((mode==1) || (mode==2)) {
4637 if (!model->
IsAssignTo(data->GetName())) data = 0;
4638 if ((data!=0) && (fitter!=0)) {
4639 if (mode==1) *info +=
"\nCounts=";
else *info +=
"\nIntegral=";
4641 *info += QString::number(v);
4648 *info +=
"\nGauss integral=";
4649 *info += QString::number(v);
4659 if (slot==0)
return res;
4665 res =
"internal object";
4670 res =
"reference without pad";
4676 res += pad->GetName();
4681 QString linkname = QString(
"FitSlotLink_%1").arg(slotindex);
4682 const char* itemname =
GetLinkedName(linkname.toLatin1().constData());
4684 if (itemname!=0) res = itemname;
4685 else res =
"reference to external object";
4695 if ((arr==0) || (fitter==0))
return;
4697 bool ismodified =
false;
4698 for(Int_t n=0;n<fitter->
NumSlots();n++) {
4700 if (pad==0)
continue;
4706 for (Int_t k=0;k<=lst.GetLast();k++) {
4709 if (a->
Locate()) res =
true;
4743 if (model==0)
return;
4755 if ((slot==0) || (fitter==0))
return -1;
4758 for (
int n=0;n<fitter->
NumSlots();n++) {
4760 bool needpad = !subslot->
GetOwned() &&
4761 (subslot->
GetClass()->InheritsFrom(TH1::Class()) ||
4762 subslot->
GetClass()->InheritsFrom(TGraph::Class()));
4763 if (needpad) indx++;
4765 return needpad ? indx : -1;
4780 if (fitter==0)
return 0;
4781 for(Int_t n = 0; n<fitter->
NumSlots();n++) {
4783 if (slot->
GetOwner()!=data)
continue;
4785 if (pad!=0)
return pad;
4793 if ((fitter==0) || (model==0))
return 0;
4798 if (pad!=0)
return pad;
4805 if (comp==0)
return 0;
4806 if (comp->InheritsFrom(TGo4FitData::Class()))
4818 if (fitter==0)
return 0;
4820 }
else dataname = name;
4839 if (NumDim<=0) NumDim = 1;
4845 case 1:
id = 1;
break;
4846 case 2:
id = 2;
break;
4847 default:
id = 3;
break;
4850 case 21: order = 1;
id = 7;
break;
4851 case 22: order = 3;
id = 7;
break;
4852 case 23: order = 7;
id = 7;
break;
4855 if (namebase) NameBase = namebase;
else
4857 case 0: NameBase =
"Pol";
break;
4860 case 3: NameBase =
"Gauss";
break;
4861 case 4: NameBase =
"Form";
break;
4862 case 5: NameBase =
"Func";
break;
4863 case 6: NameBase =
"FromData";
break;
4864 case 7: NameBase =
"Pol";
break;
4865 case 24: NameBase =
"Lor";
break;
4866 case 25: NameBase =
"Exp";
break;
4867 default: NameBase =
"Model";
4872 if (fitter && (
id!=7)) ModelName = fitter->
FindNextName(NameBase.Data(), 0);
4873 else ModelName = NameBase;
4885 case 7: fitter->
AddPolynoms(data ? data->GetName() : 0, NameBase.Data(), order, NumDim);
break;
4901 if (fitter && model) {
4913 if ((fitter==0) || (model==0))
return;
4920 if (data==0)
return;
4927 model->
SetPosition(0, (pad->GetUxmin() + pad->GetUxmax())/2.);
4928 model->
SetWidth(0, TMath::Abs(pad->GetUxmax() - pad->GetUxmin())*.05);
4929 model->
SetPosition(1, (pad->GetUymin() + pad->GetUymax())/2.);
4930 model->
SetWidth(1, TMath::Abs(pad->GetUymax() - pad->GetUymin())*.05);
4933 Double_t mid, width;
4956 if ((slot==0) || (itemname==0))
return;
4960 if (slotindex<0)
return;
4962 QString linkname = QString(
"FitSlotLink_%1").arg(slotindex);
4966 AddLink(itemname, linkname.toLatin1().constData());
4968 GetLinked(linkname.toLatin1().constData(), 1);
4976 if (slot==0)
return true;
4991 if ((obj!=0) && createlink) {
4992 TString linkname =
"data_";
4993 linkname+=slot->GetName();
4998 QString linkname = QString(
"FitSlotLink_%1").arg(slotindex);
4999 obj =
GetLinked(linkname.toLatin1().constData(), 0);
5002 if (obj==0) res =
false;
5015 if (fitter==0)
return false;
5026 for(Int_t n=0; n<fitter->
NumSlots(); n++) {
5028 if (slot->
GetClass()->InheritsFrom(TH1::Class()) ||
5029 slot->
GetClass()->InheritsFrom(TGraph::Class()))
5043 if (fitter==0)
return;
5045 for(Int_t n = 0; n<fitter->
NumSlots();n++) {
5048 if (slot->
GetClass()->InheritsFrom(TH1::Class()) ||
5049 slot->
GetClass()->InheritsFrom(TGraph::Class()))
5060 if (fitter==0)
return;
5064 for(Int_t n = 0; n<fitter->
NumSlots();n++) {
5066 if (pad==0)
continue;
5087 w->
ClassNameLbl->setText(QString(
"Class name: ") + obj->ClassName());
5089 w->
NameEdt->setText(obj->GetName());
5090 w->
TitleEdt->setText(obj->GetTitle());
5091 TNamed* n =
dynamic_cast<TNamed*
> (obj);
5092 w->
NameEdt->setReadOnly(n==0);
5104 if ((mw!=0) && (model!=0)) {
5116 if ((item==0) || (strlen(newname)==0))
return;
5117 TNamed* obj =
dynamic_cast<TNamed*
> (item->
Object());
5126 if (pars->
FindPar(newname))
return;
5133 if ((fitter==0) || (fitter->
FindData(newname)))
return;
5142 if ((fitter==0) || (fitter->
FindModel(newname)))
return;
5145 obj->SetName(newname);
5160 TNamed* n =
dynamic_cast<TNamed*
> (w->
GetObject());
5161 if (n!=0) n->SetTitle(newtitle);
5168 if (model==0)
return;
5173 if (value!=0) res = model->
MakeAmpl();
void SetParsNames(const char *name0="Par0", const char *name1="Par1", const char *name2="Par2", const char *name3="Par3", const char *name4="Par4", const char *name5="Par5", const char *name6="Par6", const char *name7="Par7", const char *name8="Par8", const char *name9="Par9")
virtual void ShootRepaintTimer()
Bool_t DefineScaleMinMax(Int_t naxis, Double_t &min, Double_t &max)
virtual bool ShowItem(QFitItem *item, bool force)
virtual TObject * GetDrawObject(TPad *pad, const char *name)
virtual bool IsPadHasSubPads(TGo4Slot *padslot)
virtual void MainFindBtn_clicked()
virtual void Cmd_RememberPar(QFitItem *item)
virtual TGo4FitData * Wiz_SelectedData()
virtual void MainAttachBtn_clicked()
Bool_t IsAnyRangeLimits()
TGo4FitParsList & GetParsCfg()
virtual void Cmd_AddNewData(QFitItem *item, int id)
virtual void ArrowChanged(TGo4FitGuiArrow *arr)
virtual void UpdateWizModelsList(bool changestack)
virtual void Button_SimpleClear()
virtual void Cmd_AddDependency(QFitItem *item)
virtual void PF_MinWidthEdt_returnPressed()
virtual void UpdatePFAmplLbl()
void SetUseBuffers(Bool_t iUse)
virtual Bool_t IsAnyDataTransform()
bool fbSaveWithReferences
virtual void Smp_PolynomBtn_clicked()
void SetMemoryUsage(Int_t iMemoryUsage)
Int_t GetPeakFinderType() const
virtual TPad * FindPadForSlot(TGo4FitSlot *slot)
virtual void Cmd_DrawData(QFitItem *item)
Int_t GetNumRangeCut() const
void RemoveResult(TGo4FitMinuitResult *res)
void DoAction(TGo4FitterAction *Action)
virtual void Cmd_DeleteAllData(QFitItem *item)
TGo4FitSlot * GetSlot(Int_t nslot)
bool FindInParents(QFitItem *item)
Int_t GetResultNDF() const
virtual void Cmd_AddRangeCondition(QFitItem *item, int id)
void ClearRanges(Int_t naxis=-1)
void Set2NoiseFactor(Double_t factor)
virtual void Cmd_DeleteDependencies(QFitItem *item)
virtual bool UpdateObjectReferenceInSlot(TGo4FitSlot *slot, bool createlink)
virtual bool FillPopupForItem(QFitItem *item, QMenu *menu, QSignalMapper *map)
virtual TGo4Fitter * CloneFitter()
virtual void Cmd_MemorizePar(QFitItem *item)
const TString & GetParameter() const
void SetFitFunctionType(Int_t iFitFunctionType)
virtual TPad * FindPadWhereModel(TGo4FitModel *model)
void AddAmplEstimation(Int_t NumIters=1)
virtual void Fitter_UpdateReferences()
virtual void Button_WorkWithPanel()
void ClearModelAssignmentTo(const char *ModelName, const char *DataName=0)
Double_t GetInitValue() const
virtual void UpdateWizardPage()
Int_t GetNumRangeCondition() const
virtual void Wiz_RebuildDataBtn_clicked()
virtual void Wiz_ModelBufChk_toggled(bool zn)
void DeleteAction(TGo4FitterAction *action)
virtual void RemoveFitterLink()
virtual void RemoveItemWidget()
bool fbUseSamePanelForDraw
virtual void UpdatePFRelNoiseLbl()
virtual void linkedObjectUpdated(const char *linkname, TObject *obj)
virtual void PF_WidthEdit_returnPressed()
virtual void changeEvent(QEvent *event)
virtual void WorkWithFitterInSlot(TGo4Slot *slot)
TGo4FitModel * FindModel(const char *ModelName)
TGo4FitParameter * CreatePar(const char *ParName, const char *Title, Double_t iValue=0)
Int_t GetGroupIndex() const
Double_t Get0MinWidth() const
void SetRangeMin(Int_t naxis, Double_t value)
static TGo4MdiArea * Instance()
virtual TGo4Slot * GetDrawObjectSlot(TPad *pad, const char *name)
virtual bool FillPopupForSlot(TGo4FitSlot *slot, QMenu *menu, QSignalMapper *map)
virtual void SetItemText(QFitItem *item, bool trace)
virtual void ChangeObjectName(QFitNamedWidget *w, const char *newname)
virtual void Cmd_DeleteOutputActions(QFitItem *item)
virtual void Cmd_DeleteDependency(QFitItem *item)
void AddPolynoms(const char *DataName, const char *NamePrefix, Int_t MaxOrder=1, Int_t NumAxis=1, Int_t GroupIndex=0)
void ClearConnectionToSlot()
virtual void UpdateItemsOfType(int typ, QFitItem *parent)
virtual void Cmd_DeleteActions(QFitItem *item)
virtual void Smp_ClearBtn_clicked()
virtual void Fitter_New()
TGo4FitParameter * GetPar(Int_t n)
virtual void Cmd_DeleteModels(QFitItem *item)
void AssignToData(const char *DataName, Double_t RatioValue=1., Bool_t FixRatio=kFALSE)
virtual void Wiz_DataListSelect(QListWidgetItem *)
virtual void UpdateWizPaint(int mode)
virtual Bool_t CanAmplTouch()
virtual void Button_PeakFinder()
void AddCommand(const char *iCommand)
virtual void MemorizePars()
virtual void FillSlotsList(QFitItem *parent, const TObjArray *lst, TObject *owner)
virtual TPad * ActivePad()
void AddAction(TGo4FitterAction *Action)
void SetDataName(const char *name)
virtual Bool_t SetPosition(Int_t naxis, Double_t pos)
virtual void UpdateWizModelsBtns()
virtual void UpdateWizDataBtns()
virtual void ClearObjectReferenceInSlots()
int PopupMenuType() const
virtual void Wiz_DataList_doubleClicked(QListWidgetItem *)
virtual void Fitter_SaveToBrowser()
void SetForRange(TGo4FitComponent *Comp, Int_t num, Double_t rangey, Double_t shiftx)
virtual bool IsAcceptDrag(const char *itemname, TClass *cl, int kind)
virtual TGo4Fitter * GetFitter()
virtual void Wiz_ModelListSelect(QListWidgetItem *)
Bool_t GetRange(Double_t &min, Double_t &max) const
virtual Bool_t CanChangeFitter() const
virtual void CreateDataFor(TGo4ViewPanel *panel, TPad *pad, TGo4Fitter *fitter)
void SetForPosition(TGo4FitModel *model, TGo4FitGuiArrow *forwidth, Double_t iLineAmpl)
virtual void Wiz_AddModelBtn_clicked()
virtual Double_t Integral()
virtual void Wiz_ShowAllMod_toggled(bool zn)
virtual void Smp_GaussianBtn_clicked()
virtual void Cmd_DeletePar(QFitItem *item)
virtual QString Wiz_GetSlotSourceInfo(TGo4FitSlot *slot)
virtual void Wiz_TakeCurrentRange()
void ClearAssignmentTo(const char *DataName)
virtual void ClosePanel()
const char * GetFullName()
virtual void FitterMenuItemSelected(int id)
virtual void Cmd_DeleteData(QFitItem *item)
virtual void LocateModel(TGo4FitModel *model, TGo4FitData *data, bool usepad)
void AssignModelTo(const char *ModelName, const char *DataName, Double_t RatioValue=1., Bool_t FixRatio=kFALSE)
virtual void Cmd_AddNewAction(QFitItem *item, int id)
virtual TGo4Slot * GetPadMainObjectSlot(TPad *pad)
void ClearSlot(TGo4FitSlot *slot, Bool_t NonOwned)
void SetAmplValue(Double_t iAmpl)
void Set2NoiseMinimum(Double_t min)
virtual void Fitter_PrintParameters()
const char * AssignmentName(Int_t n)
virtual void Wiz_GetModelInfo(TGo4FitModel *model, QString *info)
virtual void focusInEvent(QFocusEvent *event)
TGo4FitData * RemoveData(const char *DataName, Bool_t IsDel=kFALSE)
virtual void UpdateItemMenu()
virtual void PF_MinNoiseEdit_returnPressed()
void ReplaceAction(TGo4FitterAction *action, Int_t dir)
QFitItem * DefineWidgetItem()
virtual void Wiz_DataSlotsTable_contextMenuRequested(const QPoint &pnt)
TGo4FitModel * RemoveModel(const char *ModelName, Bool_t IsDel=kFALSE)
virtual void ClearCanvas()
void SetPeakFinderType(Int_t typ)
virtual void PaintFitter(TGo4Fitter *fitter, QFitItem *item, bool update)
virtual void Cmd_DeletePars(QFitItem *item)
virtual void Divide(int numX, int numY)
virtual void ChangeViewType(int id)
virtual void Cmd_UpdateAllSlots(QFitItem *item)
virtual void Cmd_CreateFitter()
virtual bool UpdateObjectReferenceInSlots()
Bool_t GetUsePolynom() const
Double_t Get2NoiseMinimum() const
virtual void Button_SimpleFit(int nmodel)
virtual void AboutToShowViewMenu()
void DeleteModelsAssosiatedTo(const char *DataName)
bool getBool(const QString &name, bool def=true)
Double_t CalculatesIntegral(const char *DataName, const char *ModelName=0, Bool_t OnlyCounts=kFALSE)
void SetForWidth(TGo4FitModel *model, TGo4FitGuiArrow *forposition)
Int_t Get2ChannelSum() const
virtual void UpdateExtendedPage()
void SetSaveFlagForObjects(Int_t iSaveFlag, const char *PlaceName=0)
virtual void ChangeModelPar(QFitModelWidget *w, int npar, int value)
TObjArray * fxParsTableList
virtual void Cmd_ClearFitter()
virtual void DeleteDrawObject(TPad *pad, const char *name)
virtual bool ShowItemAsText(QFitItem *item, bool force)
virtual void FillNamedWidget(QFitNamedWidget *w)
virtual TGo4Fitter * CreateFitterFor(TGo4ViewPanel *panel, TPad *pad, const char *name)
TGo4FitData * AddData(TGo4FitData *d)
virtual Bool_t GetPosition(Int_t naxis, Double_t &pos)
virtual TGo4FitData * CreateData(int id, const char *name)
virtual void MainDrawBtn_clicked()
TGo4FitterOutput * AddOutputAction(const char *Action, const char *Option=0)
TObject * GetAssignedObject()
virtual TPad * GetSubPad(TPad *toppad, int num, bool onlytoplevel)
virtual TObject * GetPadMainObject(TPad *pad)
virtual void Cmd_DeleteAction(QFitItem *item)
virtual void Fitter_RollbackParameters()
virtual void Cmd_MoveAction(QFitItem *item, int dir)
const TObjArray * GetSlotList(Bool_t ForceUpdate=kFALSE)
QWidget * fxCurrentItemWidget
virtual void Cmd_RemoveModel(TGo4FitModel *model)
void setBool(const QString &name, bool value=true)
virtual void PF_MinWidthEdt_textChanged(const QString &str)
void Set0MaxWidth(Double_t max)
virtual void Smp_LorenzBtn_clicked()
virtual void Cmd_ExecuteActions(QFitItem *item, bool expert)
virtual bool Wiz_RemoveData()
virtual bool ShowItemAsGraph(QFitItem *item, bool force)
TCutG * GetRangeCut(Int_t n) const
virtual void Cmd_RemoveRangeCondition(QFitItem *item)
void Set0MaxAmplFactor(Double_t factor)
Bool_t IsSuitableClass(TClass *cl)
virtual void UpdateWizDataList()
virtual bool PaintRange(TGo4FitComponent *comp, int nrange, TPad *pad, QFitItem *item)
virtual void PF_MaxWidthEdt_returnPressed()
virtual int GetPadIndexForSlot(TGo4FitSlot *slot)
TGo4FitSlot * GetConnectedSlot() const
virtual void Button_PerformFit()
virtual void Wiz_DelDataBtn_clicked()
void ChangeDataNameInAssignments(const char *oldname, const char *newname)
virtual TPad * FindPadWhereData(TGo4FitData *data)
TObjArray & GetParsDepend()
void SetRange(Int_t naxis, Double_t min, Double_t max)
virtual bool PaintModel(TGo4FitModel *model, TPad *pad, QFitItem *item)
virtual void Button_FitterDraw(TGo4FitData *selecteddata)
virtual void Wiz_FitNameEdt_textChanged(const QString &name)
virtual void DropOnPanel(QDropEvent *event, const char *itemname, TClass *cl, int kind)
void DoActions(Bool_t AllowFitterChange=kFALSE, TObjArray *Actions=0)
virtual void Cmd_ItemPrint(QFitItem *item)
Bool_t RemovePar(const char *name)
void Set2ChannelSum(Int_t sum)
Bool_t SetObject(TObject *iObject, Bool_t iOwned=kFALSE, Bool_t CheckClass=kTRUE)
virtual void MarkPadModified(TPad *pad)
virtual void PF_WidthEdit_textChanged(const QString &str)
const char * GetParFullName(Int_t n)
virtual void Wiz_ParTable_valueChanged(int nrow, int ncol)
virtual void Cmd_DeleteMinuitResult(QFitItem *item)
TGo4FitModel * GetModel(Int_t n)
Bool_t GetUseBuffers() const
int getInt(const QString &name, int def=0)
Double_t CalculatesModelIntegral(const char *ModelName, Bool_t OnlyCounts=kFALSE)
virtual void Fitter_UseWorkspace()
void SetItem(QFitItem *item, TGo4FitPanel *panel)
Double_t Get2NoiseFactor() const
virtual void Wiz_ModelList_itemChanged(QListWidgetItem *)
virtual void DeleteModelWithPrimit(TGo4FitGuiArrow *arr)
virtual TGo4ViewPanel * ActivePanel()
virtual void Wiz_PFSetupBtn_clicked()
virtual TGo4FitModel * Wiz_SelectedModel()
virtual void Wiz_DataBufChk_toggled(bool zn)
virtual void FillDataTypesList(QMenu *menu, QSignalMapper *map, int id)
QFitItem * Parent() const
virtual void PF_SumUpSpin_valueChanged(int num)
virtual void PF_RelNoiseSlider_valueChanged(int zn)
virtual void Fitter_NewForActivePad(bool overwrite)
TGo4FitParameter * FindPar(const char *ParName)
QSignalMapper * FitterMap
Double_t GetError() const
TGo4FitMinuitResult * GetResult(Int_t indx)
TGo4FitModel * GetModel()
virtual void PF_MaxWidthEdt_textChanged(const QString &str)
virtual void Wiz_AddDataBtn_clicked()
Bool_t GetEpsilon(Double_t &eps) const
virtual void SetFitter(TGo4Fitter *)
virtual void Cmd_ClearAssigments(QFitItem *item)
virtual void Cmd_SaveFitter(bool ask)
virtual void Cmd_ExecuteAction(QFitItem *item)
void AddRangeCut(TCutG *cut, Bool_t exclude=kFALSE)
virtual TGo4FitData * Wiz_CreateNewData(int id)
virtual void Cmd_RememberPars(QFitItem *item)
virtual QFitItem * FindItem(TObject *obj, int ObjectType, QFitItem *parent)
Int_t GetDataType() const
virtual void UpdateItem(QFitItem *item, bool trace)
virtual void AboutToShowItemMenu()
virtual Bool_t SetWidth(Int_t naxis, Double_t width)
TString FindNextName(const char *Head, Int_t start, Bool_t isModel=kTRUE)
virtual TPad * FindPadWhereComp(TGo4FitComponent *comp)
void SetRangeMax(Int_t naxis, Double_t value)
Double_t Get1LineWidth() const
virtual void Cmd_DeleteAssosiatedModels(QFitItem *item)
virtual void FillSlotList(TSeqCollection *list)
virtual void PF_RelNoiseSlider_sliderReleased()
virtual void ChangeObjectTitle(QFitNamedWidget *w, const char *newtitle)
virtual void PF_AmplSlider_sliderReleased()
virtual void linkedObjectRemoved(const char *linkname)
virtual void MainFitBtn_clicked()
virtual void FillModelTypesList(QMenu *menu, QSignalMapper *map, int id, bool extend)
virtual TGo4FitModel * Wiz_CreateNewModel(int id)
TGo4FitData * GetData(Int_t n)
TGo4ViewPanel * fxActivePanel
void SetGroupIndex(Int_t index=-1)
virtual Bool_t GetWidth(Int_t naxis, Double_t &width)
QFitItem * DefineGraphItem()
virtual void Wiz_BackgroundChk_toggled(bool chk)
Int_t NumAssigments() const
const TString & GetExpression() const
virtual void Cmd_MemorizePars(QFitItem *item)
void SetUsePolynom(Bool_t use)
virtual void CloseDrawPanel()
Int_t GetFitFunctionType()
virtual void PF_MinNoiseEdit_textChanged(const QString &str)
virtual void Wiz_UseAmplEstimChk_toggled(bool chk)
void GetRangeCondition(Int_t n, Int_t &typ, Int_t &naxis, Double_t &left, Double_t &right) const
Double_t GetResultFF() const
virtual void LineParsChk_toggled(bool)
Bool_t IsInitValue() const
virtual void Wiz_DataUseRangeBtn_clicked()
virtual void FillParsWidget()
virtual void Wiz_DrawDataBtn_clicked()
virtual void MainParsBtn_clicked()
void SetValue(Double_t iValue)
virtual void ExecutePopupForSlot(QFitItem *item, TGo4FitSlot *slot, int id)
virtual bool PaintModelsFor(TGo4Fitter *fitter, TGo4FitData *data, QFitItem *item, bool update)
virtual void ItemMenuItemSelected(int id)
virtual void Wiz_MigradIterSpin_valueChanged(int num)
virtual void AboutToShowSettMenu()
void RemoveRangeCut(Int_t n)
virtual TH1 * GetPadHistogram(TPad *pad)
virtual void Cmd_AddNewPar(QFitItem *item)
Double_t GetValue() const
virtual void RememberPars()
Bool_t ConnectToSlot(TGo4FitSlot *slot)
virtual void panelSlot(TGo4ViewPanel *, TPad *, int)
virtual void UpdateWizStackWidget()
virtual void FitList_currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)
virtual void Wiz_PFPolynSpin_valueChanged(int zn)
TGo4FitModel * CloneModel(const char *ModelName, const char *NewName=0)
Double_t Get0MaxWidth() const
virtual void Wiz_UseSelectedRange()
TGo4FitterAction * GetAction(Int_t num)
void RemoveRangeCondition(Int_t n)
Bool_t IsResultDepend() const
virtual void Wiz_DelModelBtn_clicked()
virtual void Cmd_CloneModel(QFitItem *item)
virtual void UpdateActivePage()
virtual void Wiz_FitFuncCmb_activated(int typ)
void Set1LineWidth(Double_t width)
virtual void Cmd_DeleteModel(QFitItem *item)
TGo4FitPanel(QWidget *parent=0, const char *name=0)
const char * GetDataName(Int_t n)
virtual void Wiz_PFUsePolynChk_toggled(bool zn)
TObject * CloneObject(const char *newname=0)
virtual TGo4FitPeakFinder * GetPeakFinder(bool autocreate)
virtual bool CanRollbackPars()
void DeleteOutputActions()
virtual void UpdateSimplePage()
void SetClearModels(Bool_t clear)
virtual void Fitter_Delete()
virtual void FillDependencyList(QFitItem *parent)
void SetEpsilon(Double_t iEpsilon)
Int_t GetNumModel() const
virtual void FitItemDeleted(QFitItem *item)
virtual void ParsTable_valueChanged(int nrow, int ncol)
virtual void ParsTableChanged(QTableWidget *table, int nrow, int ncol, bool LinesView, TObjArray *TableList, bool updatepaint)
TGo4FitModel * AddModel(TGo4FitModel *m)
virtual void RemovePrimitives()
Bool_t IsSuitable(TObject *obj)
virtual TGo4FitModel * CreateModel(int id, const char *namebase, TGo4Fitter *fitter, TGo4FitData *data)
virtual void CreateFitSlotLink(TGo4FitSlot *slot, const char *itemname)
const char * GetLibraryName() const
Bool_t MakeAmpl(Bool_t isFixed=kFALSE)
virtual void PF_AmplSlider_valueChanged(int zn)
virtual bool WorkingWithPanel()
virtual void CollectSpecialObjects(TPad *pad, TObjArray *objs, int selectkind)
virtual void Wiz_MinSetupBtn_clicked()
TObject * CreateDrawObject(const char *ObjName, const char *DataName, Bool_t IsModel=kFALSE, const char *ModelName=0)
virtual void RemoveDrawObjects()
virtual void FillParsTable(QTableWidget *table, TGo4Fitter *fitter, TGo4FitModel *model, bool LinesView, TObjArray *TableList)
Double_t Get0MaxAmplFactor() const
virtual QFitItem * GetFitterItem()
virtual bool WorkingWithOnlyPad()
virtual void Cmd_ClearAssigment(QFitItem *item)
TGo4FitParsList & GetParsNew()
void SetBackgroundGroupIndex()
Bool_t IsAssignTo(const char *DataName) const
virtual void FindersTab_currentChanged(int)
void setInt(const QString &name, int value=0)
virtual int GetNumberOfPads(TPad *toppad)
virtual void Wiz_RebuildDataList()
virtual TPad * GetActivePad()
virtual void AboutToShowFitterMenu()
Bool_t CalculatesMomentums(const char *DataName, Bool_t UseRanges, Bool_t SubstractModels, Double_t &first, Double_t &second)
virtual int DefineModelWidgetType(TObject *obj)
virtual void Smp_ExponentBtn_clicked()
virtual void Clear(Option_t *option=0)
TObject * GetObject() const
bool fbRecalculateGaussWidth
virtual bool DeleteDrawObjects(TPad *pad, int kindtodelete)
void AddActionAt(TGo4FitterAction *Action, Int_t indx)
void ExcludeRange(Int_t naxis, Double_t min, Double_t max)
void SetFixed(Bool_t iFixed)
virtual void FillParsList(QFitItem *item)
const char * GetFunctionName() const
virtual void UpdateStatusBar(const char *info)
virtual void Cmd_CreateAppropriateFitter()
virtual void Cmd_AddNewModel(QFitItem *item, int id)
virtual void FitList_customContextMenuRequested(const QPoint &)
TGo4FitData * FindData(const char *DataName)
virtual void Wiz_DataClearRangesBtn_clicked()
void SetPolynomOrder(Int_t order)
virtual void linkedRemoved(TGo4Slot *slot, TObject *obj)
virtual TGo4Slot * AddDrawObject(TPad *pad, int kind, const char *itemname, TObject *obj, bool owner, const char *drawopt)
virtual void WorkWithFitter(const char *itemname, TGo4ViewPanel *panel, TPad *pad)
static void Info(const char *text,...)
void Set0MinWidth(Double_t min)
virtual void ChangeSettings(int id)
virtual void ShowPanelPage(int id)
virtual void Cmd_DeleteFitter()
void SetRange(Double_t iRangeMin, Double_t iRangeMax)
virtual void Wiz_ModelList_doubleClicked(QListWidgetItem *)
virtual void Wiz_CloneModelBtn_clicked()
virtual void Cmd_AssignModelToData(QFitItem *item, int id)
TGo4ViewPanel * fxDrawNewPanel
void AddStandardActions()
void SetError(Double_t iError)
TObjArray & GetParsInit()
Int_t GetPolynomOrder() const
TGo4FitParameter * GetAmplPar()
virtual void SetAutoScale(bool on, TPad *selpad)
virtual void Cmd_RemoveRangeConditions(QFitItem *item)
Bool_t CanConnectToSlot(TGo4FitSlot *slot)
virtual void Cmd_AssignModelToAllData(QFitItem *item)