ROOT logo
#ifdef SPECTRA_BUILD
#include <TAxis.h>
#include <TNamed.h>
#include <TH1.h>
#include <TH2.h>
#include <TCanvas.h>
#include <TObjArray.h>
#include <TDirectory.h>
#include <TBrowser.h>
#include <TFile.h>

namespace Spectra 
{
  //__________________________________________________________________
  /**
   * An Element 
   * 
   */
  struct Element : public TNamed
  {
    /** 
     * Destructor 
     */
    virtual ~Element() 
    { 
      if (fFull) delete fFull;
      if (fFull) delete fCut; 
      fChildren.Delete(); 
    } 
    /** 
     * Draw this element.  Draws the full histogram and the selected
     * range on top. 
     * 
     * @param option Drawing option  
     * @param l      Low cut
     * @param h      High cut
     */
    virtual void DrawIt(Option_t* option="", Double_t l=-1, Double_t h=-1) //*MENU*
    {
      if (!fFull) return;
      if (fFull->GetMinimum() < 0) gPad->SetLogy(kFALSE);
      fFull->Draw(option);
      if (!fCut || l == h) return;
      Double_t lx = fFull->GetXaxis()->GetXmin();
      Double_t hx = fFull->GetXaxis()->GetXmax();
      Double_t rr = (hx-lx);
      Double_t ll = rr * l + lx;
      Double_t hh = rr * h + lx;
      for (Int_t i = 1; i <= fFull->GetNbinsX(); i++) { 
	if (fFull->GetBinCenter(i) <= ll || 
	    fFull->GetBinCenter(i) >  hh) { 
	  fCut->SetBinContent(i, 0); 
	  continue;
	}
	fCut->SetBinContent(i, fFull->GetBinContent(i));
      }
      fCut->Draw(Form("%s same", option));
      gPad->Modified();
      gPad->Update();
      gPad->cd();
    }//*MENU*
    /** 
     * Draw 
     * 
     * @param option 
     */
    virtual void Draw(Option_t* option="") 
    {
      if (!fFull) return;
      if (fFull->GetMinimum() < 0) gPad->SetLogy(kFALSE);
      fFull->Draw(option);
      gPad->Modified();
      gPad->Update();
      gPad->cd();
    } //*MENU*
    /** 
     * Get the top-level node
     * 
     * @return Top-level node 
     */
    virtual Element& GetParent() { return *fParent; }
    /** 
     * Make the histograms 
     * 
     * @param axis Axis to use 
     */
    virtual void MakeHistograms(const TAxis& axis)
    {
      if (fFull) return;
      if (axis.GetNbins() <= 1) return;
      if (axis.IsVariableBinSize()) 
	fFull = new TH1F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 axis.GetXbins()->fN, axis.GetXbins()->fArray);
      else 
	fFull = new TH1F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 axis.GetNbins(), axis.GetXmin(), axis.GetXmax());
      fCut = static_cast<TH1F*>(fFull->Clone(Form("c_%s", GetName())));
      fCut->SetTitle(Form("%s restricted spectra", GetName()));
      fFull->SetDirectory(0);
      fFull->SetFillColor(kRed);
      fFull->SetFillStyle(3001);
      fCut->SetDirectory(0);
      fCut->SetFillColor(kBlue);
      fCut->SetFillStyle(3001);
    }
    /** 
     * Get Children
     *
     * @return Array of children
     */
    TObjArray& Children() { return fChildren; }
    /** 
     * Get Children
     *
     * @return Array of children
     */
    const TObjArray& Children() const { return fChildren; }
    /** 
     * Write to a directory 
     * 
     * @param d Directory to write to
     */
    void WriteOut(TDirectory* d) 
    {
      TDirectory* dd = d->mkdir(GetName());
      dd->cd();
      if (fFull) fFull->Write();
      if (fCut)  fCut->Write();
    
      TIter next(&fChildren); 
      Element* e = 0;
      while ((e = static_cast<Element*>(next()))) 
	e->WriteOut(dd);
      d->cd();
    }
    /** 
     * This is a folder
     * 
     * @return Always true 
     */
    virtual Bool_t IsFolder() const { return kTRUE; }
    /** 
     * Browse this element 
     * 
     * @param b Brower to use 
     */
    virtual void Browse(TBrowser* b) 
    {
      if (fFull) b->Add(fFull);
      if (fCut)  b->Add(fCut);
      
      TIter next(&fChildren);
      TObject* o = 0;
      while ((o = next())) b->Add(o);
      // if (fChildren.GetEntriesFast() > 0) b->Add(&fChildren);
    }
  protected:
    Element() : TNamed(), fFull(0), fCut(0), fParent(0), fChildren(0) {}
    /** 
     * Constructor 
     * 
     * @param name   Name 
     * @param title  Title
     */
    Element(const char* name, const char* title,  Element& parent) 
      : TNamed(name, title), fFull(0), fCut(0),
	fParent(&parent), fChildren(0)
    {
      fChildren.SetOwner();
      fChildren.SetName("children");
    }
    /** 
     * Fill value 
     * 
     * @param v Value to fill
     */
    void DoFill(Double_t v) { if (fFull) fFull->Fill(v); }
    /** 
     * Get a child or null 
     * 
     * @param id Id of child
     * 
     * @return Pointer to child, or null
     */
    Element* GetChild(UShort_t id) const 
    {
      if (id >= fChildren.GetEntriesFast()) return 0;
      return static_cast<Element*>(fChildren.At(id));
    }
    TH1*      fFull; // Full histogram
    TH1*      fCut;  // Selected data 
    Element*  fParent;
    TObjArray fChildren; 

    ClassDef(Element,1); 
  };

  //__________________________________________________________________
  struct Detector;
  /**
   * Top-level node 
   * 
   */
  struct Top : public Element
  {
    /** 
     * Constructor 
     */
    Top() : Element("top", "Top", *this), fAxis(1,0,1) {}
    /** 
     * Get or add a detector
     * 
     * @param d Detector (1-3)
     * 
     * @return Reference to detector 
     */
    Detector& GetOrAdd(UShort_t d);
    /** 
     * Fill in values 
     * 
     * @param d  Detector
     * @param r  Ring 
     * @param s  Sector
     * @param t  Strip 
     * @param v  Value 
     */
    void Fill(UShort_t d, Char_t r, UShort_t s, UShort_t t, Double_t v);
    /** 
     * Get the axis to use 
     *
     * @return Reference to axis 
     */
    const TAxis& GetAxis() const { return fAxis; }
    /** 
     * Set the axis to use 
     * 
     * @param a Axis used 
     */
    void SetAxis(const TAxis& a) 
    { 
      fAxis.Set(a.GetNbins(),a.GetXmin(),a.GetXmax()); 
    }
    void SetAxis(Int_t n, Double_t l, Double_t h) { fAxis.Set(n, l, h); }
  protected:
    TAxis fAxis; // The axis 

    ClassDef(Top,1); 
  };

  //__________________________________________________________________
  struct Ring;
  /**
   * Detector
   * 
   */
  struct Detector : public Element
  {
    Detector() : Element(), fId(0) {}
    /** 
     * Constrictor 
     * 
     * @param d    Id
     * @param top  PArent node
     * @param a    Axis 
     */
    Detector(UShort_t d, Top& top)
      : Element(Form("FMD%d", d), Form("FMD%d",d), top), fId(d)
    {}
    /** 
     * Get ID
     * 
     * @return The ID
     */
    UShort_t Id() const { return fId; } 
    /** 
     * Get or add a sub element
     * 
     * @param id Id of sub-element
     * 
     * @return Sub element
     */
    Ring& GetOrAdd(Char_t id);
    /** 
     * Fill in value 
     * 
     * @param r  Ring
     * @param s  Sector
     * @param t  Strip
     * @param v  Value
     */
    void Fill(Char_t r, UShort_t s, UShort_t t, Double_t v);

    /** 
     * Get Top
     * 
     * @return top
     */
    Top& M() { return static_cast<Top&>(*fParent); }
    /** 
     * Get Top
     * 
     * @return top
     */
    const Top& M() const { return static_cast<Top&>(*fParent); }
  protected:
    UShort_t R2Id(Char_t r) { return (r == 'I' || r == 'i') ? 0 : 1; }
    UShort_t fId;

    ClassDef(Detector,1); 
  };

  //__________________________________________________________________
  struct Sector;
  /**
   * A ring
   * 
   */
  struct Ring : public Element
  {
    Ring() : Element(), fId('\0') {}
    Ring(UShort_t r, Detector& d)
      : Element(Form("%s%c", d.GetName(), r), 
		Form("%s%c", d.GetName(), r), d), fId(r)
    {}
    /** 
     * Get ID
     * 
     * @return The ID
     */
    Char_t Id() const { return fId; } 
    /** 
     * Get or add a sub element
     * 
     * @param id Id of sub-element
     * 
     * @return Sub element
     */
    Sector& GetOrAdd(UShort_t id);
    /** 
     * Fill in value 
     * 
     * @param s  Sector
     * @param t  Strip
     * @param v  Value
     */
    void Fill(UShort_t s, UShort_t t, Double_t v);

    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    Detector& D() { return static_cast<Detector&>(*fParent); }
    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    const Detector& D() const { return static_cast<Detector&>(*fParent); }
    /** 
     * Get Top
     * 
     * @return top
     */
    Top& M() { return D().M(); }
    /** 
     * Get Top
     * 
     * @return top
     */
    const Top& M() const { return D().M(); }

    /** 
     * Draw 
     * 
     * @param option 
     */
    virtual void Draw(Option_t* option="lego2z") 
    {
      if (!fFull) return;
      gPad->SetLogy(fFull->GetMinimum() > 0);
      fFull->Draw(option);
      gPad->cd();
    } //*MENU*
    void MakeHistograms(const TAxis& axis)
    {
      if (fFull) return;
      if (axis.GetNbins() <= 1) return;
      Int_t nSec = (fId == 'I' || fId == 'i' ? 20 : 40);
      if (axis.IsVariableBinSize()) 
	fFull = new TH2F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 nSec, -.5, nSec-.5,
			 axis.GetXbins()->fN, axis.GetXbins()->fArray); 
      else 
	fFull = new TH2F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 nSec, -.5, nSec-.5,
			 axis.GetNbins(), axis.GetXmin(), axis.GetXmax());
    }
  protected:
    Char_t fId;

    ClassDef(Ring,1); 
  };


  //__________________________________________________________________
  struct Strip;
  /**
   * A sector
   * 
   */
  struct Sector : public Element
  {
    Sector() : Element(), fId(1024) {}
    Sector(UShort_t s, Ring& r)
      : Element(Form("%s[%02d]", r.GetName(), s),
		Form("%s[%02d]", r.GetName(), s), r), fId(s)
    {
    }
    /** 
     * Get ID
     * 
     * @return The ID
     */
    UShort_t Id() const { return fId; } 
    /** 
     * Get or add a sub element
     * 
     * @param id Id of sub-element
     * 
     * @return Sub element
     */
    Strip& GetOrAdd(UShort_t id);
    /** 
     * Fill in value 
     * 
     * @param t  Strip
     * @param v  Value
     */
    void Fill(UShort_t t, Double_t v); 

    /** 
     * Draw 
     * 
     * @param option 
     */
    virtual void Draw(Option_t* option="lego2z") 
    {
      if (!fFull) return;
      gPad->SetLogy(fFull->GetMinimum() > 0);
      fFull->Draw(option);
      gPad->cd();
    } //*MENU*
    void MakeHistograms(const TAxis& axis)
    {
      if (fFull) return;
      if (axis.GetNbins() <= 1) return;
      Int_t nStr = (R().Id() == 'I' || fId == 'i' ? 512 : 256);
      if (axis.IsVariableBinSize()) 
	fFull = new TH2F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 nStr, -.5, nStr-.5,
			 axis.GetXbins()->fN, axis.GetXbins()->fArray); 
      else 
	fFull = new TH2F(Form("f_%s", GetName()), Form("%s spectra", GetName()),
			 nStr, -.5, nStr-.5,
			 axis.GetNbins(), axis.GetXmin(), axis.GetXmax());
    }

    /** 
     * Get parent ring
     * 
     * @return Parent ring
     */
    Ring& R() { return static_cast<Ring&>(*fParent); }
    /** 
     * Get parent ring
     * 
     * @return Parent ring
     */
    const Ring& R() const { return static_cast<Ring&>(*fParent); }
    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    Detector& D() { return R().D(); }
    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    const Detector& D() const { return R().D(); }
    /** 
     * Get Top
     * 
     * @return top
     */
    Top& M() { return D().M(); }
    /** 
     * Get Top
     * 
     * @return top
     */
    const Top& M() const { return D().M(); }
  protected:
    UShort_t fId;

    ClassDef(Sector,1); 
  };

  //__________________________________________________________________
  /**
   * A stripo
   * 
   */
  struct Strip : public Element
  {
    Strip() : Element(), fId(1024) {}
    Strip(UShort_t t, Sector& s)
      : Element(Form("%s[%03d]", s.GetName(), t),
		Form("%s[%03d]", s.GetName(), t), s), fId(t) {}
    /** 
     * Get ID
     * 
     * @return The ID
     */
    UShort_t Id() const { return fId; } 
    /** 
     * Fill in value 
     * 
     * @param v  Value
     */
    void Fill(Double_t v) 
    { 
      // Info("Fill", "%s: Filling with %f", GetName(), v);
      DoFill(v); 
    }
    Bool_t IsFolder() const { return 0; } 
    void Browse(TBrowser* b) { Draw(b->GetDrawOption()); }
    /** 
     * Get parent sector
     * 
     * @return Parent sector
     */
    Sector& S() { return static_cast<Sector&>(*fParent); }
    /** 
     * Get parent sector
     * 
     * @return Parent sector
     */
    const Sector& S() const { return static_cast<Sector&>(*fParent); }
    /** 
     * Get parent ring
     * 
     * @return Parent ring
     */
    Ring& R() { return S().R(); }
    /** 
     * Get parent ring
     * 
     * @return Parent ring
     */
    const Ring& R() const { return S().R(); }
    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    Detector& D() { return R().D(); }
    /** 
     * Get parent detector
     * 
     * @return Parent detector
     */
    const Detector& D() const { return R().D(); }
    /** 
     * Get Top
     * 
     * @return top
     */
    Top& M() { return D().M(); }
    /** 
     * Get Top
     * 
     * @return top
     */
    const Top& M() const { return D().M(); }
  protected:
    UShort_t fId;

    ClassDef(Strip,1); 
  };

  //==================================================================
  Strip& Sector::GetOrAdd(UShort_t id)
  {
    Strip* t = static_cast<Strip*>(GetChild(id));
    if (!t) {
      t = new Strip(id, *this);
      t->MakeHistograms(M().GetAxis());
      // Info("GetOrAdd", "%s: Adding strip @ %d", GetName(), id);
      fChildren.AddAtAndExpand(t, id);
    }
    return *t;  
  }
  //__________________________________________________________________
  Sector& Ring::GetOrAdd(UShort_t id) 
  { 
    Sector* s = static_cast<Sector*>(GetChild(id));
    if (!s) {
      s = new Sector(id, *this);
      s->MakeHistograms(M().GetAxis());
      // Info("GetOrAdd", "%s: Adding sector @ %d", GetName(), id);
      fChildren.AddAtAndExpand(s, id);
    }
    return *s;
  }
  //__________________________________________________________________
  Ring& Detector::GetOrAdd(Char_t id) 
  { 
    UShort_t idd = R2Id(id);
    Ring*    r   = static_cast<Ring*>(GetChild(idd));
    if (!r) {
      r = new Ring(id, *this);
      r->MakeHistograms(M().GetAxis());
      // Info("GetOrAdd", "%s: Adding ring @ %d", GetName(), idd);
      fChildren.AddAtAndExpand(r, idd);
    }
    return *r;
  }
  //__________________________________________________________________
  Detector& Top::GetOrAdd(UShort_t id) 
  { 
    Int_t     idx = id - 1;
    Detector* d   = static_cast<Detector*>(fChildren.At(idx));
    if (!d) { 
      d = new Detector(id, *this);
      d->MakeHistograms(fAxis);
      // Info("GetOrAdd", "%s: Adding detector @ %d", GetName(), id);
      fChildren.AddAtAndExpand(d, idx);
    }
    return *d;
  }
  //__________________________________________________________________
  void Top::Fill(UShort_t d, Char_t r, UShort_t s, UShort_t t, Double_t v)
  {
    DoFill(v);
    Detector& sub = GetOrAdd(d);
    //Info("Fill", "%s: Filling %d,%c,%d,%d with %f", GetName(), d, r, s, t, v);
    sub.Fill(r, s, t, v);
  }
  //__________________________________________________________________
  void Detector::Fill(Char_t r, UShort_t s, UShort_t t, Double_t v)
  {
    DoFill(v);
    Ring& sub = GetOrAdd(r);
    //Info("Fill", "%s: Filling %c,%d,%d with %f", GetName(), r, s, t, v);
    sub.Fill(s, t, v);
  }
  //__________________________________________________________________
  void Ring::Fill(UShort_t s, UShort_t t, Double_t v)
  {
    fFull->Fill(s, v);
    Sector& sub = GetOrAdd(s);
    //Info("Fill", "%s: Filling %d,%d with %f", GetName(), s, t, v);
    sub.Fill(t, v);
  }
  //__________________________________________________________________
  void Sector::Fill(UShort_t t, Double_t v)
  {
    fFull->Fill(t, v);
    Strip& sub = GetOrAdd(t);
    //Info("Fill", "%s: Filling %d with %f", GetName(), t, v);
    sub.Fill(v);
  }
}
//======================================================================
#include <AliFMDDigit.h>
#include <AliFMDSDigit.h>
#include <AliFMDRecPoint.h>
#include <AliFMDHit.h>
#include <AliESDFMD.h>
#include <AliFMDInput.h>
#include <AliFMDRawReader.h>
#include <AliFMDParameters.h>

struct SpectraCollector : public AliFMDInput
{
  //__________________________________________________________________
  SpectraCollector(UShort_t what, const char* src=0)
    : AliFMDInput("galice.root")
  {
    Setup(what, src);
  }
  //__________________________________________________________________
  SpectraCollector(const char* what, const char* src=0)
    : AliFMDInput("galice.root")
  {
    Setup(ParseLoad(what), src);
  }
  //__________________________________________________________________
  void Setup(UShort_t what, const char* src)
  { 
    switch (what) { 
    case kHits:		AddLoad(kHits); 	break;
    case kDigits:	AddLoad(kDigits); 	break;
    case kSDigits:	AddLoad(kSDigits); 	break;
    case kRaw:		AddLoad(kRaw); 		break;
    case kRawCalib:	AddLoad(kRawCalib); 	break;
    case kRecPoints:	AddLoad(kRecPoints); 	break;
    case kESD:		AddLoad(kESD); 		break;
    default: 
      Fatal("Spectra", "Unknown type %d reguested", what);
      return;
    }
    if ((what == kRaw || what == kRawCalib)) {
      if (!src || src[0] == '\0')
	Fatal("Spectra", "No raw input specified!");
      SetRawFile(src);
    }
    
    switch (what) { 
    case kHits:     fTop.SetAxis(500, 0, 1000); break;
    case kDigits:   // Fall-through
    case kSDigits:  // Fall-through
    case kRaw:      // Fall-through
    case kRawCalib: // This is the same for all kinds of digits
      fTop.SetAxis(1024, -.5, 1023.5); 
      break;
    case kRecPoints:  // Fall-through
    case kESD:        // This is the same for ESD and rec-points
      fTop.SetAxis(200, -.05, 19.95);
      break;
    }
  }
  //____________________________________________________________________
  Bool_t ProcessHit(AliFMDHit* h, TParticle* /* p */) 
  {
    if (h)
      fTop.Fill(h->Detector(), h->Ring(), h->Sector(), h->Strip(), h->Edep());
    return kTRUE;
  }
  //__________________________________________________________________
  Bool_t ProcessSDigit(AliFMDSDigit* d)
  {
    if (d)
      fTop.Fill(d->Detector(), d->Ring(), d->Sector(), d->Strip(), d->Counts());
    return kTRUE;
  }  
  //__________________________________________________________________
  Bool_t ProcessRawDigit(AliFMDDigit* digit)
  {
    return ProcessDigit(digit);
  }
  //__________________________________________________________________
  Bool_t ProcessDigit(AliFMDDigit* d)
  {
    if (d)
      fTop.Fill(d->Detector(), d->Ring(), d->Sector(),d->Strip(), d->Counts());
    return kTRUE;
  }
  //__________________________________________________________________
  Bool_t ProcessRawCalibDigit(AliFMDDigit* digit)
  {
    AliFMDParameters* parm = AliFMDParameters::Instance();
    UShort_t d          =  digit->Detector();
    Char_t   r          =  digit->Ring();
    UShort_t s          =  digit->Sector();
    UShort_t t          =  digit->Strip();
    Double_t g          =  parm->GetPulseGain(d, r, s, t);
    Double_t p          =  parm->GetPedestal(d, r, s, t);
    Double_t w          =  parm->GetPedestalWidth(d, r, s, t);
    UShort_t c          =  digit->Counts();
    Double_t x          =  0;
    if (fFMDReader && fFMDReader->IsZeroSuppressed(d-1))
      x = c + fFMDReader->NoiseFactor(d-1) * w;
    else 
      x = c - p;

    Double_t m = x / (g * parm->GetDACPerMIP());
    if (g < 0.1 || g > 10) m = 0;

    fTop.Fill(d, r, s, t, m);
    return kTRUE;
  }
  //__________________________________________________________________
  Bool_t ProcessRecPoint(AliFMDRecPoint* r)
  {
    if (r)
      fTop.Fill(r->Detector(),r->Ring(),r->Sector(),r->Strip(),r->Particles());
    return kTRUE;
  }
  //__________________________________________________________________
  Bool_t ProcessESD(UShort_t d, Char_t r, UShort_t s, UShort_t t, 
		    Float_t, Float_t m)  
  {
    if (m != AliESDFMD::kInvalidMult) 
      fTop.Fill(d,r,s,t,m);
    return kTRUE;
  }
    
  //__________________________________________________________________
  Bool_t Finish()
  {
    TBrowser* b = new TBrowser("b", "b");
    b->Add(&fTop);

#if 1
    TFile* file = TFile::Open("spectra.root", "RECREATE");
    // fTop.WriteOut(file);
    fTop.Write();
    file->Close();
#endif

    return kTRUE;
  }
  Spectra::Top fTop;
  ClassDef(SpectraCollector,0);
};

#else
//======================================================================
void
MakeSpectra(UShort_t what, Int_t n=1000, const char* src=0)
{
  gROOT->LoadMacro("$ALICE_ROOT.trunk/FMD/scripts/Compile.C");
  gSystem->AddIncludePath("-DSPECTRA_BUILD");
  const char* script = "$ALICE_ROOT.trunk/FMD/scripts/MakeSpectra.C";
  const char* here   = gSystem->BaseName(script);
  Int_t ret = 0;
  if ((ret = gSystem->CopyFile(gSystem->ExpandPathName(script), here, true))) { 
    Error("MakeSpectra", "Failed to copy %s to %s: %d", script, here, ret);
    return;
  }
  Compile(here, "+g");
  SpectraCollector* sd = new SpectraCollector(what, src);
  sd->Run(n);
}

#endif // SPECTRA_BUILD
//
// EOF
//
 MakeSpectra.C:1
 MakeSpectra.C:2
 MakeSpectra.C:3
 MakeSpectra.C:4
 MakeSpectra.C:5
 MakeSpectra.C:6
 MakeSpectra.C:7
 MakeSpectra.C:8
 MakeSpectra.C:9
 MakeSpectra.C:10
 MakeSpectra.C:11
 MakeSpectra.C:12
 MakeSpectra.C:13
 MakeSpectra.C:14
 MakeSpectra.C:15
 MakeSpectra.C:16
 MakeSpectra.C:17
 MakeSpectra.C:18
 MakeSpectra.C:19
 MakeSpectra.C:20
 MakeSpectra.C:21
 MakeSpectra.C:22
 MakeSpectra.C:23
 MakeSpectra.C:24
 MakeSpectra.C:25
 MakeSpectra.C:26
 MakeSpectra.C:27
 MakeSpectra.C:28
 MakeSpectra.C:29
 MakeSpectra.C:30
 MakeSpectra.C:31
 MakeSpectra.C:32
 MakeSpectra.C:33
 MakeSpectra.C:34
 MakeSpectra.C:35
 MakeSpectra.C:36
 MakeSpectra.C:37
 MakeSpectra.C:38
 MakeSpectra.C:39
 MakeSpectra.C:40
 MakeSpectra.C:41
 MakeSpectra.C:42
 MakeSpectra.C:43
 MakeSpectra.C:44
 MakeSpectra.C:45
 MakeSpectra.C:46
 MakeSpectra.C:47
 MakeSpectra.C:48
 MakeSpectra.C:49
 MakeSpectra.C:50
 MakeSpectra.C:51
 MakeSpectra.C:52
 MakeSpectra.C:53
 MakeSpectra.C:54
 MakeSpectra.C:55
 MakeSpectra.C:56
 MakeSpectra.C:57
 MakeSpectra.C:58
 MakeSpectra.C:59
 MakeSpectra.C:60
 MakeSpectra.C:61
 MakeSpectra.C:62
 MakeSpectra.C:63
 MakeSpectra.C:64
 MakeSpectra.C:65
 MakeSpectra.C:66
 MakeSpectra.C:67
 MakeSpectra.C:68
 MakeSpectra.C:69
 MakeSpectra.C:70
 MakeSpectra.C:71
 MakeSpectra.C:72
 MakeSpectra.C:73
 MakeSpectra.C:74
 MakeSpectra.C:75
 MakeSpectra.C:76
 MakeSpectra.C:77
 MakeSpectra.C:78
 MakeSpectra.C:79
 MakeSpectra.C:80
 MakeSpectra.C:81
 MakeSpectra.C:82
 MakeSpectra.C:83
 MakeSpectra.C:84
 MakeSpectra.C:85
 MakeSpectra.C:86
 MakeSpectra.C:87
 MakeSpectra.C:88
 MakeSpectra.C:89
 MakeSpectra.C:90
 MakeSpectra.C:91
 MakeSpectra.C:92
 MakeSpectra.C:93
 MakeSpectra.C:94
 MakeSpectra.C:95
 MakeSpectra.C:96
 MakeSpectra.C:97
 MakeSpectra.C:98
 MakeSpectra.C:99
 MakeSpectra.C:100
 MakeSpectra.C:101
 MakeSpectra.C:102
 MakeSpectra.C:103
 MakeSpectra.C:104
 MakeSpectra.C:105
 MakeSpectra.C:106
 MakeSpectra.C:107
 MakeSpectra.C:108
 MakeSpectra.C:109
 MakeSpectra.C:110
 MakeSpectra.C:111
 MakeSpectra.C:112
 MakeSpectra.C:113
 MakeSpectra.C:114
 MakeSpectra.C:115
 MakeSpectra.C:116
 MakeSpectra.C:117
 MakeSpectra.C:118
 MakeSpectra.C:119
 MakeSpectra.C:120
 MakeSpectra.C:121
 MakeSpectra.C:122
 MakeSpectra.C:123
 MakeSpectra.C:124
 MakeSpectra.C:125
 MakeSpectra.C:126
 MakeSpectra.C:127
 MakeSpectra.C:128
 MakeSpectra.C:129
 MakeSpectra.C:130
 MakeSpectra.C:131
 MakeSpectra.C:132
 MakeSpectra.C:133
 MakeSpectra.C:134
 MakeSpectra.C:135
 MakeSpectra.C:136
 MakeSpectra.C:137
 MakeSpectra.C:138
 MakeSpectra.C:139
 MakeSpectra.C:140
 MakeSpectra.C:141
 MakeSpectra.C:142
 MakeSpectra.C:143
 MakeSpectra.C:144
 MakeSpectra.C:145
 MakeSpectra.C:146
 MakeSpectra.C:147
 MakeSpectra.C:148
 MakeSpectra.C:149
 MakeSpectra.C:150
 MakeSpectra.C:151
 MakeSpectra.C:152
 MakeSpectra.C:153
 MakeSpectra.C:154
 MakeSpectra.C:155
 MakeSpectra.C:156
 MakeSpectra.C:157
 MakeSpectra.C:158
 MakeSpectra.C:159
 MakeSpectra.C:160
 MakeSpectra.C:161
 MakeSpectra.C:162
 MakeSpectra.C:163
 MakeSpectra.C:164
 MakeSpectra.C:165
 MakeSpectra.C:166
 MakeSpectra.C:167
 MakeSpectra.C:168
 MakeSpectra.C:169
 MakeSpectra.C:170
 MakeSpectra.C:171
 MakeSpectra.C:172
 MakeSpectra.C:173
 MakeSpectra.C:174
 MakeSpectra.C:175
 MakeSpectra.C:176
 MakeSpectra.C:177
 MakeSpectra.C:178
 MakeSpectra.C:179
 MakeSpectra.C:180
 MakeSpectra.C:181
 MakeSpectra.C:182
 MakeSpectra.C:183
 MakeSpectra.C:184
 MakeSpectra.C:185
 MakeSpectra.C:186
 MakeSpectra.C:187
 MakeSpectra.C:188
 MakeSpectra.C:189
 MakeSpectra.C:190
 MakeSpectra.C:191
 MakeSpectra.C:192
 MakeSpectra.C:193
 MakeSpectra.C:194
 MakeSpectra.C:195
 MakeSpectra.C:196
 MakeSpectra.C:197
 MakeSpectra.C:198
 MakeSpectra.C:199
 MakeSpectra.C:200
 MakeSpectra.C:201
 MakeSpectra.C:202
 MakeSpectra.C:203
 MakeSpectra.C:204
 MakeSpectra.C:205
 MakeSpectra.C:206
 MakeSpectra.C:207
 MakeSpectra.C:208
 MakeSpectra.C:209
 MakeSpectra.C:210
 MakeSpectra.C:211
 MakeSpectra.C:212
 MakeSpectra.C:213
 MakeSpectra.C:214
 MakeSpectra.C:215
 MakeSpectra.C:216
 MakeSpectra.C:217
 MakeSpectra.C:218
 MakeSpectra.C:219
 MakeSpectra.C:220
 MakeSpectra.C:221
 MakeSpectra.C:222
 MakeSpectra.C:223
 MakeSpectra.C:224
 MakeSpectra.C:225
 MakeSpectra.C:226
 MakeSpectra.C:227
 MakeSpectra.C:228
 MakeSpectra.C:229
 MakeSpectra.C:230
 MakeSpectra.C:231
 MakeSpectra.C:232
 MakeSpectra.C:233
 MakeSpectra.C:234
 MakeSpectra.C:235
 MakeSpectra.C:236
 MakeSpectra.C:237
 MakeSpectra.C:238
 MakeSpectra.C:239
 MakeSpectra.C:240
 MakeSpectra.C:241
 MakeSpectra.C:242
 MakeSpectra.C:243
 MakeSpectra.C:244
 MakeSpectra.C:245
 MakeSpectra.C:246
 MakeSpectra.C:247
 MakeSpectra.C:248
 MakeSpectra.C:249
 MakeSpectra.C:250
 MakeSpectra.C:251
 MakeSpectra.C:252
 MakeSpectra.C:253
 MakeSpectra.C:254
 MakeSpectra.C:255
 MakeSpectra.C:256
 MakeSpectra.C:257
 MakeSpectra.C:258
 MakeSpectra.C:259
 MakeSpectra.C:260
 MakeSpectra.C:261
 MakeSpectra.C:262
 MakeSpectra.C:263
 MakeSpectra.C:264
 MakeSpectra.C:265
 MakeSpectra.C:266
 MakeSpectra.C:267
 MakeSpectra.C:268
 MakeSpectra.C:269
 MakeSpectra.C:270
 MakeSpectra.C:271
 MakeSpectra.C:272
 MakeSpectra.C:273
 MakeSpectra.C:274
 MakeSpectra.C:275
 MakeSpectra.C:276
 MakeSpectra.C:277
 MakeSpectra.C:278
 MakeSpectra.C:279
 MakeSpectra.C:280
 MakeSpectra.C:281
 MakeSpectra.C:282
 MakeSpectra.C:283
 MakeSpectra.C:284
 MakeSpectra.C:285
 MakeSpectra.C:286
 MakeSpectra.C:287
 MakeSpectra.C:288
 MakeSpectra.C:289
 MakeSpectra.C:290
 MakeSpectra.C:291
 MakeSpectra.C:292
 MakeSpectra.C:293
 MakeSpectra.C:294
 MakeSpectra.C:295
 MakeSpectra.C:296
 MakeSpectra.C:297
 MakeSpectra.C:298
 MakeSpectra.C:299
 MakeSpectra.C:300
 MakeSpectra.C:301
 MakeSpectra.C:302
 MakeSpectra.C:303
 MakeSpectra.C:304
 MakeSpectra.C:305
 MakeSpectra.C:306
 MakeSpectra.C:307
 MakeSpectra.C:308
 MakeSpectra.C:309
 MakeSpectra.C:310
 MakeSpectra.C:311
 MakeSpectra.C:312
 MakeSpectra.C:313
 MakeSpectra.C:314
 MakeSpectra.C:315
 MakeSpectra.C:316
 MakeSpectra.C:317
 MakeSpectra.C:318
 MakeSpectra.C:319
 MakeSpectra.C:320
 MakeSpectra.C:321
 MakeSpectra.C:322
 MakeSpectra.C:323
 MakeSpectra.C:324
 MakeSpectra.C:325
 MakeSpectra.C:326
 MakeSpectra.C:327
 MakeSpectra.C:328
 MakeSpectra.C:329
 MakeSpectra.C:330
 MakeSpectra.C:331
 MakeSpectra.C:332
 MakeSpectra.C:333
 MakeSpectra.C:334
 MakeSpectra.C:335
 MakeSpectra.C:336
 MakeSpectra.C:337
 MakeSpectra.C:338
 MakeSpectra.C:339
 MakeSpectra.C:340
 MakeSpectra.C:341
 MakeSpectra.C:342
 MakeSpectra.C:343
 MakeSpectra.C:344
 MakeSpectra.C:345
 MakeSpectra.C:346
 MakeSpectra.C:347
 MakeSpectra.C:348
 MakeSpectra.C:349
 MakeSpectra.C:350
 MakeSpectra.C:351
 MakeSpectra.C:352
 MakeSpectra.C:353
 MakeSpectra.C:354
 MakeSpectra.C:355
 MakeSpectra.C:356
 MakeSpectra.C:357
 MakeSpectra.C:358
 MakeSpectra.C:359
 MakeSpectra.C:360
 MakeSpectra.C:361
 MakeSpectra.C:362
 MakeSpectra.C:363
 MakeSpectra.C:364
 MakeSpectra.C:365
 MakeSpectra.C:366
 MakeSpectra.C:367
 MakeSpectra.C:368
 MakeSpectra.C:369
 MakeSpectra.C:370
 MakeSpectra.C:371
 MakeSpectra.C:372
 MakeSpectra.C:373
 MakeSpectra.C:374
 MakeSpectra.C:375
 MakeSpectra.C:376
 MakeSpectra.C:377
 MakeSpectra.C:378
 MakeSpectra.C:379
 MakeSpectra.C:380
 MakeSpectra.C:381
 MakeSpectra.C:382
 MakeSpectra.C:383
 MakeSpectra.C:384
 MakeSpectra.C:385
 MakeSpectra.C:386
 MakeSpectra.C:387
 MakeSpectra.C:388
 MakeSpectra.C:389
 MakeSpectra.C:390
 MakeSpectra.C:391
 MakeSpectra.C:392
 MakeSpectra.C:393
 MakeSpectra.C:394
 MakeSpectra.C:395
 MakeSpectra.C:396
 MakeSpectra.C:397
 MakeSpectra.C:398
 MakeSpectra.C:399
 MakeSpectra.C:400
 MakeSpectra.C:401
 MakeSpectra.C:402
 MakeSpectra.C:403
 MakeSpectra.C:404
 MakeSpectra.C:405
 MakeSpectra.C:406
 MakeSpectra.C:407
 MakeSpectra.C:408
 MakeSpectra.C:409
 MakeSpectra.C:410
 MakeSpectra.C:411
 MakeSpectra.C:412
 MakeSpectra.C:413
 MakeSpectra.C:414
 MakeSpectra.C:415
 MakeSpectra.C:416
 MakeSpectra.C:417
 MakeSpectra.C:418
 MakeSpectra.C:419
 MakeSpectra.C:420
 MakeSpectra.C:421
 MakeSpectra.C:422
 MakeSpectra.C:423
 MakeSpectra.C:424
 MakeSpectra.C:425
 MakeSpectra.C:426
 MakeSpectra.C:427
 MakeSpectra.C:428
 MakeSpectra.C:429
 MakeSpectra.C:430
 MakeSpectra.C:431
 MakeSpectra.C:432
 MakeSpectra.C:433
 MakeSpectra.C:434
 MakeSpectra.C:435
 MakeSpectra.C:436
 MakeSpectra.C:437
 MakeSpectra.C:438
 MakeSpectra.C:439
 MakeSpectra.C:440
 MakeSpectra.C:441
 MakeSpectra.C:442
 MakeSpectra.C:443
 MakeSpectra.C:444
 MakeSpectra.C:445
 MakeSpectra.C:446
 MakeSpectra.C:447
 MakeSpectra.C:448
 MakeSpectra.C:449
 MakeSpectra.C:450
 MakeSpectra.C:451
 MakeSpectra.C:452
 MakeSpectra.C:453
 MakeSpectra.C:454
 MakeSpectra.C:455
 MakeSpectra.C:456
 MakeSpectra.C:457
 MakeSpectra.C:458
 MakeSpectra.C:459
 MakeSpectra.C:460
 MakeSpectra.C:461
 MakeSpectra.C:462
 MakeSpectra.C:463
 MakeSpectra.C:464
 MakeSpectra.C:465
 MakeSpectra.C:466
 MakeSpectra.C:467
 MakeSpectra.C:468
 MakeSpectra.C:469
 MakeSpectra.C:470
 MakeSpectra.C:471
 MakeSpectra.C:472
 MakeSpectra.C:473
 MakeSpectra.C:474
 MakeSpectra.C:475
 MakeSpectra.C:476
 MakeSpectra.C:477
 MakeSpectra.C:478
 MakeSpectra.C:479
 MakeSpectra.C:480
 MakeSpectra.C:481
 MakeSpectra.C:482
 MakeSpectra.C:483
 MakeSpectra.C:484
 MakeSpectra.C:485
 MakeSpectra.C:486
 MakeSpectra.C:487
 MakeSpectra.C:488
 MakeSpectra.C:489
 MakeSpectra.C:490
 MakeSpectra.C:491
 MakeSpectra.C:492
 MakeSpectra.C:493
 MakeSpectra.C:494
 MakeSpectra.C:495
 MakeSpectra.C:496
 MakeSpectra.C:497
 MakeSpectra.C:498
 MakeSpectra.C:499
 MakeSpectra.C:500
 MakeSpectra.C:501
 MakeSpectra.C:502
 MakeSpectra.C:503
 MakeSpectra.C:504
 MakeSpectra.C:505
 MakeSpectra.C:506
 MakeSpectra.C:507
 MakeSpectra.C:508
 MakeSpectra.C:509
 MakeSpectra.C:510
 MakeSpectra.C:511
 MakeSpectra.C:512
 MakeSpectra.C:513
 MakeSpectra.C:514
 MakeSpectra.C:515
 MakeSpectra.C:516
 MakeSpectra.C:517
 MakeSpectra.C:518
 MakeSpectra.C:519
 MakeSpectra.C:520
 MakeSpectra.C:521
 MakeSpectra.C:522
 MakeSpectra.C:523
 MakeSpectra.C:524
 MakeSpectra.C:525
 MakeSpectra.C:526
 MakeSpectra.C:527
 MakeSpectra.C:528
 MakeSpectra.C:529
 MakeSpectra.C:530
 MakeSpectra.C:531
 MakeSpectra.C:532
 MakeSpectra.C:533
 MakeSpectra.C:534
 MakeSpectra.C:535
 MakeSpectra.C:536
 MakeSpectra.C:537
 MakeSpectra.C:538
 MakeSpectra.C:539
 MakeSpectra.C:540
 MakeSpectra.C:541
 MakeSpectra.C:542
 MakeSpectra.C:543
 MakeSpectra.C:544
 MakeSpectra.C:545
 MakeSpectra.C:546
 MakeSpectra.C:547
 MakeSpectra.C:548
 MakeSpectra.C:549
 MakeSpectra.C:550
 MakeSpectra.C:551
 MakeSpectra.C:552
 MakeSpectra.C:553
 MakeSpectra.C:554
 MakeSpectra.C:555
 MakeSpectra.C:556
 MakeSpectra.C:557
 MakeSpectra.C:558
 MakeSpectra.C:559
 MakeSpectra.C:560
 MakeSpectra.C:561
 MakeSpectra.C:562
 MakeSpectra.C:563
 MakeSpectra.C:564
 MakeSpectra.C:565
 MakeSpectra.C:566
 MakeSpectra.C:567
 MakeSpectra.C:568
 MakeSpectra.C:569
 MakeSpectra.C:570
 MakeSpectra.C:571
 MakeSpectra.C:572
 MakeSpectra.C:573
 MakeSpectra.C:574
 MakeSpectra.C:575
 MakeSpectra.C:576
 MakeSpectra.C:577
 MakeSpectra.C:578
 MakeSpectra.C:579
 MakeSpectra.C:580
 MakeSpectra.C:581
 MakeSpectra.C:582
 MakeSpectra.C:583
 MakeSpectra.C:584
 MakeSpectra.C:585
 MakeSpectra.C:586
 MakeSpectra.C:587
 MakeSpectra.C:588
 MakeSpectra.C:589
 MakeSpectra.C:590
 MakeSpectra.C:591
 MakeSpectra.C:592
 MakeSpectra.C:593
 MakeSpectra.C:594
 MakeSpectra.C:595
 MakeSpectra.C:596
 MakeSpectra.C:597
 MakeSpectra.C:598
 MakeSpectra.C:599
 MakeSpectra.C:600
 MakeSpectra.C:601
 MakeSpectra.C:602
 MakeSpectra.C:603
 MakeSpectra.C:604
 MakeSpectra.C:605
 MakeSpectra.C:606
 MakeSpectra.C:607
 MakeSpectra.C:608
 MakeSpectra.C:609
 MakeSpectra.C:610
 MakeSpectra.C:611
 MakeSpectra.C:612
 MakeSpectra.C:613
 MakeSpectra.C:614
 MakeSpectra.C:615
 MakeSpectra.C:616
 MakeSpectra.C:617
 MakeSpectra.C:618
 MakeSpectra.C:619
 MakeSpectra.C:620
 MakeSpectra.C:621
 MakeSpectra.C:622
 MakeSpectra.C:623
 MakeSpectra.C:624
 MakeSpectra.C:625
 MakeSpectra.C:626
 MakeSpectra.C:627
 MakeSpectra.C:628
 MakeSpectra.C:629
 MakeSpectra.C:630
 MakeSpectra.C:631
 MakeSpectra.C:632
 MakeSpectra.C:633
 MakeSpectra.C:634
 MakeSpectra.C:635
 MakeSpectra.C:636
 MakeSpectra.C:637
 MakeSpectra.C:638
 MakeSpectra.C:639
 MakeSpectra.C:640
 MakeSpectra.C:641
 MakeSpectra.C:642
 MakeSpectra.C:643
 MakeSpectra.C:644
 MakeSpectra.C:645
 MakeSpectra.C:646
 MakeSpectra.C:647
 MakeSpectra.C:648
 MakeSpectra.C:649
 MakeSpectra.C:650
 MakeSpectra.C:651
 MakeSpectra.C:652
 MakeSpectra.C:653
 MakeSpectra.C:654
 MakeSpectra.C:655
 MakeSpectra.C:656
 MakeSpectra.C:657
 MakeSpectra.C:658
 MakeSpectra.C:659
 MakeSpectra.C:660
 MakeSpectra.C:661
 MakeSpectra.C:662
 MakeSpectra.C:663
 MakeSpectra.C:664
 MakeSpectra.C:665
 MakeSpectra.C:666
 MakeSpectra.C:667
 MakeSpectra.C:668
 MakeSpectra.C:669
 MakeSpectra.C:670
 MakeSpectra.C:671
 MakeSpectra.C:672
 MakeSpectra.C:673
 MakeSpectra.C:674
 MakeSpectra.C:675
 MakeSpectra.C:676
 MakeSpectra.C:677
 MakeSpectra.C:678
 MakeSpectra.C:679
 MakeSpectra.C:680
 MakeSpectra.C:681
 MakeSpectra.C:682
 MakeSpectra.C:683
 MakeSpectra.C:684
 MakeSpectra.C:685
 MakeSpectra.C:686
 MakeSpectra.C:687
 MakeSpectra.C:688
 MakeSpectra.C:689
 MakeSpectra.C:690
 MakeSpectra.C:691
 MakeSpectra.C:692
 MakeSpectra.C:693
 MakeSpectra.C:694
 MakeSpectra.C:695
 MakeSpectra.C:696
 MakeSpectra.C:697
 MakeSpectra.C:698
 MakeSpectra.C:699
 MakeSpectra.C:700
 MakeSpectra.C:701
 MakeSpectra.C:702
 MakeSpectra.C:703
 MakeSpectra.C:704
 MakeSpectra.C:705
 MakeSpectra.C:706
 MakeSpectra.C:707
 MakeSpectra.C:708
 MakeSpectra.C:709
 MakeSpectra.C:710
 MakeSpectra.C:711
 MakeSpectra.C:712
 MakeSpectra.C:713
 MakeSpectra.C:714
 MakeSpectra.C:715
 MakeSpectra.C:716
 MakeSpectra.C:717
 MakeSpectra.C:718
 MakeSpectra.C:719
 MakeSpectra.C:720
 MakeSpectra.C:721
 MakeSpectra.C:722
 MakeSpectra.C:723
 MakeSpectra.C:724
 MakeSpectra.C:725
 MakeSpectra.C:726
 MakeSpectra.C:727
 MakeSpectra.C:728
 MakeSpectra.C:729
 MakeSpectra.C:730
 MakeSpectra.C:731
 MakeSpectra.C:732
 MakeSpectra.C:733
 MakeSpectra.C:734
 MakeSpectra.C:735
 MakeSpectra.C:736
 MakeSpectra.C:737
 MakeSpectra.C:738
 MakeSpectra.C:739
 MakeSpectra.C:740
 MakeSpectra.C:741
 MakeSpectra.C:742
 MakeSpectra.C:743
 MakeSpectra.C:744
 MakeSpectra.C:745
 MakeSpectra.C:746
 MakeSpectra.C:747
 MakeSpectra.C:748
 MakeSpectra.C:749
 MakeSpectra.C:750
 MakeSpectra.C:751
 MakeSpectra.C:752
 MakeSpectra.C:753
 MakeSpectra.C:754
 MakeSpectra.C:755
 MakeSpectra.C:756
 MakeSpectra.C:757
 MakeSpectra.C:758
 MakeSpectra.C:759
 MakeSpectra.C:760
 MakeSpectra.C:761
 MakeSpectra.C:762
 MakeSpectra.C:763
 MakeSpectra.C:764
 MakeSpectra.C:765
 MakeSpectra.C:766
 MakeSpectra.C:767
 MakeSpectra.C:768
 MakeSpectra.C:769
 MakeSpectra.C:770
 MakeSpectra.C:771
 MakeSpectra.C:772
 MakeSpectra.C:773
 MakeSpectra.C:774
 MakeSpectra.C:775
 MakeSpectra.C:776
 MakeSpectra.C:777
 MakeSpectra.C:778
 MakeSpectra.C:779
 MakeSpectra.C:780
 MakeSpectra.C:781
 MakeSpectra.C:782
 MakeSpectra.C:783
 MakeSpectra.C:784
 MakeSpectra.C:785
 MakeSpectra.C:786
 MakeSpectra.C:787
 MakeSpectra.C:788
 MakeSpectra.C:789
 MakeSpectra.C:790
 MakeSpectra.C:791
 MakeSpectra.C:792
 MakeSpectra.C:793
 MakeSpectra.C:794
 MakeSpectra.C:795
 MakeSpectra.C:796
 MakeSpectra.C:797
 MakeSpectra.C:798
 MakeSpectra.C:799
 MakeSpectra.C:800
 MakeSpectra.C:801
 MakeSpectra.C:802
 MakeSpectra.C:803
 MakeSpectra.C:804
 MakeSpectra.C:805
 MakeSpectra.C:806
 MakeSpectra.C:807
 MakeSpectra.C:808
 MakeSpectra.C:809
 MakeSpectra.C:810
 MakeSpectra.C:811
 MakeSpectra.C:812
 MakeSpectra.C:813
 MakeSpectra.C:814
 MakeSpectra.C:815
 MakeSpectra.C:816
 MakeSpectra.C:817
 MakeSpectra.C:818
 MakeSpectra.C:819
 MakeSpectra.C:820
 MakeSpectra.C:821
 MakeSpectra.C:822
 MakeSpectra.C:823
 MakeSpectra.C:824
 MakeSpectra.C:825
 MakeSpectra.C:826
 MakeSpectra.C:827
 MakeSpectra.C:828
 MakeSpectra.C:829
 MakeSpectra.C:830
 MakeSpectra.C:831
 MakeSpectra.C:832
 MakeSpectra.C:833
 MakeSpectra.C:834
 MakeSpectra.C:835
 MakeSpectra.C:836
 MakeSpectra.C:837
 MakeSpectra.C:838
 MakeSpectra.C:839
 MakeSpectra.C:840
 MakeSpectra.C:841
 MakeSpectra.C:842
 MakeSpectra.C:843
 MakeSpectra.C:844