]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSRawStreamSSD.cxx
Small optimizations
[u/mrichter/AliRoot.git] / ITS / AliITSRawStreamSSD.cxx
CommitLineData
2906f4c2 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18///////////////////////////////////////////////////////////////////////////////
19///
20/// This class provides access to ITS SSD digits in raw data.
bd1231b5 21// Revised by Enrico Fragiacomo
22// Last update: 2007/09/06
2906f4c2 23///
24///////////////////////////////////////////////////////////////////////////////
25
26#include "AliITSRawStreamSSD.h"
27#include "AliRawReader.h"
812a6a14 28#include "AliLog.h"
2906f4c2 29
30ClassImp(AliITSRawStreamSSD)
bd1231b5 31
32
33 const Int_t AliITSRawStreamSSD::fgkDDLModuleMap[kDDLsNumber][kModulesPerDDL] = {
2906f4c2 34
bd1231b5 35 //DDL[32][]=
36 { 1214,1215,1224,1225,1222,1223,1220,1221,1218,1219,1216,1217,
37 1192,1193,1202,1203,1200,1201,1198,1199,1196,1197,1194,1195,
38 1170,1171,1180,1181,1178,1179,1176,1177,1174,1175,1172,1173,
39 1148,1149,1158,1159,1156,1157,1154,1155,1152,1153,1150,1151,
40 2121,2122,2119,2120,2117,2118,2115,2116,2113,2114,2111,2112,
41 2096,2097,2094,2095,2092,2093,2090,2091,2088,2089,2086,2087,
42 2071,2072,2069,2070,2067,2068,2065,2066,2063,2064,2061,2062,
43 2046,2047,2044,2045,2042,2043,2040,2041,2038,2039,2036,2037,
44 2021,2022,2019,2020,2017,2018,2015,2016,2013,2014,2011,2012},
45
46 //DDL[33][]=
47 {1126,1127,1136,1137,1134,1135,1132,1133,1130,1131,1128,1129,
48 1104,1105,1114,1115,1112,1113,1110,1111,1108,1109,1106,1107,
49 1082,1083,1092,1093,1090,1091,1088,1089,1086,1087,1084,1085,
50 1060,1061,1070,1071,1068,1069,1066,1067,1064,1065,1062,1063,
51 1038,1039,1048,1049,1046,1047,1044,1045,1042,1043,1040,1041,
52 1996,1997,1994,1995,1992,1993,1990,1991,1988,1989,1986,1987,
53 1971,1972,1969,1970,1967,1968,1965,1966,1963,1964,1961,1962,
54 1946,1947,1944,1945,1942,1943,1940,1941,1938,1939,1936,1937,
55 1921,1922,1919,1920,1917,1918,1915,1916,1913,1914,1911,1912},
56
57 //DDL[34][]=
58 {1016,1017,1026,1027,1024,1025,1022,1023,1020,1021,1018,1019,
59 994, 995,1004,1005,1002,1003,1000,1001, 998, 999, 996, 997,
60 972, 973, 982, 983, 980, 981, 978, 979, 976, 977, 974, 975,
61 950, 951, 960, 961, 958, 959, 956, 957, 954, 955, 952, 953,
62 1896,1897,1894,1895,1892,1893,1890,1891,1888,1889,1886,1887,
63 1871,1872,1869,1870,1867,1868,1865,1866,1863,1864,1861,1862,
64 1846,1847,1844,1845,1842,1843,1840,1841,1838,1839,1836,1837,
65 1821,1822,1819,1820,1817,1818,1815,1816,1813,1814,1811,1812,
66 1796,1797,1794,1795,1792,1793,1790,1791,1788,1789,1786,1787},
67
68 //DDL[35][]=
69 { 928, 929, 938, 939, 936, 937, 934, 935, 932, 933, 930, 931,
70 906, 907, 916, 917, 914, 915, 912, 913, 910, 911, 908, 909,
71 884, 885, 894, 895, 892, 893, 890, 891, 888, 889, 886, 887,
72 862, 863, 872, 873, 870, 871, 868, 869, 866, 867, 864, 865,
73 1771,1772,1769,1770,1767,1768,1765,1766,1763,1764,1761,1762,
74 1746,1747,1744,1745,1742,1743,1740,1741,1738,1739,1736,1737,
75 1721,1722,1719,1720,1717,1718,1715,1716,1713,1714,1711,1712,
76 1696,1697,1694,1695,1692,1693,1690,1691,1688,1689,1686,1687,
77 1671,1672,1669,1670,1667,1668,1665,1666,1663,1664,1661,1662},
78
79 //DDL[36][]=
80 { 840, 841, 850, 851, 848, 849, 846, 847, 844, 845, 842, 843,
81 818, 819, 828, 829, 826, 827, 824, 825, 822, 823, 820, 821,
82 796, 797, 806, 807, 804, 805, 802, 803, 800, 801, 798, 799,
83 774, 775, 784, 785, 782, 783, 780, 781, 778, 779, 776, 777,
84 1646,1647,1644,1645,1642,1643,1640,1641,1638,1639,1636,1637,
85 1621,1622,1619,1620,1617,1618,1615,1616,1613,1614,1611,1612,
86 1596,1597,1594,1595,1592,1593,1590,1591,1588,1589,1586,1587,
87 1571,1572,1569,1570,1567,1568,1565,1566,1563,1564,1561,1562,
88 1546,1547,1544,1545,1542,1543,1540,1541,1538,1539,1536,1537},
89
90 //DDL[37][]=
91 { 752, 753, 762, 763, 760, 761, 758, 759, 756, 757, 754, 755,
92 730, 731, 740, 741, 738, 739, 736, 737, 734, 735, 732, 733,
93 708, 709, 718, 719, 716, 717, 714, 715, 712, 713, 710, 711,
94 686, 687, 696, 697, 694, 695, 692, 693, 690, 691, 688, 689,
95 664, 665, 674, 675, 672, 673, 670, 671, 668, 669, 666, 667,
96 1521,1522,1519,1520,1517,1518,1515,1516,1513,1514,1511,1512,
97 1496,1497,1494,1495,1492,1493,1490,1491,1488,1489,1486,1487,
98 1471,1472,1469,1470,1467,1468,1465,1466,1463,1464,1461,1462,
99 1446,1447,1444,1445,1442,1443,1440,1441,1438,1439,1436,1437},
100
101 //DDL[38][]=
102 { 642, 643, 652, 653, 650, 651, 648, 649, 646, 647, 644, 645,
103 620, 621, 630, 631, 628, 629, 626, 627, 624, 625, 622, 623,
104 598, 599, 608, 609, 606, 607, 604, 605, 602, 603, 600, 601,
105 576, 577, 586, 587, 584, 585, 582, 583, 580, 581, 578, 579,
106 1421,1422,1419,1420,1417,1418,1415,1416,1413,1414,1411,1412,
107 1396,1397,1394,1395,1392,1393,1390,1391,1388,1389,1386,1387,
108 1369,1371,1365,1367,1361,1363,1357,1359,1353,1355,1349,1351,
109 1346,1347,1344,1345,1342,1343,1340,1341,1338,1339,1336,1337,
110 1321,1322,1319,1320,1317,1318,1315,1316,1313,1314,1311,1312},
111
112 //DDL[39][]=
113 { 554, 555, 564, 565, 562, 563, 560, 561, 558, 559, 556, 557,
114 532, 533, 542, 543, 540, 541, 538, 539, 536, 537, 534, 535,
115 510, 511, 520, 521, 518, 519, 516, 517, 514, 515, 512, 513,
116 1236,1237,1246,1247,1244,1245,1242,1243,1240,1241,1238,1239,
117 1296,1297,1294,1295,1292,1293,1290,1291,1288,1289,1286,1287,
118 1271,1272,1269,1270,1267,1268,1265,1266,1263,1264,1261,1262,
119 2196,2197,2194,2195,2192,2193,2190,2191,2188,2189,2186,2187,
120 2171,2172,2169,2170,2167,2168,2165,2166,2163,2164,2161,2162,
121 2146,2147,2144,2145,2142,2143,2140,2141,2138,2139,2136,2137},
122
123 //DDL[40][]=
124 {2060,2110,1205,1204,1206,1207,1209,1208,1211,1210,1213,1212,
125 -1,2085,1183,1182,1184,1185,1187,1186,1189,1188,1191,1190,
126 -1,2010,1161,1160,1162,1163,1165,1164,1167,1166,1169,1168,
127 -1,2035,1139,1138,1140,1141,1143,1142,1145,1144,1147,1146,
128 2099,2098,2101,2100,2103,2102,2105,2104,2107,2106,2109,2108,
129 2074,2073,2076,2075,2078,2077,2080,2079,2082,2081,2084,2083,
130 2049,2048,2051,2050,2053,2052,2055,2054,2057,2056,2059,2058,
131 2024,2023,2026,2025,2028,2027,2030,2029,2032,2031,2034,2033,
132 1999,1998,2001,2000,2003,2002,2005,2004,2007,2006,2009,2008},
133
134 //DDL[41][]=
135 { -1,1960,1117,1116,1118,1119,1121,1120,1123,1122,1125,1124,
136 -1,1985,1095,1094,1096,1097,1099,1098,1101,1100,1103,1102,
137 -1,1910,1073,1072,1074,1075,1077,1076,1079,1078,1081,1080,
138 1935, -1,1051,1050,1052,1053,1055,1054,1057,1056,1059,1058,
139 -1, -1,1029,1028,1030,1031,1033,1032,1035,1034,1037,1036,
140 1974,1973,1976,1975,1978,1977,1980,1979,1982,1981,1984,1983,
141 1949,1948,1951,1950,1953,1952,1955,1954,1957,1956,1959,1958,
142 1924,1923,1926,1925,1928,1927,1930,1929,1932,1931,1934,1933,
143 1899,1898,1901,1900,1903,1902,1905,1904,1907,1906,1909,1908},
144
145 //DDL[42][]=
146 {1835,1885,1007,1006,1008,1009,1011,1010,1013,1012,1015,1014,
147 -1,1860, 985, 984, 986, 987, 989, 988, 991, 990, 993, 992,
148 -1,1785, 963, 962, 964, 965, 967, 966, 969, 968, 971, 970,
149 -1,1810, 941, 940, 942, 943, 945, 944, 947, 946, 949, 948,
150 1874,1873,1876,1875,1878,1877,1880,1879,1882,1881,1884,1883,
151 1849,1848,1851,1850,1853,1852,1855,1854,1857,1856,1859,1858,
152 1824,1823,1826,1825,1828,1827,1830,1829,1832,1831,1834,1833,
153 1799,1798,1801,1800,1803,1802,1805,1804,1807,1806,1809,1808,
154 1774,1773,1776,1775,1778,1777,1780,1779,1782,1781,1784,1783},
155
156 //DDL[43][]=
157 { -1,1735, 919, 918, 920, 921, 923, 922, 925, 924, 927, 926,
158 -1,1760, 897, 896, 898, 899, 901, 900, 903, 902, 905, 904,
159 -1,1685, 875, 874, 876, 877, 879, 878, 881, 880, 883, 882,
160 1710,1660, 853, 852, 854, 855, 857, 856, 859, 858, 861, 860,
161 1749,1748,1751,1750,1753,1752,1755,1754,1757,1756,1759,1758,
162 1724,1723,1726,1725,1728,1727,1730,1729,1732,1731,1734,1733,
163 1699,1698,1701,1700,1703,1702,1705,1704,1707,1706,1709,1708,
164 1674,1673,1676,1675,1678,1677,1680,1679,1682,1681,1684,1683,
165 1649,1648,1651,1650,1653,1652,1655,1654,1657,1656,1659,1658},
166
167 //DDL[44][]=
168 {1585,1635, 831, 830, 832, 833, 835, 834, 837, 836, 839, 838,
169 -1,1610, 809, 808, 810, 811, 813, 812, 815, 814, 817, 816,
170 -1,1535, 787, 786, 788, 789, 791, 790, 793, 792, 795, 794,
171 -1,1560, 765, 764, 766, 767, 769, 768, 771, 770, 773, 772,
172 1624,1623,1626,1625,1628,1627,1630,1629,1632,1631,1634,1633,
173 1599,1598,1601,1600,1603,1602,1605,1604,1607,1606,1609,1608,
174 1574,1573,1576,1575,1578,1577,1580,1579,1582,1581,1584,1583,
175 1549,1548,1551,1550,1553,1552,1555,1554,1557,1556,1559,1558,
176 1524,1523,1526,1525,1528,1527,1530,1529,1532,1531,1534,1533},
177
178 //DDL[45][]=
179 { -1,1485, 743, 742, 744, 745, 747, 746, 749, 748, 751, 750,
180 -1,1510, 721, 720, 722, 723, 725, 724, 727, 726, 729, 728,
181 -1,1435, 699, 698, 700, 701, 703, 702, 705, 704, 707, 706,
182 1460, -1, 677, 676, 678, 679, 681, 680, 683, 682, 685, 684,
183 -1, -1, 655, 654, 656, 657, 659, 658, 661, 660, 663, 662,
184 1499,1498,1501,1500,1503,1502,1505,1504,1507,1506,1509,1508,
185 1474,1473,1476,1475,1478,1477,1480,1479,1482,1481,1484,1483,
186 1449,1448,1451,1450,1453,1452,1455,1454,1457,1456,1459,1458,
187 1424,1423,1426,1425,1428,1427,1430,1429,1432,1431,1434,1433},
188
189 //DDL[46][]=
190 { -1,1410, 633, 632, 634, 635, 637, 636, 639, 638, 641, 640,
191 -1,1385, 611, 610, 612, 613, 615, 614, 617, 616, 619, 618,
192 -1,1310, 589, 588, 590, 591, 593, 592, 595, 594, 597, 596,
193 -1,1335, 567, 566, 568, 569, 571, 570, 573, 572, 575, 574,
194 1399,1398,1401,1400,1403,1402,1405,1404,1407,1406,1409,1408,
195 1374,1373,1376,1375,1378,1377,1380,1379,1382,1381,1384,1383,
196 1350,1348,1354,1352,1358,1356,1362,1360,1366,1364,1370,1368,
197 1324,1323,1326,1325,1328,1327,1330,1329,1332,1331,1334,1333,
198 1299,1298,1301,1300,1303,1302,1305,1304,1307,1306,1309,1308},
199
200 //DDL[47][]=
201 { -1,1260, 545, 544, 546, 547, 549, 548, 551, 550, 553, 552,
202 -1,1285, 523, 522, 524, 525, 527, 526, 529, 528, 531, 530,
203 -1,2160, 501, 500, 502, 503, 505, 504, 507, 506, 509, 508,
204 2185,2135,1227,1226,1228,1229,1231,1230,1233,1232,1235,1234,
205 1274,1273,1276,1275,1278,1277,1280,1279,1282,1281,1284,1283,
206 1249,1248,1251,1250,1253,1252,1255,1254,1257,1256,1259,1258,
207 2174,2173,2176,2175,2178,2177,2180,2179,2182,2181,2184,2183,
208 2149,2148,2151,2150,2153,2152,2155,2154,2157,2156,2159,2158,
209 2124,2123,2126,2125,2128,2127,2130,2129,2132,2131,2134,2133}
210
211 };
2906f4c2 212
213
214AliITSRawStreamSSD::AliITSRawStreamSSD(AliRawReader* rawReader) :
e56160b8 215 AliITSRawStream(rawReader),
bd1231b5 216 fddl(0),
217 fad(0),
218 fadc(0),
219 fData(0)
2906f4c2 220{
bd1231b5 221 // create an object to read ITS SSD raw digits
222
362c9d61 223 fRawReader->Select("ITSSSD");
2906f4c2 224}
225
226
227Bool_t AliITSRawStreamSSD::Next()
228{
bd1231b5 229 // read the next raw digit
230 // returns kFALSE if there is no digit left
231
2906f4c2 232 fPrevModuleID = fModuleID;
233 if (!fRawReader->ReadNextInt(fData)) return kFALSE;
234
bd1231b5 235 // new coding following IGF Memo - M.Rossewij - 22-06-2004
236 fSignal = (fData & 0x00000FFF); // signal coded in the first 12 bits
237 fSignal = (fSignal > 2048) ? fSignal - 4096 : fSignal;
238
239 UInt_t slot = (fData >> 28) & 0x0000000F; // slot range 1 - 9
240 UInt_t adc = (fData >> 24) & 0x0000000F; // adc range 0 - 5 AND 8 - 13;
241 UInt_t relModuleID = (slot-1) * 12; // 0 - 96
242 relModuleID += (adc<6) ? adc : (adc-2); // adds 0 - 5 AND 6 - 11
243 // relModuleID range 0 - 108
812a6a14 244 if(relModuleID > kModulesPerDDL){
245 fRawReader->AddMajorErrorLog(kWrongModuleIdErr,Form("Module ID = %d > %d (max)",relModuleID,kModulesPerDDL));
246 AliWarning(Form("Module ID = %d > %d (max)",relModuleID,kModulesPerDDL));
247 return kFALSE;
248 }
2906f4c2 249 fModuleID = fgkDDLModuleMap[fRawReader->GetDDLID()][relModuleID];
bd1231b5 250
251 fCoord2 = (fData >> 12) & 0x000007FF;
252 fCoord1 = (fCoord2 < 768) ? 0 : 1; // strip 0 - 767 are Pside, strip 768 - 1535 are Nside
253 fCoord2 = (fCoord1 == 0) ? fCoord2 : (1535 - fCoord2);
2906f4c2 254
bd1231b5 255 fadc=adc;
256 fad=slot;
257 fddl=fRawReader->GetDDLID();
258
2906f4c2 259 return kTRUE;
260}