Releases: EdoPro98/SimSiPM
Releases · EdoPro98/SimSiPM
v2.1.0
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
- Merging branch dev into main by @EdoPro98 in #10
- Merging latest changes from main to dev by @EdoPro98 in #11
- [Typo] fix 2 typos in README.md by @luhuadong in #12
- [CMake] Set header files to PUBLIC and add the installation folder by @jmcarcell in #17
- Merge dev with main by @EdoPro98 in #18
New Contributors
- @luhuadong made their first contribution in #12
- @jmcarcell made their first contribution in #17
Full Changelog: v2.0.2...v2.1.0
v2.0.2
v2.0.1-beta
Fixed bug that broke v2.0.0-beta
v2.0.0-beta
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
mathcontains 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
constin 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
Full Changelog: 1.2.3-beta...v2.0.0-beta
v1.2.4
1.2.3-beta
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
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
CHANGELOG:
- Added different hit types on SiPM surface
- Better Pybind11 compatibility (iostream)
- Bug fixes and performance impovements
First working release available on PyPi
v1.0.2-alpha v1.0.2-a
First release
First release