ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
oncsSub_iduppetparams.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file oncsSub_iduppetparams.cc
2 #include <cstring>
3 
4 #include <arpa/inet.h>
5 
6 using namespace std;
7 
9  :oncsSubevent_w4 (data)
10 {
11 
12 }
13 
15 {
16 
17 }
18 
19 
21 {
22 
23  unsigned int *SubeventData = (unsigned int *) &SubeventHdr->data;
24 
25  int *p = new int [42];
26 
27  for ( int i = 0; i < 41; i++ )
28  {
29  p[i] = SubeventData[i];
30 
31  }
32 
33  *nwout = 41;
34  return p;
35 }
36 
37 
39 {
40 
42 
43  if ( ch < 0 || ch >40 ) return 0;
44 
45  return decoded_data1[ch];
46 
47 }
48 
49 
50 
51 int oncsSub_iduppetparams::iValue(const int ich,const char *what)
52 {
53 
55 
56  // register 1 - asic enable
57  if ( strcmp(what,"ASICENABLED") == 0 )
58  {
59  if ( ich <0 || ich >=24) return 0;
60  if ( ( decoded_data1[1] >> ich) &1 ) return 0;
61  return 1;
62  }
63 
64  if ( strcmp(what,"UDPHEADER1") == 0 )
65  {
66  return decoded_data1[9];
67  }
68 
69  if ( strcmp(what,"UDPHEADER2") == 0 )
70  {
71 
72  return decoded_data1[10];
73  }
74 
75  if ( strcmp(what,"VTHHIGH") == 0 )
76  {
77  if ( ich < 0 || ich >= 6*24) return 0;
78  return ( decoded_data1[11+ich] & 0xfff);
79  }
80 
81  if ( strcmp(what,"VTHLOW") == 0 )
82  {
83  if ( ich < 0 || ich >= 6*24) return 0;
84  return ( (decoded_data1[11+ich]>>16) & 0xfff);
85  }
86 
87  if ( strcmp(what,"CLOCKPHASE") == 0 )
88  {
89  return decoded_data1[35];
90  }
91 
92  if ( strcmp(what,"UDPTIMEOUT") == 0 )
93  {
94  return decoded_data1[36];
95  }
96 
97  if ( strcmp(what,"CLOCKCORRECTION") == 0 )
98  {
99  return (decoded_data1[38] & 0xffffff);
100  }
101 
102  if ( strcmp(what,"FIRMWAREVERSION") == 0 )
103  {
104  return decoded_data1[40];
105  }
106 
107 
108  return 0;
109 
110 }
111 
112 
114 {
115 
116 
117 
118  os << " Firmware version: 0x" << hex << iValue(0,"FIRMWAREVERSION") << dec << std::endl;
119  os << " Enabled Chips: 0x" << hex << iValue(1) << dec << std::endl;
120  os << " UDP Header 1: 0x" << hex << iValue(0,"UDPHEADER1") << dec << " " << setw(6) << iValue(0,"UDPHEADER1") << std::endl;
121  os << " UDP Header 2: 0x" << hex << iValue(0,"UDPHEADER2") << dec << " " << setw(6) << iValue(0,"UDPHEADER2") << std::endl;
122  os << " UDP Timeout: " << iValue(0,"UDPTIMEOUT") << std::endl;
123  os << " Clock Phase: 0x" << hex << iValue(0,"CLOCKPHASE") << dec << std::endl;
124  os << " Clock Correction: 0x" << hex << iValue(0,"CLOCKCORRECTION") << dec << std::endl;
125 
126  int i, k;
127 
128  os << std::endl;
129 
130  os << " VTH Low (* = ASIC enabled) " << endl;
131  os << " row | T5 T4 T3 T2 T1 T0" << endl;
132  os << " ----+------------------------------------------" << endl;
133 
134  int row = 3;
135 
136  for ( i = 23; i >= 20 ; i--)
137  {
138 
139  os << std::setw(5) << row-- << " | ";
140  for ( k = i; k >= 0 ; k-=4)
141  {
142 
143  os << std::setw(5) << iValue(k,"VTHLOW");
144  if ( iValue(k,"ASICENABLED") )
145  {
146  cout << "* ";
147  }
148  else
149  {
150  cout << " ";
151  }
152 
153  }
154  os << std::endl;
155  }
156 
157  os << std::endl;
158 
159  os << " VTH High (* = ASIC enabled) " << endl;
160 
161  row = 3;
162  for ( i = 23; i >= 20 ; i--)
163  {
164 
165  os << std::setw(5) << row-- << " | ";
166  for ( k = i; k >= 0 ; k-=4)
167  {
168 
169  os << std::setw(5) << iValue(k,"VTHHIGH");
170  if ( iValue(k,"ASICENABLED") )
171  {
172  cout << "* ";
173  }
174  else
175  {
176  cout << " ";
177  }
178 
179  }
180  os << std::endl;
181  }
182 
183  os << " ( as seen on the motherboard with towers up )" << std::endl << std::endl;
184 
185 }
186