-#ifndef ALITRDTRAPCONFIG_H\r
-#define ALITRDTRAPCONFIG_H\r
+#ifndef ALITRDTRAPCONFIG_H
+#define ALITRDTRAPCONFIG_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
// in the TRD FEE
//
-\r
-#include <TObject.h>\r
-#include <TString.h>\r
-#include <TClonesArray.h>\r
-\r
-class AliTRDtrapConfig : public TObject\r
-{\r
- public:\r
- static AliTRDtrapConfig* Instance();\r
-\r
- enum TrapReg_t { kSML0, \r
- kSML1, \r
- kSML2,\r
- kSMMODE,\r
- kNITM0,\r
- kNITM1,\r
- kNITM2,\r
- kNIP4D,\r
- kCPU0CLK,\r
- kCPU1CLK,\r
- kCPU2CLK,\r
- kCPU3CLK,\r
- kNICLK,\r
- kFILCLK,\r
- kPRECLK,\r
- kADCEN,\r
- kNIODE,\r
- kNIOCE,\r
- kNIIDE,\r
- kNIICE,\r
- kARBTIM, \r
- kIA0IRQ0, \r
- kIA0IRQ1, \r
- kIA0IRQ2, \r
- kIA0IRQ3, \r
- kIA0IRQ4, \r
- kIA0IRQ5, \r
- kIA0IRQ6, \r
- kIA0IRQ7, \r
- kIA0IRQ8, \r
- kIA0IRQ9, \r
- kIA0IRQA, \r
- kIA0IRQB, \r
- kIA0IRQC, \r
- kIRQSW0, \r
- kIRQHW0, \r
- kIRQHL0, \r
- kIA1IRQ0, \r
- kIA1IRQ1, \r
- kIA1IRQ2, \r
- kIA1IRQ3, \r
- kIA1IRQ4, \r
- kIA1IRQ5, \r
- kIA1IRQ6, \r
- kIA1IRQ7, \r
- kIA1IRQ8, \r
- kIA1IRQ9, \r
- kIA1IRQA, \r
- kIA1IRQB, \r
- kIA1IRQC, \r
- kIRQSW1, \r
- kIRQHW1, \r
- kIRQHL1, \r
- kIA2IRQ0, \r
- kIA2IRQ1, \r
- kIA2IRQ2, \r
- kIA2IRQ3, \r
- kIA2IRQ4, \r
- kIA2IRQ5, \r
- kIA2IRQ6, \r
- kIA2IRQ7, \r
- kIA2IRQ8, \r
- kIA2IRQ9, \r
- kIA2IRQA, \r
- kIA2IRQB, \r
- kIA2IRQC, \r
- kIRQSW2, \r
- kIRQHW2, \r
- kIRQHL2, \r
- kIA3IRQ0, \r
- kIA3IRQ1, \r
- kIA3IRQ2, \r
- kIA3IRQ3, \r
- kIA3IRQ4, \r
- kIA3IRQ5, \r
- kIA3IRQ6, \r
- kIA3IRQ7, \r
- kIA3IRQ8, \r
- kIA3IRQ9, \r
- kIA3IRQA, \r
- kIA3IRQB, \r
- kIA3IRQC, \r
- kIRQSW3, \r
- kIRQHW3, \r
- kIRQHL3, \r
- kCTGDINI, \r
- kCTGCTRL, \r
- kC08CPU0, \r
- kC09CPU0, \r
- kC10CPU0, \r
- kC11CPU0, \r
- kC12CPUA, \r
- kC13CPUA, \r
- kC14CPUA, \r
- kC15CPUA, \r
- kC08CPU1, \r
- kC09CPU1, \r
- kC10CPU1, \r
- kC11CPU1, \r
- kC08CPU2, \r
- kC09CPU2, \r
- kC10CPU2, \r
- kC11CPU2, \r
- kC08CPU3, \r
- kC09CPU3, \r
- kC10CPU3, \r
- kC11CPU3, \r
- kNMOD, \r
- kNDLY, \r
- kNED, \r
- kNTRO, \r
- kNRRO, \r
- kNES, \r
- kNTP, \r
- kNBND, \r
- kNP0, \r
- kNP1, \r
- kNP2, \r
- kNP3, \r
- kNCUT, \r
- kTPPT0, \r
- kTPFS, \r
- kTPFE, \r
- kTPPGR, \r
- kTPPAE, \r
- kTPQS0, \r
- kTPQE0, \r
- kTPQS1, \r
- kTPQE1, \r
- kEBD, \r
- kEBAQA, \r
- kEBSIA, \r
- kEBSF, \r
- kEBSIM, \r
- kEBPP, \r
- kEBPC, \r
- kEBIS, \r
- kEBIT, \r
- kEBIL, \r
- kEBIN, \r
- kFLBY, \r
- kFPBY, \r
- kFGBY, \r
- kFTBY, \r
- kFCBY, \r
- kFPTC, \r
- kFPNP, \r
- kFPCL, \r
- kFGTA, \r
- kFGTB, \r
- kFGCL, \r
- kFTAL, \r
- kFTLL, \r
- kFTLS, \r
- kFCW1, \r
- kFCW2, \r
- kFCW3, \r
- kFCW4, \r
- kFCW5, \r
- kTPFP, \r
- kTPHT, \r
- kTPVT, \r
- kTPVBY, \r
- kTPCT, \r
- kTPCL, \r
- kTPCBY, \r
- kTPD, \r
- kTPCI0, \r
- kTPCI1, \r
- kTPCI2, \r
- kTPCI3, \r
- kADCMSK, \r
- kADCINB, \r
- kADCDAC, \r
- kADCPAR, \r
- kADCTST, \r
- kSADCAZ, \r
- kFGF0, \r
- kFGF1, \r
- kFGF2, \r
- kFGF3, \r
- kFGF4, \r
- kFGF5, \r
- kFGF6, \r
- kFGF7, \r
- kFGF8, \r
- kFGF9, \r
- kFGF10, \r
- kFGF11, \r
- kFGF12, \r
- kFGF13, \r
- kFGF14, \r
- kFGF15, \r
- kFGF16, \r
- kFGF17, \r
- kFGF18, \r
- kFGF19, \r
- kFGF20, \r
- kFGA0, \r
- kFGA1, \r
- kFGA2, \r
- kFGA3, \r
- kFGA4, \r
- kFGA5, \r
- kFGA6, \r
- kFGA7, \r
- kFGA8, \r
- kFGA9, \r
- kFGA10, \r
- kFGA11, \r
- kFGA12, \r
- kFGA13, \r
- kFGA14, \r
- kFGA15, \r
- kFGA16, \r
- kFGA17, \r
- kFGA18, \r
- kFGA19, \r
- kFGA20, \r
- kFLL00, \r
- kFLL01, \r
- kFLL02, \r
- kFLL03, \r
- kFLL04, \r
- kFLL05, \r
- kFLL06, \r
- kFLL07, \r
- kFLL08, \r
- kFLL09, \r
- kFLL0A, \r
- kFLL0B, \r
- kFLL0C, \r
- kFLL0D, \r
- kFLL0E, \r
- kFLL0F, \r
- kFLL10, \r
- kFLL11, \r
- kFLL12, \r
- kFLL13, \r
- kFLL14, \r
- kFLL15, \r
- kFLL16, \r
- kFLL17, \r
- kFLL18, \r
- kFLL19, \r
- kFLL1A, \r
- kFLL1B, \r
- kFLL1C, \r
- kFLL1D, \r
- kFLL1E, \r
- kFLL1F, \r
- kFLL20, \r
- kFLL21, \r
- kFLL22, \r
- kFLL23, \r
- kFLL24, \r
- kFLL25, \r
- kFLL26, \r
- kFLL27, \r
- kFLL28, \r
- kFLL29, \r
- kFLL2A, \r
- kFLL2B, \r
- kFLL2C, \r
- kFLL2D, \r
- kFLL2E, \r
- kFLL2F, \r
- kFLL30, \r
- kFLL31, \r
- kFLL32, \r
- kFLL33, \r
- kFLL34, \r
- kFLL35, \r
- kFLL36, \r
- kFLL37, \r
- kFLL38, \r
- kFLL39, \r
- kFLL3A, \r
- kFLL3B, \r
- kFLL3C, \r
- kFLL3D, \r
- kFLL3E, \r
- kFLL3F, \r
- kPASADEL, \r
- kPASAPHA, \r
- kPASAPRA, \r
- kPASADAC, \r
- kPASACHM, \r
- kPASASTL, \r
- kPASAPR1, \r
- kPASAPR0, \r
- kSADCTRG, \r
- kSADCRUN, \r
- kSADCPWR, \r
- kL0TSIM, \r
- kSADCEC, \r
- kSADCMC, \r
- kSADCOC, \r
- kSADCGTB, \r
- kSEBDEN, \r
- kSEBDOU, \r
- kTPL00, \r
- kTPL01, \r
- kTPL02, \r
- kTPL03, \r
- kTPL04, \r
- kTPL05, \r
- kTPL06, \r
- kTPL07, \r
- kTPL08, \r
- kTPL09, \r
- kTPL0A, \r
- kTPL0B, \r
- kTPL0C, \r
- kTPL0D, \r
- kTPL0E, \r
- kTPL0F, \r
- kTPL10, \r
- kTPL11, \r
- kTPL12, \r
- kTPL13, \r
- kTPL14, \r
- kTPL15, \r
- kTPL16, \r
- kTPL17, \r
- kTPL18, \r
- kTPL19, \r
- kTPL1A, \r
- kTPL1B, \r
- kTPL1C, \r
- kTPL1D, \r
- kTPL1E, \r
- kTPL1F, \r
- kTPL20, \r
- kTPL21, \r
- kTPL22, \r
- kTPL23, \r
- kTPL24, \r
- kTPL25, \r
- kTPL26, \r
- kTPL27, \r
- kTPL28, \r
- kTPL29, \r
- kTPL2A, \r
- kTPL2B, \r
- kTPL2C, \r
- kTPL2D, \r
- kTPL2E, \r
- kTPL2F, \r
- kTPL30, \r
- kTPL31, \r
- kTPL32, \r
- kTPL33, \r
- kTPL34, \r
- kTPL35, \r
- kTPL36, \r
- kTPL37, \r
- kTPL38, \r
- kTPL39, \r
- kTPL3A, \r
- kTPL3B, \r
- kTPL3C, \r
- kTPL3D, \r
- kTPL3E, \r
- kTPL3F, \r
- kTPL40, \r
- kTPL41, \r
- kTPL42, \r
- kTPL43, \r
- kTPL44, \r
- kTPL45, \r
- kTPL46, \r
- kTPL47, \r
- kTPL48, \r
- kTPL49, \r
- kTPL4A, \r
- kTPL4B, \r
- kTPL4C, \r
- kTPL4D, \r
- kTPL4E, \r
- kTPL4F, \r
- kTPL50, \r
- kTPL51, \r
- kTPL52, \r
- kTPL53, \r
- kTPL54, \r
- kTPL55, \r
- kTPL56, \r
- kTPL57, \r
- kTPL58, \r
- kTPL59, \r
- kTPL5A, \r
- kTPL5B, \r
- kTPL5C, \r
- kTPL5D, \r
- kTPL5E, \r
- kTPL5F, \r
- kTPL60, \r
- kTPL61, \r
- kTPL62, \r
- kTPL63, \r
- kTPL64, \r
- kTPL65, \r
- kTPL66, \r
- kTPL67, \r
- kTPL68, \r
- kTPL69, \r
- kTPL6A, \r
- kTPL6B, \r
- kTPL6C, \r
- kTPL6D, \r
- kTPL6E, \r
- kTPL6F, \r
- kTPL70, \r
- kTPL71, \r
- kTPL72, \r
- kTPL73, \r
- kTPL74, \r
- kTPL75, \r
- kTPL76, \r
- kTPL77, \r
- kTPL78, \r
- kTPL79, \r
- kTPL7A, \r
- kTPL7B, \r
- kTPL7C, \r
- kTPL7D, \r
- kTPL7E, \r
- kTPL7F, \r
- kMEMRW, \r
- kMEMCOR, \r
- kDMDELA, \r
- kDMDELS, \r
- kLastReg }; // enum of all TRAP registers, to be used for access to them\r
-\r
- const char* GetRegName(TrapReg_t reg) const { return fRegs[reg].fName.Data(); }\r
- UShort_t GetRegAddress(TrapReg_t reg) const { return fRegs[reg].fAddr; }\r
- UShort_t GetRegNBits(TrapReg_t reg) const { return fRegs[reg].fNbits; }\r
- UInt_t GetRegResetValue(TrapReg_t reg) const { return fRegs[reg].fResetValue; }\r
-\r
- TrapReg_t GetRegByAddress(Int_t address) const;\r
-\r
- Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);\r
- Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);\r
- Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);\r
-\r
- Bool_t SetTrapReg(TrapReg_t reg, Int_t value);\r
- Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det);\r
- Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det, Int_t rob, Int_t mcm);\r
-\r
- void InitRegs();\r
- void ResetRegs();\r
-\r
- Bool_t LoadConfig();\r
- Bool_t LoadConfig(Int_t det, TString filename);\r
-\r
- Int_t ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);\r
-\r
- protected:\r
- static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)\r
-\r
- struct SimpleReg_t {\r
- TString fName; // Name of the register\r
- UShort_t fAddr; // Address in GIO of TRAP\r
- UShort_t fNbits; // Number of bits, from 1 to 32\r
- UInt_t fResetValue; // reset value\r
- SimpleReg_t(char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) : \r
- fName(nnn), fAddr(a), fNbits(n), fResetValue(r) {}\r
- };\r
-\r
- struct RegValue_t {\r
- enum {\r
- kInvalid = 0,\r
- kGlobal,\r
- kIndividual\r
- } state; // mode of storage (global or per MCM)\r
- union {\r
- Int_t globalValue;\r
- Int_t *individualValue;\r
- };\r
- };\r
-\r
- SimpleReg_t fRegs[kLastReg]; // array of TRAP registers\r
- RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use\r
-\r
- Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, UInt_t addr, UInt_t data);\r
- Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ) const; // Converts the ROB part of the extended ALICE ID to robs\r
- Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs \r
-\r
- static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command \r
- static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration\r
- static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated\r
- static const Int_t fgkMcmlistSize=256; // list of MCMs to which a value has to be written\r
-\r
- Int_t fMcmlist[fgkMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID\r
-\r
- AliTRDtrapConfig(); // private constructor due to singleton implementation\r
-\r
-/* not yet used\r
- struct BlockDescr_t {\r
- UShort_t addr;\r
- UShort_t nregs;\r
- UShort_t nbits;\r
- UShort_t step;\r
- };\r
-\r
- struct CmdReg_t {\r
- char *name;\r
- UShort_t addr;\r
- };\r
-\r
- enum DbankProp_t { kDBankEmpty = 0,\r
- kDBankHeader,\r
- kDBankData,\r
- kDBankNoB,\r
- kDBankCRC,\r
- kDBankEHeader,\r
- kDBankSCSNData };\r
-*/\r
-\r
+
+#include <TObject.h>
+#include <TString.h>
+
+class AliTRDtrapConfig : public TObject
+{
+ public:
+ static AliTRDtrapConfig* Instance();
+
+ enum TrapReg_t { kSML0,
+ kSML1,
+ kSML2,
+ kSMMODE,
+ kNITM0,
+ kNITM1,
+ kNITM2,
+ kNIP4D,
+ kCPU0CLK,
+ kCPU1CLK,
+ kCPU2CLK,
+ kCPU3CLK,
+ kNICLK,
+ kFILCLK,
+ kPRECLK,
+ kADCEN,
+ kNIODE,
+ kNIOCE,
+ kNIIDE,
+ kNIICE,
+ kARBTIM,
+ kIA0IRQ0,
+ kIA0IRQ1,
+ kIA0IRQ2,
+ kIA0IRQ3,
+ kIA0IRQ4,
+ kIA0IRQ5,
+ kIA0IRQ6,
+ kIA0IRQ7,
+ kIA0IRQ8,
+ kIA0IRQ9,
+ kIA0IRQA,
+ kIA0IRQB,
+ kIA0IRQC,
+ kIRQSW0,
+ kIRQHW0,
+ kIRQHL0,
+ kIA1IRQ0,
+ kIA1IRQ1,
+ kIA1IRQ2,
+ kIA1IRQ3,
+ kIA1IRQ4,
+ kIA1IRQ5,
+ kIA1IRQ6,
+ kIA1IRQ7,
+ kIA1IRQ8,
+ kIA1IRQ9,
+ kIA1IRQA,
+ kIA1IRQB,
+ kIA1IRQC,
+ kIRQSW1,
+ kIRQHW1,
+ kIRQHL1,
+ kIA2IRQ0,
+ kIA2IRQ1,
+ kIA2IRQ2,
+ kIA2IRQ3,
+ kIA2IRQ4,
+ kIA2IRQ5,
+ kIA2IRQ6,
+ kIA2IRQ7,
+ kIA2IRQ8,
+ kIA2IRQ9,
+ kIA2IRQA,
+ kIA2IRQB,
+ kIA2IRQC,
+ kIRQSW2,
+ kIRQHW2,
+ kIRQHL2,
+ kIA3IRQ0,
+ kIA3IRQ1,
+ kIA3IRQ2,
+ kIA3IRQ3,
+ kIA3IRQ4,
+ kIA3IRQ5,
+ kIA3IRQ6,
+ kIA3IRQ7,
+ kIA3IRQ8,
+ kIA3IRQ9,
+ kIA3IRQA,
+ kIA3IRQB,
+ kIA3IRQC,
+ kIRQSW3,
+ kIRQHW3,
+ kIRQHL3,
+ kCTGDINI,
+ kCTGCTRL,
+ kC08CPU0,
+ kC09CPU0,
+ kC10CPU0,
+ kC11CPU0,
+ kC12CPUA,
+ kC13CPUA,
+ kC14CPUA,
+ kC15CPUA,
+ kC08CPU1,
+ kC09CPU1,
+ kC10CPU1,
+ kC11CPU1,
+ kC08CPU2,
+ kC09CPU2,
+ kC10CPU2,
+ kC11CPU2,
+ kC08CPU3,
+ kC09CPU3,
+ kC10CPU3,
+ kC11CPU3,
+ kNMOD,
+ kNDLY,
+ kNED,
+ kNTRO,
+ kNRRO,
+ kNES,
+ kNTP,
+ kNBND,
+ kNP0,
+ kNP1,
+ kNP2,
+ kNP3,
+ kNCUT,
+ kTPPT0,
+ kTPFS,
+ kTPFE,
+ kTPPGR,
+ kTPPAE,
+ kTPQS0,
+ kTPQE0,
+ kTPQS1,
+ kTPQE1,
+ kEBD,
+ kEBAQA,
+ kEBSIA,
+ kEBSF,
+ kEBSIM,
+ kEBPP,
+ kEBPC,
+ kEBIS,
+ kEBIT,
+ kEBIL,
+ kEBIN,
+ kFLBY,
+ kFPBY,
+ kFGBY,
+ kFTBY,
+ kFCBY,
+ kFPTC,
+ kFPNP,
+ kFPCL,
+ kFGTA,
+ kFGTB,
+ kFGCL,
+ kFTAL,
+ kFTLL,
+ kFTLS,
+ kFCW1,
+ kFCW2,
+ kFCW3,
+ kFCW4,
+ kFCW5,
+ kTPFP,
+ kTPHT,
+ kTPVT,
+ kTPVBY,
+ kTPCT,
+ kTPCL,
+ kTPCBY,
+ kTPD,
+ kTPCI0,
+ kTPCI1,
+ kTPCI2,
+ kTPCI3,
+ kADCMSK,
+ kADCINB,
+ kADCDAC,
+ kADCPAR,
+ kADCTST,
+ kSADCAZ,
+ kFGF0,
+ kFGF1,
+ kFGF2,
+ kFGF3,
+ kFGF4,
+ kFGF5,
+ kFGF6,
+ kFGF7,
+ kFGF8,
+ kFGF9,
+ kFGF10,
+ kFGF11,
+ kFGF12,
+ kFGF13,
+ kFGF14,
+ kFGF15,
+ kFGF16,
+ kFGF17,
+ kFGF18,
+ kFGF19,
+ kFGF20,
+ kFGA0,
+ kFGA1,
+ kFGA2,
+ kFGA3,
+ kFGA4,
+ kFGA5,
+ kFGA6,
+ kFGA7,
+ kFGA8,
+ kFGA9,
+ kFGA10,
+ kFGA11,
+ kFGA12,
+ kFGA13,
+ kFGA14,
+ kFGA15,
+ kFGA16,
+ kFGA17,
+ kFGA18,
+ kFGA19,
+ kFGA20,
+ kFLL00,
+ kFLL01,
+ kFLL02,
+ kFLL03,
+ kFLL04,
+ kFLL05,
+ kFLL06,
+ kFLL07,
+ kFLL08,
+ kFLL09,
+ kFLL0A,
+ kFLL0B,
+ kFLL0C,
+ kFLL0D,
+ kFLL0E,
+ kFLL0F,
+ kFLL10,
+ kFLL11,
+ kFLL12,
+ kFLL13,
+ kFLL14,
+ kFLL15,
+ kFLL16,
+ kFLL17,
+ kFLL18,
+ kFLL19,
+ kFLL1A,
+ kFLL1B,
+ kFLL1C,
+ kFLL1D,
+ kFLL1E,
+ kFLL1F,
+ kFLL20,
+ kFLL21,
+ kFLL22,
+ kFLL23,
+ kFLL24,
+ kFLL25,
+ kFLL26,
+ kFLL27,
+ kFLL28,
+ kFLL29,
+ kFLL2A,
+ kFLL2B,
+ kFLL2C,
+ kFLL2D,
+ kFLL2E,
+ kFLL2F,
+ kFLL30,
+ kFLL31,
+ kFLL32,
+ kFLL33,
+ kFLL34,
+ kFLL35,
+ kFLL36,
+ kFLL37,
+ kFLL38,
+ kFLL39,
+ kFLL3A,
+ kFLL3B,
+ kFLL3C,
+ kFLL3D,
+ kFLL3E,
+ kFLL3F,
+ kPASADEL,
+ kPASAPHA,
+ kPASAPRA,
+ kPASADAC,
+ kPASACHM,
+ kPASASTL,
+ kPASAPR1,
+ kPASAPR0,
+ kSADCTRG,
+ kSADCRUN,
+ kSADCPWR,
+ kL0TSIM,
+ kSADCEC,
+ kSADCMC,
+ kSADCOC,
+ kSADCGTB,
+ kSEBDEN,
+ kSEBDOU,
+ kTPL00,
+ kTPL01,
+ kTPL02,
+ kTPL03,
+ kTPL04,
+ kTPL05,
+ kTPL06,
+ kTPL07,
+ kTPL08,
+ kTPL09,
+ kTPL0A,
+ kTPL0B,
+ kTPL0C,
+ kTPL0D,
+ kTPL0E,
+ kTPL0F,
+ kTPL10,
+ kTPL11,
+ kTPL12,
+ kTPL13,
+ kTPL14,
+ kTPL15,
+ kTPL16,
+ kTPL17,
+ kTPL18,
+ kTPL19,
+ kTPL1A,
+ kTPL1B,
+ kTPL1C,
+ kTPL1D,
+ kTPL1E,
+ kTPL1F,
+ kTPL20,
+ kTPL21,
+ kTPL22,
+ kTPL23,
+ kTPL24,
+ kTPL25,
+ kTPL26,
+ kTPL27,
+ kTPL28,
+ kTPL29,
+ kTPL2A,
+ kTPL2B,
+ kTPL2C,
+ kTPL2D,
+ kTPL2E,
+ kTPL2F,
+ kTPL30,
+ kTPL31,
+ kTPL32,
+ kTPL33,
+ kTPL34,
+ kTPL35,
+ kTPL36,
+ kTPL37,
+ kTPL38,
+ kTPL39,
+ kTPL3A,
+ kTPL3B,
+ kTPL3C,
+ kTPL3D,
+ kTPL3E,
+ kTPL3F,
+ kTPL40,
+ kTPL41,
+ kTPL42,
+ kTPL43,
+ kTPL44,
+ kTPL45,
+ kTPL46,
+ kTPL47,
+ kTPL48,
+ kTPL49,
+ kTPL4A,
+ kTPL4B,
+ kTPL4C,
+ kTPL4D,
+ kTPL4E,
+ kTPL4F,
+ kTPL50,
+ kTPL51,
+ kTPL52,
+ kTPL53,
+ kTPL54,
+ kTPL55,
+ kTPL56,
+ kTPL57,
+ kTPL58,
+ kTPL59,
+ kTPL5A,
+ kTPL5B,
+ kTPL5C,
+ kTPL5D,
+ kTPL5E,
+ kTPL5F,
+ kTPL60,
+ kTPL61,
+ kTPL62,
+ kTPL63,
+ kTPL64,
+ kTPL65,
+ kTPL66,
+ kTPL67,
+ kTPL68,
+ kTPL69,
+ kTPL6A,
+ kTPL6B,
+ kTPL6C,
+ kTPL6D,
+ kTPL6E,
+ kTPL6F,
+ kTPL70,
+ kTPL71,
+ kTPL72,
+ kTPL73,
+ kTPL74,
+ kTPL75,
+ kTPL76,
+ kTPL77,
+ kTPL78,
+ kTPL79,
+ kTPL7A,
+ kTPL7B,
+ kTPL7C,
+ kTPL7D,
+ kTPL7E,
+ kTPL7F,
+ kMEMRW,
+ kMEMCOR,
+ kDMDELA,
+ kDMDELS,
+ kLastReg }; // enum of all TRAP registers, to be used for access to them
+
+ const char* GetRegName(TrapReg_t reg) const { return fRegs[reg].fName.Data(); }
+ UShort_t GetRegAddress(TrapReg_t reg) const { return fRegs[reg].fAddr; }
+ UShort_t GetRegNBits(TrapReg_t reg) const { return fRegs[reg].fNbits; }
+ UInt_t GetRegResetValue(TrapReg_t reg) const { return fRegs[reg].fResetValue; }
+
+ TrapReg_t GetRegByAddress(Int_t address) const;
+
+ Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
+ Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
+ Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
+
+ Bool_t SetTrapReg(TrapReg_t reg, Int_t value);
+ Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det);
+ Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det, Int_t rob, Int_t mcm);
+
+ Int_t Peek(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
+ Bool_t Poke(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm);
+
+ void InitRegs();
+ void ResetRegs();
+
+ // DMEM
+ Bool_t SetDmem(Int_t addr, Int_t value);
+ Bool_t SetDmem(Int_t addr, Int_t value, Int_t det);
+ Bool_t SetDmem(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm);
+
+ Int_t GetDmem(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
+
+ // configuration handling
+ Bool_t LoadConfig();
+ Bool_t LoadConfig(Int_t det, TString filename);
+
+ Bool_t ReadPackedConfig(UInt_t *data, Int_t size);
+
+ Int_t ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);
+
+ protected:
+ static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)
+
+ struct SimpleReg_t {
+ TString fName; // Name of the register
+ UShort_t fAddr; // Address in GIO of TRAP
+ UShort_t fNbits; // Number of bits, from 1 to 32
+ UInt_t fResetValue; // reset value
+ SimpleReg_t(const char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) :
+ fName(nnn), fAddr(a), fNbits(n), fResetValue(r) {}
+ };
+
+ struct RegValue_t {
+ enum {
+ kInvalid = 0,
+ kGlobal,
+ kIndividual
+ } state; // mode of storage (global or per MCM)
+ union {
+ Int_t globalValue;
+ Int_t *individualValue;
+ };
+ };
+
+ // configuration registers
+ SimpleReg_t fRegs[kLastReg]; // array of TRAP registers
+ RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use
+
+ Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, Int_t addr, UInt_t data);
+ Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ) const; // Converts the ROB part of the extended ALICE ID to robs
+ Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs
+
+ static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command
+ static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration
+ static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated
+ static const Int_t fgkMcmlistSize=256; // list of MCMs to which a value has to be written
+
+ Int_t fMcmlist[fgkMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID
+
+ // DMEM
+ static const Int_t fgkDmemStartAddress; // = 0xc000; // start address in TRAP GIO
+ static const Int_t fgkDmemWords = 0x400; // number of words in DMEM
+ UInt_t fDmem[540*8*18][fgkDmemWords]; // DMEM storage
+ Bool_t fDmemValid[540*8*18][fgkDmemWords]; // DMEM valid flag storage
+
+ AliTRDtrapConfig(); // private constructor due to singleton implementation
+
+/* not yet used
+ struct BlockDescr_t {
+ UShort_t addr;
+ UShort_t nregs;
+ UShort_t nbits;
+ UShort_t step;
+ };
+
+ struct CmdReg_t {
+ char *name;
+ UShort_t addr;
+ };
+
+ enum DbankProp_t { kDBankEmpty = 0,
+ kDBankHeader,
+ kDBankData,
+ kDBankNoB,
+ kDBankCRC,
+ kDBankEHeader,
+ kDBankSCSNData };
+*/
+
private:
AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
- ClassDef(AliTRDtrapConfig, 2);\r
-};\r
-\r
-#endif\r
-\r
+ ClassDef(AliTRDtrapConfig, 2);
+};
+
+#endif
+