1 //____________________________________________________________________
5 // Check integrety of Hardware2Detector and Detector2Hardware
7 /** @defgroup ALTRO_test ALTRO test
10 //____________________________________________________________________
11 /** @ingroup ALTRO_test
16 Addr2Str(UInt_t ddl, UInt_t hwaddr)
19 UInt_t board = (hwaddr >> 7) & 0x1F;
20 UInt_t chip = (hwaddr >> 4) & 0x7;
21 UInt_t chan = hwaddr & 0xF;
22 s = Form("(0x%05X,0x%02X,0x%1X,0x%1X)", ddl, board, chip, chan);
26 //____________________________________________________________________
27 /** @ingroup ALTRO_test
34 Det2Str(UShort_t det, Char_t ring, UShort_t sec, UShort_t str)
37 s = Form("FMD%d%c[%2d,%3d]", det, ring, sec, str);
41 //____________________________________________________________________
42 /** @ingroup ALTRO_test
55 PrintTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str,
56 UInt_t ddl, UInt_t hwaddr,
57 UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
59 static TString s1, s2, s3;
60 s1 = Det2Str(det, ring, sec, str);
61 s2 = Addr2Str(ddl,hwaddr);
62 s3 = Det2Str(odet, oring, osec, ostr);
63 Info("TestHWMap","%s -> %s -> %s", s1.Data(), s2.Data(), s3.Data());
66 //____________________________________________________________________
67 /** @ingroup ALTRO_test
78 CheckTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str,
79 UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr)
82 Warning("TestHWMap", "Detector # differ %d != %d", det, odet);
84 Warning("TestHWMap", "Ring Id differ %c != %c", ring, oring);
86 Warning("TestHWMap", "Sector # differ %d != %d", sec, osec);
88 Warning("TestHWMap", "Strip # differ %d != %d", str, ostr);
91 //____________________________________________________________________
92 /** @ingroup ALTRO_test
95 TestAltroMapping(Int_t min=2, Int_t max=0)
97 // if (min < 1 || min > 3) min = 1;
98 if (max < min) max = min;
99 AliFMDParameters* param = AliFMDParameters::Instance();
100 AliFMDAltroMapping m;
102 for (UShort_t det = min; det <= max; det++) {
103 for (UShort_t rng = 0; rng < 2; rng++) {
104 Char_t ring = (rng == 0 ? 'I' : 'O');
105 Int_t nsec = (ring == 'I' ? 20 : 40);
106 Int_t nstr = (ring == 'I' ? 512 : 256);
107 for (UShort_t sec = 0; sec < nsec; sec++) {
108 for (UShort_t str = 0; str < nstr; str += 128) {
110 if (!m.Detector2Hardware(det, ring, sec, str, ddl, hwaddr)) {
111 Warning("TestHWMap", "detector to hardware failed on %s",
112 Det2Str(det, ring, sec, str));
115 UShort_t odet, osec, ostr;
117 if (!m.Hardware2Detector(ddl, hwaddr, odet, oring, osec, ostr)){
118 Warning("TestHWMap", "hardware to detector failed on %s",
119 Addr2Str(ddl, hwaddr));
122 PrintTrans(det,ring,sec,str,ddl,hwaddr,odet,oring,osec,ostr);
123 CheckTrans(det,ring,sec,str,odet,oring,osec,ostr);
125 } // Loop over sectors
127 } // Loop over detectors
131 //____________________________________________________________________