void canvas_write() { //just in case this script is executed multiple times delete gROOT->GetListOfFiles()->FindObject("hsimple.root"); delete gROOT->GetListOfCanvases()->FindObject("c1"); gBenchmark->Start("ntuple1"); // // Connect ROOT histogram/ntuple demonstration file // generated by example hsimple.C. TFile *f1 = new TFile("hsimple.root"); // // Create a canvas, with 4 pads // TCanvas *c1 = new TCanvas("c1","The Ntuple canvas",200,10,700,780); TPad *pad1 = new TPad("pad1","This is pad1",0.02,0.52,0.48,0.98,21); TPad *pad2 = new TPad("pad2","This is pad2",0.52,0.52,0.98,0.98,21); TPad *pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.48,0.48,21); TPad *pad4 = new TPad("pad4","This is pad4",0.52,0.02,0.98,0.48,1); pad1->Draw(); pad2->Draw(); pad3->Draw(); pad4->Draw(); // // Change default style for the statistics box gStyle->SetStatW(0.30); gStyle->SetStatH(0.20); gStyle->SetStatColor(42); // // Display a function of one ntuple column imposing a condition // on another column. pad1->cd(); pad1->SetGrid(); pad1->SetLogy(); pad1->GetFrame()->SetFillColor(15); TNtuple *ntuple = (TNtuple*)f1->Get("ntuple"); ntuple->SetLineColor(1); ntuple->SetFillStyle(1001); ntuple->SetFillColor(45); ntuple->Draw("3*px+2","px**2+py**2>1"); ntuple->SetFillColor(38); ntuple->Draw("2*px+2","pz>2","same"); ntuple->SetFillColor(5); ntuple->Draw("1.3*px+2","(px^2+py^2>4) && py>0","same"); pad1->RedrawAxis(); // // Display the profile of two columns // The profile histogram produced is saved in the current directory with // the name hprofs pad2->cd(); pad2->SetGrid(); pad2->GetFrame()->SetFillColor(32); ntuple->Draw("pz:px>>hprofs","","goffprofs"); TProfile *hprofs = (TProfile*)gDirectory->Get("hprofs"); hprofs->SetMarkerColor(5); hprofs->SetMarkerSize(0.7); hprofs->SetMarkerStyle(21); hprofs->Fit("pol2"); // Get pointer to fitted function and modify its attributes TF1 *fpol2 = hprofs->GetFunction("pol2"); fpol2->SetLineWidth(4); fpol2->SetLineColor(2); // // Display a scatter plot of two columns with a selection. // Superimpose the result of another cut with a different marker color pad3->cd(); pad3->GetFrame()->SetFillColor(38); pad3->GetFrame()->SetBorderSize(8); ntuple->SetMarkerColor(1); ntuple->Draw("py:px","pz>1"); ntuple->SetMarkerColor(2); ntuple->Draw("py:px","pz<1","same"); // // Display a 3-D scatter plot of 3 columns. Superimpose a different selection. pad4->cd(); ntuple->Draw("pz:py:px","(pz<10 && pz>6)+(pz<4 && pz>3)"); ntuple->SetMarkerColor(4); ntuple->Draw("pz:py:px","pz<6 && pz>4","same"); ntuple->SetMarkerColor(5); ntuple->Draw("pz:py:px","pz<4 && pz>3","same"); TPaveText *l4 = new TPaveText(-0.9,0.5,0.9,0.95); l4->SetFillColor(42); l4->SetTextAlign(12); l4->AddText("You can interactively rotate this view in 2 ways:"); l4->AddText(" - With the RotateCube in clicking in this pad"); l4->AddText(" - Selecting View with x3d in the View menu"); l4->Draw(); // c1->cd(); c1->Update(); gStyle->SetStatColor(19); gBenchmark->Show("ntuple1"); TSQLFile* fsql1 = new TSQLFile(dbname, "recreate", username, userpass); if (fsql1->IsZombie()) { delete fsql1; return; } // changing TSQLFile configuration, you may improve speed // of reading or writing object to/from sql database // fsql1->SetUseSuffixes(kFALSE); // fsql1->SetArrayLimit(1000); // fsql1->SetUseIndexes(1); // fsql1->SetTablesType("ISAM"); // fsql1->SetUseTransactions(kFALSE); // Unncomment this line to see all SQL commands in log file // fsql1->StartLogFile("canvas.log"); gBenchmark->Start("writeSQL"); c1->Write("Canvas"); gBenchmark->Show("writeSQL"); delete fsql1; }
void plotPhotonType(char* var="(ecalRecHitSumEtConeDR04+hcalTowerSumEtConeDR04):genCalIsoDR04") { TCut allCut = simpleCut + hardScatterCut; TProfile *hTemplate; TProfile *htmp= new TProfile("htmp","",100,0,20); htmp->SetXTitle("genCalIso [GeV]"); htmp->SetYTitle("recCalIso [GeV]"); hTemplate= getPlot(htmp,var,allCut,"MPA_PhotonJetPt15_31X.root","Analysis"); hTemplate->SetName("hTemplate"); hTemplate->Draw(); gStyle->SetOptFit(11111); hTemplate->Fit("pol1","",""); TF1* f1 = hTemplate->GetFunction("pol1"); float p0 = f1->GetParameter(0); float p1 = f1->GetParameter(1); char tempName[1000]; sprintf(tempName, "((ecalRecHitSumEtConeDR04+hcalTowerSumEtConeDR04)-genCalIsoDR04*%f):((ecalRecHitSumEtConeDR04+hcalTowerSumEtConeDR04)-genCalIsoDR04*(%f))",p1,-1.0/p1); cout << tempName << endl; TProfile *hTemplate_decompos; const int nbin=50; const float min = 0.0; const float max = 10.0; TProfile *htmp2= new TProfile("htmp2","",nbin,min,max); hTemplate_decompos= getPlot(htmp2,tempName,allCut,"MPA_PhotonJetPt15_31X.root","Analysis"); hTemplate_decompos->SetName("hTemplate_decompos"); hTemplate_decompos->Draw(); hTemplate_decompos->SetYTitle(Form("recCalIso-genCalIso*%.2f",p1)); hTemplate_decompos->SetXTitle(Form("recCalIso+genCalIso*%.2f",1.0/p1)); gStyle->SetOptFit(11111); // hTemplate_decompos->Fit("pol1"); TCanvas* c1 = new TCanvas("c1","",500,1000); c1->Divide(1,2); c1->cd(1); hTemplate->Draw(""); c1->cd(2); hTemplate_decompos->SetErrorOption("S"); hTemplate_decompos->Draw(""); c1->Print("bestGenCalIsoDR04.eps"); c1->Print("bestGenCalIsoDR04.gif"); TCanvas* c2 = new TCanvas("c2","",500,1000); c2->Divide(1,2); c2->cd(1); TH1F* hMean = new TH1F("hMean","",nbin,min,max); hMean->SetXTitle(Form("recCalIso+genCalIso*%.2f",1.0/p1)); hMean->SetTitleSize(0.06,"Y"); hMean->SetTitleOffset(1.2,"Y"); hMean->SetYTitle(Form("Mean of recCalIso-genCalIso*%.2f",p1)); for(int i=1; i <= nbin; i++) hMean->SetBinContent(i,hTemplate_decompos->GetBinContent(i)); hMean->Draw(); c2->cd(2); TH1F* hRMS = new TH1F("hRMS","",nbin,min,max); hRMS->SetXTitle(Form("recCalIso+genCalIso*%.2f",1.0/p1)); hRMS->SetTitleSize(0.06,"Y"); hRMS->SetTitleOffset(1.2,"Y"); hRMS->SetYTitle(Form("RMS of recCalIso-genCalIso*%.2f",p1)); for(int i=1; i <= nbin; i++) hRMS->SetBinContent(i,hTemplate_decompos->GetBinError(i)); hRMS->Draw(); c2->Print("bestGenCalIsoDR04_sup.eps"); c2->Print("bestGenCalIsoDR04_sup.gif"); int bestDeComposXBin = 11; float bestDeComposX = hMean->GetBinCenter(bestDeComposXBin); float bestDeComposY = hMean->GetBinContent(bestDeComposXBin); cout << "bestDeComposX = " << bestDeComposX << endl; cout << "bestDeComposY = " << bestDeComposY << endl; float bestGenIso = (bestDeComposX - bestDeComposY)/((1.0)/p1 + p1); float bestRecIso = bestDeComposX - (1.0/p1) * bestGenIso; cout << "bestGenIso = " << bestGenIso << endl; cout << "bestRecIso = " << bestRecIso << endl; }
void ntuple1() { //Small tree analysis script // To see the output of this macro, click begin_html <a href="gif/ntuple1.gif">here</a> end_html //Author:: Rene Brun //just in case this script is executed multiple times delete gROOT->GetListOfFiles()->FindObject("hsimple.root"); delete gROOT->GetListOfCanvases()->FindObject("c1"); gBenchmark->Start("ntuple1"); // // Connect ROOT histogram/ntuple demonstration file // generated by example $ROOTSYS/tutorials/hsimple.C. TFile *f1 = TFile::Open("hsimple.root"); if (!f1) return; // // Create a canvas, with 4 pads // TCanvas *c1 = new TCanvas("c1","The Ntuple canvas",200,10,700,780); TPad *pad1 = new TPad("pad1","This is pad1",0.02,0.52,0.48,0.98,21); TPad *pad2 = new TPad("pad2","This is pad2",0.52,0.52,0.98,0.98,21); TPad *pad3 = new TPad("pad3","This is pad3",0.02,0.02,0.48,0.48,21); TPad *pad4 = new TPad("pad4","This is pad4",0.52,0.02,0.98,0.48,1); pad1->Draw(); pad2->Draw(); pad3->Draw(); pad4->Draw(); // // Change default style for the statistics box gStyle->SetStatW(0.30); gStyle->SetStatH(0.20); gStyle->SetStatColor(42); // // Display a function of one ntuple column imposing a condition // on another column. pad1->cd(); pad1->SetGrid(); pad1->SetLogy(); pad1->GetFrame()->SetFillColor(15); TNtuple *ntuple = (TNtuple*)f1->Get("ntuple"); ntuple->SetLineColor(1); ntuple->SetFillStyle(1001); ntuple->SetFillColor(45); ntuple->Draw("3*px+2","px**2+py**2>1"); ntuple->SetFillColor(38); ntuple->Draw("2*px+2","pz>2","same"); ntuple->SetFillColor(5); ntuple->Draw("1.3*px+2","(px^2+py^2>4) && py>0","same"); pad1->RedrawAxis(); // // Display the profile of two columns // The profile histogram produced is saved in the current directory with // the name hprofs pad2->cd(); pad2->SetGrid(); pad2->GetFrame()->SetFillColor(32); ntuple->Draw("pz:px>>hprofs","","goffprofs"); TProfile *hprofs = (TProfile*)gDirectory->Get("hprofs"); hprofs->SetMarkerColor(5); hprofs->SetMarkerSize(0.7); hprofs->SetMarkerStyle(21); hprofs->Fit("pol2"); // Get pointer to fitted function and modify its attributes TF1 *fpol2 = hprofs->GetFunction("pol2"); fpol2->SetLineWidth(4); fpol2->SetLineColor(2); // // Display a scatter plot of two columns with a selection. // Superimpose the result of another cut with a different marker color pad3->cd(); pad3->GetFrame()->SetFillColor(38); pad3->GetFrame()->SetBorderSize(8); ntuple->SetMarkerColor(1); ntuple->Draw("py:px","pz>1"); ntuple->SetMarkerColor(2); ntuple->Draw("py:px","pz<1","same"); // // Display a 3-D scatter plot of 3 columns. Superimpose a different selection. pad4->cd(); ntuple->Draw("pz:py:px","(pz<10 && pz>6)+(pz<4 && pz>3)"); ntuple->SetMarkerColor(4); ntuple->Draw("pz:py:px","pz<6 && pz>4","same"); ntuple->SetMarkerColor(5); ntuple->Draw("pz:py:px","pz<4 && pz>3","same"); TPaveText *l4 = new TPaveText(-0.9,0.5,0.9,0.95); l4->SetFillColor(42); l4->SetTextAlign(12); l4->AddText("You can interactively rotate this view in 2 ways:"); l4->AddText(" - With the RotateCube in clicking in this pad"); l4->AddText(" - Selecting View with x3d in the View menu"); l4->Draw(); // c1->cd(); c1->Update(); gStyle->SetStatColor(19); gBenchmark->Show("ntuple1"); }
void draw_clouds_profiles() { // gROOT->ProcessLine(".L ../utils.C"); // gROOT->ProcessLine(".L AliLRCFit.cxx"); TFile *f[8]; // f[0] = new TFile( "output_classesByV0M_LHC10h.root" ); // f[0] = new TFile( "output_classesByV0M_LHC10h_c10_5_1.root" ); f[0] = new TFile( "output_classesByV0M_LHC10h_c10_5_25_1_05.root" ); // f[0] = new TFile( "output_classesByV0M_LHC11h_FemtoPlus_c10_5_CUT_OUTLIERS.root" ); // f[0] = new TFile( "output_classesByV0M_LHC15o_fieldMM_c10_5_CUT_OUTLIERS.root" ); // f[0] = new TFile( "output_classesByV0M_LHC15o_fieldPP_c10_5_CUT_OUTLIERS.root" ); // const int nCW = 2; //nCentrWidths // const double cWidths[nCW] = { 10, 5 }; //width of the centrality bins // const double cStep[nCW] = { 5, 2.5 }; //centrality bins step // const int nCentrBins[nCW] = { 17, 35 }; //n centrality bins // const int nCW = 3; //nCentrWidths // const double cWidths[nCW] = { 10, 5, 1.0 }; //width of the centrality bins // const double cStep[nCW] = { 5, 2.5, 1.0 }; //centrality bins step // const int nCentrBins[nCW] = { 17, 35, 90 }; //n centrality bins // const int nCW = 4; //nCentrWidths // const double cWidths[nCW] = { 10, 5, 1.0, 0.5 }; //width of the centrality bins // const double cStep[nCW] = { 5, 2.5, 1.0, 1.0 }; //centrality bins step // const int nCentrBins[nCW] = { 17, 35, 90, 90 }; //n centrality bins const int nCW = 5; //nCentrWidths const double cWidths[nCW] = { 10, 5, 2.5, 1.0, 0.5 }; //width of the centrality bins const double cStep[nCW] = { 5, 2.5, 2.5, 1.0, 1.0 }; //centrality bins step const int nCentrBins[nCW] = { 17, 35, 36, 90, 90 }; //n centrality bins TH2D *hist2D;//[200][3]; TProfile *profile;//[200][3]; int cW = 2; int etaW = 1; int phiW = 0; const int kCorrType = 1; //0-NN, 1-PtPt, 2-PtN TCanvas *canv_tmp_for_fit = new TCanvas("canv_tmp_for_fit","canv_tmp_for_fit",50,50,300,300 ); TCanvas *canv_2D_clouds = new TCanvas("canv_2D_clouds","canv_2D_clouds",150,250,1400,600 ); tuneCanvas(canv_2D_clouds); canv_2D_clouds->Divide(2,1); gStyle->SetOptStat( kFALSE ); TGraph *grFromFit2D = new TGraph; bool firstDraw = true; // for ( int cBin = 0; cBin < nCentrBins[cW]; cBin++ ) for ( int cBin = nCentrBins[cW]-1; cBin >= 0; cBin-- ) { if (cBin%2!=0) continue; // cout << "cBin=" << cBin << endl; float cBinMin = cStep[cW] * cBin; float cBinMax = cWidths[cW] + cStep[cW] * cBin; // ##### pad 1 - clouds tunePad( canv_2D_clouds->cd(1) ); if ( kCorrType == 0 ) { hist2D = (TH2D*)f[0]->Get( Form("hist2D_NN_c%.1f-%.1f_etaW_%d_phiW_%d", cBinMin, cBinMax, etaW, phiW) ); hist2D->SetTitle( ""); hist2D->GetXaxis()->SetTitle( "N_{ch} Forward"); hist2D->GetYaxis()->SetTitle( "N_{ch} Backward"); hist2D->GetXaxis()->SetRangeUser(0,650); hist2D->GetYaxis()->SetRangeUser(0,650); } else if ( kCorrType == 1 ) { hist2D = (TH2D*)f[0]->Get( Form("hist2D_PtPt_c%.1f-%.1f_etaW_%d_phiW_%d", cBinMin, cBinMax, etaW, phiW) ); hist2D->SetTitle( ""); hist2D->GetXaxis()->SetTitle( "#LTp_{T}#GT Forward"); hist2D->GetYaxis()->SetTitle( "#LTp_{T}#GT Backward"); } hist2D->SetMarkerColor(kOrange-9+cBin); tuneHist2D_onPad(hist2D); hist2D->GetXaxis()->CenterTitle(); hist2D->GetYaxis()->CenterTitle(); // removeBinsWithFewEntries(hist2D); hist2D->DrawCopy( firstDraw ? "" : "same" ); // ##### pad 2 - profiles tunePad( canv_2D_clouds->cd(2) ); profile = hist2D->ProfileX(); //(TProfile*)f[0]->Get( Form("hist2D_c%.1f-%.1f_etaW_%d_phiW_%d_pfx", cBinMin, cBinMax, etaW, phiW) ); if ( kCorrType == 0 ) { profile->SetTitle( ""); profile->GetYaxis()->SetTitle( "#LTN_{ch}#GT Backward"); profile->GetXaxis()->SetRangeUser(0,650); profile->GetYaxis()->SetRangeUser(0,650); } else if ( kCorrType == 1 ) { profile->SetTitle( ""); profile->GetYaxis()->SetTitle( "#LT#LTp_{T}#GT#GT Backward"); } profile->SetLineColor(kOrange-9+cBin); profile->SetMarkerStyle(7); tuneProfile_onPad( profile ); profile->GetYaxis()->CenterTitle(); deleteProfileEmptyBinErrors(profile); canv_tmp_for_fit->cd(); profile->Fit("pol1","Q");//,"",0.25,1.2);//,"N"); canv_2D_clouds->cd(2); TF1 *fit = profile->GetFunction("pol1"); Double_t p0 = fit->GetParameter(0); Double_t p1 = fit->GetParameter(1); grFromFit2D->SetPoint(grFromFit2D->GetN(), (cBinMax+cBinMin)/2, p1); double meanX = hist2D->ProjectionX()->GetMean(); double rmsX = hist2D->ProjectionX()->GetRMS(); fit->SetRange( meanX-3*rmsX, meanX+3*rmsX ); fit->SetLineColorAlpha( kRed, 0.6 ); fit->Draw("same"); profile->DrawCopy( firstDraw ? "" : "same" ); firstDraw = false; } TGraphErrors *grByFormula; /*[cW][etaW]*/ if ( kCorrType == 0 ) { grByFormula = (TGraphErrors*)f[0]->Get( Form( "grNN_c%d_eta%d", cW, etaW ) ); } else if ( kCorrType == 1 ) { grByFormula = (TGraphErrors*)f[0]->Get( Form( "grPtPt_c%d_eta%d", cW, etaW ) ); } TCanvas *canv_GrCoeff = new TCanvas("canv_GrCoeff","canv_GrCoeff",20,150,900,700 ); grByFormula->Draw("APL"); grFromFit2D->SetLineColor(kRed); grFromFit2D->DrawClone("PL"); return; TGraphErrors *gr[10][10]; for ( int cW = 0; cW < 2; cW++ ) for ( int etaW = 0; etaW < 3; etaW++ ) gr[cW][etaW] = (TGraphErrors*)f[0]->Get( Form( "grPtPt_c%d_eta%d", cW, etaW ) ); drawGraph( gr[1][0], 24, kBlack, "APL" ); drawGraph( gr[0][0], 20, kBlack, "PL" ); // drawGraph( gr[1][1], 24, kBlue, "PL" ); // drawGraph( gr[0][1], 20, kBlue, "PL" ); // drawGraph( gr[1][2], 24, kGreen, "PL" ); // drawGraph( gr[0][2], 20, kGreen, "PL" ); //// drawGraph( gr[6], 24, kRed, "PL" ); // drawGraph( gr[7], 20, kRed, "PL" ); f[1] = new TFile( "output_histos_graphs_LHC15o_fieldMM.root" ); TGraphErrors *grMM[10][10]; for ( int cW = 0; cW < 2; cW++ ) for ( int etaW = 0; etaW < 3; etaW++ ) grMM[cW][etaW] = (TGraphErrors*)f[1]->Get( Form( "grPtPt_c%d_eta%d", cW, etaW ) ); drawGraph( grMM[1][0], 24, kGreen, "PL" ); drawGraph( grMM[0][0], 20, kGreen, "PL" ); // drawGraph( grMM[1][1], 24, kRed, "PL" ); // drawGraph( grMM[0][1], 20, kRed, "PL" ); // drawGraph( grMM[1][2], 24, kGreen, "PL" ); // drawGraph( grMM[0][2], 20, kGreen, "PL" ); // gROOT->ProcessLine( ".q"); }