Commit 4fa539be authored by Paul Schütze's avatar Paul Schütze
Browse files

Merge branch 'p-fix-microelec' into 'master'

DepositionGeant4: Fix Finding MicroElec Physics List

See merge request allpix-squared/allpix-squared!1102
parents ded2b0a1 8ff88f64
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -14,7 +14,9 @@

#include <G4VModularPhysicsList.hh>

#include "MicroElecSiPhysics.hh"
#ifdef ALLPIX_PHYSICSLIST_MICROELEC
#include <MicroElecSiPhysics.hh>
#endif

/**
 * @brief Handler namespace for implementing additional PhysicsLists included in AllPix2 but not in the
@@ -29,10 +31,12 @@ namespace allpix::physicslists {
     */
    inline G4VModularPhysicsList* getList(const std::string& list_name) {

#ifdef ALLPIX_PHYSICSLIST_MICROELEC
        if(list_name == "MICROELEC-SIONLY") {
            // Downcasting from a G4VUserPhysicsList* to a G4VModularPhysicsList
            return dynamic_cast<G4VModularPhysicsList*>(new MicroElecSiPhysics());
        }
#endif

        return nullptr;
    }
+22 −15
Original line number Diff line number Diff line
@@ -22,7 +22,8 @@ ALLPIX_MODULE_REQUIRE_GEANT4_INTERFACE(${MODULE_NAME} REQUIRED)
# If available, add additional physics lists form Geant4:
IF(DEFINED ENV{GEANT4_DATA_DIR})
    # Set variable to microelectronics example folder
    SET(GEANT4_EXAMPLES_DIR $ENV{GEANT4_DATA_DIR}/../examples)
    SET(G4_EXAMPLES "$ENV{GEANT4_DATA_DIR}/../examples")
    CMAKE_PATH(ABSOLUTE_PATH G4_EXAMPLES NORMALIZE OUTPUT_VARIABLE GEANT4_EXAMPLES_DIR)
ELSE()
    FIND_PROGRAM(G4CONFIG "geant4-config")
    IF(G4CONFIG)
@@ -36,21 +37,27 @@ ELSE()
    ENDIF()
ENDIF()

IF(DEFINED GEANT4_EXAMPLES_DIR)
IF(EXISTS ${GEANT4_EXAMPLES_DIR})
    MESSAGE(STATUS "  Found Geant4 Examples, building add. physics lists")
    CONFIGURE_FILE(
        ${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/MicroElecSiPhysics.cc ${CMAKE_CURRENT_BINARY_DIR}/ COPYONLY)
    CONFIGURE_FILE(
        ${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/ElectronCapture.cc ${CMAKE_CURRENT_BINARY_DIR}/ COPYONLY)

    TARGET_SOURCES(${MODULE_NAME} PRIVATE
        ${CMAKE_CURRENT_BINARY_DIR}/MicroElecSiPhysics.cc
    IF(EXISTS ${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/MicroElecSiPhysics.cc
       AND EXISTS ${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/ElectronCapture.cc)
        MESSAGE(STATUS "  Found MicroElectronics physics lists")
        CONFIGURE_FILE(${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/MicroElecSiPhysics.cc
                       ${CMAKE_CURRENT_BINARY_DIR}/ COPYONLY)
        CONFIGURE_FILE(${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/src/ElectronCapture.cc ${CMAKE_CURRENT_BINARY_DIR}/
                       COPYONLY)

        TARGET_SOURCES(${MODULE_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/MicroElecSiPhysics.cc
                                              ${CMAKE_CURRENT_BINARY_DIR}/ElectronCapture.cc)

    SET_SOURCE_FILES_PROPERTIES(
        ${CMAKE_CURRENT_BINARY_DIR}/ElectronCapture.cc PROPERTIES COMPILE_FLAGS -Wno-zero-as-null-pointer-constant)
        SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/ElectronCapture.cc
                                    PROPERTIES COMPILE_FLAGS -Wno-zero-as-null-pointer-constant)
        # Add includes from the microelectronics example
        TARGET_INCLUDE_DIRECTORIES(${MODULE_NAME} SYSTEM PRIVATE ${GEANT4_EXAMPLES_DIR}/advanced/microelectronics/include)

        TARGET_COMPILE_DEFINITIONS(${MODULE_NAME} PRIVATE ALLPIX_PHYSICSLIST_MICROELEC)
    ENDIF()
ENDIF()

# Register module tests