Basic/B4a Example

This example simulates a simple Sampling Calorimeter setup. To demonstrate several possible ways of data scoring, the example is provided in four variants: %B4a, %B4b, %B4c, %B4d. See README file for the example.

Note that

You can also download this example as a Jupyter notebook and a plain Julia source file.

Table of contents

Loading the necessary Julia modules

Load the Geant4 and Geant4.SystemOfUnits modules.

using Geant4
using Geant4.SystemOfUnits:  cm, cm3, mm, pGy, eplus, keV, g, eV, MeV, mole
using FHist, Plots

# to force loading G4Vis extension we need to load the following module
using CairoMakie

Define Detector Parameters struct

The B4Detector structure is defined with the default detector parameters.

mutable struct B4aDetector <: G4JLDetector
    # main input parameters
    const nofLayers::Int
    const checkOverlaps::Bool
    const absoThickness::Float64
    const gapThickness::Float64
    const calorSizeXY::Float64

    # constructor with defaults values for parameters
    function B4aDetector(;      nofLayers::Int=10,
                                checkOverlaps::Bool=true,
                                absoThickness::Float64=10mm,
                                gapThickness::Float64=5mm,
                                calorSizeXY::Float64=10cm)
            self = new(nofLayers, checkOverlaps, absoThickness, gapThickness, calorSizeXY)
        return self
    end
end
_layerThickness(d::B4aDetector) = d.absoThickness + d.gapThickness
_calorThickness(d::B4aDetector) = d.nofLayers * _layerThickness(d)
_worldSizeZ(d::B4aDetector) = 1.2 * _calorThickness(d)
_worldSizeXY(d::B4aDetector) = 1.2 * d.calorSizeXY
_worldSizeXY (generic function with 1 method)

Defining the geometry constructor

function B4aConstruct(det::B4aDetector)::CxxPtr{G4VPhysicalVolume}
    (; nofLayers, checkOverlaps, absoThickness, gapThickness, calorSizeXY) = det
    nist = G4NistManager!Instance()


    layerThickness = _layerThickness(det)
    calorThickness = _calorThickness(det)
    worldSizeXY = _worldSizeXY(det)
    worldSizeZ = _worldSizeZ(det)

    G4Material("liquidArgon", z = 18., a = 30.95g/mole, density = 1.390g/cm3)

    defaultMaterial = FindOrBuildMaterial(nist, "G4_Galactic")
    absorberMaterial = FindOrBuildMaterial(nist, "G4_Pb")
    gapMaterial = FindOrBuildMaterial(nist, "liquidArgon")



    worldS = G4Box("World", 0.5 * worldSizeXY, 0.5 * worldSizeXY, 0.5 * worldSizeZ)

    worldLV = G4LogicalVolume(worldS, defaultMaterial, "WorldLV")

    worldPV = G4PVPlacement(nothing,          # no rotation
                            G4ThreeVector(),  # at (0,0,0)
                            worldLV,          # its logical volume
                            "World",          # its name
                            nothing,          # its mother volume
                            false,            # no boolean operation
                            0,                # copy number
                            checkOverlaps)    # overlaps checking

##---------------------------------------
    calorimeterS = G4Box("Calorimeter", 0.5 * calorSizeXY, 0.5 * calorSizeXY, 0.5 * calorThickness)


    calorLV = G4LogicalVolume(calorimeterS, defaultMaterial, "CalorLV")

    println(calorLV)

    G4PVPlacement(nothing,
                    G4ThreeVector(),
                    calorLV,
                    "CalorPV",
                    worldLV,
                    false,
                    0,
                    checkOverlaps)
##----------------------------------------------

     layerS = G4Box("Layer",
                    0.5*calorSizeXY, 0.5*calorSizeXY, 0.5*layerThickness)

     layerLV = G4LogicalVolume(layerS,
                           defaultMaterial,
                           "Layer")

    G4PVReplica("Layer",
                  layerLV,
                  calorLV,
                  kZAxis,
                  nofLayers,
                  layerThickness)

##---------------------------------------------------
   absorberS = G4Box("Abso",
                      0.5*calorSizeXY, 0.5*calorSizeXY, 0.5*absoThickness)

    absorberLV = G4LogicalVolume(absorberS, absorberMaterial, "AbsoLV")

    G4PVPlacement(nothing,
                  G4ThreeVector(0., 0., -0.5*gapThickness),
                    absorberLV,
                    "AbsPV",
                    layerLV,
                    false,
                    0,
                    checkOverlaps)
##--------------------------------------

  gapS = G4Box("Gap", 0.5*calorSizeXY, 0.5*calorSizeXY, 0.5*gapThickness)

  gapLV = G4LogicalVolume(gapS, gapMaterial, "Gap")

  G4PVPlacement(nothing,
                G4ThreeVector(0., 0., 0.5*absoThickness),
                gapLV,
                "GapPV",
                layerLV,
                false,
                0,
                checkOverlaps)


##------------------------------------------
##Visualization attributes
    SetVisAttributes(worldLV, G4VisAttributes!GetInvisible())
    SetVisAttributes(calorLV, G4VisAttributes!GetInvisible())

return worldPV              # return a pointer to the G4PhysicalVolume
end
B4aConstruct (generic function with 1 method)

Instantiate the detector

detector = B4aDetector()
Main.var"##277".B4aDetector(10, true, 10.0, 5.0, 100.0)

Primary Particle Generator

worldZHalfLength = _worldSizeZ(detector)/2
particlegun = G4JLGunGenerator(particle = "e-",
                               energy = 300MeV,
                               direction = G4ThreeVector(0., 0., 1.),
                               position = G4ThreeVector(0,0,-worldZHalfLength))
Geant4.G4JLGunGenerator("ParticleGun", Geant4.G4JLParticleGunData(nothing, "e-", G4ThreeVector(0.0,0.0,1.0), G4ThreeVector(0.0,0.0,-90.0), 300.0), Geant4.var"#init#19"(), Geant4.var"#gen#20"(), Geant4.G4JLGeneratorAction[])

Defining the simulation data

const Hist1D64 = Hist1D{Float64}
mutable struct B4aSimData <: G4JLSimulationData
    fEnergyDeposit_Abs::Float64
    fEnergyDeposit_Gap::Float64

    fStepLength_Abs::Float64
    fStepLength_Gap::Float64

    fEdepHist_Abs::Hist1D64
    fStepLenHist_Abs::Hist1D64

    fEdepHist_Gap::Hist1D64
    fStepLenHist_Gap::Hist1D64

    B4aSimData() = new()
end

User Actions

Begin Run Action

function beginrun(run::G4Run, app::G4JLApplication)::Nothing
    data = getSIMdata(app)

    data.fEdepHist_Abs = Hist1D(;binedges=100.:1.:300.)
    data.fStepLenHist_Abs = Hist1D(;binedges=0.:2.:500.)

    data.fEdepHist_Gap = Hist1D(;binedges=0.:1.:200.)
    data.fStepLenHist_Gap = Hist1D(;binedges=0.:2.:500.)
    nothing
end
beginrun (generic function with 1 method)

End Run Action

function endrun(run::G4Run, app::G4JLApplication)::Nothing
    nothing
end
endrun (generic function with 1 method)

Begin Event Action

function beginevent(evt::G4Event, app::G4JLApplication)
    G4JL_println("===============started event $(evt |> GetEventID)")
    data = getSIMdata(app)
    data.fEnergyDeposit_Abs = 0.0
    data.fStepLength_Abs = 0.0

    data.fEnergyDeposit_Gap = 0.0
    data.fStepLength_Gap = 0.0
    return
end
beginevent (generic function with 1 method)

###End event action

function endevent(evt::G4Event, app::G4JLApplication)
    data = getSIMdata(app)
#     G4JL_println("AbsEdep: $(data.fEnergyDeposit_Abs)")
#     println("AbsStepLength: ", data.fStepLength_Abs)

    push!(data.fEdepHist_Abs, data.fEnergyDeposit_Abs)
    push!(data.fStepLenHist_Abs, data.fStepLength_Abs)

    push!(data.fEdepHist_Gap, data.fEnergyDeposit_Gap)
    push!(data.fStepLenHist_Gap, data.fStepLength_Gap)

    println("Total Energy deposited in Absorber: ",data.fEnergyDeposit_Abs)
    println("Total Energy deposited in Gaps: ", data.fEnergyDeposit_Gap)
    G4JL_println("================event ended $(evt |> GetEventID) \n")
    return
end
endevent (generic function with 1 method)

Stepping Action

function stepaction(step::G4Step, app::G4JLApplication)
    data = getSIMdata(app)

    volume = step |> GetPreStepPoint |> GetPhysicalVolume |> GetName
    edep = step |> GetTotalEnergyDeposit

    stepLength = 0
    if step |> GetTrack |> GetDefinition |> GetPDGCharge != 0.
        stepLength = step |> GetStepLength
    end

    if volume[] == "AbsPV"
        data.fEnergyDeposit_Abs += edep
        data.fStepLength_Abs += stepLength
    end

    if volume[] == "GapPV"
        data.fEnergyDeposit_Gap += edep
        data.fStepLength_Gap += stepLength
    end
    return
end
stepaction (generic function with 1 method)

Making the Application

evtdisplay   = G4JLEventDisplay(joinpath(@__DIR__, "B4aVisSettings.jl"))
Geant4.getConstructor(::B4aDetector)::Function = B4aConstruct
app = G4JLApplication(detector = detector,               # detector with parameters
                      simdata = B4aSimData(),            # simulation data
                      generator = particlegun,           # primary particle generator
                      nthreads = 0,                      # # of threads (0 = no MT)
                      physics_type = FTFP_BERT,          # what physics list to instantiate
                      evtdisplay   = evtdisplay,         # event display
                      stepaction_method = stepaction,
                      beginrunaction_method = beginrun,  # begin-run action (initialize counters and histograms)
                      endrunaction_method = endrun,
                      begineventaction_method=beginevent,
                      endeventaction_method = endevent
                     )

configure(app)
initialize(app)
Makie.LScene with 3 plots:
 ┣━ Makie.Axis3D{Tuple{Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}, Tuple{Float64, Float64}}}}
 ┣━ Makie.Mesh{Tuple{GeometryBasics.Mesh{3, Float64, GeometryBasics.NgonFace{3, GeometryBasics.OffsetInteger{-1, UInt32}}, (:position, :normal), Tuple{Vector{GeometryBasics.Point{3, Float64}}, Vector{GeometryBasics.Vec{3, Float32}}}, Vector{GeometryBasics.NgonFace{3, GeometryBasics.OffsetInteger{-1, UInt32}}}}}}
 ┗━ Makie.Mesh{Tuple{GeometryBasics.Mesh{3, Float64, GeometryBasics.NgonFace{3, GeometryBasics.OffsetInteger{-1, UInt32}}, (:position, :normal), Tuple{Vector{GeometryBasics.Point{3, Float64}}, Vector{GeometryBasics.Vec{3, Float32}}}, Vector{GeometryBasics.NgonFace{3, GeometryBasics.OffsetInteger{-1, UInt32}}}}}}

Run the Example

Run a single event and display it

# ui`/tracking/verbose 1`
beamOn(app,1)

Run for 100 events

beamOn(app, 100)
===============started event 0
Total Energy deposited in Absorber: 278.9625677014522
Total Energy deposited in Gaps: 16.692751208895988
================event ended 0 

===============started event 1
Total Energy deposited in Absorber: 276.60163321826985
Total Energy deposited in Gaps: 9.547458840365959
================event ended 1 

===============started event 2
Total Energy deposited in Absorber: 276.80287409853975
Total Energy deposited in Gaps: 15.558226447130346
================event ended 2 

===============started event 3
Total Energy deposited in Absorber: 277.24100902404643
Total Energy deposited in Gaps: 10.22248751913835
================event ended 3 

===============started event 4
Total Energy deposited in Absorber: 272.33476851940105
Total Energy deposited in Gaps: 17.017652106496858
================event ended 4 

===============started event 5
Total Energy deposited in Absorber: 278.70523951504714
Total Energy deposited in Gaps: 10.359085213094437
================event ended 5 

===============started event 6
Total Energy deposited in Absorber: 273.03971986266
Total Energy deposited in Gaps: 9.99712460393254
================event ended 6 

===============started event 7
Total Energy deposited in Absorber: 284.3963930191833
Total Energy deposited in Gaps: 13.83256388920901
================event ended 7 

===============started event 8
Total Energy deposited in Absorber: 281.96522242332503
Total Energy deposited in Gaps: 7.005216714010383
================event ended 8 

===============started event 9
Total Energy deposited in Absorber: 263.7500820133994
Total Energy deposited in Gaps: 21.328957066368506
================event ended 9 

===============started event 10
Total Energy deposited in Absorber: 264.62700850701276
Total Energy deposited in Gaps: 16.899523082724823
================event ended 10 

===============started event 11
Total Energy deposited in Absorber: 263.95978799467713
Total Energy deposited in Gaps: 13.029336640702162
================event ended 11 

===============started event 12
Total Energy deposited in Absorber: 272.5897410428116
Total Energy deposited in Gaps: 15.525860174068418
================event ended 12 

===============started event 13
Total Energy deposited in Absorber: 283.6368903908994
Total Energy deposited in Gaps: 10.755558119916907
================event ended 13 

===============started event 14
Total Energy deposited in Absorber: 284.0324335398999
Total Energy deposited in Gaps: 12.758585524137908
================event ended 14 

===============started event 15
Total Energy deposited in Absorber: 279.76857328012136
Total Energy deposited in Gaps: 0.9637819930347047
================event ended 15 

===============started event 16
Total Energy deposited in Absorber: 271.8439532263863
Total Energy deposited in Gaps: 7.421045140192891
================event ended 16 

===============started event 17
Total Energy deposited in Absorber: 278.7898270366619
Total Energy deposited in Gaps: 10.096320976478813
================event ended 17 

===============started event 18
Total Energy deposited in Absorber: 267.80239357424205
Total Energy deposited in Gaps: 12.829774708962956
================event ended 18 

===============started event 19
Total Energy deposited in Absorber: 249.1728374761768
Total Energy deposited in Gaps: 26.46647240468353
================event ended 19 

===============started event 20
Total Energy deposited in Absorber: 267.9131456107054
Total Energy deposited in Gaps: 26.959128988852733
================event ended 20 

===============started event 21
Total Energy deposited in Absorber: 258.6675079318919
Total Energy deposited in Gaps: 23.761939621250978
================event ended 21 

===============started event 22
Total Energy deposited in Absorber: 248.19361625558702
Total Energy deposited in Gaps: 28.563712446321777
================event ended 22 

===============started event 23
Total Energy deposited in Absorber: 278.74493434646206
Total Energy deposited in Gaps: 15.270162024626305
================event ended 23 

===============started event 24
Total Energy deposited in Absorber: 255.11446643368052
Total Energy deposited in Gaps: 24.487454250350137
================event ended 24 

===============started event 25
Total Energy deposited in Absorber: 276.39733211174814
Total Energy deposited in Gaps: 7.5026859254006055
================event ended 25 

===============started event 26
Total Energy deposited in Absorber: 277.6068182282141
Total Energy deposited in Gaps: 10.786713324209957
================event ended 26 

===============started event 27
Total Energy deposited in Absorber: 271.32995995311387
Total Energy deposited in Gaps: 15.51668049910808
================event ended 27 

===============started event 28
Total Energy deposited in Absorber: 282.06653176372885
Total Energy deposited in Gaps: 11.710708324418384
================event ended 28 

===============started event 29
Total Energy deposited in Absorber: 263.5315788616418
Total Energy deposited in Gaps: 19.872772466111165
================event ended 29 

===============started event 30
Total Energy deposited in Absorber: 285.28983928426453
Total Energy deposited in Gaps: 6.720732452289041
================event ended 30 

===============started event 31
Total Energy deposited in Absorber: 286.40979872485724
Total Energy deposited in Gaps: 6.459006974136625
================event ended 31 

===============started event 32
Total Energy deposited in Absorber: 271.8875160021712
Total Energy deposited in Gaps: 20.72278071414535
================event ended 32 

===============started event 33
Total Energy deposited in Absorber: 261.4855331766012
Total Energy deposited in Gaps: 22.36779958460038
================event ended 33 

===============started event 34
Total Energy deposited in Absorber: 278.243927313398
Total Energy deposited in Gaps: 15.295684031662978
================event ended 34 

===============started event 35
Total Energy deposited in Absorber: 274.39195997369603
Total Energy deposited in Gaps: 19.73359365185989
================event ended 35 

===============started event 36
Total Energy deposited in Absorber: 273.03995561884204
Total Energy deposited in Gaps: 13.342635629003397
================event ended 36 

===============started event 37
Total Energy deposited in Absorber: 273.7583996938025
Total Energy deposited in Gaps: 16.073555570276447
================event ended 37 

===============started event 38
Total Energy deposited in Absorber: 273.44589833306503
Total Energy deposited in Gaps: 12.587210901211062
================event ended 38 

===============started event 39
Total Energy deposited in Absorber: 273.6255819347572
Total Energy deposited in Gaps: 13.602657998703409
================event ended 39 

===============started event 40
Total Energy deposited in Absorber: 267.7168887614282
Total Energy deposited in Gaps: 13.831228863086459
================event ended 40 

===============started event 41
Total Energy deposited in Absorber: 265.99743169866645
Total Energy deposited in Gaps: 19.31715582745737
================event ended 41 

===============started event 42
Total Energy deposited in Absorber: 279.58775975624235
Total Energy deposited in Gaps: 11.842671512707211
================event ended 42 

===============started event 43
Total Energy deposited in Absorber: 268.5161763398178
Total Energy deposited in Gaps: 10.85345005401602
================event ended 43 

===============started event 44
Total Energy deposited in Absorber: 281.26290989269677
Total Energy deposited in Gaps: 8.264013448372733
================event ended 44 

===============started event 45
Total Energy deposited in Absorber: 282.6763623404956
Total Energy deposited in Gaps: 9.823770643748231
================event ended 45 

===============started event 46
Total Energy deposited in Absorber: 281.0652637866788
Total Energy deposited in Gaps: 17.437539579977884
================event ended 46 

===============started event 47
Total Energy deposited in Absorber: 274.1227673330197
Total Energy deposited in Gaps: 13.815135170627824
================event ended 47 

===============started event 48
Total Energy deposited in Absorber: 270.4483252454017
Total Energy deposited in Gaps: 11.726631645661817
================event ended 48 

===============started event 49
Total Energy deposited in Absorber: 278.31522200231586
Total Energy deposited in Gaps: 17.095832571882053
================event ended 49 

===============started event 50
Total Energy deposited in Absorber: 286.59100864105096
Total Energy deposited in Gaps: 12.363169738912099
================event ended 50 

===============started event 51
Total Energy deposited in Absorber: 281.40206911460774
Total Energy deposited in Gaps: 13.932875855059219
================event ended 51 

===============started event 52
Total Energy deposited in Absorber: 287.73535819744836
Total Energy deposited in Gaps: 5.680033176892883
================event ended 52 

===============started event 53
Total Energy deposited in Absorber: 277.33202287964593
Total Energy deposited in Gaps: 14.924613262190546
================event ended 53 

===============started event 54
Total Energy deposited in Absorber: 283.4388891954278
Total Energy deposited in Gaps: 14.3771504536443
================event ended 54 

===============started event 55
Total Energy deposited in Absorber: 268.1591714754678
Total Energy deposited in Gaps: 15.432634380571502
================event ended 55 

===============started event 56
Total Energy deposited in Absorber: 286.27417479189546
Total Energy deposited in Gaps: 9.570109695602774
================event ended 56 

===============started event 57
Total Energy deposited in Absorber: 275.54323889802396
Total Energy deposited in Gaps: 17.352284880710844
================event ended 57 

===============started event 58
Total Energy deposited in Absorber: 280.9072852548116
Total Energy deposited in Gaps: 12.372671116493967
================event ended 58 

===============started event 59
Total Energy deposited in Absorber: 283.94924541919204
Total Energy deposited in Gaps: 12.300448098552716
================event ended 59 

===============started event 60
Total Energy deposited in Absorber: 278.7150204026316
Total Energy deposited in Gaps: 16.859806850633245
================event ended 60 

===============started event 61
Total Energy deposited in Absorber: 257.44534167161004
Total Energy deposited in Gaps: 20.26210860499519
================event ended 61 

===============started event 62
Total Energy deposited in Absorber: 260.6343891981114
Total Energy deposited in Gaps: 24.752044557601796
================event ended 62 

===============started event 63
Total Energy deposited in Absorber: 273.5460482538502
Total Energy deposited in Gaps: 12.716467951070252
================event ended 63 

===============started event 64
Total Energy deposited in Absorber: 269.4935107108541
Total Energy deposited in Gaps: 14.509292499030787
================event ended 64 

===============started event 65
Total Energy deposited in Absorber: 276.0751437572483
Total Energy deposited in Gaps: 11.838922438615285
================event ended 65 

===============started event 66
Total Energy deposited in Absorber: 273.04039160649126
Total Energy deposited in Gaps: 20.69914928883206
================event ended 66 

===============started event 67
Total Energy deposited in Absorber: 266.8346768922103
Total Energy deposited in Gaps: 15.987135353634981
================event ended 67 

===============started event 68
Total Energy deposited in Absorber: 268.6185896359574
Total Energy deposited in Gaps: 22.00774193965221
================event ended 68 

===============started event 69
Total Energy deposited in Absorber: 282.5806457398464
Total Energy deposited in Gaps: 9.139608267046306
================event ended 69 

===============started event 70
Total Energy deposited in Absorber: 260.2627812184814
Total Energy deposited in Gaps: 26.717137175528052
================event ended 70 

===============started event 71
Total Energy deposited in Absorber: 277.47449782299793
Total Energy deposited in Gaps: 12.523491301144876
================event ended 71 

===============started event 72
Total Energy deposited in Absorber: 288.2916227181573
Total Energy deposited in Gaps: 7.538106588107431
================event ended 72 

===============started event 73
Total Energy deposited in Absorber: 261.3360679629536
Total Energy deposited in Gaps: 11.34182582997181
================event ended 73 

===============started event 74
Total Energy deposited in Absorber: 262.69544784895055
Total Energy deposited in Gaps: 15.918509890052237
================event ended 74 

===============started event 75
Total Energy deposited in Absorber: 256.7525794873349
Total Energy deposited in Gaps: 16.973156451321568
================event ended 75 

===============started event 76
Total Energy deposited in Absorber: 245.82841375603817
Total Energy deposited in Gaps: 34.75458442445859
================event ended 76 

===============started event 77
Total Energy deposited in Absorber: 274.78091975138784
Total Energy deposited in Gaps: 11.605734373959114
================event ended 77 

===============started event 78
Total Energy deposited in Absorber: 247.9526848453783
Total Energy deposited in Gaps: 36.14087591297828
================event ended 78 

===============started event 79
Total Energy deposited in Absorber: 278.0289278929883
Total Energy deposited in Gaps: 13.38271013727827
================event ended 79 

===============started event 80
Total Energy deposited in Absorber: 275.53576766661683
Total Energy deposited in Gaps: 20.492617902305728
================event ended 80 

===============started event 81
Total Energy deposited in Absorber: 278.59489013608385
Total Energy deposited in Gaps: 8.049098763904732
================event ended 81 

===============started event 82
Total Energy deposited in Absorber: 277.97333076604355
Total Energy deposited in Gaps: 8.073041530333464
================event ended 82 

===============started event 83
Total Energy deposited in Absorber: 269.54909344237916
Total Energy deposited in Gaps: 11.797134844562912
================event ended 83 

===============started event 84
Total Energy deposited in Absorber: 287.92044745671836
Total Energy deposited in Gaps: 6.707315483901382
================event ended 84 

===============started event 85
Total Energy deposited in Absorber: 273.52267543021475
Total Energy deposited in Gaps: 16.553991608229538
================event ended 85 

===============started event 86
Total Energy deposited in Absorber: 277.92873342491026
Total Energy deposited in Gaps: 12.500590661249705
================event ended 86 

===============started event 87
Total Energy deposited in Absorber: 282.235035413069
Total Energy deposited in Gaps: 11.951406691740464
================event ended 87 

===============started event 88
Total Energy deposited in Absorber: 278.14332019886825
Total Energy deposited in Gaps: 12.452095940709977
================event ended 88 

===============started event 89
Total Energy deposited in Absorber: 267.3398721970215
Total Energy deposited in Gaps: 18.901332876382494
================event ended 89 

===============started event 90
Total Energy deposited in Absorber: 267.12348084707776
Total Energy deposited in Gaps: 21.578602677140584
================event ended 90 

===============started event 91
Total Energy deposited in Absorber: 275.1635170575331
Total Energy deposited in Gaps: 6.188677680372331
================event ended 91 

===============started event 92
Total Energy deposited in Absorber: 246.27330526986415
Total Energy deposited in Gaps: 25.42986524527871
================event ended 92 

===============started event 93
Total Energy deposited in Absorber: 279.380564868771
Total Energy deposited in Gaps: 15.036995468960198
================event ended 93 

===============started event 94
Total Energy deposited in Absorber: 278.2847558822711
Total Energy deposited in Gaps: 11.351994094854135
================event ended 94 

===============started event 95
Total Energy deposited in Absorber: 278.7025050669749
Total Energy deposited in Gaps: 15.08962343969336
================event ended 95 

===============started event 96
Total Energy deposited in Absorber: 267.6742338519374
Total Energy deposited in Gaps: 6.312413251204118
================event ended 96 

===============started event 97
Total Energy deposited in Absorber: 265.1476549738309
Total Energy deposited in Gaps: 19.09483436891269
================event ended 97 

===============started event 98
Total Energy deposited in Absorber: 259.96678704319515
Total Energy deposited in Gaps: 19.884334718770617
================event ended 98 

===============started event 99
Total Energy deposited in Absorber: 259.1537944053579
Total Energy deposited in Gaps: 12.708281178814
================event ended 99 

Plotting the histograms

data = getSIMdata(app)
lay = @layout [°; °; °; °]
img = Plots.plot(layout=lay, show=true, size=(800,1000))

Plots.plot!(subplot=1, data.fEdepHist_Abs, title="Total EDep in Absorber", xlabel="Edep (MeV)", label="Abs Edep", show=true)
Plots.plot!(subplot=2, data.fEdepHist_Gap, title="Total EDep in Gaps", xlabel="Edep (MeV)", label="Gap_Edep", show=true)

Plots.plot!(subplot=3, data.fStepLenHist_Abs, title="Total StepLeng in Absorbers", xlabel="Step Length (mm)", label="Abs_StepLen", show=true)
Plots.plot!(subplot=4, data.fStepLenHist_Gap, title="Total StepLeng in Gaps", xlabel="Step Length (mm)", label="Gap_StepLen", show=true)


This page was generated using Literate.jl.