Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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
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