Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Ievgen Vovk
ctapipe_io_magic
Commits
846affc3
Commit
846affc3
authored
Dec 04, 2020
by
Federico Di Pierro
Browse files
Added reading of general MC info
parent
5c184a38
Pipeline
#88801
failed with stage
in 3 minutes and 32 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
ctapipe_io_magic/__init__.py
View file @
846affc3
...
...
@@ -504,6 +504,22 @@ class MAGICEventSource(EventSource):
data
.
mon
.
tels_with_data
=
tels_with_data
data
.
mon
.
tel
[
tel_i
+
1
]
=
monitoring_camera
#fdp start
else
:
data
.
mcheader
.
num_showers
=
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_nevents'
]
# total, including reuse
data
.
mcheader
.
energy_range_min
=
(
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_emin'
]).
to
(
u
.
TeV
)
# GeV->TeV
data
.
mcheader
.
energy_range_max
=
(
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_emax'
]).
to
(
u
.
TeV
)
# GeV->TeV
data
.
mcheader
.
spectral_index
=
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_eslope'
]
data
.
mcheader
.
max_scatter_range
=
(
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_max_impact'
]).
to
(
u
.
m
)
# cm->m
data
.
mcheader
.
max_viewcone_radius
=
(
self
.
current_run
[
'data'
].
mcheader_data
[
telescope
][
'sim_conesemiangle'
]).
to
(
u
.
deg
)
# deg->deg
#mcheader_data['sim_nevents']=int(mc_header_info[b'MMcRunHeader.fNumEvents']) #std: 5000
#mcheader_data['sim_emin']=mc_header_info[b'MMcCorsikaRunHeader.fELowLim'] #std: 10 GeV
#mcheader_data['sim_emax']=mc_header_info[b'MMcCorsikaRunHeader.fEUppLim'] #std: 30000 GeV
#mcheader_data['sim_eslope']=mc_header_info[b'MMcCorsikaRunHeader.fSlopeSpec'] #std: -1.6
#mcheader_data['sim_max_impact']=mc_header_info[b'MMcRunHeader.fImpactMax'] #std: 35000 cm
#mcheader_data['sim_conesemiangle']=mc_header_info[b'MMcRunHeader.fRandomPointingConeSemiAngle'] #std: 2.5 deg
#fdp stop
if
telescope
==
'M1'
:
n_events
=
self
.
current_run
[
'data'
].
n_mono_events_m1
else
:
...
...
@@ -807,6 +823,13 @@ class MarsRun:
self
.
monitoring_data
[
'M1'
]
=
m1_data
[
1
]
self
.
monitoring_data
[
'M2'
]
=
m2_data
[
1
]
#fdp start
# Getting the run-wise MC header data
self
.
mcheader_data
=
dict
()
self
.
mcheader_data
[
'M1'
]
=
m1_data
[
2
]
self
.
mcheader_data
[
'M2'
]
=
m2_data
[
2
]
#fdp stop
# Detecting pedestal events
self
.
pedestal_ids
=
self
.
_find_pedestal_events
()
# Detecting stereo events
...
...
@@ -897,6 +920,10 @@ class MarsRun:
monitoring_data
[
'PedestalFromExtractorRndm'
][
'Mean'
]
=
[]
monitoring_data
[
'PedestalFromExtractorRndm'
][
'Rms'
]
=
[]
#fdp start
mcheader_data
=
dict
()
#fdp stop
event_data
[
'file_edges'
]
=
[
0
]
degrees_per_hour
=
15.0
...
...
@@ -959,9 +986,22 @@ class MarsRun:
'MMcEvt.fPartId'
,
'MMcEvt.fZFirstInteraction'
,
'MMcEvt.fCoreX'
,
'MMcEvt.fCoreY'
,
'MMcEvt.fCoreY'
]
#fdp-start
mcheader_list
=
[
#'MMcRunHeader.fNumSimulatedShowers',
'MMcRunHeader.fNumEvents'
,
'MMcCorsikaRunHeader.fELowLim'
,
#GeV
'MMcCorsikaRunHeader.fEUppLim'
,
#GeV
'MMcCorsikaRunHeader.fSlopeSpec'
,
'MMcRunHeader.fImpactMax'
,
#cm
#'MMcCorsikaRunHeader.fViewconeAngles',
'MMcRunHeader.fRandomPointingConeSemiAngle'
# deg
]
#fdp-end
# Metadata, currently not strictly required
metainfo_array_list
=
[
'MRawRunHeader.fRunNumber'
,
...
...
@@ -988,6 +1028,17 @@ class MarsRun:
mars_meta
[
'is_simulation'
]
=
is_mc
#fdp-start
if
is_mc
:
mc_header_info
=
input_file
[
'RunHeaders'
].
arrays
(
mcheader_list
)
mcheader_data
[
'sim_nevents'
]
=
int
(
mc_header_info
[
b
'MMcRunHeader.fNumEvents'
])
#std: 5000
mcheader_data
[
'sim_emin'
]
=
mc_header_info
[
b
'MMcCorsikaRunHeader.fELowLim'
]
*
u
.
GeV
mcheader_data
[
'sim_emax'
]
=
mc_header_info
[
b
'MMcCorsikaRunHeader.fEUppLim'
]
*
u
.
GeV
mcheader_data
[
'sim_eslope'
]
=
mc_header_info
[
b
'MMcCorsikaRunHeader.fSlopeSpec'
]
#std: -1.6
mcheader_data
[
'sim_max_impact'
]
=
mc_header_info
[
b
'MMcRunHeader.fImpactMax'
]
*
u
.
cm
mcheader_data
[
'sim_conesemiangle'
]
=
mc_header_info
[
b
'MMcRunHeader.fRandomPointingConeSemiAngle'
]
*
u
.
deg
#std: 2.5 deg, also corsika viewcone is defined by "half of the cone angle".
#fdp-end
# Reading event timing information:
if
not
is_mc
:
event_times
=
input_file
[
'Events'
].
arrays
(
time_array_list
)
...
...
@@ -1223,8 +1274,8 @@ class MarsRun:
monitoring_data
[
'PedestalFromExtractor'
][
quantity
])
monitoring_data
[
'PedestalFromExtractorRndm'
][
quantity
]
=
np
.
array
(
monitoring_data
[
'PedestalFromExtractorRndm'
][
quantity
])
return
event_data
,
monitoring_data
#fdp: added mcheader_data
return
event_data
,
monitoring_data
,
mcheader_data
def
_find_pedestal_events
(
self
):
"""
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment