nectarchain.makers.component.spe.spe_algorithm.SPEnominalalgorithm#

class SPEnominalalgorithm(*args: t.Any, **kwargs: t.Any)[source]#

Bases: SPEalgorithm

SPE fitting algorithm at nominal voltage.

Runs a multi-pixel SPE fit using iminuit with pp and n as free parameters. Supports both single-process and multi-process execution.

Initializes the FlatFieldSingleHHVSPEMaker object.

Parameters:
chargenp.ma.masked_array or array-like

The charge data.

countsnp.ma.masked_array or array-like

The counts data.

``*args``

Additional positional arguments.

``**kwargs``

Additional keyword arguments.

Methods

add_traits

Dynamically add trait attributes to the HasTraits instance.

class_config_rst_doc

Generate rST documentation for this class' config options.

class_config_section

Get the config section for this class.

class_get_help

Get the help string for this class in ReST format.

class_get_trait_help

Get the helptext string for a single trait.

class_own_trait_events

Get a dict of all event handlers defined on this class, not a parent.

class_own_traits

Get a dict of all the traitlets defined on this class, not a parent.

class_print_help

Get the help string for a single trait and print it.

class_trait_names

Get a list of all the names of this class' traits.

class_traits

Get a dict of all the traits of this class.

create_from_chargesContainer

Creates an instance of FlatFieldSingleHHVSPEMaker using charge and counts data from a ChargesContainer object.

display

Display and save the plot for each specified pixel ID.

from_name

Obtain an instance of a subclass via its name

get_current_config

return the current configuration as a dict (e.g. the values of all traits, even if they were not set during configuration).

has_trait

Returns True if the object has a trait with the specified name.

hold_trait_notifications

Context manager for bundling trait change notifications and cross validation.

non_abstract_subclasses

Get a dict of all non-abstract subclasses of this class.

notify_change

Notify observers of a change event

observe

Setup a handler to be called when a trait changes.

on_trait_change

DEPRECATED: Setup a handler to be called when a trait changes.

plot_single_matplotlib

Generate a plot of the data and a model fit for a specific pixel.

plot_single_pyqtgraph

Plot the SPE fit result for a single pixel using pyqtgraph.

read_param_from_yaml

Reads parameters from a YAML file and updates the internal parameters of the FlatFieldSPEMaker class.

run

Run the SPE fit for the specified (or all) pixels.

run_fit

Perform a fit on a specific pixel using the Minuit package.

section_names

return section names as a list

set_trait

Forcibly sets trait attribute, including read-only attributes.

setup_instance

trait_defaults

Return a trait's default value or a dictionary of them

trait_events

Get a dict of all the event handlers of this class.

trait_has_value

Returns True if the specified trait has a value.

trait_metadata

Get metadata values for trait by key.

trait_names

Get a list of all the names of this class' traits.

trait_values

A dict of trait names and their values.

traits

Get a dict of all the traits of this class.

unobserve

Remove a trait change handler.

unobserve_all

Remove trait change handlers of any type for the specified name.

update_config

Update config and load the new values

Attributes

charge

Returns a deep copy of the __charge attribute.

chunksize

The chunk size for multi-processing

config

A trait whose value must be an instance of a specified class.

counts

Returns a deep copy of the __counts attribute.

cross_validation_lock

A contextmanager for running a block with our cross validation lock set to True.

display_toggle

Enable/disable display of SPE fit results

multiproc

flag to active multi-processing

npixels

Returns the total number of pixels.

nproc

The Number of cpu used for SPE fit

order

The order of the polynome used in the savgol filter algorithm

parameters

Returns a deep copy of the internal Parameters object.

parameters_file

The name of the SPE fit parameters file

parent

A trait whose value must be an instance of a specified class.

pixels_id

Returns a deep copy of the pixel ID array.

results

Returns a deep copy of the SPEfitContainer result table.

tol

The tolerance used for minuit

window_length

The windows leght used for the savgol filter algorithm

property charge#

Returns a deep copy of the __charge attribute.

chunksize#

The chunk size for multi-processing

property counts#

Returns a deep copy of the __counts attribute.

classmethod create_from_chargesContainer(signal: ChargesContainer, config=None, parent=None, **kwargs)[source]#

Creates an instance of FlatFieldSingleHHVSPEMaker using charge and counts data from a ChargesContainer object.

Parameters:
signalChargesContainer

The ChargesContainer object.

``**kwargs``

Additional keyword arguments.

Returns:
FlatFieldSingleHHVSPEMaker

An instance of FlatFieldSingleHHVSPEMaker.

display(pixels_id: ndarray, package='pyqtgraph', **kwargs) → None[source]#

Display and save the plot for each specified pixel ID.

Parameters:
pixels_id: np.ndarray

An array of pixel IDs.

package: str

the package used to plot, can be matplotlib or pyqtgraph. Default to pyqtgraph

kwargs

Additional keyword arguments. figpath : str The path to save the generated plot figures. Defaults to /tmp/NectarGain_pid{os.getpid()}.

multiproc#

flag to active multi-processing

nproc#

The Number of cpu used for SPE fit

parameters_file#

The name of the SPE fit parameters file

plot_single_matplotlib(charge: ndarray, counts: ndarray, pp: float, resolution: float, gain: float, gain_error: float, n: float, pedestal: float, pedestalWidth: float, luminosity: float, likelihood: float, **kwargs) → tuple[source]#

Generate a plot of the data and a model fit for a specific pixel. The different parameters are explained in Caroff et al. (2019).

Parameters:
pixel_id: int

The ID of the pixel for which the plot is generated.

charge: np.ndarray

An array of charge values.

counts: np.ndarray

An array of event counts corresponding to the charge values.

pp: float

The value of the pp parameter.

resolution: float

The value of the resolution parameter.

gain: float

The value of the gain parameter.

gain_error: float

The value of the gain_error parameter.

n: float

The value of the n parameter.

pedestal: float

The value of the pedestal parameter.

pedestalWidth: float

The value of the pedestalWidth parameter.

luminosity: float

The value of the luminosity parameter.

likelihood: float

The value of the likelihood parameter.

Returns:
: tuple

A tuple containing the generated plot figure and the axes of the plot.

plot_single_pyqtgraph(charge: ndarray, counts: ndarray, pp: float, resolution: float, gain: float, gain_error: float, n: float, pedestal: float, pedestalWidth: float, luminosity: float, likelihood: float) → tuple[source]#

Plot the SPE fit result for a single pixel using pyqtgraph.

Parameters:
pixel_idint

The pixel ID.

chargenp.ndarray

Charge bin centres.

countsnp.ndarray

Event counts per charge bin.

ppfloat

The pp parameter.

resolutionfloat

The resolution parameter.

gainfloat

The SPE gain.

gain_errorfloat

The error on the SPE gain.

nfloat

The n parameter.

pedestalfloat

The pedestal value.

pedestalWidthfloat

The pedestal width.

luminosityfloat

The luminosity parameter.

likelihoodfloat

The fit likelihood value.

Returns:
pyqtgraph.GraphicsLayoutWidget

The generated pyqtgraph window containing the plot.

run(pixels_id: ndarray = None, **kwargs) → ndarray[source]#

Run the SPE fit for the specified (or all) pixels.

Parameters:
pixels_idnp.ndarray, optional

Array of pixel IDs to fit. If None, all pixels are fitted.

``**kwargs``

Additional keyword arguments passed to the fit machinery. Accepted keys include tol (Minuit tolerance), nproc (number of processes), and chunksize.

Returns:
np.ndarray

Array of fit status objects for each fitted pixel.

static run_fit(i: int, tol: float) → dict[source]#

Perform a fit on a specific pixel using the Minuit package.

Parameters:
iint

The index of the pixel to perform the fit on.

Returns:
: dict

A dictionary containing the fit values and errors for the specified pixel. The keys are values_i and errors_i, where i is the index of the pixel.

tol#

The tolerance used for minuit