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;
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);
243 fCUTList->SetDataColumn(1,
"# Points",
"GetN",
kTextCenterX);
244 fCUTList->SetDataColumn(2,
"Class",
"ClassName",
kTextCenterX);
246 fCUTList->ActivateSortButtons();
247 fCUTList->AllowBrowse(
kFALSE);
252 lab1 =
new TGLabel(line_frame,
"Infos");
256 fCUTInfoList->SetDataColumns(3);
257 fCUTInfoList->SetDataColumn(0,
"Name",
"",
kTextLeft);
258 fCUTInfoList->SetDataColumn(1,
"# Points",
"GetN",
kTextCenterX);
259 fCUTInfoList->SetDataColumn(2,
"Class",
"ClassName",
kTextCenterX);
262 fCUTInfoList->ActivateSortButtons();
263 fCUTInfoList->AllowBrowse(
kFALSE);
274 SetWindowName(
"ID Grid Manager");
278 Resize(GetDefaultSize());
280 SetWMSize(1200, 600);
292 KVIDGridManagerGUI::~KVIDGridManagerGUI()
296 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
317 if (fIDGridEditor->IsClosed()) fIDGridEditor->
StartViewer();
321 fSelectedGrid->UpdateLastSavedVersion();
322 fIDGridEditor->SetGrid(fSelectedGrid);
343 static TString dir(
"$(HISTOROOT)");
352 const char* filetypes[] = {
"Root files",
"*.root",
"All files",
"*", 0, 0};
383 cout <<
"Add new grid" << endl;
390 case M_GRIDS_SAVE_SEL:
392 SaveGridsAs(fSelectedEntries.get());
395 case M_GRIDS_SAVE_TAB:
397 SaveGridsAs(GetAllGridsInTab());
400 case M_GRIDS_SAVE_ALL:
406 case M_GRIDS_DEL_SEL:
407 DeleteSelectedGrids();
410 case M_GRIDS_DEL_TAB:
414 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
415 "This will delete all grids in the current tab. Are you sure ?",
417 if (ret_val &
kMBOk) {
418 DeleteAllGridsInTab();
422 case M_GRIDS_DEL_ALL:
427 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
428 "This will delete all grids. Are you sure ?",
430 if (ret_val &
kMBOk) {
431 gIDGridManager->
Clear();
440 case M_GRIDS_SET_RUNLIST:
443 if (!fSelectedGrid)
break;
444 TString runs = fSelectedGrid->GetRunList();
446 new KVInputDialog(
this,
"Enter list of runs for grid(s):", &runs, &ok_pressed,
447 "Example: 1-10, 13, 22-657");
448 if (!ok_pressed)
break;
449 TIter next(fSelectedEntries.get());
456 case M_GRIDS_SET_VARX:
459 if (!fSelectedGrid)
break;
460 TString runs = fSelectedGrid->GetVarX();
462 new KVInputDialog(
this,
"Enter X variable for grid(s):", &runs, &ok_pressed,
464 if (!ok_pressed)
break;
465 TIter next(fSelectedEntries.get());
472 case M_GRIDS_SET_VARY:
475 if (!fSelectedGrid)
break;
476 TString runs = fSelectedGrid->GetVarY();
478 new KVInputDialog(
this,
"Enter Y variable for grid(s):", &runs, &ok_pressed,
480 if (!ok_pressed)
break;
481 TIter next(fSelectedEntries.get());
488 case M_GRIDS_SET_ZID:
491 if (!fSelectedGrid)
break;
492 Bool_t runs = !fSelectedGrid->HasMassIDCapability();
493 TIter next(fSelectedEntries.get());
503 if (!fSelectedGrid)
break;
504 TIter next(fSelectedEntries.get());
527 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
528 "This will delete the selected grids. Are you sure ?",
530 if (ret_val &
kMBOk) {
542 const char* filetypes[] = {
543 "ID Grid files",
"*.dat",
560 SetStatus(
Form(
"Read %d grids from file %s", ngriread, fi.
fFilename));
565 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
617 fSelectedEntries.reset(fIDGridList->GetSelectedObjects());
618 fSelectedGrid = (
KVIDGraph*)fIDGridList->GetLastSelectedObject();
619 if (!GetNSelected())fSelectedGrid = 0x0;
622 ActivateToolbarButtons();
623 if (!GetNSelected()) SetStatus();
624 else if (GetNSelected() == 1) SetStatus(
Form(
"Selected grid %s (%s)", fSelectedGrid->GetName(), fSelectedGrid->ClassName()));
625 else SetStatus(
Form(
"Selected %d grids, last selected grid %s (%s)", GetNSelected(), fSelectedGrid->GetName(), fSelectedGrid->ClassName()));
636 return (fSelectedEntries ? fSelectedEntries->GetSize() : 0);
648 if (!GetNSelected())
return;
654 if (fLastSelectedGrid == entry) fLastSelectedGrid = 0;
660 fSelectedEntries.reset(
nullptr);
680 fSelectedEntries.reset(
nullptr);
695 telescopes.
AddAll(fSelectedGrid->GetIDTelescopes());
697 fClient->GetDefaultRoot(),
this,
kTRUE);
698 if (cancel || !telescopes.
GetEntries())
return;
699 fSelectedGrid->ClearListOfTelescopes();
700 fSelectedGrid->AddIDTelescopes(&telescopes);
712 if (GetNSelected() == 1)
713 fSelectedGrid->Clear();
714 else if (GetNSelected() > 1) {
716 TIter next(fSelectedEntries.get());
725 Clist->R__FOR_EACH(
TCanvas, Modified)();
726 Clist->R__FOR_EACH(
TCanvas, Update)();
736 if (!fSelectedGrid)
return;
737 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
739 fSelectedGrid->Copy(*new_gr);
744 gIDGridManager->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfGrids()");
745 fIDGridList->Sort(0);
746 fIDGridList->Sort(0);
767 Info(
"NewGrid",
"There are %d grids in the manager", gIDGridManager->
GetGrids()->
GetSize());
768 TString default_class =
"KVIDZAGrid";
770 if (gMultiDetArray) {
773 fClient->GetDefaultRoot(),
this);
774 if (cancel || !telescopes->
At(0)) {
775 Info(
"NewGrid",
"No ID telescopes chosen. Grid creation cancelled.");
779 default_class = ((
KVIDTelescope*)telescopes->
At(0))->GetDefaultIDGridClass();
788 choice.
Data(), default_class.
Data(), &id_grid_class, &ok_pressed);
790 Info(
"NewGrid",
"No ID grid class chosen. Grid creation cancelled.");
793 gIDGridManager->Disconnect(
"Modified()",
this,
"UpdateListOfGrids()");
797 gIDGridManager->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfGrids()");
831 const char* filetypes[] = {
832 "ID Grid files",
"*.dat",
849 SetStatus(
Form(
"Saved %d grids in file %s", n_saved, filenam.
Data()));
854 new TGMsgBox(fClient->GetDefaultRoot(),
this,
"ID Grid Manager",
855 Form(
"Could not write file %s", filenam.
Data()), 0,
882 fIDGridList->SetDataColumns(11);
883 fIDGridList->SetDataColumn(0,
"Name",
"",
kTextLeft);
884 fIDGridList->SetDataColumn(2,
"VarX",
"",
kTextLeft);
885 fIDGridList->SetDataColumn(1,
"VarY",
"",
kTextLeft);
886 fIDGridList->SetDataColumn(3,
"ID Telescopes",
"GetNamesOfIDTelescopes",
kTextLeft);
887 fIDGridList->SetDataColumn(4,
"RunList",
"",
kTextLeft);
888 fIDGridList->SetDataColumn(5,
"Identify Z and A?",
"HasMassIDCapability",
kTextCenterX);
889 fIDGridList->GetDataColumn(5)->SetIsBoolean();
890 fIDGridList->SetDataColumn(6,
"# Ident.",
"GetNumberOfIdentifiers",
kTextRight);
891 fIDGridList->SetDataColumn(7,
"# Cuts",
"GetNumberOfCuts",
kTextRight);
892 fIDGridList->SetDataColumn(8,
"# Infos",
"GetNumberOfInfos",
kTextRight);
893 fIDGridList->SetDataColumn(9,
"X scaling",
"GetXScaleFactor",
kTextRight);
894 fIDGridList->SetDataColumn(10,
"Y scaling",
"GetYScaleFactor",
kTextRight);
895 fIDGridList->ActivateSortButtons();
896 fIDGridList->Connect(
"SelectionChanged()",
"KVIDGridManagerGUI",
this,
897 "SelectionChanged()");
898 fIDGridList->SetDoubleClickAction(
"KVIDGridManagerGUI",
this,
"StartEditor(TObject*)");
903 fIDGridList->Display(grids);
908 while (! labels.
End()) {
913 fIDGridList->SetDataColumns(10);
914 fIDGridList->SetDataColumn(0,
"Name",
"",
kTextLeft);
915 fIDGridList->SetDataColumn(2,
"VarX",
"",
kTextLeft);
916 fIDGridList->SetDataColumn(1,
"VarY",
"",
kTextLeft);
917 fIDGridList->SetDataColumn(3,
"ID Telescopes",
"GetNamesOfIDTelescopes",
kTextLeft);
918 fIDGridList->SetDataColumn(4,
"RunList",
"",
kTextLeft);
919 fIDGridList->SetDataColumn(5,
"Identify Z and A?",
"HasMassIDCapability",
kTextCenterX);
920 fIDGridList->GetDataColumn(5)->SetIsBoolean();
921 fIDGridList->SetDataColumn(6,
"# Ident.",
"GetNumberOfIdentifiers",
kTextRight);
922 fIDGridList->SetDataColumn(7,
"# Cuts",
"GetNumberOfCuts",
kTextRight);
923 fIDGridList->SetDataColumn(8,
"X scaling",
"GetXScaleFactor",
kTextRight);
924 fIDGridList->SetDataColumn(9,
"Y scaling",
"GetYScaleFactor",
kTextRight);
925 fIDGridList->ActivateSortButtons();
926 fIDGridList->Connect(
"SelectionChanged()",
"KVIDGridManagerGUI",
this,
927 "SelectionChanged()");
928 fIDGridList->SetDoubleClickAction(
"KVIDGridManagerGUI",
this,
"StartEditor(TObject*)");
933 fIDGridList->Display(grids);
952 fIDGridList->SelectionChanged();
977 fIDGridList->SetDataColumns(10);
978 fIDGridList->SetDataColumn(0,
"Name",
"",
kTextLeft);
979 fIDGridList->SetDataColumn(2,
"VarX",
"",
kTextLeft);
980 fIDGridList->SetDataColumn(1,
"VarY",
"",
kTextLeft);
981 fIDGridList->SetDataColumn(3,
"ID Telescopes",
"GetNamesOfIDTelescopes",
kTextLeft);
982 fIDGridList->SetDataColumn(4,
"RunList",
"",
kTextLeft);
983 fIDGridList->SetDataColumn(5,
"Identify Z and A?",
"HasMassIDCapability",
kTextCenterX);
984 fIDGridList->GetDataColumn(5)->SetIsBoolean();
985 fIDGridList->SetDataColumn(6,
"# Ident.",
"GetNumberOfIdentifiers",
kTextRight);
986 fIDGridList->SetDataColumn(7,
"# Cuts",
"GetNumberOfCuts",
kTextRight);
987 fIDGridList->SetDataColumn(8,
"X scaling",
"GetXScaleFactor",
kTextRight);
988 fIDGridList->SetDataColumn(9,
"Y scaling",
"GetYScaleFactor",
kTextRight);
989 fIDGridList->ActivateSortButtons();
990 fIDGridList->Connect(
"SelectionChanged()",
"KVIDGridManagerGUI",
this,
991 "SelectionChanged()");
995 fGridListTabs->MapSubwindows();
996 fGridListTabs->Layout();
997 Int_t ntabs = fGridListTabs->GetCurrent();
1006 cout <<
"cf = 0x0 : label=Grids tab name=" <<
1007 fGridListTabs->GetTabTab(
"Grids")->GetText()->GetString() << endl;
1013 fIDGridList->Display(grids);
1016 Int_t ntabs = fGridListTabs->GetCurrent();
1022 while (! labels.
End()) {
1025 if (!fGridListTabs->GetTabContainer(lab.
Data())) {
1030 fIDGridList->SetDataColumns(11);
1031 fIDGridList->SetDataColumn(0,
"Name",
"",
kTextLeft);
1032 fIDGridList->SetDataColumn(2,
"VarX",
"",
kTextLeft);
1033 fIDGridList->SetDataColumn(1,
"VarY",
"",
kTextLeft);
1034 fIDGridList->SetDataColumn(3,
"ID Telescopes",
"GetNamesOfIDTelescopes",
kTextLeft);
1035 fIDGridList->SetDataColumn(4,
"RunList",
"",
kTextLeft);
1036 fIDGridList->SetDataColumn(5,
"Identify Z and A?",
"HasMassIDCapability",
kTextCenterX);
1037 fIDGridList->GetDataColumn(5)->SetIsBoolean();
1038 fIDGridList->SetDataColumn(6,
"# Ident.",
"GetNumberOfIdentifiers",
kTextRight);
1039 fIDGridList->SetDataColumn(7,
"# Cuts",
"GetNumberOfCuts",
kTextRight);
1040 fIDGridList->SetDataColumn(8,
"# Infos",
"GetNumberOfInfos",
kTextRight);
1041 fIDGridList->SetDataColumn(9,
"X scaling",
"GetXScaleFactor",
kTextRight);
1042 fIDGridList->SetDataColumn(10,
"Y scaling",
"GetYScaleFactor",
kTextRight);
1043 fIDGridList->ActivateSortButtons();
1044 fIDGridList->Connect(
"SelectionChanged()",
"KVIDGridManagerGUI",
this,
1045 "SelectionChanged()");
1050 fIDGridList->Display(grids);
1052 fGridListTabs->MapSubwindows();
1053 fGridListTabs->Layout();
1054 fGridListTabs->SetTab(fGridListTabs->GetNumberOfTabs() - 1,
kTRUE);
1060 cout <<
"cf = 0x0 : label=" << lab.
Data() <<
" tab name=" <<
1061 fGridListTabs->GetTabTab(lab.
Data())->GetText()->GetString() << endl;
1072 fIDGridList->Display(grids);
1075 if (grids)
delete grids;
1084 Int_t ntabs = fGridListTabs->GetCurrent();
1098 Int_t ntabs = fGridListTabs->GetNumberOfTabs();
1100 for (
Int_t itab = 0; itab < ntabs; itab++) {
1103 KVString lab = fGridListTabs->GetTabTab(itab)->GetString();
1116 fGridListTabs->RemoveTab(itab,
kFALSE);
1121 if (recursive) RemoveEmptyTabs();
1122 fGridListTabs->MapSubwindows();
1123 fGridListTabs->Layout();
1137 if (!fLastSelectedGrid)
return;
1139 KVList* ids = fLastSelectedGrid->GetIdentifiers();
1142 fIDLineList->Display(ids);
1144 fCUTList->Display(fSelectedGrid->GetCuts());
1148 fCUTInfoList->Display(fSelectedGrid->GetInfos());
1168 if (GetNSelected() == 1 && fSelectedGrid) {
1169 KVList* ids = fSelectedGrid->GetIdentifiers();
1172 fIDLineList->Display(ids);
1174 fCUTList->Display(fSelectedGrid->GetCuts());
1177 fCUTInfoList->Display(fSelectedGrid->GetInfos());
1179 if (fLastSelectedGrid) {
1180 fLastSelectedGrid->Disconnect(
"Modified()",
this,
"UpdateListOfLines()");
1182 fSelectedGrid->Connect(
"Modified()",
"KVIDGridManagerGUI",
this,
"UpdateListOfLines()");
1183 fLastSelectedGrid = fSelectedGrid;
1186 fIDLineList->RemoveAll();
1187 fCUTList->RemoveAll();
1188 fCUTInfoList->RemoveAll();
1189 if (fLastSelectedGrid) {
1190 fLastSelectedGrid->Disconnect(
"Modified()",
this,
"UpdateListOfLines()");
1191 fLastSelectedGrid = 0;
1204 for (
int i = 0; i < fNbButtons; i++) fTBbuttons[i]->SetEnabled(
kFALSE);
1206 fTBOpen->SetEnabled();
1207 fTBRefresh->SetEnabled();
1209 fTBNewG->SetEnabled();
1210 fTBOpenRoot->SetEnabled();
1214 if (!GetNSelected())
return;
1217 fTBDelG->SetEnabled();
1219 if (GetNSelected() == 1) {
1221 fTBStartEditor->SetEnabled();
1222 fTBCopyG->SetEnabled();
1223 if (gMultiDetArray) fTBSetIDG->SetEnabled();
1254 if (!fSelectedGrid || GetNSelected() != 1)
return;
1256 resname.
Form(
"%s.IDClass", fSelectedGrid->ClassName());
1258 resname.
Form(
"%s.DefaultIDClass", fSelectedGrid->ClassName());
1264 "Choose class of new identifier :",
1269 if (!okpressed)
return;
1272 cut_class = cut_choices;
1273 SetStatus(
Form(
"Draw ID line (%s) in current pad", cut_class.
Data()));
1274 fSelectedGrid->DrawAndAdd(
"ID", cut_class.
Data());
1306 if (!fSelectedGrid || GetNSelected() != 1)
return;
1308 resname.
Form(
"%s.CutClass", fSelectedGrid->ClassName());
1310 resname.
Form(
"%s.DefaultCutClass", fSelectedGrid->ClassName());
1313 TString cut_types = cut_choices;
1318 "Choose class of new cut :",
1323 if (!okpressed)
return;
1326 cut_class = cut_types;
1327 SetStatus(
Form(
"Draw cut %s in current pad", cut_class.
Data()));
1329 fSelectedGrid->DrawAndAdd(
"CUT", cut_class.
Data());
1347 if (GetNSelected() != 1)
return;
1348 if (!fSelectedGrid)
return;
1352 TIter next(
gPad->GetListOfPrimitives());
1354 while ((o = next())) {
1362 SetStatus(
"No TH2 found in current pad. Select pad containing 2D histo with data to identify.");
1366 SetStatus(
Form(
"Test identification of data in current pad %s.", histo->
GetName()));
1368 new KVTestIDGridDialog(fClient->GetDefaultRoot(),
this, 10, 10, fSelectedGrid, histo);
1383 if (GetNSelected() != 1)
return;
1384 if (!fSelectedGrid)
return;
1388 TIter next(
gPad->GetListOfPrimitives());
1390 while ((o = next())) {
1398 SetStatus(
"No TH2 found in current pad. Select pad containing 2D histo with data to identify.");
1402 SetStatus(
Form(
"Test identification of data in current pad %s.", histo->
GetName()));
1404 TFile* tmpfiles = TestIdentificationWithTree(fSelectedGrid, histo->
GetName());
1406 SetStatus(
"There was a problem with the test ???");
1410 TH2*
id = (
TH2*)tmpfiles->
Get(
"idcode_map");
1434 TFile* KVIDGridManagerGUI::TestIdentificationWithTree(
KVIDGraph* gr,
const Char_t* name_of_data_histo)
1452 printf(
" KVIDGraph::TestIdentificationWithTree l histo %s n existe pas\n", name_of_data_histo);
1464 if ((tid = (
TTree*)
gROOT->FindObject(
"tree_idresults"))) {
1465 printf(
" KVIDGraph::TestIdentificationWithTree effacemenent de l arbre existant\n");
1469 TString fn(
"IDtestTree.root");
1471 TFile* tmpfile =
new TFile(fn.Data(),
"recreate");
1474 tid =
new TTree(
"tree_idresults",
"pid");
1475 Float_t br_xxx, br_yyy, br_stat, br_pid;
1476 Int_t br_idcode, br_isid;
1478 tid->
Branch(
"X", &br_xxx,
"br_xxx/F");
1479 tid->
Branch(
"Y", &br_yyy,
"br_yyy/F");
1480 tid->
Branch(
"Stat", &br_stat,
"br_stat/F");
1482 tid->
Branch(
"PID", &br_pid,
"br_pid/F");
1483 tid->
Branch(
"IDcode", &br_idcode,
"br_idcode/I");
1484 tid->
Branch(
"IsIdentified", &br_isid,
"br_isid/I");
1487 Int_t events_read = 0;
1491 for (
int i = 1; i <=
data->GetNbinsX(); i++) {
1492 for (
int j = 1; j <=
data->GetNbinsY(); j++) {
1499 Axis_t x0 =
data->GetXaxis()->GetBinCenter(i);
1500 Axis_t y0 =
data->GetYaxis()->GetBinCenter(j);
1501 Axis_t wx =
data->GetXaxis()->GetBinWidth(i);
1502 Axis_t wy =
data->GetYaxis()->GetBinWidth(j);
1514 for (
int k = 0; k < kmax; k++) {
1518 if (
gr->IsIdentifiable(x, y)) {
1520 gr->Identify(x, y, idr);
1523 br_idcode =
gr->GetQualityCode();
1534 events_read += (
Int_t) poids;
1535 percent = (1. * events_read / tot_events) * 100.;
1537 if (percent >= cumul) {
1538 cout << (
Int_t) percent <<
"\% processed" << endl;
1557 if (GetNSelected() != 1)
return;
1558 if (!fSelectedGrid)
return;
1559 SetStatus(
Form(
"Fitting grid %s", fSelectedGrid->GetName()));
1561 fitter->
SetGrid(fSelectedGrid);
1562 fitter->
SetPad(fSelectedGrid->GetPad());
1565 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)
static const Char_t * GetKVVersion()
Returns KaliVeda version string.
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 SetVarX(const char *v) override
void AddIDTelescopes(const TList *)
Associate this graph with all ID telescopes in list.
static KVIDGraph * MakeIDGraph(const Char_t *)
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
Int_t GetNSelected()
returns current number of selected items in grid list
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()
Set ID telescopes for selected grid.
void ActivateToolbarButtons()
disable all buttons
void DeleteGrids()
delete the current selected grid, or all currently selected grids if there are more than one
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)
KVList * GetGridsForIDTelescope(const Char_t *label)
Bool_t ReadAsciiFile(const Char_t *filename)
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
Nuclei reconstructed from data measured by a detector array .
void SetIdentification(KVIdentificationResult *, KVIDTelescope *)
virtual Float_t GetPID() const
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 void AddAll(const TCollection *col)
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
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
virtual Bool_t InheritsFrom(const char *classname) const
virtual Double_t Uniform(Double_t x1, Double_t x2)
const char * Data() const
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)