simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries

Functions for calculating the Coulomb oscillation area boundaries in sensor scans.

@author: k.havemann

Module Contents

Functions

get_coulomb_oscillation_area_boundaries

Function for calculating the boundaries of the Coulomb oscillation area in a sensor scan.

extend_pinch_off_line_to_edge

Extend and clip the pinch-off line segment to the edge of the voltage ranges of the sensor scan.

calc_oscillation_area_boundaries_intersect_points

Function for calculating the 4 intersection point of the boundaries of the coulomb oscillation area.

calc_potential_offset

Function for calculating the potential offset of the barrier gates of a sensor, which is given by the double dot

calc_sensor_potential

Function for calculating the sensor potential.

calc_fully_conductive_potential

Function for calculating the sensor potential at the fully conductive point.

calc_track_boundaries_intersect_points

Calculates the intersection points of a one-dimensional, straight measurement track with the boundaries of the

Module Implementation Details

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.get_coulomb_oscillation_area_boundaries(metadata, range_sensor_g1=None, range_sensor_g2=None)

Function for calculating the boundaries of the Coulomb oscillation area in a sensor scan.

Calculates only the parts of the bounding box within the specified sensor gate 1 (g1) and gate 2 (g2) ranges (range_sensor_g1, range_sensor_g2). The g1 and g2 pinch-off values are used for the left and lower boundaries and the fully conductive values g1 and g2 are used for the right and upper boundaries. In the 2D case, the boundaries are lines; in the 1D case, they are points.

Parameters:
  • metadata (Dict) – Dictionary with sensor metadata.

  • range_sensor_g1 (Optional[numpy.ndarray]) – Range of sensor g1 within which the coulomb oscillation area is calculated. If None, sweep_range_sensor_g1 of the sensor metadata is used.

  • range_sensor_g2 (Optional[numpy.ndarray]) – Range of sensor g2 within which the coulomb oscillation area is calculated. If None, sweep_range_sensor_g2 of the sensor metadata is used.

Returns:

Returns an array with the line coordinates (2D)/point coordinates (1D) and list

containing strings with corresponding labels. Every row of the array represents one line as [x_start, y_start, x_stop, y_stop] in 2D case and a point as [x, y, x, y] in 1D case. In addition, a list of labels of the calculated boundaries is returned. If both the array and the list are empty, there are no boundaries of the oscillation area inside the given voltage ranges.

Return type:

np.ndarray, List[str]

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.extend_pinch_off_line_to_edge(start, end, rect_corners, is_gate2)

Extend and clip the pinch-off line segment to the edge of the voltage ranges of the sensor scan.

The pinch-off lines are calculated as segments between the lower left corner of the oscillation range and the fully conductive values of the gates. However, the lines are required beyond the fully conductive value up to the upper edge of the voltage ranges of the two gates and are simultaneously trimmed to these.

Parameters:
  • start (Tuple[float, float]) – The start point of the line segment ((x_start, y_start)).

  • end (Tuple[float, float]) – The end point of the line segment ((x_end, y_end)).

  • rect_corners (np.ndarray) – The corners of the boundary of the sensor scan.

  • is_gate2 (bool) – True if the sensor scan line segment is the pinch-off line for gate 2. False if the sensor scan line segment is the pinch-off line for gate 1.

Returns:

Extended pinch-off line ((x_start, y_start), (x_end, y_end)).

Return type:

Tuple[Tuple[float, float], Tuple[float, float]]

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.calc_oscillation_area_boundaries_intersect_points(gate_potentials, alpha_sensor_gate, potential_offset)

Function for calculating the 4 intersection point of the boundaries of the coulomb oscillation area.

Parameters:
  • gate_potentials (List[float]) – List containing pinch-off and fully conductive potentials of sensor gate 1 and gate 2. Assumes it contains exactly 4 values in the specified order: [g1_pinch_off, g1_fully_conductive, g2_pinch_off, g2_fully_conductive]

  • alpha_sensor_gate (numpy.ndarray) – Lever arm from the sensor dot (barrier) gates to the sensor potential.

  • potential_offset (Tuple[float, float]) – Potential offset of the sensor barrier gates.

Returns:

List of intersection points as Tuples (x_coord, y_coord).

Return type:

List[Tuple[float, float]]

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.calc_potential_offset(volt_g1, volt_g2, alpha_gate, alpha_dot, generate_csd, offset_mu_sens)

Function for calculating the potential offset of the barrier gates of a sensor, which is given by the double dot configurations.

Parameters:
  • volt_g1 (float) – Voltage of the double dot (plunger) gate 1.

  • volt_g2 (float) – Voltage of the double dot (plunger) gate 2.

  • alpha_gate (numpy.ndarray) – Lever arms from the double dot (plunger) gates to the sensor potential.

  • alpha_dot (numpy.ndarray) – Lever arms from the double dot occupations gates to the sensor potential.

  • generate_csd (Callable[[numpy.ndarray, numpy.ndarray, Union[int, numpy.ndarray]], Tuple[numpy.ndarray, numpy.ndarray]]) – Method for retrieving ideal data (occupancy numbers and a lead transition mask) for given gate voltages.

  • offset_mu_sens (numpy.ndarray) – The potential offset for the sensor.

Returns:

Potential offset of the sensor barrier gates potential (barrier1_off, barrier2_off).

Return type:

Tuple(float, float)

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.calc_sensor_potential(sensor, sweep_range_sensor_g1, sweep_range_sensor_g2, resolution, volt_g1=None, volt_g2=None, generate_csd=None)

Function for calculating the sensor potential.

Calculating the sensor potential for ranges of voltages of the two sensor barrier gates.

Parameters:
  • sensor (SensorScanSensorGeneric) – Sensor for which the potential is to be calculated.

  • sweep_range_sensor_g1 (np.ndarray) –

    Voltage sweep range of sensor gate 1 (second-/x-axis).

    Example:

    [min_V1, max_V1]

  • sweep_range_sensor_g2 (np.ndarray) –

    Voltage sweep range of sensor gate 2 (first-/y-axis).

    Example:

    [min_V1, max_V1]

  • resolution (Union[int, np.ndarray]) – Resolution of the sensor scan.

  • volt_g1 (Optional[float]) – Voltage applied at (plunger) gate 1 (second-/x-axis).

  • volt_g2 (Optional[float]) – Voltage applied at (plunger) gate 2 (first-/y-axis).

  • generate_csd (Optional[Callable[[numpy.ndarray, numpy.ndarray, Union[int, numpy.ndarray]], Tuple[numpy.ndarray, numpy.ndarray]]]) – Method for retrieving ideal data (occupancy numbers and a lead transition mask) for given gate voltages.

Returns:

The sensor potential for different sensor barrier gate voltages as an array.

Return type:

np.ndarray

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.calc_fully_conductive_potential(metadata)

Function for calculating the sensor potential at the fully conductive point.

First determining the fully conductive point in the two-dimensional voltage space, then calculating the potential.

Parameters:

metadata (Dict) – Dictionary with sensor metadata.

Returns:

The sensor potential at the fully conductive point.

Return type:

float

simcats_datasets.support_functions.get_coulomb_oscillation_area_boundaries.calc_track_boundaries_intersect_points(volt_range_g1, volt_range_g2, line_points, labels)

Calculates the intersection points of a one-dimensional, straight measurement track with the boundaries of the Coulomb oscillation area in the two-dimensional sensor data space.

Parameters:
  • volt_range_g1 (np.ndarray) – Range of sensor g1 of the one-dimensional measurement.

  • volt_range_g2 (np.ndarray) – Range of sensor g2 of the one-dimensional measurement.

  • line_points (np.ndarray) – Array containing all start and end points of the boundaries of the Coulomb oscillation area. Every row of the array represents one line as [x_start, y_start, x_stop, y_stop].

  • labels (List[str]) – Dictionary containing labels for each boundary of the Coulomb oscillation area given in line_points.

Returns:

Returns an array of the intersection points of the one-dimensional, straight

measurement track with the boundaries of the Coulomb oscillation area. Each row of the array represents one intersection point. In addition, a list of labels of the calculated intersection points is returned. If both the array and the List are empty, there are no intersections.

Return type:

Tuple[np.ndarray, List[Dict]]