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