SiPM basded cosmic ray detector data acquisition system.
Dependencies: DNSResolver EthernetNetIf FatFileSystem SDFileSystem mbed
SiPM.cpp@0:a8cee0e1d6d9, 2013-01-21 (annotated)
- Committer:
- NickRyder
- Date:
- Mon Jan 21 13:51:58 2013 +0000
- Revision:
- 0:a8cee0e1d6d9
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
NickRyder | 0:a8cee0e1d6d9 | 1 | #include "SiPM.h" |
NickRyder | 0:a8cee0e1d6d9 | 2 | |
NickRyder | 0:a8cee0e1d6d9 | 3 | SiPM::SiPM(PinName pin, PinName led) : |
NickRyder | 0:a8cee0e1d6d9 | 4 | n(0), ncoincidence(0), ntrig(0), |
NickRyder | 0:a8cee0e1d6d9 | 5 | time(), |
NickRyder | 0:a8cee0e1d6d9 | 6 | checkcoincidence(false), running(false), |
NickRyder | 0:a8cee0e1d6d9 | 7 | interval(20), deadtime(50), |
NickRyder | 0:a8cee0e1d6d9 | 8 | other(NULL), |
NickRyder | 0:a8cee0e1d6d9 | 9 | iin(pin), ledpin(led) |
NickRyder | 0:a8cee0e1d6d9 | 10 | { |
NickRyder | 0:a8cee0e1d6d9 | 11 | iin.rise(this, &SiPM::trigger); |
NickRyder | 0:a8cee0e1d6d9 | 12 | ledpin = 1; |
NickRyder | 0:a8cee0e1d6d9 | 13 | } |
NickRyder | 0:a8cee0e1d6d9 | 14 | |
NickRyder | 0:a8cee0e1d6d9 | 15 | void SiPM::addother(SiPM * sipm) { |
NickRyder | 0:a8cee0e1d6d9 | 16 | other = sipm; |
NickRyder | 0:a8cee0e1d6d9 | 17 | checkcoincidence = true; |
NickRyder | 0:a8cee0e1d6d9 | 18 | } |
NickRyder | 0:a8cee0e1d6d9 | 19 | |
NickRyder | 0:a8cee0e1d6d9 | 20 | void SiPM::setinterval_us(int t) { |
NickRyder | 0:a8cee0e1d6d9 | 21 | interval = t; |
NickRyder | 0:a8cee0e1d6d9 | 22 | } |
NickRyder | 0:a8cee0e1d6d9 | 23 | |
NickRyder | 0:a8cee0e1d6d9 | 24 | void SiPM::setdeadtime_us(int t) { |
NickRyder | 0:a8cee0e1d6d9 | 25 | deadtime = t; |
NickRyder | 0:a8cee0e1d6d9 | 26 | } |
NickRyder | 0:a8cee0e1d6d9 | 27 | |
NickRyder | 0:a8cee0e1d6d9 | 28 | void SiPM::trigger() { |
NickRyder | 0:a8cee0e1d6d9 | 29 | ntrig++; |
NickRyder | 0:a8cee0e1d6d9 | 30 | if (running) { |
NickRyder | 0:a8cee0e1d6d9 | 31 | ledpin = !ledpin; |
NickRyder | 0:a8cee0e1d6d9 | 32 | if (time.read_us() > deadtime) { |
NickRyder | 0:a8cee0e1d6d9 | 33 | n++; |
NickRyder | 0:a8cee0e1d6d9 | 34 | time.reset(); |
NickRyder | 0:a8cee0e1d6d9 | 35 | if (checkcoincidence) { |
NickRyder | 0:a8cee0e1d6d9 | 36 | if (other->time.read_us() < interval) { |
NickRyder | 0:a8cee0e1d6d9 | 37 | ncoincidence++; |
NickRyder | 0:a8cee0e1d6d9 | 38 | } |
NickRyder | 0:a8cee0e1d6d9 | 39 | } |
NickRyder | 0:a8cee0e1d6d9 | 40 | } |
NickRyder | 0:a8cee0e1d6d9 | 41 | } |
NickRyder | 0:a8cee0e1d6d9 | 42 | } |
NickRyder | 0:a8cee0e1d6d9 | 43 | |
NickRyder | 0:a8cee0e1d6d9 | 44 | void SiPM::reset() { |
NickRyder | 0:a8cee0e1d6d9 | 45 | n = 0; |
NickRyder | 0:a8cee0e1d6d9 | 46 | ncoincidence = 0; |
NickRyder | 0:a8cee0e1d6d9 | 47 | ntrig = 0; |
NickRyder | 0:a8cee0e1d6d9 | 48 | start(); |
NickRyder | 0:a8cee0e1d6d9 | 49 | } |
NickRyder | 0:a8cee0e1d6d9 | 50 | |
NickRyder | 0:a8cee0e1d6d9 | 51 | void SiPM::start() { |
NickRyder | 0:a8cee0e1d6d9 | 52 | running = true; |
NickRyder | 0:a8cee0e1d6d9 | 53 | time.start(); |
NickRyder | 0:a8cee0e1d6d9 | 54 | printf("# Starting SiPM.\n"); |
NickRyder | 0:a8cee0e1d6d9 | 55 | } |
NickRyder | 0:a8cee0e1d6d9 | 56 | |
NickRyder | 0:a8cee0e1d6d9 | 57 | void SiPM::stop() { |
NickRyder | 0:a8cee0e1d6d9 | 58 | running = false; |
NickRyder | 0:a8cee0e1d6d9 | 59 | printf("#Stopping SiPM.\n"); |
NickRyder | 0:a8cee0e1d6d9 | 60 | } |