AliRoot Core  3dc7879 (3dc7879)
AliMUONGlobalCrateConfig.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 // $Id$
17 // $MpId: AliMpTrigger.cxx,v 1.4 2006/05/24 13:58:52 ivana Exp $
18 
19 //-----------------------------------------------------------------------------
20 // Class AliMUONGlobalCrateConfig
21 // --------------------
22 // The class defines the configuration of trigger crate
23 // Author: Ch. Finck, Subatech Nantes
24 //-----------------------------------------------------------------------------
25 
27 #include "AliMpConstants.h"
28 #include "AliMpFiles.h"
29 #include "AliMpHelper.h"
30 
31 #include "AliLog.h"
32 
33 #include <TArrayI.h>
34 #include <Riostream.h>
35 #include <TSystem.h>
36 
37 using std::ifstream;
38 using std::endl;
39 using std::ios;
43 
44 const Char_t* AliMUONGlobalCrateConfig::fgkJtagName = "JtagBoard";
45 const Char_t* AliMUONGlobalCrateConfig::fgkFirstDarcName = "LeftDarcBoard";
46 const Char_t* AliMUONGlobalCrateConfig::fgkSecondDarcName = "RightDarcBoard";
47 const Char_t* AliMUONGlobalCrateConfig::fgkGlobalName = "GlobalBoard";
48 const Char_t* AliMUONGlobalCrateConfig::fgkFetName = "FetBoard";
49 
50 const Int_t AliMUONGlobalCrateConfig::fgkGlobalNofRegisters = 13;
51 const Int_t AliMUONGlobalCrateConfig::fgkFetNofRegisters = 7;
52 const Int_t AliMUONGlobalCrateConfig::fgkJtagNofLines = 4;
53 const Int_t AliMUONGlobalCrateConfig::fgkDarcNofLines = 8;
54 //______________________________________________________________________________
56  : TNamed("GlobalCrate", "mapping trigger global crate"),
57  fGlobalCrateEnable(0x0),
58  fJtagVmeAddr(0x0),
59  fJtagClockDiv(0),
60  fJtagRxPhase(0),
61  fJtagRdDelay(0),
62  fEnableJtag(0),
63  fJtagCrateName(),
64  fFirstDarcCrateName(),
65  fSecondDarcCrateName(),
66  fFirstDarcVmeAddr(0x0),
67  fFirstDarcType(0),
68  fFirstDarcDisable(0),
69  fFirstDarcL0Delay(0),
70  fFirstDarcL1TimeOut(0),
71  fFirstDarcGlobalL0(0),
72  fFirstDarcConfig(0),
73  fSecondDarcVmeAddr(0x0),
74  fSecondDarcType(0),
75  fSecondDarcDisable(0),
76  fSecondDarcL0Delay(0),
77  fSecondDarcL1TimeOut(0),
78  fSecondDarcGlobalL0(0),
79  fSecondDarcConfig(0),
80  fGlobalVmeAddr(0x0),
81  fFetVmeAddr(0x0),
82  fEnableFirstDarc(0),
83  fEnableSecondDarc(0)
84 {
86 
87  for (Int_t i = 0; i < fgkGlobalNofRegisters; ++i)
88  fGlobalRegisters[i] = 0;
89 
90  for (Int_t j = 0; j < fgkFetNofRegisters; ++j)
91  fFetRegisters[j] = 0;
92 }
93 
94 //______________________________________________________________________________
96 {
98 }
99 
100 //______________________________________________________________________________
102 {
105 
106  TString inFileName(fileName);
107  if ( inFileName == "" )
109 
110  inFileName = gSystem->ExpandPathName(inFileName.Data());
111 
112  ifstream in(inFileName.Data(), ios::in);
113 
114  if (!in) {
116  << "Global Trigger Board Mapping File " << fileName.Data() << " not found" << endl;
117  return kFALSE;
118  }
119 
120  Int_t nDarc = 0;
121 
122  ULong_t addr;
123  UInt_t item;
124  TArrayI list;
125  Bool_t oldFormat = kFALSE;
126 
127  char line[255];
128  in.getline(line, 255);
129  TString tmp(AliMpHelper::Normalize(line));
130 
131  if (!tmp.Contains(GetName()))
132  AliWarning("Wrong Global Crate File");
133 
134  // enable
135  in.getline(line, 255);
136  tmp = AliMpHelper::Normalize(line);
137  UInt_t en = 0;
138  sscanf(tmp.Data(), "%x", &en);
140 
141  in.getline(line, 255);
142  tmp = AliMpHelper::Normalize(line);
143 
144  if (tmp.Contains(GetJtagName())) {
145 
146  // old version, old regional boards
147 
148  oldFormat = kTRUE;
149  AliInfo(Form("Old format of global config"));
150 
151  } else {
152 
153  if (tmp.Contains(GetFirstDarcName())) {
154 
155  // new version, new regional boards
156 
157  oldFormat = kFALSE;
158  AliInfo(Form("New format of global config"));
159 
160  }
161 
162  }
163 
164  if (oldFormat) {
165 
166  // vme addr
167  in.getline(line, 255);
168  tmp = AliMpHelper::Normalize(line);
169  ULong_t addr;
170  sscanf(tmp.Data(), "%lx", &addr);
171  SetJtagVmeAddr(addr);
172  AliDebug(1, Form("Jtag Vme Address: 0x%lx", addr));
173 
174  // clk div, rx phase, read delay
175  in.getline(line, 255);
176  tmp = AliMpHelper::Normalize(line);
177  TArrayI list;
178  AliMpHelper::DecodeName(line, ' ', list);
179  SetJtagClockDiv(list[0]);
180  SetJtagRxPhase(list[1]);
181  SetJtagRdDelay(list[2]);
182  AliDebug(1, Form("Jtag Clock Div: %d, Rx Phase: %d, Read Delay %d", list[0], list[1], list[2]));
183 
184  // enable
185  in.getline(line, 255);
186  tmp = AliMpHelper::Normalize(line);
187  AliMpHelper::DecodeName(line, ' ', list);
188  UChar_t enable = 0;
189  for (Int_t i = 0; i < GetJtagNofLines(); ++i)
190  enable |= (list[i] << i);
191  SetEnableJtag(enable);
192  AliDebug(1, Form("Jtag Enable: 0x%x", enable));
193 
194  for (Int_t i = 0; i < GetJtagNofLines(); ++i) {
195  in.getline(line, 255);
196  for (Int_t j = 0; j < GetJtagNofLines(); ++j) {
197  in.getline(line, 255);
198  tmp = AliMpHelper::Normalize(line);
199  SetJtagCrateName(i*GetJtagNofLines() + j, tmp);
200  //AliDebug(1, Form("Jtag Crate Name: %s", tmp.Data()));
201  }
202  }
203 
204  in.getline(line, 255);
205  tmp = AliMpHelper::Normalize(line);
206 
207  } // end old format
208 
209  // vme addr
210  in.getline(line, 255);
211  tmp = AliMpHelper::Normalize(line);
212  sscanf(tmp.Data(), "%lx", &addr);
213  if (addr) nDarc++;
214  SetFirstDarcVmeAddr(addr);
215  AliDebug(1, Form("First Darc Vme Address: 0x%lx", addr));
216 
217  // type
218  in.getline(line, 255);
219  tmp = AliMpHelper::Normalize(line);
220  SetFirstDarcType(tmp.Atoi());
221  AliDebug(1, Form("First Darc Type: %d", tmp.Atoi()));
222 
223  // disable
224  in.getline(line, 255);
225  tmp = AliMpHelper::Normalize(line);
226  sscanf(tmp.Data(), "%x", &item);
227  SetFirstDarcDisable(item);
228  AliDebug(1, Form("First Darc Disable: 0x%x", item));
229 
230  // L0
231  in.getline(line, 255);
232  tmp = AliMpHelper::Normalize(line);
233  sscanf(tmp.Data(), "%x", &item);
234  SetFirstDarcL0Delay(item);
235  AliDebug(1, Form("First Darc L0 Delay: 0x%x", item));
236 
237  // L1
238  in.getline(line, 255);
239  tmp = AliMpHelper::Normalize(line);
240  sscanf(tmp.Data(), "%x", &item);
241  SetFirstDarcL1TimeOut(item);
242  AliDebug(1, Form("First Darc L1 Time Out: 0x%x", item));
243 
244  // Global L0 delay
245  in.getline(line, 255);
246  tmp = AliMpHelper::Normalize(line);
247  sscanf(tmp.Data(), "%x", &item);
248  SetFirstDarcGlobalL0(item);
249  AliDebug(1, Form("First Darc Global L0 delay: 0x%x", item));
250 
251  // Trigger configuration
252  in.getline(line, 255);
253  tmp = AliMpHelper::Normalize(line);
254  sscanf(tmp.Data(), "%x", &item);
255  SetFirstDarcConfig(item);
256  AliDebug(1, Form("First Darc Config: 0x%x", item));
257 
258  if (!oldFormat) {
259 
260  // enable
261  in.getline(line, 255);
262  tmp = AliMpHelper::Normalize(line);
263  AliMpHelper::DecodeName(line, ' ', list);
264  UChar_t enable = 0;
265  for (Int_t i = 0; i < GetDarcNofLines(); ++i)
266  enable |= (list[i] << i);
267  SetEnableFirstDarc(enable);
268  AliDebug(1, Form("First Darc Enable: 0x%x", enable));
269 
270  for (Int_t i = 0; i < GetDarcNofLines(); ++i) {
271  in.getline(line, 255);
272  tmp = AliMpHelper::Normalize(line);
273  SetFirstDarcCrateName(i, tmp);
274  //AliInfo(Form("First Darc Crate Name: %s", tmp.Data()));
275  }
276 
277  } // end new format First Darc
278 
279  in.getline(line, 255);
280  tmp = AliMpHelper::Normalize(line);
281  if (tmp.Contains(GetSecondDarcName())) {
282 
283  // vme addr
284  in.getline(line, 255);
285  tmp = AliMpHelper::Normalize(line);
286  sscanf(tmp.Data(), "%lx", &addr);
287  if (addr) nDarc++;
288  SetSecondDarcVmeAddr(addr);
289  AliDebug(1, Form("Second Darc Vme Address: 0x%lx", addr));
290 
291  // type
292  in.getline(line, 255);
293  tmp = AliMpHelper::Normalize(line);
294  SetSecondDarcType(tmp.Atoi());
295  AliDebug(1, Form("Second Darc Type: %d", tmp.Atoi()));
296 
297  // enable
298  in.getline(line, 255);
299  tmp = AliMpHelper::Normalize(line);
300  sscanf(tmp.Data(), "%x", &item);
301  SetSecondDarcDisable(item);
302  AliDebug(1, Form("Second Darc Disable: 0x%x", item));
303 
304  // L0
305  in.getline(line, 255);
306  tmp = AliMpHelper::Normalize(line);
307  sscanf(tmp.Data(), "%x", &item);
308  SetSecondDarcL0Delay(item);
309  AliDebug(1, Form("Second Darc L0 Delay: 0x%x", item));
310 
311  // L1
312  in.getline(line, 255);
313  tmp = AliMpHelper::Normalize(line);
314  sscanf(tmp.Data(), "%x", &item);
316  AliDebug(1, Form("Second Darc L1 Time Out: 0x%x", item));
317 
318  // Global L0 delay
319  in.getline(line, 255);
320  tmp = AliMpHelper::Normalize(line);
321  sscanf(tmp.Data(), "%x", &item);
322  SetSecondDarcGlobalL0(item);
323  AliDebug(1, Form("Second Darc Global L0 delay: 0x%x", item));
324 
325  // Trigger configuration
326  in.getline(line, 255);
327  tmp = AliMpHelper::Normalize(line);
328  sscanf(tmp.Data(), "%x", &item);
329  SetSecondDarcConfig(item);
330  AliDebug(1, Form("Second Darc Config: 0x%x", item));
331 
332  } // end Second Darc old and new format
333 
334  if (!oldFormat) {
335 
336  // enable
337  in.getline(line, 255);
338  tmp = AliMpHelper::Normalize(line);
339  AliMpHelper::DecodeName(line, ' ', list);
340  UChar_t enable = 0;
341  for (Int_t i = 0; i < GetDarcNofLines(); ++i)
342  enable |= (list[i] << i);
343  SetEnableSecondDarc(enable);
344  AliDebug(1, Form("Second Darc Enable: 0x%x", enable));
345 
346  for (Int_t i = 0; i < GetDarcNofLines(); ++i) {
347  in.getline(line, 255);
348  tmp = AliMpHelper::Normalize(line);
349  SetSecondDarcCrateName(i, tmp);
350  //AliInfo(Form("Second Darc Crate Name: %s", tmp.Data()));
351  }
352 
353  } // end new format Second Darc
354 
355  in.getline(line, 255);
356  tmp = AliMpHelper::Normalize(line);
357  if (tmp.Contains(GetGlobalName())) {
358 
359  in.getline(line, 255);
360  tmp = AliMpHelper::Normalize(line);
361  sscanf(tmp.Data(), "%lx", &addr);
362  SetGlobalVmeAddr(addr);
363  AliDebug(1, Form("Global Vme Address: 0x%lx", addr));
364 
365  for (Int_t i = 0; i < GetGlobalNofRegisters(); ++i) {
366  in.getline(line, 255);
367  tmp = AliMpHelper::Normalize(line);
368  UInt_t reg;
369  sscanf(tmp.Data(), "%x", &reg);
370  SetGlobalRegister(i, reg);
371  AliDebug(1, Form("Global Register %d: 0x%x", i, reg));
372  }
373 
374  } // end Global board old and new format
375 
376  in.getline(line, 255);
377  tmp = AliMpHelper::Normalize(line);
378  if (tmp.Contains(GetFetName())) {
379 
380  in.getline(line, 255);
381  tmp = AliMpHelper::Normalize(line);
382  sscanf(tmp.Data(), "%lx", &addr);
383  SetFetVmeAddr(addr);
384  AliDebug(1, Form("Fet Vme Address: 0x%lx", addr));
385 
386  for (Int_t i = 0; i < GetFetNofRegisters(); ++i) {
387  in.getline(line, 255);
388  tmp = AliMpHelper::Normalize(line);
389  UInt_t reg;
390  sscanf(tmp.Data(), "%x", &reg);
391  SetFetRegister(i, reg);
392  AliDebug(1, Form("Fet Register %d: 0x%x", i, reg));
393  }
394 
395  } // end Fet board old and new format
396 
397  return nDarc;
398 }
399 
400 //______________________________________________________________________________
401 Bool_t AliMUONGlobalCrateConfig::GetEnableJtag(Int_t index) const
402 {
404 
405  if (index > fgkJtagNofLines) {
406  AliWarning("Index size too big for Jtag line");
407  return kFALSE;
408  }
409  return ((fEnableJtag >> index) & 0x1);
410 
411 }
412 
413 //______________________________________________________________________________
414 void AliMUONGlobalCrateConfig::SetJtagCrateName(Int_t index, TString name)
415 {
418  AliWarning("Index size too big for Jtag line");
419  return;
420  }
421  fJtagCrateName[index] = name;
422 }
423 
424 //______________________________________________________________________________
425 TString AliMUONGlobalCrateConfig::GetJtagCrateName(Int_t jtagLine, Int_t index) const
426 {
429  return "";
430  else
431  return fJtagCrateName[jtagLine*fgkJtagNofLines + index];
432 }
433 
434 //______________________________________________________________________________
436 {
438 
439  if (index >= fgkDarcNofLines) {
440  AliWarning("Index size too big for First Darc line");
441  return kFALSE;
442  }
443  return ((fEnableFirstDarc >> index) & 0x1);
444 
445 }
446 
447 //______________________________________________________________________________
448 void AliMUONGlobalCrateConfig::SetFirstDarcCrateName(Int_t index, TString name)
449 {
451  if (index >= AliMpConstants::LocalBoardNofChannels()/2) {
452  AliWarning("Index size too big for First Darc line");
453  return;
454  }
455  fFirstDarcCrateName[index] = name;
456 }
457 
458 //______________________________________________________________________________
460 {
462  if (index >= AliMpConstants::LocalBoardNofChannels()/2)
463  return "";
464  else
465  return fFirstDarcCrateName[index];
466 }
467 
468 //______________________________________________________________________________
470 {
472 
473  if (index >= fgkDarcNofLines) {
474  AliWarning("Index size too big for Second Darc line");
475  return kFALSE;
476  }
477  return ((fEnableSecondDarc >> index) & 0x1);
478 
479 }
480 
481 //______________________________________________________________________________
482 void AliMUONGlobalCrateConfig::SetSecondDarcCrateName(Int_t index, TString name)
483 {
485  if (index >= AliMpConstants::LocalBoardNofChannels()/2) {
486  AliWarning("Index size too big for Second Darc line");
487  return;
488  }
489  fSecondDarcCrateName[index] = name;
490 }
491 
492 //______________________________________________________________________________
494 {
496  if (index >= AliMpConstants::LocalBoardNofChannels()/2)
497  return "";
498  else
499  return fSecondDarcCrateName[index];
500 }
501 
502 //______________________________________________________________________________
504 {
506  if (index >= fgkGlobalNofRegisters) {
507  AliWarning("Index size too big for Global Register");
508  return 0;
509  } else
510  return fGlobalRegisters[index];
511 }
512 
513 //______________________________________________________________________________
514 void AliMUONGlobalCrateConfig::SetGlobalRegister(Int_t index, UInt_t reg)
515 {
517  if (index >= fgkGlobalNofRegisters) {
518  AliWarning("Index size too big for Global Register");
519  return;
520  }
521  fGlobalRegisters[index] = reg;
522 }
523 
524 //______________________________________________________________________________
525 void AliMUONGlobalCrateConfig::SetGlobalMask(Int_t index, UInt_t mask)
526 {
528 
529  if (index >= 0 && index < 4) {
530  SetGlobalRegister(index,mask);
531  } else {
532  AliWarning(Form("Check register number of the mask (%d) \n",index));
533  }
534 
535 }
536 
537 //______________________________________________________________________________
538 UInt_t AliMUONGlobalCrateConfig::GetGlobalMask(Int_t index) const
539 {
541  if (index >= 0 && index < 4) {
542  return fGlobalRegisters[index];
543  } else {
544  AliWarning(Form("Check register number of the mask (%d) \n",index));
545  return 0;
546  }
547 }
548 
549 //______________________________________________________________________________
551 {
553 
554  // test 7th lsb
555  if (fGlobalRegisters[4] & 0x40) return kTRUE;
556 
557  return kFALSE;
558 
559 }
560 
561 //______________________________________________________________________________
563 {
565  if (index >= fgkFetNofRegisters) {
566  AliWarning("Index size too big for Fet Register");
567  return 0;
568  } else
569  return fFetRegisters[index];
570 }
571 
572 //______________________________________________________________________________
573 void AliMUONGlobalCrateConfig::SetFetRegister(Int_t index, UInt_t reg)
574 {
576  if (index >= fgkFetNofRegisters) {
577  AliWarning("Index size too big for Global Register");
578  return;
579  }
580  fFetRegisters[index] = reg;
581 }
void SetEnableJtag(UChar_t en)
Set Jtag enable word.
void SetJtagVmeAddr(ULong_t addr)
Set Jtag board VME address.
void SetFirstDarcDisable(UChar_t en)
Set disable word for First Darc board.
void SetFirstDarcType(Int_t type)
Get type for First Darc board.
TString GetJtagCrateName(Int_t jtagLine, Int_t index) const
Get Jtag Crate names.
TString GetSecondDarcCrateName(Int_t index) const
Get Second Darc Crate names.
The class defines the configuration of global crate.
#define AliErrorStream()
Definition: AliLog.h:630
void SetSecondDarcGlobalL0(UInt_t time)
set global L0 delay for Second Darc board
UInt_t GetGlobalMask(Int_t index) const
Get mask for the global input.
void SetEnableFirstDarc(UChar_t en)
Set First Darc enable word.
const Char_t * GetFetName() const
Get Global Name identifier.
void SetFirstDarcVmeAddr(ULong_t addr)
Get First Darc board VME address.
void SetJtagClockDiv(UInt_t clk)
Set Jtag board Clock Divider.
void SetSecondDarcConfig(UInt_t conf)
set configuration for Second Darc board
static const Int_t fgkFetNofRegisters
Number of registers for Fet.
static TString Normalize(const char *line)
Int_t GetJtagNofLines() const
Get number of JTag lines.
UChar_t fEnableSecondDarc
Enable mask for Second Darc lines.
void SetSecondDarcType(Int_t type)
Set type for Second Darc board.
TString fSecondDarcCrateName[8]
Crate name for the Second Darc lines.
void SetFetRegister(Int_t index, UInt_t reg)
Set register for FET.
void SetFirstDarcL0Delay(UInt_t delay)
Set L0 Delay for First Darc board.
void SetSecondDarcL1TimeOut(UInt_t time)
Set L1 Time Out for Second Darc board.
void SetSecondDarcL0Delay(UInt_t delay)
Set L0 Delay for Second Darc board.
TString fileName(const char *dir, int runNumber, const char *da, int i, const char *type)
Int_t GetDarcNofLines() const
Get number of Darc Crate lines.
#define AliWarning(message)
Definition: AliLog.h:541
Int_t GetFetNofRegisters() const
Get number of registers for FET.
void SetJtagRdDelay(UInt_t rd)
Set Jtag board Read out Delay.
void SetFirstDarcCrateName(Int_t index, TString name)
Set First Darc Crate names.
TString fFirstDarcCrateName[8]
Crate name for the First Darc lines.
void SetFirstDarcGlobalL0(UInt_t time)
set global L0 delay for First Darc board
UChar_t GetEnableFirstDarc() const
Get First Darc enable word.
#define AliInfo(message)
Definition: AliLog.h:484
UInt_t fGlobalRegisters[13]
Global registers.
void SetFirstDarcL1TimeOut(UInt_t time)
Set L1 Time Out for First Darc board.
void SetGlobalVmeAddr(ULong_t addr)
Set Global board VME address.
Bool_t GetMasksOn() const
Indicates if global masks are active on global inputs.
void SetFetVmeAddr(ULong_t addr)
Set FET board VME address.
const Char_t * GetSecondDarcName() const
Get Second Darc Name identifier.
static const Int_t fgkJtagNofLines
Number of lines for Jtag.
static const Int_t fgkDarcNofLines
Number of lines for Darc Crate.
void SetFirstDarcConfig(UInt_t conf)
set configuration for First Darc board
static Int_t LocalBoardNofChannels()
Max number of channels per local board.
void SetSecondDarcDisable(UChar_t en)
Set disable word for Second Darc board.
void SetSecondDarcCrateName(Int_t index, TString name)
Set Second Darc Crate names.
static const Int_t fgkGlobalNofRegisters
Number of registers for Global Board.
#define AliDebug(logLevel, message)
Definition: AliLog.h:300
const Char_t * GetFirstDarcName() const
Get First Darc Name identifier.
void SetJtagCrateName(Int_t index, TString name)
Set Jtag Crate names.
UInt_t fFetRegisters[7]
Fet registers.
const Char_t * GetJtagName() const
Get Jtag Name identifier.
void SetEnableSecondDarc(UChar_t en)
Set Second Darc enable word.
UChar_t GetEnableJtag() const
Get Jtag enable word.
static TString GlobalTriggerBoardMapping()
Definition: AliMpFiles.cxx:347
Int_t GetGlobalNofRegisters() const
Get number of registers for Global.
TString GetFirstDarcCrateName(Int_t index) const
Get First Darc Crate names.
const Char_t * GetGlobalName() const
Get Global Name identifier.
UInt_t * GetFetRegister()
Set register word for FET.
UChar_t fEnableFirstDarc
Enable mask for First Darc lines.
TString fJtagCrateName[16]
Crate name for the Jtag lines.
void SetJtagRxPhase(UInt_t rx)
Set Jtag board Rx Phase.
void SetGlobalCrateEnable(UInt_t enable)
set global crate enbale
void SetSecondDarcVmeAddr(ULong_t addr)
Set Second Darc board VME address.
UChar_t GetEnableSecondDarc() const
Get Second Darc enable word.
Int_t ReadData(const TString &fileName="")
void SetGlobalMask(Int_t index, UInt_t mask)
Set mask for the global input.
UChar_t fEnableJtag
Enable mask for JTag lines.
UInt_t * GetGlobalRegister()
Get register word for Global.
void SetGlobalRegister(Int_t index, UInt_t reg)
Set register for Global.
static void DecodeName(const char *manus, char sep, TArrayI &theList)