]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDtrapConfig.h
current status of dNdPt analysis code
[u/mrichter/AliRoot.git] / TRD / AliTRDtrapConfig.h
1 #ifndef ALITRDTRAPCONFIG_H
2 #define ALITRDTRAPCONFIG_H
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
11
12 #include <TObject.h>
13 #include <TString.h>
14
15 class AliTRDtrapConfig : public TObject
16 {
17  public:
18   ~AliTRDtrapConfig(); 
19
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
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; }
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 
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); }
485
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);
489
490   // configuration handling
491   Bool_t LoadConfig();
492   Bool_t LoadConfig(Int_t det, TString filename);
493
494   Bool_t ReadPackedConfig(Int_t det, UInt_t *data, Int_t size);
495
496   Int_t  ExtAliToAli( UInt_t dest, UShort_t linkpair, UShort_t rocType);
497
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
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
557   UInt_t* fDmem[fgkDmemWords]; // DMEM storage
558   //  Bool_t* fDmemValid[fgkDmemWords]; // DMEM valid flag storage
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
584
585  private:
586   AliTRDtrapConfig& operator=(const AliTRDtrapConfig &rhs); // not implemented
587   AliTRDtrapConfig(const AliTRDtrapConfig& cfg); // not implemented
588
589   ClassDef(AliTRDtrapConfig, 2);
590 };
591
592 #endif
593