StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
DSM.hh
1 //
2 // Pibero Djawotho <pibero@comp.tamu.edu>
3 // Texas A&M University Cyclotron Institute
4 // 1 Jan 2009
5 //
6 
7 #ifndef DSM_HH
8 #define DSM_HH
9 
10 #include <string>
11 #include <sstream>
12 #include <iomanip>
13 #include <stdio.h>
14 using namespace std;
15 
16 struct DSM {
17  enum { NREGISTERS = 32, NCHANNELS = 16, LUT_SIZE = 16, INFO_SIZE = 64 };
18 
19  string name;
20  int registers[NREGISTERS];
21  short channels[NCHANNELS];
22  char lut[LUT_SIZE];
23  int info[INFO_SIZE];
24  int output;
25 
26  DSM(const string& name = "") : name(name) { clear(); }
27  void clear();
28  void setName(const string& basename, int layer, int dsm);
29  void dump();
30 };
31 
32 inline void DSM::clear()
33 {
34  fill(registers,registers+NREGISTERS,0);
35  fill(channels,channels+NCHANNELS,0);
36  fill(lut,lut+LUT_SIZE,0);
37  fill(info,info+INFO_SIZE,0);
38  output = 0;
39 }
40 
41 inline void DSM::setName(const string& basename, int layer, int dsm)
42 {
43  ostringstream ss;
44  ss << basename << layer << setw(2) << setfill('0') << dsm+1;
45  name = ss.str();
46 }
47 
48 inline void DSM::dump()
49 {
50  printf("%s: ", name.c_str());
51  for (int ch = 0; ch < 8; ++ch)
52  printf("%04x ", (unsigned short)channels[ch]);
53  printf("\n");
54 }
55 
56 #endif // DSM_HH
Definition: DSM.hh:16