#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(float *working_space, int num, int direction) 
{   
   int i, ii, li, l2, l3, j, jj, jj1, lj, iter, m, jmin, jmax;
   double a, b, c, wlk;
   float 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) 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) TMath::Power(2, i);
      jmax = (int) 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) 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(float *working_space, int num) 
{
   int i, m, nump = 1, mnum, mnum2, mp, ib, mp2, mnum21, iba, iter;
   double a;
   float 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(float *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(float *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 a, b, c, d, sign, wpwr, arg, wr, wi, tr, ti, pi =
       3.14159265358979323846;
   float 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(float *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(float *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 a, b, c, d, wpwr, arg, wr, wi, tr, ti, pi =
       3.14159265358979323846;
   float 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(float *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 a, b, c, d, wpwr, arg, wr, wi, tr, ti, pi =
       3.14159265358979323846;
   float 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 float *source, float *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#float">float</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#float">float</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'>Float_t * source = new float[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>   Float_t * dest = new
float[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;
   float val;
   double a, b, pi = 3.14159265358979323846;
   float *working_space = 0;
   if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
      if (fTransformType >= kTransformCosWalsh)
         fDegree += 1;
      k = (int) TMath::Power(2, fDegree);
      j = fSize / k;
   }
   switch (fTransformType) {
   case kTransformHaar:
   case kTransformWalsh:
      working_space = new float[2 * fSize];
      break;
   case kTransformCos:
   case kTransformSin:
   case kTransformFourier:
   case kTransformHartley:
   case kTransformFourierWalsh:
   case kTransformFourierHaar:
   case kTransformWalshHaar:
      working_space = new float[4 * fSize];
      break;
   case kTransformCosWalsh:
   case kTransformCosHaar:
   case kTransformSinWalsh:
   case kTransformSinHaar:
      working_space = new float[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) i / (double) 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) i / (double) 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) 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) 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) 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) (i % j) / (double) (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) 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) (i % j) / (double) (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) TMath::Power(2, fDegree - 1);
         
         else
            k = (int) 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) i / (double) fSize;
            b = TMath::Sin(a);
            a = TMath::Cos(a);
            working_space[i + fSize] = (double) working_space[i] * b;
            working_space[i] = (double) 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) i / (double) fSize;
            working_space[i + fSize] =
                -(double) working_space[i - 1] * TMath::Cos(a);
            working_space[i] =
                (double) 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) TMath::Power(2, fDegree - 1);
         
         else
            k = (int) 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) TMath::Power(2, fDegree) / 2;
            m = (int) TMath::Power(2, fDegree);
            l = 2 * fSize / m;
            for (i = 0; i < fSize; i++) {
               k = i / j;
               k = 2 * k * j;
               a = pi * (double) (i % j) / (double) (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) working_space[i] * b;
                  working_space[2 * fSize + k + i % j] =
                      (double) 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) 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) TMath::Power(2, fDegree) / 2;
            m = (int) TMath::Power(2, fDegree);
            l = 2 * fSize / m;
            for (i = 0; i < fSize; i++) {
               k = i / j;
               k = 2 * k * j;
               a = pi * (double) (i % j) / (double) (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) working_space[j + k / 2 - i % j - 1] * b;
                  working_space[2 * fSize + k + j + i % j] =
                      (double) 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 float *source, float *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#float">float</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#float">float</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'>Float_t * source = new float[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>   Float_t * dest = new
float[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;
   float val;
   float *working_space = 0;
   double a, b, pi = 3.14159265358979323846, old_area, new_area;
   if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
      if (fTransformType >= kTransformCosWalsh)
         fDegree += 1;
      k = (int) TMath::Power(2, fDegree);
      j = fSize / k;
   }
   switch (fTransformType) {
   case kTransformHaar:
   case kTransformWalsh:
      working_space = new float[2 * fSize];
      break;
   case kTransformCos:
   case kTransformSin:
   case kTransformFourier:
   case kTransformHartley:
   case kTransformFourierWalsh:
   case kTransformFourierHaar:
   case kTransformWalshHaar:
      working_space = new float[4 * fSize];
      break;
   case kTransformCosWalsh:
   case kTransformCosHaar:
   case kTransformSinWalsh:
   case kTransformSinHaar:
      working_space = new float[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) i / (double) 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) i / (double) 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) 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) 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) 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) (i % j) / (double) (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) 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) (i % j) / (double) (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) TMath::Power(2, fDegree - 1);
      
      else
         k = (int) 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) i / (double) fSize;
         b = TMath::Sin(a);
         a = TMath::Cos(a);
         working_space[i + fSize] = (double) working_space[i] * b;
         working_space[i] = (double) 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) i / (double) fSize;
         working_space[i + fSize] =
             -(double) working_space[i - 1] * TMath::Cos(a);
         working_space[i] = (double) 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) TMath::Power(2, fDegree - 1);
      
      else
         k = (int) 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) TMath::Power(2, fDegree) / 2;
         m = (int) TMath::Power(2, fDegree);
         l = 2 * fSize / m;
         for (i = 0; i < fSize; i++) {
            k = i / j;
            k = 2 * k * j;
            a = pi * (double) (i % j) / (double) (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) working_space[i] * b;
               working_space[2 * fSize + k + i % j] =
                   (double) 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) 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) TMath::Power(2, fDegree) / 2;
         m = (int) TMath::Power(2, fDegree);
         l = 2 * fSize / m;
         for (i = 0; i < fSize; i++) {
            k = i / j;
            k = 2 * k * j;
            a = pi * (double) (i % j) / (double) (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) working_space[j + k / 2 - i % j - 1] * b;
               working_space[2 * fSize + k + j + i % j] =
                   (double) 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 float *source, float *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#float">float</a> *fSource,
<a href="http://root.cern.ch/root/html/ListOfTypes.html#float">float</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'>Float_t * source = new float[nbins];</span></p>
<p class=MsoNormal><span style='font-size:10.0pt'>   Float_t * dest = new
float[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;
   float val;
   float *working_space = 0;
   double a, b, pi = 3.14159265358979323846, old_area, new_area;
   if (fTransformType >= kTransformFourierWalsh && fTransformType <= kTransformSinHaar) {
      if (fTransformType >= kTransformCosWalsh)
         fDegree += 1;
      k = (int) TMath::Power(2, fDegree);
      j = fSize / k;
   }
   switch (fTransformType) {
   case kTransformHaar:
   case kTransformWalsh:
      working_space = new float[2 * fSize];
      break;
   case kTransformCos:
   case kTransformSin:
   case kTransformFourier:
   case kTransformHartley:
   case kTransformFourierWalsh:
   case kTransformFourierHaar:
   case kTransformWalshHaar:
      working_space = new float[4 * fSize];
      break;
   case kTransformCosWalsh:
   case kTransformCosHaar:
   case kTransformSinWalsh:
   case kTransformSinHaar:
      working_space = new float[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) i / (double) 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) i / (double) 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) 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) 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) 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) (i % j) / (double) (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) 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) (i % j) / (double) (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) TMath::Power(2, fDegree - 1);
      
      else
         k = (int) 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) i / (double) fSize;
         b = TMath::Sin(a);
         a = TMath::Cos(a);
         working_space[i + fSize] = (double) working_space[i] * b;
         working_space[i] = (double) 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) i / (double) fSize;
         working_space[i + fSize] =
             -(double) working_space[i - 1] * TMath::Cos(a);
         working_space[i] = (double) 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) TMath::Power(2, fDegree - 1);
      
      else
         k = (int) 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) TMath::Power(2, fDegree) / 2;
         m = (int) TMath::Power(2, fDegree);
         l = 2 * fSize / m;
         for (i = 0; i < fSize; i++) {
            k = i / j;
            k = 2 * k * j;
            a = pi * (double) (i % j) / (double) (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) working_space[i] * b;
               working_space[2 * fSize + k + i % j] =
                   (double) 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) 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) TMath::Power(2, fDegree) / 2;
         m = (int) TMath::Power(2, fDegree);
         l = 2 * fSize / m;
         for (i = 0; i < fSize; i++) {
            k = i / j;
            k = 2 * k * j;
            a = pi * (double) (i % j) / (double) (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) working_space[j + k / 2 - i % j - 1] * b;
               working_space[2 * fSize + k + j + i % j] =
                   (double) 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(Float_t filterCoeff)
{
   fFilterCoeff = filterCoeff;
}
void TSpectrumTransform::SetEnhanceCoeff(Float_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