Skip to main content

Library for Silicon Photomultipliers simulation.

Project description

SimSiPM

GitHub release

GCC AppleClang

GitHub issues GitHub last commit GitHub license

Downloads Downloads

Authors

SimSiPM has been developed by Edoardo Proserpio under the supervision of professor Romualdo Santoro at University of Insubria Como - Italy.
SimSiPM is distrubuted as an Open Source project and if you plan to use it please acknowledge us as authors or cite us in your paper.

Table of contents

  1. Introduction
  2. Features
  3. Installation
  1. C++ Basic use
  2. Python Basic use
  3. Advanced use
  1. Contributing

Introduction

SimSiPM is a simple and easy to use C++ library providing a set of object-oriented tools with all the functionality needed to describe and simulate Silicon PhotonMultipliers (SiPM) sensors. The main goal of SimSiPM is to include the response of SiPM sensors, along with noise and saturation effects, in the description of a generic detector in order to have a more detailed simulation. It can also be used to perform optimization studies considering different SiPMs models allowing to choose the most suitable product available on the market.

SimSiPM code mostly follows FCCSW rules and guidelines concerning C++. SimSiPM has been developed especially for high-energy physics applications and particle physics experiments, however its flexibility allows to simulate any kind of experiments involving SiPM devices.

SimSiPM does not have any major external dependency making it the perfect candidate to be used in an already existing environment (Geant4 or DD4HEP) or as "stand-alone".

Features

  • Easy to use:
    • Straight forward installation without external dependencies
    • Easy to use Object Oriented paradigm
    • Python implementation via Pybind11
  • Description of SiPM sensors:
    • Driven by parameters that can be obtained from the datasheet or laboratory measurements
    • High level of customization allowing to describe a wide range of use cases
    • Does not include tedious electronic circuit simulations
  • High performance:
    • Very fast signal generation
    • Reliable description of SiPM signals and related quantities over all the dynamic range
    • Low memory footprint (if you do not intend to save all waveforms!)

Installation

SimSiPM is fully functional without any external dependencies other than CMake.

Optional dependencies:

  • Pybind11: to generate python bindings
  • Doxygen: to generate documentation
  • GTest/Pytest: for advanced testing

C++

SimSiPM can be installed using the standard CMake workflow:

# In SimSiPM directory
cmake -B build -S .
make -C build
make -C build install

It is advisable to enable compiler optimizations like -O3 and -mfma -mavx2 since some parts of code are specifically written to exploit vectorization capabilities of the compilers.

Installation directory can be specified with -DCMAKE_INSTALL_PREFIX variable.

Python bindings can be compiled and installed by adding the variable -DCOMPILE_PYTHON_BINDINGS=ON but this requires Pybind11. The corresponding python module is called SiPM and each class can be accessed as a sub-module.

import SiPM
from SiPM import SiPMSensor

print(SiPM.__version__)

Python

It is also possible to use pip to install only the Python version using a precompiled binary wheel. This installation method is easyer but performance may be impaired with respect to the C++/Pybind11 installation.

pip install SiPM

C++ basic use

SimSiPM focuses on simplicity! It does not make use of pointers, or custom classes as parameters of the simulation or input. In most cases a std::vector is all that you need in order to get started.

SiPMProperties

SiPMProperties class stores all SiPM and simulation parameters. It can be used to define the SiPM detector model in use and it can be shared among different SiPMs in case many identical sensors are needed.

#include "SiPMProperties.h"
using namespace sipm;

// Create a SiPMProperties object
SiPMProperties myProperties;

// Edit some parameters
myProperties.setDcr(250e3);           // Using proper setter
myProperties.setProperty("Xt",0.03);  // Using parameter name
std::cout<<myProperties<<"\n";        // All classes can be printed using std::cout

// ===> SiPM Properties <===
// Address: 0x7f2cf11ea018
// Size: 1.00 mm
// Pitch: 25.00 um
// Number of cells: 1600
// Hit distribution: Uniform
// Cell recovery time: 50.00 ns
// Dark count rate: 250.00 kHz
// Optical crosstalk probability: 3.00 %
// Delayed optical crosstalk is OFF
// Afterpulse probability: 3.00 %
// Tau afterpulses (fast): 10.00 ns
// Tau afterpulses (slow): 80.00 ns
// Cell-to-cell gain variation: 5.00 %
// SNR: 30.00 dB
// Photon detection efficiency is OFF (100 %)
// Rising time of signal: 1.00 ns
// Falling time of signal (fast): 50.00 ns
// Signal length: 500.00 ns
// Sampling time: 1.00 ns

SiPMSensor

SiPMSensor class is the core of the simulation and is created from a SiPMProperties class. It stores input photoelectrons, it runs the event simulation and gives a signal as output.

#include "SiPMProperties.h"
using namespace sipm;

// Create a SiPMSensor object
SiPMSensor mySensor(myProperties);

// Change parameters
mySensor.properties().setAp(0.01);    // Using proper getter/setter
mySensor.setProperty("Pitch", 25);    // Using parameter name
std::cout<<mySensor<<"\n";

// ===> SiPM Sensor <===
// Address: 0x7f48ef5d62f0
// ===> SiPM Properties <===
// Address: 0x7f48ef5d62f0
// Size: 1.00 mm
// Pitch: 25.00 um
// Number of cells: 1600
// Hit distribution: Uniform
// Cell recovery time: 50.00 ns
// Dark count rate: 200.00 kHz
// Optical crosstalk probability: 5.00 %
// Delayed optical crosstalk is OFF
// Afterpulse probability: 1.00 %
// Tau afterpulses (fast): 10.00 ns
// Tau afterpulses (slow): 80.00 ns
// Cell-to-cell gain variation: 5.00 %
// SNR: 30.00 dB
// Photon detection efficiency is OFF (100 %)
// Rising time of signal: 1.00 ns
// Falling time of signal (fast): 50.00 ns
// Signal length: 500.00 ns
// Sampling time: 1.00 ns
// Address :0x7ffcded8a300
// ===> SiPM Debug Info <===
// Number of photons impinging to the sensor: 0
// Number of photoelectrons detected: 0
// Number of dark count events (DCR): 0
// Number of optical crosstalk events (XT + DTX): 0
// Number of delayed optical crosstalk events (DXT): 0
// Number of afterpulsing events (AP): 10.00

SiPMAnalogSignal

SiPMAnalogSignal class is a wrapper around std::vector that expands its features. It contains the samples of the SiPM waveform along with some properties and methods used to extract features from the signal.

SiPMAnalogSignal signal = mySensor.signal();
double sampling = signal.sampling();
double sample = signal[10];
std::cout<<signal<<"\n";

// ===> SiPM Analog Signal <===
// Address: 0x7f48ef5d64e8
// Signal length is: 0.00 ns
// Signal is sampled every: 1.00 ns
// Signal contains: 0 points

Input and simulation

The only input needed for the simulation of a SiPM event is the arriving time of each photon to the sensitive surface of the SiPM detector. In order to have a detailed description of the dependency of the PDE with respect to the photon wavelength it is possible to add the wavelength information togheter with the time information.

It is possible to add individual photons in a loop

mySensor.resetState();
for(...){
  // Generate times for photons
  mySensor.addPhoton(time);   // Appends a single photon (time is in ns)
}
mySensor.runEvent();          // Runs the simulation

It is also possible to add all photons at once

std::vector<double> times = {13.12, 25.45, 33.68};
mySensor.resetState();
mySensor.addPhotons(times);    // Sets photon times (times are in ns) (not appending)
mySensor.runEvent();           // Runs the simulation

Signal output and signal features

The simulation can output the signal waveform and can also perform some simple features extraction.

SiPMAnalogSignal mySignal = mySensor.signal();

double integral = signal.integral(5,250,0.5);   // (intStart, intGate, threshold)
double peak = signal.peak(5,250,0.5);   // (intStart, intGate, threshold)
double toa = signal.toa(5,250,0.5);   // (intStart, intGate, threshold)
double tot = signal.tot(5,250,0.5);   // (intStart, intGate, threshold)

// It is possible to iterate throw an analog signal
for(int i=0;i<mySignal.size();++i){
  double sample = mySignal[i]
  // Do something with sample
}

// It is possible to convert an analog signal to a simple vector
std::vector<double> waveform = mySignal.waveform();

Complete event loop

This is an example of "stand-alone" usage of SimSiPM. In case SimSiPM is used in Geant4 or other framework, then the generation of photon times has to be caryed by the user (usually in G4UserSteppingAction) and the event has to be simulated after all photons have been added (usually in G4UserEventAction).

// Create sensor and set parameters
SiPMProperties myProperties;
SiPMSensor mySensor(myProperties);
// ...

// Store results in here
std::vector<double> integral(NEVENTS);
// peak
// ...

for(int i=0;i<NEVENTS;++i){
  // Generate photons times accordingly
  // to your experimental setup
  mySensor.resetState();
  mySensor.addPhotons(times);
  mySensor.runEvent();

  SiPMAnalogSignal mySignal = mySensor.signal();

  integral[i] = signal.integral(10,250,0.5);
  // peak
  // ...
}

Python basic use

Python bindings are generated for all the classes using Pybind11. This allows for an almost 1:1 mapping of the C++ functionalities in Python.

from SiPM import SiPMSensor, SiPMProperties

myProperties = SiPMProperties()
myProperties.setDcr(250e3)
myProperties.setProperty("Xt",0.03)

mySensor = SiPMSensor(myProperties)

mySensor.resetState()
mySensor.addPhotons([13.12, 25.45, 33.68])
mySensor.runEvent()

mySignal = mySensor.signal()
integral = mySignal.integral(10,250,0.5)

Advanced use

PDE

No Pde

Tracking a large number of photons throwgh a scintillator crystal or optical fiber is a very CPU-intensive task. Since most of photons will not be detected due to photon detection efficiency (PDE) it is a waste of time to track all of them.

By default SiPM sensors have PDE set to 100% meaning that every photon given as input is converted to a photoelectron, detected and generates a signal. This allows to generate and track only the photons that will be detected by the sensor. For example the geometry of IDEA dual-readout calorimeter requires the simulation of 130 millions of optical fibers and in each one of those photons are tracked by Geant4 requiring a lot of CPU time. It would be meaningless to track photons along the fibers if they are not detected, so PDE is evaluated before the tracking of photons.

Simple PDE

It is possible to account for PDE in the simulation using a fixed value of PDE for all photons. In this case the probability to detect a photon is proportional to PDE. This option can be used if the spectrum of emitted photons is very narrow or if the SiPM has a wide and flat spectral response.

// Set in SiPMProperties
myProperties.setPdeType(sipm::SiPMProperties::PdeType::kSimplePde);
myProperties.setPde(0.27);

// Change setting of a sensor
mySensor.properties().setPdeType(sipm::SiPMProperties::PdeType::kSimplePde);
mySensor.setProperty("Pde",0.27); // or mySensor.properties().setPde(0.27);

To revert back at default setting of 100% PDE use setPdeType(sipm::SiPMProperties::PdeType::kSimplePde)

Spectral PDE

In SiPM sensors PDE strongly depends on photon wavelength. In some cases it might be necessary to consider the spectral response of the SiPM for a more accurate simulation. This can be done by feeding the SiPM settings with two arrays containing wavelengths and corresponding PDEs.

In this case it is also necessary to input photon wavelength along with its time.

std::vector<double> wlen = {800, 750, 700, 650, 600, 550, 500, 450, 400, 350, 300};
std::vector<double> pde = {0.22, 0.30, 0.40, 0.45, 0.50, 0.50, 0.45, 0.35, 0.25, 0.15, 0.0};

myProperties.setPdeType(sipm::SiPMProperties::PdeType::kSpectrumPde);
myProperties.setPdeSpectrum(wlen,pde);

// Adding photons to the sensor
mySensor.addPhoton(photonTime, photonWlen);
// or mySensor.addPhotons(photonTimes, photonWlens);

The input values for PDE given by the user are interpolated using the formula below to obtain additional 25 values over the given range. Then, during the simulation, values are linearly interpolated between the points of the newly obtained curve.

Hit distribution

By default photoelectrons hits are considered to be uniformly distributed on the surface of the SiPM. In most cases this assumption resembles what happens in a typical setup but sometimes the geometry of the sensor or the optical characteristics of the setup lead to an inhomogeneous distribution of the light on the sensor's surface.

Uniform hit distribution

This is the default setting: each SiPM cell has the same probability to be hitted. This setting should work in most of scenarios.

myPropertie.setHitDistribution(sipm::SiPMProperties::HitDistribution::kUniform);

Circular hit distribution

In this case 90% of photons are placed in a circle centered in the sensor and with a diameter that is the same as the sensor's side lenght. The remaining 10% is distributed outside this circle. This setting resembles those cases where light is focused in the central region.

myPropertie.setHitDistribution(sipm::SiPMProperties::HitDistribution::kCircle);

Gaussian hit distribution

In this case 95% of the photons are distributed following a gaussian distribution centered in the sensor. The remaining 5% is distributed uniformly on the sensor.

myPropertie.setHitDistribution(sipm::SiPMProperties::HitDistribution::kGaussian);

Contributing

Feel free to contact me if you have any problem while including SimSiPM in your project, if you find a bug or have any suggestion or improvement. I would be pleased to discuss it with you.

Cite

Even thou SimSiPM has been used in simulations related to published articles, there is not yet an article about SimSiPM itself. So if you need to cite SimSiPM please use:

@manual{,
title = {{SimSiPM: a library for SiPM simulation}},
author = {Proserpio, Edoardo, and Santoro, Romualdo},
address = {Como, Italy},
year = 2021,
url = {https://github.com/EdoPro98/SimSiPM}
}

Contacts

Author: Edoardo Proserpio
Email: edoardo.proserpio@gmail.com (private)
Email: eproserpio@studenti.uninsubria.it (instiutional)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sipm-2.1.0.tar.gz (29.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sipm-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl (181.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

sipm-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (241.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl (181.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

sipm-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (245.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl (180.3 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

sipm-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (243.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl (179.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

sipm-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (245.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl (179.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

sipm-2.1.0-cp38-cp38-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

sipm-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (244.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

sipm-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl (178.9 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

SiPM-2.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ x86-64

SiPM-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (239.8 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

SiPM-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl (177.0 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

SiPM-2.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ x86-64

SiPM-2.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (242.7 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

SiPM-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl (176.2 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file sipm-2.1.0.tar.gz.

File metadata

  • Download URL: sipm-2.1.0.tar.gz
  • Upload date:
  • Size: 29.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sipm-2.1.0.tar.gz
Algorithm Hash digest
SHA256 6cb3be9e559ffeccf565dd86b97842ffc2daead4c626c064379855d72dcdb60c
MD5 0692c8727e6b9eb8b1acea21c021da01
BLAKE2b-256 ad3cc6b06dbbe3b8851d324747fdce38ef8be4bece2aae8655d3afc6ae25b37f

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fcda0349e3884731dcb98d21dfb6b00d266f42341c0aa67e5be6babe66a8b16a
MD5 07e57a0c2ffaa2ddb310caf6191fc492
BLAKE2b-256 56025c93b399351740c41c1718153a5b97291eedaf1b80a91c3e79147ca48413

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 414c0454df89ec894cdf1059493e7533d08bb9a9b3a756f03ebc2d8ce252f9ac
MD5 efd49ca34a623b7e8fb9346b13553eeb
BLAKE2b-256 85a99cf39d6bfb8ba096f9a775b0448a6b9204df88719e870aed34665d9ceeab

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 850abb221ab9af5c231d7015baf36e0142e85d1fe0c895239543e4f00e5888ab
MD5 ef1c2bc192a01c24ea58139884a2cf04
BLAKE2b-256 6c50726f4c983301359f95affa63ee619c910e281a5dff8e8b1eecfa6999601e

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 04415e7b90ec5f4132bcbc6afcaafacbb2d46b90a210693d3d207e4f76bbc9bd
MD5 1e4fe2bea8bbd7e80b54a981c4aec474
BLAKE2b-256 8267de4eb4d4ff731b62d4b36e7afb4daba0dd7989efc49cd2646f883c8826c9

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 13be49482c8acb034305178e29ac5d9f7e636033da05978415cae4837e65b6f4
MD5 707018948785a17a07d0bec16dcd5473
BLAKE2b-256 ac69dddfeb3ad5583bfddbfc7a52740cc0361abc9eddfc2b7fcdc0df58d5f57c

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 461ced1469c3d5616689b2bf4a17a7311ccc7463fca5a44d90974fd92ca8d4df
MD5 e07f1cb059e7c2b838c9629e83a9113b
BLAKE2b-256 8778c88b91659bb0910faf86508642b83c3d0d045db1c0f221bfe45effa9dc21

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a54ffdab306a7dbbf82470d624cd775cd439ba1826558ab1459d305f7605b24
MD5 e5bc9e3ebe8d37e918afde94dc11bbdd
BLAKE2b-256 558077681be2ecb57ea4f0bf14829f5deebb08d7988a73215498ba479a2ee843

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11bf09c630008ae954552b65f4b1c3563d5f423688f7aa471f71786f35f9bd53
MD5 c0668e7520b661819568e274aabc7a25
BLAKE2b-256 128890a5f903d17c22cfab82b284539160829fad9d3c316702d7c3d4ab621a96

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a1cc9bf09dd98ff99b647a35132b5032f1a437a23e3082db32787ef7d088ce4d
MD5 92c84137ac013d0382660cfe9d91b9ac
BLAKE2b-256 cff1acb3d7f957b73e7678ddff513b42df8108ccb818a366673b2befadc92f6b

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 718e1bc6efd91e5d99bed9b2e8f018b632ac960879cefc27d400c8c627ee0d0e
MD5 046476a85116775021885d376eaec3cf
BLAKE2b-256 d35f6f3cc1ab78969036b9c628424e148ccbb1df05cbf1b134ebf642c8f2a4ff

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6dfb9d10c55ec53be87f263f9480587fc9eb4a1307e29e30b460a92ee0658509
MD5 e8d714abeb50d14bcddbad2fae056a74
BLAKE2b-256 ee81902f3d6205d4dd5ef403533c0d0bca914a4cd8fe851d78881a7983271cd5

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 645de8ffc072340f1f8f5a26b916050a18e2951cefd295bffa7764cc9b45ee30
MD5 2b8b7e2aaa3af722bf55b3362b6bd51c
BLAKE2b-256 0f081c7171af73849e909cc2d619d60d78411079dc9b85db2ddf15c903d09cf5

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: sipm-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sipm-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c177847d93ffa308d93739b73d61bf7df1f8f4c4a0334766b1547c70960df62
MD5 68bb1825c1209cc15548bd6ffdf7e847
BLAKE2b-256 bf54105e68bbe1281d21bf91f6d65076f9ace414b4478466ce4b1810fcff2436

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56333a51633ab7549d9be722d73841fd29ad8138fbdf2e5a202cf63b9b191a5f
MD5 51dbd220b44b79c08a6b841390da4f62
BLAKE2b-256 d91f0c4b9acb1e8f00e10dddba3518efebbd1b4c1d5ddb2a7d1590ed7101ff5e

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: sipm-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 179.1 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sipm-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2c68f6bb30e1dd4eb2c78a74460520b48c18e57482c2d23d4c55f346cfe20d6a
MD5 8541ee68d9bdee86bd689e6a53a4e059
BLAKE2b-256 d297568b0af3050a09d0e2bc4cfa53ce583f53db1531684c1b98a68117cb34f0

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: sipm-2.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sipm-2.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7f84ec7053c4fda8df8657c257c654c819223c7a58058acbf6d5f0127b8352a
MD5 5eb45b7b61867aec66b3ff03562e1933
BLAKE2b-256 492f1524ca3dd11139b7046d350750fc0a209d87fe08d690791ba5d0ee305202

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sipm-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 525cfcf774115fcdb8d63222676a8ec5a1de6f3b301cc665947c1e31283dfd25
MD5 a1b674cbc8aadee4d75a7439878e438e
BLAKE2b-256 5f4268631369652f3efbec67b81d38d5939b8f4dd2f7fcdc3c88c9b3cdd9a47d

See more details on using hashes here.

File details

Details for the file sipm-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: sipm-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 178.9 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sipm-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 69b70666ee44c40e00e1ebc2851afe4c7331b7b214ca9be9f5cbc807031ae51d
MD5 84fa88d8288ab1f56ebe96ea2b978e35
BLAKE2b-256 0a810922d6de29aa267881b126a012d87c082b325f77f9016343977356af52c3

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 af8f22feafd08273820d05592a92f4e50b3ea61bcf130cdaa19d9f1f1834d683
MD5 a4db0752b9c838dadf568daca876a449
BLAKE2b-256 4d803b7bbcf5f1995b5373484c332899c072f9da0bed1d7691314d849d8f6786

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 433879e3e70b811ed07b0b265700b0859c395dfe838c6960851b6720cab9ea36
MD5 5496069b5e0cdd9e501fd8eff920f4ab
BLAKE2b-256 af5a4cd42badfe8fc989d1a897f0e82d78e88ed158b63fff630dca74a1376756

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e646b1a92a4ccea71efe182ebfe028241665c20abb490979749d261b987ab554
MD5 9205dbc37a010a7f7ac542df9ad3784d
BLAKE2b-256 1a3184b0a624c1c299a83dd4b44caa6f9759a4141d2a27751f667dde7252227b

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp36-cp36m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3ade266ad6b6cc555b32103cf7c79537b1372ae8d8ab85ca3c49e9e2f138b024
MD5 6394005c00db6d67633917929ca1c45f
BLAKE2b-256 919c099b477db7771377083d64a29dc0214855f2b3a8c6bc33c44a7a5917c135

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2eca0509100d8824832a2cb52770e68a0f634708aa79f17160003077fe3000fd
MD5 3faffbdbb9c5e2085ee1b244cfdabc79
BLAKE2b-256 8ed808b510f706a428a8becea59fabe63c37093126173682463d9ebc194388f4

See more details on using hashes here.

File details

Details for the file SiPM-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for SiPM-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 382f15e1000f69f46ce410546e80f70e0fa4cff0515d0ec9c63eeae527c81ee2
MD5 f5c1fb92cfbb8c123dbe4f61c640bb5b
BLAKE2b-256 6f9053642c6a58964cdda2012c37370f7334fdad7fa8b23422ad8ff484695b7a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page