Skip to content
Snippets Groups Projects
Verified Commit 6820e96f authored by Tamas Gal's avatar Tamas Gal :speech_balloon:
Browse files

Restructure root/DAQ includes

parent a91cc13a
No related branches found
No related tags found
No related merge requests found
......@@ -24,8 +24,10 @@ end
include("types.jl")
include("hardware.jl")
include("daq.jl")
include("root/online.jl")
include("root/offline.jl")
include("acoustics.jl")
include("root.jl")
include("tools.jl")
......
# Online DAQ readout
function Base.read(s::IO, ::Type{T}; legacy=false) where T<:DAQEvent
length = read(s, Int32)
type = read(s, Int32)
version = Int16(0)
!legacy && (version = read(s, Int16))
det_id = read(s, Int32)
run_id = read(s, Int32)
timeslice_id = read(s, Int32)
_timestamp_field = read(s, UInt32)
whiterabbit_status = _timestamp_field & 0x80000000 # most significant bit
timestamp = _timestamp_field & 0x7FFFFFFF # skipping the most significant bit
ticks = read(s, UInt32)
trigger_counter = read(s, Int64)
trigger_mask = read(s, Int64)
overlays = read(s, Int32)
n_triggered_hits = read(s, Int32)
triggered_hits = Vector{TriggeredHit}()
sizehint!(triggered_hits, n_triggered_hits)
triggered_map = Dict{Tuple{Int32, UInt8, Int32, UInt8}, Int64}()
@inbounds for i 1:n_triggered_hits
dom_id = read(s, Int32)
channel_id = read(s, UInt8)
time = bswap(read(s, Int32))
tot = read(s, UInt8)
trigger_mask = read(s, Int64)
triggered_map[(dom_id, channel_id, time, tot)] = trigger_mask
push!(triggered_hits, TriggeredHit(dom_id, channel_id, time, tot, trigger_mask))
end
n_hits = read(s, Int32)
hits = Vector{Hit}()
sizehint!(hits, n_hits)
@inbounds for i 1:n_hits
dom_id = read(s, Int32)
channel_id = read(s, UInt8)
time = bswap(read(s, Int32))
tot = read(s, UInt8)
key = (dom_id, channel_id, time, tot)
triggered = false
if haskey(triggered_map, key)
triggered = true
end
push!(hits, Hit(channel_id, dom_id, time, tot, triggered))
end
T(det_id, run_id, timeslice_id, whiterabbit_status, timestamp, ticks, trigger_counter, trigger_mask, overlays, n_triggered_hits, triggered_hits, n_hits, hits)
end
struct OfflineFile end
struct KM3NETDAQSnapshotHit <: UnROOT.CustomROOTStruct
dom_id::Int32
channel_id::UInt8
......@@ -115,55 +113,3 @@ function read_triggered_hits(f::OnlineFile)
data, offsets = UnROOT.array(f.fobj, "KM3NET_EVENT/KM3NET_EVENT/triggeredHits"; raw=true)
UnROOT.splitup(data, offsets, KM3NETDAQTriggeredHit, skipbytes=10)
end
# Online DAQ readout
function Base.read(s::IO, ::Type{T}; legacy=false) where T<:DAQEvent
length = read(s, Int32)
type = read(s, Int32)
version = Int16(0)
!legacy && (version = read(s, Int16))
det_id = read(s, Int32)
run_id = read(s, Int32)
timeslice_id = read(s, Int32)
_timestamp_field = read(s, UInt32)
whiterabbit_status = _timestamp_field & 0x80000000 # most significant bit
timestamp = _timestamp_field & 0x7FFFFFFF # skipping the most significant bit
ticks = read(s, UInt32)
trigger_counter = read(s, Int64)
trigger_mask = read(s, Int64)
overlays = read(s, Int32)
n_triggered_hits = read(s, Int32)
triggered_hits = Vector{TriggeredHit}()
sizehint!(triggered_hits, n_triggered_hits)
triggered_map = Dict{Tuple{Int32, UInt8, Int32, UInt8}, Int64}()
@inbounds for i 1:n_triggered_hits
dom_id = read(s, Int32)
channel_id = read(s, UInt8)
time = bswap(read(s, Int32))
tot = read(s, UInt8)
trigger_mask = read(s, Int64)
triggered_map[(dom_id, channel_id, time, tot)] = trigger_mask
push!(triggered_hits, TriggeredHit(dom_id, channel_id, time, tot, trigger_mask))
end
n_hits = read(s, Int32)
hits = Vector{Hit}()
sizehint!(hits, n_hits)
@inbounds for i 1:n_hits
dom_id = read(s, Int32)
channel_id = read(s, UInt8)
time = bswap(read(s, Int32))
tot = read(s, UInt8)
key = (dom_id, channel_id, time, tot)
triggered = false
if haskey(triggered_map, key)
triggered = true
end
push!(hits, Hit(channel_id, dom_id, time, tot, triggered))
end
T(det_id, run_id, timeslice_id, whiterabbit_status, timestamp, ticks, trigger_counter, trigger_mask, overlays, n_triggered_hits, triggered_hits, n_hits, hits)
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment