From 5c40c4c8e8c2b6f7e40d2202612266e771f416ad Mon Sep 17 00:00:00 2001 From: Raees Khan <rak177@pitt.edu> Date: Mon, 27 Jun 2022 07:57:04 -0400 Subject: [PATCH] user action changes --- FSL/src/fsl_mainwindow.cpp | 75 +++++--- FSL/src/fsl_mainwindow.h | 33 ++-- FSL/src/fsl_mainwindow.ui | 176 +++--------------- FullSimLight/fullSimLight.cc | 14 +- .../include/FSLActionInitialization.hh | 18 +- FullSimLight/include/FSLConfigurator.hh | 6 +- FullSimLight/src/FSLActionInitialization.cc | 48 ----- 7 files changed, 107 insertions(+), 263 deletions(-) diff --git a/FSL/src/fsl_mainwindow.cpp b/FSL/src/fsl_mainwindow.cpp index a6152abe0..f0f07fb8a 100644 --- a/FSL/src/fsl_mainwindow.cpp +++ b/FSL/src/fsl_mainwindow.cpp @@ -52,7 +52,7 @@ FSLMainWindow::FSLMainWindow(QWidget *parent) //Setting up the User Actions Display user_action_model = new QStandardItemModel(this); - user_action_horizontalHeader.append("Type of Action"); + // user_action_horizontalHeader.append("Type of Action"); user_action_horizontalHeader.append("File"); user_action_model->setHorizontalHeaderLabels(user_action_horizontalHeader); ui->user_action_table->setModel(user_action_model); @@ -85,11 +85,12 @@ FSLMainWindow::FSLMainWindow(QWidget *parent) // connect(ui->pB_del_shape_ext_file, &QPushButton::released, this, &FSLMainWindow::del_shape_ext); - connect(ui->pB_run_actions, &QPushButton::released, this, &FSLMainWindow::assign_run_actions_file); - connect(ui->pB_event_actions, &QPushButton::released, this, &FSLMainWindow::assign_event_actions_file); - connect(ui->pB_stepping_actions, &QPushButton::released, this, &FSLMainWindow::assign_stepping_actions_file); - connect(ui->pB_stacking_actions, &QPushButton::released, this, &FSLMainWindow::assign_stacking_actions_file); - connect(ui->pB_tracking_actions, &QPushButton::released, this, &FSLMainWindow::assign_tracking_actions_file); + // connect(ui->pB_run_actions, &QPushButton::released, this, &FSLMainWindow::assign_run_actions_file); + // connect(ui->pB_event_actions, &QPushButton::released, this, &FSLMainWindow::assign_event_actions_file); + // connect(ui->pB_stepping_actions, &QPushButton::released, this, &FSLMainWindow::assign_stepping_actions_file); + // connect(ui->pB_stacking_actions, &QPushButton::released, this, &FSLMainWindow::assign_stacking_actions_file); + // connect(ui->pB_tracking_actions, &QPushButton::released, this, &FSLMainWindow::assign_tracking_actions_file); + connect(ui->pB_add_user_action, &QPushButton::released, this, &FSLMainWindow::add_user_action); connect(ui->pB_del_user_action, &QPushButton::released, this, &FSLMainWindow::del_user_action); connect(ui->actionQuit, &QAction::triggered, qApp, &QApplication::quit); @@ -442,6 +443,7 @@ std::vector<std::string> FSLMainWindow::parse_froot_string(std::string input_fro } +/* //Function to add a Run actions file void FSLMainWindow::assign_run_actions_file() { @@ -511,6 +513,20 @@ void FSLMainWindow::assign_tracking_actions_file() ui->user_action_table->model()->setData(ui->user_action_table->model()->index(rows,1),q_tracking_file_name); } } +*/ + +//Function to add a user action file +void FSLMainWindow::add_user_action() +{ + QString q_user_file_name = QString::fromUtf8((this->get_file_name()).c_str()); + + if(q_user_file_name!="") + { + int rows = ui->user_action_table->model()->rowCount(); + ui->user_action_table->model()->insertRows(rows,1); + ui->user_action_table->model()->setData(ui->user_action_table->model()->index(rows,0),q_user_file_name); + } +} //Function to add a delete a user actions file void FSLMainWindow::del_user_action() @@ -526,19 +542,19 @@ void FSLMainWindow::del_user_action() //Function to add user actions to respective lists. void FSLMainWindow::configure_actions() { - run_actions.clear(); - event_actions.clear(); - stepping_actions.clear(); - stacking_actions.clear(); - tracking_actions.clear(); + // run_actions.clear(); + // event_actions.clear(); + // stepping_actions.clear(); + // stacking_actions.clear(); + // tracking_actions.clear(); user_action_extensions.clear(); for(int row = 0 ; row < ui->user_action_table->model()->rowCount(); ++row ) { - std::string type_of_action = ((ui->user_action_table->model()->index(row,0)).data().toString()).toStdString(); - std::string associated_file = ((ui->user_action_table->model()->index(row,1)).data().toString()).toStdString(); + // std::string type_of_action = ((ui->user_action_table->model()->index(row,0)).data().toString()).toStdString(); + std::string associated_file = ((ui->user_action_table->model()->index(row,0)).data().toString()).toStdString(); - if(type_of_action == "Run") + /* if(type_of_action == "Run") { run_actions.push_back(associated_file); } @@ -562,6 +578,9 @@ void FSLMainWindow::configure_actions() { tracking_actions.push_back(associated_file); } + */ + + user_action_extensions.push_back(associated_file); } @@ -1220,7 +1239,7 @@ void FSLMainWindow::load_configuration() } - user_action_model->removeRows(0,user_action_model->rowCount()); + /* user_action_model->removeRows(0,user_action_model->rowCount()); for(const auto& element : j_load["Run Actions"]) { std::string run_file = element; @@ -1275,6 +1294,7 @@ void FSLMainWindow::load_configuration() ui->user_action_table->model()->setData(ui->user_action_table->model()->index(rows,1),q_tracking_file); } + */ /* shape_model->removeRows(0,shape_model->rowCount()); for(const auto& element : j_load["Shape Extensions"] ) @@ -1285,9 +1305,20 @@ void FSLMainWindow::load_configuration() QModelIndex shape_index = shape_model->index(shape_model->rowCount()-1); shape_model->setData(shape_index, q_element); }*/ - } + + + user_action_model->removeRows(0,user_action_model->rowCount()); + for(const auto& element : j_load["User Action Extensions"]) + { + std::string run_file = element; + QString q_run_file = QString::fromUtf8(run_file.c_str()); + int rows = ui->user_action_table->model()->rowCount(); + ui->user_action_table->model()->insertRows(rows,1); + ui->user_action_table->model()->setData(ui->user_action_table->model()->index(rows,0),q_run_file); + } +} } @@ -1329,13 +1360,13 @@ void FSLMainWindow::create_configuration() j["Magnetic Field Plugin"] = magnetic_field_plugin_file; this->configure_actions(); - j["Run Actions"] = run_actions; - j["Event Actions"] = event_actions; - j["Stepping Actions"] = stepping_actions; - j["Stacking Actions"] = stacking_actions; - j["Tracking Actions"] = tracking_actions; + // j["Run Actions"] = run_actions; + // j["Event Actions"] = event_actions; + // j["Stepping Actions"] = stepping_actions; + // j["Stacking Actions"] = stacking_actions; + // j["Tracking Actions"] = tracking_actions; - // j["User Action Extensions"] = user_action_extensions; + j["User Action Extensions"] = user_action_extensions; this->configure_regions(); j["Regions data"] = regions; diff --git a/FSL/src/fsl_mainwindow.h b/FSL/src/fsl_mainwindow.h index 7fef95ec7..cc0b284ef 100644 --- a/FSL/src/fsl_mainwindow.h +++ b/FSL/src/fsl_mainwindow.h @@ -91,11 +91,11 @@ public: std::string magnetic_field_map = ""; //Parameters associated with the User Actions tab - std::vector<std::string> run_actions; - std::vector<std::string> event_actions; - std::vector<std::string> stepping_actions; - std::vector<std::string> stacking_actions; - std::vector<std::string> tracking_actions; + // std::vector<std::string> run_actions; + // std::vector<std::string> event_actions; + // std::vector<std::string> stepping_actions; + // std::vector<std::string> stacking_actions; + // std::vector<std::string> tracking_actions; std::vector<std::string> user_action_extensions; //Parameters associated with the g4ui commands tab @@ -145,6 +145,7 @@ public: std::vector<std::string> parse_froot_string(std::string input_froot_string); void configure_regions(); + void add_user_action(); void del_user_action(); void configure_actions(); @@ -159,17 +160,17 @@ public: void assign_magnetic_field_map(); //void assign_shape_ext_file(); - void assign_run_actions_file(); - void assign_event_actions_file(); - void assign_stepping_actions_file(); - void assign_stacking_actions_file(); - void assign_tracking_actions_file(); - - void run_actions_file(); - void event_actions_file(); - void stepping_actions_file(); - void stacking_actions_file(); - void tracking_actions_file(); + // void assign_run_actions_file(); + // void assign_event_actions_file(); + // void assign_stepping_actions_file(); + // void assign_stacking_actions_file(); + // void assign_tracking_actions_file(); + + // void run_actions_file(); + // void event_actions_file(); + // void stepping_actions_file(); + // void stacking_actions_file(); + // void tracking_actions_file(); void configure_magnetic_field(); diff --git a/FSL/src/fsl_mainwindow.ui b/FSL/src/fsl_mainwindow.ui index 38ef789c5..b2b042003 100644 --- a/FSL/src/fsl_mainwindow.ui +++ b/FSL/src/fsl_mainwindow.ui @@ -1278,8 +1278,8 @@ <attribute name="title"> <string>User Actions</string> </attribute> - <layout class="QGridLayout" name="gridLayout_6"> - <item row="0" column="0"> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="1"> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -1292,7 +1292,7 @@ </property> </spacer> </item> - <item row="0" column="1"> + <item row="0" column="2"> <widget class="QLabel" name="label_25"> <property name="font"> <font> @@ -1304,7 +1304,7 @@ </property> </widget> </item> - <item row="0" column="2"> + <item row="0" column="3"> <spacer name="horizontalSpacer_3"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -1317,163 +1317,39 @@ </property> </spacer> </item> - <item row="1" column="0" colspan="5"> - <widget class="QTableView" name="user_action_table"/> - </item> - <item row="2" column="0" rowspan="2" colspan="2"> - <widget class="QGroupBox" name="groupBox"> - <property name="font"> - <font> - <pointsize>15</pointsize> - </font> - </property> - <property name="title"> - <string/> - </property> - <layout class="QGridLayout" name="gridLayout_11"> - <item row="0" column="0"> - <widget class="QLabel" name="label_37"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Run Actions</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QPushButton" name="pB_run_actions"> - <property name="text"> - <string>Browse Files</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QLabel" name="label_38"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Event Actions</string> - </property> - </widget> - </item> - <item row="0" column="3"> - <widget class="QPushButton" name="pB_event_actions"> - <property name="text"> - <string>Browse Files</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_39"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Stepping Actions</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QPushButton" name="pB_stepping_actions"> - <property name="text"> - <string>Browse Files</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QLabel" name="label_40"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Stacking Actions</string> - </property> - </widget> - </item> - <item row="1" column="3"> - <widget class="QPushButton" name="pB_stacking_actions"> - <property name="text"> - <string>Browse Files</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_41"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Tracking Actions</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="pB_tracking_actions"> - <property name="text"> - <string>Browse Files</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="2" column="2" rowspan="2"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>225</height> - </size> - </property> - </spacer> + <item row="2" column="0"> + <layout class="QHBoxLayout" name="horizontalLayout_12"> + <item> + <widget class="QPushButton" name="pB_add_user_action"> + <property name="text"> + <string>+</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pB_del_user_action"> + <property name="text"> + <string>−</string> + </property> + </widget> + </item> + </layout> </item> - <item row="2" column="3"> - <spacer name="horizontalSpacer"> + <item row="2" column="1" colspan="3"> + <spacer name="horizontalSpacer_24"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>144</width> + <width>1077</width> <height>20</height> </size> </property> </spacer> </item> - <item row="2" column="4"> - <widget class="QPushButton" name="pB_del_user_action"> - <property name="text"> - <string>Delete</string> - </property> - </widget> - </item> - <item row="3" column="4"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>188</height> - </size> - </property> - </spacer> + <item row="1" column="0" colspan="4"> + <widget class="QTableView" name="user_action_table"/> </item> </layout> </widget> diff --git a/FullSimLight/fullSimLight.cc b/FullSimLight/fullSimLight.cc index e5a7737c1..3d80abab7 100644 --- a/FullSimLight/fullSimLight.cc +++ b/FullSimLight/fullSimLight.cc @@ -209,22 +209,14 @@ int main(int argc, char** argv) { if (activateRegions) detector->SetAddRegions(true); // 3. User action - if(!isBatch) - { - if(simConfig::fsl.eventActions.size()>0 || simConfig::fsl.runActions.size()>0 || - simConfig::fsl.trackingActions.size()>0 || simConfig::fsl.steppingActions.size()>0 || - simConfig::fsl.stackingActions.size()>0) parIsCustomUserActions = true; - } + if(!isBatch && simConfig::fsl.userActions.size()>0) parIsCustomUserActions = true; + FSLActionInitialization* actInit = new FSLActionInitialization(parIsPerformance,parIsCustomUserActions); if(parIsCustomUserActions){ actInit->SetActions( - simConfig::fsl.eventActions, - simConfig::fsl.runActions, - simConfig::fsl.trackingActions, - simConfig::fsl.steppingActions, - simConfig::fsl.stackingActions + simConfig::fsl.userActions ); } diff --git a/FullSimLight/include/FSLActionInitialization.hh b/FullSimLight/include/FSLActionInitialization.hh index 0d042396f..a0de04222 100644 --- a/FullSimLight/include/FSLActionInitialization.hh +++ b/FullSimLight/include/FSLActionInitialization.hh @@ -19,17 +19,9 @@ public: void SetPerformanceModeFlag(bool val) { fIsPerformance = val; } void SetSpecialScoringRegionName(const G4String& rname) { fSpecialScoringRegionName = rname; } - void SetActions(std::vector<std::string> &evtActions, - std::vector<std::string> &rActions, - std::vector<std::string> &trActions, - std::vector<std::string> &steActions, - std::vector<std::string> &staActions) + void SetActions(std::vector<std::string> &usrActions) { - eventActions = evtActions; - runActions = rActions; - trackingActions = trActions; - steppingActions = steActions; - stackingActions = staActions; + userActions = usrActions; }; private: @@ -39,11 +31,7 @@ private: G4String fSpecialScoringRegionName; - std::vector<std::string> eventActions; - std::vector<std::string> runActions; - std::vector<std::string> trackingActions; - std::vector<std::string> steppingActions; - std::vector<std::string> stackingActions; + std::vector<std::string> userActions; diff --git a/FullSimLight/include/FSLConfigurator.hh b/FullSimLight/include/FSLConfigurator.hh index 5bc22fc95..150f673b5 100644 --- a/FullSimLight/include/FSLConfigurator.hh +++ b/FullSimLight/include/FSLConfigurator.hh @@ -66,6 +66,8 @@ struct fslConfig{ std::vector<std::string> steppingActions; std::vector<std::string> stackingActions; std::vector<std::string> trackingActions; + std::vector<std::string> userActions; + std::vector<std::string> g4UiCommands; }; @@ -75,7 +77,7 @@ regionConfig rc; json jf; inline void to_json(json& j, const fslConfig& p) { - j = json{{"Geometry", p.geometry},{"Physics list name", p.physicsList},{"Number of events", p.nEvents},{"Magnetic Field Intensity", p.magFieldIntensity},{"Generator", p.eventGeneratorName},{"Event input file", p.eventInputFile},{"Type of event", p.typeOfEvent},{"Sensitive Detector Extensions", p.sensitiveDetectors},{"Output Hits file", p.outputHitsFile},{"Output Histo file", p.outputHistoFile},{"Magnetic Field Type", p.magFieldType},{"Magnetic Field Map", p.magFieldMap},{"Magnetic Field Plugin", p.magFieldPlugin},{"Run Actions", p.runActions},{"Event Actions", p.eventActions},{"Stepping Actions", p.steppingActions},{"Stacking Actions", p.stackingActions},{"Tracking Actions", p.trackingActions},{"g4ui_commands", p.g4UiCommands}}; + j = json{{"Geometry", p.geometry},{"Physics list name", p.physicsList},{"Number of events", p.nEvents},{"Magnetic Field Intensity", p.magFieldIntensity},{"Generator", p.eventGeneratorName},{"Event input file", p.eventInputFile},{"Type of event", p.typeOfEvent},{"Sensitive Detector Extensions", p.sensitiveDetectors},{"Output Hits file", p.outputHitsFile},{"Output Histo file", p.outputHistoFile},{"Magnetic Field Type", p.magFieldType},{"Magnetic Field Map", p.magFieldMap},{"Magnetic Field Plugin", p.magFieldPlugin},{"Run Actions", p.runActions},{"Event Actions", p.eventActions},{"Stepping Actions", p.steppingActions},{"Stacking Actions", p.stackingActions},{"Tracking Actions", p.trackingActions},{"User Action Extensions", p.userActions},{"g4ui_commands", p.g4UiCommands}}; } inline void to_json(json& j, const regionConfig& r) { @@ -100,6 +102,8 @@ inline void from_json(const json& j, fslConfig& p) { p.steppingActions=j.at("Stepping Actions").get<std::vector<std::string>>(); p.stackingActions=j.at("Stacking Actions").get<std::vector<std::string>>(); p.trackingActions=j.at("Tracking Actions").get<std::vector<std::string>>(); + p.userActions=j.at("User Action Extensions").get<std::vector<std::string>>(); + p.g4UiCommands=j.at("g4ui_commands").get<std::vector<std::string>>(); } diff --git a/FullSimLight/src/FSLActionInitialization.cc b/FullSimLight/src/FSLActionInitialization.cc index 8028853d2..4476321e4 100644 --- a/FullSimLight/src/FSLActionInitialization.cc +++ b/FullSimLight/src/FSLActionInitialization.cc @@ -126,54 +126,6 @@ void FSLActionInitialization::Build() const { else if(fCustomUserActions) { - for (const auto& element : runActions) - { - GeoPluginLoader<FSLUserRunActionPlugin> loader; - const FSLUserRunActionPlugin * plugin = loader.load(element); - G4UserRunAction* runAct = plugin->getUserRunAction(); - SetUserAction(runAct); - - } - - for (const auto& element : eventActions) - { - GeoPluginLoader<FSLUserEventActionPlugin> loader; - const FSLUserEventActionPlugin * plugin = loader.load(element); - G4UserEventAction* evtAct = plugin->getUserEventAction(); - SetUserAction(evtAct); - - } - - for (const auto& element : steppingActions) - { - GeoPluginLoader<FSLUserSteppingActionPlugin> loader; - const FSLUserSteppingActionPlugin * plugin = loader.load(element); - G4UserSteppingAction* steAct = plugin->getUserSteppingAction(); - SetUserAction(steAct); - - } - - - for (const auto& element : trackingActions) - { - GeoPluginLoader<FSLUserTrackingActionPlugin> loader; - const FSLUserTrackingActionPlugin * plugin = loader.load(element); - G4UserTrackingAction* traAct = plugin->getUserTrackingAction(); - SetUserAction(traAct); - - } - - for (const auto& element : stackingActions) - { - GeoPluginLoader<FSLUserStackingActionPlugin> loader; - const FSLUserStackingActionPlugin * plugin = loader.load(element); - G4UserStackingAction* staAct = plugin->getUserStackingAction(); - SetUserAction(staAct); - - } - - - -- GitLab