ROOT logo
void MakeFinalSpectrum()
{
  //-----------------------------------------------------------------------------
  // This macro takes the raw pi0 spectrum from LHC11a_FitResult_20130314.root,
  // correct it for feed down, then for efficiency,
  // adds all systematic errors and produces the production invariant spectrum
  //--
  // Last modification: 06.07.2012 by Yuri Kharlov
  //-----------------------------------------------------------------------------

  TFile *f  = new TFile("LHC11a_FitResult_20130913.root");
  TH1D * nr1CB    = (TH1D*)f->Get("Mix_CB_yr1")  ;
  TH1D * nr1intCB = (TH1D*)f->Get("Mix_CB_yr1int")  ;
  TH1D * nr2CB    = (TH1D*)f->Get("Mix_CB_yr2")  ;
  TH1D * nr2intCB = (TH1D*)f->Get("Mix_CB_yr2int")  ;

  TH1D * nr1GS    = (TH1D*)f->Get("Mix_yr1")  ;
  TH1D * nr1intGS = (TH1D*)f->Get("Mix_yr1int")  ;
  TH1D * nr2GS    = (TH1D*)f->Get("Mix_yr2")  ;
  TH1D * nr2intGS = (TH1D*)f->Get("Mix_yr2int")  ;

  //Divide by bin width
  for(Int_t i=1;i<= nr1CB->GetNbinsX();i++){
    nr1CB   ->SetBinContent(i,nr1CB->GetBinContent(i)/nr1CB->GetXaxis()->GetBinWidth(i)) ;
    nr1CB   ->SetBinError  (i,nr1CB->GetBinError(i)/nr1CB->GetXaxis()->GetBinWidth(i)) ;
    nr1intCB->SetBinContent(i,nr1intCB->GetBinContent(i)/nr1intCB->GetXaxis()->GetBinWidth(i)) ;
    nr1intCB->SetBinError  (i,nr1intCB->GetBinError(i)/nr1intCB->GetXaxis()->GetBinWidth(i)) ;
    nr2CB   ->SetBinContent(i,nr2CB->GetBinContent(i)/nr2CB->GetXaxis()->GetBinWidth(i)) ;
    nr2CB   ->SetBinError  (i,nr2CB->GetBinError(i)/nr2CB->GetXaxis()->GetBinWidth(i)) ;
    nr2intCB->SetBinContent(i,nr2intCB->GetBinContent(i)/nr2intCB->GetXaxis()->GetBinWidth(i)) ;
    nr2intCB->SetBinError  (i,nr2intCB->GetBinError(i)/nr2intCB->GetXaxis()->GetBinWidth(i)) ;

    nr1GS   ->SetBinContent(i,nr1GS->GetBinContent(i)/nr1GS->GetXaxis()->GetBinWidth(i)) ;
    nr1GS   ->SetBinError  (i,nr1GS->GetBinError(i)/nr1GS->GetXaxis()->GetBinWidth(i)) ;
    nr1intGS->SetBinContent(i,nr1intGS->GetBinContent(i)/nr1intGS->GetXaxis()->GetBinWidth(i)) ;
    nr1intGS->SetBinError  (i,nr1intGS->GetBinError(i)/nr1intGS->GetXaxis()->GetBinWidth(i)) ;
    nr2GS   ->SetBinContent(i,nr2GS->GetBinContent(i)/nr2GS->GetXaxis()->GetBinWidth(i)) ;
    nr2GS   ->SetBinError  (i,nr2GS->GetBinError(i)/nr2GS->GetXaxis()->GetBinWidth(i)) ;
    nr2intGS->SetBinContent(i,nr2intGS->GetBinContent(i)/nr2intGS->GetXaxis()->GetBinWidth(i)) ;
    nr2intGS->SetBinError  (i,nr2intGS->GetBinError(i)/nr2intGS->GetXaxis()->GetBinWidth(i)) ;
  }

  // feed down correction

  TF1 *fKaonContaminationToPi0 = new TF1("kaonCont","1./(1.-1.33*1.2*exp(-2.95-0.16*x))",0.,30.);
  nr1GS   ->Divide(fKaonContaminationToPi0);
  nr1intGS->Divide(fKaonContaminationToPi0);
  nr2GS   ->Divide(fKaonContaminationToPi0);
  nr2intGS->Divide(fKaonContaminationToPi0);
  nr1CB   ->Divide(fKaonContaminationToPi0);
  nr2CB   ->Divide(fKaonContaminationToPi0);
  nr1intCB->Divide(fKaonContaminationToPi0);
  nr2intCB->Divide(fKaonContaminationToPi0);

  // SPD pileup correction

  TF1 *fSPDpileup = new TF1("SPDpileup","0.988",0.,30.);
  nr1GS   ->Multiply(fSPDpileup);
  nr1intGS->Multiply(fSPDpileup);
  nr2GS   ->Multiply(fSPDpileup);
  nr2intGS->Multiply(fSPDpileup);
  nr1CB   ->Multiply(fSPDpileup);
  nr2CB   ->Multiply(fSPDpileup);
  nr1intCB->Multiply(fSPDpileup);
  nr2intCB->Multiply(fSPDpileup);

  //correct for efficiency
  TFile *fEff = new TFile("Pi0_efficiency_LHC11a__20131029_Mall.root") ;

  TF1 * effGS=fEff->Get("eff_Pi0_Gaus_2760GeV") ;
  TF1 * effCB=fEff->Get("eff_Pi0_CB_2760GeV") ;
  effGS   ->SetRange(0.,25.) ;
  effCB   ->SetRange(0.,25.) ;

  nr1GS   ->Divide(effGS) ;
  nr1intGS->Divide(effGS) ;
  nr2GS   ->Divide(effGS) ;
  nr2intGS->Divide(effGS) ;
  nr1CB   ->Divide(effCB) ;
  nr2CB   ->Divide(effCB) ;
  nr1intCB->Divide(effCB) ;
  nr2intCB->Divide(effCB) ;

  //make 1/pt
  for(Int_t i=1;i<=nr1CB->GetNbinsX();i++){
    Double_t pt = TMath::TwoPi()*nr1CB->GetXaxis()->GetBinCenter(i);
    nr1CB   ->SetBinContent(i,nr1CB   ->GetBinContent(i)/pt) ;
    nr1CB   ->SetBinError  (i,nr1CB   ->GetBinError(i)  /pt) ;
    nr1intCB->SetBinContent(i,nr1intCB->GetBinContent(i)/pt) ;
    nr1intCB->SetBinError  (i,nr1intCB->GetBinError(i)  /pt) ;
    nr2CB   ->SetBinContent(i,nr2CB   ->GetBinContent(i)/pt) ;
    nr2CB   ->SetBinError  (i,nr2CB   ->GetBinError(i)  /pt) ;
    nr2intCB->SetBinContent(i,nr2intCB->GetBinContent(i)/pt) ;
    nr2intCB->SetBinError  (i,nr2intCB->GetBinError(i)  /pt) ;

    nr1GS   ->SetBinContent(i,nr1GS   ->GetBinContent(i)/pt) ;
    nr1GS   ->SetBinError  (i,nr1GS   ->GetBinError(i)  /pt) ;
    nr1intGS->SetBinContent(i,nr1intGS->GetBinContent(i)/pt) ;
    nr1intGS->SetBinError  (i,nr1intGS->GetBinError(i)  /pt) ;
    nr2GS   ->SetBinContent(i,nr2GS   ->GetBinContent(i)/pt) ;
    nr2GS   ->SetBinError  (i,nr2GS   ->GetBinError(i)  /pt) ;
    nr2intGS->SetBinContent(i,nr2intGS->GetBinContent(i)/pt) ;
    nr2intGS->SetBinError  (i,nr2intGS->GetBinError(i)  /pt) ;
  }

  //For the final spectrum we take average of fits
  //with numerical integration of entries in signal
  
  TH1D * hStat = (TH1D*)nr2intCB->Clone("hPi02760GeVStat") ;
  TH1D * hSys  = (TH1D*)hStat   ->Clone("hPi02760GeVSys") ;
  TH1D * hSys2 = (TH1D*)hStat   ->Clone("hPi02760GeVSysTypeB") ;
  TH1D * hSys3 = (TH1D*)hStat   ->Clone("hPi02760GeVSysTypeC") ;
  hStat->SetAxisRange(0.,14.9,"X");
  hSys ->SetAxisRange(0.,14.9,"X");

  //For systematic error estimate take largest deviation
  //of integrated yeilds (note, they are efficiency corrected)
  for(Int_t i=1;i<=nr1CB->GetNbinsX();i++){
    Double_t mean= hStat->GetBinContent(i) ;
    Double_t dev = TMath::Max(
                   TMath::Max(TMath::Abs(nr1intCB->GetBinContent(i)-mean),
                              TMath::Abs(nr2intCB->GetBinContent(i)-mean)),
                   TMath::Max(TMath::Abs(nr1intGS->GetBinContent(i)-mean),
                              TMath::Abs(nr2intGS->GetBinContent(i)-mean))
			      );
    hSys ->SetBinError(i,dev) ;
    hSys2->SetBinError(i,dev) ;
  }

  //Add other sys errors
  TF1 * globalE = new TF1("globalE","1.-((x+1.354)/(x*1.002+1.354))^6.18 ",1.,30.) ; 
  TF1 * conv    = new TF1("conversion","0.035",0.,30.) ;
  TF1 * accept  = new TF1("accept"    ,"0.01" ,0.,30.) ;
  TF1 * pileup  = new TF1("pileup"    ,"0.004",0.,30.) ;
  TF1 * calib   = new TF1("calib"     ,"0.005",0.,30.) ;
  TF1 * modDiff = new TF1("modDiff"   ,"0.04",0.,30.) ;
  // TF1 * modDiff = new TF1("modDiff"   ,"16.9*exp(-4.5*x)+0.033",0.,30.) ;
  TF1 * tofCut  = new TF1("tofCut"    ,"0.0105" ,0.,30.) ;

  //Borya's estimate of non-linearity (found for pp @ 7 TeV)
  TF1 * nonlin= new TF1("nl","0.015+7.38*exp(-x/0.24)",0.,30.) ;

  //Draw sys errors
  TH1D * hRelSysRaw = (TH1D*)hSys->Clone("RelSysRaw") ;
  hRelSysRaw->SetTitle("Summary of systematic errors");
  for(Int_t i=1;i<=hSys->GetNbinsX();i++){
    Double_t mean= hSys->GetBinContent(i) ;
    Double_t a=hSys->GetBinError(i) ;
    if(mean>0)
      hRelSysRaw->SetBinContent(i,a/mean) ;
    else
      hRelSysRaw->SetBinContent(i,0.) ;
      hRelSysRaw->SetBinError(i,0.) ;
  }

  //Add errors in sys errors

  TH1D * hRelSysTot = (TH1D*)hSys->Clone("RelSys") ;
  hRelSysTot->SetTitle("Summary of systematic uncertainties");

  for(Int_t i=1;i<=hSys->GetNbinsX();i++){
    Double_t pt   = hSys->GetXaxis()->GetBinCenter(i) ;
    Double_t mean = hSys->GetBinContent(i) ;
    Double_t a    = hSys->GetBinError(i) ;
    // Double_t b    = mean * hSysErrModules->GetBinContent(i) ;
    Double_t tot= mean*mean*nonlin ->Eval(pt)*nonlin ->Eval(pt) 
                 +mean*mean*conv   ->Eval(pt)*conv   ->Eval(pt)
                 +mean*mean*accept ->Eval(pt)*accept ->Eval(pt)
                 +mean*mean*pileup ->Eval(pt)*pileup ->Eval(pt)
                 +mean*mean*calib  ->Eval(pt)*calib  ->Eval(pt)
                 +mean*mean*modDiff->Eval(pt)*modDiff->Eval(pt)
                 +mean*mean*tofCut ->Eval(pt)*tofCut ->Eval(pt)
                 +mean*mean*globalE->Eval(pt)*globalE->Eval(pt); 
    Double_t raa= mean*mean*nonlin->Eval(pt)*nonlin->Eval(pt) 
                 +mean*mean*pileup->Eval(pt)*pileup->Eval(pt)
                 +mean*mean*calib ->Eval(pt)*calib ->Eval(pt); 
    hSys3->SetBinError(i,TMath::Sqrt(tot)) ;
    // hSys->SetBinError(i,TMath::Sqrt(tot + a*a + b*b)) ;
    hSys2->SetBinError(i,TMath::Sqrt(raa + a*a)) ;
    hSys ->SetBinError(i,TMath::Sqrt(tot + a*a)) ;
    
    a = hSys->GetBinError(i) ;
    printf("i=%d, %g+-%g\n",i,mean,a);
    if(mean>0)
      hRelSysTot->SetBinContent(i,a/mean) ;
    else {
      hRelSysTot->SetBinContent(i,0.) ;
      hRelSysTot->SetBinError(i,0.) ;
    }
  }

  // TFile *fSysErrModules = TFile::Open("PHOS_sysErr_modules.root");
  // TH1D* hSysErrModules = (TH1D*)fSysErrModules->Get("hSyserr");

  gStyle->SetOptStat(0);
  TCanvas * c = new TCanvas("c","SysErrors") ;
  c->SetLogy();
  c->cd() ;
  gPad->SetRightMargin(0.02);
  gPad->SetTopMargin(0.07);
  hRelSysTot->SetAxisRange(0.8    ,11.9,"X");
  hRelSysTot->SetAxisRange(0.0031,0.45,"Y");
  hRelSysTot->GetYaxis()->SetMoreLogLabels();
  hRelSysTot->GetYaxis()->SetNoExponent();
  hRelSysTot->SetNdivisions(520,"X");
  hRelSysTot->SetLineColor(1) ;
  hRelSysTot->SetLineWidth(2) ;
  hRelSysRaw->SetLineColor(2) ;
  hRelSysRaw->SetLineWidth(2) ;
  globalE->SetLineColor(kGreen+2) ;
  nonlin ->SetLineColor(4) ;
  conv   ->SetLineColor(6) ;
  accept ->SetLineColor(kOrange) ;
  pileup ->SetLineColor(42);
  calib  ->SetLineColor(44);
  calib  ->SetLineStyle(2);
  modDiff->SetLineColor(52);
  modDiff->SetLineStyle(2);
  tofCut ->SetLineColor(53);
  tofCut ->SetLineStyle(3);
  // hSysErrModules->SetLineColor(kOrange+2);
  // hSysErrModules->SetLineStyle(2);
  hRelSysTot->SetXTitle("p_{T} (GeV/c)") ;
  hRelSysTot->SetYTitle("Rel.syst.error") ;
  hRelSysTot->GetYaxis()->SetTitleOffset(1.2) ;
  hRelSysTot->Draw("hist") ;
  hRelSysRaw->Draw("h same") ;
  globalE->Draw("same") ; 
  nonlin ->Draw("same") ;
  conv   ->Draw("same") ;
  accept ->Draw("same") ;
  pileup ->Draw("same");
  calib  ->Draw("same");
  modDiff->Draw("same");
  tofCut ->Draw("same");
  // hSysErrModules->Draw("same ][");
  TLegend * l = new TLegend(0.57,0.62,0.85,0.925) ;
  l->SetFillColor(kWhite);
  l->SetBorderSize(0);
  l->AddEntry(hRelSysTot,"Total uncertainty","l") ;
  l->AddEntry(hRelSysRaw,"Raw extraction","l") ;
  l->AddEntry(conv   ,"Conversion","l") ;
  l->AddEntry(nonlin ,"Non-linearity","l") ;
  l->AddEntry(accept ,"Acceptance","l");
  l->AddEntry(pileup ,"Pileup","l");
  l->AddEntry(calib  ,"Rel.calib.","l");
  l->AddEntry(modDiff,"Per-module yield","l");
  l->AddEntry(tofCut ,"Timing cut","l");
  // l->AddEntry(hSysErrModules,"Intermodule spectra","l");
  l->AddEntry(globalE,"Global E scale","l") ;
  l->Draw() ;

  c->Print("LHC11a_SysErrors.eps");

  hStat->SetTitle("Normalized production #pi^{0} yield, pp @ 2.76 TeV, stat.err.");
  hStat->SetXTitle("p_{T}, GeV/c");
  hStat->SetYTitle("1/N_{ev} 1/(2#pi p_{T}) d^{2}N/dydp_{T} (GeV^{-2}c^{2})");
  hSys ->SetTitle("Normalized production #pi^{0} yield, pp @ 2.76 TeV, total syst.err.");
  hSys ->SetXTitle("p_{T}, GeV/c");
  hSys ->SetYTitle("1/N_{ev} 1/(2#pi p_{T}) d^{2}N/dydp_{T} (GeV^{-2}c^{2})");
  hSys2->SetTitle("Normalized production #pi^{0} yield, pp @ 2.76 TeV, syst.err. for R_{AA}");
  hSys3->SetTitle("Normalized production #pi^{0} yield, pp @ 2.76 TeV, apparatus syst.err.");
  hSys ->SetFillColor(kBlue-10) ;
  hSys ->SetNdivisions(520,"X");

  hSysFinal = (TH1F*)hSys->Clone("hSysFinal");
  hSysFinal ->SetTitle("Production #pi^{0} yield, pp @ 2.76 TeV, 07.11.2013");
  hSysFinal ->GetYaxis()->SetTitleOffset(1.2);
  hStat->GetYaxis()->SetTitleOffset(1.2);
  hSysFinal ->SetAxisRange(0.8,9.9,"X");

  TCanvas *c2 = new TCanvas("c2","Production spectrum");
  gPad->SetRightMargin(0.02);
  gPad->SetTopMargin(0.07);
  gPad->SetGridx();
  gPad->SetGridy();
  c2->SetLogy();
  hSysFinal->Draw("E2") ;
  hStat->SetMarkerStyle(20) ;
  hStat->SetMarkerColor(4) ;
  hStat->SetLineColor(4) ;
  hStat->Draw("same") ;
  
  // //Apply bin width correction
  // TH1D * hBWcorr = BinWidthCorrection(hStat) ;
  // hSys->Divide(hBWcorr) ;
  // hSys2->Divide(hBWcorr) ;
  // hSys3->Divide(hBWcorr) ;
  // hStat->Divide(hBWcorr) ;

  c2->Print("LHC11a_pi0Spectrum.eps");

  TF1 *tsallis = FitTsallis(hStat,hSys);
  
  TFile fout("PHOS_pi0_2760eV_noBinWidthCorr_20131112.root","recreate") ;
  hSys   ->Write() ;
  hSys2  ->Write() ;
  hSys3  ->Write() ;
  hStat  ->Write() ;
  tsallis->Write() ;
  fout.Close() ;


}

//-----------------------------------------------------------------------------
TF1 *FitTsallis(TH1D* hStat, TH1D* hSys)
{
  TF1 * fit = new TF1("Tsalis","[0]/2./3.1415*([2]-1.)*([2]-2.)/([2]*[1]*([2]*[1]+0.135*([2]-2.)))*(1.+(sqrt(x*x+0.135*0.135)-0.135)/([2]*[1]))^-[2]",0.5,25.) ;
  fit->SetParameters(10.,0.2,8.) ;
  fit->SetLineColor(kBlack) ;
  fit->SetLineWidth(2) ;
  fit->SetParName(0,"dN/dy") ;
  fit->SetParName(1,"T") ;
  fit->SetParName(2,"n") ;
  
  TH1D * hSysRatio  = (TH1D*)hSys ->Clone("RatioSys") ;
  TH1D * hStatRatio = (TH1D*)hStat->Clone("RatioStat") ;

  TH1D * hsum = (TH1D*)hStat->Clone("sum") ;
  for(Int_t i=1; i<=hsum->GetNbinsX();i++){
    Double_t a=hSys->GetBinError(i) ;
    Double_t b=hStat->GetBinError(i) ;
    hsum->SetBinError(i,TMath::Sqrt(a*a+b*b)) ;
  }
  hsum->SetStats(1) ;
  hsum->Fit(fit,"Q") ;
  Double_t meanPt=fit->Moment(1,1.,10.) ;
  printf("<pt>=%f \n",meanPt) ;

  hSysRatio ->Divide(fit) ;
  hStatRatio->Divide(fit) ;

  return fit;
}
//-----------------------------------------------------------------------------
TH1D * BinWidthCorrection(TH1D * h){
  //We apply bin width a-la PHENIX 
  //Use Tsalis fit to calculate shift in y direction
 
  TF1 * fit = new TF1("hag","[0]*(([2]*[1]+sqrt(x*x+0.135*0.135))/([2]*[1]+0.135))^-[2]",0.5,25.) ;
  fit->SetParameters(10.,0.2,8.) ;
  TCanvas * corr = new TCanvas("BWcorr","Bin width correction") ;
  Int_t col[6]={kRed,kOrange,kMagenta,kGreen,kCyan,kBlue} ;
  TH1D * hcorr[20] ;
  char key[55] ;
  Double_t rMax=10 ;
  Int_t iteration=0 ;
  TH1D * htmp = (TH1D*)h->Clone("tmp") ;
  while(iteration<6){
    printf(" Iteration %d: rMax=%f \n",iteration, rMax) ;
    htmp->Fit(fit,"N") ;
    sprintf(key,"Ineration%d",iteration) ;
    hcorr[iteration]=(TH1D*)h->Clone(key);
    rMax= 0; 
    for(Int_t i=1;i<=h->GetNbinsX();i++){
      Double_t a=h->GetXaxis()->GetBinLowEdge(i) ;
      Double_t b=h->GetXaxis()->GetBinUpEdge(i) ;
      Double_t r=fit->Integral(a,b)/(b-a)/fit->Eval(0.5*(a+b)) ;
      hcorr[iteration]->SetBinContent(i,r) ;
      hcorr[iteration]->SetBinError(i,0.) ;
      if(rMax<r)rMax=r ;
    }
    delete htmp ;
    htmp = (TH1D*)h->Clone("tmp") ;
    htmp->Divide(hcorr[iteration]) ;
    corr->cd() ;
    hcorr[iteration]->SetLineColor(col[iteration]);
    if(iteration==0)
      hcorr[iteration]->Draw() ;
    else
      hcorr[iteration]->Draw("same") ;
    corr->Update() ;
    iteration++ ;
  } 

  hcorr[5]->SetTitle("Bin-width correction for #pi^{0} spectrum");
  hcorr[5]->SetYTitle("Bin-width corrected / uncorrected");
  TFile fout("PHOS_pi0_7TeV_BinWidthCorrection.root","recreate") ;
  hcorr[5]->Write();
  fout.Close();

  return hcorr[5] ;
}
 MakeFinalSpectrum.C:1
 MakeFinalSpectrum.C:2
 MakeFinalSpectrum.C:3
 MakeFinalSpectrum.C:4
 MakeFinalSpectrum.C:5
 MakeFinalSpectrum.C:6
 MakeFinalSpectrum.C:7
 MakeFinalSpectrum.C:8
 MakeFinalSpectrum.C:9
 MakeFinalSpectrum.C:10
 MakeFinalSpectrum.C:11
 MakeFinalSpectrum.C:12
 MakeFinalSpectrum.C:13
 MakeFinalSpectrum.C:14
 MakeFinalSpectrum.C:15
 MakeFinalSpectrum.C:16
 MakeFinalSpectrum.C:17
 MakeFinalSpectrum.C:18
 MakeFinalSpectrum.C:19
 MakeFinalSpectrum.C:20
 MakeFinalSpectrum.C:21
 MakeFinalSpectrum.C:22
 MakeFinalSpectrum.C:23
 MakeFinalSpectrum.C:24
 MakeFinalSpectrum.C:25
 MakeFinalSpectrum.C:26
 MakeFinalSpectrum.C:27
 MakeFinalSpectrum.C:28
 MakeFinalSpectrum.C:29
 MakeFinalSpectrum.C:30
 MakeFinalSpectrum.C:31
 MakeFinalSpectrum.C:32
 MakeFinalSpectrum.C:33
 MakeFinalSpectrum.C:34
 MakeFinalSpectrum.C:35
 MakeFinalSpectrum.C:36
 MakeFinalSpectrum.C:37
 MakeFinalSpectrum.C:38
 MakeFinalSpectrum.C:39
 MakeFinalSpectrum.C:40
 MakeFinalSpectrum.C:41
 MakeFinalSpectrum.C:42
 MakeFinalSpectrum.C:43
 MakeFinalSpectrum.C:44
 MakeFinalSpectrum.C:45
 MakeFinalSpectrum.C:46
 MakeFinalSpectrum.C:47
 MakeFinalSpectrum.C:48
 MakeFinalSpectrum.C:49
 MakeFinalSpectrum.C:50
 MakeFinalSpectrum.C:51
 MakeFinalSpectrum.C:52
 MakeFinalSpectrum.C:53
 MakeFinalSpectrum.C:54
 MakeFinalSpectrum.C:55
 MakeFinalSpectrum.C:56
 MakeFinalSpectrum.C:57
 MakeFinalSpectrum.C:58
 MakeFinalSpectrum.C:59
 MakeFinalSpectrum.C:60
 MakeFinalSpectrum.C:61
 MakeFinalSpectrum.C:62
 MakeFinalSpectrum.C:63
 MakeFinalSpectrum.C:64
 MakeFinalSpectrum.C:65
 MakeFinalSpectrum.C:66
 MakeFinalSpectrum.C:67
 MakeFinalSpectrum.C:68
 MakeFinalSpectrum.C:69
 MakeFinalSpectrum.C:70
 MakeFinalSpectrum.C:71
 MakeFinalSpectrum.C:72
 MakeFinalSpectrum.C:73
 MakeFinalSpectrum.C:74
 MakeFinalSpectrum.C:75
 MakeFinalSpectrum.C:76
 MakeFinalSpectrum.C:77
 MakeFinalSpectrum.C:78
 MakeFinalSpectrum.C:79
 MakeFinalSpectrum.C:80
 MakeFinalSpectrum.C:81
 MakeFinalSpectrum.C:82
 MakeFinalSpectrum.C:83
 MakeFinalSpectrum.C:84
 MakeFinalSpectrum.C:85
 MakeFinalSpectrum.C:86
 MakeFinalSpectrum.C:87
 MakeFinalSpectrum.C:88
 MakeFinalSpectrum.C:89
 MakeFinalSpectrum.C:90
 MakeFinalSpectrum.C:91
 MakeFinalSpectrum.C:92
 MakeFinalSpectrum.C:93
 MakeFinalSpectrum.C:94
 MakeFinalSpectrum.C:95
 MakeFinalSpectrum.C:96
 MakeFinalSpectrum.C:97
 MakeFinalSpectrum.C:98
 MakeFinalSpectrum.C:99
 MakeFinalSpectrum.C:100
 MakeFinalSpectrum.C:101
 MakeFinalSpectrum.C:102
 MakeFinalSpectrum.C:103
 MakeFinalSpectrum.C:104
 MakeFinalSpectrum.C:105
 MakeFinalSpectrum.C:106
 MakeFinalSpectrum.C:107
 MakeFinalSpectrum.C:108
 MakeFinalSpectrum.C:109
 MakeFinalSpectrum.C:110
 MakeFinalSpectrum.C:111
 MakeFinalSpectrum.C:112
 MakeFinalSpectrum.C:113
 MakeFinalSpectrum.C:114
 MakeFinalSpectrum.C:115
 MakeFinalSpectrum.C:116
 MakeFinalSpectrum.C:117
 MakeFinalSpectrum.C:118
 MakeFinalSpectrum.C:119
 MakeFinalSpectrum.C:120
 MakeFinalSpectrum.C:121
 MakeFinalSpectrum.C:122
 MakeFinalSpectrum.C:123
 MakeFinalSpectrum.C:124
 MakeFinalSpectrum.C:125
 MakeFinalSpectrum.C:126
 MakeFinalSpectrum.C:127
 MakeFinalSpectrum.C:128
 MakeFinalSpectrum.C:129
 MakeFinalSpectrum.C:130
 MakeFinalSpectrum.C:131
 MakeFinalSpectrum.C:132
 MakeFinalSpectrum.C:133
 MakeFinalSpectrum.C:134
 MakeFinalSpectrum.C:135
 MakeFinalSpectrum.C:136
 MakeFinalSpectrum.C:137
 MakeFinalSpectrum.C:138
 MakeFinalSpectrum.C:139
 MakeFinalSpectrum.C:140
 MakeFinalSpectrum.C:141
 MakeFinalSpectrum.C:142
 MakeFinalSpectrum.C:143
 MakeFinalSpectrum.C:144
 MakeFinalSpectrum.C:145
 MakeFinalSpectrum.C:146
 MakeFinalSpectrum.C:147
 MakeFinalSpectrum.C:148
 MakeFinalSpectrum.C:149
 MakeFinalSpectrum.C:150
 MakeFinalSpectrum.C:151
 MakeFinalSpectrum.C:152
 MakeFinalSpectrum.C:153
 MakeFinalSpectrum.C:154
 MakeFinalSpectrum.C:155
 MakeFinalSpectrum.C:156
 MakeFinalSpectrum.C:157
 MakeFinalSpectrum.C:158
 MakeFinalSpectrum.C:159
 MakeFinalSpectrum.C:160
 MakeFinalSpectrum.C:161
 MakeFinalSpectrum.C:162
 MakeFinalSpectrum.C:163
 MakeFinalSpectrum.C:164
 MakeFinalSpectrum.C:165
 MakeFinalSpectrum.C:166
 MakeFinalSpectrum.C:167
 MakeFinalSpectrum.C:168
 MakeFinalSpectrum.C:169
 MakeFinalSpectrum.C:170
 MakeFinalSpectrum.C:171
 MakeFinalSpectrum.C:172
 MakeFinalSpectrum.C:173
 MakeFinalSpectrum.C:174
 MakeFinalSpectrum.C:175
 MakeFinalSpectrum.C:176
 MakeFinalSpectrum.C:177
 MakeFinalSpectrum.C:178
 MakeFinalSpectrum.C:179
 MakeFinalSpectrum.C:180
 MakeFinalSpectrum.C:181
 MakeFinalSpectrum.C:182
 MakeFinalSpectrum.C:183
 MakeFinalSpectrum.C:184
 MakeFinalSpectrum.C:185
 MakeFinalSpectrum.C:186
 MakeFinalSpectrum.C:187
 MakeFinalSpectrum.C:188
 MakeFinalSpectrum.C:189
 MakeFinalSpectrum.C:190
 MakeFinalSpectrum.C:191
 MakeFinalSpectrum.C:192
 MakeFinalSpectrum.C:193
 MakeFinalSpectrum.C:194
 MakeFinalSpectrum.C:195
 MakeFinalSpectrum.C:196
 MakeFinalSpectrum.C:197
 MakeFinalSpectrum.C:198
 MakeFinalSpectrum.C:199
 MakeFinalSpectrum.C:200
 MakeFinalSpectrum.C:201
 MakeFinalSpectrum.C:202
 MakeFinalSpectrum.C:203
 MakeFinalSpectrum.C:204
 MakeFinalSpectrum.C:205
 MakeFinalSpectrum.C:206
 MakeFinalSpectrum.C:207
 MakeFinalSpectrum.C:208
 MakeFinalSpectrum.C:209
 MakeFinalSpectrum.C:210
 MakeFinalSpectrum.C:211
 MakeFinalSpectrum.C:212
 MakeFinalSpectrum.C:213
 MakeFinalSpectrum.C:214
 MakeFinalSpectrum.C:215
 MakeFinalSpectrum.C:216
 MakeFinalSpectrum.C:217
 MakeFinalSpectrum.C:218
 MakeFinalSpectrum.C:219
 MakeFinalSpectrum.C:220
 MakeFinalSpectrum.C:221
 MakeFinalSpectrum.C:222
 MakeFinalSpectrum.C:223
 MakeFinalSpectrum.C:224
 MakeFinalSpectrum.C:225
 MakeFinalSpectrum.C:226
 MakeFinalSpectrum.C:227
 MakeFinalSpectrum.C:228
 MakeFinalSpectrum.C:229
 MakeFinalSpectrum.C:230
 MakeFinalSpectrum.C:231
 MakeFinalSpectrum.C:232
 MakeFinalSpectrum.C:233
 MakeFinalSpectrum.C:234
 MakeFinalSpectrum.C:235
 MakeFinalSpectrum.C:236
 MakeFinalSpectrum.C:237
 MakeFinalSpectrum.C:238
 MakeFinalSpectrum.C:239
 MakeFinalSpectrum.C:240
 MakeFinalSpectrum.C:241
 MakeFinalSpectrum.C:242
 MakeFinalSpectrum.C:243
 MakeFinalSpectrum.C:244
 MakeFinalSpectrum.C:245
 MakeFinalSpectrum.C:246
 MakeFinalSpectrum.C:247
 MakeFinalSpectrum.C:248
 MakeFinalSpectrum.C:249
 MakeFinalSpectrum.C:250
 MakeFinalSpectrum.C:251
 MakeFinalSpectrum.C:252
 MakeFinalSpectrum.C:253
 MakeFinalSpectrum.C:254
 MakeFinalSpectrum.C:255
 MakeFinalSpectrum.C:256
 MakeFinalSpectrum.C:257
 MakeFinalSpectrum.C:258
 MakeFinalSpectrum.C:259
 MakeFinalSpectrum.C:260
 MakeFinalSpectrum.C:261
 MakeFinalSpectrum.C:262
 MakeFinalSpectrum.C:263
 MakeFinalSpectrum.C:264
 MakeFinalSpectrum.C:265
 MakeFinalSpectrum.C:266
 MakeFinalSpectrum.C:267
 MakeFinalSpectrum.C:268
 MakeFinalSpectrum.C:269
 MakeFinalSpectrum.C:270
 MakeFinalSpectrum.C:271
 MakeFinalSpectrum.C:272
 MakeFinalSpectrum.C:273
 MakeFinalSpectrum.C:274
 MakeFinalSpectrum.C:275
 MakeFinalSpectrum.C:276
 MakeFinalSpectrum.C:277
 MakeFinalSpectrum.C:278
 MakeFinalSpectrum.C:279
 MakeFinalSpectrum.C:280
 MakeFinalSpectrum.C:281
 MakeFinalSpectrum.C:282
 MakeFinalSpectrum.C:283
 MakeFinalSpectrum.C:284
 MakeFinalSpectrum.C:285
 MakeFinalSpectrum.C:286
 MakeFinalSpectrum.C:287
 MakeFinalSpectrum.C:288
 MakeFinalSpectrum.C:289
 MakeFinalSpectrum.C:290
 MakeFinalSpectrum.C:291
 MakeFinalSpectrum.C:292
 MakeFinalSpectrum.C:293
 MakeFinalSpectrum.C:294
 MakeFinalSpectrum.C:295
 MakeFinalSpectrum.C:296
 MakeFinalSpectrum.C:297
 MakeFinalSpectrum.C:298
 MakeFinalSpectrum.C:299
 MakeFinalSpectrum.C:300
 MakeFinalSpectrum.C:301
 MakeFinalSpectrum.C:302
 MakeFinalSpectrum.C:303
 MakeFinalSpectrum.C:304
 MakeFinalSpectrum.C:305
 MakeFinalSpectrum.C:306
 MakeFinalSpectrum.C:307
 MakeFinalSpectrum.C:308
 MakeFinalSpectrum.C:309
 MakeFinalSpectrum.C:310
 MakeFinalSpectrum.C:311
 MakeFinalSpectrum.C:312
 MakeFinalSpectrum.C:313
 MakeFinalSpectrum.C:314
 MakeFinalSpectrum.C:315
 MakeFinalSpectrum.C:316
 MakeFinalSpectrum.C:317
 MakeFinalSpectrum.C:318
 MakeFinalSpectrum.C:319
 MakeFinalSpectrum.C:320
 MakeFinalSpectrum.C:321
 MakeFinalSpectrum.C:322
 MakeFinalSpectrum.C:323
 MakeFinalSpectrum.C:324
 MakeFinalSpectrum.C:325
 MakeFinalSpectrum.C:326
 MakeFinalSpectrum.C:327
 MakeFinalSpectrum.C:328
 MakeFinalSpectrum.C:329
 MakeFinalSpectrum.C:330
 MakeFinalSpectrum.C:331
 MakeFinalSpectrum.C:332
 MakeFinalSpectrum.C:333
 MakeFinalSpectrum.C:334
 MakeFinalSpectrum.C:335
 MakeFinalSpectrum.C:336
 MakeFinalSpectrum.C:337
 MakeFinalSpectrum.C:338
 MakeFinalSpectrum.C:339
 MakeFinalSpectrum.C:340
 MakeFinalSpectrum.C:341
 MakeFinalSpectrum.C:342
 MakeFinalSpectrum.C:343
 MakeFinalSpectrum.C:344
 MakeFinalSpectrum.C:345
 MakeFinalSpectrum.C:346
 MakeFinalSpectrum.C:347
 MakeFinalSpectrum.C:348
 MakeFinalSpectrum.C:349
 MakeFinalSpectrum.C:350
 MakeFinalSpectrum.C:351
 MakeFinalSpectrum.C:352
 MakeFinalSpectrum.C:353
 MakeFinalSpectrum.C:354
 MakeFinalSpectrum.C:355
 MakeFinalSpectrum.C:356
 MakeFinalSpectrum.C:357
 MakeFinalSpectrum.C:358
 MakeFinalSpectrum.C:359
 MakeFinalSpectrum.C:360
 MakeFinalSpectrum.C:361
 MakeFinalSpectrum.C:362
 MakeFinalSpectrum.C:363
 MakeFinalSpectrum.C:364
 MakeFinalSpectrum.C:365
 MakeFinalSpectrum.C:366
 MakeFinalSpectrum.C:367
 MakeFinalSpectrum.C:368
 MakeFinalSpectrum.C:369
 MakeFinalSpectrum.C:370
 MakeFinalSpectrum.C:371
 MakeFinalSpectrum.C:372
 MakeFinalSpectrum.C:373
 MakeFinalSpectrum.C:374
 MakeFinalSpectrum.C:375
 MakeFinalSpectrum.C:376
 MakeFinalSpectrum.C:377
 MakeFinalSpectrum.C:378
 MakeFinalSpectrum.C:379
 MakeFinalSpectrum.C:380
 MakeFinalSpectrum.C:381
 MakeFinalSpectrum.C:382
 MakeFinalSpectrum.C:383
 MakeFinalSpectrum.C:384
 MakeFinalSpectrum.C:385