ROOT logo
#include <TF1.h>
#include <TFormula.h>
void MakeD2eSpectra(){

  // load libs
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libCORRFW.so");
  gSystem->Load("libPWG0base.so");
  gSystem->Load("libPWGHFhfe.so");

  setGeneralStyle();

  // read input files
  //char filename0[]="/alidata10/alice_u/minjung/train/GSI/V006.MC_pp/2011-03-08_2238.5742/LHC10f6a/HFEtask.root"; // pwg3 talk(linear binning)
  //char filename1[]="../TableOldnorm/HFPtSpectrum_D0Kpi_rebinnedth_combinedFD_021210_DecayBRSubtracted.root";     // pwg3 talk(use of 71.4mb)
  //char filename2[]="../TableOldnorm/HFPtSpectrum_DplusKpipi_combinedFD_021210_DecayBRSubtracted.root";           // pwg3 talk(use of 71.4mb)
  //char filename0[]="/alidata10/alice_u/minjung/train/GSI/V006.MC_pp/2011-03-15_2121.5954/LHC10f6a/HFEtask.root";   // preliminary plot (log binning)
  char filename0[]="./HFEtaskLHC10f6awExtendedDpt.root";   // QM plot 
  char filename1[]="../TableOldnorm/HFPtSpectrum_D0Kpi_combinedFD_rebinnedth_150311_newsigma_woDecayBR.root";      // preliminary plot(use of 62.1mb)
  char filename2[]="../TableOldnorm/HFPtSpectrum_DplusKpipi_combinedFD_150311_newsigma_woDecayBR.root";            // preliminary plot(use of 62.1mb) 

  TFile *_file[3]; 
  _file[0] = TFile::Open(filename0);
  _file[1] = TFile::Open(filename1);
  _file[2] = TFile::Open(filename2);

  TList *tl = (TList *)_file[0]->Get("TRD_HFE_QA2")->FindObject("MCqa");

  //count # of events
  TList *tl_result = (TList *)_file[0]->Get("TRD_HFE_Results2");
  AliCFContainer *containermc = (AliCFContainer *) tl_result->FindObject("eventContainer");
  AliCFDataGrid *mcGrid1 = new AliCFDataGrid("mcgrid1","",*containermc,AliHFEcuts::kEventStepGenerated);
  AliCFDataGrid *mcGrid2 = new AliCFDataGrid("mcgrid2","",*containermc,AliHFEcuts::kEventStepRecNoCut);
  printf("mc # of entries kEventStepGenerated= %lf kEventStepRecNoCut= %lf\n",mcGrid1->GetEntries(),mcGrid2->GetEntries());
 
  Int_t nEvt = (Int_t) mcGrid1->GetEntries();
  Double_t nevtnorm = 1./float(nEvt); //normalize with total number of event 


  // cross section for the old D meson data
  //Double_t Xsectrion4e = 71400000000.;
  //Double_t Xsectrion4D = 71400.; // consider the data point is represented as umb
  Double_t Xsectrion4e = 62100000000.;
  Double_t Xsectrion4D = 62100.; // consider the data point is represented as umb
  

  TString kDType[7];
  kDType[0]="421";
  kDType[1]="411";
  kDType[2]="431";
  kDType[3]="4122";
  kDType[4]="4132";
  kDType[5]="4232";
  kDType[6]="4332";
  
  TString kDType2[4];
  kDType2[0]="";
  kDType2[1]="D0";
  kDType2[2]="Dp";
  kDType2[3]="Drest";

  TString hname;

  // 2D histo having D, e pt correlation
  TH2D *hDeCorr[4]; // 4 groups.  "", "D0", "Dp", "Drest"
  for(int i=0; i<4; i++){
    hname = "mcqa_barrel_PtCorr"+kDType2[i]+"_c";
    hDeCorr[i]=(TH2D*)tl->FindObject(hname);  
  }

  // D mesons' pt, y 2D histograms from PYTHIA
  TH2D *hDPYTHIA[7]; // 7 particles. 421:D0, 411:D+, 431:Ds, 4122, 4132, 4232, 4332
  for(int i=0; i<7; i++){
    hname = "Dmeson"+kDType[i];
    hDPYTHIA[i]=(TH2D*)tl->FindObject(hname);
  }

  // PYTHIA pt distribution in |y|<0.5 of 7 D mesons
  TH1D *hDPYTHIApt[7];
  for(int i=0; i<7; i++){
    hname= "hD"+kDType[i]+"PYTHIApt";
    hDPYTHIApt[i]=(TH1D*)hDPYTHIA[i]->ProjectionX(hname,5,5); // |rapidity|<0.5 

    CorrectFromTheWidth(hDPYTHIApt[i]); // bin width correction
    hDPYTHIApt[i]->Scale(nevtnorm);     // # of event normalization
    hDPYTHIApt[i]->Scale(0.5);          // (particle + antiparticle)/2
    hDPYTHIApt[i]->Scale(Xsectrion4D);  // convert to cross section
    hDPYTHIApt[i]->SetMarkerStyle(20+i);
    hDPYTHIApt[i]->GetYaxis()->SetTitle("d#sigma/dp_{t} |_{|y|<0.5} [#mu b/GeV/c]");
  }

  // D measured (be careful with binnings)
  TH1D *hD0MeasuredStat= (TH1D *)_file[1]->Get("histoSigmaCorr");                        // data & statistic errors, start from bin number 4
  TGraphAsymmErrors *gD0measuredSys= (TGraphAsymmErrors *)_file[1]->Get("gSigmaCorr");   // data & systematic errors, start from bin number 4

  TH1D *hDpMeasuredStat = (TH1D *)_file[2]->Get("histoSigmaCorr");                       // data & statistic errors, start from bin number 1
  TGraphAsymmErrors *gDpMeasuredSys = (TGraphAsymmErrors *)_file[2]->Get("gSigmaCorr");  // data & statistic errors, start from bin number 1

  // drawing -------------------------------------------------------
  cPtDmeson = new TCanvas("cPtDmeson","pT of D mesons",0,0,800,500);
  cPtDmeson->Divide(2,1);

  cPtDmeson->cd(1);
  hDPYTHIApt[0]->Draw(""); //0: D0
  hD0MeasuredStat->Draw("same");
  TLegend *legD0 = new TLegend(0.60,0.75,0.75,0.85);
  legD0->AddEntry(hDPYTHIApt[0],"D^{0} PYTHIA","p");
  legD0->AddEntry(hD0MeasuredStat,"D^{0} Measured","p");
  setLegendStyle(*legD0,0);
  legD0->Draw("same");

  cPtDmeson->cd(2);
  hDPYTHIApt[1]->Draw(""); //1: Dp
  hDpMeasuredStat->Draw("same");
  TLegend *legDp = new TLegend(0.60,0.75,0.75,0.85);
  legDp->AddEntry(hDPYTHIApt[1],"D^{+} PYTHIA","p");
  legDp->AddEntry(hDpMeasuredStat,"D^{+} Measured","p");
  setLegendStyle(*legDp,0);
  legDp->Draw("same");
  //----------------------------------------------------------------


  Double_t ptval[6];
  Double_t XsecD0[6], XsecD0ErrStatFrac[6], XsecD0ErrSysFracLow[6], XsecD0ErrSysFracHigh[6];
  Double_t XsecDp[6], XsecDpErrStatFrac[6], XsecDpErrSysFracLow[6], XsecDpErrSysFracHigh[6];
  Double_t iM2PD0[6], iM2PDp[6];

  Double_t xbins[12]={0.,0.5,1.,2.,3.,4.,5.,6.,8.,12.,16.,20.};
  TH1D *hM2PD0= new TH1D("hM2PD0","D0: Measured/Pythia",11,xbins);
  TH1D *hM2PDp= new TH1D("hM2PDp","Dp: Measured/Pythia",11,xbins);

  for(int i=0; i<6; i++){ // 0 -> first measured point, there are 6 points for pp for the moment
     // D0
     iM2PD0[i]=0.; 
     ptval[i]=hD0MeasuredStat->GetBinCenter(i+4); // +4: starting from the first measured point
     XsecD0[i]=hD0MeasuredStat->GetBinContent(i+4);
     if(hDPYTHIApt[0]->GetBinContent(i+4)>0) iM2PD0[i]=hD0MeasuredStat->GetBinContent(i+4)/hDPYTHIApt[0]->GetBinContent(i+4);
     if(hD0MeasuredStat->GetBinContent(i+4)>0){
       XsecD0ErrStatFrac[i]    = hD0MeasuredStat->GetBinError(i+4)/hD0MeasuredStat->GetBinContent(i+4);
       XsecD0ErrSysFracLow[i]  = gD0measuredSys->GetErrorYlow(i+4)/hD0MeasuredStat->GetBinContent(i+4);
       XsecD0ErrSysFracHigh[i] = gD0measuredSys->GetErrorYhigh(i+4)/hD0MeasuredStat->GetBinContent(i+4);
     }

     // D+
     iM2PDp[i]=0.; 
     XsecDp[i]=hDpMeasuredStat->GetBinContent(i+1); // be careful with the fact that D+ measured starting from bin 1
     if(hDPYTHIApt[1]->GetBinContent(i+4)>0) iM2PDp[i]=hDpMeasuredStat->GetBinContent(i+1)/hDPYTHIApt[1]->GetBinContent(i+4); //D+
     if(hDpMeasuredStat->GetBinContent(i+1)>0) {
       XsecDpErrStatFrac[i]    = hDpMeasuredStat->GetBinError(i+1)/hDpMeasuredStat->GetBinContent(i+1);
       XsecDpErrSysFracLow[i]  = gDpMeasuredSys->GetErrorYlow(i+1)/hDpMeasuredStat->GetBinContent(i+1);
       XsecDpErrSysFracHigh[i] = gDpMeasuredSys->GetErrorYhigh(i+1)/hDpMeasuredStat->GetBinContent(i+1);
     }

     hM2PD0->Fill(ptval[i],iM2PD0[i]);
     hM2PDp->Fill(ptval[i],iM2PDp[i]);
  }
  // drawing -------------------------------------------------------
  cM2PDmeson = new TCanvas("cM2PDmeson","Measured/Pythia",0,0,800,500);	
  cM2PDmeson->Divide(2,1);
  cM2PDmeson->cd(1);
  hM2PD0->SetMarkerStyle(20);
  hM2PD0->SetXTitle("p_{t} [GeV/c]");
  hM2PD0->SetYTitle("ratio");
  hM2PD0->Draw("p");
  TLegend *legM2PD0 = new TLegend(0.45,0.75,0.75,0.85);
  legM2PD0->AddEntry(hM2PD0,"D0: Measured/PYTHIA","p");
  setLegendStyle(*legM2PD0,0);
  legM2PD0->Draw("same");

  cM2PDmeson->cd(2);
  hM2PDp->SetMarkerStyle(20);
  hM2PDp->SetXTitle("p_{t} [GeV/c]");
  hM2PDp->SetYTitle("ratio");
  hM2PDp->Draw("p");
  TLegend *legM2PDp = new TLegend(0.45,0.75,0.75,0.85);
  legM2PDp->AddEntry(hM2PDp,"D+: Measured/PYTHIA","p");
  setLegendStyle(*legM2PDp,0);
  legM2PDp->Draw("same");
  //----------------------------------------------------------------


  // electrons pt spectra from given D meson pt bins (before any scaling)
  TString kDPtbin[14];
  kDPtbin[0]="Dpt0";
  kDPtbin[1]="Dpt05";
  kDPtbin[2]="Dpt1";
  kDPtbin[3]="Dpt2";
  kDPtbin[4]="Dpt3";
  kDPtbin[5]="Dpt4";
  kDPtbin[6]="Dpt5";
  kDPtbin[7]="Dpt6";
  kDPtbin[8]="Dpt8";
  kDPtbin[9]="Dpt12";
  kDPtbin[10]="Dpt16";
  kDPtbin[11]="Dpt20";
  kDPtbin[12]="Dpt30";
  kDPtbin[13]="Dpt40";

  Int_t kbinl[14]={1, 6,11,21,31,41,51,61, 81,121,161,201,301,401};
  Int_t kbinh[14]={5,10,20,30,40,50,60,80,120,160,200,300,400,500};

  TH1D *hD2e[4][14];
  TH1D *hD2eNorm[4][14];
  TH1D *hD2eNormWm[2][14];
  Int_t nRebin = 1;
  for(int iDtype=0; iDtype<2; iDtype++){ // 4 groups.  0:"", 1:"D0", 2:"Dp", 3:"Drest"
    for(int iDptbin=0; iDptbin<14; iDptbin++){
      hname = "h"+kDType2[iDtype+1]+kDPtbin[iDptbin];
      hD2e[iDtype][iDptbin] = (TH1D*)hDeCorr[iDtype+1]->ProjectionY(hname,kbinl[iDptbin],kbinh[iDptbin]); 
      hD2e[iDtype][iDptbin]->Rebin(nRebin);
      CorrectFromTheWidth(hD2e[iDtype][iDptbin]);
      hname = "hNorm"+kDType2[iDtype]+kDPtbin[iDptbin];
      hD2eNorm[iDtype][iDptbin] = (TH1D*)hD2e[iDtype][iDptbin]->Clone(hname);
      hD2eNormWm[iDtype][iDptbin] = (TH1D*)hD2e[iDtype][iDptbin]->Clone(hname);
      if(iDtype==0) hD2eNorm[2][iDptbin] = (TH1D*)hD2e[iDtype][iDptbin]->Clone(hname); // for Ds, use D0 electron spectra
      if(iDtype==0) hD2eNorm[3][iDptbin] = (TH1D*)hD2e[iDtype][iDptbin]->Clone(hname); // for Lc, use D0 electron spectra
    }
  }

  hD0pt0to2=(TH1D*)hD2e[0][0]->Clone("hD0pt0to2");
  hD0pt2to12=(TH1D*)hD2e[0][3]->Clone("hD0pt2to12");
  hD0pt12to50=(TH1D*)hD2e[0][9]->Clone("hD0pt12to50");
  hD0pt0to2->Add(hD2e[0][1]);
  hD0pt0to2->Add(hD2e[0][2]);
  hD0pt2to12->Add(hD2e[0][4]);
  hD0pt2to12->Add(hD2e[0][5]);
  hD0pt2to12->Add(hD2e[0][6]);
  hD0pt2to12->Add(hD2e[0][7]);
  hD0pt2to12->Add(hD2e[0][8]);
  hD0pt12to50->Add(hD2e[0][10]);
  hD0pt12to50->Add(hD2e[0][11]);
  hD0pt12to50->Add(hD2e[0][12]);
  hD0pt12to50->Add(hD2e[0][13]);
  hD0ptall=(TH1D*)hD0pt0to2->Clone("hD0ptall");
  hD0ptall->Add(hD0pt2to12);
  hD0ptall->Add(hD0pt12to50);

  hD0lowptcontrib=(TH1D*)hD0pt0to2->Clone("hD0lowptcontrib");
  hD0lowptcontrib->Divide(hD0pt2to12);

  hD0pt0to2->Divide(hD0ptall);
  hD0pt2to12->Divide(hD0ptall);
  hD0pt12to50->Divide(hD0ptall);

  new TCanvas;
  hD0pt0to2->SetMarkerStyle(24);
  hD0pt2to12->SetMarkerStyle(24);
  hD0pt12to50->SetMarkerStyle(24);
  hD0pt0to2->SetMarkerColor(1);
  hD0pt0to2->SetLineColor(1);
  hD0pt2to12->SetMarkerColor(4);
  hD0pt2to12->SetLineColor(4);
  hD0pt12to50->SetMarkerColor(2);
  hD0pt12to50->SetLineColor(2);
  hD0pt0to2->Draw(); 
  hD0pt2to12->Draw("same");
  hD0pt12to50->Draw("same");
  gPad->SetLogy();
  gPad->SetGrid();

  // drawing -------------------------------------------------------
  cPtD2e = new TCanvas("cPtD2e","pT of e from certain D pt bin",0,0,1000,700);	
  cPtD2e->Divide(2,1);
  Int_t colorcode=1;
  TLegend *legD2e[4];
  for(int iDtype=0; iDtype<2; iDtype++){ 
    legD2e[iDtype] = new TLegend(0.75,0.45,0.88,0.88);
    legD2e[iDtype]->AddEntry(hD2e[0][0],kDType2[iDtype+1],"");
    for(int iDptbin=0; iDptbin<14; iDptbin++){
      cPtD2e->cd(iDtype+1); 
      colorcode=iDptbin+1;
      if(colorcode==10) colorcode=38;
      hD2e[iDtype][iDptbin]->SetLineColor(colorcode);
      hD2e[iDtype][iDptbin]->SetMarkerColor(colorcode);
      hD2e[iDtype][iDptbin]->SetMarkerStyle(20);
      if(iDptbin==0) hD2e[iDtype][iDptbin]->Draw();
      else hD2e[iDtype][iDptbin]->Draw("samep");
      gPad->SetLogy();
      gPad->SetLogx();
      legD2e[iDtype]->AddEntry(hD2e[iDtype][iDptbin],kDPtbin[iDptbin],"p");
      setLegendStyle(*legD2e[iDtype],0);
    }
    legD2e[iDtype]->Draw("same");
  }
  //----------------------------------------------------------------

  // electrons pt spectra from given D meson pt bins "with scaling based on measured X section"
  Double_t accfactorD[4][6] = { {1.73018, 1.72687, 1.76262, 1.94291, 1.82095, 1.69734,}, // acceptance factor of D0->e
                                {1.77726, 1.72664, 1.79331, 1.73913, 1.71084, 1.74054,}, // acceptance factor of Dp->e
                                {1.77726, 1.72664, 1.79331, 1.73913, 1.71084, 1.74054,}, // acceptance factor of Ds->e(copy of Dp)
                                {1.77726, 1.72664, 1.79331, 1.73913, 1.71084, 1.74054} }; // acceptance factor of Lc->e(copy of Dp)
  Double_t ptbwdth[6] = {1., 1., 1., 1., 2., 4.}; // pt bin width for binwidth correction

  // normalize PYTHIA electron spectra with the measured D meson cross section * branching ratio
  Double_t brachratioD[4];
  brachratioD[0] = 0.0653; // D0->e branching ratio
  brachratioD[1] = 0.16;   // Dp->e branching ratio
  brachratioD[2] = 0.08;   // Ds->e branching ratio
  brachratioD[3] = 0.045;  // Lc->e branching ratio
  //Double_t DiffMthdScaleD0= 1./1.07;  // considering difference between weighting method and X section method for D0 : new
  //Double_t DiffMthdScaleDp= 1./1.19;  // considering difference between weighting method and X section method for Dp : new
  Double_t DiffMthdScaleD0= 1./1.12;  // considering difference between weighting method and X section method for D0
  Double_t DiffMthdScaleDp= 1./1.25;  // considering difference between weighting method and X section method for Dp


  Double_t norm, xsec;
  Double_t xsecD[4][6];
  for(int iptb=0; iptb<6; iptb++){
    xsecD[0][iptb] = XsecD0[iptb]; //D0
    xsecD[1][iptb] = XsecDp[iptb]; //Dp
    xsecD[2][iptb] = (XsecD0[iptb]+XsecDp[iptb])*2.37/(8.49+2.65+5.07); //Ds: use of ZEUS ratio
    xsecD[3][iptb] = (XsecD0[iptb]+XsecDp[iptb])*3.59/(8.49+2.65+5.07); //Lc: use of ZEUS ratio 
  }

  for(int iDtype=0; iDtype<4; iDtype++){
    for(int iptb=0; iptb<6; iptb++){
      xsec = xsecD[iDtype][iptb]*1000000.; // change scale from ub to pb
      norm = hD2eNorm[iDtype][iptb+3]->Integral("width")/(xsec*brachratioD[iDtype]*ptbwdth[iptb]); //D0
      norm = accfactorD[iDtype][iptb]/norm;
      hD2eNorm[iDtype][iptb+3]->Scale(norm);
    }
  }

  // not measured pt data points for D0
  hD2eNorm[0][9]->Scale(nevtnorm);
  hD2eNorm[0][9]->Scale(0.44);  // measured/pythia for this pt bin
  hD2eNorm[0][9]->Scale(0.5);
  hD2eNorm[0][9]->Scale(DiffMthdScaleD0);
  hD2eNorm[0][9]->Scale(Xsectrion4e);
  hD2eNorm[0][10]->Scale(nevtnorm);
  hD2eNorm[0][10]->Scale(0.44); // measured/pythia for this pt bin
  hD2eNorm[0][10]->Scale(0.5);
  hD2eNorm[0][10]->Scale(DiffMthdScaleD0);
  hD2eNorm[0][10]->Scale(Xsectrion4e);
  hD2eNorm[0][11]->Scale(nevtnorm);
  hD2eNorm[0][11]->Scale(0.44); // measured/pythia for this pt bin
  hD2eNorm[0][11]->Scale(0.5);
  hD2eNorm[0][11]->Scale(DiffMthdScaleD0);
  hD2eNorm[0][11]->Scale(Xsectrion4e);
  hD2eNorm[0][12]->Scale(nevtnorm);
  hD2eNorm[0][12]->Scale(0.44); // measured/pythia for this pt bin
  hD2eNorm[0][12]->Scale(0.5);
  hD2eNorm[0][12]->Scale(DiffMthdScaleD0);
  hD2eNorm[0][12]->Scale(Xsectrion4e);
  hD2eNorm[0][13]->Scale(nevtnorm);
  hD2eNorm[0][13]->Scale(0.44); // measured/pythia for this pt bin
  hD2eNorm[0][13]->Scale(0.5);
  hD2eNorm[0][13]->Scale(DiffMthdScaleD0);
  hD2eNorm[0][13]->Scale(Xsectrion4e);


  // not measured pt data points for D+
  hD2eNorm[1][9]->Scale(nevtnorm); 
  hD2eNorm[1][9]->Scale(0.41);  // measured/pythia for this pt bin
  hD2eNorm[1][9]->Scale(0.5);
  hD2eNorm[1][9]->Scale(DiffMthdScaleDp);
  hD2eNorm[1][9]->Scale(Xsectrion4e);
  hD2eNorm[1][10]->Scale(nevtnorm);
  hD2eNorm[1][10]->Scale(0.41); // measured/pythia for this pt bin
  hD2eNorm[1][10]->Scale(0.5);
  hD2eNorm[1][10]->Scale(DiffMthdScaleDp);
  hD2eNorm[1][10]->Scale(Xsectrion4e);
  hD2eNorm[1][11]->Scale(nevtnorm);
  hD2eNorm[1][11]->Scale(0.41); // measured/pythia for this pt bin
  hD2eNorm[1][11]->Scale(0.5);
  hD2eNorm[1][11]->Scale(DiffMthdScaleDp);
  hD2eNorm[1][11]->Scale(Xsectrion4e);
  hD2eNorm[1][12]->Scale(nevtnorm);
  hD2eNorm[1][12]->Scale(0.41); // measured/pythia for this pt bin
  hD2eNorm[1][12]->Scale(0.5);
  hD2eNorm[1][12]->Scale(DiffMthdScaleDp);
  hD2eNorm[1][12]->Scale(Xsectrion4e);
  hD2eNorm[1][13]->Scale(nevtnorm);
  hD2eNorm[1][13]->Scale(0.41); // measured/pythia for this pt bin
  hD2eNorm[1][13]->Scale(0.5);
  hD2eNorm[1][13]->Scale(DiffMthdScaleDp);
  hD2eNorm[1][13]->Scale(Xsectrion4e);


  // estimation for Ds and Lc based on D0, D+ at high pt
  Double_t fragRatio=2.37/(8.49+2.65+5.07);
  Double_t brachRatio[2];
  Double_t brachRatio[0]=2*brachratioD[2]/(brachratioD[0]+brachratioD[1]);
  Double_t brachRatio[1]=2*brachratioD[3]/(brachratioD[0]+brachratioD[1]);
  for(int iptb=9; iptb<14; iptb++){
    hD2eNorm[2][iptb]->Add(hD2eNorm[0][iptb]);
    hD2eNorm[2][iptb]->Add(hD2eNorm[1][iptb]);
    hD2eNorm[2][iptb]->Scale(fragRatio);
    hD2eNorm[2][iptb]->Scale(brachRatio[0]);
    hD2eNorm[3][iptb]->Add(hD2eNorm[0][iptb]);
    hD2eNorm[3][iptb]->Add(hD2eNorm[1][iptb]);
    hD2eNorm[3][iptb]->Scale(fragRatio);
    hD2eNorm[3][iptb]->Scale(brachRatio[1]);
  }


  int kptmaxb = 11; // D0, D+
  TH1D *hD2eNormSum[4];
  for(int iDtype=0; iDtype<4; iDtype++){
    hname="hD2eNormSum" + iDtype;
    hD2eNormSum[iDtype]=(TH1D*)hD2eNorm[iDtype][3]->Clone(hname);
//    if(iDtype==2 || iDtype==3) kptmaxb=6; //Ds, Lc    //mmjj
    for(int iptb=1; iptb<kptmaxb; iptb++){
      hD2eNormSum[iDtype]->Add(hD2eNorm[iDtype][iptb+3]);
    }
  }

  for(int i=1; i<hD2eNormSum[0]->FindBin(2.0); i++){ // consider low pt contribution
     for(int iDtype=0; iDtype<4; iDtype++){
       Double_t icontrib =hD0lowptcontrib->GetBinContent(i)*hD2eNormSum[iDtype]->GetBinContent(i);
       Double_t ipt =hD2eNormSum[iDtype]->GetBinCenter(i);
       hD2eNormSum[iDtype]->Fill(ipt, icontrib);
     }
  }


  TH1D *hD2eNormSumStat[4]; // copy of hD2eNormSum[4] to get mc statistical errors
  for(int iDtype=0; iDtype<4; iDtype++){
    hname="hD2eNormSumStat" + iDtype;
    hD2eNormSumStat[iDtype]=(TH1D*)hD2eNormSum[iDtype]->Clone(hname);
  }

  // sum
  hD2eNormTotalStat=(TH1D*)hD2eNormSumStat[0]->Clone("hD2eNormTotalStat");
  hD2eNormTotalStat->Add(hD2eNormSumStat[1]);
  hD2eNormTotalStat->Add(hD2eNormSumStat[2]);
  hD2eNormTotalStat->Add(hD2eNormSumStat[3]);

  // drawing, here the error bars are only for MC statistics ---------------------------
  cPtD2eSum = new TCanvas("cPtD2eSum","pT of e from D",0,0,1000,600);
  cPtD2eSum->Divide(2,1);
  cPtD2eSum->cd(1);
  hD2eNormSumStat[0]->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");
  hD2eNormSumStat[0]->SetMarkerStyle(20);
  hD2eNormSumStat[0]->Draw();
  hD2eNormSumStat[1]->SetMarkerColor(2);
  hD2eNormSumStat[1]->SetMarkerStyle(20);
  hD2eNormSumStat[1]->Draw("same");
  hD2eNormSumStat[2]->SetMarkerColor(4);
  hD2eNormSumStat[2]->SetMarkerStyle(20);
  hD2eNormSumStat[2]->Draw("same");
  hD2eNormSumStat[3]->SetMarkerColor(3);
  hD2eNormSumStat[3]->SetMarkerStyle(20);
  hD2eNormSumStat[3]->Draw("same");
  gPad->SetLogy();
  TLegend *legsum = new TLegend(0.25,0.70,0.75,0.85);
  legsum->AddEntry(hD2eNormSumStat[0],"D^{0}#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  legsum->AddEntry(hD2eNormSumStat[1],"D^{+}#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  legsum->AddEntry(hD2eNormSumStat[2],"D_{s}#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  legsum->AddEntry(hD2eNormSumStat[3],"#Lambda_{c}#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  setLegendStyle(*legsum,0);  legsum->Draw("same");

  cPtD2eSum->cd(2);
  hD2eNormTotalStat->SetMarkerStyle(20);
  hD2eNormTotalStat->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");
  hD2eNormTotalStat->Draw();
  TLegend *legtotal = new TLegend(0.30,0.75,0.75,0.85);
  legtotal->AddEntry(hD2eNormTotalStat,"D#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  setLegendStyle(*legtotal,0);
  legtotal->Draw("same");
  gPad->SetLogy();
  //----------------------------------------------------------------


  // calculating propagated error of D meson's statistic and systematic errors
  TGraphAsymmErrors *gD2eNormSum[4]; // store propagated error from D systematic errors
  for(iDtype=0; iDtype<4; iDtype++){
    gD2eNormSum[iDtype]= new TGraphAsymmErrors(hD2eNormSum[iDtype]);
  }

  Double_t statErr[11]; //kptmaxb
  Double_t sysErrLow[11]; //kptmaxb
  Double_t sysErrHigh[11]; //kptmaxb
  Double_t statErrSum[4]; // D0, D+, Ds. Lc
  Double_t sysErrLowSum[4]; // D0, D+, Ds. Lc
  Double_t sysErrHighSum[4]; // D0, D+, Ds. Lc
  Int_t ib4err = 0;
  for(int i=0; i<hD2eNormSum[0]->GetNbinsX(); i++){
     for(int iDtype=0; iDtype<4; iDtype++){ 
       statErrSum[iDtype]=0.;
       sysErrLowSum[iDtype]=0.;
       sysErrHighSum[iDtype]=0.;
     }

     for(int iptb=0; iptb<11; iptb++){
       // calculate propagated error from D statistical errors 
       if(iptb<6) ib4err = iptb;
       else ib4err = 5; // last two bins from pythia, so take the error from the last measured bin
       // statistical error of D propagated to systematic error of elec
       statErr[iptb]=hD2eNorm[0][iptb+3]->GetBinContent(i+1)*XsecD0ErrStatFrac[ib4err]; //D0
       if(!(iptb<6)) statErr[iptb] = statErr[iptb]*1.5; //1.5 put conservative error
       statErrSum[0] += statErr[iptb]*statErr[iptb];
       statErr[iptb]=hD2eNorm[1][iptb+3]->GetBinContent(i+1)*XsecDpErrStatFrac[ib4err]; //Dp
       if(!(iptb<6)) statErr[iptb] = statErr[iptb]*1.5;
       statErrSum[1] += statErr[iptb]*statErr[iptb];
       statErr[iptb]=hD2eNorm[2][iptb+3]->GetBinContent(i+1)*XsecDpErrStatFrac[ib4err]*1.5; //Ds
       if(!(iptb<6)) statErr[iptb] = statErr[iptb]*1.5;
       statErrSum[2] += statErr[iptb]*statErr[iptb];
       statErr[iptb]=hD2eNorm[3][iptb+3]->GetBinContent(i+1)*XsecDpErrStatFrac[ib4err]*1.5; //Lc
       if(!(iptb<6)) statErr[iptb] = statErr[iptb]*1.5;
       statErrSum[3] += statErr[iptb]*statErr[iptb];

       // systematic error of D propagated to systematic error of elec
       sysErrLow[iptb]=hD2eNorm[0][iptb+3]->GetBinContent(i+1)*XsecD0ErrSysFracLow[ib4err]; //D0
       if(!(iptb<6)) sysErrLow[iptb] = sysErrLow[iptb]*1.5;
       sysErrLowSum[0] += sysErrLow[iptb]*sysErrLow[iptb];
       sysErrLow[iptb]=hD2eNorm[1][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracLow[ib4err]; //Dp
       if(!(iptb<6)) sysErrLow[iptb] = sysErrLow[iptb]*1.5;
       sysErrLowSum[1] += sysErrLow[iptb]*sysErrLow[iptb];
       sysErrLow[iptb]=hD2eNorm[2][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracLow[ib4err]*1.5; //Ds
       if(!(iptb<6)) sysErrLow[iptb] = sysErrLow[iptb]*1.5;
       sysErrLowSum[2] += sysErrLow[iptb]*sysErrLow[iptb];
       sysErrLow[iptb]=hD2eNorm[3][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracLow[ib4err]*1.5; //Lc
       if(!(iptb<6)) sysErrLow[iptb] = sysErrLow[iptb]*1.5;
       sysErrLowSum[3] += sysErrLow[iptb]*sysErrLow[iptb];

       sysErrHigh[iptb]=hD2eNorm[0][iptb+3]->GetBinContent(i+1)*XsecD0ErrSysFracHigh[ib4err]; //D0
       if(!(iptb<6)) sysErrHigh[iptb] = sysErrHigh[iptb]*1.5;
       sysErrHighSum[0] += sysErrHigh[iptb]*sysErrHigh[iptb];
       sysErrHigh[iptb]=hD2eNorm[1][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracHigh[ib4err]; //Dp
       if(!(iptb<6)) sysErrHigh[iptb] = sysErrHigh[iptb]*1.5;
       sysErrHighSum[1] += sysErrHigh[iptb]*sysErrHigh[iptb];
       sysErrHigh[iptb]=hD2eNorm[2][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracHigh[ib4err]*1.5; //Ds
       if(!(iptb<6)) sysErrHigh[iptb] = sysErrHigh[iptb]*1.5;
       sysErrHighSum[2] += sysErrHigh[iptb]*sysErrHigh[iptb];
       sysErrHigh[iptb]=hD2eNorm[3][iptb+3]->GetBinContent(i+1)*XsecDpErrSysFracHigh[ib4err]*1.5; //Lc
       if(!(iptb<6)) sysErrHigh[iptb] = sysErrHigh[iptb]*1.5;
       sysErrHighSum[3] += sysErrHigh[iptb]*sysErrHigh[iptb];
     }
     
     for(iDtype=0; iDtype<4; iDtype++){
       hD2eNormSum[iDtype]->SetBinError(i+1,TMath::Sqrt(statErrSum[iDtype])); 
       gD2eNormSum[iDtype]->SetPointError(i,0,0,TMath::Sqrt(sysErrLowSum[iDtype]),TMath::Sqrt(sysErrHighSum[iDtype]));
     }
  }

  // sum -----------------------------------------------------------
  hD2eNormTotal=(TH1D*)hD2eNormSum[0]->Clone("hD2eNormTotal");
  hD2eNormTotal->Add(hD2eNormSum[1]);
  hD2eNormTotal->Add(hD2eNormSum[2]);
  hD2eNormTotal->Add(hD2eNormSum[3]);

  // sum up errors -------------------------------------------------
  TGraphAsymmErrors *gD2eNormTotal = new TGraphAsymmErrors(hD2eNormTotal);
  TGraphAsymmErrors *gD2eNormTotalwMCstat = new TGraphAsymmErrors(hD2eNormTotal);
  gD2eNormTotal->SetName("gD2eSys");
  gD2eNormTotal->SetTitle("electron spectra based on D measurement with systematic errors"); 
  gD2eNormTotalwMCstat->SetName("gD2eSysStat");
  gD2eNormTotalwMCstat->SetTitle("electron spectra based on D measurement with systematic and statistic errors"); 

  Double_t errLow[4], errHigh[4], errDStat[4], errMCStat[4];
  Double_t errLowSum, errHighSum, errDStatSum, errMCStatSum;
  for(int i=0; i<hD2eNormTotal->GetNbinsX(); i++){
    errLowSum = 0.;
    errHighSum = 0.;
    errDStatSum = 0.;
    errMCStatSum = 0.;
    
    for(int iDtype=0; iDtype<2; iDtype++){ 
      errLow[iDtype] = gD2eNormSum[iDtype]->GetErrorYlow(i); // error from D systematic error
      errLowSum += errLow[iDtype]; 

      errHigh[iDtype]= gD2eNormSum[iDtype]->GetErrorYhigh(i); // error from D systematic error
      errHighSum += errHigh[iDtype]; 

      errDStat[iDtype] = hD2eNormSum[iDtype]->GetBinError(i+1); //error from D statistical error
      errDStatSum += errDStat[iDtype]; 

      errMCStat[iDtype] = hD2eNormSumStat[iDtype]->GetBinError(i+1); //error from MC statistical error
      errMCStatSum += errMCStat[iDtype]; 
    }
    if(i<hD2eNormTotal->FindBin(2.0)){
      errDStatSum = (hD0lowptcontrib->GetBinContent(i+1)+1.)*errDStatSum; //put conservative error based on the yield fraction of low pt contribution
    } 

    gD2eNormTotal->SetPointError(i,0,0,TMath::Sqrt(errLowSum*errLowSum + errDStatSum*errDStatSum),TMath::Sqrt(errHighSum*errHighSum + errDStatSum*errDStatSum));
    gD2eNormTotalwMCstat->SetPointError(i,0,0,TMath::Sqrt(errLowSum*errLowSum + errDStatSum*errDStatSum + errMCStatSum*errMCStatSum),TMath::Sqrt(errHighSum*errHighSum + errDStatSum*errDStatSum + errMCStatSum*errMCStatSum));

  }

  // drawing ----------------------------------------------------------
  cPtD2eSumwErr = new TCanvas("cPtD2eSumwErr","pT of e from D",0,0,1000,600);
  cPtD2eSumwErr->cd(1);
  gD2eNormTotalwMCstat->SetLineColor(2);
  gD2eNormTotalwMCstat->SetMarkerColor(2);
  gD2eNormTotalwMCstat->SetMarkerStyle(20);
  gD2eNormTotalwMCstat->Draw("ACP");
  gD2eNormTotalwMCstat->GetXaxis()->SetTitle("p_{t} [GeV/c]");
  gD2eNormTotalwMCstat->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");
  gD2eNormTotal->SetMarkerStyle(20);
  gD2eNormTotal->SetLineStyle(2);
  gD2eNormTotal->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");
  gD2eNormTotal->Draw("Psame");
  TLegend *legtotalerr = new TLegend(0.50,0.75,0.75,0.85);
  legtotalerr->AddEntry(gD2eNormTotal,"D#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","lp");  
  legtotalerr->AddEntry(gD2eNormTotalwMCstat,"(include MC stat error)","l");  
  setLegendStyle(*legtotalerr,0);
  legtotalerr->Draw("same");
  gPad->SetLogy();
  // ------------------------------------------------------------------

  // weighting method
  Double_t iM2PD[6];
  for(int iDtype=0; iDtype<2; iDtype++){
    for(int iptb=0; iptb<6; iptb++){
      if(iDtype==0) iM2PD[iptb]=iM2PD0[iptb];
      if(iDtype==1) iM2PD[iptb]=iM2PDp[iptb];
      hD2eNormWm[iDtype][iptb+3]->Scale(nevtnorm);
      hD2eNormWm[iDtype][iptb+3]->Scale(iM2PD[iptb]);  // measured/pythia for this pt bin
      hD2eNormWm[iDtype][iptb+3]->Scale(0.5);
      hD2eNormWm[iDtype][iptb+3]->Scale(Xsectrion4e);
    }
  }

  // sum up to 12 GeV/c for D0 and D+ to compare 2 different methods
  TH1D *hD2eNormSumM1[2];
  TH1D *hD2eNormSumM2[2];
  for(int iDtype=0; iDtype<2; iDtype++){
    hname="hD2eNormSumM1" + iDtype;
    hD2eNormSumM1[iDtype]=(TH1D*)hD2eNorm[iDtype][3]->Clone(hname);
    hname="hD2eNormSumM2" + iDtype;
    hD2eNormSumM2[iDtype]=(TH1D*)hD2eNormWm[iDtype][3]->Clone(hname);
    for(int iptb=1; iptb<6; iptb++){
      hD2eNormSumM1[iDtype]->Add(hD2eNorm[iDtype][iptb+3]);
      hD2eNormSumM2[iDtype]->Add(hD2eNormWm[iDtype][iptb+3]);
    }
  }
  // drawing -------------------------------------------------------
  c2Methods = new TCanvas("c2Methods","e spectra from 2 different methods",0,0,1000,700);
  c2Methods->Divide(3,1);
  TH1D* hRatio2mtd[2];
  TLegend *legM[3];
  for(int i=0; i<2; i++){
    c2Methods->cd(i+1);
    legM[i]= new TLegend(0.25,0.70,0.75,0.85);
    hD2eNormSumM1[i]->SetMarkerStyle(20);
    hD2eNormSumM1[i]->Draw();
    hD2eNormSumM1[i]->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");
    hD2eNormSumM2[i]->SetMarkerColor(2);
    hD2eNormSumM2[i]->SetMarkerStyle(20);
    hD2eNormSumM2[i]->Draw("same");
    hname="hRatio2mtdD" + i;
    hRatio2mtd[i]=(TH1D*)hD2eNormSumM2[i]->Clone(hname);
    hRatio2mtd[i]->Divide(hD2eNormSumM1[i]);
    gPad->SetLogy();
  }
  legM[2]= new TLegend(0.25,0.70,0.75,0.85);
  legM[0]->AddEntry(hD2eNormSumM1[0],"2.0<mother p_{t}<12.0 GeV/c","");
  legM[0]->AddEntry(hD2eNormSumM1[0],"D^{0}#rightarrow e(use of Xsection)","p");
  legM[0]->AddEntry(hD2eNormSumM2[0],"D^{0}#rightarrow e(use of weighting)","p");
  legM[1]->AddEntry(hD2eNormSumM1[1],"2.0<mother p_{t}<12.0 GeV/c","");
  legM[1]->AddEntry(hD2eNormSumM1[1],"D^{+}#rightarrow e(use of Xsection)","p");
  legM[1]->AddEntry(hD2eNormSumM2[1],"D^{+}#rightarrow e(use of weighting)","p");

  legM[2]->AddEntry(hRatio2mtd[0],"2.0<mother p_{t}<12.0 GeV/c","");
  legM[2]->AddEntry(hRatio2mtd[0],"D^{0}#rightarrow e: (use of weighting)/(use of Xsection)","p");
  legM[2]->AddEntry(hRatio2mtd[1],"D^{+}#rightarrow e: (use of weighting)/(use of Xsection)","p");
  c2Methods->cd(1);
  legM[0]->Draw("same");
  c2Methods->cd(2);
  legM[1]->Draw("same");
  
  setLegendStyle(*legM[0],0);
  setLegendStyle(*legM[1],0);
  setLegendStyle(*legM[2],0);

  c2Methods->cd(3);
  hRatio2mtd[0]->Draw();
  hRatio2mtd[1]->SetLineColor(1);
  hRatio2mtd[1]->SetMarkerColor(1);
  hRatio2mtd[1]->Draw("same");
  legM[2]->Draw("same");
  //----------------------------------------------------------------


  // produce output file
  TFile *f = new TFile("Testoutput.root","recreate");
  f->cd();
  hD2eNormTotal->Write();
  gD2eNormTotal->Write();
  gD2eNormTotalwMCstat->Write();
  f->Close();


  // compare with FONLL ----------------------------------------------
  h4FONLL= new TH1F("h4FONLL","h4FONLL",60,0.25,30.25);
  ifstream stream1("./e_from_D-FONLL-abseta.lt.0.9.txt");

  double b;
  if(!stream1)
    cout << "While opening a file an error is encountered" << endl;

  int i=0;
  int ipt2=0;
  int k=0;
  Double_t val[8][60];
  Double_t exl[60];
  Double_t exh[60];
  Double_t eyl[60];
  Double_t eyh[60];
  while(!stream1.eof())
     {
         stream1 >> b;

         i=k%8;
         ipt2=int(double(k)/8.);
         val[i][ipt2] = b;
         k++;
         if(ipt2==59 && i==7) break;
     }

  for(int i=0; i<60; i++){
    h4FONLL->Fill(val[0][i],val[1][i]);
  }

  for(int m=0; m<60; m++){
    exl[m]=0.0;
    exh[m]=0.0;
    eyl[m]=val[1][m]-val[2][m];
    eyh[m]=val[3][m]-val[1][m];
  }

  TGraphAsymmErrors* gr=new  TGraphAsymmErrors(60,val[0],val[1],exl,exh,eyl,eyh);
  gr->SetMarkerStyle(20);
  gr->SetMarkerColor(1);
  gr->SetMarkerSize(0.5);
  gr->SetLineColor(3);
  gr->SetFillColor(5);
  gr->GetXaxis()->SetTitle("p_{t} [GeV/c]");
  gr->GetYaxis()->SetTitle("BRxd#sigma/dp_{t} | |#eta|<0.9  [pb/GeV/c]");

  //gr->Draw("ZACPe3");
  //gr->Draw("ZCe3");
  //gr->Draw("Psame");
  cD2eFONLL = new TCanvas("cD2eFONLL","pT of e from D and FONLL",0,0,1000,600);
  cD2eFONLL->cd();
  gr->Draw("ACP");
  gD2eNormTotalwMCstat->Draw("psame");
  TLegend *legwFON = new TLegend(0.50,0.75,0.75,0.85);
  legwFON->AddEntry(gr,"D#rightarrow e FONLL","p");
  legwFON->AddEntry(gD2eNormTotalwMCstat,"D#rightarrow e 2.0<mother p_{t}<50.0 GeV/c","p");
  setLegendStyle(*legwFON,0);
  legwFON->Draw("same");
  gPad->SetLogy();

}

//--------------------------
void setDataStyle(TH1D &h, Int_t lc, Int_t lw, Int_t ls){

  h.SetLineColor(lc);
  h.SetLineWidth(lw);
  h.SetLineStyle(ls);
  h.SetMarkerColor(lc);

}

//--------------------------
void setLegendStyle(TLegend &legend, Int_t bs){

  legend.SetBorderSize(bs);
  legend.SetFillColor(0);
  legend.SetTextFont(132);
  legend.SetTextSize(0.04);
  legend.SetMargin(0.2);

}

//--------------------------
void setPadStyle(Int_t lvl, TPad *pad){

  pad->SetLogy();
  if(lvl>0) gPad->SetGridy();
  if(lvl>1) gPad->SetGridx();

}

//--------------------------
void setGeneralStyle(){

  gStyle->SetPalette(1);
  gStyle->SetFrameBorderMode(0);
  gStyle->SetFrameFillColor(0);
  gStyle->SetPadBorderSize(0);
  gStyle->SetPadBorderMode(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetCanvasBorderSize(10);
  gStyle->SetOptStat(0);
  gStyle->SetOptTitle(0);
  gStyle->SetTitleFillColor(10);
  gStyle->SetTitleBorderSize(0);
  gStyle->SetTitleSize(0.04,"X");
  gStyle->SetTitleSize(0.04,"Y");
  gStyle->SetTitleFont(132,"X");
  gStyle->SetTitleFont(132,"Y");
  gStyle->SetTitleXOffset(0.9);
  gStyle->SetTitleYOffset(0.9);
  gStyle->SetLabelFont(132,"X");
  gStyle->SetLabelFont(132,"Y");
  gStyle->SetLabelSize(0.04,"X");
  gStyle->SetLabelSize(0.04,"Y");
  gStyle->SetTitleSize(0.05,"X");
  gStyle->SetTitleSize(0.05,"Y");
  gStyle->SetLineWidth(2);

}

void CorrectFromTheWidth(TH1D *h1) const {
  //
  // Correct from the width of the bins --> dN/dp_{T} (GeV/c)^{-1}
  //

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