diff --git a/src/KM3io.jl b/src/KM3io.jl index 12a6679052c1eed7dfc92342e2c8158094224d69..c3f8394fe4179e370b1cc88749f9a2fec44efba3 100644 --- a/src/KM3io.jl +++ b/src/KM3io.jl @@ -79,6 +79,8 @@ include("tools/helpers.jl") include("physics.jl") +include("displays.jl") + function __init__() @static if !isdefined(Base, :get_extension) diff --git a/src/displays.jl b/src/displays.jl new file mode 100644 index 0000000000000000000000000000000000000000..fb2fa9069295251eff1b97cc8fcdb719ceae437a --- /dev/null +++ b/src/displays.jl @@ -0,0 +1,60 @@ +description(::Type) = "" +hasdescription(T::Type) = description(T) != "" + +function Base.show(io::IO, p::T) where T<:Union{Position, Direction} + @printf(io, "%s(%.3f, %.3f, %.3f)", T, p...) +end + +# DetectorModule +function Base.show(io::IO, m::DetectorModule) + print_object(io, m, multiline = false) +end + +function Base.show(io::IO, ::MIME"text/plain", m::DetectorModule) + multiline = get(io, :multiline, true) + print_object(io, m, multiline = multiline) +end + +function print_object(io::IO, m::DetectorModule; multiline::Bool) + if multiline + info = isbasemodule(m) ? "base" : "optical, $(m.n_pmts) PMTs" + println(io, "DetectorModule $(m.id) ($(info))") + println(io, " Location: string $(m.location.string), floor $(m.location.floor)") + println(io, " Position: $(m.pos)") + print(io, " Time offset: $(m.tâ‚€) ns") + else + info = isbasemodule(m) ? "BM" : "DOM" + print(io, "$info($(m.id)") + @printf(io, ", S%03d F%02d)", m.location.string, m.location.floor) + end +end + + +# Detector +Base.show(io::IO, d::Detector) = print(io, "Detector $(d.id) (v$(d.version)) with $(length(d.strings)) strings and $(d.n_modules) modules.") + +# Evt +function Base.show(io::IO, e::Evt) + print(io, "$(typeof(e)) ($(length(e.hits)) hits, $(length(e.mc_hits)) MC hits, $(length(e.trks)) tracks, $(length(e.mc_trks)) MC tracks)") +end + +function Base.show(io::IO, ::MIME"text/plain", e::Evt) + println(io, "MC Event (Evt) ($(length(e.hits)) hits, $(length(e.mc_hits)) MC hits, $(length(e.trks)) tracks, $(length(e.mc_trks)) MC tracks)") + println(io, " ID: $(e.id)") + println(io, " Detector ID: $(e.det_id)") + println(io, " MC ID: $(e.mc_id)") + println(io, " MC event time: $(e.mc_event_time)") + println(io, " Primary particle: $(first(e.mc_trks))") +end + +description(::Type{Trk}) = "Reconstructed track" +description(::Type{MCTrk}) = "Monte Carlo track" + +function Base.show(io::IO, ::MIME"text/plain", obj::T) where T<:Union{Trk, MCTrk, PMT, AbstractCalibratedHit, AbstractDAQHit} + print(io, T) + hasdescription(T) && print(io, " ($(description(T)))") + for (fn, ft) in zip(fieldnames(T), fieldtypes(T)) + val = getfield(obj, fn) + print(io, "\n $(fn): $(val)") + end +end diff --git a/src/hardware.jl b/src/hardware.jl index 9e6901891a910bb1bd14a8d1b503db9e175684e6..e32a7dcb91a223e2643453e281975c2554142f6e 100644 --- a/src/hardware.jl +++ b/src/hardware.jl @@ -55,10 +55,6 @@ struct DetectorModule status::Int32 tâ‚€::Float64 end -function Base.show(io::IO, m::DetectorModule) - info = m.location.floor == 0 ? "base" : "optical, $(m.n_pmts) PMTs" - print(io, "Detectormodule ($(info)) on string $(m.location.string) floor $(m.location.floor)") -end Base.length(d::DetectorModule) = d.n_pmts Base.eltype(::Type{DetectorModule}) = PMT Base.iterate(d::DetectorModule, state=1) = state > d.n_pmts ? nothing : (d.pmts[state], state+1) @@ -287,7 +283,6 @@ end Return a vector of all modules of a given detector. """ modules(d::Detector) = collect(values(d.modules)) -Base.show(io::IO, d::Detector) = print(io, "Detector $(d.id) (v$(d.version)) with $(length(d.strings)) strings and $(d.n_modules) modules.") Base.length(d::Detector) = d.n_modules Base.eltype(::Type{Detector}) = DetectorModule function Base.iterate(d::Detector, state=(Int[], 1)) diff --git a/src/root/offline.jl b/src/root/offline.jl index 527036c843d4651cb11b9ab582b21d5eeee75eb8..2bcf756d8208eae073950e4c9fbd1852e3649bf9 100644 --- a/src/root/offline.jl +++ b/src/root/offline.jl @@ -136,9 +136,6 @@ struct Evt flags::Int64 usr::Dict{String, Float64} end -function Base.show(io::IO, e::Evt) - print(io, "$(typeof(e)) ($(length(e.hits)) hits, $(length(e.mc_hits)) MC hits, $(length(e.trks)) tracks, $(length(e.mc_trks)) MC tracks)") -end struct MCHeader _raw::Dict{String, String}