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 
158 class KVSimDirGUI : public KVBase {
159  RQ_OBJECT("KVSimDirGUI")
160 
163 
166  /* picture buttons for managing directories */
171  /* list tree for managing directories */
175  const TGPicture* popen;
177  /* lists of data */
185  Int_t fRun = 0;
189  Bool_t fGemDecay = false;
191  enum {
192  kFTGeo = 1,
194  kFTFull
195  };
196  enum {
198  kGTROOT
199  };
200  enum {
201  kKCM = 1,
203  kKProj
204  };
212 #ifdef WITH_RSQLITE
214 #endif
218 protected:
219  void SetFilterOptions();
220 #ifdef WITH_RSQLITE
221  TString AddTableForDataSet(KVSimDir* sd, int ds_table_number);
222  void FillDataSetTableWithInfos(TString ds_table_name, KVSimDir* sd);
224 #endif
225 
226 public:
227  struct menu_struct {
231 
233 
234  struct mode_struct {
237  TString type = "mode_struct";
239  enum items {
241  filter
242  };
243  void handle_me(Int_t i)
244  {
245  switch (i) {
246  case analysis:
247  if (!_parent_gui->IsAnalysisMode()) {
250  }
251  break;
252  case filter:
253  if (!_parent_gui->IsFilterMode()) {
256  }
257  }
258  }
259  };
261 
265  TString type = "analysis_struct";
268  enum items {
272  };
273  void handle_me(Int_t i)
274  {
275  switch (i) {
278  break;
281  break;
284  break;
285  }
286  }
287  };
289 
290  struct filter_struct {
293  TString type = "filter_struct";
302  int last_run;
303  int last_dqa;
304  struct DQA_entry {
305  std::string name;
307  };
308 
309  std::map<int, DQA_entry> DQA_map;
310  enum items {
321  no_run_number = 300
322  };
323  void handle_me(Int_t i)
324  {
325  static int last_checked_dqa = 0;
326 
327  if (i < first_dataset) {
329  if (i >= geometric_filter && i <= full_filter) {
332  }
333  else if (i >= kine_CM && i <= kine_proj) {
334  _parent_gui->Kinematics(i - kine_CM + 1);
336  }
337  else if (i == random_phi) {
339  _parent_gui->SetRandomPhi(false);
341  }
342  else {
343  _parent_gui->SetRandomPhi(true);
345  }
346  }
347  }
348  else if (i < ad_hoc_reaction) {
350  geometry->RCheckEntry(i, first_dataset, first_dataset + ndatasets);
352  _parent_gui->SelectDataSet(gDataSetManager->GetDataSet(i - first_dataset)->GetName());
353  }
354  else if (i < data_quality_audits) {
356  switch (i) {
357  case ad_hoc_reaction: {
358  bool ok_pressed = true;
359  TString answer = "[Projectile]+[Target]@[Energy]MeV/A";
361  "Enter ad hoc reaction:",
362  &answer, &ok_pressed,
363  "example: 129Xe+119Sn@50.0MeV/A");
364  if (ok_pressed) {
368  }
369  break;
370  }
371  default:
373  _parent_gui->fReactionKinematics = ""; //remove any previous ad hoc reaction kinematics
375  }
377  }
378  else if (i < no_run_number) {
380  if (last_checked_dqa) DQA_map[last_checked_dqa].menu->UnCheckEntry(last_checked_dqa);
381  DQA_map[i].menu->CheckEntry(i);
382  last_checked_dqa = i;
384  }
385  else if (i >= no_run_number) { // run number
388  }
389 
391  }
392  };
394 
395  TGPopupMenu* add_popup(const char* name, TGPopupMenu* parent)
396  {
397  auto pop = new TGPopupMenu(gClient->GetDefaultRoot());
398  parent->AddPopup(name, pop);
399  return pop;
400  }
401  TGPopupMenu* add_popup(const char* name)
402  {
403  return menu_bar->AddPopup(name);
404  }
405  template<typename menu_type>
406  void handle_menu(menu_type& m)
407  {
408  m.menu->Connect("Activated(Int_t)", Form("KVSimDirGUI::menu_struct::%s", m.type.Data()), &m, "handle_me(Int_t)");
409  }
410  };
413  {
414  fFilterMode = true;
415  fAnalysisMode = false;
416  menus.menu_bar->RemovePopup("Analysis");
417  menus.menu_bar->AddPopup("&Filtering", menus.filter.menu, &menus.layout);
418  menus.menu_bar->Layout();
420  }
421  bool IsFilterMode() const
422  {
423  return fFilterMode;
424  }
426  {
427  fFilterMode = false;
428  fAnalysisMode = true;
429  menus.menu_bar->RemovePopup("Filtering");
431  menus.menu_bar->Layout();
433  }
434  bool IsAnalysisMode() const
435  {
436  return fAnalysisMode;
437  }
438 
439  KVSimDirGUI();
440 
441  void Exit()
442  {
444  }
445 
446  void AddSimDir();
447  void RemSimDir();
448  void RefreshSimDir();
449  void FillTreeList();
450  void EmptyTreeList();
452 
454  void SelectAnalysisClass();
455  void RunAnalysis(const TString& type);
456 
457  void SelectDataSet(const char*);
458  void SelectSystem(const char*);
459  void UpdateSystemText(const char*);
461  {
462  fFilterType = i;
463  }
464  void GeoType(Int_t i)
465  {
466  fGeoType = i;
467  }
469  {
470  fKine = i;
471  }
473  {
475  }
477  {
478  fRandomPhi = on;
479  }
481  {
482  fGemDecay = on;
483  }
485  {
486  fGemAddRotEner = on;
487  }
488 
490  void Run();
491  void EnableProof()
492  {
494  fWithPROOF = kTRUE;
505  }
507  {
509  fWithPROOF = kFALSE;
514  }
515 
516  void ImportSimulation();
519  Bool_t WarningBox(const char* title, const char* msg, Bool_t confirm);
520 
521  void SetFilterStatusBar();
522  void SetAnalysisStatusBar();
523 
524  ClassDefOverride(KVSimDirGUI, 0) //GUI for simulated data
525  TString GetKinematicsString();
527  void AddAuxDir(TGListTreeItem* simdir, Int_t);
528 };
529 
530 #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
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:158
TGStatusBar * fStatusBar
Definition: KVSimDirGUI.h:165
KVString fDataQualityAudit
Definition: KVSimDirGUI.h:186
TGPictureButton * BremDir
Definition: KVSimDirGUI.h:169
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:190
KVSQLite::database fConfigDB
Definition: KVSimDirGUI.h:213
void RemSimDir()
void EmptyTreeList()
Bool_t fFilterMode
Definition: KVSimDirGUI.h:217
void EnableProof()
Definition: KVSimDirGUI.h:491
void RefreshSimDir()
void SelectAnalysisClass()
void SetGeminiDecayAddRotEnergy(Bool_t on)
Definition: KVSimDirGUI.h:484
Bool_t fGemDecay
Definition: KVSimDirGUI.h:189
void FilterType(Int_t i)
Definition: KVSimDirGUI.h:460
void UpdateSystemText(const char *)
void SetFilterOptions()
bool IsAnalysisMode() const
Definition: KVSimDirGUI.h:434
KVDataAnalyser::UserClass fAnalClass
Definition: KVSimDirGUI.h:180
void AddSimDir()
TGCheckButton * fCBAllEvents
Definition: KVSimDirGUI.h:181
void NewSimulatedAnalysisClass()
Get name of new class.
KVList fListOfDirs
Definition: KVSimDirGUI.h:161
TGPictureButton * proof_analysis_ana
Definition: KVSimDirGUI.h:210
TGMainFrame * MainFrame
Definition: KVSimDirGUI.h:164
void SetAnalysisStatusBar()
TGViewPort * fDirListViewPort
Definition: KVSimDirGUI.h:173
TGNumberEntry * fNENumberEvents
Definition: KVSimDirGUI.h:182
void SelectSystem(const char *)
void SetCustomKinematics(Bool_t on)
Definition: KVSimDirGUI.h:472
Bool_t fAnalysisMode
Definition: KVSimDirGUI.h:217
menu_struct menus
Definition: KVSimDirGUI.h:411
void DisableProof()
Definition: KVSimDirGUI.h:506
void FillTreeList()
Int_t fFilterType
Definition: KVSimDirGUI.h:205
void SetFilterMode()
Definition: KVSimDirGUI.h:412
KVSimDir * fSelectedSimDir
Definition: KVSimDirGUI.h:162
KVString fReactionKinematics
Definition: KVSimDirGUI.h:184
bool IsFilterMode() const
Definition: KVSimDirGUI.h:421
KVString fSystem
Definition: KVSimDirGUI.h:184
TGListTree * fDirListTree
Definition: KVSimDirGUI.h:174
TGCanvas * fDirListCanvas
Definition: KVSimDirGUI.h:172
void AddAuxDir(TGListTreeItem *simdir, Int_t)
const TGPicture * pclose
used for list tree items
Definition: KVSimDirGUI.h:176
void SetRandomPhi(Bool_t on)
Definition: KVSimDirGUI.h:476
const TGPicture * popen
used for list tree items
Definition: KVSimDirGUI.h:175
void SetFilterStatusBar()
Bool_t fCustomKinematics
Definition: KVSimDirGUI.h:187
void SetAnalysisMode()
Definition: KVSimDirGUI.h:425
KVListView * fLVfiltData
Definition: KVSimDirGUI.h:179
void Exit()
Definition: KVSimDirGUI.h:441
void Run()
void ChangeOutputDirectory();
void FillDataSetTableWithInfos(TString ds_table_name, KVSimDir *sd)
Definition: KVSimDirGUI.cpp:70
TGPictureButton * proof_analysis
TGTextEntry* fTEOutputDir;.
Definition: KVSimDirGUI.h:209
void EnableEventNumberEntry(Bool_t)
Int_t fGeoType
Definition: KVSimDirGUI.h:206
TString GetFilterTypeString()
void RunAnalysis(const TString &type)
Bool_t WarningBox(const char *title, const char *msg, Bool_t confirm)
TGPictureButton * BaddDir
Definition: KVSimDirGUI.h:167
void SetGeminiDecay(Bool_t on)
Definition: KVSimDirGUI.h:480
Bool_t fWithPROOF
=kTRUE when running with PROOF-lite
Definition: KVSimDirGUI.h:215
void GeoType(Int_t i)
Definition: KVSimDirGUI.h:464
Bool_t fCancelJob
if job parameters are not valid
Definition: KVSimDirGUI.h:216
ClassDefOverride(KVSimDirGUI, 0) TString GetKinematicsString()
void Kinematics(Int_t i)
Definition: KVSimDirGUI.h:468
Bool_t fRandomPhi
Definition: KVSimDirGUI.h:188
KVListView * fLVsimData
Definition: KVSimDirGUI.h:178
TGPictureButton * BimpSim
Definition: KVSimDirGUI.h:168
TGPictureButton * BrefreshDir
Definition: KVSimDirGUI.h:170
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:183
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 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:304
std::string name
Definition: KVSimDirGUI.h:305
TGPopupMenu * menu
Definition: KVSimDirGUI.h:306
std::map< int, DQA_entry > DQA_map
Definition: KVSimDirGUI.h:309
void handle_menu(menu_type &m)
Definition: KVSimDirGUI.h:406
menu_struct(KVSimDirGUI *s)
Definition: KVSimDirGUI.h:230
KVSimDirGUI * _parent_gui
Definition: KVSimDirGUI.h:229
TGPopupMenu * add_popup(const char *name, TGPopupMenu *parent)
Definition: KVSimDirGUI.h:395
TGPopupMenu * add_popup(const char *name)
Definition: KVSimDirGUI.h:401
analysis_struct analysis
Definition: KVSimDirGUI.h:288
TMarker m