Download Energy Resolution as Function of Incident Photon Energy

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Photon polarization wikipedia , lookup

Future Circular Collider wikipedia , lookup

ATLAS experiment wikipedia , lookup

Photoelectric effect wikipedia , lookup

Eigenstate thermalization hypothesis wikipedia , lookup

Compact Muon Solenoid wikipedia , lookup

Electron scattering wikipedia , lookup

Theoretical and experimental justification for the Schrödinger equation wikipedia , lookup

Transcript
BASIC DETECTION TECHNIQUES
1
Energy Resolution as Function of Incident Photon
Energy
Jonas Bremer, Folkert Nobels, Frits Sweijen and Maik Zandvliet
I. E LECTRO -M AGNETIC C ALORIMETER
The goal of this project is to investigate the properties of
a electro-magnetic calorimeter, which is located at MAMI
(Mainz, Germany). The data provided was acquired from
a prototype of the complete calorimeter which consists of
∼ 16000 PbWO4 crystals, these crystals have a size of
∼20x20x200 mm3 . The prototype is called the ’Proto60’ and
consists of 60 crystals instead of the full ∼16000.
A calorimeter is a experimental device to measure the
energy of particles. When these particles enter the calorimeter,
they initiate a particle shower and the energy of the particle is
then detected. In the case of Proto60, a electron beam entered
the calorimeter, the beam then interacts with a sample and
a photon is released, this is called a ’tagger photon’. Via
a electromagnetic field, the electrons are then targeted at a
detector which has several taggers. Electrons with a higher
amount of remaining energy are bend less than electrons with
a lower amount of energy. The photons that emerge from the
interaction with the sample are aimed at the centre of volume
number 35 of Proto60. The energy of the tagged photon is
known a priori, since the energy of the initial electron is known
and the energy of the tagged electron is measured. Out of the
60 volumes only 9 were read out, surrounding volume 35.
II. DATA R EDUCTION
In order to investigate the properties, we place the data
points in a histogram for each photon energy. Using these
histograms we fit the data. The histogram and fit are shown in
Fig. 1. The energy resolution of a calorimeter can be written
as a sum of different contributions. We can then write this as
Eqn. 1.
b
c
σE
=a+ √ +
(1)
E
E
E
The first term, a, is a constant term. It is independent of the
energy of the
√ particle and encompasses instrumental effects.
The term b/ E is a stochastic term. The number of particles
created during a shower can vary. This term represents the
shower fluctuations due to this. The third term c/E is called
the noise term. The readout electronics of the system cause an
additional noise. This noise differs for different system and is
therefore detector dependent.
III. R ESULTS
In Fig. 1 we see that for a higher channel number the density
of normalized number counts increases, this corresponds to a
decrease in electron energy, further in the data we can see
that the higher channel numbers have more total events (not
normalized). This is because the path of low energy electrons
is bend to a larger degree. From this we can conclude that
channel 15 corresponds to the lowest electron energy and
channel 1 to the highest electron energy. According to Poisson
statistics the standard deviation decreases with the square root
of N , this can be seen in Fig. 1, the spread of the distribution
is larger for higher energy electrons.
In Fig. 2, the fit is shown for the resolution of the calorimeter as a function of the energy. Together with this fit, 1 σ
confident intervals are shown. The result shows that for low
energy photons we have a higher ratio σ/E compared to higher
energies. A high ratio means the error is large relative to the
measurement and hence we have poor resolution. When this
ratio increases the error is small compared to the measurement
and hence the resolution increases at higher energies. In
addition, the result shows that the change in the resolution of
the calorimeter at higher energies decreases. This is because
for large values of energies, the fit tends the constant term
a. Thus, for large energies, the resolution is limited by the
instrumental effects.
The constants in Eqn. 1 were evaluated by the fit and are
given by: a = 1.10 · 10−3 ± 7.31 · 10−4 , b = −5.49 · 10−3 ±
9.47 · 10−4 , c = 6.70 · 10−3 ± 2.63 · 10−4 .
tagger channel 1
90
90
80
80
70
70
60
60
50
50
40
40
30
30
20
20
10
10
0
0
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00
tagger
channel
5
120
140
120
100
100
80
80
60
60
40
40
20
20
0
0
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00
tagger
channel
9
160
160
140
140
120
120
100
100
80
80
60
60
40
40
20
20
0
0
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00
tagger
channel
13
250
350
300
200
250
150
200
150
100
100
50
50
0
0
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00
Cluster energy (ADC units)
Count density (normalized)
Count density (normalized)
Count density (normalized)
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
Cluster energy (ADC units)
tagger channel 14
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
tagger channel 10
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
tagger channel 6
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
tagger channel 2
120
100
80
60
40
20
0
0.00
140
120
100
80
60
40
20
0
0.00
180
160
140
120
100
80
60
40
20
0
0.00
300
250
200
150
100
50
0
0.00
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
Cluster energy (ADC units)
tagger channel 15
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
Cluster energy (ADC units)
50
100
150
tagger channel 4
120
100
80
60
40
20
0
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
tagger channel 7
tagger channel 8
140
120
100
80
60
40
20
0
0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16
tagger channel 11
tagger channel 12
200
tagger channel 3
Figure 1. The deposited energy spectrum for each tagger channel, on the y-axis the number of counts is shown and on the x-axis the cluster energy in ADC units.
Count density (normalized)
All histograms
BASIC DETECTION TECHNIQUES
2
BASIC DETECTION TECHNIQUES
3
Plot of the resolution
0.07
best fit
1σ
1σ
0.06
σ/E
0.05
0.04
0.03
0.02
0.01
0.000.0
0.2
0.4
0.6 0.8 1.0
Photon energy (GeV)
Figure 2. The plot of fit of the obtained resolutions as function of incident photon energy.
1.2
1.4
BASIC DETECTION TECHNIQUES
4
IV. P YTHON C ODE FOR THE DATA R EDUCTION
#!/usr/bin/env python
from __future__ import division
# import numpy and matplotlbi
import numpy as np
from matplotlib.pyplot import figure, show, grid, legend, title, xlim,ylim
# fix the font size so that the graphs are nicely readible.
import matplotlib
matplotlib.rcParams.update({’font.size’: 16})
# import fitting tools
from scipy.stats import norm
import matplotlib.mlab as mlab
# import tools for interpolating
from scipy.interpolate import UnivariateSpline
import scipy.optimize as sco
# function for resultion
def resol(E,a,b,c):
return a + b/E**.5 + c/E
# declare empty array for all data
all_data = []
# load all data using a for loop
for i in xrange(1,16):
if i<10:
all_data.append(np.loadtxt(’emc_data_tagger-0’+str(i)+’.dat’))
else:
all_data.append(np.loadtxt(’emc_data_tagger-’+str(i)+’.dat’))
# declare empty array for all total energies
energies = []
all_mu = []
all_sigma = []
all_fit = []
# number of binning
binning=100
# make an uniform spacing between 0 and 0.16
uniform_E = np.linspace(0,0.16,binning)
# maka a fine uniform E for fits
uniform_E_fine = np.linspace(0,0.16,1000)
# the energies of the tagger channels
E_tagger = np.arange(0.06,1.47,0.1)
E_tagger[0]=0.12
E_tagger[-1]=1.44
# make a fine E_tagger for fits
E_tagger_fine = np.linspace(0.1,1.5,1000)
# guess of b
b_guess= 0.005
# calculate all total energies received
for i in xrange(1,16):
# calculate the summed energy
energy_temp = np.sum(all_data[i-1],axis=1)
# append it to energies
energies.append( energy_temp )
# calculate the mean and std from the data
# using conventionale methods does not work
# because of the big tail in the energies
# calculate the histogram
histtemp=np.histogram(energy_temp,uniform_E)
# calculate the maximum point
# in fact the + something does not really matter for the final
# answer so we have chosen it a bit random
mu = uniform_E[np.argmax(histtemp[0])]+.2*.16/binning
# fit a spline through the data - .5 * data max
spline = UnivariateSpline(uniform_E[0:len(uniform_E)-1], histtemp[0]-np.max(histtemp[0])/2, s=0)
# calculate the roots
BASIC DETECTION TECHNIQUES
r1, r2 = spline.roots()
# from the full width at half maximum calculate the std
sigma = (r2 -r1)/2.35
# add these to lists
all_mu.append(mu)
all_sigma.append(sigma)
# make a best fit
all_fit.append(mlab.normpdf( uniform_E_fine, mu, sigma))
# fitting of resolution data
resultion=all_sigma/E_tagger
par, cov = sco.curve_fit(resol, E_tagger, resultion, p0=[1, 1,1])
# calculating the best fit and the 1 sigma boundaries
resolution_fit = resol(E_tagger_fine,par[0],par[1],par[2])
resolution_fit2 = resol(E_tagger_fine,par[0]+(cov[0,0])**.5,par[1]+(cov[0,0])**.5,par[2]-(cov[0,0])**.5)
resolution_fit3 = resol(E_tagger_fine,par[0]-(cov[0,0])**.5,par[1]-(cov[0,0])**.5,par[2]+(cov[0,0])**.5)
# print the values
print ’a =’+str(par[0])
print ’err_a =’+str(cov[0,0]**.5)
print ’b =’+str(par[1])
print ’err_b =’+str(cov[1,1]**.5)
print ’c =’+str(par[2])
print ’err_c =’+str(cov[2,2]**.5)
# plotting part
# plots 15 subplots for all tagger channels.
fig = figure()
for i in xrange(1,16):
frame = fig.add_subplot(4,4 ,i)
frame.hist(energies[i-1], bins=binning, color=’b’, alpha=0.8,normed=1)
frame.plot(uniform_E_fine,all_fit[i-1],color=’r’)
xlim(0,0.16)
frame.set_title(’tagger channel ’+str(i))
if i==1 or i==5 or i==9 or i==13:
frame.set_ylabel(’Counts’)
if i>11:
frame.set_xlabel(’Cluster energy (ADC units)’)
fig.suptitle(’All histograms’)
# plot the resultion
fig = figure()
frame = fig.add_subplot(1,1,1)
frame.set_title(’Plot of the resolution’)
#frame.plot(E_tagger, resultion,’.’,label=’data’)
frame.errorbar(E_tagger, resultion,.16/(2*binning)/E_tagger,fmt=’o’)
frame.plot(E_tagger_fine, resolution_fit, label=’best fit’)
frame.plot(E_tagger_fine, resolution_fit2, label=’1 $\sigma$’)
frame.plot(E_tagger_fine, resolution_fit3, label=’1 $\sigma$’)
frame.set_ylabel(’$\sigma/E$’)
frame.set_xlabel(’Photon energy (GeV)’)
xlim(0,1.5)
ylim(0,0.07)
grid()
legend()
show()
5