Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
047bb64
CMakeLists.txt
kochebina Jan 8, 2026
5d73764
Gate.cc and readme.md
kochebina Jan 8, 2026
6c158ac
itk-mhd Cmake version > 3.5
kochebina Jan 8, 2026
5967df4
Bug correction in gjs
kochebina Jan 9, 2026
5d2e161
Mem leaks corrections in some Digitizer Modules
kochebina Jan 9, 2026
b2979e0
switch to G4 11.4.0
kochebina Jan 26, 2026
3883d22
qt6
kochebina Jan 26, 2026
54353a0
remove vdt from root
kochebina Jan 26, 2026
8603b87
remove vdt and qt6 from root
kochebina Jan 26, 2026
ae05d48
vdt debug
kochebina Jan 26, 2026
e27fa00
vdt debug2
kochebina Jan 26, 2026
685c35b
root for macos arm64
kochebina Jan 26, 2026
c7d258e
root for macos arm64 2
kochebina Jan 26, 2026
bc77ea9
root for macos arm64 3
kochebina Jan 26, 2026
80fdf1f
root for macos arm64 4
kochebina Jan 26, 2026
893c5d6
root for macos arm64 5
kochebina Jan 26, 2026
2ef893e
root for macos arm64 6
kochebina Jan 26, 2026
85555df
root for macos arm64 7
kochebina Jan 26, 2026
fa455f3
switch off vdt
kochebina Jan 26, 2026
84e47bb
switch off tmva & roofit
kochebina Jan 26, 2026
561fb1a
bin
kochebina Jan 28, 2026
7a9267f
clean retry
kochebina Jan 30, 2026
e06e42a
root 32 04
kochebina Jan 30, 2026
a2ad203
verbose
kochebina Jan 30, 2026
03b964c
remove osx archit
kochebina Jan 30, 2026
063185c
brew
kochebina Jan 30, 2026
d7ccd2b
Update main.yml
kochebina Jan 30, 2026
63ad621
LDFlags
kochebina Jan 30, 2026
90e8eaa
LLVM off
kochebina Jan 30, 2026
8d37025
cling off
kochebina Jan 30, 2026
41de79e
interpreter off
kochebina Jan 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 61 additions & 17 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ jobs:
options: torch

env:
ROOT_VERSION: 'v6-32-02'
ROOT_VERSION: 'v6-32-04'
ITK_VERSION: 'v5.4.2'
GEANT4_VERSION: 'v11.3.0'
GEANT4_VERSION: 'v11.4.0'
ROOT_DIR: $(HOME)/software/root
GEANT4_DIR: $(HOME)/software/geant4

Expand All @@ -41,8 +41,8 @@ jobs:
uses: actions/cache@v3
with:
path: ~/software
key: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-build1
restore-keys: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-build1
key: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-qt6-build0
restore-keys: ${{ matrix.os }}-geant4-${{ env.GEANT4_VERSION }}-root-${{ env.ROOT_VERSION }}-qt6-build0
- name: Install dependencies
run: |
if [ "${{ matrix.os }}" == "ubuntu-latest" ]; then
Expand All @@ -56,32 +56,51 @@ jobs:
libxpm-dev \
libxft-dev \
libxext-dev \
qtbase5-dev \
qt5-qmake \
qt6-base-dev \
qt6-base-dev-tools \
qt6-tools-dev \
qt6-tools-dev-tools \
git \
cmake \
libssl-dev \
python3.8-dev \
ccache \
libfftw3-dev
gcc -v
elif [ "${{ matrix.os }}" == "macos-latest" ]; then
elif [ "${{ matrix.os }}" == "macos-latest" ]; then
brew update || true
brew install python@3.12 || true
brew link --overwrite python@3.12

brew link --overwrite --force python@3.12
#brew update
brew cleanup
brew config
#brew cleanup
#brew config
#rm -rf /usr/local/bin/python3.11-config /usr/local/bin/2to3-3.11 /usr/local/bin/idle3.11 /usr/local/bin/pydoc3.11 /usr/local/bin/python3.11
#rm -rf /usr/local/bin/python3-config /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3
brew install --force --verbose --overwrite --debug qt5 \
brew install --force --verbose --overwrite --debug qt \
ccache \
tbb \
xrootd \
fftw
brew link qt5 --force && sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs && sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins
export PATH=/usr/local/opt/qt/bin:$PATH
export LDFLAGS="-L/usr/local/opt/qt/lib -L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/qt/include -I/usr/local/opt/llvm/include -fopenmp"
#brew link qt --force && sudo ln -s /usr/local/opt/qt/mkspecs /usr/local/mkspecs && sudo ln -s /usr/local/opt/qt/plugins /usr/local/plugins
brew cleanup
#export PATH=/usr/local/opt/qt/bin:$PATH
#export LDFLAGS="-L/usr/local/opt/qt/lib -L/usr/local/opt/llvm/lib"
#export CPPFLAGS="-I/usr/local/opt/qt/include -I/usr/local/opt/llvm/include -fopenmp"

export Qt6_DIR="$(brew --prefix qt)/lib/cmake/Qt6"
export CMAKE_PREFIX_PATH="$(brew --prefix qt):$CMAKE_PREFIX_PATH"
export Qt6_DIR="$(brew --prefix qt)/lib/cmake/Qt6"

QT_PREFIX="$(brew --prefix qt)"

LLVM_PREFIX="$(brew --prefix llvm || true)"
export LDFLAGS="-L$QT_PREFIX/lib ${LLVM_PREFIX:+-L$LLVM_PREFIX/lib}"
export CPPFLAGS="-I$QT_PREFIX/include ${LLVM_PREFIX:+-I$LLVM_PREFIX/include}"

cmake --version
which cmake

fi
cd $HOME/
mkdir -p software option_dependencies
Expand All @@ -92,16 +111,39 @@ jobs:
cd $HOME/software
mkdir root
cd root
mkdir src bin install
mkdir -p src bin install
git clone --branch $ROOT_VERSION https://github.com/root-project/root.git --depth 1 src
rm -rf bin
mkdir -p bin
cd bin
cmake ../src -DCMAKE_CXX_STANDARD=17 \
-Dpython=OFF \
-Dpyroot=OFF \
-Dclad=OFF \
-Dxrootd=OFF \
-Dinterpreter=OFF \
-Dvdt=OFF \
-Dbuiltin_vdt=OFF \
-Dqt6=OFF \
-Dqt5=OFF \
-Dbuiltin_cling=OFF \
-Dcxxmodules=OFF \
-Droot7=OFF \
-Dcling=OFF \
-Dllvm=OFF \
-Dwebgui=OFF \
-Dx11=OFF \
-Droofit=OFF \
-Dtmva=OFF \
-DCMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH" \
-DCMAKE_INSTALL_PREFIX=$HOME/software/root/install
make -j4 install
#grep -i vdt CMakeCache.txt || true
make -j4 install VERBOSE=1
#echo "===== VDT CONFIGURE STDOUT ====="
#cat /Users/runner/software/root/bin/VDT-prefix/src/VDT-stamp/VDT-configure-out.log || true
#echo "===== VDT CONFIGURE STDERR ====="
#cat /Users/runner/software/root/bin/VDT-prefix/src/VDT-stamp/VDT-configure-err.log || true
#exit 1
cd ..
rm -rf bin src
fi
Expand All @@ -116,8 +158,10 @@ jobs:
cd bin
cmake -DGEANT4_INSTALL_DATA=ON \
-DGEANT4_BUILD_MULTITHREADED=OFF \
-DGEANT4_USE_QT=ON \
-DGEANT4_INSTALL_DATADIR=$HOME/software/geant4/data \
-DCMAKE_INSTALL_PREFIX=$HOME/software/geant4/install \
-DQt6_DIR="$Qt6_DIR" \
../src
make -j4 install
cd ..
Expand Down
8 changes: 4 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ STRING(REGEX REPLACE "(.*)[.](.*)[.](.*)" "\\3" G4VERSION_PATCH ${Geant4_VERSION
#MESSAGE(${G4VERSION_MAJOR})
#MESSAGE(${G4VERSION_MINOR})
#MESSAGE(${G4VERSION_PATCH})
IF(NOT ${G4VERSION_MAJOR}.${G4VERSION_MINOR} EQUAL 11.3)
MESSAGE("Warning! This GATE version is not validated for Geant4 ${G4VERSION_MAJOR}.${G4VERSION_MINOR} distribution. Please use Geant4 11.3 distribution instead.")
IF(NOT ${G4VERSION_MAJOR}.${G4VERSION_MINOR} EQUAL 11.4.0)
MESSAGE("Warning! This GATE version is not validated for Geant4 ${G4VERSION_MAJOR}.${G4VERSION_MINOR} distribution. Please use Geant4 11.4.0 distribution instead.")
ENDIF()

#=========================================================
Expand Down Expand Up @@ -312,13 +312,13 @@ MESSAGE("Your current Geant4 version is ${Geant4_VERSION}")

#=========================================================
# Display message about this version
MESSAGE("IMPORTANT! This version of GATE (9.4.1) has still some traces of passage for new digitizer.")
MESSAGE("IMPORTANT! This version of GATE (9.4.2) has still some traces of passage for new digitizer.")
MESSAGE("Please, be aware that some of functionalities are NOT YET re-implemented: ")
MESSAGE("- Output: Sinogram, Ecat7, LMF")
MESSAGE("- ARF may work not properly yet")
MESSAGE("We apologize for this inconvenience and kindly ask for your patience.")
MESSAGE("This functionalities will be added during 2025.")
MESSAGE("Meanwhile, please, use Gate 9.4")
MESSAGE("Meanwhile, please, use Gate 9.2")



Expand Down
4 changes: 2 additions & 2 deletions Gate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ void welcome()
{
GateMessage("Core", 0, G4endl);
GateMessage("Core", 0, "*******************************************************" << G4endl);
GateMessage("Core", 0, " GATE version 9.4.1 (2025)" << G4endl);
GateMessage("Core", 0, " GATE version 9.4.2 (2026)" << G4endl);
GateMessage("Core", 0, " Copyright : OpenGATE Collaboration" << G4endl);
GateMessage("Core", 0, " Reference : Phys. Med. Biol. 49(19) 4543-4561 2004 " << G4endl);
GateMessage("Core", 0, " Reference : Phys. Med. Biol. 56(4) 881-901 2011 " << G4endl);
Expand Down Expand Up @@ -256,7 +256,7 @@ int main( int argc, char* argv[] )
break;
case 'v':
ss << G4VERSION_MAJOR << "." << G4VERSION_MINOR << "." << G4VERSION_PATCH;
std::cout << "Gate version is 9.4.1; Geant4 version is " << ss.str() << std::endl;
std::cout << "Gate version is 9.4.2; Geant4 version is " << ss.str() << std::endl;
exit(0);
break;
case 'a':
Expand Down
9 changes: 6 additions & 3 deletions cluster_tools/jobsplitter/src/GateMacfileParser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ G4int GateMacfileParser::GenerateResolvedMacros(G4String directory)
i_str<<j;
GenerateResolvedMacro(dir+macNameDir+i_str.str()+".mac",j,splitfile);
splitfile<<endl;

if(j%(nSplits/10)==0)
if(nSplits>=10 && j%(nSplits/10)==0)
cout<<100*j/nSplits<<"% "<<flush;
}
if (filenames[ROOT]==1)
Expand Down Expand Up @@ -202,8 +201,11 @@ G4int GateMacfileParser::GenerateResolvedMacro(G4String outputName,G4int splitNu
// Actor check
G4cout << "Number of enabled actors: " << listOfEnabledActorName.size() << endl;
// Check if no output nor actor


if (enabledOutput+listOfEnabledActorName.size()==0) G4cerr << "***** Warning: No output module nor actor are enabled !" << endl;
// Check if all aliases from the command line are used

bool flag=true;
nAliases = (G4int)listOfUsedAliases.size();
for (G4int i=1;i<nAliases;i+=2) flag&=listOfUsedAliases[i];
Expand All @@ -214,7 +216,9 @@ G4int GateMacfileParser::GenerateResolvedMacro(G4String outputName,G4int splitNu
if(!listOfUsedAliases[i]) G4cout<<" "<<listOfAliases[i]<<G4endl;
return 1;
}

}

macfile.close();
outputMacfile.close();
return 0;
Expand Down Expand Up @@ -546,7 +550,6 @@ void GateMacfileParser::DealWithTimeCommands(ofstream& output,G4int splitNumber,
// so all output should be defined
if(splitNumber==1) CheckOutputPrint();
CheckOutput(output,splitfile,splitNumber);

// ==============================================================================================================
// This part is here to check the presence of time commands and to deal with fu*** default
// values permitted ... And default values always give very nice part of code, hummmmm.
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ More details : http://www.opengatecollaboration.org

Documentation : https://opengate.readthedocs.io

* The stable version is tag 9.4.1: https://github.com/OpenGATE/Gate/tree/v9.4.1 with Geant4 11.3.0
* The stable version is tag 9.4.2: https://github.com/OpenGATE/Gate/tree/v9.4.2 with Geant4 11.4.0
* The current development version is branch 'develop' (default): http://github.com/OpenGATE/Gate/tree/develop
* [Benchmarks](https://github.com/OpenGATE/GateBenchmarks)
* [Examples](https://github.com/OpenGATE/GateContrib)
Expand Down
10 changes: 5 additions & 5 deletions source/digits_hits/src/GateClustering.cc
Original file line number Diff line number Diff line change
Expand Up @@ -121,11 +121,11 @@ void GateClustering::Digitize()
G4cout << Gateendl;
}

GateDigi* m_outputDigi = new GateDigi(*inputDigi);
m_outputDigi->SetEnergyFin(-1);
m_outputDigi->SetEnergyIniTrack(-1);
std::vector<double> dist;
std::vector<int> index4ClustSameVol;
m_outputDigi = new GateDigi(*inputDigi);
m_outputDigi->SetEnergyFin(-1);
m_outputDigi->SetEnergyIniTrack(-1);
std::vector<double> dist;
std::vector<int> index4ClustSameVol;

if(OutputDigiCollectionVector->empty()){
m_OutputDigiCollection->insert(m_outputDigi);
Expand Down
2 changes: 1 addition & 1 deletion source/digits_hits/src/GateDoIModels.cc
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ void GateDoIModels::Digitize()
return;
}

GateDigi* m_outputDigi = new GateDigi(*inputDigi);
m_outputDigi = new GateDigi(*inputDigi);

if (flgCorrectAxis==1)
{
Expand Down
2 changes: 1 addition & 1 deletion source/digits_hits/src/GateEnergyFraming.cc
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ void GateEnergyFraming::Digitize()
{
G4double energy = 0;
inputDigi=(*IDC)[i];
GateDigi* m_outputDigi = new GateDigi(*inputDigi);
m_outputDigi = new GateDigi(*inputDigi);

if( m_EnergyFramingLaw != 0 ){

Expand Down
2 changes: 1 addition & 1 deletion source/digits_hits/src/GateTimeDelay.cc
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ void GateTimeDelay::Digitize()
{
inputDigi=(*IDC)[i];

GateDigi* m_outputDigi = new GateDigi(*inputDigi);
m_outputDigi = new GateDigi(*inputDigi);

m_outputDigi->SetTime(inputDigi->GetTime()+ m_TimeDelay);

Expand Down
2 changes: 1 addition & 1 deletion source/externals/itk-mhd/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
PROJECT(testmhd)
CMAKE_MINIMUM_REQUIRED (VERSION 2.4)
CMAKE_MINIMUM_REQUIRED (VERSION 3.6)
IF(COMMAND CMAKE_POLICY)
CMAKE_POLICY(SET CMP0003 NEW)
ENDIF(COMMAND CMAKE_POLICY)
Expand Down
Loading