// @(#)root/spectrum:$Id$
// Author: Miroslav Morhac   25/09/2006

/////////////////////////////////////////////////////////////////////////////
//   THIS CLASS CONTAINS ADVANCED SPECTRA PROCESSING FUNCTIONS.            //
//                                                                         //
//   THREE-DIMENSIONAL BACKGROUND ESTIMATION FUNCTIONS                     //
//   THREE-DIMENSIONAL SMOOTHING FUNCTIONS                                 //
//   THREE-DIMENSIONAL DECONVOLUTION FUNCTIONS                             //
//   THREE-DIMENSIONAL PEAK SEARCH FUNCTIONS                               //
//                                                                         //
//   These functions were written by:                                      //
//   Miroslav Morhac                                                       //
//   Institute of Physics                                                  //
//   Slovak Academy of Sciences                                            //
//   Dubravska cesta 9, 842 28 BRATISLAVA                                  //
//   SLOVAKIA                                                              //
//                                                                         //
//   email:fyzimiro@savba.sk,    fax:+421 7 54772479                       //
//                                                                         //
//  The original code in C has been repackaged as a C++ class by R.Brun    //
//                                                                         //
//  The algorithms in this class have been published in the following      //
//  references:                                                            //
//   [1]  M.Morhac et al.: Background elimination methods for              //
//   multidimensional coincidence gamma-ray spectra. Nuclear               //
//   Instruments and Methods in Physics Research A 401 (1997) 113-         //
//   132.                                                                  //
//                                                                         //
//   [2]  M.Morhac et al.: Efficient one- and two-dimensional Gold         //
//   deconvolution and its application to gamma-ray spectra                //
//   decomposition. Nuclear Instruments and Methods in Physics             //
//   Research A 401 (1997) 385-408.                                        //
//                                                                         //
//   [3] M. Morhac et al.: Efficient algorithm of multidimensional         //
//   deconvolution and its application to nuclear data processing. Digital //
//   Signal Processing, Vol. 13, No. 1, (2003), 144-171.                   //
//                                                                         //
//   [4]  M.Morhac et al.: Identification of peaks in multidimensional     //
//   coincidence gamma-ray spectra. Nuclear Instruments and Methods in     //
//   Research Physics A  443(2000), 108-125.                               //
//                                                                         //
//   These NIM papers are also available as Postscript files from:         //
//
//
//   ftp://root.cern.ch/root/SpectrumDec.ps.gz
//   ftp://root.cern.ch/root/SpectrumSrc.ps.gz
//   ftp://root.cern.ch/root/SpectrumBck.ps.gz
//
//
/////////////////////////////////////////////////////////////////////////////


#include "TSpectrum3.h"
#include "TH1.h"
#include "TMath.h"
#define PEAK_WINDOW 1024

ClassImp(TSpectrum3)

//______________________________________________________________________________
TSpectrum3::TSpectrum3() :TNamed("Spectrum", "Miroslav Morhac peak finder")
{
   // Constructor.

   Int_t n = 100;
   fMaxPeaks   = n;
   fPosition   = new Double_t[n];
   fPositionX  = new Double_t[n];
   fPositionY  = new Double_t[n];
   fPositionZ  = new Double_t[n];
   fResolution = 1;
   fHistogram  = 0;
   fNPeaks     = 0;
}


//______________________________________________________________________________
TSpectrum3::TSpectrum3(Int_t maxpositions, Double_t resolution) :TNamed("Spectrum", "Miroslav Morhac peak finder")
{
//  maxpositions:  maximum number of peaks
//  resolution:    determines resolution of the neighboring peaks
//                 default value is 1 correspond to 3 sigma distance
//                 between peaks. Higher values allow higher resolution
//                 (smaller distance between peaks.
//                 May be set later through SetResolution.
   Int_t n = TMath::Max(maxpositions, 100);
   fMaxPeaks  = n;
   fPosition  = new Double_t[n];
   fPositionX = new Double_t[n];
   fPositionY = new Double_t[n];
   fPositionZ = new Double_t[n];
   fHistogram = 0;
   fNPeaks    = 0;
   SetResolution(resolution);
}


//______________________________________________________________________________
TSpectrum3::~TSpectrum3()
{
   // Destructor.

   delete [] fPosition;
   delete [] fPositionX;
   delete [] fPositionY;
   delete [] fPositionZ;
   delete    fHistogram;
}

//______________________________________________________________________________
const char *TSpectrum3::Background(const TH1 * h, Int_t number_of_iterations,
                                   Option_t * option)
{
/////////////////////////////////////////////////////////////////////////////
//   ONE-DIMENSIONAL BACKGROUND ESTIMATION FUNCTION                        //
//   This function calculates background spectrum from source in h.        //
//   The result is placed in the vector pointed by spectrum pointer.       //
//                                                                         //
//   Function parameters:                                                  //
//   spectrum:  pointer to the vector of source spectrum                   //
//   size:      length of spectrum and working space vectors               //
//   number_of_iterations, for details we refer to manual                  //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////
   Error("Background","function not yet implemented: h=%s, iter=%d, option=%sn"
        , h->GetName(), number_of_iterations, option);
   return 0;
}

//______________________________________________________________________________
void TSpectrum3::Print(Option_t *) const
{
   // Print the array of positions

   printf("\nNumber of positions = %d\n",fNPeaks);
   for (Int_t i=0;i<fNPeaks;i++) {
      printf(" x[%d] = %g, y[%d] = %g, z[%d] = %g\n",i,fPositionX[i],i,fPositionY[i],i,fPositionZ[i]);
   }
}



//______________________________________________________________________________
Int_t TSpectrum3::Search(const TH1 * hin, Double_t sigma,
                             Option_t * option, Double_t threshold)
{
/////////////////////////////////////////////////////////////////////////////
//   ONE-DIMENSIONAL PEAK SEARCH FUNCTION                                  //
//   This function searches for peaks in source spectrum in hin            //
//   The number of found peaks and their positions are written into        //
//   the members fNpeaks and fPositionX.                                   //
//                                                                         //
//   Function parameters:                                                  //
//   hin:       pointer to the histogram of source spectrum                //
//   sigma:   sigma of searched peaks, for details we refer to manual      //
//            Note that sigma is in number of bins                         //
//   threshold: (default=0.05)  peaks with amplitude less than             //
//       threshold*highest_peak are discarded.                             //
//                                                                         //
//   if option is not equal to "goff" (goff is the default), then          //
//   a polymarker object is created and added to the list of functions of  //
//   the histogram. The histogram is drawn with the specified option and   //
//   the polymarker object drawn on top of the histogram.                  //
//   The polymarker coordinates correspond to the npeaks peaks found in    //
//   the histogram.                                                        //
//   A pointer to the polymarker object can be retrieved later via:        //
//    TList *functions = hin->GetListOfFunctions();                        //
//    TPolyMarker *pm = (TPolyMarker*)functions->FindObject("TPolyMarker") //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////
   if (hin == 0)
      return 0;
   Int_t dimension = hin->GetDimension();
   if (dimension != 3) {
      Error("Search", "Must be a 3-d histogram");
      return 0;
   }

   Int_t sizex = hin->GetXaxis()->GetNbins();
   Int_t sizey = hin->GetYaxis()->GetNbins();
   Int_t sizez = hin->GetZaxis()->GetNbins();
   Int_t i, j, k, binx,biny,binz, npeaks;
   Double_t*** source = new Double_t**[sizex];
   Double_t*** dest   = new Double_t**[sizex];
   for (i = 0; i < sizex; i++) {
      source[i] = new Double_t*[sizey];
      dest[i]   = new Double_t*[sizey];
      for (j = 0; j < sizey; j++) {
         source[i][j] = new Double_t[sizez];
         dest[i][j]   = new Double_t[sizez];
         for (k = 0; k < sizez; k++)
            source[i][j][k] = (Double_t) hin->GetBinContent(i + 1, j + 1, k + 1);
      }
   }
   //the smoothing option is used for 1-d but not for 2-d histograms
   npeaks = SearchHighRes((const Double_t***)source, dest, sizex, sizey, sizez, sigma, 100*threshold, kTRUE, 3, kFALSE, 3);

   //The logic in the loop should be improved to use the fact
   //that fPositionX,Y give a precise position inside a bin.
   //The current algorithm takes the center of the bin only.
   for (i = 0; i < npeaks; i++) {
      binx = 1 + Int_t(fPositionX[i] + 0.5);
      biny = 1 + Int_t(fPositionY[i] + 0.5);
      binz = 1 + Int_t(fPositionZ[i] + 0.5);
      fPositionX[i] = hin->GetXaxis()->GetBinCenter(binx);
      fPositionY[i] = hin->GetYaxis()->GetBinCenter(biny);
      fPositionZ[i] = hin->GetZaxis()->GetBinCenter(binz);
   }
   for (i = 0; i < sizex; i++) {
      for (j = 0; j < sizey; j++){
         delete [] source[i][j];
         delete [] dest[i][j];
      }
      delete [] source[i];
      delete [] dest[i];
   }
   delete [] source;
   delete [] dest;

   if (strstr(option, "goff"))
      return npeaks;
   if (!npeaks) return 0;
   return npeaks;
}


//______________________________________________________________________________
void TSpectrum3::SetResolution(Double_t resolution)
{
//  resolution: determines resolution of the neighboring peaks
//              default value is 1 correspond to 3 sigma distance
//              between peaks. Higher values allow higher resolution
//              (smaller distance between peaks.
//              May be set later through SetResolution.
   if (resolution > 1)
      fResolution = resolution;
   else
      fResolution = 1;
}

//______________________________________________________________________________
const char *TSpectrum3::Background(Double_t***spectrum,
                       Int_t ssizex, Int_t ssizey, Int_t ssizez,
                       Int_t numberIterationsX,
                       Int_t numberIterationsY,
                       Int_t numberIterationsZ,
                       Int_t direction,
                       Int_t filterType)
{
///////////////////////////////////////////////////////////////////////////////
// THREE-DIMENSIONAL BACKGROUND ESTIMATION FUNCTIONS                         //
// This function calculates background spectrum from source spectrum.        //
// The result is placed to the array pointed by spectrum pointer.            //
//                                                                           //
// Function parameters:                                                      //
// spectrum-pointer to the array of source spectrum                          //
// ssizex-x length of spectrum                                               //
// ssizey-y length of spectrum                                               //
// ssizez-z length of spectrum                                               //
// numberIterationsX-maximal x width of clipping window                      //
// numberIterationsY-maximal y width of clipping window                      //
// numberIterationsZ-maximal z width of clipping window                      //
//                           for details we refer to manual                  //
// direction- direction of change of clipping window                         //
//               - possible values=kBackIncreasingWindow                     //
//                                 kBackDecreasingWindow                     //
// filterType-determines the algorithm of the filtering                      //
//                  -possible values=kBackSuccessiveFiltering                //
//                                   kBackOneStepFiltering                   //
//                                                                           //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////
//Begin_Html <!--
/* -->
<div class=Section1>

<p class=MsoNormal style='text-align:justify'><b><span style='font-size:14.0pt'>Background
estimation</span></b></p>

<p class=MsoNormal style='text-align:justify'><i>&nbsp;</i></p>

<p class=MsoNormal style='text-align:justify'><i>Goal: Separation of useful
information (peaks) from useless information (background)</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>method is based on Sensitive Nonlinear Iterative Peak (SNIP) clipping
algorithm [1]</p>

<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>there exist two algorithms for the estimation of new value in the
channel “<sub><img width=43 height=24 src="gif/spectrum3_background_image001.gif"></sub>”</p>

<p class=MsoNormal style='margin-left:18.0pt;text-align:justify'>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><i>Algorithm based on Successive
Comparisons</i></p>

<p class=MsoNormal style='text-align:justify'>It is an extension of
one-dimensional SNIP algorithm to another dimension. For details we refer to
[2].</p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><i>Algorithm based on One Step
Filtering</i></p>

<p class=MsoNormal style='text-align:justify'>The algorithm is analogous to
that for 2-dimensional data. For details we refer to TSpectrum2. New value in
the estimated channel is calculated as</p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><sub><img width=103 height=26
src="gif/spectrum3_background_image002.gif"></sub></p>

<p class=MsoNormal style='text-align:justify'><sub><img width=621 height=408
src="gif/spectrum3_background_image003.gif"></sub><sub><img width=148 height=27
src="gif/spectrum3_background_image004.gif"></sub></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>where p = 1, 2, …,
number_of_iterations. </p>

<p class=MsoNormal><i>&nbsp;</i></p>

<p class=MsoNormal><i>Function:</i></p>

<p class=MsoNormal style='text-align:justify'><b>const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#char" target="_parent">char</a>*
</b><a href="http://root.cern.ch/root/html/TSpectrum.html#TSpectrum:Fit1Awmi"><b>TSpectrum3::Background</b></a><b>
(<a href="http://root.cern.ch/root/html/ListOfTypes.html#double" target="_parent">double</a>
***fSpectrum, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fSizex, <a
href="http://root.cern.ch/root/html/ListOfTypes.html#int" target="_parent">int</a>
fSizey, int fSizez, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fNumberIterationsX, <a
href="http://root.cern.ch/root/html/ListOfTypes.html#int" target="_parent">int</a>
fNumberIterationsY, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fNumberIterationsZ,  <a
href="http://root.cern.ch/root/html/ListOfTypes.html#int" target="_parent">int</a>
fDirection, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fFilterType)  </b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>This function calculates
background spectrum from the source spectrum.  The result is placed in the matrix
pointed by fSpectrum pointer.  One can also switch the direction of the change
of the clipping window and to select one of the two above given algorithms. On
successful completion it returns 0. On error it returns pointer to the string
describing error.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><i><span style='color:red'>Parameters:</span></i></p>

<p class=MsoNormal>        <b>fSpectrum</b>-pointer to the matrix of source
spectrum                  </p>

<p class=MsoNormal>        <b>fSizex, fSizey, fSizez </b>-lengths of the
spectrum matrix                                 </p>

<p class=MsoNormal style='text-align:justify'>        <b>fNumberIterationsX,
fNumberIterationsY, fNumberIterationsZ </b>maximal</p>

<p class=MsoNormal style='text-align:justify'>        widths of clipping window,                                
</p>

<p class=MsoNormal>        <b>fDirection</b>- direction of change of clipping
window                  </p>

<p class=MsoNormal>               - possible
values=kBackIncreasingWindow                      </p>

<p class=MsoNormal>                                           
kBackDecreasingWindow                      </p>

<p class=MsoNormal>        <b>fFilterType</b>-type of the clipping algorithm,          
                   </p>

<p class=MsoNormal>                  -possible values=kBack SuccessiveFiltering</p>

<p class=MsoNormal>                                             
kBackOneStepFiltering                              </p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b><i>References:</i></b></p>

<p class=MsoNormal style='text-align:justify'>[1]  C. G Ryan et al.: SNIP, a
statistics-sensitive background treatment for the quantitative analysis of PIXE
spectra in geoscience applications. NIM, B34 (1988), 396-402.</p>

<p class=MsoNormal style='text-align:justify'>[2] <span lang=SK> M.
Morhá&#269;, J. Kliman, V. Matoušek, M. Veselský, I. Turzo</span>.: Background
elimination methods for multidimensional gamma-ray spectra. NIM, A401 (1997)
113-132.</p>

<p class=MsoNormal style='text-align:justify'><span style='font-size:16.0pt'>&nbsp;</span></p>

<p class=MsoNormal><i>Example 1– script Back3.c :</i></p>

<p class=MsoNormal><i><span style='font-size:18.0pt'><img border=0 width=601
height=368 src="gif/spectrum3_background_image005.jpg"></span></i></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 1 Original three-dimensional
gamma-gamma-gamma-ray spectrum</b></p>

<p class=MsoNormal style='text-align:justify'><b><span style='font-size:16.0pt'><img
border=0 width=601 height=368 src="gif/spectrum3_background_image006.jpg"></span></b></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 2 Background estimated
from data from Fig. 1 using decreasing clipping window with widths 5, 5, 5 and
algorithm based on successive comparisons. The estimate includes not only
continuously changing background but also one- and two-dimensional ridges.</b></p>

<p class=MsoNormal><b><span style='font-size:14.0pt;color:green'>&nbsp;</span></b></p>

<p class=MsoNormal><b><span style='font-size:14.0pt;color:green'><img border=0
width=601 height=368 src="gif/spectrum3_background_image007.jpg"></span></b></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 3 Resulting peaks after
subtraction of the estimated background (Fig. 2) from original three-dimensional
gamma-gamma-gamma-ray spectrum (Fig. 1).</b></p>

<p class=MsoNormal><b><span style='color:green'>&nbsp;</span></b></p>

<p class=MsoNormal><b><span style='color:green'>&nbsp;</span></b></p>

<p class=MsoNormal><b><span style='color:green'>Script:</span></b></p>

<p class=MsoNormal><span style='font-size:10.0pt'>// Example to illustrate the
background estimator (class TSpectrum3).</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 &gt; .x Back3.C</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>void Back3() {</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Int_t i, j, k;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span><span lang=FR
style='font-size:10.0pt'>Int_t nbinsx = 64;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsy = 64;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsz =
64;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmax  =
nbinsx;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymax  =
nbinsy;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t zmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>Int_t zmax  = nbinsz;      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** source = new
Double_t**[nbinsx];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** dest = new Double_t
**[nbinsx];      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      source[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         source[i][j]=new
Double_t[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }           </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      dest[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         dest[i][j]=new Double_t
[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }              </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *back = new
TH3F(&quot;back&quot;,&quot;Background
estimation&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TFile *f = new
TFile(&quot;TSpectrum3.root&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   back=(TH3F*)
f-&gt;Get(&quot;back;1&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TCanvas *Background = new
TCanvas(&quot;Background&quot;,&quot;Estimation of background with decreasing
window&quot;,10,10,1000,700);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TSpectrum3 *s = new
TSpectrum3();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                  for (k = 0;
k &lt; nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       source[i][j][k]
= back-&gt;GetBinContent(i + 1,j + 1,k + 1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       dest[i][j][k]
= back-&gt;GetBinContent(i + 1,j + 1,k + 1);                     </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    } </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                 }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
s-&gt;Background(dest,nbinsx,nbinsy,nbinsz,5,5,5,s-&gt;kBackDecreasingWindow,s-&gt;kBackSuccessiveFiltering);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
back-&gt;SetBinContent(i + 1,j + 1,k + 1, dest[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   FILE *out;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   char PATH[80];   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
strcpy(PATH,&quot;spectra3\\back_output_5ds.spe&quot;);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   out=fopen(PATH,&quot;wb&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++){                   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         fwrite(dest[i][j],
sizeof(dest[0][0][0]),nbinsz,out);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   fclose(out);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>           source[i][j][k] =
source[i][j][k] - dest[i][j][k];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
back-&gt;SetBinContent(i + 1,j + 1,k + 1, source[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
strcpy(PATH,&quot;spectra3\\back_peaks_5ds.spe&quot;);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
out=fopen(PATH,&quot;wb&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++){                   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         fwrite(source[i][j],
sizeof(source[0][0][0]),nbinsz,out);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   fclose(out);      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
back-&gt;Draw(&quot;&quot;);  </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><span style='font-size:16.0pt'>&nbsp;</span></p>

</div>

<!-- */
// --> End_Html
   Int_t i, j, x, y, z, sampling, q1, q2, q3;
   Double_t a, b, c, d, p1, p2, p3, p4, p5, p6, p7, p8, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, r1, r2, r3, r4, r5, r6;
   if (ssizex <= 0 || ssizey <= 0 || ssizez <= 0)
      return "Wrong parameters";
   if (numberIterationsX < 1 || numberIterationsY < 1 || numberIterationsZ < 1)
      return "Width of Clipping Window Must Be Positive";
   if (ssizex < 2 * numberIterationsX + 1 || ssizey < 2 * numberIterationsY + 1 || ssizey < 2 * numberIterationsZ + 1)
      return ("Too Large Clipping Window");
   Double_t*** working_space=new Double_t**[ssizex];
   for(i=0;i<ssizex;i++){
      working_space[i] =new Double_t*[ssizey];
      for(j=0;j<ssizey;j++)
         working_space[i][j]=new Double_t[ssizez];
   }
   sampling =(Int_t) TMath::Max(numberIterationsX, numberIterationsY);
   sampling =(Int_t) TMath::Max(sampling, numberIterationsZ);
   if (direction == kBackIncreasingWindow) {
      if (filterType == kBackSuccessiveFiltering) {
         for (i = 1; i <= sampling; i++) {
            q1 = (Int_t) TMath::Min(i, numberIterationsX), q2 =(Int_t) TMath::Min(i, numberIterationsY), q3 =(Int_t) TMath::Min(i, numberIterationsZ);
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     a = spectrum[x][y][z];
                     p1 = spectrum[x + q1][y + q2][z - q3];
                     p2 = spectrum[x - q1][y + q2][z - q3];
                     p3 = spectrum[x + q1][y - q2][z - q3];
                     p4 = spectrum[x - q1][y - q2][z - q3];
                     p5 = spectrum[x + q1][y + q2][z + q3];
                     p6 = spectrum[x - q1][y + q2][z + q3];
                     p7 = spectrum[x + q1][y - q2][z + q3];
                     p8 = spectrum[x - q1][y - q2][z + q3];
                     s1 = spectrum[x + q1][y     ][z - q3];
                     s2 = spectrum[x     ][y + q2][z - q3];
                     s3 = spectrum[x - q1][y     ][z - q3];
                     s4 = spectrum[x     ][y - q2][z - q3];
                     s5 = spectrum[x + q1][y     ][z + q3];
                     s6 = spectrum[x     ][y + q2][z + q3];
                     s7 = spectrum[x - q1][y     ][z + q3];
                     s8 = spectrum[x     ][y - q2][z + q3];
                     s9 = spectrum[x - q1][y + q2][z     ];
                     s10 = spectrum[x - q1][y - q2][z     ];
                     s11 = spectrum[x + q1][y + q2][z     ];
                     s12 = spectrum[x + q1][y - q2][z     ];
                     r1 = spectrum[x     ][y     ][z - q3];
                     r2 = spectrum[x     ][y     ][z + q3];
                     r3 = spectrum[x - q1][y     ][z     ];
                     r4 = spectrum[x + q1][y     ][z     ];
                     r5 = spectrum[x     ][y + q2][z     ];
                     r6 = spectrum[x     ][y - q2][z     ];
                     b = (p1 + p3) / 2.0;
                     if(b > s1)
                        s1 = b;
                     b = (p1 + p2) / 2.0;
                     if(b > s2)
                        s2 = b;
                     b = (p2 + p4) / 2.0;
                     if(b > s3)
                        s3 = b;
                     b = (p3 + p4) / 2.0;
                     if(b > s4)
                        s4 = b;
                     b = (p5 + p7) / 2.0;
                     if(b > s5)
                        s5 = b;
                     b = (p5 + p6) / 2.0;
                     if(b > s6)
                        s6 = b;
                     b = (p6 + p8) / 2.0;
                     if(b > s7)
                        s7 = b;
                     b = (p7 + p8) / 2.0;
                     if(b > s8)
                        s8 = b;
                     b = (p2 + p6) / 2.0;
                     if(b > s9)
                        s9 = b;
                     b = (p4 + p8) / 2.0;
                     if(b > s10)
                        s10 = b;
                     b = (p1 + p5) / 2.0;
                     if(b > s11)
                        s11 = b;
                     b = (p3 + p7) / 2.0;
                     if(b > s12)
                        s12 = b;
                     s1 = s1 - (p1 + p3) / 2.0;
                     s2 = s2 - (p1 + p2) / 2.0;
                     s3 = s3 - (p2 + p4) / 2.0;
                     s4 = s4 - (p3 + p4) / 2.0;
                     s5 = s5 - (p5 + p7) / 2.0;
                     s6 = s6 - (p5 + p6) / 2.0;
                     s7 = s7 - (p6 + p8) / 2.0;
                     s8 = s8 - (p7 + p8) / 2.0;
                     s9 = s9 - (p2 + p6) / 2.0;
                     s10 = s10 - (p4 + p8) / 2.0;
                     s11 = s11 - (p1 + p5) / 2.0;
                     s12 = s12 - (p3 + p7) / 2.0;
                     b = (s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0;
                     if(b > r1)
                        r1 = b;
                     b = (s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0;
                     if(b > r2)
                        r2 = b;
                     b = (s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0;
                     if(b > r3)
                        r3 = b;
                     b = (s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0;
                     if(b > r4)
                        r4 = b;
                     b = (s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0;
                     if(b > r5)
                        r5 = b;
                     b = (s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0;
                     if(b > r6)
                        r6 = b;
                     r1 = r1 - ((s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0);
                     r2 = r2 - ((s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0);
                     r3 = r3 - ((s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0);
                     r4 = r4 - ((s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0);
                     r5 = r5 - ((s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0);
                     r6 = r6 - ((s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0);
                     b = (r1 + r2) / 2.0 + (r3 + r4) / 2.0 + (r5 + r6) / 2.0 + (s1 + s3 + s5 + s7) / 4.0 + (s2 + s4 + s6 + s8) / 4.0 + (s9 + s10 + s11 + s12) / 4.0 + (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8.0;
                     if(b < a)
                        a = b;
                     working_space[x][y][z] = a;
                  }
               }
            }
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     spectrum[x][y][z] = working_space[x][y][z];
                  }
               }
            }
         }
      }

      else if (filterType == kBackOneStepFiltering) {
         for (i = 1; i <= sampling; i++) {
            q1 = (Int_t) TMath::Min(i, numberIterationsX), q2 =(Int_t) TMath::Min(i, numberIterationsY), q3 =(Int_t) TMath::Min(i, numberIterationsZ);
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     a = spectrum[x][y][z];
                     p1 = spectrum[x + q1][y + q2][z - q3];
                     p2 = spectrum[x - q1][y + q2][z - q3];
                     p3 = spectrum[x + q1][y - q2][z - q3];
                     p4 = spectrum[x - q1][y - q2][z - q3];
                     p5 = spectrum[x + q1][y + q2][z + q3];
                     p6 = spectrum[x - q1][y + q2][z + q3];
                     p7 = spectrum[x + q1][y - q2][z + q3];
                     p8 = spectrum[x - q1][y - q2][z + q3];
                     s1 = spectrum[x + q1][y     ][z - q3];
                     s2 = spectrum[x     ][y + q2][z - q3];
                     s3 = spectrum[x - q1][y     ][z - q3];
                     s4 = spectrum[x     ][y - q2][z - q3];
                     s5 = spectrum[x + q1][y     ][z + q3];
                     s6 = spectrum[x     ][y + q2][z + q3];
                     s7 = spectrum[x - q1][y     ][z + q3];
                     s8 = spectrum[x     ][y - q2][z + q3];
                     s9 = spectrum[x - q1][y + q2][z     ];
                     s10 = spectrum[x - q1][y - q2][z     ];
                     s11 = spectrum[x + q1][y + q2][z     ];
                     s12 = spectrum[x + q1][y - q2][z     ];
                     r1 = spectrum[x     ][y     ][z - q3];
                     r2 = spectrum[x     ][y     ][z + q3];
                     r3 = spectrum[x - q1][y     ][z     ];
                     r4 = spectrum[x + q1][y     ][z     ];
                     r5 = spectrum[x     ][y + q2][z     ];
                     r6 = spectrum[x     ][y - q2][z     ];
                     b=(p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8 - (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 4 + (r1 + r2 + r3 + r4 + r5 + r6) / 2;
                     c = -(s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 4 + (r1 + r2 + r3 + r4 + r5 + r6) / 2;
                     d = -(p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8 + (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 12;
                     if(b < a && b >= 0 && c >=0 && d >= 0)
                        a = b;
                     working_space[x][y][z] = a;
                  }
               }
            }
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     spectrum[x][y][z] = working_space[x][y][z];
                  }
               }
            }
         }
      }
   }

   else if (direction == kBackDecreasingWindow) {
      if (filterType == kBackSuccessiveFiltering) {
         for (i = sampling; i >= 1; i--) {
            q1 = (Int_t) TMath::Min(i, numberIterationsX), q2 =(Int_t) TMath::Min(i, numberIterationsY), q3 =(Int_t) TMath::Min(i, numberIterationsZ);
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     a = spectrum[x][y][z];
                     p1 = spectrum[x + q1][y + q2][z - q3];
                     p2 = spectrum[x - q1][y + q2][z - q3];
                     p3 = spectrum[x + q1][y - q2][z - q3];
                     p4 = spectrum[x - q1][y - q2][z - q3];
                     p5 = spectrum[x + q1][y + q2][z + q3];
                     p6 = spectrum[x - q1][y + q2][z + q3];
                     p7 = spectrum[x + q1][y - q2][z + q3];
                     p8 = spectrum[x - q1][y - q2][z + q3];
                     s1 = spectrum[x + q1][y     ][z - q3];
                     s2 = spectrum[x     ][y + q2][z - q3];
                     s3 = spectrum[x - q1][y     ][z - q3];
                     s4 = spectrum[x     ][y - q2][z - q3];
                     s5 = spectrum[x + q1][y     ][z + q3];
                     s6 = spectrum[x     ][y + q2][z + q3];
                     s7 = spectrum[x - q1][y     ][z + q3];
                     s8 = spectrum[x     ][y - q2][z + q3];
                     s9 = spectrum[x - q1][y + q2][z     ];
                     s10 = spectrum[x - q1][y - q2][z     ];
                     s11 = spectrum[x + q1][y + q2][z     ];
                     s12 = spectrum[x + q1][y - q2][z     ];
                     r1 = spectrum[x     ][y     ][z - q3];
                     r2 = spectrum[x     ][y     ][z + q3];
                     r3 = spectrum[x - q1][y     ][z     ];
                     r4 = spectrum[x + q1][y     ][z     ];
                     r5 = spectrum[x     ][y + q2][z     ];
                     r6 = spectrum[x     ][y - q2][z     ];
                     b = (p1 + p3) / 2.0;
                     if(b > s1)
                        s1 = b;
                     b = (p1 + p2) / 2.0;
                     if(b > s2)
                        s2 = b;
                     b = (p2 + p4) / 2.0;
                     if(b > s3)
                        s3 = b;
                     b = (p3 + p4) / 2.0;
                     if(b > s4)
                        s4 = b;
                     b = (p5 + p7) / 2.0;
                     if(b > s5)
                        s5 = b;
                     b = (p5 + p6) / 2.0;
                     if(b > s6)
                        s6 = b;
                     b = (p6 + p8) / 2.0;
                     if(b > s7)
                        s7 = b;
                     b = (p7 + p8) / 2.0;
                     if(b > s8)
                        s8 = b;
                     b = (p2 + p6) / 2.0;
                     if(b > s9)
                        s9 = b;
                     b = (p4 + p8) / 2.0;
                     if(b > s10)
                        s10 = b;
                     b = (p1 + p5) / 2.0;
                     if(b > s11)
                        s11 = b;
                     b = (p3 + p7) / 2.0;
                     if(b > s12)
                        s12 = b;
                     s1 = s1 - (p1 + p3) / 2.0;
                     s2 = s2 - (p1 + p2) / 2.0;
                     s3 = s3 - (p2 + p4) / 2.0;
                     s4 = s4 - (p3 + p4) / 2.0;
                     s5 = s5 - (p5 + p7) / 2.0;
                     s6 = s6 - (p5 + p6) / 2.0;
                     s7 = s7 - (p6 + p8) / 2.0;
                     s8 = s8 - (p7 + p8) / 2.0;
                     s9 = s9 - (p2 + p6) / 2.0;
                     s10 = s10 - (p4 + p8) / 2.0;
                     s11 = s11 - (p1 + p5) / 2.0;
                     s12 = s12 - (p3 + p7) / 2.0;
                     b = (s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0;
                     if(b > r1)
                        r1 = b;
                     b = (s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0;
                     if(b > r2)
                        r2 = b;
                     b = (s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0;
                     if(b > r3)
                        r3 = b;
                     b = (s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0;
                     if(b > r4)
                        r4 = b;
                     b = (s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0;
                     if(b > r5)
                        r5 = b;
                     b = (s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0;
                     if(b > r6)
                        r6 = b;
                     r1 = r1 - ((s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0);
                     r2 = r2 - ((s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0);
                     r3 = r3 - ((s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0);
                     r4 = r4 - ((s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0);
                     r5 = r5 - ((s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0);
                     r6 = r6 - ((s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0);
                     b = (r1 + r2) / 2.0 + (r3 + r4) / 2.0 + (r5 + r6) / 2.0 + (s1 + s3 + s5 + s7) / 4.0 + (s2 + s4 + s6 + s8) / 4.0 + (s9 + s10 + s11 + s12) / 4.0 + (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8.0;
                     if(b < a)
                        a = b;
                     working_space[x][y][z] = a;
                  }
               }
            }
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     spectrum[x][y][z] = working_space[x][y][z];
                  }
               }
            }
         }
      }

      else if (filterType == kBackOneStepFiltering) {
         for (i = sampling; i >= 1; i--) {
            q1 = (Int_t) TMath::Min(i, numberIterationsX), q2 =(Int_t) TMath::Min(i, numberIterationsY), q3 =(Int_t) TMath::Min(i, numberIterationsZ);
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     a = spectrum[x][y][z];
                     p1 = spectrum[x + q1][y + q2][z - q3];
                     p2 = spectrum[x - q1][y + q2][z - q3];
                     p3 = spectrum[x + q1][y - q2][z - q3];
                     p4 = spectrum[x - q1][y - q2][z - q3];
                     p5 = spectrum[x + q1][y + q2][z + q3];
                     p6 = spectrum[x - q1][y + q2][z + q3];
                     p7 = spectrum[x + q1][y - q2][z + q3];
                     p8 = spectrum[x - q1][y - q2][z + q3];
                     s1 = spectrum[x + q1][y     ][z - q3];
                     s2 = spectrum[x     ][y + q2][z - q3];
                     s3 = spectrum[x - q1][y     ][z - q3];
                     s4 = spectrum[x     ][y - q2][z - q3];
                     s5 = spectrum[x + q1][y     ][z + q3];
                     s6 = spectrum[x     ][y + q2][z + q3];
                     s7 = spectrum[x - q1][y     ][z + q3];
                     s8 = spectrum[x     ][y - q2][z + q3];
                     s9 = spectrum[x - q1][y + q2][z     ];
                     s10 = spectrum[x - q1][y - q2][z     ];
                     s11 = spectrum[x + q1][y + q2][z     ];
                     s12 = spectrum[x + q1][y - q2][z     ];
                     r1 = spectrum[x     ][y     ][z - q3];
                     r2 = spectrum[x     ][y     ][z + q3];
                     r3 = spectrum[x - q1][y     ][z     ];
                     r4 = spectrum[x + q1][y     ][z     ];
                     r5 = spectrum[x     ][y + q2][z     ];
                     r6 = spectrum[x     ][y - q2][z     ];
                     b = (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8 - (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 4 + (r1 + r2 + r3 + r4 + r5 + r6) / 2;
                     c = -(s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 4+(r1 + r2 + r3 + r4 + r5 + r6) / 2;
                     d = -(p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8)/8 + (s1 + s2 + s3 + s4 + s5 + s6 + s7 + s8 + s9 + s10 + s11 + s12) / 12;
                     if(b < a && b >= 0 && c >=0 && d >= 0)
                        a = b;
                     working_space[x][y][z] = a;
                  }
               }
            }
            for (z = q3; z < ssizez - q3; z++) {
               for (y = q2; y < ssizey - q2; y++) {
                  for (x = q1; x < ssizex - q1; x++) {
                     spectrum[x][y][z] = working_space[x][y][z];
                  }
               }
            }
         }
      }
   }
   for(i = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++)
         delete[] working_space[i][j];
      delete[] working_space[i];
   }
   delete[] working_space;
   return 0;
}

//_____________________________________________________________________________
const char* TSpectrum3::SmoothMarkov(Double_t***source, Int_t ssizex, Int_t ssizey, Int_t ssizez, Int_t averWindow)
{
/////////////////////////////////////////////////////////////////////////////
// THREE-DIMENSIONAL MARKOV SPECTRUM SMOOTHING FUNCTION                    //
//                                                                         //
// This function calculates smoothed spectrum from source spectrum         //
//      based on Markov chain method.                                      //
// The result is placed in the array pointed by spectrum pointer.          //
//                                                                         //
// Function parameters:                                                    //
// source-pointer to the array of source spectrum                          //
// working_space-pointer to the working array                              //
// ssizex-x length of spectrum and working space arrays                    //
// ssizey-y length of spectrum and working space arrays                    //
// ssizey-z length of spectrum and working space arrays                    //
// averWindow-width of averaging smoothing window                          //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////
//Begin_Html <!--
/* -->

<div class=Section2>

<p class=MsoNormal style='text-align:justify'><b><span style='font-size:14.0pt'>Smoothing</span></b></p>

<p class=MsoNormal style='text-align:justify'><i>&nbsp;</i></p>

<p class=MsoNormal><i>Goal: Suppression of statistical fluctuations</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>the algorithm is based on discrete Markov chain, which has very simple
invariant distribution</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal>            <sub><img width=404 height=42
src="Smoothing_files/image001.gif"></sub><span style='font-family:Arial'>     </span></p>

<p class=MsoNormal style='text-align:justify'><span style='font-family:Arial'>       
</span><sub><img width=22 height=28 src="Smoothing_files/image002.gif"></sub><span
style='font-family:Arial'>  </span>being defined from the normalization
condition <sub><img width=50 height=37 src="Smoothing_files/image003.gif"></sub></p>

<p class=MsoNormal>         n is the length of the smoothed spectrum and </p>

<p class=MsoNormal>

<table cellpadding=0 cellspacing=0 align=left>
 <tr>
  <td width=65 height=9></td>
 </tr>
 <tr>
  <td></td>
  <td><img width=205 height=48 src="Smoothing_files/image004.gif"></td>
 </tr>
</table>

 &nbsp;</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<br clear=ALL>

<p class=MsoNormal style='margin-left:34.2pt;text-align:justify'>is the
probability of the change of the peak position from channel i to the channel
i+1.  <sub><img width=24 height=31 src="Smoothing_files/image005.gif"></sub>is
the normalization constant so that <sub><img width=99 height=25
src="Smoothing_files/image006.gif"></sub> and m is a width of smoothing window.
We have extended this algorithm to three dimensions. </p>

<p class=MsoNormal><i>&nbsp;</i></p>

<p class=MsoNormal><i>Function:</i></p>

<p class=MsoNormal><b>const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#char" target="_parent">char</a>*
</b><a href="http://root.cern.ch/root/html/TSpectrum.html#TSpectrum:Fit1Awmi"><b>TSpectrum3::SmoothMarkov</b></a><b>(<a
href="http://root.cern.ch/root/html/ListOfTypes.html#double" target="_parent">double</a>
***fSpectrum, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fSizex, <a
href="http://root.cern.ch/root/html/ListOfTypes.html#int" target="_parent">int</a>
fSizey, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int"
target="_parent">int</a> fSizey,  <a
href="http://root.cern.ch/root/html/ListOfTypes.html#int" target="_parent">int</a>
fAverWindow)  </b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>This function calculates smoothed
spectrum from the source spectrum based on Markov chain method. The result is
placed in the field pointed by source pointer. On successful completion it
returns 0. On error it returns pointer to the string describing error.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><i><span style='color:red'>Parameters:</span></i></p>

<p class=MsoNormal>        <b>fSpectrum</b>-pointer to the matrix of source
spectrum                  </p>

<p class=MsoNormal>        <b>fSizex, fSizey, fSizez</b> -lengths of the
spectrum matrix                                 </p>

<p class=MsoNormal>        <b>fAverWindow</b>-width of averaging smoothing
window </p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b><i>Reference:</i></b></p>

<p class=MsoNormal style='text-align:justify'>[1] Z.K. Silagadze, A new
algorithm for automatic photopeak searches. NIM A 376 (1996), 451<b>.</b>  </p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal><i>Example 1 – script SmootMarkov3.c :</i></p>

<p class=MsoNormal><i><img border=0 width=601 height=368
src="Smoothing_files/image007.jpg"></i><b>Fig. 1 Original noisy spectrum.    </b></p>

<p class=MsoNormal><b><img border=0 width=601 height=368
src="Smoothing_files/image008.jpg"></b></p>

<p class=MsoNormal><b>Fig. 2 Smoothed spectrum with averaging window m=3.</b></p>

<p class=MsoNormal><b><span style='color:#339966'>&nbsp;</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 the
Markov smoothing (class TSpectrum3).</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 &gt; .x
SmoothMarkov3.C</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>void SmoothMarkov3()
{</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t i, j, k;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsx = 64;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsy = 64;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsz =
64;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmax  =
nbinsx;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymax  =
nbinsy;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t zmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>Int_t zmax  = nbinsz;      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** source = new
Double_t**[nbinsx];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      source[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         source[i][j]=new
Double_t[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }           </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *sm = new
TH3F(&quot;Smoothing&quot;,&quot;Markov
smoothing&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TFile *f = new
TFile(&quot;TSpectrum3.root&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   sm=(TH3F*)
f-&gt;Get(&quot;back;1&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TCanvas *Background = new
TCanvas(&quot;Smoothing&quot;,&quot;Markov smoothing&quot;,10,10,1000,700);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TSpectrum3 *s = new
TSpectrum3();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                  for (k = 0;
k &lt; nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       source[i][j][k]
= sm-&gt;GetBinContent(i + 1,j + 1,k + 1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    } </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                 }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
s-&gt;SmoothMarkov(source,nbinsx,nbinsy,nbinsz,3);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
sm-&gt;SetBinContent(i + 1,j + 1,k + 1, source[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
sm-&gt;Draw(&quot;&quot;);  </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>

</div>

<!-- */
// --> End_Html

   Int_t xmin,xmax,ymin,ymax,zmin,zmax,i,j,k,l;
   Double_t a,b,maxch;
   Double_t nom,nip,nim,sp,sm,spx,smx,spy,smy,spz,smz,plocha=0;
   if(averWindow<=0)
      return "Averaging Window must be positive";
   Double_t***working_space = new Double_t**[ssizex];
   for(i = 0;i < ssizex; i++){
      working_space[i] = new Double_t*[ssizey];
      for(j = 0;j < ssizey; j++)
         working_space[i][j] = new Double_t[ssizez];
   }
   xmin = 0;
   xmax = ssizex - 1;
   ymin = 0;
   ymax = ssizey - 1;
   zmin = 0;
   zmax = ssizez - 1;
   for(i = 0,maxch = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++){
         for(k = 0;k < ssizez; k++){
            working_space[i][j][k] = 0;
            if(maxch < source[i][j][k])
               maxch = source[i][j][k];
            plocha += source[i][j][k];
         }
      }
   }
   if(maxch == 0) {
      delete [] working_space;
      return 0;
   }

   nom = 0;
   working_space[xmin][ymin][zmin] = 1;
   for(i = xmin;i < xmax; i++){
      nip = source[i][ymin][zmin] / maxch;
      nim = source[i + 1][ymin][zmin] / maxch;
      sp = 0,sm = 0;
      for(l = 1;l <= averWindow; l++){
         if((i + l) > xmax)
            a = source[xmax][ymin][zmin] / maxch;

         else
            a = source[i + l][ymin][zmin] / maxch;

         b = a - nip;
         if(a + nip <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nip);

         b = b / a;
         b = TMath::Exp(b);
         sp = sp + b;
         if(i - l + 1 < xmin)
            a = source[xmin][ymin][zmin] / maxch;

         else
            a = source[i - l + 1][ymin][zmin] / maxch;

         b = a - nim;
         if(a + nim <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nim);

         b = b / a;
         b = TMath::Exp(b);
         sm = sm + b;
      }
      a = sp / sm;
      a = working_space[i + 1][ymin][zmin] = a * working_space[i][ymin][zmin];
      nom = nom + a;
   }
   for(i = ymin;i < ymax; i++){
      nip = source[xmin][i][zmin] / maxch;
      nim = source[xmin][i + 1][zmin] / maxch;
      sp = 0,sm = 0;
      for(l = 1;l <= averWindow; l++){
         if((i + l) > ymax)
            a = source[xmin][ymax][zmin] / maxch;

         else
            a = source[xmin][i + l][zmin] / maxch;

         b = a - nip;
         if(a + nip <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nip);

         b = b / a;
         b = TMath::Exp(b);
         sp = sp + b;
         if(i - l + 1 < ymin)
            a = source[xmin][ymin][zmin] / maxch;

         else
            a = source[xmin][i - l + 1][zmin] / maxch;

         b = a - nim;
         if(a + nim <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nim);

         b = b / a;
         b = TMath::Exp(b);
         sm = sm + b;
      }
      a = sp / sm;
      a = working_space[xmin][i + 1][zmin] = a * working_space[xmin][i][zmin];
      nom = nom + a;
   }
   for(i = zmin;i < zmax; i++){
      nip = source[xmin][ymin][i] / maxch;
      nim = source[xmin][ymin][i + 1] / maxch;
      sp = 0,sm = 0;
      for(l = 1;l <= averWindow; l++){
         if((i + l) > zmax)
            a = source[xmin][ymin][zmax] / maxch;

         else
            a = source[xmin][ymin][i + l] / maxch;

         b = a - nip;
         if(a + nip <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nip);

         b = b / a;
         b = TMath::Exp(b);
         sp = sp + b;
         if(i - l + 1 < zmin)
            a = source[xmin][ymin][zmin] / maxch;

         else
            a = source[xmin][ymin][i - l + 1] / maxch;

         b = a - nim;
         if(a + nim <= 0)
            a = 1;

         else
            a = TMath::Sqrt(a + nim);
         b = b / a;
         b = TMath::Exp(b);
         sm = sm + b;
      }
      a = sp / sm;
      a = working_space[xmin][ymin][i + 1] = a * working_space[xmin][ymin][i];
      nom = nom + a;
   }
   for(i = xmin;i < xmax; i++){
      for(j = ymin;j < ymax; j++){
         nip = source[i][j + 1][zmin] / maxch;
         nim = source[i + 1][j + 1][zmin] / maxch;
         spx = 0,smx = 0;
         for(l = 1;l <= averWindow; l++){
            if(i + l > xmax)
               a = source[xmax][j][zmin] / maxch;

            else
               a = source[i + l][j][zmin] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spx = spx + b;
            if(i - l + 1 < xmin)
               a = source[xmin][j][zmin] / maxch;

            else
               a = source[i - l + 1][j][zmin] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smx = smx + b;
         }
         spy = 0,smy = 0;
         nip = source[i + 1][j][zmin] / maxch;
         nim = source[i + 1][j + 1][zmin] / maxch;
         for(l = 1;l <= averWindow; l++){
            if(j + l > ymax)
               a = source[i][ymax][zmin] / maxch;

            else
               a = source[i][j + l][zmin] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spy = spy + b;
            if(j - l + 1 < ymin)
               a = source[i][ymin][zmin] / maxch;

            else
               a = source[i][j - l + 1][zmin] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smy = smy + b;
         }
         a = (spx * working_space[i][j + 1][zmin] + spy * working_space[i + 1][j][zmin]) / (smx + smy);
         working_space[i + 1][j + 1][zmin] = a;
         nom = nom + a;
      }
   }
   for(i = xmin;i < xmax; i++){
      for(j = zmin;j < zmax; j++){
         nip = source[i][ymin][j + 1] / maxch;
         nim = source[i + 1][ymin][j + 1] / maxch;
         spx = 0,smx = 0;
         for(l = 1;l <= averWindow; l++){
            if(i + l > xmax)
               a = source[xmax][ymin][j] / maxch;

            else
               a = source[i + l][ymin][j] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spx = spx + b;
            if(i - l + 1 < xmin)
               a = source[xmin][ymin][j] / maxch;

            else
               a = source[i - l + 1][ymin][j] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smx = smx + b;
         }
         spz = 0,smz = 0;
         nip = source[i + 1][ymin][j] / maxch;
         nim = source[i + 1][ymin][j + 1] / maxch;
         for(l = 1;l <= averWindow; l++){
            if(j + l > zmax)
               a = source[i][ymin][zmax] / maxch;

            else
               a = source[i][ymin][j + l] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spz = spz + b;
            if(j - l + 1 < zmin)
               a = source[i][ymin][zmin] / maxch;

            else
               a = source[i][ymin][j - l + 1] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smz = smz + b;
         }
         a = (spx * working_space[i][ymin][j + 1] + spz * working_space[i + 1][ymin][j]) / (smx + smz);
         working_space[i + 1][ymin][j + 1] = a;
         nom = nom + a;
      }
   }
   for(i = ymin;i < ymax; i++){
      for(j = zmin;j < zmax; j++){
         nip = source[xmin][i][j + 1] / maxch;
         nim = source[xmin][i + 1][j + 1] / maxch;
         spy = 0,smy = 0;
         for(l = 1;l <= averWindow; l++){
            if(i + l > ymax)
               a = source[xmin][ymax][j] / maxch;

            else
               a = source[xmin][i + l][j] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spy = spy + b;
            if(i - l + 1 < ymin)
               a = source[xmin][ymin][j] / maxch;

            else
               a = source[xmin][i - l + 1][j] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smy = smy + b;
         }
         spz = 0,smz = 0;
         nip = source[xmin][i + 1][j] / maxch;
         nim = source[xmin][i + 1][j + 1] / maxch;
         for(l = 1;l <= averWindow; l++){
            if(j + l > zmax)
               a = source[xmin][i][zmax] / maxch;

            else
               a = source[xmin][i][j + l] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            spz = spz + b;
            if(j - l + 1 < zmin)
               a = source[xmin][i][zmin] / maxch;

            else
               a = source[xmin][i][j - l + 1] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            smz = smz + b;
         }
         a = (spy * working_space[xmin][i][j + 1] + spz * working_space[xmin][i + 1][j]) / (smy + smz);
         working_space[xmin][i + 1][j + 1] = a;
         nom = nom + a;
      }
   }
   for(i = xmin;i < xmax; i++){
      for(j = ymin;j < ymax; j++){
         for(k = zmin;k < zmax; k++){
            nip = source[i][j + 1][k + 1] / maxch;
            nim = source[i + 1][j + 1][k + 1] / maxch;
            spx = 0,smx = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > xmax)
                  a = source[xmax][j][k] / maxch;

               else
                  a = source[i + l][j][k] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spx = spx + b;
               if(i - l + 1 < xmin)
                  a = source[xmin][j][k] / maxch;

               else
                  a = source[i - l + 1][j][k] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smx = smx + b;
            }
            spy = 0,smy = 0;
            nip = source[i + 1][j][k + 1] / maxch;
            nim = source[i + 1][j + 1][k + 1] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > ymax)
                  a = source[i][ymax][k] / maxch;

               else
                  a = source[i][j + l][k] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spy = spy + b;
               if(j - l + 1 < ymin)
                  a = source[i][ymin][k] / maxch;

               else
                  a = source[i][j - l + 1][k] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smy = smy + b;
            }
            spz = 0,smz = 0;
            nip = source[i + 1][j + 1][k] / maxch;
            nim = source[i + 1][j + 1][k + 1] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > zmax)
                  a = source[i][j][zmax] / maxch;

               else
                  a = source[i][j][k + l] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spz = spz + b;
               if(j - l + 1 < ymin)
                  a = source[i][j][zmin] / maxch;

               else
                  a = source[i][j][k - l + 1] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smz = smz+b;
            }
            a = (spx * working_space[i][j + 1][k + 1] + spy * working_space[i + 1][j][k + 1] + spz * working_space[i + 1][j + 1][k]) / (smx + smy + smz);
            working_space[i + 1][j + 1][k + 1] = a;
            nom = nom + a;
         }
      }
   }
   for(i = xmin;i <= xmax; i++){
      for(j = ymin;j <= ymax; j++){
         for(k = zmin;k <= zmax; k++){
            working_space[i][j][k] = working_space[i][j][k] / nom;
         }
      }
   }
   for(i = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++){
         for(k = 0;k < ssizez; k++){
            source[i][j][k] = plocha * working_space[i][j][k];
         }
      }
   }
   for(i = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++)
         delete[] working_space[i][j];
      delete[] working_space[i];
   }
   delete[] working_space;
   return 0;
}

//______________________________________________________________________________________________________________________________
const char *TSpectrum3::Deconvolution(Double_t***source, const Double_t***resp,
                                       Int_t ssizex, Int_t ssizey, Int_t ssizez,
                                       Int_t numberIterations,
                                       Int_t numberRepetitions,
                                       Double_t boost)
{
/////////////////////////////////////////////////////////////////////////////
// THREE-DIMENSIONAL DECONVOLUTION FUNCTION                                //
// This function calculates deconvolution from source spectrum             //
// according to response spectrum                                          //
// The result is placed in the cube pointed by source pointer.             //
//                                                                         //
// Function parameters:                                                    //
// source-pointer to the cube of source spectrum                           //
// resp-pointer to the cube of response spectrum                           //
// ssizex-x length of source and response spectra                          //
// ssizey-y length of source and response spectra                          //
// ssizey-y length of source and response spectra                          //
// numberIterations, for details we refer to manual                        //
// numberRepetitions, for details we refer to manual                       //
// boost, boosting factor, for details we refer to manual                  //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////
//Begin_Html <!--
/* -->

<div class=Section3>

<p class=MsoNormal style='text-align:justify'><b><span style='font-size:14.0pt'>Deconvolution</span></b></p>

<p class=MsoNormal style='text-align:justify'><i>&nbsp;</i></p>

<p class=MsoNormal style='text-align:justify'><i>Goal: Improvement of the
resolution in spectra, decomposition of multiplets</i></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal>Mathematical formulation of the 3-dimensional convolution
system is</p>

<p class=MsoNormal style='margin-left:18.0pt'>

<table cellpadding=0 cellspacing=0 align=left>
 <tr>
  <td width=69 height=1></td>
 </tr>
 <tr>
  <td></td>
  <td><img width=334 height=67 src="gif/spectrum3_deconvolution_image001.gif"></td>
 </tr>
</table>

<span style='font-size:16.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span style='font-size:16.0pt'>&nbsp;</span></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal>&nbsp;</p>

<br clear=ALL>

<p class=MsoNormal>where h(i,j,k) is the impulse response function, x, y are
input and output fields, respectively, <sub><img width=69 height=24
src="gif/spectrum3_deconvolution_image002.gif"></sub>, are the lengths of x and h fields<i>
</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>let us assume that we know the response and the output fields (spectra)
of the above given system. </p>

<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>the deconvolution represents solution of the overdetermined system of
linear equations, i.e.,  the calculation of the field <b>x.</b></p>

<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>from numerical stability point of view the operation of deconvolution is
extremely critical (ill-posed  problem) as well as time consuming operation. </p>

<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>the Gold deconvolution algorithm proves to work very well even for
2-dimensional systems. Generalization of the algorithm for 2-dimensional
systems was presented in [1], and for multidimensional systems in [2].</p>

<p class=MsoNormal style='margin-left:36.0pt;text-align:justify;text-indent:
-18.0pt'>•<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>for Gold deconvolution algorithm as well as for boosted deconvolution
algorithm we refer also to TSpectrum and TSpectrum2 </p>

<p class=MsoNormal><i>&nbsp;</i></p>

<p class=MsoNormal><i>Function:</i></p>

<p class=MsoNormal style='text-align:justify'><b>const <a
href="http://root.cern.ch/root/html/ListOfTypes.html#char">char</a>* </b><a
name="TSpectrum:Deconvolution1"></a><a
href="http://root.cern.ch/root/html/TSpectrum.html#TSpectrum:Fit1Awmi"><b>TSpectrum3::Deconvolution</b></a><b>(<a
href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a> ***fSource,
const <a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
***fResp, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizex, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizey, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizez, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fNumberIterations, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fNumberRepetitions, <a
href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a> fBoost)</b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>This function calculates
deconvolution from source spectrum according to response spectrum using Gold
deconvolution algorithm. The result is placed in the field pointed by source
pointer. On successful completion it returns 0. On error it returns pointer to
the string describing error. If desired after every fNumberIterations one can apply
boosting operation (exponential function with exponent given by fBoost
coefficient) and repeat it fNumberRepetitions times.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><i><span style='color:red'>Parameters:</span></i></p>

<p class=MsoNormal>        <b>fSource</b>-pointer to the matrix of source
spectrum                  </p>

<p class=MsoNormal>        <b>fResp</b>-pointer to the matrix of response
spectrum                  </p>

<p class=MsoNormal>        <b>fSizex, fSizey, fSizez</b> -lengths of the
spectrum matrix                                 </p>

<p class=MsoNormal style='text-align:justify'>        <b>fNumberIterations</b>-number
of iterations </p>

<p class=MsoNormal style='text-align:justify'>        <b>fNumberRepetitions</b>-number
of repetitions for boosted deconvolution. It must be </p>

<p class=MsoNormal style='text-align:justify'>        greater or equal to one.</p>

<p class=MsoNormal style='text-align:justify'>        <b>fBoost</b>-boosting
coefficient, applies only if fNumberRepetitions is greater than one.  </p>

<p class=MsoNormal style='text-align:justify'>        <span style='color:fuchsia'>Recommended
range &lt;1,2&gt;.</span></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b><i>References:</i></b></p>

<p class=MsoNormal style='text-align:justify'> [1] <span lang=SK>M.
Morhá&#269;, J. Kliman, V. Matoušek, M. Veselský, I. Turzo</span>.: Efficient
one- and two-dimensional Gold deconvolution and its application to gamma-ray
spectra decomposition. NIM, A401 (1997) 385-408.</p>

<p class=MsoNormal style='text-align:justify'>[2] Morhá&#269; M., Matoušek V.,
Kliman J., Efficient algorithm of multidimensional deconvolution and its
application to nuclear data processing, Digital Signal Processing 13 (2003)
144. </p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal><i>Example 1 – script Decon.c :</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"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>response function (usually peak) should be shifted to the beginning of
the coordinate system (see Fig. 1)</p>

<p class=MsoNormal style='text-align:justify'><b><span style='font-size:16.0pt'><img
border=0 width=601 height=368 src="gif/spectrum3_deconvolution_image003.jpg"></span></b></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 1 Three-dimensional
response spectrum</b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><img border=0 width=601 height=368
src="gif/spectrum3_deconvolution_image004.jpg"></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 2 Three-dimensional input
spectrum (before deconvolution)</b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><img border=0 width=601 height=368
src="gif/spectrum3_deconvolution_image005.jpg"></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 3 Spectrum from Fig. 2
after deconvolution (100 iterations)</b></p>

<p class=MsoNormal>&nbsp;</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 the
Gold deconvolution (class TSpectrum3).</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 &gt; .x Decon3.C</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>#include &lt;TSpectrum3&gt;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>&nbsp;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>void Decon3() {</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Int_t i, j, k;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span><span lang=FR
style='font-size:10.0pt'>Int_t nbinsx = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsy = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsz =
32;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmax  =
nbinsx;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymax  =
nbinsy;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t zmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>Int_t zmax  = nbinsz;      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** source = new
Double_t**[nbinsx];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** resp = new Double_t
**[nbinsx];      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      source[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         source[i][j]=new
Double_t[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }           </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      resp[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         resp[i][j]=new Double_t
[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }              </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *decon_in = new
TH3F(&quot;decon_in&quot;,&quot;Deconvolution&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *decon_resp = new
TH3F(&quot;decon_resp&quot;,&quot;Deconvolution&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);  
</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TFile *f = new
TFile(&quot;TSpectrum3.root&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   decon_in=(TH3F*)
f-&gt;Get(&quot;decon_in;1&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   decon_resp=(TH3F*)
f-&gt;Get(&quot;decon_resp;1&quot;);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TCanvas *Deconvolution =
new TCanvas(&quot;Deconvolution&quot;,&quot;Deconvolution of 3-dimensional
spectra&quot;,10,10,1000,700);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TSpectrum3 *s = new
TSpectrum3();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                  for (k = 0;
k &lt; nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       source[i][j][k]
= decon_in-&gt;GetBinContent(i + 1,j + 1,k + 1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       resp[i][j][k]
= decon_resp-&gt;GetBinContent(i + 1,j + 1,k + 1);                        </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    } </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                 }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
s-&gt;Deconvolution(source,resp,nbinsx,nbinsy,nbinsz,100,1,1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
decon_in-&gt;SetBinContent(i + 1,j + 1,k + 1, source[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal>   decon_in-&gt;Draw(&quot;&quot;);  </p>

<p class=MsoNormal>}</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><i>Example 2 – script Decon_hr.c :</i></p>

<p class=MsoNormal style='text-align:justify'>This example illustrates repeated
Gold deconvolution with boosting. After every 10 iterations we apply power
function with exponent = 2 to the spectrum given in Fig. 2.</p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><img border=0 width=601
height=368 src="gif/spectrum3_deconvolution_image006.jpg"></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 4 Spectrum from Fig. 2
after boosted deconvolution (10 iterations repeated 10 times). It decomposes
completely cluster of peaks from Fig 2.</b></p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</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 the
Gold deconvolution (class TSpectrum3).</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 &gt; .x Decon3_hr.C</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>void Decon3_hr() {</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Int_t i, j, k;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span><span lang=FR
style='font-size:10.0pt'>Int_t nbinsx = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsy = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsz =
32;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmax  =
nbinsx;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymax  =
nbinsy;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t zmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>Int_t zmax  = nbinsz;      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** source = new
Double_t**[nbinsx];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** resp = new Double_t
**[nbinsx];      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      source[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         source[i][j]=new
Double_t[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }           </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      resp[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         resp[i][j]=new Double_t
[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }              </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *decon_in = new
TH3F(&quot;decon_in&quot;,&quot;Deconvolution&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *decon_resp = new
TH3F(&quot;decon_resp&quot;,&quot;Deconvolution&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);  
</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TFile *f = new
TFile(&quot;TSpectrum3.root&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   decon_in=(TH3F*)
f-&gt;Get(&quot;decon_in;1&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   decon_resp=(TH3F*)
f-&gt;Get(&quot;decon_resp;1&quot;);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TCanvas *Deconvolution =
new TCanvas(&quot;Deconvolution&quot;,&quot;High resolution deconvolution of
3-dimensional spectra&quot;,10,10,1000,700);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TSpectrum3 *s = new
TSpectrum3();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                  for (k = 0;
k &lt; nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       source[i][j][k]
= decon_in-&gt;GetBinContent(i + 1,j + 1,k + 1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       resp[i][j][k]
= decon_resp-&gt;GetBinContent(i + 1,j + 1,k + 1);                        </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    } </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                 }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
s-&gt;Deconvolution(source,resp,nbinsx,nbinsy,nbinsz,10,10,2);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
decon_in-&gt;SetBinContent(i + 1,j + 1,k + 1, source[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>  
decon_in-&gt;Draw(&quot;&quot;);  </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>

<p class=MsoNormal style='text-align:justify'><span style='font-size:16.0pt'>&nbsp;</span></p>

<p class=MsoNormal style='text-align:justify'><span style='font-size:16.0pt'>&nbsp;</span></p>

</div>

<!-- */
// --> End_Html

   Int_t i, j, k, lhx, lhy, lhz, i1, i2, i3, j1, j2, j3, k1, k2, k3, lindex, i1min, i1max, i2min, i2max, i3min, i3max, j1min, j1max, j2min, j2max, j3min, j3max, positx = 0, posity = 0, positz = 0, repet;
   Double_t lda, ldb, ldc, area, maximum = 0;
   if (ssizex <= 0 || ssizey <= 0 || ssizez <= 0)
      return "Wrong parameters";
   if (numberIterations <= 0)
      return "Number of iterations must be positive";
   if (numberRepetitions <= 0)
      return "Number of repetitions must be positive";
   Double_t ***working_space=new Double_t** [ssizex];
   for(i=0;i<ssizex;i++){
      working_space[i]=new Double_t* [ssizey];
      for(j=0;j<ssizey;j++)
         working_space[i][j]=new Double_t [5*ssizez];
   }
   area = 0;
   lhx = -1, lhy = -1, lhz = -1;
   for (i = 0; i < ssizex; i++) {
      for (j = 0; j < ssizey; j++) {
         for (k = 0; k < ssizez; k++) {
            lda = resp[i][j][k];
            if (lda != 0) {
               if ((i + 1) > lhx)
                  lhx = i + 1;
               if ((j + 1) > lhy)
                  lhy = j + 1;
               if ((k + 1) > lhz)
                  lhz = k + 1;
            }
            working_space[i][j][k] = lda;
            area = area + lda;
            if (lda > maximum) {
               maximum = lda;
               positx = i, posity = j, positz = k;
            }
         }
      }
   }
   if (lhx == -1 || lhy == -1 || lhz == -1)
      return ("Zero response data");

//calculate ht*y and write into p
   for (i3 = 0; i3 < ssizez; i3++) {
      for (i2 = 0; i2 < ssizey; i2++) {
         for (i1 = 0; i1 < ssizex; i1++) {
            ldc = 0;
            for (j3 = 0; j3 <= (lhz - 1); j3++) {
               for (j2 = 0; j2 <= (lhy - 1); j2++) {
                  for (j1 = 0; j1 <= (lhx - 1); j1++) {
                     k3 = i3 + j3, k2 = i2 + j2, k1 = i1 + j1;
                     if (k3 >= 0 && k3 < ssizez && k2 >= 0 && k2 < ssizey && k1 >= 0 && k1 < ssizex) {
                        lda = working_space[j1][j2][j3];
                        ldb = source[k1][k2][k3];
                        ldc = ldc + lda * ldb;
                     }
                  }
               }
            }
            working_space[i1][i2][i3 + ssizez] = ldc;
         }
      }
   }

//calculate matrix b=ht*h
   i1min = -(lhx - 1), i1max = lhx - 1;
   i2min = -(lhy - 1), i2max = lhy - 1;
   i3min = -(lhz - 1), i3max = lhz - 1;
   for (i3 = i3min; i3 <= i3max; i3++) {
      for (i2 = i2min; i2 <= i2max; i2++) {
         for (i1 = i1min; i1 <= i1max; i1++) {
            ldc = 0;
            j3min = -i3;
            if (j3min < 0)
               j3min = 0;
            j3max = lhz - 1 - i3;
            if (j3max > lhz - 1)
               j3max = lhz - 1;
            for (j3 = j3min; j3 <= j3max; j3++) {
               j2min = -i2;
               if (j2min < 0)
                  j2min = 0;
               j2max = lhy - 1 - i2;
               if (j2max > lhy - 1)
                  j2max = lhy - 1;
               for (j2 = j2min; j2 <= j2max; j2++) {
                  j1min = -i1;
                  if (j1min < 0)
                     j1min = 0;
                  j1max = lhx - 1 - i1;
                  if (j1max > lhx - 1)
                     j1max = lhx - 1;
                  for (j1 = j1min; j1 <= j1max; j1++) {
                     lda = working_space[j1][j2][j3];
                     if (i1 + j1 < ssizex && i2 + j2 < ssizey)
                        ldb = working_space[i1 + j1][i2 + j2][i3 + j3];
                     else
                        ldb = 0;
                     ldc = ldc + lda * ldb;
                  }
               }
            }
            working_space[i1 - i1min][i2 - i2min][i3 - i3min + 2 * ssizez ] = ldc;
         }
      }
   }

//initialization in x1 matrix
   for (i3 = 0; i3 < ssizez; i3++) {
      for (i2 = 0; i2 < ssizey; i2++) {
         for (i1 = 0; i1 < ssizex; i1++) {
            working_space[i1][i2][i3 + 3 * ssizez] = 1;
            working_space[i1][i2][i3 + 4 * ssizez] = 0;
         }
      }
   }

 //START OF ITERATIONS
   for (repet = 0; repet < numberRepetitions; repet++) {
      if (repet != 0) {
         for (i = 0; i < ssizex; i++) {
            for (j = 0; j < ssizey; j++) {
               for (k = 0; k < ssizez; k++) {
                  working_space[i][j][k + 3 * ssizez] = TMath::Power(working_space[i][j][k + 3 * ssizez],boost);
               }
            }
         }
      }
      for (lindex = 0; lindex < numberIterations; lindex++) {
         for (i3 = 0; i3 < ssizez; i3++) {
            for (i2 = 0; i2 < ssizey; i2++) {
               for (i1 = 0; i1 < ssizex; i1++) {
                  ldb = 0;
                  j3min = i3;
                  if (j3min > lhz - 1)
                     j3min = lhz - 1;
                  j3min = -j3min;
                  j3max = ssizez - i3 - 1;
                  if (j3max > lhz - 1)
                     j3max = lhz - 1;
                  j2min = i2;
                  if (j2min > lhy - 1)
                     j2min = lhy - 1;
                  j2min = -j2min;
                  j2max = ssizey - i2 - 1;
                  if (j2max > lhy - 1)
                     j2max = lhy - 1;
                  j1min = i1;
                  if (j1min > lhx - 1)
                     j1min = lhx - 1;
                  j1min = -j1min;
                  j1max = ssizex - i1 - 1;
                  if (j1max > lhx - 1)
                     j1max = lhx - 1;
                  for (j3 = j3min; j3 <= j3max; j3++) {
                     for (j2 = j2min; j2 <= j2max; j2++) {
                        for (j1 = j1min; j1 <= j1max; j1++) {
                           ldc =  working_space[j1 - i1min][j2 - i2min][j3 - i3min + 2 * ssizez];
                           lda = working_space[i1 + j1][i2 + j2][i3 + j3 + 3 * ssizez];
                           ldb = ldb + lda * ldc;
                        }
                     }
                  }
                  lda = working_space[i1][i2][i3 + 3 * ssizez];
                  ldc = working_space[i1][i2][i3 + 1 * ssizez];
                  if (ldc * lda != 0 && ldb != 0) {
                     lda = lda * ldc / ldb;
                  }

                  else
                     lda = 0;
                  working_space[i1][i2][i3 + 4 * ssizez] = lda;
               }
            }
         }
         for (i3 = 0; i3 < ssizez; i3++) {
            for (i2 = 0; i2 < ssizey; i2++) {
               for (i1 = 0; i1 < ssizex; i1++)
                  working_space[i1][i2][i3 + 3 * ssizez] = working_space[i1][i2][i3 + 4 * ssizez];
            }
         }
      }
   }
   for (i = 0; i < ssizex; i++) {
      for (j = 0; j < ssizey; j++){
         for (k = 0; k < ssizez; k++)
            source[(i + positx) % ssizex][(j + posity) % ssizey][(k + positz) % ssizez] = area * working_space[i][j][k + 3 * ssizez];
      }
   }
   delete [] working_space;
   return 0;
}

//__________________________________________________________________
Int_t TSpectrum3::SearchHighRes(const Double_t***source,Double_t***dest, Int_t ssizex, Int_t ssizey, Int_t ssizez,
                                 Double_t sigma, Double_t threshold,
                                 Bool_t backgroundRemove,Int_t deconIterations,
                                 Bool_t markov, Int_t averWindow)

{
/////////////////////////////////////////////////////////////////////////////
// THREE-DIMENSIONAL HIGH-RESOLUTION PEAK SEARCH FUNCTION                  //
// This function searches for peaks in source spectrum                     //
//  It is based on deconvolution method. First the background is           //
//  removed (if desired), then Markov spectrum is calculated               //
//  (if desired), then the response function is generated                  //
//  according to given sigma and deconvolution is carried out.             //
// It returns number of found peaks.                                       //
//                                                                         //
// Function parameters:                                                    //
// source-pointer to the matrix of source spectrum                         //
// dest-pointer to the matrix of resulting deconvolved spectrum            //
// ssizex-x length of source spectrum                                      //
// ssizey-y length of source spectrum                                      //
// ssizez-z length of source spectrum                                      //
// sigma-sigma of searched peaks, for details we refer to manual           //
// threshold-threshold value in % for selected peaks, peaks with           //
//                amplitude less than threshold*highest_peak/100           //
//                are ignored, see manual                                  //
//  backgroundRemove-logical variable, set if the removal of               //
//                background before deconvolution is desired               //
//  deconIterations-number of iterations in deconvolution operation        //
//  markov-logical variable, if it is true, first the source spectrum      //
//             is replaced by new spectrum calculated using Markov         //
//             chains method.                                              //
// averWindow-averanging window of searched peaks, for details             //
//                  we refer to manual (applies only for Markov method)    //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////
//Begin_Html <!--
/* -->

<div class=Section4>

<p class=MsoNormal><b><span style='font-size:14.0pt'>Peaks searching</span></b></p>

<p class=MsoNormal style='text-align:justify'><i>&nbsp;</i></p>

<p class=MsoNormal style='text-align:justify'><i>Goal: to identify
automatically the peaks in spectrum with the presence of the continuous
background, one- and two-fold coincidences (ridges) and statistical
fluctuations - noise.</i> </p>

<p class=MsoNormal><span style='font-family:Arial'>&nbsp;</span></p>

<p class=MsoNormal style='text-align:justify'>The common problems connected
with correct peak identification in three-dimensional coincidence spectra are</p>

<ul style='margin-top:0mm' type=disc>
 <li class=MsoNormal style='text-align:justify'>non-sensitivity to noise, i.e.,
     only statistically relevant peaks should be identified</li>
 <li class=MsoNormal style='text-align:justify'>non-sensitivity of the
     algorithm to continuous background</li>
 <li class=MsoNormal style='text-align:justify'>non-sensitivity to one-fold coincidences
     (coincidences peak – peak – background in all dimensions) and their
     crossings</li>
 <li class=MsoNormal style='text-align:justify'>non-sensitivity to two-fold
     coincidences (coincidences peak – background – background in all
     dimensions) and their crossings</li>
 <li class=MsoNormal style='text-align:justify'>ability to identify peaks close
     to the edges of the spectrum region</li>
 <li class=MsoNormal style='text-align:justify'>resolution, decomposition of
     doublets and multiplets. The algorithm should be able to recognize close
     positioned peaks. </li>
</ul>

<p class=MsoNormal><i>&nbsp;</i></p>

<p class=MsoNormal><i>Function:</i></p>

<p class=MsoNormal style='text-align:justify'><b><a
href="http://root.cern.ch/root/html/ListOfTypes.html#Int_t">Int_t</a> </b><a
name="TSpectrum:Search1HighRes"></a><a
href="http://root.cern.ch/root/html/TSpectrum.html#TSpectrum:Fit1Awmi"><b>TSpectrum3::SearchHighRes</b></a><b>
(const <a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
***fSource,<a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
***fDest, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizex, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizey, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fSizez, <a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
fSigma, <a href="http://root.cern.ch/root/html/ListOfTypes.html#double">double</a>
fThreshold, <a href="http://root.cern.ch/root/html/ListOfTypes.html#bool">bool</a>
fBackgroundRemove,<a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fDeconIterations, <a href="http://root.cern.ch/root/html/ListOfTypes.html#bool">bool</a>
fMarkov, <a href="http://root.cern.ch/root/html/ListOfTypes.html#int">int</a>
fAverWindow)   </b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'>This function searches for peaks
in source spectrum. It is based on deconvolution method. First the background
is removed (if desired), then Markov smoothed spectrum is calculated (if
desired), then the response function is generated according to given sigma and
deconvolution is carried out. On success it returns number of found peaks.</p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><i><span style='color:red'>Parameters:</span></i></p>

<p class=MsoNormal style='text-align:justify'>        <b>fSource</b>-pointer to
the matrix of source spectrum                  </p>

<p class=MsoNormal style='text-align:justify'>        <b>fDest</b>-resulting
spectrum after deconvolution</p>

<p class=MsoNormal style='text-align:justify'>        <b>fSizex, fSizey, fSizez</b>
-lengths of the source and destination spectra                </p>

<p class=MsoNormal style='text-align:justify'>        <b>fSigma</b>-sigma of
searched peaks</p>

<p class=MsoNormal style='margin-left:22.8pt;text-align:justify'><b>fThreshold</b>-
threshold value in % for selected peaks, peaks with amplitude less than
threshold*highest_peak/100 are ignored</p>

<p class=MsoNormal style='margin-left:22.8pt;text-align:justify'><b>fBackgroundRemove</b>-
background_remove-logical variable, true if the removal of background before
deconvolution is desired  </p>

<p class=MsoNormal style='margin-left:22.8pt;text-align:justify'><b>fDeconIterations</b>-number
of iterations in deconvolution operation</p>

<p class=MsoNormal style='margin-left:22.8pt;text-align:justify'><b>fMarkov</b>-logical
variable, if it is true, first the source spectrum is replaced by new spectrum
calculated using Markov chains method </p>

<p class=MsoNormal style='margin-left:19.95pt;text-align:justify;text-indent:
2.85pt'><b>fAverWindow</b>-width of averaging smoothing window </p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><b><i>References:</i></b></p>

<p class=MsoNormal style='text-align:justify'>[1] M.A. Mariscotti: A method for
identification of peaks in the presence of background and its application to
spectrum analysis. NIM 50 (1967), 309-320.</p>

<p class=MsoNormal style='text-align:justify'>[2] <span lang=SK> M.
Morhá&#269;, J. Kliman, V. Matoušek, M. Veselský, I. Turzo</span>.:Identification
of peaks in multidimensional coincidence gamma-ray spectra. NIM, A443 (2000)
108-125.</p>

<p class=MsoNormal style='text-align:justify'>[3] Z.K. Silagadze, A new
algorithm for automatic photopeak searches. NIM A 376 (1996), 451.</p>

<p class=MsoNormal style='text-align:justify'>&nbsp;</p>

<p class=MsoNormal><b>Example of peak searching method</b></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal style='text-align:justify'><a
href="http://root.cern.ch/root/html/src/TSpectrum.cxx.html#TSpectrum:Search1HighRes"
target="_parent">SearchHighRes</a> function provides users with the possibility
to vary the input parameters and with the access to the output deconvolved data
in the destination spectrum. Based on the output data one can tune the
parameters. </p>

<p class=MsoNormal><i>Example 1 – script Search3.c:</i></p>

<p class=MsoNormal>&nbsp;</p>

<p class=MsoNormal><img border=0 width=601 height=368
src="gif/spectrum3_searching_image001.jpg"></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 1 Three-dimensional
spectrum with 5 peaks (<sub><img border=0 width=40 height=19
src="gif/spectrum3_searching_image002.gif"></sub>, threshold=5%, 3 iterations steps in
the deconvolution)</b></p>

<p class=MsoNormal style='text-align:justify'><b>&nbsp;</b></p>

<p class=MsoNormal style='text-align:justify'><b><img border=0 width=601
height=368 src="gif/spectrum3_searching_image003.jpg"></b></p>

<p class=MsoNormal style='text-align:justify'><b>Fig. 2 Spectrum from Fig. 1
after background elimination and deconvolution</b></p>

<p class=MsoNormal><b><span style='color:#339966'>&nbsp;</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 high
resolution peak searching function (class TSpectrum3).</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 &gt; .x Search3.C</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>void Search3() {</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Int_t i, j, k, nfound;</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   </span><span lang=FR
style='font-size:10.0pt'>Int_t nbinsx = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsy = 32;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t nbinsz =
32;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t xmax  =
nbinsx;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t ymax  =
nbinsy;   </span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   Int_t zmin  = 0;</span></p>

<p class=MsoNormal><span lang=FR style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>Int_t zmax  = nbinsz;      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** source = new
Double_t**[nbinsx];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t*** dest = new Double_t
**[nbinsx];      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      source[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         source[i][j]=new
Double_t[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }           </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nbinsx;i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>      dest[i]=new Double_t*
[nbinsy];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     
for(j=0;j&lt;nbinsy;j++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>         dest[i][j]=new Double_t
[nbinsz];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }              </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TH3F *search = new
TH3F(&quot;Search&quot;,&quot;Peak
searching&quot;,nbinsx,xmin,xmax,nbinsy,ymin,ymax,nbinsz,zmin,zmax);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TFile *f = new
TFile(&quot;TSpectrum3.root&quot;);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   search=(TH3F*)
f-&gt;Get(&quot;search2;1&quot;);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TCanvas *Search = new
TCanvas(&quot;Search&quot;,&quot;Peak searching&quot;,10,10,1000,700);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   TSpectrum3 *s = new
TSpectrum3();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                  for (k = 0;
k &lt; nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                       source[i][j][k]
= search-&gt;GetBinContent(i + 1,j + 1,k + 1);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    } </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                 }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   nfound =
s-&gt;SearchHighRes(source, dest, nbinsx, nbinsy, nbinsz, 2, 5, kTRUE, 3,
kFALSE, 3);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   printf(&quot;Found %d
candidate peaks\n&quot;,nfound);   </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for (i = 0; i &lt; nbinsx;
i++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     for (j = 0; j &lt;
nbinsy; j++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        for (k = 0; k &lt;
nbinsz; k++){</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>          
search-&gt;SetBinContent(i + 1,j + 1,k + 1, dest[i][j][k]);</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>        }    </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>     }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   }</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t *PosX = new
Double_t[nfound];         </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t *PosY = new
Double_t[nfound];</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   Double_t *PosZ = new
Double_t[nfound];      </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   PosX =
s-&gt;GetPositionX();</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   PosY =
s-&gt;GetPositionY();         </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   PosZ =
s-&gt;GetPositionZ();            </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>   for(i=0;i&lt;nfound;i++)</span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>                    </span><span
lang=PL style='font-size:10.0pt'>printf(&quot;posx= %d, posy= %d, posz=
%d\n&quot;,(Int_t)(PosX[i]+0.5), (Int_t)(PosY[i]+0.5),
(Int_t)(PosZ[i]+0.5));           </span></p>

<p class=MsoNormal><span lang=PL style='font-size:10.0pt'>   </span><span
style='font-size:10.0pt'>search-&gt;Draw(&quot;&quot;);  </span></p>

<p class=MsoNormal><span style='font-size:10.0pt'>}</span></p>

</div>

<!-- */
// --> End_Html

   Int_t number_of_iterations = (Int_t)(4 * sigma + 0.5);
   Int_t k,lindex;
   Double_t lda,ldb,ldc,area,maximum;
   Int_t xmin,xmax,l,peak_index = 0,sizex_ext=ssizex + 4 * number_of_iterations,sizey_ext = ssizey + 4 * number_of_iterations,sizez_ext = ssizez + 4 * number_of_iterations,shift = 2 * number_of_iterations;
   Int_t ymin,ymax,zmin,zmax,i,j;
   Double_t a,b,maxch,plocha = 0,plocha_markov = 0;
   Double_t nom,nip,nim,sp,sm,spx,spy,smx,smy,spz,smz;
   Double_t p1,p2,p3,p4,p5,p6,p7,p8,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,r1,r2,r3,r4,r5,r6;
   Int_t x,y,z;
   Double_t pocet_sigma = 5;
   Int_t lhx,lhy,lhz,i1,i2,i3,j1,j2,j3,k1,k2,k3,i1min,i1max,i2min,i2max,i3min,i3max,j1min,j1max,j2min,j2max,j3min,j3max,positx,posity,positz;
   if(sigma < 1){
      Error("SearchHighRes", "Invalid sigma, must be greater than or equal to 1");
      return 0;
   }

   if(threshold<=0||threshold>=100){
      Error("SearchHighRes", "Invalid threshold, must be positive and less than 100");
      return 0;
   }

   j = (Int_t)(pocet_sigma*sigma+0.5);
   if (j >= PEAK_WINDOW / 2) {
      Error("SearchHighRes", "Too large sigma");
      return 0;
   }

   if (markov == true) {
      if (averWindow <= 0) {
         Error("SearchHighRes", "Averanging window must be positive");
         return 0;
      }
   }

   if(backgroundRemove == true){
      if(sizex_ext < 2 * number_of_iterations + 1 || sizey_ext < 2 * number_of_iterations + 1 || sizez_ext < 2 * number_of_iterations + 1){
         Error("SearchHighRes", "Too large clipping window");
         return 0;
      }
   }

   i = (Int_t)(4 * sigma + 0.5);
   i = 4 * i;
   Double_t ***working_space = new Double_t** [ssizex + i];
   for(j = 0;j < ssizex + i; j++){
      working_space[j] = new Double_t* [ssizey + i];
      for(k = 0;k < ssizey + i; k++)
         working_space[j][k] = new Double_t [5 * (ssizez + i)];
   }
   for(k = 0;k < sizez_ext; k++){
      for(j = 0;j < sizey_ext; j++){
        for(i = 0;i < sizex_ext; i++){
            if(i < shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][k - shift];
               }
            }

            else if(i >= ssizex + shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][k - shift];
               }
            }

            else{
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][k - shift];
               }
            }
         }
      }
   }
   if(backgroundRemove == true){
      for(i = 1;i <= number_of_iterations; i++){
        for(z = i;z < sizez_ext - i; z++){
           for(y = i;y < sizey_ext - i; y++){
             for(x = i;x < sizex_ext - i; x++){
               a = working_space[x][y][z + sizez_ext];
                  p1 = working_space[x + i][y + i][z - i + sizez_ext];
                  p2 = working_space[x - i][y + i][z - i + sizez_ext];
                  p3 = working_space[x + i][y - i][z - i + sizez_ext];
                  p4 = working_space[x - i][y - i][z - i + sizez_ext];
                  p5 = working_space[x + i][y + i][z + i + sizez_ext];
                  p6 = working_space[x - i][y + i][z + i + sizez_ext];
                  p7 = working_space[x + i][y - i][z + i + sizez_ext];
                  p8 = working_space[x - i][y - i][z + i + sizez_ext];
                  s1 = working_space[x + i][y    ][z - i + sizez_ext];
                  s2 = working_space[x    ][y + i][z - i + sizez_ext];
                  s3 = working_space[x - i][y    ][z - i + sizez_ext];
                  s4 = working_space[x    ][y - i][z - i + sizez_ext];
                  s5 = working_space[x + i][y    ][z + i + sizez_ext];
                  s6 = working_space[x    ][y + i][z + i + sizez_ext];
                  s7 = working_space[x - i][y    ][z + i + sizez_ext];
                  s8 = working_space[x    ][y - i][z + i + sizez_ext];
                  s9 = working_space[x - i][y + i][z     + sizez_ext];
                  s10 = working_space[x - i][y - i][z     +sizez_ext];
                  s11 = working_space[x + i][y + i][z     +sizez_ext];
                  s12 = working_space[x + i][y - i][z     +sizez_ext];
                  r1 = working_space[x    ][y    ][z - i + sizez_ext];
                  r2 = working_space[x    ][y    ][z + i + sizez_ext];
                  r3 = working_space[x - i][y    ][z     + sizez_ext];
                  r4 = working_space[x + i][y    ][z     + sizez_ext];
                  r5 = working_space[x    ][y + i][z     + sizez_ext];
                  r6 = working_space[x    ][y - i][z     + sizez_ext];
                  b = (p1 + p3) / 2.0;
                  if(b > s1)
                     s1 = b;

                  b = (p1 + p2) / 2.0;
                  if(b > s2)
                     s2 = b;

                  b = (p2 + p4) / 2.0;
                  if(b > s3)
                     s3 = b;

                  b = (p3 + p4) / 2.0;
                  if(b > s4)
                     s4 = b;

                  b = (p5 + p7) / 2.0;
                  if(b > s5)
                     s5 = b;

                  b = (p5 + p6) / 2.0;
                  if(b > s6)
                     s6 = b;

                  b = (p6 + p8) / 2.0;
                  if(b > s7)
                     s7 = b;

                  b = (p7 + p8) / 2.0;
                  if(b > s8)
                     s8 = b;

                  b = (p2 + p6) / 2.0;
                  if(b > s9)
                     s9 = b;

                  b = (p4 + p8) / 2.0;
                  if(b > s10)
                     s10 = b;

                  b = (p1 + p5) / 2.0;
                  if(b > s11)
                     s11 = b;

                  b = (p3 + p7) / 2.0;
                  if(b > s12)
                     s12 = b;

                  s1 = s1 - (p1 + p3) / 2.0;
                  s2 = s2 - (p1 + p2) / 2.0;
                  s3 = s3 - (p2 + p4) / 2.0;
                  s4 = s4 - (p3 + p4) / 2.0;
                  s5 = s5 - (p5 + p7) / 2.0;
                  s6 = s6 - (p5 + p6) / 2.0;
                  s7 = s7 - (p6 + p8) / 2.0;
                  s8 = s8 - (p7 + p8) / 2.0;
                  s9 = s9 - (p2 + p6) / 2.0;
                  s10 = s10 - (p4 + p8) / 2.0;
                  s11 = s11 - (p1 + p5) / 2.0;
                  s12 = s12 - (p3 + p7) / 2.0;
                  b = (s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0;
                  if(b > r1)
                     r1 = b;

                  b = (s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0;
                  if(b > r2)
                     r2 = b;

                  b = (s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0;
                  if(b > r3)
                     r3 = b;

                  b = (s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0;
                  if(b > r4)
                     r4 = b;

                  b = (s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0;
                  if(b > r5)
                     r5 = b;

                  b = (s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0;
                  if(b > r6)
                     r6 = b;

                  r1 = r1 - ((s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0);
                  r2 = r2 - ((s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0);
                  r3 = r3 - ((s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0);
                  r4 = r4 - ((s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0);
                  r5 = r5 - ((s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0);
                  r6 = r6 - ((s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0);
                  b = (r1 + r2) / 2.0 + (r3 + r4) / 2.0 + (r5 + r6) / 2.0 + (s1 + s3 + s5 + s7) / 4.0 + (s2 + s4 + s6 + s8) / 4.0 + (s9 + s10 + s11 + s12) / 4.0 + (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8.0;
                  if(b < a)
                     a = b;

                  working_space[x][y][z] = a;
               }
            }
         }
         for(z = i;z < sizez_ext - i; z++){
            for(y = i;y < sizey_ext - i; y++){
               for(x = i;x < sizex_ext - i; x++){
                  working_space[x][y][z + sizez_ext] = working_space[x][y][z];
               }
            }
         }
      }
      for(k = 0;k < sizez_ext; k++){
         for(j = 0;j < sizey_ext; j++){
            for(i = 0;i < sizex_ext; i++){
               if(i < shift){
                  if(j < shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[0][0][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[0][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[0][0][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else if(j >= ssizey + shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else{
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[0][j - shift][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[0][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[0][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
                  }
               }

               else if(i >= ssizex + shift){
                  if(j < shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else if(j >= ssizey + shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else{
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
                  }
               }

               else{
                  if(j < shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][0][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[i - shift][0][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else if(j >= ssizey + shift){
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
                  }

                  else{
                     if(k < shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][0] - working_space[i][j][k + sizez_ext];

                     else if(k >= ssizez + shift)
                        working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                     else
                        working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
                  }
               }
            }
         }
      }
   }

   if(markov == true){
      for(i = 0;i < sizex_ext; i++){
         for(j = 0;j < sizey_ext; j++){
            for(k = 0;k < sizez_ext; k++){
               working_space[i][j][k + 2 * sizez_ext] = working_space[i][j][sizez_ext + k];
               plocha_markov = plocha_markov + working_space[i][j][sizez_ext + k];
            }
         }
      }
      xmin = 0;
      xmax = sizex_ext - 1;
      ymin = 0;
      ymax = sizey_ext - 1;
      zmin = 0;
      zmax = sizez_ext - 1;
      for(i = 0,maxch = 0;i < sizex_ext; i++){
         for(j = 0;j < sizey_ext;j++){
            for(k = 0;k < sizez_ext;k++){
               working_space[i][j][k] = 0;
               if(maxch < working_space[i][j][k + 2 * sizez_ext])
                  maxch = working_space[i][j][k + 2 * sizez_ext];

               plocha += working_space[i][j][k + 2 * sizez_ext];
            }
         }
      }
      if(maxch == 0) {
         delete [] working_space;
         return 0;
      }
      nom = 0;
      working_space[xmin][ymin][zmin] = 1;
      for(i = xmin;i < xmax; i++){
         nip = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;
         nim = working_space[i + 1][ymin][zmin + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow; l++){
            if((i + l) > xmax)
               a = working_space[xmax][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[i + l][ymin][zmin + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < xmin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[i - l + 1][ymin][zmin + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[i + 1][ymin][zmin] = a * working_space[i][ymin][zmin];
         nom = nom + a;
      }
      for(i = ymin;i < ymax; i++){
         nip = working_space[xmin][i][zmin + 2 * sizez_ext] / maxch;
         nim = working_space[xmin][i + 1][zmin + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow; l++){
            if((i + l) > ymax)
               a = working_space[xmin][ymax][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][i + l][zmin + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < ymin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][i - l + 1][zmin + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[xmin][i + 1][zmin] = a * working_space[xmin][i][zmin];
         nom = nom + a;
      }
      for(i = zmin;i < zmax;i++){
         nip = working_space[xmin][ymin][i + 2 * sizez_ext] / maxch;
         nim = working_space[xmin][ymin][i + 1 + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow;l++){
            if((i + l) > zmax)
               a = working_space[xmin][ymin][zmax + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][ymin][i + l + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < zmin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][ymin][i - l + 1 + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[xmin][ymin][i + 1] = a * working_space[xmin][ymin][i];
         nom = nom + a;
      }
      for(i = xmin;i < xmax; i++){
         for(j = ymin;j < ymax; j++){
            nip = working_space[i][j + 1][zmin + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][j + 1][zmin + 2 * sizez_ext] / maxch;
            spx = 0,smx = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > xmax)
                  a = working_space[xmax][j][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i + l][j][zmin + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spx = spx + b;
               if(i - l + 1 < xmin)
                  a = working_space[xmin][j][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i - l + 1][j][zmin + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smx = smx + b;
            }
            spy = 0,smy = 0;
            nip = working_space[i + 1][j][zmin + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][j + 1][zmin + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > ymax)
                  a = working_space[i][ymax][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][j + l][zmin + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spy = spy + b;
               if(j - l + 1 < ymin)
                  a = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][j - l + 1][zmin + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smy = smy + b;
            }
            a = (spx * working_space[i][j + 1][zmin] + spy * working_space[i + 1][j][zmin]) / (smx + smy);
            working_space[i + 1][j + 1][zmin] = a;
            nom = nom + a;
         }
      }
      for(i = xmin;i < xmax;i++){
         for(j = zmin;j < zmax;j++){
            nip = working_space[i][ymin][j + 1 + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][ymin][j + 1 + 2 * sizez_ext] / maxch;
            spx = 0,smx = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > xmax)
                 a = working_space[xmax][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i + l][ymin][j + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spx = spx + b;
               if(i - l + 1 < xmin)
                  a = working_space[xmin][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i - l + 1][ymin][j + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smx = smx + b;
            }
            spz = 0,smz = 0;
            nip = working_space[i + 1][ymin][j + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][ymin][j + 1 + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > zmax)
                  a = working_space[i][ymin][zmax + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][ymin][j + l + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spz = spz + b;
               if(j - l + 1 < zmin)
                  a = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][ymin][j - l + 1 + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smz = smz + b;
            }
            a = (spx * working_space[i][ymin][j + 1] + spz * working_space[i + 1][ymin][j]) / (smx + smz);
            working_space[i + 1][ymin][j + 1] = a;
            nom = nom + a;
         }
      }
      for(i = ymin;i < ymax;i++){
         for(j = zmin;j < zmax;j++){
            nip = working_space[xmin][i][j + 1 + 2 * sizez_ext] / maxch;
            nim = working_space[xmin][i + 1][j + 1 + 2 * sizez_ext] / maxch;
            spy = 0,smy = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > ymax)
                  a = working_space[xmin][ymax][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i + l][j + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spy = spy + b;
               if(i - l + 1 < ymin)
                  a = working_space[xmin][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i - l + 1][j + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smy = smy + b;
            }
            spz = 0,smz = 0;
            nip = working_space[xmin][i + 1][j + 2 * sizez_ext] / maxch;
            nim = working_space[xmin][i + 1][j + 1 + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > zmax)
                  a = working_space[xmin][i][zmax + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i][j + l + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spz = spz + b;
               if(j - l + 1 < zmin)
                  a = working_space[xmin][i][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i][j - l + 1 + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smz = smz + b;
            }
            a = (spy * working_space[xmin][i][j + 1] + spz * working_space[xmin][i + 1][j]) / (smy + smz);
            working_space[xmin][i + 1][j + 1] = a;
            nom = nom + a;
         }
      }
      for(i = xmin;i < xmax; i++){
         for(j = ymin;j < ymax; j++){
            for(k = zmin;k < zmax; k++){
               nip = working_space[i][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               spx = 0,smx = 0;
               for(l = 1;l <= averWindow; l++){
                  if(i + l > xmax)
                     a = working_space[xmax][j][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i + l][j][k + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spx = spx + b;
                  if(i - l + 1 < xmin)
                     a = working_space[xmin][j][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i - l + 1][j][k + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smx = smx + b;
               }
               spy = 0,smy = 0;
               nip = working_space[i + 1][j][k + 1 + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               for(l = 1;l <= averWindow; l++){
                  if(j + l > ymax)
                     a = working_space[i][ymax][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j + l][k + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spy = spy + b;
                  if(j - l + 1 < ymin)
                     a = working_space[i][ymin][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j - l + 1][k + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smy = smy + b;
               }
               spz = 0,smz = 0;
               nip = working_space[i + 1][j + 1][k + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               for(l = 1;l <= averWindow; l++ ){
                  if(j + l > zmax)
                     a = working_space[i][j][zmax + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j][k + l + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spz = spz + b;
                  if(j - l + 1 < ymin)
                     a = working_space[i][j][zmin + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j][k - l + 1 + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smz = smz + b;
               }
               a = (spx * working_space[i][j + 1][k + 1] + spy * working_space[i + 1][j][k + 1] + spz * working_space[i + 1][j + 1][k]) / (smx + smy + smz);
               working_space[i + 1][j + 1][k + 1] = a;
               nom = nom + a;
            }
         }
      }
      a = 0;
      for(i = xmin;i <= xmax; i++){
         for(j = ymin;j <= ymax; j++){
            for(k = zmin;k <= zmax; k++){
               working_space[i][j][k] = working_space[i][j][k] / nom;
               a+=working_space[i][j][k];
            }
         }
      }
      for(i = 0;i < sizex_ext; i++){
         for(j = 0;j < sizey_ext; j++){
            for(k = 0;k < sizez_ext; k++){
               working_space[i][j][k + sizez_ext] = working_space[i][j][k] * plocha_markov / a;
            }
         }
      }
   }
   //deconvolution starts
   area = 0;
   lhx = -1,lhy = -1,lhz = -1;
   positx = 0,posity = 0,positz = 0;
   maximum = 0;
   //generate response cube
   for(i = 0;i < sizex_ext; i++){
      for(j = 0;j < sizey_ext; j++){
         for(k = 0;k < sizez_ext; k++){
            lda = (Double_t)i - 3 * sigma;
            ldb = (Double_t)j - 3 * sigma;
            ldc = (Double_t)k - 3 * sigma;
            lda = (lda * lda + ldb * ldb + ldc * ldc) / (2 * sigma * sigma);
            l = (Int_t)(1000 * exp(-lda));
            lda = l;
            if(lda!=0){
               if((i + 1) > lhx)
                  lhx = i + 1;

               if((j + 1) > lhy)
                  lhy = j + 1;

               if((k + 1) > lhz)
                  lhz = k + 1;
            }
            working_space[i][j][k] = lda;
            area = area + lda;
            if(lda > maximum){
               maximum = lda;
               positx = i,posity = j,positz = k;
            }
         }
      }
   }
   //read source cube
   for(i = 0;i < sizex_ext; i++){
      for(j = 0;j < sizey_ext; j++){
         for(k = 0;k < sizez_ext; k++){
            working_space[i][j][k + 2 * sizez_ext] = TMath::Abs(working_space[i][j][k + sizez_ext]);
         }
      }
   }
   //calculate ht*y and write into p
   for (i3 = 0; i3 < sizez_ext; i3++) {
      for (i2 = 0; i2 < sizey_ext; i2++) {
         for (i1 = 0; i1 < sizex_ext; i1++) {
            ldc = 0;
            for (j3 = 0; j3 <= (lhz - 1); j3++) {
               for (j2 = 0; j2 <= (lhy - 1); j2++) {
                  for (j1 = 0; j1 <= (lhx - 1); j1++) {
                     k3 = i3 + j3, k2 = i2 + j2, k1 = i1 + j1;
                     if (k3 >= 0 && k3 < sizez_ext && k2 >= 0 && k2 < sizey_ext && k1 >= 0 && k1 < sizex_ext) {
                        lda = working_space[j1][j2][j3];
                        ldb = working_space[k1][k2][k3+2*sizez_ext];
                        ldc = ldc + lda * ldb;
                     }
                  }
               }
            }
            working_space[i1][i2][i3 + sizez_ext] = ldc;
         }
      }
   }
//calculate b=ht*h
   i1min = -(lhx - 1), i1max = lhx - 1;
   i2min = -(lhy - 1), i2max = lhy - 1;
   i3min = -(lhz - 1), i3max = lhz - 1;
   for (i3 = i3min; i3 <= i3max; i3++) {
      for (i2 = i2min; i2 <= i2max; i2++) {
         for (i1 = i1min; i1 <= i1max; i1++) {
            ldc = 0;
            j3min = -i3;
            if (j3min < 0)
               j3min = 0;

            j3max = lhz - 1 - i3;
            if (j3max > lhz - 1)
               j3max = lhz - 1;

            for (j3 = j3min; j3 <= j3max; j3++) {
               j2min = -i2;
               if (j2min < 0)
                  j2min = 0;

               j2max = lhy - 1 - i2;
               if (j2max > lhy - 1)
                  j2max = lhy - 1;

               for (j2 = j2min; j2 <= j2max; j2++) {
                  j1min = -i1;
                  if (j1min < 0)
                     j1min = 0;

                  j1max = lhx - 1 - i1;
                  if (j1max > lhx - 1)
                     j1max = lhx - 1;

                  for (j1 = j1min; j1 <= j1max; j1++) {
                     lda = working_space[j1][j2][j3];
                     if (i1 + j1 < sizex_ext && i2 + j2 < sizey_ext)
                        ldb = working_space[i1 + j1][i2 + j2][i3 + j3];

                     else
                        ldb = 0;

                     ldc = ldc + lda * ldb;
                  }
               }
            }
            working_space[i1 - i1min][i2 - i2min][i3 - i3min + 2 * sizez_ext ] = ldc;
         }
      }
   }
//initialization in x1 cube
   for (i3 = 0; i3 < sizez_ext; i3++) {
      for (i2 = 0; i2 < sizey_ext; i2++) {
         for (i1 = 0; i1 < sizex_ext; i1++) {
            working_space[i1][i2][i3 + 3 * sizez_ext] = 1;
            working_space[i1][i2][i3 + 4 * sizez_ext] = 0;
         }
      }
   }

//START OF ITERATIONS
   for (lindex=0;lindex<deconIterations;lindex++){
      for (i3 = 0; i3 < sizez_ext; i3++) {
         for (i2 = 0; i2 < sizey_ext; i2++) {
            for (i1 = 0; i1 < sizex_ext; i1++) {
               if (TMath::Abs(working_space[i1][i2][i3 + 3 * sizez_ext])>1e-6 && TMath::Abs(working_space[i1][i2][i3 + 1 * sizez_ext])>1e-6){
                  ldb = 0;
                  j3min = i3;
                  if (j3min > lhz - 1)
                     j3min = lhz - 1;

                  j3min = -j3min;
                  j3max = sizez_ext - i3 - 1;
                  if (j3max > lhz - 1)
                     j3max = lhz - 1;

                  j2min = i2;
                  if (j2min > lhy - 1)
                     j2min = lhy - 1;

                  j2min = -j2min;
                  j2max = sizey_ext - i2 - 1;
                  if (j2max > lhy - 1)
                     j2max = lhy - 1;

                  j1min = i1;
                  if (j1min > lhx - 1)
                     j1min = lhx - 1;

                  j1min = -j1min;
                  j1max = sizex_ext - i1 - 1;
                  if (j1max > lhx - 1)
                     j1max = lhx - 1;

                  for (j3 = j3min; j3 <= j3max; j3++) {
                     for (j2 = j2min; j2 <= j2max; j2++) {
                        for (j1 = j1min; j1 <= j1max; j1++) {
                           ldc =  working_space[j1 - i1min][j2 - i2min][j3 - i3min + 2 * sizez_ext];
                           lda = working_space[i1 + j1][i2 + j2][i3 + j3 + 3 * sizez_ext];
                           ldb = ldb + lda * ldc;
                        }
                     }
                  }
                  lda = working_space[i1][i2][i3 + 3 * sizez_ext];
                  ldc = working_space[i1][i2][i3 + 1 * sizez_ext];
                  if (ldc * lda != 0 && ldb != 0) {
                     lda = lda * ldc / ldb;
                  }

                  else
                     lda = 0;
                  working_space[i1][i2][i3 + 4 * sizez_ext] = lda;
               }
            }
         }
      }
      for (i3 = 0; i3 < sizez_ext; i3++) {
         for (i2 = 0; i2 < sizey_ext; i2++) {
            for (i1 = 0; i1 < sizex_ext; i1++)
               working_space[i1][i2][i3 + 3 * sizez_ext] = working_space[i1][i2][i3 + 4 * sizez_ext];
         }
      }
   }
//write back resulting spectrum
   maximum=0;
  for(i = 0;i < sizex_ext; i++){
      for(j = 0;j < sizey_ext; j++){
         for(k = 0;k < sizez_ext; k++){
            working_space[(i + positx) % sizex_ext][(j + posity) % sizey_ext][(k + positz) % sizez_ext] = area * working_space[i][j][k + 3 * sizez_ext];
            if(maximum < working_space[(i + positx) % sizex_ext][(j + posity) % sizey_ext][(k + positz) % sizez_ext])
               maximum = working_space[(i + positx) % sizex_ext][(j + posity) % sizey_ext][(k + positz) % sizez_ext];
         }
      }
   }
//searching for peaks in deconvolved spectrum
   for(i = 1;i < sizex_ext - 1; i++){
      for(j = 1;j < sizey_ext - 1; j++){
         for(l = 1;l < sizez_ext - 1; l++){
            a = working_space[i][j][l];
            if(a > working_space[i][j][l - 1] && a > working_space[i - 1][j][l - 1] && a > working_space[i - 1][j - 1][l - 1] && a > working_space[i][j - 1][l - 1] && a > working_space[i + 1][j - 1][l - 1] && a > working_space[i + 1][j][l - 1] && a > working_space[i + 1][j + 1][l - 1] && a > working_space[i][j + 1][l - 1] && a > working_space[i - 1][j + 1][l - 1] && a > working_space[i - 1][j][l] && a > working_space[i - 1][j - 1][l] && a > working_space[i][j - 1][l] && a > working_space[i + 1][j - 1][l] && a > working_space[i + 1][j][l] && a > working_space[i + 1][j + 1][l] && a > working_space[i][j + 1][l] && a > working_space[i - 1][j + 1][l] && a > working_space[i][j][l + 1] && a > working_space[i - 1][j][l + 1] && a > working_space[i - 1][j - 1][l + 1] && a > working_space[i][j - 1][l + 1] && a > working_space[i + 1][j - 1][l + 1] && a > working_space[i + 1][j][l + 1] && a > working_space[i + 1][j + 1][l + 1] && a > working_space[i][j + 1][l + 1] && a > working_space[i - 1][j + 1][l + 1]){
               if(i >= shift && i < ssizex + shift && j >= shift && j < ssizey + shift && l >= shift && l < ssizez + shift){
                  if(working_space[i][j][l] > threshold * maximum / 100.0){
                     if(peak_index < fMaxPeaks){
                        for(k = i - 1,a = 0,b = 0;k <= i + 1; k++){
                           a += (Double_t)(k - shift) * working_space[k][j][l];
                           b += working_space[k][j][l];
                        }
                     fPositionX[peak_index] = a / b;
                        for(k = j - 1,a = 0,b = 0;k <= j + 1; k++){
                           a += (Double_t)(k - shift) * working_space[i][k][l];
                           b += working_space[i][k][l];
                        }
                        fPositionY[peak_index] = a / b;
                        for(k = l - 1,a = 0,b = 0;k <= l + 1; k++){
                           a += (Double_t)(k - shift) * working_space[i][j][k];
                           b += working_space[i][j][k];
                        }
                        fPositionZ[peak_index] = a / b;
                        peak_index += 1;
                     }
                  }
               }
            }
         }
      }
   }
   for(i = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++){
         for(k = 0;k < ssizez; k++){
            dest[i][j][k] = working_space[i + shift][j + shift][k + shift];
         }
      }
   }
   k = (Int_t)(4 * sigma + 0.5);
   k = 4 * k;
   for(i = 0;i < ssizex + k; i++){
      for(j = 0;j < ssizey + k; j++)
         delete[] working_space[i][j];
      delete[] working_space[i];
   }
   delete[] working_space;
   fNPeaks = peak_index;
   return fNPeaks;
}

//______________________________________________________________________________
Int_t TSpectrum3::SearchFast(const Double_t***source, Double_t***dest, Int_t ssizex, Int_t ssizey, Int_t ssizez,
                                 Double_t sigma, Double_t threshold,
                                 Bool_t markov, Int_t averWindow)

{

/////////////////////////////////////////////////////////////////////////////
// THREE-DIMENSIONAL CLASSICAL PEAK SEARCH FUNCTION                        //
// This function searches for peaks in source spectrum using               //
//  the algorithm based on smoothed second differences.                    //
//                                                                         //
// Function parameters:                                                    //
// source-pointer to the matrix of source spectrum                         //
// ssizex-x length of source spectrum                                      //
// ssizey-y length of source spectrum                                      //
// ssizez-z length of source spectrum                                      //
// sigma-sigma of searched peaks, for details we refer to manual           //
// threshold-threshold value in % for selected peaks, peaks with           //
//                amplitude less than threshold*highest_peak/100           //
//                are ignored, see manual                                  //
//  markov-logical variable, if it is true, first the source spectrum      //
//             is replaced by new spectrum calculated using Markov         //
//             chains method.                                              //
// averWindow-averanging window of searched peaks, for details             //
//                  we refer to manual (applies only for Markov method)    //
/////////////////////////////////////////////////////////////////////////////

   Int_t i,j,k,l,li,lj,lk,lmin,lmax,xmin,xmax,ymin,ymax,zmin,zmax;
   Double_t maxch,plocha = 0,plocha_markov = 0;
   Double_t nom,nip,nim,sp,sm,spx,spy,smx,smy,spz,smz;
   Double_t norma,val,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10,val11,val12,val13,val14,val15,val16,val17,val18,val19,val20,val21,val22,val23,val24,val25,val26;
   Double_t a,b,s,f,maximum;
   Int_t x,y,z,peak_index=0;
   Double_t p1,p2,p3,p4,p5,p6,p7,p8,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,r1,r2,r3,r4,r5,r6;
   Double_t pocet_sigma = 5;
   Int_t number_of_iterations=(Int_t)(4 * sigma + 0.5);
   Int_t sizex_ext=ssizex + 4 * number_of_iterations,sizey_ext = ssizey + 4 * number_of_iterations,sizez_ext = ssizez + 4 * number_of_iterations,shift = 2 * number_of_iterations;
   Double_t c[PEAK_WINDOW],s_f_ratio_peaks = 5;
   if(sigma < 1){
      Error("SearchFast", "Invalid sigma, must be greater than or equal to 1");
      return 0;
   }

   if(threshold<=0||threshold>=100){
      Error("SearchFast", "Invalid threshold, must be positive and less than 100");
      return 0;
   }

   j = (Int_t)(pocet_sigma*sigma+0.5);
   if (j >= PEAK_WINDOW / 2) {
      Error("SearchFast", "Too large sigma");
      return 0;
   }

   if (markov == true) {
      if (averWindow <= 0) {
         Error("SearchFast", "Averanging window must be positive");
         return 0;
      }
   }

   if(sizex_ext < 2 * number_of_iterations + 1 || sizey_ext < 2 * number_of_iterations + 1 || sizez_ext < 2 * number_of_iterations + 1){
      Error("SearchFast", "Too large clipping window");
      return 0;
   }

   i = (Int_t)(4 * sigma + 0.5);
   i = 4 * i;
   Double_t ***working_space = new Double_t** [ssizex + i];
   for(j = 0;j < ssizex + i; j++){
      working_space[j] = new Double_t* [ssizey + i];
      for(k = 0;k < ssizey + i; k++)
         working_space[j][k] = new Double_t [4 * (ssizez + i)];
   }

   for(k = 0;k < sizez_ext; k++){
      for(j = 0;j < sizey_ext; j++){
        for(i = 0;i < sizex_ext; i++){
            if(i < shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[0][j - shift][k - shift];
               }
            }

            else if(i >= ssizex + shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[ssizex - 1][j - shift][k - shift];
               }
            }

            else{
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][0][k - shift];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][ssizey - 1][k - shift];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][0];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][ssizez - 1];

                  else
                     working_space[i][j][k + sizez_ext] = source[i - shift][j - shift][k - shift];
               }
            }
         }
      }
   }
   for(i = 1;i <= number_of_iterations; i++){
      for(z = i;z < sizez_ext - i; z++){
         for(y = i;y < sizey_ext - i; y++){
            for(x = i;x < sizex_ext - i; x++){
               a = working_space[x][y][z + sizez_ext];
               p1 = working_space[x + i][y + i][z - i + sizez_ext];
               p2 = working_space[x - i][y + i][z - i + sizez_ext];
               p3 = working_space[x + i][y - i][z - i + sizez_ext];
               p4 = working_space[x - i][y - i][z - i + sizez_ext];
               p5 = working_space[x + i][y + i][z + i + sizez_ext];
               p6 = working_space[x - i][y + i][z + i + sizez_ext];
               p7 = working_space[x + i][y - i][z + i + sizez_ext];
               p8 = working_space[x - i][y - i][z + i + sizez_ext];
               s1 = working_space[x + i][y    ][z - i + sizez_ext];
               s2 = working_space[x    ][y + i][z - i + sizez_ext];
               s3 = working_space[x - i][y    ][z - i + sizez_ext];
               s4 = working_space[x    ][y - i][z - i + sizez_ext];
               s5 = working_space[x + i][y    ][z + i + sizez_ext];
               s6 = working_space[x    ][y + i][z + i + sizez_ext];
               s7 = working_space[x - i][y    ][z + i + sizez_ext];
               s8 = working_space[x    ][y - i][z + i + sizez_ext];
               s9 = working_space[x - i][y + i][z     + sizez_ext];
               s10 = working_space[x - i][y - i][z     +sizez_ext];
               s11 = working_space[x + i][y + i][z     +sizez_ext];
               s12 = working_space[x + i][y - i][z     +sizez_ext];
               r1 = working_space[x    ][y    ][z - i + sizez_ext];
               r2 = working_space[x    ][y    ][z + i + sizez_ext];
               r3 = working_space[x - i][y    ][z     + sizez_ext];
               r4 = working_space[x + i][y    ][z     + sizez_ext];
               r5 = working_space[x    ][y + i][z     + sizez_ext];
               r6 = working_space[x    ][y - i][z     + sizez_ext];
               b = (p1 + p3) / 2.0;
               if(b > s1)
                  s1 = b;

               b = (p1 + p2) / 2.0;
               if(b > s2)
                  s2 = b;

               b = (p2 + p4) / 2.0;
               if(b > s3)
                  s3 = b;

               b = (p3 + p4) / 2.0;
               if(b > s4)
                  s4 = b;

               b = (p5 + p7) / 2.0;
               if(b > s5)
                  s5 = b;

               b = (p5 + p6) / 2.0;
               if(b > s6)
                  s6 = b;

               b = (p6 + p8) / 2.0;
               if(b > s7)
                  s7 = b;

               b = (p7 + p8) / 2.0;
               if(b > s8)
                  s8 = b;

               b = (p2 + p6) / 2.0;
               if(b > s9)
                  s9 = b;

               b = (p4 + p8) / 2.0;
               if(b > s10)
                  s10 = b;

               b = (p1 + p5) / 2.0;
               if(b > s11)
                  s11 = b;

               b = (p3 + p7) / 2.0;
               if(b > s12)
                  s12 = b;

               s1 = s1 - (p1 + p3) / 2.0;
               s2 = s2 - (p1 + p2) / 2.0;
               s3 = s3 - (p2 + p4) / 2.0;
               s4 = s4 - (p3 + p4) / 2.0;
               s5 = s5 - (p5 + p7) / 2.0;
               s6 = s6 - (p5 + p6) / 2.0;
               s7 = s7 - (p6 + p8) / 2.0;
               s8 = s8 - (p7 + p8) / 2.0;
               s9 = s9 - (p2 + p6) / 2.0;
               s10 = s10 - (p4 + p8) / 2.0;
               s11 = s11 - (p1 + p5) / 2.0;
               s12 = s12 - (p3 + p7) / 2.0;
               b = (s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0;
               if(b > r1)
                  r1 = b;

               b = (s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0;
               if(b > r2)
                  r2 = b;

               b = (s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0;
               if(b > r3)
                  r3 = b;

               b = (s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0;
               if(b > r4)
                  r4 = b;

               b = (s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0;
               if(b > r5)
                  r5 = b;

               b = (s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0;
               if(b > r6)
                  r6 = b;

               r1 = r1 - ((s1 + s3) / 2.0 + (s2 + s4) / 2.0 + (p1 + p2 + p3 + p4) / 4.0);
               r2 = r2 - ((s5 + s7) / 2.0 + (s6 + s8) / 2.0 + (p5 + p6 + p7 + p8) / 4.0);
               r3 = r3 - ((s3 + s7) / 2.0 + (s9 + s10) / 2.0 + (p2 + p4 + p6 + p8) / 4.0);
               r4 = r4 - ((s1 + s5) / 2.0 + (s11 + s12) / 2.0 + (p1 + p3 + p5 + p7) / 4.0);
               r5 = r5 - ((s9 + s11) / 2.0 + (s2 + s6) / 2.0 + (p1 + p2 + p5 + p6) / 4.0);
               r6 = r6 - ((s4 + s8) / 2.0 + (s10 + s12) / 2.0 + (p3 + p4 + p7 + p8) / 4.0);
               b = (r1 + r2) / 2.0 + (r3 + r4) / 2.0 + (r5 + r6) / 2.0 + (s1 + s3 + s5 + s7) / 4.0 + (s2 + s4 + s6 + s8) / 4.0 + (s9 + s10 + s11 + s12) / 4.0 + (p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8) / 8.0;
               if(b < a)
                  a = b;

               working_space[x][y][z] = a;
            }
         }
      }
      for(z = i;z < sizez_ext - i; z++){
         for(y = i;y < sizey_ext - i; y++){
            for(x = i;x < sizex_ext - i; x++){
               working_space[x][y][z + sizez_ext] = working_space[x][y][z];
            }
         }
      }
   }
   for(k = 0;k < sizez_ext; k++){
      for(j = 0;j < sizey_ext; j++){
         for(i = 0;i < sizex_ext; i++){
            if(i < shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][0][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[0][0][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[0][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][j - shift][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[0][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[0][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
               }
            }

            else if(i >= ssizex + shift){
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][0][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][0][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][j - shift][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[ssizex - 1][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
               }
            }

            else{
               if(j < shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][0][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][0][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][0][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else if(j >= ssizey + shift){
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][ssizey - 1][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][ssizey - 1][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][ssizey - 1][k - shift] - working_space[i][j][k + sizez_ext];
               }

               else{
                  if(k < shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][j - shift][0] - working_space[i][j][k + sizez_ext];

                  else if(k >= ssizez + shift)
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][j - shift][ssizez - 1] - working_space[i][j][k + sizez_ext];

                  else
                     working_space[i][j][k + 3 * sizez_ext] = source[i - shift][j - shift][k - shift] - working_space[i][j][k + sizez_ext];
               }
            }
         }
      }
   }

   for(i = 0;i < sizex_ext; i++){
      for(j = 0;j < sizey_ext; j++){
         for(k = 0;k < sizez_ext; k++){
            if(i >= shift && i < ssizex + shift && j >= shift && j < ssizey + shift && k >= shift && k < ssizez + shift){
               working_space[i][j][k + 2 * sizez_ext] = source[i - shift][j - shift][k - shift];
               plocha_markov = plocha_markov + source[i - shift][j - shift][k - shift];
            }
            else
               working_space[i][j][k + 2 * sizez_ext] = 0;
         }
      }
   }

   if(markov == true){
      xmin = 0;
      xmax = sizex_ext - 1;
      ymin = 0;
      ymax = sizey_ext - 1;
      zmin = 0;
      zmax = sizez_ext - 1;
      for(i = 0,maxch = 0;i < sizex_ext; i++){
         for(j = 0;j < sizey_ext;j++){
            for(k = 0;k < sizez_ext;k++){
               working_space[i][j][k] = 0;
               if(maxch < working_space[i][j][k + 2 * sizez_ext])
                  maxch = working_space[i][j][k + 2 * sizez_ext];

               plocha += working_space[i][j][k + 2 * sizez_ext];
            }
         }
      }
      if(maxch == 0) {
         delete [] working_space;
         return 0;
      }

      nom = 0;
      working_space[xmin][ymin][zmin] = 1;
      for(i = xmin;i < xmax; i++){
         nip = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;
         nim = working_space[i + 1][ymin][zmin + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow; l++){
            if((i + l) > xmax)
               a = working_space[xmax][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[i + l][ymin][zmin + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < xmin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[i - l + 1][ymin][zmin + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[i + 1][ymin][zmin] = a * working_space[i][ymin][zmin];
         nom = nom + a;
      }
      for(i = ymin;i < ymax; i++){
         nip = working_space[xmin][i][zmin + 2 * sizez_ext] / maxch;
         nim = working_space[xmin][i + 1][zmin + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow; l++){
            if((i + l) > ymax)
               a = working_space[xmin][ymax][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][i + l][zmin + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < ymin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][i - l + 1][zmin + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[xmin][i + 1][zmin] = a * working_space[xmin][i][zmin];
         nom = nom + a;
      }
      for(i = zmin;i < zmax;i++){
         nip = working_space[xmin][ymin][i + 2 * sizez_ext] / maxch;
         nim = working_space[xmin][ymin][i + 1 + 2 * sizez_ext] / maxch;
         sp = 0,sm = 0;
         for(l = 1;l <= averWindow;l++){
            if((i + l) > zmax)
               a = working_space[xmin][ymin][zmax + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][ymin][i + l + 2 * sizez_ext] / maxch;

            b = a - nip;
            if(a + nip <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nip);

            b = b / a;
            b = TMath::Exp(b);
            sp = sp + b;
            if(i - l + 1 < zmin)
               a = working_space[xmin][ymin][zmin + 2 * sizez_ext] / maxch;

            else
               a = working_space[xmin][ymin][i - l + 1 + 2 * sizez_ext] / maxch;

            b = a - nim;
            if(a + nim <= 0)
               a = 1;

            else
               a = TMath::Sqrt(a + nim);

            b = b / a;
            b = TMath::Exp(b);
            sm = sm + b;
         }
         a = sp / sm;
         a = working_space[xmin][ymin][i + 1] = a * working_space[xmin][ymin][i];
         nom = nom + a;
      }
      for(i = xmin;i < xmax; i++){
         for(j = ymin;j < ymax; j++){
            nip = working_space[i][j + 1][zmin + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][j + 1][zmin + 2 * sizez_ext] / maxch;
            spx = 0,smx = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > xmax)
                 a = working_space[xmax][j][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i + l][j][zmin + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spx = spx + b;
               if(i - l + 1 < xmin)
                  a = working_space[xmin][j][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i - l + 1][j][zmin + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smx = smx + b;
            }
            spy = 0,smy = 0;
            nip = working_space[i + 1][j][zmin + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][j + 1][zmin + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > ymax)
                  a = working_space[i][ymax][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][j + l][zmin + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spy = spy + b;
               if(j - l + 1 < ymin)
                  a = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][j - l + 1][zmin + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smy = smy + b;
            }
            a = (spx * working_space[i][j + 1][zmin] + spy * working_space[i + 1][j][zmin]) / (smx + smy);
            working_space[i + 1][j + 1][zmin] = a;
            nom = nom + a;
         }
      }
      for(i = xmin;i < xmax;i++){
         for(j = zmin;j < zmax;j++){
            nip = working_space[i][ymin][j + 1 + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][ymin][j + 1 + 2 * sizez_ext] / maxch;
            spx = 0,smx = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > xmax)
                  a = working_space[xmax][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i + l][ymin][j + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spx = spx + b;
               if(i - l + 1 < xmin)
                  a = working_space[xmin][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i - l + 1][ymin][j + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smx = smx + b;
            }
            spz = 0,smz = 0;
            nip = working_space[i + 1][ymin][j + 2 * sizez_ext] / maxch;
            nim = working_space[i + 1][ymin][j + 1 + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > zmax)
                  a = working_space[i][ymin][zmax + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][ymin][j + l + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spz = spz + b;
               if(j - l + 1 < zmin)
                  a = working_space[i][ymin][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[i][ymin][j - l + 1 + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smz = smz + b;
            }
            a = (spx * working_space[i][ymin][j + 1] + spz * working_space[i + 1][ymin][j]) / (smx + smz);
            working_space[i + 1][ymin][j + 1] = a;
            nom = nom + a;
         }
      }
      for(i = ymin;i < ymax;i++){
         for(j = zmin;j < zmax;j++){
            nip = working_space[xmin][i][j + 1 + 2 * sizez_ext] / maxch;
            nim = working_space[xmin][i + 1][j + 1 + 2 * sizez_ext] / maxch;
            spy = 0,smy = 0;
            for(l = 1;l <= averWindow; l++){
               if(i + l > ymax)
                  a = working_space[xmin][ymax][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i + l][j + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spy = spy + b;
               if(i - l + 1 < ymin)
                  a = working_space[xmin][ymin][j + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i - l + 1][j + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smy = smy + b;
            }
            spz = 0,smz = 0;
            nip = working_space[xmin][i + 1][j + 2 * sizez_ext] / maxch;
            nim = working_space[xmin][i + 1][j + 1 + 2 * sizez_ext] / maxch;
            for(l = 1;l <= averWindow; l++){
               if(j + l > zmax)
                  a = working_space[xmin][i][zmax + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i][j + l + 2 * sizez_ext] / maxch;

               b = a - nip;
               if(a + nip <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nip);

               b = b / a;
               b = TMath::Exp(b);
               spz = spz + b;
               if(j - l + 1 < zmin)
                  a = working_space[xmin][i][zmin + 2 * sizez_ext] / maxch;

               else
                  a = working_space[xmin][i][j - l + 1 + 2 * sizez_ext] / maxch;

               b = a - nim;
               if(a + nim <= 0)
                  a = 1;

               else
                  a = TMath::Sqrt(a + nim);

               b = b / a;
               b = TMath::Exp(b);
               smz = smz + b;
            }
            a = (spy * working_space[xmin][i][j + 1] + spz * working_space[xmin][i + 1][j]) / (smy + smz);
            working_space[xmin][i + 1][j + 1] = a;
            nom = nom + a;
         }
      }
      for(i = xmin;i < xmax; i++){
         for(j = ymin;j < ymax; j++){
            for(k = zmin;k < zmax; k++){
               nip = working_space[i][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               spx = 0,smx = 0;
               for(l = 1;l <= averWindow; l++){
                  if(i + l > xmax)
                     a = working_space[xmax][j][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i + l][j][k + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spx = spx + b;
                  if(i - l + 1 < xmin)
                     a = working_space[xmin][j][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i - l + 1][j][k + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smx = smx + b;
               }
               spy = 0,smy = 0;
               nip = working_space[i + 1][j][k + 1 + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               for(l = 1;l <= averWindow; l++){
                  if(j + l > ymax)
                     a = working_space[i][ymax][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j + l][k + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spy = spy + b;
                  if(j - l + 1 < ymin)
                     a = working_space[i][ymin][k + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j - l + 1][k + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smy = smy + b;
               }
               spz = 0,smz = 0;
               nip = working_space[i + 1][j + 1][k + 2 * sizez_ext] / maxch;
               nim = working_space[i + 1][j + 1][k + 1 + 2 * sizez_ext] / maxch;
               for(l = 1;l <= averWindow; l++ ){
                  if(j + l > zmax)
                     a = working_space[i][j][zmax + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j][k + l + 2 * sizez_ext] / maxch;

                  b = a - nip;
                  if(a + nip <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nip);

                  b = b / a;
                  b = TMath::Exp(b);
                  spz = spz + b;
                  if(j - l + 1 < ymin)
                     a = working_space[i][j][zmin + 2 * sizez_ext] / maxch;

                  else
                     a = working_space[i][j][k - l + 1 + 2 * sizez_ext] / maxch;

                  b = a - nim;
                  if(a + nim <= 0)
                     a = 1;

                  else
                     a = TMath::Sqrt(a + nim);

                  b = b / a;
                  b = TMath::Exp(b);
                  smz = smz + b;
               }
               a = (spx * working_space[i][j + 1][k + 1] + spy * working_space[i + 1][j][k + 1] + spz * working_space[i + 1][j + 1][k]) / (smx + smy + smz);
               working_space[i + 1][j + 1][k + 1] = a;
               nom = nom + a;
            }
         }
      }
      a = 0;
      for(i = xmin;i <= xmax; i++){
         for(j = ymin;j <= ymax; j++){
            for(k = zmin;k <= zmax; k++){
               working_space[i][j][k] = working_space[i][j][k] / nom;
               a+=working_space[i][j][k];
            }
         }
      }
      for(i = 0;i < sizex_ext; i++){
         for(j = 0;j < sizey_ext; j++){
            for(k = 0;k < sizez_ext; k++){
               working_space[i][j][k + 2 * sizez_ext] = working_space[i][j][k] * plocha_markov / a;
            }
         }
      }
   }

   maximum = 0;
   for(k = 0;k < ssizez; k++){
      for(j = 0;j < ssizey; j++){
         for(i = 0;i < ssizex; i++){
            working_space[i][j][k] = 0;
            working_space[i][j][sizez_ext + k] = 0;
            if(working_space[i][j][k + 3 * sizez_ext] > maximum)
               maximum=working_space[i][j][k+3*sizez_ext];
         }
      }
   }
   for(i = 0;i < PEAK_WINDOW; i++){
      c[i] = 0;
   }
   j = (Int_t)(pocet_sigma * sigma + 0.5);
   for(i = -j;i <= j; i++){
      a=i;
      a = -a * a;
      b = 2.0 * sigma * sigma;
      a = a / b;
      a = TMath::Exp(a);
      s = i;
      s = s * s;
      s = s - sigma * sigma;
      s = s / (sigma * sigma * sigma * sigma);
      s = s * a;
      c[PEAK_WINDOW / 2 + i] = s;
   }
   norma = 0;
   for(i = 0;i < PEAK_WINDOW; i++){
      norma = norma + TMath::Abs(c[i]);
   }
   for(i = 0;i < PEAK_WINDOW; i++){
      c[i] = c[i] / norma;
   }
   a = pocet_sigma * sigma + 0.5;
   i = (Int_t)a;
   zmin = i;
   zmax = sizez_ext - i - 1;
   ymin = i;
   ymax = sizey_ext - i - 1;
   xmin = i;
   xmax = sizex_ext - i - 1;
   lmin = PEAK_WINDOW / 2 - i;
   lmax = PEAK_WINDOW / 2 + i;
   for(i = xmin;i <= xmax; i++){
      for(j = ymin;j <= ymax; j++){
         for(k = zmin;k <= zmax; k++){
            s = 0,f = 0;
            for(li = lmin;li <= lmax; li++){
               for(lj = lmin;lj <= lmax; lj++){
                  for(lk = lmin;lk <= lmax; lk++){
                     a = working_space[i + li - PEAK_WINDOW / 2][j + lj - PEAK_WINDOW / 2][k + lk - PEAK_WINDOW / 2 + 2 * sizez_ext];
                     b = c[li] * c[lj] * c[lk];
                     s += a * b;
                     f += a * b * b;
                  }
               }
            }
            working_space[i][j][k] = s;
            working_space[i][j][k + sizez_ext] = TMath::Sqrt(f);
         }
      }
   }
   for(x = xmin;x <= xmax; x++){
      for(y = ymin + 1;y < ymax; y++){
         for(z = zmin + 1;z < zmax; z++){
            val = working_space[x][y][z];
            val1 =  working_space[x - 1][y - 1][z - 1];
            val2 =  working_space[x    ][y - 1][z - 1];
            val3 =  working_space[x + 1][y - 1][z - 1];
            val4 =  working_space[x - 1][y    ][z - 1];
            val5 =  working_space[x    ][y    ][z - 1];
            val6 =  working_space[x + 1][y    ][z - 1];
            val7 =  working_space[x - 1][y + 1][z - 1];
            val8 =  working_space[x    ][y + 1][z - 1];
            val9 =  working_space[x + 1][y + 1][z - 1];
            val10 = working_space[x - 1][y - 1][z    ];
            val11 = working_space[x    ][y - 1][z    ];
            val12 = working_space[x + 1][y - 1][z    ];
            val13 = working_space[x - 1][y    ][z    ];
            val14 = working_space[x + 1][y    ][z    ];
            val15 = working_space[x - 1][y + 1][z    ];
            val16 = working_space[x    ][y + 1][z    ];
            val17 = working_space[x + 1][y + 1][z    ];
            val18 = working_space[x - 1][y - 1][z + 1];
            val19 = working_space[x    ][y - 1][z + 1];
            val20 = working_space[x + 1][y - 1][z + 1];
            val21 = working_space[x - 1][y    ][z + 1];
            val22 = working_space[x    ][y    ][z + 1];
            val23 = working_space[x + 1][y    ][z + 1];
            val24 = working_space[x - 1][y + 1][z + 1];
            val25 = working_space[x    ][y + 1][z + 1];
            val26 = working_space[x + 1][y + 1][z + 1];
            f = -s_f_ratio_peaks * working_space[x][y][z + sizez_ext];
            if(val < f && val < val1 && val < val2 && val < val3 && val < val4 && val < val5 && val < val6 && val < val7 && val < val8 && val < val9 && val < val10 && val < val11 && val < val12 && val < val13 && val < val14 && val < val15 && val < val16 && val < val17 && val < val18 && val < val19 && val < val20 && val < val21 && val < val22 && val < val23 && val < val24 && val < val25 && val < val26){
               s=0,f=0;
            for(li = lmin;li <= lmax; li++){
               a = working_space[x + li - PEAK_WINDOW / 2][y][z + 2 * sizez_ext];
               s += a * c[li];
               f += a * c[li] * c[li];
            }
            f = -s_f_ratio_peaks * sqrt(f);
            if(s < f){
               s = 0,f = 0;
               for(li = lmin;li <= lmax; li++){
                  a = working_space[x][y + li - PEAK_WINDOW / 2][z + 2 * sizez_ext];
                  s += a * c[li];
                  f += a * c[li] * c[li];
               }
               f = -s_f_ratio_peaks * sqrt(f);
               if(s < f){
                  s = 0,f = 0;
                  for(li = lmin;li <= lmax; li++){
                     a = working_space[x][y][z + li - PEAK_WINDOW / 2 + 2 * sizez_ext];
                     s += a * c[li];
                     f += a * c[li] * c[li];
                  }
                  f = -s_f_ratio_peaks * sqrt(f);
                  if(s < f){
                     s = 0,f = 0;
                     for(li = lmin;li <= lmax; li++){
                        for(lj = lmin;lj <= lmax; lj++){
                           a = working_space[x + li - PEAK_WINDOW / 2][y + lj - PEAK_WINDOW / 2][z + 2 * sizez_ext];
                           s += a * c[li] * c[lj];
                           f += a * c[li] * c[li] * c[lj] * c[lj];
                        }
                     }
                     f = s_f_ratio_peaks * sqrt(f);
                     if(s > f){
                        s = 0,f = 0;
                        for(li = lmin;li <= lmax; li++){
                           for(lj = lmin;lj <= lmax; lj++){
                              a = working_space[x + li - PEAK_WINDOW / 2][y][z + lj - PEAK_WINDOW / 2 + 2 * sizez_ext];
                              s += a * c[li] * c[lj];
                              f += a * c[li] * c[li] * c[lj] * c[lj];
                           }
                        }
                        f = s_f_ratio_peaks * sqrt(f);
                        if(s > f){
                           s = 0,f = 0;
                           for(li = lmin;li <= lmax; li++){
                              for(lj=lmin;lj<=lmax;lj++){
                                 a = working_space[x][y + li - PEAK_WINDOW / 2][z + lj - PEAK_WINDOW / 2 + 2 * sizez_ext];
                                 s += a * c[li] * c[lj];
                                 f += a * c[li] * c[li] * c[lj] * c[lj];
                              }
                           }
                           f = s_f_ratio_peaks * sqrt(f);
                              if(s > f){
                                 if(x >= shift && x < ssizex + shift && y >= shift && y < ssizey + shift && z >= shift && z < ssizez + shift){
                                    if(working_space[x][y][z + 3 * sizez_ext] > threshold * maximum / 100.0){
                                       if(peak_index<fMaxPeaks){
                                          for(k = x - 1,a = 0,b = 0;k <= x + 1; k++){
                                             a += (Double_t)(k - shift) * working_space[k][y][z];
                                             b += working_space[k][y][z];
                                          }
                                          fPositionX[peak_index] = a / b;
                                          for(k = y - 1,a = 0,b = 0;k <= y + 1; k++){
                                             a += (Double_t)(k - shift) * working_space[x][k][z];
                                             b += working_space[x][k][z];
                                          }
                                          fPositionY[peak_index] = a / b;
                                          for(k = z - 1,a = 0,b = 0;k <= z + 1; k++){
                                             a += (Double_t)(k - shift) * working_space[x][y][k];
                                             b += working_space[x][y][k];
                                          }
                                          fPositionZ[peak_index] = a / b;
                                          peak_index += 1;
                                       }
                                    }
                                 }
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
   for(i = 0;i < ssizex; i++){
      for(j = 0;j < ssizey; j++){
         for(k = 0;k < ssizez; k++){
            val = -working_space[i + shift][j + shift][k + shift];
            if( val < 0)
               val = 0;
            dest[i][j][k] = val;
         }
      }
   }
   k = (Int_t)(4 * sigma + 0.5);
   k = 4 * k;
   for(i = 0;i < ssizex + k; i++){
      for(j = 0;j < ssizey + k; j++)
         delete[] working_space[i][j];
      delete[] working_space[i];
   }
   delete[] working_space;
   fNPeaks = peak_index;
   return fNPeaks;
}
 TSpectrum3.cxx:1
 TSpectrum3.cxx:2
 TSpectrum3.cxx:3
 TSpectrum3.cxx:4
 TSpectrum3.cxx:5
 TSpectrum3.cxx:6
 TSpectrum3.cxx:7
 TSpectrum3.cxx:8
 TSpectrum3.cxx:9
 TSpectrum3.cxx:10
 TSpectrum3.cxx:11
 TSpectrum3.cxx:12
 TSpectrum3.cxx:13
 TSpectrum3.cxx:14
 TSpectrum3.cxx:15
 TSpectrum3.cxx:16
 TSpectrum3.cxx:17
 TSpectrum3.cxx:18
 TSpectrum3.cxx:19
 TSpectrum3.cxx:20
 TSpectrum3.cxx:21
 TSpectrum3.cxx:22
 TSpectrum3.cxx:23
 TSpectrum3.cxx:24
 TSpectrum3.cxx:25
 TSpectrum3.cxx:26
 TSpectrum3.cxx:27
 TSpectrum3.cxx:28
 TSpectrum3.cxx:29
 TSpectrum3.cxx:30
 TSpectrum3.cxx:31
 TSpectrum3.cxx:32
 TSpectrum3.cxx:33
 TSpectrum3.cxx:34
 TSpectrum3.cxx:35
 TSpectrum3.cxx:36
 TSpectrum3.cxx:37
 TSpectrum3.cxx:38
 TSpectrum3.cxx:39
 TSpectrum3.cxx:40
 TSpectrum3.cxx:41
 TSpectrum3.cxx:42
 TSpectrum3.cxx:43
 TSpectrum3.cxx:44
 TSpectrum3.cxx:45
 TSpectrum3.cxx:46
 TSpectrum3.cxx:47
 TSpectrum3.cxx:48
 TSpectrum3.cxx:49
 TSpectrum3.cxx:50
 TSpectrum3.cxx:51
 TSpectrum3.cxx:52
 TSpectrum3.cxx:53
 TSpectrum3.cxx:54
 TSpectrum3.cxx:55
 TSpectrum3.cxx:56
 TSpectrum3.cxx:57
 TSpectrum3.cxx:58
 TSpectrum3.cxx:59
 TSpectrum3.cxx:60
 TSpectrum3.cxx:61
 TSpectrum3.cxx:62
 TSpectrum3.cxx:63
 TSpectrum3.cxx:64
 TSpectrum3.cxx:65
 TSpectrum3.cxx:66
 TSpectrum3.cxx:67
 TSpectrum3.cxx:68
 TSpectrum3.cxx:69
 TSpectrum3.cxx:70
 TSpectrum3.cxx:71
 TSpectrum3.cxx:72
 TSpectrum3.cxx:73
 TSpectrum3.cxx:74
 TSpectrum3.cxx:75
 TSpectrum3.cxx:76
 TSpectrum3.cxx:77
 TSpectrum3.cxx:78
 TSpectrum3.cxx:79
 TSpectrum3.cxx:80
 TSpectrum3.cxx:81
 TSpectrum3.cxx:82
 TSpectrum3.cxx:83
 TSpectrum3.cxx:84
 TSpectrum3.cxx:85
 TSpectrum3.cxx:86
 TSpectrum3.cxx:87
 TSpectrum3.cxx:88
 TSpectrum3.cxx:89
 TSpectrum3.cxx:90
 TSpectrum3.cxx:91
 TSpectrum3.cxx:92
 TSpectrum3.cxx:93
 TSpectrum3.cxx:94
 TSpectrum3.cxx:95
 TSpectrum3.cxx:96
 TSpectrum3.cxx:97
 TSpectrum3.cxx:98
 TSpectrum3.cxx:99
 TSpectrum3.cxx:100
 TSpectrum3.cxx:101
 TSpectrum3.cxx:102
 TSpectrum3.cxx:103
 TSpectrum3.cxx:104
 TSpectrum3.cxx:105
 TSpectrum3.cxx:106
 TSpectrum3.cxx:107
 TSpectrum3.cxx:108
 TSpectrum3.cxx:109
 TSpectrum3.cxx:110
 TSpectrum3.cxx:111
 TSpectrum3.cxx:112
 TSpectrum3.cxx:113
 TSpectrum3.cxx:114
 TSpectrum3.cxx:115
 TSpectrum3.cxx:116
 TSpectrum3.cxx:117
 TSpectrum3.cxx:118
 TSpectrum3.cxx:119
 TSpectrum3.cxx:120
 TSpectrum3.cxx:121
 TSpectrum3.cxx:122
 TSpectrum3.cxx:123
 TSpectrum3.cxx:124
 TSpectrum3.cxx:125
 TSpectrum3.cxx:126
 TSpectrum3.cxx:127
 TSpectrum3.cxx:128
 TSpectrum3.cxx:129
 TSpectrum3.cxx:130
 TSpectrum3.cxx:131
 TSpectrum3.cxx:132
 TSpectrum3.cxx:133
 TSpectrum3.cxx:134
 TSpectrum3.cxx:135
 TSpectrum3.cxx:136
 TSpectrum3.cxx:137
 TSpectrum3.cxx:138
 TSpectrum3.cxx:139
 TSpectrum3.cxx:140
 TSpectrum3.cxx:141
 TSpectrum3.cxx:142
 TSpectrum3.cxx:143
 TSpectrum3.cxx:144
 TSpectrum3.cxx:145
 TSpectrum3.cxx:146
 TSpectrum3.cxx:147
 TSpectrum3.cxx:148
 TSpectrum3.cxx:149
 TSpectrum3.cxx:150
 TSpectrum3.cxx:151
 TSpectrum3.cxx:152
 TSpectrum3.cxx:153
 TSpectrum3.cxx:154
 TSpectrum3.cxx:155
 TSpectrum3.cxx:156
 TSpectrum3.cxx:157
 TSpectrum3.cxx:158
 TSpectrum3.cxx:159
 TSpectrum3.cxx:160
 TSpectrum3.cxx:161
 TSpectrum3.cxx:162
 TSpectrum3.cxx:163
 TSpectrum3.cxx:164
 TSpectrum3.cxx:165
 TSpectrum3.cxx:166
 TSpectrum3.cxx:167
 TSpectrum3.cxx:168
 TSpectrum3.cxx:169
 TSpectrum3.cxx:170
 TSpectrum3.cxx:171
 TSpectrum3.cxx:172
 TSpectrum3.cxx:173
 TSpectrum3.cxx:174
 TSpectrum3.cxx:175
 TSpectrum3.cxx:176
 TSpectrum3.cxx:177
 TSpectrum3.cxx:178
 TSpectrum3.cxx:179
 TSpectrum3.cxx:180
 TSpectrum3.cxx:181
 TSpectrum3.cxx:182
 TSpectrum3.cxx:183
 TSpectrum3.cxx:184
 TSpectrum3.cxx:185
 TSpectrum3.cxx:186
 TSpectrum3.cxx:187
 TSpectrum3.cxx:188
 TSpectrum3.cxx:189
 TSpectrum3.cxx:190
 TSpectrum3.cxx:191
 TSpectrum3.cxx:192
 TSpectrum3.cxx:193
 TSpectrum3.cxx:194
 TSpectrum3.cxx:195
 TSpectrum3.cxx:196
 TSpectrum3.cxx:197
 TSpectrum3.cxx:198
 TSpectrum3.cxx:199
 TSpectrum3.cxx:200
 TSpectrum3.cxx:201
 TSpectrum3.cxx:202
 TSpectrum3.cxx:203
 TSpectrum3.cxx:204
 TSpectrum3.cxx:205
 TSpectrum3.cxx:206
 TSpectrum3.cxx:207
 TSpectrum3.cxx:208
 TSpectrum3.cxx:209
 TSpectrum3.cxx:210
 TSpectrum3.cxx:211
 TSpectrum3.cxx:212
 TSpectrum3.cxx:213
 TSpectrum3.cxx:214
 TSpectrum3.cxx:215
 TSpectrum3.cxx:216
 TSpectrum3.cxx:217
 TSpectrum3.cxx:218
 TSpectrum3.cxx:219
 TSpectrum3.cxx:220
 TSpectrum3.cxx:221
 TSpectrum3.cxx:222
 TSpectrum3.cxx:223
 TSpectrum3.cxx:224
 TSpectrum3.cxx:225
 TSpectrum3.cxx:226
 TSpectrum3.cxx:227
 TSpectrum3.cxx:228
 TSpectrum3.cxx:229
 TSpectrum3.cxx:230
 TSpectrum3.cxx:231
 TSpectrum3.cxx:232
 TSpectrum3.cxx:233
 TSpectrum3.cxx:234
 TSpectrum3.cxx:235
 TSpectrum3.cxx:236
 TSpectrum3.cxx:237
 TSpectrum3.cxx:238
 TSpectrum3.cxx:239
 TSpectrum3.cxx:240
 TSpectrum3.cxx:241
 TSpectrum3.cxx:242
 TSpectrum3.cxx:243
 TSpectrum3.cxx:244
 TSpectrum3.cxx:245
 TSpectrum3.cxx:246
 TSpectrum3.cxx:247
 TSpectrum3.cxx:248
 TSpectrum3.cxx:249
 TSpectrum3.cxx:250
 TSpectrum3.cxx:251
 TSpectrum3.cxx:252
 TSpectrum3.cxx:253
 TSpectrum3.cxx:254
 TSpectrum3.cxx:255
 TSpectrum3.cxx:256
 TSpectrum3.cxx:257
 TSpectrum3.cxx:258
 TSpectrum3.cxx:259
 TSpectrum3.cxx:260
 TSpectrum3.cxx:261
 TSpectrum3.cxx:262
 TSpectrum3.cxx:263
 TSpectrum3.cxx:264
 TSpectrum3.cxx:265
 TSpectrum3.cxx:266
 TSpectrum3.cxx:267
 TSpectrum3.cxx:268
 TSpectrum3.cxx:269
 TSpectrum3.cxx:270
 TSpectrum3.cxx:271
 TSpectrum3.cxx:272
 TSpectrum3.cxx:273
 TSpectrum3.cxx:274
 TSpectrum3.cxx:275
 TSpectrum3.cxx:276
 TSpectrum3.cxx:277
 TSpectrum3.cxx:278
 TSpectrum3.cxx:279
 TSpectrum3.cxx:280
 TSpectrum3.cxx:281
 TSpectrum3.cxx:282
 TSpectrum3.cxx:283
 TSpectrum3.cxx:284
 TSpectrum3.cxx:285
 TSpectrum3.cxx:286
 TSpectrum3.cxx:287
 TSpectrum3.cxx:288
 TSpectrum3.cxx:289
 TSpectrum3.cxx:290
 TSpectrum3.cxx:291
 TSpectrum3.cxx:292
 TSpectrum3.cxx:293
 TSpectrum3.cxx:294
 TSpectrum3.cxx:295
 TSpectrum3.cxx:296
 TSpectrum3.cxx:297
 TSpectrum3.cxx:298
 TSpectrum3.cxx:299
 TSpectrum3.cxx:300
 TSpectrum3.cxx:301
 TSpectrum3.cxx:302
 TSpectrum3.cxx:303
 TSpectrum3.cxx:304
 TSpectrum3.cxx:305
 TSpectrum3.cxx:306
 TSpectrum3.cxx:307
 TSpectrum3.cxx:308
 TSpectrum3.cxx:309
 TSpectrum3.cxx:310
 TSpectrum3.cxx:311
 TSpectrum3.cxx:312
 TSpectrum3.cxx:313
 TSpectrum3.cxx:314
 TSpectrum3.cxx:315
 TSpectrum3.cxx:316
 TSpectrum3.cxx:317
 TSpectrum3.cxx:318
 TSpectrum3.cxx:319
 TSpectrum3.cxx:320
 TSpectrum3.cxx:321
 TSpectrum3.cxx:322
 TSpectrum3.cxx:323
 TSpectrum3.cxx:324
 TSpectrum3.cxx:325
 TSpectrum3.cxx:326
 TSpectrum3.cxx:327
 TSpectrum3.cxx:328
 TSpectrum3.cxx:329
 TSpectrum3.cxx:330
 TSpectrum3.cxx:331
 TSpectrum3.cxx:332
 TSpectrum3.cxx:333
 TSpectrum3.cxx:334
 TSpectrum3.cxx:335
 TSpectrum3.cxx:336
 TSpectrum3.cxx:337
 TSpectrum3.cxx:338
 TSpectrum3.cxx:339
 TSpectrum3.cxx:340
 TSpectrum3.cxx:341
 TSpectrum3.cxx:342
 TSpectrum3.cxx:343
 TSpectrum3.cxx:344
 TSpectrum3.cxx:345
 TSpectrum3.cxx:346
 TSpectrum3.cxx:347
 TSpectrum3.cxx:348
 TSpectrum3.cxx:349
 TSpectrum3.cxx:350
 TSpectrum3.cxx:351
 TSpectrum3.cxx:352
 TSpectrum3.cxx:353
 TSpectrum3.cxx:354
 TSpectrum3.cxx:355
 TSpectrum3.cxx:356
 TSpectrum3.cxx:357
 TSpectrum3.cxx:358
 TSpectrum3.cxx:359
 TSpectrum3.cxx:360
 TSpectrum3.cxx:361
 TSpectrum3.cxx:362
 TSpectrum3.cxx:363
 TSpectrum3.cxx:364
 TSpectrum3.cxx:365
 TSpectrum3.cxx:366
 TSpectrum3.cxx:367
 TSpectrum3.cxx:368
 TSpectrum3.cxx:369
 TSpectrum3.cxx:370
 TSpectrum3.cxx:371
 TSpectrum3.cxx:372
 TSpectrum3.cxx:373
 TSpectrum3.cxx:374
 TSpectrum3.cxx:375
 TSpectrum3.cxx:376
 TSpectrum3.cxx:377
 TSpectrum3.cxx:378
 TSpectrum3.cxx:379
 TSpectrum3.cxx:380
 TSpectrum3.cxx:381
 TSpectrum3.cxx:382
 TSpectrum3.cxx:383
 TSpectrum3.cxx:384
 TSpectrum3.cxx:385
 TSpectrum3.cxx:386
 TSpectrum3.cxx:387
 TSpectrum3.cxx:388
 TSpectrum3.cxx:389
 TSpectrum3.cxx:390
 TSpectrum3.cxx:391
 TSpectrum3.cxx:392
 TSpectrum3.cxx:393
 TSpectrum3.cxx:394
 TSpectrum3.cxx:395
 TSpectrum3.cxx:396
 TSpectrum3.cxx:397
 TSpectrum3.cxx:398
 TSpectrum3.cxx:399
 TSpectrum3.cxx:400
 TSpectrum3.cxx:401
 TSpectrum3.cxx:402
 TSpectrum3.cxx:403
 TSpectrum3.cxx:404
 TSpectrum3.cxx:405
 TSpectrum3.cxx:406
 TSpectrum3.cxx:407
 TSpectrum3.cxx:408
 TSpectrum3.cxx:409
 TSpectrum3.cxx:410
 TSpectrum3.cxx:411
 TSpectrum3.cxx:412
 TSpectrum3.cxx:413
 TSpectrum3.cxx:414
 TSpectrum3.cxx:415
 TSpectrum3.cxx:416
 TSpectrum3.cxx:417
 TSpectrum3.cxx:418
 TSpectrum3.cxx:419
 TSpectrum3.cxx:420
 TSpectrum3.cxx:421
 TSpectrum3.cxx:422
 TSpectrum3.cxx:423
 TSpectrum3.cxx:424
 TSpectrum3.cxx:425
 TSpectrum3.cxx:426
 TSpectrum3.cxx:427
 TSpectrum3.cxx:428
 TSpectrum3.cxx:429
 TSpectrum3.cxx:430
 TSpectrum3.cxx:431
 TSpectrum3.cxx:432
 TSpectrum3.cxx:433
 TSpectrum3.cxx:434
 TSpectrum3.cxx:435
 TSpectrum3.cxx:436
 TSpectrum3.cxx:437
 TSpectrum3.cxx:438
 TSpectrum3.cxx:439
 TSpectrum3.cxx:440
 TSpectrum3.cxx:441
 TSpectrum3.cxx:442
 TSpectrum3.cxx:443
 TSpectrum3.cxx:444
 TSpectrum3.cxx:445
 TSpectrum3.cxx:446
 TSpectrum3.cxx:447
 TSpectrum3.cxx:448
 TSpectrum3.cxx:449
 TSpectrum3.cxx:450
 TSpectrum3.cxx:451
 TSpectrum3.cxx:452
 TSpectrum3.cxx:453
 TSpectrum3.cxx:454
 TSpectrum3.cxx:455
 TSpectrum3.cxx:456
 TSpectrum3.cxx:457
 TSpectrum3.cxx:458
 TSpectrum3.cxx:459
 TSpectrum3.cxx:460
 TSpectrum3.cxx:461
 TSpectrum3.cxx:462
 TSpectrum3.cxx:463
 TSpectrum3.cxx:464
 TSpectrum3.cxx:465
 TSpectrum3.cxx:466
 TSpectrum3.cxx:467
 TSpectrum3.cxx:468
 TSpectrum3.cxx:469
 TSpectrum3.cxx:470
 TSpectrum3.cxx:471
 TSpectrum3.cxx:472
 TSpectrum3.cxx:473
 TSpectrum3.cxx:474
 TSpectrum3.cxx:475
 TSpectrum3.cxx:476
 TSpectrum3.cxx:477
 TSpectrum3.cxx:478
 TSpectrum3.cxx:479
 TSpectrum3.cxx:480
 TSpectrum3.cxx:481
 TSpectrum3.cxx:482
 TSpectrum3.cxx:483
 TSpectrum3.cxx:484
 TSpectrum3.cxx:485
 TSpectrum3.cxx:486
 TSpectrum3.cxx:487
 TSpectrum3.cxx:488
 TSpectrum3.cxx:489
 TSpectrum3.cxx:490
 TSpectrum3.cxx:491
 TSpectrum3.cxx:492
 TSpectrum3.cxx:493
 TSpectrum3.cxx:494
 TSpectrum3.cxx:495
 TSpectrum3.cxx:496
 TSpectrum3.cxx:497
 TSpectrum3.cxx:498
 TSpectrum3.cxx:499
 TSpectrum3.cxx:500
 TSpectrum3.cxx:501
 TSpectrum3.cxx:502
 TSpectrum3.cxx:503
 TSpectrum3.cxx:504
 TSpectrum3.cxx:505
 TSpectrum3.cxx:506
 TSpectrum3.cxx:507
 TSpectrum3.cxx:508
 TSpectrum3.cxx:509
 TSpectrum3.cxx:510
 TSpectrum3.cxx:511
 TSpectrum3.cxx:512
 TSpectrum3.cxx:513
 TSpectrum3.cxx:514
 TSpectrum3.cxx:515
 TSpectrum3.cxx:516
 TSpectrum3.cxx:517
 TSpectrum3.cxx:518
 TSpectrum3.cxx:519
 TSpectrum3.cxx:520
 TSpectrum3.cxx:521
 TSpectrum3.cxx:522
 TSpectrum3.cxx:523
 TSpectrum3.cxx:524
 TSpectrum3.cxx:525
 TSpectrum3.cxx:526
 TSpectrum3.cxx:527
 TSpectrum3.cxx:528
 TSpectrum3.cxx:529
 TSpectrum3.cxx:530
 TSpectrum3.cxx:531
 TSpectrum3.cxx:532
 TSpectrum3.cxx:533
 TSpectrum3.cxx:534
 TSpectrum3.cxx:535
 TSpectrum3.cxx:536
 TSpectrum3.cxx:537
 TSpectrum3.cxx:538
 TSpectrum3.cxx:539
 TSpectrum3.cxx:540
 TSpectrum3.cxx:541
 TSpectrum3.cxx:542
 TSpectrum3.cxx:543
 TSpectrum3.cxx:544
 TSpectrum3.cxx:545
 TSpectrum3.cxx:546
 TSpectrum3.cxx:547
 TSpectrum3.cxx:548
 TSpectrum3.cxx:549
 TSpectrum3.cxx:550
 TSpectrum3.cxx:551
 TSpectrum3.cxx:552
 TSpectrum3.cxx:553
 TSpectrum3.cxx:554
 TSpectrum3.cxx:555
 TSpectrum3.cxx:556
 TSpectrum3.cxx:557
 TSpectrum3.cxx:558
 TSpectrum3.cxx:559
 TSpectrum3.cxx:560
 TSpectrum3.cxx:561
 TSpectrum3.cxx:562
 TSpectrum3.cxx:563
 TSpectrum3.cxx:564
 TSpectrum3.cxx:565
 TSpectrum3.cxx:566
 TSpectrum3.cxx:567
 TSpectrum3.cxx:568
 TSpectrum3.cxx:569
 TSpectrum3.cxx:570
 TSpectrum3.cxx:571
 TSpectrum3.cxx:572
 TSpectrum3.cxx:573
 TSpectrum3.cxx:574
 TSpectrum3.cxx:575
 TSpectrum3.cxx:576
 TSpectrum3.cxx:577
 TSpectrum3.cxx:578
 TSpectrum3.cxx:579
 TSpectrum3.cxx:580
 TSpectrum3.cxx:581
 TSpectrum3.cxx:582
 TSpectrum3.cxx:583
 TSpectrum3.cxx:584
 TSpectrum3.cxx:585
 TSpectrum3.cxx:586
 TSpectrum3.cxx:587
 TSpectrum3.cxx:588
 TSpectrum3.cxx:589
 TSpectrum3.cxx:590
 TSpectrum3.cxx:591
 TSpectrum3.cxx:592
 TSpectrum3.cxx:593
 TSpectrum3.cxx:594
 TSpectrum3.cxx:595
 TSpectrum3.cxx:596
 TSpectrum3.cxx:597
 TSpectrum3.cxx:598
 TSpectrum3.cxx:599
 TSpectrum3.cxx:600
 TSpectrum3.cxx:601
 TSpectrum3.cxx:602
 TSpectrum3.cxx:603
 TSpectrum3.cxx:604
 TSpectrum3.cxx:605
 TSpectrum3.cxx:606
 TSpectrum3.cxx:607
 TSpectrum3.cxx:608
 TSpectrum3.cxx:609
 TSpectrum3.cxx:610
 TSpectrum3.cxx:611
 TSpectrum3.cxx:612
 TSpectrum3.cxx:613
 TSpectrum3.cxx:614
 TSpectrum3.cxx:615
 TSpectrum3.cxx:616
 TSpectrum3.cxx:617
 TSpectrum3.cxx:618
 TSpectrum3.cxx:619
 TSpectrum3.cxx:620
 TSpectrum3.cxx:621
 TSpectrum3.cxx:622
 TSpectrum3.cxx:623
 TSpectrum3.cxx:624
 TSpectrum3.cxx:625
 TSpectrum3.cxx:626
 TSpectrum3.cxx:627
 TSpectrum3.cxx:628
 TSpectrum3.cxx:629
 TSpectrum3.cxx:630
 TSpectrum3.cxx:631
 TSpectrum3.cxx:632
 TSpectrum3.cxx:633
 TSpectrum3.cxx:634
 TSpectrum3.cxx:635
 TSpectrum3.cxx:636
 TSpectrum3.cxx:637
 TSpectrum3.cxx:638
 TSpectrum3.cxx:639
 TSpectrum3.cxx:640
 TSpectrum3.cxx:641
 TSpectrum3.cxx:642
 TSpectrum3.cxx:643
 TSpectrum3.cxx:644
 TSpectrum3.cxx:645
 TSpectrum3.cxx:646
 TSpectrum3.cxx:647
 TSpectrum3.cxx:648
 TSpectrum3.cxx:649
 TSpectrum3.cxx:650
 TSpectrum3.cxx:651
 TSpectrum3.cxx:652
 TSpectrum3.cxx:653
 TSpectrum3.cxx:654
 TSpectrum3.cxx:655
 TSpectrum3.cxx:656
 TSpectrum3.cxx:657
 TSpectrum3.cxx:658
 TSpectrum3.cxx:659
 TSpectrum3.cxx:660
 TSpectrum3.cxx:661
 TSpectrum3.cxx:662
 TSpectrum3.cxx:663
 TSpectrum3.cxx:664
 TSpectrum3.cxx:665
 TSpectrum3.cxx:666
 TSpectrum3.cxx:667
 TSpectrum3.cxx:668
 TSpectrum3.cxx:669
 TSpectrum3.cxx:670
 TSpectrum3.cxx:671
 TSpectrum3.cxx:672
 TSpectrum3.cxx:673
 TSpectrum3.cxx:674
 TSpectrum3.cxx:675
 TSpectrum3.cxx:676
 TSpectrum3.cxx:677
 TSpectrum3.cxx:678
 TSpectrum3.cxx:679
 TSpectrum3.cxx:680
 TSpectrum3.cxx:681
 TSpectrum3.cxx:682
 TSpectrum3.cxx:683
 TSpectrum3.cxx:684
 TSpectrum3.cxx:685
 TSpectrum3.cxx:686
 TSpectrum3.cxx:687
 TSpectrum3.cxx:688
 TSpectrum3.cxx:689
 TSpectrum3.cxx:690
 TSpectrum3.cxx:691
 TSpectrum3.cxx:692
 TSpectrum3.cxx:693
 TSpectrum3.cxx:694
 TSpectrum3.cxx:695
 TSpectrum3.cxx:696
 TSpectrum3.cxx:697
 TSpectrum3.cxx:698
 TSpectrum3.cxx:699
 TSpectrum3.cxx:700
 TSpectrum3.cxx:701
 TSpectrum3.cxx:702
 TSpectrum3.cxx:703
 TSpectrum3.cxx:704
 TSpectrum3.cxx:705
 TSpectrum3.cxx:706
 TSpectrum3.cxx:707
 TSpectrum3.cxx:708
 TSpectrum3.cxx:709
 TSpectrum3.cxx:710
 TSpectrum3.cxx:711
 TSpectrum3.cxx:712
 TSpectrum3.cxx:713
 TSpectrum3.cxx:714
 TSpectrum3.cxx:715
 TSpectrum3.cxx:716
 TSpectrum3.cxx:717
 TSpectrum3.cxx:718
 TSpectrum3.cxx:719
 TSpectrum3.cxx:720
 TSpectrum3.cxx:721
 TSpectrum3.cxx:722
 TSpectrum3.cxx:723
 TSpectrum3.cxx:724
 TSpectrum3.cxx:725
 TSpectrum3.cxx:726
 TSpectrum3.cxx:727
 TSpectrum3.cxx:728
 TSpectrum3.cxx:729
 TSpectrum3.cxx:730
 TSpectrum3.cxx:731
 TSpectrum3.cxx:732
 TSpectrum3.cxx:733
 TSpectrum3.cxx:734
 TSpectrum3.cxx:735
 TSpectrum3.cxx:736
 TSpectrum3.cxx:737
 TSpectrum3.cxx:738
 TSpectrum3.cxx:739
 TSpectrum3.cxx:740
 TSpectrum3.cxx:741
 TSpectrum3.cxx:742
 TSpectrum3.cxx:743
 TSpectrum3.cxx:744
 TSpectrum3.cxx:745
 TSpectrum3.cxx:746
 TSpectrum3.cxx:747
 TSpectrum3.cxx:748
 TSpectrum3.cxx:749
 TSpectrum3.cxx:750
 TSpectrum3.cxx:751
 TSpectrum3.cxx:752
 TSpectrum3.cxx:753
 TSpectrum3.cxx:754
 TSpectrum3.cxx:755
 TSpectrum3.cxx:756
 TSpectrum3.cxx:757
 TSpectrum3.cxx:758
 TSpectrum3.cxx:759
 TSpectrum3.cxx:760
 TSpectrum3.cxx:761
 TSpectrum3.cxx:762
 TSpectrum3.cxx:763
 TSpectrum3.cxx:764
 TSpectrum3.cxx:765
 TSpectrum3.cxx:766
 TSpectrum3.cxx:767
 TSpectrum3.cxx:768
 TSpectrum3.cxx:769
 TSpectrum3.cxx:770
 TSpectrum3.cxx:771
 TSpectrum3.cxx:772
 TSpectrum3.cxx:773
 TSpectrum3.cxx:774
 TSpectrum3.cxx:775
 TSpectrum3.cxx:776
 TSpectrum3.cxx:777
 TSpectrum3.cxx:778
 TSpectrum3.cxx:779
 TSpectrum3.cxx:780
 TSpectrum3.cxx:781
 TSpectrum3.cxx:782
 TSpectrum3.cxx:783
 TSpectrum3.cxx:784
 TSpectrum3.cxx:785
 TSpectrum3.cxx:786
 TSpectrum3.cxx:787
 TSpectrum3.cxx:788
 TSpectrum3.cxx:789
 TSpectrum3.cxx:790
 TSpectrum3.cxx:791
 TSpectrum3.cxx:792
 TSpectrum3.cxx:793
 TSpectrum3.cxx:794
 TSpectrum3.cxx:795
 TSpectrum3.cxx:796
 TSpectrum3.cxx:797
 TSpectrum3.cxx:798
 TSpectrum3.cxx:799
 TSpectrum3.cxx:800
 TSpectrum3.cxx:801
 TSpectrum3.cxx:802
 TSpectrum3.cxx:803
 TSpectrum3.cxx:804
 TSpectrum3.cxx:805
 TSpectrum3.cxx:806
 TSpectrum3.cxx:807
 TSpectrum3.cxx:808
 TSpectrum3.cxx:809
 TSpectrum3.cxx:810
 TSpectrum3.cxx:811
 TSpectrum3.cxx:812
 TSpectrum3.cxx:813
 TSpectrum3.cxx:814
 TSpectrum3.cxx:815
 TSpectrum3.cxx:816
 TSpectrum3.cxx:817
 TSpectrum3.cxx:818
 TSpectrum3.cxx:819
 TSpectrum3.cxx:820
 TSpectrum3.cxx:821
 TSpectrum3.cxx:822
 TSpectrum3.cxx:823
 TSpectrum3.cxx:824
 TSpectrum3.cxx:825
 TSpectrum3.cxx:826
 TSpectrum3.cxx:827
 TSpectrum3.cxx:828
 TSpectrum3.cxx:829
 TSpectrum3.cxx:830
 TSpectrum3.cxx:831
 TSpectrum3.cxx:832
 TSpectrum3.cxx:833
 TSpectrum3.cxx:834
 TSpectrum3.cxx:835
 TSpectrum3.cxx:836
 TSpectrum3.cxx:837
 TSpectrum3.cxx:838
 TSpectrum3.cxx:839
 TSpectrum3.cxx:840
 TSpectrum3.cxx:841
 TSpectrum3.cxx:842
 TSpectrum3.cxx:843
 TSpectrum3.cxx:844
 TSpectrum3.cxx:845
 TSpectrum3.cxx:846
 TSpectrum3.cxx:847
 TSpectrum3.cxx:848
 TSpectrum3.cxx:849
 TSpectrum3.cxx:850
 TSpectrum3.cxx:851
 TSpectrum3.cxx:852
 TSpectrum3.cxx:853
 TSpectrum3.cxx:854
 TSpectrum3.cxx:855
 TSpectrum3.cxx:856
 TSpectrum3.cxx:857
 TSpectrum3.cxx:858
 TSpectrum3.cxx:859
 TSpectrum3.cxx:860
 TSpectrum3.cxx:861
 TSpectrum3.cxx:862
 TSpectrum3.cxx:863
 TSpectrum3.cxx:864
 TSpectrum3.cxx:865
 TSpectrum3.cxx:866
 TSpectrum3.cxx:867
 TSpectrum3.cxx:868
 TSpectrum3.cxx:869
 TSpectrum3.cxx:870
 TSpectrum3.cxx:871
 TSpectrum3.cxx:872
 TSpectrum3.cxx:873
 TSpectrum3.cxx:874
 TSpectrum3.cxx:875
 TSpectrum3.cxx:876
 TSpectrum3.cxx:877
 TSpectrum3.cxx:878
 TSpectrum3.cxx:879
 TSpectrum3.cxx:880
 TSpectrum3.cxx:881
 TSpectrum3.cxx:882
 TSpectrum3.cxx:883
 TSpectrum3.cxx:884
 TSpectrum3.cxx:885
 TSpectrum3.cxx:886
 TSpectrum3.cxx:887
 TSpectrum3.cxx:888
 TSpectrum3.cxx:889
 TSpectrum3.cxx:890
 TSpectrum3.cxx:891
 TSpectrum3.cxx:892
 TSpectrum3.cxx:893
 TSpectrum3.cxx:894
 TSpectrum3.cxx:895
 TSpectrum3.cxx:896
 TSpectrum3.cxx:897
 TSpectrum3.cxx:898
 TSpectrum3.cxx:899
 TSpectrum3.cxx:900
 TSpectrum3.cxx:901
 TSpectrum3.cxx:902
 TSpectrum3.cxx:903
 TSpectrum3.cxx:904
 TSpectrum3.cxx:905
 TSpectrum3.cxx:906
 TSpectrum3.cxx:907
 TSpectrum3.cxx:908
 TSpectrum3.cxx:909
 TSpectrum3.cxx:910
 TSpectrum3.cxx:911
 TSpectrum3.cxx:912
 TSpectrum3.cxx:913
 TSpectrum3.cxx:914
 TSpectrum3.cxx:915
 TSpectrum3.cxx:916
 TSpectrum3.cxx:917
 TSpectrum3.cxx:918
 TSpectrum3.cxx:919
 TSpectrum3.cxx:920
 TSpectrum3.cxx:921
 TSpectrum3.cxx:922
 TSpectrum3.cxx:923
 TSpectrum3.cxx:924
 TSpectrum3.cxx:925
 TSpectrum3.cxx:926
 TSpectrum3.cxx:927
 TSpectrum3.cxx:928
 TSpectrum3.cxx:929
 TSpectrum3.cxx:930
 TSpectrum3.cxx:931
 TSpectrum3.cxx:932
 TSpectrum3.cxx:933
 TSpectrum3.cxx:934
 TSpectrum3.cxx:935
 TSpectrum3.cxx:936
 TSpectrum3.cxx:937
 TSpectrum3.cxx:938
 TSpectrum3.cxx:939
 TSpectrum3.cxx:940
 TSpectrum3.cxx:941
 TSpectrum3.cxx:942
 TSpectrum3.cxx:943
 TSpectrum3.cxx:944
 TSpectrum3.cxx:945
 TSpectrum3.cxx:946
 TSpectrum3.cxx:947
 TSpectrum3.cxx:948
 TSpectrum3.cxx:949
 TSpectrum3.cxx:950
 TSpectrum3.cxx:951
 TSpectrum3.cxx:952
 TSpectrum3.cxx:953
 TSpectrum3.cxx:954
 TSpectrum3.cxx:955
 TSpectrum3.cxx:956
 TSpectrum3.cxx:957
 TSpectrum3.cxx:958
 TSpectrum3.cxx:959
 TSpectrum3.cxx:960
 TSpectrum3.cxx:961
 TSpectrum3.cxx:962
 TSpectrum3.cxx:963
 TSpectrum3.cxx:964
 TSpectrum3.cxx:965
 TSpectrum3.cxx:966
 TSpectrum3.cxx:967
 TSpectrum3.cxx:968
 TSpectrum3.cxx:969
 TSpectrum3.cxx:970
 TSpectrum3.cxx:971
 TSpectrum3.cxx:972
 TSpectrum3.cxx:973
 TSpectrum3.cxx:974
 TSpectrum3.cxx:975
 TSpectrum3.cxx:976
 TSpectrum3.cxx:977
 TSpectrum3.cxx:978
 TSpectrum3.cxx:979
 TSpectrum3.cxx:980
 TSpectrum3.cxx:981
 TSpectrum3.cxx:982
 TSpectrum3.cxx:983
 TSpectrum3.cxx:984
 TSpectrum3.cxx:985
 TSpectrum3.cxx:986
 TSpectrum3.cxx:987
 TSpectrum3.cxx:988
 TSpectrum3.cxx:989
 TSpectrum3.cxx:990
 TSpectrum3.cxx:991
 TSpectrum3.cxx:992
 TSpectrum3.cxx:993
 TSpectrum3.cxx:994
 TSpectrum3.cxx:995
 TSpectrum3.cxx:996
 TSpectrum3.cxx:997
 TSpectrum3.cxx:998
 TSpectrum3.cxx:999
 TSpectrum3.cxx:1000
 TSpectrum3.cxx:1001
 TSpectrum3.cxx:1002
 TSpectrum3.cxx:1003
 TSpectrum3.cxx:1004
 TSpectrum3.cxx:1005
 TSpectrum3.cxx:1006
 TSpectrum3.cxx:1007
 TSpectrum3.cxx:1008
 TSpectrum3.cxx:1009
 TSpectrum3.cxx:1010
 TSpectrum3.cxx:1011
 TSpectrum3.cxx:1012
 TSpectrum3.cxx:1013
 TSpectrum3.cxx:1014
 TSpectrum3.cxx:1015
 TSpectrum3.cxx:1016
 TSpectrum3.cxx:1017
 TSpectrum3.cxx:1018
 TSpectrum3.cxx:1019
 TSpectrum3.cxx:1020
 TSpectrum3.cxx:1021
 TSpectrum3.cxx:1022
 TSpectrum3.cxx:1023
 TSpectrum3.cxx:1024
 TSpectrum3.cxx:1025
 TSpectrum3.cxx:1026
 TSpectrum3.cxx:1027
 TSpectrum3.cxx:1028
 TSpectrum3.cxx:1029
 TSpectrum3.cxx:1030
 TSpectrum3.cxx:1031
 TSpectrum3.cxx:1032
 TSpectrum3.cxx:1033
 TSpectrum3.cxx:1034
 TSpectrum3.cxx:1035
 TSpectrum3.cxx:1036
 TSpectrum3.cxx:1037
 TSpectrum3.cxx:1038
 TSpectrum3.cxx:1039
 TSpectrum3.cxx:1040
 TSpectrum3.cxx:1041
 TSpectrum3.cxx:1042
 TSpectrum3.cxx:1043
 TSpectrum3.cxx:1044
 TSpectrum3.cxx:1045
 TSpectrum3.cxx:1046
 TSpectrum3.cxx:1047
 TSpectrum3.cxx:1048
 TSpectrum3.cxx:1049
 TSpectrum3.cxx:1050
 TSpectrum3.cxx:1051
 TSpectrum3.cxx:1052
 TSpectrum3.cxx:1053
 TSpectrum3.cxx:1054
 TSpectrum3.cxx:1055
 TSpectrum3.cxx:1056
 TSpectrum3.cxx:1057
 TSpectrum3.cxx:1058
 TSpectrum3.cxx:1059
 TSpectrum3.cxx:1060
 TSpectrum3.cxx:1061
 TSpectrum3.cxx:1062
 TSpectrum3.cxx:1063
 TSpectrum3.cxx:1064
 TSpectrum3.cxx:1065
 TSpectrum3.cxx:1066
 TSpectrum3.cxx:1067
 TSpectrum3.cxx:1068
 TSpectrum3.cxx:1069
 TSpectrum3.cxx:1070
 TSpectrum3.cxx:1071
 TSpectrum3.cxx:1072
 TSpectrum3.cxx:1073
 TSpectrum3.cxx:1074
 TSpectrum3.cxx:1075
 TSpectrum3.cxx:1076
 TSpectrum3.cxx:1077
 TSpectrum3.cxx:1078
 TSpectrum3.cxx:1079
 TSpectrum3.cxx:1080
 TSpectrum3.cxx:1081
 TSpectrum3.cxx:1082
 TSpectrum3.cxx:1083
 TSpectrum3.cxx:1084
 TSpectrum3.cxx:1085
 TSpectrum3.cxx:1086
 TSpectrum3.cxx:1087
 TSpectrum3.cxx:1088
 TSpectrum3.cxx:1089
 TSpectrum3.cxx:1090
 TSpectrum3.cxx:1091
 TSpectrum3.cxx:1092
 TSpectrum3.cxx:1093
 TSpectrum3.cxx:1094
 TSpectrum3.cxx:1095
 TSpectrum3.cxx:1096
 TSpectrum3.cxx:1097
 TSpectrum3.cxx:1098
 TSpectrum3.cxx:1099
 TSpectrum3.cxx:1100
 TSpectrum3.cxx:1101
 TSpectrum3.cxx:1102
 TSpectrum3.cxx:1103
 TSpectrum3.cxx:1104
 TSpectrum3.cxx:1105
 TSpectrum3.cxx:1106
 TSpectrum3.cxx:1107
 TSpectrum3.cxx:1108
 TSpectrum3.cxx:1109
 TSpectrum3.cxx:1110
 TSpectrum3.cxx:1111
 TSpectrum3.cxx:1112
 TSpectrum3.cxx:1113
 TSpectrum3.cxx:1114
 TSpectrum3.cxx:1115
 TSpectrum3.cxx:1116
 TSpectrum3.cxx:1117
 TSpectrum3.cxx:1118
 TSpectrum3.cxx:1119
 TSpectrum3.cxx:1120
 TSpectrum3.cxx:1121
 TSpectrum3.cxx:1122
 TSpectrum3.cxx:1123
 TSpectrum3.cxx:1124
 TSpectrum3.cxx:1125
 TSpectrum3.cxx:1126
 TSpectrum3.cxx:1127
 TSpectrum3.cxx:1128
 TSpectrum3.cxx:1129
 TSpectrum3.cxx:1130
 TSpectrum3.cxx:1131
 TSpectrum3.cxx:1132
 TSpectrum3.cxx:1133
 TSpectrum3.cxx:1134
 TSpectrum3.cxx:1135
 TSpectrum3.cxx:1136
 TSpectrum3.cxx:1137
 TSpectrum3.cxx:1138
 TSpectrum3.cxx:1139
 TSpectrum3.cxx:1140
 TSpectrum3.cxx:1141
 TSpectrum3.cxx:1142
 TSpectrum3.cxx:1143
 TSpectrum3.cxx:1144
 TSpectrum3.cxx:1145
 TSpectrum3.cxx:1146
 TSpectrum3.cxx:1147
 TSpectrum3.cxx:1148
 TSpectrum3.cxx:1149
 TSpectrum3.cxx:1150
 TSpectrum3.cxx:1151
 TSpectrum3.cxx:1152
 TSpectrum3.cxx:1153
 TSpectrum3.cxx:1154
 TSpectrum3.cxx:1155
 TSpectrum3.cxx:1156
 TSpectrum3.cxx:1157
 TSpectrum3.cxx:1158
 TSpectrum3.cxx:1159
 TSpectrum3.cxx:1160
 TSpectrum3.cxx:1161
 TSpectrum3.cxx:1162
 TSpectrum3.cxx:1163
 TSpectrum3.cxx:1164
 TSpectrum3.cxx:1165
 TSpectrum3.cxx:1166
 TSpectrum3.cxx:1167
 TSpectrum3.cxx:1168
 TSpectrum3.cxx:1169
 TSpectrum3.cxx:1170
 TSpectrum3.cxx:1171
 TSpectrum3.cxx:1172
 TSpectrum3.cxx:1173
 TSpectrum3.cxx:1174
 TSpectrum3.cxx:1175
 TSpectrum3.cxx:1176
 TSpectrum3.cxx:1177
 TSpectrum3.cxx:1178
 TSpectrum3.cxx:1179
 TSpectrum3.cxx:1180
 TSpectrum3.cxx:1181
 TSpectrum3.cxx:1182
 TSpectrum3.cxx:1183
 TSpectrum3.cxx:1184
 TSpectrum3.cxx:1185
 TSpectrum3.cxx:1186
 TSpectrum3.cxx:1187
 TSpectrum3.cxx:1188
 TSpectrum3.cxx:1189
 TSpectrum3.cxx:1190
 TSpectrum3.cxx:1191
 TSpectrum3.cxx:1192
 TSpectrum3.cxx:1193
 TSpectrum3.cxx:1194
 TSpectrum3.cxx:1195
 TSpectrum3.cxx:1196
 TSpectrum3.cxx:1197
 TSpectrum3.cxx:1198
 TSpectrum3.cxx:1199
 TSpectrum3.cxx:1200
 TSpectrum3.cxx:1201
 TSpectrum3.cxx:1202
 TSpectrum3.cxx:1203
 TSpectrum3.cxx:1204
 TSpectrum3.cxx:1205
 TSpectrum3.cxx:1206
 TSpectrum3.cxx:1207
 TSpectrum3.cxx:1208
 TSpectrum3.cxx:1209
 TSpectrum3.cxx:1210
 TSpectrum3.cxx:1211
 TSpectrum3.cxx:1212
 TSpectrum3.cxx:1213
 TSpectrum3.cxx:1214
 TSpectrum3.cxx:1215
 TSpectrum3.cxx:1216
 TSpectrum3.cxx:1217
 TSpectrum3.cxx:1218
 TSpectrum3.cxx:1219
 TSpectrum3.cxx:1220
 TSpectrum3.cxx:1221
 TSpectrum3.cxx:1222
 TSpectrum3.cxx:1223
 TSpectrum3.cxx:1224
 TSpectrum3.cxx:1225
 TSpectrum3.cxx:1226
 TSpectrum3.cxx:1227
 TSpectrum3.cxx:1228
 TSpectrum3.cxx:1229
 TSpectrum3.cxx:1230
 TSpectrum3.cxx:1231
 TSpectrum3.cxx:1232
 TSpectrum3.cxx:1233
 TSpectrum3.cxx:1234
 TSpectrum3.cxx:1235
 TSpectrum3.cxx:1236
 TSpectrum3.cxx:1237
 TSpectrum3.cxx:1238
 TSpectrum3.cxx:1239
 TSpectrum3.cxx:1240
 TSpectrum3.cxx:1241
 TSpectrum3.cxx:1242
 TSpectrum3.cxx:1243
 TSpectrum3.cxx:1244
 TSpectrum3.cxx:1245
 TSpectrum3.cxx:1246
 TSpectrum3.cxx:1247
 TSpectrum3.cxx:1248
 TSpectrum3.cxx:1249
 TSpectrum3.cxx:1250
 TSpectrum3.cxx:1251
 TSpectrum3.cxx:1252
 TSpectrum3.cxx:1253
 TSpectrum3.cxx:1254
 TSpectrum3.cxx:1255
 TSpectrum3.cxx:1256
 TSpectrum3.cxx:1257
 TSpectrum3.cxx:1258
 TSpectrum3.cxx:1259
 TSpectrum3.cxx:1260
 TSpectrum3.cxx:1261
 TSpectrum3.cxx:1262
 TSpectrum3.cxx:1263
 TSpectrum3.cxx:1264
 TSpectrum3.cxx:1265
 TSpectrum3.cxx:1266
 TSpectrum3.cxx:1267
 TSpectrum3.cxx:1268
 TSpectrum3.cxx:1269
 TSpectrum3.cxx:1270
 TSpectrum3.cxx:1271
 TSpectrum3.cxx:1272
 TSpectrum3.cxx:1273
 TSpectrum3.cxx:1274
 TSpectrum3.cxx:1275
 TSpectrum3.cxx:1276
 TSpectrum3.cxx:1277
 TSpectrum3.cxx:1278
 TSpectrum3.cxx:1279
 TSpectrum3.cxx:1280
 TSpectrum3.cxx:1281
 TSpectrum3.cxx:1282
 TSpectrum3.cxx:1283
 TSpectrum3.cxx:1284
 TSpectrum3.cxx:1285
 TSpectrum3.cxx:1286
 TSpectrum3.cxx:1287
 TSpectrum3.cxx:1288
 TSpectrum3.cxx:1289
 TSpectrum3.cxx:1290
 TSpectrum3.cxx:1291
 TSpectrum3.cxx:1292
 TSpectrum3.cxx:1293
 TSpectrum3.cxx:1294
 TSpectrum3.cxx:1295
 TSpectrum3.cxx:1296
 TSpectrum3.cxx:1297
 TSpectrum3.cxx:1298
 TSpectrum3.cxx:1299
 TSpectrum3.cxx:1300
 TSpectrum3.cxx:1301
 TSpectrum3.cxx:1302
 TSpectrum3.cxx:1303
 TSpectrum3.cxx:1304
 TSpectrum3.cxx:1305
 TSpectrum3.cxx:1306
 TSpectrum3.cxx:1307
 TSpectrum3.cxx:1308
 TSpectrum3.cxx:1309
 TSpectrum3.cxx:1310
 TSpectrum3.cxx:1311
 TSpectrum3.cxx:1312
 TSpectrum3.cxx:1313
 TSpectrum3.cxx:1314
 TSpectrum3.cxx:1315
 TSpectrum3.cxx:1316
 TSpectrum3.cxx:1317
 TSpectrum3.cxx:1318
 TSpectrum3.cxx:1319
 TSpectrum3.cxx:1320
 TSpectrum3.cxx:1321
 TSpectrum3.cxx:1322
 TSpectrum3.cxx:1323
 TSpectrum3.cxx:1324
 TSpectrum3.cxx:1325
 TSpectrum3.cxx:1326
 TSpectrum3.cxx:1327
 TSpectrum3.cxx:1328
 TSpectrum3.cxx:1329
 TSpectrum3.cxx:1330
 TSpectrum3.cxx:1331
 TSpectrum3.cxx:1332
 TSpectrum3.cxx:1333
 TSpectrum3.cxx:1334
 TSpectrum3.cxx:1335
 TSpectrum3.cxx:1336
 TSpectrum3.cxx:1337
 TSpectrum3.cxx:1338
 TSpectrum3.cxx:1339
 TSpectrum3.cxx:1340
 TSpectrum3.cxx:1341
 TSpectrum3.cxx:1342
 TSpectrum3.cxx:1343
 TSpectrum3.cxx:1344
 TSpectrum3.cxx:1345
 TSpectrum3.cxx:1346
 TSpectrum3.cxx:1347
 TSpectrum3.cxx:1348
 TSpectrum3.cxx:1349
 TSpectrum3.cxx:1350
 TSpectrum3.cxx:1351
 TSpectrum3.cxx:1352
 TSpectrum3.cxx:1353
 TSpectrum3.cxx:1354
 TSpectrum3.cxx:1355
 TSpectrum3.cxx:1356
 TSpectrum3.cxx:1357
 TSpectrum3.cxx:1358
 TSpectrum3.cxx:1359
 TSpectrum3.cxx:1360
 TSpectrum3.cxx:1361
 TSpectrum3.cxx:1362
 TSpectrum3.cxx:1363
 TSpectrum3.cxx:1364
 TSpectrum3.cxx:1365
 TSpectrum3.cxx:1366
 TSpectrum3.cxx:1367
 TSpectrum3.cxx:1368
 TSpectrum3.cxx:1369
 TSpectrum3.cxx:1370
 TSpectrum3.cxx:1371
 TSpectrum3.cxx:1372
 TSpectrum3.cxx:1373
 TSpectrum3.cxx:1374
 TSpectrum3.cxx:1375
 TSpectrum3.cxx:1376
 TSpectrum3.cxx:1377
 TSpectrum3.cxx:1378
 TSpectrum3.cxx:1379
 TSpectrum3.cxx:1380
 TSpectrum3.cxx:1381
 TSpectrum3.cxx:1382
 TSpectrum3.cxx:1383
 TSpectrum3.cxx:1384
 TSpectrum3.cxx:1385
 TSpectrum3.cxx:1386
 TSpectrum3.cxx:1387
 TSpectrum3.cxx:1388
 TSpectrum3.cxx:1389
 TSpectrum3.cxx:1390
 TSpectrum3.cxx:1391
 TSpectrum3.cxx:1392
 TSpectrum3.cxx:1393
 TSpectrum3.cxx:1394
 TSpectrum3.cxx:1395
 TSpectrum3.cxx:1396
 TSpectrum3.cxx:1397
 TSpectrum3.cxx:1398
 TSpectrum3.cxx:1399
 TSpectrum3.cxx:1400
 TSpectrum3.cxx:1401
 TSpectrum3.cxx:1402
 TSpectrum3.cxx:1403
 TSpectrum3.cxx:1404
 TSpectrum3.cxx:1405
 TSpectrum3.cxx:1406
 TSpectrum3.cxx:1407
 TSpectrum3.cxx:1408
 TSpectrum3.cxx:1409
 TSpectrum3.cxx:1410
 TSpectrum3.cxx:1411
 TSpectrum3.cxx:1412
 TSpectrum3.cxx:1413
 TSpectrum3.cxx:1414
 TSpectrum3.cxx:1415
 TSpectrum3.cxx:1416
 TSpectrum3.cxx:1417
 TSpectrum3.cxx:1418
 TSpectrum3.cxx:1419
 TSpectrum3.cxx:1420
 TSpectrum3.cxx:1421
 TSpectrum3.cxx:1422
 TSpectrum3.cxx:1423
 TSpectrum3.cxx:1424
 TSpectrum3.cxx:1425
 TSpectrum3.cxx:1426
 TSpectrum3.cxx:1427
 TSpectrum3.cxx:1428
 TSpectrum3.cxx:1429
 TSpectrum3.cxx:1430
 TSpectrum3.cxx:1431
 TSpectrum3.cxx:1432
 TSpectrum3.cxx:1433
 TSpectrum3.cxx:1434
 TSpectrum3.cxx:1435
 TSpectrum3.cxx:1436
 TSpectrum3.cxx:1437
 TSpectrum3.cxx:1438
 TSpectrum3.cxx:1439
 TSpectrum3.cxx:1440
 TSpectrum3.cxx:1441
 TSpectrum3.cxx:1442
 TSpectrum3.cxx:1443
 TSpectrum3.cxx:1444
 TSpectrum3.cxx:1445
 TSpectrum3.cxx:1446
 TSpectrum3.cxx:1447
 TSpectrum3.cxx:1448
 TSpectrum3.cxx:1449
 TSpectrum3.cxx:1450
 TSpectrum3.cxx:1451
 TSpectrum3.cxx:1452
 TSpectrum3.cxx:1453
 TSpectrum3.cxx:1454
 TSpectrum3.cxx:1455
 TSpectrum3.cxx:1456
 TSpectrum3.cxx:1457
 TSpectrum3.cxx:1458
 TSpectrum3.cxx:1459
 TSpectrum3.cxx:1460
 TSpectrum3.cxx:1461
 TSpectrum3.cxx:1462
 TSpectrum3.cxx:1463
 TSpectrum3.cxx:1464
 TSpectrum3.cxx:1465
 TSpectrum3.cxx:1466
 TSpectrum3.cxx:1467
 TSpectrum3.cxx:1468
 TSpectrum3.cxx:1469
 TSpectrum3.cxx:1470
 TSpectrum3.cxx:1471
 TSpectrum3.cxx:1472
 TSpectrum3.cxx:1473
 TSpectrum3.cxx:1474
 TSpectrum3.cxx:1475
 TSpectrum3.cxx:1476
 TSpectrum3.cxx:1477
 TSpectrum3.cxx:1478
 TSpectrum3.cxx:1479
 TSpectrum3.cxx:1480
 TSpectrum3.cxx:1481
 TSpectrum3.cxx:1482
 TSpectrum3.cxx:1483
 TSpectrum3.cxx:1484
 TSpectrum3.cxx:1485
 TSpectrum3.cxx:1486
 TSpectrum3.cxx:1487
 TSpectrum3.cxx:1488
 TSpectrum3.cxx:1489
 TSpectrum3.cxx:1490
 TSpectrum3.cxx:1491
 TSpectrum3.cxx:1492
 TSpectrum3.cxx:1493
 TSpectrum3.cxx:1494
 TSpectrum3.cxx:1495
 TSpectrum3.cxx:1496
 TSpectrum3.cxx:1497
 TSpectrum3.cxx:1498
 TSpectrum3.cxx:1499
 TSpectrum3.cxx:1500
 TSpectrum3.cxx:1501
 TSpectrum3.cxx:1502
 TSpectrum3.cxx:1503
 TSpectrum3.cxx:1504
 TSpectrum3.cxx:1505
 TSpectrum3.cxx:1506
 TSpectrum3.cxx:1507
 TSpectrum3.cxx:1508
 TSpectrum3.cxx:1509
 TSpectrum3.cxx:1510
 TSpectrum3.cxx:1511
 TSpectrum3.cxx:1512
 TSpectrum3.cxx:1513
 TSpectrum3.cxx:1514
 TSpectrum3.cxx:1515
 TSpectrum3.cxx:1516
 TSpectrum3.cxx:1517
 TSpectrum3.cxx:1518
 TSpectrum3.cxx:1519
 TSpectrum3.cxx:1520
 TSpectrum3.cxx:1521
 TSpectrum3.cxx:1522
 TSpectrum3.cxx:1523
 TSpectrum3.cxx:1524
 TSpectrum3.cxx:1525
 TSpectrum3.cxx:1526
 TSpectrum3.cxx:1527
 TSpectrum3.cxx:1528
 TSpectrum3.cxx:1529
 TSpectrum3.cxx:1530
 TSpectrum3.cxx:1531
 TSpectrum3.cxx:1532
 TSpectrum3.cxx:1533
 TSpectrum3.cxx:1534
 TSpectrum3.cxx:1535
 TSpectrum3.cxx:1536
 TSpectrum3.cxx:1537
 TSpectrum3.cxx:1538
 TSpectrum3.cxx:1539
 TSpectrum3.cxx:1540
 TSpectrum3.cxx:1541
 TSpectrum3.cxx:1542
 TSpectrum3.cxx:1543
 TSpectrum3.cxx:1544
 TSpectrum3.cxx:1545
 TSpectrum3.cxx:1546
 TSpectrum3.cxx:1547
 TSpectrum3.cxx:1548
 TSpectrum3.cxx:1549
 TSpectrum3.cxx:1550
 TSpectrum3.cxx:1551
 TSpectrum3.cxx:1552
 TSpectrum3.cxx:1553
 TSpectrum3.cxx:1554
 TSpectrum3.cxx:1555
 TSpectrum3.cxx:1556
 TSpectrum3.cxx:1557
 TSpectrum3.cxx:1558
 TSpectrum3.cxx:1559
 TSpectrum3.cxx:1560
 TSpectrum3.cxx:1561
 TSpectrum3.cxx:1562
 TSpectrum3.cxx:1563
 TSpectrum3.cxx:1564
 TSpectrum3.cxx:1565
 TSpectrum3.cxx:1566
 TSpectrum3.cxx:1567
 TSpectrum3.cxx:1568
 TSpectrum3.cxx:1569
 TSpectrum3.cxx:1570
 TSpectrum3.cxx:1571
 TSpectrum3.cxx:1572
 TSpectrum3.cxx:1573
 TSpectrum3.cxx:1574
 TSpectrum3.cxx:1575
 TSpectrum3.cxx:1576
 TSpectrum3.cxx:1577
 TSpectrum3.cxx:1578
 TSpectrum3.cxx:1579
 TSpectrum3.cxx:1580
 TSpectrum3.cxx:1581
 TSpectrum3.cxx:1582
 TSpectrum3.cxx:1583
 TSpectrum3.cxx:1584
 TSpectrum3.cxx:1585
 TSpectrum3.cxx:1586
 TSpectrum3.cxx:1587
 TSpectrum3.cxx:1588
 TSpectrum3.cxx:1589
 TSpectrum3.cxx:1590
 TSpectrum3.cxx:1591
 TSpectrum3.cxx:1592
 TSpectrum3.cxx:1593
 TSpectrum3.cxx:1594
 TSpectrum3.cxx:1595
 TSpectrum3.cxx:1596
 TSpectrum3.cxx:1597
 TSpectrum3.cxx:1598
 TSpectrum3.cxx:1599
 TSpectrum3.cxx:1600
 TSpectrum3.cxx:1601
 TSpectrum3.cxx:1602
 TSpectrum3.cxx:1603
 TSpectrum3.cxx:1604
 TSpectrum3.cxx:1605
 TSpectrum3.cxx:1606
 TSpectrum3.cxx:1607
 TSpectrum3.cxx:1608
 TSpectrum3.cxx:1609
 TSpectrum3.cxx:1610
 TSpectrum3.cxx:1611
 TSpectrum3.cxx:1612
 TSpectrum3.cxx:1613
 TSpectrum3.cxx:1614
 TSpectrum3.cxx:1615
 TSpectrum3.cxx:1616
 TSpectrum3.cxx:1617
 TSpectrum3.cxx:1618
 TSpectrum3.cxx:1619
 TSpectrum3.cxx:1620
 TSpectrum3.cxx:1621
 TSpectrum3.cxx:1622
 TSpectrum3.cxx:1623
 TSpectrum3.cxx:1624
 TSpectrum3.cxx:1625
 TSpectrum3.cxx:1626
 TSpectrum3.cxx:1627
 TSpectrum3.cxx:1628
 TSpectrum3.cxx:1629
 TSpectrum3.cxx:1630
 TSpectrum3.cxx:1631
 TSpectrum3.cxx:1632
 TSpectrum3.cxx:1633
 TSpectrum3.cxx:1634
 TSpectrum3.cxx:1635
 TSpectrum3.cxx:1636
 TSpectrum3.cxx:1637
 TSpectrum3.cxx:1638
 TSpectrum3.cxx:1639
 TSpectrum3.cxx:1640
 TSpectrum3.cxx:1641
 TSpectrum3.cxx:1642
 TSpectrum3.cxx:1643
 TSpectrum3.cxx:1644
 TSpectrum3.cxx:1645
 TSpectrum3.cxx:1646
 TSpectrum3.cxx:1647
 TSpectrum3.cxx:1648
 TSpectrum3.cxx:1649
 TSpectrum3.cxx:1650
 TSpectrum3.cxx:1651
 TSpectrum3.cxx:1652
 TSpectrum3.cxx:1653
 TSpectrum3.cxx:1654
 TSpectrum3.cxx:1655
 TSpectrum3.cxx:1656
 TSpectrum3.cxx:1657
 TSpectrum3.cxx:1658
 TSpectrum3.cxx:1659
 TSpectrum3.cxx:1660
 TSpectrum3.cxx:1661
 TSpectrum3.cxx:1662
 TSpectrum3.cxx:1663
 TSpectrum3.cxx:1664
 TSpectrum3.cxx:1665
 TSpectrum3.cxx:1666
 TSpectrum3.cxx:1667
 TSpectrum3.cxx:1668
 TSpectrum3.cxx:1669
 TSpectrum3.cxx:1670
 TSpectrum3.cxx:1671
 TSpectrum3.cxx:1672
 TSpectrum3.cxx:1673
 TSpectrum3.cxx:1674
 TSpectrum3.cxx:1675
 TSpectrum3.cxx:1676
 TSpectrum3.cxx:1677
 TSpectrum3.cxx:1678
 TSpectrum3.cxx:1679
 TSpectrum3.cxx:1680
 TSpectrum3.cxx:1681
 TSpectrum3.cxx:1682
 TSpectrum3.cxx:1683
 TSpectrum3.cxx:1684
 TSpectrum3.cxx:1685
 TSpectrum3.cxx:1686
 TSpectrum3.cxx:1687
 TSpectrum3.cxx:1688
 TSpectrum3.cxx:1689
 TSpectrum3.cxx:1690
 TSpectrum3.cxx:1691
 TSpectrum3.cxx:1692
 TSpectrum3.cxx:1693
 TSpectrum3.cxx:1694
 TSpectrum3.cxx:1695
 TSpectrum3.cxx:1696
 TSpectrum3.cxx:1697
 TSpectrum3.cxx:1698
 TSpectrum3.cxx:1699
 TSpectrum3.cxx:1700
 TSpectrum3.cxx:1701
 TSpectrum3.cxx:1702
 TSpectrum3.cxx:1703
 TSpectrum3.cxx:1704
 TSpectrum3.cxx:1705
 TSpectrum3.cxx:1706
 TSpectrum3.cxx:1707
 TSpectrum3.cxx:1708
 TSpectrum3.cxx:1709
 TSpectrum3.cxx:1710
 TSpectrum3.cxx:1711
 TSpectrum3.cxx:1712
 TSpectrum3.cxx:1713
 TSpectrum3.cxx:1714
 TSpectrum3.cxx:1715
 TSpectrum3.cxx:1716
 TSpectrum3.cxx:1717
 TSpectrum3.cxx:1718
 TSpectrum3.cxx:1719
 TSpectrum3.cxx:1720
 TSpectrum3.cxx:1721
 TSpectrum3.cxx:1722
 TSpectrum3.cxx:1723
 TSpectrum3.cxx:1724
 TSpectrum3.cxx:1725
 TSpectrum3.cxx:1726
 TSpectrum3.cxx:1727
 TSpectrum3.cxx:1728
 TSpectrum3.cxx:1729
 TSpectrum3.cxx:1730
 TSpectrum3.cxx:1731
 TSpectrum3.cxx:1732
 TSpectrum3.cxx:1733
 TSpectrum3.cxx:1734
 TSpectrum3.cxx:1735
 TSpectrum3.cxx:1736
 TSpectrum3.cxx:1737
 TSpectrum3.cxx:1738
 TSpectrum3.cxx:1739
 TSpectrum3.cxx:1740
 TSpectrum3.cxx:1741
 TSpectrum3.cxx:1742
 TSpectrum3.cxx:1743
 TSpectrum3.cxx:1744
 TSpectrum3.cxx:1745
 TSpectrum3.cxx:1746
 TSpectrum3.cxx:1747
 TSpectrum3.cxx:1748
 TSpectrum3.cxx:1749
 TSpectrum3.cxx:1750
 TSpectrum3.cxx:1751
 TSpectrum3.cxx:1752
 TSpectrum3.cxx:1753
 TSpectrum3.cxx:1754
 TSpectrum3.cxx:1755
 TSpectrum3.cxx:1756
 TSpectrum3.cxx:1757
 TSpectrum3.cxx:1758
 TSpectrum3.cxx:1759
 TSpectrum3.cxx:1760
 TSpectrum3.cxx:1761
 TSpectrum3.cxx:1762
 TSpectrum3.cxx:1763
 TSpectrum3.cxx:1764
 TSpectrum3.cxx:1765
 TSpectrum3.cxx:1766
 TSpectrum3.cxx:1767
 TSpectrum3.cxx:1768
 TSpectrum3.cxx:1769
 TSpectrum3.cxx:1770
 TSpectrum3.cxx:1771
 TSpectrum3.cxx:1772
 TSpectrum3.cxx:1773
 TSpectrum3.cxx:1774
 TSpectrum3.cxx:1775
 TSpectrum3.cxx:1776
 TSpectrum3.cxx:1777
 TSpectrum3.cxx:1778
 TSpectrum3.cxx:1779
 TSpectrum3.cxx:1780
 TSpectrum3.cxx:1781
 TSpectrum3.cxx:1782
 TSpectrum3.cxx:1783
 TSpectrum3.cxx:1784
 TSpectrum3.cxx:1785
 TSpectrum3.cxx:1786
 TSpectrum3.cxx:1787
 TSpectrum3.cxx:1788
 TSpectrum3.cxx:1789
 TSpectrum3.cxx:1790
 TSpectrum3.cxx:1791
 TSpectrum3.cxx:1792
 TSpectrum3.cxx:1793
 TSpectrum3.cxx:1794
 TSpectrum3.cxx:1795
 TSpectrum3.cxx:1796
 TSpectrum3.cxx:1797
 TSpectrum3.cxx:1798
 TSpectrum3.cxx:1799
 TSpectrum3.cxx:1800
 TSpectrum3.cxx:1801
 TSpectrum3.cxx:1802
 TSpectrum3.cxx:1803
 TSpectrum3.cxx:1804
 TSpectrum3.cxx:1805
 TSpectrum3.cxx:1806
 TSpectrum3.cxx:1807
 TSpectrum3.cxx:1808
 TSpectrum3.cxx:1809
 TSpectrum3.cxx:1810
 TSpectrum3.cxx:1811
 TSpectrum3.cxx:1812
 TSpectrum3.cxx:1813
 TSpectrum3.cxx:1814
 TSpectrum3.cxx:1815
 TSpectrum3.cxx:1816
 TSpectrum3.cxx:1817
 TSpectrum3.cxx:1818
 TSpectrum3.cxx:1819
 TSpectrum3.cxx:1820
 TSpectrum3.cxx:1821
 TSpectrum3.cxx:1822
 TSpectrum3.cxx:1823
 TSpectrum3.cxx:1824
 TSpectrum3.cxx:1825
 TSpectrum3.cxx:1826
 TSpectrum3.cxx:1827
 TSpectrum3.cxx:1828
 TSpectrum3.cxx:1829
 TSpectrum3.cxx:1830
 TSpectrum3.cxx:1831
 TSpectrum3.cxx:1832
 TSpectrum3.cxx:1833
 TSpectrum3.cxx:1834
 TSpectrum3.cxx:1835
 TSpectrum3.cxx:1836
 TSpectrum3.cxx:1837
 TSpectrum3.cxx:1838
 TSpectrum3.cxx:1839
 TSpectrum3.cxx:1840
 TSpectrum3.cxx:1841
 TSpectrum3.cxx:1842
 TSpectrum3.cxx:1843
 TSpectrum3.cxx:1844
 TSpectrum3.cxx:1845
 TSpectrum3.cxx:1846
 TSpectrum3.cxx:1847
 TSpectrum3.cxx:1848
 TSpectrum3.cxx:1849
 TSpectrum3.cxx:1850
 TSpectrum3.cxx:1851
 TSpectrum3.cxx:1852
 TSpectrum3.cxx:1853
 TSpectrum3.cxx:1854
 TSpectrum3.cxx:1855
 TSpectrum3.cxx:1856
 TSpectrum3.cxx:1857
 TSpectrum3.cxx:1858
 TSpectrum3.cxx:1859
 TSpectrum3.cxx:1860
 TSpectrum3.cxx:1861
 TSpectrum3.cxx:1862
 TSpectrum3.cxx:1863
 TSpectrum3.cxx:1864
 TSpectrum3.cxx:1865
 TSpectrum3.cxx:1866
 TSpectrum3.cxx:1867
 TSpectrum3.cxx:1868
 TSpectrum3.cxx:1869
 TSpectrum3.cxx:1870
 TSpectrum3.cxx:1871
 TSpectrum3.cxx:1872
 TSpectrum3.cxx:1873
 TSpectrum3.cxx:1874
 TSpectrum3.cxx:1875
 TSpectrum3.cxx:1876
 TSpectrum3.cxx:1877
 TSpectrum3.cxx:1878
 TSpectrum3.cxx:1879
 TSpectrum3.cxx:1880
 TSpectrum3.cxx:1881
 TSpectrum3.cxx:1882
 TSpectrum3.cxx:1883
 TSpectrum3.cxx:1884
 TSpectrum3.cxx:1885
 TSpectrum3.cxx:1886
 TSpectrum3.cxx:1887
 TSpectrum3.cxx:1888
 TSpectrum3.cxx:1889
 TSpectrum3.cxx:1890
 TSpectrum3.cxx:1891
 TSpectrum3.cxx:1892
 TSpectrum3.cxx:1893
 TSpectrum3.cxx:1894
 TSpectrum3.cxx:1895
 TSpectrum3.cxx:1896
 TSpectrum3.cxx:1897
 TSpectrum3.cxx:1898
 TSpectrum3.cxx:1899
 TSpectrum3.cxx:1900
 TSpectrum3.cxx:1901
 TSpectrum3.cxx:1902
 TSpectrum3.cxx:1903
 TSpectrum3.cxx:1904
 TSpectrum3.cxx:1905
 TSpectrum3.cxx:1906
 TSpectrum3.cxx:1907
 TSpectrum3.cxx:1908
 TSpectrum3.cxx:1909
 TSpectrum3.cxx:1910
 TSpectrum3.cxx:1911
 TSpectrum3.cxx:1912
 TSpectrum3.cxx:1913
 TSpectrum3.cxx:1914
 TSpectrum3.cxx:1915
 TSpectrum3.cxx:1916
 TSpectrum3.cxx:1917
 TSpectrum3.cxx:1918
 TSpectrum3.cxx:1919
 TSpectrum3.cxx:1920
 TSpectrum3.cxx:1921
 TSpectrum3.cxx:1922
 TSpectrum3.cxx:1923
 TSpectrum3.cxx:1924
 TSpectrum3.cxx:1925
 TSpectrum3.cxx:1926
 TSpectrum3.cxx:1927
 TSpectrum3.cxx:1928
 TSpectrum3.cxx:1929
 TSpectrum3.cxx:1930
 TSpectrum3.cxx:1931
 TSpectrum3.cxx:1932
 TSpectrum3.cxx:1933
 TSpectrum3.cxx:1934
 TSpectrum3.cxx:1935
 TSpectrum3.cxx:1936
 TSpectrum3.cxx:1937
 TSpectrum3.cxx:1938
 TSpectrum3.cxx:1939
 TSpectrum3.cxx:1940
 TSpectrum3.cxx:1941
 TSpectrum3.cxx:1942
 TSpectrum3.cxx:1943
 TSpectrum3.cxx:1944
 TSpectrum3.cxx:1945
 TSpectrum3.cxx:1946
 TSpectrum3.cxx:1947
 TSpectrum3.cxx:1948
 TSpectrum3.cxx:1949
 TSpectrum3.cxx:1950
 TSpectrum3.cxx:1951
 TSpectrum3.cxx:1952
 TSpectrum3.cxx:1953
 TSpectrum3.cxx:1954
 TSpectrum3.cxx:1955
 TSpectrum3.cxx:1956
 TSpectrum3.cxx:1957
 TSpectrum3.cxx:1958
 TSpectrum3.cxx:1959
 TSpectrum3.cxx:1960
 TSpectrum3.cxx:1961
 TSpectrum3.cxx:1962
 TSpectrum3.cxx:1963
 TSpectrum3.cxx:1964
 TSpectrum3.cxx:1965
 TSpectrum3.cxx:1966
 TSpectrum3.cxx:1967
 TSpectrum3.cxx:1968
 TSpectrum3.cxx:1969
 TSpectrum3.cxx:1970
 TSpectrum3.cxx:1971
 TSpectrum3.cxx:1972
 TSpectrum3.cxx:1973
 TSpectrum3.cxx:1974
 TSpectrum3.cxx:1975
 TSpectrum3.cxx:1976
 TSpectrum3.cxx:1977
 TSpectrum3.cxx:1978
 TSpectrum3.cxx:1979
 TSpectrum3.cxx:1980
 TSpectrum3.cxx:1981
 TSpectrum3.cxx:1982
 TSpectrum3.cxx:1983
 TSpectrum3.cxx:1984
 TSpectrum3.cxx:1985
 TSpectrum3.cxx:1986
 TSpectrum3.cxx:1987
 TSpectrum3.cxx:1988
 TSpectrum3.cxx:1989
 TSpectrum3.cxx:1990
 TSpectrum3.cxx:1991
 TSpectrum3.cxx:1992
 TSpectrum3.cxx:1993
 TSpectrum3.cxx:1994
 TSpectrum3.cxx:1995
 TSpectrum3.cxx:1996
 TSpectrum3.cxx:1997
 TSpectrum3.cxx:1998
 TSpectrum3.cxx:1999
 TSpectrum3.cxx:2000
 TSpectrum3.cxx:2001
 TSpectrum3.cxx:2002
 TSpectrum3.cxx:2003
 TSpectrum3.cxx:2004
 TSpectrum3.cxx:2005
 TSpectrum3.cxx:2006
 TSpectrum3.cxx:2007
 TSpectrum3.cxx:2008
 TSpectrum3.cxx:2009
 TSpectrum3.cxx:2010
 TSpectrum3.cxx:2011
 TSpectrum3.cxx:2012
 TSpectrum3.cxx:2013
 TSpectrum3.cxx:2014
 TSpectrum3.cxx:2015
 TSpectrum3.cxx:2016
 TSpectrum3.cxx:2017
 TSpectrum3.cxx:2018
 TSpectrum3.cxx:2019
 TSpectrum3.cxx:2020
 TSpectrum3.cxx:2021
 TSpectrum3.cxx:2022
 TSpectrum3.cxx:2023
 TSpectrum3.cxx:2024
 TSpectrum3.cxx:2025
 TSpectrum3.cxx:2026
 TSpectrum3.cxx:2027
 TSpectrum3.cxx:2028
 TSpectrum3.cxx:2029
 TSpectrum3.cxx:2030
 TSpectrum3.cxx:2031
 TSpectrum3.cxx:2032
 TSpectrum3.cxx:2033
 TSpectrum3.cxx:2034
 TSpectrum3.cxx:2035
 TSpectrum3.cxx:2036
 TSpectrum3.cxx:2037
 TSpectrum3.cxx:2038
 TSpectrum3.cxx:2039
 TSpectrum3.cxx:2040
 TSpectrum3.cxx:2041
 TSpectrum3.cxx:2042
 TSpectrum3.cxx:2043
 TSpectrum3.cxx:2044
 TSpectrum3.cxx:2045
 TSpectrum3.cxx:2046
 TSpectrum3.cxx:2047
 TSpectrum3.cxx:2048
 TSpectrum3.cxx:2049
 TSpectrum3.cxx:2050
 TSpectrum3.cxx:2051
 TSpectrum3.cxx:2052
 TSpectrum3.cxx:2053
 TSpectrum3.cxx:2054
 TSpectrum3.cxx:2055
 TSpectrum3.cxx:2056
 TSpectrum3.cxx:2057
 TSpectrum3.cxx:2058
 TSpectrum3.cxx:2059
 TSpectrum3.cxx:2060
 TSpectrum3.cxx:2061
 TSpectrum3.cxx:2062
 TSpectrum3.cxx:2063
 TSpectrum3.cxx:2064
 TSpectrum3.cxx:2065
 TSpectrum3.cxx:2066
 TSpectrum3.cxx:2067
 TSpectrum3.cxx:2068
 TSpectrum3.cxx:2069
 TSpectrum3.cxx:2070
 TSpectrum3.cxx:2071
 TSpectrum3.cxx:2072
 TSpectrum3.cxx:2073
 TSpectrum3.cxx:2074
 TSpectrum3.cxx:2075
 TSpectrum3.cxx:2076
 TSpectrum3.cxx:2077
 TSpectrum3.cxx:2078
 TSpectrum3.cxx:2079
 TSpectrum3.cxx:2080
 TSpectrum3.cxx:2081
 TSpectrum3.cxx:2082
 TSpectrum3.cxx:2083
 TSpectrum3.cxx:2084
 TSpectrum3.cxx:2085
 TSpectrum3.cxx:2086
 TSpectrum3.cxx:2087
 TSpectrum3.cxx:2088
 TSpectrum3.cxx:2089
 TSpectrum3.cxx:2090
 TSpectrum3.cxx:2091
 TSpectrum3.cxx:2092
 TSpectrum3.cxx:2093
 TSpectrum3.cxx:2094
 TSpectrum3.cxx:2095
 TSpectrum3.cxx:2096
 TSpectrum3.cxx:2097
 TSpectrum3.cxx:2098
 TSpectrum3.cxx:2099
 TSpectrum3.cxx:2100
 TSpectrum3.cxx:2101
 TSpectrum3.cxx:2102
 TSpectrum3.cxx:2103
 TSpectrum3.cxx:2104
 TSpectrum3.cxx:2105
 TSpectrum3.cxx:2106
 TSpectrum3.cxx:2107
 TSpectrum3.cxx:2108
 TSpectrum3.cxx:2109
 TSpectrum3.cxx:2110
 TSpectrum3.cxx:2111
 TSpectrum3.cxx:2112
 TSpectrum3.cxx:2113
 TSpectrum3.cxx:2114
 TSpectrum3.cxx:2115
 TSpectrum3.cxx:2116
 TSpectrum3.cxx:2117
 TSpectrum3.cxx:2118
 TSpectrum3.cxx:2119
 TSpectrum3.cxx:2120
 TSpectrum3.cxx:2121
 TSpectrum3.cxx:2122
 TSpectrum3.cxx:2123
 TSpectrum3.cxx:2124
 TSpectrum3.cxx:2125
 TSpectrum3.cxx:2126
 TSpectrum3.cxx:2127
 TSpectrum3.cxx:2128
 TSpectrum3.cxx:2129
 TSpectrum3.cxx:2130
 TSpectrum3.cxx:2131
 TSpectrum3.cxx:2132
 TSpectrum3.cxx:2133
 TSpectrum3.cxx:2134
 TSpectrum3.cxx:2135
 TSpectrum3.cxx:2136
 TSpectrum3.cxx:2137
 TSpectrum3.cxx:2138
 TSpectrum3.cxx:2139
 TSpectrum3.cxx:2140
 TSpectrum3.cxx:2141
 TSpectrum3.cxx:2142
 TSpectrum3.cxx:2143
 TSpectrum3.cxx:2144
 TSpectrum3.cxx:2145
 TSpectrum3.cxx:2146
 TSpectrum3.cxx:2147
 TSpectrum3.cxx:2148
 TSpectrum3.cxx:2149
 TSpectrum3.cxx:2150
 TSpectrum3.cxx:2151
 TSpectrum3.cxx:2152
 TSpectrum3.cxx:2153
 TSpectrum3.cxx:2154
 TSpectrum3.cxx:2155
 TSpectrum3.cxx:2156
 TSpectrum3.cxx:2157
 TSpectrum3.cxx:2158
 TSpectrum3.cxx:2159
 TSpectrum3.cxx:2160
 TSpectrum3.cxx:2161
 TSpectrum3.cxx:2162
 TSpectrum3.cxx:2163
 TSpectrum3.cxx:2164
 TSpectrum3.cxx:2165
 TSpectrum3.cxx:2166
 TSpectrum3.cxx:2167
 TSpectrum3.cxx:2168
 TSpectrum3.cxx:2169
 TSpectrum3.cxx:2170
 TSpectrum3.cxx:2171
 TSpectrum3.cxx:2172
 TSpectrum3.cxx:2173
 TSpectrum3.cxx:2174
 TSpectrum3.cxx:2175
 TSpectrum3.cxx:2176
 TSpectrum3.cxx:2177
 TSpectrum3.cxx:2178
 TSpectrum3.cxx:2179
 TSpectrum3.cxx:2180
 TSpectrum3.cxx:2181
 TSpectrum3.cxx:2182
 TSpectrum3.cxx:2183
 TSpectrum3.cxx:2184
 TSpectrum3.cxx:2185
 TSpectrum3.cxx:2186
 TSpectrum3.cxx:2187
 TSpectrum3.cxx:2188
 TSpectrum3.cxx:2189
 TSpectrum3.cxx:2190
 TSpectrum3.cxx:2191
 TSpectrum3.cxx:2192
 TSpectrum3.cxx:2193
 TSpectrum3.cxx:2194
 TSpectrum3.cxx:2195
 TSpectrum3.cxx:2196
 TSpectrum3.cxx:2197
 TSpectrum3.cxx:2198
 TSpectrum3.cxx:2199
 TSpectrum3.cxx:2200
 TSpectrum3.cxx:2201
 TSpectrum3.cxx:2202
 TSpectrum3.cxx:2203
 TSpectrum3.cxx:2204
 TSpectrum3.cxx:2205
 TSpectrum3.cxx:2206
 TSpectrum3.cxx:2207
 TSpectrum3.cxx:2208
 TSpectrum3.cxx:2209
 TSpectrum3.cxx:2210
 TSpectrum3.cxx:2211
 TSpectrum3.cxx:2212
 TSpectrum3.cxx:2213
 TSpectrum3.cxx:2214
 TSpectrum3.cxx:2215
 TSpectrum3.cxx:2216
 TSpectrum3.cxx:2217
 TSpectrum3.cxx:2218
 TSpectrum3.cxx:2219
 TSpectrum3.cxx:2220
 TSpectrum3.cxx:2221
 TSpectrum3.cxx:2222
 TSpectrum3.cxx:2223
 TSpectrum3.cxx:2224
 TSpectrum3.cxx:2225
 TSpectrum3.cxx:2226
 TSpectrum3.cxx:2227
 TSpectrum3.cxx:2228
 TSpectrum3.cxx:2229
 TSpectrum3.cxx:2230
 TSpectrum3.cxx:2231
 TSpectrum3.cxx:2232
 TSpectrum3.cxx:2233
 TSpectrum3.cxx:2234
 TSpectrum3.cxx:2235
 TSpectrum3.cxx:2236
 TSpectrum3.cxx:2237
 TSpectrum3.cxx:2238
 TSpectrum3.cxx:2239
 TSpectrum3.cxx:2240
 TSpectrum3.cxx:2241
 TSpectrum3.cxx:2242
 TSpectrum3.cxx:2243
 TSpectrum3.cxx:2244
 TSpectrum3.cxx:2245
 TSpectrum3.cxx:2246
 TSpectrum3.cxx:2247
 TSpectrum3.cxx:2248
 TSpectrum3.cxx:2249
 TSpectrum3.cxx:2250
 TSpectrum3.cxx:2251
 TSpectrum3.cxx:2252
 TSpectrum3.cxx:2253
 TSpectrum3.cxx:2254
 TSpectrum3.cxx:2255
 TSpectrum3.cxx:2256
 TSpectrum3.cxx:2257
 TSpectrum3.cxx:2258
 TSpectrum3.cxx:2259
 TSpectrum3.cxx:2260
 TSpectrum3.cxx:2261
 TSpectrum3.cxx:2262
 TSpectrum3.cxx:2263
 TSpectrum3.cxx:2264
 TSpectrum3.cxx:2265
 TSpectrum3.cxx:2266
 TSpectrum3.cxx:2267
 TSpectrum3.cxx:2268
 TSpectrum3.cxx:2269
 TSpectrum3.cxx:2270
 TSpectrum3.cxx:2271
 TSpectrum3.cxx:2272
 TSpectrum3.cxx:2273
 TSpectrum3.cxx:2274
 TSpectrum3.cxx:2275
 TSpectrum3.cxx:2276
 TSpectrum3.cxx:2277
 TSpectrum3.cxx:2278
 TSpectrum3.cxx:2279
 TSpectrum3.cxx:2280
 TSpectrum3.cxx:2281
 TSpectrum3.cxx:2282
 TSpectrum3.cxx:2283
 TSpectrum3.cxx:2284
 TSpectrum3.cxx:2285
 TSpectrum3.cxx:2286
 TSpectrum3.cxx:2287
 TSpectrum3.cxx:2288
 TSpectrum3.cxx:2289
 TSpectrum3.cxx:2290
 TSpectrum3.cxx:2291
 TSpectrum3.cxx:2292
 TSpectrum3.cxx:2293
 TSpectrum3.cxx:2294
 TSpectrum3.cxx:2295
 TSpectrum3.cxx:2296
 TSpectrum3.cxx:2297
 TSpectrum3.cxx:2298
 TSpectrum3.cxx:2299
 TSpectrum3.cxx:2300
 TSpectrum3.cxx:2301
 TSpectrum3.cxx:2302
 TSpectrum3.cxx:2303
 TSpectrum3.cxx:2304
 TSpectrum3.cxx:2305
 TSpectrum3.cxx:2306
 TSpectrum3.cxx:2307
 TSpectrum3.cxx:2308
 TSpectrum3.cxx:2309
 TSpectrum3.cxx:2310
 TSpectrum3.cxx:2311
 TSpectrum3.cxx:2312
 TSpectrum3.cxx:2313
 TSpectrum3.cxx:2314
 TSpectrum3.cxx:2315
 TSpectrum3.cxx:2316
 TSpectrum3.cxx:2317
 TSpectrum3.cxx:2318
 TSpectrum3.cxx:2319
 TSpectrum3.cxx:2320
 TSpectrum3.cxx:2321
 TSpectrum3.cxx:2322
 TSpectrum3.cxx:2323
 TSpectrum3.cxx:2324
 TSpectrum3.cxx:2325
 TSpectrum3.cxx:2326
 TSpectrum3.cxx:2327
 TSpectrum3.cxx:2328
 TSpectrum3.cxx:2329
 TSpectrum3.cxx:2330
 TSpectrum3.cxx:2331
 TSpectrum3.cxx:2332
 TSpectrum3.cxx:2333
 TSpectrum3.cxx:2334
 TSpectrum3.cxx:2335
 TSpectrum3.cxx:2336
 TSpectrum3.cxx:2337
 TSpectrum3.cxx:2338
 TSpectrum3.cxx:2339
 TSpectrum3.cxx:2340
 TSpectrum3.cxx:2341
 TSpectrum3.cxx:2342
 TSpectrum3.cxx:2343
 TSpectrum3.cxx:2344
 TSpectrum3.cxx:2345
 TSpectrum3.cxx:2346
 TSpectrum3.cxx:2347
 TSpectrum3.cxx:2348
 TSpectrum3.cxx:2349
 TSpectrum3.cxx:2350
 TSpectrum3.cxx:2351
 TSpectrum3.cxx:2352
 TSpectrum3.cxx:2353
 TSpectrum3.cxx:2354
 TSpectrum3.cxx:2355
 TSpectrum3.cxx:2356
 TSpectrum3.cxx:2357
 TSpectrum3.cxx:2358
 TSpectrum3.cxx:2359
 TSpectrum3.cxx:2360
 TSpectrum3.cxx:2361
 TSpectrum3.cxx:2362
 TSpectrum3.cxx:2363
 TSpectrum3.cxx:2364
 TSpectrum3.cxx:2365
 TSpectrum3.cxx:2366
 TSpectrum3.cxx:2367
 TSpectrum3.cxx:2368
 TSpectrum3.cxx:2369
 TSpectrum3.cxx:2370
 TSpectrum3.cxx:2371
 TSpectrum3.cxx:2372
 TSpectrum3.cxx:2373
 TSpectrum3.cxx:2374
 TSpectrum3.cxx:2375
 TSpectrum3.cxx:2376
 TSpectrum3.cxx:2377
 TSpectrum3.cxx:2378
 TSpectrum3.cxx:2379
 TSpectrum3.cxx:2380
 TSpectrum3.cxx:2381
 TSpectrum3.cxx:2382
 TSpectrum3.cxx:2383
 TSpectrum3.cxx:2384
 TSpectrum3.cxx:2385
 TSpectrum3.cxx:2386
 TSpectrum3.cxx:2387
 TSpectrum3.cxx:2388
 TSpectrum3.cxx:2389
 TSpectrum3.cxx:2390
 TSpectrum3.cxx:2391
 TSpectrum3.cxx:2392
 TSpectrum3.cxx:2393
 TSpectrum3.cxx:2394
 TSpectrum3.cxx:2395
 TSpectrum3.cxx:2396
 TSpectrum3.cxx:2397
 TSpectrum3.cxx:2398
 TSpectrum3.cxx:2399
 TSpectrum3.cxx:2400
 TSpectrum3.cxx:2401
 TSpectrum3.cxx:2402
 TSpectrum3.cxx:2403
 TSpectrum3.cxx:2404
 TSpectrum3.cxx:2405
 TSpectrum3.cxx:2406
 TSpectrum3.cxx:2407
 TSpectrum3.cxx:2408
 TSpectrum3.cxx:2409
 TSpectrum3.cxx:2410
 TSpectrum3.cxx:2411
 TSpectrum3.cxx:2412
 TSpectrum3.cxx:2413
 TSpectrum3.cxx:2414
 TSpectrum3.cxx:2415
 TSpectrum3.cxx:2416
 TSpectrum3.cxx:2417
 TSpectrum3.cxx:2418
 TSpectrum3.cxx:2419
 TSpectrum3.cxx:2420
 TSpectrum3.cxx:2421
 TSpectrum3.cxx:2422
 TSpectrum3.cxx:2423
 TSpectrum3.cxx:2424
 TSpectrum3.cxx:2425
 TSpectrum3.cxx:2426
 TSpectrum3.cxx:2427
 TSpectrum3.cxx:2428
 TSpectrum3.cxx:2429
 TSpectrum3.cxx:2430
 TSpectrum3.cxx:2431
 TSpectrum3.cxx:2432
 TSpectrum3.cxx:2433
 TSpectrum3.cxx:2434
 TSpectrum3.cxx:2435
 TSpectrum3.cxx:2436
 TSpectrum3.cxx:2437
 TSpectrum3.cxx:2438
 TSpectrum3.cxx:2439
 TSpectrum3.cxx:2440
 TSpectrum3.cxx:2441
 TSpectrum3.cxx:2442
 TSpectrum3.cxx:2443
 TSpectrum3.cxx:2444
 TSpectrum3.cxx:2445
 TSpectrum3.cxx:2446
 TSpectrum3.cxx:2447
 TSpectrum3.cxx:2448
 TSpectrum3.cxx:2449
 TSpectrum3.cxx:2450
 TSpectrum3.cxx:2451
 TSpectrum3.cxx:2452
 TSpectrum3.cxx:2453
 TSpectrum3.cxx:2454
 TSpectrum3.cxx:2455
 TSpectrum3.cxx:2456
 TSpectrum3.cxx:2457
 TSpectrum3.cxx:2458
 TSpectrum3.cxx:2459
 TSpectrum3.cxx:2460
 TSpectrum3.cxx:2461
 TSpectrum3.cxx:2462
 TSpectrum3.cxx:2463
 TSpectrum3.cxx:2464
 TSpectrum3.cxx:2465
 TSpectrum3.cxx:2466
 TSpectrum3.cxx:2467
 TSpectrum3.cxx:2468
 TSpectrum3.cxx:2469
 TSpectrum3.cxx:2470
 TSpectrum3.cxx:2471
 TSpectrum3.cxx:2472
 TSpectrum3.cxx:2473
 TSpectrum3.cxx:2474
 TSpectrum3.cxx:2475
 TSpectrum3.cxx:2476
 TSpectrum3.cxx:2477
 TSpectrum3.cxx:2478
 TSpectrum3.cxx:2479
 TSpectrum3.cxx:2480
 TSpectrum3.cxx:2481
 TSpectrum3.cxx:2482
 TSpectrum3.cxx:2483
 TSpectrum3.cxx:2484
 TSpectrum3.cxx:2485
 TSpectrum3.cxx:2486
 TSpectrum3.cxx:2487
 TSpectrum3.cxx:2488
 TSpectrum3.cxx:2489
 TSpectrum3.cxx:2490
 TSpectrum3.cxx:2491
 TSpectrum3.cxx:2492
 TSpectrum3.cxx:2493
 TSpectrum3.cxx:2494
 TSpectrum3.cxx:2495
 TSpectrum3.cxx:2496
 TSpectrum3.cxx:2497
 TSpectrum3.cxx:2498
 TSpectrum3.cxx:2499
 TSpectrum3.cxx:2500
 TSpectrum3.cxx:2501
 TSpectrum3.cxx:2502
 TSpectrum3.cxx:2503
 TSpectrum3.cxx:2504
 TSpectrum3.cxx:2505
 TSpectrum3.cxx:2506
 TSpectrum3.cxx:2507
 TSpectrum3.cxx:2508
 TSpectrum3.cxx:2509
 TSpectrum3.cxx:2510
 TSpectrum3.cxx:2511
 TSpectrum3.cxx:2512
 TSpectrum3.cxx:2513
 TSpectrum3.cxx:2514
 TSpectrum3.cxx:2515
 TSpectrum3.cxx:2516
 TSpectrum3.cxx:2517
 TSpectrum3.cxx:2518
 TSpectrum3.cxx:2519
 TSpectrum3.cxx:2520
 TSpectrum3.cxx:2521
 TSpectrum3.cxx:2522
 TSpectrum3.cxx:2523
 TSpectrum3.cxx:2524
 TSpectrum3.cxx:2525
 TSpectrum3.cxx:2526
 TSpectrum3.cxx:2527
 TSpectrum3.cxx:2528
 TSpectrum3.cxx:2529
 TSpectrum3.cxx:2530
 TSpectrum3.cxx:2531
 TSpectrum3.cxx:2532
 TSpectrum3.cxx:2533
 TSpectrum3.cxx:2534
 TSpectrum3.cxx:2535
 TSpectrum3.cxx:2536
 TSpectrum3.cxx:2537
 TSpectrum3.cxx:2538
 TSpectrum3.cxx:2539
 TSpectrum3.cxx:2540
 TSpectrum3.cxx:2541
 TSpectrum3.cxx:2542
 TSpectrum3.cxx:2543
 TSpectrum3.cxx:2544
 TSpectrum3.cxx:2545
 TSpectrum3.cxx:2546
 TSpectrum3.cxx:2547
 TSpectrum3.cxx:2548
 TSpectrum3.cxx:2549
 TSpectrum3.cxx:2550
 TSpectrum3.cxx:2551
 TSpectrum3.cxx:2552
 TSpectrum3.cxx:2553
 TSpectrum3.cxx:2554
 TSpectrum3.cxx:2555
 TSpectrum3.cxx:2556
 TSpectrum3.cxx:2557
 TSpectrum3.cxx:2558
 TSpectrum3.cxx:2559
 TSpectrum3.cxx:2560
 TSpectrum3.cxx:2561
 TSpectrum3.cxx:2562
 TSpectrum3.cxx:2563
 TSpectrum3.cxx:2564
 TSpectrum3.cxx:2565
 TSpectrum3.cxx:2566
 TSpectrum3.cxx:2567
 TSpectrum3.cxx:2568
 TSpectrum3.cxx:2569
 TSpectrum3.cxx:2570
 TSpectrum3.cxx:2571
 TSpectrum3.cxx:2572
 TSpectrum3.cxx:2573
 TSpectrum3.cxx:2574
 TSpectrum3.cxx:2575
 TSpectrum3.cxx:2576
 TSpectrum3.cxx:2577
 TSpectrum3.cxx:2578
 TSpectrum3.cxx:2579
 TSpectrum3.cxx:2580
 TSpectrum3.cxx:2581
 TSpectrum3.cxx:2582
 TSpectrum3.cxx:2583
 TSpectrum3.cxx:2584
 TSpectrum3.cxx:2585
 TSpectrum3.cxx:2586
 TSpectrum3.cxx:2587
 TSpectrum3.cxx:2588
 TSpectrum3.cxx:2589
 TSpectrum3.cxx:2590
 TSpectrum3.cxx:2591
 TSpectrum3.cxx:2592
 TSpectrum3.cxx:2593
 TSpectrum3.cxx:2594
 TSpectrum3.cxx:2595
 TSpectrum3.cxx:2596
 TSpectrum3.cxx:2597
 TSpectrum3.cxx:2598
 TSpectrum3.cxx:2599
 TSpectrum3.cxx:2600
 TSpectrum3.cxx:2601
 TSpectrum3.cxx:2602
 TSpectrum3.cxx:2603
 TSpectrum3.cxx:2604
 TSpectrum3.cxx:2605
 TSpectrum3.cxx:2606
 TSpectrum3.cxx:2607
 TSpectrum3.cxx:2608
 TSpectrum3.cxx:2609
 TSpectrum3.cxx:2610
 TSpectrum3.cxx:2611
 TSpectrum3.cxx:2612
 TSpectrum3.cxx:2613
 TSpectrum3.cxx:2614
 TSpectrum3.cxx:2615
 TSpectrum3.cxx:2616
 TSpectrum3.cxx:2617
 TSpectrum3.cxx:2618
 TSpectrum3.cxx:2619
 TSpectrum3.cxx:2620
 TSpectrum3.cxx:2621
 TSpectrum3.cxx:2622
 TSpectrum3.cxx:2623
 TSpectrum3.cxx:2624
 TSpectrum3.cxx:2625
 TSpectrum3.cxx:2626
 TSpectrum3.cxx:2627
 TSpectrum3.cxx:2628
 TSpectrum3.cxx:2629
 TSpectrum3.cxx:2630
 TSpectrum3.cxx:2631
 TSpectrum3.cxx:2632
 TSpectrum3.cxx:2633
 TSpectrum3.cxx:2634
 TSpectrum3.cxx:2635
 TSpectrum3.cxx:2636
 TSpectrum3.cxx:2637
 TSpectrum3.cxx:2638
 TSpectrum3.cxx:2639
 TSpectrum3.cxx:2640
 TSpectrum3.cxx:2641
 TSpectrum3.cxx:2642
 TSpectrum3.cxx:2643
 TSpectrum3.cxx:2644
 TSpectrum3.cxx:2645
 TSpectrum3.cxx:2646
 TSpectrum3.cxx:2647
 TSpectrum3.cxx:2648
 TSpectrum3.cxx:2649
 TSpectrum3.cxx:2650
 TSpectrum3.cxx:2651
 TSpectrum3.cxx:2652
 TSpectrum3.cxx:2653
 TSpectrum3.cxx:2654
 TSpectrum3.cxx:2655
 TSpectrum3.cxx:2656
 TSpectrum3.cxx:2657
 TSpectrum3.cxx:2658
 TSpectrum3.cxx:2659
 TSpectrum3.cxx:2660
 TSpectrum3.cxx:2661
 TSpectrum3.cxx:2662
 TSpectrum3.cxx:2663
 TSpectrum3.cxx:2664
 TSpectrum3.cxx:2665
 TSpectrum3.cxx:2666
 TSpectrum3.cxx:2667
 TSpectrum3.cxx:2668
 TSpectrum3.cxx:2669
 TSpectrum3.cxx:2670
 TSpectrum3.cxx:2671
 TSpectrum3.cxx:2672
 TSpectrum3.cxx:2673
 TSpectrum3.cxx:2674
 TSpectrum3.cxx:2675
 TSpectrum3.cxx:2676
 TSpectrum3.cxx:2677
 TSpectrum3.cxx:2678
 TSpectrum3.cxx:2679
 TSpectrum3.cxx:2680
 TSpectrum3.cxx:2681
 TSpectrum3.cxx:2682
 TSpectrum3.cxx:2683
 TSpectrum3.cxx:2684
 TSpectrum3.cxx:2685
 TSpectrum3.cxx:2686
 TSpectrum3.cxx:2687
 TSpectrum3.cxx:2688
 TSpectrum3.cxx:2689
 TSpectrum3.cxx:2690
 TSpectrum3.cxx:2691
 TSpectrum3.cxx:2692
 TSpectrum3.cxx:2693
 TSpectrum3.cxx:2694
 TSpectrum3.cxx:2695
 TSpectrum3.cxx:2696
 TSpectrum3.cxx:2697
 TSpectrum3.cxx:2698
 TSpectrum3.cxx:2699
 TSpectrum3.cxx:2700
 TSpectrum3.cxx:2701
 TSpectrum3.cxx:2702
 TSpectrum3.cxx:2703
 TSpectrum3.cxx:2704
 TSpectrum3.cxx:2705
 TSpectrum3.cxx:2706
 TSpectrum3.cxx:2707
 TSpectrum3.cxx:2708
 TSpectrum3.cxx:2709
 TSpectrum3.cxx:2710
 TSpectrum3.cxx:2711
 TSpectrum3.cxx:2712
 TSpectrum3.cxx:2713
 TSpectrum3.cxx:2714
 TSpectrum3.cxx:2715
 TSpectrum3.cxx:2716
 TSpectrum3.cxx:2717
 TSpectrum3.cxx:2718
 TSpectrum3.cxx:2719
 TSpectrum3.cxx:2720
 TSpectrum3.cxx:2721
 TSpectrum3.cxx:2722
 TSpectrum3.cxx:2723
 TSpectrum3.cxx:2724
 TSpectrum3.cxx:2725
 TSpectrum3.cxx:2726
 TSpectrum3.cxx:2727
 TSpectrum3.cxx:2728
 TSpectrum3.cxx:2729
 TSpectrum3.cxx:2730
 TSpectrum3.cxx:2731
 TSpectrum3.cxx:2732
 TSpectrum3.cxx:2733
 TSpectrum3.cxx:2734
 TSpectrum3.cxx:2735
 TSpectrum3.cxx:2736
 TSpectrum3.cxx:2737
 TSpectrum3.cxx:2738
 TSpectrum3.cxx:2739
 TSpectrum3.cxx:2740
 TSpectrum3.cxx:2741
 TSpectrum3.cxx:2742
 TSpectrum3.cxx:2743
 TSpectrum3.cxx:2744
 TSpectrum3.cxx:2745
 TSpectrum3.cxx:2746
 TSpectrum3.cxx:2747
 TSpectrum3.cxx:2748
 TSpectrum3.cxx:2749
 TSpectrum3.cxx:2750
 TSpectrum3.cxx:2751
 TSpectrum3.cxx:2752
 TSpectrum3.cxx:2753
 TSpectrum3.cxx:2754
 TSpectrum3.cxx:2755
 TSpectrum3.cxx:2756
 TSpectrum3.cxx:2757
 TSpectrum3.cxx:2758
 TSpectrum3.cxx:2759
 TSpectrum3.cxx:2760
 TSpectrum3.cxx:2761
 TSpectrum3.cxx:2762
 TSpectrum3.cxx:2763
 TSpectrum3.cxx:2764
 TSpectrum3.cxx:2765
 TSpectrum3.cxx:2766
 TSpectrum3.cxx:2767
 TSpectrum3.cxx:2768
 TSpectrum3.cxx:2769
 TSpectrum3.cxx:2770
 TSpectrum3.cxx:2771
 TSpectrum3.cxx:2772
 TSpectrum3.cxx:2773
 TSpectrum3.cxx:2774
 TSpectrum3.cxx:2775
 TSpectrum3.cxx:2776
 TSpectrum3.cxx:2777
 TSpectrum3.cxx:2778
 TSpectrum3.cxx:2779
 TSpectrum3.cxx:2780
 TSpectrum3.cxx:2781
 TSpectrum3.cxx:2782
 TSpectrum3.cxx:2783
 TSpectrum3.cxx:2784
 TSpectrum3.cxx:2785
 TSpectrum3.cxx:2786
 TSpectrum3.cxx:2787
 TSpectrum3.cxx:2788
 TSpectrum3.cxx:2789
 TSpectrum3.cxx:2790
 TSpectrum3.cxx:2791
 TSpectrum3.cxx:2792
 TSpectrum3.cxx:2793
 TSpectrum3.cxx:2794
 TSpectrum3.cxx:2795
 TSpectrum3.cxx:2796
 TSpectrum3.cxx:2797
 TSpectrum3.cxx:2798
 TSpectrum3.cxx:2799
 TSpectrum3.cxx:2800
 TSpectrum3.cxx:2801
 TSpectrum3.cxx:2802
 TSpectrum3.cxx:2803
 TSpectrum3.cxx:2804
 TSpectrum3.cxx:2805
 TSpectrum3.cxx:2806
 TSpectrum3.cxx:2807
 TSpectrum3.cxx:2808
 TSpectrum3.cxx:2809
 TSpectrum3.cxx:2810
 TSpectrum3.cxx:2811
 TSpectrum3.cxx:2812
 TSpectrum3.cxx:2813
 TSpectrum3.cxx:2814
 TSpectrum3.cxx:2815
 TSpectrum3.cxx:2816
 TSpectrum3.cxx:2817
 TSpectrum3.cxx:2818
 TSpectrum3.cxx:2819
 TSpectrum3.cxx:2820
 TSpectrum3.cxx:2821
 TSpectrum3.cxx:2822
 TSpectrum3.cxx:2823
 TSpectrum3.cxx:2824
 TSpectrum3.cxx:2825
 TSpectrum3.cxx:2826
 TSpectrum3.cxx:2827
 TSpectrum3.cxx:2828
 TSpectrum3.cxx:2829
 TSpectrum3.cxx:2830
 TSpectrum3.cxx:2831
 TSpectrum3.cxx:2832
 TSpectrum3.cxx:2833
 TSpectrum3.cxx:2834
 TSpectrum3.cxx:2835
 TSpectrum3.cxx:2836
 TSpectrum3.cxx:2837
 TSpectrum3.cxx:2838
 TSpectrum3.cxx:2839
 TSpectrum3.cxx:2840
 TSpectrum3.cxx:2841
 TSpectrum3.cxx:2842
 TSpectrum3.cxx:2843
 TSpectrum3.cxx:2844
 TSpectrum3.cxx:2845
 TSpectrum3.cxx:2846
 TSpectrum3.cxx:2847
 TSpectrum3.cxx:2848
 TSpectrum3.cxx:2849
 TSpectrum3.cxx:2850
 TSpectrum3.cxx:2851
 TSpectrum3.cxx:2852
 TSpectrum3.cxx:2853
 TSpectrum3.cxx:2854
 TSpectrum3.cxx:2855
 TSpectrum3.cxx:2856
 TSpectrum3.cxx:2857
 TSpectrum3.cxx:2858
 TSpectrum3.cxx:2859
 TSpectrum3.cxx:2860
 TSpectrum3.cxx:2861
 TSpectrum3.cxx:2862
 TSpectrum3.cxx:2863
 TSpectrum3.cxx:2864
 TSpectrum3.cxx:2865
 TSpectrum3.cxx:2866
 TSpectrum3.cxx:2867
 TSpectrum3.cxx:2868
 TSpectrum3.cxx:2869
 TSpectrum3.cxx:2870
 TSpectrum3.cxx:2871
 TSpectrum3.cxx:2872
 TSpectrum3.cxx:2873
 TSpectrum3.cxx:2874
 TSpectrum3.cxx:2875
 TSpectrum3.cxx:2876
 TSpectrum3.cxx:2877
 TSpectrum3.cxx:2878
 TSpectrum3.cxx:2879
 TSpectrum3.cxx:2880
 TSpectrum3.cxx:2881
 TSpectrum3.cxx:2882
 TSpectrum3.cxx:2883
 TSpectrum3.cxx:2884
 TSpectrum3.cxx:2885
 TSpectrum3.cxx:2886
 TSpectrum3.cxx:2887
 TSpectrum3.cxx:2888
 TSpectrum3.cxx:2889
 TSpectrum3.cxx:2890
 TSpectrum3.cxx:2891
 TSpectrum3.cxx:2892
 TSpectrum3.cxx:2893
 TSpectrum3.cxx:2894
 TSpectrum3.cxx:2895
 TSpectrum3.cxx:2896
 TSpectrum3.cxx:2897
 TSpectrum3.cxx:2898
 TSpectrum3.cxx:2899
 TSpectrum3.cxx:2900
 TSpectrum3.cxx:2901
 TSpectrum3.cxx:2902
 TSpectrum3.cxx:2903
 TSpectrum3.cxx:2904
 TSpectrum3.cxx:2905
 TSpectrum3.cxx:2906
 TSpectrum3.cxx:2907
 TSpectrum3.cxx:2908
 TSpectrum3.cxx:2909
 TSpectrum3.cxx:2910
 TSpectrum3.cxx:2911
 TSpectrum3.cxx:2912
 TSpectrum3.cxx:2913
 TSpectrum3.cxx:2914
 TSpectrum3.cxx:2915
 TSpectrum3.cxx:2916
 TSpectrum3.cxx:2917
 TSpectrum3.cxx:2918
 TSpectrum3.cxx:2919
 TSpectrum3.cxx:2920
 TSpectrum3.cxx:2921
 TSpectrum3.cxx:2922
 TSpectrum3.cxx:2923
 TSpectrum3.cxx:2924
 TSpectrum3.cxx:2925
 TSpectrum3.cxx:2926
 TSpectrum3.cxx:2927
 TSpectrum3.cxx:2928
 TSpectrum3.cxx:2929
 TSpectrum3.cxx:2930
 TSpectrum3.cxx:2931
 TSpectrum3.cxx:2932
 TSpectrum3.cxx:2933
 TSpectrum3.cxx:2934
 TSpectrum3.cxx:2935
 TSpectrum3.cxx:2936
 TSpectrum3.cxx:2937
 TSpectrum3.cxx:2938
 TSpectrum3.cxx:2939
 TSpectrum3.cxx:2940
 TSpectrum3.cxx:2941
 TSpectrum3.cxx:2942
 TSpectrum3.cxx:2943
 TSpectrum3.cxx:2944
 TSpectrum3.cxx:2945
 TSpectrum3.cxx:2946
 TSpectrum3.cxx:2947
 TSpectrum3.cxx:2948
 TSpectrum3.cxx:2949
 TSpectrum3.cxx:2950
 TSpectrum3.cxx:2951
 TSpectrum3.cxx:2952
 TSpectrum3.cxx:2953
 TSpectrum3.cxx:2954
 TSpectrum3.cxx:2955
 TSpectrum3.cxx:2956
 TSpectrum3.cxx:2957
 TSpectrum3.cxx:2958
 TSpectrum3.cxx:2959
 TSpectrum3.cxx:2960
 TSpectrum3.cxx:2961
 TSpectrum3.cxx:2962
 TSpectrum3.cxx:2963
 TSpectrum3.cxx:2964
 TSpectrum3.cxx:2965
 TSpectrum3.cxx:2966
 TSpectrum3.cxx:2967
 TSpectrum3.cxx:2968
 TSpectrum3.cxx:2969
 TSpectrum3.cxx:2970
 TSpectrum3.cxx:2971
 TSpectrum3.cxx:2972
 TSpectrum3.cxx:2973
 TSpectrum3.cxx:2974
 TSpectrum3.cxx:2975
 TSpectrum3.cxx:2976
 TSpectrum3.cxx:2977
 TSpectrum3.cxx:2978
 TSpectrum3.cxx:2979
 TSpectrum3.cxx:2980
 TSpectrum3.cxx:2981
 TSpectrum3.cxx:2982
 TSpectrum3.cxx:2983
 TSpectrum3.cxx:2984
 TSpectrum3.cxx:2985
 TSpectrum3.cxx:2986
 TSpectrum3.cxx:2987
 TSpectrum3.cxx:2988
 TSpectrum3.cxx:2989
 TSpectrum3.cxx:2990
 TSpectrum3.cxx:2991
 TSpectrum3.cxx:2992
 TSpectrum3.cxx:2993
 TSpectrum3.cxx:2994
 TSpectrum3.cxx:2995
 TSpectrum3.cxx:2996
 TSpectrum3.cxx:2997
 TSpectrum3.cxx:2998
 TSpectrum3.cxx:2999
 TSpectrum3.cxx:3000
 TSpectrum3.cxx:3001
 TSpectrum3.cxx:3002
 TSpectrum3.cxx:3003
 TSpectrum3.cxx:3004
 TSpectrum3.cxx:3005
 TSpectrum3.cxx:3006
 TSpectrum3.cxx:3007
 TSpectrum3.cxx:3008
 TSpectrum3.cxx:3009
 TSpectrum3.cxx:3010
 TSpectrum3.cxx:3011
 TSpectrum3.cxx:3012
 TSpectrum3.cxx:3013
 TSpectrum3.cxx:3014
 TSpectrum3.cxx:3015
 TSpectrum3.cxx:3016
 TSpectrum3.cxx:3017
 TSpectrum3.cxx:3018
 TSpectrum3.cxx:3019
 TSpectrum3.cxx:3020
 TSpectrum3.cxx:3021
 TSpectrum3.cxx:3022
 TSpectrum3.cxx:3023
 TSpectrum3.cxx:3024
 TSpectrum3.cxx:3025
 TSpectrum3.cxx:3026
 TSpectrum3.cxx:3027
 TSpectrum3.cxx:3028
 TSpectrum3.cxx:3029
 TSpectrum3.cxx:3030
 TSpectrum3.cxx:3031
 TSpectrum3.cxx:3032
 TSpectrum3.cxx:3033
 TSpectrum3.cxx:3034
 TSpectrum3.cxx:3035
 TSpectrum3.cxx:3036
 TSpectrum3.cxx:3037
 TSpectrum3.cxx:3038
 TSpectrum3.cxx:3039
 TSpectrum3.cxx:3040
 TSpectrum3.cxx:3041
 TSpectrum3.cxx:3042
 TSpectrum3.cxx:3043
 TSpectrum3.cxx:3044
 TSpectrum3.cxx:3045
 TSpectrum3.cxx:3046
 TSpectrum3.cxx:3047
 TSpectrum3.cxx:3048
 TSpectrum3.cxx:3049
 TSpectrum3.cxx:3050
 TSpectrum3.cxx:3051
 TSpectrum3.cxx:3052
 TSpectrum3.cxx:3053
 TSpectrum3.cxx:3054
 TSpectrum3.cxx:3055
 TSpectrum3.cxx:3056
 TSpectrum3.cxx:3057
 TSpectrum3.cxx:3058
 TSpectrum3.cxx:3059
 TSpectrum3.cxx:3060
 TSpectrum3.cxx:3061
 TSpectrum3.cxx:3062
 TSpectrum3.cxx:3063
 TSpectrum3.cxx:3064
 TSpectrum3.cxx:3065
 TSpectrum3.cxx:3066
 TSpectrum3.cxx:3067
 TSpectrum3.cxx:3068
 TSpectrum3.cxx:3069
 TSpectrum3.cxx:3070
 TSpectrum3.cxx:3071
 TSpectrum3.cxx:3072
 TSpectrum3.cxx:3073
 TSpectrum3.cxx:3074
 TSpectrum3.cxx:3075
 TSpectrum3.cxx:3076
 TSpectrum3.cxx:3077
 TSpectrum3.cxx:3078
 TSpectrum3.cxx:3079
 TSpectrum3.cxx:3080
 TSpectrum3.cxx:3081
 TSpectrum3.cxx:3082
 TSpectrum3.cxx:3083
 TSpectrum3.cxx:3084
 TSpectrum3.cxx:3085
 TSpectrum3.cxx:3086
 TSpectrum3.cxx:3087
 TSpectrum3.cxx:3088
 TSpectrum3.cxx:3089
 TSpectrum3.cxx:3090
 TSpectrum3.cxx:3091
 TSpectrum3.cxx:3092
 TSpectrum3.cxx:3093
 TSpectrum3.cxx:3094
 TSpectrum3.cxx:3095
 TSpectrum3.cxx:3096
 TSpectrum3.cxx:3097
 TSpectrum3.cxx:3098
 TSpectrum3.cxx:3099
 TSpectrum3.cxx:3100
 TSpectrum3.cxx:3101
 TSpectrum3.cxx:3102
 TSpectrum3.cxx:3103
 TSpectrum3.cxx:3104
 TSpectrum3.cxx:3105
 TSpectrum3.cxx:3106
 TSpectrum3.cxx:3107
 TSpectrum3.cxx:3108
 TSpectrum3.cxx:3109
 TSpectrum3.cxx:3110
 TSpectrum3.cxx:3111
 TSpectrum3.cxx:3112
 TSpectrum3.cxx:3113
 TSpectrum3.cxx:3114
 TSpectrum3.cxx:3115
 TSpectrum3.cxx:3116
 TSpectrum3.cxx:3117
 TSpectrum3.cxx:3118
 TSpectrum3.cxx:3119
 TSpectrum3.cxx:3120
 TSpectrum3.cxx:3121
 TSpectrum3.cxx:3122
 TSpectrum3.cxx:3123
 TSpectrum3.cxx:3124
 TSpectrum3.cxx:3125
 TSpectrum3.cxx:3126
 TSpectrum3.cxx:3127
 TSpectrum3.cxx:3128
 TSpectrum3.cxx:3129
 TSpectrum3.cxx:3130
 TSpectrum3.cxx:3131
 TSpectrum3.cxx:3132
 TSpectrum3.cxx:3133
 TSpectrum3.cxx:3134
 TSpectrum3.cxx:3135
 TSpectrum3.cxx:3136
 TSpectrum3.cxx:3137
 TSpectrum3.cxx:3138
 TSpectrum3.cxx:3139
 TSpectrum3.cxx:3140
 TSpectrum3.cxx:3141
 TSpectrum3.cxx:3142
 TSpectrum3.cxx:3143
 TSpectrum3.cxx:3144
 TSpectrum3.cxx:3145
 TSpectrum3.cxx:3146
 TSpectrum3.cxx:3147
 TSpectrum3.cxx:3148
 TSpectrum3.cxx:3149
 TSpectrum3.cxx:3150
 TSpectrum3.cxx:3151
 TSpectrum3.cxx:3152
 TSpectrum3.cxx:3153
 TSpectrum3.cxx:3154
 TSpectrum3.cxx:3155
 TSpectrum3.cxx:3156
 TSpectrum3.cxx:3157
 TSpectrum3.cxx:3158
 TSpectrum3.cxx:3159
 TSpectrum3.cxx:3160
 TSpectrum3.cxx:3161
 TSpectrum3.cxx:3162
 TSpectrum3.cxx:3163
 TSpectrum3.cxx:3164
 TSpectrum3.cxx:3165
 TSpectrum3.cxx:3166
 TSpectrum3.cxx:3167
 TSpectrum3.cxx:3168
 TSpectrum3.cxx:3169
 TSpectrum3.cxx:3170
 TSpectrum3.cxx:3171
 TSpectrum3.cxx:3172
 TSpectrum3.cxx:3173
 TSpectrum3.cxx:3174
 TSpectrum3.cxx:3175
 TSpectrum3.cxx:3176
 TSpectrum3.cxx:3177
 TSpectrum3.cxx:3178
 TSpectrum3.cxx:3179
 TSpectrum3.cxx:3180
 TSpectrum3.cxx:3181
 TSpectrum3.cxx:3182
 TSpectrum3.cxx:3183
 TSpectrum3.cxx:3184
 TSpectrum3.cxx:3185
 TSpectrum3.cxx:3186
 TSpectrum3.cxx:3187
 TSpectrum3.cxx:3188
 TSpectrum3.cxx:3189
 TSpectrum3.cxx:3190
 TSpectrum3.cxx:3191
 TSpectrum3.cxx:3192
 TSpectrum3.cxx:3193
 TSpectrum3.cxx:3194
 TSpectrum3.cxx:3195
 TSpectrum3.cxx:3196
 TSpectrum3.cxx:3197
 TSpectrum3.cxx:3198
 TSpectrum3.cxx:3199
 TSpectrum3.cxx:3200
 TSpectrum3.cxx:3201
 TSpectrum3.cxx:3202
 TSpectrum3.cxx:3203
 TSpectrum3.cxx:3204
 TSpectrum3.cxx:3205
 TSpectrum3.cxx:3206
 TSpectrum3.cxx:3207
 TSpectrum3.cxx:3208
 TSpectrum3.cxx:3209
 TSpectrum3.cxx:3210
 TSpectrum3.cxx:3211
 TSpectrum3.cxx:3212
 TSpectrum3.cxx:3213
 TSpectrum3.cxx:3214
 TSpectrum3.cxx:3215
 TSpectrum3.cxx:3216
 TSpectrum3.cxx:3217
 TSpectrum3.cxx:3218
 TSpectrum3.cxx:3219
 TSpectrum3.cxx:3220
 TSpectrum3.cxx:3221
 TSpectrum3.cxx:3222
 TSpectrum3.cxx:3223
 TSpectrum3.cxx:3224
 TSpectrum3.cxx:3225
 TSpectrum3.cxx:3226
 TSpectrum3.cxx:3227
 TSpectrum3.cxx:3228
 TSpectrum3.cxx:3229
 TSpectrum3.cxx:3230
 TSpectrum3.cxx:3231
 TSpectrum3.cxx:3232
 TSpectrum3.cxx:3233
 TSpectrum3.cxx:3234
 TSpectrum3.cxx:3235
 TSpectrum3.cxx:3236
 TSpectrum3.cxx:3237
 TSpectrum3.cxx:3238
 TSpectrum3.cxx:3239
 TSpectrum3.cxx:3240
 TSpectrum3.cxx:3241
 TSpectrum3.cxx:3242
 TSpectrum3.cxx:3243
 TSpectrum3.cxx:3244
 TSpectrum3.cxx:3245
 TSpectrum3.cxx:3246
 TSpectrum3.cxx:3247
 TSpectrum3.cxx:3248
 TSpectrum3.cxx:3249
 TSpectrum3.cxx:3250
 TSpectrum3.cxx:3251
 TSpectrum3.cxx:3252
 TSpectrum3.cxx:3253
 TSpectrum3.cxx:3254
 TSpectrum3.cxx:3255
 TSpectrum3.cxx:3256
 TSpectrum3.cxx:3257
 TSpectrum3.cxx:3258
 TSpectrum3.cxx:3259
 TSpectrum3.cxx:3260
 TSpectrum3.cxx:3261
 TSpectrum3.cxx:3262
 TSpectrum3.cxx:3263
 TSpectrum3.cxx:3264
 TSpectrum3.cxx:3265
 TSpectrum3.cxx:3266
 TSpectrum3.cxx:3267
 TSpectrum3.cxx:3268
 TSpectrum3.cxx:3269
 TSpectrum3.cxx:3270
 TSpectrum3.cxx:3271
 TSpectrum3.cxx:3272
 TSpectrum3.cxx:3273
 TSpectrum3.cxx:3274
 TSpectrum3.cxx:3275
 TSpectrum3.cxx:3276
 TSpectrum3.cxx:3277
 TSpectrum3.cxx:3278
 TSpectrum3.cxx:3279
 TSpectrum3.cxx:3280
 TSpectrum3.cxx:3281
 TSpectrum3.cxx:3282
 TSpectrum3.cxx:3283
 TSpectrum3.cxx:3284
 TSpectrum3.cxx:3285
 TSpectrum3.cxx:3286
 TSpectrum3.cxx:3287
 TSpectrum3.cxx:3288
 TSpectrum3.cxx:3289
 TSpectrum3.cxx:3290
 TSpectrum3.cxx:3291
 TSpectrum3.cxx:3292
 TSpectrum3.cxx:3293
 TSpectrum3.cxx:3294
 TSpectrum3.cxx:3295
 TSpectrum3.cxx:3296
 TSpectrum3.cxx:3297
 TSpectrum3.cxx:3298
 TSpectrum3.cxx:3299
 TSpectrum3.cxx:3300
 TSpectrum3.cxx:3301
 TSpectrum3.cxx:3302
 TSpectrum3.cxx:3303
 TSpectrum3.cxx:3304
 TSpectrum3.cxx:3305
 TSpectrum3.cxx:3306
 TSpectrum3.cxx:3307
 TSpectrum3.cxx:3308
 TSpectrum3.cxx:3309
 TSpectrum3.cxx:3310
 TSpectrum3.cxx:3311
 TSpectrum3.cxx:3312
 TSpectrum3.cxx:3313
 TSpectrum3.cxx:3314
 TSpectrum3.cxx:3315
 TSpectrum3.cxx:3316
 TSpectrum3.cxx:3317
 TSpectrum3.cxx:3318
 TSpectrum3.cxx:3319
 TSpectrum3.cxx:3320
 TSpectrum3.cxx:3321
 TSpectrum3.cxx:3322
 TSpectrum3.cxx:3323
 TSpectrum3.cxx:3324
 TSpectrum3.cxx:3325
 TSpectrum3.cxx:3326
 TSpectrum3.cxx:3327
 TSpectrum3.cxx:3328
 TSpectrum3.cxx:3329
 TSpectrum3.cxx:3330
 TSpectrum3.cxx:3331
 TSpectrum3.cxx:3332
 TSpectrum3.cxx:3333
 TSpectrum3.cxx:3334
 TSpectrum3.cxx:3335
 TSpectrum3.cxx:3336
 TSpectrum3.cxx:3337
 TSpectrum3.cxx:3338
 TSpectrum3.cxx:3339
 TSpectrum3.cxx:3340
 TSpectrum3.cxx:3341
 TSpectrum3.cxx:3342
 TSpectrum3.cxx:3343
 TSpectrum3.cxx:3344
 TSpectrum3.cxx:3345
 TSpectrum3.cxx:3346
 TSpectrum3.cxx:3347
 TSpectrum3.cxx:3348
 TSpectrum3.cxx:3349
 TSpectrum3.cxx:3350
 TSpectrum3.cxx:3351
 TSpectrum3.cxx:3352
 TSpectrum3.cxx:3353
 TSpectrum3.cxx:3354
 TSpectrum3.cxx:3355
 TSpectrum3.cxx:3356
 TSpectrum3.cxx:3357
 TSpectrum3.cxx:3358
 TSpectrum3.cxx:3359
 TSpectrum3.cxx:3360
 TSpectrum3.cxx:3361
 TSpectrum3.cxx:3362
 TSpectrum3.cxx:3363
 TSpectrum3.cxx:3364
 TSpectrum3.cxx:3365
 TSpectrum3.cxx:3366
 TSpectrum3.cxx:3367
 TSpectrum3.cxx:3368
 TSpectrum3.cxx:3369
 TSpectrum3.cxx:3370
 TSpectrum3.cxx:3371
 TSpectrum3.cxx:3372
 TSpectrum3.cxx:3373
 TSpectrum3.cxx:3374
 TSpectrum3.cxx:3375
 TSpectrum3.cxx:3376
 TSpectrum3.cxx:3377
 TSpectrum3.cxx:3378
 TSpectrum3.cxx:3379
 TSpectrum3.cxx:3380
 TSpectrum3.cxx:3381
 TSpectrum3.cxx:3382
 TSpectrum3.cxx:3383
 TSpectrum3.cxx:3384
 TSpectrum3.cxx:3385
 TSpectrum3.cxx:3386
 TSpectrum3.cxx:3387
 TSpectrum3.cxx:3388
 TSpectrum3.cxx:3389
 TSpectrum3.cxx:3390
 TSpectrum3.cxx:3391
 TSpectrum3.cxx:3392
 TSpectrum3.cxx:3393
 TSpectrum3.cxx:3394
 TSpectrum3.cxx:3395
 TSpectrum3.cxx:3396
 TSpectrum3.cxx:3397
 TSpectrum3.cxx:3398
 TSpectrum3.cxx:3399
 TSpectrum3.cxx:3400
 TSpectrum3.cxx:3401
 TSpectrum3.cxx:3402
 TSpectrum3.cxx:3403
 TSpectrum3.cxx:3404
 TSpectrum3.cxx:3405
 TSpectrum3.cxx:3406
 TSpectrum3.cxx:3407
 TSpectrum3.cxx:3408
 TSpectrum3.cxx:3409
 TSpectrum3.cxx:3410
 TSpectrum3.cxx:3411
 TSpectrum3.cxx:3412
 TSpectrum3.cxx:3413
 TSpectrum3.cxx:3414
 TSpectrum3.cxx:3415
 TSpectrum3.cxx:3416
 TSpectrum3.cxx:3417
 TSpectrum3.cxx:3418
 TSpectrum3.cxx:3419
 TSpectrum3.cxx:3420
 TSpectrum3.cxx:3421
 TSpectrum3.cxx:3422
 TSpectrum3.cxx:3423
 TSpectrum3.cxx:3424
 TSpectrum3.cxx:3425
 TSpectrum3.cxx:3426
 TSpectrum3.cxx:3427
 TSpectrum3.cxx:3428
 TSpectrum3.cxx:3429
 TSpectrum3.cxx:3430
 TSpectrum3.cxx:3431
 TSpectrum3.cxx:3432
 TSpectrum3.cxx:3433
 TSpectrum3.cxx:3434
 TSpectrum3.cxx:3435
 TSpectrum3.cxx:3436
 TSpectrum3.cxx:3437
 TSpectrum3.cxx:3438
 TSpectrum3.cxx:3439
 TSpectrum3.cxx:3440
 TSpectrum3.cxx:3441
 TSpectrum3.cxx:3442
 TSpectrum3.cxx:3443
 TSpectrum3.cxx:3444
 TSpectrum3.cxx:3445
 TSpectrum3.cxx:3446
 TSpectrum3.cxx:3447
 TSpectrum3.cxx:3448
 TSpectrum3.cxx:3449
 TSpectrum3.cxx:3450
 TSpectrum3.cxx:3451
 TSpectrum3.cxx:3452
 TSpectrum3.cxx:3453
 TSpectrum3.cxx:3454
 TSpectrum3.cxx:3455
 TSpectrum3.cxx:3456
 TSpectrum3.cxx:3457
 TSpectrum3.cxx:3458
 TSpectrum3.cxx:3459
 TSpectrum3.cxx:3460
 TSpectrum3.cxx:3461
 TSpectrum3.cxx:3462
 TSpectrum3.cxx:3463
 TSpectrum3.cxx:3464
 TSpectrum3.cxx:3465
 TSpectrum3.cxx:3466
 TSpectrum3.cxx:3467
 TSpectrum3.cxx:3468
 TSpectrum3.cxx:3469
 TSpectrum3.cxx:3470
 TSpectrum3.cxx:3471
 TSpectrum3.cxx:3472
 TSpectrum3.cxx:3473
 TSpectrum3.cxx:3474
 TSpectrum3.cxx:3475
 TSpectrum3.cxx:3476
 TSpectrum3.cxx:3477
 TSpectrum3.cxx:3478
 TSpectrum3.cxx:3479
 TSpectrum3.cxx:3480
 TSpectrum3.cxx:3481
 TSpectrum3.cxx:3482
 TSpectrum3.cxx:3483
 TSpectrum3.cxx:3484
 TSpectrum3.cxx:3485
 TSpectrum3.cxx:3486
 TSpectrum3.cxx:3487
 TSpectrum3.cxx:3488
 TSpectrum3.cxx:3489
 TSpectrum3.cxx:3490
 TSpectrum3.cxx:3491
 TSpectrum3.cxx:3492
 TSpectrum3.cxx:3493
 TSpectrum3.cxx:3494
 TSpectrum3.cxx:3495
 TSpectrum3.cxx:3496
 TSpectrum3.cxx:3497
 TSpectrum3.cxx:3498
 TSpectrum3.cxx:3499
 TSpectrum3.cxx:3500
 TSpectrum3.cxx:3501
 TSpectrum3.cxx:3502
 TSpectrum3.cxx:3503
 TSpectrum3.cxx:3504
 TSpectrum3.cxx:3505
 TSpectrum3.cxx:3506
 TSpectrum3.cxx:3507
 TSpectrum3.cxx:3508
 TSpectrum3.cxx:3509
 TSpectrum3.cxx:3510
 TSpectrum3.cxx:3511
 TSpectrum3.cxx:3512
 TSpectrum3.cxx:3513
 TSpectrum3.cxx:3514
 TSpectrum3.cxx:3515
 TSpectrum3.cxx:3516
 TSpectrum3.cxx:3517
 TSpectrum3.cxx:3518
 TSpectrum3.cxx:3519
 TSpectrum3.cxx:3520
 TSpectrum3.cxx:3521
 TSpectrum3.cxx:3522
 TSpectrum3.cxx:3523
 TSpectrum3.cxx:3524
 TSpectrum3.cxx:3525
 TSpectrum3.cxx:3526
 TSpectrum3.cxx:3527
 TSpectrum3.cxx:3528
 TSpectrum3.cxx:3529
 TSpectrum3.cxx:3530
 TSpectrum3.cxx:3531
 TSpectrum3.cxx:3532
 TSpectrum3.cxx:3533
 TSpectrum3.cxx:3534
 TSpectrum3.cxx:3535
 TSpectrum3.cxx:3536
 TSpectrum3.cxx:3537
 TSpectrum3.cxx:3538
 TSpectrum3.cxx:3539
 TSpectrum3.cxx:3540
 TSpectrum3.cxx:3541
 TSpectrum3.cxx:3542
 TSpectrum3.cxx:3543
 TSpectrum3.cxx:3544
 TSpectrum3.cxx:3545
 TSpectrum3.cxx:3546
 TSpectrum3.cxx:3547
 TSpectrum3.cxx:3548
 TSpectrum3.cxx:3549
 TSpectrum3.cxx:3550
 TSpectrum3.cxx:3551
 TSpectrum3.cxx:3552
 TSpectrum3.cxx:3553
 TSpectrum3.cxx:3554
 TSpectrum3.cxx:3555
 TSpectrum3.cxx:3556
 TSpectrum3.cxx:3557
 TSpectrum3.cxx:3558
 TSpectrum3.cxx:3559
 TSpectrum3.cxx:3560
 TSpectrum3.cxx:3561
 TSpectrum3.cxx:3562
 TSpectrum3.cxx:3563
 TSpectrum3.cxx:3564
 TSpectrum3.cxx:3565
 TSpectrum3.cxx:3566
 TSpectrum3.cxx:3567
 TSpectrum3.cxx:3568
 TSpectrum3.cxx:3569
 TSpectrum3.cxx:3570
 TSpectrum3.cxx:3571
 TSpectrum3.cxx:3572
 TSpectrum3.cxx:3573
 TSpectrum3.cxx:3574
 TSpectrum3.cxx:3575
 TSpectrum3.cxx:3576
 TSpectrum3.cxx:3577
 TSpectrum3.cxx:3578
 TSpectrum3.cxx:3579
 TSpectrum3.cxx:3580
 TSpectrum3.cxx:3581
 TSpectrum3.cxx:3582
 TSpectrum3.cxx:3583
 TSpectrum3.cxx:3584
 TSpectrum3.cxx:3585
 TSpectrum3.cxx:3586
 TSpectrum3.cxx:3587
 TSpectrum3.cxx:3588
 TSpectrum3.cxx:3589
 TSpectrum3.cxx:3590
 TSpectrum3.cxx:3591
 TSpectrum3.cxx:3592
 TSpectrum3.cxx:3593
 TSpectrum3.cxx:3594
 TSpectrum3.cxx:3595
 TSpectrum3.cxx:3596
 TSpectrum3.cxx:3597
 TSpectrum3.cxx:3598
 TSpectrum3.cxx:3599
 TSpectrum3.cxx:3600
 TSpectrum3.cxx:3601
 TSpectrum3.cxx:3602
 TSpectrum3.cxx:3603
 TSpectrum3.cxx:3604
 TSpectrum3.cxx:3605
 TSpectrum3.cxx:3606
 TSpectrum3.cxx:3607
 TSpectrum3.cxx:3608
 TSpectrum3.cxx:3609
 TSpectrum3.cxx:3610
 TSpectrum3.cxx:3611
 TSpectrum3.cxx:3612
 TSpectrum3.cxx:3613
 TSpectrum3.cxx:3614
 TSpectrum3.cxx:3615
 TSpectrum3.cxx:3616
 TSpectrum3.cxx:3617
 TSpectrum3.cxx:3618
 TSpectrum3.cxx:3619
 TSpectrum3.cxx:3620
 TSpectrum3.cxx:3621
 TSpectrum3.cxx:3622
 TSpectrum3.cxx:3623
 TSpectrum3.cxx:3624
 TSpectrum3.cxx:3625
 TSpectrum3.cxx:3626
 TSpectrum3.cxx:3627
 TSpectrum3.cxx:3628
 TSpectrum3.cxx:3629
 TSpectrum3.cxx:3630
 TSpectrum3.cxx:3631
 TSpectrum3.cxx:3632
 TSpectrum3.cxx:3633
 TSpectrum3.cxx:3634
 TSpectrum3.cxx:3635
 TSpectrum3.cxx:3636
 TSpectrum3.cxx:3637
 TSpectrum3.cxx:3638
 TSpectrum3.cxx:3639
 TSpectrum3.cxx:3640
 TSpectrum3.cxx:3641
 TSpectrum3.cxx:3642
 TSpectrum3.cxx:3643
 TSpectrum3.cxx:3644
 TSpectrum3.cxx:3645
 TSpectrum3.cxx:3646
 TSpectrum3.cxx:3647
 TSpectrum3.cxx:3648
 TSpectrum3.cxx:3649
 TSpectrum3.cxx:3650
 TSpectrum3.cxx:3651
 TSpectrum3.cxx:3652
 TSpectrum3.cxx:3653
 TSpectrum3.cxx:3654
 TSpectrum3.cxx:3655
 TSpectrum3.cxx:3656
 TSpectrum3.cxx:3657
 TSpectrum3.cxx:3658
 TSpectrum3.cxx:3659
 TSpectrum3.cxx:3660
 TSpectrum3.cxx:3661
 TSpectrum3.cxx:3662
 TSpectrum3.cxx:3663
 TSpectrum3.cxx:3664
 TSpectrum3.cxx:3665
 TSpectrum3.cxx:3666
 TSpectrum3.cxx:3667
 TSpectrum3.cxx:3668
 TSpectrum3.cxx:3669
 TSpectrum3.cxx:3670
 TSpectrum3.cxx:3671
 TSpectrum3.cxx:3672
 TSpectrum3.cxx:3673
 TSpectrum3.cxx:3674
 TSpectrum3.cxx:3675
 TSpectrum3.cxx:3676
 TSpectrum3.cxx:3677
 TSpectrum3.cxx:3678
 TSpectrum3.cxx:3679
 TSpectrum3.cxx:3680
 TSpectrum3.cxx:3681
 TSpectrum3.cxx:3682
 TSpectrum3.cxx:3683
 TSpectrum3.cxx:3684
 TSpectrum3.cxx:3685
 TSpectrum3.cxx:3686
 TSpectrum3.cxx:3687
 TSpectrum3.cxx:3688
 TSpectrum3.cxx:3689
 TSpectrum3.cxx:3690
 TSpectrum3.cxx:3691
 TSpectrum3.cxx:3692
 TSpectrum3.cxx:3693
 TSpectrum3.cxx:3694
 TSpectrum3.cxx:3695
 TSpectrum3.cxx:3696
 TSpectrum3.cxx:3697
 TSpectrum3.cxx:3698
 TSpectrum3.cxx:3699
 TSpectrum3.cxx:3700
 TSpectrum3.cxx:3701
 TSpectrum3.cxx:3702
 TSpectrum3.cxx:3703
 TSpectrum3.cxx:3704
 TSpectrum3.cxx:3705
 TSpectrum3.cxx:3706
 TSpectrum3.cxx:3707
 TSpectrum3.cxx:3708
 TSpectrum3.cxx:3709
 TSpectrum3.cxx:3710
 TSpectrum3.cxx:3711
 TSpectrum3.cxx:3712
 TSpectrum3.cxx:3713
 TSpectrum3.cxx:3714
 TSpectrum3.cxx:3715
 TSpectrum3.cxx:3716
 TSpectrum3.cxx:3717
 TSpectrum3.cxx:3718
 TSpectrum3.cxx:3719
 TSpectrum3.cxx:3720
 TSpectrum3.cxx:3721
 TSpectrum3.cxx:3722
 TSpectrum3.cxx:3723
 TSpectrum3.cxx:3724
 TSpectrum3.cxx:3725
 TSpectrum3.cxx:3726
 TSpectrum3.cxx:3727
 TSpectrum3.cxx:3728
 TSpectrum3.cxx:3729
 TSpectrum3.cxx:3730
 TSpectrum3.cxx:3731
 TSpectrum3.cxx:3732
 TSpectrum3.cxx:3733
 TSpectrum3.cxx:3734
 TSpectrum3.cxx:3735
 TSpectrum3.cxx:3736
 TSpectrum3.cxx:3737
 TSpectrum3.cxx:3738
 TSpectrum3.cxx:3739
 TSpectrum3.cxx:3740
 TSpectrum3.cxx:3741
 TSpectrum3.cxx:3742
 TSpectrum3.cxx:3743
 TSpectrum3.cxx:3744
 TSpectrum3.cxx:3745
 TSpectrum3.cxx:3746
 TSpectrum3.cxx:3747
 TSpectrum3.cxx:3748
 TSpectrum3.cxx:3749
 TSpectrum3.cxx:3750
 TSpectrum3.cxx:3751
 TSpectrum3.cxx:3752
 TSpectrum3.cxx:3753
 TSpectrum3.cxx:3754
 TSpectrum3.cxx:3755
 TSpectrum3.cxx:3756
 TSpectrum3.cxx:3757
 TSpectrum3.cxx:3758
 TSpectrum3.cxx:3759
 TSpectrum3.cxx:3760
 TSpectrum3.cxx:3761
 TSpectrum3.cxx:3762
 TSpectrum3.cxx:3763
 TSpectrum3.cxx:3764
 TSpectrum3.cxx:3765
 TSpectrum3.cxx:3766
 TSpectrum3.cxx:3767
 TSpectrum3.cxx:3768
 TSpectrum3.cxx:3769
 TSpectrum3.cxx:3770
 TSpectrum3.cxx:3771
 TSpectrum3.cxx:3772
 TSpectrum3.cxx:3773
 TSpectrum3.cxx:3774
 TSpectrum3.cxx:3775
 TSpectrum3.cxx:3776
 TSpectrum3.cxx:3777
 TSpectrum3.cxx:3778
 TSpectrum3.cxx:3779
 TSpectrum3.cxx:3780
 TSpectrum3.cxx:3781
 TSpectrum3.cxx:3782
 TSpectrum3.cxx:3783
 TSpectrum3.cxx:3784
 TSpectrum3.cxx:3785
 TSpectrum3.cxx:3786
 TSpectrum3.cxx:3787
 TSpectrum3.cxx:3788
 TSpectrum3.cxx:3789
 TSpectrum3.cxx:3790
 TSpectrum3.cxx:3791
 TSpectrum3.cxx:3792
 TSpectrum3.cxx:3793
 TSpectrum3.cxx:3794
 TSpectrum3.cxx:3795
 TSpectrum3.cxx:3796
 TSpectrum3.cxx:3797
 TSpectrum3.cxx:3798
 TSpectrum3.cxx:3799
 TSpectrum3.cxx:3800
 TSpectrum3.cxx:3801
 TSpectrum3.cxx:3802
 TSpectrum3.cxx:3803
 TSpectrum3.cxx:3804
 TSpectrum3.cxx:3805
 TSpectrum3.cxx:3806
 TSpectrum3.cxx:3807
 TSpectrum3.cxx:3808
 TSpectrum3.cxx:3809
 TSpectrum3.cxx:3810
 TSpectrum3.cxx:3811
 TSpectrum3.cxx:3812
 TSpectrum3.cxx:3813
 TSpectrum3.cxx:3814
 TSpectrum3.cxx:3815
 TSpectrum3.cxx:3816
 TSpectrum3.cxx:3817
 TSpectrum3.cxx:3818
 TSpectrum3.cxx:3819
 TSpectrum3.cxx:3820
 TSpectrum3.cxx:3821
 TSpectrum3.cxx:3822
 TSpectrum3.cxx:3823
 TSpectrum3.cxx:3824
 TSpectrum3.cxx:3825
 TSpectrum3.cxx:3826
 TSpectrum3.cxx:3827
 TSpectrum3.cxx:3828
 TSpectrum3.cxx:3829
 TSpectrum3.cxx:3830
 TSpectrum3.cxx:3831
 TSpectrum3.cxx:3832
 TSpectrum3.cxx:3833
 TSpectrum3.cxx:3834
 TSpectrum3.cxx:3835
 TSpectrum3.cxx:3836
 TSpectrum3.cxx:3837
 TSpectrum3.cxx:3838
 TSpectrum3.cxx:3839
 TSpectrum3.cxx:3840
 TSpectrum3.cxx:3841
 TSpectrum3.cxx:3842
 TSpectrum3.cxx:3843
 TSpectrum3.cxx:3844
 TSpectrum3.cxx:3845
 TSpectrum3.cxx:3846
 TSpectrum3.cxx:3847
 TSpectrum3.cxx:3848
 TSpectrum3.cxx:3849
 TSpectrum3.cxx:3850
 TSpectrum3.cxx:3851
 TSpectrum3.cxx:3852
 TSpectrum3.cxx:3853
 TSpectrum3.cxx:3854
 TSpectrum3.cxx:3855
 TSpectrum3.cxx:3856
 TSpectrum3.cxx:3857
 TSpectrum3.cxx:3858
 TSpectrum3.cxx:3859
 TSpectrum3.cxx:3860
 TSpectrum3.cxx:3861
 TSpectrum3.cxx:3862
 TSpectrum3.cxx:3863
 TSpectrum3.cxx:3864
 TSpectrum3.cxx:3865
 TSpectrum3.cxx:3866
 TSpectrum3.cxx:3867
 TSpectrum3.cxx:3868
 TSpectrum3.cxx:3869
 TSpectrum3.cxx:3870
 TSpectrum3.cxx:3871
 TSpectrum3.cxx:3872
 TSpectrum3.cxx:3873
 TSpectrum3.cxx:3874
 TSpectrum3.cxx:3875
 TSpectrum3.cxx:3876
 TSpectrum3.cxx:3877
 TSpectrum3.cxx:3878
 TSpectrum3.cxx:3879
 TSpectrum3.cxx:3880
 TSpectrum3.cxx:3881
 TSpectrum3.cxx:3882
 TSpectrum3.cxx:3883
 TSpectrum3.cxx:3884
 TSpectrum3.cxx:3885
 TSpectrum3.cxx:3886
 TSpectrum3.cxx:3887
 TSpectrum3.cxx:3888
 TSpectrum3.cxx:3889
 TSpectrum3.cxx:3890
 TSpectrum3.cxx:3891
 TSpectrum3.cxx:3892
 TSpectrum3.cxx:3893
 TSpectrum3.cxx:3894
 TSpectrum3.cxx:3895
 TSpectrum3.cxx:3896
 TSpectrum3.cxx:3897
 TSpectrum3.cxx:3898
 TSpectrum3.cxx:3899
 TSpectrum3.cxx:3900
 TSpectrum3.cxx:3901
 TSpectrum3.cxx:3902
 TSpectrum3.cxx:3903
 TSpectrum3.cxx:3904
 TSpectrum3.cxx:3905
 TSpectrum3.cxx:3906
 TSpectrum3.cxx:3907
 TSpectrum3.cxx:3908
 TSpectrum3.cxx:3909
 TSpectrum3.cxx:3910
 TSpectrum3.cxx:3911
 TSpectrum3.cxx:3912
 TSpectrum3.cxx:3913
 TSpectrum3.cxx:3914
 TSpectrum3.cxx:3915
 TSpectrum3.cxx:3916
 TSpectrum3.cxx:3917
 TSpectrum3.cxx:3918
 TSpectrum3.cxx:3919
 TSpectrum3.cxx:3920
 TSpectrum3.cxx:3921
 TSpectrum3.cxx:3922
 TSpectrum3.cxx:3923
 TSpectrum3.cxx:3924
 TSpectrum3.cxx:3925
 TSpectrum3.cxx:3926
 TSpectrum3.cxx:3927
 TSpectrum3.cxx:3928
 TSpectrum3.cxx:3929
 TSpectrum3.cxx:3930
 TSpectrum3.cxx:3931
 TSpectrum3.cxx:3932
 TSpectrum3.cxx:3933
 TSpectrum3.cxx:3934
 TSpectrum3.cxx:3935
 TSpectrum3.cxx:3936
 TSpectrum3.cxx:3937
 TSpectrum3.cxx:3938
 TSpectrum3.cxx:3939
 TSpectrum3.cxx:3940
 TSpectrum3.cxx:3941
 TSpectrum3.cxx:3942
 TSpectrum3.cxx:3943
 TSpectrum3.cxx:3944
 TSpectrum3.cxx:3945
 TSpectrum3.cxx:3946
 TSpectrum3.cxx:3947
 TSpectrum3.cxx:3948
 TSpectrum3.cxx:3949
 TSpectrum3.cxx:3950
 TSpectrum3.cxx:3951
 TSpectrum3.cxx:3952
 TSpectrum3.cxx:3953
 TSpectrum3.cxx:3954
 TSpectrum3.cxx:3955
 TSpectrum3.cxx:3956
 TSpectrum3.cxx:3957
 TSpectrum3.cxx:3958
 TSpectrum3.cxx:3959
 TSpectrum3.cxx:3960
 TSpectrum3.cxx:3961
 TSpectrum3.cxx:3962
 TSpectrum3.cxx:3963
 TSpectrum3.cxx:3964
 TSpectrum3.cxx:3965
 TSpectrum3.cxx:3966
 TSpectrum3.cxx:3967
 TSpectrum3.cxx:3968
 TSpectrum3.cxx:3969
 TSpectrum3.cxx:3970
 TSpectrum3.cxx:3971
 TSpectrum3.cxx:3972
 TSpectrum3.cxx:3973
 TSpectrum3.cxx:3974
 TSpectrum3.cxx:3975
 TSpectrum3.cxx:3976
 TSpectrum3.cxx:3977
 TSpectrum3.cxx:3978
 TSpectrum3.cxx:3979
 TSpectrum3.cxx:3980
 TSpectrum3.cxx:3981
 TSpectrum3.cxx:3982
 TSpectrum3.cxx:3983
 TSpectrum3.cxx:3984
 TSpectrum3.cxx:3985
 TSpectrum3.cxx:3986
 TSpectrum3.cxx:3987
 TSpectrum3.cxx:3988
 TSpectrum3.cxx:3989
 TSpectrum3.cxx:3990
 TSpectrum3.cxx:3991
 TSpectrum3.cxx:3992
 TSpectrum3.cxx:3993
 TSpectrum3.cxx:3994
 TSpectrum3.cxx:3995
 TSpectrum3.cxx:3996
 TSpectrum3.cxx:3997
 TSpectrum3.cxx:3998
 TSpectrum3.cxx:3999
 TSpectrum3.cxx:4000
 TSpectrum3.cxx:4001
 TSpectrum3.cxx:4002
 TSpectrum3.cxx:4003
 TSpectrum3.cxx:4004
 TSpectrum3.cxx:4005
 TSpectrum3.cxx:4006
 TSpectrum3.cxx:4007
 TSpectrum3.cxx:4008
 TSpectrum3.cxx:4009
 TSpectrum3.cxx:4010
 TSpectrum3.cxx:4011
 TSpectrum3.cxx:4012
 TSpectrum3.cxx:4013
 TSpectrum3.cxx:4014
 TSpectrum3.cxx:4015
 TSpectrum3.cxx:4016
 TSpectrum3.cxx:4017
 TSpectrum3.cxx:4018
 TSpectrum3.cxx:4019
 TSpectrum3.cxx:4020
 TSpectrum3.cxx:4021
 TSpectrum3.cxx:4022
 TSpectrum3.cxx:4023
 TSpectrum3.cxx:4024
 TSpectrum3.cxx:4025
 TSpectrum3.cxx:4026
 TSpectrum3.cxx:4027
 TSpectrum3.cxx:4028
 TSpectrum3.cxx:4029
 TSpectrum3.cxx:4030
 TSpectrum3.cxx:4031
 TSpectrum3.cxx:4032
 TSpectrum3.cxx:4033
 TSpectrum3.cxx:4034
 TSpectrum3.cxx:4035
 TSpectrum3.cxx:4036
 TSpectrum3.cxx:4037
 TSpectrum3.cxx:4038
 TSpectrum3.cxx:4039
 TSpectrum3.cxx:4040
 TSpectrum3.cxx:4041
 TSpectrum3.cxx:4042
 TSpectrum3.cxx:4043
 TSpectrum3.cxx:4044
 TSpectrum3.cxx:4045
 TSpectrum3.cxx:4046
 TSpectrum3.cxx:4047
 TSpectrum3.cxx:4048
 TSpectrum3.cxx:4049
 TSpectrum3.cxx:4050
 TSpectrum3.cxx:4051
 TSpectrum3.cxx:4052
 TSpectrum3.cxx:4053
 TSpectrum3.cxx:4054
 TSpectrum3.cxx:4055
 TSpectrum3.cxx:4056
 TSpectrum3.cxx:4057
 TSpectrum3.cxx:4058
 TSpectrum3.cxx:4059
 TSpectrum3.cxx:4060
 TSpectrum3.cxx:4061
 TSpectrum3.cxx:4062
 TSpectrum3.cxx:4063
 TSpectrum3.cxx:4064
 TSpectrum3.cxx:4065
 TSpectrum3.cxx:4066
 TSpectrum3.cxx:4067
 TSpectrum3.cxx:4068
 TSpectrum3.cxx:4069
 TSpectrum3.cxx:4070
 TSpectrum3.cxx:4071
 TSpectrum3.cxx:4072
 TSpectrum3.cxx:4073
 TSpectrum3.cxx:4074
 TSpectrum3.cxx:4075
 TSpectrum3.cxx:4076
 TSpectrum3.cxx:4077
 TSpectrum3.cxx:4078
 TSpectrum3.cxx:4079
 TSpectrum3.cxx:4080
 TSpectrum3.cxx:4081
 TSpectrum3.cxx:4082
 TSpectrum3.cxx:4083
 TSpectrum3.cxx:4084
 TSpectrum3.cxx:4085
 TSpectrum3.cxx:4086
 TSpectrum3.cxx:4087
 TSpectrum3.cxx:4088
 TSpectrum3.cxx:4089
 TSpectrum3.cxx:4090
 TSpectrum3.cxx:4091
 TSpectrum3.cxx:4092
 TSpectrum3.cxx:4093
 TSpectrum3.cxx:4094
 TSpectrum3.cxx:4095
 TSpectrum3.cxx:4096
 TSpectrum3.cxx:4097
 TSpectrum3.cxx:4098
 TSpectrum3.cxx:4099
 TSpectrum3.cxx:4100
 TSpectrum3.cxx:4101
 TSpectrum3.cxx:4102
 TSpectrum3.cxx:4103
 TSpectrum3.cxx:4104
 TSpectrum3.cxx:4105
 TSpectrum3.cxx:4106
 TSpectrum3.cxx:4107
 TSpectrum3.cxx:4108
 TSpectrum3.cxx:4109
 TSpectrum3.cxx:4110
 TSpectrum3.cxx:4111
 TSpectrum3.cxx:4112
 TSpectrum3.cxx:4113
 TSpectrum3.cxx:4114
 TSpectrum3.cxx:4115
 TSpectrum3.cxx:4116
 TSpectrum3.cxx:4117
 TSpectrum3.cxx:4118
 TSpectrum3.cxx:4119
 TSpectrum3.cxx:4120
 TSpectrum3.cxx:4121
 TSpectrum3.cxx:4122
 TSpectrum3.cxx:4123
 TSpectrum3.cxx:4124
 TSpectrum3.cxx:4125
 TSpectrum3.cxx:4126
 TSpectrum3.cxx:4127
 TSpectrum3.cxx:4128
 TSpectrum3.cxx:4129
 TSpectrum3.cxx:4130
 TSpectrum3.cxx:4131
 TSpectrum3.cxx:4132
 TSpectrum3.cxx:4133
 TSpectrum3.cxx:4134
 TSpectrum3.cxx:4135
 TSpectrum3.cxx:4136
 TSpectrum3.cxx:4137
 TSpectrum3.cxx:4138
 TSpectrum3.cxx:4139
 TSpectrum3.cxx:4140
 TSpectrum3.cxx:4141
 TSpectrum3.cxx:4142
 TSpectrum3.cxx:4143
 TSpectrum3.cxx:4144
 TSpectrum3.cxx:4145
 TSpectrum3.cxx:4146
 TSpectrum3.cxx:4147
 TSpectrum3.cxx:4148
 TSpectrum3.cxx:4149
 TSpectrum3.cxx:4150
 TSpectrum3.cxx:4151
 TSpectrum3.cxx:4152
 TSpectrum3.cxx:4153
 TSpectrum3.cxx:4154
 TSpectrum3.cxx:4155
 TSpectrum3.cxx:4156
 TSpectrum3.cxx:4157
 TSpectrum3.cxx:4158
 TSpectrum3.cxx:4159
 TSpectrum3.cxx:4160
 TSpectrum3.cxx:4161
 TSpectrum3.cxx:4162
 TSpectrum3.cxx:4163
 TSpectrum3.cxx:4164
 TSpectrum3.cxx:4165
 TSpectrum3.cxx:4166
 TSpectrum3.cxx:4167
 TSpectrum3.cxx:4168
 TSpectrum3.cxx:4169
 TSpectrum3.cxx:4170
 TSpectrum3.cxx:4171
 TSpectrum3.cxx:4172
 TSpectrum3.cxx:4173
 TSpectrum3.cxx:4174
 TSpectrum3.cxx:4175
 TSpectrum3.cxx:4176
 TSpectrum3.cxx:4177
 TSpectrum3.cxx:4178
 TSpectrum3.cxx:4179
 TSpectrum3.cxx:4180
 TSpectrum3.cxx:4181
 TSpectrum3.cxx:4182
 TSpectrum3.cxx:4183
 TSpectrum3.cxx:4184
 TSpectrum3.cxx:4185
 TSpectrum3.cxx:4186
 TSpectrum3.cxx:4187
 TSpectrum3.cxx:4188
 TSpectrum3.cxx:4189
 TSpectrum3.cxx:4190
 TSpectrum3.cxx:4191
 TSpectrum3.cxx:4192
 TSpectrum3.cxx:4193
 TSpectrum3.cxx:4194
 TSpectrum3.cxx:4195
 TSpectrum3.cxx:4196
 TSpectrum3.cxx:4197
 TSpectrum3.cxx:4198
 TSpectrum3.cxx:4199
 TSpectrum3.cxx:4200
 TSpectrum3.cxx:4201
 TSpectrum3.cxx:4202
 TSpectrum3.cxx:4203
 TSpectrum3.cxx:4204
 TSpectrum3.cxx:4205
 TSpectrum3.cxx:4206
 TSpectrum3.cxx:4207
 TSpectrum3.cxx:4208
 TSpectrum3.cxx:4209
 TSpectrum3.cxx:4210
 TSpectrum3.cxx:4211
 TSpectrum3.cxx:4212
 TSpectrum3.cxx:4213
 TSpectrum3.cxx:4214
 TSpectrum3.cxx:4215
 TSpectrum3.cxx:4216
 TSpectrum3.cxx:4217
 TSpectrum3.cxx:4218
 TSpectrum3.cxx:4219
 TSpectrum3.cxx:4220
 TSpectrum3.cxx:4221
 TSpectrum3.cxx:4222
 TSpectrum3.cxx:4223
 TSpectrum3.cxx:4224
 TSpectrum3.cxx:4225
 TSpectrum3.cxx:4226
 TSpectrum3.cxx:4227
 TSpectrum3.cxx:4228
 TSpectrum3.cxx:4229
 TSpectrum3.cxx:4230
 TSpectrum3.cxx:4231
 TSpectrum3.cxx:4232
 TSpectrum3.cxx:4233
 TSpectrum3.cxx:4234
 TSpectrum3.cxx:4235
 TSpectrum3.cxx:4236
 TSpectrum3.cxx:4237
 TSpectrum3.cxx:4238
 TSpectrum3.cxx:4239
 TSpectrum3.cxx:4240
 TSpectrum3.cxx:4241
 TSpectrum3.cxx:4242
 TSpectrum3.cxx:4243
 TSpectrum3.cxx:4244
 TSpectrum3.cxx:4245
 TSpectrum3.cxx:4246
 TSpectrum3.cxx:4247
 TSpectrum3.cxx:4248
 TSpectrum3.cxx:4249
 TSpectrum3.cxx:4250
 TSpectrum3.cxx:4251
 TSpectrum3.cxx:4252
 TSpectrum3.cxx:4253
 TSpectrum3.cxx:4254
 TSpectrum3.cxx:4255
 TSpectrum3.cxx:4256
 TSpectrum3.cxx:4257
 TSpectrum3.cxx:4258
 TSpectrum3.cxx:4259
 TSpectrum3.cxx:4260
 TSpectrum3.cxx:4261
 TSpectrum3.cxx:4262
 TSpectrum3.cxx:4263
 TSpectrum3.cxx:4264
 TSpectrum3.cxx:4265
 TSpectrum3.cxx:4266
 TSpectrum3.cxx:4267
 TSpectrum3.cxx:4268
 TSpectrum3.cxx:4269
 TSpectrum3.cxx:4270
 TSpectrum3.cxx:4271
 TSpectrum3.cxx:4272
 TSpectrum3.cxx:4273
 TSpectrum3.cxx:4274
 TSpectrum3.cxx:4275
 TSpectrum3.cxx:4276
 TSpectrum3.cxx:4277
 TSpectrum3.cxx:4278
 TSpectrum3.cxx:4279
 TSpectrum3.cxx:4280
 TSpectrum3.cxx:4281
 TSpectrum3.cxx:4282
 TSpectrum3.cxx:4283
 TSpectrum3.cxx:4284
 TSpectrum3.cxx:4285
 TSpectrum3.cxx:4286
 TSpectrum3.cxx:4287
 TSpectrum3.cxx:4288
 TSpectrum3.cxx:4289
 TSpectrum3.cxx:4290
 TSpectrum3.cxx:4291
 TSpectrum3.cxx:4292
 TSpectrum3.cxx:4293
 TSpectrum3.cxx:4294
 TSpectrum3.cxx:4295
 TSpectrum3.cxx:4296
 TSpectrum3.cxx:4297
 TSpectrum3.cxx:4298
 TSpectrum3.cxx:4299
 TSpectrum3.cxx:4300
 TSpectrum3.cxx:4301
 TSpectrum3.cxx:4302
 TSpectrum3.cxx:4303
 TSpectrum3.cxx:4304
 TSpectrum3.cxx:4305
 TSpectrum3.cxx:4306
 TSpectrum3.cxx:4307
 TSpectrum3.cxx:4308
 TSpectrum3.cxx:4309
 TSpectrum3.cxx:4310
 TSpectrum3.cxx:4311
 TSpectrum3.cxx:4312
 TSpectrum3.cxx:4313
 TSpectrum3.cxx:4314
 TSpectrum3.cxx:4315
 TSpectrum3.cxx:4316
 TSpectrum3.cxx:4317
 TSpectrum3.cxx:4318
 TSpectrum3.cxx:4319
 TSpectrum3.cxx:4320
 TSpectrum3.cxx:4321
 TSpectrum3.cxx:4322
 TSpectrum3.cxx:4323
 TSpectrum3.cxx:4324
 TSpectrum3.cxx:4325
 TSpectrum3.cxx:4326
 TSpectrum3.cxx:4327
 TSpectrum3.cxx:4328
 TSpectrum3.cxx:4329
 TSpectrum3.cxx:4330
 TSpectrum3.cxx:4331
 TSpectrum3.cxx:4332
 TSpectrum3.cxx:4333
 TSpectrum3.cxx:4334
 TSpectrum3.cxx:4335
 TSpectrum3.cxx:4336
 TSpectrum3.cxx:4337
 TSpectrum3.cxx:4338
 TSpectrum3.cxx:4339
 TSpectrum3.cxx:4340
 TSpectrum3.cxx:4341
 TSpectrum3.cxx:4342
 TSpectrum3.cxx:4343
 TSpectrum3.cxx:4344
 TSpectrum3.cxx:4345
 TSpectrum3.cxx:4346
 TSpectrum3.cxx:4347
 TSpectrum3.cxx:4348
 TSpectrum3.cxx:4349
 TSpectrum3.cxx:4350
 TSpectrum3.cxx:4351
 TSpectrum3.cxx:4352
 TSpectrum3.cxx:4353
 TSpectrum3.cxx:4354
 TSpectrum3.cxx:4355
 TSpectrum3.cxx:4356
 TSpectrum3.cxx:4357
 TSpectrum3.cxx:4358
 TSpectrum3.cxx:4359
 TSpectrum3.cxx:4360
 TSpectrum3.cxx:4361
 TSpectrum3.cxx:4362
 TSpectrum3.cxx:4363
 TSpectrum3.cxx:4364
 TSpectrum3.cxx:4365
 TSpectrum3.cxx:4366
 TSpectrum3.cxx:4367
 TSpectrum3.cxx:4368
 TSpectrum3.cxx:4369
 TSpectrum3.cxx:4370
 TSpectrum3.cxx:4371
 TSpectrum3.cxx:4372
 TSpectrum3.cxx:4373
 TSpectrum3.cxx:4374
 TSpectrum3.cxx:4375
 TSpectrum3.cxx:4376
 TSpectrum3.cxx:4377
 TSpectrum3.cxx:4378
 TSpectrum3.cxx:4379
 TSpectrum3.cxx:4380
 TSpectrum3.cxx:4381
 TSpectrum3.cxx:4382
 TSpectrum3.cxx:4383
 TSpectrum3.cxx:4384
 TSpectrum3.cxx:4385
 TSpectrum3.cxx:4386
 TSpectrum3.cxx:4387
 TSpectrum3.cxx:4388
 TSpectrum3.cxx:4389
 TSpectrum3.cxx:4390
 TSpectrum3.cxx:4391
 TSpectrum3.cxx:4392
 TSpectrum3.cxx:4393
 TSpectrum3.cxx:4394
 TSpectrum3.cxx:4395
 TSpectrum3.cxx:4396
 TSpectrum3.cxx:4397
 TSpectrum3.cxx:4398
 TSpectrum3.cxx:4399
 TSpectrum3.cxx:4400
 TSpectrum3.cxx:4401
 TSpectrum3.cxx:4402
 TSpectrum3.cxx:4403
 TSpectrum3.cxx:4404
 TSpectrum3.cxx:4405
 TSpectrum3.cxx:4406
 TSpectrum3.cxx:4407
 TSpectrum3.cxx:4408
 TSpectrum3.cxx:4409
 TSpectrum3.cxx:4410
 TSpectrum3.cxx:4411
 TSpectrum3.cxx:4412
 TSpectrum3.cxx:4413
 TSpectrum3.cxx:4414
 TSpectrum3.cxx:4415
 TSpectrum3.cxx:4416
 TSpectrum3.cxx:4417
 TSpectrum3.cxx:4418
 TSpectrum3.cxx:4419
 TSpectrum3.cxx:4420
 TSpectrum3.cxx:4421
 TSpectrum3.cxx:4422
 TSpectrum3.cxx:4423
 TSpectrum3.cxx:4424
 TSpectrum3.cxx:4425
 TSpectrum3.cxx:4426
 TSpectrum3.cxx:4427
 TSpectrum3.cxx:4428
 TSpectrum3.cxx:4429
 TSpectrum3.cxx:4430
 TSpectrum3.cxx:4431
 TSpectrum3.cxx:4432
 TSpectrum3.cxx:4433
 TSpectrum3.cxx:4434
 TSpectrum3.cxx:4435
 TSpectrum3.cxx:4436
 TSpectrum3.cxx:4437
 TSpectrum3.cxx:4438
 TSpectrum3.cxx:4439
 TSpectrum3.cxx:4440
 TSpectrum3.cxx:4441
 TSpectrum3.cxx:4442
 TSpectrum3.cxx:4443
 TSpectrum3.cxx:4444
 TSpectrum3.cxx:4445
 TSpectrum3.cxx:4446
 TSpectrum3.cxx:4447
 TSpectrum3.cxx:4448
 TSpectrum3.cxx:4449
 TSpectrum3.cxx:4450
 TSpectrum3.cxx:4451
 TSpectrum3.cxx:4452
 TSpectrum3.cxx:4453
 TSpectrum3.cxx:4454
 TSpectrum3.cxx:4455
 TSpectrum3.cxx:4456
 TSpectrum3.cxx:4457
 TSpectrum3.cxx:4458
 TSpectrum3.cxx:4459
 TSpectrum3.cxx:4460
 TSpectrum3.cxx:4461
 TSpectrum3.cxx:4462
 TSpectrum3.cxx:4463
 TSpectrum3.cxx:4464
 TSpectrum3.cxx:4465
 TSpectrum3.cxx:4466
 TSpectrum3.cxx:4467
 TSpectrum3.cxx:4468
 TSpectrum3.cxx:4469
 TSpectrum3.cxx:4470
 TSpectrum3.cxx:4471
 TSpectrum3.cxx:4472
 TSpectrum3.cxx:4473
 TSpectrum3.cxx:4474
 TSpectrum3.cxx:4475
 TSpectrum3.cxx:4476
 TSpectrum3.cxx:4477
 TSpectrum3.cxx:4478
 TSpectrum3.cxx:4479
 TSpectrum3.cxx:4480
 TSpectrum3.cxx:4481
 TSpectrum3.cxx:4482
 TSpectrum3.cxx:4483
 TSpectrum3.cxx:4484
 TSpectrum3.cxx:4485
 TSpectrum3.cxx:4486
 TSpectrum3.cxx:4487
 TSpectrum3.cxx:4488
 TSpectrum3.cxx:4489
 TSpectrum3.cxx:4490
 TSpectrum3.cxx:4491
 TSpectrum3.cxx:4492
 TSpectrum3.cxx:4493
 TSpectrum3.cxx:4494
 TSpectrum3.cxx:4495
 TSpectrum3.cxx:4496
 TSpectrum3.cxx:4497
 TSpectrum3.cxx:4498
 TSpectrum3.cxx:4499
 TSpectrum3.cxx:4500
 TSpectrum3.cxx:4501
 TSpectrum3.cxx:4502
 TSpectrum3.cxx:4503
 TSpectrum3.cxx:4504
 TSpectrum3.cxx:4505
 TSpectrum3.cxx:4506
 TSpectrum3.cxx:4507
 TSpectrum3.cxx:4508
 TSpectrum3.cxx:4509
 TSpectrum3.cxx:4510
 TSpectrum3.cxx:4511
 TSpectrum3.cxx:4512
 TSpectrum3.cxx:4513
 TSpectrum3.cxx:4514
 TSpectrum3.cxx:4515
 TSpectrum3.cxx:4516
 TSpectrum3.cxx:4517
 TSpectrum3.cxx:4518
 TSpectrum3.cxx:4519
 TSpectrum3.cxx:4520
 TSpectrum3.cxx:4521
 TSpectrum3.cxx:4522
 TSpectrum3.cxx:4523
 TSpectrum3.cxx:4524
 TSpectrum3.cxx:4525
 TSpectrum3.cxx:4526
 TSpectrum3.cxx:4527
 TSpectrum3.cxx:4528
 TSpectrum3.cxx:4529
 TSpectrum3.cxx:4530
 TSpectrum3.cxx:4531
 TSpectrum3.cxx:4532
 TSpectrum3.cxx:4533
 TSpectrum3.cxx:4534
 TSpectrum3.cxx:4535
 TSpectrum3.cxx:4536
 TSpectrum3.cxx:4537
 TSpectrum3.cxx:4538
 TSpectrum3.cxx:4539
 TSpectrum3.cxx:4540
 TSpectrum3.cxx:4541
 TSpectrum3.cxx:4542
 TSpectrum3.cxx:4543
 TSpectrum3.cxx:4544
 TSpectrum3.cxx:4545
 TSpectrum3.cxx:4546
 TSpectrum3.cxx:4547
 TSpectrum3.cxx:4548
 TSpectrum3.cxx:4549
 TSpectrum3.cxx:4550
 TSpectrum3.cxx:4551
 TSpectrum3.cxx:4552
 TSpectrum3.cxx:4553
 TSpectrum3.cxx:4554
 TSpectrum3.cxx:4555
 TSpectrum3.cxx:4556
 TSpectrum3.cxx:4557
 TSpectrum3.cxx:4558
 TSpectrum3.cxx:4559
 TSpectrum3.cxx:4560
 TSpectrum3.cxx:4561
 TSpectrum3.cxx:4562
 TSpectrum3.cxx:4563
 TSpectrum3.cxx:4564
 TSpectrum3.cxx:4565
 TSpectrum3.cxx:4566
 TSpectrum3.cxx:4567
 TSpectrum3.cxx:4568
 TSpectrum3.cxx:4569
 TSpectrum3.cxx:4570
 TSpectrum3.cxx:4571
 TSpectrum3.cxx:4572
 TSpectrum3.cxx:4573
 TSpectrum3.cxx:4574
 TSpectrum3.cxx:4575
 TSpectrum3.cxx:4576
 TSpectrum3.cxx:4577
 TSpectrum3.cxx:4578
 TSpectrum3.cxx:4579
 TSpectrum3.cxx:4580
 TSpectrum3.cxx:4581
 TSpectrum3.cxx:4582
 TSpectrum3.cxx:4583
 TSpectrum3.cxx:4584
 TSpectrum3.cxx:4585
 TSpectrum3.cxx:4586
 TSpectrum3.cxx:4587
 TSpectrum3.cxx:4588
 TSpectrum3.cxx:4589
 TSpectrum3.cxx:4590
 TSpectrum3.cxx:4591
 TSpectrum3.cxx:4592
 TSpectrum3.cxx:4593
 TSpectrum3.cxx:4594
 TSpectrum3.cxx:4595
 TSpectrum3.cxx:4596
 TSpectrum3.cxx:4597
 TSpectrum3.cxx:4598
 TSpectrum3.cxx:4599
 TSpectrum3.cxx:4600
 TSpectrum3.cxx:4601
 TSpectrum3.cxx:4602
 TSpectrum3.cxx:4603
 TSpectrum3.cxx:4604
 TSpectrum3.cxx:4605
 TSpectrum3.cxx:4606
 TSpectrum3.cxx:4607
 TSpectrum3.cxx:4608
 TSpectrum3.cxx:4609
 TSpectrum3.cxx:4610
 TSpectrum3.cxx:4611
 TSpectrum3.cxx:4612
 TSpectrum3.cxx:4613
 TSpectrum3.cxx:4614
 TSpectrum3.cxx:4615
 TSpectrum3.cxx:4616
 TSpectrum3.cxx:4617
 TSpectrum3.cxx:4618
 TSpectrum3.cxx:4619
 TSpectrum3.cxx:4620
 TSpectrum3.cxx:4621
 TSpectrum3.cxx:4622
 TSpectrum3.cxx:4623
 TSpectrum3.cxx:4624
 TSpectrum3.cxx:4625
 TSpectrum3.cxx:4626
 TSpectrum3.cxx:4627
 TSpectrum3.cxx:4628
 TSpectrum3.cxx:4629
 TSpectrum3.cxx:4630
 TSpectrum3.cxx:4631
 TSpectrum3.cxx:4632
 TSpectrum3.cxx:4633
 TSpectrum3.cxx:4634
 TSpectrum3.cxx:4635
 TSpectrum3.cxx:4636
 TSpectrum3.cxx:4637
 TSpectrum3.cxx:4638
 TSpectrum3.cxx:4639
 TSpectrum3.cxx:4640
 TSpectrum3.cxx:4641
 TSpectrum3.cxx:4642
 TSpectrum3.cxx:4643
 TSpectrum3.cxx:4644
 TSpectrum3.cxx:4645
 TSpectrum3.cxx:4646
 TSpectrum3.cxx:4647
 TSpectrum3.cxx:4648
 TSpectrum3.cxx:4649
 TSpectrum3.cxx:4650
 TSpectrum3.cxx:4651
 TSpectrum3.cxx:4652
 TSpectrum3.cxx:4653
 TSpectrum3.cxx:4654
 TSpectrum3.cxx:4655
 TSpectrum3.cxx:4656
 TSpectrum3.cxx:4657
 TSpectrum3.cxx:4658
 TSpectrum3.cxx:4659
 TSpectrum3.cxx:4660
 TSpectrum3.cxx:4661
 TSpectrum3.cxx:4662
 TSpectrum3.cxx:4663
 TSpectrum3.cxx:4664
 TSpectrum3.cxx:4665
 TSpectrum3.cxx:4666
 TSpectrum3.cxx:4667
 TSpectrum3.cxx:4668
 TSpectrum3.cxx:4669
 TSpectrum3.cxx:4670
 TSpectrum3.cxx:4671
 TSpectrum3.cxx:4672
 TSpectrum3.cxx:4673
 TSpectrum3.cxx:4674
 TSpectrum3.cxx:4675
 TSpectrum3.cxx:4676
 TSpectrum3.cxx:4677
 TSpectrum3.cxx:4678
 TSpectrum3.cxx:4679
 TSpectrum3.cxx:4680
 TSpectrum3.cxx:4681
 TSpectrum3.cxx:4682
 TSpectrum3.cxx:4683
 TSpectrum3.cxx:4684
 TSpectrum3.cxx:4685
 TSpectrum3.cxx:4686
 TSpectrum3.cxx:4687
 TSpectrum3.cxx:4688
 TSpectrum3.cxx:4689
 TSpectrum3.cxx:4690
 TSpectrum3.cxx:4691
 TSpectrum3.cxx:4692
 TSpectrum3.cxx:4693
 TSpectrum3.cxx:4694
 TSpectrum3.cxx:4695
 TSpectrum3.cxx:4696
 TSpectrum3.cxx:4697
 TSpectrum3.cxx:4698
 TSpectrum3.cxx:4699
 TSpectrum3.cxx:4700
 TSpectrum3.cxx:4701
 TSpectrum3.cxx:4702
 TSpectrum3.cxx:4703
 TSpectrum3.cxx:4704
 TSpectrum3.cxx:4705
 TSpectrum3.cxx:4706
 TSpectrum3.cxx:4707
 TSpectrum3.cxx:4708
 TSpectrum3.cxx:4709
 TSpectrum3.cxx:4710
 TSpectrum3.cxx:4711
 TSpectrum3.cxx:4712
 TSpectrum3.cxx:4713
 TSpectrum3.cxx:4714
 TSpectrum3.cxx:4715
 TSpectrum3.cxx:4716
 TSpectrum3.cxx:4717
 TSpectrum3.cxx:4718
 TSpectrum3.cxx:4719
 TSpectrum3.cxx:4720
 TSpectrum3.cxx:4721
 TSpectrum3.cxx:4722
 TSpectrum3.cxx:4723
 TSpectrum3.cxx:4724
 TSpectrum3.cxx:4725
 TSpectrum3.cxx:4726
 TSpectrum3.cxx:4727
 TSpectrum3.cxx:4728
 TSpectrum3.cxx:4729
 TSpectrum3.cxx:4730
 TSpectrum3.cxx:4731
 TSpectrum3.cxx:4732
 TSpectrum3.cxx:4733
 TSpectrum3.cxx:4734
 TSpectrum3.cxx:4735
 TSpectrum3.cxx:4736
 TSpectrum3.cxx:4737
 TSpectrum3.cxx:4738
 TSpectrum3.cxx:4739
 TSpectrum3.cxx:4740
 TSpectrum3.cxx:4741
 TSpectrum3.cxx:4742
 TSpectrum3.cxx:4743
 TSpectrum3.cxx:4744
 TSpectrum3.cxx:4745
 TSpectrum3.cxx:4746
 TSpectrum3.cxx:4747
 TSpectrum3.cxx:4748
 TSpectrum3.cxx:4749
 TSpectrum3.cxx:4750
 TSpectrum3.cxx:4751
 TSpectrum3.cxx:4752
 TSpectrum3.cxx:4753
 TSpectrum3.cxx:4754
 TSpectrum3.cxx:4755
 TSpectrum3.cxx:4756
 TSpectrum3.cxx:4757
 TSpectrum3.cxx:4758
 TSpectrum3.cxx:4759
 TSpectrum3.cxx:4760
 TSpectrum3.cxx:4761
 TSpectrum3.cxx:4762
 TSpectrum3.cxx:4763
 TSpectrum3.cxx:4764
 TSpectrum3.cxx:4765
 TSpectrum3.cxx:4766
 TSpectrum3.cxx:4767
 TSpectrum3.cxx:4768
 TSpectrum3.cxx:4769
 TSpectrum3.cxx:4770
 TSpectrum3.cxx:4771
 TSpectrum3.cxx:4772
 TSpectrum3.cxx:4773
 TSpectrum3.cxx:4774
 TSpectrum3.cxx:4775
 TSpectrum3.cxx:4776
 TSpectrum3.cxx:4777
 TSpectrum3.cxx:4778
 TSpectrum3.cxx:4779
 TSpectrum3.cxx:4780
 TSpectrum3.cxx:4781
 TSpectrum3.cxx:4782
 TSpectrum3.cxx:4783
 TSpectrum3.cxx:4784
 TSpectrum3.cxx:4785
 TSpectrum3.cxx:4786
 TSpectrum3.cxx:4787
 TSpectrum3.cxx:4788
 TSpectrum3.cxx:4789
 TSpectrum3.cxx:4790
 TSpectrum3.cxx:4791
 TSpectrum3.cxx:4792
 TSpectrum3.cxx:4793
 TSpectrum3.cxx:4794
 TSpectrum3.cxx:4795
 TSpectrum3.cxx:4796
 TSpectrum3.cxx:4797
 TSpectrum3.cxx:4798
 TSpectrum3.cxx:4799
 TSpectrum3.cxx:4800
 TSpectrum3.cxx:4801
 TSpectrum3.cxx:4802
 TSpectrum3.cxx:4803
 TSpectrum3.cxx:4804
 TSpectrum3.cxx:4805
 TSpectrum3.cxx:4806
 TSpectrum3.cxx:4807
 TSpectrum3.cxx:4808
 TSpectrum3.cxx:4809
 TSpectrum3.cxx:4810
 TSpectrum3.cxx:4811
 TSpectrum3.cxx:4812
 TSpectrum3.cxx:4813
 TSpectrum3.cxx:4814
 TSpectrum3.cxx:4815
 TSpectrum3.cxx:4816
 TSpectrum3.cxx:4817
 TSpectrum3.cxx:4818
 TSpectrum3.cxx:4819
 TSpectrum3.cxx:4820
 TSpectrum3.cxx:4821
 TSpectrum3.cxx:4822
 TSpectrum3.cxx:4823
 TSpectrum3.cxx:4824
 TSpectrum3.cxx:4825
 TSpectrum3.cxx:4826
 TSpectrum3.cxx:4827
 TSpectrum3.cxx:4828
 TSpectrum3.cxx:4829
 TSpectrum3.cxx:4830
 TSpectrum3.cxx:4831
 TSpectrum3.cxx:4832
 TSpectrum3.cxx:4833
 TSpectrum3.cxx:4834
 TSpectrum3.cxx:4835
 TSpectrum3.cxx:4836
 TSpectrum3.cxx:4837
 TSpectrum3.cxx:4838
 TSpectrum3.cxx:4839
 TSpectrum3.cxx:4840
 TSpectrum3.cxx:4841
 TSpectrum3.cxx:4842
 TSpectrum3.cxx:4843
 TSpectrum3.cxx:4844
 TSpectrum3.cxx:4845
 TSpectrum3.cxx:4846
 TSpectrum3.cxx:4847
 TSpectrum3.cxx:4848
 TSpectrum3.cxx:4849
 TSpectrum3.cxx:4850
 TSpectrum3.cxx:4851
 TSpectrum3.cxx:4852
 TSpectrum3.cxx:4853
 TSpectrum3.cxx:4854
 TSpectrum3.cxx:4855
 TSpectrum3.cxx:4856
 TSpectrum3.cxx:4857
 TSpectrum3.cxx:4858
 TSpectrum3.cxx:4859
 TSpectrum3.cxx:4860
 TSpectrum3.cxx:4861
 TSpectrum3.cxx:4862
 TSpectrum3.cxx:4863
 TSpectrum3.cxx:4864
 TSpectrum3.cxx:4865
 TSpectrum3.cxx:4866
 TSpectrum3.cxx:4867
 TSpectrum3.cxx:4868
 TSpectrum3.cxx:4869
 TSpectrum3.cxx:4870
 TSpectrum3.cxx:4871
 TSpectrum3.cxx:4872
 TSpectrum3.cxx:4873
 TSpectrum3.cxx:4874
 TSpectrum3.cxx:4875
 TSpectrum3.cxx:4876
 TSpectrum3.cxx:4877
 TSpectrum3.cxx:4878
 TSpectrum3.cxx:4879
 TSpectrum3.cxx:4880
 TSpectrum3.cxx:4881
 TSpectrum3.cxx:4882
 TSpectrum3.cxx:4883
 TSpectrum3.cxx:4884
 TSpectrum3.cxx:4885
 TSpectrum3.cxx:4886
 TSpectrum3.cxx:4887
 TSpectrum3.cxx:4888
 TSpectrum3.cxx:4889
 TSpectrum3.cxx:4890
 TSpectrum3.cxx:4891
 TSpectrum3.cxx:4892
 TSpectrum3.cxx:4893
 TSpectrum3.cxx:4894
 TSpectrum3.cxx:4895
 TSpectrum3.cxx:4896
 TSpectrum3.cxx:4897
 TSpectrum3.cxx:4898
 TSpectrum3.cxx:4899
 TSpectrum3.cxx:4900
 TSpectrum3.cxx:4901
 TSpectrum3.cxx:4902
 TSpectrum3.cxx:4903
 TSpectrum3.cxx:4904
 TSpectrum3.cxx:4905
 TSpectrum3.cxx:4906
 TSpectrum3.cxx:4907
 TSpectrum3.cxx:4908
 TSpectrum3.cxx:4909
 TSpectrum3.cxx:4910
 TSpectrum3.cxx:4911
 TSpectrum3.cxx:4912
 TSpectrum3.cxx:4913
 TSpectrum3.cxx:4914
 TSpectrum3.cxx:4915
 TSpectrum3.cxx:4916
 TSpectrum3.cxx:4917
 TSpectrum3.cxx:4918
 TSpectrum3.cxx:4919
 TSpectrum3.cxx:4920
 TSpectrum3.cxx:4921
 TSpectrum3.cxx:4922
 TSpectrum3.cxx:4923
 TSpectrum3.cxx:4924
 TSpectrum3.cxx:4925
 TSpectrum3.cxx:4926
 TSpectrum3.cxx:4927
 TSpectrum3.cxx:4928
 TSpectrum3.cxx:4929
 TSpectrum3.cxx:4930
 TSpectrum3.cxx:4931
 TSpectrum3.cxx:4932
 TSpectrum3.cxx:4933
 TSpectrum3.cxx:4934
 TSpectrum3.cxx:4935
 TSpectrum3.cxx:4936
 TSpectrum3.cxx:4937
 TSpectrum3.cxx:4938
 TSpectrum3.cxx:4939
 TSpectrum3.cxx:4940
 TSpectrum3.cxx:4941
 TSpectrum3.cxx:4942
 TSpectrum3.cxx:4943
 TSpectrum3.cxx:4944
 TSpectrum3.cxx:4945
 TSpectrum3.cxx:4946
 TSpectrum3.cxx:4947
 TSpectrum3.cxx:4948
 TSpectrum3.cxx:4949
 TSpectrum3.cxx:4950
 TSpectrum3.cxx:4951
 TSpectrum3.cxx:4952
 TSpectrum3.cxx:4953
 TSpectrum3.cxx:4954
 TSpectrum3.cxx:4955
 TSpectrum3.cxx:4956
 TSpectrum3.cxx:4957
 TSpectrum3.cxx:4958
 TSpectrum3.cxx:4959
 TSpectrum3.cxx:4960
 TSpectrum3.cxx:4961
 TSpectrum3.cxx:4962
 TSpectrum3.cxx:4963
 TSpectrum3.cxx:4964
 TSpectrum3.cxx:4965
 TSpectrum3.cxx:4966
 TSpectrum3.cxx:4967
 TSpectrum3.cxx:4968
 TSpectrum3.cxx:4969
 TSpectrum3.cxx:4970
 TSpectrum3.cxx:4971
 TSpectrum3.cxx:4972
 TSpectrum3.cxx:4973
 TSpectrum3.cxx:4974
 TSpectrum3.cxx:4975
 TSpectrum3.cxx:4976
 TSpectrum3.cxx:4977
 TSpectrum3.cxx:4978
 TSpectrum3.cxx:4979
 TSpectrum3.cxx:4980
 TSpectrum3.cxx:4981
 TSpectrum3.cxx:4982
 TSpectrum3.cxx:4983
 TSpectrum3.cxx:4984
 TSpectrum3.cxx:4985
 TSpectrum3.cxx:4986
 TSpectrum3.cxx:4987
 TSpectrum3.cxx:4988
 TSpectrum3.cxx:4989
 TSpectrum3.cxx:4990
 TSpectrum3.cxx:4991
 TSpectrum3.cxx:4992
 TSpectrum3.cxx:4993
 TSpectrum3.cxx:4994
 TSpectrum3.cxx:4995
 TSpectrum3.cxx:4996
 TSpectrum3.cxx:4997
 TSpectrum3.cxx:4998
 TSpectrum3.cxx:4999
 TSpectrum3.cxx:5000
 TSpectrum3.cxx:5001
 TSpectrum3.cxx:5002
 TSpectrum3.cxx:5003
 TSpectrum3.cxx:5004
 TSpectrum3.cxx:5005
 TSpectrum3.cxx:5006
 TSpectrum3.cxx:5007
 TSpectrum3.cxx:5008
 TSpectrum3.cxx:5009
 TSpectrum3.cxx:5010
 TSpectrum3.cxx:5011
 TSpectrum3.cxx:5012
 TSpectrum3.cxx:5013
 TSpectrum3.cxx:5014
 TSpectrum3.cxx:5015
 TSpectrum3.cxx:5016
 TSpectrum3.cxx:5017
 TSpectrum3.cxx:5018
 TSpectrum3.cxx:5019
 TSpectrum3.cxx:5020
 TSpectrum3.cxx:5021
 TSpectrum3.cxx:5022
 TSpectrum3.cxx:5023
 TSpectrum3.cxx:5024
 TSpectrum3.cxx:5025
 TSpectrum3.cxx:5026
 TSpectrum3.cxx:5027
 TSpectrum3.cxx:5028
 TSpectrum3.cxx:5029
 TSpectrum3.cxx:5030
 TSpectrum3.cxx:5031
 TSpectrum3.cxx:5032
 TSpectrum3.cxx:5033
 TSpectrum3.cxx:5034
 TSpectrum3.cxx:5035
 TSpectrum3.cxx:5036
 TSpectrum3.cxx:5037
 TSpectrum3.cxx:5038
 TSpectrum3.cxx:5039
 TSpectrum3.cxx:5040
 TSpectrum3.cxx:5041
 TSpectrum3.cxx:5042
 TSpectrum3.cxx:5043
 TSpectrum3.cxx:5044
 TSpectrum3.cxx:5045
 TSpectrum3.cxx:5046
 TSpectrum3.cxx:5047
 TSpectrum3.cxx:5048
 TSpectrum3.cxx:5049
 TSpectrum3.cxx:5050
 TSpectrum3.cxx:5051
 TSpectrum3.cxx:5052
 TSpectrum3.cxx:5053
 TSpectrum3.cxx:5054
 TSpectrum3.cxx:5055
 TSpectrum3.cxx:5056
 TSpectrum3.cxx:5057
 TSpectrum3.cxx:5058
 TSpectrum3.cxx:5059
 TSpectrum3.cxx:5060
 TSpectrum3.cxx:5061
 TSpectrum3.cxx:5062
 TSpectrum3.cxx:5063
 TSpectrum3.cxx:5064
 TSpectrum3.cxx:5065
 TSpectrum3.cxx:5066
 TSpectrum3.cxx:5067
 TSpectrum3.cxx:5068
 TSpectrum3.cxx:5069
 TSpectrum3.cxx:5070
 TSpectrum3.cxx:5071
 TSpectrum3.cxx:5072
 TSpectrum3.cxx:5073
 TSpectrum3.cxx:5074
 TSpectrum3.cxx:5075
 TSpectrum3.cxx:5076
 TSpectrum3.cxx:5077
 TSpectrum3.cxx:5078
 TSpectrum3.cxx:5079
 TSpectrum3.cxx:5080
 TSpectrum3.cxx:5081
 TSpectrum3.cxx:5082
 TSpectrum3.cxx:5083
 TSpectrum3.cxx:5084
 TSpectrum3.cxx:5085
 TSpectrum3.cxx:5086
 TSpectrum3.cxx:5087
 TSpectrum3.cxx:5088
 TSpectrum3.cxx:5089
 TSpectrum3.cxx:5090
 TSpectrum3.cxx:5091
 TSpectrum3.cxx:5092
 TSpectrum3.cxx:5093
 TSpectrum3.cxx:5094
 TSpectrum3.cxx:5095
 TSpectrum3.cxx:5096
 TSpectrum3.cxx:5097
 TSpectrum3.cxx:5098
 TSpectrum3.cxx:5099
 TSpectrum3.cxx:5100
 TSpectrum3.cxx:5101
 TSpectrum3.cxx:5102
 TSpectrum3.cxx:5103
 TSpectrum3.cxx:5104
 TSpectrum3.cxx:5105
 TSpectrum3.cxx:5106
 TSpectrum3.cxx:5107
 TSpectrum3.cxx:5108
 TSpectrum3.cxx:5109
 TSpectrum3.cxx:5110
 TSpectrum3.cxx:5111
 TSpectrum3.cxx:5112
 TSpectrum3.cxx:5113
 TSpectrum3.cxx:5114
 TSpectrum3.cxx:5115
 TSpectrum3.cxx:5116
 TSpectrum3.cxx:5117
 TSpectrum3.cxx:5118
 TSpectrum3.cxx:5119
 TSpectrum3.cxx:5120
 TSpectrum3.cxx:5121
 TSpectrum3.cxx:5122
 TSpectrum3.cxx:5123
 TSpectrum3.cxx:5124
 TSpectrum3.cxx:5125
 TSpectrum3.cxx:5126
 TSpectrum3.cxx:5127
 TSpectrum3.cxx:5128
 TSpectrum3.cxx:5129
 TSpectrum3.cxx:5130
 TSpectrum3.cxx:5131
 TSpectrum3.cxx:5132
 TSpectrum3.cxx:5133
 TSpectrum3.cxx:5134
 TSpectrum3.cxx:5135
 TSpectrum3.cxx:5136
 TSpectrum3.cxx:5137
 TSpectrum3.cxx:5138
 TSpectrum3.cxx:5139
 TSpectrum3.cxx:5140
 TSpectrum3.cxx:5141
 TSpectrum3.cxx:5142
 TSpectrum3.cxx:5143
 TSpectrum3.cxx:5144
 TSpectrum3.cxx:5145
 TSpectrum3.cxx:5146
 TSpectrum3.cxx:5147
 TSpectrum3.cxx:5148
 TSpectrum3.cxx:5149
 TSpectrum3.cxx:5150
 TSpectrum3.cxx:5151
 TSpectrum3.cxx:5152
 TSpectrum3.cxx:5153
 TSpectrum3.cxx:5154
 TSpectrum3.cxx:5155
 TSpectrum3.cxx:5156
 TSpectrum3.cxx:5157
 TSpectrum3.cxx:5158
 TSpectrum3.cxx:5159
 TSpectrum3.cxx:5160
 TSpectrum3.cxx:5161
 TSpectrum3.cxx:5162
 TSpectrum3.cxx:5163
 TSpectrum3.cxx:5164
 TSpectrum3.cxx:5165
 TSpectrum3.cxx:5166
 TSpectrum3.cxx:5167
 TSpectrum3.cxx:5168
 TSpectrum3.cxx:5169
 TSpectrum3.cxx:5170
 TSpectrum3.cxx:5171
 TSpectrum3.cxx:5172
 TSpectrum3.cxx:5173
 TSpectrum3.cxx:5174
 TSpectrum3.cxx:5175
 TSpectrum3.cxx:5176
 TSpectrum3.cxx:5177
 TSpectrum3.cxx:5178
 TSpectrum3.cxx:5179
 TSpectrum3.cxx:5180
 TSpectrum3.cxx:5181
 TSpectrum3.cxx:5182
 TSpectrum3.cxx:5183
 TSpectrum3.cxx:5184
 TSpectrum3.cxx:5185
 TSpectrum3.cxx:5186
 TSpectrum3.cxx:5187
 TSpectrum3.cxx:5188
 TSpectrum3.cxx:5189
 TSpectrum3.cxx:5190
 TSpectrum3.cxx:5191
 TSpectrum3.cxx:5192
 TSpectrum3.cxx:5193
 TSpectrum3.cxx:5194
 TSpectrum3.cxx:5195
 TSpectrum3.cxx:5196
 TSpectrum3.cxx:5197
 TSpectrum3.cxx:5198
 TSpectrum3.cxx:5199
 TSpectrum3.cxx:5200
 TSpectrum3.cxx:5201
 TSpectrum3.cxx:5202
 TSpectrum3.cxx:5203
 TSpectrum3.cxx:5204
 TSpectrum3.cxx:5205
 TSpectrum3.cxx:5206
 TSpectrum3.cxx:5207
 TSpectrum3.cxx:5208
 TSpectrum3.cxx:5209
 TSpectrum3.cxx:5210
 TSpectrum3.cxx:5211
 TSpectrum3.cxx:5212
 TSpectrum3.cxx:5213
 TSpectrum3.cxx:5214
 TSpectrum3.cxx:5215
 TSpectrum3.cxx:5216
 TSpectrum3.cxx:5217
 TSpectrum3.cxx:5218
 TSpectrum3.cxx:5219
 TSpectrum3.cxx:5220
 TSpectrum3.cxx:5221
 TSpectrum3.cxx:5222
 TSpectrum3.cxx:5223
 TSpectrum3.cxx:5224
 TSpectrum3.cxx:5225
 TSpectrum3.cxx:5226
 TSpectrum3.cxx:5227
 TSpectrum3.cxx:5228
 TSpectrum3.cxx:5229
 TSpectrum3.cxx:5230
 TSpectrum3.cxx:5231
 TSpectrum3.cxx:5232
 TSpectrum3.cxx:5233
 TSpectrum3.cxx:5234
 TSpectrum3.cxx:5235
 TSpectrum3.cxx:5236
 TSpectrum3.cxx:5237
 TSpectrum3.cxx:5238
 TSpectrum3.cxx:5239
 TSpectrum3.cxx:5240
 TSpectrum3.cxx:5241
 TSpectrum3.cxx:5242
 TSpectrum3.cxx:5243
 TSpectrum3.cxx:5244
 TSpectrum3.cxx:5245
 TSpectrum3.cxx:5246
 TSpectrum3.cxx:5247
 TSpectrum3.cxx:5248
 TSpectrum3.cxx:5249
 TSpectrum3.cxx:5250
 TSpectrum3.cxx:5251
 TSpectrum3.cxx:5252
 TSpectrum3.cxx:5253
 TSpectrum3.cxx:5254
 TSpectrum3.cxx:5255
 TSpectrum3.cxx:5256
 TSpectrum3.cxx:5257
 TSpectrum3.cxx:5258
 TSpectrum3.cxx:5259
 TSpectrum3.cxx:5260
 TSpectrum3.cxx:5261
 TSpectrum3.cxx:5262
 TSpectrum3.cxx:5263
 TSpectrum3.cxx:5264
 TSpectrum3.cxx:5265
 TSpectrum3.cxx:5266
 TSpectrum3.cxx:5267