SiPM basded cosmic ray detector data acquisition system.

Dependencies:   DNSResolver EthernetNetIf FatFileSystem SDFileSystem mbed

Committer:
NickRyder
Date:
Mon Jan 21 13:51:58 2013 +0000
Revision:
0:a8cee0e1d6d9
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew 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 }