Java Based Computer Simulation of a Scintillation Counter System

Java Based Computer Simulation of
a Scintillation Counter System in High Energy Physics
Abstract of
a thesis presented to the Faculty
of the University at Albany, State University of New York
in partial fulfilment of the requirements
for the degree of
Master of Science
College of Arts & Sciences
Department of Physics
Markus Hupp
2005
Abstract
This thesis addresses the issue of simulating a scintillation counter system in high energy
physics. The goal of this work was to create a computer simulation which can be used to
study these systems in detail.
Scintillation counters are highly developed and versatile devices in experimental physics
and especially in high energy physics which employ both simple and complicated concepts.
Learning those concepts usually takes place in a laboratory where the real experiment, its
components and their functioning, can be directly studied. Unfortunately, as important the
concepts are, as expensive is the experimental setup.
With the endeavor to a create computer simulation of a scintillation counter system, a tool
can be provided to teach and study these systems in every classroom. The choice of Java as
platform independent programming language ensures maximal compatibility with potential
clientele.
Furthermore, every real scintillation counter experiment is highly dependent on the statistical distribution of the investigated particles. The Albany Particle Training and Testing
Tower, after which the simulation was modeled, is investigating cosmic muons, where measured Time-of-Flight values depend on muon properties, their spatial, angular and momentum
distributions.
All these parameters can be controlled directly by the user in the presented simulation. Moreover, the simulated experimental setup itself can be modeled. This allows the study of various
properties in order to improve the system and compare theoretical and experimental data,
all without the need of expensive equipment and changes to a current setup.
The simulation can be found on the projects homepage:
http://ahep.phy2.albany.edu/∼markus/
II
Java Based Computer Simulation of
Time-of-Flight Systems in High Energy Physics
A thesis presented to the Faculty
of the University at Albany, State University of New York
in partial fulfilment of the requirements
for the degree of
Master of Science
College of Arts & Sciences
Department of Physics
Markus Hupp
2005
Acknowledgments
Any project, no matter how individual, will certainly require input, encouragement, assistance and faith towards oneself and moreover the loving people around oneself. My project
is no exception.
Coming to the United States for one year, starting up a totally new part in my life, finishing graduate school and writing this thesis, would simply not have been possible without
all the people around me.
When I first told my parents about the idea, it was not really ardor they felt, but aside
their loving support and moral aid which were with me all the time, they made it financially
possible. Thank you Mum and Dad for this opportunity.
I must acknowledge my beloved girlfriend, Rinata, whose love and encouragement during
the past year was always driving me forward. Thank your for your understanding and patience, especially while helping me to edit this work.
Thank you, to my friends back in Germany, for being part of this new life of mine, thousands
of miles away, but being friends as close as before all this time. I’m so looking forward to see
you all soon.
Special thanks to my friend Bastian Kröckel for spending quite some time with me on the
phone and helping me out, when Java once again twisted my mind.
My deepest appreciation to my supervisor, Prof. Saj Alam, for his encouragement and guidance during my studies. He gave me the freedom to work almost totally independently and
supported my ideas with great enthusiasm.
It was a great pleasure and an honor to work with him and the other members of the group.
I felt to be welcome from the very beginning and apart from our professional relationship, it
always felt like having family in the lab.
But putting such a group together is only one thing I admire Prof. Alam for. His outstanding
intellect and his knowledge, which goes far beyond the horizon of physics, was always ready
to challenge me, was always there to point me into a new direction and while just talking
to him, he influenced my academic career as well as he enriched my personality with his ideas.
Thank your very much, Saj, for all of that.
IV
A very special thanks goes to Dr. Frank Wappler and Dr. Vivek Jain, for sharing their expertise and experience with me and always being there when I had questions. Thank you for
your encouragement and support.
Furthermore, I’d like to express my gratitude to the members of my committee, Prof. Jesse
Ernst, Prof. William Lanford and Dr. Frank Wappler for their support and efforts.
In conclusion, I recognize that this research was also supported by the University at Albany - State University of New York, International Student Services, Office of International
Education and the Department of Physics in both, financial and organizational matters, and
by the Bayerische Julius-Maximilians Universität Würzburg in organizational matters. I’d
like to express my gratitude towards those offices and their employees.
”An Investment in Knowledge Always Gives the Best Return”
- Benjamin Franklin (1706 - 1790)
V
Contents
1 Introduction
1.1 The Albany Particle Training and Testing Tower . . . . . . . . . . . . . . . . .
1.2 The Muon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 The Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
1
2
I
4
Theory of the Simulation
2 The Investigated Muons
2.1 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Energy and Angular Spectra . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 The Scintillator
3.1 Photon Creation . . . . . . . . . . .
3.1.1 Bethe-Bloch-Equation . . . .
3.1.2 The Landau Distribution . . .
3.1.3 Number of Photons . . . . . .
3.2 Collection and Propagation Efficiency
3.2.1 Total Internal Reflection . . .
3.2.2 Attenuation Length . . . . . .
3.2.3 Photon Trapping . . . . . . .
3.2.4 Simulation Data . . . . . . . .
3.3 Timing Information . . . . . . . . . .
3.3.1 Muon Propagation . . . . . .
3.3.2 Photon Emission . . . . . . .
3.3.3 Photon Propagation . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
4 The Photomultiplier
4.1 Arriving Photons . . . . . . . . . . . .
4.1.1 Photon - Electron Conversion .
4.2 Multiplication and Gain . . . . . . . .
4.2.1 A Simple Algorithm . . . . . .
4.3 Signal Approximation . . . . . . . . . .
4.3.1 Signal Fitting . . . . . . . . . .
4.3.2 Electron to Voltage Conversion
VI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
5
5
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
9
11
11
12
14
15
15
16
16
16
17
.
.
.
.
.
.
.
18
18
19
20
20
21
22
22
II
Programming
24
5 The Java Program
5.1 Applet file: APTSimulation . . . . . . . . .
5.1.1 Method: main . . . . . . . . . . . . .
5.1.2 Method: init . . . . . . . . . . . . . .
5.2 Class: ControlPanel . . . . . . . . . . . . . .
5.2.1 Object: ControlPanel . . . . . . . . .
5.2.2 Method: actionPerformed . . . . . .
5.2.3 Method: itemStateChanged . . . . .
5.2.4 Method: stateChanged . . . . . . . .
5.2.5 Object: calculation . . . . . . . . . .
5.2.6 Method: focusGained . . . . . . . . .
5.2.7 Method: focusLost . . . . . . . . . .
5.3 Class: Muon . . . . . . . . . . . . . . . . . .
5.3.1 Object: Muon . . . . . . . . . . . . .
5.3.2 Object: setCoordinatesVectors . . . .
5.3.3 Object: ran . . . . . . . . . . . . . .
5.3.4 setTotalNumberOfPhotons . . . . . .
5.3.5 Object: drawMuon . . . . . . . . . .
5.4 Class: Beam . . . . . . . . . . . . . . . . . .
5.4.1 Object: Beam . . . . . . . . . . . . .
5.4.2 Object: drawBeam . . . . . . . . . .
5.5 Class: Scintillator . . . . . . . . . . . . . . .
5.5.1 Object: Scintillator . . . . . . . . . .
5.5.2 Object: setScintillatorDim . . . . . .
5.5.3 Object: createScintillatorLines . . . .
5.5.4 Object: createZ(Y,X)Line . . . . . .
5.6 Class: ScatterFrame left ( right) . . . . . . .
5.6.1 Object: ScatterFrame left ( right) . .
5.6.2 Object: createScintillatorLines . . . .
5.6.3 Object: createZ(Y)Line . . . . . . .
5.7 Class: Frame3D . . . . . . . . . . . . . . . .
5.8 Class: Histogram . . . . . . . . . . . . . . .
5.9 Class: DrawPanel . . . . . . . . . . . . . . .
5.9.1 Object: DrawPanel . . . . . . . . . .
5.9.2 Object: Normalization Constant, Cn
5.9.3 Object: timeOfPhotonEmission . . .
5.9.4 Object: timeOfFlight . . . . . . . . .
5.9.5 Objects: Histogram Data . . . . . . .
5.9.6 Method: itemStateChanged . . . . .
5.9.7 Method: paint . . . . . . . . . . . . .
5.10 Class: Oscillograph . . . . . . . . . . . . . .
5.11 Class: DrawOscScreen . . . . . . . . . . . .
5.11.1 Object: DrawOscScreen . . . . . . .
5.11.2 Object: pulse . . . . . . . . . . . . .
5.11.3 Object: function . . . . . . . . . . .
5.11.4 Object: thresholds . . . . . . . . . .
VII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
26
26
26
26
26
26
30
31
31
34
34
36
36
36
37
37
37
38
38
38
38
38
38
39
39
39
39
39
40
40
40
41
41
41
42
42
44
44
45
45
45
46
46
48
48
5.11.5
5.11.6
5.11.7
5.11.8
5.11.9
5.12 Class:
5.13 Class:
III
Method: actionPerformed
Object: rescaling . . . . .
Object: normalization . .
Method: paint . . . . . . .
Object: poissondistributor
Constants . . . . . . . . .
WindowDisposer . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Data and Results
6 Timing Outputs
6.1 Time of Flight . . . . . . .
6.2 Muon Travel Time . . . .
6.3 Photon Creation Time . .
6.4 Photon Propagation Time
48
49
49
49
50
51
51
52
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
53
54
55
56
57
7 Oscillograph Screen
59
7.1 The Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8 Applications
8.1 The Attenuation Process . . . . . .
8.1.1 Simplified Simulation . . . .
8.1.2 The Full Statistical Process
8.2 The Time Resolution . . . . . . . .
8.2.1 FWHM as Reference Value .
8.2.2 Data Evaluation . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
62
63
63
67
68
69
71
9 Conclusion and Outlook
73
Bibliography
74
Appendix A
76
Java Source Code
76
Appendix B
77
Mathematica Files
77
VIII
Chapter 1
Introduction
1.1
The Albany Particle Training and Testing Tower
The Albany Particle Testing and Training Tower (AP T 3 ) is in its conception a unique
project, and, when finished, it will be one of the most advanced teaching and research tools
available via the internet.
The experiment is capable of performing several different kinds of analysis on cosmic muons
(like Time-of-Flight measurements, TOF), and can be accessed and controlled via a web interface from any computer connected to the internet.
Users can run experiments with their own specifications and parameters, and will get the
data back immediately. They can then compare the experimental data with data from a
simulation of the same experiment, and see how well reality and the simulation are matched.
This thesis is about the simulation part of the AP T 3 project. It describes how the simulation is working, which algorithms are employed, and it presents the generated data and
derived results.
1.2
The Muon
In the standard model of particle physics, the muon is a semi-stable fundamental particle. It
has a negative electrical charge of and spin 12 . Similar to the electron it is not affected by
strong force interactions.
Muons have a mass of 105.6 MeV/c2 , that is 207 times greater than the electron mass
(0.511 MeV/c2 ). Muons are denoted by µ− and anti-muons by µ+ . They are classified (see
Figure(1.1)) together with the electron, the tauon and neutrinos as leptons, where the elec-
1
tron belongs to the first family, the muon to the second and the tauon to the third.
Figure 1.1: Table of Fermions in the Standard Model
An important natural source of muons are cosmic rays. This is, because on earth muons are
created when charged pions, created by cosmic radiation (mostly protons and α- particles),
decay in the upper atmosphere. The pions have a very short lifetime of a few nanoseconds,
and the muons created when the pions decay are also short lived with a lifetime of 2.2 · 10−6 s.
π + −→ µ+ νµ
(1.1)
π − −→ µ− νµ
(1.2)
π 0 −→ γ γ
(1.3)
However, muons in the atmosphere are moving at very high velocities, so that, due to time
dilatation effects (from special relativity), they easily reach earth’s surface. In Germany, for
example, at the sea level there are about 200 muons per second and square meter.
1.3
The Simulation
This thesis is focusing on the task of developing a systematic approach and the necessary
algorithms to simulate what is happening when a cosmic muon traverses a certain kind of
detection device.
2
A TOF detector assembly considered in the simulation consists of an organic plastic scintillator (VINYLTOLUENE) with dimensions of 50 cm in length, 5 cm in height, and 8 cm in
width. On the left hand and the right hand face of the scintillator there are two photomultiplier tubes (PMTs) attached by a direct optical coupling.
The AP T 3 setup itself consists of two detection arrays like this, but due to the fact that they
are all more or less identical, the simulation algorithm can be applied several times when the
complete experiment needs to be modelled.
Furthermore, the actual experiment has all the electronics (discriminators and Time-toDigital Converters (TDCs)) and data acquisition devices to process and record the signals
provided by the PMTs, yielding plots and tables of evaluated data.
Nevertheless, due to some necessary limitations concerning the complexity of this work, the
simulation will display results in a way resembling PMT pulses seen on an oscilloscope.
3
Part I
Theory of the Simulation
4
Chapter 2
The Investigated Muons
2.1
User Interface
In the simulation the user can specify two coordinate pairs, which will define the vector,
along which the muon will propagate through the scintillator. The first point lies within the
top face plane where the muon initially hits the scintillator. The second coordinate point lies
within the bottom face plane, where the muon leaves the scintillator.
→
→
Furthermore, the user can set the velocity (as a fraction of c −
v = INPUT · −
c ) the muon has,
when it traverses through the detector.
With these two properties it is totally under the user’s control to specify the actual investigated muon. One can simulate muons matching a special momentum distribution, as
well as angular distribution.
2.2
Energy and Angular Spectra
Muons, unlike pions, have no strong interaction properties and, unlike electrons, they are too
massive to be significantly deflected by atomic electric fields that they encounter. Therefore,
the only significant processes of interaction with any kind of matter are ionization and excitation.
The energy and angular distribution of muons at sea level reflects their production spectrum
at high altitudes, the energy loss in the atmosphere, and their natural decay.
The mean energy at ground is ∼ 4 GeV, but the spectrum is almost flat below 1 GeV. From
10 GeV to 100 GeV it steepens gradually until it reaches a maximum, because of the production spectrum. At higher energies then, the fact that the source pions interact with the
atmosphere before decaying, steepens the slope of the spectrum again, while the number of
5
muons is going down.
The general angular distribution is of cos2 Θazimuthal form. At large azimuthal angles more of
the slower, low energetic muons decay before they reach the detector, and the average muon
energy increases.
6
Chapter 3
The Scintillator
As mentioned above, the only significant processes of interaction of muons with any kind
of matter are ionization and excitation. And these are the process usually employed in the
detection device.
In case of the AP T 3 the detection device is a bar of scintillating organic crystal, the scintillator.
3.1
3.1.1
Photon Creation
Bethe-Bloch-Equation
When a muon is propagating through the scintillator, it loses energy, primarily due to ionization and excitation processes. This energy loss or stopping power is described by the
Bethe-Bloch- Equation (BBE).
dE
Z 1 1 2me c2 β 2 γ 2 Tmax
δ
−
= Kz 2
ln
− β2 −
2
2
dx
Aβ 2
I
2
"
#
(3.1)
Equation (3.1) is one of the most common forms of this equation. It describes the mean rate
of energy loss. The parameters are defined in table (3.1).
The parameter δ can be set to 0, because the density effect correction can be neglected
for the considered minimum-ionizing particles. Furthermore, Tmax is the maximum kinetic
energy, which can be imparted to a free electron in a single collision, defined by equation (3.2).
Tmax =
2me c2 β 2 γ 2
e
1 + 2γ m
+
M
7
me
M
2
(3.2)
Table 3.1: BBE Parameter Identification
Symbol
K
ze
Z
A
I
δ
Definition
Units or Value
Reference
2
4πNA r2 me c2
0.307075 MeV·cm
mol
muon charge
-1
atomic number/mass relation 0.54141 mol
g
mean excitation energy
64.7 · 10−6 MeV
density effect correlation
0
β and γ are defined in the usual way:
β=
v
c
γ= √
[5]
[7]
[7]
[5]
1
1−β 2
Equation (3.1) in its current form yields the energy loss in units of
MeVcm2
.
g
To get a density
independent expression, the left hand side needs to be multiplied by the density, which applies for the considered scintillator material ρ = 1.0320 cmg 3 . The electron mass and the mass
of the incident muon are me = 0.551 MeV/c2 and M = 105.6 MeV/c2 , respectively. All this
finally gives a more practical form of BBE:

−

2 2 2
2 2 2


Z 1  1  2me c β γ
dE
2me c β γ

2
= ρK
 ln 
2  − β 
2
2
dx
Aβ 2
I
e
e
+ m
1 + 2γ m
M
M
The part in square brackets is without units, and the remaining piece has units of
(3.3)
MeV
.
cm
A
muon striking the scintillator with v = 0.9c, for example, will yield a mean energy loss of
≈ 2.18 MeV
.
cm
Figure (3.1) is showing the stopping power (−dE/dx) for different particles in the organic
plastic scintillator (VINYLTOLUENE) as a function of momentum (p = √M β 2 ) over three
1−β
orders of magnitude. Comparison to the PDG, a standard reference [6, Figure 28.5], shows
its consistency.
The minimum of the muon graph lies approximately at p = 350 MeV/c or β = 0.957, according to (3.4).
β=√
p2
p
+ M2
p= √
Mβ
1 − β2
(3.4)
As indicated above, this result from the Bethe-Bloch-Equation is the statistical mean energy
8
Figure 3.1: Mean Energy Loss for µ, π, K, p
loss. This highly statistical value has, of course, less to do with the real energy loss of one
particular muon. To get a more realistic picture of the actual energy loss, it is necessary to
consider a probability density function (pdf).
3.1.2
The Landau Distribution
The Landau-Distribution is known to be an acceptable approximation to the statistical process of energy loss. In its form (3.5) it gives the probability that a particle is losing a certain
amount of energy, while crossing through a certain piece of material.
λ=
√
1
−λ )
e · e− 2 (λ+e
(3.5)
∆E − ∆EBB
ξ
(3.6)
L(λ) =
ξ = 2πNA re2 me c2 z 2
Z 1
KZ 1
ρx =
ρx
2
Aβ
2 A β2
(3.7)
The parameters in (3.6-3.7) are defined in the same way as for BBE, Table (3.1). Further9
more,
∆E is the actual energy loss,
∆EBB is the most probable energy loss by BBE and
x is the distance the muon is traveling through the scintillator.
It is easy to see that, if the actual energy loss ∆E is equal to the most probable energy
√
loss ∆EBB , λ becomes 0. With the normalization constant e in (3.5), the probability L(λ)
then yields 1.
Figure 3.2: The Landau-Distribution
Figure (3.2) is showing this distribution. It is calculated with the sample muon, striking with
0.9c, mean energy loss ∆EBB ' 2.18 MeV, from above. The distance x = 5 cm has been
set equal to the scintillator height, which means the muon is assumed to hit the scintillator
perpendicular to its top face plane.
While Figure (3.2) shows the theoretical probability distribution function, Figure (3.3) shows
data produced by the simulation to check the accordance of the two figures. The data have
been simulated for the most probable energy loss ∆EBB = 2.18 MeV, and collected to intervals of 0.2 MeV. Plotted is the relative frequency of a certain energy loss for 100,000 incidents.
10
Figure 3.3: Simulated Energy Loss Distribution
3.1.3
Number of Photons
Even though the whole process of photon creation, as well as the propagation of the created
photons through the scintillator (discussed in the following section) is a statistical process, it
is instructive to pursue the matter further along with the parameters already used above.
When a muon enters the scintillator perpendicular at the center of its top face plane, it
has to travel the minimal possible length through the scintillator. In this specific experiment this length is 5cm. A muon with β = 0.9c (p ' 218 MeV/c) suffers a mean energy
, as described above. Therefore, the total mean energy loss is
loss of ∆EBB = 2.18 MeV
cm
Eloss = 10.9 MeV.
According to [6, chapter 28.1] or [8], typical photon yields are about 1 photon per 100 eV of energy deposit”. So, as a statistical mean value, approximately 109,000 photons will be created.
3.2
Collection and Propagation Efficiency
After the photons are created, they have to propagate through the scintillator. During this
process, an important fraction will get lost by reabsorption or reflection processes.
11
3.2.1
Total Internal Reflection
When light crosses materials with different refractive indices, it gets bent at the layer, where
one material ends and the other begins. If in this case the refractive index changes from a
high one to a low one, total internal reflection may occur.
Figure 3.4: Total Internal Reflection
As shown in Figure (3.4), as long as the angle (c) is bigger than the critical angle (b), the
probability that the light/photon gets reflected is 100 %. Indeed, it is not really 100 %, but
some slightly smaller value, however this fact is neglected for further considerations.
Nevertheless, if the incident angle (a) gets smaller than the critical angle (b), only a fraction
of the incoming light will get reflected back into the scintillator. The main part will leave
the high refractive index material. In case of scintillation detection, the light is, of course,
described by single photons. Therefore, it needs to be considered, that there is a certain
probability that the actual photon will get reflected or leave the scintillator, when hitting the
edge with an incident angle smaller than the critical angle, described by (3.8).
θcr = arcsin
nlow
nhigh
(3.8)
Due to the fact that each single photon can get reflected multiple times with different incident
angles, depending on the face plane it hits, all incidents when the incident angle is smaller
than the critical angle, need to be considered.
The probability of reflection when the incident angle Θi is smaller than the critical angle
Θcr is described by the reflection coefficients Rs and Rp for s- and p-polarized photons respectively, see (3.9) and (3.10).
sin Θi − Θt
Rs =
sin Θi + Θt
2
n1 cos Θi − n2 cos Θt
=
n1 cos Θi + n2 cos Θt
12
2
(3.9)
tan Θi − Θt
Rp =
tan Θi + Θt
2
n2 cos Θi − n1 cos Θt
=
n2 cos Θi + n1 cos Θt
2
(3.10)
Where Θt is the transmission angle and can be defined as a function of Θi , described by
(3.11).
Θt = arcsin
n1
sin Θi
n2
(3.11)
The overall (polarization independent) reflection coefficient is described in (3.12) and gives
the sought reflection probability.
R=
Rs + Rp
2
(3.12)
The reflection probability R as function of Θi is shown in Figure (3.5). For the purpose of
the simulated organic crystal scintillator, the refractive indices have been set n1 = 1.1 and
n2 = 1.0.
While the blue graph is showing Rs and the red graph is showing Rp , the black one displays
R - the total reflection probability.
Figure 3.5: Reflection Probability (Θi < Θcr )
13
From this plot it is obvious that out of the photons, which have incident angles smaller than
the critical angle, only a small number will make it through the scintillator.
The critical angle here is Θcr ' 65.4◦ , and the probability of reflection is below 0.5 % for any
angle smaller 45◦ . Only when the incident angle approaches Θcr closely, the probability rises
and gives some reasonable reflection probabilities. Therefore, photons arriving at the PMT
must have predominantly been subjected to either very little reflections or large reflection
angles. Both of these conditions imply that these photons have to travel only a short time
through the scintillator, while those which would need more time are most likely lost by
transmission before even having the chance to reach the PMT.
Back to the example of the last section, where approximately 109,000 photons have been
created isotropically along the muon vector. With the reflection conditions as described,
already more than 100,000 photons are dropping out of the calculation, due to the limited
probability of reflection for small angles. This leaves only about 9,000 photons to be considered from this point on. Table (3.2) is showing the exact data produced by the simulation.
3.2.2
Attenuation Length
The attenuation length in high energy physics is defined as the distance λ into a material,
when the probability has dropped to
1
e
that the particle has not been attenuated.
Equation (3.13) describes the probability of a photon to be detectable at distance l from the
source.
l
P (l) = e− λ
(3.13)
Assume the perpendicular striking photon, hitting the scintillator exactly in the middle of
its top plane. This sets the shortest distance a photon would have to travel to reach the
photomultiplier tubes, either on the left- or right-hand side, to half the scintillator length, or
for this specific experiment: 25 cm.
Following the example above further, and assuming an attenuation length of λ = 1 m, the
simulation shows that another 3,500 of the not by reflection loss dropped out photons ”get
killed” by the attenuation condition. Therefore, the initial number of 109,000 is down to
5,500 photons, see table (3.2) for details.
14
3.2.3
Photon Trapping
It is, of course, possible that a photon gets emitted in a way, that it keeps bouncing back and
forth between the front and the back face planes without change in its x-coordinate. Such
photons will do so forever and never reach the photomultipliers, therefore, they are lost, and
are dropping out of the calculation as well.
The simulation shows that their number is very small. Out of the 5,500 photons left in the
example only 2 % suffer this effect.
Table 3.2: Simulation Data
∆E
[M eV ]
initial number lost during lost due to
of photons
reflections attenuation
trapped
number of
photons left
2.18
-”-”-”-”-
109,000
-”-”-”-”-
100,125
100,317
100,339
100,371
100,317
2,056
2,041
2,012
2,077
1,948
19
24
19
31
23
6,800
6,618
6,630
6,521
6,712
1.76
3.07
2.76
2.30
1.79
78,751
153,599
138,186
115,248
89,640
72,580
141,303
127,197
105,995
82,429
1,430
2,886
2,518
2,165
1,651
11
31
129
18
16
4,730
9,379
8,442
7,070
5,544
3.2.4
Simulation Data
The first part of the table (3.2) is showing the experimental data, on which the example
calculations above are based.
The second part displays data produced by the simulation using the Landau-Distribution to
determine the actual energy loss, while the mean energy loss ∆EBB = 2.18 MeV.
The parameters have been chosen as mentioned in the text. Attenuation length λ = 100 cm
and scintillator dimensions length = 50 cm, width = 8 cm, height = 5 cm, β = 0.9c. The
muon was set to hit and leave the scintillator exactly in the middle of the top and bottom
15
face plane, respectively.
The numbers in the last column, the “number of photons left”, display the final number
of photons, caused by a single muon, which are arriving at the PMTs, either on the left
hand- or the right hand-side of the scintillator.
3.3
Timing Information
The timing information, from the moment the muon hits the scintillator until the generated
photons are reaching the photomultipliers, is the crucial part in the simulation.
3.3.1
Muon Propagation
When the muon is propagating through the scintillator, and the energy loss occurs, photons
are created at random points along the muon’s path. This is a totally statistical process, and
for a large number of created photons, as in this case, the distribution along the muon’s path
is totally isotropic.
Theoretically, the minimum penetration depth, at which photons are created is l = 0 cm,
and the maximum is the length equal to the whole muon path through the scintillator. With
this information about the length and the knowledge about the velocity of the incident muon
(specified by input), the time the muon is propagating to the emission point of a certain
→
photon is easy to calculate under the assumption −
v = const.
This information is calculated for every single photon and will be called the muon propagation
time.
3.3.2
Photon Emission
The next piece of timing information is the photon emission time.
Of course the photons are not created instantaneously by ionization. The creation time distribution is modeled as a double exponential probability distribution function of the form
(3.14) with a steep rising front and a long exponential tail.
− τt
P (t) = C ·
e
t
− e− τr
τd − τr
d
(3.14)
The parameters τr and τd , describing the rise and decay time of the probability of photon
16
emission, are dependent on the scintillating material. Therefore these parameters are included in the user’s input interface.
The constant C in front of the equation is a normalization constant, which is depending on
the rise and decay time.
According to this probability distribution function, the emission time is calculated for every created photon.
3.3.3
Photon Propagation
Finally, the emitted photons are propagating through the scintillator, describing a certain
imaginary trajectory. The length of this trajectory, through all reflections that occur, is
calculated. With the speed of light in the scintillating material, which is just dependent on
its refractive index, it is converted into the photon propagation time.
17
Chapter 4
The Photomultiplier
4.1
Arriving Photons
From the sections above it is known, that several thousands photons will arrive at the edges
of the scintillator, where the PMTs are placed.
Figure 4.1: Simulated Scatter Plots
The PMTs are coupled directly to the small face sides of the scintillator without any kind
of light guide. The optical contact is made with silicone, which makes the coupling almost
perfect and lossless, since the refractive indices of the organic scintillator, the silicon glue and
the PMT window, are almost identical. The circular, sensitive portion of the PMT window
covers 50 % of the face area. Therefore only half of the photons reaching a PMT are considered in the subsequent simulation, independent of where they hit the scintillator’s face plane.
This coupling requires no additional program steps, whenever approximately 50 % of the arriving photons are lost due to the fact that the circular cross section of the PMT (yellow
shaded) only covers half of the rectangular face of the scintillator edge.
This 50 % approximation is accurate in most cases and only fails when the incident muon is
crossing the scintillator very close to the side edge. Figure (4.1) is showing simulated scatter
plots for different muon tracks.
18
The muon is hitting the scintillator perpendicular with the hit point coordinates in the top
face plane (1): x = 25 cm, z = 4 cm; (2): x = 11 cm, z = 4 cm; (3): x = 2.2 cm, z = 4 cm;
and (4) x = 2.2 cm, z = 1 cm.
In cases (1) and (2) the incident points are distributed homogenously over the photosensitive
area, and the 50 % approximation holds. In case (3) the incident point density within the
photosensitive area is higher then 50 %, and in case (4) the density increases towards small
values of z, and the photosensitive area is covered by less than 50 % of the incident photons.
Accordingly, in the cases when the x-coordinate of the muon track is very small, the simulation will not deal with the absolute correct number of photons. Because the geometric
distribution of the photons, at the edge it is crossing close to, becomes a function of the
muon vector itself. Modeling the PMT geometry and resulting photon acceptance more realistic would be one obvious step towards improving the present simulation. Nevertheless, the
general 50 % approximation yields good results in most cases, and is kept as general approximation.
4.1.1
Photon - Electron Conversion
At the photocathode the incoming photons are converted into a current of electrons. Here
the quantum efficiency of the photocathode is a very important quantity.
η(λ) =
Ne
Nph (λ)
(4.1)
Where Ne is the number of photoelectrons released, and Nph (λ) is the number of incident
photons on the cathode with a certain wavelength λ.
Because in this stage of the simulation, the wavelength of the photons is not considered yet,
the quantum efficiency becomes just a constant, which is telling how may percent of the
incident photons are converted into photoelectrons. This percentage is due to the type of
PMT, respectively the material of the photocathode and the operating volate. In case of the
AP T 3 simulation η(λ) = 0.2 is used.
19
Electron-Optical Input System
After the photons have been released in the conversion process to photoelectrons, they are
subject to the electron-optical input system of the PMT. All PMTs are designed in a way
to perform the two most important tasks in this part. First, to maximize the efficiency of
photoelectron collection at the first dynode independent of the emission point of the electron.
And second, to make the time the photoelectrons need to travel from the emission point to
the dynode as independent as possible of the point of emission.
In this simulation it is assumed that, as in a perfect PMT, the propagation time of a photoelectron to the first dynode is independent of its emission point.
4.2
Multiplication and Gain
The multiplier section of the PMT starts with the first dynode. At this point the statistical
process of electron multiplication starts. Depending on the kind of PMT (i.e. linear focused),
the number of multiplier stages and the applied current between them, and many other quantities, the very complex current amplification process takes place.
To write a complete and realistic simulation of a photomultiplier is beyond the limitations of
this work. Nevertheless, there is a simple way, which yields satisfying accuracy, and, therefore, it is used here.
4.2.1
A Simple Algorithm
As mentioned above, the electron multiplication process is a statistical process. A single
photoelectron, which starts a multiplication process, generates an avalanche of secondary
and higher order electrons. When all these electrons are finally arriving at the anode, their
distribution can be described by a Poisson distribution (4.2).
This approximation of the real single-electron spectrum is appropriate because the Poisson
distribution can in general be used to model the number of events occurring within a given
time interval. λ is the shape parameter which indicates the average number of events in a
given time interval.
Pλ (k) =
λk · e−λ
k!
20
(4.2)
Single Photoelectron Spectrum
According to [1], the average transit time through the PMT is approximately 0.5 ns, and
the time spread, is 0.5 ns as well. Therefore, the electrons arriving at the anode can, in a
first order approximation, be described by a Poisson distribution over the time interval of
∆t = [0.25 ns, 0.75 ns].
The number of electrons is determined by the gain of the PMT. In case of the PMTs employed
at the AP T 3 experiment, the gain is 106 .
All this together gives the simple model of what is happening, when a single photoelectron
is subject to the PMT. It yields the single photoelectron spectrum, a Poisson distribution of
106 electrons within the time interval ∆t.
Photomultiplier Signal
The photons, which are generating the photoelectrons, are entering the PMT at different
times, and as this timing information is known, the simulation can generate the final PMT
signal.
It is assumed, that for each photon, 106 electrons are generated. Of course this is a statistical number as well, and the gain fluctuates, but this is neglected here for simplicity.
Due to that, a poisson distribution of electrons can be generated for each and every photon.
The data of these distributions is then arranged on a timeline, in a way that the maximum
of each distribution is set to be 0.5 ns later than the time, at which the corresponding photon
arrived at the PMT.
While adding all the distribution data up, the simulation calculates the final output signal,
which is similar to what one would see on an oscillograph screen, while performing the real
experiment. Figure (4.2) is showing the result of the described algorithm.
4.3
Signal Approximation
To see the quality of the data and to convert the simulated electrons into a voltage, a function
is fitted to the simulation data.
21
4.3.1
Signal Fitting
The shape of the simulated oscillograph data is matching a double exponential function. This
is obvious from that fact, that the most significant timing information is the photon emission
time, which has itself a double exponential form.
Equation (4.3) is the fit function with the two fit parameters τrise and τf all . The two parameters are describing the rising and the falling slope of the function, respectively.
t
f all
−τ
P (t) =
e
−
t
− e τrise
τf all − τrise
(4.3)
The fit function is normalized in such a way, that the total integral has the value of 1. The
best fit is achieved for τrise = 3 and τf all = 10.
4.3.2
Electron to Voltage Conversion
The simulation is multiplying the number of photoelectrons nphe with the gain of the PMT.
The result is the total number of electrons n, which add to the signal current and, finally,
the signal voltage. Equation (4.4) shows this simple relation. R is the resistance at the oscillograph’s input (R = 50 kΩ), e is the electron charge and ∆t is the measured time interval
(100 ns).
U =R·I =R·
∆Q
n·e
=R·
∆t
∆t
(4.4)
Furthermore, the area integral of the fit function is supposed to be equal to the charge value,
but the integral value of the unaltered fit function is 1, as mentioned above. Therefore, the
fit function needs to be multiplied by a scale factor according to (4.4).
The so corrected fit function now closely resembles the shape of the oscillograph signal, and
allows the simulation to determine the maximum amplitude of the signal.
Simulation Results
Figure (4.2) is showing the generated timing histograms, as well as the fitted functions.
The voltage values for the left and right PMT signals are the maximum signal amplitude.
22
They are gained by using the integral method described above.
Figure 4.2: Photomultiplier Histogram Data and Fit Functions for Left / Right Channel
In the AP T 3 experiment, the pulse signals are used as input into discriminators which have
a set threshold. The output of these discriminators (TTL-level-signal) is processed further
by Time-to-Digital Converters (TDC).
In the simulation, the threshold level can be set as a parameter by the user, and corresponding time values are being calculated and used in a study of time resolution.
23
Part II
Programming
24
Chapter 5
The Java Program
A major part of this thesis was to create a Java program to simulate all the processes described before. Because the simulation is supposed to be used as a lab tool, as well as an
education tool, there was a certain need to combine physical accuracy and detail with a user
friendly interface.
Another requirement was to leave a sophisticated user as much control as possible, to enable
him to drive the simulation to its limits, and even analyze configurations of very special interest. At the same time, an untrained user should be prevented from being overwhelmed by
inputs and results.
The output information is cast in a way to match the outputs a real experiment is giving.
Due to that, it might be necessary for an advanced user, who wants to study a specific process in more detail, to work directly with the source code to get the desired data from the
Java-Console-Output.
There are references to several positions within the actual discussed file in the following
source code description. These positions indicate important paragraphs within the source
code, whenever they just mark sections which have a certain importance to keep track of
what is going on. They do not necessarily have any meaning for the programming structure.
In the source code itself these positions are marked using the following line:
//(#”number of marker”)
Some of the objects in the simulation files will not be listed or described explicitly in this
text. The reason for that is these objects are just needed to enable information exchange
between the different objects, classes or constructors. They all consist of just two lines, and
their discrete functions are described with comments directly in the source code.
25
5.1
Applet file: APTSimulation
The simulation is conceptualized as a Java web applet, so it can be uploaded to a web server
and accessed by anyone with a web browser.
The APTSimulation contains the methods main and init.
5.1.1
Method: main
The main method is written in a way that the simulation can run as applet, and not just as
application.
5.1.2
Method: init
The method init sets the standard parameters like position and size of the applet window
and calls the first class ControlPanel.
5.2
Class: ControlPanel
This class can be considered to be the root of the simulation. It contains the most important
objects and methods and calls all other classes.
5.2.1
Object: ControlPanel
This object is responsible for building the user’s interface (UI). It contains all the elements,
which appear on the UI, and defines their positions, properties and initial values.
5.2.2
Method: actionPerformed
This method responds when the user clicks the ”run” button and starts the first calculations.
Nevertheless, the very first actions here are to initialize a number of variables and, more
importantly, gather all the input information from the UI and convert it into the appropriate
format.
26
Constructor muon
At position (#1) the constructor muon is called. It has variables assigned, which contain
the geometric information about the scintillator and the incident muon, as set by the user.
It performs all calculations concerning the incident muon, and provides the corresponding
data, like the vector, along which the muon propagates through the scintillator, or the energy
loss by ionization along this vector.
Constructor beam
At position (#2) the constructor beam is called. This constructor generates a graphic object of the photon trajectories, which the user can display in the 3D graph.
Constructor scintillator
At position (#3) the constructor scintillator creates another graphic object, which consists
of the scintillator model and a coordinate system.
Constructors scatterFrame
At position (#4) the last graphic objects are created by calling the constructors scatterFrame left and scatterFrame right. These graphic objects are the left and the right face planes
of the scintillator where the photon hit points will be displayed later.
Single Photon Loop
At position (#5) the program now enters a loop, which will be run through once for each
generated photon, and the number of photons or loop executions is known from the calculations in the constructor muon.
At the beginning of this loop a boolean variable is set to true. This variable is used to trace
if the actual photon, currently processed by the loop, gets lost during any of the physical
processes, while the photon is propagating through the scintillator.
The first timing information calculated for each photon is the time, the incident muon needs
to penetrate the scintillator to the depth, at which the photon is emitted.
The point of emission is determined by a simple vector calculation as follows. The vector,
27
the muon describes from the point where it hits the scintillator to the point where it leaves
the same, is defined. Then this vector is multiplied by a random number between 0 and 1,
that yields a vector of the same orientation with some length from 0 to the full length of the
real muon vector. By adding this randomly scaled muon vector to the muon hit point of the
scintillator, the photon emission point is calculated.
The length of the randomly scaled muon vector divided by the velocity of the incident muon
yields the timing information, which then gets stored in an array. For the current (ith ) photon
at the ith position of the array.
At position (#6) the method calculation is called with the previously calculated photon
emission point assigned as the parameter. This method calculates the propagation of the
actual muon through the scintillator, and returns a list containing all the points, where the
photon gets reflected and where it finally hits the left or the right face plane of the scintillator,
where the PMTs are mounted.
At position (#7) an ”if” condition is imposed. The next code segment only gets executed when the number of reflections is greater than two. This is because two entries in the
reflection point array mean, the entries are the emission point and the end point. Only when
there are more then two entries, reflections have occurred.
In that case another loop over the reflection points starts. During each loop execution two
vectors are defined, which are the vector from the previous reflection point (for the first reflection from the emission point) to the actual, and from the actual reflection point to the
next. When the orientation of the second vector is negated, the angle between these two
vectors divided by two is the incident angle, due to the fact that incident and the reflection
angles are equal.
When this incident angle is greater than the critical angle, which is previously defined in respect to the refractive index of the scintillator, total internal reflection occurs. If the incident
angle is smaller than the critical angle, the reflection probability needs to be calculated and
the program enters another “if” condition.
After the reflection probability for the actual incident angle is calculated (normalized to 1),
a random number between 0 and 1 is drawn. Now, when the drawn number is greater than
the probability value, the boolean variable, which denotes the loss of the photon, is set to
false - the photon got lost during a reflection.
At position (#8) the program calculates the length of the actual photon’s trajectory through
28
the scintillator according to its reflection points. All length segments, beginning from the
emission point to the first reflection point, first reflection point to second and so forth, are
added up.
This length of the trajectory is then evaluated in the attenuation equation. An “if” condition
is imposed to set the boolean variable to false (if it is not already) in case that a random
number between 0 and 1 is greater than the normalized attenuation probability.
By now the boolean variable describes if the actual photon makes its way to one of the
PMTs or not. Therefore, another “if” condition is imposed, under which the photon’s propagation time and final hit point are determined and stored for all photons that reach the
PMTs.
This “if” condition at position (#9) asks for the boolean variable, and if its value is still
true, executes that condition’s code.
The reflection points of the first ten photons, which do not get lost, are copied into a new
array of array lists. The first photon’s reflection points get stored in the first array list of the
array and so forth. These new array lists are used to generate the graphic elements of the
photon trajectories.
Furthermore, the calculated length of the photon’s trajectory, divided by the speed of light
in the scintillator’s material, yields the photon propagation time and gets stored in another
array.
At last, at position (#10) three more lists are created. Those are the two hit point lists,
which will, after the overall loop is finished, contain the points, at which the not lost photons
are hitting the scintillator’s side edges. They will only contain the data of the first 1000
photons. This limitation is necessary to reduce the amount of memory used to store all the
data, and, moreover, it makes sense, because with more hit points the scatter plots would
get overfilled.
The third list is a list to store the information which photon was hitting which edge of the
scintillator. This control list gets an entry of “0” if the hit was left and of “1” if the hit
was right. Additionally, if the photon gets trapped (gets reflected back and fourth without
reaching the side edges), an empty field is added to the list. This trapping is determined
when the photon’s x-coordinate is not changing after several reflections.
Of course a trapped photon should definitely get “killed” by the attenuation condition, because when it is endlessly reflected, its trajectory gets infinitely long. Nevertheless, the reflection process needs to be aborted after some number of reflection, or otherwise the simulation
29
would be stuck in a endless loop. This abortion leaves the photon with some probability of
surviving the attenuation while it is actually trapped. In that case the non-appearing change
in the x-coordinate identifies the trapped photon.
With the last described code the loop over the total number of photons ends. After it is
finished, the data concerning the propagation of all created photons through the scintillator
is gathered and stored in the corresponding lists and arrays.
At position (#11) the constructor frame3D is called. This constructor is responsible to
gather and put all the pieces of the 3D-graph together.
The last constructor to be called is histogram at position (#12). It is written to deal
with all timing information, and will generate the time of flight histograms as well as the
other time histograms. Furthermore, it calls the constructor to generate the final oscillograph
outputs.
At the end of this method, it gets set which windows (3D-graph, histograms) will be displayed after all the calculations are finished. Of course this is dependent on the user’s choice
made on the UI.
And last, but not least, there are some strings defined, which are used to show some information to the user in the output section of the UI.
5.2.3
Method: itemStateChanged
This method evaluates the user’s choice on the UI, concerning the number of photon trajectories displayed in the 3D-graph, the question whether the muon vector is determined by the
user or randomly chosen, and the choice of the timing histogram’s sizes.
The number of photons to be graphically displayed is defined via a checkbox the user marked.
The method translates this choice into an integer value corresponding to the actual number.
The choice, if a muon vector should be random or not, is translated into the boolean variable
“path”, while true is applicable when the muon vector is chosen randomly and false stands
for a muon vector determined by the user’s input of the coordinates, where the muon enters
and leaves the scintillator.
The scale factor of the histograms, which the user can choose in a pull down menu on the UI,
30
is translated into an integer the same way as it is done for the number of photon trajectories.
“Small, medium, large” and “x-large” in the menu denote the integer values 1,2,3 and 4,
respectively.
5.2.4
Method: stateChanged
The method stateChanged responds whenever the user is moving the sliders, which determine
the coordinates, where the muon enters and leaves the scintillator.
The method identifies, which slider is moved, reads its current value and prints it into the
corresponding text field, so that the user can see how the value changes, while he is moving
the slider.
5.2.5
Object: calculation
The object calculation performs the geometrical calculations for one photon propagating
through the scintillator. Therefore, it gets called once for each photon and returns an array
list containing the photon emission point, which is assigned to the object, when it gets called,
all reflection points it calculates and the point when the photon finally hits the side edge of
the scintillator.
In the beginning of this object’s code the assigned photon creation point gets broken up
into its x, y, and z-coordinates, which are explicitly needed for the calculation.
Furthermore, all necessary variables, as well as the array list, which will hold all calculated
points, are initialized.
At position (#13) the direction, in which the photon will be emitted is determined by
generating a random polar (0◦ − 360◦ ) and azimuthal angle (0◦ − 180◦ ).
In the next lines of code the photon emission point is added to the array list, and the angles
are used to calculate the coordinates of the end point of an imaginary vector of length 1 from
the coordinate origin to that end point.
It is important to realize the coordinate convention used by Java3D. Figure (5.1) is showing
an illustration of the scintillator in the Java coordinate system.
31
Figure 5.1: Illustration of the Scintillator in the Java3D-Coordinate System
The Calculation Loop
At position (#14) a loop, which due to its construction is an endless loop, starts. Every
loop execution describes one reflection process, so that the number of times the loop needs
to be executed is very different for each photon. Nevertheless, the idea is just that the loop
keeps being executed until the actual photon hits the left or right scintillator edge. In such
a case, the loop is simply terminated using a “break” command. This might, of course, not
be good programming style, nevertheless, it is simple and powerful, as well as easy to keep
track of.
To understand the algorithm, which is calculating the reflection points, it is instructive to
build up a little mind model:
The photon emission point is the start point of this model, as well as in the calculation.
Furthermore, together with the coordinates x, y and z of the end point, a line can be defined,
and the searched reflection point is an element of that line with certainty. Moreover, the
reflection point has to be an element of a reflection plane. The possible reflection planes are,
of course, the face planes of the scintillator, which can be easily described by their offset in
respect to the coordinate system’s origin.
Example:
For a scintillator, 5 cm in width, the front and back planes have the z-coordinates 2.5 cm and
-2.5 cm, respectively. The other planes are defined exactly in the same way.
Obviously, the difference of the z-coordinates of the face plane and the start point is the
distance from the start point to the z-plane (and equal for all other planes).
If this distance is now divided by the corresponding coordinate value of the point previously
32
calculated using the randomly generated angles, the result is a scaling factor. This factor
would scale the vector from start to end point in such a way that the end point would be
part of the corresponding face plane.
Because the geometrical planes reach to infinity, there will be a scale factor for each of
the six scintillator planes.
The simulation now uses the fact that the scintillator is centered in the origin, which yields
negative scale factors for the left, bottom, and front plane. Consequently, when the scale
factor is negative, one of these planes is the reflection plane, or one of the other three, when
it is positive.
To finally identify the actual reflection plane nothing more is necessary, than comparing the
scale factors and identifying the smallest one. The corresponding plane is the reflection plane!
The coordinates of the reflection point are simply calculated by taking the start point coordinate and adding the end point coordinate multiplied by the smallest scale factor. This
works like a vector calculation, when vector components (scaled end point coordinates) are
added to space point components (start point coordinates).
This is done at position (#15). Furthermore, the just calculated reflection point now becomes the new start point, which enables the overall loop to process the next reflection point
exactly the same way, and so forth.
At position (#16) another reflection plane identification is programmed. Of course the
reflection plane was identified before, due to the scaling factor. Nevertheless, in case of a
flange or elbow reflection there are two or even three reflection planes involved.
As a remark, it needs to be mentioned that, theoretically, an exact calculation would identify,
indeed, just one reflection plane, but, however, because the Java algorithm is only using float
point precision, and some inaccuracy is inevitable, the additional, multiple reflection plane
identification is necessary!
It is performed by simply comparing the coordinates of the reflection point with those of the
scintillator planes. When the reflection occurs very close within a certain limit of a plane,
this plane is taken to be a reflection plane.
As it is known from vector geometry, when a vector gets reflected at some plane perpendicular to a coordinate axes, the corresponding vector component gets inverted as shown in
(5.1).
33


x


 y 
z

O
R (xz − plane)
=

x


 −y 
z
(5.1)
This inversion of vector components is programmed at position (#17) using a “case” instruction.
While the reflection planes (xy-, xz-, yz-plane) got associated with numbers 1, 2 and 3, the
instruction inverts the corresponding vector component. If there has been more than one
reflection plane, up to three inversions can be performed while doing “case”.
At position (#18) there are finally the abort conditions, which tell the program that the
currently processed photon reached the scintillator’s side edge. This happens when the reflection plane is identified as yz-plane (coordinate convention!).
As mentioned above, there is the need for an additional abort condition in case the photon
got trapped and keeps getting reflected between front and back. In that case there is no
change in the x-coordinate, which is the last abort condition.
As soon as one of these conditions apply, the reflection process of the actual photon is finished, and the loop does not get restarted.
Finally, before this object ends, the last calculated reflection point, which describes the side
face hit point, is stored in a hit point list to be later evaluated for the scatter plots.
5.2.6
Method: focusGained
This method responds when the user is interacting with the UI.
When the user activates any control element by clicking, the method reads the current value
of that element. The value is restored for the actual control element in case the user’s input
was not appropriate.
5.2.7
Method: focusLost
After the user finished his / her input and clicks another control element, what might be the
run button, the program checks if the input was appropriate.
The scintillator’s dimensions are limited, for example. This is necessary, because a long muon
trajectory within a large scintillator means many created photons. Because each photon’s
34
calculation produces a certain amount of data, too many photons result in a memory overflow.
Furthermore, it needs to be ensured that all inputs are in the correct number format. So,
if a user would for any reason enter letters in a field, where numbers belong, the simulation
would catch that error before it can ruin the calculations.
35
5.3
Class: Muon
This class is responsible for providing and dealing with all information concerning the incident muon. It includes geometrical components, as well as physical ones, such as the number
of photons generated due to the ionization energy loss of the incident muon.
5.3.1
Object: Muon
The first object in this file reassigns the needed variables, which are the scintillator coordinates, the information if the user determined the coordinates, where the muon hits and leaves
the scintillator and these coordinates, when chosen by the user.
Furthermore, it calls two other objects described below and initializes the array to hold the
photon emission points, as well as a 3D-graphic object, which will be used to draw the muon
in the 3D-graph.
5.3.2
Object: setCoordinatesVectors
In the first part of this object, it sets the coordinates of the muon.
If the user desired these coordinates to be random, the simulation generates the entry and
exit points of the muon by multiplying the positive distance of the scintillator planes to the
origin (the absolute value is equal to the negative distance) with a random number between
-1 and 1.
While the y-coordinates are fixed within the top and bottom plane, this generates two random points within these planes - the two desired points.
If the user set those coordinates on the UI, they will just be reassigned, and the random
generation described above is skipped.
At position (#19) some numerical inaccuracy is caught if it occurs, to avoid calculation
mistakes.
At position (#20) the second part starts, and the vector properties of the muon are set.
Using the entry and exit points, the “muon length”, which is the distance the muon is propagating through the scintillator, is calculated. Furthermore, the muon vector is defined as the
vector from the entry point to the exit point.
36
Because the muon shall be illustrated in the 3D-graph as a long line traversing the scintillator two more points, the start and end point of this line are needed.
They are calculated by adding the normalized muon vector with the inverted orientation to
the muon entry point, and with the original orientation to the muon exit point. These two
points are called muon line points.
5.3.3
Object: ran
This object generates the random numbers needed to determine the entry and exit points.
A random number between 0 and 1 is drawn. It is multiplied by 2 that yields a number
between 0 and 2 that becomes -1 to 1 when 1 is subtracted.
5.3.4
setTotalNumberOfPhotons
This object calculates the total number of photons which are generated due to the ionization
process.
It uses the Bethe-Bloch-Equation to calculate the mean energy loss.
In a second step, at position (#21), the code generates a pdf, which describes the probability of the mean energy loss according to a normalized Landau-Distribution.
A random probability value of this distribution is picked and compared to another random
number. If the random number is smaller than the probability according to the LandauDistribution, the actual energy loss is determined. If the probability is larger, a new value
of the distribution is picked and compared, and so on until the energy loss is determined.
The results of 100,000 energy loss values produced by the algorithm are shown in Figure (3.3).
The energy, loss which was calculated in units of
MeV
cm
is then multiplied with the muon
length and a factor, describing how many photons per energy loss are created, that yields the
number of created photons.
5.3.5
Object: drawMuon
This object simply generates the 3D-graphic element of the muon. It is constructed as a red
line reaching from the previously calculated muon line start point to the muon line end point.
37
5.4
Class: Beam
The class Beam generates the 3D-graphic object of the photon trajectories.
5.4.1
Object: Beam
This object itself does not do anything more then initializing a graphic object which will later
hold the graphical information of the photon trajectories, and connecting the constructor to
the needed variables of other objects.
5.4.2
Object: drawBeam
The program is written to show, at most ten photon trajectories. Therefore, a loop, which
gets executed ten times, is started.
The object gets the reflection point array list, generated by the ControlPanel constructor,
and reassigns it as currently processed list. According to the user’s choice of the number
of trajectories to be displayed, graphic subelements are generated, each consisting of a line
array. These line arrays are polygon lines, connecting all reflection points of the actual photon.
5.5
Class: Scintillator
This class is generating the 3D-object of the scintillator, including a coordinate system.
5.5.1
Object: Scintillator
First of all, an object is called to set the scintillator coordinates. Next, the graphic object
itself gets initialized, and the objects to create the coordinate system and the scintillator are
called. At last, an array containing color information is generated. It is needed later as a
parameter to draw the scintillator model.
5.5.2
Object: setScintillatorDim
According to the dimensions length, height and width, specified on the UI and already parsed
and converted to information about the distance of the scintillator planes in respect to the
38
coordinate origin, the scintillator coordinate points get defined.
5.5.3
Object: createScintillatorLines
With the coordinates of the points describing the corners of the scintillator, a line array is
created, which is connecting all these points in the appropriate way to generate a three dimensional fence model of the scintillator.
5.5.4
Object: createZ(Y,X)Line
This and the other two objects createYLines and createXLines are each generating a subgraph
object. Again, these objets are line arrays, even if each array has only one line component.
They are displaying the x-,y-, and z-coordinate axes in an appropriately scaled way.
5.6
Class: ScatterFrame left ( right)
The two classes ScatterFrame left and ScatterFrame right generate the elements of the 3Dgraph, which display how the photons are distributed over the side face planes of the scintillator, when they arrive there.
The two classes have exactly the same structure, because the same code generates both scatter plots. Only some parameters are different. Therefore, the two files are described generally
here and only where they differ, special comments are made.
5.6.1
Object: ScatterFrame left ( right)
Similar to Scintillator, first of all, the coordinate points are defined. These are the four corner
points of the left (right) scintillator face plane. Second, the graphic element is initialized,
and the objects are called to generate the (sub)graphic elements.
5.6.2
Object: createScintillatorLines
The object generates the part of the graphic object, which displays the left (right) plane of
the scintillator. It is built, as before, by using a line array.
39
5.6.3
Object: createZ(Y)Line
These two object are again very similar to the objects in Scintillator with the same names.
And they perform the same tasks, namely, to generate a coordinate system for the scatter
plots. As the scatter plots are only showing the side or yz-planes of the scintillator, no x-axis
is needed.
5.7
Class: Frame3D
This class is responsible for the 3D-graphic output. It is putting all the 3D-graphic elements
together, compiling them, and does all the necessary steps to bring the graphic on the screen.
With one exception, all the code in this class is specific Java3D code, and does not contain
any algorithms significant for the simulation. In order not to enlarge the complexity and
extend this work more than necessary, it will not be discussed here. The interested reader
might refer to [9], [10] and [11].
Nevertheless, one part needs to be taken into consideration for completeness.
At position (#22) the array lists, containing the photon hit points for the left and right face
are analyzed. This is realized by looping over the whole length of the array list and extracting
one hit point after another. The so gained coordinates describe the location, where the hit
points need to be generated in the scatter plot frames.
5.8
Class: Histogram
The class Histogram provides the window, in which the histogram graphs are going to be
plotted. As the user can chose their size via the UI, this window, as well as the graphs
themselves, need to be scaled.
The scaling factor already got parsed by the method actionPerformed (5.2.2) and is assigned
to the Histogram class.
After the size and position of the new window is set, the class calls the class DrawPanel,
which is responsible for generating the actual graphic output.
40
5.9
Class: DrawPanel
To generate the timing histograms, some of the timing information itself needs to be calculated first. Therefore, a couple of arrays, to later hold the required timing information,
are initialized. The initialization in the class structure is necessary, that not only the object
which generates the information can access the arrays to write the data to them, but the
objects, which process and evaluate the data, can access the arrays as well, read the data and
generate the histograms.
These objects are called one after another, before, at position (#23) a menu is generated,
at which the user can choose the type of histogram to be displayed. Additionally, there is an
information box added to provide a short description of the chosen histogram.
In the end, the program evaluates whether the user wanted to view the oscillograph output
or not, and calls the corresponding class if necessary.
5.9.1
Object: DrawPanel
The object DrawPanel has assigned several variables, which are basically all defined in the
class ControlPanel. Not all of them are directly used in the class DrawPanel. But as DrawPanel calls Oscillograph, and Oscillograph needs to have the variables assigned of DrawPanel,
DrawPanel needs to have the variables assigned itself.
The first calculation in this class is the calculation of the time of photon emission. This
calculation is based on a double exponential probability distribution function (de-pdf), which
might be different for different kinds of user inputs. For this reason, the first object called
needs to calculate the normalization constant of the de-pdf. This is done by the object Cn.
5.9.2
Object: Normalization Constant, Cn
To determine the normalization constant, which is the inverse of the double exponential’s
maximum value, the program starts a “while” loop.
Starting with the function’s variable equals zero, the function’s value is calculated, while the
variable is constantly increased. Each new value gets compared with the previous one, and
as soon as the new value is smaller than the previous, the maximum is identified.
One could just as well calculate the derivative, and set it to zero, as a maximum is usu-
41
ally calculated. The problem about this is, that Java is not equipped with any equation
solving algorithms, and the sum of two exponential functions containing the same variable
cannot be expanded analytically. Writing a whole algorithm to solve the “derivative equals
zero condition” would be far more complicated than just using the method described above.
5.9.3
Object: timeOfPhotonEmission
The next object called, can now calculate the photon emission time. To get this timing data
for all photons, the program enters a loop, which is executed once for each photon.
To determine the emission time for the actual photon, a new “while” loop starts. Inside
this loop a random number between 0 and 100 is drawn as the time variable of the normalized double exponential function. (Using appropriate values for rise- and fall-time, this range
describes the full width of the function in ns.)
According to this variable, the function’s value gets calculated and compared to a new random number between 0 and 1. In case the random number is smaller than the function’s
value, the function’s variable is taken as emission time for the actual photon, and the program exits the “while” loop. Otherwise it continues the loop, until the emission time is found.
The emission time information for each photon gets multiplied by 10−9 , so it is written
in units of seconds to the emission time array.
5.9.4
Object: timeOfFlight
Employing the just calculated photon emission time together with the timing information
about the muon propagation and the photon propagation, assigned of ControlPanel, the
timeOfFlight object can calculate and process the total timing information. Therefore, it is
called next.
At the beginning, two new array lists get initialized. One of them will be used to store
the total time of flight information for all photons interacting with the PMT on the left, and
the other one will store the information of the photons on the right.
To achieve this, the program starts a loop over all photons. First the control list carrying the information, whether a left or right hit occurs, gets evaluated. According to that,
the sum of muon propagation, photon emission and photon propagation time, gets stored in
42
the corresponding array. The units are re-scaled so the values in the array are of the unit “ns”.
At position (#24) and (#26) the evaluation of the left and right arrays starts.
Timing Array Evaluation
First of all, the arrays are getting sorted, so the smallest time values are stored at the beginning of the array, and as the array index increases, the time values do so as well. This can be
done, because it is not important anymore to identify a certain photon with a certain time.
In the next step an array with 2,000 fields is initialized. These 2,000 fields correspond to time
intervals of, 50 ps what equals an overall time of 100 ns. It might appear that some single
photons will not fit into this array because their time of flight is longer than 100 ns, but this
case is very rare, and such slow photons are of no interest for the simulation.
A new loop starts, which is dividing the photons in the fields of the array or time intervals.
The time values are getting checked, and if they lie within the actual interval, the value of
the corresponding array field gets increased by one. Employing this algorithm for all photons
and intervals, the number of photons per time interval, the histogram data, gets stored in
the arrays.
At last, to finalize the histogram data, the 50 ps intervals get rescaled at positions (#25)
and (#27). The need for this rescaling arises from the fact that 2D-graphic elements, such
as the histogram bars, have a maximum resolution of 1 pixel. So, if each bin would just be 1
pixel wide, 2,000 bins would ask too much of most users’ screen resolution.
Nevertheless, the 50 ps precise intervals are needed for the calculations concerning the oscillograph’s data.
To convert the 2,000 bins into 100 bins with 1ns resolution each, the program simply adds the
values of 20 consecutive high resolution bins together to the new value of one low resolution
bin.
The so gained array contains the final histogram data!
With this last step, the timing array evaluation is finished. Because exactly the same algorithm is used to process the data for the other histograms (pure photon emission time,. . . )
it will not be explained there, but referenced to the paragraph above.
43
The last couple of lines of code, starting at position (#28), are adding the two arrays,
just calculated above, together to yield the time of flight sum. This will be used to generate
a time of flight histogram which is showing the overall time distribution of photons, independent of propagation to the left or right.
5.9.5
Objects: Histogram Data
The three objects muonPropagationData, photonEmissionData and photonPropagationData
are all pretty much the same. Each of them is processing the timing information according
to their names by employing the “Timing Array Evaluation” algorithm. Nevertheless, there
are small but important differences!
muonPropagationData
The fact that the time an average muon needs to propagate through 5 cm of scintillator
material, is of magnitude 0.1 ns, suggests that all array values are getting multiplied by 1011 .
The results of this multiplication are array values of magnitude 10, while each data interval
is of width 1 ns that yields an appropriate graphic resolution. Accordingly, the range of the
histogram’s x-axis reaches from 0 ns to 1 ns (100 bins a 10−11 ns).
photonEmissionData
The multiplication factor in this case is 109 , so the x-range reaches from 0 ns to 100 ns.
photonPropagationData
Again, the multiplication factor is 109 , but in this case the interval range is just 0.02 ns. 100
intervals of 0.02 ns are resulting in a histogram with a x-range reaching from 0 ns to 2 ns.
5.9.6
Method: itemStateChanged
This method responds whenever the user changes the type of viewed histogram via the integrated pull down menu.
It sets the display variable to 1, 2, 3, 4 or 5, correspondingly to the histograms of time of
flight, time of muon propagation, time of photon emission, time of photon propagation or the
sum of the time of flight, respectively.
44
Moreover, it changes the text of the information box, so the user gets the appropriate explanation for each histogram type.
5.9.7
Method: paint
In the first place, the method paint determines the maximum value of the data arrays of each
histogram type. These values are used to scale the height of the histograms, like a graphical
normalization.
After two transparent colors for the left and right signal are defined, the program finally
generates the desired histograms by painting filled rectangles.
The scale of these rectangles depends, in x-direction, on the number of photons per interval,
the normalization and the users’ choice of the histogram size. In y-direction it only depends
on the histogram size itself.
At last, the method paint draws the coordinate system for the histograms, adds the correct scale identifier to the axes, and draws a small legend, telling the user which histogram
color is associated with which signal.
5.10
Class: Oscillograph
This class opens another new window, in which the simulated screen of an oscillograph will be
printed. As it was called from the class DrawPanel, it has all the necessary timing variables,
generated there, assigned.
Itself calls the class DrawOscScreen, which generates the plots.
5.11
Class: DrawOscScreen
The class DrawOscScreen performs all necessary steps to bring the oscillograph output to the
users’ screen. This output will consist of a histogram and a fit function, which describes the
time dependent voltage output of the PMTs. Furthermore, several parameter values, such
as the maximum signal amplitude and time difference until both signals reach a user defined
threshold, are determined.
At the very beginning of the class, numerous arrays and variables are initialized. The arrays
are needed to store, rearrange and evaluate the timing data for the histogram calculations.
45
The variables serve different purposes and have a short description within the source code.
5.11.1
Object: DrawOscScreen
The object DrawOscScreen has the arrays containing the general timing information assigned.
In addition to that, it carries the voltage threshold values, which the user set at the UI.
The very first task performed by the object, is to configure a number format parameter,
which can be called along with any variable. Its purpose is to define the number of float
digits an output has, when displayed to the user.
In the next step, the threshold parameters get reassigned, and the basic features (background
and visibility) of the window, in which the graphs will be displayed, are set.
At position (#29) the object pulse is called to finalize the timing data in order to generate the histograms.
And at position (#30) the object function is called, which will perform the task of generating a fit to the histograms. This fit function will later be used to analyze the output signal
in detail.
After calling these two objects, the program generates five control elements (buttons), which
the user can use to resize and view different parts of the final histogram.
5.11.2
Object: pulse
The object pulse generates the histogram view of the voltage output given by the PMTs. It
has two arrays assigned, each containing the information of the number of photons arriving
at the left and the right PMT within a certain time interval of 50ps width.
In addition to the assigned arrays, two new arrays (the poisson arrays) are initialized. These
arrays will be used to store the data of the single photoelectron spectrum. The first one will
hold the information with a very high time resolution, while the resolution in the second one
will be rescaled to match the resolution of all other timing information.
At position (#31) the object poissondistributor is called within a loop. The loop gets
executed 106 times and generates the poisson distribution data of the single photoelectron
spectrum.
46
During another, following loop, this data gets rescaled to a 50 ps time resolution and stored
in the previously initialized array.
Signal Generation
At position (#32) the timing information of the photons and the poisson distribution are
getting combined.
To do that, the single photoelectron data from the poisson distribution is multiplied by the
number of photoelectrons, and added up. This is done by allowing the single spectra to
superpose each other, that yields the final number of electrons per time interval, which arrive
at the anode of the PMT. The index or binnumber of each interval is used as time index.
Of course this is performed for both, the left and the right photomultiplier signals.
The arrays containing this initial information are larger (4,000 intervals) then they would
need to be to store the information itself. Nevertheless, this exceeded array size is useful to
simplify the programming when enabling the user to zoom into the data.
The time resolution of these arrays is still 50 ps per interval, but to print the histograms, the
resolution needs to be reduced to 1ns, that is done in a following loop, by just adding up the
data from 20 conceding intervals.
At position (#33) the program searches for the first interval of the data arrays, in which a
significant number of entries exists.
This is necessary to know after what time the signal starts to rise. It yields the time, which
elapses before the first electrons reach the PMT anodes, and gives an offset, which is needed
to draw the fit functions later.
The last task performed by the object is to call two other objects, rescaling and normalization, which do what their names say. The first one rescales the data, if the user zooms
in or out, and the second one normalizes them to a fixed level, in order to fit to the screen
independent of the strongly varying signal amplitude.
47
5.11.3
Object: function
This object calculates the necessary parameters to draw the fit functions.
First, it calculates again, how many photons or photoelectrons are responsible for the final
voltage signal. With this information, it calculates the overall current flux and signal voltage.
Employing the properties of the fit function, it is then used to calculate the maximum of each
signal’s amplitude.
At last, the object thresholds is called, which is responsible for determining the time, after which the signals reach a certain threshold.
5.11.4
Object: thresholds
The object simply performs its task by evaluating the fit function step by step, until the
functions value is greater than the threshold value. As soon as this condition is found to be
true, the loop aborts, and the desired time information is found.
In order to yield the final time difference between the left and the right PMT’s signal, the
previously calculated offset time is added to the functional difference.
5.11.5
Method: actionPerformed
The method responds when the user is changing the zoom factor of the display or scrolling
in order to see different parts of the histogram.
The code parts, controlling the scrolling, are defining an offset for the index of intervals
to be displayed. Furthermore, the labels of the x-axis are changed correspondingly to provide
the correct information about the currently viewed part of the histograms.
In a very similar way, a zoom factor is set when the user wants to in- or decrease the time
resolution. The axis labels are getting adjusted as well.
After each code segment described above, the necessary objects to perform either the rescaling, the renormalization, or both are called.
48
5.11.6
Object: rescaling
The object rescaling now incorporates the previously defined parameters: offset and zoom.
For both, the left and the right PMT signals, it adds a different number (corresponding to
the zoom factor) of intervals up. The offset determines the first interval of this sum.
This is the point where the exceeding size of the arrays is helpful. If the user wants to
view the very right part of the histograms, the offset can become very large. The loop
counter identifies the index of the intervals, which are added up. So, if the offset is large, and
the loop counter, which starts from that offset, is counting, the counter and, therefore, the
array index would become larger than the last interval index, which is containing data.
If the array size would be limited to intervals containing data, the algorithm would yield an
“index out of bounds error”. While defining the larger array, this problem just disappears,
and the addition loop is just adding up empty array fields or intervals.
5.11.7
Object: normalization
This object identifies the intervals within the data arrays, which contain the maximum number of entries. The indices of these intervals are the x-coordinates, and the number of entries
itself are the y-coordinates of the histogram’s maxima. These parameters will be used by the
paint object to scale the histograms appropriately.
5.11.8
Method: paint
The method paint finally generates the graphical output of the histograms and the fit functions.
First of all, a coordinate system and grid is drawn. The purpose of that is to imitate the
screen of an oscillograph, so the user can associate the outputs easier with what she or he
would see while performing the real experiment.
49
Drawing the Histograms
At position (#34) the histograms are drawn. For each interval of the arrays finalized for
drawing purposes, a four pixel wide rectangular bar is drawn at the time position corresponding to the intervals index. The height of the histogram bar is determined by the number of
entries within the interval, and scaled by the previously defined normalization.
After the bars are drawn for each interval of each signal, the histograms are finished.
Following the generation of the histograms, the program generates the written output, which
is placed at the lower right of the screen. It gives the user the information about the time
difference, after which the signals reach the defined thresholds.
Plotting the Fit Functions
At position (#35) the program draws the fit functions to the histograms.
To do that, the program enters a loop. Starting from zero, the fit function gets evaluated at
two closely conceding x-values. Then, the two resulting points are getting joint by a short
line. Due to the very small x-distance, the line just looks like a dot, and by continuing that
procedure a smooth function is drawn.
The x-coordinates of the function’s points are determined by the indices of the data intervals and the previously calculated offset.
The y-coordinates are determined with an additional complication. In addition to the function’s value itself and the normalization factor, there is another scale factor necessary to yield
the right amplitude relation between the left and right PMT’s signal.
After all the drawing is done, the program plots the maximum amplitude of both signals. At
position (#36) these values are printed to the oscillograph screen.
5.11.9
Object: poissondistributor
The object poissondistributor has a double value parameter assigned. This parameter defines
the intensity of the poisson distribution programmed here.
When called, the object draws a random number, according to poisson statistics with the
50
assigned intensity parameter.
5.12
Class: Constants
The class Constants contains a number of different color parameters. There is nothing special
to that. The variables just got rolled out, because they are needed several times in several
places, and they are easier and more convenient to handle that way, instead of defining them
in each file.
5.13
Class: WindowDisposer
The property of the WindowDisposer class is that, when the user closes the main window,
i.e. the browser holding the UI, all other windows opened by the simulation, such as the
histogram or oscillograph window, get automatically closed as well.
It is, therefore, just a little addition to improve the users convenience.
51
Part III
Data and Results
52
Chapter 6
Timing Outputs
In this chapter the primary results of the simulation are shown and discussed.
In each of the following four sections three histograms are shown. These histograms display
the simulated data for three different muon tracks.
Left Graphs
The graphs on the left hand side show the results from a simulated muon which is entering
the scintillator at the center of its top face plane and leaving it at the center of its bottom
face plane.
The simulated energy loss along the muon track inside the scintillator was simulated with a
.
muon energy loss of 2.94 MeV
cm
Centered Graphs
The graphs at the center are showing simulation results of a muon track similar to that of
the left graphs. The difference is that the x-coordinate of the muon track is not 25 cm (centered) as before but x = 4.0 cm. The muon is passing through the scintillator close to the
scintillator’s left face plane.
The energy loss during that simulation was self-determined to be 2.58 MeV
.
cm
Right Graphs
The graphs at the right hand side finally show simulation results of a muon track with the
x-coordinate x = 36 cm. In this case the muon passes through the right half of the scintillator.
Nevertheless, it is far more distant from the right face plane, than the muon which is passing
close to the left face plane (centered graphs).
53
The simulated energy loss was 1.99 MeV
.
cm
These conditions are important, because there effects are visible at the graphs, and will
be discussed in the sections below.
6.1
Time of Flight
The Time-of-Flight (TOF) histograms are showing how many photons are arriving at the
left- and right-hand PMT within a certain time interval of 1 ns.
Figure 6.1: Time of Flight Simulation Histograms
The left graph of Figure (6.1) shows two signals, equivalent in amplitude and shape. Because
the scintillator is perfectly symmetrical and the muon was passing through its center, this is
what one would expect.
The probabilities of reflection and attenuation are equivalent for photons propagating to the
left or right PMT. Of course there are statistical fluctuations, and these show up in the histograms as well, but nevertheless one can easily see the accordance of both histograms.
While looking at the centered graph a different behavior can be seen. Here the amplitude of
the left PMT’s signal is much larger than the amplitude of the right PMT’s signal.
This is mostly due to the fact that the muon was passing through the scintillator close to
its left face plane. Consequently, the propagation distance to the left PMT is small and the
reflections and attenuation probability for these photons is small as well. That results in a
greater PMT response.
54
Contrarily, the distance to the PMT on the right is large and a significant number of photons
are getting attenuated before they can reach the PMT. Consequently the signal amplitude is
small here.
Furthermore one can see, that the left signal is starting to rise significantly before the right
signal does so. The reason for that is obviously, that the photons which are generating the
left signal need less time to propagate to the PMT than the photons responsible for the right
signal.
The histograms of the graph on the right show a similar behavior. Of course now the right
PMT’s signal is larger, and the fact that the muon was passing closer to center through the
scintillator than before, reduces the great difference between the two amplitudes to a smaller
level.
Due to the fact that the average distance the photons have to propagate through the scintillator is less different for both signals, the time difference between the signals is lessening as well.
6.2
Muon Travel Time
The muon travel time is the time the muon needs to travel from the point where it enters
the scintillator to the point where a certain photon will get emitted. Because the angular
distribution of the emission process has no preferred direction, the probability of emission is
equivalent for all angles. Furthermore, the probability of emitting photons is the same along
the whole muon trajectory.
Figure 6.2: Simulated Muon Travel Time Histograms
55
Nevertheless, again the effects of the reflection and attenuation condition are appearing in
the graphs. The number of photons which are not getting attenuated before reaching the
PMTs depends on the x-coordinate of the muon track. The closer the track is to a side face
plane, the more photons will contribute to the signal.
All this can be seen in the three graphs of Figure (6.2). First of all, the number of photons is constant (apart from statistical fluctuations) for every signal. Second, for the muon
trajectory close to the left face plane, one sees many photons contributing to the signal and
much less to the other. Finally, the relation between the average number of photons per
signal is decreasing, as the muon trajectory gets further way from the side face plane.
6.3
Photon Creation Time
The photon creation time is the time which elapses between the moment when the muon
excites an atom and the moment when the photons are created and emitted.
Figure 6.3: Simulated Photon Creation Time Histograms
Because the timescale (∼ 100 ns) of this process is much larger than the timescale of the
muon travel time (∼ 1 ns) and the photon propagation time (∼ 1 ns), this is the dominating
process.
The shape of the distribution is a double exponential function, and can be seen in the histograms of Figure (6.3). Furthermore, as it is the dominating process, this shape is seen in
the TOF histograms as well.
56
After all, the TOF histograms and the photon creation time histograms are very similar.
The only significant difference is, that for the TOF histograms, the additionally considered
effects of muon travel time and photon propagation time are resulting as delay of the rise of
the signals.
6.4
Photon Propagation Time
The proton propagation time histograms are showing the time the emitted photons need to
propagate through the scintillator and reach the PMTs.
Figure 6.4: Simulated Photon Propagation Time Histograms
The amplitude of these signals or the number of photons arriving at the PMTs is of course
depending on the muon trajectory again. Photons created close to one of the scintillator’s
side face planes have a greater probability of reaching the corresponding PMT.
Furthermore, the shape of all histograms show a fast rising left flank and slower falling
right flank with a very tiny tale. Additionally there is a sharp maximum somewhere close to
the center.
This is due to the fact, that the length of the photon trajectories follows a certain distribution. A small number of photons will make their way through the scintillator without any
reflections and have very short trajectories. Nevertheless, most photons have some average
trajectory length, because long trajectories with many reflections are very improbable because of the reflection and attenuation conditions.
Therefore the histograms, show the fast rising left flank of very short trajectories, the cen57
tered peak of photons with average length trajectories, and the falling right flank with the
tiny tale as the probability of long trajectories falls according to the reflection and attenuation conditions.
58
Chapter 7
Oscillograph Screen
Figures (7.1) and (7.2) are showing the final output of the simulation.
As mentioned before this output is designed to graphically match the output an oscillograph
would show to the user, while performing the real experiment.
Figure 7.1: Simulated Oscillograph Data, x(muon) = 25.0 cm, Plotted is the PMT Output
Signal in Volt over Time
In addition to the graphical output, the simulation tells the user three final timing information.
These are the two times after which the signals reach a user defined threshold and the difference between them. The latest one is of special importance, because at the real experiment
59
Figure 7.2: Simulated Oscillograph Data, x(muon) = 7.0 cm, Plotted is the PMT Output
Signal in Volt over Time
one would use that information to figure out the coordinates of the muon trajectory.
As in the simulation these coordinates are known, one can test the simulation results by
calculating the muon trajectory coordinates and comparing them to the simulation data.
7.1
The Results
The first Figure (7.1) shows a simulation of a muon which is passing through the center of
the scintillator. The energy loss was determined to be 2.50 MeV
.
cm
Both signals are of course very similar again. In fact they appear to be identical, taking the
statistical fluctuations into consideration.
The shape of the signals is again the double exponential distribution which was already dominating the TOF histograms.
This is understandable considering the fact that from the moment the photons arrive at the
PMTs, there are no more effects which change the shape of their distribution.
Neither the coupling of scintillator and PMT, nor the processes within the PMT do so. The
electron avalanches are assumed to have the shape of a Poisson distribution, as mentioned
above. These avalanches are just getting multiplied and added up, while the multiplication
60
factors are exactly described by the double exponential function.
Furthermore, both signals show almost the same maximal amplitude of voltage as expected
due to symmetry considerations.
The second illustration of a simulation result is shown by Figure (7.2). In this case the
x-coordinate of the muon trajectory was set to x = 7.0 cm, and the energy loss was simulated
to be 4.08 MeV
.
cm
The most important information of this simulation’s run are the difference of both signal’s
amplitudes and the threshold time difference.
The difference of the amplitudes is of course due to the fact that the muon is passing through
the scintillator close to its left face plane and all the implications of reflection, attenuation
probabilities and muon travel as well as photon creation and propagation time.
The same effects are responsible for the time delay after which the signals reach their threshold levels. The left signal starts earlier to rise than the right one and the time difference is
simulated to be 1,850 ps as seen in Figure (7.2).
61
Chapter 8
Applications
In the following chapter two different applications of the simulation program are discussed.
These two applications have been chosen to demonstrate the capabilities of the simulation, to
show its accuracy and to determine where the employed algorithms may need improvement.
Moreover, the performed simulation runs have been designed in such a way to study interesting properties of a TOF experiment which are hard or impossible to study with an real
experiment. For example, the fact that the muon trajectory can be controlled by the user in
the simulation, which in reality may be at most approximated by using a suitable arrangement of tracking devices and triggered data acquisition devices.
Both applications require several hundred runs of the simulation to generate the required
data. For this reason, three additions are made to the simulation.
First, the new class Output generates a file on the users hard disk to which the simulation
will write the required data during each simulation run.
As a remark, it needs to be mentioned here, that to make this work some adjustments have
to be done to the Java Virtual Machine settings in order to enable it to access the file system
and generate / write to a file.
Second, the object actionPerformed of the class ControlPanel needs to be renamed and called
directly at the end of the object ControlPanel of the class ControlPanel. This substitutes
the user’s click on the run button, and enables the simulation to run independently after
executed.
Third, after all needed data is calculated and written to the output file, the simulation needs
to be terminated. This is simply achieved by a program exit command. The simplest possibility is to add the line ”System.exit(0);” to the source code.
With these changes, a simulation run would produce data and close afterwards. Therefore,
an arbitrary amount of simulation data can be obtained by employing the following DOS code:
62
@echo off
echo Simulation Endless Loop Initialized
:EXECUTE
appletviewer APTsimulation.htm
GOTO EXECUTE
8.1
The Attenuation Process
The first application is focussing on the attenuation process while the light is propagating
through the scintillator.
To study the effects of attenuation it is very useful to look at the total charge Q which is
collected at the PMT’s anodes and plot it over the x-coordinates of the muon trajectory.
8.1.1
Simplified Simulation
The first set of data about the attenuation process is acquired without considering the Landau
distribution. This means that the energy loss for all muons is equal and equal to the most
probable energy loss determined by the BBE (3.1).
The muon trajectories are programmed to pass perpendicular through the scintillator. The
y- and z-coordinates are fixed so, that all trajectories pass through the scintillator’s center,
only the x-coordinate is variable and chosen randomly.
The value of the attenuation length λ which was put in the simulation was set to be λ =
100 cm.
Figure (8.1) is showing 55 data points of the described experiment.
Primarily, these data points should be distributed according to the attenuation condition
(3.13), because it is the most important factor concerning the photon travel distance and
the number of photons (which is directly correlated with the final charge Q). Of course the
attenuation condition is programmed as a pdf and therefore the data points are expected to
spread out.
From (3.13) it is known that the data should follow an exponential distribution, or if plotted
logarithmic (Figure 8.2), a linear distribution.
The first obviously remarkable fact is the rise of the signals when the muon passes the
63
Figure 8.1: Attenuation Data
Figure 8.2: Logarithmic Plot of the Attenuation Data
scintillator close to one of the PMTs. To explain that, several facts might be taken into
consideration.
First of all, when the muon trajectory closes in on the face plane where the PMT is mounted,
the distance the photons have to travel decreases naturally. But this alone should not make
the signal in the logarithmic plot differ from the expected linear behavior.
The difference can be explained by the fact, that not only the attenuation condition is affecting
the number of photons but reflection conditions as well.
The probability of a photon to be reflected is very small below the critical angle (65.4◦ in
this experiment). Those photons with small incident angles almost certainly drop out of the
calculation, as if they would have been attenuated.
64
As long as reflections with all kinds of angles are possible, the effect would just lower the
average number of photons.
But, when the photons are getting emitted close to a side face plane, those which would
get lost because of their small incident angles may reach the PMT before the reflection even
occurs. In this case the number of photons lost by transmission decreases dramatically.
With a critical angle of ∼65◦ and the known scintillator height of 5 cm, the distance at which
the effect would start to alter the linear slope can be easily calculated.
5 cm · tan 65◦ ' 10.7 cm
(8.1)
The result of (8.1) is in very good accordance to what one can read of Figure (8.1) and (8.2).
When the muon’s trajectory comes closer than 10cm to the PMT, the signal starts to rise. It
shows, that not only the simulated attenuation condition is working fine, but the reflection
programming as well.
Furthermore, that data independent of the just discussed effect at the face planes, can be fitted and analyzed further. Equations (8.2-8.4) describe how to obtain the attenuation length
λ from a linear fit to the logarithmic plotted data.
l
Q ∼ e− λ
l
ln Q ∼ −
λ
1
m∼−
λ
The parameter m in equation (8.4) describes the slope of the linear fit function.
(8.2)
(8.3)
(8.4)
To determine this parameter, the data were fitted using Mathematica. The graph and the
results are shown in Figure (8.3).
Where the data with the muon passing closer than 10 cm to the PMT are left out, for reasons
discussed above.
The numbers next to the fit functions at the graph are the results for the attenuation length
λ for the right and left PMT, respectively.
While having a close look at the data points in Figure (8.3) one can empirical see, that the
linear fit is actually not a very good choice. In fact, both distributions are showing a small
curvature. Especially the data points from incidents close to the PMTs seem to lay too high.
The explanation for that is closely related to the above discussed effects from the reflection conditions.
65
Figure 8.3: Linear Fit to the Logarithmic Plot of the Attenuation Data
The distance at which the effects start to influence the data was determined to be ∼ 10 cm.
But these are just the first order effects. After a first (total internal) reflection occurred
there can be of course a second reflection. Considering the first reflection point as theoretical
photon emission point, the second reflection during which the photon might get lost may not
occur because the photons reaches the PMT first.
The number of those cases is of course much smaller than that of the first order cases and
therefore its significance, and that of higher order effects, is very small.
Nevertheless, it is enough to increase the slope of the fit function slightly. So when the attenuation length is calculated by (8.5) the actual calculated value becomes smaller than the
the simulation’s input of 100 cm.
λ=
1
m
(8.5)
The simulation shows its consistency here again. The values determined by the fit are of the
correct order of magnitude, and the discrepancy between the real attenuation length and the
determined values may be attributed to effects from reflection processes.
It should be very interesting to study the details of those effects and compare them to mea66
surements of the real experiment. Unfortunately, that would exceed the frame of this thesis.
8.1.2
The Full Statistical Process
To investigate the full statistical process, the Landau distribution of the energy loss has of
course to be considered. The difficulty here and the reason why it was neglected in the previous study is, that much more data are necessary in order to study any effects.
The gathering of the needed amount of data is not any different to the data acquisition before,
it is just time intensive.
The goal of this modified version of the first application was to compare the data which
include to full statistics to the previously gathered data.
To do so, four times 1,000 incident muons have been simulated, passing through the scintillator along four, to the scintillator perpendicular, trajectories. The x-coordinates of those
trajectories haven been set to x = {−15, −5, 5, 15} cm.
Figure (8.4) is showing the logarithmical average charge Q out of 1,000 events per muon
trajectory, and results of the fit procedure.
Figure 8.4: Linear Fit and Calculated Attenuation Length from Data of four Different Muon
Trajectories
67
Both fit values are close to the attenuation length results of the simplified simulation (Figure
(8.3)) neglecting the Landau distribution, and all the matters discussed above are applicable
here as well.
The reason why the two values for the left-hand and right-hand PMT are showing an appreciable significant difference is not known at this time.
Likely explanations seem to be, that effects of the random generator used to supply the
probability distribution functions within the simulation, statistical fluctuations or systematic
effects may appear here.
Maybe it is a real effect and its explanation is missing here, or maybe the simulation is not
working absolutely soundly here.
Unfortunately, this has to be left open for discussion and further investigation here.
8.2
The Time Resolution
In a real TOF experiment the coordinates of the muon trajectories are provided by additional
tracking devices or they are completely unknown. In the AP T 3 , to determine the position
where the muon was passing through the scintillator, small beam counters are placed on top
of the actual scintillator. Only when signals from those beam counters show coincidence with
signals from the scintillator a measurement will be executed.
The size of the beam counters is a crucial factor to the experimental setup. If the size is too
small, on the one hand, only very little coincidences will occur. On the other hand, if the
size is too large, the position measurement would have a large uncertainty.
The second application is designed to analyze the effects of the size of the beam counters in
respect to the time resolution.
Therefore, the simulation is randomly generating muon tracks. These tracks are limited to
a certain area of the scintillator. For example, a cubic part of the same height and depth as
the scintillator, and a specific width.
For this application three different widths (1 cm, 2 cm and 4 cm) are investigated.
Within these limitations 1,000 muons are simulated and the final time values, after which
the voltage signals, created by the left- and right-hand PMT, reach a certain threshold level
(1 V), are recorded.
The difference of those two time values is analyzed in order to gain information about the
68
TOF resolution.
8.2.1
FWHM as Reference Value
The timing information ∆t = t1 − t2 where t1 and t2 describe the signal from the left and
right PMT, respectively, is calculated by the simulation in multiples of 50 ps. Therefore, it is
easy to count the number of events which produce a certain ∆t.
Hitpoint Spread 1 cm
Figure (8.5) is showing the collected data while the width of the part of the scintillator,
through which the muon trajectories have been allowed to pass, was set to 1 cm.
Figure 8.5: Gaussian Fit to Simulation Data, Hitpoint Spread: 1cm
Furthermore, a gaussian fit is applied to the data, and σ of the fit function (8.6) is computed
as best fit parameter.
Using equation (8.7), one can easily calculate the Full Width Half Maximum value of the
69
fit function, which is used to describe the TOF resolution and compare different data sets.
(x − θ)2
f (x) = a · exp −
2 · σ2
FWHM = 2 ·
!
q
2 · ln(2) · σ
(8.6)
(8.7)
Hitpoint Spread 2 cm
Figure (8.6) is showing data collected with a hit point spread of 2 cm and the resulting fit.
As described above, the FWHM is calculated from the best fit parameter.
Figure 8.6: Gaussian Fit to Simulation Data, Hitpoint Spread: 2cm
Hitpoint Spread 4 cm
Finally, the same type of simulation was performed with an hit point spread of 4 cm. The
corresponding data, fit and FWHM result is shown in Figure (8.7).
The detailed fit procedures and computed results of the three data sets shown above are
included in Appendix B of this work.
70
Figure 8.7: Gaussian Fit to Simulation Data, Hitpoint Spread: 4cm
8.2.2
Data Evaluation
In general, the gathered data shows the expected behavior. First of all, they are distributed
according to a gaussian function.
Second, the peak of the distribution is centered at ∆t = 0 ps as expected, because the hit
area was set symmetrically around the scintillator’s center.
Third, while the width of the area through which the muons were traversing increases, the
FWHM values increase as well.
Nevertheless, some interesting and rather obvious or expected details appear and need to
be discussed.
Pure Gaussian or Gaussian Convolution
As mentioned above, the Gaussian fit seems to be in good accordance with the data. Nevertheless, all three fits show deviations from the pure Gaussian shape at the lower part of the
left- and right-hand flank.
To examine how significant these deviations are, the quality off all three fits was analyzed.
71
Using Equation (8.8) the quality of a fit can be determined. The detailed explanation is
given by [12]. Within this equation, y describes the actual data value, f (x) the fit function’s
value at this data point’s position and % the deviation of the actual data value, which can be
q
√
expressed by y or f (xi ).
2
χ =
X
i
yi − f (xi )
%i
!2
(8.8)
The quotient of χ2 and the number of degrees of freedom finally gives a quantity which describes the quality of the fit.
Table 8.1: Quality of Gaussian Fits
Hitpoint Spread
Fit Quality
1 cm
2 cm
4 cm
2.21
2.10
2.40
Table (8.1) summarizes the calculated values. As expected, the results differ significantly
from the value of 1, which would indicate that the data is completely accounted by the fit
function. It seems that the assumption to fit a pure Gaussian to the data was not the best
choice.
Indeed, the statistical nature of the processes simulated during the TOF measurement should
result in Gaussian distributions. But from the collected data it seems more likely, that rather
than a single Gaussian function, a convolution of a Gaussian function and some other function which accounts for the geometrical constants, due to beam counter size and placement,
is applicable.
A fit of such a convolution is very likely to result in a better fit.
Nevertheless, the details of this effect, its origin, significance and detailed analysis must be
left for further research beyond the limits of this thesis.
72
Chapter 9
Conclusion and Outlook
The work on this project was quite challenging almost all the time, many things had to be
learned and many obstacles, especially during programming, had to be overcome.
But finally a quite powerful simulation program has resulted. In the first practical tests and
applications it has proved itself to be working properly and has already shown some interesting aspects which are hard to study employing a real experiment.
Furthermore, without special settings and limitations, to the muon trajectory coordinates
for example, the simulation is capable of simulating an important part of the real AP T 3 experiment and can be implemented in the overall project, so lab personnel and internet users
can use it to study and compare experiments, both real and simulated.
An advanced user can alter the source code slightly to design special applications and study
very special or specific TOF properties.
As indicated in the text, the simulation is of course not perfect and there are quite a few
aspects where it can be improved. Not just because of that, but also because of its already
shown capabilities, it provides the basis for a broad variety of further studies and new projects.
Further information and the complete source code is available on the projects homepage:
http://ahep.phy2.albany.edu/∼markus/
73
Bibliography
[1] Leo, William R.: Techniques for Nuclear and Particle Physics Experiments: A Howto Approach, Berlin; New York, NY: Springer-Verlag, 1st Edition (1987)
[2] WIKIPEDIA, The Free Encyklopedia:
http://en.wikipedia.org
[3] CPEP, Contemporary Physics Education Project:
http://www.cpepweb.org/cpep.html
[4] JavaT M 2 Platform, Standard Edition, v 1.4.2 API Specification:
http://java.sun.com/j2se/1.4.2/docs/api/index.html
[5] Reviews, Tables, and Plots in the 2004 Review of Particle Physics, Passage of particles
through matter :
http://pdg.lbl.gov/2004/reviews/passagerpp.pdf
[6] Reviews, Tables, and Plots in the 2004 Review of Particle Physics, Particle detectors
(Rev.) errata:
http://pdg.lbl.gov/2004/reviews/pardetrpp.pdf
[7] R. M. Sternheimer: Density Effect for the Ionization Loss of charged Particles in
various Substances: Atomic and Nuclear Data Tables 30, 261-271 (1984)
[8] D. Clark: Nucl. Instrum. Methods 117, 295 (1974)
[9] Java 3D API Tutorial Updated :
http://java.sun.com/products/java-media/3D/collateral/index.html#tutorial
[10] J. Barrilleaux: 3D User Interfaces with Java 3D, A guide to computer-human interaction in three dimensions; Manning Publications (2000)
[11] D. Selman: Java 3D Programming; Manning Publications, Reprint (2002)
74
[12] Philip R. Bevington, D. Keith Robinson: Data Reduction and Error Analysis for the
Physical Sciences, New York, NY: McGraw-Hill, 3rd Edition (2003)
[13] Fadle Assallami: Time-of-flight system in Albany particle physics tower APT3, Albany, NY (2003)
[14] Roger R. Bate, Jerry E. White, Donald Mueller: Fundamentals of Astrodynamics,
Mineola, NY: Dover Publications, Inc. (1971)
[15] David Speiser, Francis Halzen, Jacques Weyers: Particle interactions at very high
energies, New York, NY: Plenum Press (1974)
[16] S. J. Lindenbaum: Particle-interaction physics at high energies, Oxford: Clarendon
Press (1973)
[17] Alexander Gideon: High energy physics and nuclear structure: Proceedings of the
Second International Conference on High Energy Physics and Nuclear Structure held
at the Weizmann Institute of Science, Rehovoth, February 27-March 3, 1967, New
York: Wiley (1967)
[18] J. E. Hooper, M. Scharff: The cosmic radiation, New York: Wiley (1958)
[19] V. D. Hooper: Cosmic radiation and high energy interactions, London: Logos Press
(1965)
[20] Thomas K. Gaisser: Cosmic rays and particle physics, New York: Cambridge University Press (1990)
[21] I. U. Akimov, D. Hywel White: Scintillation counters in high energy physics, New
York: Academic Press (1965)
[22] Burle Industries, Inc.: Photomultiplier Handbook, Lancaster, PA (1989)
[23] J. B. Birks: The Theory and Practice of Scintillation Counting, New York: Pergamon
Press Ltd (1964)
75
Appendix A
For the complete Java source code written for this Master’s Thesis please refer to the included
CD. The source code is available there in its original version, as well as in the Adobe Acrobat
(pdf) format.
76
Appendix B
The following pages are showing the Mathematica code which was used to develop some of
the simulation algorithms. Some of the figures shown in the thesis text have been generated
by this Mathematica files.
77