KaliVeda
Toolkit for HIC analysis
KVSimDirGUI.h
1 
4 #ifndef __KVSIMDIRGUI_H
5 #define __KVSIMDIRGUI_H
6 
7 #include "KVBase.h"
8 #include "KVList.h"
9 #include "TGListTree.h"
10 #include "TGFrame.h"
11 #include "TGTab.h"
12 #include "TEnv.h"
13 #include "KVDataSetManager.h"
14 #include "TGTextEntry.h"
15 #include "TGNumberEntry.h"
16 #include "TGButton.h"
17 #include "TGComboBox.h"
18 #include <TGLabel.h>
19 #include <TGMenu.h>
20 #include <TGStatusBar.h>
21 #include "RQ_OBJECT.h"
22 #include "TApplication.h"
23 #include "KVListView.h"
24 #include "KVSimDir.h"
25 #include "KVInputDialog.h"
26 #include "KVDataAnalyser.h"
27 #ifdef WITH_RSQLITE
28 #include "SQLiteDB.h"
29 #endif
30 class TChain;
31 
160 class KVSimDirGUI : public KVBase {
161  RQ_OBJECT("KVSimDirGUI")
162 
165 
168  /* picture buttons for managing directories */
173  /* list tree for managing directories */
177  const TGPicture* popen;
179  /* lists of data */
187  Int_t fRun = 0;
191  Bool_t fGemDecay = false;
194  enum {
195  kFTGeo = 1,
197  kFTFull
198  };
199  enum {
201  kGTROOT
202  };
203  enum {
204  kKCM = 1,
206  kKProj
207  };
215 #ifdef WITH_RSQLITE
217 #endif
221 protected:
222  void SetFilterOptions();
223 #ifdef WITH_RSQLITE
224  TString AddTableForDataSet(KVSimDir* sd, int ds_table_number);
225  void FillDataSetTableWithInfos(TString ds_table_name, KVSimDir* sd);
227 #endif
228 
229 public:
230  struct menu_struct {
234 
236 
237  struct mode_struct {
240  TString type = "mode_struct";
242  enum items {
244  filter
245  };
246  void handle_me(Int_t i)
247  {
248  switch (i) {
249  case analysis:
250  if (!_parent_gui->IsAnalysisMode()) {
253  }
254  break;
255  case filter:
256  if (!_parent_gui->IsFilterMode()) {
259  }
260  }
261  }
262  };
264 
268  TString type = "analysis_struct";
271  enum items {
275  };
276  void handle_me(Int_t i)
277  {
278  switch (i) {
281  break;
284  break;
287  break;
288  }
289  }
290  };
292 
293  struct filter_struct {
296  TString type = "filter_struct";
305  int last_run;
306  int last_dqa;
307  struct DQA_entry {
308  std::string name;
310  };
311 
312  std::map<int, DQA_entry> DQA_map;
313  enum items {
326  no_run_number = 300
327  };
328  void handle_me(Int_t i)
329  {
330  static int last_checked_dqa = 0;
331 
332  if (i < first_dataset) {
334  if (i >= geometric_filter && i <= full_filter) {
337  }
338  else if (i >= kine_CM && i <= kine_proj) {
339  _parent_gui->Kinematics(i - kine_CM + 1);
341  }
342  else if (i == random_phi) {
344  _parent_gui->SetRandomPhi(false);
346  }
347  else {
348  _parent_gui->SetRandomPhi(true);
350  }
351  }
352  else if (i == use_gemini) {
354  _parent_gui->SetGeminiDecay(false);
358  }
359  else {
363  }
364  }
365  else if (i == add_rot_energy) {
369  }
370  else {
373  }
374  }
375  }
376  else if (i < ad_hoc_reaction) {
378  geometry->RCheckEntry(i, first_dataset, first_dataset + ndatasets);
380  _parent_gui->SelectDataSet(gDataSetManager->GetDataSet(i - first_dataset)->GetName());
381  }
382  else if (i < data_quality_audits) {
384  switch (i) {
385  case ad_hoc_reaction: {
386  bool ok_pressed = true;
387  TString answer = "[Projectile]+[Target]@[Energy]MeV/A";
389  "Enter ad hoc reaction:",
390  &answer, &ok_pressed,
391  "example: 129Xe+119Sn@50.0MeV/A");
392  if (ok_pressed) {
396  }
397  break;
398  }
399  default:
401  _parent_gui->fReactionKinematics = ""; //remove any previous ad hoc reaction kinematics
403  }
405  }
406  else if (i < no_run_number) {
408  if (last_checked_dqa) DQA_map[last_checked_dqa].menu->UnCheckEntry(last_checked_dqa);
409  DQA_map[i].menu->CheckEntry(i);
410  last_checked_dqa = i;
412  }
413  else if (i >= no_run_number) { // run number
416  }
417 
419  }
420  };
422 
423  TGPopupMenu* add_popup(const char* name, TGPopupMenu* parent)
424  {
425  auto pop = new TGPopupMenu(gClient->GetDefaultRoot());
426  parent->AddPopup(name, pop);
427  return pop;
428  }
429  TGPopupMenu* add_popup(const char* name)
430  {
431  return menu_bar->AddPopup(name);
432  }
433  template<typename menu_type>
434  void handle_menu(menu_type& m)
435  {
436  m.menu->Connect("Activated(Int_t)", Form("KVSimDirGUI::menu_struct::%s", m.type.Data()), &m, "handle_me(Int_t)");
437  }
438  };
441  {
442  fFilterMode = true;
443  fAnalysisMode = false;
444  menus.menu_bar->RemovePopup("Analysis");
445  menus.menu_bar->AddPopup("&Filtering", menus.filter.menu, &menus.layout);
446  menus.menu_bar->Layout();
448  }
449  bool IsFilterMode() const
450  {
451  return fFilterMode;
452  }
454  {
455  fFilterMode = false;
456  fAnalysisMode = true;
457  menus.menu_bar->RemovePopup("Filtering");
459  menus.menu_bar->Layout();
461  }
462  bool IsAnalysisMode() const
463  {
464  return fAnalysisMode;
465  }
466 
467  KVSimDirGUI();
468 
469  void Exit()
470  {
472  }
473 
474  void AddSimDir();
475  void RemSimDir();
476  void RefreshSimDir();
477  void FillTreeList();
478  void EmptyTreeList();
480 
482  void SelectAnalysisClass();
483  void RunAnalysis(const TString& type);
484 
485  void SelectDataSet(const char*);
486  void SelectSystem(const char*);
487  void UpdateSystemText(const char*);
489  {
490  fFilterType = i;
491  }
492  void GeoType(Int_t i)
493  {
494  fGeoType = i;
495  }
497  {
498  fKine = i;
499  }
501  {
503  }
505  {
506  fRandomPhi = on;
507  }
509  {
510  fGemDecay = on;
511  }
513  {
514  fGemAddRotEner = on;
515  }
517  {
519  }
520 
522  void Run();
523  void EnableProof()
524  {
526  fWithPROOF = kTRUE;
537  }
539  {
541  fWithPROOF = kFALSE;
546  }
547 
548  void ImportSimulation();
551  Bool_t WarningBox(const char* title, const char* msg, Bool_t confirm);
552 
553  void SetFilterStatusBar();
554  void SetAnalysisStatusBar();
555 
556  ClassDefOverride(KVSimDirGUI, 0) //GUI for simulated data
557  TString GetKinematicsString();
559  void AddAuxDir(TGListTreeItem* simdir, Int_t);
560 };
561 
562 #endif
int Int_t
#define RQ_OBJECT(sender_class)
bool Bool_t
constexpr Bool_t kFALSE
constexpr Bool_t kTRUE
R__EXTERN TApplication * gApplication
#define gClient
#define N
kLHintsLeft
kLHintsTop
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
char name[80]
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
Base class for KaliVeda framework.
Definition: KVBase.h:139
Manager class which sets up and runs data analysis tasks.
KVDataSet * GetDataSet(Int_t) const
Return pointer to DataSet using index in list of all datasets, index>=0.
General purpose dialog box asking for some input in the form of a string.
Definition: KVInputDialog.h:24
Enhanced version of ROOT TGListView widget.
Definition: KVListView.h:146
Extended TList class which owns its objects by default.
Definition: KVList.h:28
Interface to ROOT SQLite database backend.
Definition: SQLiteDB.h:477
GUI for analysing and filtering simulated data.
Definition: KVSimDirGUI.h:160
TGStatusBar * fStatusBar
Definition: KVSimDirGUI.h:167
KVString fDataQualityAudit
Definition: KVSimDirGUI.h:188
TGPictureButton * BremDir
Definition: KVSimDirGUI.h:171
Int_t fGemDecayPerEvent
Definition: KVSimDirGUI.h:193
void SelectDataSet(const char *)
void ReconstructSimDirsFromDB()
Rebuild all KVSimDir/KVSimFile objects from information in sqlite DB.
void NewFilteredAnalysisClass()
Get name of new class.
Bool_t fGemAddRotEner
Definition: KVSimDirGUI.h:192
KVSQLite::database fConfigDB
Definition: KVSimDirGUI.h:216
void RemSimDir()
void EmptyTreeList()
Bool_t fFilterMode
Definition: KVSimDirGUI.h:220
void EnableProof()
Definition: KVSimDirGUI.h:523
void RefreshSimDir()
void SelectAnalysisClass()
void SetGeminiDecayAddRotEnergy(Bool_t on)
Definition: KVSimDirGUI.h:512
Bool_t fGemDecay
Definition: KVSimDirGUI.h:191
void FilterType(Int_t i)
Definition: KVSimDirGUI.h:488
void UpdateSystemText(const char *)
void SetFilterOptions()
bool IsAnalysisMode() const
Definition: KVSimDirGUI.h:462
KVDataAnalyser::UserClass fAnalClass
Definition: KVSimDirGUI.h:182
void AddSimDir()
TGCheckButton * fCBAllEvents
Definition: KVSimDirGUI.h:183
void NewSimulatedAnalysisClass()
Get name of new class.
KVList fListOfDirs
Definition: KVSimDirGUI.h:163
TGPictureButton * proof_analysis_ana
Definition: KVSimDirGUI.h:213
TGMainFrame * MainFrame
Definition: KVSimDirGUI.h:166
void SetAnalysisStatusBar()
TGViewPort * fDirListViewPort
Definition: KVSimDirGUI.h:175
TGNumberEntry * fNENumberEvents
Definition: KVSimDirGUI.h:184
void SelectSystem(const char *)
void SetCustomKinematics(Bool_t on)
Definition: KVSimDirGUI.h:500
Bool_t fAnalysisMode
Definition: KVSimDirGUI.h:220
menu_struct menus
Definition: KVSimDirGUI.h:439
void DisableProof()
Definition: KVSimDirGUI.h:538
void FillTreeList()
Int_t fFilterType
Definition: KVSimDirGUI.h:208
void SetFilterMode()
Definition: KVSimDirGUI.h:440
KVSimDir * fSelectedSimDir
Definition: KVSimDirGUI.h:164
KVString fReactionKinematics
Definition: KVSimDirGUI.h:186
bool IsFilterMode() const
Definition: KVSimDirGUI.h:449
KVString fSystem
Definition: KVSimDirGUI.h:186
TGListTree * fDirListTree
Definition: KVSimDirGUI.h:176
TGCanvas * fDirListCanvas
Definition: KVSimDirGUI.h:174
void AddAuxDir(TGListTreeItem *simdir, Int_t)
const TGPicture * pclose
used for list tree items
Definition: KVSimDirGUI.h:178
void SetRandomPhi(Bool_t on)
Definition: KVSimDirGUI.h:504
const TGPicture * popen
used for list tree items
Definition: KVSimDirGUI.h:177
void SetFilterStatusBar()
Bool_t fCustomKinematics
Definition: KVSimDirGUI.h:189
void SetAnalysisMode()
Definition: KVSimDirGUI.h:453
KVListView * fLVfiltData
Definition: KVSimDirGUI.h:181
void SetGeminiDecayPerEvent(Int_t N)
Definition: KVSimDirGUI.h:516
void Exit()
Definition: KVSimDirGUI.h:469
void Run()
void ChangeOutputDirectory();
void FillDataSetTableWithInfos(TString ds_table_name, KVSimDir *sd)
Definition: KVSimDirGUI.cpp:70
TGPictureButton * proof_analysis
TGTextEntry* fTEOutputDir;.
Definition: KVSimDirGUI.h:212
void EnableEventNumberEntry(Bool_t)
Int_t fGeoType
Definition: KVSimDirGUI.h:209
TString GetFilterTypeString()
void RunAnalysis(const TString &type)
Bool_t WarningBox(const char *title, const char *msg, Bool_t confirm)
TGPictureButton * BaddDir
Definition: KVSimDirGUI.h:169
void SetGeminiDecay(Bool_t on)
Definition: KVSimDirGUI.h:508
Bool_t fWithPROOF
=kTRUE when running with PROOF-lite
Definition: KVSimDirGUI.h:218
void GeoType(Int_t i)
Definition: KVSimDirGUI.h:492
Bool_t fCancelJob
if job parameters are not valid
Definition: KVSimDirGUI.h:219
ClassDefOverride(KVSimDirGUI, 0) TString GetKinematicsString()
void Kinematics(Int_t i)
Definition: KVSimDirGUI.h:496
Bool_t fRandomPhi
Definition: KVSimDirGUI.h:190
KVListView * fLVsimData
Definition: KVSimDirGUI.h:180
TGPictureButton * BimpSim
Definition: KVSimDirGUI.h:170
TGPictureButton * BrefreshDir
Definition: KVSimDirGUI.h:172
void SelectSimDir(TGListTreeItem *, Int_t)
TString AddTableForDataSet(KVSimDir *sd, int ds_table_number)
Add a new dataset table for the given KVSimDir object.
Definition: KVSimDirGUI.cpp:36
void ImportSimulation()
Import simulation data from currently selected directory.
KVString fDataset
Definition: KVSimDirGUI.h:185
Handle directory containing simulated and/or filtered simulated data ,.
Definition: KVSimDir.h:43
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
virtual void Terminate(Int_t status=0)
virtual void SetDown(Bool_t on=kTRUE, Bool_t emit=kFALSE)
virtual TGPopupMenu * RemovePopup(const char *s)
virtual void AddPopup(const char *s, TGPopupMenu *menu, TGLayoutHints *l, TGPopupMenu *before=nullptr)
void Layout() override
const char * GetName() const override
virtual Bool_t IsEntryChecked(Int_t id)
virtual TGMenuEntry * GetEntry(const char *s)
virtual void CheckEntry(Int_t id)
virtual void DisableEntry(Int_t id)
virtual void EnableEntry(Int_t id)
virtual void UnCheckEntry(Int_t id)
virtual void RCheckEntry(Int_t id, Int_t IDfirst, Int_t IDlast)
virtual void AddPopup(const char *s, TGPopupMenu *popup, TGMenuEntry *before=nullptr, const TGPicture *p=nullptr)
const char * GetName() const override
virtual Bool_t ProcessEvents()
Definition: KVSimDirGUI.h:307
std::string name
Definition: KVSimDirGUI.h:308
TGPopupMenu * menu
Definition: KVSimDirGUI.h:309
std::map< int, DQA_entry > DQA_map
Definition: KVSimDirGUI.h:312
void handle_menu(menu_type &m)
Definition: KVSimDirGUI.h:434
menu_struct(KVSimDirGUI *s)
Definition: KVSimDirGUI.h:233
KVSimDirGUI * _parent_gui
Definition: KVSimDirGUI.h:232
TGPopupMenu * add_popup(const char *name, TGPopupMenu *parent)
Definition: KVSimDirGUI.h:423
TGPopupMenu * add_popup(const char *name)
Definition: KVSimDirGUI.h:429
analysis_struct analysis
Definition: KVSimDirGUI.h:291
TMarker m