Cat
SeqPGA.cpp
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 //
3 // Package : SeqPGA
4 //
5 // Description:
6 //
7 // Author(s) : F. Machefert -
8 // Date : 10 February 2004
9 //
10 //------------------------------------------------------------------------------
11 #include <iostream>
12 #include <sstream>
13 #include <fstream>
14 
15 // include files
16 #ifndef WIN32
17 #include <unistd.h>
18 #endif
19 #include <algorithm>
20 
21 // local include file
22 #include "SeqPGA.h"
23 
24 
25 //=============================================================================
26 // Standard constructor, initializes variables
27 //=============================================================================
28 
30  setType("SeqPGA");
31  setId(0);
33  debug("SeqPGA built.","SeqPGA::SeqPGA");
34 
35  m_usb = new UsbFTMLInterface();
36  m_usb->setName("Usb");
37  addChild(m_usb);
38 
39  m_usbi2c=new UsbMLI2cBus();
40  m_usbi2c->setName("UsbI2c");
42 
43  m_usbspi=new UsbMLSpiBus();
44  m_usbspi->setName("UsbSpi");
46 
47  m_reg=new Register();
48  m_reg->io()->defDataU8(2);
49  m_reg->setName("UsbTestReg");
50  m_reg->setAddress(11);
52 
53  m_statusReg = new Register();
54  m_statusReg ->setName("StatusReg");
55  m_statusReg ->io()->defDataU8(2);
56  m_statusReg ->io()->setAddress(7);
59 
60  m_setupReg = new Register();
61  m_setupReg ->setName("SetupReg");
62  m_setupReg ->io()->defDataU8(2);
63  m_setupReg ->io()->setAddress(8);
66 
67  m_resetReg = new Register();
68  m_resetReg ->setName("ResetReg");
69  m_resetReg ->io()->defDataU8(2);
70  m_resetReg ->io()->setAddress(14);
73 
74  m_testSeqReg = new Register();
75  m_testSeqReg ->setName("TestSeqReg");
76  m_testSeqReg ->io()->defDataU8(2);
77  m_testSeqReg ->io()->setAddress(12);
80 
81  m_txSpiFifo = new RAM();
82  m_rxSpiFifo = new RAM();
83  m_addSpiReg = new Register();
84  m_ctrlSpiReg = new Register();
85  // m_subAddSpiReg = new Register();
86  m_transmitSpiReg = new Register();
87 
88  m_txSpiFifo ->setName("TxSpiFifo");
89  m_rxSpiFifo ->setName("RxSpiFifo");
90  m_addSpiReg ->setName("AddSpiReg");
91  m_ctrlSpiReg ->setName("CtrlSpiReg");
92  // m_subAddSpiReg ->setName("SubAddSpiReg");
93  m_transmitSpiReg ->setName("TransmitSpiReg");
94 
95  m_txSpiFifo ->setSize(16,2);
96  m_rxSpiFifo ->setSize(16,1);
97  m_addSpiReg ->io()->defDataU8(2);
98  m_ctrlSpiReg ->io()->defDataU8(2);
99  // m_subAddSpiReg ->io()->defDataU8(2);
100  m_transmitSpiReg ->io()->defDataU8(2);
101 
102  m_txSpiFifo ->io()->setAddress(2);
103  m_rxSpiFifo ->io()->setAddress(4);
104  m_addSpiReg ->io()->setAddress(6);
105  m_ctrlSpiReg ->io()->setAddress(5);
106  // m_subAddSpiReg ->io()->setAddress(3);
107  m_transmitSpiReg ->io()->setAddress(10);
108 
111  // m_subAddSpiReg ->io()->setWordSize(IOdata::Byte);
113 
118  // m_usb->addChild(m_subAddSpiReg);
120 
121  m_masterI2cReg = new Register();
122  m_masterI2cReg ->setName("I2cMasterI2cReg");
123  m_masterI2cReg ->io()->defDataU8(3);
124  m_masterI2cReg ->io()->setAddress(9);
126 
127  m_addI2cReg = new Register();
128  m_addI2cReg ->setName("AddI2cReg");
129  m_addI2cReg ->io()->defDataU8(2);
130  m_addI2cReg ->io()->setAddress(1);
132 
135 
136 }
137 
138 //=============================================================================
139 //
140 //=============================================================================
141 
143  m_setupReg->read();
144  unsigned int data=m_setupReg->io()->dataU8()[0];
145  if (value) data |= 8 ;
146  else data &= ~8 ;
147  m_setupReg->io()->setU8(0,data);
148  return m_setupReg->write();
149 }
150 
152  m_setupReg->read();
153  /*
154  if (StatusCode::SUCCESS == m_setupReg->read()) {
155  error("I2c register setupReg error", "UsbMLI2cBus::spiGBTSCA");
156  return false;
157  }*/
158  return ( ( m_setupReg->io()->dataU8(0) >> 3 ) & 1 ) ;
159 }
160 
161 //=============================================================================
162 //
163 //=============================================================================
164 
166  m_setupReg->read();
167  unsigned int data=m_setupReg->io()->dataU8()[0];
168  if (!value) data |= 2 ;
169  else data &= ~2 ;
170  m_setupReg->io()->setU8(0,data);
171  return m_setupReg->write();
172 }
173 
175  m_setupReg->read();
176  /*
177  if (StatusCode::SUCCESS == m_setupReg->read()) {
178  error("I2c register setupReg error", "UsbMLI2cBus::spiGBTSCA");
179  return false;
180  }*/
181  return (! ( m_setupReg->io()->dataU8(0) & 2 ) ) ;
182 }
183 
184 //=============================================================================
185 //
186 //=============================================================================
187 
189  m_setupReg->read();
190  unsigned int data=m_setupReg->io()->dataU8()[1];
191  if (value) data |= 4 ;
192  else data &= ~4 ;
193  m_setupReg->io()->setU8(1,data);
194  return m_setupReg->write();
195 }
196 
198  m_setupReg->read();
199  return ( ( ( m_setupReg->io()->dataU8(1) )>> 2 ) & 1 ) ;
200 }
201 
202 //=============================================================================
203 //
204 //=============================================================================
205 
207  m_setupReg->read();
208  unsigned int data=m_setupReg->io()->dataU8()[1];
209  if (value) data |= 8 ;
210  else data &= ~8 ;
211  m_setupReg->io()->setU8(1,data);
212  return m_setupReg->write();
213 }
214 
216  m_setupReg->read();
217  return ( ( ( m_setupReg->io()->dataU8(1) )>> 3 ) & 1 ) ;
218 }
219 
220 //=============================================================================
221 //
222 //=============================================================================
223 /*
224 StatusCode SeqPGA::setSpiDataTx( unsigned long int value ){
225  m_txSpiReg->io()->setU8(0,value&0xFF);
226  m_txSpiReg->io()->setU8(1,(value>>8)& 0xFF);
227  return m_txSpiReg->write();
228 }
229 
230 unsigned long int SeqPGA::spiDataTx(){
231  m_txSpiReg->read();
232  return ( m_txSpiReg->io()->dataU8(0) + (m_txSpiReg->io()->dataU8(1)<<8) ) ;
233 }
234 */
235 //=============================================================================
236 //
237 //=============================================================================
238 /*
239 StatusCode SeqPGA::setSpiDataRx( unsigned long int value ){
240  m_rxSpiReg->io()->setU8(0,value&0xFF);
241  m_rxSpiReg->io()->setU8(1,(value>>8) & 0xFF);
242  return m_rxSpiReg->write();
243 }
244 
245 unsigned long int SeqPGA::spiDataRx(){
246  m_rxSpiReg->read();
247  // m_rxSpiReg->io()->dump(0);
248  return ( m_rxSpiReg->io()->dataU8(0) + (m_rxSpiReg->io()->dataU8(1)<<8) ) ;
249 }
250 */
251 //=============================================================================
252 //
253 //=============================================================================
254 
255 StatusCode SeqPGA::setSpiAdd( unsigned long int value ){
256  m_addSpiReg->io()->setU8(0,value&0xFF);
257  m_addSpiReg->io()->setU8(1,(value>>8) & 0xFF);
258  StatusCode err= m_addSpiReg->write();
259 
260  return err;
261 }
262 
263 unsigned long int SeqPGA::spiAdd(){
264  m_addSpiReg->read();
265  /*
266  if (StatusCode::SUCCESS == m_txSpiReg->read()) {
267  error("TX register txSpiReg error", "UsbMLSpiBus::dataTx");
268  return false;
269  }
270  */
271  return ( m_addSpiReg->io()->dataU8(0) + (m_addSpiReg->io()->dataU8(1)<<8) ) ;
272 }
273 
274 //=============================================================================
275 //
276 //=============================================================================
277 
278 StatusCode SeqPGA::setSpiSubAdd( unsigned long int value ){
279  m_spiSubAdd = value & 0x7F;
280 }
281 
282 unsigned long int SeqPGA::spiSubAdd(){
283  return ( m_spiSubAdd ) ;
284 }
285 
286 //=============================================================================
287 //
288 //=============================================================================
289 /*
290 StatusCode SeqPGA::spiRead( ){
291  unsigned int val = m_subAddSpiReg->io()->dataU8(0);
292  val |= 0x80;
293  m_subAddSpiReg->io()->setU8(0,val);
294  m_subAddSpiReg->io()->setU8(1,0);
295  m_subAddSpiReg->write();
296  //m_subAddSpiReg->io()->dump(0);
297  return m_transmitSpiReg->write();
298 }
299 */
300 
301 /*
302 StatusCode SeqPGA::spiWrite(){
303  unsigned int val = m_subAddSpiReg->io()->dataU8(0);
304  val &= 0x7F;
305  m_subAddSpiReg->io()->setU8(0,val);
306  m_subAddSpiReg->io()->setU8(1,0);
307  m_subAddSpiReg->write();
308  // m_subAddSpiReg->io()->dump(0);
309  return m_transmitSpiReg->write();
310 }
311 */
312 
313 /*
314 unsigned long int SeqPGA::spiRead (unsigned long int subadd) {
315  setSpiSubAdd(subadd);
316  spiRead();
317  return spiDataRx();
318 }
319 */
320 
321 StatusCode SeqPGA::spiWrite(unsigned int subadd, unsigned int nwords, unsigned int *values){
322  unsigned int val = subadd & 0x7F;
323  m_txSpiFifo->setSize(16,nwords+1);
324  m_ctrlSpiReg->io()->setU8(0,nwords&0xFF);
325  m_ctrlSpiReg->io()->setU8(1,(nwords>>8)&0xFF);
326  m_ctrlSpiReg->write();
327  m_txSpiFifo->io()->setU8(0,val);
328  m_txSpiFifo->io()->setU8(1,0);
329  for (int w=0; w<nwords; ++w) {
330  m_txSpiFifo->io()->setU8(2*w+2,values[w]&0xFF);
331  m_txSpiFifo->io()->setU8(2*w+3,(values[w]>>8)&0xFF);
332  }
333  m_txSpiFifo->write();
334  return m_transmitSpiReg->write();
335 }
336 
337 StatusCode SeqPGA::spiRead (unsigned int subadd, unsigned int nwords, unsigned int *values) {
338  unsigned int val = subadd | 0x80 ;
339  m_txSpiFifo->setSize(16,1);
340  m_rxSpiFifo->setSize(16,nwords+1);
341  m_ctrlSpiReg->io()->setU8(0,(nwords+1)&0xFF);
342  m_ctrlSpiReg->io()->setU8(1,((nwords+1)>>8)&0xFF);
343  m_ctrlSpiReg->write();
344  m_txSpiFifo->io()->setU8(0,val);
345  m_txSpiFifo->io()->setU8(1,0);
346  m_txSpiFifo->write();
347  StatusCode status = m_transmitSpiReg->write();
348  // usleep(100000);
349  m_rxSpiFifo->read();
350  for (int w=0; w<nwords; ++w) {
351  values[w]=((m_rxSpiFifo->io()->dataU8(2*w+2))&0xFF)+
352  (((m_rxSpiFifo->io()->dataU8(2*w+3))&0xFF)<<8);
353  }
354  return status;
355 }
356 
357 StatusCode SeqPGA::spiWrite(unsigned int subadd, unsigned int nwords, PyObject* value){
358  unsigned int val = subadd & 0x7F;
359  m_txSpiFifo->setSize(16,nwords+1);
360  m_ctrlSpiReg->io()->setU8(0,nwords&0xFF);
361  m_ctrlSpiReg->io()->setU8(1,(nwords>>8)&0xFF);
362  m_ctrlSpiReg->write();
363  // m_ctrlSpiReg->read();
364  // m_ctrlSpiReg->dump();
365  m_txSpiFifo->io()->setU8(0,val);
366  m_txSpiFifo->io()->setU8(1,0);
367  for (int w=0; w<nwords; ++w) {
368  val = PyInt_AsLong(PyList_GetItem(value,w));
369  m_txSpiFifo->io()->setU8(2*w+2,val&0xFF);
370  m_txSpiFifo->io()->setU8(2*w+3,(val>>8)&0xFF);
371  }
372  // m_txSpiFifo->dump();
373  m_txSpiFifo->write();
374  return m_transmitSpiReg->write();
375 }
376 
377 PyObject* SeqPGA::spiRead (unsigned int subadd, unsigned int nwords) {
378  unsigned int val = subadd | 0x80 ;
379  m_txSpiFifo->setSize(16,1);
380  m_rxSpiFifo->setSize(16,nwords+1);
381  m_ctrlSpiReg->io()->setU8(0,(nwords+1)&0xFF);
382  m_ctrlSpiReg->io()->setU8(1,((nwords+1)>>8)&0xFF);
383  m_ctrlSpiReg->write();
384  // m_ctrlSpiReg->read();
385  // m_ctrlSpiReg->dump();
386  m_txSpiFifo->io()->setU8(0,val);
387  m_txSpiFifo->io()->setU8(1,0);
388  m_txSpiFifo->write();
389  StatusCode status = m_transmitSpiReg->write();
390  // usleep(100000);
391  m_rxSpiFifo->read();
392  PyObject* values = PyList_New(0);
393  for (int w=0; w<nwords; ++w) {
394  // m_rxSpiFifo->dump();
395  PyList_Append(values,
396  PyInt_FromLong( (long int) (
397  ((m_rxSpiFifo->io()->dataU8(2*w+2))&0xFF) +
398  (((m_rxSpiFifo->io()->dataU8(2*w+3))&0xFF)<<8)
399  )));
400  }
401  return values;
402 }
403 
404 StatusCode SeqPGA::spiWrite(unsigned int subadd, unsigned int value){
405  unsigned int val = subadd & 0x7F;
406  m_txSpiFifo->setSize(16,2);
407  m_ctrlSpiReg->io()->setU8(0,1);
408  m_ctrlSpiReg->io()->setU8(1,0);
409  m_ctrlSpiReg->write();
410  // m_ctrlSpiReg->read();
411  m_txSpiFifo->io()->setU8(0,val);
412  m_txSpiFifo->io()->setU8(1,0);
413  m_txSpiFifo->io()->setU8(2,value&0xFF);
414  m_txSpiFifo->io()->setU8(3,(value>>8)&0xFF);
415  m_txSpiFifo->write();
416  // m_txSpiFifo->dump();
417  return m_transmitSpiReg->write();
418 }
419 
420 unsigned int SeqPGA::spiRead (unsigned int subadd){
421  unsigned int val = subadd | 0x80 ;
422  m_txSpiFifo->setSize(16,1);
423  m_rxSpiFifo->setSize(16,1);
424  m_ctrlSpiReg->io()->setU8(0,1);
425  m_ctrlSpiReg->io()->setU8(1,0);
426  m_ctrlSpiReg->write();
427  m_txSpiFifo->io()->setU8(0,val);
428  m_txSpiFifo->io()->setU8(1,0);
429  m_txSpiFifo->write();
430  // m_txSpiFifo->dump();
431  StatusCode status = m_transmitSpiReg->write();
432  m_rxSpiFifo->read();
433  // m_rxSpiFifo->dump();
434  //usleep(50);
435  return ((m_rxSpiFifo->io()->dataU8(0))&0xFF) + (((m_rxSpiFifo->io()->dataU8(1))&0xFF)<<8);
436 }
437 
438 //=============================================================================
439 //
440 //=============================================================================
441 
443  m_setupReg->read();
444  unsigned int data=m_setupReg->io()->dataU8()[0];
445  if (!value) data |= 1 ;
446  else data &= ~1 ;
447  m_setupReg->io()->setU8(0,data);
448  return m_setupReg->write();
449 }
450 
452  m_setupReg->read();
453  return (! ( m_setupReg->io()->dataU8(0) & 1 ) ) ;
454 }
455 
456 //=============================================================================
457 //
458 //=============================================================================
459 
460 StatusCode SeqPGA::setI2cBuffer( unsigned long int value ){
461  m_i2cBuffer = value;
462  return StatusCode::SUCCESS;
463 }
464 
465 unsigned long int SeqPGA::i2cBuffer(){
466  return m_i2cBuffer;
467 }
468 
469 //=============================================================================
470 //
471 //=============================================================================
472 
473 unsigned long int SeqPGA::i2cData(){
474  // m_masterI2cReg->io()->dump(0);
475  return ( ((m_masterI2cReg->io()->dataU8(0))&0xFF) ) ;
476 }
477 
478 //=============================================================================
479 //
480 //=============================================================================
481 
482 StatusCode SeqPGA::setI2cAdd( unsigned long int value ){
483  m_addI2cReg->io()->setU8(0,value&0xFF);
484  m_addI2cReg->io()->setU8(1,(value&0xFF00)>>8);
485  return m_addI2cReg->write();
486 }
487 
488 unsigned long int SeqPGA::i2cAdd(){
489  m_addI2cReg->read();
490  return ( m_addI2cReg->io()->dataU8(0) + (m_addI2cReg->io()->dataU8(1)<<8) ) ;
491 }
492 
493 //=============================================================================
494 //
495 //=============================================================================
496 
497 StatusCode SeqPGA::setI2cSubAdd( unsigned long int value ){
498  m_i2cSubAdd = value;
499  return StatusCode::SUCCESS;
500 }
501 
502 unsigned long int SeqPGA::i2cSubAdd(){
503  return m_i2cSubAdd;
504 }
505 
506 //=============================================================================
507 //
508 //=============================================================================
509 
511  debug("setting position of read i2c protocol","i2c read");
512  m_setupReg->read();
513  unsigned int data = m_setupReg->io()->dataU8()[0];
514  data |= (1 << 2) ;
515  m_setupReg->io()->setU8(0,data);
516  m_setupReg->write();
517 
518  debug("setting subadd value in the frame","i2c write");
519  m_masterI2cReg->io()->defDataU8(2);
520  m_masterI2cReg->io()->setU8(0,m_i2cSubAdd&0xFF);
521  m_masterI2cReg->io()->setU8(1,(m_i2cSubAdd>>8)&0xFF);
522  // m_masterI2cReg->io()->dump(0);
523 
524  debug("i2c write of the register","i2c read");
526 
527  debug("i2c read of the addressed register","i2c read");
528  m_masterI2cReg->io()->defDataU8(1);
529  m_masterI2cReg->read();
530  // m_masterI2cReg->io()->dump(0);
531 
532  return StatusCode::SUCCESS;
533 }
534 
536  debug("setting position of write i2c protocol","i2c write");
537  m_setupReg->read();
538  unsigned int data = m_setupReg->io()->dataU8()[0];
539  data &= ~(1 << 2) ;
540  m_setupReg->io()->setU8(0,data);
541  m_setupReg->write();
542 
543  debug("setting subadd value in the frame","i2c write");
544  m_masterI2cReg->io()->defDataU8(3);
545  m_masterI2cReg->io()->setU8(0,m_i2cSubAdd&0xFF);
546  m_masterI2cReg->io()->setU8(1,(m_i2cSubAdd>>8)&0xFF);
547 
548  debug("setting buffer value in the frame","i2c write");
549  m_masterI2cReg->io()->setU8(2,m_i2cBuffer&0xFF);
550  // m_masterI2cReg->io()->dump(0);
551 
552  debug("i2c write","i2c write");
553  return m_masterI2cReg->write();
554 }
555 
556 unsigned long int SeqPGA::i2cRead(unsigned long int subadd){
557  setI2cSubAdd(subadd);
558  i2cRead();
559  return i2cData();
560 }
561 
562 StatusCode SeqPGA::i2cWrite(unsigned long int subadd, unsigned long int value){
563  setI2cSubAdd(subadd);
564  setI2cBuffer(value);
565  return i2cWrite();
566 }
567 
StatusCode setExtTrig(bool)
Definition: SeqPGA.cpp:142
Definition: RAM.h:16
unsigned int m_i2cBuffer
Definition: SeqPGA.h:207
Register * m_transmitSpiReg
Definition: SeqPGA.h:203
StatusCode setI2cBuffer(unsigned long int)
Definition: SeqPGA.cpp:460
unsigned int m_i2cSubAdd
Definition: SeqPGA.h:206
Register * m_statusReg
Definition: SeqPGA.h:193
StatusCode setSize(unsigned int, unsigned int)
Definition: RAM.cpp:29
StatusCode setSpiAdd(unsigned long int)
Definition: SeqPGA.cpp:255
void add(int attribut)
Definition: Attrib.h:67
virtual StatusCode write()
Definition: IOobject.h:80
StatusCode setU8(unsigned long int, U8)
Definition: IOdata.cpp:43
bool spiEnable()
Definition: SeqPGA.cpp:197
void setName(std::string name)
Definition: Object.h:51
StatusCode setSpiEnable(bool)
Definition: SeqPGA.cpp:188
bool ledEnable()
Definition: SeqPGA.cpp:215
unsigned int m_spiSubAdd
Definition: SeqPGA.h:205
StatusCode setLedEnable(bool)
Definition: SeqPGA.cpp:206
RAM * m_rxSpiFifo
Definition: SeqPGA.h:199
bool extTrig()
Definition: SeqPGA.cpp:151
Register * m_masterI2cReg
Definition: SeqPGA.h:209
Register * m_ctrlSpiReg
Definition: SeqPGA.h:201
virtual StatusCode read()
Definition: IOobject.h:73
void setType(std::string type)
Definition: Object.h:52
StatusCode setI2cGBTSCA(bool)
Definition: SeqPGA.cpp:442
Register * m_reg
Definition: SeqPGA.h:191
void setId(unsigned char id)
Definition: Object.h:53
StatusCode setSpiSubAdd(unsigned long int)
Definition: SeqPGA.cpp:278
void debug(std::string mymsg)
Definition: Object.h:37
def data(object, stream=None)
Definition: shell.py:150
Register * m_addSpiReg
Definition: SeqPGA.h:200
StatusCode setAddress(U32 address)
Definition: IOdata.h:51
StatusCode i2cRead()
Definition: SeqPGA.cpp:510
SeqPGA()
Definition: SeqPGA.cpp:29
StatusCode setI2cAdd(unsigned long int)
Definition: SeqPGA.cpp:482
Register * m_resetReg
Definition: SeqPGA.h:195
bool i2cGBTSCA()
Definition: SeqPGA.cpp:451
UsbFTMLInterface * m_usb
Definition: SeqPGA.h:187
unsigned long int i2cSubAdd()
Definition: SeqPGA.cpp:502
StatusCode spiWrite(unsigned int, unsigned int, unsigned int *)
Definition: SeqPGA.cpp:321
UsbMLI2cBus * m_usbi2c
Definition: SeqPGA.h:188
UsbMLSpiBus * m_usbspi
Definition: SeqPGA.h:189
unsigned long int i2cData()
Definition: SeqPGA.cpp:473
RAM * m_txSpiFifo
Definition: SeqPGA.h:198
void setAddress(U32 address)
Definition: IOobject.h:84
U8 * dataU8()
Definition: IOdata.h:214
StatusCode i2cWrite()
Definition: SeqPGA.cpp:535
unsigned long int spiAdd()
Definition: SeqPGA.cpp:263
unsigned long int spiSubAdd()
Definition: SeqPGA.cpp:282
virtual void addChild(Hierarchy *element)
Definition: Hierarchy.cpp:83
Register * m_testSeqReg
Definition: SeqPGA.h:196
Register * m_setupReg
Definition: SeqPGA.h:194
StatusCode setWordSize(IOdata::WordSize wordSize)
Definition: IOdata.h:126
Register * m_addI2cReg
Definition: SeqPGA.h:210
void defDataU8(unsigned long size)
Definition: IOdata.h:179
StatusCode setI2cSubAdd(unsigned long int)
Definition: SeqPGA.cpp:497
StatusCode spiRead(unsigned int, unsigned int, unsigned int *)
Definition: SeqPGA.cpp:337
bool spiGBTSCA()
Definition: SeqPGA.cpp:174
IOdata * io()
Definition: IOobject.h:66
unsigned long int i2cBuffer()
Definition: SeqPGA.cpp:465
unsigned long int i2cAdd()
Definition: SeqPGA.cpp:488
StatusCode setSpiGBTSCA(bool)
Definition: SeqPGA.cpp:165