Metadata-Version: 2.1
Name: mimocorb
Version: 1.0.2rc2
Summary: multi-in multi-out Configurable Ring Buffer for DAQ
Author: Christoph Mayer
Author-email: Günter Quast <Guenter.Quast@online.de>, Klaus Heitlinger <HeitILNK@t-online.de>
License: MIT BSD 2-Clause License
        
        Copyright (c) 2017-2021, Guenter Quast (Guenter.Quast@online.de)
        All rights reserved.
        
        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are met:
        
        * Redistributions of source code must retain the above copyright notice, this
          list of conditions and the following disclaimer.
        
        * Redistributions in binary form must reproduce the above copyright notice,
          this list of conditions and the following disclaimer in the documentation
          and/or other materials provided with the distribution.
        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Project-URL: Homepage, http://www.etp.kit.edu/~quast/
Keywords: karlsruhe,data,lab,laboratory,practical course,education,acquisition,university,students,physics
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: NumPy
Requires-Dist: Scipy
Requires-Dist: Pandas
Requires-Dist: pyarrow
Requires-Dist: matplotlib
Requires-Dist: pyyaml
Requires-Dist: tk

# **mimoCoRB** - multiple-in multiple-out Configurable Ring Buffer

## Summary:

Provided here is a central component of each data acquisition system
needed to record and pre-analyse data from randomly occurring processes.
Typical examples are wave-forms data as provided by single-photon
counters or typical detectors common in quantum mechanical measurements
or in nuclear, particle physics and astro particle physics, e. g.
photo tubes, Geiger counters, avalanche photo-diodes or modern SiPMs.

The random nature of such processes and the need to keep read-out dead
times low requires an input buffer and a buffer manager running as
a background process. Data are provided via the buffer manager 
interface to several consumer processes to analyze, check or visualize
data and analysis results. Such consumers may be obligatory ones,
i. e. data acquisition pauses if all input buffers are full and an 
obligatory consumer is still busy processing. A second type of
random consumers or "observers" receives an event copy from the buffer
manager upon request, without pausing the data acquisition process.
Typical examples of random consumers are displays of a subset of the
wave forms or of intermediate analysis results.

This project originated from an effort to structure and generalize
data acquisition for several experiments in an advanced physics laboratory
courses at Karlsruhe Institute of Technology.

As a simple demonstration, we provide signals recorded by a detector
for cosmic muons with three layers. Occasionally, such muons stop
in an absorber between the 2nd and 3rd layer, where they decay at rest
and emit a high-energetic electron recorded as a 2nd pulse in one or
two of the detection layers. 

To see a simple example showing pules shapes and the extracted pulse
heights from simulated waveforms, change to the directory `examples/`
of this package and execute

```bash
../run_daq.py spectrum_setup.yaml
```
The configuration files `examples/simul_source.yaml` and 
`examples/simul_spin_setup.yaml` contain more advanced
examples of muon lifetime measurements from double-pulses
produced by an incoming muon and the decay electron. 

