diff --git a/FSL/.gitignore b/FSL/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e43b0f988953ae3a84b00331d0ccf5f7d51cb3cf --- /dev/null +++ b/FSL/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/FSL/CMakeLists.txt b/FSL/CMakeLists.txt index f6033368f273f0117bde54795b007e3388564db4..db4d1e742f29bf379ddcc4cbf1fed23bf760e787 100644 --- a/FSL/CMakeLists.txt +++ b/FSL/CMakeLists.txt @@ -33,9 +33,20 @@ else() endif() +set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_INCLUDE_CURRENT_DIR ON) +# Support for the HepMC3 exchange format +# This is ON by default, but it can be disabled by the user if not used/needed, +# or if HepMC3 is not installed. +option(GEOMODEL_USE_HEPMC3 "Buil GeoModel tools with support for the HepMC3 exchancge format (Note: HepMC3 must be installed on the target machine)" ON) +if(GEOMODEL_USE_HEPMC3) + find_package(HepMC3 REQUIRED) # required by default, but it can be disabled +endif() +if(HepMC3_FOUND) + target_compile_definitions(fullSimLight PRIVATE USE_HEPMC3) +endif() + # Find the dependencies of the project. find_package( Qt5 COMPONENTS Core Gui Widgets Sql PrintSupport OpenGL REQUIRED ) diff --git a/FSL/src/fsl_mainwindow.cpp b/FSL/src/fsl_mainwindow.cpp index ee37c1955daef8e7f8c60fecc2c62345c7d0a91e..32d64ace6236186ee449702851f48fd13f65639a 100644 --- a/FSL/src/fsl_mainwindow.cpp +++ b/FSL/src/fsl_mainwindow.cpp @@ -191,6 +191,13 @@ FSLMainWindow::FSLMainWindow(QWidget *parent) connect(&fullSimLight_process,SIGNAL(started()),this,SLOT(fsml_process_started())); connect(&fullSimLight_process,SIGNAL(finished(int , QProcess::ExitStatus )),this,SLOT(fsml_process_finished())); + // Disable options if the underlying packages/tools are not installed/found + // (e.g., HepMC3, Pythia, ...) + // TODO: add check for Pythia, external plugins, and anything is not embedded in FullSimLight by default +#ifndef USE_HEPMC3 + ui->cB_gen_options->setItemData(2, false, Qt::UserRole -1); + ui->groupBox_hepmc3->setEnabled(false); +#endif } @@ -934,11 +941,12 @@ void FSLMainWindow::configure_generator() { ui->sB_NOT->setValue(1); ui->sB_NOT->setEnabled(false); - + +#ifdef USE_HEPMC3 ui->pB_hepmc3_browse_files->setEnabled(true); ui->cB_hepmc3_type_of_eve->setEnabled(true); ui->lE_HEPMC3->setEnabled(true); - +#endif ui->cB_particle->setEnabled(false); ui->lE_px->setEnabled(false); @@ -1152,6 +1160,7 @@ void FSLMainWindow::run_configuration() QStringList args; //Contains arguments of the command //Needs to be fixed. Should not be a hard coded path. + //TODO: add check if exe is found. If not, throw an error message Command = "fullSimLight"; args<<"-c"<< QString::fromUtf8(tmpConf.c_str()); @@ -1173,6 +1182,7 @@ void FSLMainWindow::run_gmex() QStringList args; //Contains arguments of the command //Needs to be fixed. Should not be a hard coded path. + //TODO: add check if exe is found. If not, throw an error message Command = "gmex"; args << QString::fromUtf8(geom_file_address.c_str()); @@ -1194,6 +1204,7 @@ void FSLMainWindow::run_gmclash() QStringList args; //Contains arguments of the command //Needs to be fixed. Should not be a hard coded path. + //TODO: add check if exe is found. If not, throw an error message Command = "gmclash"; args << QString("-g") << QString::fromUtf8(geom_file_address.c_str()); @@ -1404,18 +1415,18 @@ void FSLMainWindow::load_configuration() { ui->sB_NOT->setValue(1); ui->sB_NOT->setEnabled(false); - +#ifdef USE_HEPMC3 ui->cB_gen_options->setCurrentIndex(2); ui->pB_hepmc3_browse_files->setEnabled(true); ui->cB_hepmc3_type_of_eve->setEnabled(true); ui->lE_HEPMC3->setEnabled(true); - hepmc3_type_of_file = j_load["HepMC3 type of file"]; hepmc3_input_file = j_load["HepMC3 file"]; ui->cB_hepmc3_type_of_eve->setCurrentText(QString::fromUtf8(hepmc3_type_of_file.c_str())); ui->lE_HEPMC3->setText(QString::fromUtf8(hepmc3_input_file.c_str())); +#endif ui->lE_px->clear(); @@ -1879,7 +1890,8 @@ void FSLMainWindow::load_configuration_CL(std::string config_file_path) { ui->sB_NOT->setValue(1); ui->sB_NOT->setEnabled(false); - + +#ifdef USE_HEPMC3 ui->cB_gen_options->setCurrentIndex(2); ui->pB_hepmc3_browse_files->setEnabled(true); ui->cB_hepmc3_type_of_eve->setEnabled(true); @@ -1891,7 +1903,7 @@ void FSLMainWindow::load_configuration_CL(std::string config_file_path) ui->cB_hepmc3_type_of_eve->setCurrentText(QString::fromUtf8(hepmc3_type_of_file.c_str())); ui->lE_HEPMC3->setText(QString::fromUtf8(hepmc3_input_file.c_str())); - +#endif ui->lE_px->clear(); ui->lE_py->clear(); diff --git a/FSL/src/fsl_mainwindow.ui b/FSL/src/fsl_mainwindow.ui index cc26d0a65605fe5c6ea513a3eadec929a061d24b..e86dc0316e2f23d7687491ae8352f5c059cb8dc1 100644 --- a/FSL/src/fsl_mainwindow.ui +++ b/FSL/src/fsl_mainwindow.ui @@ -29,7 +29,7 @@ </font> </property> <property name="currentIndex"> - <number>0</number> + <number>1</number> </property> <widget class="QWidget" name="main"> <attribute name="title"> @@ -595,7 +595,7 @@ </spacer> </item> <item row="2" column="4"> - <widget class="QGroupBox" name="groupBox_5"> + <widget class="QGroupBox" name="groupBox_pythia"> <property name="font"> <font> <pointsize>15</pointsize> @@ -667,7 +667,7 @@ </widget> </item> <item row="3" column="4"> - <widget class="QGroupBox" name="groupBox_10"> + <widget class="QGroupBox" name="groupBox_hepmc3"> <property name="font"> <font> <pointsize>15</pointsize> @@ -742,7 +742,7 @@ </spacer> </item> <item row="4" column="4"> - <widget class="QGroupBox" name="groupBox_12"> + <widget class="QGroupBox" name="groupBox_plugin"> <property name="font"> <font> <pointsize>15</pointsize> diff --git a/FullSimLight/CMakeLists.txt b/FullSimLight/CMakeLists.txt index 8971f4cf2b9bb35c702b98706d994cabdb9c88cd..d4ed57bcd03938fd866d65401bf2280e656e2da5 100644 --- a/FullSimLight/CMakeLists.txt +++ b/FullSimLight/CMakeLists.txt @@ -7,7 +7,6 @@ cmake_minimum_required( VERSION 3.14 ) project( "FullSimLight" ) #Set up the project. Check if we build it with GeoModel or individually - if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # I am top-level project. # Make the root module directory visible to CMake. @@ -20,6 +19,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) include( cmake_colors_defs ) # Warn the users about what they are doing message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}") + # Set a default build type + include( BuildType ) # Set default build and C++ options include( configure_cpp_options ) set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING @@ -38,6 +39,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) find_package( GeoModelG4 REQUIRED ${GeoModel_VERSION} ) # Set a flag to steer the of the subpackages set( ${PROJECT_NAME}_INDIVIDUAL_BUILD ON ) + # Print Build Info on screen + include( PrintBuildInfo ) else() # I am called from other project with add_subdirectory(). message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.") @@ -54,10 +57,24 @@ find_package(Geant4 REQUIRED) message( STATUS "Found Geant4: ${Geant4_INCLUDE_DIR}") #---------------------------------------------------------------------------- +# Support for the Pythia MC generator find_package(Pythia QUIET) # optional -find_package(HepMC3 REQUIRED) -#find_package(ROOT QUIET) #optional -#option(HEPMC3_ROOTIO_USE "Enable the use of HEPMC3 with ROOT" OFF) +if(Pythia_FOUND) + target_compile_definitions(fullSimLight PRIVATE USE_PYTHIA) + target_link_libraries(fullSimLight PRIVATE Pythia::Pythia) +endif() + +# Support for the HepMC3 exchange format +# This is ON by default, but it can be disabled by the user if not used/needed, +# or if HepMC3 is not installed. +option(GEOMODEL_USE_HEPMC3 "Build GeoModel tools with support for the HepMC3 exchancge format (Note: HepMC3 must be installed on the target machine)" ON) +if(GEOMODEL_USE_HEPMC3) + find_package(HepMC3 REQUIRED) # required by default, but it can be disabled +endif() +if(HepMC3_FOUND) + #target_compile_definitions(fullSimLight PRIVATE USE_HEPMC3) + add_compile_definitions( USE_HEPMC3 ) +endif() #---------------------------------------------------------------------------- @@ -97,6 +114,18 @@ include_directories(${PROJECT_SOURCE_DIR}/include) # file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc) file(GLOB headers ${PROJECT_SOURCE_DIR}/inc/*.hh) +#message("sources: ${sources}") # debug msg + + +if( NOT HepMC3_FOUND) + file(GLOB hepmc3src ${PROJECT_SOURCE_DIR}/src/HepMC3*.cc) + message(STATUS "! NOTE ==> The support for HepMC3 was disabled by the user; therefore, support for it in FullSimLight will not be compiled.") + #message("Removing those HepMC3-related sources: ${hepmc3src}") # debug msg + list(REMOVE_ITEM sources ${hepmc3src}) + #message("new sources without HepMC3 support: ${sources}") # debug msg +else() + message(STATUS "Found HepMC3, so support for it will be compiled. (${HEPMC3_INCLUDE_DIR})") +endif() #---------------------------------------------------------------------------- # Add the executable, and link it to the Geant4 libraries @@ -116,10 +145,7 @@ add_executable(gmgeantino geantinoMaps.cc ${sources} ${headers}) #add_executable(testMagneticField testMagneticField.cc) add_executable(gm2gdml geoModel2GDML.cc ${sources} ${headers}) -if(Pythia_FOUND) - target_compile_definitions(fullSimLight PRIVATE USE_PYTHIA) - target_link_libraries(fullSimLight PRIVATE Pythia::Pythia) -endif() + #if(HEPMC3_ROOTIO_USE) # message( STATUS "HEPMC3 Root Dependency Switched on") diff --git a/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt index 124362dff343664e584613ff8fb83bb81ca46ade..d7eb29db21b982d5c91d62bcacbcb81fc9493f77 100644 --- a/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/EventGeneratorPlugins/FSLExamplePrimaryGeneratorPlugin/CMakeLists.txt @@ -60,7 +60,14 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC ${CMAKE_SOURCE_DIR} ) +else() # all-in-one--build + target_include_directories( ExamplePrimaryGeneratorPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ) +endif() target_link_libraries ( ExamplePrimaryGeneratorPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES}) diff --git a/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt index 778b68dbcf629c6eeac91e1302617d10d4b3369a..dcd0dfeb7522733b94e3d6c087003aee07906543 100644 --- a/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/MagneticFieldPlugins/UniformMagneticFieldPlugin/CMakeLists.txt @@ -62,7 +62,14 @@ include( GNUInstallDirs ) add_definitions (-DMAPPATH="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}" ) -target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR} ) +else() # all-in-one--build + target_include_directories( UniformMagneticFieldPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ) +endif() target_link_libraries ( UniformMagneticFieldPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} Eigen3::Eigen) diff --git a/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt b/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt index 21b03aab55ad03d3bd8c714b370c09d90ed6c1cb..c37cd349c3f808343119693b02e5efcfcaee0e86 100644 --- a/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/PhysicsListPlugins/FSLTestPhysListPlugins/CMakeLists.txt @@ -58,7 +58,14 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( TestPhysicsListPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( TestPhysicsListPlugin PUBLIC ${CMAKE_SOURCE_DIR} ) +else() # all-in-one--build + target_include_directories( TestPhysicsListPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ) +endif() target_link_libraries ( TestPhysicsListPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES}) diff --git a/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt index 2f26af51b43c5c4cb44d1ea42ba5272f0daf7025..819b2d8fe056c8e81111b7b349b5daf0c653f33a 100644 --- a/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/SensitiveDetectorPlugins/SDPlugin/CMakeLists.txt @@ -59,7 +59,14 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( SDPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( SDPlugin PUBLIC ${CMAKE_SOURCE_DIR} ) +else() # all-in-one--build + target_include_directories( SDPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ) +endif() target_link_libraries ( SDPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES}) diff --git a/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt b/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt index a3ebdda288f2894dde0ea8b2324d4e0cdc001ccc..73e5e728720dd985711926ed1014c08f5b0264c4 100644 --- a/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/UserActionPlugins/CMakeLists.txt @@ -2,7 +2,7 @@ # Set up the project. cmake_minimum_required( VERSION 3.1 ) -project( "FSLUserActionsPlugins" ) +project( "UserActionsPlugins" ) #Set up the project. Check if we build it with GeoModel or individually if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) diff --git a/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt b/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt index 2383e191cdedd5fc2e5bc4e8f466849f40f880af..2cf5e92a851d3f3928b93e7d5c55abb788ff3363 100644 --- a/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/Examples/UserActionPlugins/DummyUserActionPlugin/CMakeLists.txt @@ -61,7 +61,14 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( DummyUserActionPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS}) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( DummyUserActionPlugin PUBLIC ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS}) +else() # all-in-one--build + target_include_directories( DummyUserActionPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS}) +endif() target_link_libraries ( DummyUserActionPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES}) diff --git a/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt b/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt index 5f6dc0f008d5a97a3bc3f7f6efe14de33eabed00..e9fb430c20446ee783972c63c06bf8525ef17699 100644 --- a/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/HitsPlugin/CMakeLists.txt @@ -63,7 +63,15 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( GenerateHitsPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS}) + +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( GenerateHitsPlugin PUBLIC ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS}) +else() # all-in-one--build + target_include_directories( GenerateHitsPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS}) +endif() target_link_libraries ( GenerateHitsPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES}) diff --git a/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt b/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt index 9fc0e614b932031d977c90641c913a8a7cee138a..21a411fbe9c6da14103555d6952596599c8c86ce 100644 --- a/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt +++ b/FullSimLight/Plugins/TracksPlugin/CMakeLists.txt @@ -62,18 +62,21 @@ include(${Geant4_USE_FILE}) # Use the GNU install directory names. include( GNUInstallDirs ) -target_include_directories( GenerateTracksPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) +# Add the FullSimLight headers dir. +# Path is different if built as a single top project, +# or as an all-in-one build together with all other GeoModel subpackages +if( FullSimLight_INDIVIDUAL_BUILD ) + target_include_directories( GenerateTracksPlugin PUBLIC ${CMAKE_SOURCE_DIR} ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) +else() # all-in-one--build + target_include_directories( GenerateTracksPlugin PUBLIC ${CMAKE_SOURCE_DIR}/FullSimLight ${HDF5_CXX_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) +endif() target_link_libraries ( GenerateTracksPlugin PUBLIC ${CMAKE_DL_LIBS} ${Geant4_LIBRARIES} ${HDF5_CXX_LIBRARIES}) - - set_target_properties( GenerateTracksPlugin PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) - - install( TARGETS GenerateTracksPlugin LIBRARY DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/FullSimLight/UserActionPlugins COMPONENT Runtime diff --git a/FullSimLight/src/FSLActionInitialization.cc b/FullSimLight/src/FSLActionInitialization.cc index 6f8e76ffb29c4602d4a86b9aa9420aa90874a43b..c06970ba99201e683372a3e03c123aaba4f8991c 100644 --- a/FullSimLight/src/FSLActionInitialization.cc +++ b/FullSimLight/src/FSLActionInitialization.cc @@ -1,11 +1,13 @@ #include "FSLActionInitialization.hh" #include "GeoModelKernel/GeoPluginLoader.h" -#include "FSLPrimaryGeneratorAction.hh" -#include "HepMC3PrimaryGeneratorAction.hh" #include "FSLRunAction.hh" #include "FSLEventAction.hh" #include "FSLSteppingAction.hh" #include "FSLTrackingAction.hh" +#include "FSLPrimaryGeneratorAction.hh" +#if USE_HEPMC3 +#include "HepMC3PrimaryGeneratorAction.hh" +#endif #include "PythiaPrimaryGeneratorAction.hh" #include "FullSimLight/FSLUserActionPlugin.h" @@ -66,7 +68,8 @@ void FSLActionInitialization::BuildForMaster() const { void FSLActionInitialization::Build() const { #if !USE_PYTHIA - + +#if USE_HEPMC3 if(generator == "HepMC3 File") { std::cout << "Reading in events from file: " << hepmc3_file_path << std::endl; @@ -74,8 +77,10 @@ void FSLActionInitialization::Build() const { } - else if(generator == "Generator Plugin") - { + else if(generator == "Generator Plugin") { +#else + if(generator == "Generator Plugin") { +#endif std::cout << "Loading in event generator from plugin" << std::endl; GeoPluginLoader<FSLUserActionPlugin> generator_loader; const FSLUserActionPlugin * gen_plugin = generator_loader.load(generator_plugin); @@ -98,6 +103,9 @@ void FSLActionInitialization::Build() const { G4int pythiaSeed = fIsPerformance ? -1 : 0; SetUserAction(new PythiaPrimaryGeneratorAction(pythiaSeed)); } else { + + +#if USE_HEPMC3 if(generator == "HepMC3 File") { std::cout << "Reading in events from file: " << hepmc3_file_path << std::endl; @@ -105,8 +113,10 @@ void FSLActionInitialization::Build() const { } - else if(generator == "Generator Plugin") - { + else if(generator == "Generator Plugin") { +#else + if(generator == "Generator Plugin") { +#endif std::cout << "Loading in event generator from plugin" << std::endl; GeoPluginLoader<FSLUserActionPlugin> generator_loader; const FSLUserActionPlugin * gen_plugin = generator_loader.load(generator_plugin); diff --git a/GeoModelG4/CMakeLists.txt b/GeoModelG4/CMakeLists.txt index 0d1c6e7b0352eba193ac149382d3c69722dad397..128f647f3b4d3215e7777e83194b51e05844144a 100644 --- a/GeoModelG4/CMakeLists.txt +++ b/GeoModelG4/CMakeLists.txt @@ -18,6 +18,8 @@ if( (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) OR GEOMODEL_BUILD_GEOMODELG4_ include( cmake_colors_defs ) # Warn the users about what they are doing message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}") + # Set a default build type + include( BuildType ) # Set default build and C++ options include( configure_cpp_options ) set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING @@ -31,6 +33,8 @@ if( (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) OR GEOMODEL_BUILD_GEOMODELG4_ endif() # Set a flag to steer the of the subpackages set( ${PROJECT_NAME}_INDIVIDUAL_BUILD ON ) + # Print Build Info on screen + include( PrintBuildInfo ) else() # I am called from other projects with add_subdirectory(). message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.") diff --git a/GeoModelG4/GeoModel2G4/CMakeLists.txt b/GeoModelG4/GeoModel2G4/CMakeLists.txt index d993096a8744dd7962234462fa5c9198d76d5a28..df227e6de95a31ba83546887e83bdac3db111a4f 100644 --- a/GeoModelG4/GeoModel2G4/CMakeLists.txt +++ b/GeoModelG4/GeoModel2G4/CMakeLists.txt @@ -30,7 +30,11 @@ file( GLOB HEADERS GeoModel2G4/*.h ) # include Geant4 headers include(${Geant4_USE_FILE}) -add_definitions (-DG4EXTENSION_SOLID_DIR=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} ) + +# set the path where the G4 extensions are found (e.g., the LArCustomSolid ATLAS extension) +set(PATHEXTENSIONS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} ) +add_definitions (-DG4EXTENSION_SOLID_DIR=${PATHEXTENSIONS}) +message("==> NOTE: G4 solid extensions will be searched in: ${PATHEXTENSIONS}. If you need custom extensions check if this is the right path. If not, set the right path by setting the environmental variable 'G4EXTENSION_SOLID_DIR' before running the application that uses the GeoModel2G4 library (e.g., 'export G4EXTENSION_SOLID_DIR=/usr/local/Cellar/geomodel-extension-atlaslar/5.4.0/lib') " ) # Set target and properties add_library( GeoModel2G4 SHARED ${HEADERS} ${SOURCES} ) diff --git a/GeoModelTools/CMakeLists.txt b/GeoModelTools/CMakeLists.txt index 3c29cb7ad5912aa19e24997da70da49269d0bd1c..738f05fcc77372e932a93965af045e831acd1f24 100644 --- a/GeoModelTools/CMakeLists.txt +++ b/GeoModelTools/CMakeLists.txt @@ -19,6 +19,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) include( cmake_colors_defs ) # Warn the users about what they are doing message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}") + # Set a default build type + include( BuildType ) # Set default build and C++ options include( configure_cpp_options ) set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING @@ -36,6 +38,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) find_package( GeoModelIO REQUIRED ${GeoModel_VERSION} ) # Set a flag to steer the build of the subpackages #set( VISUALIZATION_INDIVIDUAL_BUILD ON ) + # Print Build Info on screen + include( PrintBuildInfo ) else() # I am called from other project with add_subdirectory(). message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.") diff --git a/GeoModelVisualization/CMakeLists.txt b/GeoModelVisualization/CMakeLists.txt index 6ba88d17672db6eec6601833693492f8018e0839..054444a47a272f347c06333958252d30bdc31b3d 100644 --- a/GeoModelVisualization/CMakeLists.txt +++ b/GeoModelVisualization/CMakeLists.txt @@ -24,6 +24,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) include( cmake_colors_defs ) # Warn the users about what they are doing message(STATUS "${BoldGreen}Building ${PROJECT_NAME} individually, as a top-level project.${ColourReset}") + # Set a default build type + include( BuildType ) # Set default build and C++ options include( configure_cpp_options ) set( CMAKE_FIND_FRAMEWORK "LAST" CACHE STRING @@ -33,6 +35,8 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) find_package( GeoModelIO REQUIRED ${GeoModel_VERSION} ) # Set a flag to steer the build of the subpackages set( VISUALIZATION_INDIVIDUAL_BUILD ON ) + # Print Build Info on screen + include( PrintBuildInfo ) else() # I am called from other project with add_subdirectory(). message( STATUS "Building ${PROJECT_NAME} as part of the root GeoModel project.")