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