Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add a new test for inverted filter #96

Merged
merged 1 commit into from
Feb 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ jobs:
t29_optical_digi,
t30_dna,
t31_vpgTLE-tt,
t32_isotopes]
t32_isotopes,
t33_invert_filter]

steps:
- name: Checkout github repo
Expand Down
27 changes: 27 additions & 0 deletions t33_invert_filter/data/GateMaterials.db
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
[Elements]
Hydrogen: S= H ; Z= 1. ; A= 1.01 g/mole
Carbon: S= C ; Z= 6. ; A= 12.01 g/mole
Nitrogen: S= N ; Z= 7. ; A= 14.01 g/mole
Oxygen: S= O ; Z= 8. ; A= 16.00 g/mole
Argon: S= Ar ; Z= 18. ; A= 39.95 g/mole
Tungsten: S= W ; Z= 74. ; A= 183.84 g/mole
Lead: S= Pb ; Z= 82. ; A= 207.20 g/mole

[Materials]
Vacuum: d=0.000001 mg/cm3 ; n=1
+el: name=Hydrogen ; n=1

Super_dense: d=19300 g/cm3 ; n=1 ; state=solid
+el: name=Tungsten ; n=1

PWO: d=8.28 g/cm3; n=3 ; state=Solid
+el: name=Lead ; n=1
+el: name=Tungsten ; n=1
+el: name=Oxygen ; n=4

Air: d=1.29 mg/cm3 ; n=4 ; state=gas
+el: name=Nitrogen ; f=0.755268
+el: name=Oxygen ; f=0.231781
+el: name=Argon ; f=0.012827
+el: name=Carbon ; f=0.000124

3 changes: 3 additions & 0 deletions t33_invert_filter/data/spectrum.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
1 0
0.1 0.5
0.2 0.5
53 changes: 53 additions & 0 deletions t33_invert_filter/mac/actor.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

/control/doif {filter_id} > -1 /gate/actor/addActor KillActor myKillActor
/control/doif {filter_id} > -1 /gate/actor/myKillActor/attachTo phantom
#/control/doif {filter_id} > -1 /gate/actor/myKillActor/save output/kill.txt

/control/doif {filter_id} == 0 /gate/actor/myKillActor/addFilter angleFilter
/control/doif {filter_id} == 0 /gate/actor/myKillActor/angleFilter/setAngle 30
/control/doif {filter_id} == 0 /gate/actor/myKillActor/angleFilter/setDirection 0 0 1

/control/doif {filter_id} == 1 /gate/actor/myKillActor/addFilter angleFilter
/control/doif {filter_id} == 1 /gate/actor/myKillActor/angleFilter/setAngle 30
/control/doif {filter_id} == 1 /gate/actor/myKillActor/angleFilter/setDirection 0 0 1
/control/doif {filter_id} == 1 /gate/actor/myKillActor/angleFilter/invert

/control/doif {filter_id} == 2 /gate/actor/myKillActor/addFilter energyFilter
/control/doif {filter_id} == 2 /gate/actor/myKillActor/energyFilter/setEmin 0.195 MeV
/control/doif {filter_id} == 2 /gate/actor/myKillActor/energyFilter/setEmax 0.205 MeV

/control/doif {filter_id} == 3 /gate/actor/myKillActor/addFilter energyFilter
/control/doif {filter_id} == 3 /gate/actor/myKillActor/energyFilter/setEmin 0.195 MeV
/control/doif {filter_id} == 3 /gate/actor/myKillActor/energyFilter/setEmax 0.205 MeV
/control/doif {filter_id} == 3 /gate/actor/myKillActor/energyFilter/invert

/control/doif {filter_id} == 4 /gate/actor/myKillActor/addFilter materialFilter
/control/doif {filter_id} == 4 /gate/actor/myKillActor/materialFilter/addMaterial Air
/control/doif {filter_id} == 4 /gate/phantom_part/setMaterial Air


/control/doif {filter_id} == 5 /gate/actor/myKillActor/addFilter materialFilter
/control/doif {filter_id} == 5 /gate/actor/myKillActor/materialFilter/addMaterial Air
/control/doif {filter_id} == 5 /gate/actor/myKillActor/materialFilter/invert
/control/doif {filter_id} == 5 /gate/phantom_part/setMaterial Air

/control/doif {filter_id} == 6 /gate/actor/myKillActor/addFilter volumeFilter
/control/doif {filter_id} == 6 /gate/actor/myKillActor/volumeFilter/addVolume phantom_part


/control/doif {filter_id} == 7 /gate/actor/myKillActor/addFilter volumeFilter
/control/doif {filter_id} == 7 /gate/actor/myKillActor/volumeFilter/addVolume phantom_part
/control/doif {filter_id} == 7 /gate/actor/myKillActor/volumeFilter/invert

# IDfilter is broken, so no test needed
#/control/doif {filter_id} == 8 /gate/actor/myKillActor/addFilter IDFilter
#/control/doif {filter_id} == 9 /gate/actor/myKillActor/addFilter IDFilter
#/control/doif {filter_id} == 9 /gate/actor/myKillActor/IDFilter/invert

/control/doif {filter_id} == 10 /gate/actor/myKillActor/addFilter particleFilter
/control/doif {filter_id} == 10 /gate/actor/myKillActor/particleFilter/addParticle e-

/control/doif {filter_id} == 11 /gate/actor/myKillActor/addFilter particleFilter
/control/doif {filter_id} == 11 /gate/actor/myKillActor/particleFilter/addParticle e-
/control/doif {filter_id} == 11 /gate/actor/myKillActor/particleFilter/invert

53 changes: 53 additions & 0 deletions t33_invert_filter/mac/geometry.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/gate/world/geometry/setXLength 20 cm
/gate/world/geometry/setYLength 20 cm
/gate/world/geometry/setZLength 40 cm
/gate/world/vis/setVisible 0
/gate/world/setMaterial Vacuum

/gate/world/daughters/name scanner
/gate/world/daughters/systemType scanner
/gate/world/daughters/insert box
/gate/scanner/placement/setTranslation 0 0 15 cm
/gate/scanner/geometry/setXLength 20 cm
/gate/scanner/geometry/setYLength 20 cm
/gate/scanner/geometry/setZLength 10 cm
/gate/scanner/vis/setColor red
/gate/scanner/vis/setVisible 1

/gate/scanner/daughters/name crystal
/gate/scanner/daughters/insert box
/gate/crystal/setMaterial Super_dense
/control/doif {filter_id} > 9 /gate/crystal/setMaterial PWO
/gate/crystal/placement/setTranslation 0 0 0 cm
/gate/crystal/geometry/setXLength 20 cm
/gate/crystal/geometry/setYLength 20 cm
/gate/crystal/geometry/setZLength 10 cm

/gate/world/daughters/name phantom
/gate/world/daughters/insert box
/gate/phantom/placement/setTranslation 0 0 0 cm
/gate/phantom/geometry/setXLength 20 cm
/gate/phantom/geometry/setYLength 20 cm
/gate/phantom/geometry/setZLength 1 cm
/gate/phantom/vis/setColor blue
/gate/phantom/vis/setVisible 1
/gate/phantom/setMaterial Vacuum

/gate/phantom/daughters/name phantom_part
/gate/phantom/daughters/insert box
/gate/phantom_part/placement/setTranslation 5 0 0 cm
/gate/phantom_part/geometry/setXLength 10 cm
/gate/phantom_part/geometry/setYLength 20 cm
/gate/phantom_part/geometry/setZLength 1 cm
/gate/phantom_part/vis/setColor red
/gate/phantom_part/vis/setVisible 1
/gate/phantom_part/setMaterial Vacuum

/gate/crystal/attachCrystalSD
/gate/systems/scanner/level1/attach crystal
/gate/phantom/attachPhantomSD
/gate/phantom_part/attachPhantomSD

#/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/insert adder
#/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/insert readout
#/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/readout/setDepth 1
40 changes: 40 additions & 0 deletions t33_invert_filter/mac/main.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/control/verbose 1
# basic geometry

/gate/geometry/setMaterialDatabase data/GateMaterials.db

/control/execute mac/geometry.mac

/gate/random/setEngineName MersenneTwister
#fixed seed for reproducibility
#/gate/random/setEngineSeed 15498
/gate/random/setEngineSeed auto
/gate/random/verbose 0

# physics
/gate/physics/addPhysicsList emstandard_opt3
/gate/physics/setDEDXBinning 500
/gate/physics/setLambdaBinning 500
/gate/physics/processList Enabled
/gate/physics/processList Initialized

#actors

/control/execute mac/actor.mac

/gate/run/initialize

/control/execute mac/source.mac
/control/if {filter_id} > 9 mac/source_electron.mac
#/control/execute mac/source_electron.mac

# output
/control/execute mac/output.mac

#/control/execute mac/vis.mac

/gate/application/setTimeStart 0.0 s
/gate/application/setTimeStop 1 s
/gate/application/setTimeSlice 1 s

/gate/application/startDAQ
44 changes: 44 additions & 0 deletions t33_invert_filter/mac/output.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

/gate/output/tree/enable
#/gate/output/tree/addFileName ./output/filter_id_{filter_id}.txt
/gate/output/tree/addFileName ./output/filter_id_{filter_id}.npy
/gate/output/tree/hits/enable

#PDGEncoding,trackID,parentID,trackLocalTime,time,runID,eventID,sourceID,primaryID,posX,posY,posZ,localPosX,localPosY,localPosZ,momDirX,momDirY,momDirZ,edep,stepLength,trackLength,rotationAngle,axialPos,processName,comptVolName,RayleighVolName,volumeID[0],volumeID[1],volumeID[2],volumeID[3],volumeID[4],volumeID[5],volumeID[6],volumeID[7],volumeID[8],volumeID[9],sourcePosX,sourcePosY,sourcePosZ,nPhantomCompton,nCrystalCompton,nPhantomRayleigh,nCrystalRayleigh,,level1ID,level2ID,level3ID,level4ID,level5ID,photonID,sourceType,decayType,gammaType
#/gate/output/tree/hits/branches/PDGEncoding/disable
#/gate/output/tree/hits/branches/trackID/disable
/gate/output/tree/hits/branches/parentID/disable
/gate/output/tree/hits/branches/trackLocalTime/disable
#/gate/output/tree/hits/branches/time/disable
/gate/output/tree/hits/branches/runID/disable
#/gate/output/tree/hits/branches/eventID/disable
/gate/output/tree/hits/branches/sourceID/disable
/gate/output/tree/hits/branches/primaryID/disable
#/gate/output/tree/hits/branches/posX/disable
#/gate/output/tree/hits/branches/posY/disable
#/gate/output/tree/hits/branches/posZ/disable
/gate/output/tree/hits/branches/localPosX/disable
/gate/output/tree/hits/branches/localPosY/disable
/gate/output/tree/hits/branches/localPosZ/disable
/gate/output/tree/hits/branches/momDirX/disable
/gate/output/tree/hits/branches/momDirY/disable
/gate/output/tree/hits/branches/momDirZ/disable
#/gate/output/tree/hits/branches/edep/disable
/gate/output/tree/hits/branches/stepLength/disable
/gate/output/tree/hits/branches/trackLength/disable
/gate/output/tree/hits/branches/rotationAngle/disable
/gate/output/tree/hits/branches/axialPos/disable
#/gate/output/tree/hits/branches/processName/disable
/gate/output/tree/hits/branches/comptVolName/disable
/gate/output/tree/hits/branches/RayleighVolName/disable
/gate/output/tree/hits/branches/sourcePosX/disable
/gate/output/tree/hits/branches/sourcePosY/disable
/gate/output/tree/hits/branches/sourcePosZ/disable
#/gate/output/tree/hits/branches/nPhantomCompton/disable
#/gate/output/tree/hits/branches/nCrystalCompton/disable
#/gate/output/tree/hits/branches/nPhantomRayleigh/disable
#/gate/output/tree/hits/branches/nCrystalRayleigh/disable
/gate/output/tree/hits/branches/photonID/disable
/gate/output/tree/hits/branches/sourceType/disable
/gate/output/tree/hits/branches/decayType/disable
/gate/output/tree/hits/branches/gammaType/disable
15 changes: 15 additions & 0 deletions t33_invert_filter/mac/source.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/gate/source/addSource myGammaSource gps
/gate/source/myGammaSource/gps/pos/type Point
/gate/source/myGammaSource/gps/particle gamma
/gate/source/myGammaSource/gps/ene/type UserSpectrum
/gate/source/myGammaSource/gps/setSpectrumFile data/spectrum.txt
/gate/source/myGammaSource/setActivity 1000. becquerel
/gate/source/myGammaSource/gps/pos/centre 0. 0. -5. cm
/gate/source/myGammaSource/gps/ang/type iso
/gate/source/myGammaSource/gps/ang/maxtheta 180 deg
/gate/source/myGammaSource/gps/ang/mintheta 135 deg
/gate/source/myGammaSource/gps/ang/minphi 0 deg
/gate/source/myGammaSource/gps/ang/maxphi 360 deg
/gate/source/myGammaSource/attachTo world

/gate/source/myGammaSource/visualize 100 red
14 changes: 14 additions & 0 deletions t33_invert_filter/mac/source_electron.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/gate/source/addSource mySource gps
/gate/source/mySource/gps/pos/type Point
/gate/source/mySource/gps/particle e-
/gate/source/mySource/gps/ene/type Mono
/gate/source/mySource/gps/ene/mono 100 keV
/gate/source/mySource/setActivity 1000. becquerel
/gate/source/mySource/gps/pos/centre 0. 0. -5. cm
/gate/source/mySource/gps/ang/type iso
/gate/source/mySource/gps/ang/maxtheta 180 deg
/gate/source/mySource/gps/ang/mintheta 135 deg
/gate/source/mySource/gps/ang/minphi 0 deg
/gate/source/mySource/gps/ang/maxphi 360 deg
/gate/source/mySource/attachTo world
/gate/source/mySource/visualize 100 red
21 changes: 21 additions & 0 deletions t33_invert_filter/mac/vis.mac
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#
# ****** Visualization
#

#/vis/open OGLSX
/vis/open OGLSQt 1920x1080-0+0
/vis/viewer/set/viewpointThetaPhi 0 0 deg
/vis/viewer/zoom 1
/vis/viewer/set/style w
/vis/drawVolume
/vis/viewer/flush
#/tracking/verbose 0
/tracking/storeTrajectory 1
/vis/scene/add/hits
/vis/scene/add/trajectories
/vis/scene/endOfEventAction accumulate -1
/vis/scene/add/axes

#/vis/viewer/set/viewpointThetaPhi 0 0
#vis/viewer/panTo 0 430 mm
#/vis/viewer/zoom 10
16 changes: 16 additions & 0 deletions t33_invert_filter/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
This test is used to check the validity of the invert command for following filters for actors:

| Filter | normal filter_id | Invert filter_id |
| --- | --- | --- |
| AngleFilter | 0 | 1 |
| EnergyFilter | 2 | 3 |
| MaterialFilter | 4 | 5 |
| VolumeFilter | 6 | 7 |
| IDFilter | 8 | 9 |
| ParticleFilter | 10 | 11 |



The test is done by using a simple geometry with a single point source, a volume called phantom, which the killer actor attach to, and a piece of material act as detector.

Angle and energy filter's test is trivial. Material and volume filter is tested with a daughter volume of phantom. Since the IDFilter is broken right now, nothing will be done for it right now. Particle filter is tested by adding a electron source, and carefully remove all secondary hits.
Loading
Loading