Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
KM3io.jl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
common
KM3io.jl
Commits
2ca25a24
Verified
Commit
2ca25a24
authored
1 year ago
by
Tamas Gal
Browse files
Options
Downloads
Patches
Plain Diff
Add support for floor==-1 DETX bug
parent
7566e01e
Branches
Branches containing commit
No related tags found
1 merge request
!19
Add support for floor == -1 DETX bug
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Project.toml
+1
-1
1 addition, 1 deletion
Project.toml
src/hardware.jl
+20
-1
20 additions, 1 deletion
src/hardware.jl
test/hardware.jl
+146
-139
146 additions, 139 deletions
test/hardware.jl
with
167 additions
and
141 deletions
Project.toml
+
1
−
1
View file @
2ca25a24
...
...
@@ -20,7 +20,7 @@ UnROOT = "3cd96dde-e98d-4713-81e9-a4a1b0235ce9"
[compat]
DocStringExtensions
=
"0.8, 0.9"
HDF5
=
"^0.16.15, ^0.17"
KM3NeTTestData
=
"^0.4.
3
"
KM3NeTTestData
=
"^0.4.
8
"
StaticArrays
=
"1"
UnROOT
=
"^0.10.15"
julia
=
"1"
...
...
This diff is collapsed.
Click to expand it.
src/hardware.jl
+
20
−
1
View file @
2ca25a24
...
...
@@ -361,9 +361,27 @@ function Detector(io::IO)
locations
=
Dict
{
Tuple
{
Int
,
Int
},
DetectorModule
}()
strings
=
Int8
[]
# a counter to work around the floor == -1 bug in some older DETX files
floor_counter
=
1
last_string
=
-
1
for
mod
∈
1
:
n_modules
elements
=
split
(
lines
[
idx
])
module_id
,
string
,
floor
=
map
(
x
->
parse
(
Int
,
x
),
elements
[
1
:
3
])
# floor == -1 bug. We determine the floor position by assuming an ascending order
# of modules in the DETX file
if
floor
==
-
1
if
last_string
==
-
1
last_string
=
string
elseif
last_string
!=
string
floor_counter
=
1
last_string
=
string
end
floor
=
floor_counter
floor_counter
+=
1
end
if
!
(
string
in
strings
)
push!
(
strings
,
string
)
end
...
...
@@ -406,7 +424,8 @@ function Detector(io::IO)
t₀
=
mean
([
pmt
.
t₀
for
pmt
in
pmts
])
end
if
ismissing
(
t₀
)
&&
floor
==
0
# If t₀ is still missing, we default to 0.0
if
ismissing
(
t₀
)
t₀
=
0.0
end
...
...
This diff is collapsed.
Click to expand it.
test/hardware.jl
+
146
−
139
View file @
2ca25a24
...
...
@@ -6,169 +6,176 @@ using Dates
const
SAMPLES_DIR
=
joinpath
(
@__DIR__
,
"samples"
)
@testset
"io"
begin
@testset
"DETX parsing"
begin
for
version
∈
1
:
5
d
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(version)
.detx"
))
@testset
"DETX parsing"
begin
for
version
∈
1
:
5
d
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(version)
.detx"
))
@test
version
==
d
.
version
@test
version
==
d
.
version
mods
=
DetectorModule
[]
for
mod
in
d
push!
(
mods
,
mod
)
end
mods
=
DetectorModule
[]
for
mod
in
d
push!
(
mods
,
mod
)
end
if
version
<
4
# no base modules in DETX version <4
@test
342
==
length
(
d
)
@test
342
==
length
(
d
.
modules
)
@test
342
==
length
(
modules
(
d
))
@test
DetectorModule
==
eltype
(
d
)
else
@test
361
==
length
(
mods
)
@test
361
==
length
(
modules
(
d
))
@test
106.95
≈
d
.
modules
[
808469291
]
.
pos
.
y
# base module
@test
97.3720395
≈
d
.
modules
[
808974928
]
.
pos
.
z
# base module
@test
0.0
==
d
.
modules
[
808469291
]
.
t₀
# base module
end
if
version
<
4
# no base modules in DETX version <4
@test
342
==
length
(
d
)
@test
342
==
length
(
d
.
modules
)
@test
342
==
length
(
modules
(
d
))
@test
DetectorModule
==
eltype
(
d
)
else
@test
361
==
length
(
mods
)
@test
361
==
length
(
modules
(
d
))
@test
106.95
≈
d
.
modules
[
808469291
]
.
pos
.
y
# base module
@test
97.3720395
≈
d
.
modules
[
808974928
]
.
pos
.
z
# base module
@test
0.0
==
d
.
modules
[
808469291
]
.
t₀
# base module
end
@test
116.600
≈
d
.
modules
[
808992603
]
.
pos
.
x
atol
=
1e-5
# optical module
@test
116.600
≈
d
.
modules
[
808992603
]
.
pos
.
x
atol
=
1e-5
# optical module
if
version
>
3
@test
Quaternion
(
1
,
0
,
0
,
0
)
≈
d
.
modules
[
808995481
]
.
q
@test
19
==
length
(
collect
(
m
for
m
∈
d
if
isbasemodule
(
m
)))
@test
19
==
length
(
d
[
:
,
0
])
@test
19
==
length
(
d
[
30
,
:
])
@test
5
==
length
(
d
[
30
,
0
:
4
])
for
m
in
d
[
30
,
0
:
4
]
@test
m
.
location
.
floor
in
0
:
4
end
else
@test
0
==
length
(
collect
(
m
for
m
∈
d
if
isbasemodule
(
m
)))
@test
0
==
length
(
d
[
:
,
0
])
@test
18
==
length
(
d
[
30
,
:
])
@test
4
==
length
(
d
[
30
,
1
:
4
])
for
m
in
d
[
30
,
1
:
4
]
@test
m
.
location
.
floor
in
1
:
4
end
if
version
>
3
@test
Quaternion
(
1
,
0
,
0
,
0
)
≈
d
.
modules
[
808995481
]
.
q
@test
19
==
length
(
collect
(
m
for
m
∈
d
if
isbasemodule
(
m
)))
@test
19
==
length
(
d
[
:
,
0
])
@test
19
==
length
(
d
[
30
,
:
])
@test
5
==
length
(
d
[
30
,
0
:
4
])
for
m
in
d
[
30
,
0
:
4
]
@test
m
.
location
.
floor
in
0
:
4
end
if
version
>
4
# module status introduced in v5
@test
0
==
d
.
modules
[
808966287
]
.
status
else
@test
0
==
length
(
collect
(
m
for
m
∈
d
if
isbasemodule
(
m
)))
@test
0
==
length
(
d
[
:
,
0
])
@test
18
==
length
(
d
[
30
,
:
])
@test
4
==
length
(
d
[
30
,
1
:
4
])
for
m
in
d
[
30
,
1
:
4
]
@test
m
.
location
.
floor
in
1
:
4
end
end
if
version
>
1
@test
UTMPosition
(
587600
,
4016800
,
-
3450
)
≈
d
.
pos
@test
1654207200.0
==
datetime2unix
(
d
.
validity
.
from
)
@test
9999999999.0
==
datetime2unix
(
d
.
validity
.
to
)
end
if
version
>
4
# module status introduced in v5
@test
0
==
d
.
modules
[
808966287
]
.
status
end
@test
31
==
d
.
modules
[
808992603
]
.
n_pmts
@test
30
==
d
.
modules
[
817287557
]
.
location
.
string
@test
18
==
d
.
modules
[
817287557
]
.
location
.
floor
@test
Location
(
30
,
18
)
==
d
[
817287557
]
.
location
@test
817287557
==
d
[
30
,
18
]
.
id
@test
817287557
==
getmodule
(
d
,
30
,
18
)
.
id
@test
817287557
==
getmodule
(
d
,
(
30
,
18
))
.
id
@test
817287557
==
getmodule
(
d
,
Location
(
30
,
18
))
.
id
@test
19
==
length
(
d
[
:
,
18
])
for
m
in
d
[
:
,
17
]
@test
17
==
m
.
location
.
floor
end
for
m
in
d
[
:
,
1
:
4
]
@test
m
.
location
.
floor
in
1
:
4
end
if
version
>
1
@test
UTMPosition
(
587600
,
4016800
,
-
3450
)
≈
d
.
pos
@test
1654207200.0
==
datetime2unix
(
d
.
validity
.
from
)
@test
9999999999.0
==
datetime2unix
(
d
.
validity
.
to
)
end
@test
478392.31980645156
≈
d
.
modules
[
808992603
]
.
t₀
@test
31
==
d
.
modules
[
808992603
]
.
n_pmts
@test
30
==
d
.
modules
[
817287557
]
.
location
.
string
@test
18
==
d
.
modules
[
817287557
]
.
location
.
floor
@test
Location
(
30
,
18
)
==
d
[
817287557
]
.
location
@test
817287557
==
d
[
30
,
18
]
.
id
@test
817287557
==
getmodule
(
d
,
30
,
18
)
.
id
@test
817287557
==
getmodule
(
d
,
(
30
,
18
))
.
id
@test
817287557
==
getmodule
(
d
,
Location
(
30
,
18
))
.
id
@test
19
==
length
(
d
[
:
,
18
])
for
m
in
d
[
:
,
17
]
@test
17
==
m
.
location
.
floor
end
for
m
in
d
[
:
,
1
:
4
]
@test
m
.
location
.
floor
in
1
:
4
end
@test
9
==
d
.
strings
[
1
]
@test
30
==
d
.
strings
[
end
]
@test
19
==
length
(
d
.
strings
)
@test
478392.31980645156
≈
d
.
modules
[
808992603
]
.
t₀
@test
isapprox
([
116.60000547853453
,
106.95689770873874
,
60.463039635848226
],
d
.
modules
[
808992603
]
.
pos
;
atol
=
0.008
)
@test
9
==
d
.
strings
[
1
]
@test
30
==
d
.
strings
[
end
]
@test
19
==
length
(
d
.
strings
)
@test
78.3430067946102
≈
getpmt
(
d
[
15
,
13
],
0
)
.
pos
.
x
m
=
d
[
15
,
13
]
@test
m
.
n_pmts
==
length
(
getpmts
(
m
))
end
@test
isapprox
([
116.60000547853453
,
106.95689770873874
,
60.463039635848226
],
d
.
modules
[
808992603
]
.
pos
;
atol
=
0.008
)
comments
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v3.detx"
))
.
comments
@test
2
==
length
(
comments
)
@test
"This is a comment"
==
comments
[
1
]
@test
"This is another comment"
==
comments
[
2
]
@test
78.3430067946102
≈
getpmt
(
d
[
15
,
13
],
0
)
.
pos
.
x
m
=
d
[
15
,
13
]
@test
m
.
n_pmts
==
length
(
getpmts
(
m
))
end
@testset
"DETX writing"
begin
for
from_version
∈
1
:
5
for
to_version
∈
1
:
5
out
=
tempname
()
d₀
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(from_version)
.detx"
))
write
(
out
,
d₀
;
version
=
to_version
)
d
=
Detector
(
out
)
@test
length
(
d₀
)
==
length
(
d
)
if
to_version
>=
from_version
for
module_id
∈
collect
(
keys
(
d₀
.
modules
))[
:
23
]
@test
d₀
.
modules
[
module_id
]
.
pos
≈
d
.
modules
[
module_id
]
.
pos
if
from_version
>=
3
@test
d₀
.
modules
[
module_id
]
.
t₀
≈
d
.
modules
[
module_id
]
.
t₀
end
comments
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v3.detx"
))
.
comments
@test
2
==
length
(
comments
)
@test
"This is a comment"
==
comments
[
1
]
@test
"This is another comment"
==
comments
[
2
]
end
@testset
"DETX samples"
begin
for
fname
∈
readdir
(
datapath
(
"detx"
);
join
=
true
)
det
=
Detector
(
fname
)
for
m
∈
det
continue
end
@test
0
<
length
(
det
)
end
end
@testset
"DETX writing"
begin
for
from_version
∈
1
:
5
for
to_version
∈
1
:
5
out
=
tempname
()
d₀
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(from_version)
.detx"
))
write
(
out
,
d₀
;
version
=
to_version
)
d
=
Detector
(
out
)
@test
length
(
d₀
)
==
length
(
d
)
if
to_version
>=
from_version
for
module_id
∈
collect
(
keys
(
d₀
.
modules
))[
:
23
]
@test
d₀
.
modules
[
module_id
]
.
pos
≈
d
.
modules
[
module_id
]
.
pos
if
from_version
>=
3
@test
d₀
.
modules
[
module_id
]
.
t₀
≈
d
.
modules
[
module_id
]
.
t₀
end
end
end
end
end
@testset
"hydrophones"
begin
hydrophones
=
read
(
joinpath
(
SAMPLES_DIR
,
"hydrophone.txt"
),
Hydrophone
)
@test
19
==
length
(
hydrophones
)
@test
Location
(
10
,
0
)
==
hydrophones
[
1
]
.
location
@test
Position
(
0.770
,
-
0.065
,
1.470
)
≈
hydrophones
[
1
]
.
pos
@test
Location
(
28
,
0
)
==
hydrophones
[
end
]
.
location
@test
Position
(
0.770
,
-
0.065
,
1.470
)
≈
hydrophones
[
end
]
.
pos
end
end
@testset
"hydrophones"
begin
hydrophones
=
read
(
joinpath
(
SAMPLES_DIR
,
"hydrophone.txt"
),
Hydrophone
)
@test
19
==
length
(
hydrophones
)
@test
Location
(
10
,
0
)
==
hydrophones
[
1
]
.
location
@test
Position
(
0.770
,
-
0.065
,
1.470
)
≈
hydrophones
[
1
]
.
pos
@test
Location
(
28
,
0
)
==
hydrophones
[
end
]
.
location
@test
Position
(
0.770
,
-
0.065
,
1.470
)
≈
hydrophones
[
end
]
.
pos
end
@testset
"tripod"
begin
tripods
=
read
(
joinpath
(
SAMPLES_DIR
,
"tripod.txt"
),
Tripod
)
@test
6
==
length
(
tripods
)
@test
7
==
tripods
[
1
]
.
id
@test
Position
(
+
587198.628
,
+
4016228.693
,
-
3433.306
)
≈
tripods
[
1
]
.
pos
@test
13
==
tripods
[
end
]
.
id
@test
Position
(
+
587510.740
,
+
4016869.160
,
-
3451.700
)
≈
tripods
[
end
]
.
pos
end
@testset
"tripod"
begin
tripods
=
read
(
joinpath
(
SAMPLES_DIR
,
"tripod.txt"
),
Tripod
)
@test
6
==
length
(
tripods
)
@test
7
==
tripods
[
1
]
.
id
@test
Position
(
+
587198.628
,
+
4016228.693
,
-
3433.306
)
≈
tripods
[
1
]
.
pos
@test
13
==
tripods
[
end
]
.
id
@test
Position
(
+
587510.740
,
+
4016869.160
,
-
3451.700
)
≈
tripods
[
end
]
.
pos
end
@testset
"waveform"
begin
waveform
=
read
(
joinpath
(
SAMPLES_DIR
,
"waveform.txt"
),
Waveform
)
@test
10
==
length
(
waveform
.
ids
)
@test
waveform
.
ids
[
16
]
==
3
@test
waveform
.
ids
[
-
15
]
==
7
end
@testset
"waveform"
begin
waveform
=
read
(
joinpath
(
SAMPLES_DIR
,
"waveform.txt"
),
Waveform
)
@test
10
==
length
(
waveform
.
ids
)
@test
waveform
.
ids
[
16
]
==
3
@test
waveform
.
ids
[
-
15
]
==
7
end
@testset
"triggerparameter"
begin
trigger
=
read
(
joinpath
(
SAMPLES_DIR
,
"acoustics_trigger_parameters.txt"
),
AcousticsTriggerParameter
)
@test
trigger
.
q
==
0.0
@test
trigger
.
tmax
==
0.004
@test
trigger
.
nmin
==
90
end
@testset
"triggerparameter"
begin
trigger
=
read
(
joinpath
(
SAMPLES_DIR
,
"acoustics_trigger_parameters.txt"
),
AcousticsTriggerParameter
)
@test
trigger
.
q
==
0.0
@test
trigger
.
tmax
==
0.004
@test
trigger
.
nmin
==
90
end
@testset
"mechanics"
begin
mechanics
=
read
(
joinpath
(
SAMPLES_DIR
,
"mechanics.txt"
),
StringMechanics
)
@test
0.00094
≈
mechanics
[
1
]
.
a
@test
294.291
≈
mechanics
[
1
]
.
b
@test
0.00094
≈
mechanics
[
-
1
]
.
a
@test
294.291
≈
mechanics
[
-
1
]
.
b
@test
0.00094
≈
mechanics
[
42
]
.
a
@test
294.291
≈
mechanics
[
42
]
.
b
@test
5.6
≈
mechanics
[
5
]
.
a
@test
7.8
≈
mechanics
[
5
]
.
b
end
@testset
"mechanics"
begin
mechanics
=
read
(
joinpath
(
SAMPLES_DIR
,
"mechanics.txt"
),
StringMechanics
)
@test
0.00094
≈
mechanics
[
1
]
.
a
@test
294.291
≈
mechanics
[
1
]
.
b
@test
0.00094
≈
mechanics
[
-
1
]
.
a
@test
294.291
≈
mechanics
[
-
1
]
.
b
@test
0.00094
≈
mechanics
[
42
]
.
a
@test
294.291
≈
mechanics
[
42
]
.
b
@test
5.6
≈
mechanics
[
5
]
.
a
@test
7.8
≈
mechanics
[
5
]
.
b
end
@testset
"utilities"
begin
mod
=
DetectorModule
(
1
,
UTMPosition
(
0
,
0
,
0
),
Location
(
0
,
0
),
0
,
PMT
[],
missing
,
0
,
0
)
@test
hydrophoneenabled
(
mod
)
@test
piezoenabled
(
mod
)
for
version
∈
1
:
5
d
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(version)
.detx"
))
@test
isapprox
([
83.4620946059086
,
312.254188175614
,
377.8839470243232
],
center
(
d
);
atol
=
0.01
)
end
@testset
"utilities"
begin
mod
=
DetectorModule
(
1
,
UTMPosition
(
0
,
0
,
0
),
Location
(
0
,
0
),
0
,
PMT
[],
missing
,
0
,
0
)
@test
hydrophoneenabled
(
mod
)
@test
piezoenabled
(
mod
)
for
version
∈
1
:
5
d
=
Detector
(
joinpath
(
SAMPLES_DIR
,
"v
$(version)
.detx"
))
@test
isapprox
([
83.4620946059086
,
312.254188175614
,
377.8839470243232
],
center
(
d
);
atol
=
0.01
)
end
end
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment