This project aims to incorporate the effects of hole ice into the clsim photon propagation simulation of the icecube neutrino observatory.
Hole ice is the ice in the refrozen columns around the detector module strings. Because its properties may differ from the properties of the surrounding ice, photon propagation simulation needs to reflect the changed properties by allowing different photon scattering and absorption behaviour within the hole ice.
The same mechanism can be used to incorporate other objects into the simulation, for example cables.
However, the new simulation code comes at a price regarding simulation performance: When simulating objects with small scattering length, the photons need to be scattered much more often, which increases simulation time considerably.
You may use the hole-ice version of clsim for other studies, but be aware of the limitations as a number of issues need to be resolved, yet. For example, ice tilt and ice anisotropy are still missing.
The results of this study have been published in:
2018-09-05
IceCube is a neutrino observatory at Earth's South Pole that uses glacial ice as detector medium where particles from neutrino interactions produce light as they move through the ice, which then is detected by an array of photo detectors deployed within the ice.
Aiming to improve detector calibration and thereby the observatory's precision, this study introduces methods to simulate the propagation of light through the hole ice, which is the refrozen water in the drill holes that were needed to deploy the detector modules, adding several more calibration parameters to ice models.
The validity of the method is supported by unit tests, a series of cross checks, and by comparing simulation results to results gained from other studies.
As examples of application, this study implements the simulation of one or several hole-ice cylinders with different properties such as position, size, scattering length, and absorption length, the simulation of shadowing cables, and a calibration method using IceCube's light-emitting diode flasher calibration system.
Whereas light propagating through the bulk ice is largely unaffected, the detector modules and the flasher system located within the hole ice are effectively shielded, because a fraction of the light is absorbed and another fraction reflected by the hole ice. For detector modules displaced within the hole ice, the magnitude of this effect depends on the azimuthal direction, which is in agreement with calibration data.
Simulating a light-absorbing cable next to the detector modules instead of a hole-ice cylinder can account for some of the observed effects, but not all of them, making a hole ice different from the bulk ice necessary to explain calibration data.
Hole-ice effects on the detection of light by IceCube's detector modules can be approximated using modified angular-acceptance criteria for the simulated detector modules.
For studies involving events with many photons and many different detector modules such as high-energy muon-track signature events, this approximation method is suitable, especially when considering simulation performance. The approximations currently in use correspond to simulated hole-ice cylinders of about 30cm diameter and about 1m effective scattering length. To account for the effect of hole-ice models suggested by current studies, however, new approximation curves are required to replace the ones currently in use.
For events with less photon statistics involving only few detector modules, the direct hole-ice propagation simulation can reduce systematic uncertainties, which, however, need to be quantified by follow-up studies.
- ECAP Call 2019-04-04
- Aachen DPG Conference 2019-03-25
- Stockholm Collaboration Meeting 2018-09-26
- Calibration Call 2018-03-02
- See also: https://github.com/fiedl/hole-ice-talk/releases
This section shows the usage instructions in the context of the original study. For an updated interface and usage with current icetray, see https://github.com/fiedl/hole-ice-scripts.
This code has been tested against icecube-simulation V05-00-07. Until the hole-ice code has been merged into the main clsim repository, a patched version of clsim is required. See section Installation on this page.
In order to configure clsim to simulate photon propagation through hole ice, deactivate the hole-ice approximation via angular acceptance (UseHoleIceParameterization
) and activate hole-ice simulation (SimulateHoleIce
) instead:
tray.AddSegment(clsim.I3CLSimMakeHits,
# ...
UnWeightedPhotons = True,
DOMOversizeFactor = 1.0,
UnshadowedFraction = 1.0,
UseHoleIceParameterization = False,
ExtraArgumentsToI3CLSimModule = dict(
# ...
SimulateHoleIce = True
)
)
For a working example, see scripts/lib/propagate_photons_with_clsim.py.
The hole-ice cylinders are configured in the I3 geometry frame rather than in a separate configuration file, because the event viewer steamshovel can read out the geometry frame and display the hole-ice cylinders. See also section Install steamshovel artist below.
In order to add hole-ice cylinders to the geometry frame, add the following keys:
cylinder_position = dataclasses.I3Position(
-256.02301025390625, -521.281982421875, 0)
cylinder_radius = 0.3 # metres
cylinder_effective_scattering_length = 0.1 # metres
cylinder_absorption_length = 100.0 # metres
cylinder_scattering_length = (1.0 - 0.94) *
cylinder_effective_scattering_length
cylinder_positions = dataclasses.I3VectorI3Position(
[cylinder_position])
cylinder_radii = dataclasses.I3VectorFloat(
[cylinder_radius])
cylinder_scattering_lengths = dataclasses.I3VectorFloat(
[cylinder_scattering_length])
cylinder_absorption_lengths = dataclasses.I3VectorI3Position(
[cylinder_absorption_length])
geometry_frame.Put("HoleIceCylinderPositions",
cylinder_positions)
geometry_frame.Put("HoleIceCylinderRadii",
cylinder_radii)
geometry_frame.Put("HoleIceCylinderScatteringLengths",
cylinder_scattering_lengths)
geometry_frame.Put("HoleIceCylinderAbsorptionLengths",
cylinder_absorption_lengths)
Please make sure to write the geometric scattering length to the geometry frame, not the effective scattering length. See also: #52
For a working example, see scripts/lib/create_gcd_file_with_bubble_columns_and_cables.py or scripts/lib/create_gcd_file_with_hole_ice.py.
In photon propagation simulation, one simulation step consists of everything between two scatterings, i.e. randomizing the distance to the next scattering point, randomizing the scattering angle, moving the photon to the next scattering point, checking for absorption and checking for detection at a DOM.
The following flow chart shows where the hole-ice corrections take place within the photon-propagation algorithm.
The step "calculate new position and direction" involves propagating the photon through the different ice layers, which may have different scattering and absorption lengths. The hole-ice algorithm makes this code more general such that geometric shapes other than ice layers are supported. This way, the propagation algorithm also supports adding cylinders for cables and hole-ice columns. Other shapes can by added to the algorithm as long as one can provide a method to calculate the intersection points of the photon ray and the new shape.
This section shows the setup instructions in the context of the original study. For usage with current icetray, see https://github.com/fiedl/hole-ice-scripts.
This software requires the icecube simulation framework. I've used version icecube-simulation V05-00-07.
- How to install icecube-simulation locally on macOS Sierra
- How to install icecube-simulation on the Zeuthen Computer Center
This study needs a version of clsim that does support hole ice simulations. Until these changes are made public in the svn, you need to install the this clsim fork: https://github.com:fiedl/clsim.
# Get clsim fork
git clone git@github.com:fiedl/clsim.git ~/clsim
cd ~/clsim
# Symlink it into the icesim source
cd $ICESIM_ROOT/src
rm -rf clsim
ln -s ~/clsim clsim
# Compile it
cd $ICESIM_ROOT/debug_build
make -j 6
In order to visualize hole-ice cylinders with steamshovel, install the corresponding artist plugins.
git clone https://github.com/fiedl/hole-ice-study.git ~/hole-ice-study
cd $ICESIM_ROOT/src/steamshovel/python/artists
ln -s ~/hole-ice-study/patches/steamshovel/python/artists/HoleIce.py HoleIce.py
See also: patches/steamshovel in this repository.
In order to visualize photons in calibration simulations, it might be necessary to modify Steamshovel's photon-path artist.
# src/steamshovel/python/artists/PhotonPaths.py
# This is the code that adds photon-path points
path.addPoint(
timesReverse[i],
verticesReverse[i],
colormap.value(residualsReverse[i]) # <----- but in calibration simulations, there might be no `residualsReverse`
)
# In these cases, replace the above code with:
color = colormap.value(1.0 - 1.0 * i / (len(verticesReverse) - 1))
# or: color = colormap.value(0)
path.addPoint(
timesReverse[i],
verticesReverse[i],
color
)
If kernel caching is active on your gpu machine, changes to hole_ice.c
etc. might not be taken up correctly. If you plan on making changes in these files, deactivate caching by setting the environment variable CUDA_CACHE_DISABLE=1
. See: #15
Copyright (c) 2013-2019 Sebastian Fiedlschuster and the IceCube Collaboration http://www.icecube.wisc.edu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.