-
Notifications
You must be signed in to change notification settings - Fork 2
323 lines (297 loc) · 16.4 KB
/
build-and-test-sandreco.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
name: BUILD AND TEST SANDRECO
run-name: BUILD AND TEST SANDRECO
on: [push]
env:
root-version: v6-32-02
geant4-version: v10.7.4
edepsim-version: 3.2.0
clhep-version: CLHEP_2_4_7_1
gegede-version: 0.8
jobs:
build-and-test-sandreco:
strategy:
matrix:
sand-geometry: [sand_opt1_STT1, sand_opt2_STT1, sand_opt3_STT1, sand_opt2_STT3, sand_opt3_DRIFT1]
runs-on: ubuntu-latest
container: almalinux/9-base
steps:
#############################################################################################################################
# Install epel repo
#############################################################################################################################
- name: Install epel repo
run: yum install -y epel-release
#############################################################################################################################
# Install ROOT dependencies
#############################################################################################################################
- name: Install ROOT dependencies
run: |
yum install -y git make cmake gcc-c++ gcc binutils libX11-devel libXpm-devel libXft-devel libXext-devel python openssl-devel \
xrootd-client-devel xrootd-libs-devel gcc-gfortran pcre-devel mesa-libGL-devel mesa-libGLU-devel glew-devel ftgl-devel \
fftw-devel cfitsio-devel libuuid-devel openldap-devel python-devel python3-numpy libxml2-devel gsl-devel readline-devel \
qt5-qtwebengine-devel
#############################################################################################################################
# Install GEANT4 dependencies
#############################################################################################################################
## https://xerces.apache.org/xerces-c/download.cgi
- name: Install GEANT4 dependencies
run: yum install -y xerces-c xerces-c-devel expat expat-devel zlib zlib-devel
#############################################################################################################################
# Get SHA of HEAD develop
#############################################################################################################################
- name: Get SHA of HEAD dunendggd
id: dunendggd_sha
run: echo "sha=$(git ls-remote https://github.com/DUNE/dunendggd.git --refs refs/heads/master | awk -F' ' '{print $1}')" >> $GITHUB_OUTPUT
#############################################################################################################################
# Cache for CLHEP
#############################################################################################################################
- name: CLHEP cache
id: cache-clhep
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/clhep
# An explicit key for restoring and saving the cache
key: clhep-${{env.clhep-version}}
#############################################################################################################################
# Cache for ROOT
#############################################################################################################################
- name: ROOT cache
id: cache-root
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/root
# An explicit key for restoring and saving the cache
key: root-${{env.root-version}}
#############################################################################################################################
# Cache for GEANT4
#############################################################################################################################
- name: GEANT4 cache
id: cache-geant4
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/geant4
# An explicit key for restoring and saving the cache
key: geant4-${{env.geant4-version}}
#############################################################################################################################
# Cache for EDEPSIM
#############################################################################################################################
- name: EDEPSIM cache
id: cache-edepsim
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/edepsim
# An explicit key for restoring and saving the cache
key: edepsim-${{env.edepsim-version}}-root-${{env.root-version}}-geant4-${{env.geant4-version}}
#############################################################################################################################
# Cache for gegede
#############################################################################################################################
- name: gegede cache
id: cache-gegede
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/gegede
# An explicit key for restoring and saving the cache
key: gegede-${{env.gegede-version}}
#############################################################################################################################
# Cache for dunendggd
#############################################################################################################################
- name: dunendggd cache
id: cache-dunendggd
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/dunendggd
# An explicit key for restoring and saving the cache
key: dunendggd-${{steps.dunendggd_sha.outputs.sha}}
#############################################################################################################################
# Cache for geometry
#############################################################################################################################
- name: geometry cache
id: cache-geometry
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/geo
# An explicit key for restoring and saving the cache
key: dunendggd-${{steps.dunendggd_sha.outputs.sha}}-geo-${{matrix.sand-geometry}}
#############################################################################################################################
# Cache for edepsim events with sand geo
#############################################################################################################################
- name: edepsim events cache with sand geo
id: cache-edepsim-events-sand-geo
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path: |
~/edepsim-events
# An explicit key for restoring and saving the cache
key: edepsim-event-with-dunendggd-${{steps.dunendggd_sha.outputs.sha}}-geo-${{matrix.sand-geometry}}
#############################################################################################################################
# Install CLHEP
#############################################################################################################################
- name: Install CLHEP ${{env.clhep-version}}
if: steps.cache-clhep.outputs.cache-hit != 'true'
run: |
mkdir -p ~/clhep
cd ~/clhep
git clone --depth 1 --branch ${{env.clhep-version}} https://gitlab.cern.ch/CLHEP/CLHEP.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ../source
make -j8 install
#############################################################################################################################
# Install ROOT
#############################################################################################################################
- name: Install ROOT ${{env.root-version}}
if: steps.cache-root.outputs.cache-hit != 'true'
run: |
mkdir -p ~/root
cd ~/root
git clone --depth 1 --branch ${{env.root-version}} https://github.com/root-project/root.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ../source
make -j8 install
#############################################################################################################################
# Install GEANT4
#############################################################################################################################
## https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/installguide.html
- name: Install GEANT4 ${{env.geant4-version}}
if: steps.cache-geant4.outputs.cache-hit != 'true'
run: |
mkdir -p ~/geant4
cd ~/geant4
git clone --depth 1 --branch ${{env.geant4-version}} https://github.com/Geant4/geant4.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. -DGEANT4_USE_GDML=ON -DGEANT4_INSTALL_DATA=ON ../source
make -j8 install
#############################################################################################################################
# Install EDEPSIM
#############################################################################################################################
## https://github.com/ClarkMcGrew/edep-sim
- name: Install edepsim ${{env.edepsim-version}}
if: steps.cache-edepsim.outputs.cache-hit != 'true'
run: |
mkdir -p ~/edepsim
cd ~/edepsim
git clone --depth 1 --branch ${{env.edepsim-version}} https://github.com/ClarkMcGrew/edep-sim.git source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH="~/geant4;~/root" ../source
make -j8 install
#############################################################################################################################
# Install EDEPReader
#############################################################################################################################
## https://baltig.infn.it/dune/edep-reader
- name: Install edep-reader
run: |
mkdir -p ~/edep-reader
cd ~/edep-reader
git clone --depth 1 https://baltig.infn.it/dune/edep-reader source
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH="~/geant4;~/root;~/edepsim" ../source
make -j8 install
#############################################################################################################################
# Get sandreco
#############################################################################################################################
- name: Checkout sandreco
uses: actions/[email protected]
with:
# Relative path under $GITHUB_WORKSPACE to place the repository
path: sandreco
#############################################################################################################################
# Install sandreco
#############################################################################################################################
- name: Install sandreco
run: |
mkdir -p ~/sandreco
mv sandreco ~/sandreco/source
cd ~/sandreco
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. -DCMAKE_PREFIX_PATH="~/geant4;~/root;~/edepsim;~/edep-reader" ../source
make -j8 install
#############################################################################################################################
# Install gegede
#############################################################################################################################
- name: Install gegede ${{env.gegede-version}}
if: steps.cache-gegede.outputs.cache-hit != 'true'
run: |
python3 -m venv ~/gegede/ggdvenv
source ~/gegede/ggdvenv/bin/activate
python3 -m pip install setuptools
cd ~/gegede
git clone --depth 1 --branch ${{env.gegede-version}} https://github.com/brettviren/gegede.git source
cd source/
python3 setup.py install
deactivate ~/gegede/ggdvenv
#############################################################################################################################
# Install dunendggd
#############################################################################################################################
- name: Install dunendggd
if: steps.cache-dunendggd.outputs.cache-hit != 'true'
run: |
source ~/gegede/ggdvenv/bin/activate
git clone --depth 1 https://github.com/DUNE/dunendggd.git ~/dunendggd
cd ~/dunendggd/
pip install -e .
#############################################################################################################################
# Build SAND geometry
#############################################################################################################################
- name: Build SAND geometry
if: steps.cache-geometry.outputs.cache-hit != 'true'
run: |
source ~/gegede/ggdvenv/bin/activate
cd ~/dunendggd
./build_hall.sh ${{matrix.sand-geometry}}
GEO=$(echo ${{matrix.sand-geometry}} | sed "s:sand:SAND:g")
mkdir -p ~/geo
mv ${GEO}.gdml ~/geo/.
#############################################################################################################################
# Run edepsim
#############################################################################################################################
- name: Run edepsim
if: steps.cache-edepsim-events-sand-geo.outputs.cache-hit != 'true'
run: |
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/geant4/lib64:~/root/lib:~/edepsim/lib
export PATH=${PATH}:~/edepsim/bin
source ~/geant4/bin/geant4.sh
mkdir ~/edepsim-events
cd ~/edepsim-events
GEO=$(echo ${{matrix.sand-geometry}} | sed "s:sand:SAND:g")
edep-sim -C -g ~/geo/${GEO}.gdml -o ${GEO}.edep.root ~/sandreco/source/tests/1000-mu-in-FV.mac
#############################################################################################################################
# Run sandreco
#############################################################################################################################
- name: Run sandreco
run: |
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:~/geant4/lib64:~/root/lib:~/edepsim/lib
source ~/sandreco/setup.sh
mkdir ~/sandreco-reco
cd ~/sandreco-reco
GEO=$(echo ${{matrix.sand-geometry}} | sed "s:sand:SAND:g")
Digitize ~/edepsim-events/${GEO}.edep.root ${GEO}.digit.root
Reconstruct ~/edepsim-events/${GEO}.edep.root ${GEO}.digit.root ${GEO}.reco.root
#############################################################################################################################
# Upload production for sandreco test as artifact
#############################################################################################################################
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: produced-files-${{matrix.sand-geometry}}
path: |
~/sandreco-reco
~/edepsim-events