Opticks : GPU Optical Photon Simulation for Particle Physics with NVIDIA OptiX

Opticks : GPU Optical Photon Simulation for Particle Physics with NVIDIA® OptiX™

Simon C Blyth, National Taiwan University — https://bitbucket.org/simoncblyth/opticks — Nov 2016, LLR

Opticks Benefits

Outline

/env/presentation/newtons-opticks.png

Optical Photon Simulation Problem...

JPMT Before Contact 2

Ray Traced Image Synthesis ≈ Optical Photon Simulation

Geometry, light sources, optical physics ->
  • pixel values at image plane
  • photon parameters at detectors (eg PMTs)
Ray tracing has many applications :
  • advertising, design, entertainment, games,...
  • BUT : most ray tracers just render images
NVIDIA OptiX had foresight to be less specific:
  • general geometry intersection API
  • OptiX is to ray tracing what OpenGL is to rasterization


rasterization
project 3D primitives onto 2D image plane, combine fragments into pixel values
ray tracing
cast rays thru image pixels into scene, recursively reflect/refract with geometry intersected, combine returns into pixel values

NVIDIA OptiX 1

NVIDIA OptiX 2

/env/presentation/1px.png

https://research.nvidia.com/publication/optix-general-purpose-ray-tracing-engine

Opticks Geometry : Recreate Geant4 "Context" on GPU

Export Tesselated Geometry
Load G4DAE XML
  • label primitives with boundary indices
  • find repeated geometry "instances"
  • write NumPy serialization .npy geocache

Geocache -> few seconds startup, instead of few minutes

Load/upload geocache
  • load geocache from file
  • upload OptiX textures to GPU
  • upload geometry buffers to GPU
GPU geometry buffers read by:
  • OptiX bounding box and intersection programs
  • OpenGL GLSL shaders for visualization

Large Geometry Techniques : Instancing Mandatory

Geometry analysed to find instances

JUNO: ~90M --> 0.1M triangles

OpenGL/OptiX instancing

Multiple Renderers

Geometry Modelling : Tesselated vs Analytic Photomultiplier Tubes

/env/graphics/ggeoview/dpib-triangulated-pmt.png /env/nuwa/detdesc/pmt/hemi-pmt-analytic-near-clipped.png /env/presentation/1px.png

Analytic : more realistic, faster, less memory, much more effort

For Dayabay PMT:

Aim : analytic description of geometry on critical optical path, remainder tesselated

Hybrid Geant4/Opticks Event Workflow

Geant4/Detector Simulation

Opticks (OptiX/Thrust GPU interoperation)

Geant4/Detector Simulation

Multi-event handling

Compare Opticks/Geant4 Simulations with Simple Lights/Geometries

/env/graphics/ggeoview/rainbow-spol-disc-incident-sphere.png

1M Photons -> Water Sphere (S-Polarized)

/env/graphics/ggeoview/PmtInBox-approach.png

0.5M Photons -> Dayabay PMT

/env/presentation/1px.png
Photon step records
128 bit per step : highly compressed position, time, wavelength, polarization vector, material/history codes
Photon flag sequence
16x 4-bit step flags recorded in uint64 sequence, indexed using Thrust GPU sort (1M indexed ~0.040s)

Sequence index -> interactive OpenGL selection of photons by flag sequence

Opticks/Geant4 Rainbow Step Sequence Comparison

Flags:
  • BT/BR: boundary transmit/reflect
  • TO/SC/SA: torch/scatter/surface absorb

Statistically consistent photon histories in the two simulations : Multiple orders of rainbow apparent

 64-bit uint  Opticks    Geant4    chi2                                      (tag:5,-5)

        8ccd   819160    819654    0.15  [4 ] TO BT BT SA                    (cross droplet)
         8bd   102087    101615    1.09  [3 ] TO BR SA                       (external reflect)
       8cbcd    61869     61890    0.00  [5 ] TO BT BR BT SA                 (bow 1)
      8cbbcd     9618      9577    0.09  [6 ] TO BT BR BR BT SA              (bow 2)
     8cbbbcd     2604      2687    1.30  [7 ] TO BT BR BR BR BT SA           (bow 3)
    8cbbbbcd     1056      1030    0.32  [8 ] TO BT BR BR BR BR BT SA        (bow 4)
       86ccd     1014      1000    0.10  [5 ] TO BT BT SC SA
   8cbbbbbcd      472       516    1.96  [9 ] TO BT BR BR BR BR BR BT SA     (bow 5)
         86d      498       473    0.64  [3 ] TO SC SA
  bbbbbbbbcd      304       294    0.17  [10] TO BT BR BR BR BR BR BR BR BR  (bow 8+ truncated)
  8cbbbbbbcd      272       247    1.20  [10] TO BT BR BR BR BR BR BR BT SA  (bow 6)
  cbbbbbbbcd      183       161    1.41  [10] TO BT BR BR BR BR BR BR BR BT  (bow 7 truncated)

1M Rainbow S-Polarized, Comparison Opticks/Geant4

Deviation angle(degrees) of 1M parallel monochromatic photons in disc shaped beam incident on water sphere. Numbered bands are visible range expectations of first 11 rainbows. S-Polarized intersection (E field perpendicular to plane of incidence) arranged by directing polarization radially.

/env/optix/cfg4/rainbow-cfg4-spol.png

PMT Opticks/Geant4 step distribution comparison TO BT [SD]

Good agreement reached, after several fixes: geometry, total internal reflection, group velocity

/env/numerics/npy/PmtInBox_TOBTSD_xyzt.png

position(xyz), time(t)

/env/numerics/npy/PmtInBox_TOBTSD_abcr.png

polarization(abc), radius(r)

PMT Opticks/Geant4 step distribution comparison : chi2/ndf

4/PMT In Box/torch : X Y Z T A B C R
340271/340273 : [TO] BT SA 1.15 1.00 0.00 0.00 1.06 1.03 0.00 1.21
340271/340273 : TO [BT] SA 1.15 1.00 1.06 0.91 1.06 1.03 0.00 1.21
340271/340273 : TO BT [SA] 0.97 1.02 1.05 0.99 1.06 1.03 0.00 1.29
107598/107251 : [TO] BT SD 0.91 0.73 0.56 0.56 0.98 1.09 0.56 0.94
107598/107251 : TO [BT] SD 0.91 0.73 0.81 0.93 0.98 1.09 0.56 0.94
107598/107251 : TO BT [SD] 0.99 0.83 0.97 0.99 0.98 1.09 0.56 0.93
23217/23260 : [TO] BT BT SA 0.94 0.82 0.04 0.04 0.97 0.89 0.04 0.57
23217/23260 : TO [BT] BT SA 0.94 0.82 0.70 0.50 0.97 0.89 0.04 0.57
23217/23260 : TO BT [BT] SA 0.91 0.94 0.43 0.60 0.97 0.89 0.04 0.05
23217/23260 : TO BT BT [SA] 0.94 0.88 0.04 0.35 0.97 0.89 0.04 0.72
18866/19048 : [TO] AB 0.99 1.10 0.87 0.87 0.85 0.84 0.87 1.00
18866/19048 : TO [AB] 0.99 1.10 0.93 0.92 0.85 0.84 0.87 1.00
3179/3133 : [TO] SC SA 1.07 0.83 0.34 0.34 0.86 0.96 0.34 0.73
3179/3133 : TO [SC] SA 1.07 0.83 0.98 1.05 0.98 1.06 0.98 0.73
3179/3133 : TO SC [SA] 0.96 1.04 0.93 0.97 0.98 1.06 0.98 1.10
2204/2249 : [TO] BT AB 0.85 1.04 0.45 0.45 0.99 0.92 0.45 1.06
2204/2249 : TO [BT] AB 0.85 1.04 0.95 0.88 0.99 0.92 0.45 1.06
2204/2249 : TO BT [AB] 0.98 0.94 1.01 1.00 0.99 0.92 0.45 0.90
1696/1732 : [TO] BT BT AB 1.05 0.85 0.38 0.38 0.86 1.09 0.38 0.26
1696/1732 : TO [BT] BT AB 1.05 0.85 1.48 1.28 0.86 1.09 0.38 0.26
1696/1732 : TO BT [BT] AB 0.99 0.86 1.17 1.40 0.86 1.09 0.38 0.86
1696/1732 : TO BT BT [AB] 1.15 0.88 1.08 1.06 0.86 1.09 0.38 0.79
1446/1455 : [TO] BR SA 1.21 0.94 0.03 0.03 0.90 0.87 0.03 1.09
1446/1455 : TO [BR] SA 1.21 0.94 1.02 1.01 0.90 0.87 0.03 1.09
1446/1455 : TO BR [SA] 1.00 0.93 0.97 0.99 0.90 0.87 0.03 1.04

Photon Propagation Times Geant4 cf Opticks

/env/optix/cfg4/PmtInBox-cfg4-2.png
Test Geant4 10.2 Opticks Interop Opticks Compute
Rainbow 1M(S) 56 s 1.62 s 0.28 s
Rainbow 1M(P) 58 s 1.71 s 0.25 s
PmtInBox 0.5M 41 s 0.81 s 0.15 s

[1] MacBook Pro (2013), NVIDIA GeForce GT 750M, 2048 MB, 384 cores

Opticks Event Buffers

Required GPU Buffers

genstep
(n_genstep,6,4) float32: parameters of Cerenkov, Scintillation or Torch genstep. Steps collected from Geant4 are copied to GPU.
seed
(n_photon, 1) uint32, genstep_id for each photon : associates gensteps to photons
photon
(n_photon,4,4) float32: position, time, direction, polarization, wavelength, flags

Debug GPU Buffers

sequence
(n_photon, 1, 2) uint64 : up to 16 flag and material codes packed into 2*64bits
record
(n_photon, 16, 2, 4) int16 : up to 16 propagation points : highly compressed position, time, polarization, wavelength, flags

CPU Buffers

hit
(n_hit, 4,4) float32 : only photons that hit PMTs copied back to CPU

Time/Memory profile of multi-event production mode running

tpmt-;tpmt--  --compute --multievent 10  --production    # 10x 0.5M photons incident on PMT

2016-11-30 23:00:51.446 INFO  [224583] [TimesTable::dump@103] Opticks::postpropagate filter: NONE

2.656           2.656          2.656      30501.000      30501.000 : OpticksRun::createEvent.BEG_0
0.008           2.664          0.008      30504.000          3.000 : OpSeeder::seedPhotonsFromGenstepsViaOptiX_0
0.367           3.031          0.367      30675.000        171.000 : OPropagator::prelaunch_0
0.070           3.102          0.070      30675.000          0.000 : OPropagator::launch_0
0.031           3.133          0.031      30682.000          7.000 : OEvent::downloadHits_0
0.008           3.141          0.008      30682.000          0.000 : OpticksRun::resetEvent.END_0

0.070           3.211          0.070      30682.000          0.000 : OPropagator::launch_1
0.031           3.242          0.031      30689.000          7.000 : OEvent::downloadHits_1
0.008           3.250          0.008      30689.000          0.000 : OpticksRun::resetEvent.END_1

0.070           3.320          0.070      30689.000          0.000 : OPropagator::launch_2
0.023           3.344          0.023      30696.000          7.000 : OEvent::downloadHits_2
0.008           3.352          0.008      30696.000          0.000 : OpticksRun::saveEvent.END_2
0.008           3.359          0.008      30696.000          0.000 : OpticksRun::resetEvent.END_2

...

Time/Memory profile of multi-event production mode running (2)


2016-11-30 23:00:51.447 INFO  [224583] [TimesTable::dump@103] Opticks::postpropagate filter: OPropagator::launch

3.102           3.102          0.070      30675.000          0.000 : OPropagator::launch_0
0.109           3.211          0.070      30682.000          0.000 : OPropagator::launch_1
0.109           3.320          0.070      30689.000          0.000 : OPropagator::launch_2
0.109           3.430          0.070      30696.000          0.000 : OPropagator::launch_3
0.109           3.539          0.070      30703.000          0.000 : OPropagator::launch_4
0.102           3.641          0.070      30710.000          0.000 : OPropagator::launch_5
0.109           3.750          0.070      30716.000          0.000 : OPropagator::launch_6
0.102           3.852          0.070      30723.000          0.000 : OPropagator::launch_7
0.102           3.953          0.062      30730.000          0.000 : OPropagator::launch_8
0.102           4.055          0.062      30737.000          0.000 : OPropagator::launch_9

tconcentric : test geometry configured via boundaries

tconcentric-testconfig(){
    local test_config=(
        mode=BoxInBox
        analytic=1
        shape=sphere boundary=StainlessSteel///Acrylic         parameters=0,0,0,$(( 5000 + 5 ))
        shape=sphere boundary=Acrylic//RSOilSurface/MineralOil parameters=0,0,0,$(( 5000 - 5 ))
        shape=sphere boundary=MineralOil///Acrylic             parameters=0,0,0,$(( 4000 + 5 ))
        shape=sphere boundary=Acrylic///LiquidScintillator     parameters=0,0,0,$(( 4000 - 5 ))
        shape=sphere boundary=LiquidScintillator///Acrylic     parameters=0,0,0,$(( 3000 + 5 ))
        shape=sphere boundary=Acrylic///GdDopedLS              parameters=0,0,0,$(( 3000 - 5 ))
    )
    echo "$(join _ ${test_config[@]})"
}

https://bitbucket.org/simoncblyth/opticks/src/tip/tests/tconcentric.bash

tconcentric : fixed polarization "Torch" light source

Torch source: 1M 430nm photons (+Y polarized) shot down X axis

tconcentric-torchconfig(){
    local torch_config=(
                 type=point
                 photons=1000000
                 mode=fixpol         polarization=0,1,0
                 source=0,0,0        target=1,0,0
                 material=GdDopedLS  wavelength=430
                 weight=1.0
                 time=0.1
                 zenithazimuth=0,1,0,1
                 radius=0
               )
    echo "$(join _ ${torch_config[@]})"
}

https://bitbucket.org/simoncblyth/opticks/src/tip/tests/tconcentric.bash

tconcentric : spherical GdLS/LS/MineralOil

/env/presentation/tconcentric-8cccccccc9ccccd.png

tconcentric : Opticks/Geant4 chi2 comparison

.      seqhis_ana  1:concentric   -1:concentric     c2
.                       1000000   1000000       373.13/356 =  1.05  (pval:0.256 prob:0.744)
0000           8ccccd    669843    670001             0.02  [6 ] TO BT BT BT BT SA
0001               4d     83950     84149             0.24  [2 ] TO AB
0002          8cccc6d     45490     44770             5.74  [7 ] TO SC BT BT BT BT SA
0003           4ccccd     28955     28718             0.97  [6 ] TO BT BT BT BT AB
0004             4ccd     23187     23170             0.01  [4 ] TO BT BT AB
0005          8cccc5d     20238     20140             0.24  [7 ] TO RE BT BT BT BT SA
0006          8cc6ccd     10214     10357             0.99  [7 ] TO BT BT SC BT BT SA
0007          86ccccd     10176     10318             0.98  [7 ] TO BT BT BT BT SC SA
0008          89ccccd      7540      7710             1.90  [7 ] TO BT BT BT BT DR SA
0009         8cccc55d      5976      5934             0.15  [8 ] TO RE RE BT BT BT BT SA
0010              45d      5779      5766             0.01  [3 ] TO RE AB
0011  8cccccccc9ccccd      5339      5269             0.46  [15] TO BT BT BT BT DR BT BT BT BT BT BT BT BT SA
0012          8cc5ccd      5111      4940             2.91  [7 ] TO BT BT RE BT BT SA
0013              46d      4797      4886             0.82  [3 ] TO SC AB
0014      8cccc9ccccd      4494      4469             0.07  [11] TO BT BT BT BT DR BT BT BT BT SA
0015      8cccccc6ccd      3317      3302             0.03  [11] TO BT BT SC BT BT BT BT BT BT SA
0016         8cccc66d      2670      2675             0.00  [8 ] TO SC SC BT BT BT BT SA
0017          49ccccd      2432      2383             0.50  [7 ] TO BT BT BT BT DR AB
0018          4cccc6d      2043      1991             0.67  [7 ] TO SC BT BT BT BT AB
0019            4cc6d      1755      1826             1.41  [5 ] TO SC BT BT AB

Top 20 chart above, (category 100 down to ~100 photons for propagation of 1M photons)

tconcentric : Opticks/Geant4 history counts chi2/df ~ 1.0

Match achieved between two optical simulations, run from single executable

CPU
Daya Bay detsim optical physics updated to G4 10.2
GPU
above ported to CUDA/OptiX

Match achieved only after many bug fixes, including:

Work guided by the next largest chi2 contributor

https://bugzilla-geant4.kek.jp/show_bug.cgi?id=1275

Group Velocity problems -> Time shifts

Group velocity approximated using "E dn/dE" dispersion term.


            c                         dn  dE          dn          n1 - n0           delta_n
vg =  --------------- ,    E dn/dE =  --  --     ~  --------  ~  -----------   ~   -----------
        n + E dn/dE                   dE  dlogE      d(logE)     logE1 - logE0      log(E1/E0)

///         0  +  1  +  2  +  3  +  4  +  5        <--- 6 original values
///         |    /     /     /     /      |
///         |   /     /     /     /       |
///         0  1     2     3     4        5        <--- still 6, dispersion term domain

Find photon tracks require UseGivenVelocity=true to get proposed velocity to be used.

// eg from the G4TrackAction
const_cast(track)->UseGivenVelocity(true)

tconcentric : "Unbiased" Scattering : TO SC ..

In [1]: ab.sel = "TO SC .." ; print ab.his
Out[1]:
.        seqhis_ana  1:concentric   -1:concentric      c2
.                         66489     66126        73.48/67 =  1.10  (pval:0.274 prob:0.726)
0000          8cccc6d     45490     44770             5.74  [7 ] TO SC BT BT BT BT SA
0001              46d      4797      4886             0.82  [3 ] TO SC AB
0002         8cccc66d      2670      2675             0.00  [8 ] TO SC SC BT BT BT BT SA
0003          4cccc6d      2043      1991             0.67  [7 ] TO SC BT BT BT BT AB
0004            4cc6d      1755      1826             1.41  [5 ] TO SC BT BT AB
0005         8cccc56d      1158      1215             1.37  [8 ] TO SC RE BT BT BT BT SA
0006         8cc6cc6d       817       739             3.91  [8 ] TO SC BT BT SC BT BT SA
0007         86cccc6d       709       756             1.51  [8 ] TO SC BT BT BT BT SC SA
0008         89cccc6d       538       486             2.64  [8 ] TO SC BT BT BT BT DR SA
0009         8cc5cc6d       381       372             0.11  [8 ] TO SC BT BT RE BT BT SA
0010        8cccc556d       321       369             3.34  [9 ] TO SC RE RE BT BT BT BT SA
0011 8cccccccc9cccc6d       348       367             0.50  [16] TO SC BT BT BT BT DR BT BT BT BT BT BT BT BT SA
0012             456d       292       330             2.32  [4 ] TO SC RE AB
0013     8cccc9cccc6d       316       319             0.01  [12] TO SC BT BT BT BT DR BT BT BT BT SA
0014             466d       277       302             1.08  [4 ] TO SC SC AB
0015     8cccccc6cc6d       255       243             0.29  [12] TO SC BT BT SC BT BT BT BT BT BT SA
0016         49cccc6d       162       158             0.05  [8 ] TO SC BT BT BT BT DR AB
0017        8cccc666d       143       156             0.57  [9 ] TO SC SC SC BT BT BT BT SA
0018     8cccc6cccc6d       121       135             0.77  [12] TO SC BT BT BT BT SC BT BT BT BT SA
0019 8cccccccc6cccc6d       126       108             1.38  [16] TO SC BT BT BT BT SC BT BT BT BT BT BT BT BT SA

tconcentric : "Unbiased" Scattering : TO SC .. polarization

/env/presentation/tconcentric_to_sc_xx.png

Outgoing polarization

tconcentric : Opticks/Geant4 distrib chi2/df ~ 1.0

XYZT:position/time ABCW:polarization/wavelength

iv is na nb reclab X Y Z T A B C W seqc2 distc2
26 5 20238 20140 TO [RE] BT BT BT BT SA 0.85 0.00 0.00 1.31 1.12 1.37 1.10 0.78 0.24 1.10
27 5 20238 20140 TO RE [BT] BT BT BT SA 2.14 2.26 0.80 1.08 1.15 0.82 0.76 0.78 0.24 1.18
28 5 20238 20140 TO RE BT [BT] BT BT SA 2.01 2.23 0.79 0.83 1.17 0.83 0.83 0.78 0.24 1.17
29 5 20238 20140 TO RE BT BT [BT] BT SA 2.66 4.37 1.13 0.49 1.20 0.81 0.79 0.78 0.24 1.68
30 5 20238 20140 TO RE BT BT BT [BT] SA 2.56 4.48 1.19 1.04 1.12 0.97 0.91 0.78 0.24 1.75
31 5 20238 20140 TO RE BT BT BT BT [SA] 3.18 5.17 1.23 0.48 1.12 0.97 0.91 0.78 0.24 2.06
38 6 10214 10357 TO BT BT SC BT BT [SA] 0.79 1.37 1.43 0.55 1.00 1.33 0.97 0.00 0.99 1.16
52 8 7540 7710 TO BT BT BT BT DR [SA] 1.70 1.32 1.48 1.49 1.12 1.03 1.37 0.00 1.90 1.28
56 9 5976 5934 TO RE RE [BT] BT BT BT SA 1.26 1.51 1.21 2.36 0.99 1.40 1.10 1.65 0.15 1.24
57 9 5976 5934 TO RE RE BT [BT] BT BT SA 1.23 1.39 1.25 2.31 0.98 1.45 0.98 1.65 0.15 1.21
58 9 5976 5934 TO RE RE BT BT [BT] BT SA 1.24 0.98 1.18 1.88 0.97 1.39 1.01 1.65 0.15 1.14
59 9 5976 5934 TO RE RE BT BT BT [BT] SA 1.24 0.90 1.04 1.83 0.93 1.55 0.92 1.65 0.15 1.11
60 9 5976 5934 TO RE RE BT BT BT BT [SA] 0.95 1.03 1.50 3.12 0.93 1.55 0.92 1.65 0.15 1.18
69 11 5339 5269 TO BT BT BT BT [DR] BT BT BT BT BT BT BT BT SA 0.00 0.00 0.00 0.00 1.29 1.69 2.42 0.00 0.46 1.31
74 11 5339 5269 TO BT BT BT BT DR BT BT BT BT [BT] BT BT BT SA 1.10 1.45 1.02 0.67 1.42 0.83 1.38 0.00 0.46 1.12
75 11 5339 5269 TO BT BT BT BT DR BT BT BT BT BT [BT] BT BT SA 0.98 1.42 1.16 0.52 1.58 0.82 1.46 0.00 0.46 1.15
76 11 5339 5269 TO BT BT BT BT DR BT BT BT BT BT BT [BT] BT SA 1.46 1.66 0.79 0.65 1.69 0.89 1.46 0.00 0.46 1.21
77 11 5339 5269 TO BT BT BT BT DR BT BT BT BT BT BT BT [BT] SA 1.04 1.64 0.81 0.51 2.20 0.91 1.35 0.00 0.46 1.19
78 11 5339 5269 TO BT BT BT BT DR BT BT BT BT BT BT BT BT [SA] 1.10 1.56 0.73 0.21 2.20 0.91 1.35 0.00 0.46 1.17
85 12 5111 4940 TO BT BT RE BT BT [SA] 1.26 2.13 0.79 2.07 1.03 0.93 0.72 0.68 2.91 1.11
94 14 4494 4469 TO BT BT BT BT [DR] BT BT BT BT SA 0.00 0.00 0.00 0.00 1.90 3.74 1.95 0.00 0.07 2.01
95 14 4494 4469 TO BT BT BT BT DR [BT] BT BT BT SA 3.85 1.83 0.90 0.82 2.20 1.45 1.11 0.00 0.07 1.41
96 14 4494 4469 TO BT BT BT BT DR BT [BT] BT BT SA 1.94 1.82 1.07 0.85 2.67 1.30 1.08 0.00 0.07 1.39
97 14 4494 4469 TO BT BT BT BT DR BT BT [BT] BT SA 1.61 1.35 1.48 0.31 2.00 1.22 1.28 0.00 0.07 1.35
98 14 4494 4469 TO BT BT BT BT DR BT BT BT [BT] SA 1.96 1.31 1.39 0.66 2.13 1.03 1.42 0.00 0.07 1.36
99 14 4494 4469 TO BT BT BT BT DR BT BT BT BT [SA] 2.29 0.91 1.05 4.14 2.13 1.03 1.42 0.00 0.07 1.23
104 15 3317 3302 TO BT BT SC [BT] BT BT BT BT BT SA 0.60 1.02 1.75 1.92 0.77 1.23 1.39 0.00 0.03 1.20
105 15 3317 3302 TO BT BT SC BT [BT] BT BT BT BT SA 0.77 1.35 1.34 1.98 0.73 1.13 1.41 0.00 0.03 1.17
108 15 3317 3302 TO BT BT SC BT BT BT BT [BT] BT SA 1.48 1.01 1.73 0.51 0.85 1.00 1.05 0.00 0.03 1.15
124 17 2432 2383 TO BT BT BT BT [DR] AB 0.00 0.00 0.00 0.00 1.64 0.92 0.71 0.00 0.50 1.20
140 20 1815 1805 TO RE [RE] RE BT BT BT BT SA 1.80 0.56 1.73 0.59 1.31 1.20 1.42 0.60 0.03 1.26
141 20 1815 1805 TO RE RE [RE] BT BT BT BT SA 1.30 1.02 2.24 1.02 1.09 1.06 1.17 1.07 0.03 1.15
144 20 1815 1805 TO RE RE RE BT BT [BT] BT SA 1.05 1.32 1.03 0.53 0.93 1.31 1.12 1.07 0.03 1.10
222 29 1105 1168 TO BT BT RE BT BT [BT] BT BT BT SA 2.42 2.53 2.26 2.49 1.29 1.25 0.65 1.08 1.75 1.65
223 29 1105 1168 TO BT BT RE BT BT BT [BT] BT BT SA 2.32 2.44 1.98 2.38 1.03 1.07 0.72 1.08 1.75 1.53
224 29 1105 1168 TO BT BT RE BT BT BT BT [BT] BT SA 3.13 2.49 1.32 1.34 1.11 1.23 0.69 1.08 1.75 1.56
225 29 1105 1168 TO BT BT RE BT BT BT BT BT [BT] SA 2.83 2.44 1.36 1.06 0.92 1.08 0.69 1.08 1.75 1.47
226 29 1105 1168 TO BT BT RE BT BT BT BT BT BT [SA] 3.24 3.21 1.03 2.18 0.92 1.08 0.69 1.08 1.75 1.59
241 31 1067 1013 TO BT BT BT BT DR [BT] BT AB 1.25 1.53 0.80 0.27 2.03 0.90 1.40 0.00 1.40 1.27
242 31 1067 1013 TO BT BT BT BT DR BT [BT] AB 1.30 1.88 0.76 0.37 1.44 0.95 1.38 0.00 1.40 1.18
248 32 1036 988 TO RE BT BT [AB] 1.00 1.78 1.69 1.55 0.62 0.87 0.86 1.33 1.14 1.13

OpticksDocs

Summary

/env/presentation/1px.png

Opticks enables Geant4 based simulations to benefit from optical photon simulation taking effectively zero time and zero CPU memory, thanks to massive parallelism made accessible by NVIDIA OptiX.

/env/presentation/1px.png
  • The more photons the bigger the overall speedup (99% -> 100x)
  • Drastic speedup -> better detector understanding -> greater precision
  • Large PMT based neutrino experiments, such as JUNO, can benefit the most
/env/presentation/1px.png

https://bitbucket.org/simoncblyth/opticks

YouTube Video

https://www.youtube.com/watch?v=CBpOha4RzIs