Bolo Calc User Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 31

DownloadBolo Calc User Manual
Open PDF In BrowserView PDF
BoloCalc User Manual
Version 1.0
Charles Hill, UC Berkeley
Last Updated: 2018-06-14
This document is still under construction and will be updated frequently

Contents

1

1

Quick Start

This section covers how to get BoloCalc up and running. For more detailed information about
how to define an experiment, run simulations, and read output files, see the following sections.

1.1

System Requirements

BoloCalc runs on a Linux and has the following dependencies:
1. Python v2.7.2
2. Numpy v1.8 or above

1.2

Code location

BoloCalc is stored on Charles Hill’s GitHub account chill90/ within the repository
chill90/BoloCalc. To clone a local copy of the calculator, make sure that you have Git installed
on your machine (I’ve been using Git version 2.13.5) and run
1

git clone https :// github . com / chill90 / BoloCalc . git

All executables are stored at in the top-most directory
1

~/ BoloCalc /

and all libraries are stored in the src/ directory
1

~/ BoloCalc / src /

This code is still under construction and therefore is frequently being updated. Therefore, it is
encouraged that the user git pull often, preferably before using the code at all.

1.3

Running mappingSpeed.py

The primary BoloCalc executable is called mappingSpeed.py, which calculates
• Optical power
• Noise-equivalent power (NEP) contributions from
◦ Photon noise
◦ Bolometer thermal carrier noise
◦ Readout noise
• Per-detector noise-equivalent temperature (NET)
• Array NET
• Mapping speed
• Map depth
given some instrument configuration. mappingSpeed.py takes as input an experiment configuration
directory, which is stored in BoloCalc/Experiments/ and has the following structure:
1
2
3
4
5
6
7
8

BoloCalc /
| - - Experiements /
|
| - - [ Experiment1 ]/
|
|
| - - [ ExperimentDesign1 ]/
|
|
| - - [ ExperimentDesign2 ]/
|
|
| - - ...
|
| - - [ Expierment2 ]/
|
| - - ...

2

where the square brackets indicate the directories that can be named by the user.
To calculate the sensitivity an experiment, pass its [ExperimentDesign] directory to
mappingSpeed.py. BoloCalc comes with an example experiment that can be used to get started:
1

BoloCalc$ python2 .7 mappingSpeed . py Experiments / ExampleExperiment / V0 /

By default, mappingSpeed.py will calculate one experiment realization, which should be shown by
the status bar that appears upon execution. For information about how to tune the simulation
parameters, see Section ??.
After it has finished running, mappingSpeed.py generates several tables that display the calculated quantities for the simulated instrument. These tables are stored in three files named
sensitivity.txt, with each file located at a different level of the experiment directory structure
and containing different information:
• Experiments/ExampleExperiment/V0/sensitivity.txt: contains the sensitivity, combined
by observation frequency, of all telescopes in this experiment.
• Experiments/ExampleExperiment/V0/Tel/sensitivity.txt: contains the sensitivity, combined by observation frequency, of all cameras in this telescope.
• Experiement/ExampleExperiment/V0/Tel/Cam/sensitivity.txt: contains the sensitivity
for channel in this camera.
For more information about the contents of the sensitivity.txt files, see Section ??.

1.4

Running mappingSpeed vary.py

The other BoloCalc executable is mappingSpeed vary.py, which calculates mapping speed for a
set of instrument configurations determined by a set of specified parameters varied with linear
spacing over a specified range with and with a specified step size. To run mappingSpeed vary.py,
pass it the instrument configuration at the command line
1

BoloCalc$ python2 .7 mappingSpeed_vary . py Experiments / ExampleExp / V0 /

There are optional command line arguments that can be passed to the executable, which are defined
below
• -vt: Vary the input parameters together instead of computing all possible combinations of
parameters. The parameter array lengths, set by minimum, maximum, and step values, must
be the same
• -fh [File Handle]: Choose a custom file handle for saving the parameter variations.
The input parameter variations are stored stored in BoloCalc/config/paramsToVary.txt. An
example of the paramsToVary.txt is shown in Figure ??

Figure 1: Example of paramsToVary.txt
For information on how to define parameters to be varied by mappingSpeed vary.py, see Section
??.
By default upon download, mappingSpeed vary.py will calculate one experiment realization
for each and every parameter combination (see Section ?? for details on simulation inputs). The
status bar will show progression towards calculating all combinations of parameters defined over
3

the ranges. mappingSpeed vary.py saves three quantities1 to files within the directory
BoloCalc/Experiments/ExampleExp/V0/paramsToVary/. The file handle can be specified using the command line argument -fh [File Handle], or it if is not specified, it will default to
[Tel] [Cam] [Channel] [Param]. Below is the expected default file names that the data from the
parameter-varied calculation will be saved to
• Optical power: mappingSpeedVary Popt [Tel] [Cam] [Channel] [Param].txt
• Photon NEP: mappingSpeedVary NEPph [Tel] [Cam] [Channel] [Param].txt
• Array NET: mappingSpeedVary NETarr [Tel] [Cam] [Channel] [Param].txt
where [Tel] [Cam] [Channel] [Param] is a file handle that contains the specifier for every parameter varied in the calculation. For example, if we looped over the following two parameters
• Telescope “Tel,” camera “Cam,” channel “1,” optic “Mirror,” Parameter “Spillover”
• Telescope “Tel,” camera “Cam,” channel “1,” Parameter “Pixel Size”
the Popt output file would have the filename
1

m a p p i n g S p e e d V a r y _ P o p t _ T e l _ C a m _ 1 _ M i r r o r _ S p i l l o v e r _ T e l _ C a m _ 1 _ P i x e l S i z e . txt

For information about the contents of the mappingSpeed vary.py output file, see Section ??.
For more information about the output parameters, see Section ??.

1.5

Contact and Citation

Please send any comments, requests, questions, or bugs to Charles Hill at chill@lbl.gov. If
you use this code for published results, please cite the SPIE proceeding from 2018 “BoloCalc:
a sensitivity calculator for the design of Simons Observatory,” which can be found at https:
//arxiv.org/abs/1806.04316.

2

Sensitivity Calculation

The primary function of BoloCalc is to import low-level instrument parameters and use them to
estimate the instrument’s noise-equivalent CMB temperature (NET). This calculation is outlined
by the following steps:
1. Collect input parameters and construct an instrument model
2. Calculate per-detector noise-equivalent power (NEP) due to contributions from
• Photon shot and wave noise
• Bolometer thermal carrier noise
• Readout noise
3. Convert NEP to NET
4. Calculate the array-averaged NET, where the noise contributions from each detector are
inverse-variance weighted to estimate the instantaneous sensitivity of the full camera
5. Calculate mapping speed (MS), a quantification of instrument noise in the power spectrum
domain
We detail the assumptions and inputs for the calculation in the following subsections.
1

More quantities can be added to this list upon request, or as needed.

4

2.1

Optical power

BoloCalc assumes an array of single-moded bolometers2 within an instrument that is stationary
in time. The propagation of optical power from the sky to the focal plane is represented by a onedimensional chain of blackbody absorbers/emitters in thermal equilibrium. The power deposited
on the detectors is then an analytic integral over the summation of each optical element’s Planck
spectra modified by its frequency-dependent efficiency and emissivity. Explicitly, the optical power
on a detector is given as
#
Z ∞ "NX
elem
pi (ν) B(ν) dν ,
(1)
Popt =
0

i=1

where ν is frequency, pi (ν) is the power spectral density of optical element i referred to the detector
input, the summation contains all Nelem optical elements in the sky/telescope/camera and runs from
the CMB to the focal plane, and B(ν) is the detector bandpass.
The power spectral density pi (ν) for optical element i is determined by its blackbody temperature Ti , the transmission efficiency of all optics between it and the focal plane [ηi+1 (ν), ..., ηNelem (ν)],
its emissivity i (ν), its spillover coefficient βi , the effective temperature by which its spilled power
is absorbed Tβ;i , its scattering coefficient δi , and the effective temperature by which its scattered
power is absorbed Tδ;i
pi (Ti , [ηi+1 (ν), ..., ηNelem (ν)] , i (ν), βi , Tβ;i , δi , Tδ;i , ν) =
NY
elem

ηj (ν) [i (ν) S(Ti , ν) + βi S(Tβ;i , ν) + δi S(Tδ;i , ν)] . (2)

j=i+1

The power spectral density function S(T, ν) of the emitted and scattered power from each element
is given by the Planck spectral density3 for a diffraction-limited, single-moded polarimeter
hν

S(T, ν) =
exp

2.2

h

hν
kB T

i

.

(3)

−1

Photon noise

Photon noise in bolometric detection is the result of fluctuations in the arrival times of photons at
the absorbing element
v
#
u Z " Nelem
elem
 NX
2
∞
u
X
NEPph = t2
hν
pi (ν) +
pi (ν)
B(ν) dν .
(4)
0

i=1

i=1

There are two contributions to NEPph . The first term represents shot noise NEPshot ,pwhich
dominates when the photon occupation number  1 (e.g. optical wavelengths) and is ∝ Popt .
The second term represents wave noise NEPwave , which dominates when the photon occupation
number is  1 (e.g. radio wavelengths) and is ∝ Popt . For ground-based experiments, the photon
occupation number at ∼ 100 GHz is ∼ 1, and therefore a careful handling of both terms is necessary
for an accurate NET estimate.
2
3

If there is a demand, BoloCalc can be expanded to include other detector architectures, such as KIDs.
BoloCalc can be expanded to incorporate non-thermal spectral densities if there is a demand for them.

5

2.3

Bolometer thermal carrier noise

Thermal carrier noise in bolometers arises due to fluctuations in heat flow between the absorbing
element and the bath to which it is weakly connected
q
2 G ,
(5)
NEPg = 4 kB Flink Toper
where Toper is the operating temperature of the bolometer, G is the thermal conductance from the
absorbing element to the bath, and Flink is a numerical factor that depends on the link’s thermal
conduction index n. Flink is can be theoretically calculated via the equation
n + 1 1 − (Tbath /Toper )2n+3
,
(6)
2n + 3 1 − (Tbath /Toper )n+1
where Tbath is the bath temperature. However, NEPg can vary depending on the specifics of the
bolometer geometry, composition, and fabrication. For example, transition-edge sensors (TES’s)
have known pathological noise sources, such as flux flow noise and non-equilibrium Johnson noise,
that increase the measured NEPg beyond that of Mather’s theoretical prediction. Therefore,
BoloCalc provides an option for Flink to be set independent of Tbath and n, allowing NEPg to
be tuned phenomenologically.
Thermal conductance can be parameterized in terms of n, Tbath , and the bolometer saturation
power Psat —or the power conducted from the bolometer to the bath—as
Flink =

G = Psat (n + 1)
Therefore, NEPg ∝
sensitivity.

2.4

√

n
Toper
n+1
n+1
− Tbath
Toper

.

(7)

Psat , making the tuning of saturation power important to optimizing detector

Readout noise

Modern CMB detectors are low-impedance, voltage-biased bolometers read out using superconducting quantum interference device (SQUID) transimpedance amplifiers. Therefore, amplifier-induced
readout noise can be modeled as a noise-equivalent current (NEI), referred to the power at the
detector by the inverse of the detector responsivity. For a voltage-biased bolometer operating with
negative feedback and high loop gain L  1, responsivity is ≈ 1/Vbias , and readout NEP is given
by
p
NEPread = Pelec Rbolo × NEI ,
(8)
where the bias power Pelec = Psat − Popt and Rbolo is the bolometer operating resistance.

2.5

Noise-equivalent CMB temperature

A CMB bolometer is built to measure fluctuations in incident power due to fluctuations in CMB
temperature. Therefore, it is useful to convert bolometer NEP into a noise-equivalent CMB temperature (NET). The total noise in the bolometer output is the quadrature sum of photon noise,
thermal carrier noise, and readout noise, and the conversion to NET is given by
q
NEP2ph + NEP2g + NEP2read
√
NETdet = M
,
(9)
2 (dP/dTCMB )

6

√
where the M is a “margin” applied to the √
expected per-detector NET, and the 2 arises due to a
√
unit conversion from output bandwidth 1/ Hz to integration time s. The conversion factor from
optical power to CMB temperature is defined as

dP/dTCMB =
#

2
Z ∞ " NY
elem
1
hν
ξ
ηi (ν)
exp [hν/kB TCMB ] B(ν)dν , (10)
kB TCMB (exp [hν/kB TCMB ] − 1)
0
i=1

and has units of W/KCMB . ξ is an optical coupling factor that quantifies SNR degradation associated with image degradation at the focal plane.
When reconstructing the sky during analysis, data from each detector are co-added in the map
domain to improve signal-to-noise. To quantify this SNR increase in the time domain, we define
“array NET” as the inverse-variance-weighted average of the NETs of all yielded detectors within
the camera
NETdet
NETarr = √
Γ,
(11)
Y Ndet
where Ndet is the number of deployed bolometers, Y is the yield, and Γ is a factor ≥ 1 that quantifies
the degree to which white noise is correlated between detector pixels on the focal plane.

2.6

Map Depth

√
Finally, array NET—white noise in the time domain—is converted from units of K s to units of
K-arcmin—white noise in the map domain—using the equation
s
4πfsky NET2arr  10800 arcmin 
σS =
,
(12)
ηobs tobs
π
where fsky the fraction of sky observed, tobs is the observation time of the experiment, and ηobs is
the observation efficiency.

2.7

Mapping speed

While NET is useful for estimating noise in the time and map domain, mapping speed (MS) is
useful for describing instrument performance in the power spectrum domain
MS =

1
NET2arr

(13)

and has units of K−2 s−1 .

2.8

Auxiliary Calculations

There are a few calculations that are carried out “under the hood” if specific sets of parameters are
defined in the input files (for more information about parameter definitions and dependencies, see
. Ultimately, as shown in Equation , the calculate needs a temperature, emissivity, and efficiency
in order to calculate the power from each element.

7

2.8.1

Synchrotron Emission

Synchrotron power in units of W/Hz is given by the following equation
psynch (ν) = As ν ns

(14)

where As is the amplitude, ν is the observation frequency, and ns is the spectral index. This
quantity is integrated over the observation band when calculating the in-band optical power and
signal attenuation referenced to the detector.
2.8.2

Dust Emission

Thermal dust power in units of W/Hz is given by the following equation
 nd
ν
S(Td , ν)
pdust (ν) = Ad
νd

(15)

where Ad is the amplitude, ν is the observation frequency, νd is the pivot frequency, nd is the
power law index, and Td is the effective blackbody temperature. This quantity is integrated over
the observation band when calculating the in-band optical power and signal attenuation referenced
to the detector.
2.8.3

Atmosphere Emission

BoloCalc utilizes atmospheric simulations of the atmosphere at the Atacama and South Pole sites4
generated by the AM atmospheric modeling code5 , which uses data from the MERRA-2 meteorological reanalysis6 as input. The output from AM produces results consistent with measured sky
loading in existing Atacama experiments. The range of input elevations handled by BoloCalc is
from 20–90 deg, and the range of input PWV values is from 0–8 mm.
2.8.4

Cold Stop Spillover Efficiency

Aperture efficiency can be specified explicitly, or, if it is left as “NA,” it can be derived from a
combination of other parameters. The equation for aperture efficiency assumes a Gaussian beam
which is parameterized by the ratio of the pixel diameter to the beam waist wf = D/w0
h π 2  D 2 i
ηstop (λ) = 1 − exp −
,
(16)
2 F λwf
where D is the pixel diameter, F is the F/# at the focal plane, and λ is the observation wavelength.
This quantity is integrated over the observation band when calculating the in-band optical power
and signal attenuation referenced to the detector.
2.8.5

Dielectric Absorption/Emission

Absorption in an refractive optical element can be specified explicitly, or, if it is left as “NA,” it
can be derived using the following equation
(λ) = 1 − exp [−2πtn tan δ/λ]
4

More site profiles exist and can be added if requested.
https://www.cfa.harvard.edu/~spaine/am/
6
https://gmao.gsfc.nasa.gov/reanalysis/MERRA-2/
5

8

(17)

where t is the thickness of the substrate, n is the refractive index, tan δ is the loss tangent, and λ is
the observation wavelength. This quantity is integrated over the observation band when calcuating
the in-band optical power and signal attenuation referenced to the detector.
2.8.6

Reflector Absorption/Emission

Absorption in a reflective optical element can be specified explicitly, or, if it is left as “NA,” it can
be derived using the following equation
r
πνµ0 1
(ν) = 4
(18)
σc Z0
p
where ν is the observation frequency, µ0 is the permeability of free space, Z0 = µ0 /0 is the
impedance of free space, and σc is the reflector conductivity at the reflector’s operating temperature.
This quantity is integrated over the observation band when calculating the in-band optical power
and signal attenuation referenced to the detector.
2.8.7

Ruze Scattering

Scattering of a reflective or refractive optical element can be specified explicitly, or, if it is left as
“NA,” it can be derived using Ruze’s equation
"
 #
4πσr 2
δ(λ) = exp
(19)
λ
where σr is the RMS surface roughness of the optical element and λ is the observation wavelength.
This quantity is integrated over the observation band when calculating the in-band optical power
and signal attenuation referenced to the detector.
2.8.8

Efficiency

Efficiency can be defined explicitly for any optic or detector by passing a band file (see Section ??
and ?? for more details about band files). However, if a band file is not passed, efficiency is derived
using the following equation
η(ν) = 1 − r(ν) − (ν) − β − δ

(20)

where r(ν) is the reflection, (ν) is the dielectric absorption, β is the spillover coefficient, and δ is
the scattering coefficient. This quantity is integrated over the observation band when calculating
the in-band optical power and signal attenuation referenced to the detector.
2.8.9

Pixel Elevation

In order to calculate the expected loading on each detector, we need to know the elevation of
its projected detector pixel on the sky. This is calculated as the sum of the telescope boresight
elevation, the camera boresight elevation w.r.t. telescope boresight, and the pixel elevation w.r.t.
camera boresight. Therefore, the pixel elevation is given by
θelv = θtel + θcam + θpix

9

(21)

2.8.10

Saturation Power Factor

BoloCalc has an option to set saturation power Psat (see Section ?? for more details) as a fraction
of the optical power (as defined in Equation ??) if the parameter “Saturation Power” is set to “NA”
Psat = Popt × fpsat

(22)

where fpsat is the saturation power factor.
2.8.11

Operating Temperature Fraction

BoloCalc has an option to set the operating temperature Toper (see Section ?? for more details) as
a fraction of the camera base temperature Tbase if the parameter “Tc” is set to “NA”
Toper = Tbath × foper

(23)

where foper is the operating temperature fraction.
2.8.12

Fractional Readout Noise

BoloCalc has an option to set readout noise not explicitly but instead as a fractional increase on
the total NEP. If either Rbolo or NEI from Equation ?? are “NA,” and if the parameter “Read Noise
Frac” is not “NA” in the channels.txt file (see Section ?? for more detail), then the following
equation is used to calculate readout noise:
q
p
2 + N EP 2
N EPread = (1 + ∆read )2 − 1 × N EPph
(24)
g
where ∆read is the fractional increase in the total NEP due to readout noise.
2.8.13

Number of Detectors

The number of total detectors in a given channel Ndet is determined by the number of detectors
per wafer Ndet/waf , the number of wafers per optics tube (or equivalently, per camera) Nwaf/OT ,
and the number of optics tubes per telescope NOT .
Ndet = Ndet/waf × Nwaf/OT × NOT

3

(25)

Defining an Experiment

BoloCalc has a modular object-oriented structure, which allows for arbitrary mixtures of sites,
telescopes, cameras, optics, focal planes, and detectors. A BoloCalc project has the parent-child
structure shown in Figure ?? and is built with four layers: experiments, telescopes, cameras, and
channels, which are defined in Tab. ??. Each experiment can have an arbitrary set of telescopes
(at different sites), each telescope an arbitrary set of cameras, and each camera an arbitrary set of
channels.

10

Layer

Definition

Experiment
Telescope

An assemblage of CMB telescopes.
A platform that carries and points one or more cameras. It observes at a specified site with a specified observation strategy and can include warm reflectors.
A cryostat that houses cryogenic optics, filters, and detectors. Multiple cameras can be mounted on the same telescope.
A frequency band observed by some set of detectors within a camera. A
multichroic camera will have multiple channels.

Camera
Channel

Table 1: Definitions of the layers used to build a BoloCalc project.

BoloCalc Project

Layer 1

Experiment
• Foreground params
Layer 2
Telescope 1

…

• Atmosphere at site 1

Telescope N
• Atmosphere at site N

• Boresight Eleva7on PDF N

• Boresight Eleva7on PDF 1

Layer 3
Camera 1.1

• F/# 1.1
• Op7cal stack 1.1
• Focal Plane Temp 1.1
• Pixel Elev PDF 1.1

…

Camera 1.M1

Camera N.1

• F/# 1.M1
• Op7cal stack 1.M1
• Focal Plane Temp 1.M1
• Pixel Elev PDF 1.M1

• F/# N.1
• Op7cal stack N.1
• Focal Plane Temp N.1
• Pixel Elev PDF N.1

…

Camera N.MN

• F/# N.MN
• Op7cal stack N.MN
• Focal Plane Temp N.MN
• Pixel Elev PDF N.MN

Layer 4
Channel 1.1.1

• Detector Band 1.1.1
• Detector Params 1.1.1
• Op7cal Params 1.1.1

Channel N.1.1

• Detector Band N.1.1
• Detector Params N.1.1
• Op7cal Params N.1.1

Channel 1.M1.P1M1

Channel N.1.PN1

• Detector Band 1.M1.P1M1
• Detector Params 1.M1.P1M1
• Op7cal Params 1.M1.P1M1

• Detector Band N.1.PN1
• Detector Params N.1.PN1
• Op7cal Params N.1.PN1

Channel N.MN.1

• Detector Band N.MN.1
• Detector Params N.MN.1
• Op7cal Params N.MN.1

…

…

…

…
Channel 1.1.P11

• Detector Band 1.1.P11
• Detector Params 1.1.P11
• Op7cal Params 1.1.P11

Channel 1.M1.1

• Detector Band 1.M1.1
• Detector Params 1.M1.1
• Op7cal Params 1.M1.1

Channel N.MN.PNMN

• Detector Band N.MN.PNMN
• Detector Params N.MN.PNMN
• Op7cal Params N.MN.PNMN

Figure 2: Layout of a BoloCalc project.

3.1

Experiment Directory Layout

The experiment directory is meant to be easily generalizable to various kinds of experiments and
telescopes. For information about how experiments are stored within the BoloCalc/Experiments/
directory, see Section ??. Below is an overview of the file structure within an experiment directory.
Each layer of an experiment has several parameters that define the input experiment. In this
section, we go through them by input file.

11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

BoloCalc / Experiements /[ Experiment Name ]/[ Experiment Design ]
| - - config
|
| - - foregrounds . txt
| - - Telescope1 /
|
| - - config /
|
|
| - - telescope . txt
|
|
| - - elevation . txt
|
|
| - - [ Custom Atmospheric Profile ] ( optional )
|
| - - Camera1 /
|
|
| - - config /
|
|
| - - camera . txt
|
|
| - - channels . txt
|
|
| - - optics . txt
|
|
| - - elevation . txt
|
|
| - - Bands /
|
|
| - - [ Optic Band File 1] ( optional )
|
|
| - - [ Optic Band File 2] ( optional )
|
|
| - - ...
|
|
| - - [ Detector Band File 1] ( optional )
|
|
| - - [ Detector Band File 2] ( optional )
|
|
| - - ...
|
| - - Camera2 /
|
| - - ...
| - - Telescope2 /
| - - ...

As stated in Section ??, an experiment definition has four layers:
1. Experiment (Layer 1)
• Composed of (multiple) telescopes
• All telescopes in a given experiment see the same galactic foregrounds
2. Telescopes (Layer 2)
• Composed of (multiple) cameras
• All cameras in a given telescope see the same atmosphere
• All cameras in a given telescope have the same scan strategy
3. Cameras (Layer 3)
• Composed of (multiple) frequency channels
• All frequency channels in a given camera have the same camera parameters
• All frequency channels in a given camera see the same optical chain
4. Channels (Layer 4)
• Each channel has independent detector and optical element parameters
These layers allow telescopes to added to an experiment in an arbitrary location, each with
arbitrary cameras, each with arbitrary frequency channels.

3.2

Parameter Definitions

All parameters in BoloCalc are defined with a central value and an error bar. Therefore, all
parameter variation is assumed to have an underlying Gaussian distribution, and all parameters
are assumed to be uncorrelated.
Parameters defined foregrounds.txt, telescope.txt, camera.txt, and channels.txt have
the following format:
1

Mean +/ - Std Dev

The following formatting rules should be followed for the code to work robustly and the tables
to render neatly:
12

1. All central values and standard deviations should have five characters. For instance, 1.000
and 10.00 are valid, while 10.000 is not.
2. All central values and standard deviations should be separated by +/- , noting the spaces
on either side of the +/− sign.
Parameters defined in optics.txt are defined for multiple bands in multi-chroic cameras and
therefore follow a different format:
1

[ Mean for Band 1 , Mean for Band 2 , ...] +/ - [ Std Dev for Band 1 , Std Dev for
Band 2 , ...]

In a similar way as with the single values, the following formatting rules should be followed for
the code to work robustly and the tables to render neatly:
1. All central values and standard deviations should have five characters. For instance, 1.000
and 10.00 are valid, while 10.000 is not.
2. All arrays of central values and arrays of standard deviations should be separated by +/- ,
noting the spaces on either side of the +/− sign

3.3

Experiment Parameters (Layer 1)

The experiment is comprised of an arbitrary set of telescopes, which are assumed to see the same
the same celestial loading, including power from the CMB and galactic foregrounds.
3.3.1

foregrounds.txt

The below list overviews the parameters defined in
[Experiment Name]/[Experiment Version]/config/foregrounds.txt, the file that defines the
galaxy through which the telescope must observe the CMB. This galactic parameters will be the
same for all telescopes.
• Synchrotron Spec Index
◦ Definition: “ns ” in Equation ??
◦ Description: Spectral index of the synchrotron power law spectrum
◦ Allowed Values: Floating point value between (−∞, +∞]
◦ Default Value: 2 × 10−3 +/- 0 × 10−3
• Synchrotron Amplitude
◦ Definition: “As ” in Equation ??
◦ Description: Amplitude of the synchrotron power law spectrum
◦ Allowed Values: Floating point value between (0.0, +∞) W/Hz
◦ Default Value: 6 × 103 +/- 0 × 103 W/Hz
• Dust Temperature
◦ Definition: “Td ” in Equation ??
◦ Description: Dust modified blackbody temperature
◦ Allowed Values: Floating point value between (0.0, +∞) K
◦ Default Value: 19.70 +/- 0.00 K
• Dust Spec Index
◦ Definition: “nd ” in Equation ??
◦ Description: The spectral index of the dust modified blackbody spectrum
◦ Allowed Values: Floating point value between (−∞, +∞)
13

◦ Default Value: 1.50 +/- 0
• Dust Amplitude
◦ Definition: “Ad ” in Equation ??
◦ Description: Amplitude of the dust modified blackbody spectrum
◦ Allowed Values: Floating point value between (0.0, +∞)
◦ Default Value: 2 × 10−3 +/- 0 × 10−3
• Dust Scale Frequency
◦ Definition: “νd ” in Equation ??
◦ Description: Scale frequency for the dust modified blackbody spectrum
◦ Allowed Values: Floating point value between (0.0, +∞)
◦ Default Value: 353.0 +/- 0.0 GHz

3.4

Telescope Parameters (Layer 2)

The following sections overview the input parameters for each of the telescope input files.
3.4.1

telescope.txt

The below list overviews the parameters defined in telescope.txt. These parameters are used to
define the site, atmospheric profile, and patch coverage parameters for the telescope.
• Site
◦ Description: Site at which the telescope observes, which defines the atmospheric conditions.
◦ Allowed Values: Either “Atacama” or “Pole”
◦ Default Value: “Atacama”
• Elevation
◦ Definition: θtel defined in ??
◦ Description: Elevation at which the telescope observes.
◦ Allowed Values: [20.0, 90.0] deg above the horizon
◦ Default Value: 50.0 +/- 0.0 deg
◦ If “NA,” the elevation distribution defined in Telescope/config/elevation.txt, will
be assumed.
• PWV
◦ Description: Precipitable water vapor of the atmosphere through which the telescope
observes.
◦ Allowed Values: [0.0, 8.0] mm
◦ Default Value: 1.0 +/- 0.0 mm
◦ If “NA,” the PWV distribution defined in Telescope/config/pwv.txt, will be assumed.
• Observation Time
◦ Definition: tobs in Equation ??
◦ Description: How long this telescope will observe
◦ Allowed Values: Floating point value between (0.0, +∞) years
◦ Default Value: 3.0 +/- 0.0
• Sky Fraction
◦ Definition: fsky in Equation ??
◦ Description: What fraction of the sky this telescope will observe
◦ Allowed Values: Floating point value between (0.0, 1.0]
◦ Default Value: 0.7 +/- 0.0
14

• Observation Efficiency
◦ Definition: ηobs in Equation ??
◦ Description: What fraction of the observation time will the telescope be actually observing
◦ Allowed Values: Floating point value between (0.0, 1.0]
◦ Default Value: 0.8 +/- 0.0
• NET Margin
◦ Definition: M in Equation ??
◦ Description: Agnostic factor which multiplies the detector NETs for this telescope
◦ Allowed Values: Floating point value between (0.0, +∞)
◦ Default Value: 1.0 +/- 0.0
3.4.2

elevation.txt

elevation.txt is an optional file that defines the elevation probability distribution function (PDF),
which is determined by the scan strategy of the telescope. The first column is the elevation above
the horizon in degrees, and the second column is the fraction of time spent at that elevation. This
file is only used if the parameter “Elevation” in Telescope/config/telescope.txt is defined to
be “NA” (see Section ?? for more information about telescope.txt). The probabilities should
add up to one, and if they do not, the fraction will be determined by the provided probability
divided by the sum of the provided probabilities.
Below is a made-up example for elevation.txt. Notice that each row is separated by a
commented line of hyphens, while each column is separated by a vertical bar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#***** Elevation Distribution ******
#
Elevation
| Probability
#--------------------------[ deg ]
| NA
#--------------------------30.0
| 0.100
#--------------------------40.0
| 0.100
#--------------------------50.0
| 0.300
#--------------------------60.0
| 0.400
#--------------------------70.0
| 0.100
#---------------------------

3.4.3

pwv.txt

pwv.txt is an optional file that defines the precipitable water vapor (PWV) probability distribution
function (PDF), which is determined by the weather conditions at the observation site. The first
column is the PWV in mm, and the second column is the fraction of time spent at that PWV value.
This file is only used if the parameter “PWV” in Telescope/config/telescope.txt is defined to
be “NA” (see Section ?? for more information about telescope.txt). The probabilities should
add up to one, and if they do not, the fraction will be determined by the provided probability
divided by the sum of the provided probabilities.
Below is a made-up example for pwv.txt. Notice that each row is separated by a commented
line of hyphens, while each column is separated by a vertical bar.
15

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

#***** Site PWV Distribution ******
#
PWV
| Probability
#--------------------------[ mm ]
| NA
#--------------------------0.200
| 0.100
#--------------------------0.400
| 0.100
#--------------------------0.600
| 0.200
#--------------------------0.800
| 0.200
#--------------------------1.000
| 0.100
#--------------------------1.200
| 0.100
#--------------------------1.400
| 0.100
#--------------------------1.600
| 0.100
#---------------------------

3.4.4

atm.txt

There is an option to override the code’s handling of the atmosphere by providing a custom
atmospheric profile. The atmosphere file must be in [Telescope Name]/config/, and the filename must have the form atm [Elevation]deg [PWV]um.txt. For example, a valid filename is
atm 60deg 1000um.txt.
The atmosphere file should have four columns, delimited by white space:
1.
2.
3.
4.
1

Column
Column
Column
Column

1:
2:
3:
4:

Frequency [GHz]
Optical Depth
Planck Temperature [K]
Transmission

| Frequency [ GHz ] | Optical Depth | Planck Temp [ K ] | Transmission |

Note that the temperature is in Planck units, not Rayleigh-Jeans. The passed frequency range
in the atmosphere file needs to be large enough to cover the frequency bands observed by the
telescope—which are defined in the “channels.txt” and “Bands/” files at the camera directory level
(see Section ?? and Section for more details)—with at least a 15% buffer on the bandwidths of the
highest and lowest bands. For instance, if your detector bands range from 240 to 300 GHz, your
atmosphere file should have values that go from at least 205 to 345 GHz.
Below is an example of an atmospheric profile generated using the AM simulation code and a
configuration file designed using the 10-year MERRA dataset for the Chajnantor Observatory.
1
2
3
4
5
6
7
8
9

1.0000000 e +01
1.0020000 e +01
1.0040000 e +01
1.0060000 e +01
1.0080000 e +01
1.0100000 e +01
1.0120000 e +01
1.0140000 e +01
1.0160000 e +01

3.664259 e -03
3.667538 e -03
3.671011 e -03
3.674741 e -03
3.678826 e -03
3.683414 e -03
3.688744 e -03
3.695220 e -03
3.703583 e -03

3.589557 e +00
3.590339 e +00
3.591163 e +00
3.592043 e +00
3.593001 e +00
3.594069 e +00
3.595301 e +00
3.596788 e +00
3.598698 e +00

9.963424 e -01
9.963392 e -01
9.963357 e -01
9.963320 e -01
9.963279 e -01
9.963234 e -01
9.963181 e -01
9.963116 e -01
9.963033 e -01

16

10
11
12

1.0180000 e +01 3.715317 e -03 3.601374 e +00 9.962916 e -01
1.0200000 e +01 3.733976 e -03 3.605660 e +00 9.962730 e -01
...

3.5

Camera Parameters (Layers 3 and 4)

In the following sections, we will overview the input parameters for each of the camera input files.
3.5.1

camera.txt

camera.txt defines parameters that are the same for all frequency bands observed with this camera.
The file must be located within [Telescope Name]/[Camera Name]/config/.
• Boresight Elevation
◦ Definition: θcam in Equation ??.
◦ Description: The elevation of the camera boresight with respect to the telescope boresight.
◦ Allowed Values: Floating point value between (-40.0, 40.0] deg
◦ Default Value: 0.0 +/- 0.0 deg
• Optical Coupling
◦ Definition: ξ in Equation ??.
◦ Description: A parameter that quantifies the SNR degradation associated with how well
the far-field image couples to the detector pixels on the focal plane.
◦ Allowed Values: Floating point value between (0.0, 1.0]
◦ Default Value: 1.0 +/- 0.0
• F-number
◦ Definition: F in Equation ??.
◦ Description: The focal ratio at the focal plane
◦ Allowed Values: Floating point value between (0.0, +∞)
◦ Default Value: 2.5 +/- 0.0
• Bath Temp
◦ Definition: Tbath in Equation ??.
◦ Description: The temperature of the focal plane
◦ Allowed Values: Floating point value between (0.0, +∞) K
◦ Default Value: 0.100 +/- 0.000 K
3.5.2

elevation.txt

elevation.txt is an optional file that defines the elevation distribution with respect to the camera
boresight of pixels on the focal plane. This file sets the value for θelv defined in equation ??.
This pixel elevation distribution file has the exact same structure as the file
Telescope/config/elevation.txt, which instead defines the scan strategy and is described in
section ??. The first column is the elevation above the horizon in degrees, and the second column
is the fraction if time spent at that elevation.
This file is only used if the parameter “Elevation” in Telescope/config/elevation.txt is
defined to be “NA” (see Section ?? for more information about telescope.txt).
The probabilities should add up to one, and if they don not, the fraction will be determined by
the provided probability divided by the sum of the provided probabilities.
Below is a made-up example of correct formatting for elevation.txt. Notice that each row is
separated by a commented line of hyphens, while each column is separated by a vertical bar.
17

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#***** Elevation Distribution ******
#
Elevation
| Probability
#--------------------------[ deg ]
| NA
#--------------------------30.0
| 0.100
#--------------------------40.0
| 0.100
#--------------------------50.0
| 0.300
#--------------------------60.0
| 0.400
#--------------------------70.0
| 0.100
#---------------------------

3.5.3

channels.txt

channels.txt defines the parameters of the frequency bands and detectors that are observing in
this camera. The file must be located within [Telescope Name]/[Camera Name]/config/.
• Band ID
◦ Description: The identification number for this band.
◦ Allowed Values: An integer value between [1, +∞)
◦ Default Value: 1
◦ Cannot have two bands with same Band ID on the same pixel
• Pixel ID
◦ Description: The identification number for the pixel this band observes from
◦ Allowed Values: An integer value between [1, +∞)
◦ Default Value: 1
◦ Cannot have two bands with same Band ID on the same pixel
• Band Center
◦ Definition: νc in Equation ??.
◦ Description: The central frequency for this band.
◦ Allowed Values: A floating point value between (0.0, +∞) GHz
◦ Default Value: [90, 150] +/- [0, 0] GHz
• Fractional BW
◦ Definition: fBW in Equation ??.
◦ Description: Fractional arithmetic bandwdith for this band
◦ Allowed Values: A floating point value between (0.0, 2.0]
◦ Default Value: [0.350, 0.275] +/- [0.000, 0.000]
• Pixel Size
◦ Definition: D in Equation ??.
◦ Description: Size of the pixel via which this band is observing
◦ Allowed Values: A postive floating point value between (0.0, +∞) mm
◦ Default Value: 6.8 +/- 0.0 mm
• Num Det per Wafer
◦ Definition: Ndet/waf in Equation ??
◦ Description: Number of detectors per wafer within this band
◦ Allowed Values: An integer value between [1, +∞)

18

•

•

•

•

•

•

•

•

•

◦ Default Value: 542
Num Waf per OT
◦ Definition: Nwaf/OT in Equation ??.
◦ Description: Number of wafers with this band per camera.
◦ Allowed Values: An integer value between [1, +∞)
◦ Default Value: 7
Num OT
◦ Definition: NOT in Equation ??.
◦ Description: Number of cameras in this telescope observing at this frequency.
◦ Allowed Values: An integer value between [1, +∞)
◦ Default Value: 1
Waist Factor
◦ Definition: wf in Equation ??.
◦ Description: The ratio of the Gaussian beam waist coming from the pixel aperture to
the pixel aperture diameter for this band.
◦ Allowed Values: A floating point value between [2.0, +∞)
◦ Default Value: 3.0 +/- 0.0
Det Eff
◦ Definition: ηdet in Equation ??.
◦ Description: Efficiency of the detector from the entry point of the pixel aperture to the
bolometer.
◦ Allowed Values: A floating point value between (0.0, 1.0]
◦ Default Value: 0.700 +/- 0.000
Psat
◦ Definition: Psat in Equation ??.
◦ Description: Saturation power of the bolometer.
◦ Allowed Values: A floating point value between (0.0, +∞] pW
◦ Default Value: “NA”
◦ If “NA,” use Equation ?? to calculate Psat
Psat Factor
◦ Definition: fpsat in Equation ??.
◦ Description: Safety factor used to caculate saturation power from optical power
◦ Allowed Values: A floating point value between (0.0, +∞)
◦ Default Value: 3.0 +/- 0.0
◦ If “Psat” is not “NA,” this parameter is ignored.
Carrier Index
◦ Definition: n in Equations ?? and ??.
◦ Description: Thermal carrier index for bolometer leg conductivity
◦ Allowed Values: A floating point value between (0.0, +∞)
◦ Default Value: 2.7 +/- 0.0
Tc
◦ Definition: Toper in Equations ??, ??, and ??.
◦ Description: Bolometer operating temperature
◦ Allowed Values: A floating point value between (0.0, +∞) K
◦ Default Value: 0.165 +/- 0.000 K
◦ If “NA,” use Equation ?? to calculate operating temperature.
Tc Fraction
◦ Definition: foper in Equation ??.
19

•

•

•

•

3.5.4

◦ Description: Factor used to calculate transition temperature from the bath temperature
◦ Allowed Values: A floating point value between (1.0, +∞)
◦ Default Value: “NA”
◦ If “Tc” is not “NA,” this parameter is ignored.
Yield
◦ Definition: Y in Equation ??.
◦ Description: Fraction of deployed detectors that are observing. This is also commonly
referred to as “end-to-end” yield.
◦ Allowed Values: A floating point value between (0.0, 1.0]
◦ Default Value: 0.7 +/- 0.0
SQUID NEI
◦ Definition: NEI in Equation ??.
◦ Description: SQUID noise equivalent current.
√
◦ Allowed Values: A floating point value between (0.0, +∞) pA/ Hz
◦ Default Value: “NA”
◦ If “NA,” use Equation ?? to calculate readout noise NEPread
Bolo Resistance
◦ Definition: Rbolo in Equation ??.
◦ Description: Bolometer operating resistance.
◦ Allowed Values: A floating point value between (0.0, +∞) Ω
◦ Default Value: “NA”
◦ If “NA,” use Equation ?? to calculate readout noise NEPread
Read Noise Frac
◦ Definition: ∆read in Equation ??.
◦ Description: Fraction of the total NEP that is due to readout noise.
◦ Allowed Values: A floating point value between [0.0, +∞)
◦ Default Value: 0.1 +/- 0.0
◦ If “SQUID NEI” and “Bolo Resistance” are not “NA,” this parameter is ignored.
optics.txt

optics.txt defines the parameters the frequency bands and detectors that are observing in this
camera. The file must be located within [Telescope Name]/[Camera Name]/config/.
• Element
◦ Description: Name of optical element
◦ Allowed Values: Any string
◦ Default Value: “Element”
◦ RESERVED NAMES: “Primary,” “Mirror,” “Aperture,” and “Stop” trigger additional calculations and therefore must be used purposefully
• Temperature
◦ Definition: Ti in Equation ??.
◦ Description: Temperature of the optical element
◦ Allowed Values: An floating point value between (0.0, +∞) K
◦ Default Value: 4 +/- 0 K
• Absorption
◦ Definition: i in Equation ??.
◦ Description: Fractional power attenuation/emission due to absorption within the optical
element
20

•

•

•

•

•

•

•

◦ Allowed Values: A floating point value between [0.0, 1.0)
◦ Default Value: 0.000 +/- 0.000
◦ If “NA” ...
∗ If “Mirror” or “Primary” is in “Element,” Equation ?? is used to calculate ohmic
losses in the reflective optical element.
∗ If “Mirror” or “Primary” is not in “Element,” Equation ?? is used to calculate
dielectric loss in the refractive optical element.
Reflection
◦ Definition: r in Equation ??.
◦ Description: Fractional power lost due to reflection at the optical element.
◦ Allowed Values: A floating point value between [0.0, 1.0)
◦ Default Value: 0.000 +/- 0.000
◦ If “NA,” Equation ?? is used to calculate reflection loss
Thickness
◦ Definition: t in Equation ??
◦ Description: Thickness of the optical element
◦ Allowed Values: A floating point value between (0.0, +∞) mm
◦ Default Value: “NA”
◦ If “Mirror” or “Primary” is in “Element,” this parameter is ignored
◦ If “Absorption” is not “NA,” this parameter is ignored
Index
◦ Definition: n in Equation ??.
◦ Description: Index of refraction of the optical element.
◦ Allowed Values: A floating point value between [1.0, +∞)
◦ Default Value: “NA”
◦ If “Mirror” or “Primary” is in “Element,” this parameter is ignored
◦ If “Absorption” is not “NA,” this parameter is ignored
Loss Tangent
◦ Definition: tan δ in Equation ??.
◦ Description: Loss tangent of the optical element.
◦ Allowed Values: A floating point value between [0.0, +∞)
◦ Default Value: “NA”
◦ If “Mirror” or “Primary” is in “Element,” this parameter is ignored
◦ If “Absorption” is not “NA,” this parameter is ignored
Conductivity
◦ Definition: σc in Equation ??.
◦ Description: Electrical conductivity of the optical element.
◦ Allowed Values: A floating point value between (0.0, +∞)
◦ Default Value: “NA”
◦ If “Mirror” or “Primary” is not in “Element,” this parameter is ignored
◦ If “Absorption” is not “NA,” this parameter is ignored
Scatter Frac
◦ Definition: δi in Equation ??.
◦ Description: Fractional power lost due to scattering.
◦ Allowed Values: A floating point value between [0.0, 1.0]
◦ Default Value: “NA”
◦ If “NA,” Equation ?? is use to calculate scattering loss.
Surface Rough
21

◦ Definition: σr in Equation ??.
◦ Description: Surface roughness of the optical element.
◦ Allowed Values: A floating point value between [0.0, +∞)
◦ Default Value: “NA”
◦ If “Scatter Frac” is not “NA,” this parameter is ignored.
◦ If “NA” and “Scatter Frac” is “NA,” scattering is assumed to be zero.
• Scatter Temp
◦ Definition: Tδ;i in Equation ??.
◦ Description: The effective temperature that the scattered power lands on.
◦ Allowed Values: A floating point value between [0.0, +∞)
◦ Default Value: “NA”
◦ If “NA,” scattered power is assumed to land at “Temperature,” the temperature of the
optical element itself
• Spillover
◦ Definition: βi in Equation ??.
◦ Description: Fractional power that spills over the optical element.
◦ Allowed Values: A floating point value between [0.0, 1.0)
◦ Default Value: “NA”
◦ If “NA,” spillover is assumed be zero
• Spillover Temp
◦ Definition: Tβ;i in Equation ??.
◦ Description: The effective temperature that the spilled power lands on.
◦ Allowed Values: A floating point value between [0.0, +∞)
◦ Default Value: “NA”
◦ If “NA,” spillover is assumed to land at “Temperature,” the temperature of the element
itself

3.6

Custom Bands

By default, BoloCalc assumes top hat bands for all detectors and optical elements, whose height is
determined soley by the mean and standard deviation of the end-to-end optical efficiency. However,
custom bands can be input for any optical element.
The general file format for all band files is the same:
1

| Frequency [ GHz ] | Mean Efficiency | Standard Deviation ( optional ) |

Each column is separated by a vertical bar, and the final column, which contains the error bars,
can be omitted. If only two columns are present, all stand deviations are assumed to be zero.
An example of a made-up detector bandpass text file, which is space-delimited, is shown below:
1
2
3
4
5
6
7
8
9
10

70.
75.
80.
85.
90.
100.
105.
110.
115.
120.

0.000
0.500
0.700
0.650
0.700
0.800
0.600
0.700
0.500
0.000

0.000
0.100
0.100
0.100
0.100
0.100
0.100
0.100
0.100
0.000

22

3.6.1

Detectors

Detector band files are stored in
1

[ Telescope Name ]/[ Camera Name ]/ config / Bands / Detectors /

The band is identified using its filename, which must have the format [Camera Name][Band
ID].txt for text files, or [Camera Name][Band ID].csv for comma-separated value files; both file
formats work equally well. For example, to load a text file for a camera named “MF” (in the
directory [Telescope Name]/MF/ and a Band ID “1,” the file name should be MF1.txt. Note that
for a multi-chroic camera, there should be multiple band files, one for each frequency channel.
3.6.2

Optics

Optics band files are stored in
1

[ Telescope Name ]/[ Camera Name ]/ config / Bands / Optics /

The band is identified using its filename, which must have the format [Optical Element
Name].txt for text files, or [Optical Element Name].csv for comma-separated value files; both
file formats work equally well. For example, to load a text file for an optical element named
“Lens1,” the file name should be Lens1.txt. Note that there is only one band file for optical
elements, even in multi-chroic cameras, as all detectors are all frequencies see the same bandpass.
Also note that you can apply the same band to multiple optical elements by duplicating matching
names in optics.txt.

3.7

Default Bands

If no custom bands are defined, BoloCalc assumes a top-hat band function, which is determined
by the detector bandpass.
3.7.1

Detectors

If no custom detector bandpass is provided, then a top-hat band is assumed with an overall efficiency
factor for the detector ηdet

ηdet if νlo ≤ ν ≤ νhi
B(ν) =
,
(26)
0
otherwise
where the high and low band edges are defined as




fBW
fBW
νlo = νc 1 +
; νhi = νc 1 −
2
2

(27)

where νc is the band central frequency and fBW is the fractional bandwidth.
3.7.2

Optics

If no custom bandpass is provided for an optical element i, then the bandpass is assumed to be a
top-hat with an overall efficiency factor defined in Equation ??

ηi if νlo ≤ ν ≤ νhi
B(ν) =
(28)
0 otherwise

23

If a custom detector bandpass is defined, then the frequency range covered νlo to νhi are the
highest and lowest frequencies defined in the custom band. Otherwise, νlo and νhi are set by
Equation ??.

4

Monte Carlo Simulation

BoloCalc has two executables mappingSpeed.py and mappingSpeed vary.py that, when run, use
independent sampling of all parameters using the Monte Carlo (MC) method to generate NET
distributions from variations in the underlying instrument parameters. For information on how to
run the executables, see Sections ?? and ??.
The MC simulation iterates using a nest of the following structure:
• Nexp Experiment realizations
◦ Nobs Observations per experiment realization
∗ Ndet Detector realizations per observation

4.1

Simulation Inputs

Simulation inputs are stored in the file BoloCalc/config/simulationInputs.txt. An example of
the file is shown in Figure ??. Below, we define the parameters for the simulation explicitly.

Figure 3: Example of simulation input file simulationInputs.txt
• Multiprocess
◦ Description: Whether or not to use multiprocessing to calculate statistics in parallel
◦ Allowed Values: “True” or “False”
◦ Default Value: “False”
• Cores
◦ Description: Number of cores to pool for parallel processing
◦ Allowed Values: Positive integer between [1, +∞)
◦ Default Value: 1
• Verbosity

24

•

•

•

•

•

•

4.2

◦ Description: Logging verbosity. 2 to print all logging output, 1 to print some output, 0
to print little output
◦ Allowed Values: Integer between [0, 2]
◦ Default Value: 1
Experiments
◦ Description: Number of experiment realizations to Monte Carlo; each time an experiment is MC-ed, its foreground, telescope, camera, and optical parameters are re-sampled.
◦ Allowed Values: Positive integer [1, +∞)
◦ Default Value: 1
◦ If 1, assume central value (i.e. ignore the spread) for all parameters set by the experiment
realization.
Observations
◦ Description: Number of independently observations, which draw the PWV and telescope
boresight elevation from the distributions defined in Telescope/config/pwv.txt and
Telescope/config/elevation.txt.
◦ Allowed Values: Positive integer [1, +∞)
◦ Default Value: 1
Detectors
◦ Description: Number of independently-sampled detector parameters defined in channels.txt
per observation.
◦ Allowed Values: Positive integer [1, +∞)
◦ Default Value: 1
◦ If 1, assume central value for all detector parameeters
Resolution
◦ Description: Frequency resolution assumed in the simulation.
◦ Allowed Values: A positive floating-point value between (0.0, 20.0] GHz
◦ Default Value: 0.1
◦ Reducing the resolution can have a dramatic impact on the speed of the MC simulations.
Foregrounds
◦ Description: Whether or not to include foregrounds in the estimate of the optical loading.
◦ Allowed Values: “True” or “False”
◦ Default Value: “False”
◦ Celestial loading doesn’t have a noticeable impact on ground-based telescopes but can
be important for satellite experiments.
Correlations
◦ Description: Whether to impose white noise correlations when calculating array NET
◦ Allowed Values: “True” or “False”
◦ Default Value: “True”
◦ This switch is useful for computing the impact of white-noise correlations on array NET.

Parameter Variation

mappingSpeed vary.py calculates the NET distribution using the MC method for a set of experiment configurations defined by the variation in user-defined parameters, which are defined
in BoloCalc/config/paramsToVary.txt. An example of the paramsToVary.txt file is shown in
Figure ??.
Parameters are defined by row and have the following descriptors, which are organized by
column:
25

• Column 1: Telescope in which the parameter is defined
◦ Leave blank if the parameter is defined in config/foregrounds.txt
• Column 2: Camera in which the parameter is defined
◦ Leave blank if the parameter is defined in Tel/config/telescope.txt
• Column 3: Channel for which the parameter is defined
◦ Leave blank if the parameter is defined in Cam/config/camera.txt of if Column 2 is
blank.
• Column 4: Optic for which the parameter is defined
◦ Leave blank unless the parameter is defined in Cam/config/optics.txt
• Column 5: Parameter name, as displayed in the input text files
• Column 6: Minimum parameter value to be calculated
• Column 7: Maximum parameter value to be calculated
• Column 8: Step size with which the parameter will be calculated over the range [Minimum,
Maximum]
The user can define as many simultaneous parameter variations as desired, and
mappingSpeed vary.py will calculate the NET distribution for all combinations of those parameters. The results are then stored in [ExperimentDesign]/config/paramVary/. For more information regarding the contents of the output files, see Section ??.

5

Output Files

Running mappingSpeed.py and/or mappingSpeed vary.py generates several output files, which
quantify the performance of the simulated experiment. In this section, we go through the layout of
the output files as well as their contents.

5.1

Sensitivity Tables

BoloCalc produces tables of outputs related to the white noise performance of the instrument.
All sensitivity tables are in files named sensitivity.txt, and there are multiple tables generated
at multiple directory tree levels, describing the performance of the camera, telescope, and entire
experiment.
5.1.1

[ExperimentDesign]/sensitivity.txt

When mappingSpeed.py is run, it generates the following parameters in the file
[ExperimentDesign]/sensitivity.txt:
• Chan
◦ Description: Frequency channel name [Camera Name][Band ID]
• Frequency
◦ Definition: νc in Equation ??
◦ Description: Central frequency of the frequency channel
• Frac Bandwidth
◦ Definition: fBW in Equation ??
◦ Description: Fractional bandwidth of frequency channel
• Num Det
◦ Definition: Ndet in Equation ??
◦ Description: Total number of detectors deployed in this frequency channel, combined
for all telescopes within the experiment
26

• Array NET
◦ Definition: NETarr in Equation ??
◦ Description: Array-averaged noise-equivalent CMB temperature of this frequency channel, combined for all telescopes within the experiment
• Mapping Speed
◦ Definition: MS in Equation ??
◦ Description: Mapping speed of this frequency channel, combined for all telescopes within
the experiment
• Map Depth
◦ Definition: σs in Equation ??
◦ Description: Map depth achieved by this frequency channel, combined for all telescopes
within the experiment
Note that if identical band names are shared between telescopes and/or cameras, the detectors are
combined in this table, with the combined Array NET of that combined band is found by taking
the inverse-variance average of the duplicated bands.
Figure ?? shows an example of sensitivity.txt at the Experiment directory level, using the
provided ExampleExperiment/V0/ configuration.

Figure 4: ExampleExperiment sensitivity at the experiment level.

5.1.2

[ExperimentDesign]/[Telescope]/sensitivity.txt

When mappingSpeed.py is run, it generates the following parameters in the file
[ExperimentDesign]/[Telescope]/sensitivity.txt:
• Chan
◦ Frequency channel name [Camera Name][Band ID]
• Frequency
◦ Definition: νc in Equation ??
◦ Description: Central frequency of the frequency channel
• Frac Bandwidth
◦ Definition: fBW in Equation ??
◦ Description: Fractional bandwidth of frequency channel
• Num Det
◦ Definition: Ndet in Equation ??
◦ Description: Total number of detectors deployed in this frequency channel, combined
for all cameras within the telescope
• Array NET
◦ Definition: NETarr in Equation ??

27

◦ Description: Aarray-averaged noise equivalent temperature of this frequency channel,
combined for all cameras within the telescope
• Mapping Speed
◦ Definition: MS in Equation ??
◦ Description: Mapping speed of this frequency channel, combined for all cameras within
the telescope
• Map Depth
◦ Definition: σs in Equation ??
◦ Description: Map depth achieved by this frequency channel, combined for all cameras
within the telescope
Note that if identical band names are shared between cameras, the detectors are combined in this
table, with the combined Array NET of that band is found by taking the inverse-variance average
of the duplicated bands.
Figure ?? shows an example of sensitivity.txt at the telescope directory level, using the
provided ExampleExperiment/V0/ configuration.

Figure 5: ExampleExperiment sensitivity at the telescope level. Note that for the simple, singletelescope design of ExampleExperiment, this file is identical to what is shown in Figure ??.

5.1.3

[ExperimentDesign]/[Telescope]/[Camera]/sensitivity.txt

When mappingSpeed.py is run, it generates the following parameters in the file
[ExperimentDesign]/[Telescope]/[Camera]/sensitivity.txt:
• Chan
◦ Frequency channel name [Camera Name][Band ID]
• Frequency
◦ Definition: νc in Equation ??
◦ Description: Central frequency of the frequency channel
• Frac Bandwidth
◦ Definition: fBW in Equation ??
◦ Description: Fractional bandwidth of frequency channel
• Num Det
◦ Definition: Ndet in Equation ??
◦ Description: Total number of detectors deployed in this frequency channel within this
camera
• Lyot Efficiency
◦ Definition: ηstop in Equation ??
◦ Description: Lyot stop spillover efficiency of the frequency channel
• Optical Power
28

•

•

•

•

•

•

•

•

◦ Definition: Popt in Equation ??
◦ Description: Total optical power on detectors within this frequency channel
Photon NEP
◦ Definition: NEPph in Equation ??
◦ Description: Noise-equivalent power due to photon noise for detectors within this frequency channel
Bolometer NEP
◦ Definition: NEPg in Equation ??
◦ Description: Noise-equivalent power due to bolometer thermal carrier noise for detectors
within this frequency channel
Readout NEP
◦ Definition: NEPread in Equation ??
◦ Description: Noise-equivalent power due to readout for detectors within this frequency
channel
Detector NEP q
◦ Definition: NEP2ph + NEP2g + NEP2read in Equation ??
◦ Description: Total noise-equivalent power due to the combination of photon, thermal
carrier, and readout noise for detectors within this frequency channel
Detector NET
◦ Definition: NETdet in Equation ??
◦ Description: Per-detector noise-equivalent temperature for detectors within this channel
Array NET
◦ Definition: NETarr in Equation ??
◦ Description: Array-averaged noise equivalent temperature of this frequency channel
within this camera
Mapping Speed
◦ Definition: MS in Equation ??
◦ Description: Mapping speed of this frequency channel within this camera
Map Depth
◦ Definition: σs in Equation ??
◦ Description: Map depth achieved by this frequency channel within this camera

for every frequency channel in the provided camera.
Figure ?? shows an example of sensitivity.txt at the camera directory level. Note that this
sensitivity file contains the most information about each individual channel. No combining of like
channels happens at this low level.

Figure 6: ExampleExperiment sensitivity at the camera level.

29

5.1.4

[ExperimentDesign]/paramVary/*.txt

mappingSpeed vary.py saves three quantities7 to files within the directory
BoloCalc/Experiments/[Experiment]/[ExperimentDesign]/paramVary/
• Optical power: mappingSpeedVary Popt [Tel] [Cam] [Channel] [Param].txt
• Photon NEP: mappingSpeedVary NEPph [Tel] [Cam] [Channel] [Param].txt
• Array NET: mappingSpeedVary NETarr [Tel] [Cam] [Channel] [Param].txt
where [Tel] [Cam] [Channel] [Param] is a string that contains the specifier for every parameter
varied in the calculation. For example, if we looped over the following two parameters
• Telescope “Tel,” camera “Cam,” channel “1,” optic “Mirror,” Parameter “Spillover”
• Telescope “Tel,” camera “Cam,” channel “1,” Parameter “Pixel Size”
the Popt output file would have the filename
1

m a p p i n g S p e e d V a r y _ P o p t _ T e l _ C a m _ 1 _ M i r r o r _ S p i l l o v e r _ T e l _ C a m _ 1 _ P i x e l S i z e . txt

An example of the Popt output file generated by running the provided example experiment, as
described in Section ??, is shown in Figure ??. A similar file will be generated for photon NEP
N EPph and array NET NETarr . As the example output shows,

5.2

Optical Power Table

BoloCalc also outputs tables of optical powers, including the the following information in columns:
• Element
◦ Name of optical element, as defined within optics.txt for this camera
• Power from Sky
◦ Power incident on this optical element from the sky side
• Power to Detect
◦ Power emitted from this optical element which is seen by the detector
• Cumulative Eff
◦ Cumulative Efficiency between this optical element and the detector
These values are useful for understanding how signal propagates to the detector through the telescope optical chain, as well as seeing what the major sources of parasitic loading are.
5.2.1

[ExperimentDesign]/[Telescope]/[Camera]/opticalPower.txt

Optical powers are listed for each channel in the camera, formatted as one table per frequency.
Figure ?? is an example optical power table for

7

More quantities can be added to this list upon request, or as needed.

30

Figure 7: ExampleExperiment optical tables for camera Cam in both of its bands.
opticalTable.txt table is labeled by “[camera name] + [band name].”

31

Each



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 31
Page Mode                       : UseOutlines
Author                          : 
Title                           : 
Subject                         : 
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.17
Create Date                     : 2018:06:29 23:11:19-07:00
Modify Date                     : 2018:06:29 23:11:19-07:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016) kpathsea version 6.2.2
EXIF Metadata provided by EXIF.tools

Navigation menu