void ALICE_Comparison(){ TFile *f = new TFile("~/Summer2016/rootfiles/FinalResult_0104/ALICE_Merged.root"); const int NAchBins = 7; const double correction = 0.731; TH1D* c2_pos[NAchBins][2]; TH1D* c2_neg[NAchBins][2]; TH1D* ach_hist[NAchBins]; double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double v2_diff[NAchBins]; double err_neg[NAchBins]; double err_pos[NAchBins]; double err_diff[NAchBins]; double cmean; double errmean; double sum; double variance_pos; double variance_neg; double variance_diff; double x_alice[10] = {-0.09,-0.07,-0.05,-0.03,-0.01,0.01,0.03,0.05,0.07,0.09}; // double v2_pos_alice[10] = {0.0995,0.0985+0.0005/4,0.098+0.0005/4,0.0975+0.0005*2/3,0.0975+0.0005/6,0.0975,0.097+0.0005/2,0.097+0.0005/2+0.0001}; // double v2_neg_alice[10] = {0.097-0.0005/5,0.097+0.0005/4,0.097+0.0005/2,0.0975,0.0975+0.0005/2,0.098+0.0005/4,0.0985+0.0001,0.0985+0.0005*2/3}; double v2_pos_alice[10] = {0.101486,0.099522,0.0986494,0.0981239,0.0978174,0.0975633,0.0974495,0.0972289,0.0972825,0.0976992}; double v2_neg_alice[10]={0.0991805,0.0968823,0.0971381,0.0972906,0.0974951,0.0977261,0.0981123,0.0986047,0.0988509,0.10041}; double err_pos_alice[10]={0.00199737,0.000688926,0.000277691,0.000144079,0.000101033,8.87595e-05,0.000109954,0.000176882,0.00037035,0.000996611}; double err_neg_alice[10]={0.00196405,0.000663062,0.000268974,0.000141065,0.000100219,8.94285e-05,0.000112572,0.000183565,0.000386812,0.00106967}; double err_diff_alice[10]; double v2_diff_alice[10]; for (int i = 0; i < 10; ++i) { v2_diff_alice[i] = (v2_neg_alice[i]-v2_pos_alice[i])/(v2_neg_alice[i]+v2_pos_alice[i]); sum = v2_pos_alice[i] + v2_neg_alice[i]; variance_pos = err_pos_alice[i]*err_pos_alice[i]; variance_neg = err_neg_alice[i]*err_neg_alice[i]; variance_diff = (4*v2_neg_alice[i]*v2_neg_alice[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos_alice[i]*v2_pos_alice[i]*variance_neg)/(sum*sum*sum*sum); err_diff_alice[i] = sqrt(variance_diff); } double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double err_pos[NAchBins]; double err_neg[NAchBins]; double v2_diff[NAchBins]; double err_diff[NAchBins]; for (Int_t i = 0; i < NAchBins; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo_n3/ach_%d",i+1)); c2_pos[i][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_cos",i)); c2_pos[i][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_sin",i)); c2_neg[i][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_cos",i)); c2_neg[i][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_sin",i)); } for(Int_t i=0; i<NAchBins; i++){ x[i]=ach_hist[i]->GetMean(); x[i] *= correction; //v2 positive cmean = c2_pos[i][0] -> GetMean(); v2_pos[i] = sqrt(cmean); errmean = c2_pos[i][0] -> GetMeanError(); variance_pos = (errmean*errmean)/(4*cmean); //negative cmean = c2_neg[i][0] -> GetMean(); v2_neg[i] = sqrt(cmean); errmean = c2_neg[i][0] -> GetMeanError(); variance_neg = (errmean*errmean)/(4*cmean); //difference v2_diff[i] = (v2_neg[i] - v2_pos[i])/(v2_neg[i] + v2_pos[i]); sum = v2_pos[i] + v2_neg[i]; variance_diff = (4*v2_neg[i]*v2_neg[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos[i]*v2_pos[i]*variance_neg)/(sum*sum*sum*sum); //error bars err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } gStyle->SetLegendFont(42); TH1D* base = new TH1D("base","base",1,-0.2,0.2); //pPb base->GetYaxis()->SetRangeUser(0.10, 0.11); base->GetXaxis()->SetTitle("Observed A_{ch}"); base->GetYaxis()->SetTitle("v_{2}{SP}"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TH1D* base2 = new TH1D("base2","base2",1,-0.2,0.2); base2->GetYaxis()->SetRangeUser(-0.05, 0.05); base2->GetXaxis()->SetTitle("Observed A_{ch}"); base2->GetYaxis()->SetTitle(" (v^{#minus}_{2} #minus v^{#plus}_{2})/(v^{#minus}_{2} #plus v^{#plus}_{2}) "); base2->GetXaxis()->CenterTitle(); base2->GetYaxis()->CenterTitle(); base2->SetTitleSize (0.040,"X"); base2->SetTitleOffset(1.4,"X"); base2->SetTitleFont (42,"X"); base2->SetLabelOffset(0.006,"X"); base2->SetLabelSize (0.040,"X"); base2->SetLabelFont (42 ,"X"); base2->SetTitleSize (0.040,"Y"); base2->SetTitleOffset(2.0,"Y"); base2->SetTitleFont (42,"Y"); base2->SetLabelOffset(0.006,"Y"); base2->SetLabelSize (0.040,"Y"); base2->SetLabelFont (42 ,"Y"); base2->SetLineWidth(0); cout << v2_pos[0] << endl; TGraphErrors *gr_pos = new TGraphErrors(7,x,v2_pos,NULL,err_pos); TGraphErrors *gr_neg = new TGraphErrors(7,x,v2_neg,NULL,err_neg); TGraphErrors *gr_diff = new TGraphErrors(7,x,v2_diff,NULL,err_diff); TGraphErrors *gr_pos_alice = new TGraphErrors(10,x_alice,v2_pos_alice,NULL,err_pos_alice); TGraphErrors *gr_neg_alice = new TGraphErrors(10,x_alice,v2_neg_alice,NULL,err_neg_alice); TGraphErrors *gr_diff_alice = new TGraphErrors(10,x_alice,v2_diff_alice,NULL,err_diff_alice); TCanvas* c1 = new TCanvas("c1","c1"); TCanvas* c2 = new TCanvas("c2","c2"); gr_neg -> SetMarkerStyle(20); gr_neg -> SetMarkerColor(kBlue); gr_pos -> SetMarkerStyle(34); gr_pos -> SetMarkerColor(kRed); c1->cd(); base->Draw(""); gr_pos->Draw("PSame"); gr_neg->Draw("PSame"); //text_a->Draw("Same"); //text_b->Draw("Same"); //Define a linear function TF1* fit1 = new TF1("f1", "[0]+x*[1]", -0.2, 0.2); TF1* fit2 = new TF1("f2", "[0]+x*[1]", -0.2, 0.2); fit1->SetLineColor(kRed); fit1->SetLineStyle(2); fit2->SetLineColor(kBlue); fit2->SetLineStyle(2); gr_diff->Fit(fit1,"RN0"); gr_diff_alice->Fit(fit2,"RN0"); c2->cd(); base2->Draw(""); TLatex* text2 = makeLatex(Form("CMS Intercept(Red) : %f #pm %f",fit1->GetParameter(0),fit1->GetParError(0)),0.45,0.25) ; TLatex* text1 = makeLatex(Form("CMS slope(Red) : %.4f #pm %.4f",fit1->GetParameter(1),fit1->GetParError(1)),0.45,0.25) ; TLatex* text3 = makeLatex(Form("ALICE Intercept(Blue) : %f #pm %f",fit2->GetParameter(0),fit2->GetParError(0)),0.45,0.35) ; TLatex* text4 = makeLatex(Form("ALICE slope(Blue) : %.4f #pm %.4f",fit2->GetParameter(1),fit2->GetParError(1)),0.45,0.30) ; text1->SetTextFont(42); text2->SetTextFont(42); text3->SetTextFont(42); text4->SetTextFont(42); gr_diff->Draw("PSame"); gr_diff_alice -> SetMarkerStyle(24); gr_diff_alice->Draw("PSame"); text1->DrawClone("Same"); text4->DrawClone("Same"); fit1->DrawClone("Same"); fit2->DrawClone("Same"); TFile *rebinned = new TFile("~/Summer2016/root_forgraphs/figure_alicecomparison.root","RECREATE"); gr_diff->Write(); gr_diff_alice->Write(); fit1->Write(); fit2->Write(); rebinned->Close(); c2->Print("~/Summer2016/comparison_ALICE_ver2.pdf"); c2->Print("~/Summer2016/comparison_ALICE_ver2.gif"); }
void figure2_0_generator(){ TFile *f; const int NAchBins = 7; const double correction = 0.687; //const double correction = 1.0; TH1D* c2_pos[NAchBins][2]; TH1D* c2_neg[NAchBins][2]; TH1D* ach_hist[NAchBins]; double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double v2_diff[NAchBins]; double err_neg[NAchBins]; double err_pos[NAchBins]; double err_diff[NAchBins]; double cmean; double errmean; double sum; double variance_pos; double variance_neg; double variance_diff; //f = new TFile("../../../rootfiles/systematics/trackselection/loose/Merged.root"); //f = new TFile("../../../rootfiles/systematics/trackselection/tight/Merged.root"); //f = new TFile("../../../rootfiles/systematics/vtz/wide/Merged.root"); //f = new TFile("../../../rootfiles/systematics/vtz/narrow/Merged.root"); //f = new TFile("../../../rootfiles/crosscheck/PbPb/v2/ntrk/185_220/Merged.root"); //f = new TFile("../../../rootfiles/systematics_redo/v2_Cumulant_40.root"); f = new TFile("~/Summer2016/rootfiles/FinalResult_0106/Main_pPb_Merged.root"); // = new TFile("../../../rootfiles/closure/pPb/185_220/Merged.root"); for (Int_t i = 0; i < NAchBins; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo_n3/ach_%d",i+1)); c2_pos[i][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_cos",i)); c2_pos[i][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_sin",i)); c2_neg[i][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_cos",i)); c2_neg[i][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_sin",i)); } for(Int_t i=0; i<NAchBins; i++){ x[i]=ach_hist[i]->GetMean(); x[i] *= correction; //v2 positive cmean = c2_pos[i][0] -> GetMean(); v2_pos[i] = sqrt(cmean); errmean = c2_pos[i][0] -> GetMeanError(); variance_pos = (errmean*errmean)/(4*cmean); //negative cmean = c2_neg[i][0] -> GetMean(); v2_neg[i] = sqrt(cmean); errmean = c2_neg[i][0] -> GetMeanError(); variance_neg = (errmean*errmean)/(4*cmean); //difference v2_diff[i] = (v2_neg[i] - v2_pos[i])/(v2_neg[i] + v2_pos[i]); sum = v2_pos[i] + v2_neg[i]; variance_diff = (4*v2_neg[i]*v2_neg[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos[i]*v2_pos[i]*variance_neg)/(sum*sum*sum*sum); //error bars cout << "xcoord " << x[i] << endl; err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } gStyle->SetLegendFont(42); TH1D* base = new TH1D("base","base",1,-0.15,0.15); //pPb //base->GetYaxis()->SetRangeUser(0.065, 0.075); base->GetYaxis()->SetRangeUser(0.065, 0.075); //PbPb //base->GetYaxis()->SetRangeUser(0.093, 0.103); base->GetXaxis()->SetTitle("Observed A_{ch}"); base->GetYaxis()->SetTitle("v_{2}{2}"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TH1D* base2 = new TH1D("base2","base2",1,-0.15,0.15); base2->GetYaxis()->SetRangeUser(-0.03, 0.03); base2->GetXaxis()->SetTitle("Observed A_{ch}"); base2->GetYaxis()->SetTitle(" (v^{#minus}_{2} #minus v^{#plus}_{2})/(v^{#minus}_{2} #plus v^{#plus}_{2}) "); base2->GetXaxis()->CenterTitle(); base2->GetYaxis()->CenterTitle(); base2->SetTitleSize (0.040,"X"); base2->SetTitleOffset(1.4,"X"); base2->SetTitleFont (42,"X"); base2->SetLabelOffset(0.006,"X"); base2->SetLabelSize (0.040,"X"); base2->SetLabelFont (42 ,"X"); base2->SetTitleSize (0.040,"Y"); base2->SetTitleOffset(2.0,"Y"); base2->SetTitleFont (42,"Y"); base2->SetLabelOffset(0.006,"Y"); base2->SetLabelSize (0.040,"Y"); base2->SetLabelFont (42 ,"Y"); base2->SetLineWidth(0); TFile *rebinned = new TFile("~/Summer2016/root_forgraphs/figure2_0.root","RECREATE"); TGraphErrors *gr_pos = new TGraphErrors(NAchBins,x,v2_pos,NULL,err_pos); TGraphErrors *gr_neg = new TGraphErrors(NAchBins,x,v2_neg,NULL,err_neg); TGraphErrors *gr_diff = new TGraphErrors(NAchBins,x,v2_diff,NULL,err_diff); gr_pos->Write(); gr_neg->Write(); gr_diff->Write(); // TCanvas* c1 = new TCanvas("c1","c1"); // TCanvas* c2 = new TCanvas("c2","c2"); TCanvas* c3 = new TCanvas("c3","c3",1,1,1200,600); c3->Divide(2,1,0.01,0.01); gr_neg -> SetMarkerStyle(20); gr_neg -> SetMarkerColor(kBlue); gr_pos -> SetMarkerStyle(34); gr_pos -> SetMarkerColor(kRed); TLatex* text_a = makeLatex("CMS PbPb #sqrt{s_{NN}}=5.02TeV",0.25,0.85) ; //TLatex* text_b = makeLatex("185 #leq N_{trk}^{offline} < 220",0.25,0.80) ; TLatex* text_b = makeLatex("30-40%",0.25,0.80) ; TLatex* text_c = makeLatex("0.8 < p_{T} < 0.85 GeV/c",0.25,0.75) ; TLatex* text_d = makeLatex("|#Delta#eta| > 2",0.25,0.70) ; text_a->SetTextFont(42); text_b->SetTextFont(42); text_c->SetTextFont(42); text_d->SetTextFont(42); TLegend* leg = new TLegend(0.76,0.80,0.94,.88); leg->SetLineColor(kWhite); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr_pos, "v_{2}^{#plus}{2}","p"); leg->AddEntry(gr_neg , "v_{2}^{#minus}{2}","p"); c3->cd(1); base->Draw(""); gr_pos->Draw("PSame"); gr_neg->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text_c->DrawClone("Same"); text_d->DrawClone("Same"); leg->DrawClone("Same"); //Define a linear function TF1* fit1 = new TF1("f1", "[0]+x*[1]", -0.13, 0.13); fit1->SetLineColor(kRed); fit1->SetLineStyle(2); gr_diff->Fit(fit1,"RN0"); fit1->Write(); rebinned->Close(); c3->cd(2); TLatex* text2 = makeLatex(Form("Intercept : %f #pm %f",fit1->GetParameter(0),fit1->GetParError(0)),0.45,0.30) ; TLatex* text1 = makeLatex(Form("slope : %.4f #pm %.4f",fit1->GetParameter(1),fit1->GetParError(1)),0.45,0.25) ; text1->SetTextFont(42); text2->SetTextFont(42); base2->Draw(""); fit1->DrawClone("Same"); gr_diff->SetMarkerStyle(20); gr_diff->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text1->DrawClone("Same"); text2->DrawClone("Same"); TF1 *fa1 = new TF1("fa1","0",-10,10); fa1->SetLineColor(kBlack); fa1->SetLineWidth(0); fa1->DrawClone("Same"); TLegend* leg2 = new TLegend(0.25,0.68,0.5,0.78); leg2->SetLineColor(kWhite); leg2->SetFillColor(0); leg2->SetFillStyle(0); leg2->AddEntry(fit1, "Linear fit","l"); leg2->AddEntry(gr_diff , "data","p"); leg2->DrawClone("Same"); //SaveCanvas(c3,"pics",Form("30-40Narrowpt")); }
void slopevscentrality(){ TFile *f; TH1D* c2_pos[5][2]; TH1D* c2_neg[5][2]; TH1D* ach_hist[5]; TH1D* cbinHist; TGraphErrors* gr_diff; TF1* fit1; double x_centrality[6] = {35, 45, 55, 65, 75, 85}; double y_slope[6]; double statErr[6]; double variance_pos = 0.0; double variance_neg = 0.0; double variance_diff = 0.0; double err_neg[5]; double err_pos[5]; double err_diff[5]; double cmean; double errmean; double sum; for (int n = 0; n <6; ++n) { f = new TFile(Form("../../../rootfiles/slope_vs_centrality/PbPb502_%d.root",n+1)); for (Int_t i = 0; i < 5; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo/ach_%d",i+1)); c2_pos[i][0] = (TH1D*)f->Get(Form("demo/c2pos_%d_cos",i)); c2_pos[i][1] = (TH1D*)f->Get(Form("demo/c2pos_%d_sin",i)); c2_neg[i][0] = (TH1D*)f->Get(Form("demo/c2neg_%d_cos",i)); c2_neg[i][1] = (TH1D*)f->Get(Form("demo/c2neg_%d_sin",i)); } cbinHist = (TH1D*)f->Get("demo/cbinHist"); double x[5]; double v2_pos[5]; double v2_neg[5]; double v2_diff[5]; double r; for(Int_t i=0; i<5; i++){ x[i]=ach_hist[i]->GetMean(); cmean = c2_pos[i][0] -> GetMean(); v2_pos[i] = sqrt(cmean); errmean = c2_pos[i][0] -> GetMeanError(); variance_pos = (errmean*errmean)/(4*cmean); cmean = c2_neg[i][0] -> GetMean(); v2_neg[i] = sqrt(cmean); errmean = c2_neg[i][0] -> GetMeanError(); variance_neg = (errmean*errmean)/(4*cmean); v2_diff[i] = (v2_neg[i] - v2_pos[i]); sum = v2_pos[i] + v2_neg[i]; variance_diff = variance_pos+variance_neg; //error calculation err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } gr_diff = new TGraphErrors(5,x,v2_diff,NULL, err_diff); fit1 = new TF1("Linear fitting case 1", "[0]+x*[1]", -0.09, 0.09); gr_diff->Fit(fit1); r = fit1->GetParameter(1); statErr[n] = fit1->GetParError(1); cout << "slope is: " << r << endl; y_slope[n] = r; } double x_alice[] = {5,15,25,35,45,55,65,75}; double y_alice[] = { 0.0188127, 0.0252774, 0.0290478, 0.0315681, 0.0313678, 0.0334533, 0.0326948, 0.027709 }; double alice_statErrors[] = { 0.00276672, 0.00491256, 0.00542907, 0.00499819, 0.00427076, 0.00421142, 0.00436631, 0.00480683 }; double alice_sysminus[] = { 0.003345731066792428, 0.005524736668946313, 0.006157316616294797, 0.00591162859559022, 0.0052989413797474684, 0.0053784097301432885, 0.0054547376184835876, 0.005548288155719744 }; double alice_sysplus[] = { 0.003345731066792428, 0.005524736668946313, 0.006157316616294797, 0.00591162859559022, 0.0052989413797474684, 0.0053784097301432885, 0.0054547376184835876, 0.005548288155719744 }; double xsysalice[] = {1,1,1,1,1,1,1,1}; double x_star[] = {2.5,7.5,15.0,25.0,35.0,45.0,55.0,65.0,75.0}; double y_star[] = {-0.033529,0.001979,0.015917,0.028232,0.031986,0.026516,0.028016,0.012459,-0.02195}; double star_statErrors[] = { 0.0010554, 0.00701, 0.003874, 0.003091, 0.002903, 0.002921, 0.003657, 0.005119, 0.009593 }; double star_sysminus[] = { 2.156594920238847, 1.1474282374074642, 0.41413973487218053, 0.40721102637330436, 0.46464817873311415, 0.48750025641018896, 1.2743975557101481, 0.6065696744810114, 0.9645708786812922 }; double star_sysplus[] = { 3.152323796820371, 1.1348034014753392, 0.6881948851887814, 0.3091, 0.3775553601791398, 0.6362180836788593, 0.39244649316817704, 1.060086081410373, 4.931994052105091 }; double xsysstar[] = {1,1,1,1,1,1,1,1,1}; for(i=0;i<9;i++){ star_sysminus[i]/=100; star_sysplus[i]/=100; } gStyle->SetLegendFont(42); TGraphErrors* slopevscent = new TGraphErrors(6,x_centrality,y_slope,NULL,statErr); TGraphErrors* ALICE = new TGraphErrors(8,x_alice,y_alice,NULL,alice_statErrors); TGraphErrors* STAR = new TGraphErrors(9,x_star,y_star,NULL,star_statErrors); TGraphAsymmErrors* ALICE_sys = new TGraphAsymmErrors(8, x_alice, y_alice, xsysalice, xsysalice, alice_sysminus, alice_sysplus); TGraphAsymmErrors* STAR_sys = new TGraphAsymmErrors(9, x_star, y_star, xsysstar, xsysstar, star_sysminus, star_sysplus); slopevscent -> SetMarkerStyle(20); slopevscent -> SetMarkerColor(kBlack); ALICE -> SetMarkerStyle(25); ALICE -> SetMarkerColor(kRed); ALICE -> SetLineColor(kRed); STAR -> SetMarkerStyle(kOpenStar); STAR -> SetMarkerColor(kBlue); STAR -> SetLineColor(kBlue); TH1D* base = new TH1D("base","base",1,0,100); base->GetYaxis()->SetRangeUser(0.00,0.06); base->GetXaxis()->SetTitle("Centrality(%)"); base->GetYaxis()->SetTitle("Slope parameter(v_{2})"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TCanvas* c3 = MakeCanvas("c3","c3"); TLatex* text_a = makeLatex("CMS pPb #sqrt{s_{NN}}=5.02TeV",0.25,0.85) ; TLatex* text_b = makeLatex("185 #leq N_{trk}^{offline} < 260",0.25,0.80) ; TLatex* text_c = makeLatex("0.3 < p_{T} < 3 GeV/c",0.25,0.85) ; TLatex* text_d = makeLatex("|#Delta#eta| > 2",0.25,0.80) ; text_a->SetTextFont(42); text_b->SetTextFont(42); text_c->SetTextFont(42); text_d->SetTextFont(42); slopevscent->SetFillStyle(0); slopevscent->SetFillColor(0); slopevscent->SetFillStyle(0); slopevscent->SetFillColor(0); gStyle->SetOptTitle(0); TLegend* leg = new TLegend(.58,.70,.93,.90); leg->SetLineColor(kWhite); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(slopevscent, "CMS, Pb-Pb 5.02TeV","p"); leg->AddEntry(ALICE, "ALICE, Pb-Pb 2.76TeV","p"); leg->AddEntry(STAR, "STAR, Au-Au 200GeV","p"); //leg->AddEntry(gr_neg, "neg","p"); c3->cd(); base->Draw(""); ALICE->Draw("PSame"); STAR->Draw("PSame"); slopevscent->Draw("PSame"); // STAR_sys->Draw("2Same"); leg->DrawClone("PSame"); // text_c->DrawClone("Same"); // text_d->DrawClone("Same"); //Define a linear function //SaveCanvas(c3,"pics","slopevscent_comparison"); }
TCanvas* DrawComparison(TH1D* prediction, TH1D* selection, TString Title, TString LumiTitle, TString xTitle, bool isData) { double MinX = selection->GetXaxis()->GetXmin(); double MaxX = selection->GetXaxis()->GetXmax(); double MaxY = selection->GetMaximum(); double YRangeMax = MaxY; TString titlePrediction; TString titleSelection; TString RatioTitle; if( isData ){ titlePrediction = "Data"; titleSelection = "MC"; RatioTitle = "(Data-MC)/MC"; } else { titlePrediction = "Data-driven Pred. from MC"; titleSelection = "MC Expectation"; RatioTitle = "(Pred-MC)/MC"; } //static Int_t c_LightBrown = TColor::GetColor( "#D9D9CC" ); static Int_t c_LightGray = TColor::GetColor( "#DDDDDD" ); prediction->SetAxisRange(MinX, MaxX, "X"); prediction->GetYaxis()->SetRangeUser(0.005, YRangeMax); prediction->SetMarkerStyle(20); prediction->SetMarkerSize(0.9); prediction->SetMarkerColor(kBlack); prediction->SetXTitle(xTitle); prediction->SetYTitle("Events"); selection->SetAxisRange(MinX, MaxX, "X"); selection->GetYaxis()->SetRangeUser(0.05, YRangeMax); // selection->SetFillColor(c_LightBrown); selection->SetFillColor(c_LightGray); selection->SetTitle(""); selection->SetXTitle(xTitle); selection->SetYTitle("Events"); TCanvas *c = new TCanvas("ca", "Comparison and ratio of two histos", 700, 700); TPad *pad1 = new TPad("pad1a", "pad1a", 0, 0.35, 1, 1); //pad1->SetLogy(); pad1->SetBottomMargin(0); pad1->Draw(); pad1->cd(); selection->DrawCopy("hist"); prediction->Draw("same"); selection->SetFillColor(kAzure-3); selection->SetFillStyle(3354); selection->DrawCopy("e2same"); selection->SetFillStyle(1001); // selection->SetFillColor(c_LightBrown); selection->SetFillColor(c_LightGray); TLegend* leg1 = new TLegend(0.48, 0.63, 0.95, 0.83); leg1->SetFillStyle(0); leg1->SetLineStyle(1); leg1->SetTextFont(42); leg1->SetTextSize(0.04); leg1->AddEntry(selection, titleSelection, "lf"); leg1->AddEntry(prediction, titlePrediction, "lep"); leg1->Draw("same"); TPaveText* pt = new TPaveText(0.11, 0.98, 0.95, 0.86, "NDC"); pt->SetBorderSize(0); pt->SetFillStyle(0); pt->SetTextAlign(12); pt->SetTextSize(0.045); pt->AddText(Title); pt->AddText(LumiTitle); pt->Draw(); c->cd(); TPad *pad2 = new TPad("pad2a", "pad2a", 0, 0, 1, 0.35); pad2->SetTopMargin(0); pad2->Draw(); pad2->cd(); TH1D* r = new TH1D(*selection); r->SetTitle(""); r->SetLabelSize(0.08, "XYZ"); r->SetLabelOffset(0.01, "XYZ"); r->SetTitleSize(0.09, "XYZ"); r->SetTitleOffset(0.65, "Y"); r->SetTickLength(0.05); r->SetYTitle(RatioTitle); r->SetStats(0); r->SetMarkerStyle(20); r->SetMarkerSize(0.9); r->SetMarkerColor(kBlack); r->Reset(); r->Add(prediction, 1); r->Add(selection, -1); r->Divide(selection); r->SetMaximum(1.2); r->SetMinimum(-1.2); r->Draw("ep"); TLine l; l.DrawLine(MinX, 0., MaxX, 0.); c->cd(); return c; }
void CumulantErrGraph_v2_allgraphs_cent(){ TFile *f; const int NAchBins = 7; //const double correction = 0.7463; //const double correction = 1.0; TH1D* c2_pos[NAchBins][2]; TH1D* c2_neg[NAchBins][2]; TH1D* ach_hist[NAchBins]; double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double v2_diff[NAchBins]; double err_neg[NAchBins]; double err_pos[NAchBins]; double err_diff[NAchBins]; double cmean; double errmean; double sum; double variance_pos; double variance_neg; double variance_diff; int index_v2_mult; int index_v3_mult; int index_v2_cent; int index_v3_cent; int mult_start[6] = {30,40,50,60,70,80}; int mult_end[6] = {40,50,60,70,80,90}; double correction[6] = {0.645, 0.663, 0.673, 0.689, 0.699, 0.623}; int mult_index[6] = {9,10,11,12,13,14}; double setrange_low[6] = {0.0965, 0.105, 0.1038, 0.0945, 0.076, 0.06}; double setrange_upp[6] = {0.101, 0.11, 0.108 ,0.101 ,0.088,0.072}; double range_start = 0.06; double range_end = 0.072; int num = 5; range_start = setrange_low[num]; range_end = setrange_upp[num]; f = new TFile("~/Summer2016/rootfiles/FinalResult_0106/Main_PbPb_Merged.root"); // = new TFile("../../../rootfiles/closure/pPb/185_220/Merged.root"); for (Int_t i = 0; i < NAchBins; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo_n%d/ach_%d",mult_index[num],i+1)); c2_pos[i][0] = (TH1D*)f->Get(Form("demo_n%d/c2pos_%d_cos",mult_index[num],i)); c2_pos[i][1] = (TH1D*)f->Get(Form("demo_n%d/c2pos_%d_sin",mult_index[num],i)); c2_neg[i][0] = (TH1D*)f->Get(Form("demo_n%d/c2neg_%d_cos",mult_index[num],i)); c2_neg[i][1] = (TH1D*)f->Get(Form("demo_n%d/c2neg_%d_sin",mult_index[num],i)); } for(Int_t i=0; i<NAchBins; i++){ x[i]=ach_hist[i]->GetMean(); x[i] *= correction[num]; //v2 positive cmean = c2_pos[i][0] -> GetMean(); v2_pos[i] = sqrt(cmean); errmean = c2_pos[i][0] -> GetMeanError(); variance_pos = (errmean*errmean)/(4*cmean); //negative cmean = c2_neg[i][0] -> GetMean(); v2_neg[i] = sqrt(cmean); errmean = c2_neg[i][0] -> GetMeanError(); variance_neg = (errmean*errmean)/(4*cmean); //difference v2_diff[i] = (v2_neg[i] - v2_pos[i])/(v2_neg[i] + v2_pos[i]); sum = v2_pos[i] + v2_neg[i]; variance_diff = (4*v2_neg[i]*v2_neg[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos[i]*v2_pos[i]*variance_neg)/(sum*sum*sum*sum); //error bars cout << "xcoord " << x[i] << endl; err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } gStyle->SetLegendFont(42); TH1D* base = new TH1D("base","base",1,-0.12,0.12); //pPb //base->GetYaxis()->SetRangeUser(0.065, 0.075); base->GetYaxis()->SetRangeUser(range_start, range_end); //PbPb //base->GetYaxis()->SetRangeUser(0.093, 0.103); base->GetXaxis()->SetTitle("Corrected A_{ch}"); base->GetYaxis()->SetTitle("v_{2}{2}"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TH1D* base2 = new TH1D("base2","base2",1,-0.12,0.12); base2->GetYaxis()->SetRangeUser(-0.03, 0.03); base2->GetXaxis()->SetTitle("Corrected A_{ch}"); base2->GetYaxis()->SetTitle(" (v^{#minus}_{2} #minus v^{#plus}_{2})/(v^{#minus}_{2} #plus v^{#plus}_{2}) "); base2->GetXaxis()->CenterTitle(); base2->GetYaxis()->CenterTitle(); base2->SetTitleSize (0.040,"X"); base2->SetTitleOffset(1.4,"X"); base2->SetTitleFont (42,"X"); base2->SetLabelOffset(0.006,"X"); base2->SetLabelSize (0.040,"X"); base2->SetLabelFont (42 ,"X"); base2->SetTitleSize (0.040,"Y"); base2->SetTitleOffset(2.0,"Y"); base2->SetTitleFont (42,"Y"); base2->SetLabelOffset(0.006,"Y"); base2->SetLabelSize (0.040,"Y"); base2->SetLabelFont (42 ,"Y"); base2->SetLineWidth(0); TFile *rebinned = new TFile(Form("~/Summer2016/root_forgraphs/v2_cent_%d_%d.root",mult_start[num],mult_end[num]),"RECREATE"); TGraphErrors *gr_pos = new TGraphErrors(NAchBins,x,v2_pos,NULL,err_pos); TGraphErrors *gr_neg = new TGraphErrors(NAchBins,x,v2_neg,NULL,err_neg); TGraphErrors *gr_diff = new TGraphErrors(NAchBins,x,v2_diff,NULL,err_diff); if(num==0){ gr_pos->RemovePoint(0); gr_pos->RemovePoint(5); gr_neg->RemovePoint(0); gr_neg->RemovePoint(5); gr_diff->RemovePoint(0); gr_diff->RemovePoint(5); } gr_pos->Write(); gr_neg->Write(); gr_diff->Write(); // TCanvas* c1 = new TCanvas("c1","c1"); // TCanvas* c2 = new TCanvas("c2","c2"); TCanvas* c3 = new TCanvas("c3","c3",1,1,1200,600); c3->Divide(2,1,0.01,0.01); gr_neg -> SetMarkerStyle(20); gr_neg -> SetMarkerColor(kBlue); gr_pos -> SetMarkerStyle(34); gr_pos -> SetMarkerColor(kRed); TLatex* text_a = makeLatex("CMS PbPb #sqrt{s_{NN}}=5.02TeV",0.25,0.85) ; //TLatex* text_b = makeLatex("185 #leq N_{trk}^{offline} < 220",0.25,0.80) ; TLatex* text_b = makeLatex(Form("%d-%d centrality",mult_start[num],mult_end[num]),0.25,0.80) ; TLatex* text_c = makeLatex("0.3 < p_{T} < 3.0 GeV/c",0.25,0.75) ; TLatex* text_d = makeLatex("|#Delta#eta| > 1",0.25,0.70) ; text_a->SetTextFont(42); text_b->SetTextFont(42); text_c->SetTextFont(42); text_d->SetTextFont(42); TLegend* leg = new TLegend(0.76,0.80,0.94,.88); leg->SetLineColor(kWhite); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr_pos, "v_{2}^{#plus}{2}","p"); leg->AddEntry(gr_neg , "v_{2}^{#minus}{2}","p"); c3->cd(1); base->Draw(""); gr_pos->Draw("PSame"); gr_neg->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text_c->DrawClone("Same"); text_d->DrawClone("Same"); leg->DrawClone("Same"); //Define a linear function TF1* fit1 = new TF1("f1", "[0]+x*[1]", -0.13, 0.13); fit1->SetLineColor(kRed); fit1->SetLineStyle(2); gr_diff->Fit(fit1,"RN0"); fit1->Write(); rebinned->Close(); c3->cd(2); TLatex* text2 = makeLatex(Form("Intercept : %f #pm %f",fit1->GetParameter(0),fit1->GetParError(0)),0.45,0.30) ; TLatex* text1 = makeLatex(Form("slope : %.4f #pm %.4f",fit1->GetParameter(1),fit1->GetParError(1)),0.45,0.25) ; text1->SetTextFont(42); text2->SetTextFont(42); base2->Draw(""); fit1->DrawClone("Same"); gr_diff->SetMarkerStyle(20); gr_diff->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text1->DrawClone("Same"); text2->DrawClone("Same"); TF1 *fa1 = new TF1("fa1","0",-10,10); fa1->SetLineColor(kBlack); fa1->SetLineWidth(0); fa1->DrawClone("Same"); TLegend* leg2 = new TLegend(0.25,0.68,0.5,0.78); leg2->SetLineColor(kWhite); leg2->SetFillColor(0); leg2->SetFillStyle(0); leg2->AddEntry(fit1, "Linear fit","l"); leg2->AddEntry(gr_diff , "data","p"); leg2->DrawClone("Same"); cout << mult_start[num] << endl; cout << mult_end[num] << endl; c3->Print(Form("~/Summer2016/pics/v2_cent_%d_%d.pdf",mult_start[num],mult_end[num])); c3->Print(Form("~/Summer2016/pics/v2_cent_%d_%d.gif",mult_start[num],mult_end[num])); }
void figure2_0_generate(){ TFile* f; const int NAchBins = 7; const double correction = 1.0; //185-220 correction //const double correction = 0.675; //30-40% correction //const double correction = 0.641; TH1D* c2_pos_case1[100][4][2]; TH1D* c2_neg_case1[100][4][2]; TH1D* c2_tot_case1[100][4][2]; TH1D* c2_pos_case2[100][4][2]; TH1D* c2_neg_case2[100][4][2]; TH1D* c2_tot_case2[100][4][2]; TH1D* ach_hist[100]; TH1D* c2_pos[100][4]; TH1D* c2_neg[100][4]; double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double err_pos[NAchBins]; double err_neg[NAchBins]; double v2_diff[NAchBins]; double err_diff[NAchBins]; double numerator; double denominator; double q0,q1,q2,q3; double esquared; double v2_pos_sample[100][10]; double v2_neg_sample[100][10]; double v2_diff_sample[100][10]; for (int m = 0; m < 10; ++m) { f = new TFile(Form("~/Summer2016/rootfiles/FinalResult_pPb/leaveout%d.root",m+1)); for (Int_t i = 0; i < NAchBins; i++){ for(Int_t j = 0 ; j < 4; j++){ c2_tot_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_cos_case1",i,j)); c2_tot_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_sin_case1",i,j)); c2_pos_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_cos_case1",i,j)); c2_pos_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_sin_case1",i,j)); c2_neg_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_cos_case1",i,j)); c2_neg_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_sin_case1",i,j)); c2_tot_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_cos_case2",i,j)); c2_tot_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_sin_case2",i,j)); c2_pos_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_cos_case2",i,j)); c2_pos_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_sin_case2",i,j)); c2_neg_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_cos_case2",i,j)); c2_neg_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_sin_case2",i,j)); } } for (int i = 0; i < NAchBins; ++i) { c2_pos[i][0] = new TH1D(*c2_pos_case1[i][0][0]); c2_pos[i][0] -> Add(c2_pos_case2[i][0][0],1.); c2_pos[i][1] = new TH1D(*c2_pos_case1[i][1][0]); c2_pos[i][1] -> Add(c2_pos_case2[i][2][0],1.); c2_pos[i][2] = new TH1D(*c2_pos_case1[i][2][0]); c2_pos[i][2] -> Add(c2_pos_case2[i][1][0],1.); c2_pos[i][3] = new TH1D(*c2_pos_case1[i][3][0]); c2_pos[i][3] -> Add(c2_pos_case2[i][3][0],1.); c2_neg[i][0] = new TH1D(*c2_neg_case1[i][0][0]); c2_neg[i][0] -> Add(c2_neg_case2[i][0][0],1.); c2_neg[i][1] = new TH1D(*c2_neg_case1[i][1][0]); c2_neg[i][1] -> Add(c2_neg_case2[i][2][0],1.); c2_neg[i][2] = new TH1D(*c2_neg_case1[i][2][0]); c2_neg[i][2] -> Add(c2_neg_case2[i][1][0],1.); c2_neg[i][3] = new TH1D(*c2_neg_case1[i][3][0]); c2_neg[i][3] -> Add(c2_neg_case2[i][3][0],1.); } for(Int_t i=0; i<NAchBins; i++){ //positive q0 = c2_pos[i][0]->GetMean(); q1 = c2_pos[i][1]->GetMean(); q2 = c2_pos[i][2]->GetMean(); q3 = c2_pos[i][3]->GetMean(); numerator = q0; denominator = sqrt((q1*q2)/q3); v2_pos_sample[i][m] = numerator/denominator; //negative q0 = c2_neg[i][0]->GetMean(); q1 = c2_neg[i][1]->GetMean(); q2 = c2_neg[i][2]->GetMean(); q3 = c2_neg[i][3]->GetMean(); numerator = q0; denominator = sqrt((q1*q2)/q3); v2_neg_sample[i][m] = numerator/denominator; v2_diff_sample[i][m] = (v2_neg_sample[i][m] - v2_pos_sample[i][m])/(v2_neg_sample[i][m] + v2_pos_sample[i][m]); } } f = new TFile("~/Summer2016/rootfiles/FinalResult_pPb/Merged.root"); for (Int_t i = 0; i < NAchBins; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo_n3/ach_%d",i+1)); for(Int_t j = 0 ; j < 4; j++){ c2_tot_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_cos_case1",i,j)); c2_tot_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_sin_case1",i,j)); c2_pos_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_cos_case1",i,j)); c2_pos_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_sin_case1",i,j)); c2_neg_case1[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_cos_case1",i,j)); c2_neg_case1[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_sin_case1",i,j)); c2_tot_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_cos_case2",i,j)); c2_tot_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2tot_%d_%d_sin_case2",i,j)); c2_pos_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_cos_case2",i,j)); c2_pos_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2pos_%d_%d_sin_case2",i,j)); c2_neg_case2[i][j][0] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_cos_case2",i,j)); c2_neg_case2[i][j][1] = (TH1D*)f->Get(Form("demo_n3/c2neg_%d_%d_sin_case2",i,j)); //c2_pos_case2[i][j][0] ->Sumw2(); //c2_neg_case2[i][j][0] ->Sumw2(); } } for (int i = 0; i < NAchBins; ++i) { c2_pos[i][0] = new TH1D(*c2_pos_case1[i][0][0]); c2_pos[i][0] -> Add(c2_pos_case2[i][0][0],1.); c2_pos[i][1] = new TH1D(*c2_pos_case1[i][1][0]); c2_pos[i][1] -> Add(c2_pos_case2[i][2][0],1.); c2_pos[i][2] = new TH1D(*c2_pos_case1[i][2][0]); c2_pos[i][2] -> Add(c2_pos_case2[i][1][0],1.); c2_pos[i][3] = new TH1D(*c2_pos_case1[i][3][0]); c2_pos[i][3] -> Add(c2_pos_case2[i][3][0],1.); c2_neg[i][0] = new TH1D(*c2_neg_case1[i][0][0]); c2_neg[i][0] -> Add(c2_neg_case2[i][0][0],1.); c2_neg[i][1] = new TH1D(*c2_neg_case1[i][1][0]); c2_neg[i][1] -> Add(c2_neg_case2[i][2][0],1.); c2_neg[i][2] = new TH1D(*c2_neg_case1[i][2][0]); c2_neg[i][2] -> Add(c2_neg_case2[i][1][0],1.); c2_neg[i][3] = new TH1D(*c2_neg_case1[i][3][0]); c2_neg[i][3] -> Add(c2_neg_case2[i][3][0],1.); } for(Int_t i=0; i<NAchBins; i++){ //x coordinates x[i]=ach_hist[i]->GetMean(); x[i]*=correction; //positive q0 = c2_pos[i][0]->GetMean(); q1 = c2_pos[i][1]->GetMean(); q2 = c2_pos[i][2]->GetMean(); q3 = c2_pos[i][3]->GetMean(); numerator = q0; denominator = sqrt((q1*q2)/q3); v2_pos[i] = numerator/denominator; //negative q0 = c2_neg[i][0]->GetMean(); q1 = c2_neg[i][1]->GetMean(); q2 = c2_neg[i][2]->GetMean(); q3 = c2_neg[i][3]->GetMean(); numerator = q0; denominator = sqrt((q1*q2)/q3); v2_neg[i] = numerator/denominator; //difference v2_diff[i] = (v2_neg[i]-v2_pos[i])/(v2_neg[i]+v2_pos[i]); //error bars double variance_pos = 0.0; double variance_neg = 0.0; double variance_diff = 0.0; double sum; for (int k = 0; k < 10; ++k) { variance_pos += (v2_pos_sample[i][k]-v2_pos[i])*(v2_pos_sample[i][k]-v2_pos[i]); variance_neg += (v2_neg_sample[i][k]-v2_neg[i])*(v2_neg_sample[i][k]-v2_neg[i]); variance_diff += (v2_diff_sample[i][k]-v2_diff[i])*(v2_diff_sample[i][k]-v2_diff[i]); } sum = v2_pos[i] + v2_neg[i]; variance_pos *= 0.9; variance_neg *= 0.9; variance_diff *= 0.9; //variance_diff = (4*v2_neg[i]*v2_neg[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos[i]*v2_pos[i]*variance_neg)/(sum*sum*sum*sum); err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } TGraphErrors *gr_pos = new TGraphErrors(NAchBins,x,v2_pos,NULL,err_pos); TGraphErrors *gr_neg = new TGraphErrors(NAchBins,x,v2_neg,NULL,err_neg); TGraphErrors *gr_diff = new TGraphErrors(NAchBins,x,v2_diff,NULL,err_diff); TFile *rebinned = new TFile("~/Summer2016/root_forgraphs/figure2_0_notcorrected.root","RECREATE"); gr_pos->Write(); gr_neg->Write(); gr_diff->Write(); /* gr_pos->RemovePoint(0); gr_pos->RemovePoint(5); gr_neg->RemovePoint(0); gr_neg->RemovePoint(5); gr_diff->RemovePoint(0); gr_diff->RemovePoint(5); */ gStyle->SetLegendFont(42); TH1D* base = new TH1D("base","base",1,-0.20,0.20); //pPb //base->GetYaxis()->SetRangeUser(0.065, 0.075); base->GetYaxis()->SetRangeUser(0.06, 0.12); //PbPb //base->GetYaxis()->SetRangeUser(0.093, 0.103); base->GetXaxis()->SetTitle("Observed A_{ch}"); base->GetYaxis()->SetTitle("v_{2}{2}"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TH1D* base2 = new TH1D("base2","base2",1,-0.2,0.2); base2->GetYaxis()->SetRangeUser(-0.03, 0.03); base2->GetXaxis()->SetTitle("Observed A_{ch}"); base2->GetYaxis()->SetTitle(" (v^{#minus}_{2} #minus v^{#plus}_{2})/(v^{#minus}_{2} #plus v^{#plus}_{2}) "); base2->GetXaxis()->CenterTitle(); base2->GetYaxis()->CenterTitle(); base2->SetTitleSize (0.040,"X"); base2->SetTitleOffset(1.4,"X"); base2->SetTitleFont (42,"X"); base2->SetLabelOffset(0.006,"X"); base2->SetLabelSize (0.040,"X"); base2->SetLabelFont (42 ,"X"); base2->SetTitleSize (0.040,"Y"); base2->SetTitleOffset(2.0,"Y"); base2->SetTitleFont (42,"Y"); base2->SetLabelOffset(0.006,"Y"); base2->SetLabelSize (0.040,"Y"); base2->SetLabelFont (42 ,"Y"); base2->SetLineWidth(0); // TCanvas* c1 = new TCanvas("c1","c1"); // TCanvas* c2 = new TCanvas("c2","c2"); TCanvas* c3 = new TCanvas("c3","c3",1,1,1200,600); c3->Divide(2,1,0.01,0.01); gr_neg -> SetMarkerStyle(20); gr_neg -> SetMarkerColor(kBlue); gr_pos -> SetMarkerStyle(34); gr_pos -> SetMarkerColor(kRed); TLatex* text_a = makeLatex("CMS PbPb #sqrt{s_{NN}}=5.02TeV",0.25,0.85) ; //TLatex* text_b = makeLatex("185 #leq N_{trk}^{offline} < 220",0.25,0.80) ; TLatex* text_b = makeLatex("30-40%",0.25,0.80) ; TLatex* text_c = makeLatex("0.3 < p_{T} < 3.0 GeV/c",0.25,0.75) ; TLatex* text_d = makeLatex("|#Delta#eta| > 2",0.25,0.70) ; text_a->SetTextFont(42); text_b->SetTextFont(42); text_c->SetTextFont(42); text_d->SetTextFont(42); TLegend* leg = new TLegend(0.76,0.80,0.94,.88); leg->SetLineColor(kWhite); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr_pos, "v_{2}^{#plus}{2}","p"); leg->AddEntry(gr_neg , "v_{2}^{#minus}{2}","p"); c3->cd(1); base->Draw(""); gr_pos->Draw("PSame"); gr_neg->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text_c->DrawClone("Same"); text_d->DrawClone("Same"); leg->DrawClone("Same"); //Define a linear function TF1* fit1 = new TF1("f1", "[0]+x*[1]", -0.13, 0.13); fit1->SetLineColor(kRed); fit1->SetLineStyle(2); gr_diff->Fit(fit1,"RN0"); fit1->Write(); rebinned->Close(); c3->cd(2); TLatex* text2 = makeLatex(Form("Intercept : %f #pm %f",fit1->GetParameter(0),fit1->GetParError(0)),0.45,0.30) ; TLatex* text1 = makeLatex(Form("slope : %.4f #pm %.4f",fit1->GetParameter(1),fit1->GetParError(1)),0.45,0.25) ; text1->SetTextFont(42); text2->SetTextFont(42); base2->Draw(""); fit1->DrawClone("Same"); gr_diff->SetMarkerStyle(20); gr_diff->Draw("PSame"); text_a->DrawClone("Same"); text_b->DrawClone("Same"); text1->DrawClone("Same"); text2->DrawClone("Same"); TF1 *fa1 = new TF1("fa1","0",-10,10); fa1->SetLineColor(kBlack); fa1->SetLineWidth(0); fa1->DrawClone("Same"); TLegend* leg2 = new TLegend(0.25,0.68,0.5,0.78); leg2->SetLineColor(kWhite); leg2->SetFillColor(0); leg2->SetFillStyle(0); leg2->AddEntry(fit1, "Linear fit","l"); leg2->AddEntry(gr_diff , "data","p"); leg2->DrawClone("Same"); //SaveCanvas(c3,"pics",Form("30-40SP")); }
void CumulantErrGraph_v2_normalized(){ TFile *f; const int NAchBins = 7; TH1D* c2_pos[NAchBins][2]; TH1D* c2_neg[NAchBins][2]; TH1D* ach_hist[NAchBins]; double x[NAchBins]; double v2_pos[NAchBins]; double v2_neg[NAchBins]; double v2_diff[NAchBins]; double err_neg[NAchBins]; double err_pos[NAchBins]; double err_diff[NAchBins]; double cmean; double errmean; double sum; double variance_pos; double variance_neg; double variance_diff; int low = 60; int upp = 90; f = new TFile(Form("../../../rootfiles/crosscheck/PbPb/v3/%d_%d/Merged.root",low,upp)); TLatex* text_b = makeLatex(Form("centrality %d-%d",low,upp),0.25,0.88) ; for (Int_t i = 0; i < NAchBins; i++){ ach_hist[i] = (TH1D*)f->Get(Form("demo/ach_%d",i+1)); c2_pos[i][0] = (TH1D*)f->Get(Form("demo/c2pos_%d_cos",i)); c2_pos[i][1] = (TH1D*)f->Get(Form("demo/c2pos_%d_sin",i)); c2_neg[i][0] = (TH1D*)f->Get(Form("demo/c2neg_%d_cos",i)); c2_neg[i][1] = (TH1D*)f->Get(Form("demo/c2neg_%d_sin",i)); } for(Int_t i=0; i<NAchBins; i++){ x[i]=ach_hist[i]->GetMean(); //v2 positive cmean = c2_pos[i][0] -> GetMean(); v2_pos[i] = sqrt(cmean); errmean = c2_pos[i][0] -> GetMeanError(); variance_pos = (errmean*errmean)/(4*cmean); //negative cmean = c2_neg[i][0] -> GetMean(); v2_neg[i] = sqrt(cmean); errmean = c2_neg[i][0] -> GetMeanError(); variance_neg = (errmean*errmean)/(4*cmean); //difference v2_diff[i] = (v2_neg[i] - v2_pos[i])/(v2_neg[i] + v2_pos[i]); sum = v2_pos[i] + v2_neg[i]; variance_diff = (4*v2_neg[i]*v2_neg[i]*variance_pos)/(sum*sum*sum*sum)+(4*v2_pos[i]*v2_pos[i]*variance_neg)/(sum*sum*sum*sum); //error bars err_pos[i] = sqrt(variance_pos); err_neg[i] = sqrt(variance_neg); err_diff[i] = sqrt(variance_diff); } cout << low << upp << endl; for(i=0;i<NAchBins;i++){ cout << x[i] << ", "; } cout << endl << "v2" << endl; for(i=0;i<NAchBins;i++){ cout << v2_diff[i] << ", "; } cout << endl << "v2 error" <<endl; for(i=0;i<NAchBins;i++){ cout << "error is: " << err_pos[i] << endl; } gStyle->SetLegendFont(42); TH1D* base = new TH1D("base","base",1,-0.3,0.3); //pPb //base->GetYaxis()->SetRangeUser(0.065, 0.075); //PbPb base->GetYaxis()->SetRangeUser(0.018, 0.03); base->GetXaxis()->SetTitle("Observed A_{ch}"); base->GetYaxis()->SetTitle("v_{3}{2}"); base->GetXaxis()->CenterTitle(); base->GetYaxis()->CenterTitle(); base->SetTitleSize (0.040,"X"); base->SetTitleOffset(1.4,"X"); base->SetTitleFont (42,"X"); base->SetLabelOffset(0.006,"X"); base->SetLabelSize (0.040,"X"); base->SetLabelFont (42 ,"X"); base->SetTitleSize (0.040,"Y"); base->SetTitleOffset(2.2,"Y"); base->SetTitleFont (42,"Y"); base->SetLabelOffset(0.006,"Y"); base->SetLabelSize (0.040,"Y"); base->SetLabelFont (42 ,"Y"); base->SetLineWidth(0); TH1D* base2 = new TH1D("base2","base2",1,-0.4,0.4); base2->GetYaxis()->SetRangeUser(-0.06, 0.06); base2->GetXaxis()->SetTitle("Observed A_{ch}"); base2->GetYaxis()->SetTitle(" #frac{ v_{3}^{#minus} #minus v_{3}^{#plus} }{ v_{3}^{#minus} #plus v_{3}^{#plus} } "); base2->GetXaxis()->CenterTitle(); base2->GetYaxis()->CenterTitle(); base2->SetTitleSize (0.040,"X"); base2->SetTitleOffset(1.4,"X"); base2->SetTitleFont (42,"X"); base2->SetLabelOffset(0.006,"X"); base2->SetLabelSize (0.040,"X"); base2->SetLabelFont (42 ,"X"); base2->SetTitleSize (0.040,"Y"); base2->SetTitleOffset(2.0,"Y"); base2->SetTitleFont (42,"Y"); base2->SetLabelOffset(0.006,"Y"); base2->SetLabelSize (0.040,"Y"); base2->SetLabelFont (42 ,"Y"); base2->SetLineWidth(0); TFile *rebinned = new TFile("~/Summer2016/root_forgraphs/figure2_1.root","RECREATE"); TGraphErrors *gr_pos = new TGraphErrors(NAchBins,x,v2_pos,NULL,err_pos); TGraphErrors *gr_neg = new TGraphErrors(NAchBins,x,v2_neg,NULL,err_neg); TGraphErrors *gr_diff = new TGraphErrors(NAchBins,x,v2_diff,NULL,err_diff); gr_pos->Write(); gr_neg->Write(); gr_diff->Write(); // TCanvas* c1 = new TCanvas("c1","c1"); // TCanvas* c2 = new TCanvas("c2","c2"); TCanvas* c3 = new TCanvas("c3","c3",1,1,1200,600); c3->Divide(2,1,0.01,0.01); gr_neg -> SetMarkerStyle(20); gr_neg -> SetMarkerColor(kBlue); gr_pos -> SetMarkerStyle(34); gr_pos -> SetMarkerColor(kRed); TLatex* text_a = makeLatex("CMS PbPb #sqrt{s_{NN}}=5.02TeV",0.25,0.85) ; //TLatex* text_b = makeLatex("185 #leq N_{trk}^{offline} < 260",0.25,0.80) ; TLatex* text_c = makeLatex("0.3 < p_{T} < 3 GeV/c",0.25,0.75) ; TLatex* text_d = makeLatex("|#Delta#eta| > 2",0.25,0.70) ; text_a->SetTextFont(42); text_b->SetTextFont(42); text_c->SetTextFont(42); text_d->SetTextFont(42); TLegend* leg = new TLegend(0.76,0.80,0.94,.88); leg->SetLineColor(kWhite); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(gr_pos, "v_{3}^{#plus}{2}","p"); leg->AddEntry(gr_neg , "v_{3}^{#minus}{2}","p"); c3->cd(1); base->Draw(""); gr_pos->Draw("PSame"); gr_neg->Draw("PSame"); //text_a->DrawClone("Same"); text_b->DrawClone("Same"); //text_c->DrawClone("Same"); //text_d->DrawClone("Same"); leg->DrawClone("Same"); //Define a linear function TF1* fit1 = new TF1("f1", "[0]+x*[1]", -0.2, 0.2); fit1->SetLineColor(kRed); fit1->SetLineStyle(2); gr_diff->Fit(fit1,"N0"); fit1->Write(); rebinned->Close(); c3->cd(2); TLatex* text2 = makeLatex(Form("Intercept : %f #pm %f",fit1->GetParameter(0),fit1->GetParError(0)),0.45,0.30) ; TLatex* text1 = makeLatex(Form("slope : %.3f #pm %.3f",fit1->GetParameter(1),fit1->GetParError(1)),0.45,0.25) ; text1->SetTextFont(42); text2->SetTextFont(42); base2->Draw(""); fit1->DrawClone("Same"); gr_diff->SetMarkerStyle(20); gr_diff->Draw("PSame"); //text_a->DrawClone("Same"); text_b->DrawClone("Same"); text1->DrawClone("Same"); text2->DrawClone("Same"); TF1 *fa1 = new TF1("fa1","0",-10,10); fa1->SetLineColor(kBlack); fa1->SetLineWidth(0); fa1->DrawClone("Same"); TLegend* leg2 = new TLegend(0.25,0.68,0.5,0.78); leg2->SetLineColor(kWhite); leg2->SetFillColor(0); leg2->SetFillStyle(0); leg2->AddEntry(fit1, "Linear fit","l"); leg2->AddEntry(gr_diff , "data","p"); leg2->DrawClone("Same"); SaveCanvas(c3,"pics",Form("PbPb_crosscheck_v3_%d_%d",low,upp)); }