void DemoTable::CreateDemoView(view::View* container) { view::GridLayout* layout = new view::GridLayout(container); container->SetLayoutManager(layout); std::vector<ui::TableColumn> columns; columns.push_back(ui::TableColumn(0, ASCIIToUTF16("Fruit"), ui::TableColumn::LEFT, 100)); columns.push_back(ui::TableColumn(1, ASCIIToUTF16("Color"), ui::TableColumn::CENTER, 100)); columns.push_back(ui::TableColumn(2, ASCIIToUTF16("Origin"), ui::TableColumn::LEFT, 100)); columns.push_back(ui::TableColumn(3, ASCIIToUTF16("Price"), ui::TableColumn::RIGHT, 100)); const int options = (view::TableView2::SINGLE_SELECTION | view::TableView2::RESIZABLE_COLUMNS | view::TableView2::AUTOSIZE_COLUMNS | view::TableView2::HORIZONTAL_LINES | view::TableView2::VERTICAL_LINES); table_view2_ = new view::TableView2(this, columns, view::ICON_AND_TEXT, options); table_view2_->SetObserver(this); column1_visible_checkbox_ = new view::Checkbox(L"Fruit column visible"); column1_visible_checkbox_->SetChecked(true); column1_visible_checkbox_->set_listener(this); icon1_.setConfig(SkBitmap::kARGB_8888_Config, 16, 16); icon1_.allocPixels(); SkCanvas canvas1(icon1_); canvas1.drawColor(SK_ColorRED); icon2_.setConfig(SkBitmap::kARGB_8888_Config, 16, 16); icon2_.allocPixels(); SkCanvas canvas2(icon2_); canvas2.drawColor(SK_ColorBLUE); view::ColumnSet* column_set = layout->AddColumnSet(0); column_set->AddColumn(view::GridLayout::FILL, view::GridLayout::FILL, 1, view::GridLayout::USE_PREF, 0, 0); layout->StartRow(1, 0); layout->AddView(table_view2_); column_set = layout->AddColumnSet(1); column_set->AddColumn(view::GridLayout::FILL, view::GridLayout::FILL, 0.5f, view::GridLayout::USE_PREF, 0, 0); column_set->AddColumn(view::GridLayout::FILL, view::GridLayout::FILL, 0.5f, view::GridLayout::USE_PREF, 0, 0); layout->StartRow(0, 1); layout->AddView(column1_visible_checkbox_); }
void DimuonPlots(TString pluginSuffix = ""){ // Specify all input files TFile* a_file[nFiles]; for(size_t iFile=0; iFile<nFiles; ++iFile) a_file[iFile]=0; a_file[0]=new TFile(inpath->Copy().Append("data/allData.root")); //a_file[1]=new TFile(inpath->Copy().Append("mc/zmumu.root")); a_file[1]=new TFile(inpath->Copy().Append("mc/zmumuB.root")); a_file[2]=new TFile(inpath->Copy().Append("mc/zmumuUdsc.root")); a_file[3]=new TFile(inpath->Copy().Append("mc/zz.root")); a_file[4]=new TFile(inpath->Copy().Append("mc/wz.root")); a_file[5]=new TFile(inpath->Copy().Append("mc/ww.root")); a_file[6]=new TFile(inpath->Copy().Append("mc/ztautau.root")); a_file[7]=new TFile(inpath->Copy().Append("mc/wmunu.root")); a_file[8]=new TFile(inpath->Copy().Append("mc/wtaunu.root")); a_file[9]=new TFile(inpath->Copy().Append("mc/singletopTw.root")); a_file[10]=new TFile(inpath->Copy().Append("mc/ttbar.root")); a_file[11]=new TFile(inpath->Copy().Append("mc/qcd.root")); //Specify plugin name TString* pluginName(0); pluginName = new TString("DiMuonAnalyzer"); TString* pluginFolder(0); pluginFolder = new TString("OppositeCharge"); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Do not touch this area pluginName->Append(pluginSuffix); if(!pluginName->IsNull())pluginName->Append("/"); if(!pluginFolder->IsNull())pluginFolder->Append("/"); HistogramTools tools; tools.SetDefaultStyle(); TCanvas* canvas1(0); TLegend* legend1(0); TH1F* a_hist1[nFiles]; for(size_t iFile=0; iFile<nFiles; ++iFile) a_hist1[iFile]=0; TH1F* a_hist2[nFiles]; // For addition of histograms for(size_t iFile=0; iFile<nFiles; ++iFile) a_hist2[iFile]=0; THStack* stack1(0); TString* histName1(0); TString* histName2(0); // For addition of histograms TString* plotName1(0); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_nDimuon"); // Give base name of output plot plotName1 = new TString("nDimuon"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_deltaEta"); // Give base name of output plot plotName1 = new TString("deltaEta"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_deltaPhi"); // Give base name of output plot plotName1 = new TString("deltaPhi"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_diMass"); // Give base name of output plot plotName1 = new TString("diMass"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_diPt"); // Give base name of output plot plotName1 = new TString("diPt"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_diY"); // Give base name of output plot plotName1 = new TString("diY"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_etaHigh"); // Give base name of output plot plotName1 = new TString("etaHigh"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_etaLow"); // Give base name of output plot plotName1 = new TString("etaLow"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_etaLow"); // Give name of second input histogram for addition histName2 = new TString("h_etaHigh"); // Give base name of output plot plotName1 = new TString("etaBoth"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName2, a_hist2); tools.AddHistArrays(a_hist1, a_hist2); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->SetTitle("pseudorapidity of both muons"); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete histName2; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist2[iFile])a_hist2[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_ptHigh"); // Give base name of output plot plotName1 = new TString("ptHigh"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_ptLow"); // Give base name of output plot plotName1 = new TString("ptLow"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("h_ptLow"); // Give name of second input histogram for addition histName2 = new TString("h_ptHigh"); // Give base name of output plot plotName1 = new TString("ptBoth"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName2, a_hist2); tools.AddHistArrays(a_hist1, a_hist2); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->SetTitle("transverse momentum p_{t} of both muons"); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete histName2; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist2[iFile])a_hist2[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // again, no changes here delete pluginFolder; delete pluginName; for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_file[iFile])a_file[iFile]->Close(); } //delete inpath; //delete outpath; //delete outform; }
void MuonPlots(TString pluginSuffix = ""){ // Specify all input files TFile* a_file[nFiles]; for(size_t iFile=0; iFile<nFiles; ++iFile) a_file[iFile]=0; a_file[0]=new TFile(inpath->Copy().Append("data/allData.root")); //a_file[1]=new TFile(inpath->Copy().Append("mc/zmumu.root")); a_file[1]=new TFile(inpath->Copy().Append("mc/zmumuB.root")); a_file[2]=new TFile(inpath->Copy().Append("mc/zmumuUdsc.root")); a_file[3]=new TFile(inpath->Copy().Append("mc/zz.root")); a_file[4]=new TFile(inpath->Copy().Append("mc/wz.root")); a_file[5]=new TFile(inpath->Copy().Append("mc/ww.root")); a_file[6]=new TFile(inpath->Copy().Append("mc/ztautau.root")); a_file[7]=new TFile(inpath->Copy().Append("mc/wmunu.root")); a_file[8]=new TFile(inpath->Copy().Append("mc/wtaunu.root")); a_file[9]=new TFile(inpath->Copy().Append("mc/singletopTw.root")); a_file[10]=new TFile(inpath->Copy().Append("mc/ttbar.root")); a_file[11]=new TFile(inpath->Copy().Append("mc/qcd.root")); //Specify plugin name TString* pluginName(0); pluginName = new TString("MuonAnalyzer"); TString* pluginFolder(0); pluginFolder = new TString(""); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Do not touch this area pluginName->Append(pluginSuffix); if(!pluginName->IsNull())pluginName->Append("/"); if(!pluginFolder->IsNull())pluginFolder->Append("/"); HistogramTools tools; tools.SetDefaultStyle(); TCanvas* canvas1(0); TLegend* legend1(0); TH1F* a_hist1[nFiles]; for(size_t iFile=0; iFile<nFiles; ++iFile) a_hist1[iFile]=0; THStack* stack1(0); TString* histName1(0); TString* plotName1(0); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("EventProperties/h_nMuon"); // Give base name of output plot plotName1 = new TString("nMuon"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_chi2"); // Give base name of output plot plotName1 = new TString("chi2"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_d0Beamspot"); // Give base name of output plot plotName1 = new TString("d0Beamspot"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_eta"); // Give base name of output plot plotName1 = new TString("eta"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_isGlobal"); // Give base name of output plot plotName1 = new TString("isGlobal"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_isTracker"); // Give base name of output plot plotName1 = new TString("isTracker"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_nMatches"); // Give base name of output plot plotName1 = new TString("nMatches"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_nMuonHitsGlobal"); // Give base name of output plot plotName1 = new TString("nMuonHitsGlobal"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_nPixelHits"); // Give base name of output plot plotName1 = new TString("nPixelHits"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_nTrackerHits"); // Give base name of output plot plotName1 = new TString("nTrackerHits"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_pt"); // Give base name of output plot plotName1 = new TString("pt"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_isoCombRel"); // Give base name of output plot plotName1 = new TString("isoCombRel"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); stack1->GetXaxis()->SetRangeUser(0.,3.); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("MuonProperties/h_isoTrk"); // Give base name of output plot plotName1 = new TString("isoTrk"); // Change position & size of legend legend1 = new TLegend(0.65,0.55,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArray(a_file, pluginName->Copy().Append(*pluginFolder), *histName1, a_hist1); tools.SetPlotFilling(a_hist1); tools.SetWeights(a_hist1, dataLumi); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1); // If you want to set maximum by hand, else use function and scale // stack1->SetMaximum(30); stack1->SetMaximum(tools.GetMaximumValue(stack1, a_hist1[0]) *1.2); tools.FillLegend(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); if(a_hist1[0]){ a_hist1[0]->Draw("same,e1"); } legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); stack1->SetMinimum(0.01); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_hist1[iFile])a_hist1[iFile]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // again, no changes here delete pluginFolder; delete pluginName; for(size_t iFile=0; iFile<nFiles; ++iFile){ if(a_file[iFile])a_file[iFile]->Close(); } //delete inpath; //delete outpath; //delete outform; }
// Make sure our blits are invariant with the width of the blit (i.e. that // special case for 8 at a time have the same results as narrower blits) static void test_diagonal(skiatest::Reporter* reporter) { static const int W = 64; static const int H = W; static const SkBitmap::Config gDstConfig[] = { SkBitmap::kARGB_8888_Config, SkBitmap::kRGB_565_Config, // SkBitmap::kARGB_4444_Config, // SkBitmap::kA8_Config, }; static const SkColor gDstBG[] = { 0, 0xFFFFFFFF }; SkPaint paint; SkBitmap srcBM; srcBM.setConfig(SkBitmap::kARGB_8888_Config, W, H); srcBM.allocPixels(); SkRect srcR = { 0, 0, SkIntToScalar(srcBM.width()), SkIntToScalar(srcBM.height()) }; // cons up a mesh to draw the bitmap with Mesh mesh(srcBM, &paint); for (size_t i = 0; i < SK_ARRAY_COUNT(gDstConfig); i++) { SkBitmap dstBM0, dstBM1; dstBM0.setConfig(gDstConfig[i], W, H); dstBM1.setConfig(gDstConfig[i], W, H); dstBM0.allocPixels(); dstBM1.allocPixels(); SkCanvas canvas0(dstBM0); SkCanvas canvas1(dstBM1); SkColor bgColor; for (size_t j = 0; j < SK_ARRAY_COUNT(gDstBG); j++) { bgColor = gDstBG[j]; for (int c = 0; c <= 0xFF; c++) { srcBM.eraseARGB(0xFF, c, c, c); for (int k = 0; k < 4; k++) { bool dither = (k & 1) != 0; uint8_t alpha = (k & 2) ? 0x80 : 0xFF; paint.setDither(dither); paint.setAlpha(alpha); dstBM0.eraseColor(bgColor); dstBM1.eraseColor(bgColor); canvas0.drawRect(srcR, paint); mesh.draw(&canvas1, &paint); if (!gOnce && false) { save_bm(dstBM0, "drawBitmap.png"); save_bm(dstBM1, "drawMesh.png"); gOnce = true; } if (memcmp(dstBM0.getPixels(), dstBM1.getPixels(), dstBM0.getSize())) { SkString str; str.printf("Diagonal config=%s bg=0x%x dither=%d alpha=0x%x src=0x%x", gConfigName[gDstConfig[i]], bgColor, dither, alpha, c); reporter->reportFailed(str); } } } } } }
void GeneratorZmumuPlots(TString pluginSuffix = ""){ // Specify all input files TFile* file; file = new TFile(inpath->Copy().Append("simulation/generatorTopZmumu.root")); //file = new TFile(inpath->Copy().Append("generatorTopZmumuSelection.root")); //Specify plugin name TString* pluginName(0); pluginName = new TString("GeneratorZmumuAnalyzer"); TString* a_flavour[nFlavour]; for(size_t iFlavour=0; iFlavour<nFlavour; ++iFlavour) a_flavour[iFlavour]=0; a_flavour[1] = new TString(""); //a_flavour[2] = new TString("C"); //a_flavour[3] = new TString("B"); TString* pluginFolder(0); pluginFolder = new TString(""); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Do not touch this area if(!pluginFolder->IsNull())pluginFolder->Append("/"); TString* a_baseString[nFlavour]; for(size_t iFlavour=0; iFlavour<nFlavour; ++iFlavour) a_baseString[iFlavour]=0; for(size_t iFlavour=0; iFlavour<nFlavour; ++iFlavour){ // do not use array [0] if(!a_flavour[iFlavour])continue; const TString flavour(*a_flavour[iFlavour]); a_baseString[iFlavour] = new TString(pluginName->Copy().Append(flavour).Append(pluginSuffix).Append("/").Append(*pluginFolder)); } //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Do not touch this area HistogramTools tools; //tools.SetDefaultStyle(); // for publications tdr style is used setTDRStyle(); TGaxis::SetMaxDigits(3); TCanvas* canvas1(0); TLegend* legend1(0); TH1F* a_hist1[nFlavour]; // do not use array [0] for(size_t iFlavour=0; iFlavour<nFlavour; ++iFlavour) a_hist1[iFlavour]=0; TH1F* a_hist2[nFlavour]; // For addition of histograms for(size_t iFlavour=0; iFlavour<nFlavour; ++iFlavour) a_hist2[iFlavour]=0; THStack* stack1(0); TString* histName1(0); TString* histName2(0); // For addition of histograms TString* plotName1(0); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("GeneratedZ/h_zMass"); // Give base name of output plot plotName1 = new TString("Z_mass"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("GeneratedZ/h_zEta"); // Give base name of output plot plotName1 = new TString("Z_eta"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("GeneratedZ/h_zY"); // Give base name of output plot plotName1 = new TString("Z_y"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("GeneratedZ/h_zPt"); // Give base name of output plot plotName1 = new TString("Z_pt"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("GeneratedZ/h_zQuarkOrigin"); // Give base name of output plot plotName1 = new TString("Z_quarkOrigin"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muEtaHigh"); // Give base name of output plot plotName1 = new TString("mu_etaHigh"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muEtaLow"); // Give base name of output plot plotName1 = new TString("mu_etaLow"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muEtaLow"); // Give name of second input histogram for addition histName2 = new TString("SingleMu/h_muEtaHigh"); // Give base name of output plot plotName1 = new TString("mu_etaBoth"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1, nFlavour); tools.GetHistArraySameFile(file, a_baseString, *histName2, a_hist2, nFlavour); tools.AddHistArrays(a_hist1, a_hist2, nFlavour); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->SetTitle("pseudorapidity #eta of both muons"); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete histName2; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist2[iHist])a_hist2[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muPtHigh"); // Give base name of output plot plotName1 = new TString("mu_ptHigh"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muPtLow"); // Give base name of output plot plotName1 = new TString("mu_ptLow"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("SingleMu/h_muPtLow"); // Give name of second input histogram for addition histName2 = new TString("SingleMu/h_muPtHigh"); // Give base name of output plot plotName1 = new TString("mu_ptBoth"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1, nFlavour); tools.GetHistArraySameFile(file, a_baseString, *histName2, a_hist2, nFlavour); tools.AddHistArrays(a_hist1, a_hist2, nFlavour); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->SetTitle("transverse momentum p_{t} of both muons"); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete histName2; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist2[iHist])a_hist2[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("DiMu/h_diMuMass"); // Give base name of output plot plotName1 = new TString("diMu_mass"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("DiMu/h_diMuEta"); // Give base name of output plot plotName1 = new TString("diMu_eta"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("DiMu/h_diMuPt"); // Give base name of output plot plotName1 = new TString("diMu_pt"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("Difference/h_diffMass"); // Give base name of output plot plotName1 = new TString("diff_mass"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("Difference/h_diffEta"); // Give base name of output plot plotName1 = new TString("diff_eta"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram histName1 = new TString("Difference/h_diffPt"); // Give base name of output plot plotName1 = new TString("diff_pt"); // Change position & size of legend legend1 = new TLegend(0.85,0.75,0.99,0.95); // Change only style here canvas1 = new TCanvas("plot", "plot", 800, 800); tools.GetHistArraySameFile(file, a_baseString, *histName1, a_hist1); tools.SetPlotFilling(a_hist1, nFlavour); stack1 = new THStack("stack","stack"); tools.FillStack(stack1, a_hist1, nFlavour); tools.FillLegendGenerator(legend1, a_hist1, "f"); canvas1->Clear(); stack1->Draw(); //legend1->Draw("same"); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append(*outform)); gPad->SetLogy(1); canvas1->Update(); canvas1->Print(outpath->Copy().Append(*plotName1).Append(pluginSuffix).Append("_log").Append(*outform)); delete histName1; delete plotName1; legend1->Delete(); stack1->Delete(); for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_hist1[iHist])a_hist1[iHist]->Delete(); } canvas1->Close(); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // Next few lines are only one to change for histo (except for individual style changes) // Give name of input histogram // histName1 = new TString("Difference/h2_zMassVsDiMuMass"); // Give base name of output plot // plotName1 = new TString("diff_2d_mass"); //++++++++++++++++++++++++++++++++++=====================================+++++++++++++++++++++++++++++++ // again, no changes here for(size_t iHist=0; iHist<nFlavour; ++iHist){ if(a_flavour[iHist])delete a_flavour[iHist]; } delete pluginFolder; delete pluginName; file->Close(); // do not delete as long as they are defined outside function //delete inpath; //delete outpath; //delete outform; }