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