#include "TSpectrumTransform.h"
#include "TMath.h"
ClassImp(TSpectrumTransform)
TSpectrumTransform::TSpectrumTransform()
{
fSize=0;
fTransformType=kTransformCos;
fDegree=0;
fDirection=kTransformForward;
fXmin=0;
fXmax=0;
fFilterCoeff=0;
fEnhanceCoeff=0.5;
}
TSpectrumTransform::TSpectrumTransform(Int_t size):TNamed("SpectrumTransform", "Miroslav Morhac transformer")
{
Int_t j,n;
if (size <= 0){
Error ("TSpectrumTransform","Invalid length, must be > than 0");
return;
}
j = 0;
n = 1;
for (; n < size;) {
j += 1;
n = n * 2;
}
if (n != size){
Error ("TSpectrumTransform","Invalid length, must be power of 2");
return;
}
fSize=size;
fTransformType=kTransformCos;
fDegree=0;
fDirection=kTransformForward;
fXmin=size/4;
fXmax=size-1;
fFilterCoeff=0;
fEnhanceCoeff=0.5;
}
TSpectrumTransform::~TSpectrumTransform()
{
}
void TSpectrumTransform::Haar(Double_t *working_space, int num, int direction)
{
int i, ii, li, l2, l3, j, jj, jj1, lj, iter, m, jmin, jmax;
Double_t a, b, c, wlk;
Double_t val;
for (i = 0; i < num; i++)
working_space[i + num] = 0;
i = num;
iter = 0;
for (; i > 1;) {
iter += 1;
i = i / 2;
}
if (direction == kTransformForward) {
for (m = 1; m <= iter; m++) {
li = iter + 1 - m;
l2 = (Int_t) TMath::Power(2, li - 1);
for (i = 0; i < (2 * l2); i++) {
working_space[num + i] = working_space[i];
}
for (j = 0; j < l2; j++) {
l3 = l2 + j;
jj = 2 * j;
val = working_space[jj + num] + working_space[jj + 1 + num];
working_space[j] = val;
val = working_space[jj + num] - working_space[jj + 1 + num];
working_space[l3] = val;
}
}
}
val = working_space[0];
val = val / TMath::Sqrt(TMath::Power(2, iter));
working_space[0] = val;
val = working_space[1];
val = val / TMath::Sqrt(TMath::Power(2, iter));
working_space[1] = val;
for (ii = 2; ii <= iter; ii++) {
i = ii - 1;
wlk = 1 / TMath::Sqrt(TMath::Power(2, iter - i));
jmin = (Int_t) TMath::Power(2, i);
jmax = (Int_t) TMath::Power(2, ii) - 1;
for (j = jmin; j <= jmax; j++) {
val = working_space[j];
a = val;
a = a * wlk;
val = a;
working_space[j] = val;
}
}
if (direction == kTransformInverse) {
for (m = 1; m <= iter; m++) {
a = 2;
b = m - 1;
c = TMath::Power(a, b);
li = (Int_t) c;
for (i = 0; i < (2 * li); i++) {
working_space[i + num] = working_space[i];
}
for (j = 0; j < li; j++) {
lj = li + j;
jj = 2 * (j + 1) - 1;
jj1 = jj - 1;
val = working_space[j + num] - working_space[lj + num];
working_space[jj] = val;
val = working_space[j + num] + working_space[lj + num];
working_space[jj1] = val;
}
}
}
return;
}
void TSpectrumTransform::Walsh(Double_t *working_space, int num)
{
int i, m, nump = 1, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter;
Double_t a;
Double_t val1, val2;
for (i = 0; i < num; i++)
working_space[i + num] = 0;
i = num;
iter = 0;
for (; i > 1;) {
iter += 1;
i = i / 2;
}
for (m = 1; m <= iter; m++) {
if (m == 1)
nump = 1;
else
nump = nump * 2;
mnum = num / nump;
mnum2 = mnum / 2;
for (mp = 0; mp < nump; mp++) {
ib = mp * mnum;
for (mp2 = 0; mp2 < mnum2; mp2++) {
mnum21 = mnum2 + mp2 + ib;
iba = ib + mp2;
val1 = working_space[iba];
val2 = working_space[mnum21];
working_space[iba + num] = val1 + val2;
working_space[mnum21 + num] = val1 - val2;
}
}
for (i = 0; i < num; i++) {
working_space[i] = working_space[i + num];
}
}
a = num;
a = TMath::Sqrt(a);
val2 = a;
for (i = 0; i < num; i++) {
val1 = working_space[i];
val1 = val1 / val2;
working_space[i] = val1;
}
return;
}
void TSpectrumTransform::BitReverse(Double_t *working_space, int num)
{
int ipower[26];
int i, ib, il, ibd, ip, ifac, i1;
for (i = 0; i < num; i++) {
working_space[i + num] = working_space[i];
}
for (i = 1; i <= num; i++) {
ib = i - 1;
il = 1;
lab9:ibd = ib / 2;
ipower[il - 1] = 1;
if (ib == (ibd * 2))
ipower[il - 1] = 0;
if (ibd == 0)
goto lab10;
ib = ibd;
il = il + 1;
goto lab9;
lab10:ip = 1;
ifac = num;
for (i1 = 1; i1 <= il; i1++) {
ifac = ifac / 2;
ip = ip + ifac * ipower[i1 - 1];
}
working_space[ip - 1] = working_space[i - 1 + num];
}
return;
}
void TSpectrumTransform::Fourier(Double_t *working_space, int num, int hartley,
int direction, int zt_clear)
{
int nxp2, nxp, i, j, k, m, iter, mxp, j1, j2, n1, n2, it;
Double_t a, b, c, d, sign, wpwr, arg, wr, wi, tr, ti, pi =
3.14159265358979323846;
Double_t val1, val2, val3, val4;
if (direction == kTransformForward && zt_clear == 0) {
for (i = 0; i < num; i++)
working_space[i + num] = 0;
}
i = num;
iter = 0;
for (; i > 1;) {
iter += 1;
i = i / 2;
}
sign = -1;
if (direction == kTransformInverse)
sign = 1;
nxp2 = num;
for (it = 1; it <= iter; it++) {
nxp = nxp2;
nxp2 = nxp / 2;
a = nxp2;
wpwr = pi / a;
for (m = 1; m <= nxp2; m++) {
a = m - 1;
arg = a * wpwr;
wr = TMath::Cos(arg);
wi = sign * TMath::Sin(arg);
for (mxp = nxp; mxp <= num; mxp += nxp) {
j1 = mxp - nxp + m;
j2 = j1 + nxp2;
val1 = working_space[j1 - 1];
val2 = working_space[j2 - 1];
val3 = working_space[j1 - 1 + num];
val4 = working_space[j2 - 1 + num];
a = val1;
b = val2;
c = val3;
d = val4;
tr = a - b;
ti = c - d;
a = a + b;
val1 = a;
working_space[j1 - 1] = val1;
c = c + d;
val1 = c;
working_space[j1 - 1 + num] = val1;
a = tr * wr - ti * wi;
val1 = a;
working_space[j2 - 1] = val1;
a = ti * wr + tr * wi;
val1 = a;
working_space[j2 - 1 + num] = val1;
}
}
}
n2 = num / 2;
n1 = num - 1;
j = 1;
for (i = 1; i <= n1; i++) {
if (i >= j)
goto lab55;
val1 = working_space[j - 1];
val2 = working_space[j - 1 + num];
val3 = working_space[i - 1];
working_space[j - 1] = val3;
working_space[j - 1 + num] = working_space[i - 1 + num];
working_space[i - 1] = val1;
working_space[i - 1 + num] = val2;
lab55: k = n2;
lab60: if (k >= j) goto lab65;
j = j - k;
k = k / 2;
goto lab60;
lab65: j = j + k;
}
a = num;
a = TMath::Sqrt(a);
for (i = 0; i < num; i++) {
if (hartley == 0) {
val1 = working_space[i];
b = val1;
b = b / a;
val1 = b;
working_space[i] = val1;
b = working_space[i + num];
b = b / a;
working_space[i + num] = b;
}
else {
b = working_space[i];
c = working_space[i + num];
b = (b + c) / a;
working_space[i] = b;
working_space[i + num] = 0;
}
}
if (hartley == 1 && direction == kTransformInverse) {
for (i = 1; i < num; i++)
working_space[num - i + num] = working_space[i];
working_space[0 + num] = working_space[0];
for (i = 0; i < num; i++) {
working_space[i] = working_space[i + num];
working_space[i + num] = 0;
}
}
return;
}
void TSpectrumTransform::BitReverseHaar(Double_t *working_space, int shift, int num,
int start)
{
int ipower[26];
int i, ib, il, ibd, ip, ifac, i1;
for (i = 0; i < num; i++) {
working_space[i + shift + start] = working_space[i + start];
working_space[i + shift + start + 2 * shift] =
working_space[i + start + 2 * shift];
}
for (i = 1; i <= num; i++) {
ib = i - 1;
il = 1;
lab9: ibd = ib / 2;
ipower[il - 1] = 1;
if (ib == (ibd * 2))
ipower[il - 1] = 0;
if (ibd == 0)
goto lab10;
ib = ibd;
il = il + 1;
goto lab9;
lab10: ip = 1;
ifac = num;
for (i1 = 1; i1 <= il; i1++) {
ifac = ifac / 2;
ip = ip + ifac * ipower[i1 - 1];
}
working_space[ip - 1 + start] =
working_space[i - 1 + shift + start];
working_space[ip - 1 + start + 2 * shift] =
working_space[i - 1 + shift + start + 2 * shift];
}
return;
}
int TSpectrumTransform::GeneralExe(Double_t *working_space, int zt_clear, int num,
int degree, int type)
{
int i, j, k, m, nump, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter,
mp2step, mppom, ring;
Double_t a, b, c, d, wpwr, arg, wr, wi, tr, ti, pi =
3.14159265358979323846;
Double_t val1, val2, val3, val4, a0oldr = 0, b0oldr = 0, a0r, b0r;
if (zt_clear == 0) {
for (i = 0; i < num; i++)
working_space[i + 2 * num] = 0;
}
i = num;
iter = 0;
for (; i > 1;) {
iter += 1;
i = i / 2;
}
a = num;
wpwr = 2.0 * pi / a;
nump = num;
mp2step = 1;
ring = num;
for (i = 0; i < iter - degree; i++)
ring = ring / 2;
for (m = 1; m <= iter; m++) {
nump = nump / 2;
mnum = num / nump;
mnum2 = mnum / 2;
if (m > degree
&& (type == kTransformFourierHaar
|| type == kTransformWalshHaar
|| type == kTransformCosHaar
|| type == kTransformSinHaar))
mp2step *= 2;
if (ring > 1)
ring = ring / 2;
for (mp = 0; mp < nump; mp++) {
if (type != kTransformWalshHaar) {
mppom = mp;
mppom = mppom % ring;
a = 0;
j = 1;
k = num / 4;
for (i = 0; i < (iter - 1); i++) {
if ((mppom & j) != 0)
a = a + k;
j = j * 2;
k = k / 2;
}
arg = a * wpwr;
wr = TMath::Cos(arg);
wi = TMath::Sin(arg);
}
else {
wr = 1;
wi = 0;
}
ib = mp * mnum;
for (mp2 = 0; mp2 < mnum2; mp2++) {
mnum21 = mnum2 + mp2 + ib;
iba = ib + mp2;
if (mp2 % mp2step == 0) {
a0r = a0oldr;
b0r = b0oldr;
a0r = 1 / TMath::Sqrt(2.0);
b0r = 1 / TMath::Sqrt(2.0);
}
else {
a0r = 1;
b0r = 0;
}
val1 = working_space[iba];
val2 = working_space[mnum21];
val3 = working_space[iba + 2 * num];
val4 = working_space[mnum21 + 2 * num];
a = val1;
b = val2;
c = val3;
d = val4;
tr = a * a0r + b * b0r;
val1 = tr;
working_space[num + iba] = val1;
ti = c * a0r + d * b0r;
val1 = ti;
working_space[num + iba + 2 * num] = val1;
tr =
a * b0r * wr - c * b0r * wi - b * a0r * wr + d * a0r * wi;
val1 = tr;
working_space[num + mnum21] = val1;
ti =
c * b0r * wr + a * b0r * wi - d * a0r * wr - b * a0r * wi;
val1 = ti;
working_space[num + mnum21 + 2 * num] = val1;
}
}
for (i = 0; i < num; i++) {
val1 = working_space[num + i];
working_space[i] = val1;
val1 = working_space[num + i + 2 * num];
working_space[i + 2 * num] = val1;
}
}
return (0);
}
int TSpectrumTransform::GeneralInv(Double_t *working_space, int num, int degree,
int type)
{
int i, j, k, m, nump =
1, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter, mp2step, mppom,
ring;
Double_t a, b, c, d, wpwr, arg, wr, wi, tr, ti, pi =
3.14159265358979323846;
Double_t val1, val2, val3, val4, a0oldr = 0, b0oldr = 0, a0r, b0r;
i = num;
iter = 0;
for (; i > 1;) {
iter += 1;
i = i / 2;
}
a = num;
wpwr = 2.0 * pi / a;
mp2step = 1;
if (type == kTransformFourierHaar || type == kTransformWalshHaar
|| type == kTransformCosHaar || type == kTransformSinHaar) {
for (i = 0; i < iter - degree; i++)
mp2step *= 2;
}
ring = 1;
for (m = 1; m <= iter; m++) {
if (m == 1)
nump = 1;
else
nump = nump * 2;
mnum = num / nump;
mnum2 = mnum / 2;
if (m > iter - degree + 1)
ring *= 2;
for (mp = nump - 1; mp >= 0; mp--) {
if (type != kTransformWalshHaar) {
mppom = mp;
mppom = mppom % ring;
a = 0;
j = 1;
k = num / 4;
for (i = 0; i < (iter - 1); i++) {
if ((mppom & j) != 0)
a = a + k;
j = j * 2;
k = k / 2;
}
arg = a * wpwr;
wr = TMath::Cos(arg);
wi = TMath::Sin(arg);
}
else {
wr = 1;
wi = 0;
}
ib = mp * mnum;
for (mp2 = 0; mp2 < mnum2; mp2++) {
mnum21 = mnum2 + mp2 + ib;
iba = ib + mp2;
if (mp2 % mp2step == 0) {
a0r = a0oldr;
b0r = b0oldr;
a0r = 1 / TMath::Sqrt(2.0);
b0r = 1 / TMath::Sqrt(2.0);
}
else {
a0r = 1;
b0r = 0;
}
val1 = working_space[iba];
val2 = working_space[mnum21];
val3 = working_space[iba + 2 * num];
val4 = working_space[mnum21 + 2 * num];
a = val1;
b = val2;
c = val3;
d = val4;
tr = a * a0r + b * wr * b0r + d * wi * b0r;
val1 = tr;
working_space[num + iba] = val1;
ti = c * a0r + d * wr * b0r - b * wi * b0r;
val1 = ti;
working_space[num + iba + 2 * num] = val1;
tr = a * b0r - b * wr * a0r - d * wi * a0r;
val1 = tr;
working_space[num + mnum21] = val1;
ti = c * b0r - d * wr * a0r + b * wi * a0r;
val1 = ti;
working_space[num + mnum21 + 2 * num] = val1;
}
}
if (m <= iter - degree
&& (type == kTransformFourierHaar
|| type == kTransformWalshHaar
|| type == kTransformCosHaar
|| type == kTransformSinHaar))
mp2step /= 2;
for (i = 0; i < num; i++) {
val1 = working_space[num + i];
working_space[i] = val1;
val1 = working_space[num + i + 2 * num];
working_space[i + 2 * num] = val1;
}
}
return (0);
}
void TSpectrumTransform::Transform(const Double_t *source, Double_t *destVector)
{
/* -->
<div class=Section1>
<p class=MsoNormal><b><span style='font-size:14.0pt'>Transform methods</span></b></p>
<p class=MsoNormal style='text-align:justify'><i> </i></p>
<p class=MsoNormal style='text-align:justify'><i>Goal: to analyze experimental
data using orthogonal transforms</i></p>
<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>
</span>orthogonal transforms can be successfully used for the processing of
nuclear spectra (not only) </p>
<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>
</span>they can be used to remove high frequency noise, to increase
signal-to-background ratio as well as to enhance low intensity components [1],
to carry out e.g. Fourier analysis etc. </p>
<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>
</span>we have implemented the function for the calculation of the commonly
used orthogonal transforms as well as functions for the filtration and
enhancement of experimental data</p>
<p class=MsoNormal><i> </i></p>
<p class=MsoNormal><i>Function:</i></p>
<p class=MsoNormal><b>void TSpectrumTransform::Transform(const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
*fDest)</b></p>
<p class=MsoNormal style='text-align:justify'> </p>
<p class=MsoNormal style='text-align:justify'>This function transforms the
source spectrum according to the given input parameters. Transformed data are
written into dest spectrum. Before the Transform function is called the class
must be created by constructor and the type of the transform as well as some
other parameters must be set using a set of setter functions.</p>
<p class=MsoNormal style='text-align:justify'> </p>
<p class=MsoNormal><i><span style='color:red'>Member variables of
TSpectrumTransform class:</span></i></p>
<p class=MsoNormal style='margin-left:25.65pt;text-align:justify'> <b>fSource</b>-pointer
to the vector of source spectrum. Its length should be equal to the “fSize”
parameter except for inverse FOURIER, FOUR-WALSH, FOUR-HAAR transforms. These
need “2*fSize” length to supply real and imaginary coefficients. </p>
<p class=MsoNormal style='margin-left:25.65pt;text-align:justify'><b>fDest</b>-pointer
to the vector of destination spectrum. Its length should be equal to the
“fSize” parameter except for inverse FOURIER, FOUR-WALSH, FOUR-HAAR transforms.
These need “2*fSize” length to store real and imaginary coefficients. </p>
<p class=MsoNormal style='text-align:justify'> <b>fSize</b>-basic length
of the source and dest spectrum. <span style='color:fuchsia'>It should be power
of 2.</span></p>
<p class=MsoNormal style='margin-left:25.65pt;text-align:justify;text-indent:
-2.85pt'><b>fType</b>-type of transform</p>
<p class=MsoNormal style='text-align:justify'> Classic transforms:</p>
<p class=MsoNormal style='text-align:justify'> kTransformHaar
</p>
<p class=MsoNormal style='text-align:justify'> kTransformWalsh
</p>
<p class=MsoNormal style='text-align:justify'> kTransformCos
</p>
<p class=MsoNormal style='text-align:justify'> kTransformSin
</p>
<p class=MsoNormal style='text-align:justify'> kTransformFourier
</p>
<p class=MsoNormal style='text-align:justify'> kTransformHartey
</p>
<p class=MsoNormal style='text-align:justify'> Mixed transforms:</p>
<p class=MsoNormal style='text-align:justify'> kTransformFourierWalsh
</p>
<p class=MsoNormal style='text-align:justify'> kTransformFourierHaar
</p>
<p class=MsoNormal style='text-align:justify'> kTransformWalshHaar
</p>
<p class=MsoNormal style='text-align:justify'> kTransformCosWalsh
</p>
<p class=MsoNormal style='text-align:justify'> kTransformCosHaar
</p>
<p class=MsoNormal style='text-align:justify'> kTransformSinWalsh
</p>
<p class=MsoNormal style='text-align:justify'> kTransformSinHaar
</p>
<p class=MsoNormal style='text-align:justify;text-indent:22.8pt'><b>fDirection</b>-direction-transform
direction (forward, inverse)</p>
<p class=MsoNormal style='text-align:justify'> kTransformForward
</p>
<p class=MsoNormal style='text-align:justify'> kTransformInverse
</p>
<p class=MsoNormal style='text-align:justify;text-indent:22.8pt'><b>fDegree</b>-applies
only for mixed transforms [2], [3], [4]. </p>
<p class=MsoNormal style='text-align:justify;text-indent:22.8pt'>
<span style='color:fuchsia'> Allowed range <sub><img border=0 width=100
height=27 src="gif/spectrumtransform_transform_image001.gif"></sub>. </span></p>
<p class=MsoNormal style='text-align:justify'><b><i>References:</i></b></p>
<p class=MsoNormal style='text-align:justify'>[1] C.V. Hampton, B. Lian, Wm. C.
McHarris: Fast-Fourier-transform spectral enhancement techniques for gamma-ray
spectroscopy. NIM A353 (1994) 280-284. </p>
<p class=MsoNormal style='text-align:justify'>[2] Morháč M., Matoušek V.,
New adaptive Cosine-Walsh transform and its application to nuclear data
compression, IEEE Transactions on Signal Processing 48 (2000) 2693. </p>
<p class=MsoNormal style='text-align:justify'>[3] Morháč M., Matoušek V.,
Data compression using new fast adaptive Cosine-Haar transforms, Digital Signal
Processing 8 (1998) 63. </p>
<p class=MsoNormal style='text-align:justify'>[4] Morháč M., Matoušek V.:
Multidimensional nuclear data compression using fast adaptive Walsh-Haar
transform. Acta Physica Slovaca 51 (2001) 307. </p>
<p class=MsoNormal style='text-align:justify'> </p>
<p class=MsoNormal style='text-align:justify'><i>Example – script Transform.c:</i></p>
<p class=MsoNormal style='text-align:justify'><span style='font-size:18.0pt'><img
width=600 height=324 src="gif/spectrumtransform_transform_image002.jpg"></span></p>
<p class=MsoNormal><b>Fig. 1 Original gamma-ray spectrum</b></p>
<p class=MsoNormal><b><span style='font-size:14.0pt'><img border=0 width=601
height=402 src="gif/spectrumtransform_transform_image003.jpg"></span></b></p>
<p class=MsoNormal style='text-align:justify'><span style='font-size:18.0pt'> </span></p>
<p class=MsoNormal><b>Fig. 2 Transformed spectrum from Fig. 1 using Cosine
transform</b></p>
<p class=MsoNormal><b><span style='font-size:16.0pt;color:#339966'> </span></b></p>
<p class=MsoNormal><b><span style='color:#339966'>Script:</span></b></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// Example to illustrate
Transform function (class TSpectrumTransform).</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// To execute this example,
do</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// root > .x Transform.C</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>#include <TSpectrum></span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>#include
<TSpectrumTransform></span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>void Transform() {</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Int_t i;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t nbins =
4096;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmin =
0;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmax =
(Double_t)nbins;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>Double_t * source = new Double_t[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> Double_t * dest = new
Double_t[nbins]; </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TH1F *h = new TH1F("h","Transformed
spectrum using Cosine transform",nbins,xmin,xmax);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TFile *f = new
TFile("spectra\\TSpectrum.root");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> h=(TH1F*)
f->Get("transform1;1"); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> for (i = 0; i < nbins;
i++) source[i]=h->GetBinContent(i + 1); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TCanvas *Transform1 =
gROOT->GetListOfCanvases()->FindObject("Transform1");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> if (!Transform1)
Transform1 = new
TCanvas("Transform","Transform1",10,10,1000,700);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrum *s = new
TSpectrum();</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrumTransform *t =
new TSpectrumTransform(4096);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span><span lang=FR
style='font-size:10.0pt'>t->SetTransformType(t->kTransformCos,0);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>
t->SetDirection(t->kTransformForward);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>t->Transform(source,dest);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> for (i = 0; i < nbins;
i++) h->SetBinContent(i + 1,dest[i]); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
h->SetLineColor(kRed); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> h->Draw("L");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>
</div>
<!-- */
// --> End_Html
int i, j=0, k = 1, m, l;
Double_t val;
Double_t a, b, pi = 3.14159265358979323846;
Double_t *working_space = 0;
if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
if (fTransformType >= kTransformCosWalsh)
fDegree += 1;
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
}
switch (fTransformType) {
case kTransformHaar:
case kTransformWalsh:
working_space = new Double_t[2 * fSize];
break;
case kTransformCos:
case kTransformSin:
case kTransformFourier:
case kTransformHartley:
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
working_space = new Double_t[4 * fSize];
break;
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
working_space = new Double_t[8 * fSize];
break;
}
if (fDirection == kTransformForward) {
switch (fTransformType) {
case kTransformHaar:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Haar(working_space, fSize, fDirection);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformWalsh:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Walsh(working_space, fSize);
BitReverse(working_space, fSize);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformCos:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Cos(a);
b = working_space[i];
a = b / a;
working_space[i] = a;
working_space[i + fSize] = 0;
} working_space[0] = working_space[0] / TMath::Sqrt(2.0);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformSin:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = -val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Sin(a);
b = working_space[i];
if (a != 0)
a = b / a;
working_space[i - 1] = a;
working_space[i + fSize] = 0;
}
working_space[fSize / 2 - 1] =
working_space[fSize / 2] / TMath::Sqrt(2.0);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourier:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < 2 * fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformHartley:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 1, kTransformForward, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
for (i = 0; i < fSize; i++) {
val = source[i];
if (fTransformType == kTransformCosWalsh
|| fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = val;
}
else if (fTransformType == kTransformSinWalsh
|| fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = -val;
}
else
working_space[i] = val;
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
GeneralExe(working_space, 0, fSize, fDegree, fTransformType);
}
else if (fTransformType == kTransformCosWalsh
|| fTransformType == kTransformCosHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[i] = a;
working_space[i + 2 * fSize] = 0;
}
}
else if (fTransformType == kTransformSinWalsh
|| fTransformType == kTransformSinHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[j + k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[j + k / 2 - i % j - 1] = a;
working_space[i + 2 * fSize] = 0;
}
}
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + i] = working_space[l + i / j];
working_space[fSize + i + 2 * fSize] =
working_space[l + i / j + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] =
working_space[fSize + i + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar) {
for (i = 0; i < fSize; i++) {
destVector[fSize + i] = working_space[i + 2 * fSize];
}
}
break;
}
}
else if (fDirection == kTransformInverse) {
switch (fTransformType) {
case kTransformHaar:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Haar(working_space, fSize, fDirection);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformWalsh:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
BitReverse(working_space, fSize);
Walsh(working_space, fSize);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformCos:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
fSize = 2 * fSize;
working_space[0] = working_space[0] * TMath::Sqrt(2.0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[i + fSize] = (Double_t) working_space[i] * b;
working_space[i] = (Double_t) working_space[i] * a;
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[fSize / 2] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 1);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformSin:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
fSize = 2 * fSize;
working_space[fSize / 2] =
working_space[fSize / 2 - 1] * TMath::Sqrt(2.0);
for (i = fSize / 2 - 1; i > 0; i--) {
a = pi * (Double_t) i / (Double_t) fSize;
working_space[i + fSize] =
-(Double_t) working_space[i - 1] * TMath::Cos(a);
working_space[i] =
(Double_t) working_space[i - 1] * TMath::Sin(a);
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[0] = 0;
working_space[fSize] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourier:
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformHartley:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 1, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar) {
for (i = 0; i < fSize; i++) {
working_space[i + 2 * fSize] = source[fSize + i];
}
}
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + l + i / j] = working_space[i];
working_space[fSize + l + i / j + 2 * fSize] =
working_space[i + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] =
working_space[fSize + i + 2 * fSize];
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
GeneralInv(working_space, fSize, fDegree, fTransformType);
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
}
else if (fTransformType == kTransformCosWalsh
|| fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + i % j] =
working_space[i] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + i % j] =
-(Double_t) working_space[i] * b;
working_space[2 * fSize + k + i % j] =
(Double_t) working_space[i] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k + j] = 0;
working_space[4 * fSize + 2 * fSize + k + j] = 0;
}
else {
working_space[2 * fSize + k + 2 * j - i % j] =
working_space[2 * fSize + k + i % j];
working_space[4 * fSize + 2 * fSize + k + 2 * j - i % j] =
-working_space[4 * fSize + 2 * fSize + k + i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
else if (fTransformType == kTransformSinWalsh
|| fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + j + i % j] =
working_space[j + k / 2 - i % j -
1] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + j + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + j + i % j] =
-(Double_t) working_space[j + k / 2 - i % j - 1] * b;
working_space[2 * fSize + k + j + i % j] =
(Double_t) working_space[j + k / 2 - i % j - 1] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k] = 0;
working_space[4 * fSize + 2 * fSize + k] = 0;
}
else {
working_space[2 * fSize + k + i % j] =
working_space[2 * fSize + k + 2 * j - i % j];
working_space[4 * fSize + 2 * fSize + k + i % j] =
-working_space[4 * fSize + 2 * fSize + k + 2 * j -
i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
for (i = 0; i < fSize; i++) {
if (fTransformType >= kTransformCosWalsh) {
k = i / j;
k = 2 * k * j;
val = working_space[k + i % j];
}
else
val = working_space[i];
destVector[i] = val;
}
break;
}
}
delete[]working_space;
return;
}
void TSpectrumTransform::FilterZonal(const Double_t *source, Double_t *destVector)
{
/* -->
<div class=Section2>
<p class=MsoNormal><b><span style='font-size:14.0pt'>Example of zonal filtering</span></b></p>
<p class=MsoNormal><i> </i></p>
<p class=MsoNormal><i>Function:</i></p>
<p class=MsoNormal><b>void TSpectrumTransform::FilterZonal(const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#Double_t">Double_t</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#Double_t">Double_t</a> *fDest)</b></p>
<p class=MsoNormal style='text-align:justify'> </p>
<p class=MsoNormal style='text-align:justify'>This function transforms the
source spectrum (for details see Transform function). Before the FilterZonal
function is called the class must be created by constructor and the type of the
transform as well as some other parameters must be set using a set of setter
functions. The FilterZonal function sets transformed coefficients in the given
region (fXmin, fXmax) to the given fFilterCoeff and transforms it back.
Filtered data are written into dest spectrum. </p>
<p class=MsoNormal style='text-align:justify'><i><span style='font-size:16.0pt'> </span></i></p>
<p class=MsoNormal style='text-align:justify'><i>Example – script Filter.c:</i></p>
<p class=MsoNormal style='text-align:justify'><i><span style='font-size:16.0pt'><img
border=0 width=601 height=402 src="gif/spectrumtransform_filter_image001.jpg"></span></i></p>
<p class=MsoNormal style='text-align:justify'><b>Fig. 1 Original spectrum
(black line) and filtered spectrum (red line) using Cosine transform and zonal
filtration (channels 2048-4095 were set to 0) </b></p>
<p class=MsoNormal><b><span style='color:#339966'> </span></b></p>
<p class=MsoNormal><b><span style='color:#339966'>Script:</span></b></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// Example to illustrate
FilterZonal function (class TSpectrumTransform).</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// To execute this example,
do</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// root > .x Filter.C</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>#include <TSpectrum></span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>#include
<TSpectrumTransform></span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>void Filter() {</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Int_t i;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t nbins =
4096;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmin =
0;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmax =
(Double_t)nbins;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>Double_t * source = new Double_t[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> Double_t * dest = new
Double_t[nbins]; </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TH1F *h = new
TH1F("h","Zonal filtering using Cosine
transform",nbins,xmin,xmax);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TH1F *d = new
TH1F("d","",nbins,xmin,xmax); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TFile *f = new
TFile("spectra\\TSpectrum.root");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> h=(TH1F*)
f->Get("transform1;1"); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> for (i = 0; i < nbins;
i++) source[i]=h->GetBinContent(i + 1); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TCanvas *Transform1 =
gROOT->GetListOfCanvases()->FindObject("Transform1");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> if (!Transform1)
Transform1 = new
TCanvas("Transform","Transform1",10,10,1000,700);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
h->SetAxisRange(700,1024); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
h->Draw("L"); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrum *s = new
TSpectrum();</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrumTransform *t =
new TSpectrumTransform(4096);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span><span lang=FR
style='font-size:10.0pt'>t->SetTransformType(t->kTransformCos,0);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>
t->SetRegion(2048, 4095);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>
t->FilterZonal(source,dest); </span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>for (i = 0; i < nbins; i++) d->SetBinContent(i +
1,dest[i]);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
d->SetLineColor(kRed); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> d->Draw("SAME
L");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>
</div>
<!-- */
// --> End_Html
int i, j=0, k = 1, m, l;
Double_t val;
Double_t *working_space = 0;
Double_t a, b, pi = 3.14159265358979323846, old_area, new_area;
if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
if (fTransformType >= kTransformCosWalsh)
fDegree += 1;
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
}
switch (fTransformType) {
case kTransformHaar:
case kTransformWalsh:
working_space = new Double_t[2 * fSize];
break;
case kTransformCos:
case kTransformSin:
case kTransformFourier:
case kTransformHartley:
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
working_space = new Double_t[4 * fSize];
break;
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
working_space = new Double_t[8 * fSize];
break;
}
switch (fTransformType) {
case kTransformHaar:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Haar(working_space, fSize, kTransformForward);
break;
case kTransformWalsh:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Walsh(working_space, fSize);
BitReverse(working_space, fSize);
break;
case kTransformCos:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Cos(a);
b = working_space[i];
a = b / a;
working_space[i] = a;
working_space[i + fSize] = 0;
} working_space[0] = working_space[0] / TMath::Sqrt(2.0);
fSize = fSize / 2;
break;
case kTransformSin:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = -val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Sin(a);
b = working_space[i];
if (a != 0)
a = b / a;
working_space[i - 1] = a;
working_space[i + fSize] = 0;
}
working_space[fSize / 2 - 1] =
working_space[fSize / 2] / TMath::Sqrt(2.0);
fSize = fSize / 2;
break;
case kTransformFourier:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
break;
case kTransformHartley:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 1, kTransformForward, 0);
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
for (i = 0; i < fSize; i++) {
val = source[i];
if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = val;
}
else if (fTransformType == kTransformSinWalsh
|| fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = -val;
}
else
working_space[i] = val;
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
GeneralExe(working_space, 0, fSize, fDegree, fTransformType);
}
else if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[i] = a;
working_space[i + 2 * fSize] = 0;
}
}
else if (fTransformType == kTransformSinWalsh || fTransformType == kTransformSinHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[j + k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[j + k / 2 - i % j - 1] = a;
working_space[i + 2 * fSize] = 0;
}
}
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + i] = working_space[l + i / j];
working_space[fSize + i + 2 * fSize] =
working_space[l + i / j + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] = working_space[fSize + i + 2 * fSize];
}
break;
}
if (!working_space) return;
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i] = fFilterCoeff;
new_area += working_space[i];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i] *= a;
}
}
if (fTransformType == kTransformFourier) {
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i + fSize];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i + fSize] = fFilterCoeff;
new_area += working_space[i + fSize];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i + fSize] *= a;
}
}
}
else if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar) {
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i + 2 * fSize];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i + 2 * fSize] = fFilterCoeff;
new_area += working_space[i + 2 * fSize];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i + 2 * fSize] *= a;
}
}
}
switch (fTransformType) {
case kTransformHaar:
Haar(working_space, fSize, kTransformInverse);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformWalsh:
BitReverse(working_space, fSize);
Walsh(working_space, fSize);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformCos:
fSize = 2 * fSize;
working_space[0] = working_space[0] * TMath::Sqrt(2.0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[i + fSize] = (Double_t) working_space[i] * b;
working_space[i] = (Double_t) working_space[i] * a;
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[fSize / 2] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 1);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformSin:
fSize = 2 * fSize;
working_space[fSize / 2] =
working_space[fSize / 2 - 1] * TMath::Sqrt(2.0);
for (i = fSize / 2 - 1; i > 0; i--) {
a = pi * (Double_t) i / (Double_t) fSize;
working_space[i + fSize] =
-(Double_t) working_space[i - 1] * TMath::Cos(a);
working_space[i] = (Double_t) working_space[i - 1] * TMath::Sin(a);
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[0] = 0;
working_space[fSize] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourier:
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformHartley:
Fourier(working_space, fSize, 1, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + l + i / j] = working_space[i];
working_space[fSize + l + i / j + 2 * fSize] =
working_space[i + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] = working_space[fSize + i + 2 * fSize];
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
GeneralInv(working_space, fSize, fDegree, fTransformType);
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
}
else if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + i % j] =
working_space[i] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + i % j] =
-(Double_t) working_space[i] * b;
working_space[2 * fSize + k + i % j] =
(Double_t) working_space[i] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k + j] = 0;
working_space[4 * fSize + 2 * fSize + k + j] = 0;
}
else {
working_space[2 * fSize + k + 2 * j - i % j] =
working_space[2 * fSize + k + i % j];
working_space[4 * fSize + 2 * fSize + k + 2 * j - i % j] =
-working_space[4 * fSize + 2 * fSize + k + i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
else if (fTransformType == kTransformSinWalsh || fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + j + i % j] =
working_space[j + k / 2 - i % j - 1] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + j + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + j + i % j] =
-(Double_t) working_space[j + k / 2 - i % j - 1] * b;
working_space[2 * fSize + k + j + i % j] =
(Double_t) working_space[j + k / 2 - i % j - 1] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k] = 0;
working_space[4 * fSize + 2 * fSize + k] = 0;
}
else {
working_space[2 * fSize + k + i % j] =
working_space[2 * fSize + k + 2 * j - i % j];
working_space[4 * fSize + 2 * fSize + k + i % j] =
-working_space[4 * fSize + 2 * fSize + k + 2 * j - i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
for (i = 0; i < fSize; i++) {
if (fTransformType >= kTransformCosWalsh) {
k = i / j;
k = 2 * k * j;
val = working_space[k + i % j];
}
else
val = working_space[i];
destVector[i] = val;
}
break;
}
delete[]working_space;
return;
}
void TSpectrumTransform::Enhance(const Double_t *source, Double_t *destVector)
{
/* -->
<div class=Section3>
<p class=MsoNormal><b><span style='font-size:14.0pt'>Example of enhancement</span></b></p>
<p class=MsoNormal><i> </i></p>
<p class=MsoNormal><i>Function:</i></p>
<p class=MsoNormal><b>void TSpectrumTransform::Enhance(const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
*fDest)</b></p>
<p class=MsoNormal><b> </b></p>
<p class=MsoNormal style='text-align:justify'>This function transforms the
source spectrum (for details see Transform function). Before the Enhance
function is called the class must be created by constructor and the type of the
transform as well as some other parameters must be set using a set of setter functions.
The Enhance function multiplies transformed coefficients in the given region
(fXmin, fXmax) by the given fEnhancCoeff and transforms it back. Enhanced data
are written into dest spectrum.</p>
<p class=MsoNormal> </p>
<p class=MsoNormal style='text-align:justify'><i>Example – script Enhance.c:</i></p>
<p class=MsoNormal style='text-align:justify'><i><span style='font-size:16.0pt'><img
border=0 width=601 height=402 src="gif/spectrumtransform_enhance_image001.jpg"></span></i></p>
<p class=MsoNormal style='text-align:justify'><span style='font-size:18.0pt'> </span></p>
<p class=MsoNormal style='text-align:justify'><b>Fig. 1 Original spectrum (black
line) and enhanced spectrum (red line) using Cosine transform (channels 0-1024
were multiplied by 2) </b></p>
<p class=MsoNormal><b><span style='color:#339966'> </span></b></p>
<p class=MsoNormal><b><span style='color:#339966'>Script:</span></b></p>
<p class=MsoNormal> </p>
<p class=MsoNormal><span style='font-size:10.0pt'>// Example to illustrate
Enhance function (class TSpectrumTransform).</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// To execute this example,
do</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>// root > .x Enhance.C</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>void Enhance() {</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Int_t i;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t nbins =
4096;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmin =
0;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> Double_t xmax =
(Double_t)nbins;</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>Double_t * source = new Double_t[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> Double_t * dest = new
Double_t[nbins]; </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TH1F *h = new
TH1F("h","Enhancement using Cosine transform",nbins,xmin,xmax);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TH1F *d = new
TH1F("d","",nbins,xmin,xmax); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TFile *f = new
TFile("spectra\\TSpectrum.root");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> h=(TH1F*)
f->Get("transform1;1"); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> for (i = 0; i < nbins;
i++) source[i]=h->GetBinContent(i + 1); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TCanvas *Transform1 = gROOT->GetListOfCanvases()->FindObject("Transform1");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> if (!Transform1)
Transform1 = new
TCanvas("Transform","Transform1",10,10,1000,700);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
h->SetAxisRange(700,1024); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
h->Draw("L"); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrum *s = new
TSpectrum();</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> TSpectrumTransform *t =
new TSpectrumTransform(4096);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> </span><span lang=FR
style='font-size:10.0pt'>t->SetTransformType(t->kTransformCos,0);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> t->SetRegion(0,
1024);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>
t->SetEnhanceCoeff(2);</span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>
t->Enhance(source,dest); </span></p>
<p class=MsoNormal><span lang=FR style='font-size:10.0pt'> </span><span
style='font-size:10.0pt'>for (i = 0; i < nbins; i++) d->SetBinContent(i +
1,dest[i]);</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>
d->SetLineColor(kRed); </span></p>
<p class=MsoNormal><span style='font-size:10.0pt'> d->Draw("SAME
L");</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>
</div>
<!-- */
// --> End_Html
int i, j=0, k = 1, m, l;
Double_t val;
Double_t *working_space = 0;
Double_t a, b, pi = 3.14159265358979323846, old_area, new_area;
if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
if (fTransformType >= kTransformCosWalsh)
fDegree += 1;
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
}
switch (fTransformType) {
case kTransformHaar:
case kTransformWalsh:
working_space = new Double_t[2 * fSize];
break;
case kTransformCos:
case kTransformSin:
case kTransformFourier:
case kTransformHartley:
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
working_space = new Double_t[4 * fSize];
break;
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
working_space = new Double_t[8 * fSize];
break;
}
switch (fTransformType) {
case kTransformHaar:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Haar(working_space, fSize, kTransformForward);
break;
case kTransformWalsh:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Walsh(working_space, fSize);
BitReverse(working_space, fSize);
break;
case kTransformCos:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Cos(a);
b = working_space[i];
a = b / a;
working_space[i] = a;
working_space[i + fSize] = 0;
} working_space[0] = working_space[0] / TMath::Sqrt(2.0);
fSize = fSize / 2;
break;
case kTransformSin:
fSize = 2 * fSize;
for (i = 1; i <= (fSize / 2); i++) {
val = source[i - 1];
working_space[i - 1] = val;
working_space[fSize - i] = -val;
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
a = TMath::Sin(a);
b = working_space[i];
if (a != 0)
a = b / a;
working_space[i - 1] = a;
working_space[i + fSize] = 0;
}
working_space[fSize / 2 - 1] =
working_space[fSize / 2] / TMath::Sqrt(2.0);
fSize = fSize / 2;
break;
case kTransformFourier:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 0, kTransformForward, 0);
break;
case kTransformHartley:
for (i = 0; i < fSize; i++) {
working_space[i] = source[i];
}
Fourier(working_space, fSize, 1, kTransformForward, 0);
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
for (i = 0; i < fSize; i++) {
val = source[i];
if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = val;
}
else if (fTransformType == kTransformSinWalsh
|| fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
k = i / j;
k = 2 * k * j;
working_space[k + i % j] = val;
working_space[k + 2 * j - 1 - i % j] = -val;
}
else
working_space[i] = val;
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
GeneralExe(working_space, 0, fSize, fDegree, fTransformType);
}
else if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[i] = a;
working_space[i + 2 * fSize] = 0;
}
}
else if (fTransformType == kTransformSinWalsh || fTransformType == kTransformSinHaar) {
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
GeneralExe(working_space, 0, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
a = TMath::Cos(a);
b = working_space[j + k + i % j];
if (i % j == 0)
a = b / TMath::Sqrt(2.0);
else
a = b / a;
working_space[j + k / 2 - i % j - 1] = a;
working_space[i + 2 * fSize] = 0;
}
}
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + i] = working_space[l + i / j];
working_space[fSize + i + 2 * fSize] =
working_space[l + i / j + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] = working_space[fSize + i + 2 * fSize];
}
break;
}
if (!working_space) return;
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i] *= fEnhanceCoeff;
new_area += working_space[i];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i] *= a;
}
}
if (fTransformType == kTransformFourier) {
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i + fSize];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i + fSize] *= fEnhanceCoeff;
new_area += working_space[i + fSize];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i + fSize] *= a;
}
}
}
else if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar) {
for (i = 0, old_area = 0; i < fSize; i++) {
old_area += working_space[i + 2 * fSize];
}
for (i = 0, new_area = 0; i < fSize; i++) {
if (i >= fXmin && i <= fXmax)
working_space[i + 2 * fSize] *= fEnhanceCoeff;
new_area += working_space[i + 2 * fSize];
}
if (new_area != 0) {
a = old_area / new_area;
for (i = 0; i < fSize; i++) {
working_space[i + 2 * fSize] *= a;
}
}
}
switch (fTransformType) {
case kTransformHaar:
Haar(working_space, fSize, kTransformInverse);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformWalsh:
BitReverse(working_space, fSize);
Walsh(working_space, fSize);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformCos:
fSize = 2 * fSize;
working_space[0] = working_space[0] * TMath::Sqrt(2.0);
for (i = 0; i < fSize / 2; i++) {
a = pi * (Double_t) i / (Double_t) fSize;
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[i + fSize] = (Double_t) working_space[i] * b;
working_space[i] = (Double_t) working_space[i] * a;
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[fSize / 2] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 1);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformSin:
fSize = 2 * fSize;
working_space[fSize / 2] =
working_space[fSize / 2 - 1] * TMath::Sqrt(2.0);
for (i = fSize / 2 - 1; i > 0; i--) {
a = pi * (Double_t) i / (Double_t) fSize;
working_space[i + fSize] =
-(Double_t) working_space[i - 1] * TMath::Cos(a);
working_space[i] = (Double_t) working_space[i - 1] * TMath::Sin(a);
} for (i = 2; i <= (fSize / 2); i++) {
working_space[fSize - i + 1] = working_space[i - 1];
working_space[fSize - i + 1 + fSize] =
-working_space[i - 1 + fSize];
}
working_space[0] = 0;
working_space[fSize] = 0;
working_space[fSize / 2 + fSize] = 0;
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize / 2; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourier:
Fourier(working_space, fSize, 0, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformHartley:
Fourier(working_space, fSize, 1, kTransformInverse, 0);
for (i = 0; i < fSize; i++) {
destVector[i] = working_space[i];
}
break;
case kTransformFourierWalsh:
case kTransformFourierHaar:
case kTransformWalshHaar:
case kTransformCosWalsh:
case kTransformCosHaar:
case kTransformSinWalsh:
case kTransformSinHaar:
if (fTransformType > kTransformWalshHaar)
k = (Int_t) TMath::Power(2, fDegree - 1);
else
k = (Int_t) TMath::Power(2, fDegree);
j = fSize / k;
for (i = 0, l = 0; i < fSize; i++, l = (l + k) % fSize) {
working_space[fSize + l + i / j] = working_space[i];
working_space[fSize + l + i / j + 2 * fSize] =
working_space[i + 2 * fSize];
}
for (i = 0; i < fSize; i++) {
working_space[i] = working_space[fSize + i];
working_space[i + 2 * fSize] = working_space[fSize + i + 2 * fSize];
}
if (fTransformType == kTransformFourierWalsh
|| fTransformType == kTransformFourierHaar
|| fTransformType == kTransformWalshHaar) {
GeneralInv(working_space, fSize, fDegree, fTransformType);
for (i = 0; i < j; i++)
BitReverseHaar(working_space, fSize, k, i * k);
}
else if (fTransformType == kTransformCosWalsh || fTransformType == kTransformCosHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + i % j] =
working_space[i] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + i % j] =
-(Double_t) working_space[i] * b;
working_space[2 * fSize + k + i % j] =
(Double_t) working_space[i] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k + j] = 0;
working_space[4 * fSize + 2 * fSize + k + j] = 0;
}
else {
working_space[2 * fSize + k + 2 * j - i % j] =
working_space[2 * fSize + k + i % j];
working_space[4 * fSize + 2 * fSize + k + 2 * j - i % j] =
-working_space[4 * fSize + 2 * fSize + k + i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
else if (fTransformType == kTransformSinWalsh || fTransformType == kTransformSinHaar) {
j = (Int_t) TMath::Power(2, fDegree) / 2;
m = (Int_t) TMath::Power(2, fDegree);
l = 2 * fSize / m;
for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
a = pi * (Double_t) (i % j) / (Double_t) (2 * j);
if (i % j == 0) {
working_space[2 * fSize + k + j + i % j] =
working_space[j + k / 2 - i % j - 1] * TMath::Sqrt(2.0);
working_space[4 * fSize + 2 * fSize + k + j + i % j] = 0;
}
else {
b = TMath::Sin(a);
a = TMath::Cos(a);
working_space[4 * fSize + 2 * fSize + k + j + i % j] =
-(Double_t) working_space[j + k / 2 - i % j - 1] * b;
working_space[2 * fSize + k + j + i % j] =
(Double_t) working_space[j + k / 2 - i % j - 1] * a;
} } for (i = 0; i < fSize; i++) {
k = i / j;
k = 2 * k * j;
if (i % j == 0) {
working_space[2 * fSize + k] = 0;
working_space[4 * fSize + 2 * fSize + k] = 0;
}
else {
working_space[2 * fSize + k + i % j] =
working_space[2 * fSize + k + 2 * j - i % j];
working_space[4 * fSize + 2 * fSize + k + i % j] =
-working_space[4 * fSize + 2 * fSize + k + 2 * j - i % j];
}
}
for (i = 0; i < 2 * fSize; i++) {
working_space[i] = working_space[2 * fSize + i];
working_space[4 * fSize + i] =
working_space[4 * fSize + 2 * fSize + i];
}
GeneralInv(working_space, 2 * fSize, fDegree, fTransformType);
for (i = 0; i < l; i++)
BitReverseHaar(working_space, 2 * fSize, m, i * m);
}
for (i = 0; i < fSize; i++) {
if (fTransformType >= kTransformCosWalsh) {
k = i / j;
k = 2 * k * j;
val = working_space[k + i % j];
}
else
val = working_space[i];
destVector[i] = val;
}
break;
}
delete[]working_space;
return;
}
void TSpectrumTransform::SetTransformType(Int_t transType, Int_t degree)
{
Int_t j, n;
j = 0;
n = 1;
for (; n < fSize;) {
j += 1;
n = n * 2;
}
if (transType < kTransformHaar || transType > kTransformSinHaar){
Error ("TSpectrumTransform","Invalid type of transform");
return;
}
if (transType >= kTransformFourierWalsh && transType <= kTransformSinHaar) {
if (degree > j || degree < 1){
Error ("TSpectrumTransform","Invalid degree of mixed transform");
return;
}
}
fTransformType=transType;
fDegree=degree;
}
void TSpectrumTransform::SetRegion(Int_t xmin, Int_t xmax)
{
if(xmin<0 || xmax < xmin || xmax >= fSize){
Error("TSpectrumTransform", "Wrong range");
return;
}
fXmin = xmin;
fXmax = xmax;
}
void TSpectrumTransform::SetDirection(Int_t direction)
{
if(direction != kTransformForward && direction != kTransformInverse){
Error("TSpectrumTransform", "Wrong direction");
return;
}
fDirection = direction;
}
void TSpectrumTransform::SetFilterCoeff(Double_t filterCoeff)
{
fFilterCoeff = filterCoeff;
}
void TSpectrumTransform::SetEnhanceCoeff(Double_t enhanceCoeff)
{
fEnhanceCoeff = enhanceCoeff;
}
TSpectrumTransform.cxx:10 TSpectrumTransform.cxx:11 TSpectrumTransform.cxx:12 TSpectrumTransform.cxx:13 TSpectrumTransform.cxx:14 TSpectrumTransform.cxx:15 TSpectrumTransform.cxx:16 TSpectrumTransform.cxx:17 TSpectrumTransform.cxx:18 TSpectrumTransform.cxx:19 TSpectrumTransform.cxx:20 TSpectrumTransform.cxx:21 TSpectrumTransform.cxx:22 TSpectrumTransform.cxx:23 TSpectrumTransform.cxx:24 TSpectrumTransform.cxx:25 TSpectrumTransform.cxx:26 TSpectrumTransform.cxx:27 TSpectrumTransform.cxx:28 TSpectrumTransform.cxx:29 TSpectrumTransform.cxx:30 TSpectrumTransform.cxx:31 TSpectrumTransform.cxx:32 TSpectrumTransform.cxx:33 TSpectrumTransform.cxx:34 TSpectrumTransform.cxx:35 TSpectrumTransform.cxx:36 TSpectrumTransform.cxx:37 TSpectrumTransform.cxx:38 TSpectrumTransform.cxx:39 TSpectrumTransform.cxx:40 TSpectrumTransform.cxx:41 TSpectrumTransform.cxx:42 TSpectrumTransform.cxx:43 TSpectrumTransform.cxx:44 TSpectrumTransform.cxx:45 TSpectrumTransform.cxx:46 TSpectrumTransform.cxx:47 TSpectrumTransform.cxx:48 TSpectrumTransform.cxx:49 TSpectrumTransform.cxx:50 TSpectrumTransform.cxx:51 TSpectrumTransform.cxx:52 TSpectrumTransform.cxx:53 TSpectrumTransform.cxx:54 TSpectrumTransform.cxx:55 TSpectrumTransform.cxx:56 TSpectrumTransform.cxx:57 TSpectrumTransform.cxx:58 TSpectrumTransform.cxx:59 TSpectrumTransform.cxx:60 TSpectrumTransform.cxx:61 TSpectrumTransform.cxx:62 TSpectrumTransform.cxx:63 TSpectrumTransform.cxx:64 TSpectrumTransform.cxx:65 TSpectrumTransform.cxx:66 TSpectrumTransform.cxx:67 TSpectrumTransform.cxx:68 TSpectrumTransform.cxx:69 TSpectrumTransform.cxx:70 TSpectrumTransform.cxx:71 TSpectrumTransform.cxx:72 TSpectrumTransform.cxx:73 TSpectrumTransform.cxx:74 TSpectrumTransform.cxx:75 TSpectrumTransform.cxx:76 TSpectrumTransform.cxx:77 TSpectrumTransform.cxx:78 TSpectrumTransform.cxx:79 TSpectrumTransform.cxx:80 TSpectrumTransform.cxx:81 TSpectrumTransform.cxx:82 TSpectrumTransform.cxx:83 TSpectrumTransform.cxx:84 TSpectrumTransform.cxx:85 TSpectrumTransform.cxx:86 TSpectrumTransform.cxx:87 TSpectrumTransform.cxx:88 TSpectrumTransform.cxx:89 TSpectrumTransform.cxx:90 TSpectrumTransform.cxx:91 TSpectrumTransform.cxx:92 TSpectrumTransform.cxx:93 TSpectrumTransform.cxx:94 TSpectrumTransform.cxx:95 TSpectrumTransform.cxx:96 TSpectrumTransform.cxx:97 TSpectrumTransform.cxx:98 TSpectrumTransform.cxx:99 TSpectrumTransform.cxx:100 TSpectrumTransform.cxx:101 TSpectrumTransform.cxx:102 TSpectrumTransform.cxx:103 TSpectrumTransform.cxx:104 TSpectrumTransform.cxx:105 TSpectrumTransform.cxx:106 TSpectrumTransform.cxx:107 TSpectrumTransform.cxx:108 TSpectrumTransform.cxx:109 TSpectrumTransform.cxx:110 TSpectrumTransform.cxx:111 TSpectrumTransform.cxx:112 TSpectrumTransform.cxx:113 TSpectrumTransform.cxx:114 TSpectrumTransform.cxx:115 TSpectrumTransform.cxx:116 TSpectrumTransform.cxx:117 TSpectrumTransform.cxx:118 TSpectrumTransform.cxx:119 TSpectrumTransform.cxx:120 TSpectrumTransform.cxx:121 TSpectrumTransform.cxx:122 TSpectrumTransform.cxx:123 TSpectrumTransform.cxx:124 TSpectrumTransform.cxx:125 TSpectrumTransform.cxx:126 TSpectrumTransform.cxx:127 TSpectrumTransform.cxx:128 TSpectrumTransform.cxx:129 TSpectrumTransform.cxx:130 TSpectrumTransform.cxx:131 TSpectrumTransform.cxx:132 TSpectrumTransform.cxx:133 TSpectrumTransform.cxx:134 TSpectrumTransform.cxx:135 TSpectrumTransform.cxx:136 TSpectrumTransform.cxx:137 TSpectrumTransform.cxx:138 TSpectrumTransform.cxx:139 TSpectrumTransform.cxx:140 TSpectrumTransform.cxx:141 TSpectrumTransform.cxx:142 TSpectrumTransform.cxx:143 TSpectrumTransform.cxx:144 TSpectrumTransform.cxx:145 TSpectrumTransform.cxx:146 TSpectrumTransform.cxx:147 TSpectrumTransform.cxx:148 TSpectrumTransform.cxx:149 TSpectrumTransform.cxx:150 TSpectrumTransform.cxx:151 TSpectrumTransform.cxx:152 TSpectrumTransform.cxx:153 TSpectrumTransform.cxx:154 TSpectrumTransform.cxx:155 TSpectrumTransform.cxx:156 TSpectrumTransform.cxx:157 TSpectrumTransform.cxx:158 TSpectrumTransform.cxx:159 TSpectrumTransform.cxx:160 TSpectrumTransform.cxx:161 TSpectrumTransform.cxx:162 TSpectrumTransform.cxx:163 TSpectrumTransform.cxx:164 TSpectrumTransform.cxx:165 TSpectrumTransform.cxx:166 TSpectrumTransform.cxx:167 TSpectrumTransform.cxx:168 TSpectrumTransform.cxx:169 TSpectrumTransform.cxx:170 TSpectrumTransform.cxx:171 TSpectrumTransform.cxx:172 TSpectrumTransform.cxx:173 TSpectrumTransform.cxx:174 TSpectrumTransform.cxx:175 TSpectrumTransform.cxx:176 TSpectrumTransform.cxx:177 TSpectrumTransform.cxx:178 TSpectrumTransform.cxx:179 TSpectrumTransform.cxx:180 TSpectrumTransform.cxx:181 TSpectrumTransform.cxx:182 TSpectrumTransform.cxx:183 TSpectrumTransform.cxx:184 TSpectrumTransform.cxx:185 TSpectrumTransform.cxx:186 TSpectrumTransform.cxx:187 TSpectrumTransform.cxx:188 TSpectrumTransform.cxx:189 TSpectrumTransform.cxx:190 TSpectrumTransform.cxx:191 TSpectrumTransform.cxx:192 TSpectrumTransform.cxx:193 TSpectrumTransform.cxx:194 TSpectrumTransform.cxx:195 TSpectrumTransform.cxx:196 TSpectrumTransform.cxx:197 TSpectrumTransform.cxx:198 TSpectrumTransform.cxx:199 TSpectrumTransform.cxx:200 TSpectrumTransform.cxx:201 TSpectrumTransform.cxx:202 TSpectrumTransform.cxx:203 TSpectrumTransform.cxx:204 TSpectrumTransform.cxx:205 TSpectrumTransform.cxx:206 TSpectrumTransform.cxx:207 TSpectrumTransform.cxx:208 TSpectrumTransform.cxx:209 TSpectrumTransform.cxx:210 TSpectrumTransform.cxx:211 TSpectrumTransform.cxx:212 TSpectrumTransform.cxx:213 TSpectrumTransform.cxx:214 TSpectrumTransform.cxx:215 TSpectrumTransform.cxx:216 TSpectrumTransform.cxx:217 TSpectrumTransform.cxx:218 TSpectrumTransform.cxx:219 TSpectrumTransform.cxx:220 TSpectrumTransform.cxx:221 TSpectrumTransform.cxx:222 TSpectrumTransform.cxx:223 TSpectrumTransform.cxx:224 TSpectrumTransform.cxx:225 TSpectrumTransform.cxx:226 TSpectrumTransform.cxx:227 TSpectrumTransform.cxx:228 TSpectrumTransform.cxx:229 TSpectrumTransform.cxx:230 TSpectrumTransform.cxx:231 TSpectrumTransform.cxx:232 TSpectrumTransform.cxx:233 TSpectrumTransform.cxx:234 TSpectrumTransform.cxx:235 TSpectrumTransform.cxx:236 TSpectrumTransform.cxx:237 TSpectrumTransform.cxx:238 TSpectrumTransform.cxx:239 TSpectrumTransform.cxx:240 TSpectrumTransform.cxx:241 TSpectrumTransform.cxx:242 TSpectrumTransform.cxx:243 TSpectrumTransform.cxx:244 TSpectrumTransform.cxx:245 TSpectrumTransform.cxx:246 TSpectrumTransform.cxx:247 TSpectrumTransform.cxx:248 TSpectrumTransform.cxx:249 TSpectrumTransform.cxx:250 TSpectrumTransform.cxx:251 TSpectrumTransform.cxx:252 TSpectrumTransform.cxx:253 TSpectrumTransform.cxx:254 TSpectrumTransform.cxx:255 TSpectrumTransform.cxx:256 TSpectrumTransform.cxx:257 TSpectrumTransform.cxx:258 TSpectrumTransform.cxx:259 TSpectrumTransform.cxx:260 TSpectrumTransform.cxx:261 TSpectrumTransform.cxx:262 TSpectrumTransform.cxx:263 TSpectrumTransform.cxx:264 TSpectrumTransform.cxx:265 TSpectrumTransform.cxx:266 TSpectrumTransform.cxx:267 TSpectrumTransform.cxx:268 TSpectrumTransform.cxx:269 TSpectrumTransform.cxx:270 TSpectrumTransform.cxx:271 TSpectrumTransform.cxx:272 TSpectrumTransform.cxx:273 TSpectrumTransform.cxx:274 TSpectrumTransform.cxx:275 TSpectrumTransform.cxx:276 TSpectrumTransform.cxx:277 TSpectrumTransform.cxx:278 TSpectrumTransform.cxx:279 TSpectrumTransform.cxx:280 TSpectrumTransform.cxx:281 TSpectrumTransform.cxx:282 TSpectrumTransform.cxx:283 TSpectrumTransform.cxx:284 TSpectrumTransform.cxx:285 TSpectrumTransform.cxx:286 TSpectrumTransform.cxx:287 TSpectrumTransform.cxx:288 TSpectrumTransform.cxx:289 TSpectrumTransform.cxx:290 TSpectrumTransform.cxx:291 TSpectrumTransform.cxx:292 TSpectrumTransform.cxx:293 TSpectrumTransform.cxx:294 TSpectrumTransform.cxx:295 TSpectrumTransform.cxx:296 TSpectrumTransform.cxx:297 TSpectrumTransform.cxx:298 TSpectrumTransform.cxx:299 TSpectrumTransform.cxx:300 TSpectrumTransform.cxx:301 TSpectrumTransform.cxx:302 TSpectrumTransform.cxx:303 TSpectrumTransform.cxx:304 TSpectrumTransform.cxx:305 TSpectrumTransform.cxx:306 TSpectrumTransform.cxx:307 TSpectrumTransform.cxx:308 TSpectrumTransform.cxx:309 TSpectrumTransform.cxx:310 TSpectrumTransform.cxx:311 TSpectrumTransform.cxx:312 TSpectrumTransform.cxx:313 TSpectrumTransform.cxx:314 TSpectrumTransform.cxx:315 TSpectrumTransform.cxx:316 TSpectrumTransform.cxx:317 TSpectrumTransform.cxx:318 TSpectrumTransform.cxx:319 TSpectrumTransform.cxx:320 TSpectrumTransform.cxx:321 TSpectrumTransform.cxx:322 TSpectrumTransform.cxx:323 TSpectrumTransform.cxx:324 TSpectrumTransform.cxx:325 TSpectrumTransform.cxx:326 TSpectrumTransform.cxx:327 TSpectrumTransform.cxx:328 TSpectrumTransform.cxx:329 TSpectrumTransform.cxx:330 TSpectrumTransform.cxx:331 TSpectrumTransform.cxx:332 TSpectrumTransform.cxx:333 TSpectrumTransform.cxx:334 TSpectrumTransform.cxx:335 TSpectrumTransform.cxx:336 TSpectrumTransform.cxx:337 TSpectrumTransform.cxx:338 TSpectrumTransform.cxx:339 TSpectrumTransform.cxx:340 TSpectrumTransform.cxx:341 TSpectrumTransform.cxx:342 TSpectrumTransform.cxx:343 TSpectrumTransform.cxx:344 TSpectrumTransform.cxx:345 TSpectrumTransform.cxx:346 TSpectrumTransform.cxx:347 TSpectrumTransform.cxx:348 TSpectrumTransform.cxx:349 TSpectrumTransform.cxx:350 TSpectrumTransform.cxx:351 TSpectrumTransform.cxx:352 TSpectrumTransform.cxx:353 TSpectrumTransform.cxx:354 TSpectrumTransform.cxx:355 TSpectrumTransform.cxx:356 TSpectrumTransform.cxx:357 TSpectrumTransform.cxx:358 TSpectrumTransform.cxx:359 TSpectrumTransform.cxx:360 TSpectrumTransform.cxx:361 TSpectrumTransform.cxx:362 TSpectrumTransform.cxx:363 TSpectrumTransform.cxx:364 TSpectrumTransform.cxx:365 TSpectrumTransform.cxx:366 TSpectrumTransform.cxx:367 TSpectrumTransform.cxx:368 TSpectrumTransform.cxx:369 TSpectrumTransform.cxx:370 TSpectrumTransform.cxx:371 TSpectrumTransform.cxx:372 TSpectrumTransform.cxx:373 TSpectrumTransform.cxx:374 TSpectrumTransform.cxx:375 TSpectrumTransform.cxx:376 TSpectrumTransform.cxx:377 TSpectrumTransform.cxx:378 TSpectrumTransform.cxx:379 TSpectrumTransform.cxx:380 TSpectrumTransform.cxx:381 TSpectrumTransform.cxx:382 TSpectrumTransform.cxx:383 TSpectrumTransform.cxx:384 TSpectrumTransform.cxx:385 TSpectrumTransform.cxx:386 TSpectrumTransform.cxx:387 TSpectrumTransform.cxx:388 TSpectrumTransform.cxx:389 TSpectrumTransform.cxx:390 TSpectrumTransform.cxx:391 TSpectrumTransform.cxx:392 TSpectrumTransform.cxx:393 TSpectrumTransform.cxx:394 TSpectrumTransform.cxx:395 TSpectrumTransform.cxx:396 TSpectrumTransform.cxx:397 TSpectrumTransform.cxx:398 TSpectrumTransform.cxx:399 TSpectrumTransform.cxx:400 TSpectrumTransform.cxx:401 TSpectrumTransform.cxx:402 TSpectrumTransform.cxx:403 TSpectrumTransform.cxx:404 TSpectrumTransform.cxx:405 TSpectrumTransform.cxx:406 TSpectrumTransform.cxx:407 TSpectrumTransform.cxx:408 TSpectrumTransform.cxx:409 TSpectrumTransform.cxx:410 TSpectrumTransform.cxx:411 TSpectrumTransform.cxx:412 TSpectrumTransform.cxx:413 TSpectrumTransform.cxx:414 TSpectrumTransform.cxx:415 TSpectrumTransform.cxx:416 TSpectrumTransform.cxx:417 TSpectrumTransform.cxx:418 TSpectrumTransform.cxx:419 TSpectrumTransform.cxx:420 TSpectrumTransform.cxx:421 TSpectrumTransform.cxx:422 TSpectrumTransform.cxx:423 TSpectrumTransform.cxx:424 TSpectrumTransform.cxx:425 TSpectrumTransform.cxx:426 TSpectrumTransform.cxx:427 TSpectrumTransform.cxx:428 TSpectrumTransform.cxx:429 TSpectrumTransform.cxx:430 TSpectrumTransform.cxx:431 TSpectrumTransform.cxx:432 TSpectrumTransform.cxx:433 TSpectrumTransform.cxx:434 TSpectrumTransform.cxx:435 TSpectrumTransform.cxx:436 TSpectrumTransform.cxx:437 TSpectrumTransform.cxx:438 TSpectrumTransform.cxx:439 TSpectrumTransform.cxx:440 TSpectrumTransform.cxx:441 TSpectrumTransform.cxx:442 TSpectrumTransform.cxx:443 TSpectrumTransform.cxx:444 TSpectrumTransform.cxx:445 TSpectrumTransform.cxx:446 TSpectrumTransform.cxx:447 TSpectrumTransform.cxx:448 TSpectrumTransform.cxx:449 TSpectrumTransform.cxx:450 TSpectrumTransform.cxx:451 TSpectrumTransform.cxx:452 TSpectrumTransform.cxx:453 TSpectrumTransform.cxx:454 TSpectrumTransform.cxx:455 TSpectrumTransform.cxx:456 TSpectrumTransform.cxx:457 TSpectrumTransform.cxx:458 TSpectrumTransform.cxx:459 TSpectrumTransform.cxx:460 TSpectrumTransform.cxx:461 TSpectrumTransform.cxx:462 TSpectrumTransform.cxx:463 TSpectrumTransform.cxx:464 TSpectrumTransform.cxx:465 TSpectrumTransform.cxx:466 TSpectrumTransform.cxx:467 TSpectrumTransform.cxx:468 TSpectrumTransform.cxx:469 TSpectrumTransform.cxx:470 TSpectrumTransform.cxx:471 TSpectrumTransform.cxx:472 TSpectrumTransform.cxx:473 TSpectrumTransform.cxx:474 TSpectrumTransform.cxx:475 TSpectrumTransform.cxx:476 TSpectrumTransform.cxx:477 TSpectrumTransform.cxx:478 TSpectrumTransform.cxx:479 TSpectrumTransform.cxx:480 TSpectrumTransform.cxx:481 TSpectrumTransform.cxx:482 TSpectrumTransform.cxx:483 TSpectrumTransform.cxx:484 TSpectrumTransform.cxx:485 TSpectrumTransform.cxx:486 TSpectrumTransform.cxx:487 TSpectrumTransform.cxx:488 TSpectrumTransform.cxx:489 TSpectrumTransform.cxx:490 TSpectrumTransform.cxx:491 TSpectrumTransform.cxx:492 TSpectrumTransform.cxx:493 TSpectrumTransform.cxx:494 TSpectrumTransform.cxx:495 TSpectrumTransform.cxx:496 TSpectrumTransform.cxx:497 TSpectrumTransform.cxx:498 TSpectrumTransform.cxx:499 TSpectrumTransform.cxx:500 TSpectrumTransform.cxx:501 TSpectrumTransform.cxx:502 TSpectrumTransform.cxx:503 TSpectrumTransform.cxx:504 TSpectrumTransform.cxx:505 TSpectrumTransform.cxx:506 TSpectrumTransform.cxx:507 TSpectrumTransform.cxx:508 TSpectrumTransform.cxx:509 TSpectrumTransform.cxx:510 TSpectrumTransform.cxx:511 TSpectrumTransform.cxx:512 TSpectrumTransform.cxx:513 TSpectrumTransform.cxx:514 TSpectrumTransform.cxx:515 TSpectrumTransform.cxx:516 TSpectrumTransform.cxx:517 TSpectrumTransform.cxx:518 TSpectrumTransform.cxx:519 TSpectrumTransform.cxx:520 TSpectrumTransform.cxx:521 TSpectrumTransform.cxx:522 TSpectrumTransform.cxx:523 TSpectrumTransform.cxx:524 TSpectrumTransform.cxx:525 TSpectrumTransform.cxx:526 TSpectrumTransform.cxx:527 TSpectrumTransform.cxx:528 TSpectrumTransform.cxx:529 TSpectrumTransform.cxx:530 TSpectrumTransform.cxx:531 TSpectrumTransform.cxx:532 TSpectrumTransform.cxx:533 TSpectrumTransform.cxx:534 TSpectrumTransform.cxx:535 TSpectrumTransform.cxx:536 TSpectrumTransform.cxx:537 TSpectrumTransform.cxx:538 TSpectrumTransform.cxx:539 TSpectrumTransform.cxx:540 TSpectrumTransform.cxx:541 TSpectrumTransform.cxx:542 TSpectrumTransform.cxx:543 TSpectrumTransform.cxx:544 TSpectrumTransform.cxx:545 TSpectrumTransform.cxx:546 TSpectrumTransform.cxx:547 TSpectrumTransform.cxx:548 TSpectrumTransform.cxx:549 TSpectrumTransform.cxx:550 TSpectrumTransform.cxx:551 TSpectrumTransform.cxx:552 TSpectrumTransform.cxx:553 TSpectrumTransform.cxx:554 TSpectrumTransform.cxx:555 TSpectrumTransform.cxx:556 TSpectrumTransform.cxx:557 TSpectrumTransform.cxx:558 TSpectrumTransform.cxx:559 TSpectrumTransform.cxx:560 TSpectrumTransform.cxx:561 TSpectrumTransform.cxx:562 TSpectrumTransform.cxx:563 TSpectrumTransform.cxx:564 TSpectrumTransform.cxx:565 TSpectrumTransform.cxx:566 TSpectrumTransform.cxx:567 TSpectrumTransform.cxx:568 TSpectrumTransform.cxx:569 TSpectrumTransform.cxx:570 TSpectrumTransform.cxx:571 TSpectrumTransform.cxx:572 TSpectrumTransform.cxx:573 TSpectrumTransform.cxx:574 TSpectrumTransform.cxx:575 TSpectrumTransform.cxx:576 TSpectrumTransform.cxx:577 TSpectrumTransform.cxx:578 TSpectrumTransform.cxx:579 TSpectrumTransform.cxx:580 TSpectrumTransform.cxx:581 TSpectrumTransform.cxx:582 TSpectrumTransform.cxx:583 TSpectrumTransform.cxx:584 TSpectrumTransform.cxx:585 TSpectrumTransform.cxx:586 TSpectrumTransform.cxx:587 TSpectrumTransform.cxx:588 TSpectrumTransform.cxx:589 TSpectrumTransform.cxx:590 TSpectrumTransform.cxx:591 TSpectrumTransform.cxx:592 TSpectrumTransform.cxx:593 TSpectrumTransform.cxx:594 TSpectrumTransform.cxx:595 TSpectrumTransform.cxx:596 TSpectrumTransform.cxx:597 TSpectrumTransform.cxx:598 TSpectrumTransform.cxx:599 TSpectrumTransform.cxx:600 TSpectrumTransform.cxx:601 TSpectrumTransform.cxx:602 TSpectrumTransform.cxx:603 TSpectrumTransform.cxx:604 TSpectrumTransform.cxx:605 TSpectrumTransform.cxx:606 TSpectrumTransform.cxx:607 TSpectrumTransform.cxx:608 TSpectrumTransform.cxx:609 TSpectrumTransform.cxx:610 TSpectrumTransform.cxx:611 TSpectrumTransform.cxx:612 TSpectrumTransform.cxx:613 TSpectrumTransform.cxx:614 TSpectrumTransform.cxx:615 TSpectrumTransform.cxx:616 TSpectrumTransform.cxx:617 TSpectrumTransform.cxx:618 TSpectrumTransform.cxx:619 TSpectrumTransform.cxx:620 TSpectrumTransform.cxx:621 TSpectrumTransform.cxx:622 TSpectrumTransform.cxx:623 TSpectrumTransform.cxx:624 TSpectrumTransform.cxx:625 TSpectrumTransform.cxx:626 TSpectrumTransform.cxx:627 TSpectrumTransform.cxx:628 TSpectrumTransform.cxx:629 TSpectrumTransform.cxx:630 TSpectrumTransform.cxx:631 TSpectrumTransform.cxx:632 TSpectrumTransform.cxx:633 TSpectrumTransform.cxx:634 TSpectrumTransform.cxx:635 TSpectrumTransform.cxx:636 TSpectrumTransform.cxx:637 TSpectrumTransform.cxx:638 TSpectrumTransform.cxx:639 TSpectrumTransform.cxx:640 TSpectrumTransform.cxx:641 TSpectrumTransform.cxx:642 TSpectrumTransform.cxx:643 TSpectrumTransform.cxx:644 TSpectrumTransform.cxx:645 TSpectrumTransform.cxx:646 TSpectrumTransform.cxx:647 TSpectrumTransform.cxx:648 TSpectrumTransform.cxx:649 TSpectrumTransform.cxx:650 TSpectrumTransform.cxx:651 TSpectrumTransform.cxx:652 TSpectrumTransform.cxx:653 TSpectrumTransform.cxx:654 TSpectrumTransform.cxx:655 TSpectrumTransform.cxx:656 TSpectrumTransform.cxx:657 TSpectrumTransform.cxx:658 TSpectrumTransform.cxx:659 TSpectrumTransform.cxx:660 TSpectrumTransform.cxx:661 TSpectrumTransform.cxx:662 TSpectrumTransform.cxx:663 TSpectrumTransform.cxx:664 TSpectrumTransform.cxx:665 TSpectrumTransform.cxx:666 TSpectrumTransform.cxx:667 TSpectrumTransform.cxx:668 TSpectrumTransform.cxx:669 TSpectrumTransform.cxx:670 TSpectrumTransform.cxx:671 TSpectrumTransform.cxx:672 TSpectrumTransform.cxx:673 TSpectrumTransform.cxx:674 TSpectrumTransform.cxx:675 TSpectrumTransform.cxx:676 TSpectrumTransform.cxx:677 TSpectrumTransform.cxx:678 TSpectrumTransform.cxx:679 TSpectrumTransform.cxx:680 TSpectrumTransform.cxx:681 TSpectrumTransform.cxx:682 TSpectrumTransform.cxx:683 TSpectrumTransform.cxx:684 TSpectrumTransform.cxx:685 TSpectrumTransform.cxx:686 TSpectrumTransform.cxx:687 TSpectrumTransform.cxx:688 TSpectrumTransform.cxx:689 TSpectrumTransform.cxx:690 TSpectrumTransform.cxx:691 TSpectrumTransform.cxx:692 TSpectrumTransform.cxx:693 TSpectrumTransform.cxx:694 TSpectrumTransform.cxx:695 TSpectrumTransform.cxx:696 TSpectrumTransform.cxx:697 TSpectrumTransform.cxx:698 TSpectrumTransform.cxx:699 TSpectrumTransform.cxx:700 TSpectrumTransform.cxx:701 TSpectrumTransform.cxx:702 TSpectrumTransform.cxx:703 TSpectrumTransform.cxx:704 TSpectrumTransform.cxx:705 TSpectrumTransform.cxx:706 TSpectrumTransform.cxx:707 TSpectrumTransform.cxx:708 TSpectrumTransform.cxx:709 TSpectrumTransform.cxx:710 TSpectrumTransform.cxx:711 TSpectrumTransform.cxx:712 TSpectrumTransform.cxx:713 TSpectrumTransform.cxx:714 TSpectrumTransform.cxx:715 TSpectrumTransform.cxx:716 TSpectrumTransform.cxx:717 TSpectrumTransform.cxx:718 TSpectrumTransform.cxx:719 TSpectrumTransform.cxx:720 TSpectrumTransform.cxx:721 TSpectrumTransform.cxx:722 TSpectrumTransform.cxx:723 TSpectrumTransform.cxx:724 TSpectrumTransform.cxx:725 TSpectrumTransform.cxx:726 TSpectrumTransform.cxx:727 TSpectrumTransform.cxx:728 TSpectrumTransform.cxx:729 TSpectrumTransform.cxx:730 TSpectrumTransform.cxx:731 TSpectrumTransform.cxx:732 TSpectrumTransform.cxx:733 TSpectrumTransform.cxx:734 TSpectrumTransform.cxx:735 TSpectrumTransform.cxx:736 TSpectrumTransform.cxx:737 TSpectrumTransform.cxx:738 TSpectrumTransform.cxx:739 TSpectrumTransform.cxx:740 TSpectrumTransform.cxx:741 TSpectrumTransform.cxx:742 TSpectrumTransform.cxx:743 TSpectrumTransform.cxx:744 TSpectrumTransform.cxx:745 TSpectrumTransform.cxx:746 TSpectrumTransform.cxx:747 TSpectrumTransform.cxx:748 TSpectrumTransform.cxx:749 TSpectrumTransform.cxx:750 TSpectrumTransform.cxx:751 TSpectrumTransform.cxx:752 TSpectrumTransform.cxx:753 TSpectrumTransform.cxx:754 TSpectrumTransform.cxx:755 TSpectrumTransform.cxx:756 TSpectrumTransform.cxx:757 TSpectrumTransform.cxx:758 TSpectrumTransform.cxx:759 TSpectrumTransform.cxx:760 TSpectrumTransform.cxx:761 TSpectrumTransform.cxx:762 TSpectrumTransform.cxx:763 TSpectrumTransform.cxx:764 TSpectrumTransform.cxx:765 TSpectrumTransform.cxx:766 TSpectrumTransform.cxx:767 TSpectrumTransform.cxx:768 TSpectrumTransform.cxx:769 TSpectrumTransform.cxx:770 TSpectrumTransform.cxx:771 TSpectrumTransform.cxx:772 TSpectrumTransform.cxx:773 TSpectrumTransform.cxx:774 TSpectrumTransform.cxx:775 TSpectrumTransform.cxx:776 TSpectrumTransform.cxx:777 TSpectrumTransform.cxx:778 TSpectrumTransform.cxx:779 TSpectrumTransform.cxx:780 TSpectrumTransform.cxx:781 TSpectrumTransform.cxx:782 TSpectrumTransform.cxx:783 TSpectrumTransform.cxx:784 TSpectrumTransform.cxx:785 TSpectrumTransform.cxx:786 TSpectrumTransform.cxx:787 TSpectrumTransform.cxx:788 TSpectrumTransform.cxx:789 TSpectrumTransform.cxx:790 TSpectrumTransform.cxx:791 TSpectrumTransform.cxx:792 TSpectrumTransform.cxx:793 TSpectrumTransform.cxx:794 TSpectrumTransform.cxx:795 TSpectrumTransform.cxx:796 TSpectrumTransform.cxx:797 TSpectrumTransform.cxx:798 TSpectrumTransform.cxx:799 TSpectrumTransform.cxx:800 TSpectrumTransform.cxx:801 TSpectrumTransform.cxx:802 TSpectrumTransform.cxx:803 TSpectrumTransform.cxx:804 TSpectrumTransform.cxx:805 TSpectrumTransform.cxx:806 TSpectrumTransform.cxx:807 TSpectrumTransform.cxx:808 TSpectrumTransform.cxx:809 TSpectrumTransform.cxx:810 TSpectrumTransform.cxx:811 TSpectrumTransform.cxx:812 TSpectrumTransform.cxx:813 TSpectrumTransform.cxx:814 TSpectrumTransform.cxx:815 TSpectrumTransform.cxx:816 TSpectrumTransform.cxx:817 TSpectrumTransform.cxx:818 TSpectrumTransform.cxx:819 TSpectrumTransform.cxx:820 TSpectrumTransform.cxx:821 TSpectrumTransform.cxx:822 TSpectrumTransform.cxx:823 TSpectrumTransform.cxx:824 TSpectrumTransform.cxx:825 TSpectrumTransform.cxx:826 TSpectrumTransform.cxx:827 TSpectrumTransform.cxx:828 TSpectrumTransform.cxx:829 TSpectrumTransform.cxx:830 TSpectrumTransform.cxx:831 TSpectrumTransform.cxx:832 TSpectrumTransform.cxx:833 TSpectrumTransform.cxx:834 TSpectrumTransform.cxx:835 TSpectrumTransform.cxx:836 TSpectrumTransform.cxx:837 TSpectrumTransform.cxx:838 TSpectrumTransform.cxx:839 TSpectrumTransform.cxx:840 TSpectrumTransform.cxx:841 TSpectrumTransform.cxx:842 TSpectrumTransform.cxx:843 TSpectrumTransform.cxx:844 TSpectrumTransform.cxx:845 TSpectrumTransform.cxx:846 TSpectrumTransform.cxx:847 TSpectrumTransform.cxx:848 TSpectrumTransform.cxx:849 TSpectrumTransform.cxx:850 TSpectrumTransform.cxx:851 TSpectrumTransform.cxx:852 TSpectrumTransform.cxx:853 TSpectrumTransform.cxx:854 TSpectrumTransform.cxx:855 TSpectrumTransform.cxx:856 TSpectrumTransform.cxx:857 TSpectrumTransform.cxx:858 TSpectrumTransform.cxx:859 TSpectrumTransform.cxx:860 TSpectrumTransform.cxx:861 TSpectrumTransform.cxx:862 TSpectrumTransform.cxx:863 TSpectrumTransform.cxx:864 TSpectrumTransform.cxx:865 TSpectrumTransform.cxx:866 TSpectrumTransform.cxx:867 TSpectrumTransform.cxx:868 TSpectrumTransform.cxx:869 TSpectrumTransform.cxx:870 TSpectrumTransform.cxx:871 TSpectrumTransform.cxx:872 TSpectrumTransform.cxx:873 TSpectrumTransform.cxx:874 TSpectrumTransform.cxx:875 TSpectrumTransform.cxx:876 TSpectrumTransform.cxx:877 TSpectrumTransform.cxx:878 TSpectrumTransform.cxx:879 TSpectrumTransform.cxx:880 TSpectrumTransform.cxx:881 TSpectrumTransform.cxx:882 TSpectrumTransform.cxx:883 TSpectrumTransform.cxx:884 TSpectrumTransform.cxx:885 TSpectrumTransform.cxx:886 TSpectrumTransform.cxx:887 TSpectrumTransform.cxx:888 TSpectrumTransform.cxx:889 TSpectrumTransform.cxx:890 TSpectrumTransform.cxx:891 TSpectrumTransform.cxx:892 TSpectrumTransform.cxx:893 TSpectrumTransform.cxx:894 TSpectrumTransform.cxx:895 TSpectrumTransform.cxx:896 TSpectrumTransform.cxx:897 TSpectrumTransform.cxx:898 TSpectrumTransform.cxx:899 TSpectrumTransform.cxx:900 TSpectrumTransform.cxx:901 TSpectrumTransform.cxx:902 TSpectrumTransform.cxx:903 TSpectrumTransform.cxx:904 TSpectrumTransform.cxx:905 TSpectrumTransform.cxx:906 TSpectrumTransform.cxx:907 TSpectrumTransform.cxx:908 TSpectrumTransform.cxx:909 TSpectrumTransform.cxx:910 TSpectrumTransform.cxx:911 TSpectrumTransform.cxx:912 TSpectrumTransform.cxx:913 TSpectrumTransform.cxx:914 TSpectrumTransform.cxx:915 TSpectrumTransform.cxx:916 TSpectrumTransform.cxx:917 TSpectrumTransform.cxx:918 TSpectrumTransform.cxx:919 TSpectrumTransform.cxx:920 TSpectrumTransform.cxx:921 TSpectrumTransform.cxx:922 TSpectrumTransform.cxx:923 TSpectrumTransform.cxx:924 TSpectrumTransform.cxx:925 TSpectrumTransform.cxx:926 TSpectrumTransform.cxx:927 TSpectrumTransform.cxx:928 TSpectrumTransform.cxx:929 TSpectrumTransform.cxx:930 TSpectrumTransform.cxx:931 TSpectrumTransform.cxx:932 TSpectrumTransform.cxx:933 TSpectrumTransform.cxx:934 TSpectrumTransform.cxx:935 TSpectrumTransform.cxx:936 TSpectrumTransform.cxx:937 TSpectrumTransform.cxx:938 TSpectrumTransform.cxx:939 TSpectrumTransform.cxx:940 TSpectrumTransform.cxx:941 TSpectrumTransform.cxx:942 TSpectrumTransform.cxx:943 TSpectrumTransform.cxx:944 TSpectrumTransform.cxx:945 TSpectrumTransform.cxx:946 TSpectrumTransform.cxx:947 TSpectrumTransform.cxx:948 TSpectrumTransform.cxx:949 TSpectrumTransform.cxx:950 TSpectrumTransform.cxx:951 TSpectrumTransform.cxx:952 TSpectrumTransform.cxx:953 TSpectrumTransform.cxx:954 TSpectrumTransform.cxx:955 TSpectrumTransform.cxx:956 TSpectrumTransform.cxx:957 TSpectrumTransform.cxx:958 TSpectrumTransform.cxx:959 TSpectrumTransform.cxx:960 TSpectrumTransform.cxx:961 TSpectrumTransform.cxx:962 TSpectrumTransform.cxx:963 TSpectrumTransform.cxx:964 TSpectrumTransform.cxx:965 TSpectrumTransform.cxx:966 TSpectrumTransform.cxx:967 TSpectrumTransform.cxx:968 TSpectrumTransform.cxx:969 TSpectrumTransform.cxx:970 TSpectrumTransform.cxx:971 TSpectrumTransform.cxx:972 TSpectrumTransform.cxx:973 TSpectrumTransform.cxx:974 TSpectrumTransform.cxx:975 TSpectrumTransform.cxx:976 TSpectrumTransform.cxx:977 TSpectrumTransform.cxx:978 TSpectrumTransform.cxx:979 TSpectrumTransform.cxx:980 TSpectrumTransform.cxx:981 TSpectrumTransform.cxx:982 TSpectrumTransform.cxx:983 TSpectrumTransform.cxx:984 TSpectrumTransform.cxx:985 TSpectrumTransform.cxx:986 TSpectrumTransform.cxx:987 TSpectrumTransform.cxx:988 TSpectrumTransform.cxx:989 TSpectrumTransform.cxx:990 TSpectrumTransform.cxx:991 TSpectrumTransform.cxx:992 TSpectrumTransform.cxx:993 TSpectrumTransform.cxx:994 TSpectrumTransform.cxx:995 TSpectrumTransform.cxx:996 TSpectrumTransform.cxx:997 TSpectrumTransform.cxx:998 TSpectrumTransform.cxx:999 TSpectrumTransform.cxx:1000 TSpectrumTransform.cxx:1001 TSpectrumTransform.cxx:1002 TSpectrumTransform.cxx:1003 TSpectrumTransform.cxx:1004 TSpectrumTransform.cxx:1005 TSpectrumTransform.cxx:1006 TSpectrumTransform.cxx:1007 TSpectrumTransform.cxx:1008 TSpectrumTransform.cxx:1009 TSpectrumTransform.cxx:1010 TSpectrumTransform.cxx:1011 TSpectrumTransform.cxx:1012 TSpectrumTransform.cxx:1013 TSpectrumTransform.cxx:1014 TSpectrumTransform.cxx:1015 TSpectrumTransform.cxx:1016 TSpectrumTransform.cxx:1017 TSpectrumTransform.cxx:1018 TSpectrumTransform.cxx:1019 TSpectrumTransform.cxx:1020 TSpectrumTransform.cxx:1021 TSpectrumTransform.cxx:1022 TSpectrumTransform.cxx:1023 TSpectrumTransform.cxx:1024 TSpectrumTransform.cxx:1025 TSpectrumTransform.cxx:1026 TSpectrumTransform.cxx:1027 TSpectrumTransform.cxx:1028 TSpectrumTransform.cxx:1029 TSpectrumTransform.cxx:1030 TSpectrumTransform.cxx:1031 TSpectrumTransform.cxx:1032 TSpectrumTransform.cxx:1033 TSpectrumTransform.cxx:1034 TSpectrumTransform.cxx:1035 TSpectrumTransform.cxx:1036 TSpectrumTransform.cxx:1037 TSpectrumTransform.cxx:1038 TSpectrumTransform.cxx:1039 TSpectrumTransform.cxx:1040 TSpectrumTransform.cxx:1041 TSpectrumTransform.cxx:1042 TSpectrumTransform.cxx:1043 TSpectrumTransform.cxx:1044 TSpectrumTransform.cxx:1045 TSpectrumTransform.cxx:1046 TSpectrumTransform.cxx:1047 TSpectrumTransform.cxx:1048 TSpectrumTransform.cxx:1049 TSpectrumTransform.cxx:1050 TSpectrumTransform.cxx:1051 TSpectrumTransform.cxx:1052 TSpectrumTransform.cxx:1053 TSpectrumTransform.cxx:1054 TSpectrumTransform.cxx:1055 TSpectrumTransform.cxx:1056 TSpectrumTransform.cxx:1057 TSpectrumTransform.cxx:1058 TSpectrumTransform.cxx:1059 TSpectrumTransform.cxx:1060 TSpectrumTransform.cxx:1061 TSpectrumTransform.cxx:1062 TSpectrumTransform.cxx:1063 TSpectrumTransform.cxx:1064 TSpectrumTransform.cxx:1065 TSpectrumTransform.cxx:1066 TSpectrumTransform.cxx:1067 TSpectrumTransform.cxx:1068 TSpectrumTransform.cxx:1069 TSpectrumTransform.cxx:1070 TSpectrumTransform.cxx:1071 TSpectrumTransform.cxx:1072 TSpectrumTransform.cxx:1073 TSpectrumTransform.cxx:1074 TSpectrumTransform.cxx:1075 TSpectrumTransform.cxx:1076 TSpectrumTransform.cxx:1077 TSpectrumTransform.cxx:1078 TSpectrumTransform.cxx:1079 TSpectrumTransform.cxx:1080 TSpectrumTransform.cxx:1081 TSpectrumTransform.cxx:1082 TSpectrumTransform.cxx:1083 TSpectrumTransform.cxx:1084 TSpectrumTransform.cxx:1085 TSpectrumTransform.cxx:1086 TSpectrumTransform.cxx:1087 TSpectrumTransform.cxx:1088 TSpectrumTransform.cxx:1089 TSpectrumTransform.cxx:1090 TSpectrumTransform.cxx:1091 TSpectrumTransform.cxx:1092 TSpectrumTransform.cxx:1093 TSpectrumTransform.cxx:1094 TSpectrumTransform.cxx:1095 TSpectrumTransform.cxx:1096 TSpectrumTransform.cxx:1097 TSpectrumTransform.cxx:1098 TSpectrumTransform.cxx:1099 TSpectrumTransform.cxx:1100 TSpectrumTransform.cxx:1101 TSpectrumTransform.cxx:1102 TSpectrumTransform.cxx:1103 TSpectrumTransform.cxx:1104 TSpectrumTransform.cxx:1105 TSpectrumTransform.cxx:1106 TSpectrumTransform.cxx:1107 TSpectrumTransform.cxx:1108 TSpectrumTransform.cxx:1109 TSpectrumTransform.cxx:1110 TSpectrumTransform.cxx:1111 TSpectrumTransform.cxx:1112 TSpectrumTransform.cxx:1113 TSpectrumTransform.cxx:1114 TSpectrumTransform.cxx:1115 TSpectrumTransform.cxx:1116 TSpectrumTransform.cxx:1117 TSpectrumTransform.cxx:1118 TSpectrumTransform.cxx:1119 TSpectrumTransform.cxx:1120 TSpectrumTransform.cxx:1121 TSpectrumTransform.cxx:1122 TSpectrumTransform.cxx:1123 TSpectrumTransform.cxx:1124 TSpectrumTransform.cxx:1125 TSpectrumTransform.cxx:1126 TSpectrumTransform.cxx:1127 TSpectrumTransform.cxx:1128 TSpectrumTransform.cxx:1129 TSpectrumTransform.cxx:1130 TSpectrumTransform.cxx:1131 TSpectrumTransform.cxx:1132 TSpectrumTransform.cxx:1133 TSpectrumTransform.cxx:1134 TSpectrumTransform.cxx:1135 TSpectrumTransform.cxx:1136 TSpectrumTransform.cxx:1137 TSpectrumTransform.cxx:1138 TSpectrumTransform.cxx:1139 TSpectrumTransform.cxx:1140 TSpectrumTransform.cxx:1141 TSpectrumTransform.cxx:1142 TSpectrumTransform.cxx:1143 TSpectrumTransform.cxx:1144 TSpectrumTransform.cxx:1145 TSpectrumTransform.cxx:1146 TSpectrumTransform.cxx:1147 TSpectrumTransform.cxx:1148 TSpectrumTransform.cxx:1149 TSpectrumTransform.cxx:1150 TSpectrumTransform.cxx:1151 TSpectrumTransform.cxx:1152 TSpectrumTransform.cxx:1153 TSpectrumTransform.cxx:1154 TSpectrumTransform.cxx:1155 TSpectrumTransform.cxx:1156 TSpectrumTransform.cxx:1157 TSpectrumTransform.cxx:1158 TSpectrumTransform.cxx:1159 TSpectrumTransform.cxx:1160 TSpectrumTransform.cxx:1161 TSpectrumTransform.cxx:1162 TSpectrumTransform.cxx:1163 TSpectrumTransform.cxx:1164 TSpectrumTransform.cxx:1165 TSpectrumTransform.cxx:1166 TSpectrumTransform.cxx:1167 TSpectrumTransform.cxx:1168 TSpectrumTransform.cxx:1169 TSpectrumTransform.cxx:1170 TSpectrumTransform.cxx:1171 TSpectrumTransform.cxx:1172 TSpectrumTransform.cxx:1173 TSpectrumTransform.cxx:1174 TSpectrumTransform.cxx:1175 TSpectrumTransform.cxx:1176 TSpectrumTransform.cxx:1177 TSpectrumTransform.cxx:1178 TSpectrumTransform.cxx:1179 TSpectrumTransform.cxx:1180 TSpectrumTransform.cxx:1181 TSpectrumTransform.cxx:1182 TSpectrumTransform.cxx:1183 TSpectrumTransform.cxx:1184 TSpectrumTransform.cxx:1185 TSpectrumTransform.cxx:1186 TSpectrumTransform.cxx:1187 TSpectrumTransform.cxx:1188 TSpectrumTransform.cxx:1189 TSpectrumTransform.cxx:1190 TSpectrumTransform.cxx:1191 TSpectrumTransform.cxx:1192 TSpectrumTransform.cxx:1193 TSpectrumTransform.cxx:1194 TSpectrumTransform.cxx:1195 TSpectrumTransform.cxx:1196 TSpectrumTransform.cxx:1197 TSpectrumTransform.cxx:1198 TSpectrumTransform.cxx:1199 TSpectrumTransform.cxx:1200 TSpectrumTransform.cxx:1201 TSpectrumTransform.cxx:1202 TSpectrumTransform.cxx:1203 TSpectrumTransform.cxx:1204 TSpectrumTransform.cxx:1205 TSpectrumTransform.cxx:1206 TSpectrumTransform.cxx:1207 TSpectrumTransform.cxx:1208 TSpectrumTransform.cxx:1209 TSpectrumTransform.cxx:1210 TSpectrumTransform.cxx:1211 TSpectrumTransform.cxx:1212 TSpectrumTransform.cxx:1213 TSpectrumTransform.cxx:1214 TSpectrumTransform.cxx:1215 TSpectrumTransform.cxx:1216 TSpectrumTransform.cxx:1217 TSpectrumTransform.cxx:1218 TSpectrumTransform.cxx:1219 TSpectrumTransform.cxx:1220 TSpectrumTransform.cxx:1221 TSpectrumTransform.cxx:1222 TSpectrumTransform.cxx:1223 TSpectrumTransform.cxx:1224 TSpectrumTransform.cxx:1225 TSpectrumTransform.cxx:1226 TSpectrumTransform.cxx:1227 TSpectrumTransform.cxx:1228 TSpectrumTransform.cxx:1229 TSpectrumTransform.cxx:1230 TSpectrumTransform.cxx:1231 TSpectrumTransform.cxx:1232 TSpectrumTransform.cxx:1233 TSpectrumTransform.cxx:1234 TSpectrumTransform.cxx:1235 TSpectrumTransform.cxx:1236 TSpectrumTransform.cxx:1237 TSpectrumTransform.cxx:1238 TSpectrumTransform.cxx:1239 TSpectrumTransform.cxx:1240 TSpectrumTransform.cxx:1241 TSpectrumTransform.cxx:1242 TSpectrumTransform.cxx:1243 TSpectrumTransform.cxx:1244 TSpectrumTransform.cxx:1245 TSpectrumTransform.cxx:1246 TSpectrumTransform.cxx:1247 TSpectrumTransform.cxx:1248 TSpectrumTransform.cxx:1249 TSpectrumTransform.cxx:1250 TSpectrumTransform.cxx:1251 TSpectrumTransform.cxx:1252 TSpectrumTransform.cxx:1253 TSpectrumTransform.cxx:1254 TSpectrumTransform.cxx:1255 TSpectrumTransform.cxx:1256 TSpectrumTransform.cxx:1257 TSpectrumTransform.cxx:1258 TSpectrumTransform.cxx:1259 TSpectrumTransform.cxx:1260 TSpectrumTransform.cxx:1261 TSpectrumTransform.cxx:1262 TSpectrumTransform.cxx:1263 TSpectrumTransform.cxx:1264 TSpectrumTransform.cxx:1265 TSpectrumTransform.cxx:1266 TSpectrumTransform.cxx:1267 TSpectrumTransform.cxx:1268 TSpectrumTransform.cxx:1269 TSpectrumTransform.cxx:1270 TSpectrumTransform.cxx:1271 TSpectrumTransform.cxx:1272 TSpectrumTransform.cxx:1273 TSpectrumTransform.cxx:1274 TSpectrumTransform.cxx:1275 TSpectrumTransform.cxx:1276 TSpectrumTransform.cxx:1277 TSpectrumTransform.cxx:1278 TSpectrumTransform.cxx:1279 TSpectrumTransform.cxx:1280 TSpectrumTransform.cxx:1281 TSpectrumTransform.cxx:1282 TSpectrumTransform.cxx:1283 TSpectrumTransform.cxx:1284 TSpectrumTransform.cxx:1285 TSpectrumTransform.cxx:1286 TSpectrumTransform.cxx:1287 TSpectrumTransform.cxx:1288 TSpectrumTransform.cxx:1289 TSpectrumTransform.cxx:1290 TSpectrumTransform.cxx:1291 TSpectrumTransform.cxx:1292 TSpectrumTransform.cxx:1293 TSpectrumTransform.cxx:1294 TSpectrumTransform.cxx:1295 TSpectrumTransform.cxx:1296 TSpectrumTransform.cxx:1297 TSpectrumTransform.cxx:1298 TSpectrumTransform.cxx:1299 TSpectrumTransform.cxx:1300 TSpectrumTransform.cxx:1301 TSpectrumTransform.cxx:1302 TSpectrumTransform.cxx:1303 TSpectrumTransform.cxx:1304 TSpectrumTransform.cxx:1305 TSpectrumTransform.cxx:1306 TSpectrumTransform.cxx:1307 TSpectrumTransform.cxx:1308 TSpectrumTransform.cxx:1309 TSpectrumTransform.cxx:1310 TSpectrumTransform.cxx:1311 TSpectrumTransform.cxx:1312 TSpectrumTransform.cxx:1313 TSpectrumTransform.cxx:1314 TSpectrumTransform.cxx:1315 TSpectrumTransform.cxx:1316 TSpectrumTransform.cxx:1317 TSpectrumTransform.cxx:1318 TSpectrumTransform.cxx:1319 TSpectrumTransform.cxx:1320 TSpectrumTransform.cxx:1321 TSpectrumTransform.cxx:1322 TSpectrumTransform.cxx:1323 TSpectrumTransform.cxx:1324 TSpectrumTransform.cxx:1325 TSpectrumTransform.cxx:1326 TSpectrumTransform.cxx:1327 TSpectrumTransform.cxx:1328 TSpectrumTransform.cxx:1329 TSpectrumTransform.cxx:1330 TSpectrumTransform.cxx:1331 TSpectrumTransform.cxx:1332 TSpectrumTransform.cxx:1333 TSpectrumTransform.cxx:1334 TSpectrumTransform.cxx:1335 TSpectrumTransform.cxx:1336 TSpectrumTransform.cxx:1337 TSpectrumTransform.cxx:1338 TSpectrumTransform.cxx:1339 TSpectrumTransform.cxx:1340 TSpectrumTransform.cxx:1341 TSpectrumTransform.cxx:1342 TSpectrumTransform.cxx:1343 TSpectrumTransform.cxx:1344 TSpectrumTransform.cxx:1345 TSpectrumTransform.cxx:1346 TSpectrumTransform.cxx:1347 TSpectrumTransform.cxx:1348 TSpectrumTransform.cxx:1349 TSpectrumTransform.cxx:1350 TSpectrumTransform.cxx:1351 TSpectrumTransform.cxx:1352 TSpectrumTransform.cxx:1353 TSpectrumTransform.cxx:1354 TSpectrumTransform.cxx:1355 TSpectrumTransform.cxx:1356 TSpectrumTransform.cxx:1357 TSpectrumTransform.cxx:1358 TSpectrumTransform.cxx:1359 TSpectrumTransform.cxx:1360 TSpectrumTransform.cxx:1361 TSpectrumTransform.cxx:1362 TSpectrumTransform.cxx:1363 TSpectrumTransform.cxx:1364 TSpectrumTransform.cxx:1365 TSpectrumTransform.cxx:1366 TSpectrumTransform.cxx:1367 TSpectrumTransform.cxx:1368 TSpectrumTransform.cxx:1369 TSpectrumTransform.cxx:1370 TSpectrumTransform.cxx:1371 TSpectrumTransform.cxx:1372 TSpectrumTransform.cxx:1373 TSpectrumTransform.cxx:1374 TSpectrumTransform.cxx:1375 TSpectrumTransform.cxx:1376 TSpectrumTransform.cxx:1377 TSpectrumTransform.cxx:1378 TSpectrumTransform.cxx:1379 TSpectrumTransform.cxx:1380 TSpectrumTransform.cxx:1381 TSpectrumTransform.cxx:1382 TSpectrumTransform.cxx:1383 TSpectrumTransform.cxx:1384 TSpectrumTransform.cxx:1385 TSpectrumTransform.cxx:1386 TSpectrumTransform.cxx:1387 TSpectrumTransform.cxx:1388 TSpectrumTransform.cxx:1389 TSpectrumTransform.cxx:1390 TSpectrumTransform.cxx:1391 TSpectrumTransform.cxx:1392 TSpectrumTransform.cxx:1393 TSpectrumTransform.cxx:1394 TSpectrumTransform.cxx:1395 TSpectrumTransform.cxx:1396 TSpectrumTransform.cxx:1397 TSpectrumTransform.cxx:1398 TSpectrumTransform.cxx:1399 TSpectrumTransform.cxx:1400 TSpectrumTransform.cxx:1401 TSpectrumTransform.cxx:1402 TSpectrumTransform.cxx:1403 TSpectrumTransform.cxx:1404 TSpectrumTransform.cxx:1405 TSpectrumTransform.cxx:1406 TSpectrumTransform.cxx:1407 TSpectrumTransform.cxx:1408 TSpectrumTransform.cxx:1409 TSpectrumTransform.cxx:1410 TSpectrumTransform.cxx:1411 TSpectrumTransform.cxx:1412 TSpectrumTransform.cxx:1413 TSpectrumTransform.cxx:1414 TSpectrumTransform.cxx:1415 TSpectrumTransform.cxx:1416 TSpectrumTransform.cxx:1417 TSpectrumTransform.cxx:1418 TSpectrumTransform.cxx:1419 TSpectrumTransform.cxx:1420 TSpectrumTransform.cxx:1421 TSpectrumTransform.cxx:1422 TSpectrumTransform.cxx:1423 TSpectrumTransform.cxx:1424 TSpectrumTransform.cxx:1425 TSpectrumTransform.cxx:1426 TSpectrumTransform.cxx:1427 TSpectrumTransform.cxx:1428 TSpectrumTransform.cxx:1429 TSpectrumTransform.cxx:1430 TSpectrumTransform.cxx:1431 TSpectrumTransform.cxx:1432 TSpectrumTransform.cxx:1433 TSpectrumTransform.cxx:1434 TSpectrumTransform.cxx:1435 TSpectrumTransform.cxx:1436 TSpectrumTransform.cxx:1437 TSpectrumTransform.cxx:1438 TSpectrumTransform.cxx:1439 TSpectrumTransform.cxx:1440 TSpectrumTransform.cxx:1441 TSpectrumTransform.cxx:1442 TSpectrumTransform.cxx:1443 TSpectrumTransform.cxx:1444 TSpectrumTransform.cxx:1445 TSpectrumTransform.cxx:1446 TSpectrumTransform.cxx:1447 TSpectrumTransform.cxx:1448 TSpectrumTransform.cxx:1449 TSpectrumTransform.cxx:1450 TSpectrumTransform.cxx:1451 TSpectrumTransform.cxx:1452 TSpectrumTransform.cxx:1453 TSpectrumTransform.cxx:1454 TSpectrumTransform.cxx:1455 TSpectrumTransform.cxx:1456 TSpectrumTransform.cxx:1457 TSpectrumTransform.cxx:1458 TSpectrumTransform.cxx:1459 TSpectrumTransform.cxx:1460 TSpectrumTransform.cxx:1461 TSpectrumTransform.cxx:1462 TSpectrumTransform.cxx:1463 TSpectrumTransform.cxx:1464 TSpectrumTransform.cxx:1465 TSpectrumTransform.cxx:1466 TSpectrumTransform.cxx:1467 TSpectrumTransform.cxx:1468 TSpectrumTransform.cxx:1469 TSpectrumTransform.cxx:1470 TSpectrumTransform.cxx:1471 TSpectrumTransform.cxx:1472 TSpectrumTransform.cxx:1473 TSpectrumTransform.cxx:1474 TSpectrumTransform.cxx:1475 TSpectrumTransform.cxx:1476 TSpectrumTransform.cxx:1477 TSpectrumTransform.cxx:1478 TSpectrumTransform.cxx:1479 TSpectrumTransform.cxx:1480 TSpectrumTransform.cxx:1481 TSpectrumTransform.cxx:1482 TSpectrumTransform.cxx:1483 TSpectrumTransform.cxx:1484 TSpectrumTransform.cxx:1485 TSpectrumTransform.cxx:1486 TSpectrumTransform.cxx:1487 TSpectrumTransform.cxx:1488 TSpectrumTransform.cxx:1489 TSpectrumTransform.cxx:1490 TSpectrumTransform.cxx:1491 TSpectrumTransform.cxx:1492 TSpectrumTransform.cxx:1493 TSpectrumTransform.cxx:1494 TSpectrumTransform.cxx:1495 TSpectrumTransform.cxx:1496 TSpectrumTransform.cxx:1497 TSpectrumTransform.cxx:1498 TSpectrumTransform.cxx:1499 TSpectrumTransform.cxx:1500 TSpectrumTransform.cxx:1501 TSpectrumTransform.cxx:1502 TSpectrumTransform.cxx:1503 TSpectrumTransform.cxx:1504 TSpectrumTransform.cxx:1505 TSpectrumTransform.cxx:1506 TSpectrumTransform.cxx:1507 TSpectrumTransform.cxx:1508 TSpectrumTransform.cxx:1509 TSpectrumTransform.cxx:1510 TSpectrumTransform.cxx:1511 TSpectrumTransform.cxx:1512 TSpectrumTransform.cxx:1513 TSpectrumTransform.cxx:1514 TSpectrumTransform.cxx:1515 TSpectrumTransform.cxx:1516 TSpectrumTransform.cxx:1517 TSpectrumTransform.cxx:1518 TSpectrumTransform.cxx:1519 TSpectrumTransform.cxx:1520 TSpectrumTransform.cxx:1521 TSpectrumTransform.cxx:1522 TSpectrumTransform.cxx:1523 TSpectrumTransform.cxx:1524 TSpectrumTransform.cxx:1525 TSpectrumTransform.cxx:1526 TSpectrumTransform.cxx:1527 TSpectrumTransform.cxx:1528 TSpectrumTransform.cxx:1529 TSpectrumTransform.cxx:1530 TSpectrumTransform.cxx:1531 TSpectrumTransform.cxx:1532 TSpectrumTransform.cxx:1533 TSpectrumTransform.cxx:1534 TSpectrumTransform.cxx:1535 TSpectrumTransform.cxx:1536 TSpectrumTransform.cxx:1537 TSpectrumTransform.cxx:1538 TSpectrumTransform.cxx:1539 TSpectrumTransform.cxx:1540 TSpectrumTransform.cxx:1541 TSpectrumTransform.cxx:1542 TSpectrumTransform.cxx:1543 TSpectrumTransform.cxx:1544 TSpectrumTransform.cxx:1545 TSpectrumTransform.cxx:1546 TSpectrumTransform.cxx:1547 TSpectrumTransform.cxx:1548 TSpectrumTransform.cxx:1549 TSpectrumTransform.cxx:1550 TSpectrumTransform.cxx:1551 TSpectrumTransform.cxx:1552 TSpectrumTransform.cxx:1553 TSpectrumTransform.cxx:1554 TSpectrumTransform.cxx:1555 TSpectrumTransform.cxx:1556 TSpectrumTransform.cxx:1557 TSpectrumTransform.cxx:1558 TSpectrumTransform.cxx:1559 TSpectrumTransform.cxx:1560 TSpectrumTransform.cxx:1561 TSpectrumTransform.cxx:1562 TSpectrumTransform.cxx:1563 TSpectrumTransform.cxx:1564 TSpectrumTransform.cxx:1565 TSpectrumTransform.cxx:1566 TSpectrumTransform.cxx:1567 TSpectrumTransform.cxx:1568 TSpectrumTransform.cxx:1569 TSpectrumTransform.cxx:1570 TSpectrumTransform.cxx:1571 TSpectrumTransform.cxx:1572 TSpectrumTransform.cxx:1573 TSpectrumTransform.cxx:1574 TSpectrumTransform.cxx:1575 TSpectrumTransform.cxx:1576 TSpectrumTransform.cxx:1577 TSpectrumTransform.cxx:1578 TSpectrumTransform.cxx:1579 TSpectrumTransform.cxx:1580 TSpectrumTransform.cxx:1581 TSpectrumTransform.cxx:1582 TSpectrumTransform.cxx:1583 TSpectrumTransform.cxx:1584 TSpectrumTransform.cxx:1585 TSpectrumTransform.cxx:1586 TSpectrumTransform.cxx:1587 TSpectrumTransform.cxx:1588 TSpectrumTransform.cxx:1589 TSpectrumTransform.cxx:1590 TSpectrumTransform.cxx:1591 TSpectrumTransform.cxx:1592 TSpectrumTransform.cxx:1593 TSpectrumTransform.cxx:1594 TSpectrumTransform.cxx:1595 TSpectrumTransform.cxx:1596 TSpectrumTransform.cxx:1597 TSpectrumTransform.cxx:1598 TSpectrumTransform.cxx:1599 TSpectrumTransform.cxx:1600 TSpectrumTransform.cxx:1601 TSpectrumTransform.cxx:1602 TSpectrumTransform.cxx:1603 TSpectrumTransform.cxx:1604 TSpectrumTransform.cxx:1605 TSpectrumTransform.cxx:1606 TSpectrumTransform.cxx:1607 TSpectrumTransform.cxx:1608 TSpectrumTransform.cxx:1609 TSpectrumTransform.cxx:1610 TSpectrumTransform.cxx:1611 TSpectrumTransform.cxx:1612 TSpectrumTransform.cxx:1613 TSpectrumTransform.cxx:1614 TSpectrumTransform.cxx:1615 TSpectrumTransform.cxx:1616 TSpectrumTransform.cxx:1617 TSpectrumTransform.cxx:1618 TSpectrumTransform.cxx:1619 TSpectrumTransform.cxx:1620 TSpectrumTransform.cxx:1621 TSpectrumTransform.cxx:1622 TSpectrumTransform.cxx:1623 TSpectrumTransform.cxx:1624 TSpectrumTransform.cxx:1625 TSpectrumTransform.cxx:1626 TSpectrumTransform.cxx:1627 TSpectrumTransform.cxx:1628 TSpectrumTransform.cxx:1629 TSpectrumTransform.cxx:1630 TSpectrumTransform.cxx:1631 TSpectrumTransform.cxx:1632 TSpectrumTransform.cxx:1633 TSpectrumTransform.cxx:1634 TSpectrumTransform.cxx:1635 TSpectrumTransform.cxx:1636 TSpectrumTransform.cxx:1637 TSpectrumTransform.cxx:1638 TSpectrumTransform.cxx:1639 TSpectrumTransform.cxx:1640 TSpectrumTransform.cxx:1641 TSpectrumTransform.cxx:1642 TSpectrumTransform.cxx:1643 TSpectrumTransform.cxx:1644 TSpectrumTransform.cxx:1645 TSpectrumTransform.cxx:1646 TSpectrumTransform.cxx:1647 TSpectrumTransform.cxx:1648 TSpectrumTransform.cxx:1649 TSpectrumTransform.cxx:1650 TSpectrumTransform.cxx:1651 TSpectrumTransform.cxx:1652 TSpectrumTransform.cxx:1653 TSpectrumTransform.cxx:1654 TSpectrumTransform.cxx:1655 TSpectrumTransform.cxx:1656 TSpectrumTransform.cxx:1657 TSpectrumTransform.cxx:1658 TSpectrumTransform.cxx:1659 TSpectrumTransform.cxx:1660 TSpectrumTransform.cxx:1661 TSpectrumTransform.cxx:1662 TSpectrumTransform.cxx:1663 TSpectrumTransform.cxx:1664 TSpectrumTransform.cxx:1665 TSpectrumTransform.cxx:1666 TSpectrumTransform.cxx:1667 TSpectrumTransform.cxx:1668 TSpectrumTransform.cxx:1669 TSpectrumTransform.cxx:1670 TSpectrumTransform.cxx:1671 TSpectrumTransform.cxx:1672 TSpectrumTransform.cxx:1673 TSpectrumTransform.cxx:1674 TSpectrumTransform.cxx:1675 TSpectrumTransform.cxx:1676 TSpectrumTransform.cxx:1677 TSpectrumTransform.cxx:1678 TSpectrumTransform.cxx:1679 TSpectrumTransform.cxx:1680 TSpectrumTransform.cxx:1681 TSpectrumTransform.cxx:1682 TSpectrumTransform.cxx:1683 TSpectrumTransform.cxx:1684 TSpectrumTransform.cxx:1685 TSpectrumTransform.cxx:1686 TSpectrumTransform.cxx:1687 TSpectrumTransform.cxx:1688 TSpectrumTransform.cxx:1689 TSpectrumTransform.cxx:1690 TSpectrumTransform.cxx:1691 TSpectrumTransform.cxx:1692 TSpectrumTransform.cxx:1693 TSpectrumTransform.cxx:1694 TSpectrumTransform.cxx:1695 TSpectrumTransform.cxx:1696 TSpectrumTransform.cxx:1697 TSpectrumTransform.cxx:1698 TSpectrumTransform.cxx:1699 TSpectrumTransform.cxx:1700 TSpectrumTransform.cxx:1701 TSpectrumTransform.cxx:1702 TSpectrumTransform.cxx:1703 TSpectrumTransform.cxx:1704 TSpectrumTransform.cxx:1705 TSpectrumTransform.cxx:1706 TSpectrumTransform.cxx:1707 TSpectrumTransform.cxx:1708 TSpectrumTransform.cxx:1709 TSpectrumTransform.cxx:1710 TSpectrumTransform.cxx:1711 TSpectrumTransform.cxx:1712 TSpectrumTransform.cxx:1713 TSpectrumTransform.cxx:1714 TSpectrumTransform.cxx:1715 TSpectrumTransform.cxx:1716 TSpectrumTransform.cxx:1717 TSpectrumTransform.cxx:1718 TSpectrumTransform.cxx:1719 TSpectrumTransform.cxx:1720 TSpectrumTransform.cxx:1721 TSpectrumTransform.cxx:1722 TSpectrumTransform.cxx:1723 TSpectrumTransform.cxx:1724 TSpectrumTransform.cxx:1725 TSpectrumTransform.cxx:1726 TSpectrumTransform.cxx:1727 TSpectrumTransform.cxx:1728 TSpectrumTransform.cxx:1729 TSpectrumTransform.cxx:1730 TSpectrumTransform.cxx:1731 TSpectrumTransform.cxx:1732 TSpectrumTransform.cxx:1733 TSpectrumTransform.cxx:1734 TSpectrumTransform.cxx:1735 TSpectrumTransform.cxx:1736 TSpectrumTransform.cxx:1737 TSpectrumTransform.cxx:1738 TSpectrumTransform.cxx:1739 TSpectrumTransform.cxx:1740 TSpectrumTransform.cxx:1741 TSpectrumTransform.cxx:1742 TSpectrumTransform.cxx:1743 TSpectrumTransform.cxx:1744 TSpectrumTransform.cxx:1745 TSpectrumTransform.cxx:1746 TSpectrumTransform.cxx:1747 TSpectrumTransform.cxx:1748 TSpectrumTransform.cxx:1749 TSpectrumTransform.cxx:1750 TSpectrumTransform.cxx:1751 TSpectrumTransform.cxx:1752 TSpectrumTransform.cxx:1753 TSpectrumTransform.cxx:1754 TSpectrumTransform.cxx:1755 TSpectrumTransform.cxx:1756 TSpectrumTransform.cxx:1757 TSpectrumTransform.cxx:1758 TSpectrumTransform.cxx:1759 TSpectrumTransform.cxx:1760 TSpectrumTransform.cxx:1761 TSpectrumTransform.cxx:1762 TSpectrumTransform.cxx:1763 TSpectrumTransform.cxx:1764 TSpectrumTransform.cxx:1765 TSpectrumTransform.cxx:1766 TSpectrumTransform.cxx:1767 TSpectrumTransform.cxx:1768 TSpectrumTransform.cxx:1769 TSpectrumTransform.cxx:1770 TSpectrumTransform.cxx:1771 TSpectrumTransform.cxx:1772 TSpectrumTransform.cxx:1773 TSpectrumTransform.cxx:1774 TSpectrumTransform.cxx:1775 TSpectrumTransform.cxx:1776 TSpectrumTransform.cxx:1777 TSpectrumTransform.cxx:1778 TSpectrumTransform.cxx:1779 TSpectrumTransform.cxx:1780 TSpectrumTransform.cxx:1781 TSpectrumTransform.cxx:1782 TSpectrumTransform.cxx:1783 TSpectrumTransform.cxx:1784 TSpectrumTransform.cxx:1785 TSpectrumTransform.cxx:1786 TSpectrumTransform.cxx:1787 TSpectrumTransform.cxx:1788 TSpectrumTransform.cxx:1789 TSpectrumTransform.cxx:1790 TSpectrumTransform.cxx:1791 TSpectrumTransform.cxx:1792 TSpectrumTransform.cxx:1793 TSpectrumTransform.cxx:1794 TSpectrumTransform.cxx:1795 TSpectrumTransform.cxx:1796 TSpectrumTransform.cxx:1797 TSpectrumTransform.cxx:1798 TSpectrumTransform.cxx:1799 TSpectrumTransform.cxx:1800 TSpectrumTransform.cxx:1801 TSpectrumTransform.cxx:1802 TSpectrumTransform.cxx:1803 TSpectrumTransform.cxx:1804 TSpectrumTransform.cxx:1805 TSpectrumTransform.cxx:1806 TSpectrumTransform.cxx:1807 TSpectrumTransform.cxx:1808 TSpectrumTransform.cxx:1809 TSpectrumTransform.cxx:1810 TSpectrumTransform.cxx:1811 TSpectrumTransform.cxx:1812 TSpectrumTransform.cxx:1813 TSpectrumTransform.cxx:1814 TSpectrumTransform.cxx:1815 TSpectrumTransform.cxx:1816 TSpectrumTransform.cxx:1817 TSpectrumTransform.cxx:1818 TSpectrumTransform.cxx:1819 TSpectrumTransform.cxx:1820 TSpectrumTransform.cxx:1821 TSpectrumTransform.cxx:1822 TSpectrumTransform.cxx:1823 TSpectrumTransform.cxx:1824 TSpectrumTransform.cxx:1825 TSpectrumTransform.cxx:1826 TSpectrumTransform.cxx:1827 TSpectrumTransform.cxx:1828 TSpectrumTransform.cxx:1829 TSpectrumTransform.cxx:1830 TSpectrumTransform.cxx:1831 TSpectrumTransform.cxx:1832 TSpectrumTransform.cxx:1833 TSpectrumTransform.cxx:1834 TSpectrumTransform.cxx:1835 TSpectrumTransform.cxx:1836 TSpectrumTransform.cxx:1837 TSpectrumTransform.cxx:1838 TSpectrumTransform.cxx:1839 TSpectrumTransform.cxx:1840 TSpectrumTransform.cxx:1841 TSpectrumTransform.cxx:1842 TSpectrumTransform.cxx:1843 TSpectrumTransform.cxx:1844 TSpectrumTransform.cxx:1845 TSpectrumTransform.cxx:1846 TSpectrumTransform.cxx:1847 TSpectrumTransform.cxx:1848 TSpectrumTransform.cxx:1849 TSpectrumTransform.cxx:1850 TSpectrumTransform.cxx:1851 TSpectrumTransform.cxx:1852 TSpectrumTransform.cxx:1853 TSpectrumTransform.cxx:1854 TSpectrumTransform.cxx:1855 TSpectrumTransform.cxx:1856 TSpectrumTransform.cxx:1857 TSpectrumTransform.cxx:1858 TSpectrumTransform.cxx:1859 TSpectrumTransform.cxx:1860 TSpectrumTransform.cxx:1861 TSpectrumTransform.cxx:1862 TSpectrumTransform.cxx:1863 TSpectrumTransform.cxx:1864 TSpectrumTransform.cxx:1865 TSpectrumTransform.cxx:1866 TSpectrumTransform.cxx:1867 TSpectrumTransform.cxx:1868 TSpectrumTransform.cxx:1869 TSpectrumTransform.cxx:1870 TSpectrumTransform.cxx:1871 TSpectrumTransform.cxx:1872 TSpectrumTransform.cxx:1873 TSpectrumTransform.cxx:1874 TSpectrumTransform.cxx:1875 TSpectrumTransform.cxx:1876 TSpectrumTransform.cxx:1877 TSpectrumTransform.cxx:1878 TSpectrumTransform.cxx:1879 TSpectrumTransform.cxx:1880 TSpectrumTransform.cxx:1881 TSpectrumTransform.cxx:1882 TSpectrumTransform.cxx:1883 TSpectrumTransform.cxx:1884 TSpectrumTransform.cxx:1885 TSpectrumTransform.cxx:1886 TSpectrumTransform.cxx:1887 TSpectrumTransform.cxx:1888 TSpectrumTransform.cxx:1889 TSpectrumTransform.cxx:1890 TSpectrumTransform.cxx:1891 TSpectrumTransform.cxx:1892 TSpectrumTransform.cxx:1893 TSpectrumTransform.cxx:1894 TSpectrumTransform.cxx:1895 TSpectrumTransform.cxx:1896 TSpectrumTransform.cxx:1897 TSpectrumTransform.cxx:1898 TSpectrumTransform.cxx:1899 TSpectrumTransform.cxx:1900 TSpectrumTransform.cxx:1901 TSpectrumTransform.cxx:1902 TSpectrumTransform.cxx:1903 TSpectrumTransform.cxx:1904 TSpectrumTransform.cxx:1905 TSpectrumTransform.cxx:1906 TSpectrumTransform.cxx:1907 TSpectrumTransform.cxx:1908 TSpectrumTransform.cxx:1909 TSpectrumTransform.cxx:1910 TSpectrumTransform.cxx:1911 TSpectrumTransform.cxx:1912 TSpectrumTransform.cxx:1913 TSpectrumTransform.cxx:1914 TSpectrumTransform.cxx:1915 TSpectrumTransform.cxx:1916 TSpectrumTransform.cxx:1917 TSpectrumTransform.cxx:1918 TSpectrumTransform.cxx:1919 TSpectrumTransform.cxx:1920 TSpectrumTransform.cxx:1921 TSpectrumTransform.cxx:1922 TSpectrumTransform.cxx:1923 TSpectrumTransform.cxx:1924 TSpectrumTransform.cxx:1925 TSpectrumTransform.cxx:1926 TSpectrumTransform.cxx:1927 TSpectrumTransform.cxx:1928 TSpectrumTransform.cxx:1929 TSpectrumTransform.cxx:1930 TSpectrumTransform.cxx:1931 TSpectrumTransform.cxx:1932 TSpectrumTransform.cxx:1933 TSpectrumTransform.cxx:1934 TSpectrumTransform.cxx:1935 TSpectrumTransform.cxx:1936 TSpectrumTransform.cxx:1937 TSpectrumTransform.cxx:1938 TSpectrumTransform.cxx:1939 TSpectrumTransform.cxx:1940 TSpectrumTransform.cxx:1941 TSpectrumTransform.cxx:1942 TSpectrumTransform.cxx:1943 TSpectrumTransform.cxx:1944 TSpectrumTransform.cxx:1945 TSpectrumTransform.cxx:1946 TSpectrumTransform.cxx:1947 TSpectrumTransform.cxx:1948 TSpectrumTransform.cxx:1949 TSpectrumTransform.cxx:1950 TSpectrumTransform.cxx:1951 TSpectrumTransform.cxx:1952 TSpectrumTransform.cxx:1953 TSpectrumTransform.cxx:1954 TSpectrumTransform.cxx:1955 TSpectrumTransform.cxx:1956 TSpectrumTransform.cxx:1957 TSpectrumTransform.cxx:1958 TSpectrumTransform.cxx:1959 TSpectrumTransform.cxx:1960 TSpectrumTransform.cxx:1961 TSpectrumTransform.cxx:1962 TSpectrumTransform.cxx:1963 TSpectrumTransform.cxx:1964 TSpectrumTransform.cxx:1965 TSpectrumTransform.cxx:1966 TSpectrumTransform.cxx:1967 TSpectrumTransform.cxx:1968 TSpectrumTransform.cxx:1969 TSpectrumTransform.cxx:1970 TSpectrumTransform.cxx:1971 TSpectrumTransform.cxx:1972 TSpectrumTransform.cxx:1973 TSpectrumTransform.cxx:1974 TSpectrumTransform.cxx:1975 TSpectrumTransform.cxx:1976 TSpectrumTransform.cxx:1977 TSpectrumTransform.cxx:1978 TSpectrumTransform.cxx:1979 TSpectrumTransform.cxx:1980 TSpectrumTransform.cxx:1981 TSpectrumTransform.cxx:1982 TSpectrumTransform.cxx:1983 TSpectrumTransform.cxx:1984 TSpectrumTransform.cxx:1985 TSpectrumTransform.cxx:1986 TSpectrumTransform.cxx:1987 TSpectrumTransform.cxx:1988 TSpectrumTransform.cxx:1989 TSpectrumTransform.cxx:1990 TSpectrumTransform.cxx:1991 TSpectrumTransform.cxx:1992 TSpectrumTransform.cxx:1993 TSpectrumTransform.cxx:1994 TSpectrumTransform.cxx:1995 TSpectrumTransform.cxx:1996 TSpectrumTransform.cxx:1997 TSpectrumTransform.cxx:1998 TSpectrumTransform.cxx:1999 TSpectrumTransform.cxx:2000 TSpectrumTransform.cxx:2001 TSpectrumTransform.cxx:2002 TSpectrumTransform.cxx:2003 TSpectrumTransform.cxx:2004 TSpectrumTransform.cxx:2005 TSpectrumTransform.cxx:2006 TSpectrumTransform.cxx:2007 TSpectrumTransform.cxx:2008 TSpectrumTransform.cxx:2009 TSpectrumTransform.cxx:2010 TSpectrumTransform.cxx:2011 TSpectrumTransform.cxx:2012 TSpectrumTransform.cxx:2013 TSpectrumTransform.cxx:2014 TSpectrumTransform.cxx:2015 TSpectrumTransform.cxx:2016 TSpectrumTransform.cxx:2017 TSpectrumTransform.cxx:2018 TSpectrumTransform.cxx:2019 TSpectrumTransform.cxx:2020 TSpectrumTransform.cxx:2021 TSpectrumTransform.cxx:2022 TSpectrumTransform.cxx:2023 TSpectrumTransform.cxx:2024 TSpectrumTransform.cxx:2025 TSpectrumTransform.cxx:2026 TSpectrumTransform.cxx:2027 TSpectrumTransform.cxx:2028 TSpectrumTransform.cxx:2029 TSpectrumTransform.cxx:2030 TSpectrumTransform.cxx:2031 TSpectrumTransform.cxx:2032 TSpectrumTransform.cxx:2033 TSpectrumTransform.cxx:2034 TSpectrumTransform.cxx:2035 TSpectrumTransform.cxx:2036 TSpectrumTransform.cxx:2037 TSpectrumTransform.cxx:2038 TSpectrumTransform.cxx:2039 TSpectrumTransform.cxx:2040 TSpectrumTransform.cxx:2041 TSpectrumTransform.cxx:2042 TSpectrumTransform.cxx:2043 TSpectrumTransform.cxx:2044 TSpectrumTransform.cxx:2045 TSpectrumTransform.cxx:2046 TSpectrumTransform.cxx:2047 TSpectrumTransform.cxx:2048 TSpectrumTransform.cxx:2049 TSpectrumTransform.cxx:2050 TSpectrumTransform.cxx:2051 TSpectrumTransform.cxx:2052 TSpectrumTransform.cxx:2053 TSpectrumTransform.cxx:2054 TSpectrumTransform.cxx:2055 TSpectrumTransform.cxx:2056 TSpectrumTransform.cxx:2057 TSpectrumTransform.cxx:2058 TSpectrumTransform.cxx:2059 TSpectrumTransform.cxx:2060 TSpectrumTransform.cxx:2061 TSpectrumTransform.cxx:2062 TSpectrumTransform.cxx:2063 TSpectrumTransform.cxx:2064 TSpectrumTransform.cxx:2065 TSpectrumTransform.cxx:2066 TSpectrumTransform.cxx:2067 TSpectrumTransform.cxx:2068 TSpectrumTransform.cxx:2069 TSpectrumTransform.cxx:2070 TSpectrumTransform.cxx:2071 TSpectrumTransform.cxx:2072 TSpectrumTransform.cxx:2073 TSpectrumTransform.cxx:2074 TSpectrumTransform.cxx:2075 TSpectrumTransform.cxx:2076 TSpectrumTransform.cxx:2077 TSpectrumTransform.cxx:2078 TSpectrumTransform.cxx:2079 TSpectrumTransform.cxx:2080 TSpectrumTransform.cxx:2081 TSpectrumTransform.cxx:2082 TSpectrumTransform.cxx:2083 TSpectrumTransform.cxx:2084 TSpectrumTransform.cxx:2085 TSpectrumTransform.cxx:2086 TSpectrumTransform.cxx:2087 TSpectrumTransform.cxx:2088 TSpectrumTransform.cxx:2089 TSpectrumTransform.cxx:2090 TSpectrumTransform.cxx:2091 TSpectrumTransform.cxx:2092 TSpectrumTransform.cxx:2093 TSpectrumTransform.cxx:2094 TSpectrumTransform.cxx:2095 TSpectrumTransform.cxx:2096 TSpectrumTransform.cxx:2097 TSpectrumTransform.cxx:2098 TSpectrumTransform.cxx:2099 TSpectrumTransform.cxx:2100 TSpectrumTransform.cxx:2101 TSpectrumTransform.cxx:2102 TSpectrumTransform.cxx:2103 TSpectrumTransform.cxx:2104 TSpectrumTransform.cxx:2105 TSpectrumTransform.cxx:2106 TSpectrumTransform.cxx:2107 TSpectrumTransform.cxx:2108 TSpectrumTransform.cxx:2109 TSpectrumTransform.cxx:2110 TSpectrumTransform.cxx:2111 TSpectrumTransform.cxx:2112 TSpectrumTransform.cxx:2113 TSpectrumTransform.cxx:2114 TSpectrumTransform.cxx:2115 TSpectrumTransform.cxx:2116 TSpectrumTransform.cxx:2117 TSpectrumTransform.cxx:2118 TSpectrumTransform.cxx:2119 TSpectrumTransform.cxx:2120 TSpectrumTransform.cxx:2121 TSpectrumTransform.cxx:2122 TSpectrumTransform.cxx:2123 TSpectrumTransform.cxx:2124 TSpectrumTransform.cxx:2125 TSpectrumTransform.cxx:2126 TSpectrumTransform.cxx:2127 TSpectrumTransform.cxx:2128 TSpectrumTransform.cxx:2129 TSpectrumTransform.cxx:2130 TSpectrumTransform.cxx:2131 TSpectrumTransform.cxx:2132 TSpectrumTransform.cxx:2133 TSpectrumTransform.cxx:2134 TSpectrumTransform.cxx:2135 TSpectrumTransform.cxx:2136 TSpectrumTransform.cxx:2137 TSpectrumTransform.cxx:2138 TSpectrumTransform.cxx:2139 TSpectrumTransform.cxx:2140 TSpectrumTransform.cxx:2141 TSpectrumTransform.cxx:2142 TSpectrumTransform.cxx:2143 TSpectrumTransform.cxx:2144 TSpectrumTransform.cxx:2145 TSpectrumTransform.cxx:2146 TSpectrumTransform.cxx:2147 TSpectrumTransform.cxx:2148 TSpectrumTransform.cxx:2149 TSpectrumTransform.cxx:2150 TSpectrumTransform.cxx:2151 TSpectrumTransform.cxx:2152 TSpectrumTransform.cxx:2153 TSpectrumTransform.cxx:2154 TSpectrumTransform.cxx:2155 TSpectrumTransform.cxx:2156 TSpectrumTransform.cxx:2157 TSpectrumTransform.cxx:2158 TSpectrumTransform.cxx:2159 TSpectrumTransform.cxx:2160 TSpectrumTransform.cxx:2161 TSpectrumTransform.cxx:2162 TSpectrumTransform.cxx:2163 TSpectrumTransform.cxx:2164 TSpectrumTransform.cxx:2165 TSpectrumTransform.cxx:2166 TSpectrumTransform.cxx:2167 TSpectrumTransform.cxx:2168 TSpectrumTransform.cxx:2169 TSpectrumTransform.cxx:2170 TSpectrumTransform.cxx:2171 TSpectrumTransform.cxx:2172 TSpectrumTransform.cxx:2173 TSpectrumTransform.cxx:2174 TSpectrumTransform.cxx:2175 TSpectrumTransform.cxx:2176 TSpectrumTransform.cxx:2177 TSpectrumTransform.cxx:2178 TSpectrumTransform.cxx:2179 TSpectrumTransform.cxx:2180 TSpectrumTransform.cxx:2181 TSpectrumTransform.cxx:2182 TSpectrumTransform.cxx:2183 TSpectrumTransform.cxx:2184 TSpectrumTransform.cxx:2185 TSpectrumTransform.cxx:2186 TSpectrumTransform.cxx:2187 TSpectrumTransform.cxx:2188 TSpectrumTransform.cxx:2189 TSpectrumTransform.cxx:2190 TSpectrumTransform.cxx:2191 TSpectrumTransform.cxx:2192 TSpectrumTransform.cxx:2193 TSpectrumTransform.cxx:2194 TSpectrumTransform.cxx:2195 TSpectrumTransform.cxx:2196 TSpectrumTransform.cxx:2197 TSpectrumTransform.cxx:2198 TSpectrumTransform.cxx:2199 TSpectrumTransform.cxx:2200 TSpectrumTransform.cxx:2201 TSpectrumTransform.cxx:2202 TSpectrumTransform.cxx:2203 TSpectrumTransform.cxx:2204 TSpectrumTransform.cxx:2205 TSpectrumTransform.cxx:2206 TSpectrumTransform.cxx:2207 TSpectrumTransform.cxx:2208 TSpectrumTransform.cxx:2209 TSpectrumTransform.cxx:2210 TSpectrumTransform.cxx:2211 TSpectrumTransform.cxx:2212 TSpectrumTransform.cxx:2213 TSpectrumTransform.cxx:2214 TSpectrumTransform.cxx:2215 TSpectrumTransform.cxx:2216 TSpectrumTransform.cxx:2217 TSpectrumTransform.cxx:2218 TSpectrumTransform.cxx:2219 TSpectrumTransform.cxx:2220 TSpectrumTransform.cxx:2221 TSpectrumTransform.cxx:2222 TSpectrumTransform.cxx:2223 TSpectrumTransform.cxx:2224 TSpectrumTransform.cxx:2225 TSpectrumTransform.cxx:2226 TSpectrumTransform.cxx:2227 TSpectrumTransform.cxx:2228 TSpectrumTransform.cxx:2229 TSpectrumTransform.cxx:2230 TSpectrumTransform.cxx:2231 TSpectrumTransform.cxx:2232 TSpectrumTransform.cxx:2233 TSpectrumTransform.cxx:2234 TSpectrumTransform.cxx:2235 TSpectrumTransform.cxx:2236 TSpectrumTransform.cxx:2237 TSpectrumTransform.cxx:2238 TSpectrumTransform.cxx:2239 TSpectrumTransform.cxx:2240 TSpectrumTransform.cxx:2241 TSpectrumTransform.cxx:2242 TSpectrumTransform.cxx:2243 TSpectrumTransform.cxx:2244 TSpectrumTransform.cxx:2245 TSpectrumTransform.cxx:2246 TSpectrumTransform.cxx:2247 TSpectrumTransform.cxx:2248 TSpectrumTransform.cxx:2249 TSpectrumTransform.cxx:2250 TSpectrumTransform.cxx:2251 TSpectrumTransform.cxx:2252 TSpectrumTransform.cxx:2253 TSpectrumTransform.cxx:2254 TSpectrumTransform.cxx:2255 TSpectrumTransform.cxx:2256 TSpectrumTransform.cxx:2257 TSpectrumTransform.cxx:2258 TSpectrumTransform.cxx:2259 TSpectrumTransform.cxx:2260 TSpectrumTransform.cxx:2261 TSpectrumTransform.cxx:2262 TSpectrumTransform.cxx:2263 TSpectrumTransform.cxx:2264 TSpectrumTransform.cxx:2265 TSpectrumTransform.cxx:2266 TSpectrumTransform.cxx:2267 TSpectrumTransform.cxx:2268 TSpectrumTransform.cxx:2269 TSpectrumTransform.cxx:2270 TSpectrumTransform.cxx:2271 TSpectrumTransform.cxx:2272 TSpectrumTransform.cxx:2273 TSpectrumTransform.cxx:2274 TSpectrumTransform.cxx:2275 TSpectrumTransform.cxx:2276 TSpectrumTransform.cxx:2277 TSpectrumTransform.cxx:2278 TSpectrumTransform.cxx:2279 TSpectrumTransform.cxx:2280 TSpectrumTransform.cxx:2281 TSpectrumTransform.cxx:2282 TSpectrumTransform.cxx:2283 TSpectrumTransform.cxx:2284 TSpectrumTransform.cxx:2285 TSpectrumTransform.cxx:2286 TSpectrumTransform.cxx:2287 TSpectrumTransform.cxx:2288 TSpectrumTransform.cxx:2289 TSpectrumTransform.cxx:2290 TSpectrumTransform.cxx:2291 TSpectrumTransform.cxx:2292 TSpectrumTransform.cxx:2293 TSpectrumTransform.cxx:2294 TSpectrumTransform.cxx:2295 TSpectrumTransform.cxx:2296 TSpectrumTransform.cxx:2297 TSpectrumTransform.cxx:2298 TSpectrumTransform.cxx:2299 TSpectrumTransform.cxx:2300 TSpectrumTransform.cxx:2301 TSpectrumTransform.cxx:2302 TSpectrumTransform.cxx:2303 TSpectrumTransform.cxx:2304 TSpectrumTransform.cxx:2305 TSpectrumTransform.cxx:2306 TSpectrumTransform.cxx:2307 TSpectrumTransform.cxx:2308 TSpectrumTransform.cxx:2309 TSpectrumTransform.cxx:2310 TSpectrumTransform.cxx:2311 TSpectrumTransform.cxx:2312 TSpectrumTransform.cxx:2313 TSpectrumTransform.cxx:2314 TSpectrumTransform.cxx:2315 TSpectrumTransform.cxx:2316 TSpectrumTransform.cxx:2317 TSpectrumTransform.cxx:2318 TSpectrumTransform.cxx:2319 TSpectrumTransform.cxx:2320 TSpectrumTransform.cxx:2321 TSpectrumTransform.cxx:2322 TSpectrumTransform.cxx:2323 TSpectrumTransform.cxx:2324 TSpectrumTransform.cxx:2325 TSpectrumTransform.cxx:2326 TSpectrumTransform.cxx:2327 TSpectrumTransform.cxx:2328 TSpectrumTransform.cxx:2329 TSpectrumTransform.cxx:2330 TSpectrumTransform.cxx:2331 TSpectrumTransform.cxx:2332 TSpectrumTransform.cxx:2333 TSpectrumTransform.cxx:2334 TSpectrumTransform.cxx:2335 TSpectrumTransform.cxx:2336 TSpectrumTransform.cxx:2337 TSpectrumTransform.cxx:2338 TSpectrumTransform.cxx:2339 TSpectrumTransform.cxx:2340 TSpectrumTransform.cxx:2341 TSpectrumTransform.cxx:2342 TSpectrumTransform.cxx:2343 TSpectrumTransform.cxx:2344 TSpectrumTransform.cxx:2345 TSpectrumTransform.cxx:2346 TSpectrumTransform.cxx:2347 TSpectrumTransform.cxx:2348 TSpectrumTransform.cxx:2349 TSpectrumTransform.cxx:2350 TSpectrumTransform.cxx:2351 TSpectrumTransform.cxx:2352 TSpectrumTransform.cxx:2353 TSpectrumTransform.cxx:2354 TSpectrumTransform.cxx:2355 TSpectrumTransform.cxx:2356 TSpectrumTransform.cxx:2357 TSpectrumTransform.cxx:2358 TSpectrumTransform.cxx:2359 TSpectrumTransform.cxx:2360 TSpectrumTransform.cxx:2361 TSpectrumTransform.cxx:2362 TSpectrumTransform.cxx:2363 TSpectrumTransform.cxx:2364 TSpectrumTransform.cxx:2365 TSpectrumTransform.cxx:2366 TSpectrumTransform.cxx:2367 TSpectrumTransform.cxx:2368 TSpectrumTransform.cxx:2369 TSpectrumTransform.cxx:2370 TSpectrumTransform.cxx:2371 TSpectrumTransform.cxx:2372 TSpectrumTransform.cxx:2373 TSpectrumTransform.cxx:2374 TSpectrumTransform.cxx:2375 TSpectrumTransform.cxx:2376 TSpectrumTransform.cxx:2377 TSpectrumTransform.cxx:2378 TSpectrumTransform.cxx:2379 TSpectrumTransform.cxx:2380 TSpectrumTransform.cxx:2381 TSpectrumTransform.cxx:2382 TSpectrumTransform.cxx:2383 TSpectrumTransform.cxx:2384 TSpectrumTransform.cxx:2385 TSpectrumTransform.cxx:2386 TSpectrumTransform.cxx:2387 TSpectrumTransform.cxx:2388 TSpectrumTransform.cxx:2389 TSpectrumTransform.cxx:2390 TSpectrumTransform.cxx:2391 TSpectrumTransform.cxx:2392 TSpectrumTransform.cxx:2393 TSpectrumTransform.cxx:2394 TSpectrumTransform.cxx:2395 TSpectrumTransform.cxx:2396 TSpectrumTransform.cxx:2397 TSpectrumTransform.cxx:2398 TSpectrumTransform.cxx:2399 TSpectrumTransform.cxx:2400 TSpectrumTransform.cxx:2401 TSpectrumTransform.cxx:2402 TSpectrumTransform.cxx:2403 TSpectrumTransform.cxx:2404 TSpectrumTransform.cxx:2405 TSpectrumTransform.cxx:2406 TSpectrumTransform.cxx:2407 TSpectrumTransform.cxx:2408 TSpectrumTransform.cxx:2409 TSpectrumTransform.cxx:2410 TSpectrumTransform.cxx:2411 TSpectrumTransform.cxx:2412 TSpectrumTransform.cxx:2413 TSpectrumTransform.cxx:2414 TSpectrumTransform.cxx:2415 TSpectrumTransform.cxx:2416 TSpectrumTransform.cxx:2417 TSpectrumTransform.cxx:2418 TSpectrumTransform.cxx:2419 TSpectrumTransform.cxx:2420 TSpectrumTransform.cxx:2421 TSpectrumTransform.cxx:2422 TSpectrumTransform.cxx:2423 TSpectrumTransform.cxx:2424 TSpectrumTransform.cxx:2425 TSpectrumTransform.cxx:2426 TSpectrumTransform.cxx:2427 TSpectrumTransform.cxx:2428 TSpectrumTransform.cxx:2429 TSpectrumTransform.cxx:2430 TSpectrumTransform.cxx:2431 TSpectrumTransform.cxx:2432 TSpectrumTransform.cxx:2433 TSpectrumTransform.cxx:2434 TSpectrumTransform.cxx:2435 TSpectrumTransform.cxx:2436 TSpectrumTransform.cxx:2437 TSpectrumTransform.cxx:2438 TSpectrumTransform.cxx:2439 TSpectrumTransform.cxx:2440 TSpectrumTransform.cxx:2441 TSpectrumTransform.cxx:2442 TSpectrumTransform.cxx:2443 TSpectrumTransform.cxx:2444 TSpectrumTransform.cxx:2445 TSpectrumTransform.cxx:2446 TSpectrumTransform.cxx:2447 TSpectrumTransform.cxx:2448 TSpectrumTransform.cxx:2449 TSpectrumTransform.cxx:2450 TSpectrumTransform.cxx:2451 TSpectrumTransform.cxx:2452 TSpectrumTransform.cxx:2453 TSpectrumTransform.cxx:2454 TSpectrumTransform.cxx:2455 TSpectrumTransform.cxx:2456 TSpectrumTransform.cxx:2457 TSpectrumTransform.cxx:2458 TSpectrumTransform.cxx:2459 TSpectrumTransform.cxx:2460 TSpectrumTransform.cxx:2461 TSpectrumTransform.cxx:2462 TSpectrumTransform.cxx:2463 TSpectrumTransform.cxx:2464 TSpectrumTransform.cxx:2465 TSpectrumTransform.cxx:2466 TSpectrumTransform.cxx:2467 TSpectrumTransform.cxx:2468 TSpectrumTransform.cxx:2469 TSpectrumTransform.cxx:2470 TSpectrumTransform.cxx:2471 TSpectrumTransform.cxx:2472 TSpectrumTransform.cxx:2473 TSpectrumTransform.cxx:2474 TSpectrumTransform.cxx:2475 TSpectrumTransform.cxx:2476 TSpectrumTransform.cxx:2477 TSpectrumTransform.cxx:2478 TSpectrumTransform.cxx:2479 TSpectrumTransform.cxx:2480 TSpectrumTransform.cxx:2481 TSpectrumTransform.cxx:2482 TSpectrumTransform.cxx:2483 TSpectrumTransform.cxx:2484 TSpectrumTransform.cxx:2485 TSpectrumTransform.cxx:2486 TSpectrumTransform.cxx:2487 TSpectrumTransform.cxx:2488 TSpectrumTransform.cxx:2489 TSpectrumTransform.cxx:2490 TSpectrumTransform.cxx:2491 TSpectrumTransform.cxx:2492 TSpectrumTransform.cxx:2493 TSpectrumTransform.cxx:2494 TSpectrumTransform.cxx:2495 TSpectrumTransform.cxx:2496 TSpectrumTransform.cxx:2497 TSpectrumTransform.cxx:2498 TSpectrumTransform.cxx:2499 TSpectrumTransform.cxx:2500 TSpectrumTransform.cxx:2501 TSpectrumTransform.cxx:2502 TSpectrumTransform.cxx:2503 TSpectrumTransform.cxx:2504 TSpectrumTransform.cxx:2505 TSpectrumTransform.cxx:2506 TSpectrumTransform.cxx:2507 TSpectrumTransform.cxx:2508 TSpectrumTransform.cxx:2509 TSpectrumTransform.cxx:2510 TSpectrumTransform.cxx:2511 TSpectrumTransform.cxx:2512 TSpectrumTransform.cxx:2513 TSpectrumTransform.cxx:2514 TSpectrumTransform.cxx:2515 TSpectrumTransform.cxx:2516 TSpectrumTransform.cxx:2517 TSpectrumTransform.cxx:2518 TSpectrumTransform.cxx:2519 TSpectrumTransform.cxx:2520 TSpectrumTransform.cxx:2521 TSpectrumTransform.cxx:2522 TSpectrumTransform.cxx:2523 TSpectrumTransform.cxx:2524 TSpectrumTransform.cxx:2525 TSpectrumTransform.cxx:2526 TSpectrumTransform.cxx:2527 TSpectrumTransform.cxx:2528 TSpectrumTransform.cxx:2529 TSpectrumTransform.cxx:2530 TSpectrumTransform.cxx:2531 TSpectrumTransform.cxx:2532 TSpectrumTransform.cxx:2533 TSpectrumTransform.cxx:2534 TSpectrumTransform.cxx:2535 TSpectrumTransform.cxx:2536 TSpectrumTransform.cxx:2537 TSpectrumTransform.cxx:2538 TSpectrumTransform.cxx:2539 TSpectrumTransform.cxx:2540 TSpectrumTransform.cxx:2541 TSpectrumTransform.cxx:2542 TSpectrumTransform.cxx:2543 TSpectrumTransform.cxx:2544 TSpectrumTransform.cxx:2545 TSpectrumTransform.cxx:2546 TSpectrumTransform.cxx:2547 TSpectrumTransform.cxx:2548 TSpectrumTransform.cxx:2549 TSpectrumTransform.cxx:2550 TSpectrumTransform.cxx:2551 TSpectrumTransform.cxx:2552 TSpectrumTransform.cxx:2553 TSpectrumTransform.cxx:2554 TSpectrumTransform.cxx:2555 TSpectrumTransform.cxx:2556 TSpectrumTransform.cxx:2557 TSpectrumTransform.cxx:2558 TSpectrumTransform.cxx:2559 TSpectrumTransform.cxx:2560 TSpectrumTransform.cxx:2561 TSpectrumTransform.cxx:2562 TSpectrumTransform.cxx:2563 TSpectrumTransform.cxx:2564 TSpectrumTransform.cxx:2565 TSpectrumTransform.cxx:2566 TSpectrumTransform.cxx:2567 TSpectrumTransform.cxx:2568 TSpectrumTransform.cxx:2569 TSpectrumTransform.cxx:2570 TSpectrumTransform.cxx:2571 TSpectrumTransform.cxx:2572 TSpectrumTransform.cxx:2573 TSpectrumTransform.cxx:2574 TSpectrumTransform.cxx:2575 TSpectrumTransform.cxx:2576 TSpectrumTransform.cxx:2577 TSpectrumTransform.cxx:2578 TSpectrumTransform.cxx:2579 TSpectrumTransform.cxx:2580 TSpectrumTransform.cxx:2581 TSpectrumTransform.cxx:2582 TSpectrumTransform.cxx:2583 TSpectrumTransform.cxx:2584 TSpectrumTransform.cxx:2585 TSpectrumTransform.cxx:2586 TSpectrumTransform.cxx:2587 TSpectrumTransform.cxx:2588 TSpectrumTransform.cxx:2589 TSpectrumTransform.cxx:2590 TSpectrumTransform.cxx:2591 TSpectrumTransform.cxx:2592 TSpectrumTransform.cxx:2593 TSpectrumTransform.cxx:2594 TSpectrumTransform.cxx:2595 TSpectrumTransform.cxx:2596 TSpectrumTransform.cxx:2597 TSpectrumTransform.cxx:2598 TSpectrumTransform.cxx:2599 TSpectrumTransform.cxx:2600 TSpectrumTransform.cxx:2601 TSpectrumTransform.cxx:2602 TSpectrumTransform.cxx:2603 TSpectrumTransform.cxx:2604 TSpectrumTransform.cxx:2605 TSpectrumTransform.cxx:2606 TSpectrumTransform.cxx:2607 TSpectrumTransform.cxx:2608 TSpectrumTransform.cxx:2609 TSpectrumTransform.cxx:2610 TSpectrumTransform.cxx:2611 TSpectrumTransform.cxx:2612 TSpectrumTransform.cxx:2613 TSpectrumTransform.cxx:2614 TSpectrumTransform.cxx:2615 TSpectrumTransform.cxx:2616 TSpectrumTransform.cxx:2617 TSpectrumTransform.cxx:2618 TSpectrumTransform.cxx:2619 TSpectrumTransform.cxx:2620 TSpectrumTransform.cxx:2621 TSpectrumTransform.cxx:2622 TSpectrumTransform.cxx:2623 TSpectrumTransform.cxx:2624 TSpectrumTransform.cxx:2625 TSpectrumTransform.cxx:2626 TSpectrumTransform.cxx:2627 TSpectrumTransform.cxx:2628 TSpectrumTransform.cxx:2629 TSpectrumTransform.cxx:2630 TSpectrumTransform.cxx:2631 TSpectrumTransform.cxx:2632 TSpectrumTransform.cxx:2633 TSpectrumTransform.cxx:2634 TSpectrumTransform.cxx:2635 TSpectrumTransform.cxx:2636 TSpectrumTransform.cxx:2637 TSpectrumTransform.cxx:2638 TSpectrumTransform.cxx:2639 TSpectrumTransform.cxx:2640 TSpectrumTransform.cxx:2641 TSpectrumTransform.cxx:2642 TSpectrumTransform.cxx:2643 TSpectrumTransform.cxx:2644 TSpectrumTransform.cxx:2645 TSpectrumTransform.cxx:2646 TSpectrumTransform.cxx:2647 TSpectrumTransform.cxx:2648 TSpectrumTransform.cxx:2649 TSpectrumTransform.cxx:2650 TSpectrumTransform.cxx:2651 TSpectrumTransform.cxx:2652 TSpectrumTransform.cxx:2653 TSpectrumTransform.cxx:2654 TSpectrumTransform.cxx:2655 TSpectrumTransform.cxx:2656 TSpectrumTransform.cxx:2657 TSpectrumTransform.cxx:2658 TSpectrumTransform.cxx:2659 TSpectrumTransform.cxx:2660 TSpectrumTransform.cxx:2661 TSpectrumTransform.cxx:2662 TSpectrumTransform.cxx:2663 TSpectrumTransform.cxx:2664 TSpectrumTransform.cxx:2665 TSpectrumTransform.cxx:2666 TSpectrumTransform.cxx:2667 TSpectrumTransform.cxx:2668 TSpectrumTransform.cxx:2669 TSpectrumTransform.cxx:2670 TSpectrumTransform.cxx:2671 TSpectrumTransform.cxx:2672 TSpectrumTransform.cxx:2673 TSpectrumTransform.cxx:2674 TSpectrumTransform.cxx:2675 TSpectrumTransform.cxx:2676 TSpectrumTransform.cxx:2677 TSpectrumTransform.cxx:2678 TSpectrumTransform.cxx:2679 TSpectrumTransform.cxx:2680 TSpectrumTransform.cxx:2681 TSpectrumTransform.cxx:2682 TSpectrumTransform.cxx:2683 TSpectrumTransform.cxx:2684 TSpectrumTransform.cxx:2685 TSpectrumTransform.cxx:2686 TSpectrumTransform.cxx:2687 TSpectrumTransform.cxx:2688 TSpectrumTransform.cxx:2689 TSpectrumTransform.cxx:2690 TSpectrumTransform.cxx:2691 TSpectrumTransform.cxx:2692 TSpectrumTransform.cxx:2693 TSpectrumTransform.cxx:2694 TSpectrumTransform.cxx:2695 TSpectrumTransform.cxx:2696 TSpectrumTransform.cxx:2697 TSpectrumTransform.cxx:2698 TSpectrumTransform.cxx:2699 TSpectrumTransform.cxx:2700 TSpectrumTransform.cxx:2701 TSpectrumTransform.cxx:2702 TSpectrumTransform.cxx:2703 TSpectrumTransform.cxx:2704 TSpectrumTransform.cxx:2705 TSpectrumTransform.cxx:2706 TSpectrumTransform.cxx:2707 TSpectrumTransform.cxx:2708 TSpectrumTransform.cxx:2709 TSpectrumTransform.cxx:2710 TSpectrumTransform.cxx:2711 TSpectrumTransform.cxx:2712 TSpectrumTransform.cxx:2713 TSpectrumTransform.cxx:2714 TSpectrumTransform.cxx:2715 TSpectrumTransform.cxx:2716 TSpectrumTransform.cxx:2717 TSpectrumTransform.cxx:2718 TSpectrumTransform.cxx:2719 TSpectrumTransform.cxx:2720 TSpectrumTransform.cxx:2721 TSpectrumTransform.cxx:2722 TSpectrumTransform.cxx:2723 TSpectrumTransform.cxx:2724 TSpectrumTransform.cxx:2725 TSpectrumTransform.cxx:2726 TSpectrumTransform.cxx:2727 TSpectrumTransform.cxx:2728 TSpectrumTransform.cxx:2729 TSpectrumTransform.cxx:2730