+2003-08-04 Constantin Loizides <loizides@hansa00>
+
+ * /cvs/hltcvs/level3code/doc/alice-062003.geo, /cvs/hltcvs/level3code/doc/l3transform-062003.config, /cvs/hltcvs/level3code/doc/l3transform-cosmic-022003.config:
+ Added helper files.
+
+2003-07-30 Constantin Loizides <loizides@hansa00>
+
+ * /cvs/hltcvs/level3code/doc/taginfo:
+ Added tag info file to remember why and when tagged.
+
2003-07-29 Constantin Loizides <loizides@hansa00>
* /cvs/hltcvs/level3code/doc/README:
+2003-08-04 Constantin Loizides <loizides@hansa00>
+
+ * /cvs/hltcvs/level3code/exa/binary.C: Moved L3 to HLT in the comment.
+
+ * /cvs/hltcvs/level3code/exa/read.C:
+ Removed logger as it will be started in rootlogin.C
+
+ * /cvs/hltcvs/level3code/exa/ddl2binary.C:
+ Examplte to convert ddl to hlt data format.
+
2003-07-29 Constantin Loizides <loizides@hansa00>
* /cvs/hltcvs/level3code/exa/runtracker.C: Added more comments.
+2003-08-04 Constantin Loizides <loizides@hansa00>
+
+ * /cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.cxx, /cvs/hltcvs/level3code/misc/AliL3DDLDataFileHandler.h, /cvs/hltcvs/level3code/misc/AliL3DDLRawReader.cxx, /cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.cxx, /cvs/hltcvs/level3code/misc/AliL3DDLRawReaderFile.h, /cvs/hltcvs/level3code/misc/AliL3DDLRawReader.h, /cvs/hltcvs/level3code/misc/AliL3DDLTPCRawStream.cxx, /cvs/hltcvs/level3code/misc/AliL3DDLTPCRawStream.h, /cvs/hltcvs/level3code/misc/AliL3MiscLinkDef.h, /cvs/hltcvs/level3code/misc/Makefile:
+ Added classes for tpc ddl to hlt binary conversion.
+
+ * /cvs/hltcvs/level3code/misc/AliL3TransBit.cxx:
+ Added aliroot copyright.
+
2003-07-26 Constantin Loizides <loizides@hansa00>
* /cvs/hltcvs/level3code/misc/AliL3DataHandler.cxx, /cvs/hltcvs/level3code/misc/AliL3DataHandler.h, /cvs/hltcvs/level3code/misc/AliL3VHDLClusterFinder.h:
+2003-08-04 Constantin Loizides <loizides@hansa00>
+
+ * /cvs/hltcvs/level3code/src/AliL3MemHandler.cxx, /cvs/hltcvs/level3code/src/AliL3MemHandler.h:
+ Added virtual functions for the daughter classes AliL3RawDataFileHandler und AliL3DDLDataFileHandler.
+
+ * /cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.cxx, /cvs/hltcvs/level3code/src/AliL3RawDataFileHandler.h:
+ Added RawData2CompBinary function.
+
+ * /cvs/hltcvs/level3code/src/AliL3RootTypes.h:
+ Changed comment from L3 to HLT; although that will be a long way to go...
+
+ * /cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ Added printout when config file was successfully read.
+
+2003-07-30 Anders Strand Vestbo <vestbo@hansa00>
+
+ * /cvs/hltcvs/level3code/src/AliL3GlobalMerger.cxx:
+ Bugfix in Merge(). When a track is merged with a track in a
+ neighbouring sector, the current track loop has to finish.
+ If not, a track might get merged with two different tracks.
+ This bug was brought to you by Dr.Frankenfeld, and solved by
+ me 2 years later...
+
+ * /cvs/hltcvs/level3code/src/AliL3ClustFinderNew.cxx:
+ The cluster charge was only written in case of fRawSP. Should of course
+ ALWAYS be written.
+
+ * /cvs/hltcvs/level3code/src/AliL3Transform.cxx:
+ Set bfield in MakeInitFile
+
2003-07-29 Constantin Loizides <loizides@hansa00>
* /cvs/hltcvs/level3code/src/AliL3Transform.cxx:
--- /dev/null
+void AliL3Transform::Init(){
+ fVersion = 10;
+ fBFieldFactor = 1.000;
+ fSolenoidBField = 4.000;
+ fNTimeBins = 446;
+ fNRowLow = 63;
+ fNRowUp = 96;
+ fNRowUp1 = 64;
+ fNRowUp2 = 32;
+ fNSectorLow = 36;
+ fNSectorUp = 36;
+ fNSector = 72;
+ fPadPitchWidthLow = 0.400;
+ fPadPitchWidthUp = 0.600;
+ fZWidth = 0.5660;
+ fZSigma = 0.2288;
+ fZLength = 250.0000;
+ fZOffset = 0.6864;
+ fDiffT = 0.0220;
+ fDiffL = 0.0220;
+ fOmegaTau = 0.1450;
+ fInnerPadLength = 0.750;
+ fOuter1PadLength = 1.000;
+ fOuter2PadLength = 1.500;
+ fInnerPRFSigma = 0.203811;
+ fOuter1PRFSigma = 0.299325;
+ fOuter2PRFSigma = 0.299323;
+ fTimeSigma = 0.228809;
+ fADCSat = 1024;
+ fZeroSup = 2;
+ fNSlice = 36;
+ fNRow = 159;
+ fNRotShift = 0.50;
+ fX[0] = 85.19;
+ fX[1] = 85.94;
+ fX[2] = 86.69;
+ fX[3] = 87.44;
+ fX[4] = 88.19;
+ fX[5] = 88.94;
+ fX[6] = 89.69;
+ fX[7] = 90.44;
+ fX[8] = 91.19;
+ fX[9] = 91.94;
+ fX[10] = 92.69;
+ fX[11] = 93.44;
+ fX[12] = 94.19;
+ fX[13] = 94.94;
+ fX[14] = 95.69;
+ fX[15] = 96.44;
+ fX[16] = 97.19;
+ fX[17] = 97.94;
+ fX[18] = 98.69;
+ fX[19] = 99.44;
+ fX[20] = 100.19;
+ fX[21] = 100.94;
+ fX[22] = 101.69;
+ fX[23] = 102.44;
+ fX[24] = 103.19;
+ fX[25] = 103.94;
+ fX[26] = 104.69;
+ fX[27] = 105.44;
+ fX[28] = 106.19;
+ fX[29] = 106.94;
+ fX[30] = 107.69;
+ fX[31] = 108.44;
+ fX[32] = 109.19;
+ fX[33] = 109.94;
+ fX[34] = 110.69;
+ fX[35] = 111.44;
+ fX[36] = 112.19;
+ fX[37] = 112.94;
+ fX[38] = 113.69;
+ fX[39] = 114.44;
+ fX[40] = 115.19;
+ fX[41] = 115.94;
+ fX[42] = 116.69;
+ fX[43] = 117.44;
+ fX[44] = 118.19;
+ fX[45] = 118.94;
+ fX[46] = 119.69;
+ fX[47] = 120.44;
+ fX[48] = 121.19;
+ fX[49] = 121.94;
+ fX[50] = 122.69;
+ fX[51] = 123.44;
+ fX[52] = 124.19;
+ fX[53] = 124.94;
+ fX[54] = 125.69;
+ fX[55] = 126.44;
+ fX[56] = 127.19;
+ fX[57] = 127.94;
+ fX[58] = 128.70;
+ fX[59] = 129.45;
+ fX[60] = 130.20;
+ fX[61] = 130.95;
+ fX[62] = 131.70;
+ fX[63] = 135.18;
+ fX[64] = 136.18;
+ fX[65] = 137.18;
+ fX[66] = 138.18;
+ fX[67] = 139.18;
+ fX[68] = 140.18;
+ fX[69] = 141.18;
+ fX[70] = 142.18;
+ fX[71] = 143.18;
+ fX[72] = 144.18;
+ fX[73] = 145.18;
+ fX[74] = 146.18;
+ fX[75] = 147.18;
+ fX[76] = 148.18;
+ fX[77] = 149.18;
+ fX[78] = 150.18;
+ fX[79] = 151.18;
+ fX[80] = 152.18;
+ fX[81] = 153.18;
+ fX[82] = 154.18;
+ fX[83] = 155.18;
+ fX[84] = 156.18;
+ fX[85] = 157.18;
+ fX[86] = 158.18;
+ fX[87] = 159.18;
+ fX[88] = 160.18;
+ fX[89] = 161.18;
+ fX[90] = 162.18;
+ fX[91] = 163.18;
+ fX[92] = 164.18;
+ fX[93] = 165.18;
+ fX[94] = 166.18;
+ fX[95] = 167.18;
+ fX[96] = 168.18;
+ fX[97] = 169.18;
+ fX[98] = 170.18;
+ fX[99] = 171.18;
+ fX[100] = 172.18;
+ fX[101] = 173.18;
+ fX[102] = 174.18;
+ fX[103] = 175.18;
+ fX[104] = 176.18;
+ fX[105] = 177.18;
+ fX[106] = 178.18;
+ fX[107] = 179.18;
+ fX[108] = 180.18;
+ fX[109] = 181.18;
+ fX[110] = 182.18;
+ fX[111] = 183.18;
+ fX[112] = 184.18;
+ fX[113] = 185.18;
+ fX[114] = 186.18;
+ fX[115] = 187.18;
+ fX[116] = 188.18;
+ fX[117] = 189.18;
+ fX[118] = 190.18;
+ fX[119] = 191.18;
+ fX[120] = 192.18;
+ fX[121] = 193.18;
+ fX[122] = 194.18;
+ fX[123] = 195.18;
+ fX[124] = 196.18;
+ fX[125] = 197.18;
+ fX[126] = 198.18;
+ fX[127] = 199.43;
+ fX[128] = 200.93;
+ fX[129] = 202.43;
+ fX[130] = 203.93;
+ fX[131] = 205.43;
+ fX[132] = 206.93;
+ fX[133] = 208.43;
+ fX[134] = 209.93;
+ fX[135] = 211.43;
+ fX[136] = 212.93;
+ fX[137] = 214.43;
+ fX[138] = 215.93;
+ fX[139] = 217.43;
+ fX[140] = 218.93;
+ fX[141] = 220.43;
+ fX[142] = 221.93;
+ fX[143] = 223.43;
+ fX[144] = 224.93;
+ fX[145] = 226.43;
+ fX[146] = 227.93;
+ fX[147] = 229.43;
+ fX[148] = 230.93;
+ fX[149] = 232.43;
+ fX[150] = 233.93;
+ fX[151] = 235.43;
+ fX[152] = 236.93;
+ fX[153] = 238.43;
+ fX[154] = 239.93;
+ fX[155] = 241.43;
+ fX[156] = 242.93;
+ fX[157] = 244.43;
+ fX[158] = 245.93;
+ fNPads[0] = 67;
+ fNPads[1] = 67;
+ fNPads[2] = 69;
+ fNPads[3] = 69;
+ fNPads[4] = 69;
+ fNPads[5] = 71;
+ fNPads[6] = 71;
+ fNPads[7] = 71;
+ fNPads[8] = 73;
+ fNPads[9] = 73;
+ fNPads[10] = 73;
+ fNPads[11] = 75;
+ fNPads[12] = 75;
+ fNPads[13] = 75;
+ fNPads[14] = 77;
+ fNPads[15] = 77;
+ fNPads[16] = 77;
+ fNPads[17] = 79;
+ fNPads[18] = 79;
+ fNPads[19] = 79;
+ fNPads[20] = 81;
+ fNPads[21] = 81;
+ fNPads[22] = 81;
+ fNPads[23] = 83;
+ fNPads[24] = 83;
+ fNPads[25] = 83;
+ fNPads[26] = 85;
+ fNPads[27] = 85;
+ fNPads[28] = 85;
+ fNPads[29] = 87;
+ fNPads[30] = 87;
+ fNPads[31] = 87;
+ fNPads[32] = 89;
+ fNPads[33] = 89;
+ fNPads[34] = 89;
+ fNPads[35] = 91;
+ fNPads[36] = 91;
+ fNPads[37] = 91;
+ fNPads[38] = 93;
+ fNPads[39] = 93;
+ fNPads[40] = 93;
+ fNPads[41] = 95;
+ fNPads[42] = 95;
+ fNPads[43] = 95;
+ fNPads[44] = 97;
+ fNPads[45] = 97;
+ fNPads[46] = 97;
+ fNPads[47] = 99;
+ fNPads[48] = 99;
+ fNPads[49] = 99;
+ fNPads[50] = 99;
+ fNPads[51] = 101;
+ fNPads[52] = 101;
+ fNPads[53] = 101;
+ fNPads[54] = 103;
+ fNPads[55] = 103;
+ fNPads[56] = 103;
+ fNPads[57] = 105;
+ fNPads[58] = 105;
+ fNPads[59] = 105;
+ fNPads[60] = 107;
+ fNPads[61] = 107;
+ fNPads[62] = 107;
+ fNPads[63] = 73;
+ fNPads[64] = 75;
+ fNPads[65] = 75;
+ fNPads[66] = 75;
+ fNPads[67] = 75;
+ fNPads[68] = 77;
+ fNPads[69] = 77;
+ fNPads[70] = 77;
+ fNPads[71] = 79;
+ fNPads[72] = 79;
+ fNPads[73] = 79;
+ fNPads[74] = 81;
+ fNPads[75] = 81;
+ fNPads[76] = 81;
+ fNPads[77] = 81;
+ fNPads[78] = 83;
+ fNPads[79] = 83;
+ fNPads[80] = 83;
+ fNPads[81] = 85;
+ fNPads[82] = 85;
+ fNPads[83] = 85;
+ fNPads[84] = 85;
+ fNPads[85] = 87;
+ fNPads[86] = 87;
+ fNPads[87] = 87;
+ fNPads[88] = 89;
+ fNPads[89] = 89;
+ fNPads[90] = 89;
+ fNPads[91] = 91;
+ fNPads[92] = 91;
+ fNPads[93] = 91;
+ fNPads[94] = 91;
+ fNPads[95] = 93;
+ fNPads[96] = 93;
+ fNPads[97] = 93;
+ fNPads[98] = 95;
+ fNPads[99] = 95;
+ fNPads[100] = 95;
+ fNPads[101] = 95;
+ fNPads[102] = 97;
+ fNPads[103] = 97;
+ fNPads[104] = 97;
+ fNPads[105] = 99;
+ fNPads[106] = 99;
+ fNPads[107] = 99;
+ fNPads[108] = 101;
+ fNPads[109] = 101;
+ fNPads[110] = 101;
+ fNPads[111] = 101;
+ fNPads[112] = 103;
+ fNPads[113] = 103;
+ fNPads[114] = 103;
+ fNPads[115] = 105;
+ fNPads[116] = 105;
+ fNPads[117] = 105;
+ fNPads[118] = 105;
+ fNPads[119] = 107;
+ fNPads[120] = 107;
+ fNPads[121] = 107;
+ fNPads[122] = 109;
+ fNPads[123] = 109;
+ fNPads[124] = 109;
+ fNPads[125] = 111;
+ fNPads[126] = 111;
+ fNPads[127] = 111;
+ fNPads[128] = 113;
+ fNPads[129] = 113;
+ fNPads[130] = 113;
+ fNPads[131] = 115;
+ fNPads[132] = 115;
+ fNPads[133] = 117;
+ fNPads[134] = 117;
+ fNPads[135] = 119;
+ fNPads[136] = 119;
+ fNPads[137] = 121;
+ fNPads[138] = 121;
+ fNPads[139] = 121;
+ fNPads[140] = 123;
+ fNPads[141] = 123;
+ fNPads[142] = 125;
+ fNPads[143] = 125;
+ fNPads[144] = 127;
+ fNPads[145] = 127;
+ fNPads[146] = 127;
+ fNPads[147] = 129;
+ fNPads[148] = 129;
+ fNPads[149] = 131;
+ fNPads[150] = 131;
+ fNPads[151] = 133;
+ fNPads[152] = 133;
+ fNPads[153] = 135;
+ fNPads[154] = 135;
+ fNPads[155] = 135;
+ fNPads[156] = 137;
+ fNPads[157] = 137;
+ fNPads[158] = 139;
+ fSlice2Sector[0][0] = 0;
+ fSlice2Sector[0][1] = 36;
+ fSlice2Sector[1][0] = 1;
+ fSlice2Sector[1][1] = 37;
+ fSlice2Sector[2][0] = 2;
+ fSlice2Sector[2][1] = 38;
+ fSlice2Sector[3][0] = 3;
+ fSlice2Sector[3][1] = 39;
+ fSlice2Sector[4][0] = 4;
+ fSlice2Sector[4][1] = 40;
+ fSlice2Sector[5][0] = 5;
+ fSlice2Sector[5][1] = 41;
+ fSlice2Sector[6][0] = 6;
+ fSlice2Sector[6][1] = 42;
+ fSlice2Sector[7][0] = 7;
+ fSlice2Sector[7][1] = 43;
+ fSlice2Sector[8][0] = 8;
+ fSlice2Sector[8][1] = 44;
+ fSlice2Sector[9][0] = 9;
+ fSlice2Sector[9][1] = 45;
+ fSlice2Sector[10][0] = 10;
+ fSlice2Sector[10][1] = 46;
+ fSlice2Sector[11][0] = 11;
+ fSlice2Sector[11][1] = 47;
+ fSlice2Sector[12][0] = 12;
+ fSlice2Sector[12][1] = 48;
+ fSlice2Sector[13][0] = 13;
+ fSlice2Sector[13][1] = 49;
+ fSlice2Sector[14][0] = 14;
+ fSlice2Sector[14][1] = 50;
+ fSlice2Sector[15][0] = 15;
+ fSlice2Sector[15][1] = 51;
+ fSlice2Sector[16][0] = 16;
+ fSlice2Sector[16][1] = 52;
+ fSlice2Sector[17][0] = 17;
+ fSlice2Sector[17][1] = 53;
+ fSlice2Sector[18][0] = 18;
+ fSlice2Sector[18][1] = 54;
+ fSlice2Sector[19][0] = 19;
+ fSlice2Sector[19][1] = 55;
+ fSlice2Sector[20][0] = 20;
+ fSlice2Sector[20][1] = 56;
+ fSlice2Sector[21][0] = 21;
+ fSlice2Sector[21][1] = 57;
+ fSlice2Sector[22][0] = 22;
+ fSlice2Sector[22][1] = 58;
+ fSlice2Sector[23][0] = 23;
+ fSlice2Sector[23][1] = 59;
+ fSlice2Sector[24][0] = 24;
+ fSlice2Sector[24][1] = 60;
+ fSlice2Sector[25][0] = 25;
+ fSlice2Sector[25][1] = 61;
+ fSlice2Sector[26][0] = 26;
+ fSlice2Sector[26][1] = 62;
+ fSlice2Sector[27][0] = 27;
+ fSlice2Sector[27][1] = 63;
+ fSlice2Sector[28][0] = 28;
+ fSlice2Sector[28][1] = 64;
+ fSlice2Sector[29][0] = 29;
+ fSlice2Sector[29][1] = 65;
+ fSlice2Sector[30][0] = 30;
+ fSlice2Sector[30][1] = 66;
+ fSlice2Sector[31][0] = 31;
+ fSlice2Sector[31][1] = 67;
+ fSlice2Sector[32][0] = 32;
+ fSlice2Sector[32][1] = 68;
+ fSlice2Sector[33][0] = 33;
+ fSlice2Sector[33][1] = 69;
+ fSlice2Sector[34][0] = 34;
+ fSlice2Sector[34][1] = 70;
+ fSlice2Sector[35][0] = 35;
+ fSlice2Sector[35][1] = 71;
+ fSector2Slice[0] = 0;
+ fSector2Slice[1] = 1;
+ fSector2Slice[2] = 2;
+ fSector2Slice[3] = 3;
+ fSector2Slice[4] = 4;
+ fSector2Slice[5] = 5;
+ fSector2Slice[6] = 6;
+ fSector2Slice[7] = 7;
+ fSector2Slice[8] = 8;
+ fSector2Slice[9] = 9;
+ fSector2Slice[10] = 10;
+ fSector2Slice[11] = 11;
+ fSector2Slice[12] = 12;
+ fSector2Slice[13] = 13;
+ fSector2Slice[14] = 14;
+ fSector2Slice[15] = 15;
+ fSector2Slice[16] = 16;
+ fSector2Slice[17] = 17;
+ fSector2Slice[18] = 18;
+ fSector2Slice[19] = 19;
+ fSector2Slice[20] = 20;
+ fSector2Slice[21] = 21;
+ fSector2Slice[22] = 22;
+ fSector2Slice[23] = 23;
+ fSector2Slice[24] = 24;
+ fSector2Slice[25] = 25;
+ fSector2Slice[26] = 26;
+ fSector2Slice[27] = 27;
+ fSector2Slice[28] = 28;
+ fSector2Slice[29] = 29;
+ fSector2Slice[30] = 30;
+ fSector2Slice[31] = 31;
+ fSector2Slice[32] = 32;
+ fSector2Slice[33] = 33;
+ fSector2Slice[34] = 34;
+ fSector2Slice[35] = 35;
+ fSector2Slice[36] = 0;
+ fSector2Slice[37] = 1;
+ fSector2Slice[38] = 2;
+ fSector2Slice[39] = 3;
+ fSector2Slice[40] = 4;
+ fSector2Slice[41] = 5;
+ fSector2Slice[42] = 6;
+ fSector2Slice[43] = 7;
+ fSector2Slice[44] = 8;
+ fSector2Slice[45] = 9;
+ fSector2Slice[46] = 10;
+ fSector2Slice[47] = 11;
+ fSector2Slice[48] = 12;
+ fSector2Slice[49] = 13;
+ fSector2Slice[50] = 14;
+ fSector2Slice[51] = 15;
+ fSector2Slice[52] = 16;
+ fSector2Slice[53] = 17;
+ fSector2Slice[54] = 18;
+ fSector2Slice[55] = 19;
+ fSector2Slice[56] = 20;
+ fSector2Slice[57] = 21;
+ fSector2Slice[58] = 22;
+ fSector2Slice[59] = 23;
+ fSector2Slice[60] = 24;
+ fSector2Slice[61] = 25;
+ fSector2Slice[62] = 26;
+ fSector2Slice[63] = 27;
+ fSector2Slice[64] = 28;
+ fSector2Slice[65] = 29;
+ fSector2Slice[66] = 30;
+ fSector2Slice[67] = 31;
+ fSector2Slice[68] = 32;
+ fSector2Slice[69] = 33;
+ fSector2Slice[70] = 34;
+ fSector2Slice[71] = 35;
+ fSectorLow[0] = 1;
+ fSectorLow[1] = 1;
+ fSectorLow[2] = 1;
+ fSectorLow[3] = 1;
+ fSectorLow[4] = 1;
+ fSectorLow[5] = 1;
+ fSectorLow[6] = 1;
+ fSectorLow[7] = 1;
+ fSectorLow[8] = 1;
+ fSectorLow[9] = 1;
+ fSectorLow[10] = 1;
+ fSectorLow[11] = 1;
+ fSectorLow[12] = 1;
+ fSectorLow[13] = 1;
+ fSectorLow[14] = 1;
+ fSectorLow[15] = 1;
+ fSectorLow[16] = 1;
+ fSectorLow[17] = 1;
+ fSectorLow[18] = 1;
+ fSectorLow[19] = 1;
+ fSectorLow[20] = 1;
+ fSectorLow[21] = 1;
+ fSectorLow[22] = 1;
+ fSectorLow[23] = 1;
+ fSectorLow[24] = 1;
+ fSectorLow[25] = 1;
+ fSectorLow[26] = 1;
+ fSectorLow[27] = 1;
+ fSectorLow[28] = 1;
+ fSectorLow[29] = 1;
+ fSectorLow[30] = 1;
+ fSectorLow[31] = 1;
+ fSectorLow[32] = 1;
+ fSectorLow[33] = 1;
+ fSectorLow[34] = 1;
+ fSectorLow[35] = 1;
+ fSectorLow[36] = 0;
+ fSectorLow[37] = 0;
+ fSectorLow[38] = 0;
+ fSectorLow[39] = 0;
+ fSectorLow[40] = 0;
+ fSectorLow[41] = 0;
+ fSectorLow[42] = 0;
+ fSectorLow[43] = 0;
+ fSectorLow[44] = 0;
+ fSectorLow[45] = 0;
+ fSectorLow[46] = 0;
+ fSectorLow[47] = 0;
+ fSectorLow[48] = 0;
+ fSectorLow[49] = 0;
+ fSectorLow[50] = 0;
+ fSectorLow[51] = 0;
+ fSectorLow[52] = 0;
+ fSectorLow[53] = 0;
+ fSectorLow[54] = 0;
+ fSectorLow[55] = 0;
+ fSectorLow[56] = 0;
+ fSectorLow[57] = 0;
+ fSectorLow[58] = 0;
+ fSectorLow[59] = 0;
+ fSectorLow[60] = 0;
+ fSectorLow[61] = 0;
+ fSectorLow[62] = 0;
+ fSectorLow[63] = 0;
+ fSectorLow[64] = 0;
+ fSectorLow[65] = 0;
+ fSectorLow[66] = 0;
+ fSectorLow[67] = 0;
+ fSectorLow[68] = 0;
+ fSectorLow[69] = 0;
+ fSectorLow[70] = 0;
+ fSectorLow[71] = 0;
+ fNRows[0] = 30;
+ fNRows[1] = 33;
+ fNRows[2] = 28;
+ fNRows[3] = 26;
+ fNRows[4] = 23;
+ fNRows[5] = 19;
+ fRows[0][0] = 0;
+ fRows[0][1] = 29;
+ fRows[1][0] = 30;
+ fRows[1][1] = 62;
+ fRows[2][0] = 63;
+ fRows[2][1] = 90;
+ fRows[3][0] = 91;
+ fRows[3][1] = 116;
+ fRows[4][0] = 117;
+ fRows[4][1] = 139;
+ fRows[5][0] = 140;
+ fRows[5][1] = 158;
+ fCos[0] = 0.9848077297;
+ fCos[1] = 0.8660253882;
+ fCos[2] = 0.6427876353;
+ fCos[3] = 0.3420201540;
+ fCos[4] = 0.0000000000;
+ fCos[5] = -0.3420201540;
+ fCos[6] = -0.6427876353;
+ fCos[7] = -0.8660253882;
+ fCos[8] = -0.9848077297;
+ fCos[9] = -0.9848077297;
+ fCos[10] = -0.8660253882;
+ fCos[11] = -0.6427876353;
+ fCos[12] = -0.3420201540;
+ fCos[13] = -0.0000000000;
+ fCos[14] = 0.3420201540;
+ fCos[15] = 0.6427876353;
+ fCos[16] = 0.8660253882;
+ fCos[17] = 0.9848077297;
+ fCos[18] = 0.9848077297;
+ fCos[19] = 0.8660253882;
+ fCos[20] = 0.6427876353;
+ fCos[21] = 0.3420201540;
+ fCos[22] = 0.0000000000;
+ fCos[23] = -0.3420201540;
+ fCos[24] = -0.6427876353;
+ fCos[25] = -0.8660253882;
+ fCos[26] = -0.9848077297;
+ fCos[27] = -0.9848077297;
+ fCos[28] = -0.8660253882;
+ fCos[29] = -0.6427876353;
+ fCos[30] = -0.3420201540;
+ fCos[31] = -0.0000000000;
+ fCos[32] = 0.3420201540;
+ fCos[33] = 0.6427876353;
+ fCos[34] = 0.8660253882;
+ fCos[35] = 0.9848077297;
+ fSin[0] = 0.1736481786;
+ fSin[1] = 0.5000000000;
+ fSin[2] = 0.7660444379;
+ fSin[3] = 0.9396926165;
+ fSin[4] = 1.0000000000;
+ fSin[5] = 0.9396926165;
+ fSin[6] = 0.7660444379;
+ fSin[7] = 0.5000000000;
+ fSin[8] = 0.1736481786;
+ fSin[9] = -0.1736481786;
+ fSin[10] = -0.5000000000;
+ fSin[11] = -0.7660444379;
+ fSin[12] = -0.9396926165;
+ fSin[13] = -1.0000000000;
+ fSin[14] = -0.9396926165;
+ fSin[15] = -0.7660444379;
+ fSin[16] = -0.5000000000;
+ fSin[17] = -0.1736481786;
+ fSin[18] = 0.1736481786;
+ fSin[19] = 0.5000000000;
+ fSin[20] = 0.7660444379;
+ fSin[21] = 0.9396926165;
+ fSin[22] = 1.0000000000;
+ fSin[23] = 0.9396926165;
+ fSin[24] = 0.7660444379;
+ fSin[25] = 0.5000000000;
+ fSin[26] = 0.1736481786;
+ fSin[27] = -0.1736481786;
+ fSin[28] = -0.5000000000;
+ fSin[29] = -0.7660444379;
+ fSin[30] = -0.9396926165;
+ fSin[31] = -1.0000000000;
+ fSin[32] = -0.9396926165;
+ fSin[33] = -0.7660444379;
+ fSin[34] = -0.5000000000;
+ fSin[35] = -0.1736481786;
+}
--- /dev/null
+void AliL3Transform::Init(){
+ fVersion = 100;
+ fBFieldFactor = 0.000;
+ fSolenoidBField = 2.000;
+ fNTimeBins = 999;
+ fNRowLow = 63;
+ fNRowUp = 96;
+ fNRowUp1 = 64;
+ fNRowUp2 = 32;
+ fNSectorLow = 36;
+ fNSectorUp = 36;
+ fNSector = 72;
+ fPadPitchWidthLow = 0.400;
+ fPadPitchWidthUp = 0.600;
+ fZWidth = 0.2503;
+ fZSigma = 0.2288;
+ fZLength = 250.0000;
+ fZOffset = 0.6864;
+ fDiffT = 0.0220;
+ fDiffL = 0.0220;
+ fOmegaTau = 0.1450;
+ fInnerPadLength = 0.750;
+ fOuter1PadLength = 1.000;
+ fOuter2PadLength = 1.500;
+ fInnerPRFSigma = 0.203811;
+ fOuter1PRFSigma = 0.299325;
+ fOuter2PRFSigma = 0.299323;
+ fTimeSigma = 0.228809;
+ fADCSat = 1024;
+ fZeroSup = 3;
+ fNSlice = 36;
+ fNRow = 159;
+ fNRotShift = 0.50;
+ fX[0] = 85.22;
+ fX[1] = 85.97;
+ fX[2] = 86.72;
+ fX[3] = 87.47;
+ fX[4] = 88.22;
+ fX[5] = 88.97;
+ fX[6] = 89.72;
+ fX[7] = 90.47;
+ fX[8] = 91.22;
+ fX[9] = 91.97;
+ fX[10] = 92.72;
+ fX[11] = 93.47;
+ fX[12] = 94.22;
+ fX[13] = 94.97;
+ fX[14] = 95.72;
+ fX[15] = 96.47;
+ fX[16] = 97.22;
+ fX[17] = 97.97;
+ fX[18] = 98.72;
+ fX[19] = 99.47;
+ fX[20] = 100.22;
+ fX[21] = 100.97;
+ fX[22] = 101.72;
+ fX[23] = 102.47;
+ fX[24] = 103.22;
+ fX[25] = 103.97;
+ fX[26] = 104.72;
+ fX[27] = 105.47;
+ fX[28] = 106.22;
+ fX[29] = 106.97;
+ fX[30] = 107.72;
+ fX[31] = 108.47;
+ fX[32] = 109.22;
+ fX[33] = 109.97;
+ fX[34] = 110.72;
+ fX[35] = 111.47;
+ fX[36] = 112.22;
+ fX[37] = 112.97;
+ fX[38] = 113.72;
+ fX[39] = 114.47;
+ fX[40] = 115.22;
+ fX[41] = 115.97;
+ fX[42] = 116.72;
+ fX[43] = 117.47;
+ fX[44] = 118.22;
+ fX[45] = 118.97;
+ fX[46] = 119.72;
+ fX[47] = 120.47;
+ fX[48] = 121.22;
+ fX[49] = 121.97;
+ fX[50] = 122.72;
+ fX[51] = 123.47;
+ fX[52] = 124.22;
+ fX[53] = 124.97;
+ fX[54] = 125.72;
+ fX[55] = 126.47;
+ fX[56] = 127.22;
+ fX[57] = 127.97;
+ fX[58] = 128.72;
+ fX[59] = 129.47;
+ fX[60] = 130.22;
+ fX[61] = 130.97;
+ fX[62] = 131.72;
+ fX[63] = 135.10;
+ fX[64] = 136.10;
+ fX[65] = 137.10;
+ fX[66] = 138.10;
+ fX[67] = 139.10;
+ fX[68] = 140.10;
+ fX[69] = 141.10;
+ fX[70] = 142.10;
+ fX[71] = 143.10;
+ fX[72] = 144.10;
+ fX[73] = 145.10;
+ fX[74] = 146.10;
+ fX[75] = 147.10;
+ fX[76] = 148.10;
+ fX[77] = 149.10;
+ fX[78] = 150.10;
+ fX[79] = 151.10;
+ fX[80] = 152.10;
+ fX[81] = 153.10;
+ fX[82] = 154.10;
+ fX[83] = 155.10;
+ fX[84] = 156.10;
+ fX[85] = 157.10;
+ fX[86] = 158.10;
+ fX[87] = 159.10;
+ fX[88] = 160.10;
+ fX[89] = 161.10;
+ fX[90] = 162.10;
+ fX[91] = 163.10;
+ fX[92] = 164.10;
+ fX[93] = 165.10;
+ fX[94] = 166.10;
+ fX[95] = 167.10;
+ fX[96] = 168.10;
+ fX[97] = 169.10;
+ fX[98] = 170.10;
+ fX[99] = 171.10;
+ fX[100] = 172.10;
+ fX[101] = 173.10;
+ fX[102] = 174.10;
+ fX[103] = 175.10;
+ fX[104] = 176.10;
+ fX[105] = 177.10;
+ fX[106] = 178.10;
+ fX[107] = 179.10;
+ fX[108] = 180.10;
+ fX[109] = 181.10;
+ fX[110] = 182.10;
+ fX[111] = 183.10;
+ fX[112] = 184.10;
+ fX[113] = 185.10;
+ fX[114] = 186.10;
+ fX[115] = 187.10;
+ fX[116] = 188.10;
+ fX[117] = 189.10;
+ fX[118] = 190.10;
+ fX[119] = 191.10;
+ fX[120] = 192.10;
+ fX[121] = 193.10;
+ fX[122] = 194.10;
+ fX[123] = 195.10;
+ fX[124] = 196.10;
+ fX[125] = 197.10;
+ fX[126] = 198.10;
+ fX[127] = 199.35;
+ fX[128] = 200.85;
+ fX[129] = 202.35;
+ fX[130] = 203.85;
+ fX[131] = 205.35;
+ fX[132] = 206.85;
+ fX[133] = 208.35;
+ fX[134] = 209.85;
+ fX[135] = 211.35;
+ fX[136] = 212.85;
+ fX[137] = 214.35;
+ fX[138] = 215.85;
+ fX[139] = 217.35;
+ fX[140] = 218.85;
+ fX[141] = 220.35;
+ fX[142] = 221.85;
+ fX[143] = 223.35;
+ fX[144] = 224.85;
+ fX[145] = 226.35;
+ fX[146] = 227.85;
+ fX[147] = 229.35;
+ fX[148] = 230.85;
+ fX[149] = 232.35;
+ fX[150] = 233.85;
+ fX[151] = 235.35;
+ fX[152] = 236.85;
+ fX[153] = 238.35;
+ fX[154] = 239.85;
+ fX[155] = 241.35;
+ fX[156] = 242.85;
+ fX[157] = 244.35;
+ fX[158] = 245.85;
+ fNPads[0] = 68;
+ fNPads[1] = 66;
+ fNPads[2] = 66;
+ fNPads[3] = 68;
+ fNPads[4] = 68;
+ fNPads[5] = 68;
+ fNPads[6] = 70;
+ fNPads[7] = 70;
+ fNPads[8] = 70;
+ fNPads[9] = 72;
+ fNPads[10] = 72;
+ fNPads[11] = 72;
+ fNPads[12] = 74;
+ fNPads[13] = 74;
+ fNPads[14] = 74;
+ fNPads[15] = 76;
+ fNPads[16] = 76;
+ fNPads[17] = 76;
+ fNPads[18] = 78;
+ fNPads[19] = 78;
+ fNPads[20] = 78;
+ fNPads[21] = 80;
+ fNPads[22] = 80;
+ fNPads[23] = 80;
+ fNPads[24] = 82;
+ fNPads[25] = 82;
+ fNPads[26] = 82;
+ fNPads[27] = 84;
+ fNPads[28] = 84;
+ fNPads[29] = 84;
+ fNPads[30] = 86;
+ fNPads[31] = 86;
+ fNPads[32] = 86;
+ fNPads[33] = 88;
+ fNPads[34] = 88;
+ fNPads[35] = 88;
+ fNPads[36] = 90;
+ fNPads[37] = 90;
+ fNPads[38] = 90;
+ fNPads[39] = 92;
+ fNPads[40] = 92;
+ fNPads[41] = 92;
+ fNPads[42] = 94;
+ fNPads[43] = 94;
+ fNPads[44] = 94;
+ fNPads[45] = 96;
+ fNPads[46] = 96;
+ fNPads[47] = 96;
+ fNPads[48] = 98;
+ fNPads[49] = 98;
+ fNPads[50] = 98;
+ fNPads[51] = 100;
+ fNPads[52] = 100;
+ fNPads[53] = 100;
+ fNPads[54] = 102;
+ fNPads[55] = 102;
+ fNPads[56] = 102;
+ fNPads[57] = 104;
+ fNPads[58] = 104;
+ fNPads[59] = 104;
+ fNPads[60] = 106;
+ fNPads[61] = 106;
+ fNPads[62] = 106;
+ fNPads[63] = 74;
+ fNPads[64] = 76;
+ fNPads[65] = 76;
+ fNPads[66] = 76;
+ fNPads[67] = 76;
+ fNPads[68] = 78;
+ fNPads[69] = 78;
+ fNPads[70] = 78;
+ fNPads[71] = 80;
+ fNPads[72] = 80;
+ fNPads[73] = 80;
+ fNPads[74] = 80;
+ fNPads[75] = 82;
+ fNPads[76] = 82;
+ fNPads[77] = 82;
+ fNPads[78] = 84;
+ fNPads[79] = 84;
+ fNPads[80] = 84;
+ fNPads[81] = 86;
+ fNPads[82] = 86;
+ fNPads[83] = 86;
+ fNPads[84] = 86;
+ fNPads[85] = 88;
+ fNPads[86] = 88;
+ fNPads[87] = 88;
+ fNPads[88] = 90;
+ fNPads[89] = 90;
+ fNPads[90] = 90;
+ fNPads[91] = 90;
+ fNPads[92] = 92;
+ fNPads[93] = 92;
+ fNPads[94] = 92;
+ fNPads[95] = 94;
+ fNPads[96] = 94;
+ fNPads[97] = 94;
+ fNPads[98] = 96;
+ fNPads[99] = 96;
+ fNPads[100] = 96;
+ fNPads[101] = 96;
+ fNPads[102] = 98;
+ fNPads[103] = 98;
+ fNPads[104] = 98;
+ fNPads[105] = 100;
+ fNPads[106] = 100;
+ fNPads[107] = 100;
+ fNPads[108] = 100;
+ fNPads[109] = 102;
+ fNPads[110] = 102;
+ fNPads[111] = 102;
+ fNPads[112] = 104;
+ fNPads[113] = 104;
+ fNPads[114] = 104;
+ fNPads[115] = 106;
+ fNPads[116] = 106;
+ fNPads[117] = 106;
+ fNPads[118] = 106;
+ fNPads[119] = 108;
+ fNPads[120] = 108;
+ fNPads[121] = 108;
+ fNPads[122] = 110;
+ fNPads[123] = 110;
+ fNPads[124] = 110;
+ fNPads[125] = 110;
+ fNPads[126] = 112;
+ fNPads[127] = 48;
+ fNPads[128] = 50;
+ fNPads[129] = 50;
+ fNPads[130] = 52;
+ fNPads[131] = 52;
+ fNPads[132] = 54;
+ fNPads[133] = 54;
+ fNPads[134] = 56;
+ fNPads[135] = 56;
+ fNPads[136] = 56;
+ fNPads[137] = 58;
+ fNPads[138] = 58;
+ fNPads[139] = 60;
+ fNPads[140] = 60;
+ fNPads[141] = 62;
+ fNPads[142] = 62;
+ fNPads[143] = 64;
+ fNPads[144] = 64;
+ fNPads[145] = 64;
+ fNPads[146] = 66;
+ fNPads[147] = 66;
+ fNPads[148] = 68;
+ fNPads[149] = 68;
+ fNPads[150] = 70;
+ fNPads[151] = 70;
+ fNPads[152] = 70;
+ fNPads[153] = 72;
+ fNPads[154] = 72;
+ fNPads[155] = 74;
+ fNPads[156] = 74;
+ fNPads[157] = 76;
+ fNPads[158] = 76;
+ fSlice2Sector[0][0] = 0;
+ fSlice2Sector[0][1] = 36;
+ fSlice2Sector[1][0] = 1;
+ fSlice2Sector[1][1] = 37;
+ fSlice2Sector[2][0] = 2;
+ fSlice2Sector[2][1] = 38;
+ fSlice2Sector[3][0] = 3;
+ fSlice2Sector[3][1] = 39;
+ fSlice2Sector[4][0] = 4;
+ fSlice2Sector[4][1] = 40;
+ fSlice2Sector[5][0] = 5;
+ fSlice2Sector[5][1] = 41;
+ fSlice2Sector[6][0] = 6;
+ fSlice2Sector[6][1] = 42;
+ fSlice2Sector[7][0] = 7;
+ fSlice2Sector[7][1] = 43;
+ fSlice2Sector[8][0] = 8;
+ fSlice2Sector[8][1] = 44;
+ fSlice2Sector[9][0] = 9;
+ fSlice2Sector[9][1] = 45;
+ fSlice2Sector[10][0] = 10;
+ fSlice2Sector[10][1] = 46;
+ fSlice2Sector[11][0] = 11;
+ fSlice2Sector[11][1] = 47;
+ fSlice2Sector[12][0] = 12;
+ fSlice2Sector[12][1] = 48;
+ fSlice2Sector[13][0] = 13;
+ fSlice2Sector[13][1] = 49;
+ fSlice2Sector[14][0] = 14;
+ fSlice2Sector[14][1] = 50;
+ fSlice2Sector[15][0] = 15;
+ fSlice2Sector[15][1] = 51;
+ fSlice2Sector[16][0] = 16;
+ fSlice2Sector[16][1] = 52;
+ fSlice2Sector[17][0] = 17;
+ fSlice2Sector[17][1] = 53;
+ fSlice2Sector[18][0] = 18;
+ fSlice2Sector[18][1] = 54;
+ fSlice2Sector[19][0] = 19;
+ fSlice2Sector[19][1] = 55;
+ fSlice2Sector[20][0] = 20;
+ fSlice2Sector[20][1] = 56;
+ fSlice2Sector[21][0] = 21;
+ fSlice2Sector[21][1] = 57;
+ fSlice2Sector[22][0] = 22;
+ fSlice2Sector[22][1] = 58;
+ fSlice2Sector[23][0] = 23;
+ fSlice2Sector[23][1] = 59;
+ fSlice2Sector[24][0] = 24;
+ fSlice2Sector[24][1] = 60;
+ fSlice2Sector[25][0] = 25;
+ fSlice2Sector[25][1] = 61;
+ fSlice2Sector[26][0] = 26;
+ fSlice2Sector[26][1] = 62;
+ fSlice2Sector[27][0] = 27;
+ fSlice2Sector[27][1] = 63;
+ fSlice2Sector[28][0] = 28;
+ fSlice2Sector[28][1] = 64;
+ fSlice2Sector[29][0] = 29;
+ fSlice2Sector[29][1] = 65;
+ fSlice2Sector[30][0] = 30;
+ fSlice2Sector[30][1] = 66;
+ fSlice2Sector[31][0] = 31;
+ fSlice2Sector[31][1] = 67;
+ fSlice2Sector[32][0] = 32;
+ fSlice2Sector[32][1] = 68;
+ fSlice2Sector[33][0] = 33;
+ fSlice2Sector[33][1] = 69;
+ fSlice2Sector[34][0] = 34;
+ fSlice2Sector[34][1] = 70;
+ fSlice2Sector[35][0] = 35;
+ fSlice2Sector[35][1] = 71;
+ fSector2Slice[0] = 0;
+ fSector2Slice[1] = 1;
+ fSector2Slice[2] = 2;
+ fSector2Slice[3] = 3;
+ fSector2Slice[4] = 4;
+ fSector2Slice[5] = 5;
+ fSector2Slice[6] = 6;
+ fSector2Slice[7] = 7;
+ fSector2Slice[8] = 8;
+ fSector2Slice[9] = 9;
+ fSector2Slice[10] = 10;
+ fSector2Slice[11] = 11;
+ fSector2Slice[12] = 12;
+ fSector2Slice[13] = 13;
+ fSector2Slice[14] = 14;
+ fSector2Slice[15] = 15;
+ fSector2Slice[16] = 16;
+ fSector2Slice[17] = 17;
+ fSector2Slice[18] = 18;
+ fSector2Slice[19] = 19;
+ fSector2Slice[20] = 20;
+ fSector2Slice[21] = 21;
+ fSector2Slice[22] = 22;
+ fSector2Slice[23] = 23;
+ fSector2Slice[24] = 24;
+ fSector2Slice[25] = 25;
+ fSector2Slice[26] = 26;
+ fSector2Slice[27] = 27;
+ fSector2Slice[28] = 28;
+ fSector2Slice[29] = 29;
+ fSector2Slice[30] = 30;
+ fSector2Slice[31] = 31;
+ fSector2Slice[32] = 32;
+ fSector2Slice[33] = 33;
+ fSector2Slice[34] = 34;
+ fSector2Slice[35] = 35;
+ fSector2Slice[36] = 0;
+ fSector2Slice[37] = 1;
+ fSector2Slice[38] = 2;
+ fSector2Slice[39] = 3;
+ fSector2Slice[40] = 4;
+ fSector2Slice[41] = 5;
+ fSector2Slice[42] = 6;
+ fSector2Slice[43] = 7;
+ fSector2Slice[44] = 8;
+ fSector2Slice[45] = 9;
+ fSector2Slice[46] = 10;
+ fSector2Slice[47] = 11;
+ fSector2Slice[48] = 12;
+ fSector2Slice[49] = 13;
+ fSector2Slice[50] = 14;
+ fSector2Slice[51] = 15;
+ fSector2Slice[52] = 16;
+ fSector2Slice[53] = 17;
+ fSector2Slice[54] = 18;
+ fSector2Slice[55] = 19;
+ fSector2Slice[56] = 20;
+ fSector2Slice[57] = 21;
+ fSector2Slice[58] = 22;
+ fSector2Slice[59] = 23;
+ fSector2Slice[60] = 24;
+ fSector2Slice[61] = 25;
+ fSector2Slice[62] = 26;
+ fSector2Slice[63] = 27;
+ fSector2Slice[64] = 28;
+ fSector2Slice[65] = 29;
+ fSector2Slice[66] = 30;
+ fSector2Slice[67] = 31;
+ fSector2Slice[68] = 32;
+ fSector2Slice[69] = 33;
+ fSector2Slice[70] = 34;
+ fSector2Slice[71] = 35;
+ fSectorLow[0] = 1;
+ fSectorLow[1] = 1;
+ fSectorLow[2] = 1;
+ fSectorLow[3] = 1;
+ fSectorLow[4] = 1;
+ fSectorLow[5] = 1;
+ fSectorLow[6] = 1;
+ fSectorLow[7] = 1;
+ fSectorLow[8] = 1;
+ fSectorLow[9] = 1;
+ fSectorLow[10] = 1;
+ fSectorLow[11] = 1;
+ fSectorLow[12] = 1;
+ fSectorLow[13] = 1;
+ fSectorLow[14] = 1;
+ fSectorLow[15] = 1;
+ fSectorLow[16] = 1;
+ fSectorLow[17] = 1;
+ fSectorLow[18] = 1;
+ fSectorLow[19] = 1;
+ fSectorLow[20] = 1;
+ fSectorLow[21] = 1;
+ fSectorLow[22] = 1;
+ fSectorLow[23] = 1;
+ fSectorLow[24] = 1;
+ fSectorLow[25] = 1;
+ fSectorLow[26] = 1;
+ fSectorLow[27] = 1;
+ fSectorLow[28] = 1;
+ fSectorLow[29] = 1;
+ fSectorLow[30] = 1;
+ fSectorLow[31] = 1;
+ fSectorLow[32] = 1;
+ fSectorLow[33] = 1;
+ fSectorLow[34] = 1;
+ fSectorLow[35] = 1;
+ fSectorLow[36] = 0;
+ fSectorLow[37] = 0;
+ fSectorLow[38] = 0;
+ fSectorLow[39] = 0;
+ fSectorLow[40] = 0;
+ fSectorLow[41] = 0;
+ fSectorLow[42] = 0;
+ fSectorLow[43] = 0;
+ fSectorLow[44] = 0;
+ fSectorLow[45] = 0;
+ fSectorLow[46] = 0;
+ fSectorLow[47] = 0;
+ fSectorLow[48] = 0;
+ fSectorLow[49] = 0;
+ fSectorLow[50] = 0;
+ fSectorLow[51] = 0;
+ fSectorLow[52] = 0;
+ fSectorLow[53] = 0;
+ fSectorLow[54] = 0;
+ fSectorLow[55] = 0;
+ fSectorLow[56] = 0;
+ fSectorLow[57] = 0;
+ fSectorLow[58] = 0;
+ fSectorLow[59] = 0;
+ fSectorLow[60] = 0;
+ fSectorLow[61] = 0;
+ fSectorLow[62] = 0;
+ fSectorLow[63] = 0;
+ fSectorLow[64] = 0;
+ fSectorLow[65] = 0;
+ fSectorLow[66] = 0;
+ fSectorLow[67] = 0;
+ fSectorLow[68] = 0;
+ fSectorLow[69] = 0;
+ fSectorLow[70] = 0;
+ fSectorLow[71] = 0;
+ fNRows[0] = 30;
+ fNRows[1] = 33;
+ fNRows[2] = 28;
+ fNRows[3] = 26;
+ fNRows[4] = 23;
+ fNRows[5] = 19;
+ fRows[0][0] = 0;
+ fRows[0][1] = 29;
+ fRows[1][0] = 30;
+ fRows[1][1] = 62;
+ fRows[2][0] = 63;
+ fRows[2][1] = 90;
+ fRows[3][0] = 91;
+ fRows[3][1] = 116;
+ fRows[4][0] = 117;
+ fRows[4][1] = 139;
+ fRows[5][0] = 140;
+ fRows[5][1] = 158;
+ fCos[0] = 0.9848077297;
+ fCos[1] = 0.8660253882;
+ fCos[2] = 0.6427876353;
+ fCos[3] = 0.3420201540;
+ fCos[4] = 0.0000000000;
+ fCos[5] = -0.3420201540;
+ fCos[6] = -0.6427876353;
+ fCos[7] = -0.8660253882;
+ fCos[8] = -0.9848077297;
+ fCos[9] = -0.9848077297;
+ fCos[10] = -0.8660253882;
+ fCos[11] = -0.6427876353;
+ fCos[12] = -0.3420201540;
+ fCos[13] = -0.0000000000;
+ fCos[14] = 0.3420201540;
+ fCos[15] = 0.6427876353;
+ fCos[16] = 0.8660253882;
+ fCos[17] = 0.9848077297;
+ fCos[18] = 0.9848077297;
+ fCos[19] = 0.8660253882;
+ fCos[20] = 0.6427876353;
+ fCos[21] = 0.3420201540;
+ fCos[22] = 0.0000000000;
+ fCos[23] = -0.3420201540;
+ fCos[24] = -0.6427876353;
+ fCos[25] = -0.8660253882;
+ fCos[26] = -0.9848077297;
+ fCos[27] = -0.9848077297;
+ fCos[28] = -0.8660253882;
+ fCos[29] = -0.6427876353;
+ fCos[30] = -0.3420201540;
+ fCos[31] = -0.0000000000;
+ fCos[32] = 0.3420201540;
+ fCos[33] = 0.6427876353;
+ fCos[34] = 0.8660253882;
+ fCos[35] = 0.9848077297;
+ fSin[0] = 0.1736481786;
+ fSin[1] = 0.5000000000;
+ fSin[2] = 0.7660444379;
+ fSin[3] = 0.9396926165;
+ fSin[4] = 1.0000000000;
+ fSin[5] = 0.9396926165;
+ fSin[6] = 0.7660444379;
+ fSin[7] = 0.5000000000;
+ fSin[8] = 0.1736481786;
+ fSin[9] = -0.1736481786;
+ fSin[10] = -0.5000000000;
+ fSin[11] = -0.7660444379;
+ fSin[12] = -0.9396926165;
+ fSin[13] = -1.0000000000;
+ fSin[14] = -0.9396926165;
+ fSin[15] = -0.7660444379;
+ fSin[16] = -0.5000000000;
+ fSin[17] = -0.1736481786;
+ fSin[18] = 0.1736481786;
+ fSin[19] = 0.5000000000;
+ fSin[20] = 0.7660444379;
+ fSin[21] = 0.9396926165;
+ fSin[22] = 1.0000000000;
+ fSin[23] = 0.9396926165;
+ fSin[24] = 0.7660444379;
+ fSin[25] = 0.5000000000;
+ fSin[26] = 0.1736481786;
+ fSin[27] = -0.1736481786;
+ fSin[28] = -0.5000000000;
+ fSin[29] = -0.7660444379;
+ fSin[30] = -0.9396926165;
+ fSin[31] = -1.0000000000;
+ fSin[32] = -0.9396926165;
+ fSin[33] = -0.7660444379;
+ fSin[34] = -0.5000000000;
+ fSin[35] = -0.1736481786;
+}
--- /dev/null
+$Id$
+---------------------------
+v1-0: AliTransform changes
+v1-1: AliTransform changes because of Cosmics
+v1-2: First real release to CERN (with AliRoot 3-09-Release)
+
// $Id$
/**
- Macro for converting AliRoot digits into L3 RawData.
+ Macro for converting AliRoot digits into HLT RawData.
Binary creates for each patch its own file.
Singlepatch uses one file per slice (sp=kTRUE).
Use altro=kFALSE if you dont want to
fFileHandler->CloseAliInput();
}
-
void singlepatch(Char_t* inpath,Char_t *outpath,Int_t first=0, Int_t last=0,Int_t event=0,Bool_t altro=kTRUE)
{
--- /dev/null
+// $Id$
+
+/**
+ Macro for converting DDL (digit) files into HLT RawData.
+ In "inpath" expected are the ddl files (called Ev0TPCslice
+ followed by number), the compressed HLT files will be
+ in "outpath", and can be used as the input to the tracker.
+ Singlepatch uses one file per slice (sp=kTRUE) (which
+ is probably what we want if we run it on the GDCs)
+
+ Note: event is not used yet.
+*/
+
+
+ddl2binary(Char_t* inpath,Char_t *outpath,Int_t first=0,Int_t last=35,Bool_t sp=kTRUE,Int_t event=-1){
+
+ AliL3Transform::Init(inpath); //expect l3transform.config in "inpath"
+
+ Int_t patchfrom = 0;
+ Int_t patchend = 6;
+ if(sp){
+ patchfrom = -1;
+ patchend = 0;
+ }
+
+ Char_t name[256];
+ sprintf(name,"%s/Ev0TPCslice",inpath);
+
+ //create the file handler
+ AliL3DDLDataFileHandler *fFileHandler = new AliL3DDLDataFileHandler();
+ fFileHandler->SetReaderInput(name);
+
+ for(Int_t slice=first; slice<=last; slice++){
+ for(Int_t patch=patchfrom;patch<patchend;patch++){
+ cerr<<"reading slice: "<<slice<<" patch: "<<patch<<" and storing to: "<<outpath<<"/ddl_digits_"<<slice<<"_"<<patch<<".raw"<<endl;
+ fFileHandler->Init(slice,patch);
+ sprintf(name,"%s/digits_%d_%d_%d.raw",outpath,event,slice,patch);
+ fFileHandler->SetBinaryOutput(name);
+ fFileHandler->DDLData2CompBinary(event);
+ fFileHandler->CloseBinaryOutput();
+ cerr<<" done"<<endl;
+ }
+ }
+ fFileHandler->CloseReaderInput();
+
+ delete fFileHandler;
+}
void read(Char_t *path="./",Int_t min=0,Int_t max=35)
{
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
- l.UseStderr();
- //l.UseStream();
+ AliL3Transform::Init(path);
for(Int_t slice=0; slice<35; slice++)
{
void read_ali(Char_t *fname, Int_t sl=0, Int_t sh=35)
{
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
- l.UseStderr();
- //l.UseStream();
-
-#if 0
//need galice file or alirunfile.root link
if(AliL3Transform::Init(fname,kTRUE))
{
cout << "created temp init file!" << endl;
}
-#endif
AliL3FileHandler *fileHandler = new AliL3FileHandler();
void read_pp(Char_t *path="./",Int_t min=0,Int_t max=35,Int_t ev=0)
{
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
- l.UseStderr();
- //l.UseStream();
-
AliL3Transform::Init(path);
for(Int_t slice=min; slice<max; slice++)
void read_event_tree(Char_t *rootfile,Int_t startev=0)
{
- AliL3Logger l;
- //l.UnSet(AliL3Logger::kDebug);
- //l.UnSet(AliL3Logger::kAll);
- //l.Set(AliL3Logger::kInformational);
- //l.UseStderr();
- l.UseStream();
-
AliL3FileHandler *handler = new AliL3FileHandler();
if(!handler->SetAliInput(rootfile)){
cerr<<" Error opening file: "<<rootfile<<endl;
--- /dev/null
+// @(#) $Id$
+
+// Author: C. Loizides <loizides@ikf.uni-frankfurt.de>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliL3StandardIncludes.h"
+
+#include "AliL3RootTypes.h"
+#include "AliL3Logging.h"
+#include "AliL3Transform.h"
+#include "AliL3MemHandler.h"
+#include "AliL3DigitData.h"
+#include "AliL3DDLTPCRawStream.h"
+#include "AliL3DDLRawReaderFile.h"
+
+#include "AliL3DDLDataFileHandler.h"
+
+#if GCCVERSION == 3
+using namespace std;
+#endif
+
+/** \class AliL3DDLDataFileHandler
+<pre>
+//_____________________________________________________________
+// AliL3DDLDataFileHandler
+//
+// This class does converts from the DDL format of offline
+// into the memory I/O handling of the HLT binary files.
+//
+// Examples: see ddl2binary in exa and the general
+// AliL3MemHandler class description
+//
+</pre>
+*/
+
+ClassImp(AliL3DDLDataFileHandler)
+
+AliL3DDLDataFileHandler::AliL3DDLDataFileHandler()
+{
+ fReader=0;
+ fTPCStream=0;
+}
+
+AliL3DDLDataFileHandler::~AliL3DDLDataFileHandler()
+{
+ FreeAll();
+}
+
+void AliL3DDLDataFileHandler::FreeAll()
+{
+ if(fReader) delete fReader;
+ if(fTPCStream) delete fTPCStream;
+ fReader = 0;
+ fTPCStream = 0;
+}
+
+
+Bool_t AliL3DDLDataFileHandler::SetReaderInput(Char_t *name, Bool_t add)
+{
+ if(fReader){
+ LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::SetReaderInput","File Open")
+ <<"Reader ptr is already in use"<<ENDLOG;
+ return kFALSE;
+ }
+
+ fReader=new AliL3DDLRawReaderFile(name,add);
+ fTPCStream=new AliL3DDLTPCRawStream(fReader);
+
+ return kTRUE;
+}
+
+Bool_t AliL3DDLDataFileHandler::SetReaderInput(AliL3DDLRawReaderFile *rf)
+{
+ if(fReader){
+ LOG(AliL3Log::kError,"AliL3RawDataFileHandler::SetReaderInput","File Open")
+ <<"Reader ptr is already in use, delete it first"<<ENDLOG;
+ return kFALSE;
+ }
+
+ //Open the raw data file with given file.
+ fReader = rf;
+ fTPCStream=new AliL3DDLTPCRawStream(fReader);
+
+ return kTRUE;
+}
+
+void AliL3DDLDataFileHandler::CloseReaderInput()
+{
+ if(!fReader){
+ LOG(AliL3Log::kWarning,"AliL3RawDataFileHandler::CloseReaderInput","File Close")
+ <<"Nothing to Close"<<ENDLOG;
+ return;
+ }
+
+ delete fReader;
+ delete fTPCStream;
+ fReader = 0;
+ fTPCStream = 0;
+}
+
+AliL3DigitRowData * AliL3DDLDataFileHandler::DDLData2Memory(UInt_t &nrow,Int_t event)
+{ //event is not used
+ AliL3DigitRowData *data = 0;
+ nrow=0;
+
+ if(!fReader){
+ LOG(AliL3Log::kWarning,"AliL3DDLDataFileHandler::DDLData2Memory","File")
+ <<"No Input avalible: no object AliL3DDLRawReaderFile"<<ENDLOG;
+ return 0;
+ }
+
+ Int_t nrows=fRowMax-fRowMin+1;
+ Int_t ndigitcount=0;
+ Int_t ndigits[nrows];
+ UShort_t ***charges=new UShort_t**[nrows];
+ for(Int_t r=fRowMin;r<=fRowMax;r++){
+ Int_t lrow=r-fRowMin;
+ charges[lrow]=new UShort_t*[AliL3Transform::GetNPads(r)];
+ for(Int_t k=0;k<AliL3Transform::GetNPads(r);k++){
+ charges[lrow][k]=new UShort_t[AliL3Transform::GetNTimeBins()];
+ for(Int_t j=0;j<AliL3Transform::GetNTimeBins();j++) charges[lrow][k][j]=0;
+ }
+ }
+
+ Int_t ddls_to_search=0;
+ Int_t ddls[9]={-1,-1,-1,-1,-1,-1,-1,-1,-1};
+ Int_t ddlid=-1,lddlid=-1;
+ for(Int_t r=fRowMin;r<=fRowMax;r++){
+ ndigits[r-fRowMin] = 0; //now digits on row
+
+ Int_t patch=AliL3Transform::GetPatch(r);
+ Int_t sector,row;
+ AliL3Transform::Slice2Sector(fSlice,r,sector,row);
+
+ if(sector<36) //taken from AliTPCBuffer160.cxx
+ ddlid=sector*2+patch;
+ else
+ ddlid=70+(sector-36)*4+patch;
+
+ if((lddlid!=ddlid-1)&&(r==30)){ //dont forget the split row on the last ddl
+ ddls[ddls_to_search++]=ddlid-1;
+ lddlid=ddlid-1;
+ }
+ if((lddlid==-1)||(ddlid!=lddlid)){
+ ddls[ddls_to_search++]=ddlid;
+ lddlid=ddlid;
+ }
+ if((r==90)||(r==139)){ //dont forget the split row on the next ddl
+ ddls[ddls_to_search++]=ddlid+1;
+ lddlid=ddlid+1;
+ }
+ }
+ //for(Int_t i=0;i<ddls_to_search;i++) cout << ddls[i] <<endl;
+
+ for(Int_t i=0;i<ddls_to_search;i++){
+ fTPCStream->SetDDLID(ddls[i]); //ddl to read out
+ while (fTPCStream->Next()){
+ UShort_t dig=fTPCStream->GetSignal();
+ if(dig <= AliL3Transform::GetZeroSup()) continue;
+ if(dig >= AliL3Transform::GetADCSat())
+ dig = AliL3Transform::GetADCSat();
+
+ Int_t time=fTPCStream->GetTime();
+ Int_t pad=fTPCStream->GetPad();
+ Int_t sector=fTPCStream->GetSector();
+ Int_t row=fTPCStream->GetRow();
+ Int_t slice,srow;
+
+ //test row criteria (patch boundaries)
+ AliL3Transform::Sector2Slice(slice,srow,sector,row);
+ if((srow<fRowMin)||(srow>fRowMax))continue;
+ if(slice!=fSlice){
+ LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Slice")
+ <<AliL3Log::kDec<<"Found slice "<<slice<<", expected "<<fSlice<<ENDLOG;
+ continue;
+ }
+
+ //cut out the inner cone
+ Float_t xyz[3];
+ AliL3Transform::Raw2Local(xyz,sector,row,pad,time);
+ if(AliL3Transform::Row2X(srow)<230./250.*fabs(xyz[2]))
+ continue; // why 230???
+
+ Int_t lrow=srow-fRowMin;
+ if((lrow<0)||lrow>=nrows){
+ LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Row")
+ <<AliL3Log::kDec<<"Row value out of bounds "<<lrow<<" "<<nrows<<ENDLOG;
+ continue;
+ }
+ if((pad<0)||(pad>=AliL3Transform::GetNPads(srow))){
+ LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Pad")
+ <<AliL3Log::kDec<<"Pad value out of bounds "<<pad<<" "
+ <<AliL3Transform::GetNPads(srow)<<ENDLOG;
+ continue;
+ }
+ if((time<0)||(time>=AliL3Transform::GetNTimeBins())){
+ LOG(AliL3Log::kError,"AliL3DDLDataFileHandler::DDLDigits2Memory","Time")
+ <<AliL3Log::kDec<<"Time out of bounds "<<time<<" "
+ <<AliL3Transform::GetNTimeBins()<<ENDLOG;
+ continue;
+ }
+
+ //store digit
+ ndigits[lrow]++; //for this row only
+ ndigitcount++; //total number of digits to be published
+
+ charges[lrow][pad][time]=dig;
+ }
+ }
+
+ Int_t size = sizeof(AliL3DigitData)*ndigitcount
+ + nrows*sizeof(AliL3DigitRowData);
+
+ LOG(AliL3Log::kDebug,"AliL3DDLDataFileHandler::DDLDigits2Memory","Digits")
+ <<AliL3Log::kDec<<"Found "<<ndigitcount<<" Digits"<<ENDLOG;
+
+ data=(AliL3DigitRowData*) Allocate(size);
+ nrow = (UInt_t)nrows;
+ AliL3DigitRowData *tempPt = data;
+
+ for(Int_t r=fRowMin;r<=fRowMax;r++){
+ Int_t lrow=r-fRowMin;
+ tempPt->fRow = r;
+ tempPt->fNDigit = ndigits[lrow];
+
+ Int_t localcount=0;
+ for(Int_t pad=0;pad<AliL3Transform::GetNPads(r);pad++){
+ for(Int_t time=0;time<AliL3Transform::GetNTimeBins();time++){
+ UShort_t dig=charges[lrow][pad][time];
+ if(!dig) continue;
+
+ if(localcount >= ndigits[lrow])
+ LOG(AliL3Log::kFatal,"AliL3DDLDataFileHandler::DDLDigits2Binary","Memory")
+ <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ <<ndigits[lrow]<<ENDLOG;
+
+
+ tempPt->fDigitData[localcount].fCharge=dig;
+ tempPt->fDigitData[localcount].fPad=pad;
+ tempPt->fDigitData[localcount].fTime=time;
+#ifdef do_mc
+ tempPt->fDigitData[localcount].fTrackID[0] = 0;
+ tempPt->fDigitData[localcount].fTrackID[1] = 0;
+ tempPt->fDigitData[localcount].fTrackID[2] = 0;
+#endif
+ localcount++;
+ }
+ }
+
+ if(localcount != ndigits[lrow])
+ LOG(AliL3Log::kFatal,"AliL3DDLDataFileHandler::DDLDigits2Binary","Memory")
+ <<AliL3Log::kDec<<"Mismatch: localcount "<<localcount<<" ndigits "
+ <<ndigits[lrow]<<ENDLOG;
+
+
+ Byte_t *tmp = (Byte_t*)tempPt;
+ Int_t size = sizeof(AliL3DigitRowData)
+ + ndigits[lrow]*sizeof(AliL3DigitData);
+ tmp += size;
+ tempPt = (AliL3DigitRowData*)tmp;
+ }
+
+ //delete charge array
+ for(Int_t r=fRowMin;r<=fRowMax;r++){
+ Int_t lrow=r-fRowMin;
+ for(Int_t k=0;k<AliL3Transform::GetNPads(r);k++)
+ delete charges[lrow][k];
+ delete charges[lrow];
+ }
+ delete charges;
+
+ return data;
+}
+
+
+Bool_t AliL3DDLDataFileHandler::DDLData2CompBinary(Int_t event)
+{
+ Bool_t out = kTRUE;
+ UInt_t ndigits=0;
+ AliL3DigitRowData *digits=0;
+ digits = DDLData2Memory(ndigits,event);
+ out = Memory2CompBinary(ndigits,digits);
+ Free();
+ return out;
+}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3DDLDATAFILEHANDLER_H
+#define ALIL3DDLDATAFILEHANDLER_H
+
+#include "AliL3DDLRawReaderFile.h"
+#include "AliL3DDLTPCRawStream.h"
+#include "AliL3MemHandler.h"
+
+class AliL3DDLDataFileHandler:public AliL3MemHandler{
+ private:
+
+ AliL3DDLRawReaderFile *fReader;
+ AliL3DDLTPCRawStream *fTPCStream;
+
+ public:
+ Bool_t SetReaderInput(Char_t *name,Bool_t add=kTRUE);
+ Bool_t SetReaderInput(AliL3DDLRawReaderFile *rf);
+ void CloseReaderInput();
+
+ AliL3DDLDataFileHandler();
+ virtual ~AliL3DDLDataFileHandler();
+
+ void FreeAll(); //like AliL3MemHandler::Free() or AliL3FileHandler::FreeDigitsTree
+ AliL3DigitRowData* DDLData2Memory(UInt_t &nrow,Int_t event=-1);
+ Bool_t DDLData2CompBinary(Int_t event=-1);
+
+ ClassDef(AliL3DDLDataFileHandler,1) //DDL Data Filehandler class
+};
+#endif
--- /dev/null
+// @(#) $Id$
+
+// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliL3RootTypes.h"
+#include "AliL3StandardIncludes.h"
+#include "AliL3Logging.h"
+
+#include "AliL3DDLRawReader.h"
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/** \class AliL3DDLRawReader
+<pre>
+//_____________________________________________________________
+// AliL3DDLRawReader (taken from the offline AliROOT code,
+// original authors: D.Favretto and A.K.Mohanty)
+//
+// This is the base class for reading ddl raw data
+// and providing information about digits
+</pre>
+*/
+
+ClassImp(AliL3DDLRawReader)
+
+AliL3DDLRawReader::AliL3DDLRawReader()
+{
+ fMiniHeader = NULL;
+ fCount = 0;
+ fSelectDetectorID = -1;
+ fSelectMinDDLID = -1;
+ fSelectMaxDDLID = -1;
+}
+
+AliL3DDLRawReader::~AliL3DDLRawReader()
+{
+}
+
+void AliL3DDLRawReader::Select(Int_t detectorID, Int_t minDDLID, Int_t maxDDLID)
+{
+ // read only data of the detector with the given ID and in the given
+ // range of DDLs (minDDLID <= DDLID < maxDDLID).
+ // no selection is applied if a value < 0 is used.
+
+ fSelectDetectorID = detectorID;
+ fSelectMinDDLID = minDDLID;
+ fSelectMaxDDLID = maxDDLID;
+}
+
+Bool_t AliL3DDLRawReader::IsSelected()
+{
+ // apply the selection (if any)
+
+ if (fSelectDetectorID >= 0) {
+ if (fMiniHeader->fDetectorID != fSelectDetectorID) return kFALSE;
+ if ((fSelectMinDDLID >= 0) && (fMiniHeader->fDDLID < fSelectMinDDLID))
+ return kFALSE;
+ if ((fSelectMaxDDLID >= 0) && (fMiniHeader->fDDLID >= fSelectMaxDDLID))
+ return kFALSE;
+ }
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReader::CheckMiniHeader()
+{
+ // check the magic number of the mini header
+
+ if ((fMiniHeader->fMagicWord[2] != 0x12) ||
+ (fMiniHeader->fMagicWord[1] != 0x34) ||
+ (fMiniHeader->fMagicWord[0] != 0x56)) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::CheckMiniHeader","MH")
+ <<"DDL mini header has wrong magic word!"<<ENDLOG;
+ return kFALSE;
+ }
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReader::ReadNextInt(UInt_t& data)
+{
+ // reads the next 4 bytes at the current position
+ // returns kFALSE if the data could not be read
+
+ while (fCount == 0) {
+ if (!ReadMiniHeader()) return kFALSE;
+ }
+ if (fCount < (Int_t) sizeof(data)) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextInt","Data")
+ <<AliL3Log::kDec<<"Too few data left ("<<fCount<<") to read UInt_t!"<<ENDLOG;
+ return kFALSE;
+ }
+ if (!ReadNext((UChar_t*) &data, sizeof(data))) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextInt","Data")
+ <<"Could not read data."<<ENDLOG;
+ return kFALSE;
+ }
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReader::ReadNextShort(UShort_t& data)
+{
+ // reads the next 2 bytes at the current position
+ // returns kFALSE if the data could not be read
+
+ while (fCount == 0) {
+ if (!ReadMiniHeader()) return kFALSE;
+ }
+ if (fCount < (Int_t) sizeof(data)) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextShort","Data")
+ <<AliL3Log::kDec<<"Too few data left ("<<fCount<<") to read UShort_t!"<<ENDLOG;
+ return kFALSE;
+ }
+ if (!ReadNext((UChar_t*) &data, sizeof(data))) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextShort","Data")
+ <<"Could not read data."<<ENDLOG;
+ return kFALSE;
+ }
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReader::ReadNextChar(UChar_t& data)
+{
+ // reads the next 1 byte at the current stream position
+ // returns kFALSE if the data could not be read
+
+ while (fCount == 0) {
+ if (!ReadMiniHeader()) return kFALSE;
+ }
+ if (!ReadNext((UChar_t*) &data, sizeof(data))) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReader::ReadNextChar","Data")
+ <<"Could not read data."<<ENDLOG;
+ return kFALSE;
+ }
+ return kTRUE;
+}
+
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3DDLRAWREADER_H
+#define ALIL3DDLRAWREADER_H
+
+// see description in upcoming ALICE note
+// by D.Favretto and A.K.Mohanty
+struct AliL3DDLMiniHeader
+{
+ UInt_t fSize;
+ UChar_t fDetectorID;
+ UChar_t fMagicWord[3];
+ UChar_t fVersion;
+ UChar_t fCompressionFlag;
+ UShort_t fDDLID;
+};
+
+class AliL3DDLRawReader
+{
+ public :
+ AliL3DDLRawReader();
+ virtual ~AliL3DDLRawReader();
+
+ void Select(Int_t detectorID, Int_t minDDLID = -1, Int_t maxDDLID = -1);
+
+ inline Int_t GetDataSize() const {return fMiniHeader->fSize;};
+ inline Int_t GetDetectorID() const {return fMiniHeader->fDetectorID;};
+ inline Int_t GetDDLID() const {return fMiniHeader->fDDLID;};
+ inline Int_t GetVersion() const {return fMiniHeader->fVersion;};
+ inline Bool_t IsCompressed() const {return fMiniHeader->fCompressionFlag != 0;};
+
+ virtual Bool_t ReadMiniHeader() = 0;
+ virtual Bool_t ReadNextData(UChar_t*& data) = 0;
+ virtual Bool_t ReadNextInt(UInt_t& data);
+ virtual Bool_t ReadNextShort(UShort_t& data);
+ virtual Bool_t ReadNextChar(UChar_t& data);
+
+ virtual Bool_t Reset() = 0;
+
+ protected :
+ Bool_t IsSelected();
+
+ Bool_t CheckMiniHeader();
+ virtual Bool_t ReadNext(UChar_t* data, Int_t size) = 0;
+
+ AliL3DDLMiniHeader* fMiniHeader; // current mini header
+ Int_t fCount; // counter of bytes to be read for current DDL
+
+ Int_t fSelectDetectorID; // id of selected detector (<0 = no selection)
+ Int_t fSelectMinDDLID; // minimal index of selected DDLs (<0 = no selection)
+ Int_t fSelectMaxDDLID; // maximal index of selected DDLs (<0 = no selection)
+
+ ClassDef(AliL3DDLRawReader,1) //AliL3DDLRawReader
+};
+
+#endif
--- /dev/null
+// @(#) $Id$
+
+// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliL3RootTypes.h"
+#include "AliL3StandardIncludes.h"
+#include "AliL3Logging.h"
+
+#include "AliL3DDLRawReaderFile.h"
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/** \class AliL3DDLRawReaderFile
+<pre>
+//_____________________________________________________________
+// AliL3DDLRawReaderFile (taken from the offline AliROOT code,
+// original authors: D.Favretto and A.K.Mohanty)
+//
+// This is the base class for reading ddl raw data
+// and providing information about digits
+</pre>
+*/
+
+
+ClassImp(AliL3DDLRawReaderFile)
+
+
+AliL3DDLRawReaderFile::AliL3DDLRawReaderFile(const Char_t* name, Bool_t addnum)
+{
+ // create an object to read digits from the given input file(s)
+ // if addNumber is true, a number starting at 1 is appended to the file name
+
+ fFileName = new Char_t[1024];
+ strcpy(fFileName,name);
+ if (!addnum) {
+ fFileNumber = -1;
+ fStream = new fstream(fFileName, ios::binary|ios::in);
+ } else {
+ fFileNumber = 0;
+ fStream = NULL;
+ OpenNextFile();
+ }
+ fMiniHeader = new AliL3DDLMiniHeader;
+ fBuffer = NULL;
+ fBufferSize = 0;
+}
+
+AliL3DDLRawReaderFile::~AliL3DDLRawReaderFile()
+{
+ // close the input file
+ if(fFileName) delete fFileName;
+
+ if (fStream) {
+ if (fStream->is_open()) fStream->close();
+ delete fStream;
+ }
+ delete fMiniHeader;
+ if (fBuffer) delete[] fBuffer;
+}
+
+Bool_t AliL3DDLRawReaderFile::OpenNextFile()
+{
+ if (fStream) {
+ if (fStream->is_open()) fStream->close();
+ delete fStream;
+ fStream = NULL;
+ }
+ if (fFileNumber < 0) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::OpenNextFile","File")
+ <<"Could not open file, file number is negative."<<ENDLOG;
+ return kFALSE;
+ }
+
+ fFileNumber++;
+ Char_t fileName[1024];
+ sprintf(fileName, "%s%d", fFileName, fFileNumber);
+
+ fStream = new fstream(fileName, ios::binary|ios::in);
+ return (fStream->is_open());
+}
+
+Bool_t AliL3DDLRawReaderFile::ReadMiniHeader()
+{
+ // read a mini header at the current stream position
+ // returns kFALSE if the mini header could not be read
+
+ if (!fStream) return kFALSE;
+ do {
+ if (fCount > 0) fStream->seekg(Int_t(fStream->tellg()) + fCount);
+ while (!fStream->read((Char_t*) fMiniHeader, sizeof(AliL3DDLMiniHeader))) {
+ if (!OpenNextFile()) return kFALSE;
+ }
+ //cout << fMiniHeader->fSize << " " << fMiniHeader->fDetectorID << " " << fMiniHeader->fVersion << " " << fMiniHeader->fCompressionFlag << " " << fMiniHeader->fDDLID << endl;
+ //cout << "loop here " << (Int_t)fMiniHeader->fDDLID<< endl;
+ CheckMiniHeader();
+ fCount = fMiniHeader->fSize;
+ } while (!IsSelected());
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReaderFile::ReadNextData(UChar_t*& data)
+{
+ // reads the next payload at the current stream position
+ // returns kFALSE if the data could not be read
+
+ while (fCount == 0) {
+ if (!ReadMiniHeader()) return kFALSE;
+ }
+ if (fBufferSize < fCount) {
+ if (fBuffer) delete[] fBuffer;
+ fBufferSize = Int_t(fCount*1.2);
+ fBuffer = new UChar_t[fBufferSize];
+ }
+ if (!fStream->read((Char_t*) fBuffer, fCount)) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::ReadNextData","Data")
+ <<"Could not read next data!"<<ENDLOG;
+ return kFALSE;
+ }
+ fCount = 0;
+
+ data = fBuffer;
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReaderFile::ReadNext(UChar_t* data, Int_t size)
+{
+ // reads the next block of data at the current stream position
+ // returns kFALSE if the data could not be read
+
+ if (!fStream->read((Char_t*) data, size)) {
+ LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::ReadNext","Data")
+ <<"Could not read next data!"<<ENDLOG;
+ return kFALSE;
+ }
+ fCount -= size;
+ return kTRUE;
+}
+
+Bool_t AliL3DDLRawReaderFile::Reset()
+{
+ // reset the current stream position to the beginning of the file
+
+ if ((fFileNumber > 0) && fStream) {
+ if (fStream->is_open()) fStream->close();
+ delete fStream;
+ fStream = NULL;
+ fFileNumber = 0;
+ }
+
+ if (!fStream) {
+ if (fFileNumber < 0) {
+ fStream = new fstream(fFileName, ios::binary|ios::in);
+ } else {
+ if (!OpenNextFile()){
+ LOG(AliL3Log::kError,"AliL3DDLRawReaderFile::Reset","Data")
+ <<"Could not reset data stream!"<<ENDLOG;
+ return kFALSE;
+ }
+ }
+ }
+
+ if (!fStream || !fStream->rdbuf()->is_open()) return kFALSE;
+ fStream->seekg(0);
+ fCount = 0;
+ return kTRUE;
+}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3DDLRAWREADERFILE_H
+#define ALIL3DDLRAWREADERFILE_H
+
+#include "AliL3DDLRawReader.h"
+
+class AliL3DDLRawReaderFile: public AliL3DDLRawReader
+{
+ public :
+ AliL3DDLRawReaderFile(const Char_t* name, Bool_t addnum = kTRUE);
+ virtual ~AliL3DDLRawReaderFile();
+
+ virtual Bool_t ReadMiniHeader();
+ virtual Bool_t ReadNextData(UChar_t*& data);
+
+ virtual Bool_t Reset();
+
+ protected :
+ Bool_t OpenNextFile();
+
+ virtual Bool_t ReadNext(UChar_t* data, Int_t size);
+
+ Char_t* fFileName; //! name of input files
+ Int_t fFileNumber; // number of current input file
+ fstream* fStream; //! stream of raw digits
+ UChar_t* fBuffer; //! buffer for payload
+ Int_t fBufferSize; // size of fBuffer in bytes
+
+ ClassDef(AliL3DDLRawReaderFile, 1) //AliL3DDLRawReaderFile
+};
+
+#endif
--- /dev/null
+// @(#) $Id$
+
+// Author: Constantin Loizides <mailto:loizides@ikf.uni-frankfurt.de>
+//*-- Copyright © ALICE HLT Group
+
+#include "AliL3RootTypes.h"
+#include "AliL3StandardIncludes.h"
+#include "AliL3Logging.h"
+#include "AliL3DDLRawReader.h"
+
+#include "AliL3DDLTPCRawStream.h"
+//#include "AliTPCHuffman.h"
+
+
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+/** \class AliL3DDLTPCRawReaderStream
+<pre>
+//_____________________________________________________________
+// AliL3DDLTPCRawReaderStream (taken from the offline AliROOT code,
+// original authors: D.Favretto and A.K.Mohanty)
+//
+// This is a base class for reading TPC raw data
+// and providing information about digits
+</pre>
+*/
+
+ClassImp(AliL3DDLTPCRawStream)
+
+AliL3DDLTPCRawStream::AliL3DDLTPCRawStream(AliL3DDLRawReader* rawReader)
+{
+ // create an object to read TPC raw digits
+
+ fRawReader = rawReader;
+ fRawReader->Select(0);
+ fData = new UShort_t[fkDataMax];
+ fDataSize = fPosition = 0;
+ fCount = fBunchLength = 0;
+
+ fSector = fPrevSector = fRow = -1;
+ fPrevRow = fPad = fPrevPad = -1;
+ fTime = fSignal = -1;
+}
+
+AliL3DDLTPCRawStream::~AliL3DDLTPCRawStream()
+{
+ // clean up
+ delete[] fData;
+}
+
+Bool_t AliL3DDLTPCRawStream::SetDDLID(Int_t d)
+{
+ if((d<0)||(d>216)){
+ LOG(AliL3Log::kFatal,"AliL3DDLTPCRawStream::SetDDLID","DDL")
+ <<AliL3Log::kDec<<"DDL number out of range "<<d<<ENDLOG;
+ return kFALSE;
+ }
+
+ //partial clean
+ fDataSize = fPosition = 0;
+ fCount = fBunchLength = 0;
+
+ fSector = fPrevSector = fRow = fPrevRow = fPad = fPrevPad = fTime = fSignal = -1;
+
+ fRawReader->Reset();
+ fRawReader->Select(0,d,d+1);
+
+ return kTRUE;
+}
+
+Bool_t AliL3DDLTPCRawStream::Next()
+{
+ // read the next raw digit
+ // returns kFALSE if there is no digit left
+
+ fPrevSector = fSector;
+ fPrevRow = fRow;
+ fPrevPad = fPad;
+
+ while (fCount == 0) { // next trailer
+ if (fPosition >= fDataSize) { // next payload
+ UChar_t* data;
+ do {
+ if (!fRawReader->ReadNextData(data)) return kFALSE;
+ } while (fRawReader->GetDataSize() == 0);
+
+ if (fRawReader->IsCompressed()) { // compressed data
+ LOG(AliL3Log::kFatal,"AliL3DDLTPCRawStream::Next","Compression")
+ <<"Compression is not implemented (yet)!"<<ENDLOG;
+ return kFALSE;
+ } else { // uncompressed data
+ fDataSize = 0;
+ Int_t pos = (fRawReader->GetDataSize() * 8) / 10;
+ while (Get10BitWord(data, pos-1) == 0x2AA) pos--;
+ while (pos > 0) {
+ for (Int_t i = 0; i < 4; i++) { // copy trailer
+ fData[fDataSize++] = Get10BitWord(data, pos-4+i);
+ }
+ pos -= 4;
+ Int_t count = fData[fDataSize-4];
+ pos -= (4 - (count % 4)) % 4; // skip fill words
+
+ while (count > 0) {
+ UShort_t bunchLength = Get10BitWord(data, pos-1);
+ fData[fDataSize++] = bunchLength;
+ fData[fDataSize++] = Get10BitWord(data, pos-2); // time bin
+
+ // copy signal amplitudes in increasing order on time
+ for (Int_t i = 0; i < bunchLength-2; i++) {
+ fData[fDataSize++] = Get10BitWord(data, pos - bunchLength + i);
+ }
+ pos -= bunchLength;
+ count -= bunchLength;
+ }
+ }
+ }
+
+ fPosition = 0;
+ }
+ if (fPosition + 4 >= fDataSize) {
+ LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ <<"Could not read trailer"<<ENDLOG;
+ return kFALSE;
+ }
+ fCount = fData[fPosition++];
+ fPad = fData[fPosition++];
+ fRow = fData[fPosition++];
+ fSector = fData[fPosition++];
+ fBunchLength = 0;
+ }
+
+ if (fBunchLength == 0) {
+ if (fPosition >= fDataSize) {
+ LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ <<"Could not read bunch length"<<ENDLOG;
+ return kFALSE;
+ }
+ fBunchLength = fData[fPosition++] - 2;
+ fCount--;
+
+ if (fPosition >= fDataSize) {
+ LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ <<"Could not read time bin"<<ENDLOG;
+ return kFALSE;
+ }
+ fTime = fData[fPosition++] - fBunchLength;
+ fCount--;
+ }
+
+ fTime++;
+ if (fPosition >= fDataSize) {
+ LOG(AliL3Log::kError,"AliL3DDLTPCRawStream::Next","Data")
+ <<"Could not read sample amplitude"<<ENDLOG;
+ return kFALSE;
+ }
+
+ fSignal = fData[fPosition++] + fkOffset;
+ fCount--;
+ fBunchLength--;
+
+ return kTRUE;
+}
+
+UShort_t AliL3DDLTPCRawStream::Get10BitWord(UChar_t* buffer, Int_t position)
+{
+ // return a word in a 10 bit array as an UShort_t
+ Int_t iBit = position * 10;
+ Int_t iByte = iBit / 8;
+ Int_t shift = iBit % 8;
+
+ // recalculate the byte numbers and the shift because
+ // the raw data is written as integers where the high bits are filled first
+ // -> little endian is assumed here !
+ Int_t iByteHigh = 4 * (iByte / 4) + 3 - (iByte % 4);
+ iByte++;
+ Int_t iByteLow = 4 * (iByte / 4) + 3 - (iByte % 4);
+ shift = 6 - shift;
+ return ((buffer[iByteHigh] * 256 + buffer[iByteLow]) >> shift) & 0x03FF;
+}
--- /dev/null
+// @(#) $Id$
+
+#ifndef ALIL3DDLTPCRAWSTREAM_H
+#define ALIL3DDLTPCRAWSTREAM_H
+
+class AliL3DDLRawReader;
+
+class AliL3DDLTPCRawStream
+{
+ public :
+ AliL3DDLTPCRawStream(AliL3DDLRawReader* rawReader);
+ virtual ~AliL3DDLTPCRawStream();
+
+ virtual Bool_t Next();
+ Bool_t SetDDLID(Int_t d); //choose ddlid to readout
+
+ inline Int_t GetSector() const {return fSector;};
+ inline Int_t GetPrevSector() const {return fPrevSector;};
+ inline Bool_t IsNewSector() const {return fSector != fPrevSector;};
+ inline Int_t GetRow() const {return fRow;};
+ inline Int_t GetPrevRow() const {return fPrevRow;};
+ inline Bool_t IsNewRow() const {return (fRow != fPrevRow) || IsNewSector();};
+ inline Int_t GetPad() const {return fPad;};
+ inline Int_t GetPrevPad() const {return fPrevPad;};
+ inline Bool_t IsNewPad() const {return (fPad != fPrevPad) || IsNewRow();};
+ inline Int_t GetTime() const {return fTime;};
+ inline Int_t GetSignal() const {return fSignal;};
+
+ protected :
+ UShort_t Get10BitWord(UChar_t* buffer, Int_t position);
+
+ static const Int_t fkOffset = 1; // offset of signal
+ static const Int_t fkDataMax = 10000000; // size of array for uncompressed raw data
+
+ AliL3DDLRawReader* fRawReader; // object for reading the raw data
+
+ UShort_t* fData; //[fkDataMax] uncompressed raw data
+ Int_t fDataSize; // actual size of the uncompressed raw data
+ Int_t fPosition; // current position in fData
+ Int_t fCount; // counter of words to be read for current trailer
+ Int_t fBunchLength; // remaining number of signal bins in the current bunch
+
+ Int_t fSector; // index of current sector
+ Int_t fPrevSector; // index of previous sector
+ Int_t fRow; // index of current row
+ Int_t fPrevRow; // index of previous row
+ Int_t fPad; // index of current pad
+ Int_t fPrevPad; // index of previous pad
+ Int_t fTime; // index of current time bin
+ Int_t fSignal; // signal in ADC counts
+
+ ClassDef(AliL3DDLTPCRawStream, 1) // AliL3DDLTPCRawStream
+};
+
+#endif
#pragma link C++ class AliL3DataHandler;
#pragma link C++ class AliL3VHDLClusterFinder;
#pragma link C++ class AliL3TPCMapping;
+#pragma link C++ class AliL3DDLRawReader;
+#pragma link C++ class AliL3DDLRawReaderFile;
+#pragma link C++ class AliL3DDLTPCRawStream;
+#pragma link C++ class AliL3DDLDataFileHandler;
#ifdef USEFFLOAT
#pragma link C++ class AliL3FFloat;
using namespace std;
#endif
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+
+
/** \class AliL3Transbit
<pre>
//_____________________________________________________________
SRCS = AliL3TransBit.cxx AliL3AltroMemHandler.cxx AliL3DataHandler.cxx \
AliL3VHDLClusterFinder.cxx AliL3TPCMapping.cxx \
- AliL3FFloat.cxx AliL3Stopwatch.cxx
+ AliL3FFloat.cxx AliL3Stopwatch.cxx AliL3DDLRawReader.cxx \
+ AliL3DDLRawReaderFile.cxx AliL3DDLTPCRawStream.cxx AliL3DDLDataFileHandler.cxx
include $(ALIHLT_TOPDIR)/Makefile.rules
if(!fRawSP){
AliL3Transform::Slice2Sector(fCurrentSlice,fCurrentRow,thissector,thisrow);
AliL3Transform::Raw2Local(xyz,thissector,thisrow,fpad,ftime);
-
+
if(xyz[0]==0) LOG(AliL3Log::kError,"AliL3ClustFinder","Cluster Finder")
<<AliL3Log::kDec<<"Zero cluster"<<ENDLOG;
if(fNClusters >= fMaxNClusters)
<<AliL3Log::kDec<<"Too many clusters "<<fNClusters<<ENDLOG;
return;
}
-
+
fSpacePointData[counter].fX = xyz[0];
fSpacePointData[counter].fY = xyz[1];
fSpacePointData[counter].fZ = xyz[2];
+
} else {
- fSpacePointData[counter].fCharge = list[j].fTotalCharge;
fSpacePointData[counter].fX = fCurrentRow;
fSpacePointData[counter].fY = fpad;
fSpacePointData[counter].fZ = ftime;
}
-
+
+ fSpacePointData[counter].fCharge = list[j].fTotalCharge;
fSpacePointData[counter].fPadRow = fCurrentRow;
fSpacePointData[counter].fSigmaY2 = fpad2;
fSpacePointData[counter].fSigmaZ2 = ftime2;
if(track1->IsPoint()) {n1++;track1->CalculateReferencePoint(angle);}
}
for(Int_t s0=0;s0<ttt0->GetNTracks();s0++){
+ if(ismatched0[s0]) continue;
AliL3Track *track0=ttt0->GetCheckedTrack(s0);
if(!track0) continue;
if(!track0->IsPoint()) continue;
if(r0<r1){
MultiMerge(tout,track,2);
ismatched0[s0]=kTRUE;
- ismatched1[s1]=kTRUE;
+ ismatched1[s1]=kTRUE;
ttt0->Remove(s0);
ttt1->Remove(s1);
+ break;
+ /*
+ The track is merged, so we will _not_ look for more matches.
+ Because there could easily be more matches, if a track is being
+ split within the sector.
+ This bug was brought to you by Dr.Frankenfeld, and fixed 2 years
+ later by ASV....
+ */
}
}
}
}
- LOG(AliL3Log::kInformational,"AliL3GlobalMerger::Merge","Result")
- <<AliL3Log::kDec<<"slice0: "<<n0<<" slice1: "<<n1
- <<" Merged Tracks: "<<tout->GetNTracks()<<ENDLOG;
+ LOG(AliL3Log::kInformational,"AliL3GlobalMerger::Merge","Result")
+ <<AliL3Log::kDec<<"slice0: "<<n0<<" slice1: "<<n1
+ <<" Merged Tracks: "<<tout->GetNTracks()<<ENDLOG;
+ delete [] ismatched0;
+ delete [] ismatched1;
}
}
// file.Init(slice,patch);
//
// UInt_t nrowss;
-// AliL3DigitRowData *data = file.CompBinary2Memory(nrowss);
+// AliL3DigitRowData *data = file.CompBinary2Memory(nrows);
//
// for(int i=0; i<nrows; i++)
// {
}
Int_t size = GetFileSize();
-/*
- UInt_t size,slice,patch,row[2];
- AliL3EventDataTypeRoot datatype;
- UInt_t node;
- if(fread(&datatype,sizeof(AliL3EventDataTypeRoot),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
- if(fread(&node,sizeof(UInt_t),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
- if(fread(&size,sizeof(UInt_t),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
- if(fread(&slice,sizeof(UInt_t),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
- if(fread(&patch,sizeof(UInt_t),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
- if(fread(row,2*sizeof(UInt_t),1,fInBinary)!=1){
- LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
- <<"File Read Error "<<ENDLOG;
- return kFALSE;
- }
-*/
+
npoint = size/sizeof(AliL3SpacePointData);
if(fread(data,size,1,fInBinary)!=1){
LOG(AliL3Log::kFatal,"AliL3MemHandler::Binary2Memory","File")
Bool_t Binary2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data);
Bool_t TrackArray2Binary(AliL3TrackArray *array);
Bool_t Binary2TrackArray(AliL3TrackArray *array);
- Bool_t TrackArray2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data,
- AliL3TrackArray *array);
- Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,
- AliL3TrackArray *array);
- Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,
- AliL3TrackArray *array,Int_t slice);
+ Bool_t TrackArray2Memory(UInt_t & ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array);
+ Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array);
+ Bool_t Memory2TrackArray(UInt_t ntrack,AliL3TrackSegmentData *data,AliL3TrackArray *array,Int_t slice);
//Memory Allocation
UInt_t GetAllocatedSize(){return fSize;}
virtual Bool_t SetMCOutput(FILE *file){return 0;}
virtual void CloseMCOutput(){return;}
virtual Bool_t AliDigits2Binary(Int_t event=0,Bool_t altro=kFALSE){return 0;}
+ virtual Bool_t AliDigits2CompBinary(Int_t event=0,Bool_t altro=kFALSE){return 0;}
virtual AliL3DigitRowData *AliDigits2Memory(UInt_t & nrow,Int_t event=0){return 0;}
virtual AliL3DigitRowData *AliAltroDigits2Memory(UInt_t & nrow,Int_t event=0,Bool_t eventmerge=kFALSE){return 0;}
- virtual Bool_t AliDigits2CompBinary(Int_t event=0,Bool_t altro=kFALSE){return 0;}
virtual void AliDigits2RootFile(AliL3DigitRowData *rowPt,Char_t *new_digitsfile){return;}
virtual Bool_t AliPoints2Binary(Int_t eventn=0){return 0;}
virtual AliL3SpacePointData *AliPoints2Memory(UInt_t & npoint,Int_t eventn=0){return 0;}
virtual Int_t ReadRawPedestalsInput(){return 0;}
virtual AliL3DigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1){return 0;}
+ virtual Bool_t RawData2CompMemory(Int_t event=-1){return 0;}
+
+ //AliL3DDLDataFileHandler
+ virtual Bool_t SetReaderInput(Char_t *name,Bool_t add=kTRUE){return 0;}
+ virtual void CloseReaderInput(){};
+
+ virtual AliL3DigitRowData* DDLData2Memory(UInt_t &nrow,Int_t event=-1){return 0;}
+ virtual Bool_t DDLData2CompBinary(Int_t event=-1){return 0;}
ClassDef(AliL3MemHandler,1) // Memory handler class
};
return data;
}
+
+Bool_t AliL3RawDataFileHandler::RawData2CompBinary(Int_t event)
+{
+ Bool_t out = kTRUE;
+ UInt_t ndigits=0;
+ AliL3DigitRowData *digits=0;
+ digits = RawData2Memory(ndigits,event);
+ out = Memory2CompBinary(ndigits,digits);
+ Free();
+ return out;
+}
Int_t GetPadMaxUsed(){return fPadMaxUsed;}
Short_t GetPedVal(){return fPedVal;}
Int_t GetNChannels(){return fNChannels;}
- //Int_t GetNTimeBins(){return fNTimeBins;}
AliL3DigitRowData* RawData2Memory(UInt_t &nrow,Int_t event=-1);
+ Bool_t RawData2CompBinary(Int_t event=-1);
ClassDef(AliL3RawDataFileHandler,1) //RawData Filehandler class
};
//////////////////////////////////////////////////////////////////////////
// //
-// Basic types used by level3 //
+// Basic types used by HLT //
// //
//////////////////////////////////////////////////////////////////////////
return kFALSE;
}
+ LOG(AliL3Log::kInformational,"AliL3Transform::Init","Config")
+ <<"Successfully loaded values from config file \""<<pathname<<"\""<<ENDLOG;
+
return kTRUE;
}
}
fVersion=fV_aliroot;
- fBFieldFactor=(Double_t)gAlice->Field()->Factor();
- fSolenoidBField=(Double_t)gAlice->Field()->SolenoidField();
+ SetBFieldFactor((Double_t)gAlice->Field()->Factor());
+ SetSolenoidBField((Double_t)gAlice->Field()->SolenoidField());
fPadPitchWidthLow=param->GetInnerPadPitchWidth();
fPadPitchWidthUp=param->GetOuterPadPitchWidth();
fZWidth=param->GetZWidth();
fADCSat=param->GetADCSat();
fZeroSup=param->GetZeroSup();
fNSlice=fNSectorLow;
-
+
//now do the arrays
for(Int_t i=0;i<fNRow;i++){
Int_t sec,row;