Manipulating Muon Events in
AMANDA-II
Introduction
The AMANDA detector is buried under
the ice at the South Pole where it
searches for neutrinos. Neutrinos passing through the Earth interact and
produce muons. AMANDA sees the light from these muons using 680
photo-multiplier tubes encased in glass spheres (called optical modules or
OMs). Each OM records the time and strength of the hit. Based on this it
is possible to reconstruct the track the muon. In order to understand the
AMANDA detector better, the detector response is modeled by Monte Carlo
simulations. This project's main goal is to manipulate the output of
these simulations.
This algoritm can read in events from an input file, filter these
events if desired and calculate the probability each event could have been
produced by a neutrino. Main.cc has been included which demonstrates all
the functionality of this project. Also a sample input file (sample2.txt)
has been provided.
Download the source code here
Read my response to comments here
Outline
Classes:
Class Hit: This stores the information that we get from
each OM. Each
hit has an omnumber, time, amplitude, tot (a measure of the duration of
each hit). Since hit is generally only found as a member of event, there
are functions that allow the reading (but not the changing) of the parts
of hit. Hit also has a function to read in a hit from an input file. The
assumed format is:
H OM# amp time tot
Each hit line must start with "H".
Class Track: This stores information about a muon track.
Each track has
an x, y and z position, a time, an energy, a zenith angle and an azimuth
angle. Since track is generally only found as a member of event, there are
functions that allow the reading (but not the changing) of the parts of
track. Track also has a function to read in a hit from an input file. The
assumed format is:
T x y z energy zenith time azimuth
Each track line must start with "T".
Class Event: Each event consists of one track object, a
weight and any
number of hit objects. The hits are stored using the standard c++ list
container. Also variables number of hits and number of hit OMs are stored
here. Hits can be added to event either one by one or all at once from an
input file. The assumed format for an input file is:
S
T x y z energy zenith time azimuth
H OM# amp time tot
H OM# amp time tot
H OM# amp time tot
E
With S marking the start of an event and E marking the end. It's possible
to read and/or remove individual hits from the hit list.
Class Filter: This class filters Events. It can either
remove hits from
an event (using RemoveHit) or remove an entire event (using RemoveEvent,
which sets the weight of the event to zero, but does not delete the
event). This functions in this class could have been in Event, but for
clarity they are in their own class.
Class Geometry: This class calculates a number of
geometrical functions
based on an event's track position. It stores variables for the length of
the Monte Carlo generation volume (cylindrical in shape), the depth of the
AMANDA detector and the radius of the Earth.
Class Probability: This class calculates the probability
that a neutrino
could have produced the muon track in each event and weights each event
with that probability. Probability is derived from Geometry because it
uses many of Geometry's functions. It also stores Avogadro's number and
the density of ice. The functions are given by:
Probability a neutrino will survive to the edge of the generation
volume (function Survival in Class
Probability):
Psurv = exp
(-(σnc + σcc) *
NA * (ρice * Dice)
Probability the neutrino will
turn into a muon inside the generation volume (function Change in
Probability Class):
Pgen = fcc* (1 - exp(-(σnc
+ σcc) *
NA * (ρice *
dice)))
Proper distribution of muon
vertices inside the generation volume (function Distribute in
Probability Class):
F(x) = [(σnc +σcc) * NA
* ρ *
exp(-(σnc + σcc) * NA * ρ
* x)]
/ [P(x) * (1
- exp(-d
* (σnc + σcc) * NA *
ρ))]
where
σnc is the neutral current cross section for νN
interaction
s,
approximated by 2.31 x 10-36 *
(Eν0.363)
σcc is the charged current cross section for νN
interaction
s,
approximated by 5.53 x 10-36 *
(Eν0.363)
NA is Avogadro's number
ρ is the density of ice (0.93) relative to water
fcc = σcc / (σcc +
σnc) which
picks out the charged-current component of Pgen
d is the length of the generation volume contained inside the Earth (for
non-horizontal theta,
part of the generation volume will stick out of the Earth, so effective
generation volume length < full generation length)
x is the distance from the end of the generation volume to the muon
vertex
The total probability is given by (function Total in Probability
Class):
Ptot = Psurv * Pgen *
F(x)
Main.cc: This demonstrates some of the functionality of
the code. It shows how to create a hit, track and event, add or subract
hits from an event, filter an event, calculate the probability of this
track came from a neutrino and how to read hits, tracks and events from a
text file.