-
Notifications
You must be signed in to change notification settings - Fork 1
/
PMTControl.h
65 lines (42 loc) · 1.48 KB
/
PMTControl.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef PMTControl_hxx_seen
#define PMTControl_hxx_seen
#include "KOsocket.h"
#include "odbxx.h"
#include "midas.h"
#include <array>
#include <unistd.h>
class PMTControl {
public:
PMTControl(KOsocket *socket, int index);
int GetStatus(char *pevent, INT off);
// callback function
void callback(midas::odb &o);
// Check which PMTs are plugged in and responding
int CheckActivePMTs();
private:
std::vector<bool> fActivePMTs;
// Read modbus PMT value
float ReadModbusValue(std::string command,int chan);
// read multiple modbus registers
std::vector<float> PMTControl::ReadMultiModbusValue(std::string command,int chan);
// read multiple modbus registers
std::vector<float> PMTControl::ReadFreqModbusValue(std::string command,int chan);
bool SetCommand(std::string command, float value, int ch = -1);
bool SetDefaults();
// This function returns the conversion factor for different modbus registers
float GetModbusFactor(std::string command);
// Setup the callback for PMT Settings directory
midas::odb pmt_watch;
// Pointer to socket to BRB
KOsocket *fSocket;
int get_frontend_index(){return fe_index;};
int fe_index;
// Let's read these variables once, then maybe cache them.
std::vector<float> ramp_rate_up;
std::vector<float> ramp_rate_down;
std::vector<float> trip_time;
std::vector<float> trip_threshold;
// Keep track of whether this is first readout event. Some variables we only read once
bool fFirstEvent;
};
#endif