TCanvas *plot(const char *name, const char *filename, const char* title, int logy, double xmin, double xmax, double ymin, double ymax, int nRebin, double lumi, TString draw="", TString cut="", int nbins=100, const TH1D *putarget=0, bool stack = kTRUE) { // use logarithmic scale? //TCanvas *canvas = MitStyle::MakeCanvas("c","c"); TCanvas *canvas = new TCanvas; canvas->SetLogy(logy); // read all environment variables TString home = getEnv("HOME"); TString mitHgg = getEnv("MIT_HGG_DIR"); TString hstDir = getEnv("MIT_ANA_HIST"); TString anaCfg = getEnv("MIT_ANA_CFG"); TString prdCfg = getEnv("MIT_PROD_CFG"); // define sample TaskSamples* samples = new TaskSamples(prdCfg.Data(),hstDir.Data()); samples->SetNameTxt(anaCfg.Data()); samples->ReadFile((mitHgg + TString("/config")).Data()); // plot what we want PlotTask *plotTask = new PlotTask(samples,lumi); plotTask->SetPuTarget(putarget); // adjust ranges if needed if (xmin!=0) plotTask->SetHistXMinimum(xmin); if (xmax!=0) plotTask->SetHistXMaximum(xmax); if (ymin!=0) plotTask->SetHistMinimum(ymin); if (ymax>0) plotTask->SetHistMaximum(ymax); // rebinning plotTask->SetNRebin (nRebin); plotTask->SetNBins(nbins); plotTask->SetDrawExp(draw,cut); // set the titles plotTask->SetAxisTitles(title,"Number of Events"); if (stack) plotTask->PlotStack("",name); else plotTask->PlotContributions("",name); canvas->SaveAs((TString(filename)+TString(".eps")).Data()); return canvas; }
//================================================================================================== void makeRawPlot(double lumi = 19700.0, int mode = 0, TString variable = "metRaw", int icut = 0, int nBins = 60, float min = 200, float max = 800, bool varbins = false) { // Create raw plots for further analysis (limits) or plotting // set the folder containing the input ntuples properly // here you can change the plot sources, i.e. the list of samples to be processed // and the location of the input flat trees gSystem->Setenv("MIT_ANA_CFG","boostedv-plots"); //gSystem->Setenv("MIT_ANA_HIST","/mnt/hscratch/dimatteo/boostedv-v9/merged/"); gSystem->Setenv("MIT_ANA_HIST","/scratch4/dimatteo/cms/hist/boostedv-v10/merged-test/"); // setup graphics stuff before starting MitStyle::Init(); // plot from TTree TString nTuple = "DMSTree"; printf("\n Looking at tree (%s)\n",nTuple.Data()); // predefined cuts TString orC(" || "); TString andC(" && "); // trigger and preselection cuts TString eventWeight = "(puweight)*("; //remember to put the parenthesis back in- TString monoJetTrigger = "((trigger & (1<<0)) || (trigger & (1<<1)))"; TString singleMuTrigger = "(trigger & (1<<2))"; TString singlePhTrigger = "(trigger & (1<<3))"; TString metFiltersCut = "(metFiltersWord == 511 || metFiltersWord == 1023)"; //all MET filters applied but the loose beam halo TString preselCutsZnunu = "(preselWord & (1<<3))"; //signal region preselection TString preselCutsZll = "(preselWord & (1<<2))"; //Z->ll control preselection TString preselCutsWlv = "(preselWord & (1<<1))"; //W->lnu control preselection TString preselCutsPj = "(preselWord & (1<<5))"; //Photon+jets control preselection // monoJet selection TString metRawCut200 = "(metRaw > 200 && metRaw < 1000)"; TString jetCuts = "((jet1.Pt() > 110 && abs(jet1.eta()) < 2.5 && jet1CHF > 0.2 && jet1NHF < 0.7 && jet1NEMF < 0.7))"; TString dPhij1j2 = "TMath::ACos(TMath::Cos(jet2.phi() - jet1.phi()))"; TString nJetCuts = TString("(njets == 1 || (njets == 2 && (")+dPhij1j2+TString(" < 2.0)))"); TString tauVeto = "(ntaus == 0)"; //veto on taus TString photonVeto = "(nphotons == 0)"; //veto on photons TString lepVeto = "(nlep == 0)"; //veto on leptons // Inclusive selection TString inclusiveCut = "(jet1.Pt() > 150 && abs(jet1.Eta()) < 2.0)"; // BoostedV selection TString metRawCut250 = "(metRaw > 250 && metRaw < 1000)"; TString fjetCut = "(fjet1.Pt() > 250 && abs(fjet1.Eta()) < 2.5)"; TString bdt_loose = "(fjet1Tau2/fjet1Tau1 < 0.5 && 60 < fjet1MassPruned && fjet1MassPruned < 110)"; TString dPhifj1j2 = "TMath::ACos(TMath::Cos(jet2.phi() - fjet1.phi()))"; TString fjetMassCut = "(fjet1.M() < 200.0)"; TString sdCut = "(fjet1MassSDbm1 > 10)"; TString prunedMassCut = ("(60 < fjet1MassPruned && fjet1MassPruned < 110)"); TString qgCut = "(fjet1QGtag < 0.25)"; TString nSubCut = "(fjet1Tau2/fjet1Tau1 < 0.5)"; // Z->ll Control Region selection TString ZMuCut = "(genVdaughterId == 13)"; //require Z to decay to muons TString DiMuonCut = "(nlep == 2 && (abs(lid1)>=130 && abs(lid2)>=13) && abs(lep1.Eta()) < 2.1 && abs(lep2.Eta()) < 2.1)"; //require tight-loose muons TString InvMassCut = "(60 < mll && mll < 120)"; // require dilepton invariant mass to be within 30 GeV of Z mass TString metCorrectedZllCut200 = "(met > 200 && met < 1000)"; // met corrected cut TString metCorrectedZllCut250 = "(met > 250 && met < 1000)"; // met corrected cut // W->lv Control Region selection TString WMuCut = "(genVdaughterId == 13)"; // require W to decay to muon TString SingleMuonCut = "(nlep == 1 && abs(lid1) >= 1300 && lep1.Pt() > 20 && abs(lep1.Eta()) < 2.1)"; // require one well defined muon passing isolation TString TransMassCut ="(40 < mt && mt < 200)"; // require lepton tranverse mass to be W like TString metCorrectedWlvCut200 = "(met > 200 && met < 1000)"; // met corrected cut TString metCorrectedWlvCut250 = "(met > 250 && met < 1000)"; // met corrected cut // Photon+jets Control Region selection TString SinglePhotonCut = "(pho1.Pt() > 160 && abs(pho1.Eta()) < 2.5)"; // require one well defined photon TString metCorrectedPjCut200 = "(met > 200 && met < 1000)"; // met corrected cut TString metCorrectedPjCut250 = "(met > 250 && met < 1000)"; // met corrected cut // our plot task TString regions[4] = {"Met","Zll","Wlv","Pj"}; TString cuts[18]; TString MonoJetSelection = eventWeight+monoJetTrigger+andC+jetCuts+andC+nJetCuts+andC+tauVeto+andC+photonVeto+andC+metFiltersCut; TString BoostedVVetoL = "!("+fjetCut+andC+bdt_loose+andC+"(met > 250)"")"; //BoostedV BDT based loose ANTI selection TString BoostedVSelectionL = fjetCut+andC+bdt_loose; //BoostedV BDT based selection TString BoostedVnSubOnly = fjetCut+andC+nSubCut; //BoostedV nSub only selection TString SignalRegionSelection = preselCutsZnunu+andC+lepVeto+andC+metRawCut200; TString ZllControlRegionSelection = preselCutsZll+andC+DiMuonCut+andC+InvMassCut+andC+metCorrectedZllCut250; TString WlvControlRegionSelection = preselCutsWlv+andC+SingleMuonCut+andC+TransMassCut+andC+metCorrectedWlvCut250; TString PjControlRegionSelection = eventWeight+singlePhTrigger+andC+preselCutsPj+andC+lepVeto +andC+jetCuts+andC+nJetCuts+andC+tauVeto+andC+metFiltersCut +andC+SinglePhotonCut+andC+metCorrectedPjCut250; TString InclusiveZllControlRegionSelection = preselCutsZll+andC+DiMuonCut+andC+InvMassCut+andC+metCorrectedZllCut200; TString InclusiveWlvControlRegionSelection = preselCutsWlv+andC+SingleMuonCut+andC+TransMassCut+andC+metCorrectedWlvCut200; TString InclusivePjControlRegionSelection = eventWeight+singlePhTrigger+andC+preselCutsPj+andC+lepVeto +andC+jetCuts+andC+nJetCuts+andC+tauVeto+andC+metFiltersCut +andC+SinglePhotonCut+andC+metCorrectedPjCut200; cuts[0] = MonoJetSelection+andC+BoostedVSelectionL+andC+SignalRegionSelection+")"; // monojet signal region selection, MET 200 cuts[1] = ""; // FREE slot for signal selection cuts[2] = MonoJetSelection+andC+BoostedVSelectionL+andC+ZllControlRegionSelection+")"; // boostedV Z->ll control region selection, MET 250 cuts[3] = MonoJetSelection+andC+BoostedVSelectionL+andC+WlvControlRegionSelection+")"; // boostedV W->lnu control region selection, MET 250 cuts[4] = PjControlRegionSelection+andC+BoostedVSelectionL+")"; // boostedV Photon+jets control region selection, MET 250 cuts[5] = MonoJetSelection+andC+BoostedVSelectionL+andC+metRawCut250+andC+SignalRegionSelection+")"; // boostedV signal region selection, MET 250 cuts[6] = MonoJetSelection+andC+inclusiveCut+andC+BoostedVVetoL+andC+SignalRegionSelection+")"; // inclusive signal region selection, MET 200 cuts[7] = MonoJetSelection+andC+inclusiveCut+andC+BoostedVVetoL+andC+InclusiveZllControlRegionSelection+")";// inclusive Z->ll region selection, MET 200 cuts[8] = MonoJetSelection+andC+inclusiveCut+andC+BoostedVVetoL+andC+InclusiveWlvControlRegionSelection+")";// inclusive W->lnu region selection, MET 200 cuts[9] = InclusivePjControlRegionSelection+andC+inclusiveCut+andC+BoostedVVetoL+")"; // inclusive Photon+jets control region selection, MET 200 cuts[10] = MonoJetSelection+andC+inclusiveCut+andC+SignalRegionSelection+")"; // inclusive signal region selection, MET 200, no BDT cut cuts[11] = MonoJetSelection+andC+inclusiveCut+andC+InclusiveZllControlRegionSelection+")";// inclusive Z->ll region selection, MET 200, no BDT cut cuts[12] = MonoJetSelection+andC+inclusiveCut+andC+InclusiveWlvControlRegionSelection+")";// inclusive W->lnu region selection, MET 200, no BDT cut cuts[13] = InclusivePjControlRegionSelection+andC+inclusiveCut+")"; // inclusive Photon+jets control region selection, MET 200, no BDT cut cuts[14] = MonoJetSelection+andC+BoostedVnSubOnly+andC+metRawCut250+andC+SignalRegionSelection+")"; // boostedV signal region selection, MET 250, no mass cut cuts[15] = MonoJetSelection+andC+BoostedVnSubOnly+andC+ZllControlRegionSelection+")";// boostedV Z->ll control region selection, MET 250, no mass cut cuts[16] = MonoJetSelection+andC+BoostedVnSubOnly+andC+WlvControlRegionSelection+")";// boostedV W->lnu control region selection, MET 250, no mass cut cuts[17] = PjControlRegionSelection+andC+BoostedVnSubOnly+")"; // boostedV Photon+jets control region selection, MET 250, no mass cut const int icut_boosted = 5; const int icut_inclusive = icut_boosted+4; const int icut_baseline = icut_inclusive+4; const int icut_boosted_nomasscut = icut_baseline+4; // Fix the region name if cut does not contain BDT if (icut > icut_boosted && icut <= icut_inclusive) for (int i = 0; i < 4; i++) regions[i] = regions[i] + "_inclusive"; else if (icut > icut_inclusive && icut <= icut_baseline) for (int i = 0; i < 4; i++) regions[i] = regions[i] + "_baseline"; else if (icut > icut_baseline && icut <= icut_boosted_nomasscut) for (int i = 0; i < 4; i++) regions[i] = regions[i] + "_nomasscut"; PlotTask *plotTask = 0; // Prepare variable binning for met and jet pt double metbins150 [] = { 150.0, 160.0, 170.0, 180.0, 190.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 350.0, 380.0, 430.0, 500.0, 1000.0 }; double metbins200 [] = { 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 350.0, 380.0, 430.0, 500.0, 1000.0 }; // Prepare variable binning for met and jet pt : boosted double metbins250[] = { 250.0, 300.0, 350.0, 400.0, 450.0, 500.0, 1000.}; // Choose the correct binning int nBinsVar = 0; if ( varbins && fabs(min-150) < 0.1 ) nBinsVar = sizeof(metbins150)/sizeof(double); if ( varbins && fabs(min-200) < 0.1 ) nBinsVar = sizeof(metbins200)/sizeof(double); if ( varbins && fabs(min-250) < 0.1 ) nBinsVar = sizeof(metbins250)/sizeof(double); double metbins[nBinsVar]; if ( varbins && fabs(min-150) < 0.1 ) for (int i=0; i< nBinsVar; i++) metbins[i] = metbins150[i]; if ( varbins && fabs(min-200) < 0.1 ) for (int i=0; i< nBinsVar; i++) metbins[i] = metbins200[i]; if ( varbins && fabs(min-250) < 0.1 ) for (int i=0; i< nBinsVar; i++) metbins[i] = metbins250[i]; // For variable binning if (mode == -1) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots"); // plot metRaw, BDT loose plotTask = new PlotTask(0,lumi); plotTask->SetVarBins(true); plotTask->SetHistRanges(metbins,min,max,0.,0.); int numBins = nBinsVar - 1; plotTask->SetNBins(numBins); plotTask->SetAxisTitles("E_{T}^{miss} [GeV]","Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); plotTask->Plot(Stacked,nTuple,"metRaw",cuts[0],"BDT_loose_varbins_" + regions[0]); printf("Finished Plot for Region %s and Variable %s!\n",regions[0].Data(),"metRaw"); delete plotTask; } // For limits if (mode == 0) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots"); // plot metRaw, BDT loose plotTask = new PlotTask(0,lumi); plotTask->SetHistRanges(200.0,800.0,0.,0.); plotTask->SetNBins(60); plotTask->SetAxisTitles("E_{T}^{miss} [GeV]","Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); plotTask->Plot(Stacked,nTuple,"metRaw",cuts[0],"BDT_loose_" + regions[0]); printf("Finished Plot for Region %s and Variable %s!\n",regions[0].Data(),"metRaw"); delete plotTask; } // For signal region plots else if (mode == 1) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots"); // plot metRaw plotTask = new PlotTask(0,lumi); plotTask->SetVarBins(varbins); plotTask->SetNormToWidth(varbins); if (!varbins) plotTask->SetHistRanges(min,max,0.,0.); else { plotTask->SetHistRanges(metbins,min,max,0.,0.); nBins = nBinsVar - 1; } plotTask->SetNBins(nBins); plotTask->SetAxisTitles(variable,"Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); plotTask->Plot(Stacked,nTuple,variable,cuts[icut],"BDT_" + regions[0]); printf("Finished Plot for Region %s and Variable %s!\n",regions[0].Data(),variable.Data()); delete plotTask; } // For Zll control region plots else if (mode == 2) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots-z"); // plot met corrected plotTask = new PlotTask(0,lumi); plotTask->SetVarBins(varbins); plotTask->SetNormToWidth(varbins); if (!varbins) plotTask->SetHistRanges(min,max,0.,0.); else { plotTask->SetHistRanges(metbins,min,max,0.,0.); nBins = nBinsVar - 1; } plotTask->SetNBins(nBins); plotTask->SetAxisTitles(variable,"Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); if (variable == "met") plotTask->Plot(Stacked,nTuple,"met",cuts[icut],"BDT_" + regions[1]); else plotTask->Plot(Stacked,nTuple,variable,cuts[icut],"BDT_" + regions[1]); printf("Finished Plot for Region %s and Variable %s!\n",regions[1].Data(),variable.Data()); delete plotTask; } // For Wlv control region plots else if (mode == 3) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots-w"); // plot met corrected plotTask = new PlotTask(0,lumi); plotTask->SetVarBins(varbins); plotTask->SetNormToWidth(varbins); if (!varbins) plotTask->SetHistRanges(min,max,0.,0.); else { plotTask->SetHistRanges(metbins,min,max,0.,0.); nBins = nBinsVar - 1; } plotTask->SetNBins(nBins); plotTask->SetAxisTitles(variable,"Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); if (variable == "met") plotTask->Plot(Stacked,nTuple,"met",cuts[icut],"BDT_" + regions[2]); else plotTask->Plot(Stacked,nTuple,variable,cuts[icut],"BDT_" + regions[2]); printf("Finished Plot for Region %s and Variable %s!\n",regions[2].Data(),variable.Data()); delete plotTask; } // For Photon+jets control region plots else if (mode == 4) { gSystem->Setenv("MIT_ANA_CFG","boostedv-plots-pj"); // plot met corrected plotTask = new PlotTask(0,lumi); plotTask->SetVarBins(varbins); plotTask->SetNormToWidth(varbins); if (!varbins) plotTask->SetHistRanges(min,max,0.,0.); else { plotTask->SetHistRanges(metbins,min,max,0.,0.); nBins = nBinsVar - 1; } plotTask->SetNBins(nBins); plotTask->SetAxisTitles(variable,"Number of Events"); plotTask->SetPngFileName("/tmp/dummy.png"); if (variable == "met") plotTask->Plot(Stacked,nTuple,"met",cuts[icut],"BDT_" + regions[3]); else plotTask->Plot(Stacked,nTuple,variable,cuts[icut],"BDT_" + regions[3]); printf("Finished Plot for Region %s and Variable %s!\n",regions[3].Data(),variable.Data()); delete plotTask; } else return; return; }
//================================================================================================== void basicBoostedVPlots(double lumi = 19600.0) { // Create the basic plots of the boosted V analysis to check the key N subjettiness variables // set the folder containing the input ntuples properly // here you can change the plot sources, these are the defaults gSystem->Setenv("MIT_PROD_CFG","boostedv-v3"); gSystem->Setenv("MIT_ANA_HIST","/scratch4/dimatteo/cms/hist/boostedv-v3/merged"); // setup graphics stuff before starting MitStyle::Init(); // plot from TTree TString nTuple = "DMSTree"; printf("\n Looking at tree (%s)\n",nTuple.Data()); // predefined cuts TString orC(" || "); TString andC(" && "); TString preselCuts("((preselWord & (1<<0)) && (trigger & (1<<2)))"); TString leptonCuts("(lep1.Pt() > 30 && abs(lep1.Eta()) < 2.1 && abs(lid1) > 12 && nlep == 1)"); TString jetCuts("(tjet.Pt() > 300 && abs(tjet.Eta()) < 2.4 && nbjets > 1)"); TString nSubCuts("(tjetTau2/tjetTau1 < 0.5)"); TString ECFCuts("(tjetC2b0 > 100.)"); TString eventWeight("(puweight)*("); // our plot task TString variable, cuts; PlotTask *plotTask = 0; // set plot config properly gSystem->Setenv("MIT_ANA_CFG","boostedv-plots-top"); // raw met with basic cuts plotTask = new PlotTask(0,lumi); variable = "metRaw"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,500.,0.,0.); plotTask->SetNBins(25); plotTask->SetAxisTitles("raw PFMET [GeV]","Number of Events"); plotTask->SetPngFileName("rawMet.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // met mva with basic cuts plotTask = new PlotTask(0,lumi); variable = "mvamet"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,500.,0.,0.); plotTask->SetNBins(25); plotTask->SetAxisTitles("MVA MET [GeV]","Number of Events"); plotTask->SetPngFileName("mvaMet.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // raw met with basic cuts plotTask = new PlotTask(0,lumi); variable = "metRaw"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,500.,0.,0.); plotTask->SetLogy(kTRUE); plotTask->SetNBins(25); plotTask->SetAxisTitles("raw PFMET [GeV]","Number of Events"); plotTask->SetPngFileName("rawMet_log.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // met mva with basic cuts plotTask = new PlotTask(0,lumi); variable = "mvamet"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,500.,0.,0.); plotTask->SetLogy(kTRUE); plotTask->SetNBins(25); plotTask->SetAxisTitles("MVA MET [GeV]","Number of Events"); plotTask->SetPngFileName("mvaMet_log.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // lep pt with basic cuts plotTask = new PlotTask(0,lumi); variable = "lep1.Pt()"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(30,300,0.,0.); plotTask->SetNBins(27); plotTask->SetAxisTitles("lepton p_{T} [GeV]","Number of Events"); plotTask->SetPngFileName("lepPt.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // lep eta with basic cuts plotTask = new PlotTask(0,lumi); variable = "lep1.Eta()"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(-2.1,2.1,0.,0.); plotTask->SetNBins(30); plotTask->SetAxisTitles("lepton #eta","Number of Events"); plotTask->SetPngFileName("lepEta.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // lep-MET dphi with basic cuts plotTask = new PlotTask(0,lumi); variable = "TMath::ACos(cos(lep1.Phi()-metRawPhi))"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0,3.2,0.,0.); plotTask->SetNBins(30); plotTask->SetAxisTitles("#Delta#phi (lep-PFMET)","Number of Events"); plotTask->SetPngFileName("lepRawMetDphi.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // lep-MET dphi with basic cuts plotTask = new PlotTask(0,lumi); variable = "TMath::ACos(cos(lep1.Phi()-mvametPhi))"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0,3.2,0.,0.); plotTask->SetNBins(30); plotTask->SetAxisTitles("#Delta#phi (lep-MVAMET)","Number of Events"); plotTask->SetPngFileName("lepMvaMetDphi.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // jet pt with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjet.Pt()"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(300.0,1000.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet p_{T} [GeV]","Number of Events"); plotTask->SetPngFileName("tjPt.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // jet b-tag with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjet.Eta()"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(-2.4,2.4,0.,0.); plotTask->SetNBins(30); plotTask->SetAxisTitles("jet #eta","Number of Events"); plotTask->SetPngFileName("tjEta.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // jet eta with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjetBtag"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0,1,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet b-tag (CSV)","Number of Events"); plotTask->SetPngFileName("tjBtag.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Jet multiplicity with basic cuts plotTask = new PlotTask(0,lumi); variable = "njets"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,10.,0.,0.); plotTask->SetNBins(10); plotTask->SetAxisTitles("jet multiplicity","Number of Events"); plotTask->SetPngFileName("njets.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // b-Jets multiplicity with basic cuts plotTask = new PlotTask(0,lumi); variable = "nbjets"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,5.,0.,0.); plotTask->SetNBins(5); plotTask->SetAxisTitles("b-jet multiplicity","Number of Events"); plotTask->SetPngFileName("nbjets.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjet.M()"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass [GeV]","Number of Events"); plotTask->SetPngFileName("tjMass.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Subjettiness with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjetTau2/tjetTau1"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,1.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet #tau2/#tau1","Number of Events"); plotTask->SetPngFileName("tjT2overT1.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // ECF with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjetC2b0"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet C_{2} (#beta = 0)","Number of Events"); plotTask->SetPngFileName("tjC2b0.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Volatility with basic cuts plotTask = new PlotTask(0,lumi); variable = "tjetQJetVol"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,1.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("Qjets volatility","Number of Events"); plotTask->SetPngFileName("tjetQJetVol.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass after soft drop plotTask = new PlotTask(0,lumi); variable = "tjetMassSDb0"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass (SD #beta = 0)","Number of Events"); plotTask->SetPngFileName("tjetMassSDb0.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass after soft drop plotTask = new PlotTask(0,lumi); variable = "tjetMassSDb0"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass (SD #beta = 0) [GeV]","Number of Events"); plotTask->SetPngFileName("tjetMassSDb0.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass after pruning plotTask = new PlotTask(0,lumi); variable = "tjetMassPruned"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass (pruned) [GeV]","Number of Events"); plotTask->SetPngFileName("tjetMassPruned.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass after filtering plotTask = new PlotTask(0,lumi); variable = "tjetMassFiltered"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass (filtered) [GeV]","Number of Events"); plotTask->SetPngFileName("tjetMassFiltered.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; // Mass after trimming plotTask = new PlotTask(0,lumi); variable = "tjetMassTrimmed"; cuts = eventWeight+jetCuts+andC+leptonCuts+andC+preselCuts+")"; plotTask->SetHistRanges(0.0,200.,0.,0.); plotTask->SetNBins(50); plotTask->SetAxisTitles("jet mass (trimmed) [GeV]","Number of Events"); plotTask->SetPngFileName("tjetMassTrimmed.png"); plotTask->Plot(Stacked,nTuple,variable,cuts); delete plotTask; return; }