Feasibility Studies for Measuring the Astrophysical S-Factor of the Reaction 12C(α, γ)16O via Electro-Disintegration at MAGIX Dissertation zur Erlangung des Grades „Doktor der Naturwissenschaften“ am Fachbereich Physik, Mathematik und Informatik der Johannes Gutenberg-Universität in Mainz Stefan Lunkenheimer Institut für Kernphysik Johannes Gutenberg-Universität Mainz, 22. November 2021 Autor Stefan Lunkenheimer MAGIX - Collaboration Institut für Kernphysik Johann-Joachim-Becher-Weg 45 Johannes Gutenberg-Universität D-55128 Mainz stelunke@uni-mainz.de Tag der mündlichen Prüfung 3. März 2022 Abstract The nucleosynthesis process 12C(α, γ)16O is of atmost importance for nuclear as- trophysics. The S-factor of this reaction is a major parameter for determining the abundance ratio of oxygen to carbon in stellar nucleosynthesis and plays a crucial role in understanding the pre-supernova evolution. The current relative error of more than 17% in the S-factor for energies in the Gamow-peak does not allow a prediction of the abundance of higher mass elements produced in the pre- supernova evolution of stars. Since the cross section of the reaction 12C(α, γ)16O is low, a high-precision low-energy experiment with a high luminosity is required to measure the S-factor. One such experiment that aims at measuring this key and challenging quantity is MAGIX. MAGIX is a versatile fixed-target experiment, which will be built at the new electron accelerator MESA in Mainz, Germany. The accelerator will deliver po- larized and unpolarized electron beams to MAGIX with currents up to 1mA at 105MeV. Using its internal gas jet target, MAGIX will reach a luminosity of O(1035 cm−2 s−1). MAGIX will be equipped with two magnetic spectrometers, that allow to measure the kinematic parameters of the scattered electrons with a momentum resolution of δp < 10−4 and an angular resolution of ∆Θ < 0.05°. p To detect heavy charged particles, MAGIX will employ a silicon strip detector array. This will allow studying processes with very low cross sections at small momentum transfer within a rich physics program. At MAGIX, a measurement is planned in which the S-factor will be determined by investigating the electro-disintegration reaction 16O(e, e′α)12C. Electrons will be scattered inelastically on oxygen and MAGIX will detect the scattered electrons and the produced α-particles in coincidence. With this measurement, it will be possible to determine the S-factor of the reaction 12C(α, γ)16O as a function of the center of mass energy of the 12C-α system. The simulations predict that MAGIX will be able to measure the S-factor for center of mass energies above 1 MeV with a precision competitive to the existing data. To improve these results, MAGIX will be operated in addition with a Zero Degree Tagger to detect the scattered electrons in the range θe < 0.5°. Given the promising simulation results, MAGIX expects to make important contributions to the measurement of the S-factor of the reaction 12C(α, γ)16O down to 0.5 MeV, exploring a new territory in nuclear astrophysics. Keywords: MAGIX, MESA, Nuclear Astrophysics, Helium Burning, S-Factor, 12C(a,g)16O, Electro-Disintegration, 16O(e,e’a)12C, EPICS, Slow Control, Sim- ulation i ii Contents Abstract i Contents iii 1 Introduction 1 2 The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 5 2.1 Overview of Stellar Nucleosynthesis . . . . . . . . . . . . . . . . . 5 2.1.1 Nuclear Reactions . . . . . . . . . . . . . . . . . . . . . . . 5 2.1.2 Cross Section of Stellar Nucleosynthesis . . . . . . . . . . . 7 2.1.3 Calculation of the Gamow Peak . . . . . . . . . . . . . . . 9 2.1.4 The Hydrogen Burning Stage . . . . . . . . . . . . . . . . 12 2.1.5 The Helium Burning Stage . . . . . . . . . . . . . . . . . . 16 2.2 The α-Capture Process of 12C in Detail . . . . . . . . . . . . . . . 20 2.3 Discussion of Measurement Techniques . . . . . . . . . . . . . . . 24 2.3.1 Direct Measurement Techniques . . . . . . . . . . . . . . . 24 2.3.2 Indirect Measurement Techniques . . . . . . . . . . . . . . 27 2.4 Results of Existing Measurements . . . . . . . . . . . . . . . . . . 29 2.5 Production Factor . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3 Electro-Disintegration Cross Section of 16O 37 3.1 Kinematics of the Electro-Disintegration Reaction . . . . . . . . . 37 3.2 Differential Cross Section of the Electro-Disintegration Reaction 16O(e, e′α)12C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3 Calculation of the Matrix Element . . . . . . . . . . . . . . . . . 40 3.4 Definition of Spherical Unit Vectors . . . . . . . . . . . . . . . . . 41 3.5 Calculation of Generalized Rosenbluth Factors . . . . . . . . . . . 42 3.6 Calculating the Generalized Mott Cross Section . . . . . . . . . . 45 3.7 Combining Results to Differential Cross Section . . . . . . . . . . 45 3.8 Transformation to Center of Mass Frame . . . . . . . . . . . . . . 46 3.9 Approximation Using the Extreme Relativistic Limit . . . . . . . 48 3.10 Multipole Decomposition of the Response Functions . . . . . . . . 50 3.11 Representing the Electric Matrix Elements tEJ with the S-Factor Components SEJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4 Accelerator and Experimental Setup 53 4.1 Mainz Energy-Recovering Superconducting Accelerator . . . . . . 53 4.1.1 The P2-Experiment . . . . . . . . . . . . . . . . . . . . . . 55 4.1.2 The DarkMESA Experiment . . . . . . . . . . . . . . . . . 56 4.2 Mainz Gas Injection Target Experiment . . . . . . . . . . . . . . 56 iii Contents 4.2.1 Gas Jet Target . . . . . . . . . . . . . . . . . . . . . . . . 58 4.2.2 STAR/PORT Spectrometer Setup . . . . . . . . . . . . . . 60 4.2.3 Silicon Strip Recoil Detector Array . . . . . . . . . . . . . 63 4.2.4 Zero Degree Tagger – FORE . . . . . . . . . . . . . . . . . 65 4.3 S-Factor Measurement at MAGIX . . . . . . . . . . . . . . . . . . 66 4.3.1 Discussion of Electro-Disintegration Experiment . . . . . . 67 4.3.2 Discussion of the Planned Extension Stages . . . . . . . . 68 5 Development of the MAGIX Slow Control System 71 5.1 Requirements for a Slow Control System . . . . . . . . . . . . . . 71 5.2 Experimental Physics and Industrial Control System . . . . . . . 72 5.2.1 Input-Output-Controller . . . . . . . . . . . . . . . . . . . 73 5.2.2 CA Client . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.2.3 The Channel Access Communication Protocol . . . . . . . 77 5.3 Community Modules . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.3.1 The Asyn Module . . . . . . . . . . . . . . . . . . . . . . . 78 5.3.2 The StreamDevice Module . . . . . . . . . . . . . . . . . . 79 5.3.3 The Autosave Module . . . . . . . . . . . . . . . . . . . . 80 5.3.4 The PyEpics Library . . . . . . . . . . . . . . . . . . . . . 80 5.3.5 The dev-gpio Module . . . . . . . . . . . . . . . . . . . . . 81 5.4 The Graphical User Interface - Control System Studio . . . . . . . 81 5.5 MAGIX Slow Control System . . . . . . . . . . . . . . . . . . . . 82 5.5.1 Installation Script . . . . . . . . . . . . . . . . . . . . . . . 82 5.5.2 Introduction to Environment Variables . . . . . . . . . . . 83 5.5.3 Execution via System Control Manager . . . . . . . . . . . 83 5.5.4 Defining UDEV Rules . . . . . . . . . . . . . . . . . . . . 85 5.5.5 Implementation of the Bash/ZSH Completion . . . . . . . 85 5.5.6 Integration of an Archiver (MAGIX executable) . . . . . . 86 5.5.7 Development of the MXFrontend (MAGIX module) . . . . 87 5.5.8 Expansion by the dbLoadMultiRecords Function . . . . . . 87 5.5.9 Development for Profibus Support (StreamDevice BUS API) 90 5.5.10 MXSlowControl Tutorial . . . . . . . . . . . . . . . . . . . 90 5.5.11 Development of Device Support for MAGIX Built Devices 90 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand 93 5.6.1 Readout of the MPT200 Device via StreamDevice ttyUSB 93 5.6.2 Controlling the HMP4040 Device via StreamDevice TCP . 95 5.6.3 Driver Development to Control the SiDet board via RPi I2C 96 6 Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C103 6.1 Overview of Physics Simulations . . . . . . . . . . . . . . . . . . . 103 6.1.1 Principle of Monte Carlo Integration . . . . . . . . . . . . 104 6.1.2 General Idea of a Cross Section Simulation for a Scattering Experiment . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.1.3 Initial State Particle Generator . . . . . . . . . . . . . . . 109 6.1.4 Final State Particle Generator . . . . . . . . . . . . . . . . 110 6.1.5 Physics Model Calculations . . . . . . . . . . . . . . . . . 110 6.1.6 Acceptance Simulation . . . . . . . . . . . . . . . . . . . . 111 6.1.7 Calculation of the Cross Section . . . . . . . . . . . . . . . 111 6.2 Implementation of the S-Factor Simulation . . . . . . . . . . . . . 112 6.2.1 Overview of the Initial State Generator . . . . . . . . . . . 112 6.2.2 Development of the Two-Body Final State Generator . . . 113 6.2.3 Development of the S-Factor Model Calculation . . . . . . 115 iv Contents 6.2.4 Implementation of Acceptance Simulation . . . . . . . . . 116 6.2.5 Analysis: Calculation of Expected Count Rate . . . . . . . 118 6.2.6 Discussion of the Simulations Results . . . . . . . . . . . . 122 7 Summary and Outlook 127 A Response Functions 131 B Selected Data 135 C EPICS Support Files 141 D Supplemental Material – Simulation 157 List of Figures 161 List of Tables 163 List of Codes 165 Acronyms 167 Index 169 Bibliography 173 v vi CHAPTER 1 Introduction Studying the interior of stars in laboratory experiments During a clear night, one can see with modern telescopes millions of galaxies in the sky, containing billions of stars. Some of these celestial objects are several billion years old before their light reaches us. Since ever, people have wondered what other solar systems and the planets to be found there might look like. In addition, the question also arises whether there is life on other worlds and how this could have evolved. To be able to provide answers to such questions, science depends on observations of the universe and, as far as possible, on experiments in terrestrial laboratories. This results in models, which can additionally be simulated. The results of such simulations can then be compared with the observations. All these endeavors improve our picture of the universe. To understand the formation and evolution of solar systems, it is important to understand the formation of elements in stellar interiors. This is called stellar nucleosynthesis and describes the processes by which a star fuses hydrogen into more massive elements such as helium, carbon, nitrogen, oxygen, etc. during its lifetime. While our sun is still in the first stage, namely the hydrogen burning stage, we can observe other stars that are already in later stages, such as the helium or the carbon burning stage. To describe the evolution of a star, especially the different burning stages, we need to understand the nuclear processes and their reaction rates. Hereby, the cross section is an important quantity, which is related to the probability of a certain reaction. In the hydrogen burning stage, protons are fused to helium via different proton- proton chains or carbon-nitrogen-oxygen cycles. The processes involved in this phase are well known and have been investigated to such an extent that the timing of this phase can be well determined. The situation is different with the subsequent phase, the helium burning stage. Here, two reactions are crucial: the triple-α process, in which a 12C is formed from three α-particles via a reaction chain, and the fusion of carbon and helium to form oxygen 12C(α, γ)16O. These two processes occur in parallel in the helium burning stage, but are in no sense to be understood as a reaction chain. The second reaction, the α-capture of carbon, proceeds much slower than the triple-α process, so that at the end of this burning stage only 1 Chapter 1 - Introduction a small fraction of the carbon has been converted to oxygen. The description of further processes and of the further evolution of a star depends sensitively on the C/O abundance ratio. To estimate this ratio, one must determine the cross section of the 12C(α, γ)16O reaction precisely. Therefore, the nucleosynthesis process 12C(α, γ)16O is of utmost importance for nuclear astrophysics. For energies available in the helium burning stage, the cross section of this reaction is low. For this reason, this reaction can be studied in the laboratory only with large efforts in experiments. An important parameter is the S-factor. This is the unknown part of the cross section when the well-known parameters such as the Coulomb penetration factor are removed. The S-factor of a fusion represents any effect related to the nuclear structure. Despite efforts over the past 50 years to determine the S-factor of this reaction, it has not yet been possible to determine it with sufficient accuracy. Current relative errors are in the range of 17% to 28%. In order to understand stellar evolution, and thus the further stages of burning and the production of more massive elements, theory requires that the S-factor must be determined in the low-energy range with an accuracy better than 10%. In order to measure the cross section and thus the S-factor in the low energy range, new low-energy experiments must be developed. These experiments must have a high luminosity in order to be able to measure reactions with a low cross section accurately. Only in this way it will be possible to further reduce the relative error of the S-factor of the reaction 12C(α, γ)16O. One such experiment planned for the coming years will be MAGIX at MESA. MESA (Mainz Energy-Recovering Superconducting Accelerator) is an upcoming high-intensity electron accelerator and is being built at the Institute of Nuclear Physics of the Johannes Gutenberg University Mainz, Germany. MAGIX (Mainz Gas Injection Target Experiment) will be located in the energy recovering branch of MESA. The core element of MAGIX is the internal gas jet target. To measure the kinematic parameters of the scattered electrons, MAGIX will use two mag- netic spectrometers, each equipped with a GEM-based TPC in the focal plane. To detect heavy charged particles, MAGIX will have a silicon strip detector array, lo- cated within the scattering chamber. In a later stage, MAGIX will be extended to include a beam-integrated tagging detector. MAGIX at MESA will allow studying processes with very low cross sections at small momentum transfer. One experi- ment planned is the determination of the cross section of the electro-disintegration reaction 16O(e, e′α)12C. The scattered electron and the recoiling α-particle are detected in coincidence to determine the kinematic parameters of this inelastic re- action. Through theoretical calculations, the S-factor of the reaction 12C(α, γ)16O can be estimated from the cross section of the electro-disintegration reaction of oxygen. The aim of this work was to perform a feasibility study using a simulation to an- swer the question whether MAGIX can significantly contribute to the determina- tion of the S-factor in the low energy range by measuring the electro-disintegration reaction of oxygen. Outline At the beginning, the nucleosynthesis reaction 12C(α, γ)16O is discussed in detail. For this purpose, the cross section and the S-factor of this reaction are introduced and described with respect to the different oxygen levels. Furthermore, different direct and indirect measurement methods are explained, which allow to determine 2 the S-factor or different contributions of the S-factor. Finally, the results of the previous measurements performed by other research groups are discussed and an overview of the impact of the results of these measurements on the production factor is given. This is a quantity that describes the ratio of isotopes produced during the pre-supernova evolution of massive stars. While in Chapter 2 the direct reaction 12C(α, γ)16O was in the focus, in Chapter 3 the electro-disintegration reaction 16O(e, e′α)12C is discussed. The aim of this chapter is to describe the theoretical basis of this reaction and to derive the cross section. The theoretical assumptions and calculations of this chapter serve as a basis for a simulation of the electro-disintegration measurement at MAGIX. Subsequently, the experimental environment is presented in Chapter 4. All com- ponents of MAGIX and MESA which are relevant for the electro-disintegration measurement are described here. In order not to go beyond the scope of this work, only the essential properties are described. At the end of this chapter, the planned measurements of the electro-disintegration of oxygen are outlined. MAGIX uses a slow control system based on EPICS. In Chapter 5, an overview of the development of the MAGIX slow control system is given. Some parts of MAGIX already exist and are tested in different laboratories. At the end of this chapter, an example of setting up a test stand with EPICS is shown, namely the test stand for silicon strip detectors. After the theoretical studies have been completed and the experimental setup has been described, a simulation is presented. Chapter 6 discusses the development and results of the simulation of the electro-disintegration reaction of oxygen at MAGIX at MESA. First, an overview of physics simulations is given. The principle of Monte Carlo integration and random numbers is also introduced. Then, the general idea of a cross section simulation for scattering experiments is presented. Based on the previous discussions, it is then described in detail how the simulation for the feasibility study is implemented in the MAGIX framework and how the data will be analyzed. At the end of this section, the results will be discussed. The final chapter of this thesis summarizes the results of this work. It also gives a brief outlook on the S-factor measurement at MAGIX. 3 4 CHAPTER 2 The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars In this chapter we will take a closer look at the astrophysical S-factor of the reaction 12C(α, γ)16O. The chapter starts with a brief introduction to nuclear astrophysics and an overview of stellar evolution. Then the helium burning stage, especially the associated S-factor of the α-capture process, will be discussed in de- tail. Finally, we will assess the results of previous measurements used to determine the S-factor and discuss why this is still challenging as of today. 2.1 Overview of Stellar Nucleosynthesis The Big Bang nucleosynthesis describes the production of the first elements in the early universe. After 3minutes, the main part of the baryon mass consisted of hydrogen and helium, where the mass ratio of 4He to the total baryon mass was ∼ 25 %. This corresponds to a ratio by number of atoms of 4He/1H = 0.08 = 8 % [Zyl+20; ISG13]. Traces of deuterium, tritium and lithium have also been pro- duced, but their abundance compared to hydrogen is several orders of magnitude lower. The ratio by number of atoms are D/1H = O(10−5), 3He/1H = O(10−5) and, 7Li/1H = O(10−10) [Zyl+20, Chapter 24]. Therefore, the primordial elements deuterium, tritium and lithium can be disregarded for the stellar evolution and nucleosynthesis [Won98]. After the short time period of the Big Bang nucleosynthesis, the universe expanded further and cooled down. However, it took another 100million years before the first stars were formed [LB04]. The nuclear fusion between atoms within stars is described by the stellar nucleosynthesis. It is a highly predictive theory that today yields excellent agreement between calculations based upon it and the observed abundances of the elements. 2.1.1 Nuclear Reactions Nuclear reactions are processes in which a nuclear particle (nucleon or nuclei) comes into close contact with another nuclear particle. This may produces one or more nuclear particles that leave the interaction point. These produced particles 5 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars are usually different from the incident particle pair [BW91]. For a particle a that scatters at a particle X the whole set of nuclear reactions can be written as  X + a X∗ + a′ a+X −→  W +Nγ , (2.1) Y + b . . . where a, b, . . . denotes the outgoing nuclear particle, W and Y, . . . denotes the produced nucleus and Nγ denotes the emitted photons. With the exception of the first reaction, these are inelastic nuclear reactions. The first reaction X(a, a)X of Eq. (2.1) represents the elastic scattering process, where in the center of mass system (cms) the incident particle a leaves the interaction with the same energy and the target particle X stays in its initial state. The second reaction X(a, a′)X∗ represents the inelasitc scattering where the target particle X leaves the interac- tion in an excited state X∗ and the outgoing particle a′ leaves with lower energy than initial. The third reaction X(a,Nγ)W represents the radiative capture pro- cess, where the two initial particles a andX stay together to form one final nucleus W while one ore more photons γ are emitted. In the inelastic reactions, the strong and electromagnetic forces are usually involved in order to exchange energy and momentum. The weak nuclear force can also take place in such a reaction, for example to convert neutrons into protons via the β− processes [BW91; Won98]. All inelastic reactions can be subdivided based on the quantum states of the final particles. The set (α′, α′′) denotes the states of the initial particles and the sets {(β′, β′′), (γ′, γ′′), . . . } the one of the final particles. For a fixed inital channel (α′, α′′) we can rewrite Eq. (2.1) as   Xα′ + aα′′ X + a′β′ β′′ aα′′ +Xα′ −→  Wω + nγ . (2.2) Yγ′ + bγ′′. . . Due to the conservation laws of energy, angular momentum, and parity, the out- going quantum states of each set {(β′, β′′), . . . } are restricted. All possible sets with fixed quantum state are called reaction channels. Each reaction channel is abbreviated as β ≡ (β′, β′′), for example [BW91]. Furthermore we have to distinquish between direct and compound reactions. In case of a direct reaction the two initial particles interact once with each other in a short time of the order of 10−22 s. If the two initial particles „fuse“ together for a long time typically of the order of 10−14 s the reaction is called compound reaction. In case of the compound reaction an intermediate state, a so called compound nucleus N , is formed. Before any re-emission occurs, the energy of the incident particle is quickly shared through the strong force between all constituents. An important feature is that in a compound reaction the decay of the compound nucleus is independent of the formation of this nucleus. So, one compound nucleus 6 2.1 Overview of Stellar Nucleosynthesis can have several final reaction channels [Won98; BW91] X + a′ β′ β′′ Nα −→  Wω + nγ . (2.3) Yγ′ + bγ′′ . . . 2.1.2 Cross Section of Stellar Nucleosynthesis The cross section is an important quantity to define the reaction rate of reactions. It is a measure of the probability with which a given reaction occurs for given initial and final particles. Assuming a scattering process in which an incident particle beam is scattered at a layer of independent scattering centers, the total cross section can be defined as [Pov+15; BW91]: := number of reactions per unit timeσtot .number of incident particles per unit time× scattering centres per unit area The dimension of the cross section is area, which is usually given in cm2 or barn which is defined as 1 barn = 1 b = 10−24 cm2. The total cross section σtot is a function that depends only on the cms energy E of a given reaction. The total cross section can be written as an integral of the differential cross section over the total solid angle [Fey04] ∫ σ(E) = dσ 4π dΩ dΩ . The differential cross section describes the cross section for scattering into a small solid angle element dΩ. It depends on the cms energy E and the cms scattering angle θ, which is defined as the angle between the incident and final particles in the cms (see Fig. 2.1). In order to describe the dependence on the angle, one can use the multipole expansion to represent the differential cross section in terms of the Legendre polynomials Pk(cos(θ)) as [Ros53; Fey04] dσ ∑ dΩ = akPk(cos(θ)), (2.4)k where the factors ak ≡ ak(E) depend only on the cms energy E, with a0 = σ 4 .π b a θ X Y Figure 2.1: Schematic view of a scattering process in the cms. The scattering angle θ is defined as the angle between the incident and final particles. 7 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars For an initial channel α, the total cross section of a scattering process can be separated into the elastic cross section σel and the combined cross section of all inelastic processes σinel, also called the reaction cross section [Pov+15; BW91]: σtot(α) = σel(α) + σinel(α). Moreover, the inelastic cross section can be divided into all possible reaction channels β according to (2.2) [Pov+∑15; BW91]: σinel(α) = σ(α, β) + σcap(α), (2.5) β 6=α where σ(α, β) is the inelastic scattering cross section with the initial channel α and the resulting channel β and σcap is the cross section of the radiative capture process. Here, the cross section σ(α, β) is defined as [BW91] ( ) = number of emissions into channel β per unit time per scattering centerσ α, β . number of incident particles in channel α per unit area per unit time In stellar nucleosynthesis studies, we are interested in the inelastic cross section for a given reaction with specific initial and final particles. Since the constituents interact through the strong force, we have to distinguish between two cases, the resonant and the nonresonant. For the inital channel α and the final channel β the cross section close to a resonance with the energy Er can be written with the Breit-Wigner formula as [Bur+57; BW91; Pov+15] ( ) = 2 (2J + 1) ΓαΓβσ(α,β) E πλ̄ (2 ·Ja + 1)(2Jb + 1) ( )2 + Γ2 4 , (2.6) E − Er tot/ where λ̄ ≡ λ̄(E) is the reduced de Broglie wavelength in the cms, Ja and Jb are the spin for the initial particles, J the spin for the final nucleus, Γα and Γβ the partial widths for the inital and final channels, and Γtot the total width. The total width is the sum of the partial widths of all possible final channels. This cross section is often written as σ(E) = 2 · Γtotπλ̄ ωγ ( , (2.7)E − Er)2 + Γ2tot/4 with the resonance strength [deB+17]: = (2J + 1) · ΓαΓβωγ (2 .Ja + 1)(2Jb + 1) Γtot If the energy falls between resonances the cross section is given as [Bur+57] σ(E) = πλ̄2(2J + 1)(π2 ± 8)ΓαΓβ , (2.8) D2 with the average level spacing D. If the two nearest resonances interfere construc- tive the factor (π2 +8) is used, otherwise if they interfere deconstructive the factor (π2 − 8) is used. We can now describe the cross section for stellar nucleosynthesis reactions. In case of stellar nucleosynthesis the temperature is around a few GK and hence the most probable energy is in the order of a few keV. It is therefore suitable to 8 2.1 Overview of Stellar Nucleosynthesis use the non-relativistic approximation to calculate the kinetic energy E = 12µv 2, with the reduced mass µ and the relative velocity v of the incident particles. In combination with Eqs. (2.5) to (2.8) it follows that the cross section in this low energy region is proportional to λ̄2, whereby [Fey04] λ̄2 ∝ 1 1 v2 ∝ , E with the cms energy E. Moreover, the probability for a nucleus with the proton number Z1 tunneling through the Coulomb barrier of a nucleus with proton number Z2 with relative velocity v ≡ v(E) is described by the Coulomb penetration factor −2πZ e 1 Z2αemc v . It is common to define the Sommerfeld number ≡ ( ) := Z1Z2αemcη η E , (2.9) v with the fine structure constant αem and the speed of light c. Since only charged nuclear particles are involved, the nucleosynthesis cross section contains the Cou- lomb penetration factor e−2πη. In total we have σ(E) = 1 e−2πη · S(E), E where the so called S-factor is defined as the contribution of the nucleosynthesis cross section without the known dependencies [Fey04] S(E) := σ(E) · E · e2πη. (2.10) It is usally given in the units keVb or MeVb. The specific S-factor of a compound reaction represents any effect pertaining to the nuclear structure [Won98]. 2.1.3 Calculation of the Gamow Peak To describe the stellar nucleosynthesis it is crucial to know the energy range in which the reactions take place. On the one hand, the Maxwell-Boltzmann distri- bution describes the probability to find a particle in a certain energy state. For a gas at the temperature T the Maxwell-Boltzmann distribution p(v) as function of the relative velocity v between two (arbitrar)y particles can be written as [Won98]3/2 −µv2 p(v) dv = 4 µπ e 2 2kT2 v dv , (2.11)πkT with the reduced mass µ and the Boltzmann constant k (see Table B.8). The reduced mass is calculated with µ = M1M2 , M1 +M2 whereMi with i = 1, 2 denotes the mass of the two initial particles. The maximum point of p(v) is given by 12µv 2 max = kT . In Fig. 2.2 a set of Maxwell-Boltzmann distributions for different elements for different burning stages in stars can be 9 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 1H @T 2 9 = 0.02 D @T9 = 0.023He @T = 0.02 4 9He @T9 = 0.0212C @T = 0.02 14 9 1× 10−6 N @T16 9 = 0.02O @T9 = 0.02 0 0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 Velocity v [c] (a) Maxwell-Boltzmann distribution for different elements involved in the hydrogen burning stage T9 = 0.02. The velocity always refers to the relative velocity be- tween the respective element and hydrogen. 1× 10−6 4He @T = 0.2 8 9Be @T 12 9 = 0.2 C @T9 = 0.216O @T 4 9 = 0.2 He @T 12 9 = 0.8 C @T9 = 0.84He @T = 2.0 12 9C @T9 = 2.016O @T9 = 2.0 0 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 Velocity v [c] (b) Maxwell-Boltzmann distribution for different elements involved in the helium burn- ing stage T9 = 0.2, the carbon burning stage T9 = 0.8 and the oxygen burning stage T9 = 2.0 [Won98]. The velocity always refers to the relative velocity between the respective element and 4He. Figure 2.2: Maxwell-Boltzmann distribution for specific elements at the tem- peratures for√specific burning stages in stars. T9 describes the temperaturein units of GK. The maximum point of each distribution is at the relative velocity v̂ = 2kTµ for the specific reduced mass µ (see Table B.5). 10 Probability p(v) [s/m] Probability p(v) [s/m] 2.1 Overview of Stellar Nucleosynthesis found. As mentioned above it is suitable to calculate the kinetic energy using the non-relativistic approximation E = 1 2max 2µvmax = kT . On the other hand, the probability for an element to tunnel through the Coulomb barrier of another element is given by the Coulomb penetration factor. For the energy range of a stellar fusion, we can express the Coulomb penetration factor c(E) as a function of the cm{s energy as √ } { } ( ) := exp −2 µ = exp −√bc E πZ1Z2αemc 2 , (2.12)E E √ with b = πZ1Z2αemc 2µ. The mean reaction rate λ per unit volume per unit time in a gas mixture with the particles densities n1 and n0 is defined as the integral over the product of rel- ative velocity, the cross section and the Maxwell-Boltzmann distribution [Won98; CHY92; Bur+57]: ∫ ∞ λ := n1n0 〈σv〉 = n1n0 σ(E) · v · p(v) dv . (2.13) 0 The substitution of E = 1µv2∫2 with dE = µv dv yields∞ λ = 1n1n0 ∫ σ(E) · p(E) dµ 04 ∞ ( ( E ) = π S E) 3/2 e−√ b µ e− E · 2E√ n1n0 E { kT dµ 0 E ∫ 2πkT µ } E = 8 1 ∞ b 3 2n1n0 S(E) exp −√ − E dE . (2.14) µπ (kT ) / 0 E kT The integrand can be interpreted as the reaction rate distribution, called Gamow peak. If we assume that there are no resonances involed in the region the reaction takes place, the nuclear cross section factor S(E) can assumed to be essentially smooth. To calculate the maximum of the reaction rate distribution it is sufficient to calculate the maximum of the exponential function exp (−f(x)) with f( ) := √bE + E . E kT The exponential function has a maximum if and only if the function f has a minimum. Therefore we calcu∣∣latedf d ∣∣∣ = 1 − b =! 0.E kT 2 3/2E=E EG G By solving this equation for the energ(y we ge1 ) t 2/3 EG = 2bkT . (2.15) In the following chapters we will refer to the energy EG as Gamow peak. A schematic view of the Maxwell-Boltzmann distribution, the Coulomb penetration factor and the Gamow peak can be found in Fig. 2.3. The full width of the Gamow peak is defined as the difference between the two energy values at which the Gamow function is equal to the maximum value divided 11 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars by the Euler’s number e. To calculate the width of this distribution the Gamow peak is approximat{ed by a norm}al distribution{with(the mean)va}lue EG: b E 2exp −√ − ≈ Amax · exp − 1 E − EG 2 , (2.16)E kT σ where Amax defines the maximum value and σ the standard dev√iation of the normal distribution. So, the width can be calculated as ∆EG = 2 2 · σ. To get the width ∆EG we must compare Eq. (2.16) and the first two derivatives at the point E = EG. If w{e evaluate Eq.}(2.16) for E = EG we get 3/2 { } exp −√b E   − G = exp− 2E√G − EG = exp −3EGEG kT{ ( kT)}EG kT kT =! Amax · exp −4 EG − EG ∆ = Amax.EG { } Hence, the maximum value is given as Amax = exp −3EG . In order to simplifykt the calculation of the derivatives, let u(s make u)se of the following formula dn ∑n dkg d exp{g(x)} = d · exp{g(x)}, (2.17)xn kk=1 x for each differentiable function g(x). Taking a closer look at Eq. (2.16), it is immediately noticeable that at E = EG the exponential functions result in the value 1. So, for all derivatives we only must equate the sum of the derivatives of the(exponen)t function. We will now define ( ) := 4 E − E 2 G g E ∣ ∆ . EG ∣ By definition it is clear, that df ∣ dg ∣d ∣ = 0 and d ∣ = 0, because bothE E=E EG E=EG functions have a local minimum point at E = EG. Now, let’s calculate the second derivatives of the exponent functions f and g according to the energy E evaluated at EG: d2f ∣∣∣ d 2 ∣∣ 2 { } [ ] = d b E 3 −5/2 3 1 E dE2 √ + = bE = , E kT 4 E=EG 2 kTEG d2g ∣∣∣E=EG { ( )E}=EG2 2 d 2 ∣∣ = dd 2 4 E − EG 8E = E ∆ = 2 .EE E GG E= ∆EEG G Finally, we can express the width of the√Gamow peak as [Won98; Fey04] ∆ = 4 EGkTEG 3 . (2.18) 2.1.4 The Hydrogen Burning Stage This subsection will give a brief overview of the important reaction chains of the hydrogen burning stage by pointing out the most important points of the books Introductory Nuclear Physics [Won98, Chapter 10], The Physics of Stars [Phi99, Chapter 4], and Evolution of Stars and Stellar Populations [SC05, Chapter 5]. 12 2.1 Overview of Stellar Nucleosynthesis Maxwell-Boltzmann Coulom( b PenetrationDistribution Factor √ ) ∝ exp(−E/kT ) ∝ exp −b/ E Gamow-Peak ∆EG kT EG Energy Figure 2.3: Sketch of the Gamow peak, Maxwell-Boltzmann distribution and Coulomb penetration factor. For better illustration, the Coulomb penetration factor as well as the Gamow peak are drawn several orders of magnitude larger. The first stage of stellar evolution is the hydrogen burning stage. In this stage the driving factor is hydrogen. The temperature raises up to T9 = 0.02, where T9 describes the temperature in units of GK [Won98]. From the Maxwell-Boltzmann distribution Eq. (2.11) follows that the kinetic energy is kT ≈ 2 keV. Due to the high density and temperature within the core of a star a plasma is formed. Since the energy is significantly higher than the binding energy of the electrons, the plasma consists of protons and free electrons. The net result of this burning stage is the fusion of four protons into a 4He nucleus [Won98]. However, such a direct four-body reaction is extremely unlikely and the fusion process is seperated into the Proton-Proton chains (PP chains) and the Carbon-Nitrogen-Oxygen cycle (CNO cycle). While the PP chain is involved in the fusion all the time, it is necessary for the CNO cycle that carbon, nitrogen or oxygen atoms are already present, as they act as catalysts [SC05]. The Proton-Proton Chains Let’s now have a closer look at the Proton-Proton chains (PP chains). A shematic view can be found in Fig. 2.4. The first reaction of this chain is the production of deuteron through the colission of two protons p+ p→ d+ e+ + νe. (2.19) During the short timescale of this direct reaction, a proton is converted by the weak interaction into a neutron, a positron and an electron neutrino. Since a bound system with two protons is not possible and the weak interactions is involed, the probability of this reaction is very low even at stellar densities. In fact, the cross section of this reaction is so low that no experimental measurments are possible on earth [SC05; Phi99]. For a star with central density ρ = 105 kg m−3, temperature T9 = 0.015 and hydrogen mass fraction X = 0.5, the reaction rate in the center of the star is λ = 5× 1013 s−1 m−1. This means that a proton in 13 Probability Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars p+ p→ d+ e+ + νe p+ d→ 3He + γ 3He + 4He→ 7Be + γ 3He + 3He→ 4He + p+ p 7Be + e− → 7Li + ν 7 8e Be + p→ B + γ 7Li + p→ 4He + 4He 8B→ 8Be + e+ + νe 8Be→ 4He + 4He PPI Chain PPII Chain PPIII Chain Figure 2.4: Schematic view of the Proton-Proton I-III chains. As a net result each of the three chains combines four protons to one 4He. the center has to stay on average about 9× 109 years before it is converted to deuterium by the reaction (2.19). This illustrates how slow this process proceeds and that this reaction is the bottleneck in hydrogen burning and sets the time scale for this phase in a star. All further reactions in the PP chains proceeds much faster. [Phi99]. The second reaction in the PP chain is the fusion of a proton and a deuteron to 3He p+ d→ 3He + γ. (2.20) Since this is an electromagnetic reaction the cross section is in the order of O(1018) greater than the cross section of the weak reaction Eq. (2.19). Thus, the deuteron is almost immediately converted to 3He by the reaction Eq. (2.20) [Phi99]. At this point multiple possible reactions can be processed to fuse 3He to higher mass elements. One possibility is that an 3He nucleus may tunnel through the Coulomb barrier of another one to form 4He 3He + 3He→ 4He + p+ p. (2.21) The reaction chain of the three reactions Eqs. (2.19) to (2.21) is known as the PPI chain. On the left-hand side of this reaction chain a total of six protons are involved while on the right-hand side one 4He, two protons, two positrons, two electron neutrinos, and two γ-rays are produced [Won98]. Using the Einstein relation E = mc2 the energy released by this reaction chain can be calculated easily as 26.731 MeV [SC05]. The presence of 4He opens up another possible reaction for the fusion of 3He 3He + 4He→ 7Be + γ. (2.22) Due to the high electron density within the core of a star, the newly formed beryllium nuclei can be converted to lithium by the weak interaction 7Be + e− → 7Li + νe. (2.23) 14 2.1 Overview of Stellar Nucleosynthesis At the end of the PPII chain, the fusion of lithium and a proton results in two helium nuclei [Won98]. 7Li + p→ 4He + 4He. (2.24) Even in the PPII chain, where 4He act as catalyst, a total of four protons are converted into one 4He nucleus [Phi99]. The PPIII chain is also connected to the production of 7Be from helium Eq. (2.22). But instead of an electron capture, the beryllium can fuse with a proton to form boron [Won98] 7Be + p→ 8B + γ. (2.25) While 8B is unstable, it decays via e+-emission into 8Be 8B→ 8Be + e+ + νe. (2.26) As 8Be isn’t stable, it decays through α-emission 8Be→ 4He + 4He. (2.27) The PPIII chain also produces one 4He out of four protons in total. The Carbon-Nitrogen-Oxygen Cycle As discussed previously, a further possibility to convert protons into 4He is the Carbon-Nitrogen-Oxygen cycle (CNO cycle). The CNO cycle mainly consists of two independent cycles, the CN and the NO cycle. To start the reactions within these cycles the presence of the elements C, N, and O are essential as they act as catalysts [SC05]. Both cycles consists of three main reactions. The first reaction (p, γ) is the fusion of a nucleus with a proton to another nucleus. The second reaction is the β+-decay of a nucleus, and the third one is the α-emission reaction. The reactions involved in the CN cycle are [Won98; SC05] p+ 12C → 13N + γ 13N → 13C + e+ + νe p+ 13C → 14N + γ p+ 14N → 15O + γ 15O → 15N + e+ + νe p+ 15N → 12C + α. While carbon and nitrogen act as catalysts in the CN cycle, the catalysts in the NO cycle are nitrogen and oxygen. The reactions involved in the NO-cycle are [Won98; SC05]: p+ 14N → 15O + γ 15O → 15N + e+ + νe p+ 15N → 16O + γ p+ 16O → 17F + γ 17F → 17O + e+ + νe p+ 17O → 14N + α. 15 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars The result of both cycles are similar to the result of the PP-Chains: four protons are converted into one 4He, two positrons, two electron neutrinos, and three γ- particles. The two reactions are connected via the nucleus 14N, 15O and 15N. Figure 2.5 shows a schematic view of these two cycles. There are other side cycles that we will not discuss in this work. A more detailed overview can be found in Introductory Nuclear Physics [Won98], for example. Although the CNO cycle was predicted by Bethe and Weizsäcker already in the 1930s, the first experimental evidence was obtained in 2020 by the Boroxino ex- periment [Ago+20]. 12 (p, α)C 15 (p, γ) N 16O (p, γ) β+ (p, γ) 13N CN 15O NO 17Cycle Cycle F β+ (p, γ) β+ 13 (p, γ)C 14 (p, α) N 17O . Figure 2.5: Schematic view of the CNO cylce which consists of the two in- depentend cycles, the CN and the NO cycle. The elements Carbon, Nitrogen and Oxygen act as catalysts and their presence is essential for the two cycles. In total four protons are converted into one 4He nucleus, two positrons, two electron neutrinos, and three γ-particles.[Ago+20; SC05; Phi99; Won98] 2.1.5 The Helium Burning Stage This subsection will give a short overview of the helium burning stage by sum- marizing the key messages of the books Introductory Nuclear Physics [Won98, Chapter 10-5], The Physics of Stars [Phi99, Chapter 4], and Evolution of Stars and Stellar Populations [SC05, Chapter 6]. When most of the hydrogen within the core of a star is fused to helium, the reaction rate of the PP chains and the CNO cycle decreases. Since the temperature is not sufficient to drive fusion reactions to produce higher mass elements, the hydrostatic equilibrium cannot be maintained, whereby gravity begins to compress the core of the star. This increases the central temperature up to T9 = 0.2, at which the helium burning takes place [Sal52]. The remaining hydrogen continues the process of forming helium in the outer / cooler layers of the star, but with a lower reaction rate due to the lower density [Won98]. The helium burning stage consists of two main reactions. The first fundamental one is the fusion of three 4He nuclei to 12C. This is called the triple-α reaction. The second reaction is the production of higher mass nuclei via the α-capture reaction. The triple-α process and the most important α-capture reaction, the production of 16O, are shown schematically in Fig. 2.6. 16 2.1 Overview of Stellar Nucleosynthesis Figure 2.6: Reaction scheme of the two most important reactions of the helium burning stage. The triple-α reaction is shown in the green rectangle, where two helium particles fuse to beryllium, which fuses to carbon through another α-capture. The α-capture reaction of 12C ist shown in the red rectangle. Triple-α Reaction In the triple-α reaction, three 4He nuclei fuse to one 12C. A simultaneous collision of three helium atoms is very unlikely, so the triple-α process usually takes place in two steps [FF14; Phi99; Sal52]: 4He + 4He 8Be, 8Be + 4He 12C∗(7.654 MeV)→ 12C + {2γ or (e+ + e−)}. The ground state of 8Be is 91.84 keV above the 2α threshold (see Fig. 2.7). The production of 8Be starts at a temperature at around T9 = 0.12, because then the Gamow energy EG = 92.3 keV with a width of ∆EG = 72.1 keV is sufficient to drive this fusion reaction (see also Table B.6) [FF14; Phi99; Sal52]. Since the ground state of 8Be is above the 2α threshold, it is unstable. It decays with a width of Γ = 5.57 eV (see also Table B.1) back to 2α. However, the ground state of 8Be is a metastable state, which means that its lifetime is several orders of magnitude longer than that of other states which decay by the strong interaction (∼ 10−22 s) [BW91]. In fact, its half-life of τ1/2 = ~ ln(2) Γ = 8.19× 10 −17 s is a factor ∼ 105 larger than that of the nearest excited states (see Table B.1). This leads to the fact that in the core of a star a state of dynamic equilibrium of 4He and 8Be is formed. The number density ratio can be calculated using the formula for the population of 8Be nuclei in a gas of 4He nuclei at temperature T [Phi99] [ ] 3 [ ] = 2π~M 2 2 8Be 8 n8Be exp − (M Be − 2Mα)c · (n 24He) , MαkT kT with n4He, n8Be the number density of 4He, 8Be and Mα,M8Be the nuclear masses of 4He, 8Be. For a central density of ρ = 108 kg m−3, the 4He number density is n = ρ4He = 1.5× 1034 m−3 for example. At T9 = 0.12 the 8Be number density isMα n8Be = 4.37× 1025 m−3 giving a ratio of about 8Be : 4He = 1 : 3 · 108. However, at T9 = 0.2 the 8Be number density increases to n8Be = 7.16× 1026 m−3, resulting in 17 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars a ratio of about 8Be : 4He = 1 : 2 · 107. Although the 8Be number density is very low, its presence opens up the next stage of the triple-α process [Phi99]. The carbon production is strongly enhanced by the core structure of carbon. The excited state 0+ at 7.654 MeV of carbon, known as the Hoyle state, lies 287 keV above the threshold of 8Be + α and furthermore in the Gamow window (see Fig. 2.7). The value of the Gamow peak for T9 = 0.2 is EG = 232 keV with the width ∆EG = 146 keV (see also Table B.6). This boosts the capture process by a factor of 10 – 100million and as a result, most of the carbon in the core of a star is produced through the Hoyle state [FF14]. The Hoyle state seems to form a spatial structure, where three α-cluster are arranged nearly linearly [Epe+11; Hjo11]. It has a finite lifetime with a half-life of τ1/2 ≈ 5× 10−17 s and decays in more than 99 % of all cases into three α (see also Table B.2). Only in one of 2403.85 cases the Hoyle state transits to the ground state of 12C via either two-gamma-decay (0+ → 2+ → 0+) or e+e−-pair production (0+ → 0+) [FF14]. The formation of 12C via the Hoyle state is crucial for nuclear astrophysics and the production of higher elements [FF14; Won98]. α-Capture Reaction In the helium burning stage, higher mass elements are formed by the α-capture reaction. The temperature for this reaction is around T9 = 0.2 [SC05; Won98]. The following α-capture reactions take place in the helium burning stage [SC05]: 12C + α → 16O + γ, 16O + α → 20Ne + γ, 20Ne + α → 24Mg + γ, 24Mg + α → 28Si + γ. All of these reactions are compound reactions. Oxygen is mainly produced through the two subthreshold states 1− at 7.116MeV and 2+ at 6.917MeV (see Fig. 2.7). The cross section for this reaction at the energy of the Gamow peak EG ≈ 300 keV is in the order of 10−17 barn. We will discuss this reaction in more detail in the next section. With an increasing proton number Z the Coulomb penetration factor is decreas- ing exponentially. For example, at the cms energy Ecms = 300 keV the Coulomb penetration factor for the reaction 16O(α, γ)20N is about O(10−23), which is a factor ∼ 106 smaller than for the reaction of 12C(α, γ)16O (see Table B.7). Fur- thermore, at T9 = 0.2 the Gamow window of the reaction 16O(α, γ)20N is close to the 2− state at 4.947 MeV of 20Ne (see Fig. 2.7). Since the initial particles of the reactions are in the ground state 0+ this state is of unnatural parity. The term of (un)natural parity is further discussed in Section 2.2. As a consequence, the production of 20Ne is highly suppressed in the helium burning stage [Won98, p. 379]. Since the Coulomb penetration factor decreases exponentially with in- creasing charge number the production of magnesium and silicon is also highly suppressed in the helium burning stage (see also Table B.7). Eventually, the triple-α process and the α-capture of Carbon play an important role in the helium burning stage, while at T9 = 0.2 other fusion reactions can be neglected since they proceed much slower. Therefore a mixture of 12C, 16O and only traces of 20Ne are formed [SC05]. One of the most important reactions in the stellar evolution is the reaction of 12C(α, γ)16O, since the production of elements 18 2.1 Overview of Stellar Nucleosynthesis + Triple- 9.870 2α E[MeV] Jπ 9.641 3− 3.03 2+ + 8 7.654 0Be + α (7.367 MeV) EG 4He + α (−0.092 MeV) 0 0+ E 8 GBe 4.439 2+ α-Capture 9.844 2+ 9.585 1− 8.871 2− 0 0+ +α 12 12C + α (7.161 MeV) 7.116 1− E C G −0.045MeV −0.245MeV 6.917 2+ 6.129 3− 6.049 0+ 6.725 0+ 5.788 1− 5.621 3− 16O + Eα (4.73 MeV) G 4.967 2− 4.248 4+ 1.634 2+ 0 0+ 16O 0 0+ +α 20Ne Figure 2.7: Level scheme of the nuclei involed in the helium burning stage. The blue line shows the invariant mass of the initial particles in relation to the level scheme of the produced particle. The red bar shows the Gamow window of each reaction at T9 = 0.2. In the triple-α reaction the carbon nucleus is produced through the 0+ resonance at E = 7.654 MeV. In the further α- capture reactions the most important one is the α-capture of carbon. The oxygen is formed via the two subthreshold resonances with Ecms1− = −45 keV and Ecms2+ = −245 keV (green lines). In the helium burning stage with T9 = 0.2 the α-capture reaction of oxygen can be neglected. On the one hand the Coulomb penetration factor is several orders of magnitude lower, and on the other hand the reaction is suppressed by the unnatural parity of the 2− state at E = 4.967 MeV close to the Gamow window. All data can be found in the Tables B.1 to B.6. in further burning stages is sensitive to the C/O abundance ratio. This is often referred as the holy grail in nuclear astrophysics. Many stellar models use the S-factor of this reaction as an input parameter. So, the study of the reaction 12C(α, γ)16O plays a crucial role in understanding the evolution of stars. 19 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 2.2 The α-Capture Process of 12C in Detail In this section we will discuss the astrophysical reaction 12C(α, γ)16O in more detail. Hereby we will focus on the theoretical part, a discussion on the results of previous measurements can be found in Section 2.3. For an even more detailed description please refer to the papers [DB74; Bru01; BSS14; deB+17; FDM19]. All S-factor values used in this thesis were determined with the AZURE2 software [Ud15; Azu+10] using the configuration parameters given in the supplementary material from [deB+17]. These parameters represent the results of analysis of previous data from [deB+17]. AZURE2 can be used to calculate differential and angle-integrated cross sections for resonant nuclear reactions relevant to nuclear 12 + E[MeV] Jπ C(0 )+α (14.815 MeV) 4α (14.437 MeV) 13.869 4+ 13.664 1+ 13.259 3 13.020 2+ 12.440 1 15 12.049 0+ N + p (12.127 MeV) 11.600 3 12C(2+)+α (11.601 MeV) 11.520 2+ 11.096 4+ 10.356 4+ 9.844 2+ 9.585 1 8.871 2 EG 12 7.116 1 C + α (7.161 MeV) −0.045MeV 6.917 2+ −0.245MeV S-Factor [keVb] 6.129 3 6.049 0+ 0 0+ 16O Figure 2.8: Level diagram of the 16O nucleus. The corresponding S-factor for the reaction 12C(α, γ)16O is shown on the left, calculated with the AZURE2 software [Ud15] configured with the parameters of the supplemental material provided by Ref. [deB+17]. The S-factor strongly depends on the nuclear structure of 16O. Different thresholds are shown in blue on the right side. The two levels a few keV below the carbon-α threshold play an important role as they have the greatest impact in the area of the Gamow peak, shown in red. 20 103 102 1010 1 2 3 4 5 6 Center of Mass Energy [MeV] 2.2 The α-Capture Process of 12C in Detail astrophysics. The open-source code AZURE2 is based on an R-matrix code that can also be used for data fitting [Ud15; Azu+10]. The S-factor, Eq. (2.10), is characterized by the resonances, the non-resonant contribution and the interference between these components [deB+17]. The con- tribution strength of all these parts strongly depends on the nuclear structure of 16O. Figure 2.8 shows the level structure of oxygen and the corresponding S- factor of the reaction 12C(α, γ)16O. Since 16O is an even-even nucleus the ground state has quantum numbers Jπ = 0+, with total spin J and parity π. Below the threshold of 12C+α at 7.161MeV, four bound states are located at 0+(6.049 MeV), 3−(6.129 MeV), 2+(6.917 MeV), and 1−(7.116 MeV). The two states 1− and 2+ are only a few keV below the threshold and contribute the most to the cross section in the area of the Gamow peak. Therefore they play a decisive role in this reaction [deB+17]. Oxygen is produced from the fusion of 12C and α, which are also 0+ nuclei. Due to the conservation of parity only states with a total spin of J = l and parity of π = (−1)l can arise, where l denotes the relative orbital angular momen- tum. In addition, only electric transitions to the ground state can occur as de- scribed by the γ-ray decay selection rule. Furthermore, transitions from 0+ to 0+ states are prohibited [deB+17]. This can also be seen in Fig. 2.8, so for ex- ample the excited state 0+(12.049 MeV) does not contribute to the S-factor. At this point it should be mentioned that nearly 100% of all excited states decay to the ground state via γ-decay (see Table B.3). Exceptions are, for example the states 4+(10.356 MeV) and 4+(11.096 MeV), which can only decay into the states 2+(6.917 MeV), 3−(6.129 MeV). Any transition that passes through one or more intermediate states to the ground state is called a cascade transition. This ex- plains that the largest contribution to the S-factor in the low-energy range near the Gamow peak is made by the ground state transition, see Fig. 2.9. Since 16O is a mirror-symmetric nucleus, the E1-decay into the ground state is strictly isospin forbidden [BSS14]. The Coulomb interaction breaks the isospin symmetry, so that such a transition is possible, but the strength is strongly reduced [deB+17]. As a result, the contribution of the electric multipolar components E1 and E2 to the total S-factor for low energy levels is of similiar importance, see Fig. 2.10. To summarize we can state that the oxygen is produced through the two subthreshold states 1− at 7.116MeV and 2+ at 6.917MeV. The E1 and E2 contribution dominate the total S-factor in the area of the Gamow peak while the contribution of the cascade transitions is small compared to the ground state transition in this region. Following the previous discussion, we can limit ourselves to the E1 and E2 multi- polarities when calculating the differential cross section Eq. (2.4) for low energies. The differential cross section in the center of mass frame of carbon-α as a function of [the cms]energy E and photon angle θγ is therefore given as [DB74; deB+17] dσ dΩcms (E, θγ) = σE1 4 [Q0P0(cos θγ)−Q2P2(cos θγ)] (2.28)γ ( πα,γ) [ ] + σE2 54 Q0P0(cos θγ) + 7Q2P2(cos θγ)− 12 7 Q4P4(cos θγ)π + √6 √ cos (φ12(E)) σE1σE2 4 [Q1P1(cos θγ)−Q3P3(cos θγ)],5 π where Pn(cos θγ) are the Legendre polynomials, Qn the geometric attenuation 21 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 103 102 101 Total Ground State Transition 100 Cascade Transitions 0 EG 1 2 3 4 5 6 Ecms [MeV] Figure 2.9: The total S-factor of the reaction 12C(α, γ)16O compared to the ground state transition and the sum of all cascade transitions. The curves are calculated with the AZURE2 software [Ud15] configured with the parameters of the supplemental material provided by Ref. [deB+17]. The ground state transition dominates the total S-factor near the Gamow peak, while the sum of all cascade transitions makes a small contribution in this region. The Gamow peak is indicated by the blue dashed line and the Gamow width by the gray bar on the left hand side. factors (see [Ros53]), and φ12 the Coulomb phase shift difference between the E1 and E2 transition matrix elements. The phase shift difference can be written as [DB74; deB+17] ( ( )) cos(φ12) = cos δα1 − δα2 − arctan η 2 , (2.29) where δα1/2 are the elastic scattering phase shifts for angular momentum l = 1 and l = 2, respectiveley, and η the Sommerfeld number, see Eq. (2.9). For cms energies Ecms ≤ 1.5 MeV we can approximate the phase shift to [Bru01] cos( 2φ12) = √ 2 . (2.30)η + 4 The Coulomb phase shift and the approximated one can be seen in Fig. 2.11. 22 S-Factor S(E) [keV b] 2.2 The α-Capture Process of 12C in Detail 103 102 101 100 10−1 E1 E2 Cascades 10−2 0 EG 1 2 3 4 5 6 Ecms [MeV] Figure 2.10: The E1 and E2 ground state contribution of the S-factor of the reaction 12C(α, γ)16O compared to the contribution of cascade transitions. The curves are calculated with the AZURE2 software [Ud15] configured with the parameters of the supplemental material provided by Ref. [deB+17]. The contributions of E1 and E2 to the S-factor near the Gamow peak are in the same order of magnitude. The Gamow peak is indicated by the dashed blue line and the Gamow width by the gray bar on the left hand side. AZ(URE21 )Fit 2 · 2 + 4 −1/2η 1987 Plaga 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 Ecms[MeV] Figure 2.11: For cms energies Ecms ≤ 1.5 MeV the Coulomb phase shift cos(φ12) can be approximated using Eq. (2.30). The black line represents the results from the R-Matrix fit using the AZURE2 software [Ud15] configured with the results of Ref. [deB+17] provided as supplemental material. The red line represents the approximation of the Coulomb phase shift using Eq. (2.30). The blue dots represent the values of the Coulomb phase shift determined from the elastic α-scattering 12C(α, α)12C data from [Pla+87]. 23 cos(φ12) S-Factor S(E) [keV b] Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 2.3 Discussion of Measurement Techniques Experiments to determine the total S-factor of the reaction 12C(α, γ)16O have been carried out since 1955. The cross section at the temperature of the helium burning stage (EG ≈ 300 keV) is around O(10−17 b). So, measurements are re- ally challenging. There is currently no experiment which has measured the total cross section below Ecms = 1 MeV (see Fig. 2.14). For low energies the Coulomb penetration factor dominates the cross section and thus it decreases exponentially. In the low energy range, the cross section falls by 6 orders of magnitude from σ ∼ 4× 10−11 b at E = 1 MeV to σ ∼ 2× 10−17cms b at Ecms = 0.3 MeV (see the black curve in Fig. 2.13). In order to determine the S-factor at the Gamow peak, it is necessary to extrapolate the results of the measurements at higher energies to lower energies. But the potential extrapolation errors must be taken into account. It is therefore essential to determine the S-factor as precisely as possible in order to reduce these errors. As described in Section 2.2, the cross section is influenced by the nuclear structure of 16O. In particular, the cross section contains resonances and interferences between these resonances. In order to extrapolate it to lower energies, a method taking all of these components into account must be used. These calculations require a high computational effort, as there are 2n−1 possible interferences for n involved states. An appropriate method for such a calculation is the R-matrix method, which is explained in detail in [deB+17]. To be able to use this method, each multipolarity must be separated. Therefore it is important to measure the angular distribution of the emitted photons during the experiment. The E1 and E2 components of the ground state transition can then be determined using Eq. (2.28). As described in Section 2.2, these two multipolarities dominate the cross section for small energies. At higher energies, contributions from cascade transitions and further multipolarities also become relevant. At this point we also have to mention, that the determination of the E2 contribution in the range 1 to 3MeV is challenging since the total cross section is dominated by the broad 1−(9.585 MeV) resonance (see Figs. 2.8 and 2.10). In this section we will discuss some experiments in more detail. At this point we do not provide a complete list of all previous experiments, a detailed description can be found in [deB+17]. In the following we will focus on some of the most important experiments. We can roughly divide the experiments into direct and indirect methods. In the direct method, the reaction 12C(α, γ)16O is studied. Whereas the indirect methods derives the cross section from the measurements of other nuclear reactions based on theoretical models. 2.3.1 Direct Measurement Techniques The basic idea for the direct measurement of the reaction 12C(α, γ)16O is to carry out α-carbon scattering experiments and to detect the recoil particles. The S- factor can be determined from this measurement data. There are two possible settings: the first uses an α-beam that scatters on a solid carbon target, the second is employing the inverse kinematics where a 12C beam scatters on a 4He gas target. Both methods have their individual advantages and disadvantages, which we will discuss below. With direct measurements, it is almost impossible to measure in the Gamow energy range. The cross section must therefore be measured at higher energies and extrapolated to the Gamow peak [Fey04]. 24 2.3 Discussion of Measurement Techniques α-Particle Scattering on Carbon The first method to measure the S-factor of the reaction 12C(α, γ)16O is the α- particle scattering experiment at a solid carbon target. Hereby the emitted photon will be detected to determine the angular distribution, in order to separate the E1 and E2 contributions. In most cases a NaI-detector array is used to detect the emitted photons. A major problem is contamination of the carbon target. Traces of 13C atoms in the target material generate a high neutron background through the reaction 13C(α, n)16O. It should be mentioned that the cross section of reaction 12C(α, γ)16O at the peak of the 1−(9.585 MeV) resonance is more than 6 orders of magnitude smaller than the cross section of the reaction 13C(α, n)16O. This is discussed in detail in [deB+17]. This large background made it difficult to determine the S-factor for a long time. Higher purerity targets and better methods of extracting the background were developed that ultimately made the determination of cascade transitions possible. The analysis of the data is challenging. As already mentioned, the E1 and E2 contributions are in the same order of magnitude. Equation (2.28) shows how the two components contribute to the differential cross section. Figure 2.12 shows the contribution factors of E1 and E2 in relation to this formula. It is immediately noticeable that the E1 component can be isolated at 90°, where it is maximal, while the E2 component vanishs. Thus, E1 can be determined by measuring the cross section at θγ = 90°. It then app(lie)s( ) σE1 = 4 2 dσ π 3 dΩ . θγ=90° Unfortunately, E2 cannot be isolated. Therefore a different method must be used to determine E2. Intuitively, one would fit the data with Eq. (2.28). However, in practise it shows, that this is quite difficult, since the correlation between σE1 and σE2 is large due to the interference term √ σE1σE2. It turns out that it is better to u[se a mo]dified formula to fit the data [Kun+02; DB74]: dσ σ E1 dΩcms (E, θγ) = 4 Q0P0(cos θγ)−Q2P2(cos θγ) (2.31)γ ( ) πα,γ [ ] + σE2 5 12Q0P0(cos θγ) + 7Q2P2(cos θγ)− 7 Q4P4(cos θγ)σE1 √  + √6 cos (φ12(E)) σE2 · [Q1P1(cos θγ)−Q3P3(cos θγ)] .5 σE1  In this formula, the parameters are given by the amplitude σE1, the ratio σE2σE1 and the phase difference φ12. There are two options to fit the data. The first option is to perform a three-parameter fit. Since the phase difference can also be determined via the elastic scattering 12C(α, α)12C, this parameter can also be used as an input for the fit. The second option is to use a two-parameter fit including a fixed-phase. To do this, one determines σE1 and the ratio σE2 and canσE1 hence determine σE2. However, due to the error propagation, we expect a lower accuracy for E2 [deB+17; Ass+06]. There are several measurements planned to determine the cross section of the reaction 12C(α, γ)16O. Two of these experiments are for example the LUNA-MV experiment at the Gran Sasso laboratory and an experiment at the Felsenkeller 25 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 2 E1 1.8 E2 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 20 40 60 80 100 120 140 160 180 θ [deg] Figure 2.12: Theoretical angular contribution of E1 and E2 for the ground state transition of 12C(α, γ)16O. The contribution is calcluted in relation to Eq. (2.28), so that E1 represents P0(cos θ) − P2(cos θ) and E2 represents P (cos θ)+ 50 7P2(cos θ)− 12 7 P4(cos θ). At 90°, the E1 contribution can be isolated from the data, since it is at its maximum there, while the E2 contribution van- ishs. Since there is no angle at which E2 can be perfectly isolated, determining the E2 contribution requires more effort [deB+17]. laboratory in Dresden [Gug14; Bem+18]. One challenge in the direct measure- ment is to detect the low-energy photons with sufficient resolution. This will be improved further through the continuous development of the detectors. Due to the low reaction rate near the Gamow peak, a major challenge is to separate the 12C(α, γ)16O signals from the much larger signals arising from the cosmic back- ground. In this case, a location in the underground is the one solution to extremely reduce cosmic rays [Gug14; Bem+18]. For example, the LUNA experiment is comissioned 1400m deep under the Gran Sasso mountain. The muon component of the cosmic background is therefore reduced by a factor of 106 [Gug14]. Measurements in Inverse Kinematics Another method to suppress the background of 13C is to measure the reaction in inverse kinematics. For this purpose, a high-intensity 12C beam scatters at an 4He gas target. With this method, the S-factor can be determined in two different ways. As in the α-scattering case, the emitted photons can be detected in order to separate the E1 and E2 contributions. However, the expansion of the gas target and the forward kinematics must be taken into account for the analysis. This makes the analysis more difficult compared to the measurement of α-scattering on carbon. The second way to determine the S-factor is to detect the recoiling oxygen. In the laboratory system it is emitted in a small window in the forward direction and must be detected with high efficiency. The challenge at this point is to separate the recoiling oxygen from the scattered carbon nuclei. For one 16O nucleus around 1016 - 1018 12C nuclei are detected. The advantage is that with the detection of the recoiling oxygen, the total S-factor can be determined, also includ- 26 Contribution Factor 2.3 Discussion of Measurement Techniques ing the cascade transitions. Since it is impossible to perform this measurement for low cms energies, this technique cannot be used to determine the S-factor near the Gamow peak. An extrapolation without knowledge of the γ distribution is not possible. Even though this method only provides useful results at higher cms energies (E & 1 MeV), it still can be helpful. Other experiments, for example, can compare their results from the separations with those of the total S-factor before extrapolating them to the Gamow peak [deB+17; Fey04]. 2.3.2 Indirect Measurement Techniques There is a large number of indirect techniques to determine the S-factor of the reaction 12C(α, γ)16O. The basic idea of all indirect techniques is to measure related nuclear reactions with cross sections that are much larger than the one for 12C(α, γ)16O. Theoretical models are used to calculate the S-factor of the direct reaction afterwards. For example the β-delayed α-emission of 16N can be used to extract the α partial width of the E1 ground state transition [Fey04]. A full discussion of all these methods can be found in [deB+17]. We will only focus on two indirect methods in this section. The Photo-Disintegration Measurement The photo-disintegration reaction 16O(γ, α)12C is one of the most promising in- verse techniques. The idea is to break up oxygen nuclei with a γ-ray beam. The recoiled α-particles are then detected to determine the angular distribution. For a reaction A(a, b)B, the reciprocity theorem connects the cross sections of in- terchanged initial and final states. In the center of mass frame, the reciprocity theorem can be expressed as [May02, chapter 7.3]: σ(a, b) = (2Ib + 1)(2I 2 B + 1) |p~b | ( ) (2 + 1)(2 + 1) · 2 , (2.32)σ b, a Ia IA |p~a| where I denotes the angular momentum for the particles involved and p~ the three- momenta in the center of mass frame for the particles in the initial and final state. In the area of the Gamow peak the cross section of the time-reversed reaction 16O(γ, α)12C is by a factor of ∼ 50 higher than the cross section of the direct reaction 12C(α, γ)16O (see Fig. 2.13). This is an advantage of this method. There have been two different experimental approaches so far. One of them uses a bubble chamber as target, which also acts as a detector for the α-particle at the same time [HFP19; HFP18; DiG+15; Uga+13]. Another experiment uses a CO2-operated optical readout time projection chamber in which the outgoing α-particles are detected. Corresponding experiments are currently under development and the first measurements have already been made [Gai12]. For this purpose, an intensive nearly monoenergetic γ-ray beam was used at the HIγS facility. This delivers around 5× 107 γ/s to 3× 109 γ/s for energies in the range of 1MeV to 20MeV [Zim+13; Wel+09]. Currently, the largest limiting factor of the photo-disintegration experiment is the energy spread of the photons, which is about 200 keV for the experiments men- tioned above [deB+17]. Since the initial oxygen is in the ground state, this method can only be used to determine the cross section of the ground state transition. But this method can still be used to make important contributions to the deter- mination of the total S-factor as the cross section in the area of the Gamow peak is dominated by the ground state transition of E1 and E2. The advantage of this method is, on the one hand, the higher effective cross section, which allows lower 27 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 10−2 10−4 10−6 10−8 10−10 10−12 10−14 16O(γ, α)12C 10−16 12C(α, γ)16O 0.3 0.5 1 2 4 8 Ecms [MeV] Figure 2.13: The cross section of the time-reversed reaction 16O(γ, α)12C can be calculated using the reciprocity theorem Eq. (2.32). In the area of the Gamow peak the cross section of the time-reversed reaction is by a factor of ∼50 higher than the cross section of the direct reaction 12C(α, γ)16O. energy regions to be measured with sufficient statistics. On the other hand, this setup allows a very precise measurement of the angular distribution of the outgo- ing α-particles, which means that the E1 and E2 components can be separated very well. Experiments at the Extreme Light Infrastructure - Nuclear Physics facility (ELI-NP) are planned, which aim to achieve a higher γ-flux in addition to a better energy resolution [Gal+18; Mat+18; Bal17; Tes+16; Ton+05]. To sum it up, photo-disintegration measurement is a promising method to perform precise low energy measurements of the E1 and E2 components of the S-factor [deB+17]. The Electro-Disintegration Measurement The measurement of the electro-disintegration reaction 16O(e, e′α)12C is an exten- sion of the photo-disintegration measurement 16O(γ, α)12C [FDM19]. Electrons are scattered inelastically on oxygen. The four-momentum of the virtual photons can be determined by measuring the four-momentum transfer in the scattering process. Therefore, the scattered electrons and the produced α-particles have to be detected in coincidence. Finally, the S-factor as a function of the cms energy of the 12C-α system can be determined from the electro-disintegration cross section. The cross sec[tion in the cente]r of mass frame can be written as [FDM19]: dσ M cmsαM12C pα σMott dE ′d Ω d Ωcms = 8 (2.33)e α ( ′ ) π3W (~c)3e,e α · (ṽLRL + ṽTRT + ṽTLRTL + ṽTTRTT ), where W is the cms energy and pcmsα the three-momentum of the α-particle in the center of mass frame. The functions ṽK are factors that depend on the elec- tron kinematics and RK are the nuclear response functions: the longitudinal and transverse nuclear electromagnetic current components and the two interference 28 σ [barn] 2.4 Results of Existing Measurements terms (longitudinal L and transversal T with respect to the direction of the virtual photon). Hereby the transverse nuclear electromagnetic current component RT is connected to the differential cross section Eq. (2.28) of the direct reaction in the limit Q2 → 0 via [FDM19]: [ ] ~c · pcms R = α ·W dσT 2α · ωcms · 4π·MαM12C dΩcms , (2.34) γ (α,γ) with the electron scattering energy transfer ω. A full derivation of the cross section can be found in Chapter 3. For further information please refer to the paper by Friščić, Donnelly, and Milner [FDM19]. There are some advantages and disadvantages compared to the photo-disintegra- tion measurement. A major disadvantage is that the longitudinal and interference terms are currently unknown. These terms must also be determined experimen- tally and taken into account in the extrapolation for small energies. Another disadvantage is that contamination by 17O, 18O or 14N of the gas target creates a background that has to be extracted using suitable filters. An advantage is that the background, induced by cosmic rays, is greatly reduced by the coinci- dence measurement of the electron and the recoiled α-particle. Furthermore, the virtual photon flux is significantly higher and can be controlled by the scatter- ing angle and beam energy. Finally, the energy resolution of the photon can be determined with high precision by detecting the scattered electron in a detector with high resolution. Nevertheless, this method is an excellent extension of the indirect methods that will also be carried out in the near future in the upcoming experiment MAGIX in Mainz [FDM19]. 2.4 Results of Existing Measurements In this section, we will briefly review selected previous results on the measurement of the S-factor of the 12C(α, γ)16O. All results can be found in Table 2.1. A de- tailed discussion of all the previous results can be found in [deB+17]. In Fig. 2.14 the measured data at low energies separated by the electric transitions E1 and E2 are presented. As discussed in the previous section, these contributions dominate the S-factor in the Gamow peak region, so we will focus on them in this section. When taking a closer look at the data, we immediately notice that no data exists in the energy range below 0.9MeV. Thus, there is a large gap where the data must be extrapolated to the Gamow peak. The figure also includes an R-matrix fit and extrapolation performed with the AZURE2 software [Ud15] configured with the results of Ref. [deB+17] provided as supplemental material. The R-matrix fit correlates well with the previous experimental data. Even though the S-factor increases towards the Gamow peak, we must keep in mind that the cross section for small energies is dominated by the Coulomb penetration factor (see Section 2.2 and Fig. 2.13). The cross sections drops by more than 6 orders of magnitude in the range 1MeV to 0.3MeV. This makes the determination of the S-factor in the range below 1MeV so challenging. Several methods can be used to analyse the data and calculate the S-factor S(300 keV). The R-matrix method (RM) is an excellent tool to analyze the data, taking into account the different states, the interference between them as well as the different transitions. However, this method is computationaly very inten- sive. In many previous works, a specialized or simplified formalism was used, such as the three-level R-matrix method (TLRM) or the five-level R-matrix method 29 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars (FLRM), in which only the first three or five states were considered for the various electric ground state transitions [deB+17; Sch+12]. Before discussing the results of historical works, we must mention that the previous analyses indicate that the interference between the two states 1−(7.116 MeV) and 1−(9.585 MeV) is constructive. To rule out destructive interference between these two states with high confidence, data with high precision and accuracy below Ecms = 1.3 MeV are required [Sch+12]. Most of the previous works assumed constructive interference, unless we mention otherwise. Dyer and Barnes 1974 extrapolated the S-factor for the E1 ground state transition using two different methods. In addition to the TLRM, they used the hybrid R- matrix method (HRM), in which data from elastic scattering 12C(α, α)12C was also included. The results are [DB74] STLRM(300 keV) = 140+140E1 −120 keV b SHRME1 (300 keV) = 80+50−40 keV b. Also Redder et al. (1987) used the TLRM and the HRM to extrapolate the E1 ground state transition. They also determined the S-factor for the E2 ground state transition using the FLRM and the HRM. In addition, they calculated the contribution of the two cascade transitions via the states 2+(6.917 MeV) and 1−(7.116 MeV) using TLRM and HRM. The results are [Red+87] STLRME1 (300 keV) = 200+270−110 keV b SHRME1 (300 keV) = 140+120−80 keV b SFLRME2 (300 keV) = 96+24−30 keV b SHRME2 (300 keV) = 80± 25 keV b STLRM6.92 (300 keV) = 7± 2 keV b SHRM6.92 (300 keV) = 6± 3 keV b S7.12(300 keV) = 1.3± 0.5 keV b When comparing the results of Dyer and Barnes; Redder et al. for the different methods, the results for E2 are comparable, but the results differ significantly for the E1 transition. This model dependency is one problem in analyzing the data to determine the S-factor. To improve the results Ouellet et al. (1996) performed a complete analysis of the data sets from the earlier work of [DB74; Red+87; Kre+88], including the phase shifts from elastic scattering experiments of the reaction 12C(α, α)12C [Pla+87] and the β-delayed α spectrum from the decay of 16N [Azu+94]. For fitting and extrapolating, they used the TLRM and an alternative method to the R-matrix, the K-matrix method (KM). The results for the E1 ground state transition are [Oue+96] STLRME1 (300 keV) = 73.3± 13.2 keV b SKME1 (300 keV) = 84.8± 15.7 keV b They combined all their results to calculate the E1 and E2 ground state transition and the total S-factor SE1(300 keV) = 79± 16 keV b SE2(300 keV) = 36± 6 keV b S(300 keV) = 120± 40 keV b. In addition, they used both methods to calculate the E1 ground state transition for destructive interference between the two 1−(7.116 MeV) and 1−(9.585 MeV) states SE1(300 keV) = 2.4± 1 keV b. This clearly shows the effect of the potentially destructive interference on the cross section. 30 2.4 Results of Existing Measurements Roters et al. (1999) used the FLRM to calculate the S factor of the E1 ground state transition incorporating earlier data. The analysis results in [Rot+99] SFLRME1 (300 keV) = 79± 21 keV b. This result is comparable with the KM and TLRM results of Ouellet et al. as well as the HRM results of Dyer and Barnes; Redder et al. Gialanella et al. (2001) performed a full R-matrix analysis of their data, which included the previous data, the phase shifts from elastic scattering, and the α sprectrum data of the β-delayed 16N decay. For the first time they used a Monte Carlo (MC) simulation to calculate the systematic uncertainties of the differences between the different E1 data sets [Gia+01; deB+17]. Another result of theirs was that destructive interference between the two lowest E1 ground state transitions cannot be rigorously ruled out. The results are [Gia+01] Sconstr.E1 (300 keV) = 82± 16 keV b Sdestr.E1 (300 keV) = 2.4± 1 keV b. Kunz et al. (2001) studied the angular distribution of the S-factor measurements in the low energy region 0.95MeV to 2.8MeV in detail. Using the TLRM for E1 and the FLRM for E2 in combination with the phase shifts from elastic scattering and the α sprectrum data of the β-delayed 16N decay they determined the E1 and E2 ground state transition, the sum of all cascade transitions and the total S-factor [Kun+01] STLRME1 (300 keV) = 76± 20 keV b SFLRME2 (300 keV) = 85± 30 keV b Scasc(300 keV) = 4± 4 keV b S(300 keV) = 165± 50 keV b. The results of the data taken by Fey (2004) as part of his doctoral dissertation are published in [Ham+05]. They used the same technique as Kunz et al. to determine the E1 and E2 ground state transition and the total S-factor [Ham+05; Fey04] STLRME1 (300 keV) = 77± 17 keV b SFLRME2 (300 keV) = 81± 22 keV b S(300 keV) = 162± 39 keV b. The relative error of the total S-factor of the results of [Oue+96; Kun+01; Fey04; Ham+05] is in the range of 24% to 33%. To improve these results, Schürmann et al. (2012) used a similar technique as Ouellet et al. to analyze a large set of historical data. They used a FLRM for the E1 and E2 ground state transition and a TLRM for the E3 ground state and the cascade transitions in agreement with the elastic scattering data and the β-delayed α spectrum of 16N. In addition, they calculated the systemic uncertainties for the different data sets with the inclusion of a Monte Carlo simulation. They pointed out that a major problem are the significant discrepancies in the various absolute normalizations of the direct experiments. Their analysis results in [Sch+12] S +8tot(300 keV) = 161± 19(stat)−2(sys) keV b. Also, deBoer et al. (2017) analyzed a large set of historical data in consistency with the elastic scattering data and the β-delayed α spectrum of 16N. For the fit, they used a global R-matrix fit using the AZURE2 software [Azu+10; Ud15]. A major innovation in their analysis is that they also calculated the uncertainties arising from different models describing the S-factor. Their results are [deB+17] S +18tot(300 keV) = 140± 21(MC)−11(model) keV b. 31 Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars The relative error of the total S-factor of [Sch+12; deB+17] results in a range from 17% to 28%. To understand stellar evolution the S-factor in the low energy region must be determined with a relative error of 10% or better. Although analysis and measurements have improved in recent years the present relative error is far from this desired uncertainty. The importance of the S-factor in predicting higher mass elements will be briefly discussed in the next section. Table 2.1: S-factor results at Ecms = 300 keV of the previous works of [DB74; Red+87; Kre+88; Oue+96; Rot+99; Gia+01; Kun+01; Ham+05; Sch+12; deB+17]. The used models to fit and extrapolate the data are R-matrix method (RM), K-matrix method (KM), hybrid R-matrix method (HRM), three-level R-matrix method (TLRM), five-level R-matrix method (FLRM) and the Monte Carlo (MC) simulation. More details can be found in the text of Section 2.4. For a detailed description of all previous data please refer to [deB+17]. S(300 keV)[keV b] Reference E1 E2 Cascades Total Model Dyer and Barnes (1974) 140+140−120 TLRM 80+50−40 HRM Redder et al. (1987) 200+270 +24 a +0.5b−110 96−30 7± 2 , 1.3−1 TLRM; FLRM 140+120−80 80± 25 6± 3a HRM Kremer et al. (1988) 0− 140 TLRM Ouellet et al. (1996) 73.3± 13.2 TLRM 84.8± 15.7 KM 79± 16 36± 6 120± 40 KM; TLRM 2.4± 1d KM; TLRM Roters et al. (1999) 79± 21 FLRM Gialanella et al. (2001) 82± 16 RM; MC 2.4± 1d RM; MC Kunz et al. (2001) 76± 20 85± 30 4± 4c 165± 50 TLRM; FLRM Hammer et al. (2005) 77± 17 81± 22 162± 39 TLRM; FLRM Schürmann et al. (2012) 83.4 73.4 4.4c 161± 19 +8(stat)−2(sys) FLRM; MC 7.9d FLRM; MC deBoer et al. (2017) 86.3 45.3 7c 140± 21 +18(MC)−11(model) RM, MC a 6.92MeV transition b 7.12MeV transition c all cascade transitions d destructive inferference 32 2.4 Results of Existing Measurements 103 1974 Dyer 1987 Redder 1988 Kremer 1996 Ouellet 1999 Roters 2 2001 Gialanella10 2001 Kunz 2004 Fey 2006 Assuncao 2009 Makii 2012 Plag AZURE2 Fit 101 100 10−1 0 0.5 1 1.5 2 2.5 3 3.5 Ecms[MeV] (a) E1 contribution data [DB74; Red+87; Kre+88; Oue+96; Rot+99; Gia+01; Kun+01; Fey04; Ass+06; Mak+09; Pla+12]. 103 102 101 100 1987 Redder 1996 Ouellet 1999 Roters 2001 Kunz 10−1 2004 Fey 2006 Assuncao 2009 Makii 2011 Schürmann 2012 Plag −2 AZURE2 Fit10 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Ecms[MeV] (b) E2 contribution data [Red+87; Oue+96; Rot+99; Kun+01; Fey04; Ass+06; Mak+09; Sch+11; Pla+12]. Figure 2.14: E1 (a) and E2 (b) contribution data fitted with the AZURE2 software [Azu+10; Ud15] configured with parameters of the supplemental ma- terial provided by Ref. [deB+17]. The gray bar represents the Gamow window together with the Gamow energy EG, which is shown as a blue dotted line. 33 SE2[keV b] SE1[keV b] Chapter 2 - The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars 2.5 Production Factor In this section, a brief summary of the production factor is given. The (isotopic) production factor is a quantity to describe the ratio of isotopes produced in pre- supernova evolution of massive stars with regards to nucelosynthesis. It is defined as [Koz14; WHW02] := misoPiso , X iso ·Mtot with the mass fraction in the ejecta of a given isotope miso in solar masses, the mass fraction of the isotope according to the solar metallicity X iso, and the initial mass of the star Mtot. The key uncertainty in all models describing the pre-supernova evolution is the S-factor of the reaction 12C(α, γ)16O [WH07; WW93]. Figure 2.15 shows the calculated production factor as a function of the S-factor value. These results were published in [WH07]. It is immediately visible that the production factor strongly depends on the value of the S-factor. In addition the results of Schürmann as well as deBoer are shown as gray bars in Figs. 2.15a and 2.15b. It is obvious that no precise prediction for the production factor can be made based on the present results. As discussed in the previous section, a relative uncertainty of better than 10% for the S-factor of the reaction 12C(α, γ)16O is required to obtain reasonable results for the pre-supernova evolution and the prediction of the mass fraction of stars after the helium burning stage. For more information on the production factor please refer to [WH07; WHW02; WW93; Koz14]. To improve the present results of the S-factor new measurements must be per- formed. These measurements must fulfill two important criteria. First, the errors in the range above 1MeV of the S-factor for the E1 and E2 ground state transition must be substantially reduced. Furthermore, it is important to explore the range below 0.9MeV. On the one hand, to rigorously exclude destructive interference and, on the other hand, to reduce the range over which extrapolation is neces- sary. Due to the strong decrease of the cross section from ∼ 10−11 b at 1MeV to ∼ 10−17 b at 0.3MeV, the experiment must not only have a high luminosity but also must be able to extract the background very accurately to determine the S-factor in the region below 0.9MeV. One of these upcoming experiments is MAGIX where processes with very low cross sections at small momentum transfer can be studied. One goal of the MAGIX physics program is the measurement of the electro-disintegration of oxygen to determine the S-factor of the reaction 12C(α, γ)16O. In the following chapter, we will have a closer look at the theory of electro- disintegration. Subsequently, in Chapter 4, we will learn more about MAGIX and will discuss the different phases of the planned measurement. At the end of this thesis, we will discuss the results of the simulation of the electro-disintegration cross section. 34 2.5 Production Factor 40 10 16O 18O 20Ne 23Na 24Mg 27Al 32S 36Ar 40Ca Schürmann et al. 2 0 50 100 150 200 250 300 350 S(300 keV) [keVb] (a) Isotopic production factor with the results of Schürmann et al. [Sch+12] 40 10 16O 18O 20Ne 23Na 24Mg 27Al 32S 36Ar 40Ca deBoer et al. 2 0 50 100 150 200 250 300 350 S(300 keV) [keVb] (b) Isotopic production factor with the results of deBoer et al. [deB+17]. Figure 2.15: The production factor of some key isotopes as function of the S- factor. The data is from [WH07]. Two different results of S-factor calculations are given in (a) and (b) to clarify the current situation with regards to the uncertainties. The dotted blue line is the calculated S-factor and the gray bar represents the error. Both results show that the current errors in the S-factor calculations do not allow any robust prediction of the abundance of higher elements that arise in star nucleosynthesis after the helium burning stage. 35 PPrroodduuccttiioonn FFaaccttoorr PPrroodduuccttiioonn FFaaccttoorr 36 CHAPTER 3 Electro-Disintegration Cross Section of 16O In this chapter, we will take a closer look at the theory of the electro-disintegration reaction 16O(e, e′α)12C. The emphasis is on the derivation of the cross section. The chapter concludes by showing how the cross section of the direct reaction 12C(α, γ)16O enters into the cross section of electro-disintegration. In the electro-disintegration technique, electrons are scattered inelastically on oxy- gen. By detecting the scattered electrons and the recoiled α-particles, the kinetic parameters of the reaction can be determined. In contrast to photo-disintegration, in which a γ-ray beam is used, a virtual photon is exchanged. In addition to the transverse component, the longitudinal components and possible interferences must also be considered in the electro-disintegration process. We are using the natural system of units with ~ = c = 1. The following derivation of the cross section is based on the procedure published in [FDM19; Don+17]. Nevertheless we have to keep in mind that the Extreme Relativistic Limit (ERL) is not applicable for small electron scattering angles. Therefore, it is crucial that formulas are used in its most general form, so that no approximations are done in our calculations. 3.1 Kinematics of the Electro-Disintegration Reaction In the electro-disintegration reaction of 16O (see figure 3.1), we define the four- momentum of the virtual photon γ∗ as qµ := (ω, ~q ) = Kµ −K′µ = Pµα + Pµ µ12 − PC 16 , (3.1)O where ω is the energy and ~q is the three-momentum transfer: ω = E ′e − Ee = Eα + E12 − EC 16 , (3.2)O ~q = ~k − ~k ′ = p~α + p~12 − p~C 16 . (3.3)O 37 Chapter 3 - Electro-Disintegration Cross Section of 16O Kµ(E ,~k) K′µ(E′ ,~k ′e e ) e− e− Pµ ∗ 12 (E12 , p~ )C C 12C γ 12C 16O α Pµ16 (E16 , p~16 ) P µ α (Eα, p~O O O α) Figure 3.1: First order Feynman diagram for the electro-disintegration reaction 16O(e, e′α)12C. By using the metric tensor gµν = diag(1,−1,−1,−1) we obtain q qµµ = (Kµ −K′µ)2 = (Kµ)2 + (K′µ)2 − 2 · g νµνK K′µ (3.4) = 2m2e − 2E E ′ + 2~∣k ·∣∣~ ′e e k ∣ = 2m2e − 2 ′ + 2 ∣∣~ ∣EeEe k∣∣∣~ ′∣k ∣ cos(θe) = 2m2e − 2EeE ′e (1− βeβ′e cos(θe)) =: −Q2, where ∣∣∣ ∣~ ∣k∣ βe = = |~ve| , Ee c and θe the scattering angle of the electron. For the abso∣ lu∣ te values of the three- momenta we will simply write q ≡ |~q |, px ≡ | ∣p~x| or k ≡ ∣~ ∣k∣. 3.2 Differential Cross Section of the Electro-Disintegration Reaction 16O(e, e′α)12C Following the Appendix B in [BD64] and (the equation (B1) for the differentialcross section of spinless particles and photons, the)cross section of the reaction 16O(e, e′α)12C in lab frame, where Pµlab = M ,~16 16 0 , can be written as:O O 1 ( )( )me M16 ∑ 3~ ′ 3 M d3p~dσ = O |M |2 · me d kfi ′ (2 )3 · Mα d p~α · 12C 12Cβ E 3 3e e E16 fi E(e π Eα (2π) EO 12 (2π)C ) (3.5) ·(2π)4δ4 Kµ + Pµ16 −K ′µ − Pµ µ O α − P12 ,C whereM is the Lorentz invariant amplitude and∑fi represents the sum over final and the average over initial spin states. In an electro-disintegration experiment, the four-momentum of the scattered elec- tron and the recoiled α particle are detected, but not the residual 12C. This means we have to integrate the cross section over the momentum d3p~12 . WithC the conservation of∫the three-m( omentum ) d3p~ δ3 ~k + p~ − ~12 16 k ′ − p~α − p~ = 1,C O 12C 38 3.2 Differential Cross Section of the Electro-Disintegration Reaction 16O(e, e′α)12C we get m2M M 1 1 ∑ k ′2d = e α 12C 2 dk ′dΩ′ep2αdpαdΩασ E β (2π)5 |M | ·e e f( fi E ′i eEαE12C ) (3.6) ·δ E + E − E ′e 16O e − Eα − E12 .C Furtheremore, we integrate the energy-conserving δ function over the recoil mo- menta dpα. The integration will be carried out following the procedure described in [GS64]. If we asume a function f(x) has any number of simple roots {x1, . . . , xn}, we can write ∑n ( ( )) = δ(x− xi)δ f x |f ′i=1 ( . xi)| In our case the function f(p)√in the lab fram√e is: f(p) : = ω +M16 −√|p~ |2 +Mα −√ |~q − p~ |2 +MO 12C = ω +M − p2 +M 2 216O α − q + p − 2p q cos θα +M12 ,C where θα is the angle between ~q and p~α. According to the definition this function has one simple root at p ≡ pα: √ √ f(p 2α) = ω +M16 − pα +Mα − p212 +MO C 12C = E ′e − Ee + E16 − Eα − E12 .O C The derivative of this functio∣n evaluated at p = p is∣ ∣ α ∣ ′ ∣( ) ∣∣ = ∣∣∣∣√ −pf p + √−p+ q cos ∣ θα ∣∣∣ p=pα ∣ p2 +M∣ α |~q − p~ |∣ 2 +M ∣12C ∣ p=pα= ∣∣−pα + −pα + q cos θαE ∣ E ∣ ∣∣∣ α 12C = 1 ∣∣ ∣∣Eαq cos θα − pα(Eα + E12 )∣E CαE12C 1 ∣∣∣ ∣∣= Eαq cos θα − pα(ω +M E E 16 )∣. O α 12C The integration o∫ver dpα results inp2αdp ( )α · δ Ee + E ′ E ∫E 16 − E O e − Eα − E12C α 12C = ∣∣∣ p 2dp | | cos − ( + )∣∣ · δ(p− pα)Eα ~q θα pα ω M16 ∣O = ∣∣∣ p 2 α ∣ Eα|~q | c∣∣os θα − pα(ω + ∣ M16 )∣O ∣ = pα · ∣∣∣1 + ωpα − Eα|~q | cos ∣∣∣ −1 θα M ∣16 pαMO 16O = pα · f−1 M rec , 16O 39 Chapter 3 - Electro-Disintegration Cross Section of 16O with the hadronic recoil factor frec. Finally, the differential cross section can be expressed as m2M M 1 k ′2 ∑d = e α 12σ C(2 )5 ′ · p f−1α rec |M |2fi dk ′dΩ′edΩα. (3.7)π M16 βe EO eEe fi 3.3 Calculation of the Matrix Element Next, we will evaluate the Lorentz invariant matrix element ∑ 2fi|Mfi| , as de- scribed in [Don+17, Section 7.3]. In the natural system of units e2 = 4πα, where α is the fine structure constant, the invariant matrix element can be expressed as [HM84; BD64]: ∑ ( )2 |Mfi|2 = 4πα µν 2 LµνWfi , (3.8) fi Q where Lµν describes the leptonic and W µν the hadronic tensor. With the electron current jµ and the hadronic current matrix element Jµfi the leptonic and hadronic tensors yield [Don+17, eq. 7.10-11] ∑ L = ∗µν ∑leptons jµjν , (3.9) W µν µ∗ νfi = hadronsJfi Jfi. (3.10) Both tensors, the lepton and the hadronic, are conserving the electromagnetic current [HM84] qµL νµν = q Lµν = 0, (3.11) q W µνµ = qνW µν = 0. (3.12) For unpolarized electron scat(tering the lepton (tensor corresp)ond)s to [HM84]: Lunpolµν = 1 2 2 K ′ µKν +K′K ′ α 2ν µ − KαK −me gµν . (3.13)me If we define 1 ( ) R ′µ = 2 Kµ +Kµ , (3.14) we get 1( ) qµRµ = 2 Kµ +K ′ µ (Kµ −K′µ) = 12(K 2 −K′2) = 12(m 2 −m2e e) = 0. We can then re-write the lepton tensor in terms of qµ and Rµ. Remembering Eq. (3.4) 2K′ ααK − 2m2e = −(K2 − 2K′ ααK +K′2) = Q2, and considering 4RµRν = (K ′µ +Kµ)(K +K′ν ν) = K ′µKν +KµKν +K K′ +K′ K′µ ν µ ν , q ′ ′ ′ ′ ′ ′µqν = (Kµ −Kµ)(Kν −Kν) = KµKν −KµKν −KµKν +KµKν , we get 2 1R ′ ′µRν − 2qµqν = KµKν +KµKν . 40 3.4 Definition of Spherical Unit Vectors Finally, we get 2m2 1eLµν = 2RµRν − 2(qµqν +Q 2gµν). (3.15) In the next step we will focus on calculating: Rfi := 4m2e · L µν µνWfi . (3.16) Using the current conservation[HM84] q µµJfi(~q ) = 0, we get ( ) Rfi = 2Rµ · 2R 2 µ∗ νν − qµqν −Q gµν · Jfi Jfi = 2R Jµ∗ · 2R Jν − q Jµ∗q Jν −Q2µ fi ν fi µ fi ν fi J µ∗ ν fi gµνJfi = |2R · J |2 −Q2fi |Jfi|2. (3.17) To calculate (3.17), Jµfi(~q ) must be examined more closely. For a detailed approach see the following section. 3.4 Definition of Spherical Unit Vectors The hadronic matrix elements are three-dimensional Fourier transforms of the gen- eral transition matrix elements of the ∫electromagnetic current operator [Don+17]: Jµ (~q ) = dx eiqxJµfi fi(x). The component µ = 0 is the Fourier transformation of the transition charge density. The spatial components µ = 1, 2, 3 are the Fourier transformations of the transition three-vector current den(sity [Don+17)]. Therefore, we can state Jµ (~q ) := %(~q ), J~fi fi(~q ) . For a set of unit vectors of the three dimensional space ex, ey, ez the eigenvectors for the operators S2 and Sz are [Edm57] e±1 = ∓√ 1 (ex ± ie2 y ), (3.18) e0 = ez. (3.19) We obtain S2em = 2em, for m = 0,±1 Szem = mem. The set of em with m = 0,±1 is called spherical unit vectors and it defines an angular momentum system with spin 1 [Edm57]. In addition the vectors have the following properties [Edm57]: 1. The complex conjugate can be written as e∗m = (−1)me−m for m = 0,±1. 41 Chapter 3 - Electro-Disintegration Cross Section of 16O 2. The vectors are orthogonal e∗men = δmn for all m,n = 0,±1. 3. A vector V can be expressed in sph∑erical unit vectors as V = Vme∗m. m where the components are given as scalar product Vm = em · V. The coordinate system we choose in this case is having its z-axis along the virtual photon direction ~q and its y-axis normal to the scattering plane [Don+17]. In more detail we choose ~q ez(~q ) = , (3.20)|~q | ∣∣~k × ~k ′ey(~q ) = ∣ ∣ , (3.21)~ ∣k × ~k ′∣ ex(~q ) = ey × ez. (3.22) In this specific coordinate system w∑e get J~fi(~q ) = Jfi(~q ;m)e∗m(~q ), (3.23) m with Jfi(~q ;m) = em(~q ) · J~fi(~q ). Furthermore the current conservation implies [Don+17] 0 = q · Jµµ fi(~q ) = ω%fi(~q )− ~q · J~fi(~q ) = ω%fi(~q )− |~q |Jfi(~q ; 0). Therefore, we can see a relationship bet(weeelements )n the longitudinal and charge matrix ω Jfi(~q ; 0) = %fi(~q ). q The representation of the electromagnetic current operator in spherical unit vec- tors allows to further calculate the right-hand side of Eq. (3.17). 3.5 Calculation of Generalized Rosenbluth Factors In this section we will determine Rfi by expressing it in terms of various combi- nations of bilinear products of the current matrix elements: RLfi := |% (~q )| 2 fi , RTfi := |Jfi(~q ; +1)| 2 + |Jfi(~q ;−1)|2, RTLfi := −2 Re{%∗fi(~q ) (Jfi(~q ; +1)− Jfi(~q ;−1))}, RTTfi := 2 Re{J∗fi(~q ; +1)Jfi(~q ;−1)}, 42 3.5 Calculation of Generalized Rosenbluth Factors where the labels L, T, TL, and TT refer to the longitudinal, transverse, transverse- longitudinal interference and transverse-transverse interference responses. They are called nuclear response functions and contain all information of the nuclear structure [Don+17]. Firstly we will calculate the two terms of Eq. (3.17) separately 2R Jµ = 2R J0 ~µ fi 0 fi − 2R · J~fi = (E ′ ~ ~e + Ee)%(q)− 2R · Jfi. (3.24) For the scalar product we use (3.23) to get 2R~ · J~ = (~k + ~k ′fi ) · J∑~fi(q) = (~k + ~k ′) · Jfi(~q ;m)e∗m(~q ) m = J (~q ; 0)(~k + ~k ′) · e∗fi 0(~q ) + Jfi(~q ; +1)(~k + ~k ′) · e∗+(~q ) + Jfi(~q ;−1)(~k + ~k ′) · e∗−(~q ). In a next step each of those scalar products will be evaluated separately ~ ~ ′ ~ ~ ′ (~k + ~k ′) · e∗(~q ) = (~k + ~k ′0 ) · ez(~q ) = (~ + ~ ′) · ~q = (k + k ) · (k − k )k k q q k2 − k ′2 (E2 −m2= = e e)− (E ′ 2 e −m2e) E2= e − E ′ 2 e q q q = ω (E ′e + Ee).q The coordinate system described in sec{tion 3}.4 implies that the y-axis is perpen- dicular to the scattering plane = span ~k,~k ′ . This means (~k + ~k ′) · ey(~q ) = 0, thus we get (~k + ~k ′) · e∗ 1±1(~q ) = ∓√ (~k + ~k ′) · (ex(~q )− iey(~q )) = ∓√ 1 (~k + ~k ′) · ex(~q )2 2 = ∓ 1√ 2 · ∣∣∣~ × ~ ′∣∣∣(~k + ~k ′) · (~k× ~k ′)× ~q.q k k We use the relation (a× b)× c = (a · c) b[− (b · c) a to evaluate ] (~k + ~k ′) · (~k× ~k ′)× ~q = (~k + ~k ′) · k(2~k ′ +)k ′2~k − (~k · ~k ′)(~k + ~k ′)2 = 2k2k ′2 − 2 ~k · ~k ′ = 2k2k ′2(1− cos2(θe)) = 2k2k ′2 sin2(θe).∣ ∣ Additionally, considering the fact ∣∣~k× ~k ′∣∣ = kk ′ sin(θe) we finally get (~k + ~k ′) · e∗±1(~q ) = ∓√ 1 · 2k2k ′2 sin2(θ ) √2 · qkk ′ sin( ) eθe = ∓ 2kk ′ sin(θe). q 43 Chapter 3 - Electro-Disintegration Cross Section of 16O When combining all theseparts we get( ) 2 2 ωR Jµµ fi(~q ) = (Ee + E ′e)1− %fi(~q )q √ + 2 [ ] kk ′ sin(θe) Jfi(~q ; +1)− Jfi(~q ;−1) q √ [ ] = ( + ′ )Q 2 2 Ee Ee 2 % ′ fi(~q ) + kk sin(θe) Jfi(~q ; +1)− Jfi(~q ;−1) . q q To simplify the term we define 2 a := (Ee + ′ ) Q Ee 2 , (3.25) √ q b := 2kk ′ sin(θe), (3.26) q and we get [ ] 2R µµJfi(~q ) = a · %fi(~q ) + b · Jfi(~q ; +1)− Jfi(~q ;−1) . (3.27) This helps us to specify the first part of Eq. (3.17) ∣∣∣ ∣ [ ]22RµJµfi( ∣~q )∣ = a2|%fi(~q )|2 + ab%∗fi(~q )[Jfi(~q ; +1)− Jfi(~q ;−1)] + ab[% ∗ ∗fi(~q ) Jfi(~q ; +1)− Jfi(~q][;−1) ] + b2 J∗fi({~q ; +1)− J∗fi(~q ;−1) Jfi(~q ; +1)}− Jfi(~q ;−1) = a2|%fi(~q )|2 + ab(Re %∗fi(~q )[Jfi(~q ; +1)− Jfi(~q);−1)] + b2 |J 2fi{(~q ; +1)| + |Jfi(~q ;−1})|2 − b2 · Re J∗fi(~q ; +1)Jfi(~q ;−1) = a2RL − abRTL + b2RTfi fi fi − b2RTTfi . (3.28) The second part of Eq. (3.17) becomes ∣∣∣ ∣2 ∑Jµfi(~q )∣∣ = J0( (~q ) 2 − J~∗(~q ) · J~(~q ) = |%fi(~q )|2 − |Jfi(~q ;m)|2 m ω2 ) ( ) = 1− |% (~q )|2 − |J (~q ; +1)|22 fi fi + |Jfi(~q ;−1)| 2 q = Q 2 RL2 fi −R T fi. (3.29)q In summary we ge(t ) R = 2 − 2Q 2 ( ) a Q RLfi 2 fi + b 2 +Q2 RTfi − abRTL 2 TTq fi − b Rfi =: v0vLRL Tfi + v0vTRfi + v0v RTLTL fi + v0vTTRTTfi , (3.30) 44 3.6 Calculating the Generalized Mott Cross Section with the generalized Rosenbluth factors ( )(Q2)2 v v = (E + E ′ )20 L ( e e −)q 2 q2 , (3.31) ′ 2 v0vT = 2 kk sin(θ 2e) (+Q) , (3.32)q√ 2 ′ v v = − 2(E + E ′ Q kk0 TL ( e e) ) 2 sin(θe), (3.33)q q2 kk ′ v0vTT = −2 sin(θe) . (3.34) q By convention the common factor v0 = (Ee + ′ )2Ee − |~q | 2, (3.35) is separated. We will discuss its importance in the following section. We also define ρ := Q22 = 1− ω 2 2 which implies 0 ≤ ρ ≤ 1 [Don+17, Section 7.1].q q 3.6 Calculating the Generalized Mott Cross Section Before combining all results to describe the differential cross section it is necessary to determine the Mott cross section in its general form. As stated in [BD64, Section 7] the differential Coulom(b scattering cross sectio)n can be written asdσ 2 dΩ′ = α 4 4E ′ µ ′ 2 eEe − 2K Kµ + 2me . e Q When using the relativistic energy-momentum relation m2e = E2 − k2e we get: 4EeE ′e − 2KµK′µ + 2m2e = 2E E ′e e + 2~k · ~k ′ + 2m2e = E2e − k2 + E ′ 2 ′2e (− k +) 2E ′eEe + 2~k · ~k ′2 = (E ′e + Ee) 2 − ~k − ~k ′ = (Ee + E ′e) 2 − (~q )2 = v0. And so the generalized(Mott)cross section is dσ = dσ · E ′ e = α 2v E ′0 e dΩ′ dΩ′ 4 . (3.36)e Mott e Ee Q Ee 3.7 Combining Results to Differential Cross Section As consequence of the previous d(erivat)ion, we can write the invariant matrixelement now as ∑ 2 |M |2 = 4πα ∑ fi 2 · v0 Q 4m2 vKRKfi e K with K = L, T, TL, TT and then the c(ross s)ection be(comes ) MαM m 2 2 d 12 e 1 k ′2 4πα v0 ∑ σ = C −1(2 )5 · ′ pαfrec (2 · 4 2) v R dk ′dΩ′K K edΩαπ M16 βe E EO e e Q me K M M β′2 ′ 2= α 12 ∑ C · e Ee α v0 −1 ′ ′8π3 · 4 · pαfM β E Q rec vKRK dk dΩedΩα.16O e e K 45 Chapter 3 - Electro-Disintegration Cross Section of 16O Finally, we get the differential cross section for the electro-disintegration calculated in the lab frame ( ) dσ M M ′2= α 12C · βe · dσ −1 ∑ dk ′dΩ′ dΩ 8 3 dΩ′ · pαfrec · vKRK . (3.37)e α π M16 βO e e Mott K 3.8 Transformation to Center of Mass Frame Instead of calculating the differential cross section (3.37) in the lab frame of the experiment dΩlabα it is useful to calculate the hadronic part in the center of mass system ∑(cms) of the outgoing carbon-α pair. The goal is to express the term p f−1α rec · K vKRK in the cms. The transition from the lab to the cms includes a Lorentz boost along the virtual photon three-momentum ~q. The invariant mass W of the o∣utgoing ca∣ rbon∣ -α system∣ is defined as 2 ∣∣ µ µ ∣∣2 ∣∣ µ µ∣∣2W := q + P16 = PO 12 + PC α . In the lab frame the following applies ( ) Pµ16 + µ = ω +Mq 16O , O ~q and so W 2 = (ω 2 2lab +M16 ) − qO lab. The right side of plab ∫ 2 ( )α · f−1 pαdpα ′ M rec = · δ Ee + E16 − EO e − Eα − EE E 12 ,C16O α 12C needs to be evaluated in a specific fra(me )and we will choose the cms: Pµ + Wqµ = = Pµ + Pµ16 .O ~0 12C α The energy and momentum conservation yields W = E16 + ω = E12 + Eα, and p = p =: pcms O C α 12 α . So, definingC √ √ f(p) := W − p2 +M2 2 2α − p +M12 ,C we have ∂f ∣∣ ∣∣∣ ∣∣∣∣pcms ∣ = α + p cms ∣ α ∣∣∣ cms= Wpα .∂p p=pcms Eα E12 EαEα C 12C The integration results in plab ∫ p2 dp ( )α · αf−1 αrec = · δ Ee + E ′M ∫ E E 16 − E O e − Eα − E12C 16O α 12C = p 2 dp cmscms pα Wpcms δ(p− pα ) = . α W This means in particular plab M16 f−1 = O pcmsα rec W α . (3.38) 46 3.8 Transformation to Center of Mass Frame To calculate vK and v0 in the cms we have to boost these scalar parameters along ~q. For a relative velocity ~vrel = |~vrel|·n̂ the general Lorentz boost of a four-momentum P µ = (E, p~ ) can be written as [DL05] Eboost = γrel(E − βrel(p~ · n̂)), p~ boost = p~+ (γrel − 1)(p~ · n̂) · n̂− γrelβrelE · n̂, with βrel = vrel and −1γ 2rel = [1− βrel] . If p~ = p~‖+p~⊥ with p~⊥ ·~v = 0 and p~·~v = p~‖ ·~vc we have p~boost‖ = γrel(p~ · n̂− βrelE) · n̂, p~boost⊥ = p~⊥. The Lorentz boost into the center of mass system means a boost along ~q. The velocity vector is given as ~vrel = 1 ~q, so we have:Wγrel q βrel = + ,ω M16O ω +M16 γ Orel = , W γrel·βrel = q . W Boosting the three-momen(tum of the vir)tual photon we get~q lab ( lab) ~q cms = γ qlab − β ωlab = − ωγ ~q labrel rel lab relq W M = 16O ~q lab. W To boost the scalar parameter, let’s also have a closer look at the energy of the incoming and outgoing( electron ) ~ lab lab Ecms lab βrel ~ lab lab lab k · ~q e = γrel Ee −( )· k · ~q = γrelEq e − W k lab 2 − ~klab · ~k ′lab = γ Elabrel e − ,W ( ) ~ lab ~ ′lab ′lab 2 E ′ cms = γ E ′ lab k · k − k e rel e − .W Summing it up, we(get ) lab 2 ′lab 2 ( lab)( ) Ecms + E ′ cms = γ Elab + (k ) − (k ) ωE ′ lab − = γ − Elab + E ′ labe e rel e e relW W e e M ( ) = 16O Elabe + E ′ labe .W This enables us to calculate ( )2( ) ( )2( ) vcms = (Ecms ′ cms 2 cms 2 M16 lab ′ lab 2 M 2 0 ( e +)Ee ) − ( ) = O + − 16q E E Oe e qlabW W M 2 = 16O vlab W 0 . 47 Chapter 3 - Electro-Disintegration Cross Section of 16O Additionally the substitution a Eq. (3.25) in the cms can be expressed as: 2 acms = (Ecms + E ′ cms Qe e )(qcms)2 = W alab. M16O The substitution b Eq.((3.26))can be written as(: ) b := ~k + ~k ′ · 1e∗−1(~q ) = −√ ~k + ~k ′ · ex(~q ).2 Since ex(~q ) ⊥ ~q we get 1 ( ) b = −√ ~k + ~k ′ · ex(~q ),2 ⊥ from which we directly obtain bcms = blab, because the boost of the orthogonal part doesn’t change. Inserting this in the formula to calculate vcmsK we finally get 2 vcms M = 16O vlab0 2 0 ,W 4 2 vcms = W lab cms W labL M4 vL , vT = 2 vT ,16 MO 16O 3 cms = W lab cms W 2 v v labTL M3 TL , vTT = M2 vTT .16O 16O M2 Defining 2ṽ := W vcms = vlab and ṽ := 16O vcms, we have ṽ ṽ = vcmsvcms0 2 0 0 K 2 K 0 K 0 K .M16 WO This enables us to write the differential cross section of the electro-disintegration with the hadronic part calculated in the cms of the carbon-α system dσ M M ′2α 12C βe cms ∑ cms dωdΩ′ dΩcms = 8 3 · · pα σMott · ṽKRK , (3.39)e α π W βe K with α2vlab ′ lab σ = 0 EeMott Q4 Elab , e and = W 2 lab WṽL 2 vL , ṽTL = v lab, M16 M TL O 16O ṽ = vlabT T , ṽTT = vlabTT . 3.9 Approximation Using the Extreme Relativistic Limit It is also usefull to determine the approximated formulas based on the ERL. This is applicable for high electron energies Ee  me with scattering angles θe ≥ 1°. These can be used, for example, for simulations or analyses in this parameter range, since the calculations with these approximated formulas are significantly more time efficient. By using the ERL, the four-momentum transfer Q2 Eq. (3.4) can be expressed as: Q2 = 2E E ′e e(1− cos(θe)). 48 3.9 Approximation Using the Extreme Relativistic Limit Using the double-angle formula 2 sin2(θ) = 1−( co)s(2θ) we get Q2 = 4E E ′ sin2 θee e 2 . (3.40) At this point we also want to calculate the generalized Rosenbluth factors using the Extreme Relativistic Limit. Using the ERL on Eq. (3.35) we get v = (E + E ′ )2 − q2 = E2 − k2 + E ′ 2 − k ′20 e e e e + 2EeE ′e + 2kk ′ cos(θe) = 2E E ′e e(1 +(cos()θe)) = 4 θeEeE ′e cos2 2 . Per definition the longitudinal part c(an b2)e expressed as2 vL = Q 2 = ρ 2. q We can use Eq. (3.40) to simplify ( ) ( ) 2 ′2 sin2( ) = 4 2 ′2 sin2 θek k θe k k 2 cos 2 θe 2 1 2 ( =) v Q 2 4 0 , Q = tan2 θe v0 2 . Therefore, we get 2 ( )1 Q θe v 20vT = 2v0 2 + v0 tan ,q 2 and finally ( ) 1 θe v 2T = 2ρ+ tan 2 . For the transverse-longitudinal interference we have √ 2 ′ vTL = − · ( kk Ee + E ′e)ρ · sin(θ(e)v0 q√ ) ( ) 2 (E + E ′ρ e e)EeE ′e · 2 sin( θ2)e cos θe= − 2 q 4E(eE ′)cos2 θee 2 ′ = −√ρ (Ee + Ee() sin) θe2 . 2 q cos θe2 If we take a close(r lo)ok at( the denominator of)the r(ight)fraction we can express (E + E ′ 2 2 θe ′ 2 ′ 2 θee e) sin 2 = (Ee −(Ee))+ 4EeEe sin (2 ) ( ( )) = 2 sin2 θe + 2 = 2 sin2 θe + 2 1− sin2 θeω ( 2) Q q( ) 2 Q 2 = q2 sin2 θe +Q2 cos2 θe2 2 . 49 Chapter 3 - Electro-Disintegration Cross Section of 16O Finally, we get √√√ ( ) vTL = −√ ρ √ θeρ+ tan2 2 2 . Similar to the calculations we performed for the transverse part, the transverse- transverse interference part results in = −1vTT 2ρ. In summary, we achieve ( ) v0 = 4E ′eEe cos2 θe 2 (3.41) v 2L = ρ , ( ) (3.42) 1 θe vT = 2ρ+ 2 √tan 2 , (3.43) ρ √√√ ( )vTL = −√ ρ+ tan2 θe2 , (3.44)2 = −1vTT 2ρ. (3.45) All of these results are in agreement with those of [Don+17]. The Mott cross section can be simplified with the ERL ( ) 2 ′ 2 ( )dσ 4α Ee dΩ′ = 4 cos 2 θe . e Mott Q 2 That is equivalent to the Mott cross section, that one can find for example in [Pov+15]. When using Eq. (3.40) we get ( ) ( ( ))2 dσ dΩ′ = ( α cos θe 2 )2 , e Mott 2E sin2( θee 2 ) which is equivalent to the Mott cross section, that one can find for example in [Don+17]. 3.10 Multipole Decomposition of the Response Functions To determine the nuclear response functions it is necessary to make some assump- tions. First of all, we assume that the inital oxygen nucleus is in the ground state J = 0. Furthermore we assume that the recoil nuclei are also in the ground state. In addition, we will restrict the consideration to the electric and Coulomb mul- tipoles up to the quadrupole contribution. Following the development in [RD89; FDM19] the response functions RK in the cms can be written in terms of Legendre polynomials Pk(cos θα) and associated Legendre polynomials P nk (cos θα) 50 3.10 Multipole Decomposition of the Response Functions ( ) R = P (cos θ ) |t |2 + |t |2 + |t |2L 0 α  C0 C1 C2 √ (3.46) √ +P1(cos θ α) 2 3|tC0||tC1| cos(δC1 − δC0) + 4 35 |tC1||tC2| cos(δC2 − δ( ) C1 ) + 10 √ P2(cos θ ) 2|t |2α  √C1 + 2 7 |tC2| + 2 5|tC0||tC2| cos(δC2 − δC0) + (cos )6 3 ( )P3 θα 5 |tC1||tC2| cos( − )+ (cos ) 18δ 2( ) C2 δC1 P4 θα 7 |tC2| , RT = P 2 20(cos θα)(|tE1| + |tE2| ) (3.47) +P1(cos 6 θα)(√ |tE1||tE2| cos(δ)E2 − δE1)5 +P2(cos θα)(−|tE1| 2 + 57 |t 2 E2| ) + 6P3(cos θα)(−√ |tE1||512 ) tE2| cos(δE2 − δE1) +P (cos θ ) − |t |24 α E2 ,  ( 7 R = P 1 √TL 1 (cos θα) 2 3|tC0||tE1| cos(δE1 − δC0) (3.48)√ − 2 35 |tC2||tE1| cos(δC2 − δE1)) (+ √6 |t 5 C1 ||tE2| cos(δC1 − δE2)√ +P 12 (cos 5 θα) 2|tC1||tE1| cos(δC1 − δE1) + 2 3)|tC0||tE2| cos(δE2 − δC0) 1√0 (+√ |tC2||tE2| cos(δ7 3 C2 − δE2) ) +P 13 (cos ) 2 3 4 θα 5 |tC2||tE1| cos(δ( C2 − δE1) +√ |tC1||tE2| cos(δ) 5 C1 − δE2) √  +P 14 (cos ) 6 3 θα 7 |tC2||tE2| cos(δC2 − δE2)  · cosφα, RTT =−RT cos(2φα), (3.49) with tC,EJ representing the reduced Coulomb and electric matrix elements and δC,EJ the phases of each multi-pole operator. Both are functions of q and ω [FDM19]. Using the Rodrigues’ Formula the Legendre Polynomials can be repre- sented as [AS74] 1 dn( 2 − 1)n Pn( x x) = 2 ! ( d ) , (3.50)nn xn m m Pmn (x) = (−1) m 1− 2 2 d Pn(x)x d . (3.51)xm In Appendix A the nuclear response functions up to octupole contributions in terms of the Legendre and the associated Legendre polynomials can be found. The nuclear response functions are also given there in terms of sine and cosine. 51 Chapter 3 - Electro-Disintegration Cross Section of 16O 3.11 Representing the Electric Matrix Elements tEJ with the S-Factor Components SEJ The differential cross section for the photo-disintegration can be established with similar calculat[ions as ]done for(the electr)o-disin(tegrat)ion cross section [FDM19] dσ M cms= α M12C pα α cms dΩcms 4πW ~c Ecms RT (γ, α), (3.52)α (γ,α) γ with Ecmsγ = ωcms = |~qcms| and th(e transve)rse nuclear response function RcmsT (γ, α). In the lab frame, where Pµlab16 = √M ,~16 0 , the invariant massW can be expressedOas O W = M (M + 2Elab16O 16O γ ). For the limit Q2 → 0, the transverse nuclear response function in electro-disinte- gration is the same as the one in photo-disintegration [FDM19]. This allows us to establish a connection between the electric matrix elements tEJ and the S-factor components SEJ . In the following the transverse nuclear response function in cms is simplified as RT . First, we use the reciprocity theorem Eq. (2.32) to represent the response function in terms of the S-factor. In the center of mass frame of the carbon-α system we have pcms = qcms = Ecms16 γ . As we have l = 0 for all initial and final particles theO reciprocity equation for the photo-disintegration reaction is σ(γ, α) = 1 |p~ cms 2 α | σ(α, γ) 2 |Ecms .γ |2 So, the differential[cross se]ction of(the α-cap)ture reaction ca be written as dσ M M Ecms ( ) = α 12C γ αdΩcms 2 cms RT . (3.53)γ ( πW ~c pα,γ) α Finally, the transverse nuclear response function [in cms ]becomes = ~c · p cms α ·W dσRT 2α · Ecms · 4π . (3.54)γ ·M cmsαM12C dΩγ (α,γ) By comparing the coefficients of equations Eq. (2.28) and Eq. (3.54), the electric matrix elements in the limit Q2 → 0 can be expressed as functions of the S-factor components: √ = √√ √ ~c · p cms W S (Ecms)e−2πηα · · E1t αE1 2 cms , (3.55)α Eγ MαM12 EcmsC α √√√√ ~c pcms cms −2πηt = · α W SE2(Eα )eE2 2 · ·α Ecms M M Ecms , (3.56)γ α 12C α where the Sommerfeld number depends on the cms energy η ≡ η(Ecmsα ). 52 CHAPTER 4 Accelerator and Experimental Setup In this chapter we will discuss the entire experimental setup for the planned measurement of the S-factor of the reaction 12C(α, γ)16O. First, we will get a brief overview of the electron accelerator – MESA. Then, we will get a broad overview of the experiment MAGIX located at MESA. For this purpose, we will take a look on all important components of MAGIX at MESA that are required for the S-factor measurement. At the end of the chapter the different phases of the planned measurements are summarized. 4.1 Mainz Energy-Recovering Superconducting Accelera- tor MAGIX Beam Dump Hydro-Møller Injector MAMBO MAGIX P2 STEAM MARC 2, 4 Cryomodules 5MeV MELBA Beam Dump MARC 1, 3, 5 Figure 4.1: Overview of the structure of MESA [Sim21b; Bec+18]. 53 Chapter 4 - Accelerator and Experimental Setup The Mainz Energy-Recovering Superconducting Accelerator (MESA) (see Figs. 4.1 and 4.2) is an electron accelerator that is currently under construction at the Jo- hannes Gutenberg University in Mainz, Germany. It will be a low-energy con- tinuous wave recirculating electron linac for various particle and nuclear physics experiments [Hug+20; Hug+17]. Figure 4.1 shows the structure of MESA. The first part of MESA is the injector. The photo-source STEAM (Small Thermalized Electron Source At Mainz) supplies a polarized or an unpolarized electron beam with an energy of 100 keV and a beam current of up to 1mA. The photo-source is followed by the low-energy beam transport system MELBA (MESA Low–energy Beam Apparatus). MELBA contains a spin manipulation system and a chopper- buncher section for longitudinal matching. This acts as a beam preparation for the normal-conducting booster linac MAMBO (Milliampere Booster) [Hug+20]. MAMBO accelerates the electrons to an energy of 5MeV. Then, the electron beam is directed into the main linac. The main linac consists of two accelera- tor units, the cryomodules MEECs (MESA Enhanced ELBE Cryomodules). The electrons are boosted up to 25MeV per cryomodule. Depending on the mode and maximum beam energy, the electrons are transported through the recirculation arcs 1-5, MARCs (MESA Arcs) 1-5. With this method, the electron beam can be boosted several times in the two MEECs [Sim21b; Led20; Hug+20; Hug+17]. MESA can be operated in two different operating modes. In the External Beam (EB) mode MESA provides a polarized beam with an energy of up to 155MeV and a current of 150µA [Hug+20; Bec+18]. For this purpose, the beam is accelerated up to 3 circulations using MARCs 1-5. With each circulation the beam gains a total energy of up to 50MeV. Once the beam has reached its final energy, it is extracted from the accelerator part and guided through the Hydro-Møller to the P2 experiment. The Hydro-Møller measures the polarization of the electron beam [Kem20]. After the P2 experiment, the beam is dumped in a dedicated beam dump [Sim21b; Hug+20; Bec+18]. In the Energy Recovering (ER) mode a polarized or an unpolarized electron beam with an energy of up to 105MeV and a current of 1mA is used for the internal target experiment – Mainz Gas Injection Target Experiment (MAGIX). For this purpose only MARC 1-3 are used and the beam will be extracted from the ac- celerator part after a maximum of 2 recirculations. Downstream of MAGIX the beam is guided back to the accelerator part with a phase shift of 180°. Due to this phase shift, the beam transfers its energy back to the cryomodules and is thereby decelerated. Up to 25MeV can be returned to the MEEC each pass with this method. After a maximum of 4 recirculations, the remaining 5MeV electron beam is stopped in the 5MeV beam dump. This energy recovery allows the high electron current of 1 MeV. In the second expansion stage of MESA, 10 mA elec- tron beam current should also be possible in ER mode [Sim21b; Led20; Hug+20]. Instead of using the energy recovery, the electron beam can also be dumped after MAGIX. For energies up to 30MeV a current of up to 1mA can be achieved. At higher energies, the beam dump can only be used if the beam current is reduced. This is necessary on the one hand because otherwise the energy demand would be too high without ER mode, and on the other hand the beam dump is not designed for such a high radiation exposure [Sim21b, section 11.2 & 13.1]. For a full description of MESA, the components and the two modes please refer to the PhD thesis [Sim21b]. For further information also refer to [Hug+20; Led20; Hug+17]. 54 4.1 Mainz Energy-Recovering Superconducting Accelerator P2 MAGIX DarkMESA Figure 4.2: Overview of the MESA hall [Sim21a] and the experiments P2 [Sor17], DarkMESA [Chr21b] and MAGIX [Sch+21]. The dashed line intends to clarify the alignment of P2 and DarkMESA. P2 and DarkMESA carry out their measurements in EB-mode. In ER mode MAGIX will carry out its measurements. Cherenkov Detector Solenoiding Supercon duct Tracking Planes beam dump Liquid Hyrdrogen Target − ized e b eam polar Vacuum Chamber Shielding Figure 4.3: Overview of the P2 experiment [Bec+18; Sor17; Ber16] 4.1.1 The P2-Experiment The P2 experiment plans to measure the weak mixing angle θW , which is also known as Weinberg angle. For this purpose, the parity-violating asymetry of the elastic electron-proton scattering is determined. Figure 4.3 shows the layout of the 55 Chapter 4 - Accelerator and Experimental Setup P2 experiment. The longitudinally polarized electron beam scatters on the liquid hydrogen H2 target. The scattered electrons are focused towards the Cherenkov detector by the P2 spectrometer magnet. To measure the scattering angle, the track of the electrons can be reconstructed by detecting them in the tracking planes. The shield located radially around the outgoing beam is used to remove the background created by bremsstrahlung or Møller scattering. After the P2 experiment the beam will be dumped. [Ber21; Kem20; Bec+18; Sor17; Ber16]. 4.1.2 The DarkMESA Experiment Veto-System Pb glass Calorimeter PbF2 Calorimeter Figure 4.4: Overview of the DarkMESA experiment [Chr21b]. The parasitic dark sector experiment DarkMESA will use the high-power beam dump of the P2 experiment as target. DarkMESA (see Fig. 4.4) was developed to detect Light Dark Matter (LDM). In the simplest model, the LDM couples to a massive vector particle, the so-called dark photon. This can potentially be generated in the P2 beam dump by a process analogous to bremsstrahlung. The dark photon then decays into a pair of dark matter particles. In the DarkMESA calorimeter, a fraction of these dark matter particles can scatter on electrons which can then be detected. The experiment is placed outside of the accelerator hall well shielded from beam-related SM particles. To get rid of any kind of remaining background, a versatile veto system is built around the calorimeter. The beam time of the DarkMESA experiment is coupled to that of P2, which means that DarkMESA can take data while P2 is operated in EB mode. In addition, DarkMESA can carry out background measurements when MESA is switched off [Chr21b; Chr21a; Chr+20a; Chr+20b; Dor+19; Dor+18]. 4.2 Mainz Gas Injection Target Experiment The Mainz Gas Injection Target Experiment (MAGIX) is a versatile fixed-target experiment, which will be operated at the new electron accelerator MESA in Mainz (see Figs. 4.2 and 4.5). One of the core components of MAGIX is the internal gas jet target [Gri+18; Gri18; Aul21] which allows the production of a directional gas 56 4.2 Mainz Gas Injection Target Experiment Jet Target Scattering Quadrupole PORT Chamber STAR Dipoles GEM-based TPC Trigger-Veto- System Shielding Figure 4.5: Overview of the MAGIX experiment. The gas jet target will be mounted in the center of the scattering chamber. A pumping station will remove the injected gas. Two identical magnetic spectrometers STAR and PORT will be able to rotate around the interaction point. The spectrometers will be connected to the vacuum of the scattering chamber. They will focus the scattered electrons with a quadrupole-dipole-dipole configuration onto the focal plane located in the GEM-based TPC. At the entrance to the TPC, the scattered electrons will pass for the first time through a vacuum termination foil. After the TPC, a veto trigger system will be mounted for triggering, timing and particle identification purposes [Sch+21]. beam through the vacuum of the scattering chamber with an areal particle density of >1018 atoms/cm2. With the combination of the low-density target and the high beam current, MAGIX will reach a luminosity of O(1035 cm−2 s−1). To determine the electron scattering kinematics with a high momentum and angular resolution, MAGIX will use two magnetic spectrometers equipped with GEM-based TPCs in the focal planes (see Fig. 4.5). This will allow to study processes with very low cross sections at a small momentum transfer. The rich physics program of MAGIX ranges from low-energy nuclear physics up to new physics searches, like [Sch+21] • Measurement of electromagnetic form factors, charge radii, e. g. proton ra- dius; • Search for particles of the dark sector [Mer+11]; • Reaction studies of astrophysical relevance, e. g. 12C(α, γ)16O; • Nuclear few-body physics experiments. In the following we will get a brief overview of the different parts of MAGIX. We will focus on the components necessary for measuring the S-factor of 12C(α, γ)16O. 57 Chapter 4 - Accelerator and Experimental Setup 4.2.1 Gas Jet Target Laval Nozzle Gas Jet Beam Catcher (a) Sketch of the gas jet nozzle and catcher principle (b) Image of the current nozzle and catcher Figure 4.6: The left sketch (a) shows the direction of the gas jet and the interaction with the electron beam. The picture on the right (b) shows the real nozzle and catcher used in the current test stand [Aul21]. The basic idea of the MAGIX target is to scatter electrons on gas that passes through the vacuum chamber without breaking it. For this purpose a thin, di- rected gas jet is generated by a Laval nozzle. Due to the hydrodynamics of the Laval nozzle, the gas becomes a directed laminar flow in the scattering chamber. This laminar flow is stable for a few millimeters. The gas jet is then sucked off by a catcher placed closly behind the nozzle. The electron beam does not pass any window which is an advantage of such a system. The background is reduced significantly in comparison to other fixed target experiments where for instance target walls are inducing multiple scattering. Figure 4.6 shows a schematic sketch of the nozzle and catcher as well as the gas jet. To ensure a constant areal particle density, the pressure and temperature in front of the nozzle and the volume flow must be controlled. In addition, the design of the Laval nozzle, especially the narrowest inner and the outlet diameter, play a decisive role. The calculations in [Gri+18] show that the stagnation conditions with the lowest temperature-pressure combination should be selected. This allows MAGIX to be carried out with a low volume flow. The MAGIX Gas-Jet Target (see Fig. 4.7) has been developed by the University of Münster, Germany. It essentially consists of a cold head in which the gas is adiabatically cooled. The cold head has two cooling stages, the warm stage can cool down to 28K and the cold stage can cool down to 8K. The nozzle is mounted directly behind the cold stage. In order to protect the cooling stages against thermal influences, the cold head is surrounded by an insulation vacuum. For a large volume flow, the pre-mounted booster stage can pre-cool the gas down to 77K. An areal particle density of >1018 atoms/cm2 is planned for the MAGIX. For hydrogen this can be achieved by cooling the gas with a gas flow of 2400L/h to 40K. Two different nozzles with an inner diameter of 0.5mm were also designed by the University of Münster, Germany. For hydrogen, an areal particle density of 5× 1018 atoms/cm2 is calculated for the nozzle with an outlet diameter of 1mm 58 4.2 Mainz Gas Injection Target Experiment 1430mm Booster Stage Cold Head Insulation Vacuum Warm Stage Cold Stage Nozzle Figure 4.7: Overview of the MAGIX gas jet target. With the cold head in combination with the booster stage hydrogen at a gas flow of 2400 l/h can be cooled down to 40K to achieve an areal particle density of >1018 atoms/cm2. In addition to hydrogen, helium, argon, oxygen, nitrogen, xenon and various other types of gas can be used. The nozzle can easily be exchanged to adapt to the respective gas. [Gri18; Gri+18; Aul21]. and an areal particle density of 2.4× 1018 atoms/cm2 with an outlet diameter of 2mm [Gri+18]. In addition to hydrogen, helium, argon, oxygen, nitrogen, xenon and various other types of gas can be used. The nozzle can easily be exchanged to adapt to the respective gas [Sch+21; Gri+18; Gri18; Aul21]. At the A1 experiment at Mainz Microtron (MAMI), the MAGIX Gas-Jet Target has been commissioned in 2018 and 2019 to carry out first experiments. During these measurements it was also possible to calculate the areal particle density. With a hydrogen flow rate of 2400 l/h at a temperature of 40K with the nozzle of 1mm outlet diameter a maximum areal particle density of 1.6× 1018 atoms/cm2 was achieved [Sch+21]. Further information on these measurements can be found in [Sch+21]. 59 Chapter 4 - Accelerator and Experimental Setup 4.2.2 STAR/PORT Spectrometer Setup Interaction PORT Point STAR Dipoles Quadrupole Focal Plane GEM based TPC Veto-Trigger- System Figure 4.8: Overview of the MAGIX spectrometer. The spectrometers are connected to the vacuum of the scattering chamber. Each of the two identical magnet-spectrometers focuses the scattered electrons with a quadrupole-dipole- dipole configuration on the focal plane. The focal plane is located in entrance of the GEM-based TPC. After the TPC, a veto trigger system is mounted for triggering, timing and particle identification purposes [Sch+21]. To detect the scattered electrons or recoiled positrons, MAGIX uses two identical, high-resolution magnetic spectrometers, called PORT and STAR (see Fig. 4.8). The spectrometers are named after the nautical terms port and starboard and are colored with their respective colors, red and green. Because of the limited height of the hall and the relatively high position of the beamline, the spectrometers had to be oriented upside down. They are mounted on opposite sides of the beam line on a system that allows the spectrometers to be rotated around a common pivot point. The adjustable angle range per spectrometer relative to the beam line is 15° to 165°. The spectrometers are connected to the scattering chamber via a sliding seal so that they share the same vacuum. This means that the scattered electrons and recoiled particles enter the spectrometer without passing through any foil. By reversing the polarity of the magnets, the particle species (electron or positron) can be selected. The quadrupole-dipole-dipole configuration of the spectrometer maps the abso- lute momentum, the scattering angles, the azimuthal angle and the vertex to the Cartesian coordinates x and y of the focal plane, and the corresponding entrance angles at the focal plane. Thus, it is possible to replace the direct measurement of these quantities with the potentially simpler position measurement in the focal plane. For this purpose a GEM-based TPC located in the focal plane is used. For 60 4.2 Mainz Gas Injection Target Experiment example, the absolute momentum is proportional to the x-coordinate in the focal plane to the first order. At the entrance of the TPC is the first vacuum foil, which the particles must pass. With this setup, MAGIX will be able to determine the scattering parameters with high resolution. Due to the small material budget, effects such as multiple scat- tering will be reduced to a minimum. From the three-dimensional reconstructed track of the TPC in combination with the trigger, timing and particle information of the trigger veto system, the scattering parameters such as momentum, polar and azimuthal angles, and interaction point can be determined with high precis- sion. The goal is to achieve a relative momentum resolution of ∆p < 10−4 and an p angular resolution of ∆Θ < 0.05° [Sch+21; Sch21]. Time Projection Chamber In the focal plane of each spectrometer, the electrons or positrons can be detected with a Time Projection Chamber (TPC). Figure 4.9 illustrates the working prin- ciple of a TPC. When a charged particle passes through the active gas volume of the TPC, the counting gas is ionized. The free electrons drift along the external electric field towards the amplification stage, where several Gas Electron Multi- pliers (GEMs) are located. The x- and z-coordinates of the electrons read out at the pad plane anode represent the projected coordinates of the particle track. Using the information of the drift time ∆ti = ti − t0, with ti time of detection and t0 trigger time, the y-coordinate of the track can be calculated. Thus, a 3D track of the traversing particle can be reconstructed. To minimize the material budget, the MAGIX TPC is designed with a novel open field cage concept. For more information please refer to the doctoral thesis of P.Gülker [Gül21]. y Electric Field x z t1 = t0 + ∆t1 tn = t0 + ∆tn t0: Trigger Figure 4.9: Schematic principle of a TPC. The green block illustrates the tra- jectory of an electron-ion pair. The ion drifts along the homogeneous electric field to the cathode while the electron drifts to the anode. Each electron gen- erates a signal after the time ti = t0 + ∆ti with trigger time t0 and drift time ∆ti. The electrons are amplified in each GEM layer. The pad plane anode can be used to read the signal and determine the x and z coordinate. The drift time corresponds to the y coordinate. 61 Drift-Cathode Particle Track GEM 1 GEM 2 GEM 3 Pad Plane-Anode Chapter 4 - Accelerator and Experimental Setup Trigger Veto System The trigger veto system of each sprectrometer (see Figs. 4.10 and 4.12a) consists of one layer of segmented plastic scintillator detectors (trigger layer) followed by several layers of additional scintillation detectors (veto layers) with lead absorbers in between. The trigger layer at the top of the system is used for fast time and energy loss measurements. Through its segmentation, it provides the basic hit and position measurement used to trigger the readout of the TPC. The cross section of the segments of the trigger layer is diamond-shaped at an angle of 60°. This results in an overlap in the electron direction. The maximum track divergence for the scattered electrons is 10°, therefore it is ensured that every particle in the trigger layer is detected (see Fig. 4.10) [Ste21a; Ste21b] Figure 4.10: The current 3D concept of the trigger veto system. The cross sections of the segments of the trigger layer are diamond-shaped. Figure 4.11: Schematic view of the cross section of the diamond-shaped seg- mented trigger layer. Because of the special upside down design of the spectrometers, a more complex trigger veto system is required. The challenge is to separate the scattered electrons and cosmic muons as they point in the same direction. Beam-induced neutrons can also produce signals in the scintillating layers. All of these particles leave characteristic signatures in the trigger veto system (see Figs. 4.12b to 4.12d) that allow them to be distinguished. The electrons generate signals in the trigger layer T and the first veto layer V1. The electrons and electron-induced electromagnetic showers are stopped in the absorber which extremely reduces the probability of obtaining an electron-induced signal in veto layers 2 and 3. Unlike electrons, muons pass through the absorbers and thus generate a signal in the scintillator 62 4.2 Mainz Gas Injection Target Experiment layers V2 and V3. Therfore, we can distinguish between electrons and muons using the Signal V2&V3 as a muon veto. The beam-induced neutrons do not have a specific direction, they usually produce a signal in only one scintillator layer. The probability that a neutron will produce a signal in both layers T and V1, or that a random coincidence will occur, is low [Ste21a; Ste21b]. Muon Electron Electron Trigger T Trigger T Veto V1 Veto V1 Lead Shield Lead Shield . . Neutron . . . . . . . . . . . . Veto V2 Veto V2 Lead Shield Lead Shield Veto V3 Veto V3 Electromagnetic Showers Electromagnetic Showers (a) Veto Trigger System (b) Electron Signature Muon Trigger T Trigger T Veto V1 Veto V1 Lead Shield Lead Shield . . . Neutron . . . . . . . . . . . Veto V2 Veto V2 Lead Shield Lead Shield Veto V3 Veto V3 (c) Muon Signature (d) Neutron Signature Figure 4.12: Schematic diagram of the MAGIX trigger veto system [Ste21a]. Figure (a) shows the detector setup with all types of particles passing through the detector system. Figures (b)-(d) show the different detector signatures for the different types of particles expected at MAGIX [Ste21a]. 4.2.3 Silicon Strip Recoil Detector Array For some of the reactions that will be studied at MAGIX it is necessary to de- tect the recoil particles as well as the scattered electrons. In order to detect the various low energy heavy charged recoil particles, such as protons, deuterons or α-particles, MAGIX needs a further detector system in addition to the spectrom- eters. For this purpose, a silicon strip detector array will be used. It consists of several silicon strip detectors mounted inside the scattering chamber at a distance of about 30 cm from the interaction point. Each individual silicon strip detec- tor can be rotated independently around a common pivot point [Gei21a; Gei21b; Gei20]. 63 Chapter 4 - Accelerator and Experimental Setup Figure 4.13: Prototype of the silicon strip detector inside a test chamber. The cooling element is attached to the back of the X1 detector. The readout electronics is connected to the bottom of the detector. The APV25-S1 front- end chip is located at the front of the electronics [Gei20]. The detector array is in development. Currently, the X1 silicon strip detector from Micron Semiconductor Limited is being tested. The active area of the de- tector is 50× 50 mm2 and consists of a 995 µm thick silicon substrate. On the back side, the substrate is covered with an aluminum layer. 16 p-doped silicon stripes with a width of b = 3 mm are embedded in the n-doped substrate. Those have no entrance window, so, the low-energy charged heavy particles do not lose energy before depositing their energy in the substrate. The X1 is mounted on a holder which contains a cooling element, actively cooled by circulating ethanol (see Fig. 4.13). Since the dark current of the silicon strip detector is extremly temperature dependent, the signal to noise ratio will be optimized by cooling the detector down to −20 ◦C. So, for example, α-particles with a kinetic energy of 300 keV can be detected. The readout of the detectors is based on the APV25-S1 frontend chip [Gei21a; Gei20]. The silicon strip detector is a semiconductor detector. Its working principle is illustrated in Fig. 4.14. In addition to the classical pn-junction a further, more heavily n-doped layer, called n+, is added to semiconductor detectors. This en- larges the space-charge region, which forms the sensitive area of the detector. The detector is operated via external voltage in the reverse direction. If a charged par- ticle hits the space charge region of the detector, electron-hole pairs are produced. The holes drift along the external applied field to the stripes where the position will be detected representativly for the incoming particle. With the APV, the generated signal charge can be read out on both sides of each stripe. Due to the charge asymmetry, the y-position along the stripes can be determined. The 64 4.2 Mainz Gas Injection Target Experiment - b p p+ z n y + x n Al (a) Cross section of the silicon strip detector across the stripes. The 16 p-doped stripes have a width b and a distance p to each other. The spatial resolution in x-direction is σx = √b12 . Q l Qup−Qdowndown y = 2 · Q +Q Qup down up l p+ z n y n+x Al (b) Cross section of the silicon strip detector along the stripes. The produced signal charge is measured for each stripe at both ends. Due to the charge asymmetry, the position along the y-direction can be determined. Figure 4.14: Schematic representation of the working principle of the silicon strip detector. When a charged particle hits the space charge region of the sub- strate, electron-hole pairs are produced. The electron drifts along the applied external field to the anode, whereas the hole drifts to the stripes. [Gei20]. segmentation into stripes of equal width b results in a discrete resolution in the x-direction. The spatial resolution is σ = √bx 12 . To start data acquisition, the APV needs a trigger signal. Since most particles are stopped in the detector, no additional detector can be used to generate the required trigger signal. A novel frontend-board has been developed by the MAGIX group to obtain this timing information from the electrons that are generated simultaneously with the holes and drift to the anode. The board amplifies the electrons and passes them to the APV as a trigger signal [Gei20; Gei21a]. 4.2.4 Zero Degree Tagger – FORE In a later phase of the MAGIX program, another electron detector, the beam-line integrated Zero Degree Tagger (ZDT), will be available. This detector is designed to measure electrons scattered at an angle of less than 0.5° in the forward direction. The planning of this detector has begun and in this section we will only get a basic 65 Chapter 4 - Accelerator and Experimental Setup idea of this detector. The project name of this detector is FORE, like the nautical term for forward, analogous to the two spectrometers. The idea is to use the first dipole magnet in the beam-line after MAGIX to focus the scattered electrons based on their energy on a plane. A detector system located in this area, not yet further defined, will then measure these electrons, in particular to determine their energy (see Fig. 4.15). For this purpose a special design of the dipole magnet is necessary. To ensure that all the requirements in the planning process are taken into account the MAGIX group is working closely with the MESA accelerator group. According to current plans, the magnet will have a deflection angle of 45° to guide the unscattered electrons back to the cryomodules [Led20; Sim21b]. Since the magnetic field cannot be adjusted as desired, the measuring range of this detector is restricted by a fixed reaction and beam energy. However, by reducing the beam energy, different energy ranges can be measured. In inelastic reactions, the energy of the scattered electrons is significantly lower than the beam energy. This makes it possible to separate the scattered electrons from the beam and detect them in the ZDT. For example, in the reaction 16O(e, e′α)12C, to split 16O into 12C and α, the energy transfer ω must be greater than 7.16MeV (see Table B.5). The electrons involved in this reaction therefore lose at least 7.16MeV and can thus be separated from the beam and measured in the ZDT. Figure 4.15: Schematic representation of the zero degree tagger for MAGIX. The first deflection magnet is used to focus the electrons onto a plane where a detector system will measure them. The red area is to represent a scattering plane to show the area of the ZDT. 4.3 S-Factor Measurement at MAGIX A general overview of the electro-disintegration experiment is given in Section 2.3.2. In this section, we will discuss the planned measurement of the electro-disintegra- tion reaction 16O(e, e′α)12C at MAGIX. First, we will discuss the general setup 66 4.3 S-Factor Measurement at MAGIX and show how the various challenges of this measurement will be solved. This particular experiment will be performed in three stages. At the end of this sec- tion, these different stages, their improvements, and their planned measurement ranges will be discussed. 4.3.1 Discussion of Electro-Disintegration Experiment To determine the S-factor of the reaction 12C(α, γ)16O, MAGIX will measure the cross section of the electro-disintegration reaction 16O(e, e′α)12C. Therefore, electrons will scatter on an oxygen gas jet. The scattered electrons will either be measured at the MAGIX spectrometers or at the zero degree tagger in co- incidence with the recoiled α-particle. The α-particle will be detected with the silicon strip detector array. The four-momentum of the virtual photons qµ and the center-of-mass energy W will be calculated by measuring the four-momentum of the scattered electron. With the measured count rate Ṅ the cross section of the electro-disintgration reaction Eq. (3.39) can be determined using the formula [Pov+15] Ṅ = σ · L, where the quantity L represents the luminosity. The luminosity describes the number of particle collisions per area per time. For a linear accelerator the lumi- nosity can be calculated using the equation [Pov+15] L = Ṅa · ρb, with the number of incoming beam particles per time Ṅa and the areal particle density of the target ρb. For an electron accelerator we have Ṅ = Ia with thee beam current I and the elementary charge e. The areal particle density of the oxygen gas jet will be about 2× 1018 atoms/cm2. So, with a beam current of 1mA the luminosity is around 1.25× 1034 cm−2 s−1. Since both the jet current and the gas density are not constant, the luminosity is monitored in the final experiment. One problem of the electro-disintegration technique is the contamination of the oxygen gas with 17O, 18O and 14N. As discussed in [FDM19] the cross sections of the reaction 17O(e, e′α)13C, 18O(e, e′α)14C, and 14N(e, e′p)13C are several orders of magnitude larger than the cross section of the reaction 16O(e, e′α)12C close to the Gamow peak. However, Friščić, Donnelly, and Milner also showed that by measuring the kinetic energy of the recoil particles and using the Time of Flight (ToF) information, the particles can be assigned to the corresponding reactions. Thus, an appropriate filter can be used in the analysis to eliminate the back- ground created by this contamination. For this purpose, a minimum distance of 30 cm between the silicon strip detectors and the interaction point is recommended [FDM19]. One advantage in the MAGIX setup is, that neither the electrons nor the α- particles pass any windows before they are detected by their individual detector. This allows to calculate the cms energy and the angular distribution very accu- rately. With the silicon strip detector array, we can measure the cross section for many different angles of the α-particles. This allows us to determine the longitu- dinal, transverse, and interference terms and, in particular, the multipolarities E1 and E2 very accurately. The ground-state transition cross sections σE1 and σE2 are then analyzed using the R-matrix method and the S-factor at the Gamow peak is extrapolated. Due to its high luminosity, low background and high accuracy in determining the parameters, MAGIX is an excellent experiment for determining the S-factor close to the Gamow peak. 67 Chapter 4 - Accelerator and Experimental Setup 4.3.2 Discussion of the Planned Extension Stages The experiment is performed in three successive phases. The phases are numbered, starting with number zero. In Phase 0, the MAGIX target is used at Mainz Microtron (MAMI) in Mainz, Germany. In this phase, the target system and the silicon strip detector array are tested. In addition, this phase will be used to verify the theory. Phase 1 will take place when MAGIX is commissioned at MESA. After some further testing, the S-factor measurement will be performed. Phase 2 will begin after MAGIX is expanded by the ZDT. At each stage, the aim is to improve the already achieved results. In the following, we will discuss these phases in detail. Phase 0: MAGIX@MAMI In Phase 0 we will use the MAGIX target adapted to the A1-experiment at the existing accelerator MAMI in Mainz, Germany. The electron beam will have an energy of E0 = 195 MeV and a current of I = 100 µA. The scattered electrons will be detected by one of the A1-spectrometers and the recoiled α-particle will be detected by several silicon strip detectors. These will be mounted around the interaction point at a fixed angle and a distance of around 30 cm (see Fig. 4.16). The arrangement of the silicon strip detectors will be optimized to measure the E1 ground state transition, as discussed in Section 2.3.1. Since the scattering chamber at A1 is smaller than the final one at MAGIX, only a few silicon strip detectors can be installed in the chamber. Preparations for this phase have only just begun. According to current planning, the phase is to be carried out between 2022 and 2023. In this phase, MAGIX will determine the S-factor for cms energies in the well know region of 1.7MeV to 2.7MeV. The goal of this phase is to test the crucial parts of the setup as well as the reconstruction and analysis of the data. The results will be compared to the well-known existing data in this parameter range. Thus, we can test the theory of electro-disintegration and make a first contribution to the global S-factor data. In addition, we can determine the longitudinal as well as the two interference terms in this paramter range. This will allow us to improve the simulation and optimize the setup for the α-particle detectors in the next phases. Phase 1: MAGIX@MESA The Phase 1 can begin after MAGIX is commissioned at MESA. The electron beam will have an energy of E0 = 25− 105 MeV with a current of I = 1 mA. We will detect the scattered electrons with the high resolution spectrometers and the α-particles with the full size silicon strip detector array. The spectrometers will be placed at the lowest possible angle of around 15°. Each silicon strip detector can individually rotate around the interaction point. Thus, we can choose different angular arrangements to optimize the determination of the E1 and E2 ground state transition. An example of the experimental setup can be found in Fig. 4.16. With this setup, MAGIX will be able to perform the multipole expansion of the cross section of the reaction 16O(γ, α)12C to determine the S-factor for the E1 and E2 contributions. According to current planning, the Phase 1 is to be carried out between 2023 and 2026. The goal of this phase is to determine the S-factor in the cms energy range above 0.9 MeV with high precision. For this purpose, we will determine the longitudinal, transverse, and both interference terms in the known range above 0.9 MeV with 68 4.3 S-Factor Measurement at MAGIX Spectrometer Silicon Strip Detector Array Interaction Point Electron Beam Figure 4.16: Schematic view of the experimental setup for Phase 0 and Phase 1. In both phases the scattered electrons will be detected by a spectrometer while the α-particles will be detected by the silicon strip detector array. The single silicon strip detectors will be mounted inside the scattering chamber around the interaction point. high accuracy. In addition, we will improve the analysis software and also include a Monte Carlo simulation to extrapolate the S-factor to the Gamow peak and determine the errors. For data analysis, we will use the R-matrix method. This phase will also be used to calibrate the detectors and prepare for the Phase 2. Phase 2: MAGIX@MESA including Zero Degree Tagger In Phase 2 we will detect the electrons with the ZDT instead of using the spec- trometers. The electron beam will have an energy of E0 = 25 − 105 MeV with a current of I = 1 mA. The cross section Eq. (3.39) is proportional to the Mott cross section, which can be written using Extr(em)e Relativistic Limit (ERL) as α2 cos2 (θ= 2σMott ) . 4E2 sin4 θe 2 To increase the measured cross section there are two possible parameters we can change in the experimental setup. Decreasing the beam energy is limited to E0 = 10 MeV and at those energies the cross section will increase by a factor of about 100. If we use the beam integrated zero degree tagger to detect the scattered electron with scattering angles below 0.5° we can further increase the measured cross section with a factor of around 106. But we have to keep in mind, that in this parameter range the ERL cannot be used. Therefore, the cross sec- tion and all included quantities need to be used in general form as derived in 69 Chapter 4 - Accelerator and Experimental Setup Chapter 3. The associated analysis and also the simulation must be adapted ac- cordingly. However, a major advantage at this point is that for such small angles of the scattered electrons, it is not necessary to measure the angle and we can integrate directly over the angular acceptance of the ZDT. According to current planning, the Phase 2 will be carried out between 2026 and 2032. Since the electrons are scattered with an angle close to 0° the carbon-α system is boosted nearly in forward direction. This simplifies the experimental setup, since the silicon strip detectors can be arranged symmetrically on both sides of the beamline. Thus, also the determination of the multipolarities E1 and E2 is simplified. With this experimental setup MAGIX plans to determine the S-factor in the so far unknown cms energy area below 0.9MeV. However, the cross section of the 12C(α, γ)16O decreases by one order of magnitude per 0.1MeV step for cms energies below 1MeV. Even though the cross section is roughly 106 larger than the cross section of Phase 1 it is still challenging to determine the S-factor at the Gamow peak. Another advantage is that the longitudinal and both interference terms are very small for small Q2, so the transverse part can be extracted more easily. In order to determine the possible parameter range that MAGIX can access to determine the S-factor of the reaction 12C(α, γ)16O, a Monte Carlo simulation was performed. The results of this simulation for phases 1 and 2 are discussed in Chapter 6. Zero Degree Tagger Silicon Strip Detector Array Interaction Point Electron Beam Figure 4.17: Schematic view of the experimental setup for Phase 2. The scat- tered electrons will be detected by the zero degree tagger while the α-particles will be detected by the silicon strip detector array inside of the scattering cham- ber. 70 CHAPTER 5 Development of the MAGIX Slow Control System As mentioned in the previous chapter, some of the MAGIX components exist and initial tests are being performed in different environments. For example, the cur- rent TPC and one silicon strip detector are being tested in their respective test stands. Since a common control software is needed for all these components, the development of a MAGIX Slow Control System (MXSlowControl) was necessary. One goal of this thesis was the development of a basic version of the MXSlow- Control system which will be used for MAGIX at MESA. The development is in progress as new devices constantly will be added to the experimental setup. So far, most of the components used by MAGIX are controlled by MXSlowControl. In this chapter we will discuss major parts of the MXSlowControl system, starting with the basic requirements for such a system. Then we will review the base software for MXSlowControl: EPICS. After a review of the community modules, an introduction to the development of MXSlowControl will follow, in particular to the modules created in the context of this thesis. At the end of the chapter, an example of the setup for a test stand for the silicon strip detector is given. 5.1 Requirements for a Slow Control System Before looking at the requirements for the MAGIX slow control system it is nec- essary to understand the difference between a slow control software and a data acquisition for an experiment. Naively, you can separate both terms by looking at the data rate and the amount of data. The data acquisition rate of the detec- tors used by MAGIX is in the range of several kHz or MHz [Sch21]. This means that a high amount of data must be written to a hard disk in a short amount of time. In contrast, it is not necessary to read or write control parameters such as supplemental voltage, pressure, flow rate, etc. at such high rates. In a run- ning measurement, most of these parameters remain more or less constant or are accessed only in specific time rates in the order of a few Hz. The associated com- munication effort and also the amount of data for slow control is therefore several orders of magnitude smaller than for data acquisition. 71 Chapter 5 - Development of the MAGIX Slow Control System Based on the over 40 years of experience with the MAMI accelerator and ex- periments performed there, we are able to prepare a list of requirements for the MAGIX slow control. First of all, it is necessary to separate the system, and thus the software, into smaller parts. Each of these parts have to run independently and control its own devices. Communication between these decentralized parts and with a Graphical User Interface (GUI) is necessary. This ensures the stabil- ity of the system, as tasks can be distributed among several computers and the failure of one subsystem does not directly affect the entire system. In addition, it is desirable that the slow control systems of the accelerator and the experiments can communicate with each other. For example, the system of the experiments should be able to monitor and archive relevant accelerator data. Furthermore, easy integration of new devices and replacement of damaged devices must be possible without large programming effort. To control all parameters one GUI for the entire control system is needed. However, instead of having only one access to the system, both, the slow control and the GUI, must be accessible from the whole experimental area. The slow control system must allow the setting of various system states, especially the configuration of connected devices. There must also be a secure alarm system that allows automatic response to time-critical errors. In order to perform highly precise experiments, all parameters must also be properly archived so that the analysis can reproduce the system state of the available data at any time. Although almost all devices are delivered with their own software, this is not used in the final experiment. Even with a small number of different devices, the con- trol and readout of the devices becomes confusing. In addition, communication between the devices is usually not possible, which would pose a risk to the exper- iment. For example, if the pressure in the scattering chamber increases too much, the system must be able to close the corresponding valves automatically. One possibility is to implement a custom-made slow control. This has the ad- vantage that it can be perfectly tailored to the needs of the experiment. The disadvantage is that it is then the responsibility of the developer to ensure the long-term support. Alternatively, an already existing and well tested slow control system can be used. One of these is EPICS. As part of a bachelor thesis, a feasi- bility study was performed to investigate the advantages of an EPICS based slow control system for MAGIX [Emi17]. Based on the results of the investigation and the fact that both P2 and MESA will use an EPICS based slow control system, it was decided to also use EPICS as basis. 5.2 Experimental Physics and Industrial Control System Experimental Physics and Industrial Control System (EPICS) is a decentralized, slow control system. This means that the servers and clients involved run inde- pendently of each other and communicate via a common network. It is a control system architecture supported by a huge international collaboration. It was de- veloped by the collaboration of the Argonne National Laboratory, the Los Alamos National Laboratory, and other Departments of Energy Laboratories [EPICS21; APS04]. Due to the modular concept of EPICS, many groups worldwide work on different software toolkits and make them available to other users via the commu- nity. These can easily be installed to extend the base EPICS version. In addition to the software modules, many device drivers are also offered on the EPICS home- page, with which a device can directly be integrated into EPICS. Furthermore, 72 5.2 Experimental Physics and Industrial Control System some manufacturers already provide their own EPICS drivers for their devices. This allows EPICS to be adapted very flexibly to different experiments. In this section, we will discuss the principle of the EPICS-BASE system and how the various components work. We start with the Input-Output-Controller (IOC), which is the main program of EPICS. It handles all communication with the connected devices and provides all control parameters over the network. The core of the network communication is the communication protocol Channel Access (CA). Next, we discuss the CA client (CAC), which can write, read, and monitor data from the IOCs. At the end of this section, we will get a detailed explanation on how the channel access communication protocol works. For more information about EPICS please refer to [EPICS21; APS04]. 5.2.1 Input-Output-Controller The main process of EPICS is the Input-Output-Controller (IOC). Each IOC can be divided into three different major software components, the CA server (CAS), the database (DB) and the Device Support (see Fig. 5.1) [B3.14; APS04]. Processes run in the background to perform the individual tasks of the three components and enable the communication between them. After executing the IOC process the IOC shell opens. In the IOC shell the Database and Device Support needs to be configured before the CA server can be started. Network IOC Channel Access Server Database Device/Driver Support I/O Hardware Figure 5.1: Overview of the major sotware components of an IOC. The CA server provides process variables over the network. The database is a collec- tion of EPICS records to collect, process and distribute data. The device or driver support is the interface between the database and the hardware. [APS04; B3.14]. Database The database is a purely IOC-internal software module that, as the name suggests, contains the data objects. The data objects are called records in EPICS. Each record is of a specific type and can be identified by its unique name. Typical types are [B3.14] • analog input (ai): used for reading double values from devices • analog output (ao): used for writing double values to devices • long input (longin): used for reading long values from devices • long output (longout): used for writing long values to devices 73 Chapter 5 - Development of the MAGIX Slow Control System • bool input (bi): used for reading bool values from devices • bool output (bo): used for writing bool values to devices • calculation record (calc): calculates a value from one or multiple other records • calc out (calcout): calculates a value from one or multiple other records and writes this value to a device Depending on the type, records have different properties, called fields. How a record type is structured and what tasks it can perform is specified in the database definition file (DBD). EPICS base contains a number of predefined types. These can be modified, or completely new types can be created. Typical record fields are [B3.14] • NAME: Unique name of the record • DESC: Contains a human readable description of the record • TIME: Timestamp of the record • VAL: Value of the record • EGU: Engineering units of the value • SCAN: Periodic time interval to automatically process the record • INP: Input specification for Device Support • OUT: Output specification for Device Support Each record is an active object. The tasks provided are reading or writing data to other records or devices, checking the range of values, issuing a warning, and so on [APS04]. The scope of the tasks depends on the type of the record. For more information on record types and the assigned fields please refer to the Record Reference Manual at [B3.14]. The database is configured via different text files, with the format ending .db. It is common to create a separate db file for different devices. The db files can be loaded with different patterns. Thus, one db file is sufficient for identical devices. These can then simply be loaded with different parameters. There are multiple IOC commands to load a specific db file. In code 5.1 an example is given how a db file can be loaded with different patterns in the IOC shell. Further possibilities for loading db files will be discussed in Section 5.5.8. Code 5.2 shows an extract from the devMPT200.db file. Here a calc record named $(P)$(NR)Pressure is defined and some properties (fields) are set. The CALC field specifies how the raw value is converted to mbar. With the patterns of code 5.1 the calc record will be loaded two times with the unique names MPT200:0:Pressure and MPT200:1:Pressure. Code 5.1: IOC shell example. The db file "devMPT200.db" is loaded with different patterns using the IOC shell command dbLoadRecords. # Load database for two MPT200 with different configuration pattern dbLoadRecords("$MXSlowControl/db/devMPT200.db","P=MPT200,␣NR=0,␣BUS=ttyUSB0") dbLoadRecords("$MXSlowControl/db/devMPT200.db","P=MPT200,␣NR=1,␣BUS=ttyUSB1") The database is responsible for collecting, processing and distributing the informa- tion for all loaded records. For this purpose, it distributes these tasks to different processes depending on the configuration. In addition, it serves as an interface 74 5.2 Experimental Physics and Industrial Control System Code 5.2: Example of a calc record. The input values are from the record $(P):$(NR):GetPressureRaw in U_Expo_New format [MPT200]. The CALC field specifies the conversion from the raw value into mbar. The SCAN field with the value Passive defines, that the calculation is performed by an external trigger. In this case the record $(P):$(NR):GetPressureRaw will trigger the calculation each time its value changes. record(calc, "$(P):$(NR):Pressure") { field(DESC, "Pressure␣in␣mbar;␣device␣$(BUS)") field(INPA, "$(P):$(NR):GetPressureRaw") field(CALC, "FLOOR(A/100)∗10^(A%100−23)") field(SCAN, "Passive") field(EGU, "mbar") field(PREC, 7) field(HOPR, 2e+3) field(LOPR, 1e−5) } and toolkit for creating an individually configured IOC that performs the required tasks. The database enables the other software modules to access all process in- formation. To read and write data from devices, the database (records) makes the appropriate requests to device support [B3.14; APS04]. The Device Support Interface Device support, also called driver support, is the interface between the database and the input/output hardware. Any device that can be connected via USB, se- rial port, network, etc. can be addressed with the device support. To add new devices to EPICS, the driver for that device must be written in C or C++. This driver can be loaded into EPICS using the device support interface. Code 5.3 shows an example of such an interface. The C++ struct devSIDET_ai is ex- ported to EPICS and can be accessed with the device support module. In this example two functions init_recordSIDET and read_aiSIDET have to be defined. The init_recordSIDET function is executed by each record associated with the SIDET device. This is performed during the initialization of the database prior to any other processes getting started. This allows loading and configuring the device driver. After all records are initialized, the database starts collecting data. Thereby the device support executes the function read_aiSIDET every time a record requests data from the device. In addition to the device driver, the init_recordSIDET and read_aiSIDET functions must also be written in C or C++ by the user. A major advantage of using EPICS is that the EPICS community provides some modules to simplify the integration of new devices. In addition, a large number of device supports for various devices are already available on the EPICS home page [EPICS21]. Those can easily be installed and used to control new devices. The communication structure for devices is often the same, thus a new device can be included by adjusting the device support appropriately [B3.14; EPICS21; APS04]. CA Server The CA server (CAS) is the interface between the database and the network. The record names are combined with its associated field names to form an indi- vidual identification string called Process Variable (PV). For example, with the configuration code 5.1 and the record code 5.2, the PVs MPT200:0:Pressure, 75 Chapter 5 - Development of the MAGIX Slow Control System Code 5.3: Example of a Device Support C interface. The C++ struct devSIDET_ai is exported, so that EPICS can access it. The function init_recordSIDET is executed from the database during the initialization of the record. To read a value from the device the function read_aiSIDET is executed from the Device Support [B3.14]. 1 #inc lude " devSup . h " 2 #inc lude " aiRecord . h " 3 #inc lude " ep icsExport . h " 4 5 extern long init_recordSIDET ( s t r u c t aiRecord ∗ pai ) ; 6 extern long read_aiSIDET( s t r u c t aiRecord ∗ pai ) ; 7 8 s t r u c t { 9 long number ; 10 DEVSUPFUN repor t ; 11 DEVSUPFUN i n i t ; 12 DEVSUPFUN in i t_reco rd ; 13 DEVSUPFUN get_io in t_in fo ; 14 DEVSUPFUN read ; 15 DEVSUPFUN spec i a l_ l i n conv ; 16 } devSIDET_ai = { 17 6 , 18 NULL, 19 NULL, 20 init_recordSIDET , 21 NULL, 22 read_aiSIDET , 23 NULL 24 } ; 25 26 epicsExportAddress ( dset , devSIDET_ai ) ; MPT200:0:Pressure.DESC, MPT200:0:Pressure.EGU, . . . are created. The CA server provides access to all PVs via the network. However, this implies that a record name may not be assigned twice within the same subnet [B3.14]. 5.2.2 CA Client A CA client (CAC) is a program that accesses the process variables of a CA server. A client may connect to several CASs to write, read, or monitor data from PVs. Since it may be necessary for a record to request information from records loaded for processing in another IOC, each IOC may also contain a CA client. EPICS base is supplied with three different CAC programs [B3.14]: caput: write a value to one PV. Example: caput PV0 4.2, sets the value of PV0 to 4.2. caget: read a value of one PV. Example: caget PV0, returns the value of PV0. camonitor: monitors the values of one or more PVs. Whenever the value of one of the PVs changes, the new value is sent to the CA client camonitor together with a timestamp. Example camonitor PV0 PV1 PV2, monitors the value of PVs PV0, PV1, and PV2. In addition, each GUI like CSS or archiver is a CA client application. EPICS also provides libraries to access the channel access and thus the PVs of the IOC via Python scripts or C++ programs. All these programs are then also considered as CA client processes. The application fields of a CA client can be designed very 76 5.2 Experimental Physics and Industrial Control System flexibly and adapted to the requirements. Figure 5.2 shows an overview of the task distribution of the IOCs and CA clients in an experimental setup. IOC CA Client IOC CA Client IOC CA Client Channel Access Network IOC Channel Access Server Channel Access Client Network Attached provides Process Variables (PVs) • Write, read and monitor data of PVs of a CA server (IOC) Devices • Can connect to several CA servers Database • Client program examples • Application specific – caput, caget and camonitor • Collection of EPICS records of various types – GUI (e. g. CS-Studio) – Archiver • Collect, process and distribute – Python, C++data , . . . Device/Driver Support Interface between Database and I/O Hardware Hardware Figure 5.2: Overview of the task distribution for the Input-Output-Controller (IOC) and the CA clients (CACs). An IOC always contains a CA server, but can also include CA client processes. 5.2.3 The Channel Access Communication Protocol Channel Access (CA) is the communication protocol of EPICS. This enables the CA clients to communicate with the CA servers. Channel access is based on the two network protocols User Datagram Protocol (UDP) and Transmission Control Protocol (TCP). Figure 5.3 shows an overview of the CA’s working principle. If a CA client application wants to access a process variable, the IOC providing this information must first be determined. The CA client sends a UDP broadcast request to the subnet asking which IOC contains a particular PV. The correspond- ing IOC responds via UDP. The client then opens a TCP connection to the IOC which is used for further communication. If only one value is requested or set, as in the case of caget or caput, the TCP connection is subsequently terminated. In the case of a monitoring request, as from camonitor, the connection is held. The IOC creates a callback function for each monitored PV, which forwards the value change of a PV directly to the client(s) [B3.14]. 77 Chapter 5 - Development of the MAGIX Slow Control System 1. UDP Broadcast Request: Python Archiver CSS Who provides the PV "PV1"?Script 2. UDP Reply: I do! CA Client CA Client CA Client 3. TCP Connection: Let’s talk! Channel Access Network CA Server CA Server CA Client CA Server CA Client Network Attached IOC 1 IOC 2 IOC 3 Devices PV1 PVs PVs PV2 PV3 . . . Figure 5.3: Overview of the channel access process. A client starts a search request for each PV, to find its server via UDP. After identifying the CA Server the following communication is done via TCP. 5.3 Community Modules As mentioned earlier, there is a long list of modules provided by the EPICS collaboration and community to add further functionalities to the base version of EPICS. In this section, we will discuss some of these modules and highlight the benefits and, to some extent, the need for them. We will limit our discussion to the modules that are necessary for MXSlowControl. 5.3.1 The Asyn Module Most devices can be controlled via low-level communication. This means that only a socket has to be configured. By using simple byte streams the control commands are written to the device via the socket. The devices process the commands and eventually send a feedback to the socket. This is where the asyn- Driver module comes into place. It provides a low-level driver interface that han- dles the communication with the devices. For this purpose IOC shell commands are implemented to configure the communication port of the devices. Code 5.4 shows an example of such a configuration. In addition, a set of asyn records is created to provide generic access to a device port. The asynDriver module han- dles all defined port accesses. For diagnostics, asyn provides a logging function that allows the output of error messages down to the entire byte stream, called trace [ASYN21]. Since communication is handled by asynDriver, this simplifies the implementation of new devices. Users only need to include the device-specific code in the device support and specify how the response is processed. Code 5.4: Example for an asynDriver configuration of a serial port. The device /dev/MPT200 is loaded with asynDriver and stored under the port name L0. Then the baud rate, data word length, parity and stop bit are configured for this port. # Set up ASYN ports # drvAsynSerialPortConfigure port ipInfo priority noAutoconnect noProcessEos drvAsynSerialPortConfigure("L0","/dev/MPT200",0,0,0) asynSetOption("L0", −1, "baud", "9600") asynSetOption("L0", −1, "bits", "8") asynSetOption("L0", −1, "parity", "no") asynSetOption("L0", −1, "stop", "1") 78 5.3 Community Modules 5.3.2 The StreamDevice Module A supplement for asynDriver is the StreamDevice module, which is a generic device support that implements a string stream communication interface. StreamDevice allows to include devices without recompiling the slow control system. For this purpose, StreamDevice is configured with so called protocol files that describe the communication with a device. The protocol files include one protocol for each function of the device, where the device-specific commands are defined in ASCII code. The string stream can be formatted and values can be passed using format converters similar to the C functions printf and scanf. An example of a protocol file and the corresponding record can be found in code 5.5. StreamDevice can be used for all devices that provide a simple string stream communication. To adapt StreamDevice to specific needs, it can be expanded with further format converters. If a device can not be addressed with asynDriver, StreamDevice can also be extended with further bus drivers via the StreamDevice BUS Application Programming Interface [SDev21; SDev2.8]. Code 5.5: Example of a protocol and the corresponding record. The record file devMPT200.db is loaded into the IOC memory with the given pattern. As in code 5.4 defined LO is refered to the serial port of the device MPT200. The record field DTYP with the value stream defines that the record loads the StreamDevice driver support. The string of the field INP is passed to StreamDevice to config- ure the communication. This specifies that the command reading the pressure from the device connected to port $PORT is defined in the protocol GetPressure in the protocol file devMPT200.proto. The number 001 is passed as physical address to the protocol as an argument. The format of the control command out and the response in are defined in the protocol. The value is read in 6 digits decimal U_Expo_New format IOC shell command dbLoadRecords("devMPT200.db","P=MPT200,R=,PORT=L0,ADDR=001") FILE: devMPT200.db ... record(ai, "$(P)$(R)GetPressureRaw") { field(DESC, "Get␣Pressure␣from␣device␣MPT200␣as␣U_EXPO_NEW") field(DTYP, "stream") field(INP, "@devMPT200.proto␣GetPressure('$(ADDR)')␣$(PORT)") field(SCAN, ".1␣second") } ... FILE: devMPT200.proto ... CMDREAD = "740"; # Pressure in [hPa], readable, size=6, u_expo_new "100023" # Remote Control Command Format: # Adress, Action, Command, Size, Buffer, Checksum, Terminator GetPressure { # Send Control Command out $1, "00", $CMDREAD, "02", "=?", "%+", "\r"; # Receive Data Response in $1, "10", $CMDREAD, "06", "%6d", "%+", "\r"; } ... 79 Chapter 5 - Development of the MAGIX Slow Control System The advantage of StreamDevice in combination with asynDriver is that any device that can be controlled via a string stream can be integrated into EPICS without any programming effort. Since many devices support this, the integration of most devices is simplified by these two modules. Only the protocols for the configura- tion of StreamDevice and the asyn port have to be defined for each new device. However, this requires minimal programming skills, so even non-expert users can integrate and control devices in EPICS. With the inclusion of StreamDevice and asynDriver in EPICS, this point of the requirements is therefore also fulfilled. 5.3.3 The Autosave Module Each time an IOC is restarted, the IOC state is reset to the default configuration defined in the db files. Even if the input records update their value by the data request itself, the output records remain in the default configuration. Regardless of the fact that the IOC does not write any data to the devices when loading the db files, no statements can be made about the set values of the data sets after the restart due to this circumstance. Unfortunately, in many cases it is also not possible to read back the value that was send to the device. This leads to a problem, because all data of an experiment must be available at any time. Naively, one way to avoid this problem is not to restart any IOC during the entire runtime of the experiment. However, this can not be avoided for a number of reasons. For example, devices may need to be replaced, which may require an IOC to be restarted. Also, IOCs or the operating system may crash due to an error and cause a restart. The Autosave module provides a solution to this problem by adding a function to preserve the values of an IOC through a restart. Therefore, the autosave module stores the information of a set of PVs in files like an archiver. In addition, this module adds the functionality to configure the database before a process starts its tasks to the IOC. The combination of both functions allows an IOC to load the latest configuration into the database before resuming work. Autosave only saves and loads PVs that have been defined by the user. The PVs are specified in files that can be configured via patterns when loaded into the module, just like the db files [A5.7]. 5.3.4 The PyEpics Library In some cases it can be very useful to have small programs controlling or moni- toring multiple PVs simultaneously. This can be a simple BASH script or up to a powerful C++ program. One programming language that has proven to be very capable for this task is python. Python is a dynamic scripting language. It allows object-oriented programming and can be extended by numerous libraries. Python is characterized by its flexible usability and high user-friendliness due to its clear syntax. Since the code is interpreted at runtime, it is not necessary to compile the programs in advance, as is the case with C or C++. This makes it possible to develop and run programs for various tasks very quickly and easily [Python3]. The module EPICS Channel Access for Python (pyEPICS) builds an interface between channel access and python. After loading the pyEPICS module to a python script the command-line tools caget, caput and camonitor can be used in python. In addition, the module extends python with an object-oriented interface by providing a PV class. The PV class exposes an EPICS process variable as a full-featured and easy-to-use python object. Among other aspects, these objects can be used to create callback functions that monitor values and perform a specific 80 5.4 The Graphical User Interface - Control System Studio action when needed [PyE3]. Due to the simple language of python in conjunction with CA, any user can create a variety of Python scripts to perform various tasks related to slow control. Such a script can be used, for example, to switch between different states of a system. For safety reasons, scripts can also be executed to monitor specific parameters and automatically set the system to a safe state when a critical threshold is reached. 5.3.5 The dev-gpio Module The dev-gpio module can be used for IOCs running on a Raspberry Pi (RPi) or a BeagleBone to provide easy access to the general purpose input-output (GPIO) pins. An IOC shell command is used to load the lookup table for the GPIO names. After that, the voltage of a GPIO can be read or written by a bool record. Thereby the GPIO pin can be configured as active high or active low [GPIO]. An example can be found in code 5.6. Code 5.6: Example of a record with dev-gpio. The IOC shell command GpioConstConfigure loads the lookup table for the GPIO names of the Rasp- berry Pi 2 B. The bool-in record is connected to the dev-gpio module via the devgpio type. The input field is used to specify that the values of GPIO pin 4 are read back as active low. The ZNAM and ONAM fields define a human readable value associated with the zero and one values. IOC shell command GpioConstConfigure( "RASPI␣B+" ) FILE: devValveControl.db ... record(bi, "$(P):Valve15") { field(DTYP, "devgpio") field(INP, "@GPIO4␣L") field(SCAN, ".2␣second") field(ZNAM, "closed") field(ONAM, "opened") } ... 5.4 The Graphical User Interface - Control System Studio There are several solutions for a Graphical User Interface (GUI) for EPICS. One of them is Control System Studio (CSS), which is a collection of various tools for controlling and monitoring data for EPICS based control systems. The main component of CSS is the Operator Interface (OPI). To create a control interface tools can be dragged and dropped onto an OPI. Each tool can easily be linked with a PV. The tools range from simple text fields to complex data browsers. CSS makes it easy to create a graphical user interface for new devices [CSS21]. Figure 5.4 shows an example of a CSS OPI. An additional feature is that scripts, such as python scripts, can be connected and executed within the OPI. 81 Chapter 5 - Development of the MAGIX Slow Control System Figure 5.4: Example of a CSS OPI. This OPI is used to control the cold head and the booster stage. Different information like the mass flow or the pressure at different positions is also shown on this OPI. 5.5 MAGIX Slow Control System The MAGIX Slow Control System (MXSlowControl) is developed based on the EPICS framework. EPICS provides a shell command called makeBaseApp to create a base application for this purpose. It creates a complete directory environment including an IOC application. The slow control system of the experiment can be built there, especially the db files and device supports. Like the community modules, the developed modules are standalone libraries and are installed in the EPICS base framework. They can be linked to MXSlowControl if required. In this section some of the most important developments of the MXSlowControl system of this work are presented. 5.5.1 Installation Script Installing EPICS, the (community) modules and MXSlowControl on new operat- ing systems is a complex task. In addition to creating the appropriate environment variables and integrating the libraries and applications into the system, many con- figuration files have to be adapted manually to link the individual parts together. Only when EPICS base and all modules are correctly linked and the corresponding variables are set up, MXSlowControl can access them. This makes the installa- tion a time-consuming part and troubleshooting incorrect settings turns out to be difficult. 82 5.5 MAGIX Slow Control System Since the installation steps are identical for debian-based operating systems, an installation script was implemented that automatically installs EPICS and the community modules. The script installs all required packages to the operating system before it starts installing EPICS. The BASH commands sed, cat and echo are used to customize the configuration files of EPICS and the modules. If the script is executed on a RaspberryPi, this is detected and the dev-gpio module will also be installed. The script is configurable. At the beginning of the script it can be selected what MAGIX modules have to be installed in addition. The script creates all definitions of the environment variables of EPICS and the modules in a file called thisEPICS.sh. This is installed in /etc/profile.d/ so that the operating system sources it automatically at every reboot. After running the installation script a full working version of EPICS and the selected modules will be installed on the operating system. The installation script can be found in the appendix under code C.1. Similar to the installation script for EPICS, an installation script for MXSlow- Control has been implemented. This script builds the MXSlowControl IOC base application, links all necessary modules to it and copies all files, such as the db files, into the appropriate directories. Each MAGIX module is made with its own installation script and can be installed separately if needed. The installation script of MXSlowControl and one MAGIX module can be found in the appendix under code C.2 and C.3. 5.5.2 Introduction to Environment Variables Environment variables on operating system level contain information that is avail- able for all applications. They are used to adapt applications to the environment they are running in. Environment variables can be accessed through unique strings [Deb]. To run EPICS a set of environment variables have to be defined or mod- ified. As mentioned in the section before, all the definitions are set in the file thisEPICS.sh. After sourcing this file all definitions will be loaded into the system. For example, to tell the system where to find the EPICS executable programs, such as caget, the command locations have to be specified in the en- vironment variable $PATH. To load libraries, the system must know where to look for them. Therefore, the environment variable $LD_LIBRARY_PATH is used, where the library locations for EPICS, MXSlowControl and the modules have to be specified. Additional environment variables must also be defined to determine the module locations. In addition, the executables can be configured by defin- ing the appropriate environment variables. For example, the list of destination addresses for CA clients can be specified with the EPICS environment variable EPICS_CA_ADDR_LIST. An example of thisEPICS.sh and the environment vari- ables definition can be found in code 5.7. 5.5.3 Execution via System Control Manager In most cases MXSlowControl runs permanently on the control machines. In addi- tion, each machine must automatically resume its work after a restart. Therefore, the system must handle the execution of MXSlowControl itself. For this purpose, the Debian system manager systemd is used. This offers the possibility to initiate processes by system start in parallel. For this the gerneric system management operation systemctl is used [Deb]. To declare the start and end of the execution of a command running in the background, a systemctl configuration file must be created and loaded into the system. An example of such a file can be found in 83 Chapter 5 - Development of the MAGIX Slow Control System Code 5.7: Example of a thisEPICS.sh file #EPICS export EPICS_ROOT=/opt/epics export EPICS_BASE=${EPICS_ROOT}/base export EPICS_HOST_ARCH=$(${EPICS_BASE}/startup/EpicsHostArch) export EPICS_BASE_BIN=${EPICS_BASE}/bin/${EPICS_HOST_ARCH} export EPICS_BASE_LIB=${EPICS_BASE}/lib/${EPICS_HOST_ARCH} if [ "" = "${LD_LIBRARY_PATH}" ]; then export LD_LIBRARY_PATH=${EPICS_BASE_LIB} else export LD_LIBRARY_PATH=${EPICS_BASE_LIB}:${LD_LIBRARY_PATH} fi export PATH=${PATH}:${EPICS_BASE_BIN} export HOST=$(hostname) #Modules export ASYN=${EPICS_ROOT}/modules/asyn export STREAM=${EPICS_ROOT}/modules/stream export AUTOSAVE=${EPICS_ROOT}/modules/autosave export DEVGPIO=${EPICS_ROOT}/modules/devgpio #PYEPICS export PYEPICS_LIBCA=${EPICS_BASE_LIB}/libca.so #MAGIX Modules export FRONTEND=${EPICS_ROOT}/modules/frontend #MXSlowControl export MXSLOWCONTROL=${EPICS_ROOT}/MXSlowControl export MXSLOWCONTROL_BIN=${MXSLOWCONTROL}/bin/${EPICS_HOST_ARCH} export MXSLOWCONTROL_LIB=${MXSLOWCONTROL}/lib/${EPICS_HOST_ARCH} export IOC=${MXSLOWCONTROL}/iocBoot/iocMXSlowControl if [ "" = "${LD_LIBRARY_PATH}" ]; then export LD_LIBRARY_PATH=${MXSLOWCONTROL_LIB} else export LD_LIBRARY_PATH=${MXSLOWCONTROL_LIB}:${LD_LIBRARY_PATH} fi export PATH=${PATH}:${MXSLOWCONTROL_BIN} #Channel Access List export EPICS_CA_ADDR_LIST="$(<${EPICS_ROOT}/CA_ADDR_LIST.local)" #caArchiver export CA_ARCHIVER_LOG=${EPICS_ROOT}/log code 5.8. After loading the epics.service file, MXSlowControl can be started with the command systemctl start epics. To initialize MXSlowControl at every system start, the service has to be enabled with systemctl enable epics. One problem is, that the IOC shell can not be accessed if MXSlowControl is a pure background process. For several reasons like debugging, changing configurations or some testings this access is required. To solve this the MXSlowControl IOC Shell is running in a tmux session. The tmux program provides access to a number of windows from the command line. It is structured as a server-client system. When a tmux session is started, a server is automatically created to manage the session. Any window opened in a session can be accessed from any number of clients [Deb]. By combining tmux and systemctl, the IOC shell can be invoked from the terminal after MXSlowControl has been initialized. Another advantage is that this session can be accessed by multiple clients at the same time, so that the information in the IOC shell can be retrieved from different locations. 84 5.5 MAGIX Slow Control System Code 5.8: Example of the epics.service file [Unit] Description=MAGIX EPICS IOC After=network-online.target After=epicsrepeater.service [Service] Type=forking User=mxuser Group=mxuser TimeoutStartSec=5 ExecStart=/usr/bin/tmux new-session -ds EPICS -c ↪→ /opt/epics/MXSlowControl/iocBoot/iocMXSlowControl \ 'source /etc/profile.d/epics.sh; \ $EPICS_ROOT/MXSlowControl/iocBoot/iocMXSlowControl/st.cmd;' ExecStop=/usr/bin/tmux send-keys -t EPICS Enter 'exit' Enter RemainAfterExit=yes [Install] WantedBy=multi-user.target 5.5.4 Defining UDEV Rules The automatic detection and initialization of the connected hardware is managed by the udev system. By default, new devices can only be accessed as super user [Deb]. This means that to control devices via MXSlowControl, the IOC must be run as super user. This is not recommended for several reasons such as security. There are several solutions for this problem. The solution used for MXSlowControl is to define udev rules to configure the hardware for its use at initialization. After the hardware is detected, basic information is read back from the devices, called attributes. Based on the attributes udev configures the devices. Most devices have unique attributes and it is possible to distinguish between them. For example, to get the attributes for a particular device, the command udevadm info -a -n /dev/$YOUR_DEVICE can be used. An example of the result of this command can be found in code 5.9. To change the configuration for a specific device, a new udev rule must be defined. You can define, for example, the user or group that gets access to the device. Also, unique system links can be created to identify and load the devices by their individual names into the software. An example of such a rule can be found in code 5.10. Those rules must be defined in a file with the extension .rules in the folder /etc/udev/rules.d/. For each device, all rules defined in this directory are applied by udev to a device. When defining rules, it is important to note that rules can overwrite each other. For MAGIX, we have therefore created a global file that contains the rules for all devices. This file is also installed via the installation script (see Section 5.5.1 and code C.1). It is therefore important that the rules of new devices are added to this global file. 5.5.5 Implementation of the Bash/ZSH Completion For the standard user it is sufficient to control EPICS via a GUI. However, ex- perienced users and developers very often use the command line commands to access PVs. Especially, in driver development when there is no GUI yet, develop- ers depend on it. As the names of PVs can be long and complex strings, entering them is often a pain. EPICS itself does not have a bash completion. In the con- 85 Chapter 5 - Development of the MAGIX Slow Control System Code 5.9: Example using the udevadmin command to read out the attributes of a connected device KERNELS=="ttyUSB0" SUBSYSTEM=="tty" ATTRS{interface}=="USB-RS485 Cable" ATTRS{idProduct}=="6001" ATTRS{idVendor}=="0403" ATTRS{serial}=="FT03G5K6" ... Code 5.10: Example for a udev rule. SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ↪→ ATTRS{idProduct}=="6001", ATTRS{serial}=="FT03G5K6", ↪→ GROUP="mxuser", SYMLINK+="MPT200" text of this thesis a bash completion was developed for the standard commands like caget. Here, in addition to bash, the completion was also developed for the shell ZSH, as most EPICS developers in the MAGIX group prefer it. However, since the principle is identical and only the language differs, we will not make a distinction between the two completions in this section. The current version of the bash completion needs some preparation by the IOC. The IOC lists all loaded records using the IOC shell command dbl. This list can be stored in a file. Each startup script of the IOC uses this to create a file named ${EPICS_ROOT}/dbl.txt including the list of all records provided by this IOC. The bash completions uses this file as input to fill the array COMPREPLY. The completion system retrieves this array to perform the completions or to output the options. This allows the user to complete the PVs of the locally running IOC. The completion also uses a second file, ${EPICS_ROOT}/dbl_global.txt, as input. All PVs defined in this file can also be completed. The content of this global file is up to the user. In most cases it will contain the db list of the other IOCs in the subnet. These can be copied from the hosts using the scp command, for example, and added to the dbl_global.txt file. The scripts for the Bash and ZSH completion can be found in code C.4 and C.5 A new version for Bash completion is currently under development. Section 5.5.7 introduces the MXFrontend module. This allows to query the provided PVs of each IOC over the network. The new version of Bash completion will make use of this instead of querying the PV list from a file as before. How these two parts can work together without causing a delay due to different query times is currently being tested. Development will continue beyond the period of this work. 5.5.6 Integration of an Archiver (MAGIX executable) EPICS does not have its own archiving program, but it does provide a powerful tool, camonitor. This tool is connected to a list of PVs and prints the changes of each PV in stdout with the timestamp, PV name and current value. If a PV connection can not be opened or is lost, it attempts to reconnect to the PV and prints a brief information. To archive this information, a simple solution is to redirect the output to a file using the command camonitor $PV_LIST > $LOG_FILE. This solution is very rudimentary and is not a definitive solution for an archiver. However, it is very useful when you need to log some data quickly. Since EPICS is an open source, we could create an archiving program for MAGIX based on the camonitor program. The changes we made are described below. 86 5.5 MAGIX Slow Control System First of all, we changed the argument handling. Instead of expecting a list of PVs, the caArchiver expects a file with a list of all PVs to be logged. For each PV in the list, a connection is opened and an event callback function is attached. The callback function handles the return for each change to a PV. This function is modified to output the information to a file instead of the stdout. For each new day, a new log file is opened with the corresponding timestamp. This prevents the log files from becoming too large. Finally, we have added the ability to configure the log directory via an environment variable called CA_ARCHIVER_LOG. Despite the minor modifications, we managed to turn the camonitor tool into a very stable and powerful archiver caArchiver. This is started via systemctl in a tmux session like the IOC application. Only the file $CA_ARCHIVER_LOG/log.txt must be created and filed with a list of PVs. 5.5.7 Development of the MXFrontend (MAGIX module) The basic idea of the MXFrontend module is to read internal information of the IOCs or to identify them via the network. For this purpose, the module extends the IOCs with the appropriate functionalities. The communication principle is based on that of Channel Access. MXFrontend opens an additional UDP socket for each IOC, which waits for an external request. If a corresponding client makes a request, the IOC opens a TCP connection to communicate with the client. Although the module is still in development, it is already loaded and used by all MXSlowControl IOCs. So far, the module supports only a few different requests. One of them is the query of the status of an IOC (on or off). This function can also be used to query which IOCs are currently running via an UDP broadcast throughout the subnet. Another possibility is to poll the PV list of one or more IOCs. Each IOC then sends this list to the client via the network, which can pro- cess it. In addition, MXFrontend provides a command that queries all PVs in one or more subnets and stores them in the file $EPICS_ROOT/dbl_global.txt. All parameters like the UDP or TCP port numbers can be controlled by environment variables. These are read by the system at startup and used for configuration. The complete communication structure is already programmed and based on this, other queries or commands can be sent to the IOC. Two further functions are currently in preparation. The first one is the possibility to restart an IOC via the network. The second function is to pass the information that the IOC currently outputs as a stdout to a client. There are no limits for this module and so one could also think about controlling certain IOCs completely via the module MXFrontend. This means to send the configurations remotely to the IOC and start it. Development of this module will also continue beyond the time period of this work. 5.5.8 Expansion by the dbLoadMultiRecords Function EPICS Base provides two functions for loading and configuring a db file. The basic idea is to create db files with variables as placeholders. These variables must be defined when loading a db file. The first IOC shell command to load and configure a DB file is dbLoadRecords. This command takes two arguments, first the db file to be loaded and second a pattern for the variable definitions. An example of dbLoadRecords can be found in code 5.1. If a database is to be loaded with different configurations, there are two possible solutions. First, the dbLoadRecords command can be executed multiple times to load the same 87 Chapter 5 - Development of the MAGIX Slow Control System database file with different configurations. It should be noted that each loaded record is created with a unique name as a new object in the database. If a name is repeated, the second initialization is ignored [B3.14]. Additionally, the function dbLoadTemplate can be used. The command only needs a template file as parameter in which all configurations are defined. The configurations are stored as simple lists in the template file. The template function can load multiple db files at once with a large number of different configurations. An example of the dbLoadTemplate command can be found in code 5.11 [B3.14]. Code 5.11: Example of the dbLoadTemplate command. The file devADC1248_mxrpi-14.template is loaded by the IOC shell. This contains several configuration patterns for different db files. One of these definitions is shown for the db file devADC1248Digital.db. The digital inputs for the different channels are connected to the GPIO pins of a RPi. The mapping between the channel number and the GPIO pin is defined in the template file. So, each channel is connected to the corresponding GPIO pin after loading and can be read out. IOC shell command dbLoadTemplate("devADC1248_mxrpi−14.template") FILE: devADC1248_mxrpi−14.template file devADC1248Digital.db { pattern{P,Ch,GPIO} {mxrpi−14,0,15} {mxrpi−14,1,17} {mxrpi−14,2,18} {mxrpi−14,3,27} {mxrpi−14,4,23} {mxrpi−14,5,22} } ... FILE: devADC1248Digital.db record( bi, "$(P):ADC1248:Input:Digital:Ch$(Ch)") { field(DTYP, "devgpio") field(INP, "@GPIO$(GPIO)␣H") field(SCAN, ".2␣second") field(ZNAM, "low") field(ONAM, "high") } ... Both options have a disadvantage. If a large number of records with one or more consecutive numberings must be loaded, you have to write all possible configura- tions into the IOC start script or template file manually. This may still be possible for smaller sequences, but is a time-consuming and error-prone task for larger se- quences. For example, 1024 identical records with sequential numbers had to be loaded for a fiber detector. For this reason, another possibility for loading db files was integrated in the context of this dissertation. This IOC shell command is called dbLoadMultiRecords. Like the dbLoadRecords command, the dbLoadMultiRecords command takes two arguments: the db file to load and a pattern for the variable definitions. The interpretation of the pattern has been changed to allow sequences. The pattern is interpreted and for each sequence the db file is loaded with the corresponding 88 5.5 MAGIX Slow Control System pattern. For a sequence of numbers with the notation parameter1=1..8, the db file is loaded with the patterns parameter1=1 parameter1=2 ... parameter1=8. To load the db file with a sequence of strings or non-continuous numbers, the notation parameter2={val1;val2;val3} is used to generate the patterns: parameter2=val1 parameter2=val2 parameter2=val3. Multiple sequences can be used for one pattern. All possible combinations are used to configure and load the db file. For example, the pattern P={device1;device2}, channel=1..8 is interpreted as: P=device1, channel=1 P=device1, channel=2 ... P=device1, channel=8 P=device2, channel=1 P=device2, channel=2 ... P=device2, channel=8. Two examples are given in code 5.12. The dbLoadMultiRecords command is an useful extension to the standard db load commands and is used for many MXSlowControl devices. Code 5.12: Example of the command dbLoadMultiRecords. With the first IOC shell command, dbLoadMultiRecords, the file devNewStepSB.db is loaded three times with the three different axis numbers 1,3 and 5. With the second IOC shell command the file devNewStepSB.db is loaded four times with the different channel numbers 1 to 4. IOC shell command dbLoadMultiRecords("devNewStepSB.db","P=NewStep,␣cID=0,␣Axis={1;3;5},␣PORT=xyzTable") dbLoadMultiRecords("devHMP4040.db","P=HMP4040,␣PORT=HMP4040,␣CH=1..4") FILE: devNewStepSB.db record(longout, "$(P):Axis$(Axis):SetPosition") { field(DESC, "Set␣Position␣of␣Axis$(Axis)␣Absolut") field(DTYP, "stream") field(OUT, "@devNewStepSB.proto␣setPos($(cID),$(Axis))␣$(PORT)") field(LOPR,"−60000") field(HOPR,"120000") field(EGU, "micro−steps") } FILE: devHMP4040.db record(ai, "$(P):$(CH):getVoltage") { field(DTYP, "stream") field(EGU, "V") field(PREC, 3) field(INP, "@devHMP4040.proto␣getDouble($(P),$(CH),MEAS:VOLT)␣$(PORT)") field(SCAN, "1␣second") field(PINI, "YES") } 89 Chapter 5 - Development of the MAGIX Slow Control System 5.5.9 Development for Profibus Support (StreamDevice BUS API) Some MAGIX devices to control the gas jet target, like the pumping station or the solenoid valve control can only be accessed using Process Field Bus (Profibus). Since there is no EPICS module that allows communication with Profibus, we had to develop a solution ourselves. Instead of writing our own device support, we decided to write a StreamDevice BUS interface. For this purpose StreamDevice provides an Application Programming Interface (API), especially a C++ interface called StreamBusInterface. To add a new BUS, it is necessary to create a new class as inheritance of StreamBusInterface. Then, the necessary methods have to be implemented, such as connect, write or read. This is the place where the communication via Profibus is specified. Finally, the new class must be registered as a new StreamDevice bus. Then, the new bus can be used in EPICS [SDev2.8]. The advantage of this solution is that the Streamdevice environment can be used. This means that the messages can be defined in the proto file and streamdevice takes care of the communication via Profibus. An example for the usage of the Profibus StreamDevice bus is given in code 5.13. 5.5.10 MXSlowControl Tutorial For unexperienced EPICS developers, a tutorial was created in the internal group’s mediawiki as part of this work. This tutorial is constantly updated to support users in getting started with EPICS and MXSlowControl easier and to provide additional professional tips for more complex tasks. The current version covers the topics of process variables, StreamDevice, and PyEpics. Since almost all devices can be controlled via StreamDevice, any user can integrate and use new devices in MXSlowControl after completing this tutorial. Each section of the tutorial covers the most important content and necessary information. Besides examples, tasks are defined. Each solution of the defined tasks leads the user to an important learning step. If a user gets stuck with a task, suggested solutions can be displayed. Other topics that are still under construction are the creation of OPIs with CSS, the creation of device supports, custom modules and more. The goal is to create an all encompassing guide that can be used in the final experiment to allow all experimenters to work with EPICS, quickly fix problems, or add new devices. 5.5.11 Development of Device Support for MAGIX Built Devices MAGIX has also built some self-developed devices for the experiment, which must be controlled via EPICS. For these devices, you have to dive deep into driver de- velopment, since most components only understand a very rudimentary language. The electronics required for the application were developed in cooperation with the in-house electronics workshop. To be able to read information from built-in chips, the corresponding registers usually have to be set and read out. In this sec- tion, we will look at two of these devices and get a basic overview of how device support is developed for such a device. ADC 1248 The device ADC1248 is a high frequency 24-Bits analog-to-digital converter (ADC) developed from a MAGIX group member [Bir21]. In total eight differential ADC inputs are provided. In addition, it provides six digital entries for signals of 3.3V and one relay. All the electronics are placed on a board that can directly be 90 5.5 MAGIX Slow Control System Code 5.13: Example for the Profibus StreamDevice bus. The db is loaded with two variables. The variable PROFIBUS contains the system link, the destination address, the user data, the source address and the baud rate. The baud rate is configured by an index. In this example the baud rate baudrates[5]=1.5Mbps is set. The record calcout contains the information to perform the communication. The DTYP field specifies that StreamDevice is used for communication. The OUT field specifies Profibus as StreamDevice BUS. The protocol set defines the structure of the message. Each valve cor- responds to one bit. The message is a 4 byte long word to configure the entire valve setting. For each bit that has the value 1, the corresponding valve is acti- vated. All valves whose corresponding bit has the value 0 are then deactivated. IOC shell command # PROFIBUS=Device:Destination Address:User Data:Source Address:Baudrate dbLoadRecords("db/devVUVG.db","P=VUVG,␣PROFIBUS=/dev/VUVG:3:840000:1:5") FILE: devVUVG.db record (bo, "$(P):Valve1") { field(ZNAM, "off") field(ONAM, "on") field(FLNK, "$(P):AllValves") } ... record(calcout, "$(P):AllValves") { field(DESC, "Set␣all␣Valves␣at␣once") field(DTYP, "stream") field(OUT, "@devVUVG.proto␣set␣Profibus␣$(PROFIBUS)") field(INPA, "$(P):Valve1") field(INPB, "$(P):Valve2") field(INPC, "$(P):Valve3") field(INPD, "$(P):Valve4") field(INPE, "$(P):Valve5") field(INPF, "$(P):Valve6") field(INPG, "$(P):Valve7") field(INPH, "$(P):Valve8") field(INPI, "$(P):Valve9") field(INPJ, "$(P):Valve10") field(CALC, "A∗1+B∗2+C∗4+D∗8+E∗16+F∗32+G∗64+H∗128+I∗256+J∗512") field(SCAN, "Passive") } FILE: devVUVG.proto set { out "%#0.4r"; in "%∗1r"; } mounted on a RPi. For the communication the board is connected to the GPIO header of the RPi. To develop the control via EPICS was part of this thesis. The digital entries and the relay can be controlled using the dev-gpio module (see Section 5.3.5), so we will focus below on the development of the device support to control the ADC inputs. Two ADS1248 chips [ADS] are used for the ADC. The registers of the chips are controlled through the Serial Peripheral Interface (SPI). To read the voltage for a channel, the chips must be configured. This is managed by the chip registers. Since 91 Chapter 5 - Development of the MAGIX Slow Control System the communication is too complex for StreamDevice, we decided to build a device support for this part. For this purpose, an individual C++ class was developed for each register to manage the corresponding information. An example of such a class can be found in code C.6 and C.7. All register classes are combined into one class representing the ads1248 chip. the ads1248 class also handles the SPI communication for all registers. This allows the chip to be configured as desired and the voltage can be read back from the chip. Up to this point the development is independent of EPICS and the chip can be controlled by different programs using this driver. To read out the voltage with EPICS, a device support has been developed (see Section 5.2.1). An example of a data set for reading out the voltage can be found in code 5.14. The complete device support is packaged in a module that can be installed on an RPi if needed. After installation the ADC1248 board can be controlled. Code 5.14: Example of a record using the ADC1248 module. The getVoltage function of the ADC1248 module takes as paramter the channel to be read, the gain and the sampling rate. Since different voltage dividers can be placed on the ADC the voltage needs to be calculated using this information as well. The db file is loaded via template since each channel can be configured individually. IOC shell command dbLoadTemplate("$(TOP)/db/devADC1248_RPi0.template") FILE: devADC1248_RPi0.template file ../../db/devADC1248Analog.db { pattern{P,Ch,Divider,Gain,SPS,OFFSET} {RPi0,0,5,1,20, 0} {RPi0,1,5,1,20, 0} {RPi0,2,5,1,20, 0} {RPi0,3,5,1,20, 0} {RPi0,4,5,1,20, 0} {RPi0,5,5,1,20, 0} {RPi0,6,5,1,20, 0} {RPi0,7,5,1,20, 0} } FILE: devADC1248Analog.db record(longin, "$(P):ADC1248:Input:Analog:Ch$(Ch):Raw") { field(DESC,"Raw␣value␣of␣the␣voltage␣for␣Channel␣$(Ch)") field(DTYP,"ADC1248") field(SCAN,"1␣second") field(INP,"getVoltage␣$(Ch)␣$(Gain)␣$(SPS)") field(FLNK,"$(P):ADC1248:Input:Analog:Ch$(Ch):Voltage") } record(calc, "$(P):ADC1248:Input:Analog:Ch$(Ch):Voltage") { field{DESC,"Voltage␣of␣Channel␣$(Ch)␣with␣voltage␣divider␣1/$(Divider)"} field(INPA,"$(P):ADC1248:Input:Analog:Ch$(Ch):Raw") field(CALC,"$(Divider)∗2.048␣/␣(␣1<<23␣)∗A␣−␣$(OFFSET)") field(SCAN,"Passive") } MXSiDet Another large device carrier module is the MXSiDet module. To control a sil- icon strip detector (see Section 4.2.3), a front-end board was developed by the 92 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand electronics workshop. On the board are several chips, which control e.g. the trig- ger threshold or the temperature. The whole communication is based on Inter- Integrated Circuit (I2C). Several front-end boards (silicon strip detectors) can be controlled by an I2C controller via an I2C-Multiplexer (I2C-MUX). The develop- ment of the entire slow control driver for this front-end board was part of this work. As in the case of the ADC1248, the entire communication is too complex for a StreamDevice. Therefore, a separate device support module was developed to control the whole device. A detailed description of this driver can be found in the Section 5.6.3. This is part of the next section which explains the design and development of the entire slow control for the silicon strip detector test bench. 5.6 Slow Control Development for the Silicon-Strip De- tector Test Stand As mentioned in Section 4.2.3 currently one silicon strip detector is being tested by the MAGIX group (see Section 4.2.3). The construction of a spatially resolving silicon strip detector system was the topic of a master thesis in the MAGIX group [Gei20]. In this thesis, the initial development of the detectors electronics and the construction of a test stand are described as well as a discussion of the results of the first measurements. In this section, we will focus on the slow control development for this test bench, which is a part of this thesis. The test stand consists of a vacuum chamber equipped with several supply lines to enable operation of the detector. To achieve a vacuum of the order of 10−5 mbar, a rotary vane pump and a turbomolecular pump are connected to the chamber. The detector assembly itself is mounted inside the chamber and consists of the X1 chip directly connected to the manufactured readout electronics and the APV. An MPT200 device from Pfeiffer Vacuum is used to control the chamber pressure. The low voltage supply to the detector and the vacuum transmitter is controlled by the HMP4040 device from Rohde & Schwarz. This section is used as a example of how to integrate different types of devices into EPICS. First, we will see how to read a MPT200 connected via the serial port. Then, we will discuss how the network device HMP4040 can be controlled via EPICS. Finally, the frontend board of the silicon strip detector (SiDet) will be explained in more detail as well as the development of a corresponding device driver. The general structure from the point of view of the control software is shown in Fig. 5.5. 5.6.1 Readout of the MPT200 Device via StreamDevice ttyUSB The MPT200 device is a pressure sensor that can be controlled via RS-485. To connect the MPT200 to a RPi a RS-485 to USB converter cable is used. For the communication with the RS-484 so called telegram frames are used. They consist only of ASCII code characters [MPT200]. This makes this device a fantastic candidate to be integrated into EPICS using the StreamDevice module. First, the asynPort driver needs to be configured. Since the device is connected via serial port the IOC shell command drvAsynSerialPortConfigure is used for this purpose. The configuration for the serial port can be taken from the device documentation as [MPT200]: 93 Chapter 5 - Development of the MAGIX Slow Control System CSS (GUI) Channel Access Network RaspberryPi HMP4040 IOC USB Power Supply GPIO Header ±5V 24V I2C RS-485 Readout Electronics MPT200 Figure 5.5: The test stand of the silicon strip detector is controlled by an IOC running on a RPi. The low voltage power supply HMP4040 is controlled via network. The pressure detector MPT200 for the test chamber is controlled via RS-484 and directly connected to the RPi via USB. The readout electronics is controlled via I2C. The support voltage is provided by the HMP4040. • 9600 baud • 8 data bits • 1 stop bit • no parity. An example using asyn to specify this configuration is already given in code 5.4 using the udev rule code 5.10. Telegram frames are used for the communication. The structure of this commu- nication frame is [MPT200] a2 a1 a0 * 0 n2 n1 n0 l1 l0 dn . . . d0 c2 c1 c0 cR with Data Byte Description a2 - a0 Address of MPT200 * Action (0 for data request; 1 for control command or data response) n2 - n0 Control Command l1-l0 Data length of dn . . . d0 as integer dn - d0 Data in the corresponding data type c2 - c0 checksum (sum of ASCII values of a2 to d0) modulo 256 cR Terminator: Carriage return (ASCII 13). The address of each MPT200 can be set directly with a switch at the device. The control parameters and the data types are given in the device documentation. This frame must be translated into a StreamDevice protocol. An example for the command read pressure P:740 is already given in code 5.5. The checksum is calculated using the StreamDevice converter %+. Hereby, sum8 defines that 94 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand the sum of all characters are calculated modulo 28. The character + is defined to represent the checksum as decimal ASCII [SDev2.8]. The pressure is returned as U_Expo_New type with a size of 6 characters. The U_Expo_New integer number nnnnee can be converted to a float in units of mbar using the formula [MPT200] p = nnnn ∗ 10ee−23 [mbar]. To convert the pressure in mbar a calc record is used (see code 5.15). Code 5.15: Example of a calc record converting U_Expo_New format to mbar record(calc, "$(P)$(R)Pressure") { field(DESC, "Calculate␣Pressure␣of␣device␣MPT200␣in␣mbar") field(INPA, "$(P)$(R)GetPressureRaw") field(CALC, "FLOOR(A/100)∗10^(A%100−23)") field(SCAN, "Passive") field(EGU, "mbar") field(PREC, 7) } The further control commands can be translated into a protocol and linked to a record in the same way. The conversions are then also done via calc records. 5.6.2 Controlling the HMP4040 Device via StreamDevice TCP The low voltage supply for the entire test stand is provided by the HMP4040 network device. Each of the four output channels can easily be controlled from the front panel. There is also a small display on the front panel that shows some information. Although front panel control may be sufficient for a test stand, the device is connected to the network via the built-in Ethernet port to allow remote control. After configuring the HMP4040 TCP/IP network protocol, the unit can be controlled over the network. All control commands consist of ASCII code characters [HMP]. Thus, the HMP4040 is also an excellent device that can be controlled by EPICS with StreamDevice. First the asynPort driver must be configured. Since the HMP4040 is a network device, the IOC shell command drvAsynIPPortConfigure is used for this. To configure asyn, the required information can be obtained from the device docu- mentation or set on the front panel of the device [HMP]. With the information • Network Protocol: TCP • IP address: 10.32.108.213 • Port Number: 5025 (default) the asynPort can be configured as: drvAsynIPPortConfigure("HMP4040","10.32.108.213:5025␣TCP",0,1,0) The structure for the control commands of the HMP4040 device is simple. First, the output channel must be selected, then the control command can be sent. For example, to set the output voltage for channel 1 to 25V, the following two commands must be sent to the device [HMP] INST OUT1 VOLT 25.0 95 Chapter 5 - Development of the MAGIX Slow Control System To read a value, the control command is extended by the character ?. For example, to read the current voltage for channel 2, the following two commands must be sent [HMP] INST OUT2 MEAS:CURR? The response is only the value of the current in ASCII characters, e.g. 1,200, in units of A. Several commands can be sent to the device at once. For this purpose the line feed character \n (ASCII 10) must be used as terminating character between the commands. The structure of the individual commands for this device is identical. They differ only in the corresponding data types that must be transmitted. Since a large number of commands must be integrated into EPICS, it makes sense to create a separate StreamDevice protocol for each of the different data types and to pass the commands as an argument through the records. Apart from reading the identifier as a string, the HMP4040 only uses the double, integer and boolean data types for transmission. This results in only seven different protocols having to be written for the HMP4040: getID, getDouble, getInt, getBool, setDouble, setInt, and setBool. An example of the records and protocols for setting the voltage and reading back the current can be found in code 5.16. In addition to the command, the channel number is also an argument to the protocols. Since the channel number is also a parameter of the database, each record has to be defined only once. With the IOC shell command dbLoadMultiRecords (see Section 5.5.8) all four channels will be loaded into the IOC. 5.6.3 Driver Development to Control the SiDet board via RPi I2C This section explains how the driver for the readout electronics of the silicon strip detector array (see Section 4.2.3) was built. Figure 5.6 shows the readout electronics developed in cooperation with the electronics workshop for the SiDet. Since a space-saving design is required for all parts in the scattering chamber, the electronics are divided into two parts, the frontend-board and the HDMI distribution board. The frontend-board is mounted directly under the detector in the vacuum chamber (see Fig. 4.13). All the electronics to control the detector are located there. An overview of the integrated circuits (ICs) placed on this frontend-board is given in Table 5.1. The HDMI distribution board is located outside of the vacuum chamber. It provides the supply voltage of ±5 V and an I2C interface to the frontend-board via an HDMI cable. Additionally, an external trigger signal can be input or the generated trigger signal and the analog signals of the frontend-board can be output via LEMO sockets. To control the electronics, the I2C master is connected to the HDMI contribution board [Gei20]. A RasperryPi is used as I2C master. This can be connected directly to the HDMI board via the GPIO header. To control multiple boards with one master an I2C multiplexer based on the IC PCA9548AD can be used. This allows to control up to 8 silicon strip detectors with one I2C master [Gei20]. The SiDet library The first step in creating a device driver is to create a C++ library that enables the communication with the device. The advantage of an EPICS independent library is, that the device can be controled with different programs. This allows flexible use of the device and simplifies the distribution of the driver to the community. 96 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand Code 5.16: Example of the db and proto file for the HMP4040 device. The db is loaded with dbLoadMultiRecords to initialize the four channels separately. Each record is associated with the protocol for the corresponding data type. The channel number and command are passed as arguments to the protocol. Each protocol selects the output channel and sets or requests the values for the passed commands. Since the set values can be read back, each setting protocol requests the current value from the HMP4040 device during initialization using the @init macro. IOC shell command dbLoadMultiRecords("devHMP4040.db","P=Silicon:LV,␣PORT=HMP4040,␣CH=1..4") FIILE: devHMP4040.db record(ai, "$(P):$(CH):getCurrent") { field(DESC, "read␣the␣current␣value␣of␣channel␣$(CH)") field(DTYP, "stream") field(EGU, "A") field(PREC, 3) field(INP, "@devHMP4040.proto␣getDouble($(P),$(CH),MEAS:CURR)␣$(PORT)") field(SCAN, "1␣second") field(PINI, "YES") } record(ao, "$(P):$(CH):setVoltage") { field(DESC, "set␣voltage␣value␣of␣channel␣$(CH)") field(DTYP, "stream") field(EGU, "V") field(PREC, 3) field(OUT, "@devHMP4040.proto␣setDouble($(P),$(CH),VOLT)␣$(PORT)") } ... FIILE: devHMP4040.proto getDouble{ # $1=$(P); $2=${Channel}; $3=${Command} out "INST␣OUT\$2\n\$3?\n"; in "%f"; } setDouble { # $1=$(P); $2=${Channel}; $3=${Command} out "INST␣OUT\$2\n\$3␣%f\n"; in "%∗f"; @init { out "INST␣OUT\$2\n\$3?\n"; in "%f"; } } ... Since all chips can be accessed with I2C one class was built to handle the entire communication via the I2C bus. To avoid problems caused by parallel read and write accesses, a singleton class was written for this purpose. The special feature of a singleton is that only one instance (one object) of the class can exist at the same time. The singleton class provides a static method to return the instance of this class. This allows other methods to access this object/class. The class for the I2C communication is called RPiI2C. It provides methods to open or close the I2C bus and to write or read data to/from the device. The source code of the class RPiI2C can be found in code C.8 and C.9. 97 Chapter 5 - Development of the MAGIX Slow Control System Table 5.1: Overview of the integrated circuits (ICs) placed on the frontend-board of the readout electronics for the silicon strip detector [Gei20]. IC Type Description AD5693RBR 16-bit DAC Set threshold for the trigger signal [AD] ADS122C04IP 24-bit ADC Measure the voltage drop from two PT1000 temperature sensors [ADS2] - 2xPT1000 Platinum Resistance Temperature Detectors; Connected to the cooling plate of the frontend-board and the detector MCP9808T Digital Temper- Measurement of the local temperature on the frontend- ature Sensor board [MCP] Frontend-Board HDMI-Board ±5V I2C-Multiplexer Analog Trigger out out/in RaspberryPi Figure 5.6: Overview of the SiDet readout electronics [Gei20]. A detailed description can be found in the text. Similar to the ADC1248 (compare Section 5.5.11), a separate class has been writ- ten for each chip on the frontend-board to provide the complete communication. Each of these classes uses the RPiI2C class to write or read data. The structure of the classes is similar and differs only in the way the registers of the chips are set or read and which data can be supplied. To describe the frontend-board, a 98 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand class SiDet was created, which contains an object of the classes for each chip. The requests to read or write the information are then automatically assigned to the chips respectively the corresponding class objects and processed. In order to include a possibly integrated I2C multiplexer, a further class for controlling was added. This can be loaded if necessary also into the SiDet class. By creating an instance of the SiDet class the complete frontend-board can be controlled. A class diagram of the entire device driver can be found in Fig. 5.7. In addition to the basic functions for controlling the device, another useful feature has been added, namely a logging system. This was implemented by a class mxlog based on the header-only library spdlog which was developed to control the entire logging. Each class of the device driver has an individually configured instance SiDet . . . 1 AD5693 . . . private: private: mxlog m_logger mxlog m_logger int m_ChannelNumber uint8_t m_AD5693_I2C_ADDR PCA9548A∗ m_MUX AD5693 m_DAC 1 public: ADS122C04 m_ADC setDAC(...) MCP9808 m_PCB getDAC(...) set_level(...) public: getPCBTemperature(...) setThreshold(...) getThreshold(...) getResistance(...) set_level(...) 1 ADS122C04 . . . private: . . . mxlog m_loggerRPiI2C uint8_t m_ADS122C04_I2C_ADDR Singleton public: private: getValue(...) static RPiI2C∗ m_device set_level(...) // private constructor for Singleton RPiI2C() mxlog m_logger int m_fd_I2C public: 1 // return Instance of RPiI2C MCP9808 . . . static RPiI2C& device() open(...) private: close(...) mxlog m_logger readI2C(...) uint8_t m_MCP9808_I2C_ADDR writeI2C(...) public: set_level(...) getTemp(...) set_level(...) mxlog . . . private: level_enum m_level 0..1 public: PCA9548A . . . log(...) private: trace(...) debug(...) mxlog m_logger info(...) uint8_t m_MUX_I2C_ADDR warn(...) uint8_t m_channel error(...) public: critical(...) setMUXChannel(...) set_level(...) getMUXChannel(...) get_level(...) set_level(...) Figure 5.7: Class diagram of the device driver for the silicon strip detector array. Each detector can be controlled using the SiDet class. For each chip an instance of the coresponding class is loaded. All communication is handled by the singleton class RPiI2C. For logging the class mxlog is used. 99 Chapter 5 - Development of the MAGIX Slow Control System of mxlog. For each instance, a log level can be set that defines what information should be output. So, it is possible to output only error messages or more detailed messages up to trace level. Since each object can be configured separately, it is possible to set the logging specifically for different application areas, which e.g. greatly simplifies troubleshooting in case of problems. The log messages are displayed in the terminal with different color codes. Each message contains a time stamp, an entry about the class that issues the message, and the protocol level. By this the log has a search functionality. An example of the output is given in Fig. 5.8. The source code of the class mxlog can be found in code C.10 and C.11. (a) Output with log level set to error for all logger. (b) Output with log level set to debug for all logger. (c) Output with log level set to trace for logger I2C. Figure 5.8: Example output of the mxlog class for the silicon strip detector device driver. The first column shows the timestamp. The second column represents the class printing the message and the third one the message level. Finally, the message is attached. When creating a library, it is a good practice to write unit tests and create a documentation. For each class, a unit test was created based on the header- only library Catch2. Each unit test verifies the functionality and gives an error message if something goes wrong. For the documentation the doxygen system was used. This creates a documentation from the comments, which were entered in the header files of the individual classes in a special syntax. This not only makes it easier for users to access, but also helps developers find their way around the code. How to Build EPICS Modules and Link them to the Library After installing the SiDet library, the module can be created to integrate the driver into EPICS. With the EPICS basic command makeBaseApp.pl -t support a directory structure for a new module can be created. Then the device support (see Section 5.2.1) must be programmed. As shown in the example code 5.3 EPICS provides an interface where for an input record only the two functions init_record and read_ai have to be designed. For an output data set, write_ai must be defined instead of the read function. In the initialization function, a new 100 5.6 Slow Control Development for the Silicon-Strip Detector Test Stand instance of the SiDet class is created, if it does not already exist. The read or write functions have access to the information stored in the INP or OUT field. This can be used to specify the information that is controlled by the record. In the case of the silicon strip detector, simple commands are defined, such as getThreshold. If this command is defined in the INP field, the corresponding record will receive the threshold value as a result. Similar commands are defined for the other parameters. The full definition of these functions can be found in code C.12. To connect the SiDet module to EPICS, a database definition must be set. In it, the data type must be linked to a record. In addition, the device support structure associated with the data type must be defined. The two entries for the MXSiDet module are device(ai,CONSTANT,devSIDET_ai,"SIDET") device(ao,CONSTANT,devSIDET_ao,"SIDET") Thus, the data sets can access the silicon strip detector data by configuring the codewordDTYP as codewordSIDET. An example of reading the PCB temperature and setting or reading the threshold is given in code 5.17. Code 5.17: Example of some of the SiDet records. The DTYP field specifies that the SiDet library should be used. The value in the INP and OUT fields specifies what information is associated with the record. For example, getTemperature specifies that the temperature of the PCB is to be read from the frontend-board and stored in the VAL field of the record. record(ai, "$(P):getPCBTemperature") { field(DTYP,"SIDET") field(SCAN, "10␣second") field(INP,"getTemperature") field(PREC, 3) field(EGU,"◦C") } record(ai, "$(P):getThreshold") { field(DTYP,"SIDET") field(SCAN, "5␣second") field(INP,"getThreshold") field(PREC, 3) field(EGU,"V") } record(ao, "$(P):setThreshold") { field(DTYP,"SIDET") field(OUT,"setThreshold") field(EGU,"V") field(PREC, 3) field(DRVL, 0) field(DRVH, 2.5) } In addition, a new IOC shell command called MXSiDet_SetLogLevel has been written to set the logging level of the mxlog. As the device support, EPICS provides an interface for this purpose as well. After the appropriate C++ structures have been defined, they must be registered in EPICS. This is also done via a dbd entry with registrar(SetMXSiDetLogLevelRegistrar) 101 Chapter 5 - Development of the MAGIX Slow Control System Now the new IOC shell function can be used. To set the log level for all devices, the command MXSiDet_SetLogLevel("log_level") can be used. The strings trace, debug, info, warning, error, critical or off can be used as log_level. With the exception of off, each log level specifies the minimum level for the output. For example, if the level is set to info, warnings or errors will also be displayed. To set the logging level for only one class, a second parameter can be set MXSiDet_SetLogLevel("log_level","device_name") The strings SiDet, MUX, DAC, ADC, PCB or I2C can be used as device name. The full definition of this IOC shell command is shown in code C.13. Summary and Outlook After the SiDet library is connected to EPICS via a module, the silicon strip detector test stand can be fully controlled. The structure of the slow control was created in such a way that further devices, which are later required for MAGIX, can easily be integrated. In order to be able to control the test stand in the lab, a corresponding GUI was created in CSS. An example of one OPI can be seen in Fig. 5.10. Figure 5.10: CSS OPI for the silicon strip detector test stand. The Board Control display contains all the information associated with the SiDet frontend-board. The pressure in the chamber, the voltage and the current of the power supply are displayed in text fields. In addition to the PCB temper- ature, the temperature of the detector and the cooling plate for the frontend- board are displayed. For the two PT1000s, the resistances are also displayed. The threshold value of the DAC can be read or set with the OPI. To have an overview of the trend for all temperatures, a corresponding diagram is dis- played on the bottom of the OPI. 102 CHAPTER 6 Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C In this chapter, we will discuss the simulation of the cross section of the electro- disintegration reaction 16O(e, e′α)12C. The objective of the simulation performed as part of this thesis was to estimate the expected statistical errors of the electro- disintegration reaction of 16O for the experimental setup in Phase 1 and 2 of the planned measurements at MAGIX. Since no definite information on the efficiency of the detectors and the beam parameters of MESA is available at this time, background simulations could not be included in the simulation. In addition, the acceptances of the detectors were determined purely geometrically because of the efficiencies that still need to be determined. In the first section, we will get a general overview of physics simulations. For this purpose, we will take a closer look at the Monte Carlo integration, a powerful tool used for simulations. In addition we will discuss the general idea of simulating the cross section of a scattering experiment. Then, in Section 6.2 the simulation written within this thesis for the reaction 16O(e, e′α)12C will be explained. All necessary parts of the simulation as well as the analysis will be discussed. Finally, the results will be presented and discussed. 6.1 Overview of Physics Simulations Simulations have become powerful tools that can be used in a variety of ways. To list the multitude of possibilities is beyond the scope of this thesis. In general, one can say that simulations use the computing power of machines or even entire server systems to perform calculations based on models. The results of these simulations can or must then be processed and interpreted by the users. To understand the evolution of galaxies, for example one can simulate different scenarios using suitable models and by varying the input parameters. The results can then be compared with astrophysical observations. Another possible application is the simulation of an experiment. For example, if you want to estimate the expected 103 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C count rate in a detector for a scattering measurement, you can simulate this experiment. For this purpose, the cross section must be calculated for a given detector acceptance. To achieve this, you usually have to integrate the differential cross section. The desired count rates can then be determined from the results of the simulation. A very useful tool to perform such an integration within a simulation is the Monte Carlo integration. 6.1.1 Principle of Monte Carlo Integration The Monte Carlo (MC) integration is a useful tool to calculate the value of a multidimensional integral. In the following, we will see that the error of the MC integration scales like 1 √/ N, where N is the number of evaluations, regardless of the dimension. Even though the convergence of 1 √/ N is quite slow, MC integration is one of the preferred methods for evaluating integrals with high dimensions [Wei00]. For a function f : Rn → R, with n ∈ N, the mean value in a finite volume V ⊂ Rn is defined as [Mer21] 〈 〉 := 1 ∫ f vol( ) f(x) d nx . V V The mean value can be approximated using the formula [Mer21; Wei00] ∑N 〈f〉 ≈ 1 f(xi), N i=1 with uniformly distributed xi ∈ V ∀i. So, the integral can be approximated with [Mer21; Wei00] ∫ V ∑N I := f(x) dnx ≈ f(xi), V N i=1 with V ≡ vol(V ). This is called the Monte Carlo integral. The law of large numbers ensures that the MC integral converges to the true value of the integral [Wei00] V ∑N I = lim f(xi). N→∞ N i=1 The error of the MC integration can be described using the variance σ2(f) of the function f [Mer21; Wei00] ∫ σ2(f) : = 〈 (f〉(x)− I)2 dnxV = f 2 − 〈f〉2 . Therefore, we get [Mer21(; Wei00]:∫ )2V ∑N 2 f(xi)− dn = V I x σ2(f). V N i=1 N This means that the average error of the MC integration is given as √V σ(f). N As result the MC∫integration can be written as∑N √ f(x) dnx = V f(xi)± √ V 〈f 2〉 − 〈f〉2. (6.1) V N i=1 N 104 6.1 Overview of Physics Simulations This shows that the error of the MC integration scales like 1 √/ N and is independent of the dimension n. The exact value of the variance cannot be determined, but can be approximated using [Wei00] 2( ) ≈ 1 ∑N σ f (f(x 2 2i)) − 〈f〉 . (6.2) N i=1 In practice the points xi are calculated using random numbers. Since true random numbers do not exist on a computer the so called pseudo-random numbers are used. Pseudo-random numbers are not generated randomly, but are generated deterministically in the computer by a certain algorithm. Any sequence of pseudo- random numbers should appear randomly to someone who does not know the algorithm. Pseudo-random number generators can establish correlations between sequentially generated numbers. Balling points can be generated in this way. This problem must be considered when selecting a pseudo-random number generator. To avoid errors caused by the generator, it is useful to perform the same MC integration with different pseudo-random number generators [Wei00]. Furthermore, quasi-random numbers can be used. Quasi-random numbers are not random numbers, but are generated by a numerical algorithm and designed to be distributed as uniformly as possible to reduce the errors in the MC integration. Even though quasi-random numbers are designed to sample an n-dimensional space as uniformly as possible, they are not generally preferable to pseudo-random numbers. Only if the integrand is sufficiently smooth it makes sense to use the quasi-random numbers [Wei00]. For more information on pseudo-random and quasi-random numbers please refer also to [Knu97; Nie92]. Now, we will perform a simple example. Therefore, the area of a circle with radius r = 1 will be calculated using a MC integration. The area is given as A = πr2 = π = 3.1415926 . . . Using the function  ( ) = 1 for x2 + y2 ≤ 1f x, y 0 otherwise, the area can also be calculated a∫s 1 ∫ 1 A = f(x, y) dx dy . −1 −1 Using a MC integration the area can be approximated as ≈ 4 ∑N A f(xi, yi), N i=1 with the random numbers xi, yi ∈ [−1, 1] and V = 2 · 2 = 4. The integration was performed with different numbers of points N . Two different random num- ber generators were used, one pseudo-random generator and one quasi-random generator using the Sobol sequence. Figure 6.1 illustrates the distribution of the random numbers for both generators. The results of the MC integration are given in Table 6.1. In this table also the average error is given, approximated using Eq. (6.2) to calculate the variance. As we can see in this example, the error decreases as the number of generated points increases. In general, one way to improve the MC integration result is to 105 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 −1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1 (a) Pseudo-random: 1000 points (b) Pseudo-random: 10000 points 1 1 0.5 0.5 0 0 −0.5 −0.5 −1 −1 −1 −0.5 0 0.5 1 −1 −0.5 0 0.5 1 (c) Sobol sequence: 1000 points (d) Sobol sequence: 10000 points Figure 6.1: Illustration of the distribution of the random numbers using a MC integration to calculate π. Two different generators were used, a pseudo- random generator and a quasi-random generator using the Sobol sequence. This example shows how the sobol sequence is used to uniformly sample the space. increase N as much as possible. However, since the error converges like 1 √/ N, one quickly gets into orders of magnitude where computations take much more time without making any significant contribution to the improvement. On the other hand, the variance can be reduced using different techniques. One of these techniques is the importance sampling. For simplicity, we assume n = 1. The idea is to redu∫ce the varian∫ce by changing th∫e integration varaiables [Wei00]: ( ) d = f(x) f(x)f d x ( ) p(x) dx = ( )dP (x),p x p x with ( ) = dP (x)p x d . The mean value of the integral is then calculated as [Wei00]x ∑N E := 〈 〉 ≈ 1 f(xi)f , N i=0 p(xi) with xi = P−1(yi) and yi ∈ V ′ = P (V ) the sampling point of the MC integration. Then, the error of the MC integration be(com)es [Wei00]′ √V fσ . N p 106 6.1 Overview of Physics Simulations Table 6.1: This table shows the results of the calculation of π using a MC integration. The first column indicates the number of grid points used for the calculation. The error is calculated using Eq. (6.2). The difference ∆rel represents the deviation in percent. Two random number generators were used, a pseudo-random generator and a quasi-random generator based on the Sobol sequence. In the case of the pseudo-random generator, it can be seen that the result for 100 sample points is closer to the true value than for 1000 or 10 000 points. Since the range is covered randomly, such effects may well occur. In the case of the Sobol sequence, the results improve continuously as the number of events increases. This is to be expected in this case, since the range is covered as uniformly as possible. In both cases, the results improve as expected for large numbers. Pseudo-Random Sobol Sequence N πcalc errcalc ∆rel[%] πcalc errcalc ∆rel[%] 100 3.160 00 0.245 24 0.585 92 3.000 00 0.264 58 4.507 03 1 000 3.192 00 0.076 23 1.604 52 3.112 00 0.079 47 0.941 96 10 000 3.166 00 0.024 45 0.776 91 3.137 20 0.024 82 0.139 82 100 000 3.136 72 0.004 65 0.155 10 3.141 04 0.004 62 0.017 59 1 000 000 3.142 34 0.001 71 0.023 66 3.141 67 0.001 71 0.002 40 10 000 000 3.141 63 0.000 28 0.001 25 3.141 59 0.000 59 0.000 19 The relevant quantity for the error is thus the function f(x)/p(x). The variance can be greatly reduced if p(x) is chosen to be as close as possible in form to f(x). The variance can be approxima(ted)as [Wei00]( )2 2 f ∑Nσ ≈ 1 f(xi) 2 p N i=0 p(xi) − E . The function p(x) must be chosen carefully because it can also increase the vari- ance and thus the error. For example, if the function p(x) is zero at one point x̂ and f(x) is not, then the variance becomes large for each xi ≈ x̂. As an example of importance sampling, we now consider the integral of the func- tion f(x) = 12 on the interval [ε, 10] w∫ ith a fix ε ∈ (0, 1] small:x 10 = 1I ε x2 dx . The function f(x) converges to zero for large x. For x→ 0 it diverges to +∞. The dominating part of this integral is the integral on the region [ε, 1]. Analytically the solution to this integral∫is10 = 1 [ ]10 d = −1 = 1 − 1I 2 x 10 .ε x x ε ε For ε = 0.001 this becom∫es I = 999.9. The varia[nce bec]omes huge since〈 〉 1 10 1 1 10 1 f 2 = (f(x))2 dx = − ≈ V ε 10− ε 3x3 ε 30 3 . ε So, the variance is approximat〈ely 〉 1 1 σ2(f) = f 2 − 〈f〉2 ≈ 30 3 −ε 100 .ε2 This leads to a problem using a MC integration to solve this integral. Using a sample xi on the interval [ε, 10] only one of ten parts will cover the dominating 107 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C area below 1 (see Fig. 6.2). In Table 6.2 the results of such an integration can be found. As we can see, the error given is very large, and even with 10 000 000 generated events, the result is incorrect by more than 1%. Now, we will use importance sampling to improve the variance and thus the MC integration. For this purpose, we choose p(x) = 12 = f(x), with P (x) = − 1 .x x Then the integral becomes∫ 1/ε = d = vol([0 1 1 ]) = 1 1I P . , /ε − 0.1 ε 10 , and the variance becomes ( ) 2 fσ = σ2(1) = 0. p This is a perfect case, since only one sampling point is sufficient now to calculate the integral to get the true value. This example is only intended to illustrate the functionality of importance sampling. In practice, the MC integration is used to solve integrals that cannot be solved analytically. Thus the choice p(x) = f(x) is not possible, because otherwise the integral could be solved without MC. In this case, a function p(x) should be chosen which describes the form of f(x) as close as possible. 2 f(x) = 1 x2 1.5 1 0.5 0 0 2 4 6 8 10 Figure 6.2: The function f(x) = 12 diverges for small x. A sample in thex interval [ε, 10] sufficiently covers the range above 1, but not the range below. This leads to a problem when calculating the integral with the MC integration. 6.1.2 General Idea of a Cross Section Simulation for a Scattering Ex- periment In this section we will take a close look on the general idea how to simulate the cross section for scattering experiments using the MC integration. The goal of such a simulation is for example to estimate the count rate for a specific detector or to determine the expected statistical errors for a dedicated experiment. In all these cases an integration of the differential cross section is needed. However, we are not looking for the total cross section, but for the cross section in small areas, e.g., in a specific window of a detector∫. The cross section of a specific set Ωi ⊂ Ωcan be calculated with σi := dσ dΩ . Ωi dΩ 108 6.1 Overview of Physics Simulations Table 6.2: This table shows the results of calculating the integral of the function f(x) = 1 2 over the interval [ε, 10]. The true value is I = 999.9 for ε = 0.001. Even for 10x million sample points, the result of the MC integration is deviates by more than 1%. The calculated error for MC is large because the variance is large. Therefore, to better calculate the integral, the variance must be reduced. One method for this is importance sampling. N I errcalc ∆rel [%] 1000 198.42 25 634.80 80.16 10000 257.07 43 503.59 74.29 100000 826.12 897 671.77 17.38 1000000 851.14 258 797.36 14.88 10000000 982.92 97 977.15 1.70 Since the geometrical description of a detector area can be difficult, this formula is modified in a more general form using the acceptance function A(Ω). This describes the efficiency, 0 for not det∫ected and 1 for full acceptance: := dσσA dΩA(Ω) dΩ . (6.3)Ω This formula allows us to calculate the cross section in any possible detector setup. Only the acceptance needs to be defined properly. To calculate the exptected number of events N for a given d∫ete∫ctor setup within a time interval I we can use = dσNA dΩA(Ω)L dΩ dt ,I Ω where L is the luminosity. F∫or time indepen∫dent reactions this becomes = dσNA dΩA(Ω) dΩ · L dt = σ · L.∫ AΩ I The part L := I L dt is called integrated luminosity. For simplicity, we assume that the luminosity is constant, so we get L = L · I. To determine the count rate, the integral in Eq. (6.3) is estimated using a MC integration. As explained in Section 6.1.1 the integral Eq. (6.3) can be approximated as ∫ ∑N σA = dσ (Ω) dΩ ≈ vol(Ω) dσdΩA dΩ(ωi) · A(ωi), (6.4)Ω N i=1 for a set ωi ∈ Ω of randomly generated events. To perform such a MC integration different parts need to be defined. The first step is to create a random set of events ωi ∈ Ω through an event generator. This can be divided into two parts, the initial state particle generator and the final state particle generator. 6.1.3 Initial State Particle Generator Each reaction can be described using a Feynman diagram. The initial state par- ticle generator will produce all incoming particles of such a Feynman diagram. Random numbers may be included at this point. For example, to randomly gen- erate the starting point, direction or momentum of a particle. These values can be distributed differently, e.g. homogeneous, Gaussian, linear or Poisson. For example, in a scattering process the beam position may be Gaussian distributed. 109 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C For a fixed target of length d and homogeneous density, the target particle can then be generated along the path of the scattering particle in the range [−d/2, d/2]. How the initial particle generator looks like in detail depends on the experimental setup and the simulation itself. 6.1.4 Final State Particle Generator After the initial particles are generated, the final state generator generates the parameter of the outgoing particles of the Feynman diagram. They are generated according to the Feynman rules and in agreement with the conservation laws. The reaction plays a decisive role, since it determines possible values for the outgoing particles. The integral or the integration ranges determine which parameters must be generated randomly. The number of different random parameters corresponds to the number of degrees of freedom of the reaction. If other parameters should be generated randomly, a corresponding variable transformation must be applied to the integral. This can be useful for various reasons and must be adapted to the problem. It is important to mention that the random numbers must be independent. Therefore, such transformations must be performed carefully. At this point, one would then also include importance sampling. The weight wi of the event is calculated as wi = |det(J(ωi))| · V, with J the Jacobian matrix of the variable transformations and the volume ele- ment V . The volume element of the integral results from the parameter ranges which are used to generate the random numbers. In the example of elastic scattering there are only two degrees of freedom, the scattering angle θ as well as the rotation angle φ. From there all other parameters of the outgoing particles can be calculated. Instead of generating θ ∈ [0, π], it is more efficient to generate the value cos(θ) ∈ [−1, 1] through the variable transformation sin(θ) dθ = d cos θ on the integral. Furthermore, we have [Pov+15] d ∝ 1σ ( ) sin4 θe2 for the cross section of elastic scattering. Thus we know that small scattering angles are preferred. According to importance sampling a transformation p(sin2(x)) = 1sin4(x) reduces the variance and improves the effectiveness of the MC integration. To further increase the effectiveness of the MC integration, it is important to limit the range of randomly generated parameters in advance. This is to avoid generating values in ranges that are not relevant to the integration. For example, if it is known that a particular detector can only detect particles in a certain parameter range, the integration volume should be limited to this range to save expensive computation time. 6.1.5 Physics Model Calculations After the events have been created it is necessary to calculate the physical model. At this point the value dσdΩ(ωi) is calculated by using the values generated in the event generator. If the differential cross section is known, it can easily be 110 6.1 Overview of Physics Simulations calculated. However, in most cases this will not be the case. Therefore, it is necessary to use an adequate model to calculate the differential cross section. At this point, for example, a simplified model can be used. However, it is also possible to approximate the differential cross section from values obtained from fitting existing data. The user is free to develop a suitable model. It is only important that the value of the differential cross section can be calculated for the respective events. This part is probably going to change and evolve over the duration of an experiment in order to improve the MC integration result and thus the desired predictions. With the physics model calculation, the weight of the event is expanded as follows: wi = |det(J( ))| · · dσ ωi V dΩ(ωi). 6.1.6 Acceptance Simulation In the final step to calculate the weight, the detectors become a part of the simulation. For each event, it must be calculated whether it can be detected by the detector system. If the event is not detected, the function A(ωi) takes the value 0. If an event is detected with absolute certainty, the value is 1. By characterizing the detectors, the efficiency of the detectors can be determined and the acceptance function can be adjusted accordingly. How the acceptance function is calculated in detail depends strongly on the detector system and its design. Simple models may be designed to geometrically calculate whether the detector area is traversed by the particle, and output the value 1 if it is. However, more complex models are also possible. For example, the track of a particle in a spectrometer could be followed to calculate the focal plane location. Then, the acceptance could be calculated, taking into account the efficiency of the focal plane detector. It is also possible to combine several detector systems into one system using logical AND or OR operations. This would correspond to a detector array or a coincidence for example. No matter how the acceptance is simulated, in the end the function A(ωi) results in a value in the interval [0, 1] which corresponds to the probability that an event is detected by the system. The acceptance also contribute to the weight of the event: wi = |det(J(ωi))| · · dσ V dΩ(ωi) · A(ωi). 6.1.7 Calculation of the Cross Section After all events and weights are calculated they should be stored in a dedicated way. It is advisable to choose a data format that is designed for large amounts of data. For example, one can use the ROOT library developed by CERN to store the data in a tree structure [ROOT]. This can later be read and processed by the user’s own analysis or by an analysis based on ROOT. The total cross section can finally be calculated as = 1 ∑N σA wi. N i=1 At this point, however, it is usually not the total cross section that is of inter- est, but rather how the cross section is distributed over small parameter ranges. Histograms can be created out of the events and the weights for example. Each bin of a histogram then corresponds to the integral over a small parameter range 111 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C and thus this represents the integrated differential cross section over this range. By multiplying the luminosity to each bin the expected count rates is given. The extent of the analysis depends heavily on what information a user would like to receive from the events and the associated weights. 6.2 Implementation of the S-Factor Simulation In this section we will take a closer look at the simulation of the measurement of the electro-disintegration reaction 16O(e, e′α)12C at MAGIX. We will focus on the Phases 1 and 2 of the measurement. For the simulation a C++ framework developed in the MAGIX group was used. Some parts like the initial state generator and an acceptance simulation of the spectrometer were already included in the framework. All other parts were devel- oped and integrated into the system during this work, especially the final state generator and the model. In addition, I participated in the general development of this software. Besides the development of a physics library based on the one of ROOT, I also worked on the generators and the acceptance classes. Since the description of all this work would go beyond the scope of this thesis, we will limit ourselves here to the development of the simulation for the S-factor and only describe its most important points. When creating simulations, a consistent coordinate and unit system must be spec- ified. In Table B.9 the coordinate system of the target and the generator system used for the simulation is specified. In addition, the base units defined in Ta- ble B.10 are used in the simulation software. 6.2.1 Overview of the Initial State Generator As mentioned before, some initial state generators already existed in the MAGIX framework. For the generation of the beam particle the ideal beam generator was used. As the name implies, the beam particles are ideally generated, i.e. no param- eters are randomly assigned. The mass and the charge of the produced particle is loaded from an appropriate particle list using the MC particle numbering scheme, also known as particle identification (PID), [Zyl+20, section 44]. In a next step a starting point is associated to the particle. Since the beam particles are assumed as ideal and thus there is no deviation from the ideal beam, we have x = y = 0. Then, the beam energy and the direction are defined as a four-momentum. For example an electron (PID 11) with a beam energy of 105MeV will have the mass me, charge 1, together with the starting point ~x0 and a four-momentum Kµ as:     =  00   105 0  ~x  , Kµ0 =  0 −∞ √   . 1052 −m2e The −∞ indicates internally that the particle is generated in the source. To generate the target particle a homogeneous cube generator was used. A uniform particle distribution in a 3-dimensional box with widths dx dy and dz around the origin is assumed. In the case of the simulation for the S-factor, the widths dx=dy=0 and dz=2 are used. In addition, the generator assumes that the target particles are at rest. Similar to the beam generator, the mass and the charge of the particle are loaded using a MC particle numbering scheme. For example 112 6.2 Implementation of the S-Factor Simulation an oxygen target particle (PID 1000080160) will have the mass M16 with chargeO Z = 8, together with the starting point ~x0 and a four-momentum P µ  16 as:O =    0 M 160 OPµ =  0~x0 , 16 0   , O  z 0 where z ∈ [−1, 1] is randomly generated. 6.2.2 Development of the Two-Body Final State Generator The outgoing particles: the scattered electron, the recoiled α-particle and the 12C particle have to be generated in the final state generator. The differential cross section of the electro-disintegration reaction 16O(e, e′α)12C has five degrees of freedom Eq. (3.39): dσ dωdΩ′edΩcms , α where ω = Ee − E ′e, dΩ′e = d cos(θe) dφe and dΩcmsα = d cos(θcmsα ) dφcmsα . It is easy to see that dω = dE ′e. For the simulation we split the Feynman diagram Fig. 3.1 and thus the calculations into two parts, see Fig. 6.3. Kµ(E ,~e k) K′µ(E′e,~k ′) e− e− P µ 12 (E , p~ )C 12C 12C + 16O∗ 12Cγ∗ Pµ∗ (E∗, p~∗) α 16O 16O∗ Pµα (Eα, p~α) Pµ16 (E , p~ ) P µ(E , p~ ) O 16O 16O ∗ ∗ ∗ Figure 6.3: The Feynman diagram of the electro-disintegration reaction of 16O (Fig. 3.1) can be separated into two parts. The left diagram represents the formation of the compound nucleus state 16O∗. The right one represents the decay into α and 12C. Instead of the two parameters E ′e and cos(θe), the invariant parameters W and q2 are used for the MC integr(ation. T)hus a(var)iable transformation Φ E ′Φ : ecos( ) 7→ W ′ 2 (Ee, cos(θθ q e)),e is necessary. In Section 3.8 w√e find W = √2ωM16 +M2 2O 16 + q (6.5)O = 2(Ee − E ′e)M16 +M216 + q2,O O where the four-momentum transfer is given as Eq. (3.4) q2 := 2m2e − 2EeE ′e + 2k√k ′ cos θe √ (6.6) = 2m2e − 2EeE ′e + 2 E2e −me E ′ 2e −me cos θe. 113 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C To determine the Jacobian matrix JΦ the partial derivatives of the transformation have to be calculated ∂W M ′ = − 16O ∂W ∂Ee W ∂ cos(θe) = 0 ∂q2 2 ′ = −2 k ∂q E + 2E ′e · cos(θe) = 2kk ′. ∂E e ′e k ∂ cos(θe) This results in 2M16 kk ′det(J ) = − OΦ . W The weights for the eve∣nts (are t)h∣en defined as = ∣∣w det J−1 ∣∣Φ · vol( 1V ) = |det(JΦ) · vol(V )| = W2 · vol(V ),M16 kk ′O with the integration volume ∫ vol(V ) = dW dq2 dφ dΩcmse α . Since the differential cross section is pr(oport)ional to the Mott cross section wehave dσ dσ 1 d dΩ′ dΩcms ∝ω dΩ′ ∝ q4 .e α e Mott So, events with low q2 are preferred. This requires a further variable transforma- tion according to importance sampling. Therefore we choose ( 2) := 1p q (q2)2 . Then we get dq2 = q4 dP with P ∈ {1/q2}. Finally, the weight is given as W w = q4 · ′2 ′ · vol(V ).M16 kkO In the case o∫f an connected volume V ′ the integration volume becomes vol(V ′) = ∫ dW dP dφ dΩ cms ∫ e αW P ∫ φ ∫max max e,max cos(θcmsα,min) ∫ φcmsα,max= dW dP dφe d cos(θ cmsα) dφα . Wmin Pmin φ min cos(θcms cmse, α,max) φα,min With ∫ P ∫max q2max ν := dP = p(q2) dq2 = 1 1 2 q2 − 2 ,Pmin qmin min qmax we get ( ) ( ) vol(V ′) = ν · (W −W ) · (φ cms cms cms cmsmax min e,max − φe,min) · (cos θα,min − cos θα,max ) · (φmax − φmin). For each event the parameters are generated as a random value. For example, if uW is a random number in the range [0, 1] the invariant mass of an event is calculated as W = Wmin + uW · (Wmax −Wmin). 114 6.2 Implementation of the S-Factor Simulation In the case of four-momentum transfer the value is calculated as q2 = 11 , 2 − u 2 · νq qmin with a random number uq2 ∈ [0, 1]. With the set (W, q2, φ , cos(θcms), φcmse α α ) each four-momenta of the outgoing parti- cles can be determined. In addition, a starting point is defined for each particle. The charge and the mass of each particle is loaded from a particle list using the PID. All this information is needed in the further steps of the simulation. The starting point for all outgoing particles will be defined as the interaction point from the beam particle with the target particle. In this particular simulation this is equal to the starting point of the target particle xi = x0. The four-momentum of the electron K′µ is defined by (E ′, cos(θe), φe). The values E ′ and cos(θe) are calculated by using the formulas Eqs. (6.5) and (6.6). In the cms the intermediate state Pµ∗ (E∗(, p~∗))is given as Pµ∗ = W ~0 . To calculate the four-momentum of α and 12C we can use the formulas of the two-body decay from [Zyl+20, chapter 48]: 2 2 2 cms W −M= 12 +M C αEα 2W Ecms cms12 = W − EC √( α )( ) W 2 − (M +M )2 W 2 − (M −M )212C α 12C α pcms cmsα = p12 =C 2 .W In the cms we have p~α = −p~12 with a homogeneous angular distribution. InC this particular simulation the range used for the cms particle generation is set to cos(θcmsα ) ∈ [−1, 1] and φcmsα ∈ (−π, π]. In the final step the four-momentum of the α-particle and the 12C is boosted into the lab frame. At the end of the final state generator the four-momenta K′µ,Pµα and Pµ12 in theC lab frame, the interaction point ~xi and the weight w is calculated for each event. This information is passed to the model calculation in combination with the PID of each particle. 6.2.3 Development of the S-Factor Model Calculation The cross section Eq. (3.39) must be determined for each event in the model calcu- lator. Some assumptions and simpl∑ifications are made to calculate the proportion ṽKR cms K . K Since the four-momentum transfer Q2 will be small (O(10−4 GeV2) in Phase 1; O(10−9 GeV2) in Phase 2), the virtual photon is approximated as quasi-real. Therefore, the longitudinal and both interference parts are neglected in the current version of the simulation: ṽL = ṽL = ṽL = 0. 115 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C So, only the transverse part is calculated. The same assumption is made to determine the nuclear response function RcmsT , so that Eqs. (3.54) to (3.56) are used to calculate the value of RcmsT . At this point, the value of SE1(Ecms) and S (Ecmsα E2 α ) are also taken into consideration. For this purpose, the AZURE2 software [Ud15] was used to extrapolate the S-factor of the ground state transition for E1 and E2 in the cms energy range W = 0.01 − 20 MeV. Therefore, the AZURE2 software was configured with the parameters of the supplementary material provided by [deB+17]. The output of AZURE2 is stored in a file containing the cms energy and the value of SE1 or SE2. In the extrapolation, different step widths in different energy ranges were chosen (see Table B.11). The produced files of the AZURE2 software are loaded into the model calculator. To calculate the S-factor value for a given Ecmsα , the calculator searches for the two entries which cms energy is closest. The value of the S-factor is calculated by a linear approximation based on the two entries. Since the loaded list is sorted, the value can be determined quickly. Finally, the weight is calculated as w = q4 · W2 ′ · vol( ′) · dσV M16 kk dωdΩ′edΩcms , O α with dσ M ′2αM12C βe d dΩ′ dΩcms = 8 3 · · p cmsσ · ṽ Rcmsα Mott T T ,ω e α π W βe and  ~c · pcms ·W · e−2πη  Rcms = α · S [P (cos(θcmsT 2 cms E1 0 ))− P2(cos(θ cms))] α · Eγ ·[MαM α α12C · Ecms α ] + S cmsE2 P0(cos(θα )) + 5 P (cos(θcms))− 127 2 α 7 P4(cos(θ cms α )) 6 √ + √ cos (φ (E)) S S [P (cos(θcms))− P (cos(θcms))] . 5 12 E1 E2 1 α 3 α  The phase shift was approximated equal to Eq. (2.30) as cos (φ12(E)) = √ 2 η2 . + 4 6.2.4 Implementation of Acceptance Simulation After generating an event and calculating the weight, the value of the acceptance function A must be determined. Therefore, the detector setup must be simulated. Each detector is implemented as an ideal version in the MAGIX framework as a separate C++ class. The acceptance function of each detector returns the value 1 if the particle is detected. Otherwise it returns the value 0. In this section we will discuss how the different detector systems are integrated into the simulation. Each detector is individually designed to suit the specific requirements. After a review of the individual detectors for the electrons and the α-particles, the linking of several detectors as a set or as coincidence is discussed. 116 6.2 Implementation of the S-Factor Simulation Spectrometer The acceptance for the spectrometers was already implemented to the frame- work. The spectrometer acceptance is a 4-dimensional space with the parameters k, θ, φ, y in the spectrometer coordinate system. The spectrometer acceptance was implemented as a binary tree as discussed in [Mül14]. Each level of the tree represents a bisection of a coordinate and one moves to the next level after it- erating over all coordinates alternatingly. Each evaluation represents a bisection of the available phase space in that coordinate, so that after iterating over all coordinates, the search restricts the phase space of each node to an hypercube of dimension n and volume 12 compared to the previous iteration. Any leaf that isn completely inside or outside the acceptance space is not subdivided further. This results in different volumes for each leaf in the different iteration steps. The result of the iterations indicates whether the particle hits the focal plane. In this case the acceptance returns A = 1, otherwise A = 0. Zero Degree Tagger The zero degree tagger is implemented as a purely geometric detector in the sim- ulation software. Each particle generated in the final state generator is passed to the acceptance class of the zero degree tagger to test whether any of these particles will be detected. For each particle, the acceptance is calculated separately. First, the detector verifies the charge of the particle. This must be negative. The next step is to confirm that the particle’s momentum is within the momentum accep- tance range. It is assumed that any electron with a scattering angle below θmax is focused by the first deflecting magnet onto the active area of the detector system. Thus, the last step is to prove that the scattering angle is less than θmax. If one particle passes all three tests, the zero degree detector returns A = 1, otherwise A = 0. The accepted momentum range as well as the maximum angle acceptance can be configured in the initialization phase of the simulation. Silicon Strip Detector A silicon strip detector array is used for the detection of the α-particles. This array consists of a number of individual configured silicon strip detectors. Similar to the acceptance simulation for the zero degree tagger, the simulation of such a silicon strip detector is purely geometric. Each silicon strip detector is configured with a set of parameters that can be specified in a configuration file that is loaded into the simulation during the initialization phase (see code D.3 and D.4). There, the minimum accepted particle energy, the charge sensitivity, the rotation angle, the distance to the target center dS, and the length lS as well as the width wS of the detector can be specified. In addition, each detector can be restricted to a list of particles. For this purpose, a list of PIDs is used to configure the detector. For each particle calculated in the final state generator, the acceptance class of the silicon strip detector is used to verify whether it will be detected. If a PID list is set, it is first checked whether the particle’s PID is listed there. If not, it will not be accepted by the detector. In the next step, the energy and the charge are tested. In other words, it is checked if the energy of the particle is above the minimum accepted energy value and if the charge of the particle is positive. In the last step, it is proved whether the particle hits the detector area. For this purpose, a straight line is formed with the interaction point as the starting point and a direction parallel to the three-momentum of the particle. The entire system is then transformed so that the detector is located in the x-y plane with z = dS. 117 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C Then, the x and y positions of the line are determined for z = dS. In the case |x| < wS/2 and |y| < lS/2 the particle hits the detector. If one of the particles hits the detector, the acceptance class makes A = 1, otherwise A = 0. Acceptance Set and Coincidence To simulate a set of detectors or the coincidence of two detector systems, addi- tional acceptance functions are implemented into the simulation framework. The acceptance for a set of detectors is calcu∏lated as follows A = 1− (1− Ai). i Where Ai are the individual acceptances of the detectors. In the current version of the simulation, this gives A = 1 when even one detector can accept one of the particles. This was used for the simulation of the silicon strip detector array. The acceptance for a coincidence of sev∏eral detectors, on the other hand, is cal-culated as A = Ai, i where Ai are the individual acceptances of the detectors involved. In the cur- rent version of the simulation, this gives A = 0 when even one detector cannot accept any of the particles. This was used to simulate coincidence between the spectrometer (or zero degree tagger) and the silicon strip detector array. 6.2.5 Analysis: Calculation of Expected Count Rate After an event is generated, the weight for this event is estimated, and the ac- ceptance for the event is determined, the event is passed to the analysis. This processes the data depending on the information to be obtained from the simu- lated data. In general, the result of the MC integration gives the total integrated cross section for a given acceptance A. 1 ∑N σA = wi, N i=1 where wi denotes the weight for each event, and N the number of total events. This is only one single value and offers rather less information. The basic idea is to split the integration space into small volumes where the differential cross section can be assumed to be constant. In the one-dimensional case such an integration can be written for example∫asE+∆E ( ) = dσ ( ) d ≈ dσσ E d E E d (E) ·∆E.E E E If a parameter is entered into a histogram together with the associated weight for each event, a weighted histogram is obtained. After all events have been written into the histogram, it must be scaled by the factor 1/N. In this particular case, each bin represents the integrated differential cross section, integrated over the parameter range on which that bin is based. An example can be found in Fig. 6.4. There, the cms energy of the α − 12C system is entered in a one-dimensional histogram with the associated weight for each event. The left y-axis shows the value of each weighted bin and represents the cross section on a small energy width ∆E = 0.069 MeV. The right y-axis of this histogram represents the number of 118 6.2 Implementation of the S-Factor Simulation expected reactions per energy width ∆E. The number of reactionsNr is calculated using Nr = σ · L, with the integrated luminosity L = L · I, where a constant luminosity L = 1034 cm−2 s−1 integrated over the time duration T = 4 weeks = 2 419 200 s was assumed. 10−4 1012 10−6 1010 10−8 108 10−10 106 10−12 104 10−14 102 10−16 100 10−18 10−2 0EG 1 2 3 4 5 6 7 Ecms[MeV] Figure 6.4: Histogram representing the weighted cms energy Ecms for Phase 2. Each bin represents the integration over a small energy width of ∆E = 0.069 MeV. The left y-axis represents the cross section while the right y-axis represents the expected number of reactions. Also multi-dimensional histograms can be produced. Figure 6.5 shows a two- dimensional histogram representing the hitmap for the silicon strip detector array of Phase 1. The histogram is scaled by the same integrated luminosity and repre- sents the expected number of detected events in coincidence with the spectrometer. Some of the histograms are produced through the simulation and are stored in a ROOT file so that they are available after the simulation [ROOT]. All histograms can be configured in the initialization phase of the simulation, for example to set the parameter range or the number of bins (see code D.2). The analysis is started directly with the simulation and processes the events as soon as they were generated. This has the advantage that the results are available directly after the simulation in the form of histograms and can be used for further processing. How- ever, one disadvantage is that the raw data of the events and also the weights are not available after the simulation and cannot be regenerated from the histograms. This means if changes are made to the analysis, the entire simulation has to re-run to store the desired information. Depending on the simulation and the number of events generated, this can take a long time. 119 σ[b] N Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C 5 3 10 2 104 1 103 0 102 −1 −2 10 −3 1 1− −0.5 0 0.5 1 Cos(θ) Figure 6.5: Hitmap for the silicon strip detector array. It shows the expected number of events detected on the surface of the different silicon strip detectors for one possible configuraton in Phase 1. Therefore, all data generated in the simulation was additionally stored in a file. Thus it is available for later analyses. For this purpose, all data that can be obtained from the events are stored in a tree structure. Therefore, TTree from the ROOT package was used [ROOT]. A separate branch is created for each particle so that the information can be stored and retrieved individually. The structure for all particle branches is identical and contains the vertex, the mass, the four-momentum and the PID of the particle. In this particular case, the vertex corresponds to the interaction point and is therefore identical for all particles. In addition to the initial and final state particles, the intermediate state particles, γ∗ and 16O∗, were also stored in the ROOT file. Additionally, to the particle in- formation, a further branch containing the event-related data is created. Besides the calculated weight, the parameters randomly generated in the final state gen- erator are also stored in this branch. The explicit specification of the two TTree structure used can be found in code D.1. The produced ROOT TTree was used to perform more complex analysis on the data, such as calculating the exptected statistical errors for the measurement of the E1 and E2 ground state distribution of the S-factor measurement. This was done in several steps. In the first step the data is splitted into small cms energy ranges accordingly. For example the cms energy range [0.3 MeV, 3 MeV] was splitted in smaller ranges [Ei, Ei+1) with E0 = 0.3 MeV and Ei+1 = Ei + ∆E for ∆E = 0.05 MeV. For each energy range a histogram was produced entering cos(θcmsα ) with the coresponding weights. To get the distribution of expected detected events over the cms angle of the α-particle, each histogram was scaled with the factor L/N, with N beeing the total number of generated events. The number of particles detected in a time intervall T with time independent particle flux and time independent detector efficiency is Poisson distributed [Lyo86]. Therefore, the error for each bin k was approximated by using the formula√ Nk + 2, (6.7) 120 Φ [rad] 6.2 Implementation of the S-Factor Simulation where Nk is the number of events of bin k. The +2 in the square root is used to also include the empty bars. Figure 6.6 shows an example of a histogram including the approximated errors for Phase 2. 40000 35000 30000 25000 20000 15000 10000 5000 0 −1 −0.5 0 0.5 1 cos(θcmsα ) Figure 6.6: Number of expected events distributed over the cms angular of the α-particle in the cms ene√rgy range Ecms = 1.3 − 1.4 MeV. The error of each bin k is calculated using Nk + 2 where Nk is the number of events of bin k. In addition one histogram representing the isotropic generated value cos(θcmsα ) using weight w = 1 was produced. For this histogram the data of the entire energy range was taken into account. This histogram is also scaled by L/N and the error for each bin was calculated using Eq. (6.7). Figure 6.6 shows an example of this histogram including the approximated errors. Even if the cms angle of the α-particle is isotropically generated the result of this histogram looks different. This is due to the acceptance, as the projection of the silicon strip detectors on the surface of the unit sphere is not conformal. In Fig. 6.5 one can already see that for the assumed detector setup the acceptance in the range close to ±1 for cos(θcmsα ) is higher. In the second step the statistical error of the MC integration must be eliminated. Therefore, each histogram is normalized by the isotropic histogram. Technically, this means that the value of each bin of a histogram is divided by the corresponding value of the bin of the isotropic histogram. The errors are calculated by simple error propagation. As a result, for each cms energy range, one obtains a histogram representing the distribution of the cross section σ for the cms angle of the α- particle. An example of one of these produced histograms can be found in Fig. 6.8. In the last step each of the produced normalized histograms were fitted using Eq. (2.31) with the fit parameters a := σ σE1 and b := E2/σE1 as discussed in Sec- tion 2.3.1. The phase shift was calculated using Eq. (2.30). The result of such a 2-parameter fit can be found in Fig. 6.8. As result of each fit one gets the values σE1(Ei) and σE2(Ei) and the corresponding errors ∆σE1(Ei) and ∆σE2(Ei). The error ∆σE1(Ei) is equal to the error ∆a of the fit parameter. The error for E2 was calculated using error propagation ∆σE2(Ei) = σE1(Ei) ·∆b+ b ·∆σE1(Ei). The errors correspond to the statistical errors that are expected for the measure- ment with an identical detector setup. Figure 6.9 shows the results of this analysis 121 Nr Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C 7·1013 6·1013 5·1013 4·1013 3·1013 2·1013 1·1013 0 −1 −0.5 0 0.5 1 cos(θcmsα ) Figure 6.7: The histogram represents the isotropically distri√buted cms angle of the α-particle. The error of each bin k is calculated using Nk + 2 where Nk is the number of events of bin k. 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 −1 −0.5 0 0.5 1 cos(θcmsα ) Figure 6.8: The histogram represents the weighted cms angle of the α-particle for the energy range Ecms = 1.3− 1.4 MeV corresponding to the cross section distribution. The error of the MC integration is elimated as described in the text. The data is fitted using Eq. (2.31). for the different Phases 1 and 2 for one specific detector setup. To cross-check the validity of the simulation results, an independent simulation was performed within the MAGIX group based on the theoretical assumptions and calculations described in this thesis. It confirmed the results, that will be discussed in the next section. 6.2.6 Discussion of the Simulations Results In this section we will discuss the results of the simulations performed as part of this work. A summary of the parameters used for the simulations and the analysis of the electro-disintegration measurement at MAGIX for Phases 1 and 2 are given in Table 6.3. The results of the simulations can be found in Fig. 6.9. 122 σ [nb] Nisotropic 6.2 Implementation of the S-Factor Simulation Table 6.3: Summary of the relevant simulation and analysis parameters. Parameter Value Electron Beam1,2 energy 105MeV current 1mA Oxygen Target1,2 areal number density 2× 1018 particles/cm2 gas type pure 16O Spectrometer1 central momentum 75 MeV central in-plane angle 13° Zero Degree Tagger2 energy acceptance E′e ≥ 7 MeV angular acceptance θe ≤ 0.5° Silicon-Strip Detector Array1,2 detector count 5 active detector area 50× 50 mm2 distance 10 cm central in-plane angle 30°, ±90°, ±120° Luminosity1,2 1× 1034 cm−2 s−1 Time Period1,2 4weeks Integrated Luminosity1,2 2.4192× 1040 cm−2 = 2.4192× 107 nb−1 Ecmsα -Range1,2 0− 25 MeV 1 MAGIX Phase 1 2 MAGIX Phase 2 In Figs. 6.9a and 6.9b, the data from previous measurements is given for the E1 and E2 ground state contributions. The E1 and E2 contribution are fitted using the AZURE2 software [Azu+10; Ud15] which was configured with the parameters from the supplementary material of Ref. [deB+17]. The results of the simulations are added to these figures to show the expected errors compared to the existing data. For this purpose, the S-factor values calculated with AZURE2 were added to the figures with the calculated errors from the simulations. In Fig. 6.9a the sim- ulated results for the E1 contribution are shown. As it can be seen, the expected statistical errors for Phase 1 have a precision comparable to the existing data in the range above 0.9MeV. A similar result is obtained for the E2 contribution Fig. 6.9b. As expected, the error for the E2 contribution is larger than for the E1 contribution due to error propagation. Moreover, it can be seen that for Phase 2, the expected errors in the region above 0.9MeV decrease greatly and, in addition, it will be possible to study the region below. With this particular detector setup, the E1 contribution can be determined down to 0.5MeV and the E2 contribution down to 0.7MeV. For both components it will be possible to make contributions in the range below 0.9MeV in Phase 2 and thus reducing the gap to the Gamow peak. The results of these simulations show that MAGIX can make significant measure- ments of the S-factor. A reduction of the errors in E1 and E2 can be achieved by MAGIX in two ways. The first important point is that reducing the errors in the region above 1MeV allows a more accurate extrapolation of the S-factor to the Gamow peak. This reduces the errors caused by the extrapolation. The second point is that the simulations show that MAGIX can measure the S-factor down to 0.5MeV in Phase 2. This will reduce the gap to the Gamow peak and thus improve the extrapolation further. 123 Chapter 6 - Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C 103 1974 Dyer 1987 Redder 1988 Kremer 1996 Ouellet 1999 Roters 2001 Gialanella 102 2001 Kunz2004 Fey 2006 Assuncao 2009 Makii 2012 Plag AZURE2 Fit MAGIX Phase 1 101 MAGIX Phase 2 100 10−1 0 0.5 1 1.5 2 2.5 3 3.5 Ecms[MeV] (a) E1 contribution data [DB74; Red+87; Kre+88; Oue+96; Rot+99; Gia+01; Kun+01; Fey04; Ass+06; Mak+09; Pla+12]. 103 102 101 100 1987 Redder1996 Ouellet 1999 Roters 2001 Kunz 2004 Fey 2006 Assuncao 10−1 2009 Makii2011 Schürmann 2012 Plag AZURE2 Fit MAGIX Phase 1 −2 MAGIX Phase 210 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 Ecms[MeV] (b) E2 contribution data [Red+87; Oue+96; Rot+99; Kun+01; Fey04; Ass+06; Mak+09; Sch+11; Pla+12]. Figure 6.9: E1 (a) and E2 (b) contribution data fitted with the AZURE2 soft- ware [Azu+10; Ud15] configured with parameters of the supplemental material provided by [deB+17]. MAGIX Phase 1/2 shows the projected errors for the Phases 1 and 2. Although the longitudinal and the two interference terms were not included in this simulation, the simulation provides a good estimate of the expected statis- tical errors of the S-factor measurement at MAGIX, since the transveral term dominates in the low Q2 range, whereas the omitted terms only play a minor role, as discussed in Section 6.2.3. Compared to the photo-disintegration, the 124 SSEE22[[kkeeVV bb]] SSEE11[[kkeeVV bb]] 6.2 Implementation of the S-Factor Simulation electro-disintegration contains more nuclear response functions. This means that electro-disintegration has a potentially higher information content. This will al- low a more accurate determination of the various contributions. In particular, the error in E1 and E2 can be reduced. For more details, please refer to [FDM19]. At this point it is important to note that the results given are the results of a simulation with one specific detector setup. The position of the silicon strip detectors have been chosen in favor of the measurement of E1 (see Fig. 2.12). In the experiment, several measurements will be performed with different detector positions optimized for either E1 or E2. This will allow the reduction of the errors of the E1 and E2 contribution best as possible As mentioned at the beginning of the chapter, no simulation was performed to determine the background. This is due to the fact that no final information on the beam parameters of MESA or the efficiency of the detectors is currently available. Compared to the direct measurements e.g. at LUNA-MV or Felsenkeller labora- tory , the expected background from cosmic particles is low, due to the coincidence measurement of the scattered electrons and the recoiled α-particles. This allows MAGIX to perform the measurement next to an accelerator and not several hun- dred meters under the ground. The detectors will be optimized for their respective particle species. The amount of background signals in the final experiment and how effectively they can be separated from the signals depends on the efficiency of the detectors and other experimental conditions. Both are currently unknown and must be determined experimentally. One known background source are the signals arising from the contamination of 17O, 18O, and 15N in the oxygen gas (see Section 4.3.1). As described in Ref. [FDM19], a ToF measurement can be used to separate the signals arising from the contamination. To ensure this, the silicon strip detectors are additionally optimized for high time resolution. Verifying whether it is possible to identify these background reactions and determining the efficiency of the silicon strip detectors will be part of the Phase 0 measurement at the A1 spectrometer facility at MAMI. As calculated in the simulation we expect a very low event rate for cms energies near the Gamow peak which makes it quite challenging to gain high statistics. Nevertheless, MAGIX can still make a decisive contribution to the determination of the S-factor. For cms energies above 0.9MeV, the expected counting rates are high, so that in Phase 2 the statistical errors in this range will be low. This allows to perform a more accurate extrapolation towards the Gamow peak and consequently to reduce the error in the S-factor determination. Each additional data point that can be taken in the sub-MeV scale improves the extrapolation. Furthermore, the beam time period is a variable parameter. In addition the integrated luminosity can be increased by the planned upgrade of the beam current of MESA to 10mA. This means that statistical errors can be reduced due to longer measuring times and a increased beam current. 125 126 CHAPTER 7 Summary and Outlook The S-factor of the reaction 12C(α, γ)16O plays a decisive role in describing the pre-supernova evolution of stars. As outlined in Section 2.5 ‘Production Factor’, the S-factor is a crucial factor in the calculation of the isotope abundance ratio in a star. Despite its importance and several attempts to determine the S-factor at the Gamow peak EG = 0.3 MeV experimentally, the relative error of the S-factor is currently greater than 17%. An overview and discussion of the already existing data can be found in Section 2.4 ‘Results of Existing Measurements’. However, to make reasonable predictions about pre-supernova evolution, a relative uncertainty of under 10% is required. After considering all theoretical aspects as layed out in Chapter 2 ‘The Reaction 12C(α, γ)16O in the Helium Burning Stage in Stars’, it turned out that the problem in determining the S-factor is that the cross section of the reaction 12C(α, γ)16O near the Gamow peak is dominated by the Coulomb penetration factor. As a consequence, the cross section decreases exponentially from ∼ 10−11 b at 1MeV to ∼ 10−17 b at 0.3MeV. This makes an experimental determination of the S-factor at the Gamow peak so challenging. Thus, low- energy high-precision experiments are needed to measure the S-factor near the Gamow peak. In the coming years, several experiments are planned to measure the S-factor using different methods. In Section 2.3 ‘Discussion of Measurement Techniques’ an overview of different measurment techniques is given. Besides direct measurements, e.g. planned at LUNA and Felsenkeller in Dresden, indirect measurements via photo-disintegration, e.g. at the HIγS facility or at the ELI-NP facility, are planned. Another indirect measurement technique is the electro-disintegration measure- ment of oxygen. For this purpose, electrons are scattered on oxygen and the scattered electrons and the recoiled α-particles are detected in coincidence. Ac- cording to the theoretical derivations made in Chapter 3 ‘Electro-Disintegration Cross Section of 16O’ the E1 and E2 ground state contribution of the S-factor of the reaction 12C(α, γ)16O can be determined from the electro-disintegration cross section of oxygen. This technique is applied for the planned experiment MAGIX. MAGIX will be commissioned in the coming years at the high-intensity electron accelerator MESA in Mainz, Germany, which is currently under construction. In addition to measur- 127 Chapter 7 - Summary and Outlook ing the S-factor of the 12C(α, γ)16O, electromagnetic form factors or searching for dark sector particles, and reaction studies of astrophysical relevance are planned. The experimental setup of MAGIX at MESA for determinating the S-factor is discussed in Chapter 4 ‘Accelerator and Experimental Setup’. This measurement will be conducted in three phases (Phase 0, Phase 1 and Phase 2). To estimate the expected statistical errors of the Phase 1 and 2 of the planned electro-disintegration measurement at MAGIX a simluation was performed as part of this thesis. Since in Phase 2 the scattering angle of the electrons will be less than 0.5°, the cross section had to be derived without using the ERL. The deriva- tions of the electro-disintegration cross section without using ERL is outlined in Chapter 3 ‘Electro-Disintegration Cross Section of 16O’. Since information about the efficiency of the detectors and the beam parameters is not yet available, no background simulations were included. Furthermore, due to this reason, the effi- ciency could not be included in the simulation of the acceptance of the detectors. They are therefore determined as purely geometrically. Based on the results of this simulation discussed in Chapter 6 ‘Simulation of the Electro-Disintegration Reaction 16O(e, e′α)12C’, it can be stated that MAGIX will be able to determine the S-factor in the low-energy range near the Gamow peak of the helium burning stage EG = 0.3 MeV. Already in Phase 1, MAGIX will be able to determine the S-factor in the cms energy range Ecmsα > 1 MeV with relative errors competitive to previous experiments performed by other research groups. In Phase 2, which includes the zero degree tagger, MAGIX can then reduce the relative errors above 1MeV and perform high-precision measurements even on a sub-MeV scale with a superior statistical significance. The main conclusion from this thesis is that MAGIX can make an important contribution to the determination of the S-factor in the coming years. Based on these results, MAGIX will continue to plan and prepare measurements of the S- factor. The simulation was only one of several steps that will contribute to the success of the measurement of the S-factor for the reaction 12C(α, γ)16O. Even though the simulation is promising, it has its limitations. Although back- ground simulations could not be included, important conclusions can be drawn from the results of this simulation. The most important aspects were discussed in Section 6.2.6 ‘Discussion of the Simulations Results’. Despite the fact that Phase 1 will not begin until 2023 at the earliest, it was very important to perform this simulation at an early stage. The development of the detectors, especially the silicon strip detector, is closely related to the results of this work. During the development of the simulation, the analysis of the simulation was adjusted to obtain important parameters needed for the development of the silicon strip detector. An essential next step is the experimental determination of the efficency of the silicon strip detectors, especially for low cms energies. This will be part of Phase 0, in which the MAGIX gas jet target will be operated at the A1 facility at MAMI in Mainz using oxygen. A futher important step in Phase 0 will be verifying the ToF method to seperate the signals arising from the contamination of 17O, 18O, and 15N in the oxygen gas. The information gained in Phase 0 will then in turn be used to improve the simulation in particular including background calculations and the efficency of the silicon strip detector. Some MAGIX components, such as the gas jet target or the silicon strip detector that will be used to detect the α-particles, are already tested in different labora- 128 tories. Another important part of this thesis was the development of the MAGIX slow control system, which will later be used in the final experiment. As described in Chapter 5 ‘Development of the MAGIX Slow Control System’ the slow control system was extended by those test stands. To adapt the slow control system based on the needs of MAGIX, the EPICS base software was extended by several MAGIX modules that were build as part of this thesis. Running the test stands with the MAGIX Slow Control system served as a stress test of the software. This showed how reliable an EPICS-based slow control system can work even under load. The structure of the EPICS-based MAGIX slow control was designed in such a way that all devices that will later be needed for MAGIX can easily be integrated. Special care was taken to ensure that the slow control can be used in exactly the same way for the final experiment. To support users in getting started with MXSlowControl and to provide professional tips for more complex tasks to all team members a tutorial was created as part of this thesis. Under consideration of the continous development of MXSlowControl this tutorial needs to be updated constantly. In summary, the simulation was a very important step to enable the measurement of the S-factor of the 12C(α, γ)16O at MAGIX. In combination with the develop- ment of the slow control for MAGIX as part of this thesis, MAGIX will be able to prepare and perform Phase 0 up to Phase 2 based on the theoretical work carried out in this thesis. 129 130 APPENDIX A Response Functions Following the derivation published in [RD89; FDM19] the nuclear response func- tions RK in terms of the Legendre and the associated Legendre polynomials up to octupole contrib(utions can be written as: ) RL = P0(cos θα)(| 2tC0| + | |2tC1 + |tC2|2 + | 2tC3| √√ +P1(cos 3 θα) 2 3|tC0||tC1| cos(δC1 − δC0) +) 4 5 |tC1||tC2| cos(δC2 − δC1) (+√ 18 |tC2||tC3| cos(δC3 − δ )35 C2 √ +P2(cos θα) 2| |2 + 10 √tC1 7 | 2 tC2| + 2 5|tC0||tC2| cos(δ)C2 − δC0) +6 3( √7 |tC1||tC3| cos(δC3 − ) + 4 | |2δC1 3√tC3 + (cos ) 6 3 8 7P3 θα 5 |tC1||tC2| cos(δC2 − δC1)) + 3 5 |tC2||tC3| cos(δC3 − δC2)√ (+2 7|tC0||tC3√| cos(δC3 − δC0) ) +P4(cos 18 2 θα)( 7 |√tC2| + 8 3 7 |tC1|| | cos( − ) + 18 2 tC3 δ)C3 δC1 11 |tC3| +P5(cos ) 20 5 θα ( 3 7 |tC)2||tC3| cos(δC3 − δC2) +P6(cos 100 2 θα)( 33 |tC3| , ) RT = P0(cos )(| 2 2 2θα tE1| + |tE2| + |tE3| √ ) +P1(cos θα)(√ 6 |tE1||tE2| cos(δ − 2 δ 5 E2 √ E1) + 12 35 |tE2||tE3| cos(δE3 − δ)E2) + (cos ) −| |2 + 5 | |2P2 θα ( tE1 7 tE2 + 6 2 | 27 tE1||tE3|√cos(δE3 − δE1) + |tE3| ) +P3(cos θα) −√ 6 | || | cos( − ) + 2 14tE1 tE2 δE2 δE1 3 5 |tE2||tE3| cos(δ5 E3 − δE2) 131 Appendix A - Response Functions ( √ ) +P4(cos θα)(− 12 2 2 3 2 7 |√tE2| − 6 7 |tE1||tE3| cos(δE)3 − δE1) + 11 |tE3| + (cos ) −10 10P5 θα ( 3 7 |)tE2||tE3| cos(δE3 − δE2) + (cos ) −25{P6 θα ( 11 | 2 tE3| , √ R = P 1 √ TL 1 (cos θα) 2 3| 3 tC0||tE1| cos(δE1 − δC0)− 2√ 5 |tC2||tE1| cos(δC2 − δE1) +√6√|tC1||tE2| cos(δC1 − δE2)− 6 3 ) 35 |tC3||tE2| cos(δ5 C3 − δE2) +(6 6 35 |tC2||tE3| cos(δC2 − δE3√) + 1(cos ) 2| || | cos( − ) + 2 5P2 θα tC1 tE1 δC1 δE1 3√|tC0||tE2| cos(δE2 − δC0) + 1√√ 0 |tC2||tE2| cos( 3 δC2 − δE2)− 2 √7 |tC3||tE1| cos(δC3 − δ )7 3 E1 ) +4 2( √7 |tC1|| 2 2 tE3| cos(δC1 − δE3) + 3 3 |tC3||tE3| cos(δC3 − δE3) +P 13 (cos 3 θα) 2√5 |tC2||tE1| cos(δC2 − 4 δE1) + √√|tC1||tE2| cos(δC1 − δ5 E2) +2 7√6 |tC0|| 2 7 tE3| cos(δE3 − δC0) +)3 15 |tC3||tE2| cos(δC3 − δE2) +2 7( 30 |tC2||tE3| cos(δC2 − δE3)√ √ +P 14 (cos ) 6 3 3 θα 7 |tC2||tE2| cos(δC2 − δE2) + 2 √7 |tC3||tE1| cos(δC3 − δE1) ) +√6( |tC1||tE3| cos(δC1 − 6 3 δE3) + 11 2√|tC3||tE3| cos(δ − δ14 C3 E3) ) +P 15 (cos ) 40 1 2 θα ( 3 √√ |t105 C3||tE2| cos(δC3 − δE2))}+ 10 105 |tC2||tE3| cos(δC2 − δE3) + 1(cos ) 50 2P6 θα 33 3 |tC3||tE3| cos(δC3 − δE3) · cos(φα) RTT =−RT cos(2φα). For the simulation, we used the nuclear response function where the Legendre polynomials are expressed in terms of sine and cosine: [FDM19] RL = | 2tC0| + 3| 2tC1| cos2(θα) + 5 2 16 |tC2| (1 + 3 cos(2θα)) 2 + 7 264 |tC3| (3 cos(θα) + 5 cos(3 2 θα)) √ √ + 2 3| 5tC0||tC1| cos(θα) cos(δC1 − δC0) + 2 |tC0||tC2|(1 + 3 cos(2θα)) cos(δC2 − δC0)√ + 74 |tC0||tC3|(3 cos(θα) + 5 cos(3θα)) cos(δC3 − δC0)√ + 154 |tC1||tC2|(5 cos(θα) + 3 cos(3θα)) cos(δC2 − δC1)√ + 218 |tC1||tC3|(3 + 8 cos(2θα) + 5 cos(4θα)) cos(δC3 − δC1)√ + 3532 |tC2||tC3|(30 cos(θα) + 19 cos(3θα) + 15 cos(5θα)) cos(δC3 − δC2), 132 Appendix A - Response Functions = 3 | |2 sin2( ) + 15 | |2 sin2(2 ) + 21 | |2RT 2 tE1 θα 8 tE2 θα 256 tE3 (sin(2θα) + 5 sin(3 2 θα)) √ + 3√52 |tE1||tE2|(sin(θα) sin(2θα)) cos(δE2 − δE1) + 3 5 ( ) 2√ 2 42 |tE1||tE3| sin (2θα)− sin (θα) cos(δE3 − δE1) + 3 35 ( ) {4 2 |tE2||tE3| sin(2θα) sin(θα) + sin(3θα)− sin3(θα) cos(δE3 − δE2) √ √ RTL = −√2 3|tC0||tE1| sin(θα) cos(δE1 − δC0)− 15|tC0||tE2| sin(2θα) cos(δE2 − δC0) − 1 214 2 |tC0||tE3|(sin(θα) + 5 sin(3θα)) cos(δE3 − δC0)√ − 3|√tC1||tE1| sin(2θα) cos( 3 5δE1 − δC1)− 2 |tC1||tE2|(sin(θα) + sin(3θα)) cos(δE2 − δC1) − 3 78 2 |tC1||tE3|(6 sin(2θα) + 5 sin(4θα)) cos(δE3 − δC1)√ + 154 |tC2||tE1|(sin(θα)− 3 sin(3θα)) cos(δE1 − δC2)√ − 5 38√|tC2||tE2|(2 sin(2θα)− 3 sin(4θα)) cos(δE2 − δC2) + 1 332 70 |tC2||tE3|(278 sin(θα)− 455 sin(3θα)− 525 sin(5θα)) cos(δE3 − δC2)√ + 218 |tC3||tE1|(2 sin(2θα)− 5 sin(4θα)) cos(δE1 − δC3)√ + 1051√6 |tC3||tE2|(2 sin(θα)− 3 sin(3θα)− 5 sin(5θα)) cos(δE2 − δC3) } − 7 364 2 |tC3||tE3|(13 sin(2θα) + 20 sin(4θα) + 25 sin(6θα)) cos(δE3 − δC3) · cos(φα), RTT =−RT cos(2φα). Using the Rodrigues’ formula Eq. (3.50) the Legendre polynomials up to n = 6 are P0(x) = 1, P1(x) = x,( ) P2(x) = 1 3x22( − 1 ,) P3(x) = 1 3 2(5x − 3x ,1 ) P (x) = 35x4 − 30x24 8( + 3 , ) P5(x) = 1 8 (63x 5 − 70x3 + 15x , ) P6(x) = 1 16 231x 6 − 315x4 + 105x2 − 5 . Using Eq. (3.51) the associated Legendre polynomials with m = 1 up to n = 6 are √ P 11 (x) = − 1− x2,√ P 12 (x) = −3x( 1− x2),√ P 13 ( 3 x) = − 2 22 5x − 1 1− x , 133 Appendix A - Response Functions 5( )√ P 14 (x) = −2 7x 3 − 3x 1− x2, 1( ) = −15 ( ) P x 21x4 − 14x2 √ 5 8 ( + 1 1− x 2 ) ,√ P 16 (x) = − 21 33x5 − 30x3 + 5x 1− x28 . For x = cos(θ) the Legendre polynomials are given as P0(cos(θ)) = 1, P1(cos(θ)) = co(s(θ), ) P2(cos(θ)) = 1 3 cos22( (θ)− 1 , ) P3(cos( 1 θ)) = 5 cos32( (θ)− 3 cos(θ) , ) P4(cos( 1 θ)) = 8(35 cos 4(θ)− 30 cos2(θ) + 3 , 1 ) P 55(cos(θ)) = 8 (63 cos (θ)− 70 cos 3(θ) + 15 cos(θ) , ) P6(cos(θ)) = 1 16 231 cos 6(θ)− 315 cos4(θ) + 105 cos2(θ)− 5 . The associated Legendre polynomials for x = cos(θ) with 0 ≤ θ ≤ π in terms of sine and cosine can be written as P 11 (cos(θ)) = − sin(θ), P 12 (cos(θ)) = −3 sin(θ) c(os(θ), ) P 13 (cos(θ)) = − 3 2 sin(θ) 5 cos 2 ((θ)− 1 , ) P 14 (cos( 5 θ)) = −2 sin(θ) c(os(θ) 7 cos 2(θ)− 3 , ) P 15 (cos(θ)) = − 15 8 sin(θ) 21 cos 4(θ)− 14 cos2(θ) + 1 , 1(cos( )) = −21 ( ) P6 θ 8 sin(θ) cos(θ) 33 cos 4(θ)− 30 cos2(θ) + 5 . 134 APPENDIX B Selected Data In this chapter all nuclear data used for the calculations or the simulations is given. Tables B.1 to B.4 represents the list of relevant adopted levels provided by [NuDat]. In these tables, the errors are indicated separately by spaces. For example, 5.57 eV 25 corresponds to 5.57(25) eV ≡ 5.57± 0.25 eV. Table B.1: List of adopted levels for 8Be [NuDat]. E(level) Jπ Γ(level) E(γ) M(γ) Final level (keV) (keV) Jπ(keV) 0 0+ 5.57 eV 25 α = 100 3030 10 2+ 1513 keV 15 3029 E2 0+(0) α ≈ 100 11.35E+3 15 4+ ≈3.5 MeV 11350 E4 0+(0) α ≈ 100 Table B.2: List of adopted levels for 12C [NuDat]. E(level) Jπ Γ(level) E(γ) I(γ) M(γ) Final level (keV) (keV) Jπ(keV) 0 0+ STABLE 4439.82 21 2+ 10.8·10-3 eV 6 4438.94 100 E2 0+(0) IT=100 7654.07 19 0+ 9.3 eV 9 3213.79 100 E2 2+(4439.82) IT=4.16E-2 α ≈ 100 9641 5 3− 46 keV 3 9637 100 E3 0+(0) α ≈ 100 IT < 4.1E-5 9870 60 2+ 850 keV 85 IT≈7.1E-6 α ≈ 100 135 Appendix B - Selected Data Table B.3: List of adopted levels for 16O [NuDat]. E(level) Jπ Γ(level) E(γ) I(γ) M(γ) Final level [keV] [keV] Jπ([keV]) 0 0+ STABLE 6049.4 10 0+ 67 ps 5 6048.21 [E0] 0+(0) 6129.89 4 3− 18.4 ps 5 6128.634 100 [E3] 0+(0) 6917.1 6 2+ 4.70 fs 13 787.26 ≤0.008 [E1] 3−(6129.89) 867.712 0.027 3 [E2] 0+(6049.4) 6915.56 100 [E2] 0+(0) 7116.85 14 1− 8.3 fs 5 986.93 15 0.07014 [E2] 3−(6129.89) 1067.5 10 <6E-4 [E1] 0+(6049.4) 7115.15 14 100 [E1] 0+(0) 8871.9 5 2− 125 fs 11 1754.9 6 14.77 [M1+E2] 1−(7116.85) 1954.7 8 4.6 7 [E1] 2+(6917.1) 2741.5 5 100 21 [M1+E2] 3−(6129.89) 2822.2 12 0.15 5 [M2] 0+(6049.4) 8869.3 5 9.3 10 [M2] 0+(0) 9585 11 1− 420 keV 20 2688 11 12 4 [E1] 2+(6917.1) IT = 6.7E-6 10 9582 11 100 16 [E1] 0+(0) α = 100 9844.5 5 2+ 0.62 keV 10 2927.1 8 34 7 [M1] 2+(6917.1) IT = 0.0016 3 3794.6 12 30 7 [E2] 0+(6049.4) α = 100 9841.2 5 100 7 [E2] 0+(0) 10356 3 4+ 26 keV 3 3439 3 100 10 [E2] 2+(6917.1) IT = 2.4E-4 4 4225 3 <1.6 [E1] 3−(6129.89) α = 100 10352 3 9E-5 3 [E4] 0+(0) 10957 1 0− 5.5 fs 35 3839.6 10 100 [M1] 1−(7116.85) 11080 3 3+ < 12 keV 11096.7 16 4+ 0.28 keV 5 4179.0 17 81 20 [E2] 2+(6917.1) IT = 0.0020 6 4966.0 16 100 42 [E1] 3−(6129.89) α = 100 11260? (0+) 2500 keV α = 100 11520 4 2+ 71 keV 3 4402 4 ≤0.9 [E1] 1−(7116.85) IT = 9.4E-5 3 4602 4 4.4 11 [M1] 2+(6917.1) α = 100 5470 5 4.6 8 [E2] 0+(6049.4) 11516 4 100.0 13 [E2] 0+(0) 11600 20 3− 800 keV 100 α = 100 12049 2 0+ 1.5 keV 5 12044.1 20 [E0] 0+(0) IT = ? α = 100 12440 2 1− 91 keV 6 6389.2 23 1.2 4 [E1] 0+(6049.4) IT = 0.0132 24 12434.8 20 100 [E1] 0+(0) p = 0.9 1 α = 99.1 1 12530 1 2− 0.111 keV 10 3657.7 12 67 4 [M1] 2−(8871.9) IT = 3.2 3 5412.1 10 24.5 14 [M1] 1−(7116.85) p = 14 7 5611.8 12 <2 [E1] 2+(6917.1) α = 83 3 6398.7 10 100 4 [M1] 3−(6129.89) 12524.7 10 12.2 12 [M2] 0+(0) 12796 4 0− 40 keV 4 5678 4 100 [M1] 1−(7116.85) IT = 0.0062 8 p = 100 12948.6 4 2− 1.34 keV 4 4096.1 7 84 4 [M1] 2−(8871.9) IT = 0.28 3 5850.7 5 12 2 [M1] 1−(7116.85) p = 78 4 6837.1 4 100 4 [M1] 3−(6129.89) α = 22 4 12963.0 4 4.2 8 [M2] 0+(0) 13020 10 2+ 150 keV 10 13014 10 100 0+(0) IT = ? p = ? α =? 136 Appendix B - Selected Data 13090 8 1− 130 keV 5 5972 8 3.1 8 [M1] 1−(7116.85) IT = 0.026 4 7039 8 0.58 12 [E1] 0+(6049.4) p = 71 13084 8 100 [E1] 0+(0) α = 29 13129 10 3− 110 keV 30 IT = ? p = 1 α = 99 13259 2 3− 21 keV 1 IT = ? p = ? α =? 13664 3 1+ 64 keV 3 p = 14 α = 86 IT < 0.0015 13869 2 4+ 89 keV 2 IT = ? p = 0.6 α = 99.4 Table B.4: List of adopted levels for 20Ne [NuDat]. E(level) Jπ Γ(level) E(γ) I(γ) M(γ) Final level (keV) (keV) Jπ(keV) 0 0+ STABLE 1633.674 15 2+ 0.73 ps 4 1633.602 15 100 [E2] 0+(0) 4247.7 11 4+ 64 fs 6 2613.8 11 100 [E2] 2+(1633.674) 4966.51 20 2− 3.3 ps 4 3332.54 20 99.4 2 [E1+M2+E3] 2+(1633.674) 4965.85 20 0.6 2 [M2] 0+(0) 5621.4 17 3− 139 fs 35 654.9 18 4.8 16 [M1] 2−(4966.51) IT = 7 3 3987.3 17 87.6 10 [E1] 2+(1633.674) α = 93 3 5620.6 17 7.6 10 [E3] 0+(0) 5787.7 26 1− 0.028 keV 3 4154 3 82 5 [E1] 2+(1633.674) IT = 0.016 3 5787 3 18 5 [E1] 0+(0) α = 100 6706 47 6725 5 0+ 19.0 keV 9 5090 5 100 [E2] 2+(1633.674) IT = 1.7E-4 6724 5 [E0] 0+(0) α = 100 7004.0 36 4− 305 fs 62 1383 4 25 [M1] 3−(5621.4) 2037 4 11 [E2] 2−(4966.51) 2756 4 63.5 [E1] 4+(4247.7) 5369 4 0.5 2 [M2] 2+(1633.674) 137 Appendix B - Selected Data Table B.5: The atomic masses are from [Wan+17]. The nuclear masses marked with ∗ are from [Hua+17]. The other nuclear masses are calculated with the formula MN (A,Z) = MA(A,Z) − Z · me + Be(Z), with electron mass me and total electron binding energy Be(Z). For Z = 1 th[e binding energy is Be(Z) = 13.6 eV a]nd for Z ≥ 2 the approximated formula Be(Z) = 14.4381 · Z2.39 + 1.55468 · 10−6 · Z5.35 eV was used. This formula provides an rms error of 150 eV over the range up to Z = 106 [LPT03, Appendix A] for the listed binding energies in [Hua+76]. In comparison to the listed binding energies we assumed an error for Be of 2 eV for Z ≤ 4, 20 eV for Z = 6 and, 40 eV for Z ≥ 7, to calculate the error of the nuclear masses. N Z A Element Atomic Mass Nuclear Mass Nuclear Mass µu µu MeV/c2 0 1 1 H 1 007 825.032 241(94) 1 007 276.466 93(9)∗ 938.272 081 38(8) 1 1 1 D 2 014 101.778 114(122) 2 013 553.213 704(247) 1875.612 929(11) 1 2 4 He 3 016 029.322 645(220) 3 014 932.244 071(307) 2808.391 583(17) 2 2 4 He 4 002 603.254 130(63) 4 001 506.179 127(60)∗ 3727.379 378(23) 4 4 8 Be 8 005 305.10(4) 8 003 111.206(40) 7454.850 833(59) 6 6 12 C 12 000 000 11 996 709.642(21) 11 174.864 196(71) 7 7 14 N 14 003 074.004 460(207) 13 999 235.567(21) 13 040.205 271(82) 8 8 16 O 15 994 914.619 598(173) 15 990 528.212(43) 14 895.082 612(100) 10 10 20 Ne 19 992 440.1762(17) 19 986 958.182(43) 18 617.733 531(121) 12 12 24 Mg 23 985 041.697(14) 23 978 464.621(45) 22 335.798 211(143) Table B.6: Calculated Gamow peaks for the reactions of the helium burning stage. Due to the high density and temperature within the core of a star a plasma is formed. The energy kT of around 10 – 20 keV is significantly higher than the binding energy of the electrons so that the plasma consists of ions and free electrons. Thus, in the calculation of the Gamow peak, nuclear masses are used instead of atomic masses. The Coulomb penetration factor for each reaction at the Gamow peak is calculated using Eq. (2.12). Reaction T EG ∆EG Coulomb penetration GK keV keV factor 4He(α, γ)8Be 0.12 94.292 72.113 1.202× 10−8 4He(α, γ)8Be 0.2 132.549 110.380 2.088× 10−7 8Be(α, γ)12C 0.2 231.585 145.901 2.131× 10−12 12C(α, γ)16O 0.2 315.595 170.320 1.244× 10−16 16O(α, γ)20Ne 0.2 390.626 189.488 2.057× 10−20 20Ne(α, γ)24Mg 0.2 459.495 205.514 6.958× 10−24 138 Appendix B - Selected Data Table B.7: Calculated Coulomb penetration factors Eq. (2.12) of the reactions of the helium burning stage for a fixed cms energy Ecms = 300 keV. Due to the high density and temperature within the core of a star a plasma is formed. The energy kT of around 10 – 20 keV is significantly higher than the binding energy of the electrons so that the plasma consists of ions and free electrons. Thus, in the calculations, nuclear masses are used instead of atomic masses. Reaction Ecms Coulomb factor keV 4He(α, γ)8Be 300 3.628× 10−5 8Be(α, γ)12C 300 5.565× 10−11 12C(α, γ)16O 300 4.859× 10−17 16O(α, γ)20Ne 300 3.433× 10−23 20Ne(α, γ)24Mg 300 2.189× 10−29 Table B.8: Physical constants used in this work. The quantities marked with ∗ are from [Hua+17], the others are from [Zyl+20]. Quantity Symbol (equation) Value speed of light in vacuum c 299 792 458m s−1 reduced Planck constant ~ 6.582 119 569× 10−22 MeVs electron charge magnitude e 1.602 176 634× 10−19 C Boltzmann constant k 1.380 649× 10−23 JK−1 conversion constant ~c 197.326 980 4MeV fm atomic mass unit∗ u=(mass 12C atom)/12 931.494 095 4(57)MeV/c2 electron mass∗ me 548 579.909 070(16) nu =0.510 998 946 1(31)MeV/c2 proton mass∗ Mp 1 007 276 466.93(9) nu =938.272 081 38(8)MeV/c2 alpha particle mass∗ Mα 4 001 506 179.127(60) nu =3727.379 378(23)MeV/c2 fine-structure constant αem = e2/4πε0~c 7.297 352 569 3(11)× 10−3 =1/137.035 999 084(21) 139 Appendix B - Selected Data Table B.9: Coordinate system for the target and generator system. The angles are defined analogously to the spherical coordinate system. Coordinate Definition x up y right with the beam direction y = z × x z beam direction Origin Target middle point (0, 0, 0) θ Angle from the beamline within in the range [0, π) φ Rotation angle in x− y plane in range [−π, π) Table B.10: Base units used in the simulation software Quantity Unit Length mm Cross Section µb = 10−30 cm2 Angle rad Energy MeV Momentum MeV c−1 Mass MeV c−2 Charge e Beam Current µA Time ns Temperature K Table B.11: To extrapolate the S-factor different step length are used for different energy ranges. Ecms cmsmin [MeV] Emax[MeV] dE[MeV] 0.01 6 0.001 5.5 14 0.005 12 20 0.01 140 APPENDIX C EPICS Support Files In this chapter the installation scripts of EPICS, MXSlowControl and the modules are presented. In addition different EPICS related C++ header and source files are displayed. Code C.1: Installation Script EPICS File: setup-epics-ioc-raspbian.sh 1 #!/bin/bash 29 #wget https://github.com/epics-modules/ c 2 # author: Stefan Lunkenheimer ↪→ autosave/archive/ c ↪→ (stelunke@uni-mainz.de) ↪→ R${autosaveVersion}.tar.gz -O 3 # Basic file on: https://gist.github.com/ c ↪→ autosave-R${autosaveVersion}.tar.gz || ↪→ inigoalonso/a77314206b516e94d4aa ↪→ exit 4 30 5 epicsDir=/opt/epics 31 6 gitDir="$(cd "$( dirname "$0")/.." && pwd )" 32 # Preliminiary installations!!! 7 epicsVersion=3.14.12.6 33 sudo apt-get install libreadline7 8 asynVersion=asyn4-31 ↪→ libreadline-dev 9 streamVersion=StreamDevice-2 34 10 streamSubVersion=6 35 # ------------------------------------------ 11 autosaveVersion=5-7-1 36 # ----------- INSTALL EPICS BASE ----------- 12 DOWNLOADS=${gitDir}/install/external 37 # ------------------------------------------ 13 38 14 pyepics=true 39 # Create a place to work 15 frontend=true 40 echo "Creating a place to work: ${epicsDir}" 16 41 sudo mkdir -p ${epicsDir} 17 export LC_ALL=en_US.UTF-8 42 sudo chown ${USER}:${GROUP} ${epicsDir} 18 export LC_CTYPE=en_US.UTF-8 43 19 export LANG=en_US.UTF-8 44 echo "Untar-ing EPICS base" 20 45 tar -zxf 21 ↪→ ${DOWNLOADS}/baseR${epicsVersion}.tar.gz 22 # Download the necessary source files ↪→ -C ${epicsDir}/ || exit 23 echo "Downloading the necessary source files" 46 24 47 echo "Creating links to epics base folder" 25 cd ${DOWNLOADS} 48 ln -s ${epicsDir}/base-${epicsVersion} 26 #wget http://www.aps.anl.gov/epics/download/ c ↪→ ${epicsDir}/base ↪→ base/baseR${epicsVersion}.tar.gz || 49 ↪→ exit 50 # Set the EPICS environment variables -- 27 #wget http://www.aps.anl.gov/epics/download/ c ↪→ Create thisEPICS.sh ↪→ modules/${asynVersion}.tar.gz || 51 echo "Setting up the EPICS enviroment ↪→ exit ↪→ variables" 28 #wget http://epics.web.psi.ch/software/ c 52 cat << EOF > ${epicsDir}/thisEPICS.sh ↪→ streamdevice/${streamVersion}.tgz || 53 #EPICS ↪→ exit 54 export EPICS_ROOT=${epicsDir} 55 export EPICS_BASE=\${EPICS_ROOT}/base 56 export EPICS_HOST_ARCH=\$(\${EPICS_BASE}/ c ↪→ startup/EpicsHostArch) 141 Appendix C - EPICS Support Files 57 export EPICS_BASE_BIN=\${EPICS_BASE}/bin/ c 120 echo "ASYN=${EPICS_ROOT}/modules/asyn" >> ↪→ \${EPICS_HOST_ARCH} ↪→ ${EPICS_ROOT}/RELEASE.local 58 export EPICS_BASE_LIB=\${EPICS_BASE}/lib/ c 121 # -------------------------------------- ↪→ \${EPICS_HOST_ARCH} 122 59 if [ "" = "\${LD_LIBRARY_PATH}" ]; then 123 # -------- Install StreamDevice -------- 60 export LD_LIBRARY_PATH=\${EPICS_BASE_LIB} 124 echo "Installing StreamDevice library into 61 else ↪→ EPICS" 62 export LD_LIBRARY_PATH= c 125 mkdir -p ${EPICS_ROOT}/modules/stream → \${EPICS_BASE_LIB}:\${LD_LIBRARY_PATH} 126 cd ${EPICS_ROOT}/modules/stream↪ 63 fi 127 echo "Untar-ing" 64 export PATH=\${PATH}:\${EPICS_BASE_BIN} 128 tar -zxvf ${DOWNLOADS}/${streamVersion}.tgz 65 ↪→ -C ${EPICS_ROOT}/modules/stream || exit 66 export HOST=\$(hostname) 129 67 EOF 130 echo "Configuring" 68 131 echo | makeBaseApp.pl -t support 69 chmod +x ${epicsDir}/thisEPICS.sh 132 echo "ASYN=${EPICS_ROOT}/modules/asyn" >> 70 ↪→ configure/RELEASE.local 71 # Set envoirement Variables for the 133 echo "Compiling 1" ↪→ installation 134 make -j4 || exit 72 source ${epicsDir}/thisEPICS.sh 135 73 136 cd ${streamVersion}-${streamSubVersion} || 74 # Configure RELEASE ↪→ exit 75 echo "EPICS_BASE=${EPICS_ROOT}/base" > 137 # ↪→ ${EPICS_ROOT}/RELEASE.local 138 # ------ Insert PROFIBUS BUS API to 76 ↪→ StreamDevice ------ 77 # Compile EPICS 139 echo "Copy Profibus src-files" 78 echo "Compiling EPICS" 140 cp ${gitDir}/install/src/* src/ || exit 79 cd ${EPICS_BASE} 141 echo "Add Profibus to config_stream" 80 make -j4 || exit 142 cat << EOF >> src/CONFIG_STREAM 81 143 82 # --------------------------------------- 144 #PROFIBUS 83 # ----------- INSTALL MODULES ----------- 145 BUSSES += Profibus 84 # --------------------------------------- 146 CPPFLAGS += -std=c++11 85 147 CXXFLAGS += -std=c++11 86 # ------------- Install ASYN ------------- 148 EOF 87 echo "Installing ASYN library into EPICS" 149 echo "Compiling 2" 88 mkdir -p ${EPICS_ROOT}/modules 150 make -j4 || exit 89 echo "Untar-ing" 151 90 tar -zxf ${DOWNLOADS}/${asynVersion}.tar.gz 152 # Modify thisEPICS.sh ↪→ -C ${EPICS_ROOT}/modules/ || exit 153 echo "export 91 echo "Linking" ↪→ STREAM=\${EPICS_ROOT}/modules/stream" >> 92 ln -s ${EPICS_ROOT}/modules/${asynVersion} ↪→ ${EPICS_ROOT}/thisEPICS.sh → ${EPICS_ROOT}/modules/asyn 154 export STREAM=${EPICS_ROOT}/modules/stream↪ 93 155 94 # MODIFY RELEASE 156 # Modify RELEASE.local 95 echo "Editing the configuration" 157 echo "STREAM=${EPICS_ROOT}/modules/stream" >> 96 cd ${EPICS_ROOT}/modules/asyn ↪→ ${EPICS_ROOT}/RELEASE.local 97 sed -ie '/IPAC/ s/^#*/#/' configure/RELEASE 158 # ------------------------------------ 98 sed -ie '/SNCSEQ/ s/^#*/#/' configure/RELEASE 159 99 sed -ie '/EPICS_BASE/ s/^#*/#/' 160 # --------- Install AUTOSAVE --------- → configure/RELEASE 161 echo "Installing Autosave Module into EPICS"↪ 100 cat << EOF >> configure/RELEASE 162 echo "Untar-ing" 101 163 tar -zxvf ${DOWNLOADS}/autosave- c 102 # These allow developers to override the ↪→ R${autosaveVersion}.tar.gz -C ↪→ RELEASE variable settings ↪→ ${EPICS_ROOT}/modules/ || exit 103 # without having to modify the 164 echo "Linking" → configure/RELEASE file itself. 165 ln -s ${EPICS_ROOT}/modules/autosave-↪ c 104 #-include \$(TOP)/../RELEASE.local ↪→ R${autosaveVersion} 105 #-include \$(TOP)/configure/RELEASE.local ↪→ ${EPICS_ROOT}/modules/autosave 106 EPICS_BASE=${EPICS_BASE} 166 cd ${EPICS_ROOT}/modules/autosave 107 EOF 167 108 168 # MODIFY RELEASE 109 # Compile ASYN 169 echo "Editing the configuration" 110 echo "Compiling" 170 sed -ie '/EPICS_BASE/ s/^#*/#/' 111 cd ${EPICS_ROOT}/modules/asyn ↪→ configure/RELEASE 112 make -j4 || exit 171 cat << EOF >> configure/RELEASE 113 172 # These allow developers to override the 114 # Modify thisEPICS.sh ↪→ RELEASE variable settings 115 echo -e "\n#Modules" >> 173 # without having to modify the ↪→ ${EPICS_ROOT}/thisEPICS.sh ↪→ configure/RELEASE file itself. 116 echo "export 174 #-include \$(TOP)/../RELEASE.local → ASYN=\${EPICS_ROOT}/modules/asyn" >> 175 #-include \$(TOP)/configure/RELEASE.local↪ ↪→ ${EPICS_ROOT}/thisEPICS.sh 176 EPICS_BASE=${EPICS_ROOT}/base 117 export ASYN=${EPICS_ROOT}/modules/asyn 177 EOF 118 178 119 # Modify RELEASE.local 179 echo "Compiling" 142 Appendix C - EPICS Support Files 180 cd ${EPICS_ROOT}/modules/autosave 211 export 181 make -j4 || exit ↪→ DEVGPIO=${EPICS_ROOT}/modules/devgpio 182 212 183 # Modify thisEPICS.sh 213 # Modify RELEASE.local 184 echo "export 214 echo "DEVGPIO=${EPICS_ROOT}/modules/ c ↪→ AUTOSAVE=\${EPICS_ROOT}/modules/autosave" ↪→ devgpio" >> ↪→ >> ${EPICS_ROOT}/thisEPICS.sh ↪→ ${EPICS_ROOT}/RELEASE.local 185 export 215 fi ↪→ AUTOSAVE=${EPICS_ROOT}/modules/autosave 216 # ------------------------------------- 186 217 187 # Modify RELEASE.local 218 # ---------- Install pyEPICS ---------- 188 echo 219 if [ $pyepics = true ] ; ↪→ "AUTOSAVE=${EPICS_ROOT}/modules/autosave" 220 then ↪→ >> ${EPICS_ROOT}/RELEASE.local 221 sudo apt-get install python-pip || 189 # -------------------------------------- 222 ( echo -e 190 ↪→ "\n\n------------------------ c 191 # ---------- Install dev-gpio ---------- ↪→ \nInstalling python-pip failed" 192 # Testing on RaspberyPi ↪→ && exit ) 193 if [ $EPICS_HOST_ARCH = "linux-arm" ] 223 sudo pip install pyepics || 194 then 224 ( echo -e 195 gpioVersion=master ↪→ "\n\n------------------------ c 196 cd ${DOWNLOADS} ↪→ \nInstalling pyepics failed" && 197 #wget -O dev-gpio_${gpioVersion}.zip ↪→ exit ) ↪→ https://github.com/ffeldbauer/epics- c 225 ↪→ devgpio/archive/${gpioVersion}.zip || 226 # Modify thisEPICS.sh ↪→ exit 227 echo -e "\n#PYEPICS" >> 198 unzip ${DOWNLOADS}/dev- c ↪→ ${EPICS_ROOT}/thisEPICS.sh ↪→ gpio_${gpioVersion}.zip -d 228 echo "export PYEPICS_LIBCA= c ↪→ ${EPICS_ROOT}/modules || exit ↪→ \${EPICS_BASE_LIB}/libca.so" >> 199 ln -s ${EPICS_ROOT}/modules/epics- c ↪→ ${EPICS_ROOT}/thisEPICS.sh ↪→ devgpio-${gpioVersion} 229 fi ↪→ ${EPICS_ROOT}/modules/devgpio || exit 230 # --------------------------------------- 200 cd ${EPICS_ROOT}/modules/devgpio 231 201 232 # ----------- Frontend Module ----------- 202 # MODIFY RELEASE 233 if [ $frontend = true ] ; 203 echo "Editing the configuration" 234 then 204 sed -ie '/EPICS_BASE/ s/^#*/#/' 235 $gitDir/modules/frontend/ c ↪→ configure/RELEASE ↪→ install_module_frontend.sh 205 echo "EPICS_BASE=${EPICS_BASE}" >> 236 fi ↪→ configure/RELEASE 237 # --------------------------------------- 206 238 207 make -j4 || exit 239 # --------- Install Environment --------- 208 240 sudo install ${EPICS_ROOT}/thisEPICS.sh 209 # Modify thisEPICS.sh ↪→ /etc/profile.d/epics.sh 210 echo "export DEVGPIO=\${EPICS_ROOT}/ c 241 ↪→ modules/devgpio" >> 242 echo "Done!" ↪→ ${EPICS_ROOT}/thisEPICS.sh Code C.2: Installation Script MXSlowControl File: install_MXSlowControl.sh 1 #!/bin/bash 20 echo | ${EPICS_BASE}/bin/${EPICS_HOST_ARCH}/ c 2 # author: Stefan Lunkenheimer ↪→ makeBaseApp.pl -t ioc -i ↪→ (stelunke@uni-mainz.de) ↪→ ${iocNAME} 3 21 4 # Remark: Check if the export variables are 22 cp ${gitDir}/MXSlowControl/CONFIG_SITE.local ↪→ set correctly! ↪→ ${EPICS_ROOT}/ || exit 5 source /etc/profile.d/epics.sh 23 6 24 echo "Add modules to Base Application" 7 iocNAME="MXSlowControl" 25 # Add streamDevice and Asyn to the ioc 8 26 sed -e "/${iocNAME}_DBD += xxx.dbd/ a 9 gitDir="$(cd "$( dirname "$0")/.." && pwd )" ↪→ ${iocNAME}_DBD += stream.dbd asyn.dbd 10 ↪→ drvAsynSerialPort.dbd drvAsynIPPort.dbd 11 echo "Install $iocName" ↪→ asSupport.dbd" \ 12 27 -e "/${iocNAME}_LIBS += xxx/ a 13 cd ${EPICS_ROOT} ↪→ ${iocNAME}_LIBS += stream asyn 14 echo "Generate Base Application" ↪→ autosave" \ 15 mkdir -p ${iocNAME} || exit 28 -i ${iocNAME}App/src/Makefile 16 cd ${iocNAME} 29 17 $ASYN/bin/$EPICS_HOST_ARCH/makeSupport.pl -t 30 # Add dev-gpio to the ioc ↪→ streamSCPI ${iocNAME} || exit 31 if [ $EPICS_HOST_ARCH = "linux-arm" ] 18 rm -rf configure 32 then 19 $EPICS_BASE/bin/$EPICS_HOST_ARCH/ c 33 sed -e "/${iocNAME}_DBD += xxx.dbd/ a ↪→ makeBaseApp.pl -t ioc ↪→ ${iocNAME}_DBD += devgpio.dbd" \ ↪→ ${iocNAME} 143 Appendix C - EPICS Support Files 34 -e "/${iocNAME}_LIBS += xxx/ a 76 echo "Transfer Basic db and st.cmd" ↪→ ${iocNAME}_LIBS += devgpio" \ 77 rm -f db/* 35 -i ${iocNAME}App/src/Makefile 78 cp -r ${gitDir}/MXSlowControl/db/* db/ || 36 fi ↪→ exit 37 79 cp -r ${gitDir}/MXSlowControl/iocBoot/ c 38 # Add Device Support components ↪→ iocMXSlowControl/* iocBoot/ioc${iocNAME}/ 39 echo "Add Device Support Drivers" ↪→ || exit 40 # Install necessary librarys 80 sed -e s/EPICS_HOST_ARCH/${EPICS_HOST_ARCH}/ 41 sudo apt-get install libusb-dev ↪→ \ 42 cp -r ${gitDir}/MXSlowControl/App/src/* 81 -e s/YOUR_HOSTNAME/$(hostname)/ \ ↪→ ${iocNAME}App/src 82 -i iocBoot/ioc${iocNAME}/st.cmd 43 83 chmod +x iocBoot/ioc${iocNAME}/st.cmd 44 # Add USBADC and USBDAC to the ioc Makefile 84 45 sed -e "7i LIBRARY_IOC += dbLoadMultiRecords c 85 echo "Transfer autosave example" ↪→ \ndbLoadMultiRecords_SRCS += 86 mkdir -p autosave || exit ↪→ dbLoadMultiRecords.cpp c 87 cp -r ${gitDir}/MXSlowControl/autosave/* ↪→ \ndbLoadMultiRecords_LIBS += ↪→ autosave/ || exit ↪→ \$(EPICS_BASE_IOC_LIBS)\n" \ 88 46 -e "/${iocNAME}_DBD += xxx.dbd/ a 89 echo "Transfer udev/rules" ↪→ ${iocNAME}_DBD += 90 sudo cp ${gitDir}/MXSlowControl/rules/999- c ↪→ dbLoadMultiRecords.dbd" \ ↪→ mxslowcontrol.rules /etc/udev/rules.d/ || 47 -e "/${iocNAME}_LIBS += xxx/ a ↪→ exit ↪→ ${iocNAME}_LIBS += 91 ↪→ dbLoadMultiRecords" \ 92 # INSTALLING service 48 -i ${iocNAME}App/src/Makefile 93 sudo apt-get install tmux 49 94 sudo install ${gitDir}/MXSlowControl/ c 50 # Add USBADC and USBDAC to the ioc Makefile ↪→ systemctl/epics.service 51 sed -e "7i LIBRARY_IOC += ↪→ /etc/systemd/system/epics.service ↪→ aoUSBDAC\naoUSBDAC_SRCS += devUSBDAC.c 95 sudo sed -i 's/\$IOC/'$(echo ↪→ USBDAC.cpp\naoUSBDAC_LIBS += ↪→ $EPICS_ROOT/MXSlowControl/iocBoot/ c ↪→ \$(EPICS_BASE_IOC_LIBS)\n" \ ↪→ iocMXSlowControl|sed 's/\//\\\//g')'/' 52 -e "7i LIBRARY_IOC += ↪→ /etc/systemd/system/epics.service ↪→ aiUSBADC\naiUSBADC_SRCS += 96 sudo install ${gitDir}/MXSlowControl/ c ↪→ devUSBADC.c USBADC.cpp\naiUSBADC_LIBS ↪→ systemctl/caArchiver.service ↪→ += \$(EPICS_BASE_IOC_LIBS)\n" \ ↪→ /etc/systemd/system/caArchiver.service 53 -e "7i USR_CXXFLAGS += -std=c++11\n" \ 97 sudo systemctl daemon-reload 54 -e "/${iocNAME}_DBD += xxx.dbd/ a 98 ↪→ ${iocNAME}_DBD += aiUSBADC.dbd 99 # update environments ↪→ aoUSBDAC.dbd" \ 100 cat << EOF >> ${EPICS_ROOT}/thisEPICS.sh 55 -e "/${iocNAME}_LIBS += xxx/ a 101 ↪→ ${iocNAME}_LIBS += aiUSBADC 102 #MXSlowControl ↪→ aoUSBDAC\n${iocNAME}_SYS_LIBS += usb" 103 export MXSLOWCONTROL=\${EPICS_ROOT}/ c ↪→ \ ↪→ MXSlowControl 56 -i ${iocNAME}App/src/Makefile 104 export MXSLOWCONTROL_BIN=\${MXSLOWCONTROL}/ c 57 ↪→ bin/\${EPICS_HOST_ARCH} 58 # add caArchiver 105 export MXSLOWCONTROL_LIB=\${MXSLOWCONTROL}/ c 59 sed -i "7i PROD_HOST += ↪→ lib/\${EPICS_HOST_ARCH} ↪→ caArchiver\ncaArchiver_SRCS += 106 export IOC=\${MXSLOWCONTROL}/iocBoot/ ↪→ caArchiver.c\ncaArchiver_LIBS += c \$(EPICS_BASE_HOST_LIBS)\n" ↪→ iocMXSlowControl↪→ iocNAME App/src/Makefile 107 if [ "" = "\${LD_LIBRARY_PATH}" ]; then↪→ ${ } mkdir EPICS_ROOT /log 108 export60 ${ } touch EPICS_ROOT /CA_ADDR_LIST.local ↪→ LD_LIBRARY_PATH=\${MXSLOWCONTROL_LIB}61 ${ } 62 touch ${EPICS_ROOT 109 else}/log/log.txt 110 export LD_LIBRARY_PATH=\${MXSLOWCONTROL 63 c # module Frontend ↪→ _LIB}:\${LD_LIBRARY_PATH}64 111 fi 65 if [ "$(grep FRONTEND $EPICS_ROOT/RELEASE.local)" != "" ] 112 export PATH=\${PATH}:\${MXSLOWCONTROL_BIN}↪→ 66 then 113 sed -e "/${iocNAME}_DBD += xxx.dbd/ a 114 #Channel Access List67 ${iocNAME}_DBD += frontend.dbd" \ 115 export EPICS_CA_ADDR_LIST="\$(<\${EPICS↪→ c 68 -e "/${iocNAME}_LIBS += xxx/ a ↪→ _ROOT}/CA_ADDR_LIST.local)" → ${iocNAME}_LIBS += frontend" \ 116↪ 69 -i ${iocNAME}App/src/Makefile 117 #caArchiver 70 fi 118 export CA_ARCHIVER_LOG=\${EPICS_ROOT}/log 71 119 EOF 72 # BIULD ALL 120 sudo install ${EPICS_ROOT}/thisEPICS.sh 73 echo "Build Application" ↪→ /etc/profile.d/epics.sh 74 make -j4 || exit 121 75 122 echo "DONE!" 144 Appendix C - EPICS Support Files Code C.3: Installation Script Module MXFrontend File: install_module_frontend.sh 1 #!/bin/bash 24 cp $SOURCE_DIR/src/*.h ${moduleName}App/src/. 2 # author: Stefan Lunkenheimer ↪→ || (echo "${RED}Error while cp h" && ↪→ (stelunke@uni-mainz.de) ↪→ exit) 3 25 cp $SOURCE_DIR/src/*.dbd 4 # Remark: Check if the export variables are ↪→ ${moduleName}App/src/. || (echo ↪→ set correctly! ↪→ "${RED}Error while cp dbd" && exit) 5 RED='\033[1;31m' 26 6 HINT='\033[1;36m' 27 # Configure Makefile 7 NC='\033[0m' # No Color 28 sed -e "/${moduleName}_LIBS +=/r 8 ↪→ $SOURCE_DIR/src/Makefile_ext" \ 9 #source /etc/profile.d/epics.sh 29 -i ${moduleName}App/src/Makefile || (echo 10 moduleName="frontend" ↪→ "${RED}Error sed Makefile" && exit) 11 modulePath="FRONTEND" 30 12 31 # Make all 13 SOURCE_DIR="$(cd "$( dirname "$0")" && pwd 32 make -j4 || (echo "${RED}Error while make" && ↪→ )" ↪→ exit) 14 33 15 cd $EPICS_ROOT/modules || exit 34 # Modify thisEPICS.sh 16 mkdir -p $moduleName || exit 35 echo "export $modulePath=${EPICS_ROOT}/ c 17 ↪→ modules/$moduleName" >> 18 # Make Base Application Support Module ↪→ ${EPICS_ROOT}/thisEPICS.sh 19 cd $moduleName 36 export $modulePath=${EPICS_ROOT}/modules/ c 20 echo $moduleName | makeBaseApp.pl -t support ↪→ $moduleName ↪→ || (echo "${RED}Error makeBaseApp" && 37 ↪→ exit) 38 # Modify RELEASE.local 21 39 echo "$modulePath=${EPICS_ROOT}/modules/ c 22 # Copy source files ↪→ $moduleName" >> 23 cp $SOURCE_DIR/src/*.cpp ↪→ ${EPICS_ROOT}/RELEASE.local ↪→ ${moduleName}App/src/. || (echo 40 ↪→ "${RED}Error while cp cpp" && exit) 41 # Done 42 echo "${HINT}\n\nmodule $moduleName ↪→ installed${NC}" Code C.4: Bash completion for EPICS File: epics_BASH_completion.sh 1 # auto completion for a running softIOC 20 else 2 # 21 opts=$(cat ${EPICS_ROOT}/dbl.txt) 3 # Tutorials / Sources: 22 fi 4 # https://web.archive.org/web/ c 23 ↪→ 20200507173259/https://debian- c 24 if [[ ${cur} == *.* ]] ; then ↪→ administration.org/ 25 local cur1=${cur%.*} ↪→ article/317/ c 26 #local cur2=${cur##*.} ↪→ An_introduction_to_bash_completion_part_2 27 local param="NAME DESC SCAN PREC EGU 5 # https://www.gnu.org/savannah-checkouts/ c ↪→ INPA INPB CALC HOPR LOPR VAL" ↪→ gnu/bash/manual/bash.html 28 local fields=$(for x in $param; do ↪→ #A-Programmable-Completion-Example ↪→ echo ${cur1}.${x}; done) 6 # 29 COMPREPLY=($(compgen -W "${fields}" 7 # author: Stefan Lunkenheimer ↪→ -- "${cur}")) ↪→ (stelunke@uni-mainz.de) 30 return 0 8 # date: 2018-06-13 31 else 9 # Version 1.2 32 COMPREPLY=( $(compgen -W "${opts}" 10 ↪→ -- "${cur}")) 11 _epics() 33 return 0 12 { 34 fi 13 local cur prev opts 35 14 COMPREPLY=() 36 return 0 15 cur="${COMP_WORDS[COMP_CWORD]}" 37 } 16 prev="${COMP_WORDS[COMP_CWORD-1]}" 38 complete -F _epics caget 17 if [ -e ${EPICS_ROOT}/dbl_global.txt ] 39 complete -F _epics caput 18 then 40 complete -F _epics camonitor 19 opts=$(cat ${EPICS_ROOT}/dbl.txt 41 complete -F _epics logreader ↪→ ${EPICS_ROOT}/dbl_global.txt | ↪→ sort | uniq) 145 Appendix C - EPICS Support Files Code C.5: ZSH completion for EPICS File: epics_ZSH_completion.sh 1 # auto completion for a running softIOC 17 else 2 # 18 cmds=( ${(uf)"$(<${EPICS_ROOT}/dbl.txt)"} 3 # Tutorials / Sources: ↪→ ) 4 # https://github.com/zsh-users/zsh- c 19 fi ↪→ completions/blob/master/zsh-completions- c 20 ↪→ howto.org 21 # description: The character ':' makes 5 # https://stackoverflow.com/questions/ c ↪→ Problems, because the description uses it ↪→ 17318913/make-zsh-complete-arguments- c ↪→ as seperator for their individual ↪→ from-a-file ↪→ description. 6 # 22 # There are two Solutions: 7 # author: Stefan Lunkenheimer 23 # In the file use \: insteead of : then ↪→ (stelunke@uni-mainz.de) ↪→ everything works fine 8 # date: 2018-06-13 24 # use the argument function 9 # Version 1.2 25 10 26 #_describe 'a description of the completion 11 _epics() ↪→ options' cmds 12 { 27 _arguments '*:foo:(${cmds})' 13 cmds= 28 } 14 if [ -e ${EPICS_ROOT}/dbl_global.txt ] 29 15 then 30 compdef _epics caget caput camonitor 16 cmds=( ${(uf)"$(cat ${EPICS_ROOT}/dbl.txt ↪→ logreader ↪→ ${EPICS_ROOT}/dbl_global.txt | sort | ↪→ uniq)"} ) Code C.6: Header file of the C++ class for the MUX0 register of the ADS1248 chip. File: MUX0.h 1 /* 34 }; 2 * MUX0.h 35 3 * 36 class Register 4 * Created on: Oct 16, 2018 37 { 5 * Author: stelunke (stelunke@uni-mainz.de) 38 public: 6 */ 39 Register ( ); 7 40 8 #ifndef MUX0_H_ 41 Register (BCS, AIN, AIN ); 9 #define MUX0_H_ 42 10 43 void setBCS(BCS); 11 #include 44 12 45 void setMUX_SP(AIN); 13 namespace MUX0 46 14 { 47 void setMUX_SN(AIN); 15 48 16 enum class BCS : std::uint8_t 49 std::uint8_t getBitset(); 17 { 50 18 off = 0b00, 51 private: 19 on_0_5uA = 0b01, 52 BCS m_bcs; 20 on_2uA = 0b10, 53 AIN m_muxSP; 21 on_10uA = 0b11 54 AIN m_muxSN; 22 }; 55 23 56 enum Bit 24 enum class AIN : std::uint8_t 57 { 25 { 58 BCS_BIT=6, 26 AIN0 = 0x0, 59 MUX_SP_BIT=3, 27 AIN1 = 0x1, 60 MUX_SN_BIT=0 28 AIN2 = 0x2, 61 }; 29 AIN3 = 0x3, 62 }; 30 AIN4 = 0x4, 63 31 AIN5 = 0x5, 64 } /* namespace MUX0 */ 32 AIN6 = 0x6, 65 33 AIN7 = 0x7 66 #endif /* MUX0_H_ */ 146 Appendix C - EPICS Support Files Code C.7: Source file of the C++ class for the MUX0 register of the ADS1248 chip. File: MUX0.cpp 1 /* 30 { 2 * MUX0.cpp 31 m_bcs = bcs; 3 * 32 } 4 * Created on: Oct 16, 2018 33 5 * Author: stelunke (stelunke@uni-mainz.de) 34 void Register::setMUX_SP(AIN muxSP) 6 */ 35 { 7 36 m_muxSP = muxSP; 8 #include "MUX0.h" 37 } 9 38 10 namespace MUX0 39 void Register::setMUX_SN(AIN muxSN) 11 { 40 { 12 41 m_muxSN = muxSN; 13 Register::Register ( ): 42 } 14 m_bcs{BCS::off}, 43 15 m_muxSP{AIN::AIN0}, 44 std::uint8_t Register::getBitset() 16 m_muxSN{AIN::AIN1} 45 { 17 { 46 std::uint8_t bitset = 0x00; 18 47 bitset |= 19 } ↪→ static_cast(m_bcs) << 20 ↪→ BCS_BIT; 21 Register::Register (BCS bcs, AIN muxSP, AIN 48 bitset |= ↪→ muxSN): ↪→ static_cast(m_muxSP) << 22 m_bcs{bcs}, ↪→ MUX_SP_BIT; 23 m_muxSP{muxSP}, 49 bitset |= 24 m_muxSN{muxSN} ↪→ static_cast(m_muxSN) << 25 { ↪→ MUX_SN_BIT; 26 50 return bitset; 27 } 51 } 28 52 29 void Register::setBCS(BCS bcs) 53 } /* namespace MUX0 */ Code C.8: Header file of the C++ class for the I 2C communication of the SiDet device driver. File: RPiI2C.h 1 /** 27 { 2 * \class RPiI2C 28 public: 3 * 29 /// Delete Copy constructor for Singleton 4 * \brief I2C connection class for Raspberry 30 RPiI2C(const RPiI2C&) = delete; ↪→ Pi 31 5 * 32 /// Delete Move constructor for Singleton 6 * Singleton to handle the communication for 33 RPiI2C(const RPiI2C&&) = delete; ↪→ the I2C Bus of a Raspberry Pi 34 ↪→ (/dev/i2c-1). 35 /// Delete Copy assignment operator for 7 * ↪→ Singleton 8 * \todo For a RPi4 multiple I2C Bus 36 RPiI2C& operator= (const RPiI2C) = ↪→ connections are possible ↪→ delete; 9 * 37 10 * \author Stefan Lunkenheimer 38 /// Default deconstructor 11 * Contact: stelunke@uni-mainz.de 39 ~RPiI2C(); 12 * 40 13 * Created on: Thu Feb 27th, 2020 41 /** 14 * 42 * \brief write data to I2C bus 15 * Source: https://raspberry- c 43 * ↪→ projects.com/pi/programming-in-c/i2c/ c 44 * write @ref buffer of length @ref len ↪→ using-the-i2c-interface ↪→ to a device on I2C bus with the adress 16 */ ↪→ @ref slaveAddr 17 45 * @param slaveAddr I2C Adress of the 18 #ifndef RPII2C_H ↪→ device 19 #define RPII2C_H 46 * @param buffer Data to write to device 20 47 * @param len Length of the data buffer 21 #include 48 * @return
true
: write to device 22 #include ↪→ succesfull;
false
: write to 23 ↪→ device failed 24 #include "mxlog.h" 49 */ 25 50 bool 26 class RPiI2C final 147 Appendix C - EPICS Support Files 51 writeI2C(uint8_t slaveAddr, uint8_t* 99 * @return
true
I2C connection ↪→ buffer, uint8_t len); ↪→ ready;
false
I2C connection 52 ↪→ failed 53 /** 100 */ 54 * \brief read data from I2C bus 101 bool 55 * 102 open(); 56 * read data @ref buffer of length @ref 103 ↪→ len from device on I2C bus with the 104 /** ↪→ adress @ref slaveAddr 105 * \brief reopen I2C connection 57 * @param slaveAddr I2C Adress of the 106 * ↪→ device 107 * @return
true
I2C connection 58 * @param buffer Data from device ↪→ ready;
false
reopen failed 59 * @param len Length of the data buffer 108 */ 60 * @return
true
: write to device 109 bool ↪→ succesfull;
false
: write to 110 reopen(); ↪→ device failed 111 61 */ 112 /** 62 bool 113 * \brief close I2C connection 63 readI2C(uint8_t slaveAddr, uint8_t* 114 * ↪→ buffer, uint8_t len); 115 * @return
true
I2C closed; 64 ↪→
false
failed 65 /** 116 */ 66 * \brief status of the I2C connection 117 bool 67 * 118 close(); 68 * @return
true
I2C connection 119 ↪→ ready;
false
I2C connection 120 /** ↪→ closed 121 * \brief set log level 69 */ 122 * 70 bool 123 * @param new log level 71 getStatus() const; 124 */ 72 125 void 73 /** 126 set_level(spdlog::level::level_enum 74 * \brief get the class Identifier ↪→ level); 75 * 127 76 * @return class name 128 /** 77 */ 129 * \brief set log level 78 std::string 130 * 79 IsA() const; 131 * @param new log level 80 132 */ 81 /** 133 void 82 * \brief get Instance of the Singleton 134 set_level(unsigned int level); ↪→ class 135 83 * 136 84 * The first instance opens the I2C 137 private: ↪→ connection. 138 /// static pointer used to ensure a 85 * ↪→ single instance of the class 86 * @return Instance of RPiI2C 139 static RPiI2C* m_device; 87 */ 140 88 static RPiI2C& 141 /// private constructor for Singleton 89 device() 142 RPiI2C(); 90 { 143 91 if (!m_device) 144 /// own logger 92 m_device = new RPiI2C(); 145 mxlog m_logger; 93 return *m_device; 146 94 } 147 /// I2C file handler 95 148 int m_fd_I2C; 96 /** 149 97 * \brief open I2C connection 150 }; 98 * 151 152 153 #endif // RPII2C_H Code C.9: Source file of the C++ class for the I 2C communication of the SiDet device driver. File: RPiI2C.cpp 1 /** 9 * Source: https://raspberry-projects.com/ c 2 * \file RPiI2C.cpp ↪→ pi/programming-in-c/i2c/using-the-i2c- c 3 * ↪→ interface 4 * \author Stefan Lunkenheimer 10 */ 5 * Contact: stelunke@uni-mainz.de 11 6 * 12 #include "RPiI2C.h" 7 * Created on: Thu Feb 27th, 2020 13 #include "spdlog/logger.h" 8 * 14 #include 148 Appendix C - EPICS Support Files 15 #include 71 { 16 #include //Needed for I2C 72 std::string s = ""; ↪→ port 73 for (unsigned int i=0; i //Needed for I2C ↪→ i++) ↪→ port 74 s = fmt::format("{}{: c 18 #include //Needed for I2C ↪→ #04x} ",s, ↪→ port ↪→ buffer[i]); 19 #include //Needed for I2C 75 m_logger.trace("{:#04x} read ↪→ port ↪→ {}: {}", slaveAddr, len, 20 ↪→ s); 21 RPiI2C* RPiI2C::m_device = nullptr; 76 } 22 77 return true; 23 RPiI2C::RPiI2C(): 78 } 24 m_logger(this->IsA()), 79 else 25 m_fd_I2C(-1) 80 { 26 { 81 m_logger.error("Unable to read 27 this->open(); ↪→ from slave {:#04x}", 28 m_logger.debug("constructed"); ↪→ slaveAddr); 29 } 82 } 30 83 } 31 RPiI2C::~RPiI2C() 84 else 32 { 85 m_logger.error("Failed to acquire bus 33 this->close(); ↪→ access and/or talk to slave 34 delete m_device; ↪→ {:#04x}", slaveAddr); 35 m_logger.debug("deconstructed"); 86 36 } 87 return false; 37 88 } 38 bool RPiI2C::writeI2C(uint8_t slaveAddr, 89 ↪→ uint8_t* buffer, uint8_t len) 90 bool RPiI2C::getStatus() const 39 { 91 { 40 if (ioctl(m_fd_I2C, I2C_SLAVE, slaveAddr) 92 if (m_fd_I2C >= 0) ↪→ >= 0) 93 return true; 41 { 94 return false; 42 if (write(m_fd_I2C, buffer, len) == 95 } ↪→ len) 96 43 { 97 std::string RPiI2C::IsA() const 44 if (m_logger.get_level() == 98 { ↪→ spdlog::level::trace) 99 return "RPiI2C"; 45 { 100 } 46 std::string s = ""; 101 47 for (unsigned int i=0; i= 0) 51 return true; 109 { 52 } 110 m_logger.info("Connection to bus {} 53 else ↪→ opened", "/dev/i2c-1"); 54 { 111 return true; 55 m_logger.error("Unable to write 112 } ↪→ to slave: {:#04x}", 113 ↪→ slaveAddr); 114 m_logger.error("Failed to open the i2c 56 } ↪→ bus {}", "/dev/i2c-1"); 57 } 115 return false; 58 else 116 } 59 m_logger.error("Failed to acquire bus 117 ↪→ access and/or talk to slave 118 bool RPiI2C::reopen() ↪→ {:#04x}", slaveAddr); 119 { 60 120 return close() && open(); 61 return false; 121 } 62 } 122 63 123 bool RPiI2C::close() 64 bool RPiI2C::readI2C(uint8_t slaveAddr, 124 { ↪→ uint8_t* buffer, uint8_t len) 125 if (m_fd_I2C >= 0) 65 { 126 { 66 if (ioctl(m_fd_I2C, I2C_SLAVE, slaveAddr) 127 ::close(m_fd_I2C); ↪→ >= 0) 128 m_fd_I2C = -1; 67 { 129 m_logger.info("Connection to bus {} 68 if (read(m_fd_I2C, buffer, len) == ↪→ closed", "/dev/i2c-1"); ↪→ len) 130 } 69 { 131 return true; 70 if (m_logger.get_level() == ↪→ spdlog::level::trace) 149 Appendix C - EPICS Support Files 132 } 138 } 133 139 134 void 140 void 135 RPiI2C::set_level(spdlog::level::level_enum 141 RPiI2C::set_level(unsigned int level) ↪→ level) 142 { 136 { 143 m_logger.set_level(level); 137 m_logger.set_level(level); 144 } Code C.10: Header file of the C++ class for the mxlog class for the SiDet device driver. File: mxlog.h 1 /** 54 * @param type logger name for 2 * \class mxlog ↪→ identification, should be unique 3 * 55 */ 4 * \brief mxlogger 56 mxlog(spdlog::level::level_enum level, 5 * ↪→ std::string type = "undefined"); 6 * This class allows to specify seperat 57 ↪→ loggers per object. The advantage is, 58 /** 7 * that the log_level for each logger can set 59 * \brief default constructor ↪→ seperately. 60 * 8 * 61 * @param level initial logger level 9 * \todo Add file_logger 62 * @param type logger name for 10 * \todo Think about this class, maybe it's ↪→ identification, should be unique ↪→ better derivate from this class 63 */ 11 * \todo How to dis/enable spdlog? 64 mxlog(unsigned int level, std::string 12 * ↪→ type = "undefined"); 13 * \author Stefan Lunkenheimer 65 14 * Contact: stelunke@uni-mainz.de 66 /// default destructor 15 * 67 ~mxlog(); 16 * Created on: Thu Mar 12th, 2020 68 17 * 69 /** 18 */ 70 * \brief log string with fmt formating 19 ↪→ @ref format with severity @ref level 20 #ifndef MXLOG_H 71 * 21 #define MXLOG_H 72 * @param level log level 22 73 * @param format fmt format string 23 #include 74 * @args the arguments used to format the 24 #include ↪→ string @ref format 25 75 */ 26 #include "spdlog/spdlog.h" 76 template 27 #include "spdlog/sinks/stdout_color_sinks.h" 77 void log(int level, const std::string& 28 #include "spdlog/sinks/basic_file_sink.h" ↪→ format, const Args ... args ) 29 78 { 30 79 m_logger->log(level, format, 31 class mxlog final ↪→ args...); 32 { 80 } 33 public: 81 34 /** 82 /** 35 * \brief default constructor 83 * \brief log string with fmt formating 36 * ↪→ @ref format with severity @ref level 37 * @param type logger name for 84 * ↪→ identification, should be unique 85 * @param level log level 38 * @param level initial logger level 86 * @param format fmt format string 39 */ 87 * @args the arguments used to format the 40 mxlog(std::string type = "undefined", ↪→ string @ref format ↪→ spdlog::level::level_enum 88 */ ↪→ level=spdlog::level::info); 89 template 41 90 void log(spdlog::level::level_enum 42 /** ↪→ level, const std::string& format, 43 * \brief default constructor ↪→ const Args ... args ) 44 * 91 { 45 * @param type logger name for 92 m_logger->log(level, format, ↪→ identification, should be unique ↪→ args...); 46 * @param level initial logger level 93 } 47 */ 94 48 mxlog(std::string type, unsigned int 95 ↪→ level); 96 /** 49 97 * \brief log string with fmt formating 50 /** ↪→ @ref format with severity @ref level 51 * \brief default constructor 98 * 52 * 99 * @param level log level 53 * @param level initial logger level 100 * @param format fmt format string 150 Appendix C - EPICS Support Files 101 * @args the arguments used to format the 153 { ↪→ string @ref format 154 m_logger->error(format, args...); 102 */ 155 } 103 template 156 104 void trace(const std::string& format, 157 /** ↪→ const Args ... args ) 158 * \brief log string with fmt formating 105 { ↪→ @ref format with severity critical 106 m_logger->trace(format, args...); 159 * 107 } 160 * @param format fmt format string 108 161 * @args the arguments used to format the 109 /** ↪→ string @ref format 110 * \brief log string with fmt formating 162 */ ↪→ @ref format with severity debug 163 template 111 * 164 void critical(const std::string& format, 112 * @param format fmt format string ↪→ const Args ... args ) 113 * @args the arguments used to format the 165 { ↪→ string @ref format 166 m_logger->critical(format, args...); 114 */ 167 } 115 template 168 116 void debug(const std::string& format, 169 /** ↪→ const Args ... args ) 170 * \brief get the current log level 117 { 171 * 118 m_logger->debug(format, args...); 172 * @return current log level 119 } 173 */ 120 174 spdlog::level::level_enum get_level() 121 /** ↪→ const; 122 * \brief log string with fmt formating 175 ↪→ @ref format with severity info 176 /** 123 * 177 * \brief set log level 124 * @param format fmt format string 178 * 125 * @args the arguments used to format the 179 * @param log_level ↪→ string @ref format 180 */ 126 */ 181 void set_level(spdlog::level::level_enum 127 template ↪→ log_level); 128 void info(const std::string& format, 182 ↪→ const Args ... args ) 183 /** 129 { 184 * \brief set log level 130 m_logger->info(format, args...); 185 * 131 } 186 * @param log_level 132 187 */ 133 /** 188 void set_level(unsigned int log_level); 134 * \brief log string with fmt formating 189 ↪→ @ref format with severity warning 190 // void 135 * 191 // enableFile(std::string filename); 136 * @param format fmt format string 192 137 * @args the arguments used to format the 193 //void trace ↪→ string @ref format 194 private: 138 */ 195 /// current log level 139 template 196 spdlog::level::level_enum m_level; 140 void warn(const std::string& format, 197 ↪→ const Args ... args ) 198 /// console sink - equal for all logger 141 { 199 static std::shared_ptrwarn(format, args...); ↪→ stdout_color_sink_mt> 143 } ↪→ m_console_sink; 144 200 145 /** 201 //static std::shared_ptr ↪→ @ref format with severity error ↪→ m_file_sink; 147 * 202 148 * @param format fmt format string 203 /// specific logger for each object 149 * @args the arguments used to format the 204 std::shared_ptr m_logger; ↪→ string @ref format 205 }; 150 */ 206 151 template 207 #endif //MXLOG_H 152 void error(const std::string& format, ↪→ const Args ... args ) Code C.11: Source file of the C++ class for the mxlog class for the SiDet device driver. File: mxlog.cpp 1 /** 4 * \author Stefan Lunkenheimer 2 * \file mxlog.cpp 5 * Contact: stelunke@uni-mainz.de 3 * 6 * 151 Appendix C - EPICS Support Files 7 * Created on: Thu Mar 12th, 2020 41 8 * 42 mxlog::mxlog(spdlog::level::level_enum 9 **/ ↪→ level, std::string type): 10 43 mxlog(type, level) 11 #include 44 { 12 #include 45 } 13 #include 46 14 #include 47 mxlog::mxlog(unsigned int level, std::string 15 #include ↪→ type): 16 48 mxlog(type, static_cast(level)) 18 49 { 19 50 20 std::shared_ptr 52 ↪→ mxlog::m_console_sink = nullptr; 53 mxlog::~mxlog() 21 //std::shared_ptr 55 m_logger->info("Logger \"{}\" stopped", ↪→ mxlog::m_file_sink=nullptr; ↪→ m_logger->name()); 22 56 m_logger->flush(); 23 mxlog::mxlog(std::string type, 57 m_logger.reset(); ↪→ spdlog::level::level_enum level): 58 } 24 m_level(level), 59 25 m_logger(nullptr) 60 spdlog::level::level_enum mxlog::get_level() 26 { ↪→ const { 27 if (!m_console_sink) 61 return m_level; 28 m_console_sink = 62 } ↪→ std::make_shared(); 64 void mxlog::set_level(spdlog::level:: c 29 ↪→ level_enum log_level) 30 m_logger = std::make_shared(type, 65 m_level = log_level; ↪→ m_console_sink); 66 m_logger->info("set_level to {}", 31 m_logger->set_level(m_level); ↪→ spdlog::level:: c 32 log(spdlog::level::info, "Logger \"{}\" ↪→ to_string_view(log_level)); ↪→ created", type); 67 m_logger->set_level(m_level); 33 } 68 } 34 69 35 mxlog::mxlog(std::string type, unsigned int 70 void mxlog::set_level(unsigned int log_level) ↪→ level): ↪→ { 36 mxlog(type, static_cast(level)) 72 set_level(static_cast(log_level)); 38 } 73 else 39 74 set_level(spdlog::level::off); 40 75 } Code C.12: The read_aiSIDET and write_aiSIDET function defined to con- nect the SiDet library with EPICS using the device support interface. File: SILICONDETECTOR.cpp 1 #include "aiRecord.h" 23 err_msg (std::string recName, std::string e, 2 #include "aoRecord.h" ↪→ std::string pattern = "\u274C%s 3 #include "epicsExport.h" ↪→ \u25AC\u25AC\u25B6 %s!!!") 4 #include "iocsh.h" 24 { 5 #include 25 char msg[MAX_MSG_LENGTH]; 6 #include // std::find_if 26 sprintf(msg, pattern.c_str(), 7 #include ↪→ recName.c_str(), e.c_str()); 8 #include 27 std::cerr << "\033[1;31m" << msg << 9 #include ↪→ "\033[0m" << std::endl; 10 28 } 11 #include "SiDet.h" 29 12 #include "RPiI2C.h" 30 extern "C" long 13 31 init_recordSIDET (struct aiRecord *pai) 14 #include // std::mutex 32 { 15 33 std::lock_guard 16 #define MAX_MSG_LENGTH 100 ↪→ lock(m_AccessMutex); 17 34 if (!mySidet) 18 static std::mutex m_AccessMutex; 35 { 19 36 mySidet = new SiDet(); 20 static SiDet * mySidet = nullptr; 37 } 21 38 return ( 0 ); 22 static void 39 } 40 152 Appendix C - EPICS Support Files 41 /** 102 if 42 * ↪→ (pString[0].compare("getResistance") 43 * @param pai ↪→ == 0) 44 * @return error code: 2 := success in 103 { ↪→ engineering units; 3:= Device not found 104 if (pString.size() < 2) 45 */ 105 { 46 extern "C" long 106 err_msg(pai->name, "Not 47 read_aiSIDET (struct aiRecord *pai) ↪→ Enough Parameters"); 48 { 107 return ( 3 ); 49 if (pai->inp.text) 108 50 { 109 } 51 // Split input String 110 std::uint8_t channel = 52 std::string input { pai->inp.text }; ↪→ atoi(pString[1].c_str()); 53 std::string delimiter = " "; 111 if (channel >= 2) 54 std::vector < std::string > pString; 112 { 55 113 err_msg(pai->name, "Channel 56 size_t pos = 0; ↪→ Out Of Range"); 57 std::string token; 114 return ( 3 ); 58 while (( pos = input.find(delimiter) 115 } ↪→ ) != std::string::npos) 116 double value = 0; 59 { 117 std::lock_guard 60 token = input.substr(0, pos); ↪→ lock(m_AccessMutex); 61 pString.push_back(token); 118 if (!(mySidet- c 62 input.erase(0, pos + ↪→ >getResistance(&value, ↪→ delimiter.length()); ↪→ channel))) 63 } 119 { 64 pString.push_back(input); 120 err_msg(pai->name, "Can't 65 ↪→ Read Resistance"); 66 // Check number of input parameters 121 return ( 3 ); 67 if (pString.size() == 0) 122 } 68 { 123 pai->val = value; 69 err_msg(pai->name, "Not Enough 124 pai->udf = FALSE; ↪→ Parameters"); 125 return ( 2 ); 70 return ( 3 ); 126 } 71 127 } 72 } 128 else 73 if 129 { ↪→ (pString[0].compare("getThreshold")130 err_msg(pai->name, "No input"); ↪→ == 0) 131 return ( 3 ); 74 { 132 } 75 double value = 0; 133 err_msg(pai->name, "Unknowm Command"); 76 std::lock_guard 134 return ( 3 ); ↪→ lock(m_AccessMutex); 135 } 77 if (!(mySidet- c 136 ↪→ >getThreshold(&value))) 137 extern "C" long 78 { 138 write_aoSIDET (struct aoRecord *pai) 79 err_msg(pai->name, "Can't 139 { ↪→ Read Threshold"); 140 if (pai->out.text) 80 return ( 3 ); 141 { 81 } 142 // Split input String 82 pai->val = value; 143 std::string input { pai->out.text }; 83 pai->udf = FALSE; 144 std::string delimiter = " "; 84 return ( 2 ); 145 std::vector < std::string > pString; 85 } 146 86 147 size_t pos = 0; 87 if 148 std::string token; ↪→ (pString[0].compare("getTemperature1"4)9 while (( pos = input.find(delimiter) ↪→ == 0) ↪→ ) != std::string::npos) 88 { 150 { 89 double value = 0; 151 token = input.substr(0, pos); 90 std::lock_guard 152 pString.push_back(token); ↪→ lock(m_AccessMutex); 153 input.erase(0, pos + 91 if (!(mySidet- c ↪→ delimiter.length()); ↪→ >getPCBTemperature(&value))) 154 } 92 { 155 pString.push_back(input); 93 err_msg(pai->name, "Can't 156 ↪→ Read getTemperature"); 157 // Check number of input parameters 94 return ( 3 ); 158 if (pString.size() == 0) 95 } 159 { 96 pai->val = value; 160 err_msg(pai->name, "Not Enough 97 pai->udf = FALSE; ↪→ Parameters"); 98 return ( 2 ); 161 return ( 3 ); 99 } 162 100 163 } 101 // getResistance Readout 164 if ↪→ (pString[0].compare("setThreshold") ↪→ == 0) 153 Appendix C - EPICS Support Files 165 { 173 pai->udf = FALSE; 166 std::lock_guard 174 return ( 0 ); ↪→ lock(m_AccessMutex); 175 } 167 double value = (double) pai->val; 176 } 168 if (!(mySidet- c 177 else ↪→ >setThreshold(value))) 178 { 169 { 179 err_msg(pai->name, "No input"); 170 err_msg(pai->name, "Can't Set 180 return ( 3 ); ↪→ Threshold"); 181 } 171 return ( 3 ); 182 err_msg(pai->name, "Unknowm Command"); 172 } 183 return ( 3 ); 184 } Code C.13: The definition of the IOC shell command MXSiDet_SetLogLevel. File: SILICONDETECTOR.cpp 1 /* 45 << "Usage: MXSiDet_SetLogLevel c 2 struct iocshFuncDef { ↪→ (s,d='all')" << 3 const char *name; ↪→ std::endl 4 int nargs; 46 << "Set the minimal Message 5 const iocshArg * const *arg; ↪→ log_level s for device d" 6 }; ↪→ << std::endl 7 47 << "string s: \"trace\", 8 struct iocshArg { ↪→ \"debug\", \"info\", 9 const char *name; ↪→ \"warning\", \"error\", 10 iocshArgType type; ↪→ \"critical\", \"off\"" << 11 }iocshArg; ↪→ std::endl 12 48 << "string d: \"all\" 13 void showCallFunc(const iocshArgBuf *args); ↪→ (including: \"SiDet\", 14 ↪→ \"MUX\", \"DAC\", \"ADC\", 15 iocshArgInt int args[i].ival ↪→ \"PCB\") or \"I2C\"" 16 iocshArgDouble double args[i].dval 49 << "\033[0m" << std::endl; 17 iocshArgString char * args[i].sval ↪→ //back to standard 18 iocshArgPersistentString char * args[i].sval 50 } 19 iocshArgPdbbase void * args[i].vval 51 20 iocshArgArgv int args[i].aval.ac 52 void SetMXSiDetLogLevelCallFunc(const 21 char ** args[i].aval.av ↪→ iocshArgBuf *args) 22 */ 53 { 23 54 24 /* drvXxx code, FuncDef and CallFunc 55 ↪→ definitions ... */ 56 if (args[0].sval==NULL || 25 ↪→ args[0].sval[0]=='?') 26 static const iocshArg SetMXSiDetLogLevelArg0 57 { ↪→ = { "log_level", iocshArgString }; 58 printDoc(); 27 static const iocshArg SetMXSiDetLogLevelArg1 59 return; ↪→ = { "device", iocshArgString }; 60 } 28 61 29 static const iocshArg *const 62 std::string arg0{args[0].sval}; ↪→ SetMXSiDetLogLevelArgs[2] = 63 spdlog::level::level_enum log_level = ↪→ {&SetMXSiDetLogLevelArg0, c ↪→ spdlog::level::from_str(arg0); ↪→ &SetMXSiDetLogLevelArg1}; 64 if (log_level == spdlog::level::off 30 static const iocshFuncDef 65 && arg0.compare("off") != 0) ↪→ SetMXSiDetLogLevelDef = 66 { ↪→ {"MXSiDet_SetLogLevel",2, c 67 char msg[50]; ↪→ SetMXSiDetLogLevelArgs}; 68 sprintf(msg,"Severity Level %s 31 ↪→ unknown",arg0.c_str()); 32 static void SetMXSiDetLogLevelCallFunc(const 69 err_msg("MXSiDet_SetLogLevel", msg); ↪→ iocshArgBuf *args); 70 printDoc(); 33 71 return; 34 /* drvXxx registration Function and export 72 } */ 73 35 static void SetMXSiDetLogLevelRegistrar(void) 74 std::lock_guard 36 { ↪→ lock(m_AccessMutex); 37 iocshRegister(&SetMXSiDetLogLevelDef, 75 if (!mySidet) ↪→ SetMXSiDetLogLevelCallFunc); 76 { 38 } 77 mySidet = new SiDet(); 39 epicsExportRegistrar c 78 } ↪→ (SetMXSiDetLogLevelRegistrar); 79 if (args[1].sval==NULL) 40 /* in dbd add registrar(drvXxxRegistrar) */ 80 { 41 81 mySidet->set_level(log_level,true); 42 static void printDoc() 82 return; 43 { 83 } 44 std::cout << "\033[1;36m" //cyan 84 85 std::string arg1{args[1].sval}; 86 if(arg1.compare("all") == 0) 154 Appendix C - EPICS Support Files 87 { 105 } 88 mySidet->set_level(log_level,true); 106 else if (arg1.compare("ADC") == 0) 89 return; 107 { 90 } 108 mySidet->set_level(log_level,SiDet:: c 91 else if (arg1.compare("SiDet") == 0) ↪→ ADC); 92 { 109 return; 93 mySidet->set_level(log_level,false); 110 } 94 return; 111 else if (arg1.compare("PCB") == 0) 95 } 112 { 96 else if (arg1.compare("MUX") == 0) 113 mySidet->set_level(log_level,SiDet:: c 97 { ↪→ PCB); 98 mySidet->set_level(log_level,SiDet:: c 114 return; ↪→ MUX); 115 } 99 return; 116 else if (arg1.compare("I2C") == 0) 100 } 117 { 101 else if (arg1.compare("DAC") == 0) 118 RPiI2C::device().set_level c 102 { ↪→ (log_level); 103 mySidet->set_level(log_level,SiDet:: c 119 return; ↪→ DAC); 120 } 104 return; 121 } 155 156 APPENDIX D Supplemental Material – Simulation In this chapter the definition of the TTree structure and the configuration files for the simulation are given. Code D.1: The TTree structure for the particle and event, stored in a root file at the end of the simulation. File: SFactorFullAnalysisTTree.hh 1 struct Particle{ 9 2 Double_t 10 struct Event { 3 vertex_x,vertex_y,vertex_z,mass, 11 Double_t 4 E,pp,p_phi,p_theta,p_ctheta; 12 weight, 5 Int_t PID; 13 W, Phi, q2, 6 }m_IS_electron, m_IS_oxygen, 14 CMS_theta, CMS_phi; ↪→ m_FS_electron, m_FS_particle1, 15 Int_t nr = 0; ↪→ m_FS_particle2, m_ImS_oxygen, 16 }m_event; ↪→ m_ImS_vPhoton; 17 7 18 const char *TTreestructureEvent = 8 const char *TTreestructureParticle = ↪→ "weight/D:W:Phi:1_q2:CMT_theta: c ↪→ "vertex_x/D:vertex_y:vertex_z:mass: c ↪→ CMS_phi:nr/I"; ↪→ E:pp:p_phi:p_theta:p_ctheta:PID/I"; Code D.2: Main configuration file of the simulation. File: SFactor_CrossSectionIntegrator_ZeroDegTagger.xml 1 13 @MAGIX_DIR@/lib/MXWare/ c 2 ↪→ plugins 3 14 true 4 15 false 5 ./log/MXLog.txt 16 6 true 17 7 info 18 8 19 @CMAKE_INSTALL_PREFIX@/ c 9 ↪→ share/MXWare/myPartData.mcd ↪→ --> 20 true 11 21 12 @CMAKE_INSTALL_PREFIX@/lib/ c 22 ↪→ MXWare/plugins 23 157 Appendix D - Supplemental Material – Simulation 24 8 66 @CMAKE_INSTALL_PREFIX@/ c 25 ↪→ share/MXWare/SE1data.csvtrue ↪→ E1data> 27 20000000 67 @CMAKE_INSTALL_PREFIX@/ c 28 0.001 ↪→ share/MXWare/SE2data.csv ↪→ "IdealBeamParticleGenerator"> 68 30 105 69 31
(0, 0)
70 33 1.0 71 34 0.2 72 @CMAKE_INSTALL_PREFIX@/ c 35 ↪→ out/SFactor_TTree_ c 36 ↪→ type="InitialBeamRootSummary"> ↪→ ↪→ 73 RECREATE 37 ↪→ 38 @CMAKE_INSTALL_PREFIX@/ c 74 ↪→ out/SFactor_ZeroDeg.rootSFactor ↪→ path> 76 ↪→ 77 39 RECREATE 78 40 ↪→ 41 SFactor/InitialBeam/ c 79 ↪→ 80 @CMAKE_INSTALL_PREFIX@/ c ↪→ ↪→ out/SFactor_ZeroDeg.root ↪→ path> 43 81 UPDATE 44 0.21219 83 SFactor_FSG[-10:10] ↪→ extension> 84 2419200 ↪→ extension> 85 47 [-1:1] 86 CMS_Energy 48 1000080160 87 Center of Mass Energy of 49 </target> ↪→ the outgoing 50 <initialstate_analysis ↪→ particles ↪→ type="InitialStateRootSummary"> 88 200 ↪→ 89 0.2 51 90 14 52 @CMAKE_INSTALL_PREFIX@/ c 91 ↪→ out/SFactor_ZeroDeg.root ↪→ path> 93 q2 ↪→ 94 Momentum transfer of the 53 <openmode>UPDATE</openmode> ↪→ scattered electron to the ↪→ ↪→ target 54 95 100 55 SFactor/InitialState/ c 96 -1e-6 ↪→ 97 0 56 98 57 100 Inverse q2 58 1000020040 101 Inverse Momentum transfer 59 <PID2>1000060120</PID2> ↪→ of the scattered electron to 60 <name>TwoBodyGenerator</name> ↪→ the target 61 0 102 200 62 25 103 -15e3 63 104 -1e3 64 ↪→ "SFactorCrossSectionCalculator"> 106 65 extrap 107 320 108 -0.0001 158 Appendix D - Supplemental Material – Simulation 109 0.005 121 110 320 122 111 55 123 112 100 124 113 125 <_include>@CMAKE_INSTALL_PREFIX@/ c 114 ↪→ share/MXWare/examples/TwoBody_ c 115 ↪→ DetectorSetup_ZeroDegTagger.xml c 116 theta_scattered ↪→ 117 The azimuthal angle of 126 ↪→ the direction of the 127 </plugin> ↪→ scattered particle 128 118 320 129 119 -0.0001 130
120 0.015 Code D.3: Detector setup used in the simulation for Phase 1 File: TwoBody_DetectorSetup_Spectrometer.xml 1 ↪→ type="CoincidenceAcceptance"> 35 2 ↪→ "SiliconStripAcceptance"> 3 true 37 SiliconStripDetector3 4 @MAGIX_DIR@/@DATA_ c 38 100 ↪→ INSTALL_DIR@/MXSpectrometer_ c 39 150 c ↪→ 2013.dat ↪→ 5 -75true ↪→ momentum> 41 10 6 700 42 50 7 43 50 8 0 44 1000020040 c 9 0 ↪→ 10 -10 ↪→ angle_deg> 46 11 47 13 48 SiliconStripDetector5 14 100 ↪→ "SiliconStripAcceptance"> 50 -90 c 15 SiliconStripDetector1 ↪→ 16 100 51 true 17 3010 ↪→ angle_deg> 53 50 18 true 54 50 19 10 55 1000020040 c 20 50 ↪→ 21 50 56 22 1000020040 c 57 ↪→ 58 ↪→ "SiliconStripAcceptance"> 24 59 SiliconStripDetector6 25 100 ↪→ type="SiliconStripAcceptance"> 61 -150 c 26 SiliconStripDetector2 ↪→ 27 100 62 true 28 9010 ↪→ angle_deg> 64 50 29 true 65 50 30 10 66 1000020040 c 31 50 ↪→ 32 50 67 33 1000020040 c 68 ↪→ 69 159 Appendix D - Supplemental Material – Simulation Code D.4: Detector setup used in the simulation for Phase 2 File: TwoBody_DetectorSetup_ZeroDegTagger.xml 1 1000020040 ↪→ PIDRestrict> 2 40 3 42 [7:105] ↪→ momentumRange> 43 SiliconStripDetector4 5 [0:0.85]100 ↪→ thetaRange_deg> 45 -30 ↪→ rotation_angle_deg> 7 46 true 8 47 10 9 50 ↪→ "SiliconStripAcceptance"> 49 50 10 SiliconStripDetector1 50 1000020040100 ↪→ PIDRestrict> 12 301000060120 ↪→ PIDRestrict> 13 true 52 14 10 53 15 50 54 50 ↪→ "SiliconStripAcceptance"> 17 1000020040SiliconStripDetector5 ↪→ PIDRestrict> 56 100 18 57 -90 20 true ↪→ type="SiliconStripAcceptance"> 59 10 21 SiliconStripDetector2 60 50 22 100 61 50 23 901000020040 ↪→ PIDRestrict> 24 true 63 25 10 64 26 50 65 50 ↪→ "SiliconStripAcceptance"> 28 1000020040SiliconStripDetector6 ↪→ PIDRestrict> 67 100 29 68 -150 31 true ↪→ "SiliconStripAcceptance"> 70 10 32 SiliconStripDetector3 71 50 33 100 72 50 34 1501000020040 ↪→ PIDRestrict> 35 true 74 36 10 75 37 50 76 38 50 160 List of Figures 2.1 Schematic view of a scattering process . . . . . . . . . . . . . . . 7 2.2 Maxwell-Boltzmann distribution for specific elements at the tem- peratures for specific burning stages in stars . . . . . . . . . . . . 10 2.3 Sketch of the Gamow peak, Maxwell-Boltzmann distribution and Coulomb penetration factor . . . . . . . . . . . . . . . . . . . . . 13 2.4 Schematic view of the Proton-Proton I-III chains . . . . . . . . . 14 2.5 Schematic view of the CNO cylce . . . . . . . . . . . . . . . . . . 16 2.6 Reaction scheme of the two most important reactions of the helium burning stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.7 Level scheme of the nuclei involed in the helium burning stage . . 19 2.8 Level diagram of the 16O nucleus . . . . . . . . . . . . . . . . . . 20 2.9 The total S-factor compared to the ground state and cascade tran- sitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.10 The E1 and E2 ground state contribution compared to the contri- bution of cascade transitions . . . . . . . . . . . . . . . . . . . . . 23 2.11 Coulomb phase shift cos(Φ12) . . . . . . . . . . . . . . . . . . . . 23 2.12 Angular contribution of E1 and E2 for the ground state transition 26 2.13 Cross section of the time-reversed reaction 16O(γ, α)12C and direct reaction 12C(α, γ)16O in comparison . . . . . . . . . . . . . . . . . 28 2.14 E1 and E2 contribution data . . . . . . . . . . . . . . . . . . . . . 33 2.15 Production factor of some key isotopes as function of the S-factor 35 3.1 First order Feynman diagram for the electro-disintegration reaction 16O(e, e′α)12C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1 Overview of the structure of MESA . . . . . . . . . . . . . . . . . 53 4.2 Overview of the MESA hall and the experiments . . . . . . . . . . 55 4.3 Overview of the P2 experiment . . . . . . . . . . . . . . . . . . . 55 4.4 Overview of the DarkMESA experiment . . . . . . . . . . . . . . 56 4.5 Overview of the MAGIX experiment . . . . . . . . . . . . . . . . 57 4.6 Laval Nozzle and Catcher . . . . . . . . . . . . . . . . . . . . . . 58 4.7 Overview of the gas jet target . . . . . . . . . . . . . . . . . . . . 59 4.8 Overview of the MAGIX spectrometer . . . . . . . . . . . . . . . 60 4.9 Schematic principle of a TPC . . . . . . . . . . . . . . . . . . . . 61 4.10 The current 3D concept of the trigger veto system . . . . . . . . . 62 4.11 Schematic view of the cross section of the diamond-shaped seg- mented trigger layer . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.12 Schematic view of the MAGIX trigger veto system . . . . . . . . . 63 4.13 Prototype of the silicon strip detetor . . . . . . . . . . . . . . . . 64 161 List of Figures 4.14 Schematic representation of the working principle of the silicon strip detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.15 Schematic representation of the zero degree tagger for MAGIX . . 66 4.16 Schematic view of the experimental setup for Phase 0/1 . . . . . . 69 4.17 Schematic view of the experimental setup for Phase 2 . . . . . . . 70 5.1 Overview of the major sotware components of an IOC . . . . . . . 73 5.2 Overview of the task distribution for the IOC and the CACs . . . 77 5.3 Overview of the channel access process . . . . . . . . . . . . . . . 78 5.4 Example of a CSS OPI . . . . . . . . . . . . . . . . . . . . . . . . 82 5.5 General structure of the SiDet test stand from the point of view of the control software . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.6 Overview of the SiDet readout electronics . . . . . . . . . . . . . . 98 5.7 Class diagram MXSiDet . . . . . . . . . . . . . . . . . . . . . . . 99 5.8 Example output of the mxlog class for the SiDet device driver . . 100 5.10 CSS OPI for the silicon strip detector test stand . . . . . . . . . . 102 6.1 Illustration of the distribution of the random numbers using a MC integration to calculate π . . . . . . . . . . . . . . . . . . . . . . . 106 6.2 Example of a less suitable function for the use of MC integration . 108 6.3 Separation of the Feynman diagram of the electro-disintegration reaction of 16O into two parts . . . . . . . . . . . . . . . . . . . . 113 6.4 Histogram representing the weighted cms energy Ecms for Phase 2 119 6.5 Hitmap for the silicon strip detector array . . . . . . . . . . . . . 120 6.6 Number of expected events distributed over the cms angular of the α-particle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.7 Histogram representing the isotropically distributed cms angle of the α-particle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.8 Histogram of the weighted cms angle of the α-particle . . . . . . . 122 6.9 E1 and E2 simulation results . . . . . . . . . . . . . . . . . . . . . 124 162 List of Tables 2.1 S-factor results at Ecms = 300 keV of previous works . . . . . . . . 32 5.1 Overview of the ICs placed on the SiDet frontend-board . . . . . 98 6.1 Comparison of MC integration for computing π with a pseudo- random and a quasi-random generator . . . . . . . . . . . . . . . 107 6.2 Results of a MC integration for a less suitable function . . . . . . 109 6.3 Summary of the relevant simulation and analysis parameters. . . 123 B.1 List of adopted levels for 8Be . . . . . . . . . . . . . . . . . . . . . 135 B.2 List of adopted levels for 12C . . . . . . . . . . . . . . . . . . . . . 135 B.3 List of adopted levels for 16O . . . . . . . . . . . . . . . . . . . . . 136 B.4 List of adopted levels for 20N . . . . . . . . . . . . . . . . . . . . . 137 B.5 Atomic and core masses . . . . . . . . . . . . . . . . . . . . . . . 138 B.6 Calculated Gamow peaks for the reactions of the helium burning stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 B.7 Calculated Coulomb penetration factors for the reactions of the helium burning stage . . . . . . . . . . . . . . . . . . . . . . . . . 139 B.8 Physical Constants . . . . . . . . . . . . . . . . . . . . . . . . . . 139 B.9 Coordinate system for the target and generator system . . . . . . 140 B.10 Base units used in the simulation software . . . . . . . . . . . . . 140 B.11 Ranges for the S-factor extrapolation using AZURE2 . . . . . . . 140 163 164 List of Codes 5.1 IOC shell example – dbLoadRecords . . . . . . . . . . . . . . . . 74 5.2 Example calc record . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.3 Example of a Device Support C interface . . . . . . . . . . . . . . 76 5.4 Example of a asynDriver serial Port configuration . . . . . . . . . 78 5.5 Example of a protocol and the corresponding record . . . . . . . . 79 5.6 Example of a record using dev-gpio . . . . . . . . . . . . . . . . . 81 5.7 Example of a thisEPICS.sh file . . . . . . . . . . . . . . . . . . . 84 5.8 Example of the epics.service file . . . . . . . . . . . . . . . . . . . 85 5.9 Example using the udevadmin command . . . . . . . . . . . . . . 86 5.10 Example for a udev rule. . . . . . . . . . . . . . . . . . . . . . . . 86 5.11 Example of the command dbLoadTemplate . . . . . . . . . . . . . 88 5.12 Example of the command dbLoadMultiRecords . . . . . . . . . . 89 5.13 Example of the Profibus StreamDevice bus . . . . . . . . . . . . . 91 5.14 Example of a record using the ADC1248 module . . . . . . . . . . 92 5.15 Example of a calc record converting U_Expo_New format to mbar 95 5.16 Example of the db and proto file for the HMP4040 device . . . . . 97 5.17 Example of some of the SiDet records . . . . . . . . . . . . . . . . 101 C.1 Installation Script EPICS . . . . . . . . . . . . . . . . . . . . . . 141 C.2 Installation Script MXSlowControl . . . . . . . . . . . . . . . . . 143 C.3 Installation Script Module MXFrontend . . . . . . . . . . . . . . . 145 C.4 Bash completion for EPICS . . . . . . . . . . . . . . . . . . . . . 145 C.5 ZSH completion for EPICS . . . . . . . . . . . . . . . . . . . . . . 146 C.6 Header file of the C++ class MUX0 . . . . . . . . . . . . . . . . . . 146 C.7 Source file of the C++ class MUX0 . . . . . . . . . . . . . . . . . . 147 C.8 Header file of the C++ class for the I2C communication . . . . . . 147 C.9 Source file of the C++ class for the I2C communication . . . . . . . 148 C.10 Header file of the C++ class mxlog . . . . . . . . . . . . . . . . . . 150 C.11 Source file of the C++ class mxlog . . . . . . . . . . . . . . . . . . 151 C.12 read_aiSIDET and write_aiSIDET function of MXSiDet . . . . . 152 C.13 Definition of MXSiDet_SetLogLevel . . . . . . . . . . . . . . . . . 154 D.1 TTree structure for the particle and the event . . . . . . . . . . . 157 D.2 Main configuration file of the simulation. . . . . . . . . . . . . . . 157 D.3 Detector setup used in the simulation for Phase 1 . . . . . . . . . 159 D.4 Detector setup used in the simulation for Phase 2 . . . . . . . . . 160 165 166 Acronyms ADC analog-to-digital converter 90 API Application Programming Interface 90 CA Channel Access 73, 77 CAC CA client 73, 76 CAS CA server 73, 75 cms center of mass system 6 CNO cycle Carbon-Nitrogen-Oxygen cycle 15 CSS Control System Studio 81 DB database 73 DBD database definition file 74 EB External Beam 54 EPICS Experimental Physics and Industrial Control System 72 ER Energy Recovering 54 ERL Extreme Relativistic Limit 37 FLRM five-level R-matrix method 29 GEM Gas Electron Multiplier 61 GPIO general purpose input-output 81 GUI Graphical User Interface 81 HRM hybrid R-matrix method 30 I2C Inter-Integrated Circuit 93 I2C-MUX I2C-Multiplexer 93 IC integrated circuit 96 IOC Input-Output-Controller 73 KM K-matrix method 30 LDM Light Dark Matter 56 MAGIX Mainz Gas Injection Target Experiment 54, 56 MAMBO Milliampere Booster 54 MAMI Mainz Microtron 59, 68 MARC MESA Arc 54 MC Monte Carlo 31, 104 MEEC MESA Enhanced ELBE Cryomodule 54 MELBA MESA Low–energy Beam Apparatus 54 MESA Mainz Energy-Recovering Superconducting Accelerator 54 MXSlowControl MAGIX Slow Control System 71, 82 167 Acronyms OPI Operator Interface 81 PID particle identification 112 PP chain Proton-Proton chain 13 Profibus Process Field Bus 90 PV Process Variable 75 pyEPICS EPICS Channel Access for Python 80 RM R-matrix method 29 RPi Raspberry Pi 81 SiDet silicon strip detector 93 SPI Serial Peripheral Interface 91 STEAM Small Thermalized Electron Source At Mainz 54 TCP Transmission Control Protocol 77 TLRM three-level R-matrix method 29 ToF Time of Flight 67 TPC Time Projection Chamber 61 UDP User Datagram Protocol 77 ZDT Zero Degree Tagger 65 168 Index T9, 13 Coulomb penetration factor, 11 αem, see Fine structure constant Coulomb phase shift difference, 22 α-capture reaction, 18 Cross section, 7 δ-function, 39 capture, 8 U_Expo_New, 95 differential, 7 caArchiver, see Archiver elastic, 8 caget, 76 inelastic, 8 camonitor, 76 reaction, 8 caput, 76 stellar nucleosynthesis, 8 dbl, 86 Current conservation drvAsynIPPortConfigure, 95 electromagnetic, 40 drvAsynSerialPortConfigure, 93 hadronic, 40 makeBaseApp, 100 systemctl, 83 DarkMESA, 56 systemd, 83 Data acquisition, 71 tmux, 84 Database, 73 udevadm, 85 definition, 74 udev, 85 de Broglie wavelength, 8 Device support, 73, 75 Archiver, 86 Driver support, see Device support Areal particle density, 57 AZURE2, 20, 123 EB mode, 54 Elastic scattering, 6 Bash, 85 Elastic scattering phase shifts, 22 completion, 85 Electro-disintegration, 28 Big Bang nucleosynthesis, 5 Electromagnetic current operator, 41 Breit-Wigner, 8 Electron current, 40 Byte stream, 78 Eletric matrix elements, 51 Energy transfer, 37 Carbon-Nitrogen-Oxygen cycle, 15 Energy-convervation, 39 Catcher, 58 Environment variable, 83 Channel access, 73, 77 EPICS, 72 client, 73, 76 dbLoadRecords, 87 server, 73, 75 dbLoadTemplate, 88 checksum, 94 module, see Community module CNO cycle, see Carbon-Nitrogen-Oxygen ER mode, 54 cycle Community module, 78 Felsenkeller laboratory, 26, 125 asynDriver, 78 Final state particle generator, 110, 113 Autosave, 80 Fine structure constant, 9 dev-gpio, 81 Four-momentum, 37 pyEPICS, 80 Fourier transformation, 41 StreamDevive, 79 Control system studio, 81 Gamow peak, 11 operation interface, 81 energy, 11 Cosmic background, 26, 125 width, 11 Coulomb matrix elements, 51 Gas jet target, 58 169 Index Generalized rosenbluth factors, 45 mxlog, 99 Graphical user interface, 81 documentation, 100 unit test, 100 Hadronic current matrix, 40 module, 100 Hadronic recoil factor, 40 MXSlowControl, 71, 82 Hadronic tensor, 40 ADC1248, 90 Helium burning stage, 16 dbLoadMultiRecords, 88 Histogram, 111, 118 HMP4040, 95 multi-dimensional, 119 MPT200, 93 two-dimensional, 119 MXFrontend, 87 Hoyle state, 18 MXSiDet, see MXSiDet Hydro-Møller, 54 StreamDevice Profibus, 90 Hydrogen burning stage, 12 tutorial, 90 I2C master, 96 Natural system of units, 37 I2C multiplexer, 96 Nuclear reaction, 5 I/O hardware, 75 Nuclear response functions, 43, 131 Importance sampling, 106 transverse-longitudinal interference, 43 Inelastic scattering, 6 longitudinal, 43 Inital channel, 6 transverse, 43 Initial state particle generator, 109, 112 transverse-transverse interference, 43 Input-Output-Controller, 73 shell, 73 P2 experiment, 55 Invariant mass, 46 Phase shift difference, see Coulomb phase Invariant matrix element, 40 shift difference IOC, see Input-Output-Controller Photo-disintegration, 27 Poisson distribution, 120 Laval nozzle, 58 PPI-III chain, see Proton-Proton chain Legendre polynomial, 7, 50 Process variable, 75 associated, 50 Protocol, 79 Leptonic tensor, 40 file, 79 Lorentz boost, 47 Proton-Proton chain, 13 Lorentz transformation, 46 Python, 80 Luminosity, 67 script, 80 LUNA-MV, 25, 125 Radiative capture, 6 MAGIX, 56 Random number, 105 Phase 0, 68 pseudo-random, 105 Phase 1, 68, 122 quasi-random, 105 Phase 2, 69, 122 Reaction channel, 6 MAMBO, 54 Reaction rate, 11 MARC, 54 distribution, 11 Maxwell-Boltzmann distribution, 9 Record, 73 Mean value, 104 field, 74 MEEC, 54 type, 73 MELBA, 54 Reduced mass, 9 MESA, 54 Resonance, 8 metastable, 17 strength, 8 Metric tensor, 38 Rodrigues’ formula, 51 Monte Carlo integration, 104 ROOT, 111 Multi-pole operator phase, 51 TTree, 120 MXSiDet, 92 frontend-board, 96 S-factor, 9 HDMI distribution board, 96 cascade transition, 21 library, 96 E1 contribution, 21, 29, 123 AD5693, 98 E2 contribution, 21, 29, 123 ADS122C04, 98 ground state transition, 21 MXP9808, 98 SiDet, 93 PCA9548A, 99 Silicon strip detector, 63 RPiI2C, 97 test stand, 93 SiDet, 99 Simulation, 103 170 Index acceptance, 111, 116 Three-momentum transfer, 37 coincidence, 118 Time Projection Chamber, 61 set, 118 Transition charge density, 41 silicon strip detector, 117 Transition current density, 41 spectrometer, 117 Transition matrix element, 41 zero degree tagger, 117 Transmission control protocol, 77 analysis, 118 Trigger veto system, 62 count rate, 119 Triple-α reaction, 17 cross section, 108, 111 User datagram protocol, 77 event generator, 109 physics model, 110, 115 Variance, 104 Slow control, 71 Virtual photon, 37 Sobol sequence, 105 Sommerfeld number, 9 Weak mixing angle, 55Weinberg angle, 55 Spherical unit vectors, 41 STEAM, 54 Zero degree tagger, 65 Stellar nucleosynthesis, 5 ZSH, see Bash 171 172 Bibliography [A5.7] Autosave R5-7-1. url: https://epics.anl.gov/bcda/synApps/autosav e/autosave.html (visited on 09/10/2021). [AD] Data Sheet AD5693R/AD5692R/AD5691R/AD5693. Analog Devices. url: https://www.analog.com/media/en/technical-documentation/ data-sheets/AD5693R_5692R_5691R_5693.pdf (visited on 11/12/2021). [ADS] ADS124x 24-Bit, 2-kSPS, Analog-To-Digital Converters With Pro- grammable Gain Amplifier (PGA) For Sensor Measurement. Texas In- struments. url: https://www.ti.com/lit/gpn/ads1248 (visited on 09/22/2021). [ADS2] ADS122C04 24-Bit, 4-Channel, 2-kSPS, Delta-Sigma ADC With I2C In- terface. Texas Instruments. url: https://www.ti.com/lit/ds/symlink/ ads122c04.pdf (visited on 11/12/2021). [Ago+20] M. Agostini et al. (The Borexino Collaboration). “Experimental evidence of neutrinos produced in the CNO fusion cycle in the Sun”. In: Nature 587 (Nov. 2020), pp. 577–582. doi: 10.1038/s41586-020-2934-0. [APS04] EPICS Lecture Series at APS. Argonne National Laboratory. url: https: //epics.anl.gov/docs/GSWE.php (visited on 09/01/2021). [AS74] M. Abramowitz and I. A. Stegun. Handbook of Mathematical Functions, With Formulas, Graphs, and Mathematical Tables, USA: Dover Publica- tions, Inc., 1974. [Ass+06] M. Assun ção et al. “E1 and E2 S factors of 12C(α, γ)16O from γ-ray angular distributions with a 4π-detector array”. In: Phys. Rev. C 73 (5 May 2006), p. 055801. doi: 10.1103/PhysRevC.73.055801. [ASYN21] asynDriver: Asynchronous Driver Support. url: https://epics-modules. github.io/master/asyn/ (visited on 09/01/2021). [Aul21] S. Aulenbacher. Personal communication. 2021. [Azu+10] R. E. Azuma et al. “AZURE: An R-matrix code for nuclear astrophysics”. In: Phys. Rev. C 81 (4 Apr. 2010), p. 045805. doi: 10.1103/PhysRevC. 81.045805. [Azu+94] R. E. Azuma et al. “Constraints on the low-energy E1 cross section of 12C(α,γ)16O from the β-delayed α spectrum of 16N”. In: Phys. Rev. C 50 (2 Aug. 1994), pp. 1194–1215. doi: 10.1103/PhysRevC.50.1194. [B3.14] EPICS Base Release 3.14.12. Argonne National Laboratory. url: https: //epics.anl.gov/base/R3-14/12.php (visited on 09/01/2021). [Bal17] Balabanski, Dimiter L. “Nuclear physics and astrophysics experiments at ELI-NP: The emerging future”. In: EPJ Web Conf. 165 (2017), p. 01003. doi: 10.1051/epjconf/201716501003. [BD64] J. D. Bjorken and S. D. Drell. Relativistic quantum mechanics. Interna- tional series in pure and applied physics. New York, NY: McGraw-Hill, 1964. 173 Bibliography [Bec+18] D. Becker et al. “The P2 experiment”. In: Eur. Phys. J. A 54.11 (2018), p. 208. doi: 10.1140/epja/i2018-12611-6. arXiv: 1802.04759. [Bem+18] Bemmerer, Daniel et al. “Felsenkeller 5 MV underground accelerator: To- wards the Holy Grail of Nuclear Astrophysics 12C(α, γ)16O”. In: EPJ Web Conf. 178 (2018), p. 01008. doi: 10.1051/epjconf/201817801008. [Ber16] N. Berger. “Tracking and Q2 determination for the P2 experiment”. In: Physics of fundamental Symmetries and Interactions. Poster. PSI2016. Vil- ligen PSI, Switzerland, Oct. 2016. url: https://www.blogs.uni-mainz. de/fb08-ag-berger/files/2018/08/P2TrackingPSI2016s.pdf. [Ber21] N. Berger. Personal communication. 2021. [Bir21] M. Biroth. Personal communication. 2021. [Bru01] C. R. Brune. “Electric-multipole interference effects in the 12C(α, γ0)16O reaction”. In: Phys. Rev. C 64 (5 Oct. 2001), p. 055803. doi: 10.1103/ PhysRevC.64.055803. [BSS14] A. Bisoi, S. Sarkar, and M. S. Sarkar, eds. Forbidden E1 transitions and isospin mixing in self-conjugate sd-shell nuclei. Nucl. Phys. 59. DAE Sym- posium. 2014. url: www.sympnp.org/proceedings. [Bur+57] E. M. Burbidge et al. “Synthesis of the Elements in Stars”. In: Rev. Mod. Phys. 29 (4 Oct. 1957), pp. 547–650. doi: 10.1103/RevModPhys.29.547. [BW91] J. Blatt and V. Weisskopf. Theoretical Nuclear Physics. Dover Books on Physics Series. Dover Publications, 1991. [Chr+20a] M. Christmann et al. “Detector response of Cherenkov radiators for calorimetry in the energy range below 14 MeV”. In: Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrome- ters, Detectors and Associated Equipment 960 (2020), p. 163665. doi: https://doi.org/10.1016/j.nima.2020.163665. [Chr+20b] M. Christmann et al. “Instrumentation and optimization studies for a beam dump experiment (BDX) at MESA — DarkMESA”. In: Nuclear Instru- ments and Methods in Physics Research Section A: Accelerators, Spec- trometers, Detectors and Associated Equipment 958 (2020). Proceedings of the Vienna Conference on Instrumentation 2019, p. 162398. doi: https: //doi.org/10.1016/j.nima.2019.162398. [Chr21a] M. Christmann. Personal communication. 2021. [Chr21b] M. Christmann. “The DarkMESA Experiment”. In: 721. WE-Heraeus- Seminar – Light Dark Matter Searches. Talk. 2021. url: https://www. staff.uni-mainz.de/doria/heraeus/christmann.pdf. [CHY92] Y. Chang, Y. Huo, and G. Yu. “The collision-frequency and reaction rate”. In: Physics of Fluids B: Plasma Physics 4.11 (1992), pp. 3621–3626. doi: 10.1063/1.860370. [CSS21] CSS: Control System Studio. url: http://controlsystemstudio.org/ (visited on 09/01/2021). [DB74] P. Dyer and C. Barnes. “The 12C(α,γ)16O reaction and stellar helium burn- ing”. In: Nucl. Phys. A 233.2 (1974), pp. 495–520. doi: 10.1016/0375- 9474(74)90470-9. [Deb] Debian - The Universal operating system. url: https://wiki.debian. org/ (visited on 09/17/2021). [deB+17] R. J. deBoer et al. “The 12C(α, γ)16O reaction and its implications for stellar helium burning”. In: Rev. Mod. Phys. 89.3 (Sept. 2017), p. 035007. doi: 10.1103/RevModPhys.89.035007. [DiG+15] B. DiGiovine et al. “Bubble chambers for experiments in nuclear astro- physics”. In: Nuclear Instruments and Methods in Physics Research Sec- tion A: Accelerators, Spectrometers, Detectors and Associated Equipment 781 (May 2015), pp. 96–104. doi: 10.1016/j.nima.2015.01.060. 174 Bibliography [DL05] R. M. Dreizler and C. S. Lüdde. Theoretische Physik 2 Elektrodynamik und spezielle Relativitätstheorie. 1st ed. Springer-Lehrbuch. Berlin, Heidelberg: Springer Berlin Heidelberg, 2005. [Don+17] T. W. Donnelly et al. Foundations of Nuclear and Particle Physics. Cam- bridge University Press, 2017. doi: 10.1017/9781139028264. [Dor+18] L. Doria et al. Search for light dark matter with the MESA accelerator. 2018. arXiv: 1809.07168. [Dor+19] Dark Matter at the Intensity Frontier: the new MESA electron accelerator facility. Vol. 360. ALPS2019. 2019. doi: https://doi.org/10.22323/1. 360.0022. [Edm57] A. Edmonds. Angular Momentum in Quantum Mechanics. Investigations in physics. Princeton University Press, 1957. [Emi17] N. Emig. “Machbarkeitsstudie eines EPICS-basierten Slow Control Sys- tems für das Experiment MAGIX”. Unpublished. Bachelor thesis. Johannes Gutenberg University, 2017. [Epe+11] E. Epelbaum et al. “Ab Initio Calculation of the Hoyle State”. In: Phys. Rev. Lett. 106 (19 May 2011), p. 192501. doi: 10.1103/PhysRevLett.106. 192501. [EPICS21] EPICS: Experimental Physics and Industrial Control System. url: https: //epics-controls.org/ (visited on 09/01/2021). [FDM19] I. Friščić, T. W. Donnelly, and R. G. Milner. “A New Approach to De- termine Radiative Capture Reaction Rates at Astrophysical Energies”. In: Phys. Rev. C100 (2019), p. 025804. doi: 10.1103/PhysRevC.100.025804. [Fey04] M. Fey. “Im Brennpunkt der nuklearen Astrophysik: Die Reaktion 12C(α, γ)16O”. Ph.D. thesis. University of Stuttgart, 2004. doi: 10 . 18419/opus-4716. [FF14] M. Freer and H. Fynbo. “The Hoyle state in 12C”. In: Progress in Particle and Nuclear Physics 78 (2014), pp. 1–23. doi: https://doi.org/10. 1016/j.ppnp.2014.06.001. [Gai12] M. Gai (UConn-Yale-Duke-Weizmann-PTB-UCL Collaboration). “Studies in Nuclear Astrophysics with an Optical Readout TPC (O-TPC) at HIγS”. In: Journal of Physics: Conference Series 337 (Feb. 2012), p. 012054. doi: 10.1088/1742-6596/337/1/012054. [Gal+18] S. Gales et al. “The extreme light infrastructure—nuclear physics (ELI- NP) facility: new horizons in physics with 10 PW ultra-intense lasers and 20 MeV brilliant gamma beams”. In: Reports on Progress in Physics 81.9 (Aug. 2018), p. 094301. doi: 10.1088/1361-6633/aacfe8. [Gei20] J. Geimer. “Aufbau eines ortsauflösendem Siliziumdetektorsystems zum Nachweis von α-Teilchen”. Unpublished. Master thesis. Johannes Guten- berg University, 2020. [Gei21a] J. Geimer. Personal communication. 2021. [Gei21b] J. Geimer. “The silicon strip detector setup for MAGIX”. In: 721. WE- Heraeus-Seminar – Light Dark Matter Searches. Poster. 2021. [Gia+01] L. Gialanella et al. “The E1 capture amplitude in 12C(α, γ0)16O”. In: The European Physical Journal A 11 (July 2001), pp. 357–370. doi: 10.1007/ s100500170075. [GPIO] F. Feldbauer. EPICS-devGPIO. url: https://github.com/ffeldbauer/ epics-devgpio (visited on 09/13/2021). [Gri+18] S. Grieser et al. “A Cryogenic Supersonic Jet Target for Electron Scattering Experiments at MAGIX@MESA and MAMI”. In: Nucl. Instr. Meth. A906 (2018), pp. 120–126. doi: 10.1016/j.nima.2018.07.076. [Gri18] S. Grieser. “Cluster-Jet Targets for the PANDA-, MAGIX-, and Cryoflash- Experiments at Hadron-, Lepton-, and Laser-Facilities”. Ph.D. thesis. Uni- 175 Bibliography versity of Münster, 2018. url: https://www.uni-muenster.de/imperia/ md/content/physik_kp/agkhoukaz/bamadipdok/dok_silke_grieser. pdf. [GS64] I. Gel’fand and G. E. Shilov. Properties and Operations. Vol. I. Generalized Functions. New York, NY: Academic Press Inc, 1964. [Gug14] Guglielmetti, Alessandra. “The LUNA experiment at Gran Sasso Labora- tory”. In: EPJ Web of Conferences 78 (2014), p. 07001. doi: 10.1051/ epjconf/20147807001. [Gül21] P. Gülker. Personal communication. 2021. [Ham+05] J. Hammer et al. “New determination of the 12C(α, γ)16O reaction rate from γ-ray angular distribution measurements”. In: Nuclear Physics A 752 (2005). Proceedings of the 22nd International Nuclear Physics Conference (Part 2), pp. 514–521. doi: https://doi.org/10.1016/j.nuclphysa. 2005.02.056. [HFP18] R. J. Holt, B. W. Filippone, and S. C. Pieper. Sensitivity study for the 12C(α, γ)16O astrophysical reaction rate. 2018. arXiv: 1809.10176. [HFP19] R. J. Holt, B. W. Filippone, and S. C. Pieper. “Impact of 16O(γ, α)12C measurements on the 12C(α, γ)16O astrophysical reaction rate”. In: Phys. Rev. C 99 (5 May 2019), p. 055802. doi: 10.1103/PhysRevC.99.055802. [Hjo11] M. Hjorth-Jensen. “The carbon challenge”. In: Physics 4 (38 May 2011). url: http://link.aps.org/doi/10.1103/Physics.4.38. [HM84] F. Halzen and A. D. Martin. Quarks and Leptons: An Introductory Course in Modern Particle Physics. Jan. 1984. isbn: 978-0-471-88741-6. [HMP] R&S®HMP Series Power Supplies User Manual. Rohde & Schwarz. url: https://www.rohde-schwarz.com/webhelp/hmpseries_html_usermanu al_en/HMPSeries_HTML_UserManual_en.htm (visited on 09/24/2021). [Hua+17] W. Huang et al. “The AME2016 atomic mass evaluation (I). Evaluation of input data; and adjustment procedures”. In: Chinese Physics C 41.3 (Mar. 2017), p. 030002. doi: 10.1088/1674-1137/41/3/030002. [Hua+76] K.-N. Huang et al. “Neutral-atom electron binding energies from relaxed- orbital relativistic Hartree-Fock-Slater calculations 2 ≤ Z ≤ 106”. In: Atomic Data and Nuclear Data Tables 18.3 (1976), pp. 243–291. doi: h ttps://doi.org/10.1016/0092-640X(76)90027-9. [Hug+17] F. Hug et al. “MESA - an ERL Project for Particle Physics Experiments”. In: Proc. of Linear Accelerator Conference (LINAC’16), East Lansing, MI, USA, 25-30 September 2016 (East Lansing, MI, USA). Linear Accelerator Conference 28. Geneva, Switzerland: JACoW, May 2017, pp. 313–315. doi: https://doi.org/10.18429/JACoW-LINAC2016-MOP106012. [Hug+20] F. Hug et al. “Status of the MESA ERL Project”. In: Proc. ERL’19 (Berlin, Germany). ICFA Advanced Beam Dynamics Workshop on Energy Recovery Linacs 63. JACoW Publishing, Geneva, Switzerland, June 2020, pp. 14–17. doi: 10.18429/JACoW-ERL2019-MOCOXBS05. [ISG13] Izotov, Y. I., Stasi´nska, G., and Guseva, N. G. “Primordial 4He abun- dance: a determination based on the largest sample of H II regions with a methodology tested on model H II regions”. In: A&A 558 (Oct. 2013), A57. doi: 10.1051/0004-6361/201220782. [Kem20] R. F. Kempf. “Stabilisation der Strahlparameter für das P2-Experiment an MESA”. Dissertation. Johannes Gutenberg-Universität Mainz, July 2020. doi: http://doi.org/10.25358/openscience-4991. [Knu97] D. E. Knuth. The Art of Computer Programming, Volume 2 (3rd Ed.): Seminumerical Algorithms. USA: Addison-Wesley Longman Publishing Co., Inc., 1997. 176 Bibliography [Koz14] A. Kozyreva. “Pair instability supernovae:Evolution, explosion, nucleosyn- thesis”. Ph.D. thesis. University of Bonn, Germany, 2014. url: https: //astro.uni-bonn.de/~nlanger/thesis/Kozyreva_phd.pdf. [Kre+88] R. M. Kremer et al. “Coincidence measurement of the 12C(α,γ)16O cross section at low energies”. In: Phys. Rev. Lett. 60 (15 Apr. 1988), pp. 1475– 1478. doi: 10.1103/PhysRevLett.60.1475. [Kun+01] R. Kunz et al. “12C(α, γ)16O: The Key Reaction in Stellar Nucleosynthe- sis”. In: Phys. Rev. Lett. 86 (15 Apr. 2001), pp. 3244–3247. doi: 10.1103/ PhysRevLett.86.3244. [Kun+02] R. Kunz et al. “Astrophysical Reaction Rate of 12C(α, γ)16O”. In: 567.1 (Mar. 2002), pp. 643–650. doi: 10.1086/338384. [LB04] R. Larson and V. Bromm. “The First Stars in the Universe”. In: Scientific American Special Edition 14.4 (Sept. 2004), p. 4. [Led20] B. Ledroit. “Target Induced Halo Formation and Collimation Following MAGIX at MESA”. Dissertation. Johannes Gutenberg-Universität Mainz, Dec. 2020. doi: http://doi.org/10.25358/openscience-5808. [LPT03] D. Lunney, J. M. Pearson, and C. Thibault. “Recent trends in the determi- nation of nuclear masses”. In: Rev. Mod. Phys. 75 (3 Aug. 2003), pp. 1021– 1082. doi: 10.1103/RevModPhys.75.1021. [Lyo86] L. Lyons. Statistics for Nuclear and Particle Physicists. Cambridge Uni- versity Press, 1986. doi: 10.1017/CBO9781139167710. [Mak+09] H. Makii et al. “E1 and E2 cross sections of the 12C(α, γ0)16O reaction using pulsed α beams”. In: Phys. Rev. C 80 (6 Dec. 2009), p. 065802. doi: 10.1103/PhysRevC.80.065802. [Mat+18] C. Matei et al. “Photodisintegration reactions for nuclear astrophysics stud- ies at ELI-NP”. In: Journal of Physics: Conference Series 940 (Jan. 2018), p. 012025. doi: 10.1088/1742-6596/940/1/012025. [May02] T. Mayer-Kuckuk. Kernphysik. Eine Einführung. ger. 7., überarb. und erw. Aufl. Stuttgart ; Leipzig ; Wiesbaden: Teubner, 2002. [MCP] ±0.5 ◦C Maximum Accuracy Digital Temperature Sensor. Microchip. url: https://www.mouser.de/datasheet/2/268/25095A-15487.pdf (visited on 11/12/2021). [Mer+11] H. Merkel et al. “Search for Light Gauge Bosons of the Dark Sector at the Mainz Microtron”. In: Phys. Rev. Lett. 106 (2011), p. 251802. doi: 10.1103/PhysRevLett.106.251802. [Mer21] H. Merkel. Personal communication. 2021. [MPT200] OPERATING INSTRUCTIONS MPT200. Pfeiffer Vacuum. url: https: //www.pfeiffer-vacuum.com/filepool/file/digiline/pg0025ben_c. pdf (visited on 10/11/2021). [Mül14] J. Müller. “Entwurf eines Spektrometers für Niederenergieexperimente an MESA”. Unpublished. Diploma thesis. Johannes Gutenberg University, 2014. [Nie92] H. Niederreiter. “Random number generation and Quasi-Monte Carlo methods”. In: CBMS-NSF regional conference series in applied mathemat- ics. 1992. [NuDat] NuDat (National Nuclear Data Center). Information extracted from the NuDat 2.8 database. url: https://www.nndc.bnl.gov/nudat2/ (visited on 01/25/2021). [Oue+96] J. M. L. Ouellet et al. “12C(α,γ)16O cross sections at stellar energies”. In: Phys. Rev. C 54 (4 Oct. 1996), pp. 1982–1998. doi: 10.1103/PhysRevC. 54.1982. [Phi99] A. C. Phillips. The Physics of Stars. Second Edition. New York: Wiley, 1999. 177 Bibliography [Pla+12] R. Plag et al. “12C(α, γ)16O studied with the Karlsruhe 4π BaF2 detector”. In: Phys. Rev. C 86 (1 July 2012), p. 015805. doi: 10.1103/PhysRevC. 86.015805. [Pla+87] R. Plaga et al. “The scattering of alpha particles from 12C and the 12C(α, γ)16O stellar reaction rate”. In: Nuclear Physics A 465.2 (1987), pp. 291–316. doi: https://doi.org/10.1016/0375-9474(87)90436-2. [Pov+15] B. Povh et al. Particles and Nuclei: An Introduction to the Physical Con- cepts. Graduate Texts in Physics. Springer Berlin Heidelberg, 2015. [PyE3] PyEPICS. url: https://cars9.uchicago.edu/software/python/pyepi cs3/ (visited on 09/13/2021). [Python3] Python 3. url: https://docs.python.org/3/ (visited on 09/13/2021). [RD89] A. Raskin and T. Donnelly. “Polarization in coincidence electron scattering from nuclei”. In: Annals of Physics 191.1 (1989), pp. 78–142. doi: https: //doi.org/10.1016/0003-4916(89)90337-0. [Red+87] A. Redder et al. “The 12C(α,γ)16O cross section at stellar energies”. In: Nucl. Phys. A 462.2 (1987), pp. 385–412. doi: 10.1016/0375-9474(87) 90555-0. [ROOT] ROOT: analyzing petabytes of data, scientifically. url: https://root. cern/ (visited on 10/14/2021). [Ros53] M. E. Rose. “The Analysis of Angular Correlation and Angular Distribution Data”. In: Phys. Rev. 91 (3 Aug. 1953), pp. 610–615. doi: 10.1103/PhysR ev.91.610. [Rot+99] G. Roters et al. “The E1 and E2 capture amplitudes in 12C(α,γ)16O”. In: Eur. Phys. J. A 6.4 (1999), pp. 451–461. doi: 10.1007/s100500050369. [Sal52] E. E. Salpeter. “Nuclear Reactions in Stars Without Hydrogen.” In: Astro- phys. J. 115 (Mar. 1952), pp. 326–328. doi: 10.1086/145546. [SC05] M. Salaris and S. Cassisi. Evolution of Stars and Stellar Populations. John Wiley & Sons, 2005. [Sch+11] D. Schürmann et al. “Study of the 6.05 MeV cascade transition in 12C(α, γ)16O”. In: Physics Letters B 703.5 (2011), pp. 557–561. doi: https://doi.org/10.1016/j.physletb.2011.08.061. [Sch+12] D. Schürmann et al. “The astrophysical S factor of 12C(α, γ)16O at stellar energy”. In: Physics Letters B 711.1 (2012), pp. 35–40. doi: https://doi. org/10.1016/j.physletb.2012.03.064. [Sch+21] B. Schlimme et al. “Operation and characterization of a windowless gas jet target in high-intensity electron beams”. In: Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, De- tectors and Associated Equipment 1013 (2021), p. 165668. doi: https : //doi.org/10.1016/j.nima.2021.165668. [Sch21] S. Schlimme. Personal communication. 2021. [SDev2.8] StreamDevice. url: https://paulscherrerinstitute.github.io/Strea mDevice/ (visited on 09/01/2021). [SDev21] StreamDevice. url: http://epics.web.psi.ch/software/streamdevice / (visited on 09/01/2021). [Sim21a] D. Simon. Personal communication. 2021. [Sim21b] D. Simon. “Gesamtkonzept für den MESA-Teilchenbeschleuniger unter besonderer Berücksichtigung von Strahloptik und Kryogenik”. Disser- tation. Johannes Gutenberg-Universität Mainz, Apr. 2021. doi: http : //doi.org/10.25358/openscience-5809. [Sor17] I. Sorokin. “Parameterization-based tracking for the P2 experiment”. In: EPJ Web Conf. 150 (2017). Ed. by C. Germain et al., p. 00012. doi: 10. 1051/epjconf/201715000012. [Ste21a] S. Stengel. Personal communication. 2021. 178 Bibliography [Ste21b] S. Stengel. “The MAGIX trigger veto system”. In: 721. WE-Heraeus-Semi- nar – Light Dark Matter Searches. Poster. 2021. [Tes+16] O. Tesileanu et al. “Charged particle detection at ELI-NP”. In: Romanian Reports in Physics 68 (Jan. 2016), pp. 699–734. [Ton+05] A. Tonchev et al. “The high intensity γ-ray source (HIγS) and recent re- sults”. In: Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 241.1 (2005). The Appli- cation of Accelerators in Research and Industry, pp. 170–175. doi: https: //doi.org/10.1016/j.nimb.2005.07.080. [Ud15] E. Uberseder and R. J. deBoer. AZURE2 User Manual. JINA. 2015. url: https://usermanual.wiki/Document/azure2manual.1252390862.pdf. [Uga+13] C. Ugalde et al. “First determination of an astrophysical cross section with a bubble chamber: The 15N(α, γ19)F reaction”. In: Physics Letters B 719.1- 3 (Feb. 2013), pp. 74–77. doi: 10.1016/j.physletb.2012.12.068. [Wan+17] M. Wang et al. “The AME2016 atomic mass evaluation (II). Tables, graphs and references”. In: Chinese Physics C 41.3 (Mar. 2017), p. 030003. doi: 10.1088/1674-1137/41/3/030003. [Wei00] S. Weinzierl. “Introduction to Monte Carlo methods”. In: Research School Subatomic Physics. Amsterdam, Netherlands, June 2000. arXiv: hep-ph/ 0006269. [Wel+09] H. R. Weller et al. “Research opportunities at the upgraded HIγS facility”. In: Progress in Particle and Nuclear Physics 62.1 (2009), pp. 257–303. doi: https://doi.org/10.1016/j.ppnp.2008.07.001. [WH07] S. Woosley and A. Heger. “Nucleosynthesis and remnants in massive stars of solar metallicity”. In: Physics Reports 442.1-6 (Apr. 2007), pp. 269–283. doi: 10.1016/j.physrep.2007.02.009. [WHW02] S. E. Woosley, A. Heger, and T. A. Weaver. “The evolution and explosion of massive stars”. In: Rev. Mod. Phys. 74 (4 Nov. 2002), pp. 1015–1071. doi: 10.1103/RevModPhys.74.1015. [Won98] S. S. Wong. Introductory Nuclear Physics. A Wiley-Interscience publica- tion. Wiley, 1998. [WW93] T. A. Weaver and S. E. Woosley. “Nucleosynthesis in massive stars and the 12C(α, γ)16O reaction rate”. In: Physics Reports 227.1-5 (May 1993), pp. 65–96. doi: 10.1016/0370-1573(93)90058-L. [Zim+13] W. R. Zimmerman et al. “Unambiguous Identification of the Second 2+ State in 12C and the Structure of the Hoyle State”. In: Phys. Rev. Lett. 110 (15 Apr. 2013), p. 152502. doi: 10.1103/PhysRevLett.110.152502. [Zyl+20] P. A. Zyla et al. (Particle Data Group). “Review of Particle Physics”. In: Progress of Theoretical and Experimental Physics 2020 (2020). 083C01. doi: 10.1093/ptep/ptaa104. 179