Skip to content

Releases: EdoPro98/SimSiPM

v2.1.0

18 Mar 13:45
76a2635

Choose a tag to compare

Performance updates and bug fixes

  • Way faster algorithm for amplitude calculation (hash table instead of nested for loop)
  • When updating a SiPM property also update related values (e.g. sampling time modifies n samples)
  • When available use AVX512 instruction for rng generation
  • Generate groups of rng values and store in temp array to limit overhead
  • Optimized generation of 2 rand float and 2 rand integers with a single rng call
  • Optimized generation of arrays of rand Gaussian and int values
  • Signals and amplitudes use float instead of double (2x speed up when using SIMD instructions)
  • Internally store and handle hit pointers instead of copying hits
  • Return hit ptr in Python as py::return_value_policy::reference_internal in order to avoid memory errors
  • Faster peak, integral, tot, toa and top calculation

New features

  • Added micro benchmark using Google Benchmark
  • Hits can store the parent hit ptr
  • Returning hit pointer to parent instead of "index" method (hits graph)
  • Added SiPMSmallVector with small vector optimization (local storage for small vec)
  • Added custom alloc and free providing aligned storage handling (when available)
  • Added custom (smaller, simpler and faster) version of std::pair
  • Input photons outside of the signal window are discarded
  • Performing tests using GitHub actions

Removed features

  • Removed redundant templates
  • Removed SiPMMath.h header
  • Removed SiPMVector type which was giving only minimal speedup

What's Changed

New Contributors

Full Changelog: v2.0.2...v2.1.0

v2.0.2

04 Feb 11:07

Choose a tag to compare

Merging branch dev into main

Changes and additions in dev branch become official! Refer to #5 for list of changes.

Full Changelog: v2.0.1-beta...v2.0.2

v2.0.1-beta

07 Nov 20:24

Choose a tag to compare

v2.0.1-beta Pre-release
Pre-release

Fixed bug that broke v2.0.0-beta

v2.0.0-beta

20 Oct 08:57

Choose a tag to compare

v2.0.0-beta Pre-release
Pre-release

Compatibility

Compatibility with previous versions (1.x.x) of the library is not ensured. Older code calling the library should work fine since most of changes are additions.

What's Changed

Added:

  • [SiPM] New logic for XT and AP generation. AP and XT are generated in the same method allowing for XT to generate AP events and vice versa.
  • [SiPM] Introduced delayed optical crosstalk (DXT). In some SiPMs a fraction of XT events is delayed from the generating event, DXT describes this effect. (Off by default)
  • [SiPM] New namespace math contains advanced an high performance math functions that use intriscics (SSE - AVX2 - FMA)
  • [SiPM] Now each SiPMHit stores a pointer to the parent hit. If it is a photoelectron hit or a DCR hit just store nullptr. This is useful for debugging and to study the effect of different noise sources.
  • [SiPM] Now each SiPMHit stores a vector of pointers to the children hits.
  • [SiPM] New interpolation method for SpectralPde borrowed from Geant4.
  • [CMake] Use install prefix for python installation by @vvolkl in #4
  • [README] Fix readme typo by @vvolkl in #2

Modified:

  • [SiPM] Improved algorithm for SiPM hit creation and handling. All hits are created with amplitude 1 and then amplitude is calculated as last step. This allows for general better description of saturation and consecutive AP events.
  • [SiPM] Improved and faster algorithm for hit amplitude calculation. Improved speed by looking only at hits that are located "before in time" the one being checked, no need to check at later times.
  • [Pybind11] Better use of pybind11 module variables. Almost all functionality of C++ version is wrapped to Python.
  • [Python] Updated setup.py file. Now versioning is handled in the SiPM.h file and copied in all other files.
  • [PyTest/GTest] Overall better tests with looser constraints that should fail only in case of real bugs.
  • [Doxygen] New file format as prescribed by new Doxygen version.
  • [README] Updated readme with better instructions.

Removed:

  • [SiPM] Removed superfluous const in return arguments
  • [SiPM] Removed unused methods
  • [SiPM] Removed SiPMSimulator class. Never used and superfluous
  • [OpenMP] Removed OpenMP support. It was used only in SiPMSimulator class.

New Contributors

  • @vvolkl made their first contribution in #4

Full Changelog: 1.2.3-beta...v2.0.0-beta

v1.2.4

09 Jul 20:05

Choose a tag to compare

Stable release for the upload on spack and cvmfs.

Changelog

Added

  • Random integer generation now is in range 0 -> max - 1 included (to be consistent with most rngs)
  • Better testing
  • New CMakeLists.txt for the installation of python module in desired path

1.2.3-beta

03 Jun 12:45

Choose a tag to compare

1.2.3-beta Pre-release
Pre-release

Changelog

Improved:

  • New and faster way to convert bits from prng in double values [0-1].
  • Minor performance improvements
  • Minor changes and cleaner code
  • Ready for beta version

Added:

  • Tests for rng and most classes
  • Added support also for pypy3 python version

Removed:

  • Removed experimental support for Windows. Now supporting ONLY Linux and MacOS

v1.1.3alpha

29 Apr 16:36

Choose a tag to compare

Changelog:

Added:

  • SiPMSimulator: class that automatically handles all the event loop given a SiPMSensor and a list of events to simulate
  • Added operator==() method to identify hits on same cell
  • Added some unit testing
  • Improved random number generation with faster algorithms
  • Added support for openMP

Removed:

  • Removed cell ID. Cells are identified given row and column
  • Removed many unused methods

v1.0.3-alpha

03 Mar 22:46

Choose a tag to compare

v1.0.3-alpha Pre-release
Pre-release

CHANGELOG:

  • Added different hit types on SiPM surface
  • Better Pybind11 compatibility (iostream)
  • Bug fixes and performance impovements

First working release available on PyPi

09 Feb 14:16

Choose a tag to compare

Pre-release
v1.0.2-alpha

v1.0.2-a

First release

08 Feb 17:17
7a35355

Choose a tag to compare

First release Pre-release
Pre-release

First release