<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">AMT</journal-id><journal-title-group>
    <journal-title>Atmospheric Measurement Techniques</journal-title>
    <abbrev-journal-title abbrev-type="publisher">AMT</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Atmos. Meas. Tech.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1867-8548</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/amt-19-2961-2026</article-id><title-group><article-title>A novel framework for automatic scanning radar pointing calibration using the Sun</article-title><alt-title>A framework for radar pointing calibration using the Sun</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Ockenfuß</surname><given-names>Paul</given-names></name>
          <email>paul.ockenfuss@physik.uni-muenchen.de</email>
        <ext-link>https://orcid.org/0009-0005-5820-1627</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Köcher</surname><given-names>Gregor</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-1586-6774</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Bauer-Pfundstein</surname><given-names>Matthias</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Kneifel</surname><given-names>Stefan</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-2220-2968</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Meteorologisches Institut, Ludwig-Maximilians-Universität München, Germany</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>METEK Meteorologische Messtechnik GmbH, Elmshorn, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Paul Ockenfuß (paul.ockenfuss@physik.uni-muenchen.de)</corresp></author-notes><pub-date><day>4</day><month>May</month><year>2026</year></pub-date>
      
      <volume>19</volume>
      <issue>9</issue>
      <fpage>2961</fpage><lpage>2984</lpage>
      <history>
        <date date-type="received"><day>16</day><month>November</month><year>2025</year></date>
           <date date-type="rev-request"><day>6</day><month>January</month><year>2026</year></date>
           <date date-type="rev-recd"><day>6</day><month>March</month><year>2026</year></date>
           <date date-type="accepted"><day>19</day><month>April</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Paul Ockenfuß et al.</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026.html">This article is available from https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026.html</self-uri><self-uri xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026.pdf">The full text article is available as a PDF file from https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e113">A high accuracy of antenna beam pointing is essential for weather and cloud radars in order to precisely locate clouds and precipitation. It is also a critical requirement for estimating the horizontal wind field or retrieving particles' vertical motions.</p>

      <p id="d2e116">We present a general framework for radar pointing calibration using the Sun as a reference target. The workflow is structured into three steps: (i) measurement and analysis of individual Sun scans, (ii) estimation of scanner inaccuracies from a series of scans, and (iii) correction of these inaccuracies. Our approach is radar-agnostic and applicable to any instrument equipped with a two-axis pan-tilt scanner and a parabolic antenna. General recommendations for Sun scan implementation are given, and the full calibration process is demonstrated using a Mira-35 cloud radar. The method allows retrieval of a comprehensive set of parameters, including beamwidth in two orthogonal directions, pedestal tilt, axis misalignments, encoder offsets, gear backlash, and the receiver-scanner time offset. With this approach, absolute pointing accuracy better than 0.1° can be achieved, and relative changes as small as 0.01° can be detected. To facilitate automatic application, we provide the open-source Python library <monospace>SunscanPy</monospace> for radar pointing calibration. This toolset is especially valuable for stationary radars and radar networks, where it enables automatic monitoring of long-term pointing stability. Finally, we introduce a novel automatic pointing correction scheme based on inverse kinematics. Once the scanner inaccuracies are estimated, the required motor positions can be computed to compensate for the inaccuracies, without mechanical adjustments. Such functionality is particularly advantageous for mobile radars, research campaigns, or remote deployments, where frequent mechanical leveling is necessary but often difficult to perform.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Deutsche Forschungsgemeinschaft</funding-source>
<award-id>408012686</award-id>
<award-id>408027579</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e131">Accurate antenna pointing is crucial for a wide range of radar applications. Applications that rely on precise georeferencing, such as scanning weather radars, are particularly sensitive, since even small pointing errors lead to spatial displacements of observed features. For example, a 1° change in pointing direction leads to 3.5 km displacement at a distance of 200 km. For vertically pointing radars, pointing accuracy is equally critical for the correct measurement of vertical velocities. Since vertical air motion and particle sedimentation speeds are typically an order of magnitude smaller than horizontal wind, even small pointing errors can lead to large biases. A simple calculation illustrates this: assuming a horizontal wind speed of 30 m s<sup>−1</sup>, as is common in the higher atmosphere <xref ref-type="bibr" rid="bib1.bibx13" id="paren.1"/>, a mispointing of 0.2° produces an apparent vertical velocity of <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">10.5</mml:mn></mml:mrow></mml:math></inline-formula> cm s<sup>−1</sup>, depending on the wind direction. This is a non-negligible error, given the typical sedimentation velocity of ice around 30 to 50 cm s<sup>−1</sup> <xref ref-type="bibr" rid="bib1.bibx14" id="paren.2"/>. In principle, modern Doppler radars are capable of measuring velocities with a precision of less than 5 cm s<sup>−1</sup> <xref ref-type="bibr" rid="bib1.bibx24" id="paren.3"/>. Furthermore, precise pointing is also indispensable in advanced applications such as multi-frequency measurements, where two radars must probe the same volume simultaneously, which demands near-perfect beam alignment <xref ref-type="bibr" rid="bib1.bibx17 bib1.bibx38" id="paren.4"/>.</p>
      <p id="d2e205">To ensure accurate pointing, a variety of calibration methods have been developed. One straightforward approach is the use of hard targets at a known position or ground-clutter <xref ref-type="bibr" rid="bib1.bibx2" id="paren.5"><named-content content-type="pre">e.g.</named-content></xref>. While effective in principle, hard targets are not always available, probe only one specific scanner configuration, and ground-clutter-based methods may be compromised by precipitation or anomalous atmospheric propagation conditions <xref ref-type="bibr" rid="bib1.bibx2" id="paren.6"/>. A widely adopted alternative is to use the Sun, which acts as a natural microwave source. The advantage of Sun-based calibration is that it requires minimal additional effort: operational radar measurements occasionally intersect the solar disk by chance, and these data can be used even without specific campaigns. For scanning research weather radars, dedicated solar scans are often performed as part of calibration routines. The benefits of solar calibration are now widely acknowledged <xref ref-type="bibr" rid="bib1.bibx12" id="paren.7"><named-content content-type="pre">e.g.</named-content></xref>, and some radar manufacturers have integrated corresponding procedures into their operational software <xref ref-type="bibr" rid="bib1.bibx30" id="paren.8"><named-content content-type="pre">e.g.</named-content></xref>.</p>
      <p id="d2e227">A number of studies have investigated the use of the Sun for radar calibration, with different emphases on pointing accuracy and antenna characterization. Early work by <xref ref-type="bibr" rid="bib1.bibx4" id="text.9"/> discussed cosmic sources such as the Sun for large antenna calibration. In addition to antenna pointing, other antenna parameters, such as aperture or antenna beam pattern, were derived from measurements on radio sources. Later, <xref ref-type="bibr" rid="bib1.bibx21" id="text.10"/> discussed the Sun as a potential calibration target with a well-known position, focusing primarily on elevation biases. In a review of radar calibration methods, also <xref ref-type="bibr" rid="bib1.bibx22" id="text.11"/> highlight the Sun as an excellent source to calibrate position accuracy. <xref ref-type="bibr" rid="bib1.bibx3" id="text.12"/> demonstrated that solar observations could also be used to estimate the azimuth orientation of a mobile radar system mounted on a truck. Similarly, <xref ref-type="bibr" rid="bib1.bibx6" id="text.13"/> explored the potential of solar signals for calibrating operational weather radars in the United Kingdom. Their study emphasized the advantage of performing the calibration without disturbing the ongoing operational scan strategy. Due to the limited maximum elevation angle of their radar (4°), their analysis was restricted to azimuth biases. Further developments were made by <xref ref-type="bibr" rid="bib1.bibx15" id="text.14"/> and later by <xref ref-type="bibr" rid="bib1.bibx11" id="text.15"/>, who refined the methodology for operational weather radars. In particular, they introduced corrections for atmospheric refraction, which is especially relevant for low-elevation measurements where the apparent solar position is significantly displaced. <xref ref-type="bibr" rid="bib1.bibx26" id="text.16"/> proposed a technique based on the analogy between radar and theodolite systems, using solar observations to quantify and correct pointing errors in both azimuth and elevation. Their evaluation of a single Sun scan is based on <xref ref-type="bibr" rid="bib1.bibx15" id="text.17"/>. More recently, <xref ref-type="bibr" rid="bib1.bibx1" id="text.18"/> demonstrated how the Sun can be used for online monitoring of the antenna alignment of an operationally scanning weather radar. In a subsequent study, <xref ref-type="bibr" rid="bib1.bibx2" id="text.19"/> then compared ground-clutter-based and Sun-based antenna pointing calibration methods and found the methods based on the Sun to be generally superior. Recently, <xref ref-type="bibr" rid="bib1.bibx7" id="text.20"/> assessed the antenna pointing accuracy in both azimuth and elevation for a polarimetric research radar based on dedicated solar box scans. In addition to pointing, the Sun has also been used to characterize the antenna beam pattern. <xref ref-type="bibr" rid="bib1.bibx31" id="text.21"/> employed solar scans to measure the antenna beam shape and demonstrated good agreement with the expected response to a point source. While our work focuses on antenna pointing calibration, the beam pattern retrieval comes as a natural by-product of the same procedure.</p>
      <p id="d2e271">Although these studies have shown in the past that the Sun provides an excellent target for antenna pointing calibration, two important deficiencies remain. First, there is no general, radar-agnostic framework to calibrate the pointing from Sun scans. While manufacturers provide proprietary tools, these are often tailored to specific radar systems and are not easily transferable. Yet, the underlying geometry is universal: virtually all weather and cloud radars operate on a two-axis pan-tilt mechanism, and once the solar data are recorded, the processing steps are conceptually identical across platforms. Second, existing calibration workflows typically assume that mechanical correction of the scanner is required once biases are identified. We argue that an alternative is possible: active, software-based correction of mispointing. By interpreting the radar scanner as a simple kinematic chain with two rotational joints, the problem is directly analogous to inverse kinematics in robotics. Inverse kinematics is the process of determining the joint positions of a kinematic chain, which correspond to a desired location and orientation of the chain end. Using inverse kinematics, the radar controller software can compensate for misalignments, instead of requiring mechanical adjustment of the system.</p>
      <p id="d2e275">The objective of this publication is therefore twofold. First, we present a novel, generic framework for scanning radar pointing calibration, subdividing the process into three well-defined, consecutive steps. By combining multiple Sun scans, our method is able to derive the full set of scanner offsets and inaccuracies in both axes, including velocity-dependent dynamic biases. To make this methodology accessible to the broader community, we provide <monospace>SunscanPy</monospace> <xref ref-type="bibr" rid="bib1.bibx28" id="paren.22"/>, a general and open-source Python package for radar antenna pointing calibration using solar observations. The software is designed to be radar-independent and provides a standardized way to derive scanner inaccuracies. Second, we demonstrate a method for software-based pointing correction, in which identified biases are incorporated into the radar controller, thereby avoiding the need for mechanical realignment.</p>
      <p id="d2e284">The remainder of this publication is organized as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> describes the theoretical background of antenna pointing calibration using the Sun and introduces a mathematical nomenclature. Section <xref ref-type="sec" rid="Ch1.S3"/> demonstrates the process using measurements of a cloud radar. Both sections contain three dedicated subsections, reflecting the three steps of the calibration method. The achievable pointing accuracy of the method is discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>. Section <xref ref-type="sec" rid="Ch1.S5"/> introduces the <monospace>SunscanPy</monospace> Python implementation. Section <xref ref-type="sec" rid="Ch1.S6"/> summarizes the results and provides perspectives on possible areas of application.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Methods</title>
      <p id="d2e309">The whole process of scanner calibration with the Sun can be divided into three distinct steps, as illustrated in Fig. <xref ref-type="fig" rid="F1"/>. In step 1, we use the Sun as a source of microwave emission in the sky with a precisely defined trajectory. Probing this source with the radar antenna, we can record the position of the scanner axis encoders when looking at a defined position relative to the Sun, e.g. the center of the solar disk. Repeating step 1 over the course of multiple days and times, we obtain a collection of scanner positions with the corresponding beam locations in the sky. In step 2, we use this dataset to estimate unknown parameters that define the scanner system. In step 3, we apply the knowledge of these parameters when pointing to a target. We can either correct the scanner mechanically like illustrated in step 3a, or do a software-based correction like depicted by step 3b.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e316">Schematic illustration of the full pointing calibration procedure. Step 1: estimation of local mispointing from a single Sun scan. Step 2: estimation of scanner inaccuracies based on multiple Sun scans. Step 3: correction of scanner inaccuracies.</p></caption>
        <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f01.png"/>

      </fig>

<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Scanner Inaccuracies</title>
      <p id="d2e332">Pointing directions in the sky can be described by two spherical coordinates, where <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">360</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> denotes the azimuth angle and <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">90</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> is the elevation angle. We follow the common convention in radar science that 0° elevation corresponds to pointing horizontally. Scanning radars usually have a two-axis scanner mechanism, where one axis corresponds to the movement in azimuth direction and another axis on top of the first moves in elevation direction. We denote the position of those axes by <inline-formula><mml:math id="M8" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M9" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>, respectively. Usually, it is assumed that a movement in <inline-formula><mml:math id="M10" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> directly corresponds to a movement in <inline-formula><mml:math id="M11" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> and similarly for <inline-formula><mml:math id="M12" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M13" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula>. However, this is only the case for a perfect scanning mechanism. In reality, axis positions are not perfectly equal to pointing directions, due to multiple system imperfections: axis encoders can have offsets, the axes are not perfectly orthogonal, or the whole system is tilted with respect to the celestial hemisphere. Therefore, a strict separation between axis positions <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and celestial pointing <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is necessary. We describe the mapping between axis positions and celestial pointing of the radar by a forward model <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M17" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mo>:</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>↦</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Finding <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the main goal of the methods described here. <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> depends on multiple parameters <inline-formula><mml:math id="M20" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula>, which describe the imperfections of the scanner alignment and mechanics. There are seven static parameters:

            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M21" display="block"><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">χ</mml:mi></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The individual static scanner parameters are illustrated in Fig. <xref ref-type="fig" rid="F2"/> and defined as follows: <list list-type="bullet"><list-item>
      <p id="d2e585"><inline-formula><mml:math id="M22" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>: pedestal tilt towards West or East</p></list-item><list-item>
      <p id="d2e595"><inline-formula><mml:math id="M23" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>: pedestal tilt towards North or South</p></list-item><list-item>
      <p id="d2e605"><inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>: ideally the radar beam should be perpendicular to the axis of the elevation rotation of the scanner. <inline-formula><mml:math id="M25" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> describes the offset from this goal.</p></list-item><list-item>
      <p id="d2e622"><inline-formula><mml:math id="M26" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>: gimbal tilt. Ideally the axis of the elevation and axis of the azimuth rotations of the scanner should be perpendicular. <inline-formula><mml:math id="M27" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> describes the offset from this goal. The gimbal tilt <inline-formula><mml:math id="M28" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> and the antenna tilt <inline-formula><mml:math id="M29" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> have the same effect if the scanner is pointed vertically or close to vertically. If the beam is pointing at the horizon or close to the horizon then the antenna tilt <inline-formula><mml:math id="M30" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> causes an azimuth offset but the effect of the gimbal tilt <inline-formula><mml:math id="M31" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> vanishes.</p></list-item><list-item>
      <p id="d2e667"><inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>: offset between actual azimuth axis position and the value returned by the scanner motor encoder. This value is sometimes known as the “northangle”.</p></list-item><list-item>
      <p id="d2e681"><inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>: offset between actual elevation axis position and the value returned by the scanner motor encoder.</p></list-item><list-item>
      <p id="d2e695"><inline-formula><mml:math id="M34" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>: if not pointing vertically, the weight of the antenna can cause elastic deformations, which cause the scanner structure to bend. This causes an elevation offset, which depends on the current elevation position. We model this effect as an elevation position offset of the form <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mtext>flex</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M36" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mi mathvariant="italic">χ</mml:mi><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> is usually negative.</p></list-item></list></p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e747">Inaccuracies of the scanner leading to beam pointing offsets, with the axes positioned at <inline-formula><mml:math id="M39" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M40" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0° and <inline-formula><mml:math id="M41" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M42" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 90°. <bold>(a)</bold> View from the South. <bold>(b)</bold> View from the top. The sign convention of each parameter is indicated by green arrows, which point into the positive direction of movement. Positive <inline-formula><mml:math id="M43" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> tilts the radar West, positive <inline-formula><mml:math id="M44" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> tilts the radar North. Positive <inline-formula><mml:math id="M45" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> tilts the dish clockwise, if viewed from the top. For <inline-formula><mml:math id="M46" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M47" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0° and <inline-formula><mml:math id="M48" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M49" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0°, the dish points to the North. For <inline-formula><mml:math id="M50" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M51" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0°, positive <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> tilts the elevation box clockwise, if viewed from the West.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f02.png"/>

        </fig>

      <p id="d2e862">We denote a perfectly accurate scanner as <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mi mathvariant="script">I</mml:mi><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. For such a perfect scanner, axis positions and celestial pointing are identical (at least, as long as  <inline-formula><mml:math id="M55" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M56" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> 90°): <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e957">In addition to the static scanner parameters, there are also dynamic parameters. Dynamic means that their effect on the beam pointing depends on the velocity of the axes <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. We consider the following dynamic parameters: <list list-type="bullet"><list-item>
      <p id="d2e985"><inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>: backlash in the azimuth axis. For example, this can be caused by play in the gears of the azimuth axis. As a consequence, this creates a hysteresis in the system, where the beam is always lagging behind the position indicated by the scanner motors. The backlash only depends on the direction of movement. The effect of the backlash on the actual position <inline-formula><mml:math id="M61" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula> of the azimuth axis can be modeled as <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mtext>sign</mml:mtext><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p></list-item><list-item>
      <p id="d2e1041"><inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>: time offset between the time of recording of the motor positions and the time of recording of the signal. It causes a lag between motor positions and beam, but in contrast to the lag caused by the backlash, the lag due to the time offset depends on the speed of motion. In the absence of acceleration of the motors, the actual positions can be calculated as <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>.</p></list-item></list> We assume that the effect of the dynamic parameters is the same, regardless of the scanner pointing position in the sky. Therefore, they can simply be modeled as offsets to the scanner coordinates:

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M66" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mtext>sign</mml:mtext><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Step 1: Estimate Local Mispointing</title>
      <p id="d2e1182">If the Sun were a perfect point source and the radar emitted an infinitely narrow beam, step 1 would not be necessary to get a pair of referenced scanner coordinates. In that idealized case, we could simply scan across the sky until the beam intersects the point-like Sun, record the corresponding scanner coordinates, and directly assign them to the absolute solar position.</p>
      <p id="d2e1185">In reality, the Sun appears as an extended, moving disk and the radar beam exhibits a finite width. Consequently, the measured signal represents a broadened response, and we must determine the apparent center of the Sun within the data. Similar to <xref ref-type="bibr" rid="bib1.bibx15" id="text.23"/>, we will do so by fitting a simulated response to all data points. In addition, we will also obtain information about the radar beam shape, scanner backlash and signal time offset. To achieve this, we perform multiple measurements in the region where the Sun is expected to be located. This procedure yields a set of <inline-formula><mml:math id="M67" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> samples, each containing the measurement time, scanner coordinates and velocities, and recorded signal:

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M68" display="block"><mml:mrow><mml:mtext>Sample i</mml:mtext><mml:mo>:</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e1257">According to the measurement time <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, we compute the apparent solar position <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, accounting for the radar position and altitude.</p>
      <p id="d2e1303">If the scanner operated without inaccuracies, the corresponding celestial beam position at time <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> would be given by the ideal mapping

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M72" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mrow><mml:mi mathvariant="normal">b</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi mathvariant="normal">b</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          However, with a single Sun scan it is not feasible to determine the full set of inaccuracy parameters <inline-formula><mml:math id="M73" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula> of a general scanner model <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, since the observations cover only a small portion of the sky. We therefore restrict the model to two parameters <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which capture the local mispointing of the system in the scanned region. In this approximation, the effective beam direction is

            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M76" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mrow><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mrow><mml:mi>b</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          To estimate <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, we simulate the expected signal strength <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:mi>Q</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as a function of beam and solar position, as well as several other parameters listed in Table <xref ref-type="table" rid="T1"/>. The optimal parameters are then obtained by minimizing the root-mean-squared deviation (RMSD) between measured and simulated signals:

            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M79" display="block"><mml:mrow><mml:munder><mml:mo movablelimits="false">min⁡</mml:mo><mml:mtext>(Q Parameters)</mml:mtext></mml:munder><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mfenced open="(" close=")"><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>Q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          With <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> available, we can finally calculate a reference pair of scanner coordinates <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with a reference position in the sky <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M86" display="block"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be chosen arbitrarily from all samples <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e1763">Overview of the optimized parameters in each step. The steps are illustrated in Fig. <xref ref-type="fig" rid="F1"/>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Step</oasis:entry>
         <oasis:entry colname="col2">1. Local Mispointing</oasis:entry>
         <oasis:entry colname="col3">2. Scanner Inaccuracies</oasis:entry>
         <oasis:entry colname="col4">3. Inverse Kinematics</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Optimized parameters</oasis:entry>
         <oasis:entry colname="col2">- Local mispointings <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">- Pedestal tilts <inline-formula><mml:math id="M92" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M93" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Scanner positions <inline-formula><mml:math id="M94" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M95" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">- Beamwidths <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">- Axis offsets <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">- Backlash in azimuth <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">- Gimbal tilt <inline-formula><mml:math id="M101" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">- Time offset <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">- Antenna tilt <inline-formula><mml:math id="M103" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3">- Elastic deformation <inline-formula><mml:math id="M104" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Target</oasis:entry>
         <oasis:entry colname="col2">Measured signal strengths <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Reference beam positions <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Celestial position <inline-formula><mml:math id="M108" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M109" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Forward Model</oasis:entry>
         <oasis:entry colname="col2">Simulated signal strengths <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Scanner model <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (kinematic chain)</oasis:entry>
         <oasis:entry colname="col4">Scanner model <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Input for forward</oasis:entry>
         <oasis:entry colname="col2">Time <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, scanner positions <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Reference axis positions <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Scanner positions <inline-formula><mml:math id="M117" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M118" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">model</oasis:entry>
         <oasis:entry colname="col2">and  scanner velocities <inline-formula><mml:math id="M119" display="inline"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M120" display="inline"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Objective Function</oasis:entry>
         <oasis:entry colname="col2">RMSD between <inline-formula><mml:math id="M121" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M122" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">RMSD of mispointing <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi></mml:mrow></mml:math></inline-formula> between forward</oasis:entry>
         <oasis:entry colname="col4">RMSD of mispointing <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi></mml:mrow></mml:math></inline-formula> between</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">(in dB units)</oasis:entry>
         <oasis:entry colname="col3">simulated and target beam position</oasis:entry>
         <oasis:entry colname="col4">estimated and target position</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<sec id="Ch1.S2.SS2.SSS1">
  <label>2.2.1</label><title>Sun Scan Signal Simulation</title>
      <p id="d2e2290">Given a beam and Sun position, the expected signal in the receiver is determined by the convolution of the antenna's receiving pattern with the Sun's emission pattern. By the reciprocity theorem of electromagnetics, the receiving and transmitting patterns of the antenna are identical. In the following, we therefore refer to both as the radar beamshape.</p>
      <p id="d2e2293"><xref ref-type="bibr" rid="bib1.bibx15" id="text.24"/> assume that the convolved signal distribution follows a Gaussian function. This assumption is valid, if the beam opening angle is significantly broader than the Sun opening angle, but leads to inaccuracies for narrower beams. Therefore, we numerically simulate the expected signal based on the convolution of a discretized version of the sky and antenna patterns.</p>
      <p id="d2e2298">We assume that the Sun and beam positions differ only by a small angular offset <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:math></inline-formula>.<fn id="Ch1.Footn1"><p id="d2e2311">Note that in reality, this assumption does not limit the applicability of the method. Even though our Mira35 radar has a northangle of 202°, by choosing an appropriate initial guess, the optimizer is never confronted with deviations between Sun and expected beam position of more than about 5°. <monospace>SunscanPy</monospace> will find such an initial guess automatically before starting the optimization.</p></fn> This allows us to approximate the celestial hemisphere as locally flat and to transform both positions into a Cartesian reference frame centered on the beam direction (illustrated in Fig. <xref ref-type="fig" rid="F3"/>).</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e2323">2D illustration of the definition of the beam centered coordinate frame (green). The radar beam pointing and antenna pattern are illustrated in blue, the Sun pointing vector and emission pattern are illustrated in yellow.</p></caption>
            <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f03.png"/>

          </fig>

      <p id="d2e2332">The beam-centered axes are defined as follows: the local <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> axis points radially outward along the beam, the local <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> axis lies orthogonal to <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the cross-elevation direction, and the local <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> axis completes the right-handed system.

              <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M131" display="block"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>b</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>b</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e2518">The beamshape of a parabolic antenna can be expressed by a two-dimensional Airy pattern <xref ref-type="bibr" rid="bib1.bibx18" id="paren.25"/>. In the beam-centered system, this is described by Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>), which contains the first-order Bessel function <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.

              <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M133" display="block"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>G</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>r</mml:mi></mml:mfrac></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>x</mml:mi><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>y</mml:mi><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:math></disp-formula>

            The coefficients in Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>) are defined as

              <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M134" display="block"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.6163399</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are the beam full widths at half maximum (FWHM) in the <inline-formula><mml:math id="M137" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M138" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> directions, respectively, <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the value where the main lobe has half the maximum value: <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M141" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M142" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>G</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:math></inline-formula>. <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>G</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is chosen such that the integral over <inline-formula><mml:math id="M144" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> is one.</p>
      <p id="d2e2804">In a first approximation, the solar emission in the microwave region can be modeled as a bivalued function <xref ref-type="bibr" rid="bib1.bibx35" id="paren.26"/>,

              <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M145" display="block"><mml:mrow><mml:mi>H</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced close="" open="{"><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>lies outside the solar disk</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>lies inside the solar disk</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the background sky brightness and <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> the solar disk brightness. The Sun is represented as a circle of angular radius

              <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M148" display="block"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>arcsin⁡</mml:mi><mml:mspace width="-0.125em" linebreak="nobreak"/><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mtext>planetary</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>S-E</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with planetary solar radius <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">planetary</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M150" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 695 660 km <xref ref-type="bibr" rid="bib1.bibx10" id="paren.27"/>. In the process of developing <monospace>SunscanPy</monospace>, we included a factor to allow for changes in the solar disk brightness near the limb, but found no significant improvements in the fit quality. The Sun–Earth distance <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>S-E</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> varies by about 3 % throughout the year due to Earth's orbital eccentricity and is evaluated for the scan time using the <monospace>Skyfield</monospace> library <xref ref-type="bibr" rid="bib1.bibx32" id="paren.28"/>. At 35 GHz, the electromagnetic thermal emission of the sky is at least 13 dB lower than the emission of the Sun at 5800 K. Since for the Mira35 system, the Sun emission is around 4 dB higher than the noise floor of the receiver, this sky emission cannot be detected and is set to <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M153" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0. Figure <xref ref-type="fig" rid="F4"/> illustrates <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in the beam-centered coordinate system.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e3046"><bold>(a)</bold> Illustration of the Sun and sky emission pattern in beam centered coordinates, as “seen” by the radar. The background consists of just two emission values: the Sun (yellow) and the sky around (blue). This background is overlayed with an airy beampattern with <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M157" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.7, <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M159" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0.5. The beampattern is illustrated by brighter and darker regions in the image. Darker means the radar is less sensitive in these regions. The top grey-white colorbar shows the sensitivity in dB. Panels <bold>(b)</bold> and <bold>(c)</bold> show horizontal and vertical cross sections of the beampattern. The expected signal detected by the radar is the summed product of background and beam pattern plus receiver noise. For this case, it yields a value of 0.8 dB, in between the brightness of the pure Sun and pure sky.</p></caption>
            <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f04.png"/>

          </fig>

      <p id="d2e3101">The simulated signal <inline-formula><mml:math id="M160" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula> is then the convolution of the solar emission function <inline-formula><mml:math id="M161" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula> and the beamshape <inline-formula><mml:math id="M162" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula> plus the receiver noise <inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

              <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M164" display="block"><mml:mrow><mml:mi>Q</mml:mi><mml:mo>=</mml:mo><mml:mi>H</mml:mi><mml:mo>×</mml:mo><mml:mi>G</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:munder><mml:mo movablelimits="false">∫</mml:mo><mml:mtext>sundisk</mml:mtext></mml:munder><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>y</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            To evaluate <inline-formula><mml:math id="M165" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>, both <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> must be determined. The receiver noise <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be measured directly by pointing the antenna sufficiently far from the Sun, i.e. by at least one expected beamwidth plus the pointing uncertainty. The solar brightness <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, however, cannot directly be measured. Instead, it is inferred from the maximum measured signal <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>. Assuming that <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> originates from a beam direction close to the center of the solar disk, we can solve Eq. (<xref ref-type="disp-formula" rid="Ch1.E14"/>) for <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>:

              <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M173" display="block"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mo>max⁡</mml:mo></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mtext>centered sundisk</mml:mtext></mml:msub><mml:mi>G</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>x</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            This approach implies that the simulated signal at the disk center is by construction equal to <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>. Thus, the beam shape influences only the relative decay of the signal from the Sun's center towards the edge. A narrow beam produces a sharp transition between Sun and sky, while a wide beam yields a smoother decay.</p>
</sec>
<sec id="Ch1.S2.SS2.SSS2">
  <label>2.2.2</label><title>Proposed Scanning Pattern</title>
      <p id="d2e3359">Before conducting a Sun scan, we recommend adjusting the radar scanner to a moderate pointing precision, e.g. <inline-formula><mml:math id="M175" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M176" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 2°. This avoids the need to “search” the Sun across the entire celestial hemisphere. The adjustment can usually be performed visually or with a simple spirit level and compass. Once this preliminary alignment is completed, multiple samples are recorded within a region of angular size <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:math></inline-formula> around the expected Sun position:

              <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M178" display="block"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The specific scanning pattern used within this region is not critical, since all sample tuples <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are treated independently. In practice, rectangular or rhombus-shaped “zigzag” scans are often employed. However, any pattern is acceptable provided that the following criteria are satisfied: <list list-type="custom"><list-item><label>1.</label>
      <p id="d2e3513"><italic>Coverage of the solar disk.</italic> The data must contain some measurements with the beam probing the solar disk's central region. If this is not the case, the search region <inline-formula><mml:math id="M180" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> must be enlarged.</p></list-item><list-item><label>2.</label>
      <p id="d2e3526"><italic>Measurement of background sky noise.</italic> At least one sample must be taken sufficiently far from the Sun to record the receiver noise <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. As a rule of thumb, this can be achieved at an azimuth offset of at least <inline-formula><mml:math id="M182" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M183" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, i.e. at least the uncertainty in radar pointing plus the expected beamwidth (including sidelobes).</p></list-item><list-item><label>3.</label>
      <p id="d2e3568"><italic>Use of multiple azimuth velocities.</italic> Ideally, the scan should include at least two different azimuth velocities. Since mechanical backlash depends only on the velocity sign, this enables the setup of two independent equations, which allow simultaneous estimation of both the backlash <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the timing offset <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>:<disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M187" display="block"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>sign</mml:mtext><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>sign</mml:mtext><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p></list-item></list> Apart from these requirements, the absolute axis velocities, sampling rate, and ordering of samples may be chosen freely according to the capabilities of the scanner and the signal processing system. Appendix A presents our specific scan pattern in the form of pseudocode.</p>
</sec>
<sec id="Ch1.S2.SS2.SSS3">
  <label>2.2.3</label><title>Reverse Scanning</title>
      <p id="d2e3741">Many scanner systems permit elevation angles greater than 90°. In such cases, most points on the celestial hemisphere can be reached by the scanner in two different configurations: a forward configuration with <inline-formula><mml:math id="M188" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M189" display="inline"><mml:mo>≤</mml:mo></mml:math></inline-formula> 90° and a reverse configuration with <inline-formula><mml:math id="M190" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M191" display="inline"><mml:mo>&gt;</mml:mo></mml:math></inline-formula> 90° (Fig. <xref ref-type="fig" rid="F5"/>).</p>

      <fig id="F5"><label>Figure 5</label><caption><p id="d2e3776">Illustration of the forward and reverse configuration of a two axis scanner. In both cases, the scanner points to the same location in the sky. However, in the reverse configuration, the scanner has turned by 180° in azimuth and the elevation angle (angle between the dashed, blue lines) is over 90°. The color gradients and arrows illustrate the orientation of the pedestal and scanner box.</p></caption>
            <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f05.png"/>

          </fig>

      <p id="d2e3785">Assuming an ideal scanner <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, forward and reverse positions are related by a rotation of 180° in azimuth combined with the complementary elevation:

              <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M193" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            Performing Sun scans in both forward and reverse configurations is advantageous because it allows to resolve ambiguities in the scanner parameters. For instance, consider the case where a positive elevation mispointing <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> is observed, meaning the radar is pointing above the Sun. This deviation could originate either from an elevation axis offset or from a tilt of the scanner pedestal. In the reverse configuration, however, the two effects manifest differently: a pedestal tilt still produces a positive <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula>, whereas an elevation offset causes a sign flip, leading the radar to point below the Sun. The reverse scan must satisfy the same requirements as the forward scan regarding coverage of the solar disk, measurement of sky noise, and inclusion of multiple scanning velocities.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Step 2: Estimate Scanner Inaccuracies</title>
      <p id="d2e3872">A single Sun scan provides information only about the local mispointing in one specific region of the sky. However, in other regions the mispointing may differ, depending on the specific inaccuracies of the scanner introduced in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>. To estimate these inaccuracies systematically, we implemented the forward model <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as a kinematic chain using <monospace>ikpy</monospace>, a Python library for robotics and inverse kinematics <xref ref-type="bibr" rid="bib1.bibx20" id="paren.29"/>. The kinematic chain consists of four links: Origin, Azimuth joint, Elevation joint, and Antenna. Each link defines a rotated coordinate frame relative to the previous one, with the rotations depending on the parameters <inline-formula><mml:math id="M197" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M198" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M199" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M200" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M201" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula>, and <inline-formula><mml:math id="M202" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula>. The effects of backlash <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, time offset <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, angle offsets <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, as well as structural flexibility <inline-formula><mml:math id="M207" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>, are combined into the effective angles <inline-formula><mml:math id="M208" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M209" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula>.</p>
      <p id="d2e4025">A single Sun scan is not sufficient to unambiguously determine all parameters in <inline-formula><mml:math id="M210" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula>. For example, when scanning the Sun in the South, no information can be inferred about a potential East-West pedestal tilt <inline-formula><mml:math id="M211" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>. To resolve such ambiguities, Sun scans at multiple positions across the sky are required, ideally covering the course of a full day in the summer months. Each Sun scan yields a pair of referenced coordinates <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in the scanner system and the corresponding celestial reference coordinates <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e4088">For a given set of estimated parameters <inline-formula><mml:math id="M214" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula>, we define an objective function based on the mispointing angle between the predicted beam position and the celestial reference position:

            <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M215" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e4153">The objective is defined as the RMSD of the mispointing across all referenced pairs:

            <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M216" display="block"><mml:mrow><mml:mi>O</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:mi mathvariant="normal">Δ</mml:mi><mml:msubsup><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Minimizing this objective yields the set of parameters <inline-formula><mml:math id="M217" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> that best explains the observed radar pointing across all Sun scans. To carry out the minimization, we employ a two-step strategy: first, a three-point brute-force search provides reasonable starting values; second, a Nelder-Mead simplex optimization minimizes the objective <xref ref-type="bibr" rid="bib1.bibx8" id="paren.30"/>.</p>
      <p id="d2e4208">Global optimization in a high-dimensional parameter space is challenging, and simultaneous fitting of all parameters can cause the optimizer to become trapped in local minima. We found that sequential fitting, leveraging the specific mispointing signatures of each parameter, avoids this issue. Figure <xref ref-type="fig" rid="F6"/> shows the mispointing caused by each static scanner parameter over the celestial hemisphere. In our approach, previously fitted parameters are held fixed as best guesses in subsequent steps: <list list-type="custom"><list-item><label>0.</label>
      <p id="d2e4215"><italic>Backlash</italic> <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <italic>and time offset</italic> <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. As described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>, the dynamic parameters are assumed constant across the sky and can be estimated from a single Sun scan. We recommend averaging the results from multiple scans.</p></list-item><list-item><label>1.</label>
      <p id="d2e4248"><italic>Azimuth offset</italic> <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <italic>and antenna tilt</italic> <inline-formula><mml:math id="M221" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>. Near the horizon, azimuth mispointing <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula> can only be caused by <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M224" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F6"/>c and f). The contributions differ between forward and reverse scans: <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> produces the same sign in both, while <inline-formula><mml:math id="M226" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> produces opposite signs in forward and reverse (compare e.g. Figs. <xref ref-type="fig" rid="F6"/>f and <xref ref-type="fig" rid="FA1"/>f).</p></list-item><list-item><label>2.</label>
      <p id="d2e4328"><italic>East-West tilt</italic> <inline-formula><mml:math id="M227" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> <italic>and elevation offset</italic> <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. Near the horizon in the East or West, elevation mispointing <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> can only be caused by East-West pedestal tilt <inline-formula><mml:math id="M230" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> or elevation offset <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F6"/>a and <xref ref-type="fig" rid="F6"/>d). In analogy to the previous step, forward and reverse scans allow these effects to be distinguished.</p></list-item><list-item><label>3.</label>
      <p id="d2e4388"><italic>North-South tilt</italic> <inline-formula><mml:math id="M232" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> <italic>and gimbal tilt</italic> <inline-formula><mml:math id="M233" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>. At high elevation in the South (or North in the Southern Hemisphere), elevation mispointing <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> can be caused by North-South pedestal tilt <inline-formula><mml:math id="M235" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> or by <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F6"/>b and <xref ref-type="fig" rid="F6"/>d), with the latter already known from step (2) <inline-formula><mml:math id="M237" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> causes mainly an azimuth offset <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula>, but can also have a contribution to <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> (Fig. <xref ref-type="fig" rid="F6"/>e).</p></list-item><list-item><label>4.</label>
      <p id="d2e4474"><inline-formula><mml:math id="M240" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M241" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M242" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M243" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M246" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>. Using the previous results as initial guesses, all parameters are jointly re-optimized against the full set of reference positions. At this stage, the flexibility parameter <inline-formula><mml:math id="M247" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> is included to account for residual elevation mispointings. Unlike <inline-formula><mml:math id="M248" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M249" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>, or <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, the effect of <inline-formula><mml:math id="M251" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> on the elevation mispointing depends on the absolute elevation (Fig. <xref ref-type="fig" rid="F6"/>g).</p></list-item></list> Given a list of reference positions, the <monospace>SunscanPy</monospace> Python implementation automatically identifies the relevant sky regions and performs the sequential fitting procedure.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e4582">Mispointing caused by the static scanner parameters, as a function of position in the sky. Each panel shows the effect of a change in the corresponding parameter of 0.1° (<inline-formula><mml:math id="M252" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>: <inline-formula><mml:math id="M253" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.1°), the other parameters are kept at 0.0°, respectively. Shown is the forward scanner configuration. The markers show the path of the Sun for Munich and an Antarctic location (Neumayer III station at 70°40<sup>′</sup> S, 008°16<sup>′</sup> W). The arrows show the direction and magnitude of the mispointing (magnitudes enhanced). Reading example for panel <bold>(d)</bold> An elevation offset of 0.1° causes a constant mispointing of 0.1° everywhere in the sky (colormap). The mispointing is always directed towards zenith (arrows).</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f06.png"/>

        </fig>

</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Step 3: Inverse Kinematics</title>
      <p id="d2e4634">Once an estimate of the pan-tilt system parameters <inline-formula><mml:math id="M256" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula> is available, misalignments can either be corrected mechanically – for example, by leveling the scanner pedestal – or compensated for in software. The latter requires inverting the forward model <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, such that for a desired celestial position <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the corresponding scanner axis positions <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are determined:

            <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M260" display="block"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This inversion can be performed numerically by minimizing the mispointing between the desired celestial coordinates and the beam position predicted by the forward model, i.e., by finding the scanner position <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> that minimizes

            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M262" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The feasibility of such inversion depends on the specific set of parameters. For example, offsets in the azimuth or elevation encoders <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be compensated straightforwardly. By contrast, an antenna tilt <inline-formula><mml:math id="M264" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> renders the zenith position unreachable, as will be discussed further in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>.</p>
      <p id="d2e4826">To test whether the inversion is successful, the obtained scanner position <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is inserted back into the forward model, and the resulting pointing is evaluated against the target celestial position:

            <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M266" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>M</mml:mi><mml:mi mathvariant="script">F</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo mathsize="1.1em">)</mml:mo><mml:mover><mml:mo>=</mml:mo><mml:mo>!</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Step 1: Local Mispointing</title>
      <p id="d2e4983">Sun scans were carried out in August 2025 in Munich, southern Germany, using a Mira-35 Doppler cloud radar manufactured by Metek GmbH<fn id="Ch1.Footn2"><p id="d2e4986">The instrument is a central component of the Munich ACTRIS National Facility for cloud remote sensing (<uri>https://nflabelling.actris.eu/facility/51</uri>, last access: 24 April 2026). Continuous measurements and derived products are available via the Cloudnet portal <uri>https://cloudnet.fmi.fi/</uri> (last access: 24 April 2026).</p></fn> <xref ref-type="bibr" rid="bib1.bibx9" id="paren.31"/>. The system operates in the Ka-band at 35.2 GHz and is equipped with a 1.2 m Cassegrain antenna. The radar is mounted on a steel platform at the top of the Munich Institute for Meteorology, supported by four adjustable anchor points. This setup provides a nearly unobstructed field of view down to 2° above the horizon. The antenna is mounted on a two-axis scanner with a nominal pointing precision of less than 0.1° in both azimuth and elevation. The signal transmission between the radar and control unit is performed via slip rings and a fiber-optic rotary joint, which allows unrestricted continuous rotation in azimuth. The scanner joints operate in a temperature- and humidity-controlled environment, ensuring stable mechanical performance during the measurements.</p>
      <p id="d2e4999">In principle, Sun scans can be performed even in cloudy conditions and with the radar still emitting radiation. In this case, the Sun signal is visible as enhanced receiver noise in target-free sections along the beam, preferably in the far range.  We focus on the radar range gates between 3 and 27 km. We calculate the Sun signal as the average noise level in all cloud-free range gates. In general, for very low elevation angles, it is possible that there are not enough cloud-free far range gates, in which case the scan is excluded from analysis. We performed all scans on almost cloud-free days.</p>
      <p id="d2e5002">Figure <xref ref-type="fig" rid="F7"/>a shows the measurements from a Sun scan performed on 19 August 2025 at 13:44 local time. The scan pattern follows the procedure described in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>, with a radar averaging time of 0.3 s. Five samples (equivalent to 1.5 s) in the lower left corner were acquired to determine the background sky noise. The Sun is visible as an elongated region of enhanced signal strength. The two azimuth velocities used during the measurement, 0.2 and 0.4° s<sup>−1</sup>, are clearly visible as more separated data points for faster azimuth velocity. Depending on the direction of azimuthal motion, a “zigzag” shift of the solar signal becomes visible, which indicates either mechanical backlash or a timing offset in the scanner system.</p>
      <p id="d2e5021">In Fig. <xref ref-type="fig" rid="F7"/>b, the optimal fit of the simulated signal strength to the measured signal is shown. We see that the simulated samples reproduce both the overall shape of the solar response and the azimuth-dependent displacement. The corresponding best-fit parameters are listed in Table <xref ref-type="table" rid="T2"/>.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e5031"><bold>(a)</bold> Measurements of the Mira35 cloud radar when scanning the Sun. In azimuth, the scanner is alternating between two different azimuth velocities. <bold>(b)</bold> Simulated signal strength, using the parameters of Table <xref ref-type="table" rid="T2"/>. The parameters are determined as a best fit of the simulation to the measurements in panel <bold>(a)</bold>.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f07.png"/>

        </fig>

<table-wrap id="T2"><label>Table 2</label><caption><p id="d2e5053">Parameters obtained from an optimal fit to the single Sun scan depicted in Figs. <xref ref-type="fig" rid="F7"/> and <xref ref-type="fig" rid="F8"/>. Azimuth mispointing <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula>, elevation mispointing <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula>, time offset between signal and scanner axis recording <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, beam full width at half maximum in cross elevation <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, beam full width at half maximum in co elevation <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, scanner backlash <inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, sky sample (receiver noise) <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, Sun brightness <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">Value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">202.9727</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M278" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0293</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> [s]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M280" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.3097</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">0.5380</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">0.5343</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M284" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0042</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [dB]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M286" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>3.54</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> [dB]</oasis:entry>
         <oasis:entry colname="col2">1.68</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e5346">With these parameters, the Sun's position can be transformed into beam-centered coordinates. Figure <xref ref-type="fig" rid="F8"/>a and b show the measured and simulated signal strength in this coordinate frame. Since the transformation incorporates the corrections for <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the solar pattern appears undistorted and is centered at the origin. Figure <xref ref-type="fig" rid="F8"/>c presents the residuals between measured and simulated signal strengths, with a mean deviation of 0.0013 dB (<inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">0.1065</mml:mn></mml:mrow></mml:math></inline-formula> dB standard deviation).</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e5408"><bold>(a, b)</bold> Same as Fig. <xref ref-type="fig" rid="F7"/>, but depicted in beam centered coordinates. <bold>(c)</bold> The difference between the signal strengths in panels <bold>(a)</bold> and <bold>(b)</bold>.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f08.png"/>

        </fig>

      <p id="d2e5430">Repeating such Sun scans throughout the day allows us to assess the variability of the derived parameters. Figure <xref ref-type="fig" rid="F9"/> summarizes these results as a function of solar elevation angle. Figure <xref ref-type="fig" rid="F9"/>a and b show the beamwidths at half maximum in co- and cross-elevation directions. The cross-beamwidth is derived to approximately 0.55° across all scans, with a slight 0.01° decreasing tendency for higher solar elevation angles. The co-beamwidth is on average about 0.515°. There is an overall uncertainty of <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">1.5</mml:mn></mml:mrow></mml:math></inline-formula> % in both beamwidths.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e5450">Variability of parameters over the course of one day, visualized as a function of solar elevation angle. The mean and standard deviation are indicated at the bottom of each panel and visualized as a dashed line and grey region, respectively.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f09.png"/>

        </fig>

      <p id="d2e5459">Figure <xref ref-type="fig" rid="F9"/>c and d display the mispointing corrections <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula>. Both exhibit systematic patterns over the course of the day, which will be further analyzed in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>. Figure <xref ref-type="fig" rid="F9"/>e shows the time offset, with <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M297" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> <inline-formula><mml:math id="M298" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.33 s, indicating that the recorded signal corresponds to the scanner position approximately one-third of a second earlier. Such a timeshift is expected, since the Mira35 radar stores the time at the end of the 0.3 s averaging interval, plus an additional processing time of the central processing unit (CPU). A positive correlation between Sun elevation and time offset is observed, amounting to a small change of approximately 0.03 s over the full day. We suspect that this might be due to solar heating and resulting changes in temperature of the system, affecting the CPU processing times of signal and axis encoders. Importantly, the time offset accounts for more than 95 % of the dynamic azimuthal mispointing in the scans. The contribution from gear backlash (Fig. <xref ref-type="fig" rid="F9"/>f) is negligible at 0.002°.</p>
      <p id="d2e5516">The solar signal amplitude (Fig. <xref ref-type="fig" rid="F9"/>g) increases strongly from 0.8 linear units (<inline-formula><mml:math id="M299" display="inline"><mml:mo lspace="0mm">-</mml:mo></mml:math></inline-formula>1.0 dB) near the horizon to 1.5 linear units (1.8 dB) at 20° solar elevation, reflecting the reduced atmospheric path length and hence lower path integrated gas attenuation of the direct solar radiation. At higher elevations, the changes in path length and signal are less significant. At the same time, the signal of the sky sample decreases slightly from 0.45 linear units (<inline-formula><mml:math id="M300" display="inline"><mml:mo lspace="0mm">-</mml:mo></mml:math></inline-formula>3.5 dB) by about 1 % to 0.445 linear units from horizon towards high noon.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Step 2: Scanner Inaccuracies</title>
      <p id="d2e5543">As described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>, each Sun scan provides a referenced pair of scanner and celestial coordinates <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. With Sun scans distributed over the course of a full day, these data can be used to estimate the scanner inaccuracies following the procedure outlined in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>.</p>
      <p id="d2e5594">Figure <xref ref-type="fig" rid="F10"/>a presents Sun scans performed on 11 and 12 August 2025. The figure shows both the actual beam positions <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in the celestial hemisphere and the expected beam positions obtained from the scanner coordinates mapped into the sky using the identity scanner model,

            <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M304" display="block"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>I</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>I</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The comparison reveals large discrepancies between expected and actual beam positions, due to an uncorrected north angle <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M306" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 202.7°. After adding the northangle, the residual differences are much smaller (<inline-formula><mml:math id="M307" display="inline"><mml:mo lspace="0mm">&lt;</mml:mo></mml:math></inline-formula> 1°), as shown in Fig. <xref ref-type="fig" rid="F10"/>b. For visibility, in Fig. <xref ref-type="fig" rid="F10"/>b, the residuals are enhanced.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e5701">Difference between expected beam pointing (assuming a specific scanner model <inline-formula><mml:math id="M308" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>, blue dots) and actual beam pointing (crosses), derived from multiple Sun scans over the course of one day. Since in panels <bold>(b)</bold> to <bold>(e)</bold>, the differences are small, the actual beam pointing markers (crosses) are shifted into the direction of the  deviation along the grey arrows. <bold>(a)</bold> Expected pointings are  calculated from the raw axis positions and assuming an ideal scanner  <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. <bold>(b)</bold> After correcting for the northangle in azimuth, the remaining differences are small and therefore enhanced in the plot. We see that in the southwest, for both the forward and reverse configuration, the radar points lower (closer to the horizon) than expected for an ideal scanner. The difference is about 0.2° (compare the length of the shift arrows with the 0.4° reference arrow). This is an indication for a southwest tilt of the scanner pedestal. <bold>(c)</bold> If the expected positions are calculated using the fitted scanner model <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, the difference to the actual pointing is much smaller. <bold>(d)</bold> Situation after leveling the pedestal, assuming an ideal scanner <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. <bold>(e)</bold> After leveling the pedestal, with expected positions calculated using the fitted scanner model <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f10.png"/>

        </fig>

      <p id="d2e5791">Over the course of the day, the discrepancies exhibit a characteristic  pattern. The largest deviations occur in the southwest, where the beam consistently points lower than expected. Since this effect is present in both forward and reverse scans, it indicates a pedestal tilt of approximately 0.2° towards the southwest.</p>
      <p id="d2e5794">We apply the sequential fitting procedure introduced in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/> to the data in Fig. <xref ref-type="fig" rid="F10"/>a.  Table <xref ref-type="table" rid="T3"/> lists the optimal scanner parameters <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> obtained from this procedure. As expected, a positive <inline-formula><mml:math id="M314" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and negative <inline-formula><mml:math id="M315" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> confirm the southwest tilt. Compared to the pedestal tilt, the other inaccuracy parameters are about an order of magnitude smaller.<fn id="Ch1.Footn3"><p id="d2e5829">These comparably small axis offsets, gimbal tilt and antenna tilt are to be expected, since the scanner had undergone a factory calibration prior to the measurements shown in this study. The factory procedure is based on a manual Sun scan analysis. For the experiment presented here, the pedestal was intentionally misaligned to test the fitting method.</p></fn></p>

<table-wrap id="T3"><label>Table 3</label><caption><p id="d2e5835">Scanner inaccuracies before and after manual leveling, as obtained from an optimal fit to multiple Sun scans. Azimuth offset <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, elevation offset <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, West-East pedestal tilt <inline-formula><mml:math id="M318" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula>, North-South pedestal tilt <inline-formula><mml:math id="M319" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>, gimbal tilt <inline-formula><mml:math id="M320" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, antenna tilt <inline-formula><mml:math id="M321" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>, signal-scanner time offset <inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, scanner backlash <inline-formula><mml:math id="M323" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, elastic elevation deformation <inline-formula><mml:math id="M324" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Parameters</oasis:entry>
         <oasis:entry colname="col2">Optimal Fit <inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">Optimal Fit <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> after</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3">manual leveling</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">202.7281</oasis:entry>
         <oasis:entry colname="col3">202.7491</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M329" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0035</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M330" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0087</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M331" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">0.1123</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M332" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0103</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M333" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M334" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.1259</oasis:entry>
         <oasis:entry colname="col3">0.0015</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M335" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M336" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0927</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M337" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0889</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M338" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2">0.0110</oasis:entry>
         <oasis:entry colname="col3">0.0084</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> [<inline-formula><mml:math id="M340" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M341" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.3247</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M342" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.3243</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M343" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M344" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0021</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M345" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0031</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M346" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula> [°]</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M347" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0352</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M348" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.0494</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e6237">Figure <xref ref-type="fig" rid="F10"/>c shows the expected scanner positions when the optimal parameters <inline-formula><mml:math id="M349" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are taken into account. The numbers next to the points in Fig. <xref ref-type="fig" rid="F10"/>c indicate which samples are used for which step of the sequential fit, as presented in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>.  Relative to Fig. <xref ref-type="fig" rid="F10"/>b, the discrepancies are reduced by a factor of seven, yielding an average residual of only 0.02°. The remaining deviations are likely caused by effects not explicitly represented in the scanner model, such as position-dependent offsets, nonlinear elastic deformations, or differential thermal expansion of the steel support structure during the day.</p>
      <p id="d2e6259">With precise knowledge of the pedestal misalignment, we can proceed to correct it mechanically. Our radar is mounted on four adjustable screws arranged in a 977 mm by 1328 mm rectangle. Each full turn of a screw raises the corresponding corner by 2 mm, enabling fine adjustments. Figure <xref ref-type="fig" rid="F10"/>d presents the results from a second series of Sun scans after adjusting the feet to compensate for the pedestal tilt. The remaining discrepancies are now dominated by other scanner inaccuracies, such as motor offsets, gimbal tilt <inline-formula><mml:math id="M350" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, and antenna tilt <inline-formula><mml:math id="M351" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>. As a consistency check, we re-estimated the optimal scanner parameters <inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> from these new scans. The results, shown in Table <xref ref-type="table" rid="T3"/> (second column), confirm that the pedestal is now aligned to within 0.01°, while the other parameters remain similar to their previous values. Taking <inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> as the basis for the expected pointing in Fig. <xref ref-type="fig" rid="F10"/>e, the remaining discrepancies almost vanish and we get a similar agreement between expectation and measurement as in Fig. <xref ref-type="fig" rid="F10"/>c.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Step 3: Inverse Kinematics</title>
      <p id="d2e6318">Instead of correcting the pointing errors mechanically, the ability to invert the scanner model <inline-formula><mml:math id="M354" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> allows for an automatic correction in software. For example, if the radar is required to point to <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in the sky, the corresponding scanner coordinates according to the fitted parameter set <inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are:

            <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M357" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">157.30</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">29.91</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">337.38</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">150.10</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e6477">The two solutions correspond to the forward and backward scanner configurations. Both solutions account for the complete set of inaccuracies represented in the scanner model. For cloud radar applications, the zenith position is typically the most critical. In this case, the inversion yields:

            <disp-formula id="Ch1.E26" content-type="numbered"><label>26</label><mml:math id="M358" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="script">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">90</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="array" columnalign="left left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">171.06</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">89.85</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">47.47</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">90.15</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d2e6586">At zenith, the prescribed azimuth <inline-formula><mml:math id="M359" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M360" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 0° is irrelevant for the pointing accuracy. The scanner azimuth positions <inline-formula><mml:math id="M361" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> listed in Eq. (<xref ref-type="disp-formula" rid="Ch1.E26"/>) were chosen to optimize the final pointing.</p>
      <p id="d2e6612">Figure <xref ref-type="fig" rid="F11"/>a and b illustrate the corrections required to be added to the scanner coordinates <inline-formula><mml:math id="M362" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M363" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>, respectively, to achieve perfect pointing across the full celestial hemisphere. Figure <xref ref-type="fig" rid="F11"/>a is dominated by the system's north angle of 157.3°. Near zenith, the azimuth corrections increase, reflecting the reduced effectiveness of azimuth corrections at high elevation angles. Figure <xref ref-type="fig" rid="F11"/>b is dominated by the southwest tilt of the pedestal: in the southwest, the elevation axis must be increased by about 0.2°, while in the northeast it must be reduced by roughly 0.1°.</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e6638">Corrections to be added to the scanner azimuth and elevation axis position in order to achieve perfect beam pointing accuracy, for all locations of the celestial hemisphere. <bold>(a)</bold> Azimuth correction. <bold>(b)</bold> Elevation correction.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f11.png"/>

        </fig>

      <p id="d2e6653">It should be noted that inverse kinematics does not always allow for complete correction. Certain scanner configurations restrict accessibility to specific sky regions. For illustration, consider the extreme case where the dish is tilted by <inline-formula><mml:math id="M364" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M365" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 90°, effectively aligning the beam with the elevation axis. In this configuration, the elevation motor no longer affects the beam pointing, making it obviously impossible to reach the zenith position. Figure <xref ref-type="fig" rid="F12"/>a shows the hypothetical case of an antenna tilt of <inline-formula><mml:math id="M366" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> <inline-formula><mml:math id="M367" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 10°. Here, the maximum achievable beam elevation is 80°, leaving the zenith position unreachable. Above this limit, the residual mispointing after inverse kinematics correction increases continuously, reaching up to 10° at zenith.</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e6688">Simulated pointing deviation from desired location after inverse kinematics correction for two different scanner configurations. <bold>(a)</bold> A perfectly leveled scanner with an antenna tilt of 10°. <bold>(b)</bold> Like panel <bold>(a)</bold>, but with the scanner pedestal tilted towards North and West by 6°.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f12.png"/>

        </fig>

      <p id="d2e6706">A straightforward solution for Doppler cloud radars is to deliberately shift the unreachable polar region away from zenith by tilting the pedestal. Figure <xref ref-type="fig" rid="F12"/>b illustrates this effect for a virtual scanner tilted by 6° towards both the west and north. The unreachable region is displaced accordingly, and zenith can again be reached with nearly perfect accuracy. In fact, the same result would be achieved for a sufficiently large pedestal tilt into any direction. This leads to the paradoxical effect that with the ability to perform inverse kinematics corrections, a perfectly leveled pedestal represents the least favorable configuration, as it maximizes the risk of an unreachable zenith.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Discussion</title>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Dependence on Latitude and Seasonality</title>
      <p id="d2e6728">As described in Sect. <xref ref-type="sec" rid="Ch1.S2"/> and Fig. <xref ref-type="fig" rid="F1"/>, the Sun scan method requires multiple Sun scans at different positions in the sky. However, the accessible positions may be restricted by a limited solar path, for example at high latitudes or during winter months, or by radar-specific constraints such as surrounding obstacles or mechanical limitations of the scanner.</p>
      <p id="d2e6735">To assess the impact of such restrictions on the applicability of the method, Fig. <xref ref-type="fig" rid="F6"/> shows the mispointing caused by a deviation of 0.1° in each scanner parameter across all sky positions. In general, a parameter can only be inferred from Sun scans if measurements are available from sky regions where the pointing is sensitive to that parameter. The markers in each panel illustrate the Sun positions for Munich and a high-latitude site (Neumayer III station, 70°40<sup>′</sup> S, 008°16<sup>′</sup> W). For the polar site, the Sun traverses at least one sensitive region for all parameters except the gimbal tilt <inline-formula><mml:math id="M370" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>. Hence, even in polar regions with only low solar elevation angles available, we expect that all parameters except <inline-formula><mml:math id="M371" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> can be estimated.</p>
      <p id="d2e6772">For campaigns and mobile radars, the pedestal tilts <inline-formula><mml:math id="M372" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M373" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> are likely the most relevant parameters. As described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>, their estimation requires only samples close to the horizon in the West and East, or North and South, respectively. However, during polar winter conditions, when the Sun remains confined to the North or South, <inline-formula><mml:math id="M374" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> cannot be reliably estimated because no sensitivity exists near the horizon in the North or South (Fig. <xref ref-type="fig" rid="F6"/>a).</p>
      <p id="d2e6800">These considerations apply analogously to local obstacles or mechanical constraints. In the latter case, reverse scans may not be feasible. Consequently, certain parameter pairs, such as <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M376" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>, cannot be determined independently (see also Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>). In such situations, we recommend fixing one parameter and excluding it from the fit. For example, the gimbal tilt <inline-formula><mml:math id="M377" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> and the antenna tilt <inline-formula><mml:math id="M378" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> may be assumed small and prescribed according to manufacturer specifications.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Pointing Uncertainty</title>
      <p id="d2e6845">Figure <xref ref-type="fig" rid="F9"/> already provides a measure of the relative uncertainty of the Sun scan parameters by showing the variability of repeated scans throughout the day. Beyond this variability, sources of absolute bias must also be considered.</p>
      <p id="d2e6850">A potential source for uncertainty is the accuracy of the solar position algorithm. We compared four different algorithms. <monospace>Skyfield</monospace> <xref ref-type="bibr" rid="bib1.bibx32" id="paren.32"/>, <monospace>Sunpy</monospace> <xref ref-type="bibr" rid="bib1.bibx37" id="paren.33"/> and <monospace>PySolar</monospace> <xref ref-type="bibr" rid="bib1.bibx36" id="paren.34"/> are free and open source Python modules. <monospace>SolCalc</monospace> <xref ref-type="bibr" rid="bib1.bibx27" id="paren.35"/> is the solar position calculator from the US National Oceanic and Atmospheric Administration. We found general agreement in the solar azimuth and elevation of better than 0.02° between the libraries. The main cause for this difference is whether refraction is considered and how a correction is implemented. For the calculations in this manuscript and  <monospace>SunscanPy</monospace>, we rely on the geometrical (i.e. not refraction corrected) position provided by <monospace>Skyfield</monospace>. We then apply the microwave refraction formula proposed by <xref ref-type="bibr" rid="bib1.bibx15" id="text.36"/>. Their coefficients were fitted to simulations of the Starlink positional astronomy library <xref ref-type="bibr" rid="bib1.bibx5" id="paren.37"/>, which uses the refractivity model from <xref ref-type="bibr" rid="bib1.bibx33" id="text.38"/>. The Starlink implementation is generally valid for microwave radiation in the GHz range, with a reported accuracy better than 1<sup>′′</sup>. It does not include an explicit wavelength dependency. According to <xref ref-type="bibr" rid="bib1.bibx34" id="text.39"/>, dispersion of the refractive index would be most relevant near oxygen and water vapor resonance lines, which are deliberately outside of the frequency bands used by weather and cloud radars. Figure <xref ref-type="fig" rid="F13"/>a shows the correction to the geometric solar elevation as a function of Sun elevation. The effect is largest near the horizon, but already at elevations above 10°, the correction remains below 0.1°. The dominant source of uncertainty in this parameterization is atmospheric humidity. Figure <xref ref-type="fig" rid="F13"/>b illustrates how the apparent solar elevation changes when relative humidity increases from 0 % to 50 %, and from 50 % to 85 %. Above 10°, the associated effect is less than 0.01°. For the calculations in the previous sections, we assumed a constant humidity of 50 %. While future refinements could incorporate vertical humidity profiles from radiosonde measurements, this level of detail is not necessary to achieve an absolute calibration accuracy well below 0.1°. This conclusion is confirmed by sensitivity tests: repeating our calculations with 85 % humidity altered the derived scanner parameters by in general less than 10<sup>′′</sup>.</p>

      <fig id="F13"><label>Figure 13</label><caption><p id="d2e6928">Apparent shift in elevation of the solar disk due to atmospheric refraction of GHz radio waves, as a function of solar elevation. <bold>(a)</bold> Absolute shift. <bold>(b)</bold> Differences between the curves in panel <bold>(a)</bold>, with the 0 % humidity curve taken as a reference.</p></caption>
          <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f13.png"/>

        </fig>

      <p id="d2e6947">In order to estimate the Sun position accurately, precise timing is important. As described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>, we use different azimuth velocities to estimate the relative time offset between signal and scanner encoder readings. However, this method cannot correct for an absolute time offset being present in signal processor and scanner encoder alike. Absolute time offsets will cause an apparent mispointing, which is always directed along the trajectory of the Sun. Depending on the latitude and season, it may therefore be possible to derive an absolute time offset from the characteristic misalignment pattern of multiple Sun scans. Nevertheless, for practical applications, we recommend simply synchronizing the time of the radar before a Sun scan calibration. Using for example GPS time or the standard network time protocol (NTP) synchronization available in modern operating systems, an accuracy of 100 ms or better should be easily achieved <xref ref-type="bibr" rid="bib1.bibx25" id="paren.40"/>. From sensitivity tests, we found time shifts of 1 s to cause in general less than 10<sup>′′</sup> shift in the derived scanner parameters.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>SunscanPy Python Implementation</title>
      <p id="d2e6977">The calibration framework developed in this study is provided as an open-source Python library <monospace>SunscanPy</monospace>. The library is written in a modular, object-oriented style and reads data in the form of one-dimensional numpy arrays. This facilitates the inclusion of the methods into existing data pipelines and operational environments. Figure <xref ref-type="fig" rid="F14"/> provides a schematic overview of the data processing. This processing chain was also used for the results in this study. Together with the library, we provide two detailed tutorial notebooks covering signal estimation and scanner estimation, guiding users through the full solar pointing calibration process. In addition, the library includes various utility functions for atmospheric refraction correction, solar position calculation, Sun scan data plotting, and an interactive 3D visualization of the scanner geometry. For usage, the recommended starting point is the project homepage at <uri>https://github.com/Ockenfuss/sunscanpy</uri> (last access: 24 April 2026), where the tutorial notebooks are also provided.</p>

      <fig id="F14"><label>Figure 14</label><caption><p id="d2e6990">Overview of the modules and dataflow in the <monospace>SunscanPy</monospace> Python library. The two green boxes represent the two major processing steps in <monospace>SunscanPy</monospace> and correspond conceptually to step one and two in Fig. <xref ref-type="fig" rid="F1"/>, respectively. The core of each step is a loop (as illustrated by the blue arrows), in which the parameters of an object are fitted iteratively to the given data. In step one, the data consists of values (radar measurements and scanner position) of a single sunscan and the parameters are the local mispointing, beamwidth and dynamic coefficients. In step two, the data consists of the referenced coordinate pairs produced by step one and the parameters are the scanner coefficients. Please refer to the methods in Sect. <xref ref-type="sec" rid="Ch1.S2"/> and the list of symbols at the end of this publication for a definition of the parameters in the figure.</p></caption>
        <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f14.png"/>

      </fig>


</sec>
<sec id="Ch1.S6" sec-type="conclusions">
  <label>6</label><title>Conclusions</title>
      <p id="d2e7019">We have presented a generic theory and workflow for radar pointing calibration using the Sun as a reference source. The procedure is structured into three major steps: (i) recording and evaluation of individual Sun scans, (ii) derivation of scanner inaccuracies, and (iii) correction of these inaccuracies. In total, the method allows the derivation of 13 distinct parameters. These include the radar beamwidth in co- and cross-elevation directions, the scanner pedestal tilt, axis misalignments, encoder offsets, gear backlash, and the receiver-scanner time offset. Our results demonstrate that, with this approach, a pointing accuracy on the order of 0.01° can be achieved.</p>
      <p id="d2e7022">Although the workflow is demonstrated here with a Mira-35 cloud radar, the methodology has been deliberately designed to be radar-agnostic. The procedures apply to any instrument equipped with a parabolic antenna mounted on a two-axis scanner, whether the radar is a cloud research radar or used for weather surveillance.</p>
      <p id="d2e7025">To facilitate the application, we provide a novel open-source Python package <monospace>SunscanPy</monospace>, which contains a suite of tools together with comprehensive tutorials and example data for radar pointing calibration. We also discuss the possibility of fully automatic radar pointing calibration. <monospace>SunscanPy</monospace> implements an inversion method for the scanner model, enabling calculation of the scanner coordinates required to achieve a desired celestial pointing. This opens the possibility for active radar pointing calibration as an alternative to manual, mechanical adjustments: after performing Sun scans, a radar can infer its scanner misalignment and then compensate for any bias in subsequent measurements. Such functionality will be highly valuable for mobile radars, for example deployed in field campaigns, where uneven ground or snow may cause significant pedestal misalignment.</p>
      <p id="d2e7034">Stationary scanning radars likewise benefit from our workflow. <monospace>SunscanPy</monospace> makes it possible to monitor pointing accuracy over long time scales, or, if the scanner configuration is assumed to be stable over time, to retrospectively improve the pointing accuracy of existing datasets. For these reasons, we think that our tool will be of interest to network-level initiatives such as the European Aerosol, Clouds and Trace Gases Research Infrastructure (ACTRIS, <xref ref-type="bibr" rid="bib1.bibx19" id="altparen.41"/>) or the U.S. Atmospheric Radiation Measurement (ARM, <xref ref-type="bibr" rid="bib1.bibx23" id="altparen.42"/>) program. Long-term cloud radar datasets are increasingly used to infer statistics of, for example, hydrometeor sedimentation velocities or vertical air motion <xref ref-type="bibr" rid="bib1.bibx16" id="paren.43"><named-content content-type="pre">e.g.,</named-content></xref>. Also new satellite missions, such as EarthCare, benefit from well-calibrated ground-based radar datasets to evaluate their novel Doppler velocity capabilities.</p>
      <p id="d2e7053">Last, but not least, while not investigated in this study, we believe that our methodology and the  <monospace>SunscanPy</monospace> package can also be applied to other scanning, two-axis instruments like Sun photometers or microwave radiometers. Particularly step (ii) and (iii) of the workflow have the potential to be transferred with minor to no adaptations to those instruments.</p>
</sec>

      
      </body>
    <back><app-group>

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Reverse Parameter Sensitivity</title>
      <p id="d2e7071">Figure <xref ref-type="fig" rid="FA1"/> shows the effect of the static scanner parameters on the mispointing in the sky for the reverse scanner configuration.</p>

      <fig id="FA1"><label>Figure A1</label><caption><p id="d2e7078">Same as Fig. <xref ref-type="fig" rid="F6"/>, but for the reverse scanner configuration. Note how the direction of the mispointing (arrows) changes for some of the parameters, compared to Fig. <xref ref-type="fig" rid="F6"/>.</p></caption>
        
        <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f15.png"/>

      </fig>


</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Implementation of a Sun Scan Pattern</title>
      <p id="d2e7103">As explained in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2.SSS2"/>, any scanning pattern which yields sufficient samples around the Sun can be evaluated. For practical applications, some patterns are more efficient in terms of scanning time and spatial resolution. Given the huge variety of hardware and programming languages used to control scanning weather and cloud radars, it is difficult to provide ready-to-run scripts for every radar. Instead, in Algorithm <xref ref-type="other" rid="App1.Ch1.S2.Prog1"/> we provide a pseudocode implementation of the scan pattern we used for our measurements. The only radar specific command in the pseudocode is <sc>move to</sc>, which steers the scanner to a given pair of axis positions. If such a command is available, it should be straightforward to implement a Sun scan in any programming language. Figure <xref ref-type="fig" rid="FB1"/> illustrates the resulting pattern. Our code takes the movement of the Sun into account and dynamically follows the expected position of the solar disk. If the Sun is located at high elevations in the sky, the azimuth range and azimuth speed are enhanced to sample a constant solid angle in the sky. To perform a reverse scan, the only adaption is to exchange the <sc>move to</sc> function in Algorithm <xref ref-type="other" rid="App1.Ch1.S2.Prog1"/> with the <sc>move reverse</sc> function described in Algorithm <xref ref-type="other" rid="App1.Ch1.S2.Prog2"/>.</p>

      <fig id="FB1"><label>Figure B1</label><caption><p id="d2e7128">Illustration of the scan pattern used in Fig. <xref ref-type="fig" rid="F7"/>. Algorithm <xref ref-type="other" rid="App1.Ch1.S2.Prog1"/> gives an example how this can be implemented in code.</p></caption>
        <graphic xlink:href="https://amt.copernicus.org/articles/19/2961/2026/amt-19-2961-2026-f16.png"/>

      </fig>

<boxed-text content-type="algorithm" position="float" id="App1.Ch1.S2.Prog1" specific-use="star"><label>Algorithm B1</label><caption><p id="d2e7143">Sun scan pattern algorithm.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item><label><bold>Require:</bold></label>

      <p id="d2e7153" specific-use="REQUIRE"><inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, elv_step, speed_fast, speed_slow, sky_calibration_offset</p>
          </list-item>

    <list-item>

      <p id="d2e7180" specific-use="STATE"><bold>Input parameters:</bold></p>
          </list-item>

    <list-item>

      <p id="d2e7187" specific-use="STATE"><inline-formula><mml:math id="M384" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>: Azimuth width of the search pattern</p>
          </list-item>

    <list-item>

      <p id="d2e7204" specific-use="STATE"><inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>: Elevation width of the search pattern</p>
          </list-item>

    <list-item>

      <p id="d2e7221" specific-use="STATE">elv_step: Step width in elevation</p>
          </list-item>

    <list-item>

      <p id="d2e7229" specific-use="STATE">speed_fast: Speed in azimuth for the fast swipes</p>
          </list-item>

    <list-item>

      <p id="d2e7236" specific-use="STATE">speed_slow: Speed in azimuth for the slow swipes</p>
          </list-item>

    <list-item>

      <p id="d2e7243" specific-use="STATE">sky_calibration_offset: Additional offset in azimuth to measure the sky calibration sample</p>
          </list-item>

    <list-item>

          <p specific-use="STATE"/></list-item>

    <list-item>

      <p id="d2e7253" specific-use="STATE"><inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>compute_sun_location()</mml:mtext></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e7279" specific-use="STATE"><inline-formula><mml:math id="M387" display="inline"><mml:mrow><mml:mtext>azimuth_factor</mml:mtext><mml:mo>←</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>  <italic>// correct the azimuth range for the elevation of the Sun</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7314" specific-use="STATE"><inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:mtext>azimuth_factor</mml:mtext><mml:mo>←</mml:mo><mml:mo>min⁡</mml:mo><mml:mo>(</mml:mo><mml:mtext>azimuth_factor</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>  <italic>// limit to avoid too large speeds and ranges if the Sun is close to zenith</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7345" specific-use="STATE"><inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:mtext>azimuth_factor</mml:mtext></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e7371" specific-use="STATE"><inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:mtext>speed_fast</mml:mtext><mml:mo>←</mml:mo><mml:mtext>speed_fast</mml:mtext><mml:mo>×</mml:mo><mml:mtext>azimuth_factor</mml:mtext></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e7391" specific-use="STATE"><inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:mtext>speed_slow</mml:mtext><mml:mo>←</mml:mo><mml:mtext>speed_slow</mml:mtext><mml:mo>×</mml:mo><mml:mtext>azimuth_factor</mml:mtext></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e7411" specific-use="STATE"><inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:mtext>sky_calibration_offset</mml:mtext><mml:mo>←</mml:mo><mml:mtext>sky_calibration_offset</mml:mtext><mml:mo>×</mml:mo><mml:mtext>azimuth_factor</mml:mtext></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

          <p specific-use="STATE"/></list-item>

    <list-item>

      <p id="d2e7435" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mtext>sky_calibration_offset</mml:mtext><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>  <italic>// move to the sky calibration position</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7487" specific-use="STATE"><bold>sleep</bold>(1) <italic>// wait one second to measure some sky background values</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7498" specific-use="STATE"><inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>compute_sun_location()</mml:mtext></mml:mrow></mml:math></inline-formula> <italic>// update Sun position</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7528" specific-use="STATE"><inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <italic>// current elevation of the beam relative to the (moving) sun</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7556" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M396" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <italic>// move to the exact starting position</italic></p>
          </list-item>

    <list-item>

      <p id="d2e7603" specific-use="STATE"><inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:mtext>iteration</mml:mtext><mml:mo>←</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e7620" specific-use="WHILE"><bold>while</bold> <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>do</bold> <list>
    <list-item>
      <p id="d2e7649" specific-use="IF"><bold>if</bold> <inline-formula><mml:math id="M399" display="inline"><mml:mrow><mml:mtext>iteration</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>mod</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mn mathvariant="normal">2</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> <bold>then</bold> <list>
    <list-item>
      <p id="d2e7680" specific-use="STATE"><inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>speed_slow</mml:mtext></mml:mrow></mml:math></inline-formula></p></list-item></list></p></list-item>
    <list-item>
      <p id="d2e7698" specific-use="ELSE"><bold>else</bold> <list>
    <list-item>
      <p id="d2e7706" specific-use="STATE"><inline-formula><mml:math id="M401" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>speed_fast</mml:mtext></mml:mrow></mml:math></inline-formula></p></list-item></list></p></list-item>
    <list-item>
      <p id="d2e7724" specific-use="ENDIF"><bold>end</bold> <bold>if</bold></p></list-item>
    <list-item><p/></list-item>
    <list-item>
      <p id="d2e7735" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M402" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <bold>at speed</bold> <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>  <italic>// move right</italic></p></list-item>
    <list-item>
      <p id="d2e7797" specific-use="STATE"><inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>compute_sun_location()</mml:mtext></mml:mrow></mml:math></inline-formula> <italic>// update Sun position</italic></p></list-item>
    <list-item>
      <p id="d2e7826" specific-use="STATE"><inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mtext>elv_step</mml:mtext></mml:mrow></mml:math></inline-formula>  <italic>// update relative elevation</italic></p></list-item>
    <list-item>
      <p id="d2e7856" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <bold>at speed</bold> <inline-formula><mml:math id="M407" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>  <italic>// move up</italic></p></list-item>
    <list-item>
      <p id="d2e7917" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M408" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <bold>at speed</bold> <inline-formula><mml:math id="M409" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>  <italic>// move left</italic></p></list-item>
    <list-item>
      <p id="d2e7978" specific-use="STATE"><inline-formula><mml:math id="M410" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mtext>compute_sun_location()</mml:mtext></mml:mrow></mml:math></inline-formula> <italic>// update Sun position</italic></p></list-item>
    <list-item>
      <p id="d2e8007" specific-use="STATE"><inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mtext>elv_step</mml:mtext></mml:mrow></mml:math></inline-formula>  <italic>// update relative elevation</italic></p></list-item>
    <list-item>
      <p id="d2e8038" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M412" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ϕ</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">sun</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> <bold>at speed</bold> <inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi>v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>  <italic>// move up</italic></p></list-item>
    <list-item><p/></list-item>
    <list-item>
      <p id="d2e8101" specific-use="STATE"><inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:mtext>iteration</mml:mtext><mml:mo>←</mml:mo><mml:mtext>iteration</mml:mtext><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula></p></list-item></list></p>
          </list-item>

    <list-item>

      <p id="d2e8121" specific-use="ENDWHILE"><bold>end</bold> <bold>while</bold></p>
          </list-item>
        </list></disp-quote></boxed-text><boxed-text content-type="algorithm" position="float" id="App1.Ch1.S2.Prog2"><label>Algorithm B2</label><caption><p id="d2e8131">Move reverse function.</p></caption><disp-quote content-type="algorithmic" specific-use="numbering{0}"><list>

    <list-item><label><bold>Require:</bold></label>

      <p id="d2e8141" specific-use="REQUIRE"><inline-formula><mml:math id="M415" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M416" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e8159" specific-use="STATE"><bold>Input parameters:</bold></p>
          </list-item>

    <list-item>

      <p id="d2e8166" specific-use="STATE"><inline-formula><mml:math id="M417" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>: Desired forward azimuth position in the sky.</p>
          </list-item>

    <list-item>

      <p id="d2e8179" specific-use="STATE"><inline-formula><mml:math id="M418" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>: Desired forward elevation position in the sky.</p>
          </list-item>

    <list-item>

      <p id="d2e8192" specific-use="STATE"><inline-formula><mml:math id="M419" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">reverse</mml:mi></mml:msub><mml:mo>←</mml:mo></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M420" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">180</mml:mn></mml:mrow></mml:math></inline-formula>°) mod 360°</p>
          </list-item>

    <list-item>

      <p id="d2e8223" specific-use="STATE"><inline-formula><mml:math id="M421" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">reverse</mml:mi></mml:msub><mml:mo>←</mml:mo><mml:mn mathvariant="normal">180</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula></p>
          </list-item>

    <list-item>

      <p id="d2e8248" specific-use="STATE"><bold>move to</bold> <inline-formula><mml:math id="M422" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">reverse</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">reverse</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></p>
          </list-item>
        </list></disp-quote></boxed-text>
</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>List of Symbols</title>
      <p id="d2e8285"><table-wrap position="anchor"><oasis:table><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="14cm"/>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M423" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Pedestal tilt towards West or East</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M424" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Gimbal tilt</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth backlash</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M426" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Pedestal tilt towards North or South</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M427" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Antenna tilt</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M428" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth axis position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M429" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth axis offset</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M430" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth axis position, belonging to a referenced position in the sky <inline-formula><mml:math id="M431" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M432" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">γ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth axis velocity</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M433" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation axis position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M434" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation axis offset</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M435" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation axis position, belonging to a referenced position in the sky <inline-formula><mml:math id="M436" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M437" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation axis velocity</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M438" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Time offset between axis positioners and signal recorder</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M439" display="inline"><mml:mi mathvariant="italic">χ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elastic elevation deformation</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M440" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation angle (celestial coordinates)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M441" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth angle (celestial coordinates)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Solar azimuth position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Solar elevation position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M444" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam azimuth position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam elevation position</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M446" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Azimuth position in the sky, providing the reference to a scanner position <inline-formula><mml:math id="M447" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M448" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Elevation position in the sky, providing the reference to a scanner position <inline-formula><mml:math id="M449" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M450" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Local azimuth mispointing</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Local elevation mispointing</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M452" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Angular mispointing</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M453" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam full width at half maximum in cross-elevation direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M454" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam full width at half maximum in co-elevation direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M455" display="inline"><mml:mi>G</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Antenna beam pattern function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M456" display="inline"><mml:mi>H</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Solar emission pattern function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M457" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Sky brightness</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M458" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Solar disk brightness</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M459" display="inline"><mml:mrow><mml:msub><mml:mi>H</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Receiver noise level</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M460" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Simulated signal strength</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M461" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Measured signal strength</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M462" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Angular radius of solar disk</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M463" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Forward scanner model with parameters <inline-formula><mml:math id="M464" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="script">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Ideal scanner model</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M466" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Set of scanner inaccuracy parameters</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M467" display="inline"><mml:mi mathvariant="script">F</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Fitted scanner parameters</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:msub><mml:mi>J</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">First-order Bessel function</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M469" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M470" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M471" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam-centered coordinate axes</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M472" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M473" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Beam shape coefficients</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M474" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mn mathvariant="normal">0.5</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Radius where beam has half maximum value</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap></p>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e9164">The code for the full Sun calibration procedure is made freely available in the form of an open source Python package <monospace>SunscanPy</monospace> on GitHub from <uri>https://github.com/Ockenfuss/sunscanpy</uri> (last access: 24 April 2026) and on Zenodo from <ext-link xlink:href="https://doi.org/10.5281/zenodo.18862011" ext-link-type="DOI">10.5281/zenodo.18862011</ext-link> <xref ref-type="bibr" rid="bib1.bibx28" id="paren.44"/>. The package includes some example datasets as used in this publication, as well as plotting functionality. There are two extensive tutorial jupyter notebooks to guide through the calibration and visualization process at the package homepage. This publication was created based on SunscanPy v0.1.3 available on GitHub from <uri>https://github.com/Ockenfuss/sunscanpy/releases/tag/v0.1.3</uri> (last access: 24 April 2026) and on Zenodo from <ext-link xlink:href="https://doi.org/10.5281/zenodo.18862012" ext-link-type="DOI">10.5281/zenodo.18862012</ext-link> <xref ref-type="bibr" rid="bib1.bibx29" id="paren.45"/>.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e9193">PO developed the method and <monospace>SunscanPy</monospace>, evaluated the measurements and wrote this publication. PO and GK performed the measurements. GK also co-authored <monospace>SunscanPy</monospace> and this publication. GK is responsible for the general Mira35 radar operation and data quality. MB and SK assisted with longterm Sun scan and radar pointing experience. Some concepts, namely the reverse scan and the scanner inaccuracies, are based on earlier work from MB. All authors edited and proofread the manuscript.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e9206">Mathias Bauer-Pfundstein is employed by Metek GmbH, the manufacturer of the Mira35 cloud radar.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d2e9214">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e9221">We acknowledge support for hardware upgrades and long-term operation of the MIRA35 system by ACTRIS-D (Grant number 01LK2001E), funded by the Federal Ministry of Education and Research (BMBF) under the FONA Strategy “Research for Sustainability”. We are grateful for the comments from three anonymous reviewers, which helped to improve the final version of the manuscript. We thank Pavlos Kollias for handling the manuscript as editor. In the production of this study, tools based on artificial intelligence (AI) were used. Specifically, “ChatGPT” by OpenAI and “Claude” by Anthropic assisted in simple, repetitive code generation tasks (plotting and formatting), as well as in improving the wording and formulation of this manuscript. All ideas and concepts are developed without AI assistance exclusively by the authors.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e9227">This work has been supported by the DFG Priority Program SPP2115 “Fusion of Radar Polarimetry and Numerical Atmospheric Modelling Towards an Improved Understanding of Cloud and Precipitation Processes” (PROM) under Grant PROM-POMODORI (Project Number 408012686) and PROM-ICEPOLCKA (Project Number 408027579).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e9234">This paper was edited by Pavlos Kollias and reviewed by three anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Altube et al.(2015)</label><mixed-citation>Altube, P., Bech, J., Argemí, O., and Rigo, T.: Quality Control of Antenna  Alignment and Receiver Calibration Using the Sun: Adaptation to Midrange  Weather Radar Observations at Low Elevation Angles, J. Atmos. Ocean. Tech., 32, 927–942, <ext-link xlink:href="https://doi.org/10.1175/JTECH-D-14-00116.1" ext-link-type="DOI">10.1175/JTECH-D-14-00116.1</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Altube et al.(2016)</label><mixed-citation>Altube, P., Bech, J., Argemí, O., Rigo, T., and Pineda, N.: Intercomparison  and Potential Synergies of Three Methods for Weather Radar Antenna Pointing  Assessment, J. Atmos. Ocean. Tech., 33, 331–343,  <ext-link xlink:href="https://doi.org/10.1175/JTECH-D-15-0075.1" ext-link-type="DOI">10.1175/JTECH-D-15-0075.1</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Arnott et al.(2003)</label><mixed-citation> Arnott, N., Richardson, Y., Wurman, J., and Lutz, J.: A solar alignment  technique for determining mobile radar pointing angles, in: Preprints, 31st  Int. Conf. on Radar Meteorology, Seattle, WA, Amer. Meteor. Soc., 492, p. 494, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Baars(1973)</label><mixed-citation>Baars, J.: The measurement of large antennas with cosmic radio sources, IEEE  T. Antenn. Propag., 21, 461–474, <ext-link xlink:href="https://doi.org/10.1109/TAP.1973.1140521" ext-link-type="DOI">10.1109/TAP.1973.1140521</ext-link>, 1973.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Currie et al.(2014)</label><mixed-citation> Currie, M. J., Berry, D. S., Jenness, T., Gibb, A. G., Bell, G. S., and Draper, P. W.: Starlink Software in 2013, in: Astronomical Data Analysis Software and Systems XXIII, edited by: Manset, N. and Forshay, P., Astronomical Society of the Pacific Conference Series, 485, p. 391, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Darlington et al.(2003)</label><mixed-citation>Darlington, T., Kitchen, M., Sugier, J., and de Rohan-Truba, J.: Automated  real-time monitoring of radar sensitivity and antenna pointing accuracy, in:  31st International Conference on Radar Meteorology, American Meteorological  Society, 7B.6, <uri>https://ams.confex.com/ams/32BC31R5C/techprogram/paper_63543.htm</uri> (last access: 24 April 2026), 2003.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Frech et al.(2019)</label><mixed-citation>Frech, M., Mammen, T., and Lange, B.: Pointing Accuracy of an Operational  Polarimetric Weather Radar, Remote Sensing, 11, 1115,  <ext-link xlink:href="https://doi.org/10.3390/rs11091115" ext-link-type="DOI">10.3390/rs11091115</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Gao and Han(2010)</label><mixed-citation>Gao, F. and Han, L.: Implementing the Nelder-Mead simplex algorithm  with adaptive parameters, Comput. Optim. Appl., 51, 259–277, <ext-link xlink:href="https://doi.org/10.1007/s10589-010-9329-3" ext-link-type="DOI">10.1007/s10589-010-9329-3</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Görsdorf et al.(2015)</label><mixed-citation>Görsdorf, U., Lehmann, V., Bauer-Pfundstein, M., Peters, G., Vavriv, D.,  Vinogradov, V., and Volkov, V.: A 35-GHz Polarimetric Doppler Radar for  Long-Term Observations of Cloud Parameters–Description of System and Data Processing, J. Atmos. Ocean. Tech., 32, 675–690, <ext-link xlink:href="https://doi.org/10.1175/jtech-d-14-00066.1" ext-link-type="DOI">10.1175/jtech-d-14-00066.1</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Haberreiter et al.(2008)</label><mixed-citation>Haberreiter, M., Schmutz, W., and Kosovichev, A. G.: Solving the Discrepancy  between the Seismic and Photospheric Solar Radius, Astrophys. J., 675, L53–L56, <ext-link xlink:href="https://doi.org/10.1086/529492" ext-link-type="DOI">10.1086/529492</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Holleman et al.(2010)</label><mixed-citation>Holleman, I., Huuskonen, A., Kurri, M., and Beekhuis, H.: Operational  Monitoring of Weather Radar Receiving Chain Using the Sun, J. Atmos. Ocean. Tech., 27, 159–166, <ext-link xlink:href="https://doi.org/10.1175/2009jtecha1213.1" ext-link-type="DOI">10.1175/2009jtecha1213.1</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Holleman et al.(2022)</label><mixed-citation>Holleman, I., Huuskonen, A., and Taylor, B.: Solar Monitoring of the NEXRAD  WSR-88D Network Using Operational Scan Data, J. Atmos. Ocean. Tech., 39, 125–139, <ext-link xlink:href="https://doi.org/10.1175/jtech-d-20-0204.1" ext-link-type="DOI">10.1175/jtech-d-20-0204.1</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Holton and Hakim(2013)</label><mixed-citation>Holton, J. R. and Hakim, G. J.: An Introduction to Dynamic Meteorology,  Elsevier, <ext-link xlink:href="https://doi.org/10.1016/c2009-0-63394-8" ext-link-type="DOI">10.1016/c2009-0-63394-8</ext-link>, ISBN 9780123848666, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Houze(2014)</label><mixed-citation> Houze Jr., R. A.: Cloud dynamics, Vol. 104 of International Geophysics  Series, Academic Press, Oxford, England, 2nd edn., Chap. 3.2.7, ISBN 9780080921464, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Huuskonen and Holleman(2007)</label><mixed-citation>Huuskonen, A. and Holleman, I.: Determining Weather Radar Antenna Pointing  Using Signals Detected from the Sun at Low Antenna Elevations, J. Atmos. Ocean. Tech., 24, 476–483, <ext-link xlink:href="https://doi.org/10.1175/JTECH1978.1" ext-link-type="DOI">10.1175/JTECH1978.1</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Kalesse and Kollias(2013)</label><mixed-citation>Kalesse, H. and Kollias, P.: Climatology of High Cloud Dynamics Using Profiling ARM Doppler Radar Observations, J. Climate, 26, 6340–6359,  <ext-link xlink:href="https://doi.org/10.1175/JCLI-D-12-00695.1" ext-link-type="DOI">10.1175/JCLI-D-12-00695.1</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Kneifel et al.(2016)</label><mixed-citation>Kneifel, S., Kollias, P., Battaglia, A., Leinonen, J., Maahn, M., Kalesse, H., and Tridon, F.: First observations of triple‐frequency radar Doppler  spectra in snowfall: Interpretation and applications, Geophys. Res. Lett., 43, 2225–2233, <ext-link xlink:href="https://doi.org/10.1002/2015gl067618" ext-link-type="DOI">10.1002/2015gl067618</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Kraus(1988)</label><mixed-citation> Kraus, J. D.: Antennas, McGraw-Hill series in electrical engineering,  McGraw-Hill, New York, NY, 2nd edn., Chap. 12.7, ISBN 0070354227, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Laj et al.(2024)</label><mixed-citation>Laj, P., Myhre, C. L., Riffault, V., Amiridis, V., Fuchs, H., Eleftheriadis,  K., Petäjä, T., Salameh, T., Kivekäs, N., Juurola, E., Saponaro, G.,  Philippin, S., Cornacchia, C., Arboledas, L. A., Baars, H., Claude, A.,  Mazière, M. D., Dils, B., Dufresne, M., Evangeliou, N., Favez, O., Fiebig,  M., Haeffelin, M., Herrmann, H., Höhler, K., Illmann, N., Kreuter, A.,  Ludewig, E., Marinou, E., Möhler, O., Mona, L., Murberg, L. E., Nicolae, D.,  Novelli, A., O’Connor, E., Ohneiser, K., Altieri, R. M. P.,  Picquet-Varrault, B., van Pinxteren, D., Pospichal, B., Putaud, J.-P.,  Reimann, S., Siomos, N., Stachlewska, I., Tillmann, R., Voudouri, K. A.,  Wandinger, U., Wiedensohler, A., Apituley, A., Comerón, A., Gysel-Beer, M.,  Mihalopoulos, N., Nikolova, N., Pietruczuk, A., Sauvage, S., Sciare, J.,  Skov, H., Svendby, T., Swietlicki, E., Tonev, D., Vaughan, G., Zdimal, V.,  Baltensperger, U., Doussin, J.-F., Kulmala, M., Pappalardo, G., Sundet,  S. S., and Vana, M.: Aerosol, Clouds and Trace Gases Research Infrastructure  (ACTRIS): The European Research Infrastructure Supporting Atmospheric  Science, B. Am. Meteorol. Soc., 105, E1098–E1136, <ext-link xlink:href="https://doi.org/10.1175/BAMS-D-23-0064.1" ext-link-type="DOI">10.1175/BAMS-D-23-0064.1</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Manceron(2024)</label><mixed-citation>Manceron, P.: IKPy, v3.4.2, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.13304536" ext-link-type="DOI">10.5281/zenodo.13304536</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Mano and Altshuler(1981)</label><mixed-citation> Mano, K. and Altshuler, E.: Tropospheric refractive angle and range error  corrections utilizing exoatmospheric sources, Radio Sci., 16, 191–195,  1981.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Manz et al.(2000)</label><mixed-citation>Manz, A., Smith, A., and Hardaker, P.: Comparison of different methods of end  to end calibration of the U.K. weather radar network, Phys. Chem. Earth Pt. B, 25, 1157–1162, <ext-link xlink:href="https://doi.org/10.1016/S1464-1909(00)00171-4" ext-link-type="DOI">10.1016/S1464-1909(00)00171-4</ext-link>, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Mather and Voyles(2013)</label><mixed-citation>Mather, J. H. and Voyles, J. W.: The Arm Climate Research Facility: A Review of Structure and Capabilities, B. Am. Meteorol. Soc., 94, 377–392, <ext-link xlink:href="https://doi.org/10.1175/BAMS-D-11-00218.1" ext-link-type="DOI">10.1175/BAMS-D-11-00218.1</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>METEK GmbH(2013)</label><mixed-citation>METEK GmbH: MIRA-35: Vertical Doppler Cloud RADAR – System Specifications, METEK GmbH, Fritz-Strassmann-Str. 4, 25337 Elmshorn, Germany,  <uri>https://metek.de/wp-content/uploads/2014/05/Metek-Vertical-Doppler-Cloud-RADAR-MIRA-35-Datasheet.pdf</uri> (last access: 24 April 2026),  2013.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Mills(1994)</label><mixed-citation>Mills, D. L.: Precision synchronization of computer network clocks, ACM SIGCOMM Comp. Com., 24, 28–43, <ext-link xlink:href="https://doi.org/10.1145/185595.185651" ext-link-type="DOI">10.1145/185595.185651</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Muth et al.(2012)</label><mixed-citation>Muth, X., Schneebeli, M., and Berne, A.: A sun-tracking method to improve the pointing accuracy of weather radar, Atmos. Meas. Tech., 5, 547–555, <ext-link xlink:href="https://doi.org/10.5194/amt-5-547-2012" ext-link-type="DOI">10.5194/amt-5-547-2012</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>NOAA Global Monitoring Laboratory(2025)</label><mixed-citation>NOAA Global Monitoring Laboratory: NOAA Solar Calculator: Find Sunrise,  Sunset, Solar Noon and Solar Position for Any Place on Earth,  <uri>https://gml.noaa.gov/grad/solcalc/</uri> (last access: 10 November 2025), 2025.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Ockenfuß and Köcher(2026a)</label><mixed-citation>Ockenfuß, P. and Köcher, G.: SunscanPy, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.18862011" ext-link-type="DOI">10.5281/zenodo.18862011</ext-link>, 2026a.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Ockenfuß and Köcher(2026b)</label><mixed-citation>Ockenfuß, P. and Köcher, G.: SunscanPy: v0.1.3, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.18862012" ext-link-type="DOI">10.5281/zenodo.18862012</ext-link>, 2026b.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Radiometer Physics GmbH (RPG)(2024)</label><mixed-citation>Radiometer Physics GmbH (RPG): RPG-FMCW-DP-KW 35/94 GHz Dual Frequency  Cloud Doppler Radar: Instrument Installation Guide, Radiometer Physics GmbH  (RPG), Meckenheim, Germany, issue 01, Revision 04, 42 pp.,  <uri>https://www.radiometer-physics.de/download/PDF/Cloud%20Radar/RPG-FMCW-dual-frequency-35-94-Installation_Manual.pdf</uri> (last access: 24 April 2026), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Reimann and Hagen(2016)</label><mixed-citation>Reimann, J. and Hagen, M.: Antenna pattern measurements of weather radars using the sun and a point source, J. Atmos. Ocean. Tech., 33, 891–898, <ext-link xlink:href="https://doi.org/10.1175/JTECH-D-15-0185.1" ext-link-type="DOI">10.1175/JTECH-D-15-0185.1</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Rhodes(2019)</label><mixed-citation>Rhodes, B.: Skyfield: High precision research-grade positions for planets  and Earth satellites generator, Astrophysics Source Code Library, record  ascl:1907.024, <uri>https://ui.adsabs.harvard.edu/abs/2019ascl.soft07024R</uri> (last access: 24 April 2026), 2019.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Rueger(2002a)</label><mixed-citation> Rueger, J. M.: Refractive Index Formulae for Electronic Distance Measurement  with Radio and Millimetre Waves, Tech. Rep. S-68, School of Surveying and  Spatial Information Systems, University of New South Wales, Sydney,  Australia, 2002a.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Rueger(2002b)</label><mixed-citation> Rueger, J. M.: Refractive Index Formulae for Radio Waves, in: FIG XXII  International Congress: JS28 Integration of Techniques and Corrections to  Achieve Accurate Engineering, FIG, Washington, D.C., USA, 2002b.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Selhorst et al.(2003)</label><mixed-citation>Selhorst, C. L., Silva, A. V. R., Costa, J. E. R., and Shibasaki, K.: Temporal and angular variation of the solar limb brightening at 17 GHz, Astron. Astrophys., 401, 1143–1150, <ext-link xlink:href="https://doi.org/10.1051/0004-6361:20030071" ext-link-type="DOI">10.1051/0004-6361:20030071</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Stafford(2021)</label><mixed-citation>Stafford, B.: Pysolar Python Library, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.1461065" ext-link-type="DOI">10.5281/zenodo.1461065</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>The SunPy Community et al.(2020)</label><mixed-citation>The SunPy Community, Barnes, W. T., Bobra, M. G., Christe, S. D., Freij, N.,  Hayes, L. A., Ireland, J., Mumford, S., Perez-Suarez, D., Ryan, D. F., Shih,  A. Y., Chanda, P., Glogowski, K., Hewett, R., Hughitt, V. K., Hill, A.,  Hiware, K., Inglis, A., Kirk, M. S. F., Konge, S., Mason, J. P., Maloney,  S. A., Murray, S. A., Panda, A., Park, J., Pereira, T. M. D., Reardon, K.,  Savage, S., Sipőcz, B. M., Stansby, D., Jain, Y., Taylor, G., Yadav, T.,  Rajul, and Dang, T. K.: The SunPy Project: Open Source Development and Status  of the Version 1.0 Core Package, Astrophys. J., 890, 68,  <ext-link xlink:href="https://doi.org/10.3847/1538-4357/ab4f7a" ext-link-type="DOI">10.3847/1538-4357/ab4f7a</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Tridon and Battaglia(2015)</label><mixed-citation>Tridon, F. and Battaglia, A.: Dual‐frequency radar Doppler spectral retrieval  of rain drop size distributions and entangled dynamics variables, J. Geophys. Res.-Atmos., 120, 5585–5601, <ext-link xlink:href="https://doi.org/10.1002/2014jd023023" ext-link-type="DOI">10.1002/2014jd023023</ext-link>, 2015.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>A novel framework for automatic scanning radar pointing calibration using the Sun</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Altube et al.(2015)</label><mixed-citation>
      
Altube, P., Bech, J., Argemí, O., and Rigo, T.: Quality Control of Antenna  Alignment and Receiver Calibration Using the Sun: Adaptation to Midrange  Weather Radar Observations at Low Elevation Angles, J. Atmos. Ocean. Tech., 32, 927–942, <a href="https://doi.org/10.1175/JTECH-D-14-00116.1" target="_blank">https://doi.org/10.1175/JTECH-D-14-00116.1</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Altube et al.(2016)</label><mixed-citation>
      
Altube, P., Bech, J., Argemí, O., Rigo, T., and Pineda, N.: Intercomparison  and Potential Synergies of Three Methods for Weather Radar Antenna Pointing  Assessment, J. Atmos. Ocean. Tech., 33, 331–343,  <a href="https://doi.org/10.1175/JTECH-D-15-0075.1" target="_blank">https://doi.org/10.1175/JTECH-D-15-0075.1</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Arnott et al.(2003)</label><mixed-citation>
      
Arnott, N., Richardson, Y., Wurman, J., and Lutz, J.: A solar alignment  technique for determining mobile radar pointing angles, in: Preprints, 31st  Int. Conf. on Radar Meteorology, Seattle, WA, Amer. Meteor. Soc., 492, p. 494, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Baars(1973)</label><mixed-citation>
      
Baars, J.: The measurement of large antennas with cosmic radio sources, IEEE  T. Antenn. Propag., 21, 461–474, <a href="https://doi.org/10.1109/TAP.1973.1140521" target="_blank">https://doi.org/10.1109/TAP.1973.1140521</a>, 1973.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Currie et al.(2014)</label><mixed-citation>
      
Currie, M. J., Berry, D. S., Jenness, T., Gibb, A. G., Bell, G. S., and Draper, P. W.: Starlink Software in 2013, in: Astronomical Data Analysis Software and Systems XXIII, edited by: Manset, N. and Forshay, P., Astronomical Society of the Pacific Conference Series, 485, p. 391, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Darlington et al.(2003)</label><mixed-citation>
      
Darlington, T., Kitchen, M., Sugier, J., and de Rohan-Truba, J.: Automated  real-time monitoring of radar sensitivity and antenna pointing accuracy, in:  31st International Conference on Radar Meteorology, American Meteorological  Society, 7B.6, <a href="https://ams.confex.com/ams/32BC31R5C/techprogram/paper_63543.htm" target="_blank"/> (last access: 24 April 2026), 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Frech et al.(2019)</label><mixed-citation>
      
Frech, M., Mammen, T., and Lange, B.: Pointing Accuracy of an Operational  Polarimetric Weather Radar, Remote Sensing, 11, 1115,  <a href="https://doi.org/10.3390/rs11091115" target="_blank">https://doi.org/10.3390/rs11091115</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Gao and Han(2010)</label><mixed-citation>
      
Gao, F. and Han, L.: Implementing the Nelder-Mead simplex algorithm  with adaptive parameters, Comput. Optim. Appl., 51, 259–277, <a href="https://doi.org/10.1007/s10589-010-9329-3" target="_blank">https://doi.org/10.1007/s10589-010-9329-3</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Görsdorf et al.(2015)</label><mixed-citation>
      
Görsdorf, U., Lehmann, V., Bauer-Pfundstein, M., Peters, G., Vavriv, D.,  Vinogradov, V., and Volkov, V.: A 35-GHz Polarimetric Doppler Radar for  Long-Term Observations of Cloud Parameters–Description of System and Data Processing, J. Atmos. Ocean. Tech., 32, 675–690, <a href="https://doi.org/10.1175/jtech-d-14-00066.1" target="_blank">https://doi.org/10.1175/jtech-d-14-00066.1</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Haberreiter et al.(2008)</label><mixed-citation>
      
Haberreiter, M., Schmutz, W., and Kosovichev, A. G.: Solving the Discrepancy  between the Seismic and Photospheric Solar Radius, Astrophys. J., 675, L53–L56, <a href="https://doi.org/10.1086/529492" target="_blank">https://doi.org/10.1086/529492</a>, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Holleman et al.(2010)</label><mixed-citation>
      
Holleman, I., Huuskonen, A., Kurri, M., and Beekhuis, H.: Operational  Monitoring of Weather Radar Receiving Chain Using the Sun, J. Atmos. Ocean. Tech., 27, 159–166, <a href="https://doi.org/10.1175/2009jtecha1213.1" target="_blank">https://doi.org/10.1175/2009jtecha1213.1</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Holleman et al.(2022)</label><mixed-citation>
      
Holleman, I., Huuskonen, A., and Taylor, B.: Solar Monitoring of the NEXRAD  WSR-88D Network Using Operational Scan Data, J. Atmos. Ocean. Tech., 39, 125–139, <a href="https://doi.org/10.1175/jtech-d-20-0204.1" target="_blank">https://doi.org/10.1175/jtech-d-20-0204.1</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Holton and Hakim(2013)</label><mixed-citation>
      
Holton, J. R. and Hakim, G. J.: An Introduction to Dynamic Meteorology,  Elsevier, <a href="https://doi.org/10.1016/c2009-0-63394-8" target="_blank">https://doi.org/10.1016/c2009-0-63394-8</a>, ISBN&thinsp;9780123848666, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Houze(2014)</label><mixed-citation>
      
Houze Jr., R. A.: Cloud dynamics, Vol. 104 of International Geophysics  Series, Academic Press, Oxford, England, 2nd edn., Chap. 3.2.7, ISBN&thinsp;9780080921464, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Huuskonen and Holleman(2007)</label><mixed-citation>
      
Huuskonen, A. and Holleman, I.: Determining Weather Radar Antenna Pointing  Using Signals Detected from the Sun at Low Antenna Elevations, J. Atmos. Ocean. Tech., 24, 476–483, <a href="https://doi.org/10.1175/JTECH1978.1" target="_blank">https://doi.org/10.1175/JTECH1978.1</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Kalesse and Kollias(2013)</label><mixed-citation>
      
Kalesse, H. and Kollias, P.: Climatology of High Cloud Dynamics Using Profiling ARM Doppler Radar Observations, J. Climate, 26, 6340–6359,  <a href="https://doi.org/10.1175/JCLI-D-12-00695.1" target="_blank">https://doi.org/10.1175/JCLI-D-12-00695.1</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Kneifel et al.(2016)</label><mixed-citation>
      
Kneifel, S., Kollias, P., Battaglia, A., Leinonen, J., Maahn, M., Kalesse, H., and Tridon, F.: First observations of triple‐frequency radar Doppler  spectra in snowfall: Interpretation and applications, Geophys. Res. Lett., 43, 2225–2233, <a href="https://doi.org/10.1002/2015gl067618" target="_blank">https://doi.org/10.1002/2015gl067618</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Kraus(1988)</label><mixed-citation>
      
Kraus, J. D.: Antennas, McGraw-Hill series in electrical engineering,  McGraw-Hill, New York, NY, 2nd edn., Chap. 12.7, ISBN 0070354227, 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Laj et al.(2024)</label><mixed-citation>
      
Laj, P., Myhre, C. L., Riffault, V., Amiridis, V., Fuchs, H., Eleftheriadis,  K., Petäjä, T., Salameh, T., Kivekäs, N., Juurola, E., Saponaro, G.,  Philippin, S., Cornacchia, C., Arboledas, L. A., Baars, H., Claude, A.,  Mazière, M. D., Dils, B., Dufresne, M., Evangeliou, N., Favez, O., Fiebig,  M., Haeffelin, M., Herrmann, H., Höhler, K., Illmann, N., Kreuter, A.,  Ludewig, E., Marinou, E., Möhler, O., Mona, L., Murberg, L. E., Nicolae, D.,  Novelli, A., O’Connor, E., Ohneiser, K., Altieri, R. M. P.,  Picquet-Varrault, B., van Pinxteren, D., Pospichal, B., Putaud, J.-P.,  Reimann, S., Siomos, N., Stachlewska, I., Tillmann, R., Voudouri, K. A.,  Wandinger, U., Wiedensohler, A., Apituley, A., Comerón, A., Gysel-Beer, M.,  Mihalopoulos, N., Nikolova, N., Pietruczuk, A., Sauvage, S., Sciare, J.,  Skov, H., Svendby, T., Swietlicki, E., Tonev, D., Vaughan, G., Zdimal, V.,  Baltensperger, U., Doussin, J.-F., Kulmala, M., Pappalardo, G., Sundet,  S. S., and Vana, M.: Aerosol, Clouds and Trace Gases Research Infrastructure  (ACTRIS): The European Research Infrastructure Supporting Atmospheric  Science, B. Am. Meteorol. Soc., 105, E1098–E1136, <a href="https://doi.org/10.1175/BAMS-D-23-0064.1" target="_blank">https://doi.org/10.1175/BAMS-D-23-0064.1</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Manceron(2024)</label><mixed-citation>
      
Manceron, P.: IKPy, v3.4.2, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.13304536" target="_blank">https://doi.org/10.5281/zenodo.13304536</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Mano and Altshuler(1981)</label><mixed-citation>
      
Mano, K. and Altshuler, E.: Tropospheric refractive angle and range error  corrections utilizing exoatmospheric sources, Radio Sci., 16, 191–195,  1981.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Manz et al.(2000)</label><mixed-citation>
      
Manz, A., Smith, A., and Hardaker, P.: Comparison of different methods of end  to end calibration of the U.K. weather radar network, Phys. Chem. Earth Pt. B, 25, 1157–1162, <a href="https://doi.org/10.1016/S1464-1909(00)00171-4" target="_blank">https://doi.org/10.1016/S1464-1909(00)00171-4</a>, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Mather and Voyles(2013)</label><mixed-citation>
      
Mather, J. H. and Voyles, J. W.: The Arm Climate Research Facility: A Review of Structure and Capabilities, B. Am. Meteorol. Soc., 94, 377–392, <a href="https://doi.org/10.1175/BAMS-D-11-00218.1" target="_blank">https://doi.org/10.1175/BAMS-D-11-00218.1</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>METEK GmbH(2013)</label><mixed-citation>
      
METEK GmbH: MIRA-35: Vertical Doppler Cloud RADAR – System Specifications, METEK GmbH, Fritz-Strassmann-Str. 4, 25337 Elmshorn, Germany,  <a href="https://metek.de/wp-content/uploads/2014/05/Metek-Vertical-Doppler-Cloud-RADAR-MIRA-35-Datasheet.pdf" target="_blank"/> (last access: 24 April 2026),  2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Mills(1994)</label><mixed-citation>
      
Mills, D. L.: Precision synchronization of computer network clocks, ACM SIGCOMM Comp. Com., 24, 28–43, <a href="https://doi.org/10.1145/185595.185651" target="_blank">https://doi.org/10.1145/185595.185651</a>, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Muth et al.(2012)</label><mixed-citation>
      
Muth, X., Schneebeli, M., and Berne, A.: A sun-tracking method to improve the pointing accuracy of weather radar, Atmos. Meas. Tech., 5, 547–555, <a href="https://doi.org/10.5194/amt-5-547-2012" target="_blank">https://doi.org/10.5194/amt-5-547-2012</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>NOAA Global Monitoring Laboratory(2025)</label><mixed-citation>
      
NOAA Global Monitoring Laboratory: NOAA Solar Calculator: Find Sunrise,  Sunset, Solar Noon and Solar Position for Any Place on Earth,  <a href="https://gml.noaa.gov/grad/solcalc/" target="_blank"/> (last access: 10 November 2025), 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Ockenfuß and Köcher(2026a)</label><mixed-citation>
      
Ockenfuß, P. and Köcher, G.: SunscanPy, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.18862011" target="_blank">https://doi.org/10.5281/zenodo.18862011</a>, 2026a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Ockenfuß and Köcher(2026b)</label><mixed-citation>
      
Ockenfuß, P. and Köcher, G.: SunscanPy: v0.1.3, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.18862012" target="_blank">https://doi.org/10.5281/zenodo.18862012</a>, 2026b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Radiometer Physics GmbH (RPG)(2024)</label><mixed-citation>
      
Radiometer Physics GmbH (RPG): RPG-FMCW-DP-KW 35/94&thinsp;GHz Dual Frequency  Cloud Doppler Radar: Instrument Installation Guide, Radiometer Physics GmbH  (RPG), Meckenheim, Germany, issue 01, Revision 04, 42&thinsp;pp.,  <a href="https://www.radiometer-physics.de/download/PDF/Cloud%20Radar/RPG-FMCW-dual-frequency-35-94-Installation_Manual.pdf" target="_blank"/> (last access: 24 April 2026), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Reimann and Hagen(2016)</label><mixed-citation>
      
Reimann, J. and Hagen, M.: Antenna pattern measurements of weather radars using the sun and a point source, J. Atmos. Ocean. Tech., 33, 891–898, <a href="https://doi.org/10.1175/JTECH-D-15-0185.1" target="_blank">https://doi.org/10.1175/JTECH-D-15-0185.1</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Rhodes(2019)</label><mixed-citation>
      
Rhodes, B.: Skyfield: High precision research-grade positions for planets  and Earth satellites generator, Astrophysics Source Code Library, record  ascl:1907.024, <a href="https://ui.adsabs.harvard.edu/abs/2019ascl.soft07024R" target="_blank"/> (last access: 24 April 2026), 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Rueger(2002a)</label><mixed-citation>
      
Rueger, J. M.: Refractive Index Formulae for Electronic Distance Measurement  with Radio and Millimetre Waves, Tech. Rep. S-68, School of Surveying and  Spatial Information Systems, University of New South Wales, Sydney,  Australia, 2002a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Rueger(2002b)</label><mixed-citation>
      
Rueger, J. M.: Refractive Index Formulae for Radio Waves, in: FIG XXII  International Congress: JS28 Integration of Techniques and Corrections to  Achieve Accurate Engineering, FIG, Washington, D.C., USA, 2002b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Selhorst et al.(2003)</label><mixed-citation>
      
Selhorst, C. L., Silva, A. V. R., Costa, J. E. R., and Shibasaki, K.: Temporal and angular variation of the solar limb brightening at 17 GHz, Astron. Astrophys., 401, 1143–1150, <a href="https://doi.org/10.1051/0004-6361:20030071" target="_blank">https://doi.org/10.1051/0004-6361:20030071</a>, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Stafford(2021)</label><mixed-citation>
      
Stafford, B.: Pysolar Python Library, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.1461065" target="_blank">https://doi.org/10.5281/zenodo.1461065</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>The SunPy Community et al.(2020)</label><mixed-citation>
      
The SunPy Community, Barnes, W. T., Bobra, M. G., Christe, S. D., Freij, N.,  Hayes, L. A., Ireland, J., Mumford, S., Perez-Suarez, D., Ryan, D. F., Shih,  A. Y., Chanda, P., Glogowski, K., Hewett, R., Hughitt, V. K., Hill, A.,  Hiware, K., Inglis, A., Kirk, M. S. F., Konge, S., Mason, J. P., Maloney,  S. A., Murray, S. A., Panda, A., Park, J., Pereira, T. M. D., Reardon, K.,  Savage, S., Sipőcz, B. M., Stansby, D., Jain, Y., Taylor, G., Yadav, T.,  Rajul, and Dang, T. K.: The SunPy Project: Open Source Development and Status  of the Version 1.0 Core Package, Astrophys. J., 890, 68,  <a href="https://doi.org/10.3847/1538-4357/ab4f7a" target="_blank">https://doi.org/10.3847/1538-4357/ab4f7a</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Tridon and Battaglia(2015)</label><mixed-citation>
      
Tridon, F. and Battaglia, A.: Dual‐frequency radar Doppler spectral retrieval  of rain drop size distributions and entangled dynamics variables, J. Geophys. Res.-Atmos., 120, 5585–5601, <a href="https://doi.org/10.1002/2014jd023023" target="_blank">https://doi.org/10.1002/2014jd023023</a>, 2015.

    </mixed-citation></ref-html>--></article>
