1 #ifndef ALITRDTRAPCONFIG_H
\r
2 #define ALITRDTRAPCONFIG_H
\r
6 #include <TClonesArray.h>
\r
8 class AliTRDtrapConfig : public TObject
\r
11 static AliTRDtrapConfig* Instance();
\r
13 enum TrapReg_t { kSML0,
\r
446 kLastReg }; // enum of all TRAP registers, to be used for access to them
\r
448 inline const char* GetRegName(TrapReg_t reg) { return fRegs[reg].name.Data(); }
\r
449 inline UShort_t GetRegAddress(TrapReg_t reg) { return fRegs[reg].addr; }
\r
450 inline UShort_t GetRegNBits(TrapReg_t reg) { return fRegs[reg].nbits; }
\r
451 inline UInt_t GetRegResetValue(TrapReg_t reg) { return fRegs[reg].res_val; }
\r
453 TrapReg_t GetRegByAddress(Int_t address);
\r
455 Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
\r
456 Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
\r
457 Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
\r
459 Bool_t SetTrapReg(TrapReg_t reg, Int_t value);
\r
460 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det);
\r
461 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det, Int_t rob, Int_t mcm);
\r
465 Bool_t LoadConfig();
\r
466 Bool_t LoadConfig(Int_t det, TString filename);
\r
468 Int_t ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);
\r
471 static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)
\r
473 struct SimpleReg_t {
\r
474 TString name; // Name of the register
\r
475 UShort_t addr; // Address in GIO of TRAP
\r
476 UShort_t nbits; // Number of bits, from 1 to 32
\r
477 UInt_t res_val; // reset value
\r
478 SimpleReg_t(char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) :
\r
479 name(nnn), addr(a), nbits(n), res_val(r) {}
\r
482 struct RegValue_t {
\r
490 Int_t *individualValue;
\r
494 SimpleReg_t fRegs[kLastReg]; // array of TRAP registers
\r
495 RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use
\r
497 Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, UInt_t addr, UInt_t data);
\r
498 Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ); // Converts the ROB part of the extended ALICE ID to robs
\r
499 Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs
\r
501 static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command
\r
502 static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration
\r
503 static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated
\r
504 static const Int_t fMcmlistSize=256; // list of MCMs to which a value has to be written
\r
506 Int_t fMcmlist[fMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID
\r
508 AliTRDtrapConfig(); // private constructor due to singleton implementation
\r
511 struct BlockDescr_t {
\r
523 enum DbankProp_t { kDBankEmpty = 0,
\r
532 ClassDef(AliTRDtrapConfig, 2);
\r