Revised DDL map
[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 //  Revised by Enrico Fragiacomo
22 //  Last update: 2007/09/06
23 ///
24 ///////////////////////////////////////////////////////////////////////////////
25
26 #include "AliITSRawStreamSSD.h"
27 #include "AliRawReader.h"
28 #include "AliLog.h"
29
30 ClassImp(AliITSRawStreamSSD)
31   
32   
33   const Int_t AliITSRawStreamSSD::fgkDDLModuleMap[kDDLsNumber][kModulesPerDDL] = {
34
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   };
212
213
214 AliITSRawStreamSSD::AliITSRawStreamSSD(AliRawReader* rawReader) :
215   AliITSRawStream(rawReader),
216   fddl(0),
217   fad(0),
218   fadc(0),
219   fData(0)
220 {
221   // create an object to read ITS SSD raw digits
222   
223   fRawReader->Select("ITSSSD");
224 }
225
226
227 Bool_t AliITSRawStreamSSD::Next()
228 {
229   // read the next raw digit
230   // returns kFALSE if there is no digit left
231   
232   fPrevModuleID = fModuleID;
233   if (!fRawReader->ReadNextInt(fData)) return kFALSE;
234   
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
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   }
249   fModuleID = fgkDDLModuleMap[fRawReader->GetDDLID()][relModuleID];
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);
254
255   fadc=adc;
256   fad=slot;
257   fddl=fRawReader->GetDDLID();
258   
259   return kTRUE;
260 }