Skip to content

Commit c269ef2

Browse files
authored
New sensor models and auto-switch for ITL or e2v (#493)
* Add the new sensor models made by Craig Lage, including the new 4 point sensor models. * Add tests for the new sensor models -- size and shape of a bright star. * The LSST_Image setup selects the 4-point E2V or ITL sensor config, unless overridden in config.
1 parent 820e555 commit c269ef2

14 files changed

Lines changed: 31899 additions & 1 deletion
Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
#
2+
# ------------------------------------------------------------------------------
3+
# Author: Craig Lage, UC Davis
4+
# Date: Nov 4, 2019
5+
#
6+
# Standalone cpp Poisson solver
7+
#
8+
#
9+
# Poisson Solver configuration file
10+
11+
VerboseLevel = 1 # 0 - minimal output, 1 - normal, 2 - more verbose, 3 - dump almost everything
12+
13+
# Poisson solver constants
14+
# These control the numerics of the Poisson solver
15+
# They should not need to be changed unless you test for convergence
16+
17+
w = 1.8 # Successive Over-Relaxation factor
18+
ncycle = 128 # Number of SOR cycles at finest grid
19+
iterations = 1 # Number of VCycles
20+
# ------------------------------------------------------------------------------
21+
# Overall setup - these control the size and scale of the simulated volume
22+
23+
ScaleFactor = 2
24+
# Power of 2 that sets the grid size
25+
# ScaleFactor = 1 means grid size is 0.625 micron, 160 grids in the z-direction
26+
# ScaleFactor = 2 cuts grid size by a factor of 2
27+
# ScaleFactor = 4 cuts grid size by a factor of 4, etc.
28+
SensorThickness = 100.0 # Sensor thickness in microns
29+
PixelSizeX = 10.0 # Pixel size in microns in x
30+
PixelSizeY = 10.0 # Pixel size in microns in y
31+
GridsPerPixelX = 16 # Number of grids per pixel in x at ScaleFactor = 1
32+
GridsPerPixelY = 16 # Number of grids per pixel in y at ScaleFactor = 1
33+
Nx = 160 # Number of grids in x at ScaleFactor = 1 (Must be a multiple of 32)
34+
Ny = 160 # Number of grids in y at ScaleFactor = 1 (Must be a multiple of 32)
35+
Nz = 160 # Number of grids in z at ScaleFactor = 1 (Must be a multiple of 32)
36+
Nzelec = 24 # Number of grids in electron and hole arrays
37+
NZExp = 10.0 # Non-linear Z-axis slope at z=0
38+
# A value of 1.0 makes the z-axis linear
39+
# A value of 10.0 gives a 10X magnification at z=0
40+
# A value of 10.0 is recommended.
41+
42+
XBCType = 1 # Set X direction boundary conditions: 0 - Free (Eperp = 0), 1 - Periodic
43+
YBCType = 1 # Set Y direction boundary conditions: 0 - Free (Eperp = 0), 1 - Periodic
44+
SimulationRegionLowerLeft = 5.0 5.0 # Allows adjustment of X, Y coordinates
45+
46+
# ------------------------------------------------------------------------------
47+
# Fixed charges and oxides in the silicon
48+
49+
GateOxide = 0.15 # Gate Oxide thickness in microns
50+
ChannelStopWidth = 2.0 # Width of ChannelStop region in microns
51+
FieldOxide = 0.15 # Field Oxide thickness in microns
52+
FieldOxideTaper = 0.0 # Field Oxide taper width in microns
53+
BackgroundDoping = -2.4E12 # Background doping in cm^-3
54+
55+
# Channel Doping: Use the syntax below for a square profile
56+
#ChannelProfile = 0 # 0 = Square profile, N = N Gaussian profiles
57+
#ChannelDoping = 1.0E12 # Doping in cm^-2
58+
#ChannelDepth = 1.0 # Depth in microns
59+
60+
ChannelProfile = 1 # 0 = Square profile, N = N Gaussian profiles
61+
ChannelDose_0 = 1.0E12 # Doping in cm^-2
62+
ChannelPeak_0 = 0.05 # Location of peak below silicon surface in microns
63+
ChannelSigma_0 = 0.32 # Sigma in microns
64+
65+
# Channel Stop doping: Use the syntax below for a square profile
66+
ChannelStopProfile = 0 # 0 = Square profile, N = N Gaussian profiles
67+
ChannelStopDoping = 0.0 # Doping in cm^-2
68+
ChannelStopDepth = 0.0 # Depth in microns
69+
70+
ChannelStopDotCenter = 5.0 # Center of channel stop "Dots" in microns
71+
ChannelStopDotHeight = 2.5 # Height of channel stop "Dots"
72+
ChannelStopDotProfile = 1 # 0 = Square profile, N = N Gaussian profiles
73+
ChannelStopDotDose_0 = -6.0E12 # Doping in cm^-2
74+
ChannelStopDotPeak_0 = 0.15 # Location of peak below silicon surface in microns
75+
ChannelStopDotSigma_0 = 0.36 # Sigma in microns
76+
ChannelStopDotSurfaceCharge = 0.0 # Surface charge density in cm^-2
77+
78+
# ------------------------------------------------------------------------------
79+
# Mobile charge calculation control parameters
80+
81+
ElectronMethod = 2 # Controls electron calculation
82+
# 0 - Leave electrons where they land from tracking
83+
# 1 - Set QFe (QFe is always used in Fixed Regions)
84+
# 2 - Electron conservation and constant QFe
85+
# If 1 is specified, you must provide a *_QFe.dat file, either by
86+
# Setting BuildQFeLookup = 1 or by copying a file into the data directory.
87+
#BuildQFeLookup = 0
88+
#NQFe = 81 # If building QFe lookup, you need to provide at
89+
# least NQFe pixels in the PixelRegion
90+
#QFemin = 19.0
91+
#QFemax = 27.0
92+
93+
qfh = -7.5 # Controls hole calculation.
94+
# Currently this applies to the whole volume,
95+
# unless over-ridden in Fixed Regions
96+
97+
# ------------------------------------------------------------------------------
98+
# Voltages - these should be self-explanatory
99+
100+
Vbb = -50.0 # Back bias
101+
Vparallel_lo = -6.0 # Parallel gate low voltage
102+
Vparallel_hi = 3.5 # Parallel gate high voltage
103+
NumPhases = 4 # Number of clock phases (typically either 3 or 4)
104+
CollectingPhases = 2 # Number of Parallel gates high in collecting region
105+
106+
# ------------------------------------------------------------------------------
107+
# Pixel Regions
108+
# These allow one to set up one or more regions of regularly spaced pixels.
109+
# Each pixel region will need its extents defined
110+
# Within each pixel region, one can fill multiple collecting wells with arbitrary amounts of charge
111+
112+
NumberofPixelRegions = 1 # 1
113+
PixelRegionLowerLeft_0 = 0.0 0.0 #
114+
PixelRegionUpperRight_0 = 110.0 110.0 #
115+
NumberofFilledWells_0 = 1 #
116+
CollectedCharge_0_0 = 100000 # Collected charge in e-
117+
FilledPixelCoords_0_0 = 55.0 55.0 # (x,y) coords of pixel center
118+
119+
# ------------------------------------------------------------------------------
120+
# Constant Voltage Regions - this allows a number of regions of fixed surface potential
121+
# Each Constant Voltage region will need its extents defined
122+
# Example syntax below
123+
124+
NumberofFixedRegions = 0
125+
#FixedRegionLowerLeft_0 = 0.0 367.0 #
126+
#FixedRegionUpperRight_0 = 110.0 430.0 #
127+
#FixedRegionVoltage_0 = -60.0 #
128+
#FixedRegionDoping_0 = 0 # Doping - 0-None; 1-Channel; 2-ChanStop
129+
#FixedRegionOxide_0 = 2 # Oxide - 0-None; 1-Channel; 2-ChanStop
130+
#FixedRegionQFe_0 = 100.0 #
131+
#FixedRegionQFh_0 = -58.0 #
132+
#FixedRegionBCType_0 = 0 # Boundary conditions - 0-Fixed voltage; 1-Free (Eperp = 0)
133+
134+
# ------------------------------------------------------------------------------
135+
# Pixel Boundary Tests - This allows tracing the pixel boundaries and electron paths
136+
137+
PixelBoundaryLowerLeft = 10.0 10.0
138+
PixelBoundaryUpperRight = 100.0 100.0
139+
PixelBoundaryNx = 9 # Number of pixels in postage stamp
140+
PixelBoundaryNy = 9 # Number of pixels in postage stamp
141+
142+
PixelBoundaryTestType = 1 # 0 - Run a grid of equally spaced electrons,
143+
# 1 - Run a random set of electrons with a Gaussian pattern
144+
# 2 - Run a random set of electrons inside PixelBoundary
145+
#PixelBoundaryStepSize = 0.2 0.2 # Needed if PixelBoundaryTestType = 0
146+
147+
# The following parameters are used if PixelBoundaryTestType = 2
148+
Sigmax = 10.0 # Sigma of incoming light profile
149+
Sigmay = 10.0 # Sigma of incoming light profile
150+
Xoffset = 0.0 # Center offset of incoming light profile
151+
Yoffset = 0.0 # Center offset of incoming light profile
152+
NumSteps = 1 # Number of steps, each one adding NumElec electrons
153+
154+
NumElec = 0 # Number of electrons to be traced between field recalculation
155+
156+
CalculateZ0 = 0 # 0 - don't calculate - Use ElectronZ0
157+
# 1 - calculate from filter and SED. In this case, must provide the next two parameters
158+
#FilterBand = r # Filter band from LSST used to calculate Z0
159+
#FilterFile = notebooks/gclef_pdf.dat # SED used to calculate Z0
160+
ElectronZ0Fill = 95.0 # Starting z value of electron for tracking. 100.0 is at the incident light surface.
161+
ElectronZ0Area = 95.0 # Starting z value of electron for Area/Vertex finding. 100.0 is at the incident light surface.
162+
163+
LogEField = 1 # 0 - don't calculate E-Field, 1 - Calculate and store E-Field
164+
LogPixelPaths = 0 # 0 - only the final (z~0) point is logged, 1 - Entire path is logged
165+
PixelAreas = 1 # -1 - Don't calculate areas, N - calculate areas every nth step
166+
NumVertices = 32 # Number of vertices per side for the pixel area calculation.
167+
# Since there are also 4 corners, there will be:
168+
# (4 * NumVertices + 4) vertices in each pixel
169+
170+
# ------------------------------------------------------------------------------
171+
# Electron tracking parameters
172+
173+
CCDTemperature = 173.0 # Temp in Degrees K. Used to calculate diffusion steps.
174+
175+
DiffMultiplier = 2.30 # Used to adjust the amount of diffusion.
176+
# A value of 2.30 gives the theoretical amount of diffusion
177+
# A value of 0.0 turns off diffusion completely
178+
EquilibrateSteps = 1 # Number of diffusion steps each electron takes after reaching the bottom,
179+
# and before beginning to log the charge.
180+
BottomSteps = 1 # Number of diffusion steps each electron takes while logging final charge location
181+
NumDiffSteps = 1 # A speed/accuracy trade-off. A value of 1 uses the theoretical diffusion
182+
# step. A higher value takes larger steps. I have done a few tests
183+
# but I recommend using a value of 1 unless you test larger values.
184+
SaturationModel = 0 # Saturation Model 1=On, 0=Off; Experimental!
185+
186+
187+
# ------------------------------------------------------------------------------
188+
# These control the location and naming of the output
189+
190+
outputfiledir = data/pixel-e2v-50
191+
outputfilebase = Pixel
192+
SaveData = 1 # 0 - Save only Pts data, N - Save all data every Nth step
193+
SaveElec = 1 # 0 - Save only Pts data, N - Save Elec data every Nth step
194+
SaveMultiGrids = 0
195+
196+
# ------------------------------------------------------------------------------
197+
# These control the continuation if you want to save a simuation before it is complete
198+
199+
Continuation = 0 # Use this to continue an existing simulation and read in where you left off
200+
# 0 - No continuation
201+
# 1 Continue at step LastContinuationStep
202+
LastContinuationStep = 0

0 commit comments

Comments
 (0)