]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrapConfig.h
added slewing correction by data
[u/mrichter/AliRoot.git] / TRD / AliTRDtrapConfig.h
index af4a7f072c05d623a4c01379da2c3b58c0236595..777710a49608c6e74beeab3d47a87ce0168c3e44 100644 (file)
-#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                               */
 
-// 
-// Class holding the configuration of the tracklet processor 
-// in the TRD FEE
+// Configuration of the TRD TRAcklet Processor
+// (TRD Front-End Electronics)
 //
+// TRAP registers
+// TRAP data memory (DMEM)
 
-\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 <TNamed.h>
+#include <TString.h>
+#include <fstream>
+using std::ostream;
+
+class AliTRDtrapConfig : public TNamed
+{
+ public:
+  AliTRDtrapConfig(const TString &name = "", const TString &title = "");
+  ~AliTRDtrapConfig();
+
+  // allocation
+  enum Alloc_t {
+    kAllocNone,
+    kAllocGlobal,
+    kAllocByDetector,
+    kAllocByHC,
+    kAllocByMCM,
+    kAllocByMergerType,
+    kAllocByLayer,
+    kAllocByMCMinSM,
+    kAllocLast
+  }; // possible granularities for allocation
+     // common to registers and DMEM
+
+  // registers
+  enum TrapReg_t { kSML0,
+                 kSML1,
+                 kSML2,
+                 kSMMODE,
+                 kSMCMD,
+                 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
+
+  Bool_t SetTrapRegAlloc(TrapReg_t reg, Alloc_t mode) { return fRegisterValue[reg].Allocate(mode); }
+  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  GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1) const;
+
+  void ResetRegs();
+
+  // data memory (DMEM)
+  Bool_t SetDmemAlloc(Int_t addr, Alloc_t mode);
+  Bool_t SetDmem(Int_t addr, UInt_t value, Int_t det);
+  Bool_t SetDmem(Int_t addr, UInt_t value, Int_t det, Int_t rob, Int_t mcm);
+  Bool_t SetDmem(Int_t addr, Int_t value) { return SetDmem(addr, (UInt_t) value); }
+  Bool_t SetDmem(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm) { return SetDmem(addr, (UInt_t) value, det, rob, mcm); }
+
+  UInt_t GetDmemUnsigned(Int_t addr, Int_t det, Int_t rob, Int_t mcm) const;
+
+  void ResetDmem();
+
+  // access by 16-bit address
+  UInt_t Peek(Int_t addr, Int_t det, Int_t rob, Int_t mcm) const;
+  Bool_t Poke(Int_t addr, UInt_t value, Int_t det, Int_t rob, Int_t mcm);
+
+  // helper methods
+  const char* GetRegName(TrapReg_t reg)       const { return ((reg >= 0) && (reg < kLastReg)) ? fRegisterValue[reg].GetName() : ""; }
+  UShort_t    GetRegAddress(TrapReg_t reg)    const { return ((reg >= 0) && (reg < kLastReg)) ? fRegisterValue[reg].GetAddr() : 0; }
+  UShort_t    GetRegNBits(TrapReg_t reg)      const { return ((reg >= 0) && (reg < kLastReg)) ? fRegisterValue[reg].GetNbits() : 0; }
+  UInt_t      GetRegResetValue(TrapReg_t reg) const { return ((reg >= 0) && (reg < kLastReg)) ? fRegisterValue[reg].GetResetValue() : 0; }
+
+  TrapReg_t   GetRegByAddress(Int_t address) const;
+
+  Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1) const;
+  Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1) const;
+
+  void PrintMemDatx(ostream &os, Int_t addr) const;
+  void PrintMemDatx(ostream &os, Int_t addr, Int_t det, Int_t rob, Int_t mcm) const;
+  void PrintMemDatx(ostream &os, TrapReg_t reg) const;
+  void PrintMemDatx(ostream &os, TrapReg_t reg, Int_t det, Int_t rob, Int_t mcm) const;
+  void PrintDatx(ostream &os, UInt_t addr, UInt_t data, Int_t rob, Int_t mcm) const;
+
+  void PrintVerify(ostream &os, Int_t det, Int_t rob, Int_t mcm) const;
+
+  static const Int_t fgkDmemStartAddress  = 0xc000; // start address in TRAP GIO
+  static const Int_t fgkDmemWords = 0x400;          // number of words in DMEM
+
+  static const Int_t fgkImemStartAddress = 0xe000;  // start address in TRAP GIO
+  static const Int_t fgkImemWords = 0x1000;         // number of words in IMEM
+
+  static const Int_t fgkDbankStartAddress = 0xf000; // start address in TRAP GIO
+  static const Int_t fgkDbankWords = 0x0100;        // number of words in DBANK
+
+  class AliTRDtrapValue : public TObject {
+  public:
+    AliTRDtrapValue();
+    virtual ~AliTRDtrapValue();
+
+    virtual Bool_t Allocate(Alloc_t mode);
+
+  protected:
+    Bool_t SetData(UInt_t value);
+    Bool_t SetData(UInt_t value, Int_t det);
+    Bool_t SetData(UInt_t value, Int_t det, Int_t rob, Int_t mcm);
+
+    UInt_t GetData(Int_t det, Int_t rob, Int_t mcm) const;
+
+    Int_t  GetIdx(Int_t det, Int_t rob, Int_t mcm) const;
+
+  private:
+    AliTRDtrapValue(const AliTRDtrapValue &rhs); // not implemented
+    AliTRDtrapValue& operator=(const AliTRDtrapValue &rhs); // not implemented
+
+    Alloc_t  fAllocMode;       // allocation mode
+    Int_t    fSize;            // array size
+    UInt_t  *fData;            //[fSize] data array
+    Bool_t  *fValid;           //[fSize] valid flag
+
+    static const Int_t fgkSize[kAllocLast]; // required array dimension for different allocation modes
+
+    ClassDef(AliTRDtrapValue, 1);
+  };
+
+  class AliTRDtrapRegister : public AliTRDtrapValue {
+  public:
+    AliTRDtrapRegister();
+    virtual ~AliTRDtrapRegister();
+
+    void    Init(const char* name, Int_t addr, Int_t nBits, Int_t resetValue);
+    void    Reset() { SetData(fResetValue); }
+
+    Bool_t  SetValue(Int_t value, Int_t det) { return SetData(value, det); }
+    Bool_t  SetValue(Int_t value, Int_t det, Int_t rob, Int_t mcm) { return SetData(value, det, rob, mcm); }
+
+    Int_t   GetValue(Int_t det, Int_t rob, Int_t mcm) const { return GetData(det, rob, mcm); }
+
+    const char*  GetName() const { return fName.Data(); }
+    UShort_t GetAddr() const { return fAddr; }
+    UShort_t GetNbits() const { return fNbits; }
+    UInt_t   GetResetValue() const { return fResetValue; }
+
+  protected:
+    AliTRDtrapRegister(const AliTRDtrapRegister &rhs);
+    AliTRDtrapRegister& operator=(const AliTRDtrapRegister &rhs);
+
+    // fixed properties of the register
+    // which do not need to be stored
+    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
+
+    ClassDef(AliTRDtrapRegister, 1);
+  };
+
+  class AliTRDtrapDmemWord : public AliTRDtrapValue {
+  public:
+    AliTRDtrapDmemWord() : AliTRDtrapValue(), fName(""), fAddr(0) {}
+    virtual ~AliTRDtrapDmemWord() {}
+
+    void    Reset() { SetData(0); }
+
+    Bool_t  SetValue(UInt_t value, Int_t det) { return SetData(value, det); }
+    Bool_t  SetValue(UInt_t value, Int_t det, Int_t rob, Int_t mcm) { return SetData(value, det, rob, mcm); }
+
+    UInt_t  GetValue(Int_t det, Int_t rob, Int_t mcm) const { return GetData(det, rob, mcm); }
+
+    void    SetAddress(UShort_t addr) { fAddr = addr; fName.Form("DMEM 0x%04x", fAddr); }
+    const char* GetName() const { return fName.Data(); }
+
+  protected:
+    AliTRDtrapDmemWord(const AliTRDtrapDmemWord &rhs); // not implemented
+    AliTRDtrapDmemWord& operator=(const AliTRDtrapDmemWord &rhs); // not implemented
+
+    TString  fName;
+    UShort_t fAddr;            //! address
+
+    ClassDef(AliTRDtrapDmemWord, 1);
+  };
+
+ protected:
+  void InitRegs();
+
+  // configuration registers
+  AliTRDtrapRegister fRegisterValue[kLastReg];  // array of TRAP register values in use
+
+  // DMEM
+  AliTRDtrapDmemWord fDmem[fgkDmemWords]; // TRAP data memory
+
+  static const Int_t fgkMcmlistSize=256;     // list of MCMs to which a value has to be written
+
+  static Bool_t    fgRegAddressMapInitialized;
+  static TrapReg_t fgRegAddressMap[0x400 + 0x200 + 0x4];
+  static const Int_t fgkRegisterAddressBlockStart[];
+  static const Int_t fgkRegisterAddressBlockSize[];
 
  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, 3);
+};
+
+#endif