]>
Commit | Line | Data |
---|---|---|
502fbe9a | 1 | //____________________________________________________________________ |
2 | // | |
3 | // $id$ | |
4 | // | |
5 | // Check integrety of Hardware2Detector and Detector2Hardware | |
6 | // | |
9b48326f | 7 | /** @defgroup ALTRO_test ALTRO test |
8 | @ingroup FMD_script | |
9 | */ | |
f38b1653 | 10 | #ifndef __CINT__ |
11 | # include <TString.h> | |
12 | // # include <FMD/AliFMDParameters.h> | |
13 | # include <FMD/AliFMDAltroMapping.h> | |
14 | // # include <FMD/AliFMDUShortMap.h> | |
15 | // # include <FMD/AliFMDBoolMap.h> | |
16 | # include <TError.h> | |
17 | # include <iostream> | |
18 | #endif | |
19 | #define SHOW_ALL 1 | |
502fbe9a | 20 | //____________________________________________________________________ |
9b48326f | 21 | /** @ingroup ALTRO_test |
22 | @param ddl | |
23 | @param hwaddr | |
24 | @return */ | |
f38b1653 | 25 | const Char_t* |
26 | Addr2Str(UInt_t ddl, UInt_t hwaddr, UShort_t timebin) | |
502fbe9a | 27 | { |
28 | static TString s; | |
29 | UInt_t board = (hwaddr >> 7) & 0x1F; | |
30 | UInt_t chip = (hwaddr >> 4) & 0x7; | |
31 | UInt_t chan = hwaddr & 0xF; | |
f38b1653 | 32 | s = Form("(0x%05X,0x%02X,0x%1X,0x%1X,%04d)", ddl, board, chip, chan, timebin); |
502fbe9a | 33 | return s.Data(); |
34 | } | |
35 | ||
36 | //____________________________________________________________________ | |
9b48326f | 37 | /** @ingroup ALTRO_test |
38 | @param det | |
39 | @param ring | |
40 | @param sec | |
41 | @param str | |
42 | @return */ | |
f38b1653 | 43 | const Char_t* |
44 | Det2Str(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, UShort_t sam) | |
502fbe9a | 45 | { |
46 | static TString s; | |
f38b1653 | 47 | s = Form("FMD%d%c[%2d,%3d]-%d", det, ring, sec, str, sam); |
502fbe9a | 48 | return s.Data(); |
49 | } | |
50 | ||
51 | //____________________________________________________________________ | |
9b48326f | 52 | /** @ingroup ALTRO_test |
53 | @param det | |
54 | @param ring | |
55 | @param sec | |
56 | @param str | |
57 | @param ddl | |
58 | @param hwaddr | |
59 | @param odet | |
60 | @param oring | |
61 | @param osec | |
62 | @param ostr | |
63 | */ | |
502fbe9a | 64 | void |
f38b1653 | 65 | PrintTrans(UShort_t det, Char_t ring, UShort_t sec, Short_t str, UShort_t sam, |
66 | UInt_t ddl, UInt_t hwaddr, UShort_t timebin, | |
67 | UShort_t odet, Char_t oring, UShort_t osec, Short_t ostr, | |
68 | UShort_t osam) | |
502fbe9a | 69 | { |
70 | static TString s1, s2, s3; | |
f38b1653 | 71 | s1 = Det2Str(det, ring, sec, str, sam); |
72 | s2 = Addr2Str(ddl,hwaddr,timebin); | |
73 | s3 = Det2Str(odet, oring, osec, ostr, osam); | |
502fbe9a | 74 | Info("TestHWMap","%s -> %s -> %s", s1.Data(), s2.Data(), s3.Data()); |
75 | } | |
76 | ||
77 | //____________________________________________________________________ | |
9b48326f | 78 | /** @ingroup ALTRO_test |
79 | @param det | |
80 | @param ring | |
81 | @param sec | |
82 | @param str | |
83 | @param odet | |
84 | @param oring | |
85 | @param osec | |
86 | @param ostr | |
87 | */ | |
502fbe9a | 88 | void |
f38b1653 | 89 | CheckTrans(UShort_t det, Char_t ring, UShort_t sec, UShort_t str, UShort_t sam, |
90 | UInt_t ddl, UInt_t hwaddr, UShort_t timebin, | |
91 | UShort_t odet, Char_t oring, UShort_t osec, UShort_t ostr, | |
92 | UShort_t osam) | |
502fbe9a | 93 | { |
f38b1653 | 94 | bool ok = true; |
95 | if (det != odet) { | |
a9579262 | 96 | Warning("TestHWMap", "Detector # differ %d != %d", det, odet); |
f38b1653 | 97 | ok = false; |
98 | } | |
99 | if (ring != oring) { | |
a9579262 | 100 | Warning("TestHWMap", "Ring Id differ %c != %c", ring, oring); |
f38b1653 | 101 | ok = false; |
102 | } | |
103 | if (sec != osec) { | |
502fbe9a | 104 | Warning("TestHWMap", "Sector # differ %d != %d", sec, osec); |
f38b1653 | 105 | ok = false; |
106 | } | |
107 | if (str != ostr) { | |
108 | ok = false; | |
502fbe9a | 109 | Warning("TestHWMap", "Strip # differ %d != %d", str, ostr); |
f38b1653 | 110 | } |
111 | if (sam != osam) { | |
112 | ok = false; | |
113 | Warning("TestHWMap", "Sample # differ %d != %d", sam, osam); | |
114 | } | |
115 | #ifndef SHOW_ALL | |
116 | if (!ok) | |
117 | PrintTrans(det,ring,sec,str,sam, | |
118 | ddl,hwaddr,timebin, | |
119 | odet,oring,osec,ostr,osam); | |
120 | #endif | |
502fbe9a | 121 | } |
122 | ||
123 | //____________________________________________________________________ | |
9b48326f | 124 | /** @ingroup ALTRO_test |
125 | */ | |
502fbe9a | 126 | void |
a9579262 | 127 | TestAltroMapping(Int_t min=2, Int_t max=0) |
502fbe9a | 128 | { |
a9579262 | 129 | // if (min < 1 || min > 3) min = 1; |
130 | if (max < min) max = min; | |
f38b1653 | 131 | // AliFMDParameters* param = AliFMDParameters::Instance(); |
502fbe9a | 132 | AliFMDAltroMapping m; |
f38b1653 | 133 | UShort_t presamp = 0; |
134 | UShort_t oversamp = 4; | |
135 | ||
a9579262 | 136 | for (UShort_t det = min; det <= max; det++) { |
502fbe9a | 137 | for (UShort_t rng = 0; rng < 2; rng++) { |
138 | Char_t ring = (rng == 0 ? 'I' : 'O'); | |
139 | Int_t nsec = (ring == 'I' ? 20 : 40); | |
140 | Int_t nstr = (ring == 'I' ? 512 : 256); | |
141 | for (UShort_t sec = 0; sec < nsec; sec++) { | |
f38b1653 | 142 | for (Short_t str = 0; str < nstr; str ++ /*= 128*/) { |
143 | for(UShort_t sam = 0; sam < oversamp; sam++) { | |
144 | UInt_t ddl, hwaddr; | |
145 | UShort_t timebin; | |
146 | if (!m.Detector2Hardware(det, ring, sec, str, sam, | |
147 | presamp, oversamp, | |
148 | ddl, hwaddr, timebin)) { | |
149 | Warning("TestHWMap", "detector to hardware failed on %s", | |
150 | Det2Str(det, ring, sec, str, sam)); | |
151 | continue; | |
152 | } | |
153 | UShort_t odet, osec, osam; | |
154 | Short_t ostr; | |
155 | Char_t oring; | |
156 | if (!m.Hardware2Detector(ddl, hwaddr, timebin, | |
157 | presamp, oversamp, | |
158 | odet, oring, osec, ostr, osam)){ | |
159 | Warning("TestHWMap", "hardware to detector failed on %s", | |
160 | Addr2Str(ddl, hwaddr, timebin)); | |
161 | continue; | |
162 | } | |
163 | #ifdef SHOW_ALL | |
164 | PrintTrans(det,ring,sec,str,sam, | |
165 | ddl,hwaddr,timebin, | |
166 | odet,oring,osec,ostr,osam); | |
167 | #endif | |
168 | CheckTrans(det,ring,sec,str,sam, | |
169 | ddl,hwaddr,timebin, | |
170 | odet,oring,osec,ostr,osam); | |
502fbe9a | 171 | } |
502fbe9a | 172 | }// Loop over strips |
173 | } // Loop over sectors | |
174 | } // Loop over rings | |
175 | } // Loop over detectors | |
176 | } | |
177 | ||
178 | ||
179 | //____________________________________________________________________ | |
180 | // | |
181 | // EOF | |
182 | // | |
183 | ||
184 | ||
185 | ||
186 |