1 #include "KVIDGridManagerGUI.h"
3 #include "KVIDGridManager.h"
13 #include <KVTestIDGridDialog.h>
15 #include <KVIDGUITelescopeChooserDialog.h>
16 #include <KVDropDownDialog.h>
17 #include <KVIdentificationResult.h>
18 #include <KVReconstructedNucleus.h>
20 #include "KVInputDialog.h"
21 #include "KVIDCutLine.h"
22 #include "KVIDCutContour.h"
23 #include "KVVirtualIDFitter.h"
38 fLastSelectedGrid = 0;
44 gEnv->
SetValue(
"Browser.StartUrl",
"https://kaliveda.in2p3.fr/class");
47 gIDGridManager->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
48 "UpdateListOfGrids()");
56 sgm->
AddEntry(
"Selected", M_GRIDS_SAVE_SEL);
57 sgm->
AddEntry(
"Tab", M_GRIDS_SAVE_TAB);
58 sgm->
AddEntry(
"All", M_GRIDS_SAVE_ALL);
59 fMenuFile->AddPopup(
"Save...", sgm);
61 fMenuFile->AddSeparator();
64 sgm->
AddEntry(
"Selected", M_GRIDS_DEL_SEL);
65 sgm->
AddEntry(
"Tab", M_GRIDS_DEL_TAB);
66 sgm->
AddEntry(
"All", M_GRIDS_DEL_ALL);
67 fMenuFile->AddPopup(
"Delete...", sgm);
68 fMenuFile->AddSeparator();
69 fMenuFile->AddEntry(
"&Quit", M_QUIT);
71 fMenuFile->Connect(
"Activated(Int_t)",
"KVIDGridManagerGUI",
this,
72 "HandleGridsMenu(Int_t)");
80 sgm->
AddEntry(
"Runlist", M_GRIDS_SET_RUNLIST);
81 sgm->
AddEntry(
"X Variable", M_GRIDS_SET_VARX);
82 sgm->
AddEntry(
"Y Variable", M_GRIDS_SET_VARY);
84 sgm->
AddEntry(
"Z ID Only", M_GRIDS_SET_ZID);
85 fMenuEdit->AddPopup(
"Set...", sgm);
86 fMenuEdit->AddEntry(
"Clear", M_GRIDS_CLEAR);
87 fMenuEdit->Connect(
"Activated(Int_t)",
"KVIDGridManagerGUI",
this,
88 "HandleGridsMenu(Int_t)");
94 fMenuBar->AddPopup(
"&File", fMenuFile, fMenuBarItemLayout);
95 fMenuBar->AddPopup(
"&Edit", fMenuEdit, fMenuBarItemLayout);
108 const char* xpms[] = {
121 const char* tips[] = {
122 "Open file containing grids",
123 "Save all grids in current file",
126 "Delete selected grid(s)",
127 "Set ID telescopes for grid",
157 const char* method[] = {
162 "DeleteSelectedGrids()",
166 "UpdateListOfGrids()",
181 *buttons[i] = fToolBar->AddButton(
this, &t[i], spacing[i]);
182 (*buttons[i])->Connect(
"Clicked()",
"KVIDGridManagerGUI",
this, method[i]);
183 fTBbuttons[i] = *buttons[i];
208 fGridListTabs =
new TGTab(fHframe, 550, 400);
209 fGridListTabs->Connect(
"Selected(Int_t)",
"KVIDGridManagerGUI",
this,
"TabSelect(Int_t)");
214 fHframe->AddFrame(fGridListTabs,
219 TGLabel* lab1 =
new TGLabel(line_frame,
"CURRENT GRID IDENTIFIERS");
224 fIDLineList->SetDataColumns(5);
225 fIDLineList->SetDataColumn(0,
"Name",
"",
kTextLeft);
228 fIDLineList->SetDataColumn(3,
"OnlyZId",
"OnlyZId",
kTextCenterX);
229 fIDLineList->SetDataColumn(4,
"MassFormula",
"",
kTextCenterX);
230 fIDLineList->GetDataColumn(3)->SetIsBoolean();
231 fIDLineList->ActivateSortButtons();
232 fIDLineList->AllowBrowse(
kFALSE);
237 lab1 =
new TGLabel(line_frame,
"Cuts");
241 fCUTList->SetDataColumns(3);
242 fCUTList->SetDataColumn(0,
"Name",
"",
kTextLeft);
244 fCUTList->SetDataColumn(2,
"Selection",
"GetSelectionType",
kTextCenterX);
245 fCUTList->ActivateSortButtons();
246 fCUTList->AllowBrowse(
kFALSE);
251 lab1 =
new TGLabel(line_frame,
"Infos");
255 fCUTInfoList->SetDataColumns(3);
256 fCUTInfoList->SetDataColumn(0,
"Name",
"",
kTextLeft);
257 fCUTInfoList->SetDataColumn(1,
"# Points",
"GetN",
kTextCenterX);
258 fCUTInfoList->SetDataColumn(2,
"Class",
"ClassName",
kTextCenterX);
259 fCUTInfoList->ActivateSortButtons();
260 fCUTInfoList->AllowBrowse(
kFALSE);
269 SetWindowName(
"ID Grid Manager");
273 Resize(GetDefaultSize());
275 SetWMSize(1200, 600);
287 KVIDGridManagerGUI::~KVIDGridManagerGUI()
291 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
312 if (fIDGridEditor->IsClosed()) fIDGridEditor->
StartViewer();
316 fSelectedGrid->UpdateLastSavedVersion();
317 fIDGridEditor->SetGrid(fSelectedGrid);
338 static TString dir(
"$(HISTOROOT)");
347 const char* filetypes[] = {
"Root files",
"*.root",
"All files",
"*", 0, 0};
378 cout <<
"Add new grid" << endl;
385 case M_GRIDS_SAVE_SEL:
387 SaveGridsAs(&fSelectedEntries);
390 case M_GRIDS_SAVE_TAB:
392 SaveGridsAs(GetAllGridsInTab());
395 case M_GRIDS_SAVE_ALL:
401 case M_GRIDS_DEL_SEL:
402 DeleteSelectedGrids();
405 case M_GRIDS_DEL_TAB:
409 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
410 "This will delete all grids in the current tab. Are you sure ?",
412 if (ret_val &
kMBOk) {
413 DeleteAllGridsInTab();
417 case M_GRIDS_DEL_ALL:
422 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
423 "This will delete all grids. Are you sure ?",
425 if (ret_val &
kMBOk) {
426 gIDGridManager->
Clear();
435 case M_GRIDS_SET_RUNLIST:
438 if (!fSelectedGrid)
break;
439 TString runs = fSelectedGrid->GetRunList();
441 new KVInputDialog(
this,
"Enter list of runs for grid(s):", &runs, &ok_pressed,
442 "Example: 1-10, 13, 22-657");
443 if (!ok_pressed)
break;
444 TIter next(&fSelectedEntries);
451 case M_GRIDS_SET_VARX:
454 if (!fSelectedGrid)
break;
455 TString runs = fSelectedGrid->GetVarX();
457 new KVInputDialog(
this,
"Enter X variable for grid(s):", &runs, &ok_pressed,
459 if (!ok_pressed)
break;
460 TIter next(&fSelectedEntries);
467 case M_GRIDS_SET_VARY:
470 if (!fSelectedGrid)
break;
471 TString runs = fSelectedGrid->GetVarY();
473 new KVInputDialog(
this,
"Enter Y variable for grid(s):", &runs, &ok_pressed,
475 if (!ok_pressed)
break;
476 TIter next(&fSelectedEntries);
483 case M_GRIDS_SET_ZID:
486 if (!fSelectedGrid)
break;
487 Bool_t runs = !fSelectedGrid->HasMassIDCapability();
488 TIter next(&fSelectedEntries);
498 if (!fSelectedGrid)
break;
499 TIter next(&fSelectedEntries);
522 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
523 "This will delete the selected grids. Are you sure ?",
525 if (ret_val &
kMBOk) {
537 const char* filetypes[] = {
538 "ID Grid files",
"*.dat",
571 SetStatus(
Form(
"Read %d grids from files %s", ngriread, filenames.
Data()));
575 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
576 Form(
"Could not read any of files %s", filenames.
Data()),
589 SetStatus(
Form(
"Read %d grids from file %s", ngriread, fi.
fFilename));
594 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
646 fSelectedEntries = fIDGridList->GetSelectedObjects();
647 fSelectedGrid = (
KVIDGraph*)fIDGridList->GetLastSelectedObject();
648 if (!GetNSelected())fSelectedGrid = 0x0;
651 ActivateToolbarButtons();
652 if (!GetNSelected()) SetStatus();
653 else if (GetNSelected() == 1) SetStatus(
Form(
"Selected grid %s (%s)", fSelectedGrid->GetName(), fSelectedGrid->ClassName()));
654 else SetStatus(
Form(
"Selected %d grids, last selected grid %s (%s)", GetNSelected(), fSelectedGrid->GetName(), fSelectedGrid->ClassName()));
674 if (!GetNSelected())
return;
676 fIDGridList->RemoveAll();
682 if (fLastSelectedGrid == entry) fLastSelectedGrid = 0;
685 fSelectedEntries.Clear();
704 fSelectedEntries.Clear();
718 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
719 "Set IDTelescope for selected grid(s) using grid name ?",
723 for(
auto tidg : fSelectedEntries)
725 auto idg =
dynamic_cast<KVIDGraph*
>(tidg);
727 Info(
"SetIDTelescopes",
"Setting IDTelescope for %s...", idg->GetName());
729 idg->AddIDTelescope(gMultiDetArray->
GetIDTelescope(idg->GetName()));
731 idg->AddIDTelescope(idg->GetName());
736 TString idtels;
bool ok_pressed=
false;
737 new KVInputDialog(
this,
"Enter names of IDTelescopes to use for grid(s):",
738 &idtels, &ok_pressed,
"Separate the names with commas!");
741 for(
auto tidg : fSelectedEntries)
743 auto idg =
dynamic_cast<KVIDGraph*
>(tidg);
768 if (GetNSelected() == 1)
769 fSelectedGrid->Clear();
770 else if (GetNSelected() > 1) {
772 TIter next(&fSelectedEntries);
781 Clist->R__FOR_EACH(
TCanvas, Modified)();
782 Clist->R__FOR_EACH(
TCanvas, Update)();
792 if (!fSelectedGrid)
return;
793 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
795 fSelectedGrid->Copy(*new_gr);
800 gIDGridManager->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfGrids()");
801 fIDGridList->Sort(0);
802 fIDGridList->Sort(0);
823 Info(
"NewGrid",
"There are %d grids in the manager", gIDGridManager->
GetGrids()->
GetSize());
824 TString default_class =
"KVIDZAGrid";
826 if (gMultiDetArray) {
829 fClient->GetDefaultRoot(),
this);
830 if (cancel || !telescopes->
At(0)) {
831 Info(
"NewGrid",
"No ID telescopes chosen. Grid creation cancelled.");
835 default_class = ((
KVIDTelescope*)telescopes->
At(0))->GetDefaultIDGridClass();
844 choice.
Data(), default_class.
Data(), &id_grid_class, &ok_pressed);
846 Info(
"NewGrid",
"No ID grid class chosen. Grid creation cancelled.");
849 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
853 gIDGridManager->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfGrids()");
887 const char* filetypes[] = {
888 "ID Grid files",
"*.dat",
905 SetStatus(
Form(
"Saved %d grids in file %s", n_saved, filenam.
Data()));
911 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
912 Form(
"Could not write file %s", filenam.
Data()), 0,
935 auto grids = gIDGridManager->
GetGrids();
936 create_and_fill_id_grid_list(
"Grids", grids);
941 while (! labels.
End()) {
944 create_and_fill_id_grid_list(lab, grids.get());
962 fIDGridList->SelectionChanged();
974 fIDGridList->SetDataColumns(11);
975 fIDGridList->SetDataColumn(0,
"Name",
"", kTextLeft);
976 fIDGridList->SetDataColumn(2,
"VarX",
"", kTextLeft);
977 fIDGridList->SetDataColumn(1,
"VarY",
"", kTextLeft);
978 fIDGridList->SetDataColumn(3,
"ID Telescopes",
"GetNamesOfIDTelescopes", kTextLeft);
979 fIDGridList->SetDataColumn(4,
"RunList",
"", kTextLeft);
980 fIDGridList->SetDataColumn(5,
"Identify Z and A?",
"HasMassIDCapability", kTextCenterX);
981 fIDGridList->GetDataColumn(5)->SetIsBoolean();
982 fIDGridList->SetDataColumn(6,
"# Ident.",
"GetNumberOfIdentifiers", kTextRight);
983 fIDGridList->SetDataColumn(7,
"# Cuts",
"GetNumberOfCuts", kTextRight);
984 fIDGridList->SetDataColumn(8,
"# Infos",
"GetNumberOfInfos", kTextRight);
985 fIDGridList->SetDataColumn(9,
"Last modified",
"GetTimestamp", kTextCenterX);
986 fIDGridList->SetDataColumn(10,
"Saved",
"GetFileWrite", kTextCenterX);
987 fIDGridList->ActivateSortButtons();
988 fIDGridList->Connect(
"SelectionChanged()",
"KVIDGridManagerGUI",
this,
989 "SelectionChanged()");
990 fIDGridList->SetDoubleClickAction(
"KVIDGridManagerGUI",
this,
"StartEditor(TObject*)");
992 kLHintsExpandX | kLHintsExpandY, 30,
995 fIDGridList->Display(grid_list);
1016 create_and_fill_id_grid_list(
"Grids");
1017 fGridListTabs->MapSubwindows();
1018 fGridListTabs->Layout();
1019 Int_t ntabs = fGridListTabs->GetCurrent();
1028 cout <<
"cf = 0x0 : label=Grids tab name=" <<
1029 fGridListTabs->GetTabTab(
"Grids")->GetText()->GetString() << endl;
1034 auto grids = gIDGridManager->
GetGrids();
1035 fIDGridList->Display(grids);
1038 Int_t ntabs = fGridListTabs->GetCurrent();
1044 while (! labels.
End()) {
1046 if (!fGridListTabs->GetTabContainer(lab)) {
1048 create_and_fill_id_grid_list(lab,grids.get());
1049 fGridListTabs->MapSubwindows();
1050 fGridListTabs->Layout();
1051 fGridListTabs->SetTab(fGridListTabs->GetNumberOfTabs() - 1,
kTRUE);
1057 cout <<
"cf = 0x0 : label=" << lab.
Data() <<
" tab name=" <<
1058 fGridListTabs->GetTabTab(lab.
Data())->GetText()->GetString() << endl;
1069 fIDGridList->Display(grids);
1072 if (grids)
delete grids;
1081 Int_t ntabs = fGridListTabs->GetCurrent();
1095 Int_t ntabs = fGridListTabs->GetNumberOfTabs();
1097 for (
Int_t itab = 0; itab < ntabs; itab++) {
1100 KVString lab = fGridListTabs->GetTabTab(itab)->GetString();
1113 fGridListTabs->RemoveTab(itab,
kFALSE);
1118 if (recursive) RemoveEmptyTabs();
1119 fGridListTabs->MapSubwindows();
1120 fGridListTabs->Layout();
1134 if (!fLastSelectedGrid)
return;
1136 KVList* ids = fLastSelectedGrid->GetIdentifiers();
1139 fIDLineList->Display(ids);
1141 fCUTList->Display(fSelectedGrid->GetCuts());
1145 fCUTInfoList->Display(fSelectedGrid->GetInfos());
1167 if (GetNSelected() == 1 && fSelectedGrid) {
1168 KVList* ids = fSelectedGrid->GetIdentifiers();
1171 fIDLineList->Display(ids);
1172 fCUTList->Display(fSelectedGrid->GetCuts());
1173 fCUTInfoList->Display(fSelectedGrid->GetInfos());
1174 if (fLastSelectedGrid) {
1175 fLastSelectedGrid->Disconnect(
"Modified()",
this,
"UpdateListOfLines()");
1177 fSelectedGrid->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfLines()");
1178 fLastSelectedGrid = fSelectedGrid;
1181 fIDLineList->RemoveAll();
1182 fCUTList->RemoveAll();
1183 fCUTInfoList->RemoveAll();
1184 if (fLastSelectedGrid) {
1185 fLastSelectedGrid->Disconnect(
"Modified()",
this,
"UpdateListOfLines()");
1186 fLastSelectedGrid = 0;
1199 for (
int i = 0; i < fNbButtons; i++) fTBbuttons[i]->SetEnabled(
kFALSE);
1201 fTBOpen->SetEnabled();
1202 fTBRefresh->SetEnabled();
1204 fTBNewG->SetEnabled();
1205 fTBOpenRoot->SetEnabled();
1209 if (!GetNSelected())
return;
1212 fTBDelG->SetEnabled();
1214 fTBSetIDG->SetEnabled();
1216 if (GetNSelected() == 1) {
1218 fTBStartEditor->SetEnabled();
1219 fTBCopyG->SetEnabled();
1250 if (!fSelectedGrid || GetNSelected() != 1)
return;
1252 resname.
Form(
"%s.IDClass", fSelectedGrid->ClassName());
1254 resname.
Form(
"%s.DefaultIDClass", fSelectedGrid->ClassName());
1260 "Choose class of new identifier :",
1265 if (!okpressed)
return;
1268 cut_class = cut_choices;
1269 SetStatus(
Form(
"Draw ID line (%s) in current pad", cut_class.
Data()));
1270 fSelectedGrid->DrawAndAdd(
"ID", cut_class.
Data());
1302 if (!fSelectedGrid || GetNSelected() != 1)
return;
1304 resname.
Form(
"%s.CutClass", fSelectedGrid->ClassName());
1306 resname.
Form(
"%s.DefaultCutClass", fSelectedGrid->ClassName());
1309 TString cut_types = cut_choices;
1314 "Choose class of new cut :",
1319 if (!okpressed)
return;
1322 cut_class = cut_types;
1323 SetStatus(
Form(
"Draw cut %s in current pad", cut_class.
Data()));
1325 fSelectedGrid->DrawAndAdd(
"CUT", cut_class.
Data());
1343 if (GetNSelected() != 1)
return;
1344 if (!fSelectedGrid)
return;
1348 TIter next(
gPad->GetListOfPrimitives());
1350 while ((o = next())) {
1358 SetStatus(
"No TH2 found in current pad. Select pad containing 2D histo with data to identify.");
1362 SetStatus(
Form(
"Test identification of data in current pad %s.", histo->
GetName()));
1364 new KVTestIDGridDialog(fClient->GetDefaultRoot(),
this, 10, 10, fSelectedGrid, histo);
1379 if (GetNSelected() != 1)
return;
1380 if (!fSelectedGrid)
return;
1384 TIter next(
gPad->GetListOfPrimitives());
1386 while ((o = next())) {
1394 SetStatus(
"No TH2 found in current pad. Select pad containing 2D histo with data to identify.");
1398 SetStatus(
Form(
"Test identification of data in current pad %s.", histo->
GetName()));
1400 TFile* tmpfiles = TestIdentificationWithTree(fSelectedGrid, histo->
GetName());
1402 SetStatus(
"There was a problem with the test ???");
1406 TH2*
id = (
TH2*)tmpfiles->
Get(
"idcode_map");
1430 TFile* KVIDGridManagerGUI::TestIdentificationWithTree(
KVIDGraph* gr,
const Char_t* name_of_data_histo)
1448 printf(
" KVIDGraph::TestIdentificationWithTree l histo %s n existe pas\n", name_of_data_histo);
1460 if ((tid = (
TTree*)
gROOT->FindObject(
"tree_idresults"))) {
1461 printf(
" KVIDGraph::TestIdentificationWithTree effacemenent de l arbre existant\n");
1465 TString fn(
"IDtestTree.root");
1467 TFile* tmpfile =
new TFile(fn.Data(),
"recreate");
1470 tid =
new TTree(
"tree_idresults",
"pid");
1471 Float_t br_xxx, br_yyy, br_stat, br_pid;
1472 Int_t br_idcode, br_isid;
1474 tid->
Branch(
"X", &br_xxx,
"br_xxx/F");
1475 tid->
Branch(
"Y", &br_yyy,
"br_yyy/F");
1476 tid->
Branch(
"Stat", &br_stat,
"br_stat/F");
1478 tid->
Branch(
"PID", &br_pid,
"br_pid/F");
1479 tid->
Branch(
"IDcode", &br_idcode,
"br_idcode/I");
1480 tid->
Branch(
"IsIdentified", &br_isid,
"br_isid/I");
1483 Int_t events_read = 0;
1487 for (
int i = 1; i <=
data->GetNbinsX(); i++) {
1488 for (
int j = 1; j <=
data->GetNbinsY(); j++) {
1495 Axis_t x0 =
data->GetXaxis()->GetBinCenter(i);
1496 Axis_t y0 =
data->GetYaxis()->GetBinCenter(j);
1497 Axis_t wx =
data->GetXaxis()->GetBinWidth(i);
1498 Axis_t wy =
data->GetYaxis()->GetBinWidth(j);
1510 for (
int k = 0; k < kmax; k++) {
1514 if (
gr->IsIdentifiable(x, y)) {
1516 gr->Identify(x, y, idr);
1519 br_idcode =
gr->GetQualityCode();
1530 events_read += (
Int_t) poids;
1531 percent = (1. * events_read / tot_events) * 100.;
1533 if (percent >= cumul) {
1534 cout << (
Int_t) percent <<
"\% processed" << endl;
1553 if (GetNSelected() != 1)
return;
1554 if (!fSelectedGrid)
return;
1555 SetStatus(
Form(
"Fitting grid %s", fSelectedGrid->GetName()));
1557 fitter->
SetGrid(fSelectedGrid);
1558 fitter->
SetPad(fSelectedGrid->GetPad());
1561 cm->Action(fitter,
m);
const Bool_t kIterBackward
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize UnmapWindow
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize MapSubwindows
Option_t Option_t TPoint TPoint percent
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
char * StrDup(const char *str)
R__EXTERN TSystem * gSystem
static const Char_t * GetListOfPlugins(const Char_t *base)
static void GetTempFileName(TString &base)
Ask user to choose between several options in a drop-down list.
ID Grid Manager dialog for choice of ID telescope(s)
Base class for particle identification in a 2D map.
void SetRunList(const char *runlist)
void Clear(Option_t *opt="") override
void SetVarY(const char *v) override
void ClearListOfIDTelescopes()
void SetVarX(const char *v) override
void AddIDTelescopes(const TList *)
Associate this graph with all ID telescopes in list.
static KVIDGraph * MakeIDGraph(const Char_t *)
void SetIDTelescopes(const TString &)
Set value of "IDTelescopes" parameter with comma-separated list of ID telescope names.
virtual void SetOnlyZId(Bool_t yes=kTRUE)
Identification grid editor GUI ,.
void StartViewer()
Close();.
Graphical interface tool for managing, creating, testing and fitting identification grids.
void TabSelect(Int_t)
called when a new tab is selected
void SaveGridsAs(const TCollection *=0)
void DeleteSelectedGrids()
warning message and confirmation
void HandleGridsMenu(Int_t id)
Receive signals emitted by items selected in Grids menu.
void DeleteAllGridsInTab()
delete the all grids in currently selected tab
void SetIDTelescopes()
propose to set IDTelescopes parameter using grid names
void ActivateToolbarButtons()
disable all buttons
void ClearGrid()
deletes all lines in currently selected grid(s)
void CloseWindow() override
close viewer
void RemoveEmptyTabs()
Recursively remove any empty tabs.
void Clear(Option_t *opt="") override
Delete all grids and empty list, ready to start anew.
void GetListOfIDTelescopeLabels(KVString &)
void DeleteGrid(KVIDGraph *, Bool_t update=kTRUE)
Int_t WriteAsciiFile(const Char_t *filename, const TCollection *selection=0)
KVSeqCollection * GetGridsForIDTelescope(const Char_t *label)
Bool_t ReadAsciiFile(const Char_t *filename)
const KVSeqCollection * GetGrids() const
Base class for all detectors or associations of detectors in array which can identify charged particl...
Full result of one attempted particle identification.
Enhanced version of ROOT TGListView widget.
Extended TList class which owns its objects by default.
void Sort(Bool_t order=kSortAscending)
Bool_t ReadGridsFromAsciiFile(const Char_t *) const
KVIDTelescope * GetIDTelescope(const Char_t *name) const
Return pointer to DeltaE-E ID Telescope with "name".
Nuclei reconstructed from data measured by a detector array .
void SetIdentification(KVIdentificationResult *, KVIDTelescope *)
virtual Float_t GetPID() const
KaliVeda extensions to ROOT collection classes.
Int_t GetSize() const override
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
GUI for testing identification grids.
ABC for fitting ID grids with functionals.
static KVVirtualIDFitter * GetDefaultFitter()
void SetPad(TVirtualPad *p)
void SetGrid(KVIDGraph *g)
TMethod * GetMethodAny(const char *method)
virtual Int_t GetEntries() const
virtual Int_t GetSize() const
T * Get(const char *namecycle)
virtual const char * GetValue(const char *name, const char *dflt) const
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
virtual TList * GetList() const
void ChangeOptions(UInt_t options) override
Bool_t fMultipleSelection
void Reset(Option_t *option="") override
void SetBinContent(Int_t bin, Double_t content) override
TObject * At(Int_t idx) const override
const char * GetName() const override
TClass * IsA() const override
const TString & GetString() const
virtual Bool_t InheritsFrom(const char *classname) const
virtual Double_t Uniform(Double_t x1, Double_t x2)
const char * Data() const
TString & Append(char c, Ssiz_t rep=1)
TString & Prepend(char c, Ssiz_t rep=1)
void Form(const char *fmt,...)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TString & ReplaceAll(const char *s1, const char *s2)
Bool_t cd(const char *path)
virtual const char * Getenv(const char *env)
virtual const char * BaseName(const char *pathname)
virtual char * ExpandPathName(const char *path)
virtual Int_t Branch(const char *folder, Int_t bufsize=32000, Int_t splitlevel=99)
virtual void StartViewer()
TFile * OpenFile(const TString &fin)
Double_t Min(Double_t a, Double_t b)