diff --git a/CMakeLists.txt b/CMakeLists.txt
index 80794d3f667273aaeeb85ba7b2508e23ed67b81c..dccd2fcdf8812dbc68933e0969327c15974e4b54 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -203,6 +203,7 @@ add_subdirectory(projects)
 add_subdirectory(pyexternals)
 add_subdirectory(generators)
 add_subdirectory(frameworks)
+add_subdirectory(key4hep)
 
 #--Add additional [user] recipes---------------------------------------------------------------------------------------
 function(define_new_recipes) 
diff --git a/cmake/toolchain/heptools-dev-base.cmake b/cmake/toolchain/heptools-dev-base.cmake
index d0e5bf8317941817b3c83b016308403474dc7885..972a5d0fc370f9b53fcf3d98773d6cee4cf81800 100644
--- a/cmake/toolchain/heptools-dev-base.cmake
+++ b/cmake/toolchain/heptools-dev-base.cmake
@@ -432,7 +432,7 @@ LCG_external_package(libxslt           1.1.38
 LCG_external_package(libzip            1.9.2                                    )
 LCG_external_package(lightning_utilities 0.8.0                                  )
 LCG_external_package(linkify_it_py     2.0.2                                    )
-LCG_external_package(LCIO              02.21                                    )
+LCG_external_package(LCIO              02.22.03                                 )
 LCG_external_package(llvmlite          0.41.1                                   )
 LCG_external_package(lmfit             1.2.2                                    )
 LCG_external_package(locket            1.0.0                                    )
diff --git a/cmake/toolchain/heptools-devkey.cmake b/cmake/toolchain/heptools-devkey.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..a0af6a770e1f36ed23f8bdc534a9f812b10793bc
--- /dev/null
+++ b/cmake/toolchain/heptools-devkey.cmake
@@ -0,0 +1,102 @@
+#---List of externals
+set(LCG_PYTHON_VERSION 3)
+include(heptools-dev4)
+
+# Other
+LCG_external_package(bdsim                                 1.7.7)
+LCG_external_package(bhlumi                         4.04linuxLHE)
+LCG_external_package(fcalclusterer                         01.01)
+LCG_external_package(generalbrokenlines                 02.02.01)
+LCG_external_package(kkmcee                           2024.10.07)
+LCG_external_package(opendatadetector                      v4.0.3 GIT=https://gitlab.cern.ch/acts/OpenDataDetector.git)
+LCG_external_package(pybdsim                               3.6.1)
+LCG_external_package(pymadx                                2.2.1)
+LCG_external_package(pytransport                           2.0.2)
+LCG_external_package(simsipm                               2.0.2)
+LCG_external_package(whizard                               3.1.4)
+
+
+# Key4hep
+LCG_external_package(cldconfig                        2024.10.06)
+LCG_external_package(k4clue                             01.00.06)
+LCG_external_package(k4edm4hep2lcioconv                    00.09)
+LCG_external_package(k4fwcore                           01.01.02)
+LCG_external_package(k4generatorsconfig                    0.1.1)
+LCG_external_package(k4geo                                 00.21)
+LCG_external_package(k4marlinwrapper                       00.10)
+LCG_external_package(k4_project_template                   0.5.0)
+LCG_external_package(k4reco                                0.1.0)
+LCG_external_package(k4rectracker                          0.3.0)
+LCG_external_package(k4simdelphes                       00.07.03)
+
+# iLCSoft
+LCG_external_package(ced                                   01.10)
+LCG_external_package(cedviewer                             01.20)
+LCG_external_package(clicperformance                    02.05.01)
+LCG_external_package(clupatra                           01.03.01)
+LCG_external_package(conddbmysql                           0.9.7)
+LCG_external_package(conformaltracking                     01.12)
+LCG_external_package(ddkaltest                          01.07.01)
+LCG_external_package(ddmarlinpandora                    00.12.02)
+LCG_external_package(forwardtracking                    01.14.02)
+LCG_external_package(garlic                                03.01)
+LCG_external_package(gear                               01.09.04)
+LCG_external_package(ilcutil                            01.07.03)
+LCG_external_package(ildperformance                        01.12)
+LCG_external_package(kaldet                             01.14.01)
+LCG_external_package(kaltest                            02.05.02)
+LCG_external_package(kitrack                            01.10.01)
+LCG_external_package(kitrackmarlin                      01.13.02)
+LCG_external_package(lccd                               01.05.03)
+LCG_external_package(lcfiplus                           00.10.01)
+LCG_external_package(lcfivertex                            00.09)
+LCG_external_package(lctuple                               01.14)
+LCG_external_package(marlin                             01.19.04)
+LCG_external_package(marlindd4hep                       00.06.02)
+LCG_external_package(marlinfastjet                      00.05.03)
+LCG_external_package(marlinkinfit                       00.06.01)
+LCG_external_package(marlinkinfitprocessors                00.05)
+LCG_external_package(marlinmlflavortagging                 0.1.0)
+LCG_external_package(marlinReco                         01.36.01)
+LCG_external_package(marlintrk                          02.09.02)
+LCG_external_package(marlintrkprocessors                02.12.06)
+LCG_external_package(marlinutil                         01.18.01)
+LCG_external_package(overlay                            00.23.01)
+LCG_external_package(physsim                               00.05)
+LCG_external_package(raida                                 01.11)
+
+# PandoraPFA
+LCG_external_package(larcontent                         04.11.02)
+LCG_external_package(lccontent                          03.01.06)
+LCG_external_package(pandoraanalysis                    02.00.01)
+LCG_external_package(pandoramonitoring                  03.06.00)
+LCG_external_package(pandorapfa                         04.11.02)
+LCG_external_package(pandorasdk                         03.04.02)
+
+# AIDASoft
+LCG_external_package(aidatt                                00.10)
+
+# HEP-FCC
+LCG_external_package(dual_readout                          0.1.4)
+LCG_external_package(fcc_config                            0.1.0)
+LCG_external_package(fccdetectors                       0.1pre10)
+LCG_external_package(fccsw                              1.0pre10)
+LCG_external_package(k4gen                              0.1pre13)
+LCG_external_package(k4simgeant4                      0.1.0pre15)
+
+# Other packages thate require checks
+
+# Check in dev-base for onnxruntime
+if(${LCG_COMP}${LCG_COMPVERS} MATCHES "gcc1[1234]" )
+  # A more recent version that what is in dev-base is required for ddfastshowerml
+  LCG_external_package(openmpi                               5.0.6)
+  LCG_external_package(ddfastshowerml                        0.1.0)
+  LCG_external_package(k4reccalorimeter                 0.1.0pre16)
+endif()
+
+
+if(NOT ${LCG_OS} MATCHES mac)
+  LCG_external_package(fccanalyses                          0.10.0) # Until https://github.com/HEP-FCC/FCCAnalyses/issues/417 is fixed
+  LCG_external_package(freeglut                              3.6.0) # Taken from the system on Mac
+  LCG_external_package(babayaga                           fcc1.0.0) # Does not build on MacOS
+endif()
diff --git a/documentation/packages.json b/documentation/packages.json
index 3d5517b45f37c85e58049142f1cbdcdf81b44803..2626ddfd6b72fd754c0f0195cbce9e2e770c7066 100644
--- a/documentation/packages.json
+++ b/documentation/packages.json
@@ -5309,6 +5309,14 @@
         "license": null,
         "name": "EDM4hep"
     },
+    {
+        "description": "Core Components for the Gaudi-based Key4hep Framework",
+        "fullname": "",
+        "homepage": "https://github.com/key4hep/k4FWCore",
+        "language": "C++",
+        "license": null,
+        "name": "k4FWCore"
+    },
     {
         "category": "Simulation",
         "contacts": [],
@@ -13331,4 +13339,4 @@
         "license": "http://zlib.net/zlib_license.html",
         "name": "zlib"
     }
-]
\ No newline at end of file
+]
diff --git a/frameworks/CMakeLists.txt b/frameworks/CMakeLists.txt
index 4e6867bd8e40c2f44d8f648eb4e015a7c34e7fa1..a80ef4af9d19a1ab8e132da2ec35b2146e594a0c 100644
--- a/frameworks/CMakeLists.txt
+++ b/frameworks/CMakeLists.txt
@@ -80,8 +80,10 @@ LCGPackage_add(
                -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
                -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
                -DBUILD_TESTING=OFF 
+    # Remove after EDM4hep 0.99.1
+    PATCH_COMMAND $ENV{SHELL} -c "echo 'find_dependency(nlohmann_json)' >> <SOURCE_DIR>/cmake/EDM4HEPConfig.cmake.in"
     BUILD_COMMAND ${MAKE}
-    DEPENDS     ROOT podio Jinja2
+    DEPENDS     ROOT podio Jinja2 jsonmcpp
 )
 
 #---DD4hep---------------------------------------------------------------------
diff --git a/generators/CMakeLists.txt b/generators/CMakeLists.txt
index b531d07521ce7b3bcd4f2b4cb370668611d71737..389499a39f5aa83c81b776d2c450bf83d6739ee2 100644
--- a/generators/CMakeLists.txt
+++ b/generators/CMakeLists.txt
@@ -1643,12 +1643,16 @@ LCGPackage_Add(
   CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory <INSTALL_DIR>/tmppdfsets
             COMMAND ${lhapdf_home}/bin/lhapdf --pdfdir=<INSTALL_DIR>/tmppdfsets --listdir=${lhapdf_home}/share/LHAPDF install cteq6l1 CT10
             COMMAND autoreconf --force --install
-            COMMAND $ENV{SHELL} -c "LCIO_DIR=${LCIO_home} LOOPTOOLS_DIR=${looptools_home}/lib64 LHAPDF_DATA_PATH=<INSTALL_DIR>/tmppdfsets HOPPET_DIR=${hoppet_home} LHAPDF_DIR=${lhapdf_home}  HEPMC_DIR=${HepMC_home} ./configure --enable-hepmc --enable-fastjet --with-fastjet=${fastjet_home} --enable-hoppet --enable-gosam --with-gosam=${gosam_home} --with-golem=${gosam_contrib_home} --with-form=${FORM_home} --with-qgraf=${qgraf_home} --with-ninja=${gosam_contrib_home} --with-samurai=${gosam_contrib_home} --enable-looptools --enable-openloops --with-openloops=${openloops_home} --prefix=<INSTALL_DIR> F77=$FC FCFLAGS=-ffree-line-length-0 FFLAGS=-ffree-line-length-0"
+            COMMAND $ENV{SHELL} -c "LCIO_DIR=${LCIO_home} LOOPTOOLS_DIR=${looptools_home}/lib64 LHAPDF_DATA_PATH=<INSTALL_DIR>/tmppdfsets HOPPET_DIR=${hoppet_home} LHAPDF_DIR=${lhapdf_home} HEPMC_DIR=${hepmc3_home} ./configure --enable-hepmc --enable-fastjet --with-fastjet=${fastjet_home} --enable-hoppet --enable-gosam --with-gosam=${gosam_home} --with-golem=${gosam_contrib_home} --with-form=${FORM_home} --with-qgraf=${qgraf_home} --with-ninja=${gosam_contrib_home} --with-samurai=${gosam_contrib_home} --enable-looptools --enable-openloops --with-openloops=${openloops_home} --prefix=<INSTALL_DIR>"
+  ENVIRONMENT CAMLLIB=${ocaml_home}/lib/ocaml
+              F77=${CMAKE_Fortran_COMPILER}
+              IF NOT ${LCG_OS} MATCHES mac THEN
+              PATH=/cvmfs/sft.cern.ch/lcg/external/texlive/latest/bin/x86_64-linux:$ENV{PATH}
+              ENDIF
   BUILD_COMMAND ${MAKE}
   INSTALL_COMMAND ${MAKE} install
   BUILD_IN_SOURCE 1
-  DEPENDS ocaml lhapdf looptools hoppet HepMC fastjet gosam gosam_contrib FORM qgraf IF <NATIVE_VERSION> VERSION_LESS 2.8.0 THEN autoconf automake ENDIF libtool LCIO openloops
-  ## openloops: missing process library for `ppll` -> should be fixed in 2.8.3
+  DEPENDS ocaml lhapdf looptools hoppet hepmc3 fastjet gosam gosam_contrib FORM autoconf automake libtool LCIO openloops
 )
 
 
@@ -1820,4 +1824,62 @@ LCGPackage_Add(
   DEPENDS lhapdf kokkos hepmc3 hdf5_mpi zlib openmpi
 )
 
+#---bdsim-------------------------------------------------------------------------
+LCGPackage_Add(
+    bdsim
+    URL ${gen_url}/bdsim-${bdsim_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} # In version 1.7.7 it's still hardcoded to 11
+               -DBUILD_TESTING=OFF
+    BUILD_COMMAND ${MAKE}
+    DEPENDS Geant4 ROOT clhep flex bison
+)
+
+#---bhlumi-------------------------------------------------------------------------
+# Installation instructions copied from key4hep-spack
+LCGPackage_Add(
+    bhlumi
+    URL ${gen_url}/bhlumi-${bhlumi_native_version}.tar.gz
+    CONFIGURE_COMMAND <VOID>
+    BUILD_COMMAND $ENV{SHELL} -c "cd ./4.x-cpc && make -f makefile lhemain"
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory <INSTALL_DIR>/bin
+            COMMAND chmod +x <SOURCE_DIR>/4.x-cpc/demo2.exe
+            COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/4.x-cpc/demo2.exe <INSTALL_DIR>/bin/BHLUMI.exe
+            COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bhlumi/BHLUMI <INSTALL_DIR>/bin
+    BUILD_IN_SOURCE 1
+)
 
+#---babayaga-------------------------------------------------------------------------
+LCGPackage_Add(
+    babayaga
+    URL ${gen_url}/babayaga-${babayaga_native_version}.tar.bz2
+    CONFIGURE_COMMAND <VOID>
+    BUILD_COMMAND ${MAKE}
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E make_directory <INSTALL_DIR>/bin
+            COMMAND chmod +x <SOURCE_DIR>/babayaga-fcc
+            COMMAND ${CMAKE_COMMAND} -E copy <SOURCE_DIR>/babayaga-fcc <INSTALL_DIR>/bin/babayaga-fcc.exe
+            COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/babayaga/babayaga <INSTALL_DIR>/bin
+    BUILD_IN_SOURCE 1
+)
+
+#---KKMCee-------------------------------------------------------------------------
+LCGPackage_Add(
+    kkmcee
+    URL ${gen_url}/kkmcee-${kkmcee_native_version}.tar.gz
+    CONFIGURE_COMMAND ${CMAKE_COMMAND} -E create_symlink dizet-6.45 dizet
+              COMMAND autoreconf --force --install
+              COMMAND ./configure --with-photos=${photos++_home} --prefix=<INSTALL_DIR>
+    BUILD_COMMAND ${MAKE}
+    INSTALL_COMMAND ${MAKE} install
+            COMMAND ${CMAKE_COMMAND} -E make_directory <INSTALL_DIR>/etc
+            COMMAND ${CMAKE_COMMAND} -E copy SRCee/KKMCee_defaults <INSTALL_DIR>/etc
+            COMMAND ${CMAKE_COMMAND} -E copy SRCee/KKee2f.h <INSTALL_DIR>/include
+            COMMAND ${CMAKE_COMMAND} -E make_directory <INSTALL_DIR>/share/KKMCee
+            COMMAND ${CMAKE_COMMAND} -E copy ProdRun/workKKMCee/KKMCee-Tauola.input <INSTALL_DIR>/share/KKMCee
+            COMMAND ${CMAKE_COMMAND} -E copy <INSTALL_DIR>/bin/MainKKMCee <INSTALL_DIR>/bin/KKMCee.exe
+            COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/kkmcee/KKMCee <INSTALL_DIR>/bin
+            COMMAND $ENV{SHELL} -c "cp */*_rdict.pcm <INSTALL_DIR>/lib"
+    BUILD_IN_SOURCE 1
+    DEPENDS ROOT photos++ hepmc3 autoconf automake libtool
+)
diff --git a/generators/babayaga/babayaga b/generators/babayaga/babayaga
new file mode 100755
index 0000000000000000000000000000000000000000..48487c66b084228cc0b88966132e2ce2cbfe5028
--- /dev/null
+++ b/generators/babayaga/babayaga
@@ -0,0 +1,205 @@
+#!/bin/bash
+
+# Wrapper around the babayaga-fcc.exe executable
+
+help(){
+   echo ""
+   echo "+++ Wrapper around the babayaga-fcc.exe executable +++"
+   echo ""
+   echo "+++ Process: e+e- -> gamma gamma"
+   echo ""
+   echo -e "Usage: \tbabayaga -e Ecms -n Nevts -f Thmin -t Thmax -x epscms -o output_file [-s seed]"
+   echo -e "       \tbabayaga -c config_file [-s seed]"
+   echo ""
+   echo "Switches:"
+   echo -e "  -c, --config file \t\tPath to configuration file"
+   echo -e "  -e, --ecms energy \t\tCenter of Mass energy in GeV"
+   echo -e "  -n, --nevts energy \t\tNumber of events to be generated"
+   echo -e "  -f, --Thmin angle \t\tMinimum theta [deg]"
+   echo -e "  -t, --Thmax angle \t\tMaximum theta [deg]"
+   echo -e "  -a, --acolmax angle \t\tMax acollinearity [deg]"
+   echo -e "  -m, --emin energy \t\tMin energy in GeV"
+   echo -e "  -x, --eps fraction \t\tSoft-photon cut-off"
+   echo -e "  -o, --outfile file \t\tFile with the generated events in LHE format"
+   echo -e "  -w, --outdir path \t\tPath with working space (and residual files)"
+   echo -e "  -s, --seed number \t\tNumber used for seeding (randomly generated, if missing)"
+   echo -e "  -d, --debug number \t\tDebug level (0, 1, 2, ...)"
+   echo ""
+   echo "Examples:"
+   echo -e "babayaga -f 15. -t 165. -e 91.2 -n 10000 -o bbyg_10000.LHE"
+   echo -e "babayaga -c babayaga.input -o bbyg.LHE"
+   echo ""
+}
+
+_PROC="gg"
+_ECMS="91.2"
+_NEVTS="100"
+_THMIN="10."
+_THMAX="170."
+_EPS="0.0002"
+_EMIN="30."
+_ACOLMAX="180."
+_OUTDIR=""
+_OUTPUT="no"
+_OUTFILE=""
+_SEED="1001"
+_DEBUGLEVEL="0"
+# Read arguments
+while [[ $# -gt 0 ]]
+do
+    arg="$1"
+    case $arg in
+        -c | --config)
+            _CONFFILE="$2"
+            shift # past argument
+            shift # past value
+        ;;
+        -e | --ecms)
+            _ECMS="$2"
+            shift
+            shift
+        ;;
+        -f | --thmin)
+           _THMIN="$2"
+           shift
+           shift
+        ;;
+        -t | --thmax)
+           _THMAX="$2"
+           shift
+           shift
+        ;;
+        -a | --acolmax)
+           _ACOLMAX="$2"
+           shift
+           shift
+        ;;
+        -x | --eps)
+           _EPS="$2"
+           shift
+           shift
+        ;;
+        -m | --emin)
+           _EMIN="$2"
+           shift
+           shift
+        ;;
+        -n | --nevts)
+           _NEVTS="$2"
+           shift
+           shift
+        ;;
+        -s | --seed)
+           _SEED="$2"
+           shift
+           shift
+        ;;
+        -o | --outfile)
+           _OUTPUT="yes"
+           _OUTFILE="$2"
+           shift
+           shift
+        ;;
+        -w | --outdir)
+           _OUTDIR="$2"
+           shift
+           shift
+        ;;
+        -d | --debug)
+           _DEBUGLEVEL="$2"
+           shift
+           shift
+        ;;
+        * | -h | --help)
+            help
+            exit 1
+    esac
+done
+
+if test "x${_OUTDIR}" = "x" ; then
+   _OUTDIR="./.bbyg-${_PROC}-${_NEVTS}"
+fi
+
+BABAYAGA_DIR=$(dirname $(dirname $0))
+BABAYAGA_EXE=${BABAYAGA_DIR}/bin/babayaga-fcc.exe
+
+# Create seed if needed
+if test "x${_SEED}" = "x" ; then
+   ln -sf $_SEEDFILE ./iniseed
+   _SEED=`date +"%j%H%M%N"`
+fi
+
+# Run existing config file
+BBYGINPUT="./bbyg.input"
+if test "x${_CONFFILE}" = "x" && test -f $BBYGINPUT ; then
+   echo "Existing default input file saved to ${BBYGINPUT}.last ... "
+   cp -rp $BBYGINPUT "${BBYGINPUT}.last"
+   rm -f $BBYGINPUT
+fi
+if test ! "x${_CONFFILE}" = "x" && test -f ${_CONFFILE}; then
+   if test ! "x${_CONFFILE}" = "x$BBYGINPUT";  then
+      echo "Existing default input file saved to ${BBYGINPUT}.last ... "
+      cp -rp $BBYGINPUT "${BBYGINPUT}.last"
+      ln -sf ${_CONFFILE} $BBYGINPUT
+   fi
+   # Retrieve some crucial values
+   _NEVTS=`grep nev ${_CONFFILE} | awk '{split($0,a," "); print a[2] }'`
+   _OUTDIR=`grep path ${_CONFFILE} | awk '{split($0,a," "); print a[2] }'`
+   if test "x${_OUTDIR}" = "x" ; then
+      _OUTDIR="./.bbyg-${_PROC}-${_NEVTS}"
+   fi
+   _OUTPUT=`grep store ${_CONFFILE} | awk '{split($0,a," "); print a[2] }'`
+else
+# We create a config file based on the input switches: this is the initial common part
+cat > $BBYGINPUT <<EOF
+fs ${_PROC}
+ecms ${_ECMS}
+thmin ${_THMIN}
+thmax ${_THMAX}
+zmax ${_ACOLMAX}
+emin ${_EMIN}
+sprb1 0.0000000
+sprb2 0.0000000
+nev ${_NEVTS}
+mode weighted
+path ${_OUTDIR}/
+store ${_OUTPUT}
+ord alpha
+EWKc on
+seed ${_SEED}
+menu2 on
+arun off
+eps ${_EPS}
+model matched
+nphot -1
+nwrite 5000000
+nsearch 5000000
+verbose ${_DEBUGLEVEL}
+sdmax 0.100E-17
+run
+EOF
+fi
+
+# Check outdir
+if test "x${_OUTDIR}" = "x" ; then
+   _OUTDIR="./.bbyg-${_PROC}-${_NEVTS}"
+fi
+
+# Save existing output file
+if test "x${_OUTPUT}" = "xyes" ; then
+   DEFOUTFILE="${_OUTDIR}/events.lhe"
+   if test -f $DEFOUTFILE ; then
+      echo "Existing LHE output file saved to ${DEFOUTFILE}.last ... "
+      mv $DEFOUTFILE "${DEFOUTFILE}.last"
+   fi
+fi
+echo "OUTPUT: ${_OUTPUT} ${_OUTFILE} ${DEFOUTFILE}"
+
+time ${BABAYAGA_EXE} < $BBYGINPUT
+
+# Set output file
+if test -f $DEFOUTFILE ; then
+   mv $DEFOUTFILE ${_OUTFILE}
+else
+   echo "==== LHE output file $DEFOUTFILE was not produced!"
+fi
\ No newline at end of file
diff --git a/generators/bhlumi/BHLUMI b/generators/bhlumi/BHLUMI
new file mode 100755
index 0000000000000000000000000000000000000000..84a89d6c9ea17506abe151913b2b3188cec87701
--- /dev/null
+++ b/generators/bhlumi/BHLUMI
@@ -0,0 +1,177 @@
+#!/bin/bash
+
+# Wrapper around the BHLUMI/BHLUMI.exe executable
+
+help(){
+   echo ""
+   echo "+++ Wrapper around the BHLUMI.exe executable +++"
+   echo ""
+   echo -e "Usage: \tBHLUMI -e Ecms -n Nevts -f Thmin -t Thmax -x epscms -o output_file [-s seed_file]"
+   echo -e "       \tKKMCee -c config_file [-s seed_file]"
+   echo ""
+   echo "Switches:"
+   echo -e "  -c, --config file \t\tPath to configuration file"
+   echo -e "  -e, --ecms energy \t\tCenter of Mass energy in GeV"
+   echo -e "  -n, --nevts energy \t\tNumber of events to be generated"
+   echo -e "  -f, --Thmin theta \t\tMinimum theta [rad]"
+   echo -e "  -t, --Thmax theta \t\tMaximum theta [rad]"
+   echo -e "  -x, --epscms fraction \tEnergy cut-off in  fraction of Ecms"
+   echo -e "  -o, --outfile file \t\tFile with the generated events in LHE format"
+   echo -e "  -s, --seedfile file \t\tFile to be used for seeding (randomly generated, if missing)"
+   echo ""
+   echo "Examples:"
+   echo -e "BHLUMI -f 0.022 -t 0.082 -x 0.001 -e 91.2 -n 10000 -o kkmu_10000.LHE"
+   echo -e "BHLUMI -c bhlumi.input"
+   echo ""
+   echo "Additional switches (for experts only):"
+   echo -e "  -k, --keyopt KEYOPT \t\tTechnical parameters switch [default 3021]"
+   echo -e "  \t\t\t\tKEYOPT = 1000*KEYGEN + 100*KEYREM + 10*KEYWGT + KEYRND"
+   echo -e "  -r, --keyrad KEYRAD \t\tPhysics parameters switch [default 1021]"   
+   echo -e "  \t\t\t\tKEYRAD = 1000*KEYZET + 100*KEYUPD + 10*KEYMOD + KEYPIA"
+   echo -e "  (Contact BHLUMI authors for details, e.g. through https://github.com/KrakowHEPSoft/BHLUMI)"
+   echo ""
+}
+
+_ECMS="91.2"
+_NEVTS="100"
+_THMIN=".022768344"
+_THMAX=".082035891"
+_EPSCMS="1D-3"
+_KEYOPT="3021"
+_KEYRAD="1021"
+_OUTFILE="BHLUMI_OUT.LHE"
+# Read arguments
+while [[ $# -gt 0 ]]
+do
+    arg="$1"
+    case $arg in
+        -c | --config)
+            _CONFFILE="$2"
+            shift # past argument
+            shift # past value
+        ;;
+        -e | --ecms)
+            _ECMS="$2"
+            shift
+            shift
+        ;;
+        -f | --thmin)
+           _THMIN="$2"
+           shift
+           shift
+        ;;
+        -t | --thmax)
+           _THMAX="$2"
+           shift
+           shift
+        ;;
+        -x | --epscms)
+           _EPSCMS="$2"
+           shift
+           shift
+        ;;
+        -k | --keyopt)
+           _KEYOPT="$2"
+           shift
+           shift
+        ;;
+        -r | --keyrad)
+           _KEYRAD="$2"
+           shift
+           shift
+        ;;
+        -n | --nevts)
+           _NEVTS="$2"
+           shift
+           shift
+        ;;
+        -s | --seedfile)
+           _SEEDFILE="$2"
+           shift
+           shift
+        ;;
+        -o | --outfile)
+           _OUTFILE="$2"
+           shift
+           shift
+        ;;
+        * | -h | --help)
+            help
+            exit 1
+    esac
+done
+
+BHLUMI_DIR=$(dirname $(dirname $0))
+BHLUMI_EXE=${BHLUMI_DIR}/bin/BHLUMI.exe
+
+# Run existing config file
+BHLUMIINPUT="./bhlumi.input"
+if test -f $BHLUMIINPUT ; then
+   echo "Existing input file saved to ${BHLUMIINPUT}.last ... "
+   cp -rp $BHLUMIINPUT "${BHLUMIINPUT}.last"
+   rm -f $BHLUMIINPUT
+fi
+if test ! "x$_CONFFILE" = "x" && test -f $_CONFFILE; then
+   ln -sf ${_CONFFILE} $BHLUMIINPUT
+else
+# We create a config file based on the input switches: this is the initial common part
+cat > $BHLUMIINPUT <<EOF
++++========= Input Data set for BHLUMI ===============================
+ 0 1 0 0 0 0 0 0    KAT1,KAT2,KAT3,KAT4,KAT5,KAT6,KAT7,KAT8
+ ${_NEVTS}      NEVT
+ ${_KEYOPT}     KEYOPT = 1000*KEYGEN +100*KEYREM +10*KEYWGT +KEYRND
+ ${_KEYRAD}     KEYRAD =              100*KEYUPD +10*KEYMOD +KEYPIA
+         2      KEYTRI  Obsolete!!!
+ ${_ECMS}D0     CMSENE
+ ${_THMIN}      Tming   theta_min [rad]    genaration
+ ${_THMAX}      Tmaxg   theta_max [rad]    generation
+  0.9999D0      VMAXG   v_max              generation
+ ${_EPSCMS}      XK0     eps_CMS            generation
+      .024      TminW   theta_min sical    trigger wide
+      .058      TmaxW   theta_max sical    trigger wide
+      .024      TminN   theta_min          trigger narrow
+      .058      TminN   theta_max          trigger narrow
+     0.5D0      VMAXE   v_max              trigger maximum v
+        32      NPHI    nphi      sical    trigger no of phi   sect.
+        16      NTHE    ntheta    sical    trigger no of theta sect.
+================= the end of input data set for BHLUMI ================
+EOF
+fi
+
+# Create seed file
+if test ! "x$_SEEDFILE" = "x" && test -f $_SEEDFILE; then
+   ln -sf $_SEEDFILE ./iniseed
+else
+   _seed=`date +"%j%H%M%N"`
+   _seed1=`echo ${_seed:0:8}`
+   _seed2=`echo ${_seed:8:15}`
+   echo "Seeds: $_seed1 $_seed2"
+   cat > ./iniseed <<EOF
+  $_seed1      IJKLIN= $_seed2
+         0      NTOTIN= 0
+         0      NTOT2N= 0
+EOF
+fi
+cat ./iniseed
+
+# Run
+cat > ./semaphore <<EOF
+START
+
+EOF
+
+# Save existing output file
+DEFOUTFILE="out.lhe"
+if test -f $DEFOUTFILE ; then
+   echo "Existing LHE output file saved to ${DEFOUTFILE}.last ... "
+   mv $DEFOUTFILE "${DEFOUTFILE}.last"
+fi
+
+time ${BHLUMI_EXE} < $BHLUMIINPUT
+
+# Set output file
+if test -f $DEFOUTFILE ; then
+   mv $DEFOUTFILE ${_OUTFILE}
+else
+   echo "==== LHE output file $DEFOUTFILE was not produced!"
+fi
diff --git a/generators/kkmcee/KKMCee b/generators/kkmcee/KKMCee
new file mode 100755
index 0000000000000000000000000000000000000000..899f709a71f0d982ce341f0215a22feadd41d2a7
--- /dev/null
+++ b/generators/kkmcee/KKMCee
@@ -0,0 +1,287 @@
+#!/bin/bash
+
+# Wrapper around the KKMCee executable
+# This script relies on the presence of CVMFS in the system and uses the KKMCee
+# provided by the LCG Releases
+
+help(){
+   echo ""
+   echo "+++ Wrapper around the KKMCee executable  +++"
+   echo ""
+   echo "Usage: \tKKMCee -f Mu|Tau|UDS|C|B|Hadrons -e Ecms -n Nevts -o output_file [-s initial_seed] [OPTIONS]"
+   echo "       \tKKMCee -c config_file [-s initial_seed]"
+   echo ""
+   echo "Options:"
+   echo -e "  -c, --config file \t\tPath to configuration file"
+   echo -e "  -f, --flavour flavour \tFlavour to be generated (Mu|Tau|UDS|C|B|Hadrons)"
+   echo -e "  -e, --ecms energy \t\tCenter of Mass energy in GeV"
+   echo -e "  -n, --nevts events \t\tNumber of events to be generated"
+   echo -e "  -o, --outfile file \t\tFile with the generated events in HEPMCv3 format [kkmcee.hepmc]"
+   echo -e "  -s, --initialseed \t\tLong number to be used for initial seeding (randomly generated, if missing)"
+   echo -e "  -b, --bessig bessig \t\tBeam-Energy-Spread of both beams (or of the first beam, if bessig2<0.) "
+   echo -e "                      \t\t[fraction of Ecms/2, default -1. (no spread)]"
+   echo -e "  -g, --bessig2 bessig2 \tBeam-Energy-Spread of the second beam if different from the first beam; fraction of Ecms/2."
+   echo -e "                      \t\t[fraction of Ecms/2, default -1. (no spread or equal to first beam)]"
+   echo -e "  -r, --besrho rho \t\tBeam-Energy-Spread correlation [default 0.]"
+   echo -e "  -d, --debug lvl \t\t PrintOut Level 0,1,2 [default 1]"
+   echo ""
+   echo "Special options for taus only:"
+   echo -e "  -t, --taudec t1*1000+t2 \tdecay channel for the first (t1) and second tau (t2)"
+   echo -e "                      \t\t 0        Inclusive"
+   echo -e "                      \t\t 1,2,3    electron,mu,pi"
+   echo -e "                      \t\t 4,5,6,7  rho,a1,K,K*"
+   echo -e "                      \t\t 8,9,10,11,12,13  3pip0,pi3pi0,3pi2pi0,5pi,5pip0,3pi3p0"
+   echo -e "                      \t\t 14, ... (other rare decays see tauola++)"
+   echo -e "  --tauopt file \t\tFile with tau options (see Tauola section in KKMCee_defaults)"
+   echo -e "                      \t\t the file is included as it is and overwrites other settings"
+   echo ""
+   echo "Examples:"
+   echo -e "KKMCee -f Mu -e 91.2 -n 10000 -o kkmu_10000.hepmc -b 0.001"
+   echo -e "KKMCee -c kkmc_ditau.input"
+   echo -e "KKMCee -f B -e 91.2 -n 1000 -o kkbb_1000.hepmc"
+   echo ""
+   echo "  NB: (1) This wrapper works only for KKMCee versions 5 or newer"
+   echo "      (2) Output is HEPMC v3"
+   echo ""
+}
+
+_DBGLVL=1
+_FLAVOUR="Mu"
+_ECMS="91.2"
+_NEVTS="100"
+_DOBES="no"
+_HAVEBESTWO="no"
+_BESONE=-1.
+_BESTWO=-1.
+_BESRHO=0.
+_OUTFILE="kkmcee.hepmc"
+_TAUDEC=0
+_JAK1=0
+_JAK2=0
+_TAUOPT=""
+# Read arguments
+while [[ $# -gt 0 ]]
+do
+    arg="$1"
+    case $arg in
+        -c | --config)
+            _CONFFILE="$2"
+            shift # past argument
+            shift # past value
+        ;;
+        -e | --ecms)
+            _ECMS="$2"
+            shift
+            shift
+        ;;
+        -f | --flavour)
+           _FLAVOUR="$2"
+           shift
+           shift
+        ;;
+        -n | --nevts)
+           _NEVTS="$2"
+           shift
+           shift
+        ;;
+        -b | --bessig)
+            _BESONE="$2"
+	    _DOBES="yes"
+            shift
+            shift
+        ;;
+        -g | --bessig2)
+            _BESTWO="$2"
+	    _HAVEBESTWO="yes"
+            shift
+            shift
+        ;;
+        -r | --besrho)
+            _BESRHO="$2"
+            shift
+            shift
+        ;;
+        -s | --initialseed)
+           _INITSEED="$2"
+           shift
+           shift
+        ;;
+        -o | --outfile)
+           _OUTFILE="$2"
+           shift
+           shift
+        ;;
+        -t | --taudec)
+            _TAUDEC="$2"
+            shift
+            shift
+        ;;
+        --tauopt)
+           _TAUOPT="$2"
+           shift
+           shift
+        ;;
+        -d | --debug)
+           _DBGLVL="$2"
+           shift
+           shift
+        ;;
+        * | -h | --help)
+            help
+            exit 1
+    esac
+done
+
+# Case with symmetric beam spread 
+if test "x${_DOBES}" = "xyes" && test "x${_HAVEBESTWO}" = "xno" ; then
+   _BESTWO=${_BESONE}
+fi
+echo -e "********************************************************************************"
+echo -e "*  BES enabled with: \tSigma1= $_BESONE \tSigma2: $_BESTWO \tRho: $_BESRHO"
+echo -e "********************************************************************************"
+
+KKMCEE_DIR=$(dirname $(dirname $0))
+KKMCEE_EXE=${KKMCEE_DIR}/bin/KKMCee.exe
+TABMAIN_EXE=${KKMCEE_DIR}/bin/TabMainC
+TABMAIN_OUTPUT=./TabMainC.output
+KKMCEE_ETC=${KKMCEE_DIR}/etc/KKMCee
+
+# Run existing config file
+if test "x$_CONFFILE" = "x"; then
+# We create a config file based on the input switches: this is the initial common part
+cat > ./pro.input <<EOF
+********************** THIS IS INPUT FILE FOR DEMO PROGRAM *********************
+*  This is input data for CEEX matrix element
+BeginX
+********************************************************************************
+*               ACTUAL DATA FOR THIS PARTICULAR RUN
+*-------------------------------------------------------------------------------
+*indx_____data______ccccccccc0cccc__________General_____ccc0ccccccccc0ccccccccc0
+    0           1000      1k   NEVT = number of events, OBSOLETE!!!
+* Center-of-mass energy [GeV]
+    1        ${_ECMS}e0      CMSene =xpar( 1) Average Center of mass energy [GeV]
+*     PrintOut from generator
+    5           ${_DBGLVL}  LevPri =xpar( 5)  PrintOut Level 0,1,2
+    6              1        Ie1Pri =xpar( 6)  PrintOut Start point
+    7              5        Ie2Pri =xpar( 7)  PrintOut End   point
+EOF
+   if test "x${_DOBES}" = "xyes"; then
+cat >> ./pro.input <<EOF
+   25              4      KeyBES BES, =0 none, =2 beamsstrahlung =3,4 for gaussian BES
+*indx_____data______ccccccccc0ccccccccc0ccccccccc0ccccccccc0ccccccccc0ccccccccc0
+   80       0.0e0         ParBES(0) E1=0 will be replaced by CMSene/2
+   81       0.0e0         ParBES(1) E2=0 will be replaced by CMSene/2
+   82       ${_BESONE}e0         ParBES(2) sigma1/E1
+   83       ${_BESTWO}e0         ParBES(3) sigma2/E2
+   84       ${_BESRHO}e0         ParBES(4) rho correlation parameter [dimensionles]
+EOF
+   else
+cat >> ./pro.input <<EOF
+   25              0      KeyBES BES, =0 none, =2 beamsstrahlung =3,4 for gaussian BES
+EOF
+   fi
+cat >> ./pro.input <<EOF
+********************************************************************************
+**     Define process
+**     Beam flavour code
+  400             11      KFini = xpar(400) dont change it                |<<<<|
+EOF
+   if test "x$_FLAVOUR" = "xMu"; then
+cat >> ./pro.input <<EOF
+  413              1      KFfin, muon
+EOF
+   elif test "x$_FLAVOUR" = "xTau"; then
+      # Decays
+      if test ! "x${_TAUOPT}" = "x" && test -f ${_TAUOPT}; then
+cat ${_TAUOPT} >> ./pro.input
+      else
+         if test ! "x${_TAUDEC}" = "x0" ; then
+            _JAK2=$((${_TAUDEC}/1000))
+            _JAK1=$(((${_TAUDEC}-${_JAK2})/1000))
+         fi
+      fi
+cat >> ./pro.input <<EOF
+  415              1      KFfin, tau
+*********************  Tau decays ***********************************************
+ 2001              ${_JAK1}     Jak1,  all inclusive
+ 2002              ${_JAK2}      Jak2,  all inclusive
+*****   PhotosC adding photons in tau decays in HEPMC3 event record
+   35              1   KeyPhts =0 for off; =1 in non-leptonic; =2 in all decays
+********************************************************************************
+EOF
+   elif test "x$_FLAVOUR" = "xUDS"; then
+cat >> ./pro.input <<EOF
+  401              1      KFfin, d
+  402              1      KFfin, u
+  403              1      KFfin, s
+EOF
+   elif test "x$_FLAVOUR" = "xC"; then
+cat >> ./pro.input <<EOF
+  404              1      KFfin, c
+EOF
+   elif test "x$_FLAVOUR" = "xB"; then
+cat >> ./pro.input <<EOF
+  405              1      KFfin, b
+EOF
+   elif test "x$_FLAVOUR" = "xHadrons"; then
+cat >> ./pro.input <<EOF
+  401              1      KFfin, d
+  402              1      KFfin, u
+  403              1      KFfin, s
+  404              1      KFfin, c
+  405              1      KFfin, b
+EOF
+   else
+     echo "Running mode not yet supported"
+     rm -fr ./pro.input  
+     exit 1
+   fi
+
+# Initial seed switch
+_SSEED=""
+_FSEED=`date +%N`
+if test ! "x$_INITSEED" = "x"; then
+   _FSEED=$((${_SSEED}+1))
+   _SSEED="-s $_INITSEED"
+fi
+cat >> ./pro.input <<EOF
+********************************************************************************
+* FOAM GENERATION PARAMETERS
+ 3020       ${_FSEED}     Ranmar initial random number seed (KKMC and FOAM)
+EOF
+
+# Input file closing
+cat >> ./pro.input <<EOF
+********************************************************************************
+EndX
+EOF
+else
+if test ! -f $_CONFFILE; then
+    echo "Configuration file $_CONFFILE couldn't be found"
+    exit 1
+fi
+ln -sf $_CONFFILE ./pro.input
+fi
+
+ln -sf ${KKMCEE_ETC}/KKMCee_defaults
+# Make EW tables
+time ${TABMAIN_EXE} > ${TABMAIN_OUTPUT}
+
+# Run
+time ${KKMCEE_EXE} ${_SSEED} -o ${_OUTFILE} -n ${_NEVTS}
+if test ! "x$?" = "x0" ; then 
+    exit 1;
+else
+    echo "event generation ok" ;
+    # Cleanup
+    rm -f KKMCee_defaults
+    # Run files under KKMCee-datetime
+    _rundir="KKMCee-`date +%d%b%Y-%H%m%S`"
+    mkdir ${_rundir}
+    _runfiles="DIZET-table1 TabMain77.output TabMainC.output mcgen.root
+               pro.input pro.output pro77.output"
+    for f in ${_runfiles}; do
+       mv $f ${_rundir}
+    done
+fi
+
diff --git a/generators/patches/babayaga-fcc1.0.0.patch b/generators/patches/babayaga-fcc1.0.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..dc367c2cca8d1300a30687001c449233b97ac818
--- /dev/null
+++ b/generators/patches/babayaga-fcc1.0.0.patch
@@ -0,0 +1,179 @@
+--- main.f	2021-04-29 13:03:58.000000000 +0200
++++ main.f	2023-09-04 09:01:45.128230317 +0200
+@@ -840,5 +840,4 @@
+       call finalizestorageLHA(istore)
+       call exitrecola
+       print*,'Generation finished'
+-      stop
+       end
+--- babayaga-fcc/main.f	2021-04-29 13:03:58.000000000 +0200
++++ main.f	2024-05-06 18:47:18.296583800 +0200
+@@ -93,6 +93,8 @@
+       character*20 hstnm
+       common/hostandpid/hstnm,idproc
+ 
++      common/crosssections/xsec,var
++      
+       idproc = getpid()
+       call hostnm(hstnm)
+       
+@@ -484,6 +486,22 @@
+             endif
+          endif
+ 
++         if (isnan(sdif)) then
++            print*,'NAN found (pos 2) setting sdif to 0!!!!'
++            print*,'pid,hostnm,ord,k,ng,emtx,sv,sdif,phsp,w'
++            print*,idproc,hstnm,ord,k,ng,emtx,sv,sdif,phsp,w
++            sdif = 0.d0
++            w = 0.d0
++            phsp = 0.d0
++            ie = 1
++            print*,'end ----!!!'
++            if (iverbose.gt.0) then
++               call printstatus(5,k,p1,p2,qph,xsec,var,varbefore,
++     .              sdif,sdifmax,fmax)
++            endif
++         endif
++
++         
+ !! unweightening for unweighted events...
+          if (k.gt.nsearch) then
+             istopsearch = 1
+@@ -517,24 +535,12 @@
+                endif
+             endif
+          endif
+-       
+-         if (isnan(sdif)) then
+-            print*,'NAN found (pos 2) setting sdif to 0!!!!'
+-            print*,'pid,hostnm,ord,k,ng,emtx,sv,sdif,phsp,w'
+-            print*,idproc,hstnm,ord,k,ng,emtx,sv,sdif,phsp,w
+-            sdif = 0.d0
+-            w = 0.d0
+-            phsp = 0.d0
+-            ie = 1
+-            print*,'end ----!!!'
+-            if (iverbose.gt.0) then
+-               call printstatus(5,k,p1,p2,qph,xsec,var,varbefore,
+-     .              sdif,sdifmax,fmax)
+-            endif
+-         endif
+ 
+          sum  = sum  + sdif
+          sum2 = sum2 + sdif**2
++         varbefore = var
++         xsec = sum/k
++         var  = sqrt(abs((sum2/k-xsec**2)/k))
+          
+          if (ng.eq.0) then
+             sumborn = sumborn + sdif/sv
+@@ -547,9 +553,6 @@
+          sump(ng)  = sump(ng)  + sdif
+          sum2p(ng) = sum2p(ng) + sdif**2
+ 
+-         varbefore = var
+-         xsec = sum/k
+-         var  = sqrt(abs((sum2/k-xsec**2)/k))
+ c         tollerate = 1.2d0
+          tollerate = 1.8d0
+          if (var.gt.tollerate*varbefore
+@@ -628,8 +631,8 @@
+             endif
+ !!            
+             xsec = sum/k
+-            var  = sqrt((abs(sum2/k-xsec**2))/k)            
+-
++            var  = sqrt((abs(sum2/k-xsec**2))/k)
++            
+             xsecborn = sumborn/k
+             varborn  = sqrt((abs(sum2born/k-xsecborn**2))/k)
+             
+--- storage.F	2021-04-29 13:03:58.000000000 +0200
++++ storage.F	2024-05-06 18:47:21.846583712 +0200
+@@ -9,7 +9,10 @@
+       implicit double precision (a-h,o-z)
+       character*(*) storfile
+       integer i,istmod
++      character*100 storagefile
++      common/storagef/storagefile
+       include 'LesHouches.h'
++      storagefile = storfile      
+       istorunit = 61
+       if (i.eq.0) return
+ 
+@@ -52,8 +55,12 @@
+ 
+       write(ist,111)idbmup(1),idbmup(2),ebmup(1),ebmup(2),
+      .     pdfgup(1),pdfgup(2),pdfsup(1),pdfsup(2),idwtup,nprup
+-      write(ist,222)xsecup(1),xerrup(1),xmaxup(1),lprup(1)
+-      
++
++
++*-- modified 27/4/2024
++c      write(ist,222)xsecup(1),xerrup(1),xmaxup(1),lprup(1)
++      write(ist,'(a)')'TOBECHANGED'
++*--
+       write(ist,'(a)')'</init>'
+ 
+  111  format(2(2x,I3),2(2x,G16.9),6(2x,I3))
+@@ -72,6 +79,13 @@
+       common/storedevents/nstored
+       data nstored /0/
+ 
++      common/crosssections/xsec,var
++      common/realinput/anpoints,sdifmax
++
++      xsecup(1) = xsec
++      xerrup(1) = var
++      xmaxup(1) = sdifmax     
++      
+       nstored = nstored + 1
+ 
+ ccc counting extra photons
+@@ -160,9 +174,6 @@
+ 
+       return
+       end
+-*******************************************
+-
+-      
+ *********************************************************
+       subroutine eventstorage_unweighted(p3,p4,qph)
+       implicit double precision (a-h,o-z)
+@@ -244,13 +255,21 @@
+       end
+ *******************************************
+       subroutine finalizestorageLHA(i)
+-      integer istorunit,i
+-      common/storageunit/istorunit
++      integer i,k
++      character*200 stringa
++      character*100 storagefile
++      common/storagef/storagefile
++      include 'LesHouches.h'
+       if (i.eq.0) return
+       write(istorunit,'(a)')'</LesHouchesEvents>'
+       close(istorunit)
++*-- modified 27/4/2024
++      write(stringa,222)xsecup(1),xerrup(1),xmaxup(1),lprup(1)
++      call EXECUTE_COMMAND_LINE("sed -i '0,/TOBECHANGED/ s/TOBECHANGED/"
++     .//trim(stringa)//"/' "//trim(storagefile))
++ 222  format(3(2x,G16.9),1(2x,I3))
++*__
+       end
+-
+ *******************************************
+       subroutine finalizestorage(i)
+       integer istorunit,i
+--- Makefile	2024-07-29 22:07:51.387257678 +0200
++++ Makefile	2024-07-29 22:07:44.560590995 +0200
+@@ -146,7 +146,7 @@
+ 	@echo " "
+ 	@echo "Building RECOLA"
+ 	@echo " "
+-	cd $(RCLDIR)/build/ && CMAKE_INSTALL_PREFIX=.. cmake ../ -Dstatic=On && make && make install
++	cd $(RCLDIR)/build/ && CMAKE_INSTALL_PREFIX=../../install cmake ../ -Dstatic=On && make && make install
+ 
+ # babayaga library
+ libbabayaga.a: $(OBJECTS)
diff --git a/generators/patches/bhlumi-4.04linuxLHE.patch b/generators/patches/bhlumi-4.04linuxLHE.patch
new file mode 100644
index 0000000000000000000000000000000000000000..c95fde5cc8645def11fb44d18df4406f3e80d7bd
--- /dev/null
+++ b/generators/patches/bhlumi-4.04linuxLHE.patch
@@ -0,0 +1,103 @@
+--- ./4.x-cpc/makefile.orig	2021-08-03 17:20:37.672824726 +0200
++++ ./4.x-cpc/makefile	2021-08-03 16:40:45.000000000 +0200
+@@ -44,8 +44,8 @@
+ #
+ #	For more see figs/makefile
+ ###########################################################################
+-FFLAGS  =  -fno-automatic -ffixed-line-length-132 -fbackslash -C -O
+-LDFLAGS = 
++FFLAGS  = -g -fno-automatic -ffixed-line-length-132 -fbackslash -C -O2
++LDFLAGS = -g -O2
+ F77 = gfortran
+ LD  = $(F77)
+ #-----------------------------------------------------------------------
+@@ -138,6 +138,8 @@
+ #-----------------------------------------------------------------------
+ #                   MC Production
+ #-----------------------------------------------------------------------
++prod1-run:  $(COMMAND2)
++	(cd prod1;  make run)
+ prod1-start:  $(COMMAND2)
+ 	(cd prod1;  make start)
+ prod1-stop:
+@@ -250,4 +252,4 @@
+ #### tags: v404a (12sept), v404b (13sept) v404c (16sept) v404d (17sept)
+ #### tags: v404e (18sept), v404f (20sept) v404g (20sept) v404h (20sept)
+ #### tags: v404i (20sept), v404j (21sept) v404k (21sept) v404l (23sept) 
+-#### tags: v404m (25sept) 
+\ No newline at end of file
++#### tags: v404m (25sept) 
+--- ./4.x-cpc/figs/makefile.orig	2021-08-03 17:20:44.082903170 +0200
++++ ./4.x-cpc/figs/makefile	2021-08-03 17:17:43.000000000 +0200
+@@ -38,8 +38,8 @@
+ # FFLAGS  =  -C -qextchk -qinitauto=FF -bloadmap:lmap -qflttrap=overflow:underflow:zerodivide:invalid:enable
+ # LDFLAGS =  -C -qextchk -qinitauto=FF -bloadmap:lmap -qflttrap=overflow:underflow:zerodivide:invalid:enable
+ ########### actual flags
+-FFLAGS  =  -fno-automatic -ffixed-line-length-132 -fbackslash -C -O
+-LDFLAGS = -O
++FFLAGS  = -g -fno-automatic -ffixed-line-length-132 -fbackslash -C -O2
++LDFLAGS = -g -O2
+ #----------------------------------------------------------------------
+ F77 = gfortran
+ LD  = $(F77)
+--- ./400/makefile.orig	2021-08-03 17:20:51.423993008 +0200
++++ ./400/makefile	2021-08-03 16:30:26.000000000 +0200
+@@ -10,7 +10,7 @@
+ LD = $(F77)
+ AR = ar
+ RANLIB = ranlib
+-FFLAGS  =  -fno-automatic -ffixed-line-length-132 -fbackslash -C -O
++FFLAGS  =  -g -fno-automatic -ffixed-line-length-132 -fbackslash -C -O2
+ ########### collection of ibm  flags ###########
+ #FFLAGS  =  -O   -C -qextchk  -bloadmap:lmap
+ #FFLAGS  =  -C -qextchk -qinitauto=FF -bloadmap:lmap -qflttrap=overflow:underflow:zerodivide:invalid:enable
+--- ./lib/makefile.orig	2021-08-03 17:20:55.462042424 +0200
++++ ./lib/makefile	2021-08-03 16:30:17.000000000 +0200
+@@ -14,7 +14,7 @@
+ #FFLAGS  = -C -qextchk -qinitauto=FF  -bloadmap:lmap -qflttrap=overflow:underflow:zerodivide:invalid:enable
+ ###############################################
+ # actual flags
+-FFLAGS  =  -fno-automatic -ffixed-line-length-132 -fbackslash -C -O
++FFLAGS  =  -g -fno-automatic -ffixed-line-length-132 -fbackslash -C -O2
+ ##############################################################################
+ .f.o:
+ 	$(F77) $(FFLAGS) -c $<
+--- 400/bhlum4.f.orig	2021-08-03 17:39:59.142038917 +0200
++++ 400/bhlum4.f	2021-08-03 17:37:41.995360067 +0200
+@@ -1345,7 +1345,7 @@
+       SAVE   / MOMSET /
+       REAL*8 SUM(4)
+ 
+-      DO J=1,5
++      DO J=1,4
+          SUM(J)=0.
+       ENDDO
+       
+@@ -1353,7 +1353,7 @@
+ 
+       
+       DO I=1,NPHOT
+-         DO J=1,5
++         DO J=1,4
+             SUM(J)= SUM(J)+ PHOT(I,J)
+          ENDDO
+       ENDDO
+--- 4.x-cpc/makefile.orig	2021-08-03 16:40:45.000000000 +0200
++++ 4.x-cpc/makefile	2021-08-03 18:45:40.233350839 +0200
+@@ -78,6 +78,7 @@
+ demo: $(COMMAND)
+ 	(cd demo;   time ../demo.exe )
+ 	(cd demo;   latex demo.tex;  xdvi demo; dvips demo.dvi -o )
++lhemain: $(COMMAND2)
+ demo-diff-rs:
+ 	(cd demo; diff demo.output.100k.keypia.eq.2.keywgt.eq.0.rs demo.output)
+ 	(cd demo; diff demo.tex.100k.keypia.eq.2.keywgt.eq.0.rs    demo.tex)
+@@ -138,8 +139,6 @@
+ #-----------------------------------------------------------------------
+ #                   MC Production
+ #-----------------------------------------------------------------------
+-prod1-run:  $(COMMAND2)
+-	(cd prod1;  make run)
+ prod1-start:  $(COMMAND2)
+ 	(cd prod1;  make start)
+ prod1-stop:
diff --git a/key4hep/CMakeLists.txt b/key4hep/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ffa74837065f3963b15d00350beeb3ff6e7f6e70
--- /dev/null
+++ b/key4hep/CMakeLists.txt
@@ -0,0 +1,704 @@
+LCGPackage_Add(
+    freeglut
+    URL ${GenURL}/freeglut-${freeglut_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+)
+
+LCGPackage_Add(
+    simsipm
+    URL ${GenURL}/simsipm-${simsipm_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+)
+
+LCGPackage_Add(
+    opendatadetector
+    URL ${GenURL}/opendatadetector-${opendatadetector_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS DD4hep ROOT Boost
+)
+
+# PandoraPFA packages
+
+LCGPackage_Add(
+    pandorapfa
+    URL ${GenURL}/pandorapfa-${pandorapfa_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    BUILD_COMMAND <VOID>
+    INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/cmakemodules <INSTALL_DIR>/cmakemodules
+)
+
+LCGPackage_Add(
+    pandorasdk
+    URL ${GenURL}/pandorasdk-${pandorasdk_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DCMAKE_MODULE_PATH=${pandorapfa_home}/cmakemodules
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error"
+    DEPENDS pandorapfa
+)
+
+LCGPackage_Add(
+    pandoramonitoring
+    URL ${GenURL}/pandoramonitoring-${pandoramonitoring_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DCMAKE_MODULE_PATH=${pandorapfa_home}/cmakemodules
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error"
+    DEPENDS ROOT pandorasdk
+)
+
+LCGPackage_Add(
+    lccontent
+    URL ${GenURL}/lccontent-${lccontent_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPANDORA_MONITORING=ON
+               -DCMAKE_MODULE_PATH=${pandorapfa_home}/cmakemodules
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error"
+    DEPENDS pandorapfa pandorasdk pandoramonitoring
+)
+
+LCGPackage_Add(
+    larcontent
+    URL ${GenURL}/larcontent-${larcontent_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPANDORA_MONITORING=ON
+               -DCMAKE_MODULE_PATH=${pandorapfa_home}/cmakemodules
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -Wno-error"
+    DEPENDS pandorapfa pandorasdk pandoramonitoring eigen
+)
+
+# iLCSoft packages
+
+LCGPackage_Add(
+    ilcutil
+    URL ${GenURL}/ilcutil-${ilcutil_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+)
+
+LCGPackage_Add(
+    generalbrokenlines
+    URL ${GenURL}/generalbrokenlines-${generalbrokenlines_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     eigen ROOT
+)
+
+LCGPackage_Add(
+    aidatt
+    URL ${GenURL}/aidatt-${aidatt_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil LCIO eigen generalbrokenlines DD4hep
+)
+
+LCGPackage_Add(
+    conddbmysql
+    URL ${GenURL}/conddbmysql-${conddbmysql_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+    DEPENDS mysql ilcutil
+)
+
+LCGPackage_Add(
+    gear
+    URL ${GenURL}/gear-${gear_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DINSTALL_DOC=OFF
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil clhep ROOT
+)
+
+LCGPackage_Add(
+    lccd
+    URL ${GenURL}/lccd-${lccd_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     LCIO ilcutil conddbmysql
+)
+
+LCGPackage_Add(
+    raida
+    URL ${GenURL}/raida-${raida_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil ROOT
+)
+
+LCGPackage_Add(
+    marlin
+    URL ${GenURL}/marlin-${marlin_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     LCIO ilcutil gear lccd raida
+)
+
+LCGPackage_Add(
+    ced
+    URL ${GenURL}/ced-${ced_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=ON
+    DEPENDS     ilcutil
+    IF NOT ${LCG_OS} MATCHES mac THEN freeglut ENDIF # Taken from the system in mac
+)
+
+LCGPackage_Add(
+    kaltest
+    URL ${GenURL}/kaltest-${kaltest_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil ROOT
+)
+
+LCGPackage_Add(
+    kaldet
+    URL ${GenURL}/kaldet-${kaldet_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin kaltest ROOT
+)
+
+LCGPackage_Add(
+    ddkaltest
+    URL ${GenURL}/ddkaltest-${ddkaltest_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    INSTALL_COMMAND make install
+            COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/include <INSTALL_DIR>/include
+    DEPENDS     ilcutil ROOT DD4hep LCIO GSL kaltest aidatt
+)
+
+LCGPackage_Add(
+    marlinutil
+    URL ${GenURL}/marlinutil-${marlinutil_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin clhep ced DD4hep ROOT
+)
+
+LCGPackage_Add(
+    pandoraanalysis
+    URL ${GenURL}/pandoraanalysis-${pandoraanalysis_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS ilcutil marlin marlinutil ROOT DD4hep
+)
+
+LCGPackage_Add(
+    overlay
+    URL ${GenURL}/overlay-${overlay_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil clhep raida
+)
+
+LCGPackage_Add(
+    garlic
+    URL ${GenURL}/garlic-${garlic_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil ROOT
+)
+
+LCGPackage_Add(
+    cedviewer
+    URL ${GenURL}/cedviewer-${cedviewer_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil ced marlin marlinutil DD4hep ROOT
+)
+
+LCGPackage_Add(
+    fcalclusterer
+    URL ${GenURL}/fcalclusterer-${fcalclusterer_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil LCIO gear marlin marlinutil DD4hep ROOT
+)
+
+LCGPackage_Add(
+    marlintrk
+    URL ${GenURL}/marlintrk-${marlintrk_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     LCIO ilcutil marlin ROOT kaltest kaldet GSL clhep generalbrokenlines aidatt ddkaltest
+)
+
+LCGPackage_Add(
+    ddmarlinpandora
+    URL ${GenURL}/ddmarlinpandora-${ddmarlinpandora_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPANDORA_MONITORING=ON
+    DEPENDS     ilcutil marlin marlinutil marlintrk pandorasdk pandorapfa pandoramonitoring lccontent larcontent DD4hep
+)
+
+LCGPackage_Add(
+    ildperformance
+    URL ${GenURL}/ildperformance-${ildperformance_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil marlintrk ROOT GSL clhep generalbrokenlines aidatt DD4hep
+)
+
+LCGPackage_Add(
+    clupatra
+    URL ${GenURL}/clupatra-${clupatra_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil GSL DD4hep ROOT marlintrk kaltest
+)
+
+LCGPackage_Add(
+    conformaltracking
+    URL ${GenURL}/conformaltracking-${conformaltracking_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil ROOT marlintrk Boost
+)
+
+LCGPackage_Add(
+    kitrack
+    URL ${GenURL}/kitrack-${kitrack_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin ROOT
+)
+
+LCGPackage_Add(
+    kitrackmarlin
+    URL ${GenURL}/kitrackmarlin-${kitrackmarlin_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     kitrack marlin marlinutil marlintrk GSL DD4hep clhep
+)
+
+LCGPackage_Add(
+    marlintrkprocessors
+    URL ${GenURL}/marlintrkprocessors-${marlintrkprocessors_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     marlintrk marlin marlinutil DD4hep GSL raida ddkaltest kitrack kitrackmarlin
+)
+
+LCGPackage_Add(
+    forwardtracking
+    URL ${GenURL}/forwardtracking-${forwardtracking_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil marlintrk kitrack kitrackmarlin clhep GSL ROOT raida
+)
+
+LCGPackage_Add(
+    lcfivertex
+    URL ${GenURL}/lcfivertex-${lcfivertex_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     LCIO ilcutil Boost marlin marlinutil raida
+)
+
+LCGPackage_Add(
+    lcfiplus
+    URL ${GenURL}/lcfiplus-${lcfiplus_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DINSTALL_DOC=OFF
+    ENVIRONMENT ROOT_INCLUDE_PATH=${LCIO_home}/include
+    DEPENDS     LCIO marlin marlinutil lcfivertex ROOT
+)
+
+LCGPackage_Add(
+    lctuple
+    URL ${GenURL}/lctuple-${lctuple_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin ROOT
+)
+
+LCGPackage_Add(
+    marlindd4hep
+    URL ${GenURL}/marlindd4hep-${marlindd4hep_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin DD4hep
+)
+
+LCGPackage_Add(
+    marlinfastjet
+    URL ${GenURL}/marlinfastjet-${marlinfastjet_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               "-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} -I${fjcontrib_home}/include"
+    DEPENDS     ilcutil marlin marlinutil fastjet fjcontrib ROOT
+)
+
+LCGPackage_Add(
+    marlinkinfit
+    URL ${GenURL}/marlinkinfit-${marlinkinfit_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil clhep GSL ROOT raida
+)
+
+LCGPackage_Add(
+    marlinkinfitprocessors
+    URL ${GenURL}/marlinkinfitprocessors-${marlinkinfitprocessors_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil marlinkinfit clhep GSL ROOT raida
+)
+
+LCGPackage_Add(
+    marlinReco
+    URL ${GenURL}/marlinReco-${marlinReco_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil marlintrk marlinkinfit ROOT Boost DD4hep raida GSL
+)
+
+LCGPackage_Add(
+    physsim
+    URL ${GenURL}/physsim-${physsim_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil ROOT
+)
+
+LCGPackage_Add(
+    marlinmlflavortagging
+    URL ${GenURL}/marlinmlflavortagging-${marlinmlflavortagging_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    ENVIRONMENT Torch_DIR=${torch_home}/lib/python${Python_config_version_twodigit}/site-packages/torch
+    DEPENDS    LCIO ilcutil lcfivertex marlin ROOT torch AIDA
+)
+
+LCGPackage_Add(
+    ddfastshowerml
+    URL ${GenURL}/ddfastshowerml-${ddfastshowerml_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DCMAKE_PREFIX_PATH=${openmpi_home}/lib:ENV{CMAKE_PREFIX_PATH}
+    ENVIRONMENT "MPICXX=${openmpi_home}/bin/mpic++"
+                "MPICC=${openmpi_home}/bin/mpicc"
+                "HDF5_DIR=${hdf5_home}"
+                "MPI_HOME=${openmpi_home}"
+                "MPI_LIB=${openmpi_home}/lib"
+                "I_MPI_ROOT=${openmpi_home}"
+    DEPENDS    DD4hep torch onnxruntime hdf5 openmpi
+)
+
+
+# Key4hep packages
+
+LCGPackage_Add(
+    k4fwcore
+    URL ${GenURL}/k4fwcore-${k4fwcore_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ROOT EDM4hep Gaudi
+)
+
+LCGPackage_Add(
+    k4_project_template
+    URL ${GenURL}/k4_project_template-${k4_project_template_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     k4fwcore
+)
+
+LCGPackage_Add(
+    k4edm4hep2lcioconv
+    URL ${GenURL}/k4edm4hep2lcioconv-${k4edm4hep2lcioconv_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     EDM4hep LCIO
+)
+
+LCGPackage_Add(
+    k4marlinwrapper
+    URL ${GenURL}/k4marlinwrapper-${k4marlinwrapper_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     k4edm4hep2lcioconv marlin k4fwcore
+)
+
+LCGPackage_Add(
+    k4geo
+    URL ${GenURL}/k4geo-${k4geo_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     DD4hep EDM4hep LCIO
+)
+
+LCGPackage_Add(
+    clicperformance
+    URL ${GenURL}/clicperformance-${clicperformance_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     ilcutil marlin marlinutil marlintrk GSL ROOT DD4hep raida k4geo
+)
+
+LCGPackage_Add(
+    k4clue
+    URL ${GenURL}/k4clue-${k4clue_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     DD4hep k4fwcore
+)
+
+LCGPackage_Add(
+    k4simgeant4
+    URL ${GenURL}/k4simgeant4-${k4simgeant4_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPython_ROOT_DIR=${Python_home}
+    DEPENDS     k4fwcore DD4hep Geant4
+)
+
+LCGPackage_Add(
+    k4reco
+    URL ${GenURL}/k4reco-${k4reco_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     k4fwcore DD4hep k4simgeant4 k4geo
+)
+
+LCGPackage_Add(
+    k4simdelphes
+    URL ${GenURL}/k4simdelphes-${k4simdelphes_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPYTHIA8_ROOT_DIR=${pythia8_home}
+    DEPENDS     k4fwcore delphes pythia8 hepmc3 evtgen
+)
+
+LCGPackage_Add(
+    cldconfig
+    URL ${GenURL}/cldconfig-${cldconfig_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     k4fwcore delphes pythia8 hepmc3 evtgen
+)
+
+LCGPackage_Add(
+    k4rectracker
+    URL ${GenURL}/k4rectracker-${k4rectracker_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     k4fwcore DD4hep ROOT marlinutil
+)
+
+LCGPackage_Add(
+    k4generatorsconfig
+    URL ${GenURL}/k4generatorsconfig-${k4generatorsconfig_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     podio EDM4hep hepmc3 HepPDT pythia8
+)
+
+# HEP-FCC packages
+
+LCGPackage_Add(
+    dual_readout
+    URL ${GenURL}/dual_readout-${dual_readout_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    if (${LCG_OS} MATCHES mac) # needed for FindDynamicLibrary from ROOT
+    ENVIRONMENT LD_LIBRARY_PATH=${DD4hep_home}/lib:$ENV{LD_LIBRARY_PATH}
+    endif()
+    DEPENDS     podio EDM4hep k4fwcore DD4hep fastjet ROOT pythia8 simsipm
+)
+
+
+LCGPackage_Add(
+    fccanalyses
+    URL ${GenURL}/fccanalyses-${fccanalyses_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DWITH_DD4HEP=ON
+               IF NOT ${LCG_OS} MATCHES mac THEN -DWITH_ONNX=ON ELSE -DWITH_ONNX=OFF ENDIF
+               -DBUILD_TESTING=OFF
+               -Donnxruntime_DIR=${onnxruntime_home}
+    ENVIRONMENT DELPHES_DIR=${delphes_home}
+                CPLUS_INCLUDE_PATH=${vdt_home}/include:$ENV{CPLUS_INCLUDE_PATH}
+                ROOT_INCLUDE_PATH=${podio_home}/include:${EDM4hep_home}/include:$ENV{ROOT_INCLUDE_PATH}
+                Python_ROOT_DIR=${Python_home}
+    DEPENDS     EDM4hep k4fwcore fastjet eigen DD4hep delphes vdt
+    DEPENDS_OPT onnxruntime
+)
+
+LCGPackage_Add(
+    fcc_config
+    URL ${GenURL}/fcc_config-${fcc_config_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+)
+
+LCGPackage_Add(
+    fccdetectors
+    URL ${GenURL}/fccdetectors-${fccdetectors_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS DD4hep k4geo ROOT
+)
+
+LCGPackage_Add(
+    fccsw
+    URL ${GenURL}/fccsw-${fccsw_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     DD4hep k4geo ROOT
+)
+
+LCGPackage_Add(
+    k4gen
+    URL ${GenURL}/k4gen-${k4gen_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+               -DPython_ROOT_DIR=${Python_home}
+    DEPENDS     podio EDM4hep k4fwcore fastjet HepPDT hepmc3 evtgen pythia8 ROOT
+)
+
+LCGPackage_Add(
+    k4reccalorimeter
+    URL ${GenURL}/k4reccalorimeter-${k4reccalorimeter_native_version}.tar.gz
+    CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
+               -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
+               -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
+               -DBUILD_TESTING=OFF
+    DEPENDS     podio EDM4hep k4fwcore DD4hep k4geo marlinutil fastjet k4simgeant4 ROOT onnxruntime
+)
diff --git a/pyexternals/CMakeLists.txt b/pyexternals/CMakeLists.txt
index c0033185d4957835465b8fe5105e1a3299b01ef9..0167ebeebe121c0ebb02510133401fe58ee0aaa4 100644
--- a/pyexternals/CMakeLists.txt
+++ b/pyexternals/CMakeLists.txt
@@ -10560,3 +10560,42 @@ LCGPackage_Add(
   BUILD_IN_SOURCE 1
   DEPENDS Python pip setuptools wheel numpy matplotlib opencv_python pillow PyYAML requests scipy torch torchvision tqdm psutil pycpuinfo pandas seaborn ultralytics_thop lap
 )
+
+#---pytransport--------------------------------------------------------------------
+LCGPackage_Add(
+  pytransport
+  URL ${GenURL}/pytransport-<VERSION>.tar.gz
+  CONFIGURE_COMMAND <VOID>
+  BUILD_COMMAND <VOID>
+  INSTALL_COMMAND ${MakeSitePackagesDir}
+          COMMAND ${PYTHON} setup.py install ${PySetupOptions}
+          COMMAND ${CMAKE_SOURCE_DIR}/pyexternals/Python_postinstall.sh <INSTALL_DIR>
+  BUILD_IN_SOURCE 1
+  DEPENDS Python setuptools numpy matplotlib scipy importlib_metadata
+)
+
+#---pymadx--------------------------------------------------------------------
+LCGPackage_Add(
+  pymadx
+  URL ${GenURL}/pymadx-<VERSION>.tar.gz
+  CONFIGURE_COMMAND <VOID>
+  BUILD_COMMAND <VOID>
+  INSTALL_COMMAND ${MakeSitePackagesDir}
+          COMMAND ${PYTHON} setup.py install ${PySetupOptions}
+          COMMAND ${CMAKE_SOURCE_DIR}/pyexternals/Python_postinstall.sh <INSTALL_DIR>
+  BUILD_IN_SOURCE 1
+  DEPENDS Python setuptools numpy matplotlib importlib_metadata tabulate
+)
+
+#---pydbsim--------------------------------------------------------------------
+LCGPackage_Add(
+  pybdsim
+  URL ${GenURL}/pybdsim-<VERSION>.tar.gz
+  CONFIGURE_COMMAND <VOID>
+  BUILD_COMMAND <VOID>
+  INSTALL_COMMAND ${MakeSitePackagesDir}
+          COMMAND ${PYTHON} setup.py install ${PySetupOptions}
+          COMMAND ${CMAKE_SOURCE_DIR}/pyexternals/Python_postinstall.sh <INSTALL_DIR>
+  BUILD_IN_SOURCE 1
+  DEPENDS Python setuptools numpy scipy Jinja2 pymadx pytransport
+)