Skip to content

Commit b50b3f6

Browse files
committed
release candidate 0.1
1 parent 1106d68 commit b50b3f6

8 files changed

Lines changed: 166 additions & 99 deletions

File tree

.github/workflows/dev_release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
dev-release:
1717
runs-on: ubuntu-latest
1818
env:
19-
DEVMD_SINCE: "2024-08-09" # optional fixed start date
19+
DEVMD_SINCE: "2026-04-29" # optional fixed start date
2020
TAG_NAME: "dev" # reuse the same tag each night
2121
RELEASE_TITLE: "Dev Nightly"
2222
steps:

ci/update-devmd.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ fi
1818
echo "[devmd] branch = $BRANCH"
1919

2020
# --- Time window (optional) ---
21-
SINCE="2024-08-09" # Manually set the start date for commits
21+
SINCE="2026-04-29" # Manually set the start date for commits
22+
2223
UNTIL="${DEVMD_UNTIL:-}" # e.g. 2025-09-01
2324
FLAGS=""
2425
[ -n "$SINCE" ] && FLAGS="$FLAGS --since=$SINCE"

examples/basic/b2/b2.py

Lines changed: 59 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,65 @@
11
#!/usr/bin/env python3
2-
3-
# gemc api
42
from gconfiguration import autogeometry
5-
6-
# build_geometry and define_materials are in geometry.py, materials.py
7-
from geometry import build_geometry
8-
from materials import define_materials
3+
from gvolume import GVolume
94

105
cfg = autogeometry("examples", "b2")
116

12-
build_geometry(cfg)
13-
define_materials(cfg)
7+
fNbOfChambers = 5
8+
chamberSpacing = 800 # from chamber center to center
9+
10+
chamberWidth = 200.0 # width of the chambers
11+
targetLength = 50.0 # full length of Target
12+
13+
trackerLength = (fNbOfChambers + 1) * chamberSpacing
14+
worldLength = 1.2 * (2 * targetLength + trackerLength)
15+
16+
targetRadius = 0.5 * targetLength # Radius of Target
17+
targetLength = 0.5 * targetLength # Half length of the Target
18+
trackerSize = 0.5 * trackerLength # Half length of the Tracker
19+
20+
gvolume = GVolume('root')
21+
gvolume.description = 'World'
22+
gvolume.make_box(worldLength * 0.5, worldLength * 0.5, worldLength * 0.5)
23+
gvolume.material = 'G4_AIR'
24+
gvolume.color = 'ghostwhite'
25+
gvolume.visible = 0
26+
gvolume.publish(cfg)
27+
28+
tz = -(targetLength + trackerSize)
29+
gvolume = GVolume('target')
30+
gvolume.description = 'Lead Target'
31+
gvolume.make_tube(0, targetRadius, targetLength, 0, 360)
32+
gvolume.material = 'G4_Pb'
33+
gvolume.set_position(0, 0, tz)
34+
gvolume.color = 'steelblue'
35+
gvolume.publish(cfg)
36+
37+
gvolume = GVolume('tracker')
38+
gvolume.description = 'Chamber Tracker Container'
39+
gvolume.make_tube(0, trackerSize, trackerSize, 0, 360)
40+
gvolume.material = 'G4_AIR'
41+
gvolume.opacity = 0.1
42+
gvolume.publish(cfg)
43+
44+
firstPosition = -trackerSize + chamberSpacing
45+
firstLength = trackerLength / 10
46+
lastLength = trackerLength
47+
halfWidth = 0.5 * chamberWidth
48+
rmaxFirst = 0.5 * firstLength
49+
50+
rmaxIncr = 0.5 * (lastLength - firstLength) / (fNbOfChambers - 1)
1451

52+
# loop from 0 to fNbOfChambers
53+
for copyNo in range(fNbOfChambers):
54+
Zposition = firstPosition + copyNo * chamberSpacing
55+
rmax = rmaxFirst + copyNo * rmaxIncr
56+
gvolume = GVolume(f'chamber_{copyNo}')
57+
gvolume.mother = 'tracker'
58+
gvolume.description = f'Chamber Tracker {copyNo}'
59+
gvolume.make_tube(0, rmax, halfWidth, 0, 360)
60+
gvolume.material = 'G4_Xe'
61+
gvolume.color = 'metallic, papayawhip'
62+
gvolume.set_position(0, 0, Zposition)
63+
gvolume.digitization = 'flux' # adds edep, pid, etc to hits
64+
gvolume.set_identifier('mychamber', copyNo)
65+
gvolume.publish(cfg)

examples/basic/b2/geometry.py

Lines changed: 0 additions & 67 deletions
This file was deleted.

examples/basic/b2/materials.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

gtree/examples/geometry.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

releases/0.1.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<br/>
2+
3+
The code is stable enough at this point to call this a release.
4+
5+
# Release notes
6+
7+
The core of GEMC is now complete and includes:
8+
9+
- Python API to create geometry and materials
10+
- Support for ASCII, SQLite, GDML, CAD meshes volume imports
11+
- Custom extensibility of digitization, output formats, electro-magnetic fields
12+
- Built-in dosimeter, flux, particle_counter
13+
- Built-in ASCII, CSV, JSON, ROOT output
14+
- pyvista 3D visualization
15+
16+
17+
Two examples are provided that reproduce the Geant4 basic examples B1 and B2.
18+
19+
The CI workflow includes:
20+
21+
- Code deployment and testing
22+
- A nightly `dev` release
23+
- Homepage and Doxygen documentation
24+
- Sanitizer checks
25+
- CodeQL analysis
26+
27+
# Issues Addressed
28+
29+
- [[#21]](https://github.com/gemc/src/issues/21): Complete multipoles fields implementation
30+
- [[#25]](https://github.com/gemc/src/issues/25): add g4 dialog with search capabilities
31+
- [[#34]](https://github.com/gemc/src/issues/34): sqlite db
32+
- [[#29]](https://github.com/gemc/src/issues/29): new class logger
33+
- [[#23]](https://github.com/gemc/src/issues/23): complete B1 example
34+
- [[#1]](https://github.com/gemc/src/issues/1): Update homepage
35+
- [[#19]](https://github.com/gemc/src/issues/19): Add doxygen
36+
- [[#50]](https://github.com/gemc/src/issues/50): simplify goptions command line
37+
- [[#51]](https://github.com/gemc/src/issues/51): use verbosity and options in meson.build
38+
- [[#60]](https://github.com/gemc/src/issues/60): revisit i_test meson option
39+
- [[#68]](https://github.com/gemc/src/issues/68): add JSON output format
40+
- [[#67]](https://github.com/gemc/src/issues/67): gdata flow not clear
41+
- [[#44]](https://github.com/gemc/src/issues/44): all options help consistency
42+
- [[#69]](https://github.com/gemc/src/issues/69): add detector tree viewer
43+
- [[#26]](https://github.com/gemc/src/issues/26): add csv output
44+
- [[#37]](https://github.com/gemc/src/issues/37): add B2 example
45+
- [[#53]](https://github.com/gemc/src/issues/53): each subclass should instantiate its own logger
46+
47+
48+
49+
50+
# Supported platforms
51+
52+
Both AMD and ARM processors are supported.
53+
54+
- macOS: 26
55+
- Ubuntu: 24.04
56+
- AlmaLinux: 9.4
57+
- Fedora: 42
58+
- Debian: 13
59+
- ArchLinux: latest
60+
61+
62+
63+
# Dependencies
64+
65+
- Geant4: 11.4.1 or higher
66+
- CLHEP: 2.4.6.0 or higher
67+
- Xerces-C: 3.2 or higher
68+

releases/0.2.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<br/>
2+
3+
Descripton of changes and fixes in this release.
4+
5+
# Release notes
6+
7+
8+
9+
# New Developments
10+
11+
12+
13+
# Issues Addressed
14+
15+
16+
17+
# Supported platforms
18+
19+
Both AMD and ARM processors are supported.
20+
21+
- macOS: 26
22+
- Ubuntu: 24.04
23+
- AlmaLinux: 9.4
24+
- Fedora: 42
25+
- Debian: 13
26+
- ArchLinux: latest
27+
28+
29+
30+
# Dependencies
31+
32+
- Geant4: 11.4.1 or higher
33+
- CLHEP: 2.4.6.0 or higher
34+
- Xerces-C: 3.2 or higher
35+
36+
# Detailed list of changes and fixes

0 commit comments

Comments
 (0)