60 Error (
"TSpectrumTransform",
"Invalid length, must be > than 0");
70 Error (
"TSpectrumTransform",
"Invalid length, must be power of 2");
100 int i, ii, li, l2, l3, j, jj, jj1, lj, iter,
m, jmin, jmax;
103 for (i = 0; i < num; i++)
104 working_space[i + num] = 0;
112 for (
m = 1;
m <= iter;
m++) {
115 for (i = 0; i < (2 * l2); i++) {
116 working_space[num + i] = working_space[i];
118 for (j = 0; j < l2; j++) {
121 val = working_space[jj + num] + working_space[jj + 1 + num];
122 working_space[j] = val;
123 val = working_space[jj + num] - working_space[jj + 1 + num];
124 working_space[l3] = val;
128 val = working_space[0];
130 working_space[0] = val;
131 val = working_space[1];
133 working_space[1] = val;
134 for (ii = 2; ii <= iter; ii++) {
139 for (j = jmin; j <= jmax; j++) {
140 val = working_space[j];
144 working_space[j] = val;
148 for (
m = 1;
m <= iter;
m++) {
153 for (i = 0; i < (2 * li); i++) {
154 working_space[i + num] = working_space[i];
156 for (j = 0; j < li; j++) {
158 jj = 2 * (j + 1) - 1;
160 val = working_space[j + num] - working_space[lj + num];
161 working_space[jj] = val;
162 val = working_space[j + num] + working_space[lj + num];
163 working_space[jj1] = val;
178 int i,
m, nump = 1, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter;
181 for (i = 0; i < num; i++)
182 working_space[i + num] = 0;
189 for (
m = 1;
m <= iter;
m++) {
197 for (mp = 0; mp < nump; mp++) {
199 for (mp2 = 0; mp2 < mnum2; mp2++) {
200 mnum21 = mnum2 + mp2 + ib;
202 val1 = working_space[iba];
203 val2 = working_space[mnum21];
204 working_space[iba + num] = val1 + val2;
205 working_space[mnum21 + num] = val1 - val2;
208 for (i = 0; i < num; i++) {
209 working_space[i] = working_space[i + num];
215 for (i = 0; i < num; i++) {
216 val1 = working_space[i];
218 working_space[i] = val1;
232 int i, ib, il, ibd, ip, ifac, i1;
233 for (i = 0; i < num; i++) {
234 working_space[i + num] = working_space[i];
236 for (i = 1; i <= num; i++) {
250 for (i1 = 1; i1 <= il; i1++) {
252 ip = ip + ifac * ipower[i1 - 1];
254 working_space[ip - 1] = working_space[i - 1 + num];
268 int direction,
int zt_clear)
270 int nxp2, nxp, i, j, k,
m, iter, mxp, j1, j2, n1, n2, it;
271 Double_t a,
b,
c,
d, sign, wpwr, arg, wr, wi, tr, ti, pi =
272 3.14159265358979323846;
275 for (i = 0; i < num; i++)
276 working_space[i + num] = 0;
288 for (it = 1; it <= iter; it++) {
293 for (
m = 1;
m <= nxp2;
m++) {
298 for (mxp = nxp; mxp <= num; mxp += nxp) {
301 val1 = working_space[j1 - 1];
302 val2 = working_space[j2 - 1];
303 val3 = working_space[j1 - 1 + num];
304 val4 = working_space[j2 - 1 + num];
313 working_space[j1 - 1] = val1;
316 working_space[j1 - 1 + num] = val1;
317 a = tr * wr - ti * wi;
319 working_space[j2 - 1] = val1;
320 a = ti * wr + tr * wi;
322 working_space[j2 - 1 + num] = val1;
329 for (i = 1; i <= n1; i++) {
332 val1 = working_space[j - 1];
333 val2 = working_space[j - 1 + num];
334 val3 = working_space[i - 1];
335 working_space[j - 1] = val3;
336 working_space[j - 1 + num] = working_space[i - 1 + num];
337 working_space[i - 1] = val1;
338 working_space[i - 1 + num] = val2;
340 lab60:
if (k >= j)
goto lab65;
348 for (i = 0; i < num; i++) {
350 val1 = working_space[i];
354 working_space[i] = val1;
355 b = working_space[i + num];
357 working_space[i + num] =
b;
361 b = working_space[i];
362 c = working_space[i + num];
364 working_space[i] =
b;
365 working_space[i + num] = 0;
369 for (i = 1; i < num; i++)
370 working_space[num - i + num] = working_space[i];
371 working_space[0 + num] = working_space[0];
372 for (i = 0; i < num; i++) {
373 working_space[i] = working_space[i + num];
374 working_space[i + num] = 0;
392 int i, ib, il, ibd, ip, ifac, i1;
393 for (i = 0; i < num; i++) {
394 working_space[i + shift + start] = working_space[i + start];
395 working_space[i + shift + start + 2 * shift] =
396 working_space[i + start + 2 * shift];
398 for (i = 1; i <= num; i++) {
412 for (i1 = 1; i1 <= il; i1++) {
414 ip = ip + ifac * ipower[i1 - 1];
416 working_space[ip - 1 + start] =
417 working_space[i - 1 + shift + start];
418 working_space[ip - 1 + start + 2 * shift] =
419 working_space[i - 1 + shift + start + 2 * shift];
434 int degree,
int type)
436 int i, j, k,
m, nump, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter,
437 mp2step, mppom, ring;
438 Double_t a,
b,
c,
d, wpwr, arg, wr, wi, tr, ti, pi =
439 3.14159265358979323846;
440 Double_t val1, val2, val3, val4, a0oldr = 0, b0oldr = 0, a0r, b0r;
442 for (i = 0; i < num; i++)
443 working_space[i + 2 * num] = 0;
456 for (i = 0; i < iter - degree; i++)
458 for (
m = 1;
m <= iter;
m++) {
470 for (mp = 0; mp < nump; mp++) {
473 mppom = mppom % ring;
477 for (i = 0; i < (iter - 1); i++) {
478 if ((mppom & j) != 0)
493 for (mp2 = 0; mp2 < mnum2; mp2++) {
494 mnum21 = mnum2 + mp2 + ib;
496 if (mp2 % mp2step == 0) {
507 val1 = working_space[iba];
508 val2 = working_space[mnum21];
509 val3 = working_space[iba + 2 * num];
510 val4 = working_space[mnum21 + 2 * num];
515 tr =
a * a0r +
b * b0r;
517 working_space[num + iba] = val1;
518 ti =
c * a0r +
d * b0r;
520 working_space[num + iba + 2 * num] = val1;
522 a * b0r * wr -
c * b0r * wi -
b * a0r * wr +
d * a0r * wi;
524 working_space[num + mnum21] = val1;
526 c * b0r * wr +
a * b0r * wi -
d * a0r * wr -
b * a0r * wi;
528 working_space[num + mnum21 + 2 * num] = val1;
531 for (i = 0; i < num; i++) {
532 val1 = working_space[num + i];
533 working_space[i] = val1;
534 val1 = working_space[num + i + 2 * num];
535 working_space[i + 2 * num] = val1;
552 int i, j, k,
m, nump =
553 1, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter, mp2step, mppom,
555 Double_t a,
b,
c,
d, wpwr, arg, wr, wi, tr, ti, pi =
556 3.14159265358979323846;
557 Double_t val1, val2, val3, val4, a0oldr = 0, b0oldr = 0, a0r, b0r;
569 for (i = 0; i < iter - degree; i++)
573 for (
m = 1;
m <= iter;
m++) {
581 if (
m > iter - degree + 1)
583 for (mp = nump - 1; mp >= 0; mp--) {
586 mppom = mppom % ring;
590 for (i = 0; i < (iter - 1); i++) {
591 if ((mppom & j) != 0)
606 for (mp2 = 0; mp2 < mnum2; mp2++) {
607 mnum21 = mnum2 + mp2 + ib;
609 if (mp2 % mp2step == 0) {
620 val1 = working_space[iba];
621 val2 = working_space[mnum21];
622 val3 = working_space[iba + 2 * num];
623 val4 = working_space[mnum21 + 2 * num];
628 tr =
a * a0r +
b * wr * b0r +
d * wi * b0r;
630 working_space[num + iba] = val1;
631 ti =
c * a0r +
d * wr * b0r -
b * wi * b0r;
633 working_space[num + iba + 2 * num] = val1;
634 tr =
a * b0r -
b * wr * a0r -
d * wi * a0r;
636 working_space[num + mnum21] = val1;
637 ti =
c * b0r -
d * wr * a0r +
b * wi * a0r;
639 working_space[num + mnum21 + 2 * num] = val1;
642 if (
m <= iter - degree
648 for (i = 0; i < num; i++) {
649 val1 = working_space[num + i];
650 working_space[i] = val1;
651 val1 = working_space[num + i + 2 * num];
652 working_space[i + 2 * num] = val1;
745 int i, j=0, k = 1,
m,
l;
779 for (i = 0; i <
fSize; i++) {
780 working_space[i] = source[i];
783 for (i = 0; i <
fSize; i++) {
784 destVector[i] = working_space[i];
788 for (i = 0; i <
fSize; i++) {
789 working_space[i] = source[i];
793 for (i = 0; i <
fSize; i++) {
794 destVector[i] = working_space[i];
799 for (i = 1; i <= (
fSize / 2); i++) {
801 working_space[i - 1] = val;
802 working_space[
fSize - i] = val;
805 for (i = 0; i <
fSize / 2; i++) {
808 b = working_space[i];
810 working_space[i] =
a;
811 working_space[i +
fSize] = 0;
812 } working_space[0] = working_space[0] /
TMath::Sqrt(2.0);
813 for (i = 0; i <
fSize / 2; i++) {
814 destVector[i] = working_space[i];
819 for (i = 1; i <= (
fSize / 2); i++) {
821 working_space[i - 1] = val;
822 working_space[
fSize - i] = -val;
825 for (i = 0; i <
fSize / 2; i++) {
828 b = working_space[i];
831 working_space[i - 1] =
a;
832 working_space[i +
fSize] = 0;
834 working_space[
fSize / 2 - 1] =
836 for (i = 0; i <
fSize / 2; i++) {
837 destVector[i] = working_space[i];
841 for (i = 0; i <
fSize; i++) {
842 working_space[i] = source[i];
845 for (i = 0; i < 2 *
fSize; i++) {
846 destVector[i] = working_space[i];
850 for (i = 0; i <
fSize; i++) {
851 working_space[i] = source[i];
854 for (i = 0; i <
fSize; i++) {
855 destVector[i] = working_space[i];
865 for (i = 0; i <
fSize; i++) {
872 working_space[k + i % j] = val;
873 working_space[k + 2 * j - 1 - i % j] = val;
881 working_space[k + i % j] = val;
882 working_space[k + 2 * j - 1 - i % j] = -val;
886 working_space[i] = val;
891 for (i = 0; i < j; i++)
900 for (i = 0; i <
l; i++)
903 for (i = 0; i <
fSize; i++) {
908 b = working_space[k + i % j];
914 working_space[i] =
a;
915 working_space[i + 2 *
fSize] = 0;
923 for (i = 0; i <
l; i++)
926 for (i = 0; i <
fSize; i++) {
931 b = working_space[j + k + i % j];
937 working_space[j + k / 2 - i % j - 1] =
a;
938 working_space[i + 2 *
fSize] = 0;
948 working_space[
fSize + i] = working_space[
l + i / j];
950 working_space[
l + i / j + 2 *
fSize];
952 for (i = 0; i <
fSize; i++) {
953 working_space[i] = working_space[
fSize + i];
954 working_space[i + 2 *
fSize] =
957 for (i = 0; i <
fSize; i++) {
958 destVector[i] = working_space[i];
962 for (i = 0; i <
fSize; i++) {
963 destVector[
fSize + i] = working_space[i + 2 *
fSize];
973 for (i = 0; i <
fSize; i++) {
974 working_space[i] = source[i];
977 for (i = 0; i <
fSize; i++) {
978 destVector[i] = working_space[i];
982 for (i = 0; i <
fSize; i++) {
983 working_space[i] = source[i];
987 for (i = 0; i <
fSize; i++) {
988 destVector[i] = working_space[i];
992 for (i = 0; i <
fSize; i++) {
993 working_space[i] = source[i];
996 working_space[0] = working_space[0] *
TMath::Sqrt(2.0);
997 for (i = 0; i <
fSize / 2; i++) {
1002 working_space[i] = (
Double_t) working_space[i] *
a;
1003 }
for (i = 2; i <= (
fSize / 2); i++) {
1004 working_space[
fSize - i + 1] = working_space[i - 1];
1006 -working_space[i - 1 +
fSize];
1008 working_space[
fSize / 2] = 0;
1011 for (i = 0; i <
fSize / 2; i++) {
1012 destVector[i] = working_space[i];
1016 for (i = 0; i <
fSize; i++) {
1017 working_space[i] = source[i];
1020 working_space[
fSize / 2] =
1022 for (i =
fSize / 2 - 1; i > 0; i--) {
1024 working_space[i +
fSize] =
1028 }
for (i = 2; i <= (
fSize / 2); i++) {
1029 working_space[
fSize - i + 1] = working_space[i - 1];
1031 -working_space[i - 1 +
fSize];
1033 working_space[0] = 0;
1034 working_space[
fSize] = 0;
1037 for (i = 0; i <
fSize / 2; i++) {
1038 destVector[i] = working_space[i];
1042 for (i = 0; i < 2 *
fSize; i++) {
1043 working_space[i] = source[i];
1046 for (i = 0; i <
fSize; i++) {
1047 destVector[i] = working_space[i];
1051 for (i = 0; i <
fSize; i++) {
1052 working_space[i] = source[i];
1055 for (i = 0; i <
fSize; i++) {
1056 destVector[i] = working_space[i];
1066 for (i = 0; i <
fSize; i++) {
1067 working_space[i] = source[i];
1071 for (i = 0; i <
fSize; i++) {
1072 working_space[i + 2 *
fSize] = source[
fSize + i];
1082 working_space[
fSize +
l + i / j] = working_space[i];
1084 working_space[i + 2 *
fSize];
1086 for (i = 0; i <
fSize; i++) {
1087 working_space[i] = working_space[
fSize + i];
1088 working_space[i + 2 *
fSize] =
1095 for (i = 0; i < j; i++)
1104 for (i = 0; i <
fSize; i++) {
1109 working_space[2 *
fSize + k + i % j] =
1111 working_space[4 *
fSize + 2 *
fSize + k + i % j] = 0;
1117 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
1119 working_space[2 *
fSize + k + i % j] =
1121 } }
for (i = 0; i <
fSize; i++) {
1125 working_space[2 *
fSize + k + j] = 0;
1126 working_space[4 *
fSize + 2 *
fSize + k + j] = 0;
1130 working_space[2 *
fSize + k + 2 * j - i % j] =
1131 working_space[2 *
fSize + k + i % j];
1132 working_space[4 *
fSize + 2 *
fSize + k + 2 * j - i % j] =
1133 -working_space[4 *
fSize + 2 *
fSize + k + i % j];
1136 for (i = 0; i < 2 *
fSize; i++) {
1137 working_space[i] = working_space[2 *
fSize + i];
1138 working_space[4 *
fSize + i] =
1144 for (i = 0; i <
l; i++)
1153 for (i = 0; i <
fSize; i++) {
1158 working_space[2 *
fSize + k + j + i % j] =
1159 working_space[j + k / 2 - i % j -
1161 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] = 0;
1167 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] =
1168 -(
Double_t) working_space[j + k / 2 - i % j - 1] *
b;
1169 working_space[2 *
fSize + k + j + i % j] =
1170 (
Double_t) working_space[j + k / 2 - i % j - 1] *
a;
1171 } }
for (i = 0; i <
fSize; i++) {
1175 working_space[2 *
fSize + k] = 0;
1176 working_space[4 *
fSize + 2 *
fSize + k] = 0;
1180 working_space[2 *
fSize + k + i % j] =
1181 working_space[2 *
fSize + k + 2 * j - i % j];
1182 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
1183 -working_space[4 *
fSize + 2 *
fSize + k + 2 * j -
1187 for (i = 0; i < 2 *
fSize; i++) {
1188 working_space[i] = working_space[2 *
fSize + i];
1189 working_space[4 *
fSize + i] =
1193 for (i = 0; i <
l; i++)
1196 for (i = 0; i <
fSize; i++) {
1200 val = working_space[k + i % j];
1204 val = working_space[i];
1205 destVector[i] = val;
1210 delete[]working_space;
1273 int i, j=0, k = 1,
m,
l;
1276 Double_t a,
b, pi = 3.14159265358979323846, old_area, new_area;
1306 for (i = 0; i <
fSize; i++) {
1307 working_space[i] = source[i];
1312 for (i = 0; i <
fSize; i++) {
1313 working_space[i] = source[i];
1320 for (i = 1; i <= (
fSize / 2); i++) {
1321 val = source[i - 1];
1322 working_space[i - 1] = val;
1323 working_space[
fSize - i] = val;
1326 for (i = 0; i <
fSize / 2; i++) {
1329 b = working_space[i];
1331 working_space[i] =
a;
1332 working_space[i +
fSize] = 0;
1333 } working_space[0] = working_space[0] /
TMath::Sqrt(2.0);
1338 for (i = 1; i <= (
fSize / 2); i++) {
1339 val = source[i - 1];
1340 working_space[i - 1] = val;
1341 working_space[
fSize - i] = -val;
1344 for (i = 0; i <
fSize / 2; i++) {
1347 b = working_space[i];
1350 working_space[i - 1] =
a;
1351 working_space[i +
fSize] = 0;
1353 working_space[
fSize / 2 - 1] =
1358 for (i = 0; i <
fSize; i++) {
1359 working_space[i] = source[i];
1364 for (i = 0; i <
fSize; i++) {
1365 working_space[i] = source[i];
1376 for (i = 0; i <
fSize; i++) {
1382 working_space[k + i % j] = val;
1383 working_space[k + 2 * j - 1 - i % j] = val;
1391 working_space[k + i % j] = val;
1392 working_space[k + 2 * j - 1 - i % j] = -val;
1396 working_space[i] = val;
1401 for (i = 0; i < j; i++)
1409 for (i = 0; i <
l; i++)
1412 for (i = 0; i <
fSize; i++) {
1417 b = working_space[k + i % j];
1423 working_space[i] =
a;
1424 working_space[i + 2 *
fSize] = 0;
1431 for (i = 0; i <
l; i++)
1434 for (i = 0; i <
fSize; i++) {
1439 b = working_space[j + k + i % j];
1445 working_space[j + k / 2 - i % j - 1] =
a;
1446 working_space[i + 2 *
fSize] = 0;
1456 working_space[
fSize + i] = working_space[
l + i / j];
1458 working_space[
l + i / j + 2 *
fSize];
1460 for (i = 0; i <
fSize; i++) {
1461 working_space[i] = working_space[
fSize + i];
1466 if (!working_space)
return;
1467 for (i = 0, old_area = 0; i <
fSize; i++) {
1468 old_area += working_space[i];
1470 for (i = 0, new_area = 0; i <
fSize; i++) {
1473 new_area += working_space[i];
1475 if (new_area != 0) {
1476 a = old_area / new_area;
1477 for (i = 0; i <
fSize; i++) {
1478 working_space[i] *=
a;
1482 for (i = 0, old_area = 0; i <
fSize; i++) {
1483 old_area += working_space[i +
fSize];
1485 for (i = 0, new_area = 0; i <
fSize; i++) {
1488 new_area += working_space[i +
fSize];
1490 if (new_area != 0) {
1491 a = old_area / new_area;
1492 for (i = 0; i <
fSize; i++) {
1493 working_space[i +
fSize] *=
a;
1500 for (i = 0, old_area = 0; i <
fSize; i++) {
1501 old_area += working_space[i + 2 *
fSize];
1503 for (i = 0, new_area = 0; i <
fSize; i++) {
1506 new_area += working_space[i + 2 *
fSize];
1508 if (new_area != 0) {
1509 a = old_area / new_area;
1510 for (i = 0; i <
fSize; i++) {
1511 working_space[i + 2 *
fSize] *=
a;
1518 for (i = 0; i <
fSize; i++) {
1519 destVector[i] = working_space[i];
1525 for (i = 0; i <
fSize; i++) {
1526 destVector[i] = working_space[i];
1531 working_space[0] = working_space[0] *
TMath::Sqrt(2.0);
1532 for (i = 0; i <
fSize / 2; i++) {
1537 working_space[i] = (
Double_t) working_space[i] *
a;
1538 }
for (i = 2; i <= (
fSize / 2); i++) {
1539 working_space[
fSize - i + 1] = working_space[i - 1];
1541 -working_space[i - 1 +
fSize];
1543 working_space[
fSize / 2] = 0;
1546 for (i = 0; i <
fSize / 2; i++) {
1547 destVector[i] = working_space[i];
1552 working_space[
fSize / 2] =
1554 for (i =
fSize / 2 - 1; i > 0; i--) {
1556 working_space[i +
fSize] =
1559 }
for (i = 2; i <= (
fSize / 2); i++) {
1560 working_space[
fSize - i + 1] = working_space[i - 1];
1562 -working_space[i - 1 +
fSize];
1564 working_space[0] = 0;
1565 working_space[
fSize] = 0;
1568 for (i = 0; i <
fSize / 2; i++) {
1569 destVector[i] = working_space[i];
1574 for (i = 0; i <
fSize; i++) {
1575 destVector[i] = working_space[i];
1580 for (i = 0; i <
fSize; i++) {
1581 destVector[i] = working_space[i];
1598 working_space[
fSize +
l + i / j] = working_space[i];
1600 working_space[i + 2 *
fSize];
1602 for (i = 0; i <
fSize; i++) {
1603 working_space[i] = working_space[
fSize + i];
1610 for (i = 0; i < j; i++)
1618 for (i = 0; i <
fSize; i++) {
1623 working_space[2 *
fSize + k + i % j] =
1625 working_space[4 *
fSize + 2 *
fSize + k + i % j] = 0;
1631 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
1633 working_space[2 *
fSize + k + i % j] =
1635 } }
for (i = 0; i <
fSize; i++) {
1639 working_space[2 *
fSize + k + j] = 0;
1640 working_space[4 *
fSize + 2 *
fSize + k + j] = 0;
1644 working_space[2 *
fSize + k + 2 * j - i % j] =
1645 working_space[2 *
fSize + k + i % j];
1646 working_space[4 *
fSize + 2 *
fSize + k + 2 * j - i % j] =
1647 -working_space[4 *
fSize + 2 *
fSize + k + i % j];
1650 for (i = 0; i < 2 *
fSize; i++) {
1651 working_space[i] = working_space[2 *
fSize + i];
1652 working_space[4 *
fSize + i] =
1658 for (i = 0; i <
l; i++)
1666 for (i = 0; i <
fSize; i++) {
1671 working_space[2 *
fSize + k + j + i % j] =
1672 working_space[j + k / 2 - i % j - 1] *
TMath::Sqrt(2.0);
1673 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] = 0;
1679 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] =
1680 -(
Double_t) working_space[j + k / 2 - i % j - 1] *
b;
1681 working_space[2 *
fSize + k + j + i % j] =
1682 (
Double_t) working_space[j + k / 2 - i % j - 1] *
a;
1683 } }
for (i = 0; i <
fSize; i++) {
1687 working_space[2 *
fSize + k] = 0;
1688 working_space[4 *
fSize + 2 *
fSize + k] = 0;
1692 working_space[2 *
fSize + k + i % j] =
1693 working_space[2 *
fSize + k + 2 * j - i % j];
1694 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
1695 -working_space[4 *
fSize + 2 *
fSize + k + 2 * j - i % j];
1698 for (i = 0; i < 2 *
fSize; i++) {
1699 working_space[i] = working_space[2 *
fSize + i];
1700 working_space[4 *
fSize + i] =
1704 for (i = 0; i <
l; i++)
1707 for (i = 0; i <
fSize; i++) {
1711 val = working_space[k + i % j];
1715 val = working_space[i];
1716 destVector[i] = val;
1720 delete[]working_space;
1783 int i, j=0, k = 1,
m,
l;
1786 Double_t a,
b, pi = 3.14159265358979323846, old_area, new_area;
1816 for (i = 0; i <
fSize; i++) {
1817 working_space[i] = source[i];
1822 for (i = 0; i <
fSize; i++) {
1823 working_space[i] = source[i];
1830 for (i = 1; i <= (
fSize / 2); i++) {
1831 val = source[i - 1];
1832 working_space[i - 1] = val;
1833 working_space[
fSize - i] = val;
1836 for (i = 0; i <
fSize / 2; i++) {
1839 b = working_space[i];
1841 working_space[i] =
a;
1842 working_space[i +
fSize] = 0;
1843 } working_space[0] = working_space[0] /
TMath::Sqrt(2.0);
1848 for (i = 1; i <= (
fSize / 2); i++) {
1849 val = source[i - 1];
1850 working_space[i - 1] = val;
1851 working_space[
fSize - i] = -val;
1854 for (i = 0; i <
fSize / 2; i++) {
1857 b = working_space[i];
1860 working_space[i - 1] =
a;
1861 working_space[i +
fSize] = 0;
1863 working_space[
fSize / 2 - 1] =
1868 for (i = 0; i <
fSize; i++) {
1869 working_space[i] = source[i];
1874 for (i = 0; i <
fSize; i++) {
1875 working_space[i] = source[i];
1886 for (i = 0; i <
fSize; i++) {
1892 working_space[k + i % j] = val;
1893 working_space[k + 2 * j - 1 - i % j] = val;
1901 working_space[k + i % j] = val;
1902 working_space[k + 2 * j - 1 - i % j] = -val;
1906 working_space[i] = val;
1911 for (i = 0; i < j; i++)
1919 for (i = 0; i <
l; i++)
1922 for (i = 0; i <
fSize; i++) {
1927 b = working_space[k + i % j];
1933 working_space[i] =
a;
1934 working_space[i + 2 *
fSize] = 0;
1941 for (i = 0; i <
l; i++)
1944 for (i = 0; i <
fSize; i++) {
1949 b = working_space[j + k + i % j];
1955 working_space[j + k / 2 - i % j - 1] =
a;
1956 working_space[i + 2 *
fSize] = 0;
1966 working_space[
fSize + i] = working_space[
l + i / j];
1968 working_space[
l + i / j + 2 *
fSize];
1970 for (i = 0; i <
fSize; i++) {
1971 working_space[i] = working_space[
fSize + i];
1976 if (!working_space)
return;
1977 for (i = 0, old_area = 0; i <
fSize; i++) {
1978 old_area += working_space[i];
1980 for (i = 0, new_area = 0; i <
fSize; i++) {
1983 new_area += working_space[i];
1985 if (new_area != 0) {
1986 a = old_area / new_area;
1987 for (i = 0; i <
fSize; i++) {
1988 working_space[i] *=
a;
1992 for (i = 0, old_area = 0; i <
fSize; i++) {
1993 old_area += working_space[i +
fSize];
1995 for (i = 0, new_area = 0; i <
fSize; i++) {
1998 new_area += working_space[i +
fSize];
2000 if (new_area != 0) {
2001 a = old_area / new_area;
2002 for (i = 0; i <
fSize; i++) {
2003 working_space[i +
fSize] *=
a;
2010 for (i = 0, old_area = 0; i <
fSize; i++) {
2011 old_area += working_space[i + 2 *
fSize];
2013 for (i = 0, new_area = 0; i <
fSize; i++) {
2016 new_area += working_space[i + 2 *
fSize];
2018 if (new_area != 0) {
2019 a = old_area / new_area;
2020 for (i = 0; i <
fSize; i++) {
2021 working_space[i + 2 *
fSize] *=
a;
2028 for (i = 0; i <
fSize; i++) {
2029 destVector[i] = working_space[i];
2035 for (i = 0; i <
fSize; i++) {
2036 destVector[i] = working_space[i];
2041 working_space[0] = working_space[0] *
TMath::Sqrt(2.0);
2042 for (i = 0; i <
fSize / 2; i++) {
2047 working_space[i] = (
Double_t) working_space[i] *
a;
2048 }
for (i = 2; i <= (
fSize / 2); i++) {
2049 working_space[
fSize - i + 1] = working_space[i - 1];
2051 -working_space[i - 1 +
fSize];
2053 working_space[
fSize / 2] = 0;
2056 for (i = 0; i <
fSize / 2; i++) {
2057 destVector[i] = working_space[i];
2062 working_space[
fSize / 2] =
2064 for (i =
fSize / 2 - 1; i > 0; i--) {
2066 working_space[i +
fSize] =
2069 }
for (i = 2; i <= (
fSize / 2); i++) {
2070 working_space[
fSize - i + 1] = working_space[i - 1];
2072 -working_space[i - 1 +
fSize];
2074 working_space[0] = 0;
2075 working_space[
fSize] = 0;
2078 for (i = 0; i <
fSize / 2; i++) {
2079 destVector[i] = working_space[i];
2084 for (i = 0; i <
fSize; i++) {
2085 destVector[i] = working_space[i];
2090 for (i = 0; i <
fSize; i++) {
2091 destVector[i] = working_space[i];
2108 working_space[
fSize +
l + i / j] = working_space[i];
2110 working_space[i + 2 *
fSize];
2112 for (i = 0; i <
fSize; i++) {
2113 working_space[i] = working_space[
fSize + i];
2120 for (i = 0; i < j; i++)
2128 for (i = 0; i <
fSize; i++) {
2133 working_space[2 *
fSize + k + i % j] =
2135 working_space[4 *
fSize + 2 *
fSize + k + i % j] = 0;
2141 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
2143 working_space[2 *
fSize + k + i % j] =
2145 } }
for (i = 0; i <
fSize; i++) {
2149 working_space[2 *
fSize + k + j] = 0;
2150 working_space[4 *
fSize + 2 *
fSize + k + j] = 0;
2154 working_space[2 *
fSize + k + 2 * j - i % j] =
2155 working_space[2 *
fSize + k + i % j];
2156 working_space[4 *
fSize + 2 *
fSize + k + 2 * j - i % j] =
2157 -working_space[4 *
fSize + 2 *
fSize + k + i % j];
2160 for (i = 0; i < 2 *
fSize; i++) {
2161 working_space[i] = working_space[2 *
fSize + i];
2162 working_space[4 *
fSize + i] =
2168 for (i = 0; i <
l; i++)
2176 for (i = 0; i <
fSize; i++) {
2181 working_space[2 *
fSize + k + j + i % j] =
2182 working_space[j + k / 2 - i % j - 1] *
TMath::Sqrt(2.0);
2183 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] = 0;
2189 working_space[4 *
fSize + 2 *
fSize + k + j + i % j] =
2190 -(
Double_t) working_space[j + k / 2 - i % j - 1] *
b;
2191 working_space[2 *
fSize + k + j + i % j] =
2192 (
Double_t) working_space[j + k / 2 - i % j - 1] *
a;
2193 } }
for (i = 0; i <
fSize; i++) {
2197 working_space[2 *
fSize + k] = 0;
2198 working_space[4 *
fSize + 2 *
fSize + k] = 0;
2202 working_space[2 *
fSize + k + i % j] =
2203 working_space[2 *
fSize + k + 2 * j - i % j];
2204 working_space[4 *
fSize + 2 *
fSize + k + i % j] =
2205 -working_space[4 *
fSize + 2 *
fSize + k + 2 * j - i % j];
2208 for (i = 0; i < 2 *
fSize; i++) {
2209 working_space[i] = working_space[2 *
fSize + i];
2210 working_space[4 *
fSize + i] =
2214 for (i = 0; i <
l; i++)
2217 for (i = 0; i <
fSize; i++) {
2221 val = working_space[k + i % j];
2225 val = working_space[i];
2226 destVector[i] = val;
2230 delete[]working_space;
2249 Error (
"TSpectrumTransform",
"Invalid type of transform");
2253 if (degree > j || degree < 1){
2254 Error (
"TSpectrumTransform",
"Invalid degree of mixed transform");
2268 if(
xmin<0 || xmax < xmin || xmax >=
fSize){
2269 Error(
"TSpectrumTransform",
"Wrong range");
2283 Error(
"TSpectrumTransform",
"Wrong direction");
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
The TNamed class is the base class for all named ROOT classes.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Double_t Sqrt(Double_t x)
LongDouble_t Power(LongDouble_t x, LongDouble_t y)