diff --git a/README.md b/README.md index 768c4e11baf524a0553ce65aa6869d90e6e5f6d5..568d74465407a27b7c9b44a09d9d1ca2de3e895b 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ - Also install plotIt as described (inside the same virtual environment) - You can ignore everything related to "SAMADhi" - Install CP3SlurmUtils inside the virtual environment: `python -m pip install -i https://test.pypi.org/simple/ CP3SlurmUtils` +- Also install python plotIt: +``` +git clone git@github.com:pieterdavid/mplbplot.git -b py3compat +pip install -e ./mplbplot +``` - Make the configuration files available: ``` mkdir ~/.config/CP3SlurmUtils; ln -s (abs path to)/ttbbRun2Bamboo/config/defaults.cfg ~/.config/CP3SlurmUtils diff --git a/python/controlPlotter.py b/python/controlPlotter.py index 1dd818f62b1196de5f796a37c2e43040daa17c07..6bd86d7dd1a8d132b750c77b0d7d180918616e60 100644 --- a/python/controlPlotter.py +++ b/python/controlPlotter.py @@ -13,6 +13,7 @@ from bamboo.analysisutils import parseAnalysisConfig from bamboo.plots import Plot, SummedPlot from bamboo.plots import EquidistantBinning as EqBin from bamboo.plots import VariableBinning as VarBin +from bamboo.plots import CutFlowReport from bamboo import treefunctions as op from bamboo.root import addIncludePath, loadHeader from bamboo.root import gbl as ROOT @@ -202,6 +203,11 @@ class controlPlotter(NanoAODHistoModule): bTagWeight = [] bTagWeightFixWP = [] + ###### Cutflow report + + yields = CutFlowReport("yields") + plots.append(yields) + ###### Plots for ==1 lepton, >=4 jets (ttbar level) ###### fourJetSel = op.rng_len(cleanedJets) >= 4 @@ -217,6 +223,10 @@ class controlPlotter(NanoAODHistoModule): ##### Plots for ==1 lepton, >=4 jets, >= 2 b jets (ttbar level, with b tagging) ###### oneMu4Jet2BSel = oneMu4JetSel.refine("muon_4jets_2b", cut=bTagDef2, weight=bTagWeight) oneEle4Jet2BSel = oneEle4JetSel.refine("ele_4jets_2b", cut=bTagDef2, weight=bTagWeight) + yields.add(oneMu4Jet2BSel, "1mu4j2b") + yields.add(oneEle4Jet2BSel, "1ele4j2b") + yields.add(oneMu4Jet2BSel, "1lep4j2b") + yields.add(oneEle4Jet2BSel, "1lep4j2b") plots += utils.makeMergedPlots( [(f"1mu_4j_2b", oneMu4Jet2BSel), (f"1ele_4j_2b", oneEle4Jet2BSel)], @@ -236,6 +246,10 @@ class controlPlotter(NanoAODHistoModule): ##### Plots for ==1 lepton, >=6 jets, >= 2 b jets (ttjj level) ###### oneMu6Jet2BSel = oneMu4Jet2BSel.refine(f"muon_6jets_2b", cut=[ op.rng_len(cleanedJets) >= 6 ]) oneEle6Jet2BSel = oneEle4Jet2BSel.refine(f"ele_6jets_2b", cut=[ op.rng_len(cleanedJets) >= 6 ]) + yields.add(oneMu6Jet2BSel, "1mu6j2b") + yields.add(oneEle6Jet2BSel, "1ele6j2b") + yields.add(oneMu6Jet2BSel, "1lep6j2b") + yields.add(oneEle6Jet2BSel, "1lep6j2b") plots += utils.makeMergedPlots( [(f"1mu_6j_2b", oneMu6Jet2BSel), (f"1ele_6j_2b", oneEle6Jet2BSel)], @@ -254,6 +268,10 @@ class controlPlotter(NanoAODHistoModule): oneEle6Jet3BSel = oneEle6Jet2BSel.refine(f"ele_6jets_3b", cut=bTagDef3) oneMu6Jet4BSel = oneMu6Jet2BSel.refine(f"muon_6jets_4b", cut=bTagDef4) oneEle6Jet4BSel = oneEle6Jet2BSel.refine(f"ele_6jets_4b", cut=bTagDef4) + yields.add(oneMu6Jet4BSel, "1mu6j4b") + yields.add(oneEle6Jet4BSel, "1ele6j4b") + yields.add(oneMu6Jet4BSel, "1lep6j4b") + yields.add(oneEle6Jet4BSel, "1lep6j4b") oneMu7Jet4BSel = oneMu6Jet4BSel.refine(f"muon_7jets_4b", cut=[ op.rng_len(cleanedJets) >= 7 ]) oneEle7Jet4BSel = oneEle6Jet4BSel.refine(f"ele_7jets_4b", cut=[ op.rng_len(cleanedJets) >= 7 ]) #