TCanvas* plotHists(TH1* hist1, TH1* hist2, TString title="", TString xTitle="", TString yTitle="", TString label1="", TString label2="", bool areaNormalize=false) { vector<TH1*> histogramsToPlot; histogramsToPlot.push_back( hist1 ); histogramsToPlot.push_back( hist2 ); vector<TString> histogramLabels; histogramLabels.push_back( label1 ); histogramLabels.push_back( label2 ); TCanvas* c1 = plotHists(histogramsToPlot, histogramLabels, title, xTitle, yTitle, areaNormalize); return c1; }
void decovspeak(bool printgif = false){ //load macros and set style----------------------------------- //gROOT->SetStyle("Plain"); gStyle->SetPalette(1); //gStyle->SetOptStat("mr"); //gStyle->SetOptFit(0); gStyle->SetOptStat(0); int colors[] = {2,4,6,1}; vector<char*> filenames; vector<char*> types; //filenames.push_back("crabjobs/lpc/Commissioning10-GOODCOLL-v8_mintrkmom1_ALLPEAK/merged.root"); filenames.push_back("Commissioning10-GOODCOLL-v8_ALLPEAK/res/merged.root"); //filenames.push_back("crabjobs/lpc/Commissioning10-GOODCOLL-v8_mintrkmom1_copy/merged_2.root"); filenames.push_back("Commissioning10-GOODCOLL-v8/res/merged.root"); filenames.push_back("Commissioning10-GOODCOLL-v8_toblatebp06/res/merged.root"); //filenames.push_back("crabjobs/lpc/Spring10-START3X_V26A_356ReReco-v1_standard_geom_mintrkmom1/merged.root"); //filenames.push_back("crabjobs/lpc/Spring10-START3X_V26A_356ReReco-v1_standard_geom/merged.root"); //filenames.push_back("crabjobs/lpc/Commissioning10-GOODCOLL-v8_mintrkmom1_toblatebp063/merged.root"); types.push_back("peak"); types.push_back("deco"); types.push_back("deco (BP)"); //types.push_back("MC"); vector<char*> cantitles; //cantitles.push_back("du_dw"); //delta u, delta w TH1s //cantitles.push_back("duvsdth"); //v+/- split du vs. delta tan(theta) TH2s cantitles.push_back("duvsdth_tgraph"); //v+/- split du vs. delta tan(theta) TGraphs const unsigned int nfiles = filenames.size(); const unsigned int ncan = cantitles.size(); TCanvas *can[ncan]; int idx = 0; TFile* file[nfiles]; TH1F* hdu[nfiles]; TH1F* hdw[nfiles]; TH2F* hduthp[nfiles]; TH2F* hduthm[nfiles]; //dummy legend TLegend *leg1=new TLegend(0.15,0.65,0.35,0.85); for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ TH1F *hdummy=new TH1F(Form("hdummy_%i",ifile),Form("hdummy_%i",ifile),1,0,1); hdummy->SetLineColor(colors[ifile]); hdummy->SetMarkerColor(colors[ifile]); leg1->AddEntry(hdummy,types.at(ifile)); } leg1->SetBorderSize(1); leg1->SetFillColor(0); cout << "Getting histos... " << endl; for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ cout << "Opening " << types.at(ifile) <<" file " << filenames.at(ifile) << endl; file[ifile] = TFile::Open(filenames.at(ifile)); hdu[ifile] = (TH1F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/du_TOB"); hdw[ifile] = (TH1F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/dw_TOB"); // if( strcmp(types.at(ifile),"deco (BP)") == 0){ hduthp[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wp_all"); TH2F* htp = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wm_all"); hduthp[ifile] -> Add(htp); hduthm[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wp_all"); TH2F* htm = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wm_all"); hduthm[ifile] -> Add(htm); // }else{ // hduthp[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wp"); // TH2F* htp = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wm"); // hduthp[ifile] -> Add(htp); // hduthm[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wp"); // TH2F* htm = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wm"); // hduthm[ifile] -> Add(htm); // } } cout << "Plotting du, dw histos... " << endl; if(draw("du_dw",cantitles)){ can[idx]=new TCanvas(Form("can_%i",idx),"du_dw",1200,450); can[idx]->Divide(2,1); can[idx]->cd(1); setStats(hdu,nfiles,0.8,0.65,0.15); plotHists(hdu,nfiles,"TOB","#Delta u [#mum]",-1000,1000,10,3); leg1->Draw(); can[idx]->cd(2); setStats(hdw,nfiles,0.8,0.65,0.15); plotHists(hdw,nfiles,"TOB","#Delta w [#mum]",-2000,2000,10,3); leg1->Draw(); idx++; } cout << "Plotting du vs. delta tan theta split v+/v- histos... " << endl; //du vs. delta tan(theta) split v+/v- histos----------------------------------- if(draw("duvsdth",cantitles)){ can[idx]=new TCanvas(cantitles.at(idx),cantitles.at(idx),1200,450*nfiles); can[idx]->Divide(nfiles,2); for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ plotHistsTH2(hduthp[ifile], Form("TOB %s (v+)",types.at(ifile)),"tan(#theta_{trk})-tan(#theta_{L})", "#Delta u [#mum]",-0.3,0.5,-200,200,0,can[idx],ifile+1); plotHistsTH2(hduthm[ifile], Form("TOB %s (v-)",types.at(ifile)),"tan(#theta_{trk})-tan(#theta_{L})", "#Delta u [#mum]",-0.5,0.3,-200,200,0,can[idx],ifile+2); } idx++; } cout << "Plotting du vs. delta tan theta split v+/v- TGraphs... " << endl; //TGraph du vs. delta tan theta---------------------------------------- if(draw("duvsdth_tgraph",cantitles)){ can[idx]=new TCanvas(cantitles.at(idx),cantitles.at(idx),1200,450); can[idx]->Divide(2,1); vector<float> thetabinsp; vector<float> thetabinsm; for(int ibin=14;ibin<=30;ibin++) thetabinsp.push_back(ibin*0.05-1); for(int ibin=10;ibin<=26;ibin++) thetabinsm.push_back(ibin*0.05-1); TLatex *t=new TLatex(); t->SetNDC(); TGraphErrors *gduthp[nfiles]; TGraphErrors *gduthm[nfiles]; TF1 *fduthp[nfiles]; TF1 *fduthm[nfiles]; stringstream sduthp1[nfiles]; stringstream sduthp2[nfiles]; stringstream sduthm1[nfiles]; stringstream sduthm2[nfiles]; bool fit = false; for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++ ){ can[idx]->cd(1); hduthp[ifile]->SetName(Form("hduthp_%i",ifile)); gduthp[ifile] = getTGraphFromTH2(hduthp[ifile],thetabinsp, colors[ifile] ); fduthp[ifile]=new TF1(Form("fduthp_%i",ifile),"pol1"); fduthp[ifile]->SetLineColor( colors[ifile] ); if(fit) gduthp[ifile]->Fit(fduthp[ifile]); float dwp = fduthp[ifile]->GetParameter(1); float dwperr = fduthp[ifile]->GetParError(1); float bp = fduthp[ifile]->GetParameter(0); float bperr = fduthp[ifile]->GetParError(0); sduthp1[ifile] << "#DeltaW = " << fround(dwp,3) << " #pm " << fround(dwperr,3) << " #mum" << endl; sduthp2[ifile] << "#Deltatan(LA) = " << fround(bp/(235.-dwp),3) << " #pm " << fround(bperr/(235.-dwp),4) << endl; gduthp[ifile]->SetTitle("TOB (V+)"); gduthp[ifile]->Draw("AP"); gduthp[ifile]->GetXaxis()->SetTitle("<tan(#theta_{trk})-tan(#theta_{LA})>"); gduthp[ifile]->GetYaxis()->SetTitle("<#Deltau> [#mum]"); //gduthp[ifile]->GetXaxis()->SetLimits(-1,1); gduthp[ifile]->SetMinimum(-25); gduthp[ifile]->SetMaximum(20); can[idx]->cd(2); hduthm[ifile]->SetName(Form("hduthm_%i",ifile)); gduthm[ifile] = getTGraphFromTH2(hduthm[ifile],thetabinsm, colors[ifile] ); fduthm[ifile]=new TF1(Form("fduthm_%i",ifile),"pol1"); fduthm[ifile]->SetLineColor( colors[ifile] ); if(fit) gduthm[ifile]->Fit(fduthm[ifile]); float dwm = fduthm[ifile]->GetParameter(1); float dwmerr = fduthm[ifile]->GetParError(1); float bm = fduthm[ifile]->GetParameter(0); float bmerr = fduthm[ifile]->GetParError(0); sduthm1[ifile] << "#DeltaW = " << fround(dwm,3) << " #pm " << fround(dwmerr,3) << " #mum" << endl; sduthm2[ifile] << "#Deltatan(LA) = " << fround(bm/(235.-dwm),3) << " #pm " << fround(bmerr/(235.-dwm),4) << endl; gduthm[ifile]->SetTitle("TOB (V-)"); gduthm[ifile]->Draw("AP"); gduthm[ifile]->GetXaxis()->SetTitle("<tan(#theta_{trk})-tan(#theta_{LA})>"); gduthm[ifile]->GetYaxis()->SetTitle("<#Deltau> [#mum]"); //gduthm[ifile]->GetXaxis()->SetLimits(-1,1); gduthm[ifile]->SetMinimum(-35); gduthm[ifile]->SetMaximum(15); //leg1->Draw(); } for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++ ){ can[idx]->cd(1); if( ifile == 0 ) gduthp[ifile]->Draw("AP"); else gduthp[ifile]->Draw("sameP"); leg1->Draw(); if(fit){ t->SetTextColor( colors[ifile] ); t->DrawLatex(0.15,0.85-ifile*0.2,sduthp1[ifile].str().c_str()); t->DrawLatex(0.15,0.75-ifile*0.2,sduthp2[ifile].str().c_str()); } can[idx]->cd(2); if( ifile == 0 ) gduthm[ifile]->Draw("AP"); else gduthm[ifile]->Draw("sameP"); //leg1->Draw(); if(fit){ t->SetTextColor( colors[ifile] ); t->DrawLatex(0.15,0.85-ifile*0.2,sduthm1[ifile].str().c_str()); t->DrawLatex(0.15,0.75-ifile*0.2,sduthm2[ifile].str().c_str()); } } TCanvas *cdiff = new TCanvas("cdiff","duvsdtanthetadiff",1200,450); cdiff->Divide(2,1); cdiff->cd(1); TGraphErrors *gduthpdiff = diffTGraph(gduthp[0],gduthp[2],"TOB DECO - PEAK (v+)","<tan(#theta_{trk})-tan(#theta_{LA})>","<#Deltau> (#mum)"); TF1* fduthpdiff=new TF1("fduthpdiff","pol1",-0.5,0.5); gduthpdiff->Fit(fduthpdiff,"R"); gduthpdiff->Draw("AP"); float dwp = fduthpdiff->GetParameter(1); float dwperr = fduthpdiff->GetParError(1); float bp = fduthpdiff->GetParameter(0); float bperr = fduthpdiff->GetParError(0); stringstream sduthp1diff; stringstream sduthp2diff; sduthp1diff << "#DeltaW = " << fround(dwp,3) << " #pm " << fround(dwperr,3) << " #mum" << endl; sduthp2diff << "#Deltatan(LA) = " << fround(bp/(235.-dwp),3) << " #pm " << fround(bperr/(235.-dwp),4) << endl; t->SetTextColor(1); t->DrawLatex(0.15,0.85,sduthp1diff.str().c_str()); t->DrawLatex(0.15,0.75,sduthp2diff.str().c_str()); cdiff->cd(2); TGraphErrors *gduthmdiff = diffTGraph(gduthm[0],gduthm[2],"TOB DECO - PEAK (v-)","<tan(#theta_{trk})-tan(#theta_{LA})>","<#Deltau> (#mum)"); TF1* fduthmdiff=new TF1("fduthmdiff","pol1",-0.5,0.5); gduthmdiff->Fit(fduthmdiff,"R"); gduthmdiff->Draw("AP"); float dwm = fduthmdiff->GetParameter(1); float dwmerr = fduthmdiff->GetParError(1); float bm = fduthmdiff->GetParameter(0); float bmerr = fduthmdiff->GetParError(0); stringstream sduthm1diff; stringstream sduthm2diff; sduthm1diff << "#DeltaW = " << fround(dwm,3) << " #pm " << fround(dwmerr,3) << " #mum" << endl; sduthm2diff << "#Deltatan(LA) = " << fround(bm/(235.-dwm),3) << " #pm " << fround(bmerr/(235.-dwm),4) << endl; t->DrawLatex(0.15,0.85,sduthm1diff.str().c_str()); t->DrawLatex(0.15,0.75,sduthm2diff.str().c_str()); idx++; } for(unsigned int ican=0;ican<ncan;ican++){ can[ican]->Modified(); can[ican]->Update(); if(printgif) can[ican]->Print(Form("plots/%s_TOB.gif",cantitles.at(ican))); } }
void decovspeak(bool printgif = false){ //load macros and set style----------------------------------- //gROOT->SetStyle("Plain"); gStyle->SetPalette(1); //gStyle->SetOptStat("mr"); //gStyle->SetOptFit(0); gStyle->SetOptStat(0); int colors[] = {2,4,6,1}; vector<string> filenames; vector<string> types; //-----------files--------------------- filenames.push_back("MinimumBias_Commissioning10-GOODCOLL-Jun9thSkim_v1_PEAK/res/merged.root"); filenames.push_back("MinimumBias_Commissioning10-GOODCOLL-Jun9thSkim_v1/res/merged.root"); types.push_back("peak"); types.push_back("deco"); //----------variables to plot---------- vector<string> cantitles; //cantitles.push_back("du_dw"); //delta u, delta w TH1s //cantitles.push_back("duvsdth"); //v+/- split du vs. delta tan(theta) TH2s //cantitles.push_back("duvsdth_tgraph"); //v+/- split du vs. delta tan(theta) TGraphs cantitles.push_back("dwTEC"); //dw histos for TEC ring/zside/petalside const unsigned int nfiles = filenames.size(); const unsigned int ncan = cantitles.size(); TCanvas *can[ncan]; int idx = 0; TFile* file[nfiles]; TH1F* hdu[nfiles]; TH1F* hdw[nfiles]; TH2F* hduthp[nfiles]; TH2F* hduthm[nfiles]; //dummy legend TLegend *leg1=new TLegend(0.15,0.65,0.35,0.85); for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ TH1F *hdummy=new TH1F(Form("hdummy_%i",ifile),Form("hdummy_%i",ifile),1,0,1); hdummy->SetLineColor(colors[ifile]); hdummy->SetMarkerColor(colors[ifile]); leg1->AddEntry(hdummy,types.at(ifile).c_str()); } leg1->SetBorderSize(1); leg1->SetFillColor(0); cout << "Getting histos... " << endl; for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ cout << "Opening " << types.at(ifile) <<" file " << filenames.at(ifile) << endl; file[ifile] = TFile::Open(filenames.at(ifile).c_str()); hdu[ifile] = (TH1F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/du_TOB"); hdw[ifile] = (TH1F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/dw_TOB"); hduthp[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wp_all"); TH2F* htp = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vp_wm_all"); hduthp[ifile] -> Add(htp); hduthm[ifile] = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wp_all"); TH2F* htm = (TH2F*) file[ifile]->Get("PeakDecoResiduals/PeakDecoResiduals/duvsdtantheta_TOB_vm_wm_all"); hduthm[ifile] -> Add(htm); } if(draw("dwTEC",cantitles)){ gStyle->SetOptFit(11); TCanvas *dwTEC_can[2][2]; TH1F* hdw_TEC[2][2][7]; TF1* hgaus[2][2][7]; float mean[2][2][7]; float meanerr[2][2][7]; TGraphErrors *g00[nfiles]; TGraphErrors *g01[nfiles]; TGraphErrors *g10[nfiles]; TGraphErrors *g11[nfiles]; can[idx]=new TCanvas(Form("can_%i",idx),"du_dw",1200,600); can[idx]->Divide(2,1); for( unsigned int ifile = 0 ; ifile < nfiles ; ++ifile ){ for(int i=0;i<2;i++){ for(int j=0;j<2;j++){ dwTEC_can[i][j] = new TCanvas(Form("dwTEC_can_%i_%i",i,j),"",1200,600); dwTEC_can[i][j]->Divide(4,2); for(int k=0;k<7;k++){ dwTEC_can[i][j]->cd(k+1); hdw_TEC[i][j][k] = (TH1F*) file[ifile]->Get(Form("PeakDecoResiduals/PeakDecoResiduals/hdw_TEC_z%i_petal%i_ring%i_stereo0",i,j,k+1)); hgaus[i][j][k] = new TF1(Form("gaus_%i_%i_%i",i,j,k+1),"gaus",-500,500); hgaus[i][j][k] -> SetLineColor(2); hdw_TEC[i][j][k]->Rebin(10); hdw_TEC[i][j][k]->Draw(); hdw_TEC[i][j][k]->Fit( hgaus[i][j][k] ,"R"); mean[i][j][k] = hgaus[i][j][k]->GetParameter(1); meanerr[i][j][k] = hgaus[i][j][k]->GetParError(1); } } } can[idx]->cd(ifile+1); float ring[7]; float ringerr[7]; float mean00[7]; float mean01[7]; float mean10[7]; float mean11[7]; float meanerr00[7]; float meanerr01[7]; float meanerr10[7]; float meanerr11[7]; for(int k=0;k<7;k++){ ring[k] = k + 1; mean00[k] = mean[0][0][k]; mean01[k] = mean[0][1][k]; mean10[k] = mean[1][0][k]; mean11[k] = mean[1][1][k]; ringerr[k] = 0; meanerr00[k] = meanerr[0][0][k]; meanerr01[k] = meanerr[0][1][k]; meanerr10[k] = meanerr[1][0][k]; meanerr11[k] = meanerr[1][1][k]; } g00[ifile] = new TGraphErrors(7,ring,mean00,ringerr,meanerr00); g00[ifile]->SetMarkerStyle(20); g00[ifile]->GetXaxis()->SetTitle("Ring"); g00[ifile]->GetYaxis()->SetTitle("<#Deltaw> (#mum)"); g00[ifile]->SetTitle(Form("MinBias data (%s)",types.at(ifile).c_str())); g00[ifile]->SetMinimum(-50); g00[ifile]->SetMaximum(50); g00[ifile]->Draw("AP"); g01[ifile] = new TGraphErrors(7,ring,mean01,ringerr,meanerr01); g01[ifile]->SetMarkerStyle(20); g01[ifile]->SetMarkerColor(2); g01[ifile]->SetLineColor(2); g01[ifile]->Draw("sameP"); g10[ifile] = new TGraphErrors(7,ring,mean10,ringerr,meanerr10); g10[ifile]->SetMarkerStyle(20); g10[ifile]->SetMarkerColor(4); g10[ifile]->SetLineColor(4); g10[ifile]->Draw("sameP"); g11[ifile] = new TGraphErrors(7,ring,mean11,ringerr,meanerr11); g11[ifile]->SetMarkerStyle(20); g11[ifile]->SetMarkerColor(6); g11[ifile]->SetLineColor(6); g11[ifile]->Draw("sameP"); TLegend *leg=new TLegend(0.15,0.7,0.35,0.9); leg->AddEntry(g00[ifile],"Z- back-petal","p"); leg->AddEntry(g01[ifile],"Z- front-petal","p"); leg->AddEntry(g10[ifile],"Z+ back-petal","p"); leg->AddEntry(g11[ifile],"Z+ front-petal","p"); leg->SetBorderSize(1); leg->SetFillColor(0); leg->Draw(); } if( nfiles > 1 ){ TCanvas *dwdiff = new TCanvas("dwdiff","dwdiff",600,600); dwdiff->cd(); TGraphErrors *gdiff00 = diffTGraph(g00[0],g00[1],"MinBias data deco-peak", "Ring", "<#Deltaw> (#mum)"); gdiff00->SetMarkerStyle(20); gdiff00->SetMinimum(-25); gdiff00->SetMaximum(25); gdiff00->Draw("AP"); TGraphErrors *gdiff01 = diffTGraph(g01[0],g01[1],"MinBias data deco-peak", "Ring", "<#Deltaw> (#mum)"); gdiff01->SetMarkerStyle(20); gdiff01->SetMarkerColor(2); gdiff01->SetLineColor(2); gdiff01->Draw("sameP"); TGraphErrors *gdiff10 = diffTGraph(g10[0],g10[1],"MinBias data deco-peak", "Ring", "<#Deltaw> (#mum)"); gdiff10->SetMarkerStyle(20); gdiff10->SetMarkerColor(4); gdiff10->SetLineColor(4); gdiff10->Draw("sameP"); TGraphErrors *gdiff11 = diffTGraph(g11[0],g11[1],"MinBias data deco-peak", "Ring", "<#Deltaw> (#mum)"); gdiff11->SetMarkerStyle(20); gdiff11->SetMarkerColor(6); gdiff11->SetLineColor(6); gdiff11->Draw("sameP"); } } if(draw("du_dw",cantitles)){ cout << "Plotting du, dw histos... " << endl; can[idx]=new TCanvas(Form("can_%i",idx),"du_dw",1200,450); can[idx]->Divide(2,1); can[idx]->cd(1); setStats(hdu,nfiles,0.8,0.65,0.15); plotHists(hdu,nfiles,"TOB","#Delta u [#mum]",-1000,1000,10,3); leg1->Draw(); can[idx]->cd(2); setStats(hdw,nfiles,0.8,0.65,0.15); plotHists(hdw,nfiles,"TOB","#Delta w [#mum]",-2000,2000,10,3); leg1->Draw(); idx++; } //du vs. delta tan(theta) split v+/v- histos----------------------------------- if(draw("duvsdth",cantitles)){ cout << "Plotting du vs. delta tan theta split v+/v- histos... " << endl; can[idx]=new TCanvas(cantitles.at(idx).c_str(),cantitles.at(idx).c_str(),1200,450*nfiles); can[idx]->Divide(nfiles,2); for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++){ plotHistsTH2(hduthp[ifile], Form("TOB %s (v+)",types.at(ifile).c_str()),"tan(#theta_{trk})-tan(#theta_{L})", "#Delta u [#mum]",-0.3,0.5,-200,200,0,can[idx],ifile+1); plotHistsTH2(hduthm[ifile], Form("TOB %s (v-)",types.at(ifile).c_str()),"tan(#theta_{trk})-tan(#theta_{L})", "#Delta u [#mum]",-0.5,0.3,-200,200,0,can[idx],ifile+2); } idx++; } //TGraph du vs. delta tan theta---------------------------------------- if(draw("duvsdth_tgraph",cantitles)){ cout << "Plotting du vs. delta tan theta split v+/v- TGraphs... " << endl; can[idx]=new TCanvas(cantitles.at(idx).c_str(),cantitles.at(idx).c_str(),1200,450); can[idx]->Divide(2,1); vector<float> thetabinsp; vector<float> thetabinsm; for(int ibin=14;ibin<=30;ibin++) thetabinsp.push_back(ibin*0.05-1); for(int ibin=10;ibin<=26;ibin++) thetabinsm.push_back(ibin*0.05-1); TLatex *t=new TLatex(); t->SetNDC(); TGraphErrors *gduthp[nfiles]; TGraphErrors *gduthm[nfiles]; TF1 *fduthp[nfiles]; TF1 *fduthm[nfiles]; stringstream sduthp1[nfiles]; stringstream sduthp2[nfiles]; stringstream sduthm1[nfiles]; stringstream sduthm2[nfiles]; bool fit = false; for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++ ){ can[idx]->cd(1); hduthp[ifile]->SetName(Form("hduthp_%i",ifile)); gduthp[ifile] = getTGraphFromTH2(hduthp[ifile],thetabinsp, colors[ifile] ); fduthp[ifile]=new TF1(Form("fduthp_%i",ifile),"pol1"); fduthp[ifile]->SetLineColor( colors[ifile] ); if(fit) gduthp[ifile]->Fit(fduthp[ifile]); float dwp = fduthp[ifile]->GetParameter(1); float dwperr = fduthp[ifile]->GetParError(1); float bp = fduthp[ifile]->GetParameter(0); float bperr = fduthp[ifile]->GetParError(0); sduthp1[ifile] << "#DeltaW = " << fround(dwp,3) << " #pm " << fround(dwperr,3) << " #mum" << endl; sduthp2[ifile] << "#Deltatan(LA) = " << fround(bp/(235.-dwp),3) << " #pm " << fround(bperr/(235.-dwp),4) << endl; gduthp[ifile]->SetTitle("TOB (V+)"); gduthp[ifile]->Draw("AP"); gduthp[ifile]->GetXaxis()->SetTitle("<tan(#theta_{trk})-tan(#theta_{LA})>"); gduthp[ifile]->GetYaxis()->SetTitle("<#Deltau> [#mum]"); //gduthp[ifile]->GetXaxis()->SetLimits(-1,1); gduthp[ifile]->SetMinimum(-25); gduthp[ifile]->SetMaximum(20); can[idx]->cd(2); hduthm[ifile]->SetName(Form("hduthm_%i",ifile)); gduthm[ifile] = getTGraphFromTH2(hduthm[ifile],thetabinsm, colors[ifile] ); fduthm[ifile]=new TF1(Form("fduthm_%i",ifile),"pol1"); fduthm[ifile]->SetLineColor( colors[ifile] ); if(fit) gduthm[ifile]->Fit(fduthm[ifile]); float dwm = fduthm[ifile]->GetParameter(1); float dwmerr = fduthm[ifile]->GetParError(1); float bm = fduthm[ifile]->GetParameter(0); float bmerr = fduthm[ifile]->GetParError(0); sduthm1[ifile] << "#DeltaW = " << fround(dwm,3) << " #pm " << fround(dwmerr,3) << " #mum" << endl; sduthm2[ifile] << "#Deltatan(LA) = " << fround(bm/(235.-dwm),3) << " #pm " << fround(bmerr/(235.-dwm),4) << endl; gduthm[ifile]->SetTitle("TOB (V-)"); gduthm[ifile]->Draw("AP"); gduthm[ifile]->GetXaxis()->SetTitle("<tan(#theta_{trk})-tan(#theta_{LA})>"); gduthm[ifile]->GetYaxis()->SetTitle("<#Deltau> [#mum]"); //gduthm[ifile]->GetXaxis()->SetLimits(-1,1); gduthm[ifile]->SetMinimum(-35); gduthm[ifile]->SetMaximum(15); //leg1->Draw(); } for(unsigned int ifile = 0 ; ifile < nfiles ; ifile++ ){ can[idx]->cd(1); if( ifile == 0 ) gduthp[ifile]->Draw("AP"); else gduthp[ifile]->Draw("sameP"); leg1->Draw(); if(fit){ t->SetTextColor( colors[ifile] ); t->DrawLatex(0.15,0.85-ifile*0.2,sduthp1[ifile].str().c_str()); t->DrawLatex(0.15,0.75-ifile*0.2,sduthp2[ifile].str().c_str()); } can[idx]->cd(2); if( ifile == 0 ) gduthm[ifile]->Draw("AP"); else gduthm[ifile]->Draw("sameP"); //leg1->Draw(); if(fit){ t->SetTextColor( colors[ifile] ); t->DrawLatex(0.15,0.85-ifile*0.2,sduthm1[ifile].str().c_str()); t->DrawLatex(0.15,0.75-ifile*0.2,sduthm2[ifile].str().c_str()); } } if( filenames.size() > 1 ){ TCanvas *cdiff = new TCanvas("cdiff","duvsdtanthetadiff",1200,450); cdiff->Divide(2,1); cdiff->cd(1); TGraphErrors *gduthpdiff = diffTGraph(gduthp[0],gduthp[1],"TOB DECO - PEAK (v+)","<tan(#theta_{trk})-tan(#theta_{LA})>","<#Deltau> (#mum)"); TF1* fduthpdiff=new TF1("fduthpdiff","pol1",-0.5,0.5); gduthpdiff->Fit(fduthpdiff,"R"); gduthpdiff->Draw("AP"); float dwp = fduthpdiff->GetParameter(1); float dwperr = fduthpdiff->GetParError(1); float bp = fduthpdiff->GetParameter(0); float bperr = fduthpdiff->GetParError(0); stringstream sduthp1diff; stringstream sduthp2diff; sduthp1diff << "#DeltaW = " << fround(dwp,3) << " #pm " << fround(dwperr,3) << " #mum" << endl; sduthp2diff << "#Deltatan(LA) = " << fround(bp/(235.-dwp),3) << " #pm " << fround(bperr/(235.-dwp),4) << endl; t->SetTextColor(1); t->DrawLatex(0.15,0.85,sduthp1diff.str().c_str()); t->DrawLatex(0.15,0.75,sduthp2diff.str().c_str()); cdiff->cd(2); TGraphErrors *gduthmdiff = diffTGraph(gduthm[0],gduthm[1],"TOB DECO - PEAK (v-)","<tan(#theta_{trk})-tan(#theta_{LA})>","<#Deltau> (#mum)"); TF1* fduthmdiff=new TF1("fduthmdiff","pol1",-0.5,0.5); gduthmdiff->Fit(fduthmdiff,"R"); gduthmdiff->Draw("AP"); float dwm = fduthmdiff->GetParameter(1); float dwmerr = fduthmdiff->GetParError(1); float bm = fduthmdiff->GetParameter(0); float bmerr = fduthmdiff->GetParError(0); stringstream sduthm1diff; stringstream sduthm2diff; sduthm1diff << "#DeltaW = " << fround(dwm,3) << " #pm " << fround(dwmerr,3) << " #mum" << endl; sduthm2diff << "#Deltatan(LA) = " << fround(bm/(235.-dwm),3) << " #pm " << fround(bmerr/(235.-dwm),4) << endl; t->DrawLatex(0.15,0.85,sduthm1diff.str().c_str()); t->DrawLatex(0.15,0.75,sduthm2diff.str().c_str()); idx++; } } for(unsigned int ican=0;ican<ncan;ican++){ can[ican]->Modified(); can[ican]->Update(); if(printgif) can[ican]->Print(Form("plots/%s_TOB.gif",cantitles.at(ican).c_str())); } }