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! "<Get(name); //cout<GetEntries()<ProjectionY("hpt"); TH1F *hstat = (TH1F*)fin->Get("hCentrality"); float nevents = hstat->Integral(cent_low[icent], cent_high[icent]-1); cout<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;jFindBin(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]; iAdd((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;jAdd( 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;jScale(1.0/nevents); hmasspt_ls[i][j]->Scale(1.0/nevents); cout<Integral()<Divide(3,1); for(int iptbin=1;iptbincd(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;iptbinSetXTitle("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;iiGetNbinsX(); 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 "<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<Integral()*nevents<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;iiGetNbinsX(); 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;iiGetNbinsX(); 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 ="<Integral()<<" "<Integral()<<" "<Integral()<<" "<Integral()<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;iiFindBin(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; ibGetBinError(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 : "< Nsig = "< Nsig = "<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; kGetBinContent(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(sig0 && 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<GetBinCenter(j+1)<<" : 90% conf: "<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; iClone(); 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; iIntegral(0,bin); //hsub_clone[i]->Scale(ent/ent1); c3->cd(i+1); hsub_clone[i]->Draw("same"); for(int k=0;kSetLineColor(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; icd(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;kSetLineColor(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.5AddEntry(hsub_clone[1],"1.0AddEntry(hsub_clone[2],"1.5AddEntry(hsub_clone[3],"2.0Draw("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;jGetNbinsX();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;jGetNbinsX();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<<" ***************** "<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 : "<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<<" ***************** "<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; iWrite(); 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(); }