]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDtrapConfig.h
Increment ClassDef number
[u/mrichter/AliRoot.git] / TRD / AliTRDtrapConfig.h
CommitLineData
ce4786b9 1#ifndef ALITRDTRAPCONFIG_H
2#define ALITRDTRAPCONFIG_H
36dc3337 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6//
7// Class holding the configuration of the tracklet processor
8// in the TRD FEE
9//
10
ce4786b9 11
12#include <TObject.h>
13#include <TString.h>
ce4786b9 14
15class AliTRDtrapConfig : public TObject
16{
17 public:
051af255 18 ~AliTRDtrapConfig();
19
ce4786b9 20 static AliTRDtrapConfig* Instance();
21
22 enum TrapReg_t { kSML0,
23 kSML1,
24 kSML2,
25 kSMMODE,
26 kNITM0,
27 kNITM1,
28 kNITM2,
29 kNIP4D,
30 kCPU0CLK,
31 kCPU1CLK,
32 kCPU2CLK,
33 kCPU3CLK,
34 kNICLK,
35 kFILCLK,
36 kPRECLK,
37 kADCEN,
38 kNIODE,
39 kNIOCE,
40 kNIIDE,
41 kNIICE,
42 kARBTIM,
43 kIA0IRQ0,
44 kIA0IRQ1,
45 kIA0IRQ2,
46 kIA0IRQ3,
47 kIA0IRQ4,
48 kIA0IRQ5,
49 kIA0IRQ6,
50 kIA0IRQ7,
51 kIA0IRQ8,
52 kIA0IRQ9,
53 kIA0IRQA,
54 kIA0IRQB,
55 kIA0IRQC,
56 kIRQSW0,
57 kIRQHW0,
58 kIRQHL0,
59 kIA1IRQ0,
60 kIA1IRQ1,
61 kIA1IRQ2,
62 kIA1IRQ3,
63 kIA1IRQ4,
64 kIA1IRQ5,
65 kIA1IRQ6,
66 kIA1IRQ7,
67 kIA1IRQ8,
68 kIA1IRQ9,
69 kIA1IRQA,
70 kIA1IRQB,
71 kIA1IRQC,
72 kIRQSW1,
73 kIRQHW1,
74 kIRQHL1,
75 kIA2IRQ0,
76 kIA2IRQ1,
77 kIA2IRQ2,
78 kIA2IRQ3,
79 kIA2IRQ4,
80 kIA2IRQ5,
81 kIA2IRQ6,
82 kIA2IRQ7,
83 kIA2IRQ8,
84 kIA2IRQ9,
85 kIA2IRQA,
86 kIA2IRQB,
87 kIA2IRQC,
88 kIRQSW2,
89 kIRQHW2,
90 kIRQHL2,
91 kIA3IRQ0,
92 kIA3IRQ1,
93 kIA3IRQ2,
94 kIA3IRQ3,
95 kIA3IRQ4,
96 kIA3IRQ5,
97 kIA3IRQ6,
98 kIA3IRQ7,
99 kIA3IRQ8,
100 kIA3IRQ9,
101 kIA3IRQA,
102 kIA3IRQB,
103 kIA3IRQC,
104 kIRQSW3,
105 kIRQHW3,
106 kIRQHL3,
107 kCTGDINI,
108 kCTGCTRL,
109 kC08CPU0,
110 kC09CPU0,
111 kC10CPU0,
112 kC11CPU0,
113 kC12CPUA,
114 kC13CPUA,
115 kC14CPUA,
116 kC15CPUA,
117 kC08CPU1,
118 kC09CPU1,
119 kC10CPU1,
120 kC11CPU1,
121 kC08CPU2,
122 kC09CPU2,
123 kC10CPU2,
124 kC11CPU2,
125 kC08CPU3,
126 kC09CPU3,
127 kC10CPU3,
128 kC11CPU3,
129 kNMOD,
130 kNDLY,
131 kNED,
132 kNTRO,
133 kNRRO,
134 kNES,
135 kNTP,
136 kNBND,
137 kNP0,
138 kNP1,
139 kNP2,
140 kNP3,
141 kNCUT,
142 kTPPT0,
143 kTPFS,
144 kTPFE,
145 kTPPGR,
146 kTPPAE,
147 kTPQS0,
148 kTPQE0,
149 kTPQS1,
150 kTPQE1,
151 kEBD,
152 kEBAQA,
153 kEBSIA,
154 kEBSF,
155 kEBSIM,
156 kEBPP,
157 kEBPC,
158 kEBIS,
159 kEBIT,
160 kEBIL,
161 kEBIN,
162 kFLBY,
163 kFPBY,
164 kFGBY,
165 kFTBY,
166 kFCBY,
167 kFPTC,
168 kFPNP,
169 kFPCL,
170 kFGTA,
171 kFGTB,
172 kFGCL,
173 kFTAL,
174 kFTLL,
175 kFTLS,
176 kFCW1,
177 kFCW2,
178 kFCW3,
179 kFCW4,
180 kFCW5,
181 kTPFP,
182 kTPHT,
183 kTPVT,
184 kTPVBY,
185 kTPCT,
186 kTPCL,
187 kTPCBY,
188 kTPD,
189 kTPCI0,
190 kTPCI1,
191 kTPCI2,
192 kTPCI3,
193 kADCMSK,
194 kADCINB,
195 kADCDAC,
196 kADCPAR,
197 kADCTST,
198 kSADCAZ,
199 kFGF0,
200 kFGF1,
201 kFGF2,
202 kFGF3,
203 kFGF4,
204 kFGF5,
205 kFGF6,
206 kFGF7,
207 kFGF8,
208 kFGF9,
209 kFGF10,
210 kFGF11,
211 kFGF12,
212 kFGF13,
213 kFGF14,
214 kFGF15,
215 kFGF16,
216 kFGF17,
217 kFGF18,
218 kFGF19,
219 kFGF20,
220 kFGA0,
221 kFGA1,
222 kFGA2,
223 kFGA3,
224 kFGA4,
225 kFGA5,
226 kFGA6,
227 kFGA7,
228 kFGA8,
229 kFGA9,
230 kFGA10,
231 kFGA11,
232 kFGA12,
233 kFGA13,
234 kFGA14,
235 kFGA15,
236 kFGA16,
237 kFGA17,
238 kFGA18,
239 kFGA19,
240 kFGA20,
241 kFLL00,
242 kFLL01,
243 kFLL02,
244 kFLL03,
245 kFLL04,
246 kFLL05,
247 kFLL06,
248 kFLL07,
249 kFLL08,
250 kFLL09,
251 kFLL0A,
252 kFLL0B,
253 kFLL0C,
254 kFLL0D,
255 kFLL0E,
256 kFLL0F,
257 kFLL10,
258 kFLL11,
259 kFLL12,
260 kFLL13,
261 kFLL14,
262 kFLL15,
263 kFLL16,
264 kFLL17,
265 kFLL18,
266 kFLL19,
267 kFLL1A,
268 kFLL1B,
269 kFLL1C,
270 kFLL1D,
271 kFLL1E,
272 kFLL1F,
273 kFLL20,
274 kFLL21,
275 kFLL22,
276 kFLL23,
277 kFLL24,
278 kFLL25,
279 kFLL26,
280 kFLL27,
281 kFLL28,
282 kFLL29,
283 kFLL2A,
284 kFLL2B,
285 kFLL2C,
286 kFLL2D,
287 kFLL2E,
288 kFLL2F,
289 kFLL30,
290 kFLL31,
291 kFLL32,
292 kFLL33,
293 kFLL34,
294 kFLL35,
295 kFLL36,
296 kFLL37,
297 kFLL38,
298 kFLL39,
299 kFLL3A,
300 kFLL3B,
301 kFLL3C,
302 kFLL3D,
303 kFLL3E,
304 kFLL3F,
305 kPASADEL,
306 kPASAPHA,
307 kPASAPRA,
308 kPASADAC,
309 kPASACHM,
310 kPASASTL,
311 kPASAPR1,
312 kPASAPR0,
313 kSADCTRG,
314 kSADCRUN,
315 kSADCPWR,
316 kL0TSIM,
317 kSADCEC,
318 kSADCMC,
319 kSADCOC,
320 kSADCGTB,
321 kSEBDEN,
322 kSEBDOU,
323 kTPL00,
324 kTPL01,
325 kTPL02,
326 kTPL03,
327 kTPL04,
328 kTPL05,
329 kTPL06,
330 kTPL07,
331 kTPL08,
332 kTPL09,
333 kTPL0A,
334 kTPL0B,
335 kTPL0C,
336 kTPL0D,
337 kTPL0E,
338 kTPL0F,
339 kTPL10,
340 kTPL11,
341 kTPL12,
342 kTPL13,
343 kTPL14,
344 kTPL15,
345 kTPL16,
346 kTPL17,
347 kTPL18,
348 kTPL19,
349 kTPL1A,
350 kTPL1B,
351 kTPL1C,
352 kTPL1D,
353 kTPL1E,
354 kTPL1F,
355 kTPL20,
356 kTPL21,
357 kTPL22,
358 kTPL23,
359 kTPL24,
360 kTPL25,
361 kTPL26,
362 kTPL27,
363 kTPL28,
364 kTPL29,
365 kTPL2A,
366 kTPL2B,
367 kTPL2C,
368 kTPL2D,
369 kTPL2E,
370 kTPL2F,
371 kTPL30,
372 kTPL31,
373 kTPL32,
374 kTPL33,
375 kTPL34,
376 kTPL35,
377 kTPL36,
378 kTPL37,
379 kTPL38,
380 kTPL39,
381 kTPL3A,
382 kTPL3B,
383 kTPL3C,
384 kTPL3D,
385 kTPL3E,
386 kTPL3F,
387 kTPL40,
388 kTPL41,
389 kTPL42,
390 kTPL43,
391 kTPL44,
392 kTPL45,
393 kTPL46,
394 kTPL47,
395 kTPL48,
396 kTPL49,
397 kTPL4A,
398 kTPL4B,
399 kTPL4C,
400 kTPL4D,
401 kTPL4E,
402 kTPL4F,
403 kTPL50,
404 kTPL51,
405 kTPL52,
406 kTPL53,
407 kTPL54,
408 kTPL55,
409 kTPL56,
410 kTPL57,
411 kTPL58,
412 kTPL59,
413 kTPL5A,
414 kTPL5B,
415 kTPL5C,
416 kTPL5D,
417 kTPL5E,
418 kTPL5F,
419 kTPL60,
420 kTPL61,
421 kTPL62,
422 kTPL63,
423 kTPL64,
424 kTPL65,
425 kTPL66,
426 kTPL67,
427 kTPL68,
428 kTPL69,
429 kTPL6A,
430 kTPL6B,
431 kTPL6C,
432 kTPL6D,
433 kTPL6E,
434 kTPL6F,
435 kTPL70,
436 kTPL71,
437 kTPL72,
438 kTPL73,
439 kTPL74,
440 kTPL75,
441 kTPL76,
442 kTPL77,
443 kTPL78,
444 kTPL79,
445 kTPL7A,
446 kTPL7B,
447 kTPL7C,
448 kTPL7D,
449 kTPL7E,
450 kTPL7F,
451 kMEMRW,
452 kMEMCOR,
453 kDMDELA,
454 kDMDELS,
455 kLastReg }; // enum of all TRAP registers, to be used for access to them
456
051af255 457 const char* GetRegName(TrapReg_t reg) const { return reg >= 0 && reg < kLastReg ? fRegs[reg].fName.Data() : ""; }
458 UShort_t GetRegAddress(TrapReg_t reg) const { return reg >= 0 && reg < kLastReg ? fRegs[reg].fAddr : 0; }
459 UShort_t GetRegNBits(TrapReg_t reg) const { return reg >= 0 && reg < kLastReg ? fRegs[reg].fNbits : 0; }
460 UInt_t GetRegResetValue(TrapReg_t reg) const { return reg >= 0 && reg < kLastReg ? fRegs[reg].fResetValue : 0; }
ce4786b9 461
462 TrapReg_t GetRegByAddress(Int_t address) const;
463
464 Int_t GetTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
465 Bool_t PrintTrapReg(TrapReg_t reg, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
466 Bool_t PrintTrapAddr(Int_t addr, Int_t det = -1, Int_t rob = -1, Int_t mcm = -1);
467
468 Bool_t SetTrapReg(TrapReg_t reg, Int_t value);
469 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det);
470 Bool_t SetTrapReg(TrapReg_t reg, Int_t value, Int_t det, Int_t rob, Int_t mcm);
471
472 Int_t Peek(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
473 Bool_t Poke(Int_t addr, Int_t value, Int_t det, Int_t rob, Int_t mcm);
474
475 void InitRegs();
476 void ResetRegs();
477
478 // DMEM
051af255 479 Bool_t SetDmem(Int_t addr, UInt_t value);
480 Bool_t SetDmem(Int_t addr, UInt_t value, Int_t det);
481 Bool_t SetDmem(Int_t addr, UInt_t value, Int_t det, Int_t rob, Int_t mcm);
482 Bool_t SetDmem(Int_t addr, Int_t value) { return SetDmem(addr, (UInt_t) value); }
483 Bool_t SetDmem(Int_t addr, Int_t value, Int_t det) { return SetDmem(addr, (UInt_t) value, det); }
484 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); }
ce4786b9 485
051af255 486 Int_t GetDmem(Int_t addr, Int_t det, Int_t rob, Int_t mcm) { return GetDmemSigned(addr, det, rob, mcm); }
487 Int_t GetDmemSigned(Int_t addr, Int_t det, Int_t rob, Int_t mcm) { return (Int_t) GetDmemUnsigned(addr, det, rob, mcm); }
488 UInt_t GetDmemUnsigned(Int_t addr, Int_t det, Int_t rob, Int_t mcm);
ce4786b9 489
490 // configuration handling
491 Bool_t LoadConfig();
492 Bool_t LoadConfig(Int_t det, TString filename);
493
051af255 494 Bool_t ReadPackedConfig(Int_t det, UInt_t *data, Int_t size);
ce4786b9 495
496 Int_t ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);
497
051af255 498 // DMEM addresses
499 static const Int_t fgkDmemAddrLUTcor0 = 0xC02A;
500 static const Int_t fgkDmemAddrLUTcor1 = 0xC028;
501 static const Int_t fgkDmemAddrLUTnbins = 0xC029;
502
503 static const Int_t fgkDmemAddrLUTStart = 0xC100; // LUT start address
504 static const Int_t fgkDmemAddrLUTEnd = 0xC3FF; // maximum possible end address for the LUT table
505 static const Int_t fgkDmemAddrLUTLength = 0xC02B; // address where real size of the LUT table is stored
506
507 static const Int_t fgkDmemAddrTrackletStart = 0xC0E0; // Storage area for tracklets, start address
508 static const Int_t fgkDmemAddrTrackletEnd = 0xC0E3; // Storage area for tracklets, end address
509
510 static const Int_t fgkDmemAddrDeflCorr = 0xc022; // DMEM address of deflection correction
511 static const Int_t fgkDmemAddrNdrift = 0xc025; // DMEM address of Ndrift
512 static const Int_t fgkDmemAddrDeflCutStart = 0xc030; // DMEM start address of deflection cut
513 static const Int_t fgkDmemAddrDeflCutEnd = 0xc055; // DMEM end address of deflection cut
514
ce4786b9 515 protected:
516 static AliTRDtrapConfig *fgInstance; // pointer to instance (singleton)
517
518 struct SimpleReg_t {
519 TString fName; // Name of the register
520 UShort_t fAddr; // Address in GIO of TRAP
521 UShort_t fNbits; // Number of bits, from 1 to 32
522 UInt_t fResetValue; // reset value
523 SimpleReg_t(const char *nnn = 0, UShort_t a = 0, UShort_t n = 0, UInt_t r = 0) :
524 fName(nnn), fAddr(a), fNbits(n), fResetValue(r) {}
525 };
526
527 struct RegValue_t {
528 enum {
529 kInvalid = 0,
530 kGlobal,
531 kIndividual
532 } state; // mode of storage (global or per MCM)
533 union {
534 Int_t globalValue;
535 Int_t *individualValue;
536 };
537 };
538
539 // configuration registers
540 SimpleReg_t fRegs[kLastReg]; // array of TRAP registers
541 RegValue_t fRegisterValue[kLastReg]; // array of TRAP register values in use
542
543 Bool_t AddValues(UInt_t det, UInt_t cmd, UInt_t extali, Int_t addr, UInt_t data);
544 Short_t GetRobAB( UShort_t robsel, UShort_t linkpair ) const; // Converts the ROB part of the extended ALICE ID to robs
545 Short_t ChipmaskToMCMlist( Int_t cmA, Int_t cmB, UShort_t linkpair ); // Converts the chipmask to a list of MCMs
546
547 static const UInt_t fgkScsnCmdWrite=10; // Command number for the write command
548 static const Int_t fgkMaxLinkPairs=4; // number of linkpairs used during configuration
549 static const Int_t fgkMaxMcm; // max. no. of MCMs to be treated
550 static const Int_t fgkMcmlistSize=256; // list of MCMs to which a value has to be written
551
552 Int_t fMcmlist[fgkMcmlistSize]; // stores the list of MCMs after the conversion from extAliID -> AliID
553
554 // DMEM
555 static const Int_t fgkDmemStartAddress; // = 0xc000; // start address in TRAP GIO
556 static const Int_t fgkDmemWords = 0x400; // number of words in DMEM
051af255 557 UInt_t* fDmem[fgkDmemWords]; // DMEM storage
558 // Bool_t* fDmemValid[fgkDmemWords]; // DMEM valid flag storage
ce4786b9 559
560 AliTRDtrapConfig(); // private constructor due to singleton implementation
561
562/* not yet used
563 struct BlockDescr_t {
564 UShort_t addr;
565 UShort_t nregs;
566 UShort_t nbits;
567 UShort_t step;
568 };
569
570 struct CmdReg_t {
571 char *name;
572 UShort_t addr;
573 };
574
575 enum DbankProp_t { kDBankEmpty = 0,
576 kDBankHeader,
577 kDBankData,
578 kDBankNoB,
579 kDBankCRC,
580 kDBankEHeader,
581 kDBankSCSNData };
582*/
583
36dc3337 584
585 private:
586 AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
587 AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
588
ce4786b9 589 ClassDef(AliTRDtrapConfig, 2);
590};
591
592#endif
593