4 #include "KVUnownedList.h"
5 #include "KVSimDirGUI.h"
6 #include "KVDataSetManager.h"
7 #include "KVBatchSystemManager.h"
9 #include "KVDBSystem.h"
11 #include "KVSimFile.h"
12 #include "KVFileDialog.h"
13 #include "KVInputDialog.h"
19 #include <KVDataAnalyser.h>
20 #include <KVSimDirFilterAnalyser.h>
21 #include <KVSimReader.h>
26 #include "KVBatchSystemParametersGUI.h"
27 #include "KVDropDownDialog.h"
36 TString KVSimDirGUI::AddTableForDataSet(
KVSimDir* sd,
int ds_table_number)
40 TString ds_table_name =
Form(
"Table_%d", ds_table_number);
43 DStable.primary_key(
"Id");
59 fConfigDB.add_table(DStable);
61 fConfigDB[
"Datasets"][
"Table"] = ds_table_name;
62 fConfigDB.update(
"Datasets",
"Table",
Form(
"Name=\"%s\"", sd->
GetName()));
72 void KVSimDirGUI::FillDataSetTableWithInfos(
TString ds_table_name,
KVSimDir* sd)
76 if(!fConfigDB[ds_table_name].has_column(
"AuxDir"))
77 fConfigDB.add_column(ds_table_name,
"AuxDir",
"INTEGER");
78 if(!fConfigDB[ds_table_name].has_column(
"DataQualityAudit"))
79 fConfigDB.add_column(ds_table_name,
"DataQualityAudit",
"TEXT");
80 fConfigDB.prepare_data_insertion(ds_table_name);
86 dstable[
"Id"].set_null();
87 dstable[
"FileName"] = sf->
GetName();
88 dstable[
"TreeInfo"] = sf->
GetTitle();
90 dstable[
"Filtered"] = 0;
94 fConfigDB.insert_data_row();
101 dstable[
"Id"].set_null();
102 dstable[
"FileName"] = sf->
GetName();
103 dstable[
"TreeInfo"] = sf->
GetTitle();
105 dstable[
"Filtered"] = 1;
111 dstable[
"Run"] = sf->
GetRun();
117 fConfigDB.insert_data_row();
120 fConfigDB.end_data_insertion();
131 : fGuirc(
".kvsimdirguirc")
133 , fConfigDB(
gSystem->ExpandPathName(
"$(HOME)/.kvsimdirguidb"))
140 fSelectedSimDir =
nullptr;
148 MainFrame->
SetName(
"KaliVedaSim GUI");
150 MainFrame->
Connect(
"CloseWindow()",
"KVSimDirGUI",
this,
"Exit()");
175 if (!gDataSetManager) {
193 for(
int i = 0; i<gDataSetManager->
GetNtotal(); ++i)
194 fill_dqa_menus_for_dataset(gDataSetManager->
GetDataSet(i));
232 fAnalysisMode =
true;
255 BaddDir->
Connect(
"Clicked()",
"KVSimDirGUI",
this,
"AddSimDir()");
260 BimpSim->
Connect(
"Clicked()",
"KVSimDirGUI",
this,
"ImportSimulation()");
265 BremDir->
Connect(
"Clicked()",
"KVSimDirGUI",
this,
"RemSimDir()");
268 BrefreshDir->
Resize(40, 40);
270 BrefreshDir->
Connect(
"Clicked()",
"KVSimDirGUI",
this,
"RefreshSimDir()");
278 fDirListCanvas =
new TGCanvas(vf, 172, 400);
284 popen =
gClient->GetPicture(
"package_add.xpm");
285 pclose =
gClient->GetPicture(
"package_add.xpm");
287 fDirListViewPort->
AddFrame(fDirListTree);
290 fDirListTree->
Connect(
"Clicked(TGListTreeItem*,Int_t)",
"KVSimDirGUI",
this,
"SelectSimDir(TGListTreeItem*,Int_t)");
291 fDirListTree->
Connect(
"DoubleClicked(TGListTreeItem*,Int_t)",
"KVSimDirGUI",
this,
"AddAuxDir(TGListTreeItem*,Int_t)");
313 fLVfiltData->
SetDataColumn(0,
"Simulation",
"GetOriginalFile");
314 fLVfiltData->
SetDataColumn(1,
"DataSet/Geometry",
"GetDataSet");
315 fLVfiltData->
SetDataColumn(2,
"System/Kinematics",
"GetSystem");
318 fLVfiltData->
SetDataColumn(5,
"Detector performances",
"GetDataQualityAudit");
320 fLVfiltData->
SetDataColumn(7,
"Decay/event",
"GetGemDecayPerEvent");
333 auto lab =
new TGLabel(hf,
"Events : ");
339 fCBAllEvents->
Connect(
"Toggled(Bool_t)",
"KVSimDirGUI",
this,
"EnableEventNumberEntry(Bool_t)");
343 proof_analysis->
Connect(
"Pressed()",
"KVSimDirGUI",
this,
"EnableProof()");
344 proof_analysis->
Connect(
"Released()",
"KVSimDirGUI",
this,
"DisableProof()");
348 proof_analysis->
Resize(40, 40);
352 launch_analysis->
Connect(
"Clicked()",
"KVSimDirGUI",
this,
"Run()");
354 launch_analysis->
Resize(40, 40);
373 bool sqlite_conversion =
false;
375 sqlite_conversion =
true;
385 if (!sqlite_conversion) {
387 if (!fConfigDB[
"Datasets"].has_column(
"AuxDir"))
388 fConfigDB.
add_column(
"Datasets",
"AuxDir",
"TEXT");
390 ReconstructSimDirsFromDB();
399 if (sqlite_conversion) {
407 std::unordered_map<std::string,int> simdirs_to_remove;
408 while (!simdirs.
End()) {
414 KVError::Warning(
this,
"KVSimDirGUI",
"Dataset %s: directory %s no longer exists [CLEANUP]",
415 simdir.
Data(), simdirectory.
Data());
416 ++simdirs_to_remove[simdir.
Data()];
417 remove_dataset_from_sqlitedb(simdir.
Data());
422 if (sqlite_conversion) {
423 fConfigDB[
"Datasets"][
"Name"] = simdir;
424 fConfigDB[
"Datasets"][
"Directory"] = simdirectory;
425 fConfigDB[
"Datasets"][
"AuxDir"].set_null();
432 if(simdirs_to_remove.size())
436 while(!simdirs.
End())
439 if(
auto search = simdirs_to_remove.find(simdirectory.Data()); search == simdirs_to_remove.end())
443 new_sim_dirs += simdirectory;
445 simdirs = new_sim_dirs;
446 fGuirc.
SetValue(
"SimDirs", simdirs);
451 if (sqlite_conversion) {
453 TIter itdir(&fListOfDirs);
457 TString ds_table_name = AddTableForDataSet(sd, ds_table);
459 FillDataSetTableWithInfos(ds_table_name, sd);
475 TIter next(&fListOfDirs);
477 while ((o = next())) {
526 if (simdirs !=
"") simdirs +=
" ";
527 simdirs += simdirname;
528 fGuirc.
SetValue(
"SimDirs", simdirs);
533 int ds_table_num = 0;
534 if (fConfigDB.
count(
"Datasets")) {
538 for(
auto& par : table_names)
541 if(sscanf(par.GetString(),
"Table_%d", &tab_num)==1)
542 if(tab_num>ds_table_num) ds_table_num=tab_num;
547 fConfigDB[
"Datasets"][
"Name"] = simdirname;
548 fConfigDB[
"Datasets"][
"Directory"] = sd->
GetDirectory();
549 fConfigDB[
"Datasets"][
"AuxDir"].set_null();
552 TString table_name = AddTableForDataSet(sd, ds_table_num);
553 FillDataSetTableWithInfos(table_name, sd);
566 if (!fSelectedSimDir)
return;
575 FillDataSetTableWithInfos(ds_table_name, fSelectedSimDir);
583 void KVSimDirGUI::remove_dataset_from_sqlitedb(
const Char_t* ds_name)
586 fConfigDB.
select_data(
"Datasets",
"Table",
Form(
"Name = '%s'", ds_name));
601 if (!fSelectedSimDir)
return;
602 fListOfDirs.
Remove(fSelectedSimDir);
607 remove_dataset_from_sqlitedb(fSelectedSimDir->
GetName());
609 delete fSelectedSimDir;
610 fSelectedSimDir =
nullptr;
616 TIter next(&fListOfDirs);
618 while ((togo = (
KVSimDir*)next())) {
619 if (simdirs !=
"") simdirs +=
" ";
623 fGuirc.
SetValue(
"SimDirs", simdirs);
634 if (fSelectedSimDir) {
654 if (fSelectedSimDir) {
664 fConfigDB[
"Datasets"][
"AuxDir"] = fi.
fIniDir;
665 fConfigDB.
update(
"Datasets",
"AuxDir",
Form(
"Name = '%s'", fSelectedSimDir->
GetName()));
680 const char* filetypes[] = {
681 "Class header files",
"*.h",
691 if (idot < 0)
return;
722 void KVSimDirGUI::fill_dqa_menus_for_dataset(
const KVDataSet* ds)
742 Info(
"KVSimDirGUI",
"Adding data quality audits for dataset %s...", ds->
GetName());
746 std::unordered_map<std::string, TGPopupMenu*> DQA_system_popups;
822 fDataQualityAudit.
Begin(
"/");
823 auto DQA_dataset = fDataQualityAudit.
Next();
832 if(DQA_dataset.IsNull() || fDataset.
IsNull())
return;
834 if(DQA_dataset==
"file")
838 const char* filetypes[] = {
839 "ROOT files",
"*.root",
848 Info(
"SelectDataQualityAudit",
"path:%s",fDataQualityAudit.
Data());
853 KVString arrays_with_exId =
gEnv->
GetValue(
"FilterGroupReconstructor.HasExtendibleIdentifications",
"");
854 if(arrays_with_exId.
IsNull())
return;
858 arrays_with_exId.
Begin(
" ");
860 while(!arrays_with_exId.
End())
862 auto array = arrays_with_exId.
Next(
kTRUE);
866 if(!exId_for_array.
IsNull())
868 exId_for_array.
Begin(
" ");
869 while(!exId_for_array.
End())
893 for(
auto p_dbr : sys->
GetRuns())
895 auto dbr =
dynamic_cast<KVDBRun*
>(p_dbr);
913 else if (fFilterMode) {
914 if (fDataset ==
"") {
932 if (
type ==
"tree") {
933 if (!selected_sim_runs.GetEntries() && !selected_filt_runs.GetEntries()) {
945 if (selected_sim_runs.GetEntries()) {
946 if (selected_filt_runs.GetEntries()) {
949 runs_to_analyse = selected_filt_runs;
950 analysis_task =
"analysis filtered";
951 aux_runs_to_analyse = selected_sim_runs;
954 runs_to_analyse = selected_sim_runs;
955 analysis_task =
"analysis simulated";
959 runs_to_analyse = selected_filt_runs;
960 analysis_task =
"analysis filtered";
965 if (selected_filt_runs.GetEntries()) {
969 if (!selected_sim_runs.GetEntries()) {
973 runs_to_analyse = selected_sim_runs;
974 analysis_task =
"filter simulated";
977 fSelectedSimDir =
dynamic_cast<KVSimFile*
>(runs_to_analyse.
First())->GetSimDir();
982 fConfigDB[
"Datasets"][
"AuxDir"] =
gSystem->
pwd();
983 fConfigDB.
update(
"Datasets",
"AuxDir",
Form(
"Name = '%s'", fSelectedSimDir->
GetName()));
1006 if (
type ==
"filter") {
1008 if (fCustomKinematics) {
1011 KV2Body cd(fReactionKinematics);
1014 KVError::Error(
this,
"SetFilterOptions",
"Please check the format of the ad hoc system name you gave");
1015 WarningBox(
"Bad System",
"Please check the format of the ad hoc system name you gave",
kFALSE);
1021 fSystem = fReactionKinematics;
1031 gBatchSystem->
Clear();
1035 if (!cancel_batch_job) {
1040 if (!cancel_batch_job && !fCancelJob) {
1041 if (
type ==
"filter")
1044 if(
type ==
"filter")
1049 Info(
"RunAnalysis",
"Forcing rebuild of complete dataset for %s if necessary", fDataset.
Data());
1052 gDataAnalyser->
Run();
1055 if(!fWithPROOF || (fWithPROOF && gBatchSystem->
IsCalled(
"PROOFLite")))
1063 TString KVSimDirGUI::GetKinematicsString()
1066 if (fKine == kKCM) kinema =
"cm";
1067 else if (fKine == kKProj) kinema =
"proj";
1068 else kinema =
"lab";
1080 switch (fFilterType) {
1085 filter =
"GeoThresh";
1098 void KVSimDirGUI::SetFilterOptions()
1100 TString kinema = GetKinematicsString();
1104 options =
Form(
"Dataset=%s,", fDataset.
Data());
1105 if (fSystem !=
"") options +=
Form(
"System=%s,", fSystem.
Data());
1106 else if (kinema !=
"lab") {
1109 "KVSimDirGUI::SetFilterOptions",
1110 Form(
"Cannot transform kinematics from %s to lab without a defined reaction (system)!", kinema.
Data()),
1111 kMBIconExclamation);
1115 options +=
Form(
"Filter=%s,", filter.
Data());
1116 options +=
Form(
"Kinematics=%s", kinema.
Data());
1117 if (fDataQualityAudit !=
"") {
1118 options +=
Form(
",DataQualityAudit=%s", fDataQualityAudit.
Data());
1126 if(fExtensibleIDs.
Length())
1127 fExtensibleIDs+=
"|";
1128 fExtensibleIDs+=me->GetName();
1131 if(fExtensibleIDs.
Length())
1132 options +=
Form(
",ExtensibleID=%s",fExtensibleIDs.
Data());
1136 r.Form(
",Run=%d", fRun);
1139 else if (filter ==
"Full" && (fCustomKinematics || fSystem ==
"")) {
1142 "KVSimDirGUI::SetFilterOptions",
1143 Form(
"To use 'FULL' (run-dependent) filter requires either a run number or a system from the dataset!"),
1144 kMBIconExclamation);
1148 if (!fRandomPhi) options +=
",PhiRot=no";
1150 options +=
",Gemini=yes";
1151 options +=
Form(
",GemDecayPerEvent=%d", fGemDecayPerEvent);
1152 if (fGemAddRotEner) options +=
Form(
",GemAddRotEner=yes");
1157 std::cout << options << std::endl;
1169 const char* filetypes[] = {
1182 if (one_file || many_files) {
1187 while (!plugins.
End()) {
1190 if (choices.
Length()) choices +=
" ";
1196 new KVDropDownDialog(MainFrame,
"Choose the simulation model and type of events", choices, 0, &model, &ok);
1201 SR->SetOutputDirectory(fSelectedSimDir->
GetDirectory());
1202 SR->ConvertAndSaveEventsInFile(fi.
fFilename);
1207 SR->SetOutputDirectory(fSelectedSimDir->
GetDirectory());
1214 while ((o = it())) {
1216 SR->SetMultiFiles();
1217 SR->SetFileIndex(i++);
1218 SR->SetOutputDirectory(fSelectedSimDir->
GetDirectory());
1219 SR->ConvertAndSaveEventsInFile(o->
GetName());
1242 new KVInputDialog(MainFrame,
"Enter name of new analysis class", &classname, &ok,
"Enter name of new analysis class");
1246 ok = ok &&
WarningBox(
"Replacing existing class",
1247 Form(
"%s is the name of an existing class defined in [%s,%s].\nDo you want to overwrite this class?\n(All existing code will be lost)",
1253 fStatusBar->
SetText(
Form(
"Generated new filtered analysis class %s", classname.
Data()), 1);
1267 new KVInputDialog(MainFrame,
"Enter name of new analysis class", &classname, &ok,
"Enter name of new analysis class");
1271 ok = ok &&
WarningBox(
"Replacing existing class",
1272 Form(
"%s is the name of an existing class defined in [%s,%s].\nDo you want to overwrite this class?\n(All existing code will be lost)",
1278 fStatusBar->
SetText(
Form(
"Generated new simulated analysis class %s", classname.
Data()), 1);
1303 reply = (ret_code &
kMBYes);
1314 int parts[] = {14, 25, 10, 14, 9, 7, 10};
1317 fStatusBar->
SetText(fCustomKinematics ? fReactionKinematics.
Data() : fSystem.
Data(), 1);
1321 fStatusBar->
SetText(GetKinematicsString().Data(), 5);
1324 gemphi =
Form(
"Gem++, %d/ev.", fGemDecayPerEvent);
1325 if (fGemAddRotEner) gemphi +=
" +Erot";
1328 if (gemphi.
Length()) gemphi +=
"; ";
1329 gemphi +=
"phi RNDM";
1331 fStatusBar->
SetText(gemphi, 6);
1346 fStatusBar->
SetText(
"Analysis class:", 0);
1356 void KVSimDirGUI::ReconstructSimDirsFromDB()
1365 auto dataset_dir = fConfigDB[
"Datasets"][
"Directory"].get_data<
TString>();
1368 auto sd =
new KVSimDir(fConfigDB[
"Datasets"][
"Name"].get_data<TString>(),
1370 if (!fConfigDB[
"Datasets"][
"AuxDir"].is_null())
1373 auto aux_dir = fConfigDB[
"Datasets"][
"AuxDir"].get_data<
TString>();
1377 fListOfDirs.
Add(sd);
1378 tables.
SetValue(fConfigDB[
"Datasets"][
"Name"].get_data<TString>(),
1379 fConfigDB[
"Datasets"][
"Table"].get_data<
TString>());
1381 for (
int i = 0; i < tables.
GetNpar(); ++i)
1384 if(!fConfigDB[tab].has_column(
"AuxDir"))
1385 fConfigDB.
add_column(tab,
"AuxDir",
"INTEGER");
1386 if(!fConfigDB[tab].has_column(
"DataQualityAudit"))
1387 fConfigDB.
add_column(tab,
"DataQualityAudit",
"TEXT");
1389 for (
int i = 0; i < tables.
GetNpar(); ++i) {
1394 bool from_aux_dir = !dstable[
"AuxDir"].is_null() ? dstable[
"AuxDir"].get_data<
int>() :
false;
1395 if (dstable[
"Filtered"].get_data<int>()) {
1398 if (!dstable[
"DataQualityAudit"].is_null())
1399 dqa = dstable[
"DataQualityAudit"].get_data<TString>();
1402 dstable[
"FileName"].get_data<TString>(), dstable[
"TreeInfo"].get_data<TString>(),
1403 dstable[
"Events"].get_data<int>(), dstable[
"TreeName"].get_data<TString>(),
1404 dstable[
"BranchName"].get_data<TString>(), dstable[
"DataSet"].get_data<TString>(),
1405 dstable[
"System"].get_data<TString>(), dstable[
"Run"].get_data<int>(),
1406 dstable[
"OrigFile"].get_data<TString>(),
1407 dstable[
"FiltType"].get_data<TString>(),
1410 f->SetGemini(dstable[
"Gemini"].get_data<bool>());
1411 if (
f->IsGemini())
f->SetGemDecayPerEvent(dstable[
"GemDecayPerEvent"].get_data<int>());
1418 dstable[
"FileName"].get_data<TString>(), dstable[
"TreeInfo"].get_data<TString>(),
1419 dstable[
"Events"].get_data<int>(), dstable[
"TreeName"].get_data<TString>(),
1420 dstable[
"BranchName"].get_data<TString>());
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
char * Form(const char *fmt,...)
char * StrDup(const char *str)
R__EXTERN TSystem * gSystem
Relativistic binary kinematics calculator.
void CalculateKinematics()
void Print(Option_t *opt="") const override
static const Char_t * GetListOfPlugins(const Char_t *base)
static Bool_t FindClassSourceFiles(const KVString &class_name, KVString &imp_file, KVString &dec_file, const KVString &dir_name=".")
Bool_t IsCalled(const Char_t *name, bool case_insensitive=false) const
static const Char_t * GetPluginURI(const Char_t *base, const Char_t *plugin)
Handles list of all available batch systems for processing non-interactive data analysis tasks.
KVBatchSystem * GetDefaultBatchSystem() const
Utility GUI used for setting batch system parameters.
void Clear(Option_t *opt="") override
void cd()
Make this the default batch system.
virtual void SetBatchSystemParameters(const KVNameValueList &)
Use the parameters in the list to set all relevant parameters for batch system.
virtual void GetBatchSystemParameterList(KVNameValueList &)
Description of an experimental run in database ,,.
Database class used to store information on different colliding systems studied during an experiment....
Bool_t IsCollision() const
retourne kTRUE, si le systeme est une collision ie projectile+cible
TString GetBatchNameWithoutEnergy()
TString GetReactionNameWithoutEnergy()
TString GetReactionEnergyWithoutName()
KVUnownedList GetRuns() const
Returns a sorted list of all the runs associated with this system.
virtual void SetFileList(const KVUnownedList &)
virtual void Run()
Check all task variables, then run analyser.
void SetBatchSystem(KVBatchSystem *bs)
void SetUserClassOptions(const Char_t *o="")
virtual void SetAuxFileList(const KVUnownedList &)
void SetAnalysisTask(KVDataAnalysisTask *at)
void SetUserClass(const UserClass &kvs, Bool_t check=kTRUE)
static KVDataAnalyser * GetAnalyser(const Char_t *plugin)
Bool_t IsUserClassValid() const
void SetNbEventToRead(Long64_t nb=0)
Define and manage data analysis tasks.
virtual Bool_t WithUserClass() const
virtual const Char_t * GetDataAnalyser() const
virtual const Char_t * GetUserBaseClass() const
Manage all datasets contained in a given data repository.
Bool_t Init(KVDataSetRepository *=0)
KVDataAnalysisTask * GetAnalysisTaskAny(const Char_t *keywords) const
KVDataSet * GetDataSet(Int_t) const
Return pointer to DataSet using index in list of all datasets, index>=0.
Manage an experimental dataset corresponding to a given experiment or campaign.
TString GetFullPathToDataSetFile(const Char_t *filename) const
KVExpDB * GetDataBase(const TString &opt="") const
static Bool_t FindDataSetFile(const TString &dataset, const Char_t *filename)
Ask user to choose between several options in a drop-down list.
virtual KVDBSystem * GetSystem(const Char_t *system) const
virtual KVSeqCollection * GetSystems() const
Modified version of TGFileDialog file selection dialog.
Enhanced version of ROOT TGListView widget.
virtual void ActivateSortButtons()
virtual void SetDataColumns(Int_t ncolumns)
virtual void Display(const TCollection *l)
KVUnownedList GetSelectedObjects() const
void AllowContextMenu(Bool_t on=kTRUE)
virtual void SetDataColumn(Int_t index, const Char_t *name, const Char_t *method="", Int_t mode=kTextCenterX)
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
KVNamedParameter * GetParameter(Int_t idx) const
return the parameter object with index idx
void SetValue(const Char_t *name, value_type value)
Int_t GetNpar() const
return the number of stored parameters
value_type GetValue(const Char_t *name) const
int get_number_of_tables() const
table & add_table(const table &)
bool update(const TString &table, const TString &columns, const TString &selection="")
void delete_table(const TString &table)
column & add_column(const TString &table, const TString &name, const TString &type)
void delete_rows_in_table(const TString &table, const TString &selection="")
void end_data_insertion()
bool select_data(const TString &tables, const TString &columns="*", const TString &selection="", bool distinct=false, const TString &anything_else="") const
KVNameValueList get_name_value_list(const TString &table, const TString &name_column, const TString &value_column, const TString &selection="", const TString &anything_else="")
bool get_next_result() const
bool prepare_data_insertion(const TString &)
void clear_table(const TString &name)
Delete all rows in table, but does not remove table.
int count(const TString &tables, const TString &column="*", const TString &selection="", bool distinct=false, const TString &anything_else="") const
void primary_key(const TString &cols)
column & add_column(const KVSQLite::column &c)
TObject * First() const override
TObject * Remove(TObject *obj) override
Remove object from list.
void Add(TObject *obj) override
TObject * FindObject(const char *name) const override
Class piloting analyses of simulated data.
void SetDataSetForFilter(const TString &f)
void SetSystemForFilter(const TString &f)
static void Make(const Char_t *kvsname="MySimulatedAnalysis")
Generate a new simulated analysis selector class.
static void Make(const Char_t *kvsname="MyFilteredAnalysis")
Generate a new filtered analysis selector class.
GUI for analysing and filtering simulated data.
void SelectDataSet(const char *)
void NewFilteredAnalysisClass()
Get name of new class.
void SelectAnalysisClass()
void NewSimulatedAnalysisClass()
Get name of new class.
void SetAnalysisStatusBar()
void SelectSystem(const char *)
void SelectDataQualityAudit()
void AddAuxDir(TGListTreeItem *simdir, Int_t)
void SetRandomPhi(Bool_t on)
void SetFilterStatusBar()
void Run()
void ChangeOutputDirectory();
void EnableEventNumberEntry(Bool_t)
TString GetFilterTypeString()
void RunAnalysis(const TString &type)
Bool_t WarningBox(const char *title, const char *msg, Bool_t confirm)
void SetGeminiDecay(Bool_t on)
void SelectSimDir(TGListTreeItem *, Int_t)
void ImportSimulation()
Import simulation data from currently selected directory.
Handle directory containing simulated and/or filtered simulated data ,.
const KVList * GetFiltDataList() const
void SetAuxDirectory(const TString &)
void AddFiltData(KVSimFile *, bool=false)
Bool_t HasAuxDirectory() const
const Char_t * GetDirectory() const
Bool_t IsFromAuxDirectory(KVSimFile *) const
returns true if given file is in the auxiliary directory
const KVList * GetSimDataList() const
void AddSimData(KVSimFile *, bool=false)
Handle file containing simulated and/or filtered simulated data ,.
const Char_t * GetSystem() const
const Char_t * GetBranchName() const
const Char_t * GetOriginalFile() const
const Char_t * GetFilterType() const
const Char_t * GetDataSet() const
Long64_t GetEvents() const
const Char_t * GetDataQualityAudit() const
const Char_t * GetTreeName() const
Int_t GetGemDecayPerEvent() const
static KVSimReader * MakeSimReader(const char *model_uri)
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
Extended TList class which does not own its objects by default.
void ls(Option_t *option="") const override
virtual Int_t GetEntries() const
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)
virtual void SaveLevel(EEnvLevel level)
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 SetContainer(TGFrame *f)
TGViewPort * GetViewPort() const
void MapSubwindows() override
TGDimension GetDefaultSize() const override
virtual void SetLayoutManager(TGLayoutManager *l)
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
void MapSubwindows() override
void SetMultipleSelection(Bool_t option)
Bool_t fMultipleSelection
virtual void Resize(TGDimension size)
void MapWindow() override
virtual const char * GetText() const=0
virtual void SetPictures(const TGPicture *, const TGPicture *)
Int_t DeleteItem(TGListTreeItem *item)
TGListTreeItem * GetFirstItem() const
void AddItem(const char *string)
void CloseItem(TGListTreeItem *item)
void SetWindowName(const char *name=nullptr) override
void SetMWMHints(UInt_t value, UInt_t funcs, UInt_t input)
virtual void SetState(Bool_t enable=kTRUE)
virtual Double_t GetNumber() const
virtual void SetParts(Int_t *parts, Int_t npart)
virtual void SetText(const char *text, Int_t partidx=0)
virtual void SetName(const char *name)
TObject * First() const override
const char * GetName() const override
const char * GetTitle() const override
virtual const char * GetName() const
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual void Info(const char *method, const char *msgfmt,...) const
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
const char * Data() const
TString & Append(char c, Ssiz_t rep=1)
TString & Remove(EStripType s, char c)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TString & ReplaceAll(const char *s1, const char *s2)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
virtual const char * BaseName(const char *pathname)
virtual void SetBuildDir(const char *build_dir, Bool_t isflat=kFALSE)
virtual const char * TempDirectory() const
void Error(UserClass p, const char *location, const char *va_(fmt),...)
void Warning(UserClass p, const char *location, const char *va_(fmt),...)
Bool_t with_files() const