ROOT logo
void get_spectrum_dir2(int icent=1){
  gStyle->SetPalette(1);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(111111);
  //gStyle->SetOptFit(0);
  gStyle->SetOptTitle(0);
  //gStyle->SetFillColor(10);
  gStyle->SetCanvasColor(10);
  gStyle->SetFrameBorderMode(0);
  gStyle->SetFrameFillColor(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetPadBorderSize(0);
  gStyle->SetCanvasBorderSize(0);
  //gStyle->SetPadLeftMargin(0.15);
  gStyle->SetPadLeftMargin(0.125);
  gStyle->SetPadBottomMargin(0.125);
  gStyle->SetPadTopMargin(0.1);
  gStyle->SetTitleYOffset(1.3);
  //gStyle->SetPadLeftMargin(0.1);
  gStyle->SetTitleW(0.7);
  gStyle->SetTitleH(0.1);
  cout<<"physics is always fun! "<<endl; 

  const int ncentbin=9;
  //  int cent_low[ncentbin] ={  0,  0, 20,  40, 40,  0,  0,  0,  30};
  //  int cent_high[ncentbin]={100, 10, 40, 100, 80, 80, 40, 30, 100};

  //  int cent_low_bin[ncentbin]={0, 0, 2, 4, 4, 0, 0, 0, 3 };
  //  int cent_high_bin[ncentbin]={10, 1, 4, 10, 8, 8, 4, 3, 10};

  int cent_low[ncentbin] ={ 0, 10, 20, 30};
  int cent_high[ncentbin]={10, 20, 30, 50};

  int cent_low_bin[ncentbin] ={0, 1, 2, 3};
  int cent_high_bin[ncentbin]={1, 2, 3, 5};

  
  TH2D *hmasspt_inc[11][7];
  TH1D *hmasspt[4][5];
  TH1D *hmasspt_ls[4][5];
  TH1D *hdiv[5];

  char outname[100];
  //sprintf(outname,"spec_histo_loose_eid_pt04_2_cent%d_no_gst.root",icent);
  sprintf(outname,"spec_histo_pt04_2_cent%d_no_gst.root",icent);
  //sprintf(outname,"output/spec_histo_loose_eid_2_pt04_cent%d_6.root",icent);
  //sprintf(outname,"spec_histo_loose_eid_pt04_cent%d_conv2.root",icent);
  char name[100];
  //  TFile *fin = new TFile("result_histo_nmix40_pt04.root");
  // TFile *fin = new TFile("result_histo_loose_eid_nmix10_conv2_pt04.root");
  //TFile *fin = new TFile("output/result_histo_loose_eid_nmix40_rev1_6.root");
  //TFile *fin = new TFile("result_histo_loose_eid_nmix40_pt04_no_gst.root");
  TFile *fin = new TFile("result_trig1_cut1.root");
  //TFile *fin = new TFile("result_histo_nmix20_pt04.root");
  for(int i=0;i<11;i++){
    for(int j=0;j<7;j++){
      sprintf(name,"hmasspt_weight_cent%d_pair%d",i,j);
      //sprintf(name,"hmasspt_cent%d_pair%d",i,j);
      hmasspt_inc[i][j] = (TH2D*)fin->Get(name);
      //cout<<i<<" "<<j<<" "<<hmasspt_inc[i][j]->GetEntries()<<endl;
    }
  }

  TH1D *hpt = (TH1D*)hmasspt_inc[0][0]->ProjectionY("hpt");

  TH1F *hstat = (TH1F*)fin->Get("hCentrality");
  float nevents = hstat->Integral(cent_low[icent], cent_high[icent]-1);

  cout<<nevents<<endl;

  const int nptbin=4;
  float pt_low[nptbin] =  {0.5, 1.0, 1.5, 2.0};
  float pt_high[nptbin] = {1.0, 1.5, 2.0, 5.0};
  double mass_r_ptbin[nptbin+2]={0, 0.5, 1.0, 1.5, 2.0, 4.0};
  
  for(int i=0;i<4;i++){
    for(int j=0;j<nptbin;j++){
      sprintf(name,"hmass2_w_pair%d_pt%d", i, j);
      //sprintf(name,"hmass2_pair%d_pt%d", i, j);
      hmasspt[i][j] = new TH1D(name, name, 500, 0, 5);
      hmasspt[i][j]->Sumw2();

      sprintf(name,"hmass2_ls_w_pair%d_pt%d", i, j);
      //sprintf(name,"hmass2_pair%d_pt%d", i, j);
      hmasspt_ls[i][j] = new TH1D(name, name, 500, 0, 5);
      hmasspt_ls[i][j]->Sumw2();
    }
  }

  /// first []
  /// 0-->unlike
  /// 1-->like
  /// 2-->mixed unlike
  /// 3-->mixed like 

  /// second [] --> pt
  /// third [] --> ee or pp
  float npairs[4][nptbin][2];

  for(int j=0;j<nptbin;j++){
    int binl = hpt->FindBin(pt_low[j]);
    int binh = hpt->FindBin(pt_high[j]);

    npairs[0][j][0]=0; npairs[0][j][1]=0;
    npairs[1][j][0]=0; npairs[1][j][1]=0;
    npairs[2][j][0]=0; npairs[2][j][1]=0;
    npairs[3][j][0]=0; npairs[3][j][1]=0;



    for(int i=cent_low_bin[icent]; i<cent_high_bin[icent]; i++){

      ///////////////////////////////////////////
      ///// pair0
      ////////////////////////////////////////////
      sprintf(name,"hmass_%d_%d_0", i, j);
      hmasspt[0][j]->Add((TH1D*)hmasspt_inc[i][0]->ProjectionX(name,binl, binh-1));
      //      npairs[0][j][0] += hmasspt_inc[i][0]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[0][j][0] += hmasspt_inc[i][0]->Integral();
      
      /////////////////////////////////////////
      //// pair2 (like sign)
      ////////////////////////////////////////
      sprintf(name,"hmass_%d_%d_1", i, j);
      hmasspt[2][j]->Add((TH1D*)hmasspt_inc[i][1]->ProjectionX(name,binl, binh-1));
      hmasspt_ls[0][j]->Add((TH1D*)hmasspt_inc[i][1]->ProjectionX(name,binl, binh-1));
      //npairs[2][j][0] += hmasspt_inc[i][1]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[2][j][0] += hmasspt_inc[i][1]->Integral();

      sprintf(name,"hmass_%d_%d_2", i, j);
      hmasspt[2][j]->Add((TH1D*)hmasspt_inc[i][2]->ProjectionX(name,binl, binh-1));
      //npairs[2][j][1] += hmasspt_inc[i][2]->ProjectionX(name,binl, binh-1)->Integral();
      hmasspt_ls[1][j]->Add((TH1D*)hmasspt_inc[i][2]->ProjectionX(name,binl, binh-1));
      npairs[2][j][1] += hmasspt_inc[i][2]->Integral();

      /////////////////////////////////////////
      //// pair1 (mixed unlike sign)
      /////////////////////////////////////////
      sprintf(name,"hmass_%d_%d_1", i, j);
      hmasspt[1][j]->Add((TH1D*)hmasspt_inc[i][3]->ProjectionX(name,binl, binh-1));
      //npairs[1][j][0] += hmasspt_inc[i][3]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[1][j][0] += hmasspt_inc[i][3]->Integral();

      sprintf(name,"hmass_%d_%d_2", i, j);
      hmasspt[1][j]->Add((TH1D*)hmasspt_inc[i][4]->ProjectionX(name,binl, binh-1));
      //      npairs[1][j][0] += hmasspt_inc[i][4]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[1][j][0] += hmasspt_inc[i][4]->Integral();

      /////////////////////////////////////////
      //// pair3 (mixed like sign)
      ////////////////////////////////////////
      sprintf(name,"hmass_%d_%d_1", i, j);
      //      hmasspt[3][j]->Add((TH1D*)hmasspt_inc[i][5]->ProjectionX(name,binl, binh-1));
      hmasspt_ls[2][j]->Add((TH1D*)hmasspt_inc[i][5]->ProjectionX(name,binl, binh-1));
      //npairs[3][j][0] += hmasspt_inc[i][5]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[3][j][0] += hmasspt_inc[i][5]->Integral();

      sprintf(name,"hmass_%d_%d_2", i, j);
      //hmasspt[3][j]->Add((TH1D*)hmasspt_inc[i][6]->ProjectionX(name,binl, binh-1));
      hmasspt_ls[3][j]->Add((TH1D*)hmasspt_inc[i][6]->ProjectionX(name,binl, binh-1));
      //npairs[3][j][1] += hmasspt_inc[i][6]->ProjectionX(name,binl, binh-1)->Integral();
      npairs[3][j][1] += hmasspt_inc[i][6]->Integral();

    }
  }

  /// for mixed like sign pairs 
  /// entry should be same as like sign pairs 
  /// re-add the hist for mixed like sign pairs using weights  
  for(int j=0;j<nptbin;j++){
    float frac1 = (npairs[2][j][0]*(npairs[3][j][0]+npairs[3][j][1]))/(npairs[3][j][0]*(npairs[2][j][0]+npairs[2][j][1]));
    float frac2 = (npairs[2][j][1]*(npairs[3][j][0]+npairs[3][j][1]))/(npairs[3][j][1]*(npairs[2][j][0]+npairs[2][j][1]));
    hmasspt[3][j]->Add( hmasspt_ls[2][j], frac1); ///mixed like sign 
    hmasspt[3][j]->Add( hmasspt_ls[3][j], frac2); // mixed like sign 
    //hmasspt[3][j]->Add( hmasspt_ls[2][j], 1);
    //hmasspt[3][j]->Add( hmasspt_ls[3][j], 1);
  }


  for(int i=0;i<4;i++){
    for(int j=0;j<nptbin;j++){
      hmasspt[i][j]->Scale(1.0/nevents);
      hmasspt_ls[i][j]->Scale(1.0/nevents);
      cout<<hmasspt[i][j]->Integral()<<endl;
      cout<<npairs[i][j][0]<<" "<<npairs[i][j][1]<<endl;
    }
  }

  TCanvas *c0 = new TCanvas("c0","c0",1500,500);
  c0->Divide(3,1);
  for(int iptbin=1;iptbin<nptbin;iptbin++){
    c0->cd(iptbin);
    gPad->SetGrid(1);
    gPad->SetLogy();
    hmasspt[0][iptbin]->SetXTitle("M_{ee}[GeV/c^{2}]");
    hmasspt[0][iptbin]->SetYTitle("N_{ee}/N_{evt}");
    hmasspt[0][iptbin]->Draw();
  }


  TCanvas *c1 = new TCanvas("c1","c1",1500,1000);
  c1->Divide(3,3);

  TF1 *f1 = new TF1("f1","pol0",0.05,2);

  double r[5];

  for(int iptbin=1;iptbin<nptbin;iptbin++){
    sprintf(name,"hdiv_pt%d",iptbin);
    hdiv[iptbin] = new TH1D(name, name, 500,0,5);
    hdiv[iptbin]->SetXTitle("M_{ee}[GeV/c^{2}]");
    hdiv[iptbin]->SetYTitle("mixed unlike/mixed like");
    hdiv[iptbin]->Sumw2();
    //hmasspt[3][iptbin]->Scale(npairs[1][iptbin][0]/(npairs[3][iptbin][0]+npairs[3][iptbin][1]));
    hdiv[iptbin]->Divide(hmasspt[1][iptbin], hmasspt[3][iptbin]); ///mixed unlike/mixed like
    /*
    for(int ii=0;ii<hdiv[iptbin]->GetNbinsX(); ii++){
      double vent1 = hmasspt[1][iptbin]->GetBinContent(ii+1);
      double e_vent1 = hmasspt[1][iptbin]->GetBinError(ii+1);


      double vent2 = hmasspt_ls[2][iptbin]->GetBinContent(ii+1);
      double e_vent2 = hmasspt_ls[2][iptbin]->GetBinError(ii+1);
      double vent3 = hmasspt_ls[3][iptbin]->GetBinContent(ii+1);
      double e_vent3 = hmasspt_ls[3][iptbin]->GetBinError(ii+1);



      double val1 = vent1; 
      double val2 = 2*sqrt(vent2*vent3);

      if(val2>0){
	hdiv[iptbin]->SetBinContent(ii+1, val1/val2);
	double e_val1 = e_vent1;
	double e_val2 = val2/2*sqrt(pow(e_vent2/vent2,2)+pow(e_vent3/vent3,2));
	hdiv[iptbin]->SetBinError(ii+1, val1/val2*sqrt(pow(e_val1/val1,2)+pow(e_val2/val2,2)));
      }
    }
    */   

    c1->cd(iptbin);
    gPad->SetGrid(1);
    hmasspt[1][iptbin]->SetXTitle("M_{ee}[GeV/c^{2}]");
    hmasspt[0][iptbin]->SetYTitle("N_{ee}/N_{evt}");
    hmasspt[1][iptbin]->Draw();
    hmasspt[3][iptbin]->SetLineColor(2);
    hmasspt[3][iptbin]->Draw("same");

    c1->cd(iptbin+3);
    gPad->SetGrid(1);
    //hdiv[iptbin]->Rebin(4); hdiv[iptbin]->Scale(1.0/4); 

    hdiv[iptbin]->SetAxisRange(0,3);
    hdiv[iptbin]->SetMinimum(0);
    hdiv[iptbin]->SetMaximum(2);
    hdiv[iptbin]->Draw();
    ///hdiv[iptbin]->Fit(f1,"R","");

    //r[iptbin] = f1->GetParameter(0);
    //int bin1 =  hmasspt[2][iptbin]->FindBin(0.1);
    //int bin2 =  hmasspt[2][iptbin]->FindBin(1.0);
    //r[iptbin] = hmasspt[2][iptbin]->Integral(bin1, bin2)/hmasspt[3][iptbin]->Integral(bin1, bin2);
    //cout<<" normalization  factor "<<r[iptbin]<<endl;

    /*
    for(int k=0;k<hmasspt[1][iptbin]->GetNbinsX();k++){
      float w = f1->Eval(hmasspt[1][iptbin]->GetBinCenter(k+1));
      float rr = hmasspt[1][iptbin]->GetBinContent(k+1);
      float err = hmasspt[1][iptbin]->GetBinError(k+1);
      hmasspt[1][iptbin]->SetBinContent(k+1, rr*w);
      hmasspt[1][iptbin]->SetBinError(k+1, err*w);
    }
    */
    //hmasspt[1][iptbin]->Scale(r[iptbin]);
    hmasspt[2][iptbin]->Multiply(hdiv[iptbin]);
    //c/out<<npairs[1][iptbin][0]/(2*sqrt(npairs[3][iptbin][0]*npairs[3][iptbin][1]))<<endl;
    //cout<<" aaa "<<(2*sqrt(npairs[2][iptbin][0]*npairs[2][iptbin][1]))<<" "<<npairs[2][iptbin][0]+npairs[2][iptbin][1]<<" "<<hmasspt[2][iptbin]->Integral()*nevents<<endl;
    //hmasspt[2][iptbin]->Scale((2*sqrt(npairs[2][iptbin][0]*npairs[2][iptbin][1])/(npairs[2][iptbin][0]+npairs[2][iptbin][1])));
    //hmasspt[2][iptbin]->Scale(npairs[0][iptbin][0]/(2*sqrt(npairs[2][iptbin][0]*npairs[2][iptbin][1])));

   
    for(int ii=0;ii<hdiv[iptbin]->GetNbinsX(); ii++){    
      double d_val1 = 2*sqrt(hmasspt_ls[0][iptbin]->GetBinContent(ii+1)*hmasspt_ls[1][iptbin]->GetBinContent(ii+1));
      if(d_val1>0){
	double d_eval1 = d_val1/2*sqrt(pow(hmasspt_ls[0][iptbin]->GetBinError(ii+1)/hmasspt_ls[0][iptbin]->GetBinContent(ii+1),2)+
					pow(hmasspt_ls[1][iptbin]->GetBinError(ii+1)/hmasspt_ls[1][iptbin]->GetBinContent(ii+1),2));
	//	double accep = hdiv[iptbin]->GetBinContent(ii+1)-hdiv[iptbin]->GetBinError(ii+1);
	double accep = hdiv[iptbin]->GetBinContent(ii+1);
	hmasspt[2][iptbin]->SetBinContent(ii+1, d_val1*accep);
	hmasspt[2][iptbin]->SetBinError(ii+1, d_eval1*accep);
      }
    }
   
    /*
    double norm1=0;
    double norm2=0;
    for(int ii=0;ii<hmasspt[2][iptbin]->GetNbinsX(); ii++){    
      double d_bg1 = hmasspt[1][iptbin]->GetBinContent(ii+1);
      double d_bg_pp = hmasspt_ls[2][iptbin]->GetBinContent(ii+1);
      double d_bg_mm = hmasspt_ls[3][iptbin]->GetBinContent(ii+1);
      double d_fg_pp = hmasspt_ls[0][iptbin]->GetBinContent(ii+1);
      double d_fg_mm = hmasspt_ls[1][iptbin]->GetBinContent(ii+1);
      double d_e_fg_pp = hmasspt_ls[0][iptbin]->GetBinError(ii+1);
      double d_e_fg_mm = hmasspt_ls[1][iptbin]->GetBinError(ii+1);

      if(d_fg_pp>0 && d_fg_mm>0 && d_bg_pp>0 && d_bg_mm>0){
	//double d_val = 2*sqrt(d_fg_pp*d_fg_mm)*d_bg1/(2*sqrt(d_bg_pp*d_bg_mm));
	//double d_e_val = sqrt(d_fg_pp*d_fg_mm)*sqrt(pow(d_e_fg_pp/d_fg_pp,2)+pow(d_e_fg_mm/d_fg_mm,2))*d_bg1/(2*sqrt(d_bg_pp*d_bg_mm));
	double d_val = 2*(d_fg_pp*(0.5*d_bg1/d_bg_pp)*sqrt(npairs[2][iptbin][0])+d_fg_mm*(0.5*d_bg1/d_bg_mm)*sqrt(npairs[2][iptbin][1]))/(sqrt(npairs[2][iptbin][0])+sqrt(npairs[2][iptbin][1]));
	double d_e_val = d_e_fg_pp*(0.5*d_bg1/d_bg_pp)+d_e_fg_mm*(0.5*d_bg1/d_bg_mm);

	hmasspt[2][iptbin]->SetBinContent(ii+1, d_val);
	hmasspt[2][iptbin]->SetBinError(ii+1, d_e_val);

      }
    }
    */
    //hmasspt[2][iptbin]->Scale(hmasspt[0][iptbin]->Integral()/(2*sqrt(norm1*norm2)));
    cout<<" entry ="<<hmasspt[0][iptbin]->Integral()<<" "<<hmasspt[2][iptbin]->Integral()<<" "<<hmasspt_ls[0][iptbin]->Integral()<<" "<<hmasspt_ls[1][iptbin]->Integral()<<endl;
    c1->cd(iptbin+6);
    hmasspt[0][iptbin]->Draw();
    hmasspt[2][iptbin]->SetLineColor(2);
    hmasspt[2][iptbin]->Draw("same");
  }


  const int nmassbin=8;
  float mass_low[nmassbin] ={0,    0.05, 0.09, 0.14, 0.20, 0.30, 0.1, 0.09};
  float mass_high[nmassbin]={0.03, 0.09, 0.14, 0.20, 0.30, 0.40, 0.3, 0.30};
  float nsig[5][nmassbin];
  float nbg[5][nmassbin];
  float ensig[5][nmassbin];
  float enbg[5][nmassbin];

  for(int ii=0;ii<nptbin; ii++){
    for(int j=0;j<nmassbin; j++){
      int binlow = hmasspt[0][ii]->FindBin(mass_low[j]);
      int binhigh = hmasspt[0][ii]->FindBin(mass_high[j]);
      nsig[ii][j] = hmasspt[0][ii]->Integral(binlow, binhigh-1);      
      nbg[ii][j] = hmasspt[2][ii]->Integral(binlow, binhigh-1);
      ensig[ii][j]=0;
      enbg[ii][j]=0;
      for(int ib=binlow; ib<binhigh;ib++){
	ensig[ii][j] += pow(hmasspt[0][ii]->GetBinError(ib),2);
	enbg[ii][j] += pow(hmasspt[2][ii]->GetBinError(ib),2);
      }

      ensig[ii][j] = sqrt(ensig[ii][j]);
      enbg[ii][j] = sqrt(enbg[ii][j]);


      float r1 = nsig[ii][j]-nbg[ii][j];
      float r0 =  nsig[ii][0]-nbg[ii][0];
      float er1 = sqrt(pow(ensig[ii][j],2)+pow(enbg[ii][j],2));
      float er0 = sqrt(pow(ensig[ii][0],2)+pow(enbg[ii][0],2));


      if(r0>0 && r1>0){
	cout<<" pt : "<<ii<<" mass "<<mass_low[j]<<"-"<<mass_high[j]<<" --> Nsig = "<<nsig[ii][j]<<", Nbg = "<<nbg[ii][j]
	    <<" : Nsig-Nbg "<<nsig[ii][j]-nbg[ii][j]<<" +- "<<sqrt(pow(ensig[ii][j],2)+pow(enbg[ii][j],2))<<" ("<<ensig[ii][j]<<" "<<enbg[ii][j]<<")"
	    <<" : Ratio = "<<r1/r0<<" +- "<<r1/r0*sqrt(pow(er1/r1,2)+pow(er0/r0,2))
	    <<endl;
      }else{
	cout<<" pt : "<<ii<<" mass "<<mass_low[j]<<"-"<<mass_high[j]<<" --> Nsig = "<<nsig[ii][j]<<", Nbg = "<<nbg[ii][j]
	    <<" : Nsig-Nbg "<<nsig[ii][j]-nbg[ii][j]<<" +- "<<sqrt(pow(ensig[ii][j],2)+pow(enbg[ii][j],2))<<" ("<<ensig[ii][j]<<" "<<enbg[ii][j]<<")"
	    <<endl;
      }
    }
  }


  /// for histogram
  TH1D *hsub[5];
  const int nbins = 55;
  double x[nbins+1]={0, 0.01, 0.02, 0.03, 0.05, 0.09, 0.14, 0.20, 0.30, 0.40,
		     0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 
		     1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 
		     2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 
		     3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 
		     4.5, 4.6, 4.7, 4.8, 4.9, 5.0};

//  const int nbins = 53;
//  double x[nbins+1]={0, 0.01, 0.02, 0.03, 0.05, 0.1, 0.20, 0.40, 
//		     0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 
//		     1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 
//		     2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 
//		     3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 
//		     4.5, 4.6, 4.7, 4.8, 4.9, 5.0};

  int narrows[nptbin];
  TArrow *Arrow[nptbin][10];

  for(int i=0; i<nptbin; i++){
    narrows[i]=0;


    sprintf(name,"hsub_mass_pt%d", i);
    hsub[i] = new TH1D(name, name, nbins, x);

    for(int j=0; j<nbins; j++){
      int binl = hmasspt[0][i]->FindBin(x[j]);
      int binh = hmasspt[0][i]->FindBin(x[j+1]);
      float dw = x[j+1]-x[j];

      float ent = 0;
      float e_ent = 0;
      float sig = 0;
      float bg = 0;
      for(int k=binl; k<binh; k++){
	sig += hmasspt[0][i]->GetBinContent(k);
	bg += hmasspt[2][i]->GetBinContent(k);
	ent += (hmasspt[0][i]->GetBinContent(k)-hmasspt[2][i]->GetBinContent(k));
	e_ent += (pow(hmasspt[0][i]->GetBinError(k),2)+
		  pow(hmasspt[2][i]->GetBinError(k),2));
      }
      e_ent = sqrt(e_ent);
      hsub[i]->SetBinContent(j+1, ent/dw);
      hsub[i]->SetBinError(j+1, e_ent/dw);

      if(sig<bg && sig>0 && x[j]<0.5){ // calculate 90% confidence level
	double conf90=0;
	sig = sig*nevents;
	bg = bg*nevents;
	TH1F *htmp = new TH1F("htmp","htmp",1000,-2*bg, 2*bg);
	for(int kk=0;kk<100000;kk++){
	  double a1 = gRandom->PoissonD(sig);
	  double a2 = gRandom->PoissonD(bg);
	  htmp->Fill(a1-a2); 
	}
	int bin0 = htmp->FindBin(0);
	float ent0 = htmp->Integral(bin0, 1000);
	htmp->Scale(1.0/ent0);
	//htmp->Scale(1.0/100000);
	int bincent=0;
	for(int ib=bin0;ib<1000;ib++){
	  if(htmp->Integral(bin0, ib)>0.9){
	    bincent = ib;
	    break;
	  }
	}
	conf90 = htmp->GetBinCenter(bincent);
	cout<<i<<" "<<hsub[i]->GetBinCenter(j+1)<<" : 90% conf: "<<conf90<<" from sig :"<<sig<<" bg:"<<bg<<endl;
	Arrow[i][narrows[i]] = new TArrow(hsub[i]->GetBinCenter(j+1), 1.0e-07, hsub[i]->GetBinCenter(j+1), conf90/(dw*nevents),0.01,"<|");
	narrows[i]++;
	htmp->Clear();
      }// calculate 90% confidence level

    }
  }

  TH1D *hsub_clone[5];

  TCanvas *c3 = new TCanvas("c3","c3",1200,600);
  c3->Divide(4,1);

  c3->cd(1);
  gPad->SetGrid(1);  gPad->SetLogy();
  TH2F *hw = new TH2F("hw","hw",10,0,0.5,10,1.0e-07, 10);
  hw->Draw();
  hw->SetXTitle("M_{ee} [GeV]");
  hw->SetYTitle("dN_{ee}/dM_{ee}");
  c3->cd(2);
  gPad->SetGrid(1);  gPad->SetLogy();
  hw->Draw();
  c3->cd(3);
  gPad->SetGrid(1);  gPad->SetLogy();
  hw->Draw();
  c3->cd(4);
  gPad->SetGrid(1);  gPad->SetLogy();
  hw->Draw();

  for(int i=0; i<nptbin; i++){
    hsub_clone[i] = (TH1D*)hsub[i]->Clone();
    sprintf(name,"%s_cln",hsub[i]->GetName());
    hsub_clone[i]->SetName(name);
    hsub_clone[i]->SetLineColor(i+1);
    hsub_clone[i]->SetMarkerColor(i+1);
    hsub_clone[i]->SetMarkerStyle(20);
  }


  //  int bin = hsub_clone[1]->FindBin(0.03);
  //  float ent = hsub_clone[1]->Integral(0,bin);
  for(int i=0; i<nptbin; i++){
    //float ent1 = hsub_clone[i]->Integral(0,bin);
    //hsub_clone[i]->Scale(ent/ent1);
    c3->cd(i+1);
    hsub_clone[i]->Draw("same");
    for(int k=0;k<narrows[i];k++){
      Arrow[i][k]->SetLineColor(i+1);
      Arrow[i][k]->Draw();
    }
  }

  TCanvas *c5 = new TCanvas("c5","c5",1200,600);
  c5->Divide(3,1);

  c5->cd(1);
  gPad->SetGrid(1);  gPad->SetLogy();
  TH2F *hw2 = new TH2F("hw2","hw2",10,0,0.5,10,1.0e-07, 10);
  hw2->Draw();
  hw2->SetXTitle("M_{ee} [GeV]");
  hw2->SetYTitle("1/N_{evt}dN_{ee}/dM_{ee}");
  c5->cd(2);
  gPad->SetGrid(1);  gPad->SetLogy();
  hw2->Draw();
  c5->cd(3);
  gPad->SetGrid(1);  gPad->SetLogy();
  hw2->Draw();

  TH1D *hmass_bin[2][nptbin];
  for(int i=1; i<nptbin; i++){
    c5->cd(i);
    hmass_bin[0][i] = (TH1D*)hmasspt[0][i]->Clone();
    hmass_bin[1][i] = (TH1D*)hmasspt[2][i]->Clone();


    float binw = hmass_bin[0][i]->GetBinWidth(10);
    hmass_bin[0][i]->Scale(1/binw);
    hmass_bin[1][i]->Scale(1/binw);

    hmass_bin[1][i]->SetLineColor(2);
    hmass_bin[0][i]->Draw("same");    
    hmass_bin[1][i]->Draw("same");
    hsub_clone[i]->Draw("same");
    for(int k=0;k<narrows[i];k++){
      Arrow[i][k]->SetLineColor(i+1);
      Arrow[i][k]->Draw();
    }
  }






  //  TLegend *leg = new TLegend(0.5,0.7,0.875,0.875);
  //  leg->SetFillColor(10);
  //  if(nptbin==4){
  //    leg->AddEntry(hsub_clone[0],"0.5<p_{T}<1.0 GeV","pl");
  //    leg->AddEntry(hsub_clone[1],"1.0<p_{T}<1.5 GeV","pl");
  //    leg->AddEntry(hsub_clone[2],"1.5<p_{T}<2.0 GeV","pl");
  //    leg->AddEntry(hsub_clone[3],"2.0<p_{T}","pl");
  //  }else{
  //  }
  //  leg->Draw("same");

  /////draw the results 
  TH1D *hmass_cocktail[4];
  TH1D *hmass_cocktail_comp[4][6];
  TFile *fin1 = new TFile("../../ana2/cocktail/cocktail_allpt_pt04_no_smearing.root");
  fin1->cd();
  hmass_cocktail[0] = (TH1D*)fin1->Get("hmass_all");
  hmass_cocktail[0]->SetName("hmass_all_pt0");
  hmass_cocktail_comp[0][0] =  (TH1D*)fin1->Get("hmass_3");
  hmass_cocktail_comp[0][0]->SetName("hmass_pt0_eta_prime");
  hmass_cocktail_comp[0][1] =  (TH1D*)fin1->Get("hmass_4");
  hmass_cocktail_comp[0][1]->SetName("hmass_pt0_rho");
  hmass_cocktail_comp[0][2] =  (TH1D*)fin1->Get("hmass_7");
  hmass_cocktail_comp[0][2]->SetName("hmass_pt0_pi0");
  hmass_cocktail_comp[0][3] =  (TH1D*)fin1->Get("hmass_8");
  hmass_cocktail_comp[0][3]->SetName("hmass_pt0_eta");
  hmass_cocktail_comp[0][4] =  (TH1D*)fin1->Get("hmass_9");
  hmass_cocktail_comp[0][4]->SetName("hmass_pt0_omega");
  hmass_cocktail_comp[0][5] =  (TH1D*)fin1->Get("hmass_10");
  hmass_cocktail_comp[0][5]->SetName("hmass_pt0_phi");
  

  //TFile *fin2 = new TFile("./cocktail//cocktail_pt10_15.root");
  TFile *fin2 = new TFile("../../ana2/cocktail//cocktail_pt04_pairpt_10_15_no_smearing.root");
  fin2->cd();
  hmass_cocktail[1] = (TH1D*)fin2->Get("hmass_all");
  hmass_cocktail[1]->SetName("hmass_all_pt1");
  hmass_cocktail_comp[1][0] =  (TH1D*)fin1->Get("hmass_3");
  hmass_cocktail_comp[1][0]->SetName("hmass_pt1_eta_prime");
  hmass_cocktail_comp[1][1] =  (TH1D*)fin1->Get("hmass_4");
  hmass_cocktail_comp[1][1]->SetName("hmass_pt1_rho");
  hmass_cocktail_comp[1][2] =  (TH1D*)fin1->Get("hmass_7");
  hmass_cocktail_comp[1][2]->SetName("hmass_pt1_pi0");
  hmass_cocktail_comp[1][3] =  (TH1D*)fin1->Get("hmass_8");
  hmass_cocktail_comp[1][3]->SetName("hmass_pt1_eta");
  hmass_cocktail_comp[1][4] =  (TH1D*)fin1->Get("hmass_9");
  hmass_cocktail_comp[1][4]->SetName("hmass_pt1_omega");
  hmass_cocktail_comp[1][5] =  (TH1D*)fin1->Get("hmass_10");
  hmass_cocktail_comp[1][5]->SetName("hmass_pt1_phi");



  //TFile *fin3 = new TFile("./cocktail//cocktail_pt15_20.root");
  //TFile *fin3 = new TFile("./cocktail//cocktail_pt15_20_no_smearing.root");
  TFile *fin3 = new TFile("../../ana2/cocktail//cocktail_pt04_pairpt_15_20_no_smearing.root");
  fin3->cd();
  hmass_cocktail[2] = (TH1D*)fin3->Get("hmass_all");
  hmass_cocktail[2]->SetName("hmass_all_pt2");
  hmass_cocktail_comp[2][0] =  (TH1D*)fin1->Get("hmass_3");
  hmass_cocktail_comp[2][0]->SetName("hmass_pt2_eta_prime");
  hmass_cocktail_comp[2][1] =  (TH1D*)fin1->Get("hmass_4");
  hmass_cocktail_comp[2][1]->SetName("hmass_pt2_rho");
  hmass_cocktail_comp[2][2] =  (TH1D*)fin1->Get("hmass_7");
  hmass_cocktail_comp[2][2]->SetName("hmass_pt2_pi0");
  hmass_cocktail_comp[2][3] =  (TH1D*)fin1->Get("hmass_8");
  hmass_cocktail_comp[2][3]->SetName("hmass_pt2_eta");
  hmass_cocktail_comp[2][4] =  (TH1D*)fin1->Get("hmass_9");
  hmass_cocktail_comp[2][4]->SetName("hmass_pt2_omega");
  hmass_cocktail_comp[2][5] =  (TH1D*)fin1->Get("hmass_10");
  hmass_cocktail_comp[2][5]->SetName("hmass_pt2_phi");



  //TFile *fin4 = new TFile("./cocktail//cocktail_pt20_no_smearing.root");
  //TFile *fin4 = new TFile("./cocktail//cocktail_pt20.root");
TFile *fin4 = new TFile("../../ana2/cocktail//cocktail_pt04_pairpt_20_no_smearing.root");
  fin4->cd();
  hmass_cocktail[3] = (TH1D*)fin4->Get("hmass_all");
  hmass_cocktail[3]->SetName("hmass_all_pt3");
  hmass_cocktail_comp[3][0] =  (TH1D*)fin1->Get("hmass_3");
  hmass_cocktail_comp[3][0]->SetName("hmass_pt3_eta_prime");
  hmass_cocktail_comp[3][1] =  (TH1D*)fin1->Get("hmass_4");
  hmass_cocktail_comp[3][1]->SetName("hmass_pt3_rho");
  hmass_cocktail_comp[3][2] =  (TH1D*)fin1->Get("hmass_7");
  hmass_cocktail_comp[3][2]->SetName("hmass_pt3_pi0");
  hmass_cocktail_comp[3][3] =  (TH1D*)fin1->Get("hmass_8");
  hmass_cocktail_comp[3][3]->SetName("hmass_pt3_eta");
  hmass_cocktail_comp[3][4] =  (TH1D*)fin1->Get("hmass_9");
  hmass_cocktail_comp[3][4]->SetName("hmass_pt3_omega");
  hmass_cocktail_comp[3][5] =  (TH1D*)fin1->Get("hmass_10");
  hmass_cocktail_comp[3][5]->SetName("hmass_pt3_phi");



  for(int i=0;i<4;i++){
    hmass_cocktail[i]->Rebin(4);
    float ent = 0;
    for(int j=0;j<hsub_clone[i]->GetNbinsX();j++){
      if(hsub_clone[i]->GetBinCenter(j+1)<0.03){
	ent += hsub_clone[i]->GetBinWidth(j+1)*hsub_clone[i]->GetBinContent(j+1);
      }
    }
    float ent2=0;
    for(int j=0;j<hmass_cocktail[i]->GetNbinsX();j++){
      if(hmass_cocktail[i]->GetBinCenter(j+1)<0.03){
	ent2 += hmass_cocktail[i]->GetBinWidth(j+1)*hmass_cocktail[i]->GetBinContent(j+1);
      }
    }
    hmass_cocktail[i]->Scale(ent/ent2);
    hmass_cocktail[i]->SetLineColor(6);
    hmass_cocktail[i]->SetLineWidth(2);
    c3->cd(i+1);
    hmass_cocktail[i]->Draw("same,l");
    if(i>=1){
      c5->cd(i);
      hmass_cocktail[i]->Draw("same,l");
    }

    for(int j=0;j<6;j++){
      hmass_cocktail_comp[i][j]->Rebin(4);
      hmass_cocktail_comp[i][j]->Scale(ent/ent2*0.2);
      hmass_cocktail_comp[i][j]->SetLineColor(1);
      //hmass_cocktail_comp[i][j]->Draw("same");
    }
  }

  float r_cocktail[nptbin];
  cout<<" ***************** "<<endl;
  cout<<" mass ratio ("<<mass_low[nmassbin-1]<<"-"<<mass_high[nmassbin-1]<<"/0-30) in cocktail"<<endl;
  TH1F *hmass_r_ck = new TH1F("hmass_r_cocktail","mass ratio cocktail", nptbin+1, mass_r_ptbin);
  for(int i=1;i<nptbin;i++){
    int bin1=hmass_cocktail[i]->FindBin(0);
    int bin2=hmass_cocktail[i]->FindBin(0.03);
    float ent1 = hmass_cocktail[i]->Integral(bin1, bin2-1);
    bin1=hmass_cocktail[i]->FindBin(mass_low[nmassbin-1]);
    bin2=hmass_cocktail[i]->FindBin(mass_high[nmassbin-1]);
    float ent2 = hmass_cocktail[i]->Integral(bin1, bin2-1);
    cout<<" pt : "<<i<<" "
	<<ent2/ent1
	<<endl;
    int bin = hmass_r_ck->FindBin((0.5*(pt_low[i]+pt_high[i])));
    hmass_r_ck->SetBinContent(bin, ent2/ent1); 
    hmass_r_ck->SetBinError(bin,  ent2/ent1*0.05); 
    r_cocktail[i] = ent2/ent1;
  }

  float r_dir = 0.37; // this is from 90-300MeV

  TH1F *hmass_r = new TH1F("hmass_r","mass ratio", nptbin+1, mass_r_ptbin);
  TH1F *hrgamma = new TH1F("hrgamma","r gmamma", nptbin+1, mass_r_ptbin);
  cout<<" ***************** "<<endl;
  cout<<" mass ratio (100-300/0-30)"<<endl;
  for(int i=1; i<nptbin; i++){
    cout<<" pt : "<<i<<" "
	<<nsig[i][nmassbin-1]-nbg[i][nmassbin-1]<<" +- "<<sqrt(pow(ensig[i][nmassbin-1],2)+pow(enbg[i][nmassbin-1],2))<<" / "
	<<(nsig[i][0]-nbg[i][0])<<" ratio = "
	<<(nsig[i][nmassbin-1]-nbg[i][nmassbin-1])/(nsig[i][0]-nbg[i][0])
	<<" +- "<<sqrt(pow(ensig[i][nmassbin-1],2)+pow(enbg[i][nmassbin-1],2))/(nsig[i][0]-nbg[i][0])
	<<endl;

    int bin = hmass_r->FindBin((0.5*(pt_low[i]+pt_high[i])));
    float r_data = (nsig[i][nmassbin-1]-nbg[i][nmassbin-1])/(nsig[i][0]-nbg[i][0]);
    float er_data = sqrt(pow(ensig[i][nmassbin-1],2)+pow(enbg[i][nmassbin-1],2))/(nsig[i][0]-nbg[i][0]);

    hmass_r->SetBinContent(bin, r_data);
    hmass_r->SetBinError(bin, er_data);

    float r_gamma = (r_data-r_cocktail[i])/(r_dir - r_cocktail[i]);
    float e_r_gamma = (er_data)/(r_dir - r_cocktail[i]);
    hrgamma->SetBinContent(bin, r_gamma);
    hrgamma->SetBinError(bin, e_r_gamma);

  }

  hrgamma->SetXTitle("p_{T} [GeV]");
  hrgamma->SetYTitle("R_{#gamma}^{0-30}");
  hrgamma->SetMarkerColor(icent+1);
  hrgamma->SetLineColor(icent+1);
  hrgamma->SetMarkerStyle(20);
  hrgamma->SetMinimum(0);
  hrgamma->SetMaximum(1);

  TCanvas *c4 = new TCanvas("c4","c4");
  gPad->SetGrid(1);
  hmass_r->SetXTitle("p_{T} [GeV]");
  hmass_r->SetYTitle("R_{data}^{90-300}");
  hmass_r->SetMarkerColor(icent+1);
  hmass_r->SetLineColor(icent+1);
  hmass_r->SetMarkerStyle(20);
  hmass_r->SetMinimum(0);
  hmass_r->SetMaximum(0.5);

  hmass_r_ck->SetMarkerStyle(24);
  hmass_r->Draw(); hmass_r_ck->Draw("same");


  



  TFile *fout = new TFile(outname,"recreate");
  hw->Write();
  for(int i=0; i<nptbin; i++){
    hsub[i]->Write();
    hsub_clone[i]->Write();
  }
  for(int j=0;j<4;j++){
    hmass_cocktail[j]->Write();
    for(int k=0;k<6;k++){
      hmass_cocktail_comp[j][k]->Write();
    }
  }
  hmass_r->Write();
  hmass_r_ck->Write();
  hrgamma->Write();

}
      


  

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