Skip to content

Commit

Permalink
Merge pull request cms-sw#13 from gpetruc/HZZ4L-76X
Browse files Browse the repository at this point in the history
H → ZZ → 4L update to 76X (part 1)
  • Loading branch information
gpetruc committed Feb 22, 2016
2 parents 7e7c598 + 917b06e commit 938244c
Show file tree
Hide file tree
Showing 47 changed files with 946 additions and 35 deletions.
19 changes: 14 additions & 5 deletions HToZZ4L/cfg/run_onia2l_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@


#-------- SEQUENCE
sequence = cfg.Sequence(hzz4lPreSequence + [ fastSkim2L ] + hzz4lObjSequence + [
sequence = cfg.Sequence(hzz4lPreSequence + [ fastSkim2Mu3 ] + hzz4lObjSequence + [
twoLeptonAnalyzerOnia,
twoLeptonEventSkimmerOnia,
twoLeptonTreeProducerOnia
Expand All @@ -26,15 +26,24 @@
d.splitFactor = len(d.files)/3

mcSamples = [ JpsiToMuMuPt8, UpsToMuMuPt6 ]
UpsToMuMuPt6.files = UpsToMuMuPt6.files[:len(UpsToMuMuPt6.files)/2+1]
#UpsToMuMuPt6.files = UpsToMuMuPt6.files[:len(UpsToMuMuPt6.files)/2+1]
for d in mcSamples:
d.triggers = triggers_jpsi2mu + triggers_upsilon2mu
d.triggers = [] # triggers_jpsi2mu + triggers_upsilon2mu
d.vetoTriggers = []
d.splitFactor = len(d.files)/4

selectedComponents = dataSamples + mcSamples
selectedComponents = [ d for d in dataSamples if 'Charmonium' not in d.name ]
configureSplittingFromTime([UpsToMuMuPt6], 15, 1)
#configureSplittingFromTime(selectedComponents, 15, 1)

if True: autoAAA(selectedComponents)
if True:
lepAna.inclusive_muon_pt = 3
lepAna.loose_muon_pt = 3
#selectedComponents = [ UpsToMuMuPt6 ] #JpsiToMuMuPt8 ]

if not getHeppyOption("test"):
printSummary(selectedComponents)
autoAAA(selectedComponents)


from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption
Expand Down
32 changes: 25 additions & 7 deletions HToZZ4L/cfg/run_z2l_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@
twoLeptonTreeProducer
])

run = "Both"
run = "Mu"
#run = "El"

#-------- SAMPLES AND TRIGGERS -----------
from CMGTools.HToZZ4L.samples.samples_13TeV_Fall15 import *
dataSamples2L = [ d for d in dataSamples if "Double" in d.name ]
if run == "Mu": dataSamples2L = [ d for d in dataSamples if "DoubleM" in d.name ]
elif run == "El": dataSamples2L = [ d for d in dataSamples if "DoubleE" in d.name ]
else : dataSamples2L = [ d for d in dataSamples if "Double" in d.name ]
for d in dataSamples2L:
d.triggers = triggers_mumu if 'Muon' in d.name else triggers_ee
d.vetoTriggers = []
d.splitFactor = (len(d.files)+4)/7
dataSamples1L = [ d for d in dataSamples if "Single" in d.name ]
if run == "Mu": dataSamples1L = [ d for d in dataSamples if "SingleM" in d.name ]
elif run == "El": dataSamples1L = [ d for d in dataSamples if "SingleE" in d.name ]
else : dataSamples1L = [ d for d in dataSamples if "Single" in d.name ]
for d in dataSamples1L:
d.triggers = triggers_1mu if 'Muon' in d.name else triggers_1e
d.vetoTriggers = triggers_mumu if 'Muon' in d.name else triggers_ee
Expand All @@ -35,17 +43,27 @@
d.vetoTriggers = []
d.splitFactor = len(d.files)/1

selectedComponents = dataSamples2L + mcSamples + dataSamples1L
#selectedComponents = dataSamples2L + dataSamples1L
selectedComponents = mcSamples + dataSamples2L + dataSamples1L
#selectedComponents = [c for c in selectedComponents if c.isMC or "Run2015D" in c.name ]
configureSplittingFromTime(dataSamples2L + dataSamples1L, 5.0, 1.)
configureSplittingFromTime(dataSamples2L + dataSamples1L, 5.0, 2.)
configureSplittingFromTime(mcSamples, 21, 2)
#prescaleComponents(mcSamples, 5)
#prescaleComponents(dataSamples2L, 4)
printSummary(selectedComponents)

#redefineRunRange(selectedComponents,[258214,258214])
if True: autoAAA(selectedComponents)
#doECalCorrections(era="50ns")
#doKalmanMuonCorrections()
if run == "Mu":
doKalmanMuonCorrections(smear="basic")
fastSkim2L.eleCut = lambda ele : False
lepAna.loose_electron_isoCut = lambda ele : False
elif run == "El":
doECalCorrections(era="25ns")
fastSkim2L.muCut = lambda mu : False
lepAna.loose_muon_isoCut = lambda mu : False
else:
doECalCorrections(era="25ns")
doKalmanMuonCorrections(smear="basic")

from PhysicsTools.HeppyCore.framework.heppy_loop import getHeppyOption
test = getHeppyOption('test')
Expand Down
22 changes: 16 additions & 6 deletions HToZZ4L/python/analyzers/hzz4lCore_modules_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@
)
fastSkim3L = fastSkim2L.clone(name="fastLepSkim3L", minLeptons = 3)
fastSkim4L = fastSkim2L.clone(name="fastLepSkim3L", minLeptons = 4)
fastSkim2Mu3 = fastSkim2LnoSip.clone(name="fastLepSkim2Mu3",
muCut = lambda mu : mu.pt() > 3 and abs(mu.dB(mu.PV3D) / mu.edB(mu.PV3D)) < 4,
eleCut = lambda ele : False,
)


genAna = cfg.Analyzer(
GeneratorAnalyzer, name="GeneratorAnalyzer",
Expand Down Expand Up @@ -82,7 +87,7 @@
processName = 'HLT',
prescaleProcessName = 'PAT',
prescaleFallbackProcessName = 'RECO',
unrollbits = False,
unrollbits = True,
saveIsUnprescaled = False,
checkL1prescale = False,
triggerBits = {
Expand All @@ -100,6 +105,9 @@
'SingleMu' : triggers_1mu,
# Summaries
'Signal' : triggers_signal_real,
# Onia
'Jpsi' : triggers_jpsi2mu,
'Upsilon' : triggers_upsilon2mu,
}
)

Expand Down Expand Up @@ -329,19 +337,21 @@
def doECalCorrections(sync=False,era="25ns"):
global lepAna, fastSkim4L, fastSkim2L, fastSkim3L
lepAna.doElectronScaleCorrections = {
'GBRForest': ('$CMSSW_BASE/src/CMGTools/RootTools/data/egamma_epComb_GBRForest_74Xv2.root',
'data' : 'EgammaAnalysis/ElectronTools/data/76X_16DecRereco_2015',
'GBRForest': ('$CMSSW_BASE/src/CMGTools/RootTools/data/egamma_epComb_GBRForest_76X.root',
'gedelectron_p4combination_'+era),
'isSync': sync
}
fastSkim2L.eleCut = lambda ele : ele.pt() > 7*0.97/(1+10*0.032) and (abs(ele.dB(ele.PV3D)) <= 4*ele.edB(ele.PV3D))
fastSkim3L.eleCut = lambda ele : ele.pt() > 7*0.97/(1+10*0.032) and (abs(ele.dB(ele.PV3D)) <= 4*ele.edB(ele.PV3D))
fastSkim4L.eleCut = lambda ele : ele.pt() > 7*0.97/(1+10*0.032) and (abs(ele.dB(ele.PV3D)) <= 4*ele.edB(ele.PV3D))
def doKalmanMuonCorrections(sync=False):
def doKalmanMuonCorrections(sync=False,smear="basic"):
global lepAna, fastSkim4L, fastSkim2L, fastSkim3L
lepAna.doMuonScaleCorrections = ( 'Kalman', {
'MC': 'MC_74X_13TeV',
'Data': 'DATA_Prompt_13TeV',
'isSync': sync
'MC': 'MC_76X_13TeV',
'Data': 'DATA_76X_13TeV',
'isSync': sync,
'smearMode':smear
})
fastSkim2L.muCut = lambda mu : mu.pt() > 3 and (abs(mu.dB(mu.PV3D)) <= 4*mu.edB(mu.PV3D))
fastSkim3L.muCut = lambda mu : mu.pt() > 3 and (abs(mu.dB(mu.PV3D)) <= 4*mu.edB(mu.PV3D))
Expand Down
4 changes: 2 additions & 2 deletions HToZZ4L/python/analyzers/hzz4lExtra_modules_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@
globalVariables = hzz_globalVariables, # rho, nvertices, njets
globalObjects = hzz_globalObjects, # met
collections = {
"onia" : NTupleCollection("Onia", ZType, 20, help="Dilepton Candidates"),
"selectedLeptons" : NTupleCollection("Lep", leptonTypeHZZ, 10, help="Leptons after the preselection"),
"onia" : NTupleCollection("Onia", ZTypeLite, 20, help="Dilepton Candidates"),
#"selectedLeptons" : NTupleCollection("Lep", leptonTypeHZZ, 10, help="Leptons after the preselection"),
},
defaultFloatType = 'F',
)
Expand Down
1 change: 1 addition & 0 deletions HToZZ4L/python/analyzers/zzTypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@
NTupleVariable("mcMatchId", lambda x : getattr(x, 'mcMatchId', -99), int, mcOnly=True, help="Match to source from hard scatter (pdgId of heaviest particle in chain, 25 for H, 6 for t, 23/24 for W/Z), zero if non-prompt or fake"),
NTupleVariable("mcMatchAny", lambda x : getattr(x, 'mcMatchAny', -99), int, mcOnly=True, help="Match to any final state leptons: 0 if unmatched, 1 if light flavour (including prompt), 4 if charm, 5 if bottom"),
NTupleVariable("mcPt", lambda x : x.mcLep.pt() if getattr(x,"mcLep",None) else 0., mcOnly=True, help="p_{T} of associated gen lepton"),
NTupleVariable("mcPt1", lambda x : x.mcMatchAny_gp.pt() if getattr(x,"mcMatchAny_gp",None) else 0., mcOnly=True, help="p_{T} of associated gen lepton (status 1)"),
# ----------------------
NTupleVariable("hlt1L", lambda x : getattr(x,'matchedTrgObj1El',None) != None or getattr(x,'matchedTrgObj1Mu',None) != None, int, help="Matched to single lepton trigger"),
])
Expand Down
4 changes: 4 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/cuts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
hlt: ( abs(WZ_z_l1_pdgId)==13 && HLT_DoubleMu ) || ( abs(WZ_z_l1_pdgId)==11 && HLT_DoubleEl )
nWZ: nWZ == 1
mZ1: WZ_z_mass > 55
num : WZ_lep3_relIsoAfterFSR < if3(abs(WZ_lep3_pdgId)==11, 0.5, 0.4) && WZ_lep3_tightId
20 changes: 20 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/make_effs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
T=/afs/cern.ch/work/g/gpetrucc/TREES_HZZ4L_231115/3L
PDIR=plots/251115/cr_zl/effs

BASE=" -l 2.47 -P $T cr_zl/mca.txt cr_zl/cuts.txt --s2v "
EFFBASE="python mcEfficiencies.py $BASE -X num -j 8 -f --showRatio cr_zl/nums.txt cr_zl/plots.txt --groupBy cut "

function doFRs {
SUBDIR=$1; shift;
EFF="$EFFBASE --AP -p DY,data,WZ,Top --sp WZ --compare DY,total,data "
EFF="$EFF --sP pass --sP l3pt_coarse --yrange 0 0.2 --ratioRange 0 2.8 --legend=TL"
echo "$EFF -o $PDIR/$SUBDIR/mu_barrel.root -A nWZ mu 'abs(WZ_lep3_pdgId)==13 && abs(WZ_lep3_eta)<1.2 ' $*"
echo "$EFF -o $PDIR/$SUBDIR/mu_endcap.root -A nWZ mu 'abs(WZ_lep3_pdgId)==13 && abs(WZ_lep3_eta)>1.2 ' $*"
echo "$EFF -o $PDIR/$SUBDIR/el_barrel.root -A nWZ el 'abs(WZ_lep3_pdgId)==11 && abs(WZ_lep3_eta)<1.479' $*"
echo "$EFF -o $PDIR/$SUBDIR/el_endcap.root -A nWZ el 'abs(WZ_lep3_pdgId)==11 && abs(WZ_lep3_eta)>1.479' $*"
}

doFRs prefit " -A nWZ met 'met_pt < 25' $* " ;
doFRs prefit-mZ_10GeV " -A nWZ met 'met_pt < 25 && abs(WZ_z_mass-91.1876)<10 ' $* " ;
doFRs prefit-mZ_7GeV " -A nWZ met 'met_pt < 25 && abs(WZ_z_mass-91.1876)<7 ' $* " ;

45 changes: 45 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/make_plots.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
T=/afs/cern.ch/work/g/gpetrucc/TREES_HZZ4L_231115/3L
PDIR=plots/251115/cr_zl

BASE=" -l 2.47 -P $T cr_zl/mca.txt cr_zl/cuts.txt --s2v "
PLOTBASE="python mcPlots.py $BASE -j 8 -f --showRatio --maxRatioRange 0 2.48 cr_zl/plots.txt "

function doPlots {
SUBDIR=$1; shift;
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/den -X num -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $*"
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/num -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $*"
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/den -X num -A nWZ el 'abs(WZ_lep3_pdgId)==11' $*"
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/num -A nWZ el 'abs(WZ_lep3_pdgId)==11' $*"
}
function doScaledPlots {
SUBDIR=$1; shift;
PLOT="${PLOTBASE/--showRatio/} --sp '.*' --scaleSigToData"
echo "$PLOT --pdir $PDIR/$SUBDIR/mu/den -X num -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $*"
echo "$PLOT --pdir $PDIR/$SUBDIR/mu/num -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $*"
echo "$PLOT --pdir $PDIR/$SUBDIR/el/den -X num -A nWZ el 'abs(WZ_lep3_pdgId)==11' $*"
echo "$PLOT --pdir $PDIR/$SUBDIR/el/num -A nWZ el 'abs(WZ_lep3_pdgId)==11' $*"
}
function doPromptFit {
SUBDIR=$1; shift;
CHANGE="-A nWZ met 'met_pt > 20' --fitData --flp WZ,Top,DY --peg-process Top WZ "
J0="-A nWZ 0j 'nJet30 == 0' "
J1="-A nWZ 1j 'Jet1_pt > 40' --rebin 2"
B1="-A nWZ 1b 'Jet1_pt > 40 && Jet1_btagCSV > 0.89' --rebin 2"

echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/ -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $CHANGE --sP WZ --sP 'mtW,met,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/0j -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $CHANGE $J0 --sP WZ --sP 'mtW,met,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/1j40 -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $CHANGE $J1 --sP Top --sP 'mtW,met,j1_.*,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/mu/bj40 -A nWZ mu 'abs(WZ_lep3_pdgId)==13' $CHANGE $B1 --sP Top --sP 'mtW,met,j1_.*,mZ1_wide' "

echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/ -A nWZ el 'abs(WZ_lep3_pdgId)==11' $CHANGE --sP WZ --sP 'mtW,met,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/0j -A nWZ el 'abs(WZ_lep3_pdgId)==11' $CHANGE $J0 --sP WZ --sP 'mtW,met,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/1j40 -A nWZ el 'abs(WZ_lep3_pdgId)==11' $CHANGE $J1 --sP Top --sP 'mtW,met,j1_.*,mZ1_wide' "
echo "$PLOTBASE --pdir $PDIR/$SUBDIR/el/bj40 -A nWZ el 'abs(WZ_lep3_pdgId)==11' $CHANGE $B1 --sP Top --sP 'mtW,met,j1_.*,mZ1_wide' "
}

#doPlots prefit-nomet " $* ";
doPlots prefit " -A nWZ met 'met_pt < 20' $* " ;
doScaledPlots prefit-scaled " -A nWZ met 'met_pt < 20' $* " ;
doPlots postfit-mtW " -A nWZ met 'met_pt < 20' --preFitData mtW --flp DY --peg-process Top WZ $*" ;
doPlots postfit-l3pt " -A nWZ met 'met_pt < 20' --preFitData l3pt --flp DY --peg-process Top WZ $*" ;
doPromptFit prompt-fit " $*";
28 changes: 28 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/mca.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# vim: syntax=sh
# DEFAULTS FOR ALL TREES
* ; TreeName="threeLeptonTreeProducer"

DY : DYJetsToLL_LO_M50 : xsec: 1; FillColor=ROOT.kGreen+2, Label="Z+jets", SkipMe=True
DYb : DYJetsToLL_LO_M50 : xsec: WZ_lep3_mcMatchAny >=4 ; FillColor=ROOT.kGreen+2, Label="Z+b/c"
DYl : DYJetsToLL_LO_M50 : xsec: WZ_lep3_mcMatchAny > 0 && WZ_lep3_mcMatchAny < 4 ; FillColor=ROOT.kSpring-9, Label="Z+light"
DYf : DYJetsToLL_LO_M50 : xsec: WZ_lep3_mcMatchAny == 0; FillColor=ROOT.kAzure+6, Label="Z+fake"
WZ : WZTo3LNu : xsec : 1 ; FillColor=ROOT.kOrange-2, Label="WZ"
Top : TTLep : xsec : 1 ; FillColor=ROOT.kOrange-7, Label="t\#bar{t}\, tW"
Top : TBar_tWch : xsec : 1 ; FillColor=ROOT.kOrange-7, Label="t\#bar{t}\, tW"
Top : T_tWch: xsec : 1 ; FillColor=ROOT.kOrange-7, Label="t\#bar{t}\, tW"

data : DoubleEG_Run2015B_05Oct2015_50ns; FillColor=ROOT.kBlack
data : DoubleEG_Run2015C_05Oct2015_25ns
data : DoubleEG_Run2015C_05Oct2015_50ns
data : DoubleEG_Run2015D_05Oct2015_25ns
data : DoubleEG_Run2015D_PromptV4_25ns
data : DoubleEG_Run2015D_Silver_05Oct2015_25ns
data : DoubleEG_Run2015D_Silver_PromptV4_25ns
data : DoubleMuon_Run2015B_05Oct2015_50ns
data : DoubleMuon_Run2015C_05Oct2015_25ns
data : DoubleMuon_Run2015C_05Oct2015_50ns
data : DoubleMuon_Run2015D_05Oct2015_25ns
data : DoubleMuon_Run2015D_PromptV4_25ns
data : DoubleMuon_Run2015D_Silver_05Oct2015_25ns
data : DoubleMuon_Run2015D_Silver_PromptV4_25ns

3 changes: 3 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/nums.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pass : WZ_lep3_relIsoAfterFSR < if3(abs(WZ_lep3_pdgId)==11, 0.5, 0.4) && WZ_lep3_tightId : 2,-0.5,1.5; XTitle="Pass ID+Iso"
pass_ID : WZ_lep3_tightId : 2,-0.5,1.5; XTitle="Pass ID"
pass_Iso : WZ_lep3_relIsoAfterFSR < if3(abs(WZ_lep3_pdgId)==11, 0.5, 0.4) : 2,-0.5,1.5; XTitle="Pass Iso"
56 changes: 56 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/packFRs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from array import array
import re, sys
sys.argv.append('-b-')
import ROOT
ROOT.gROOT.SetBatch(True)
sys.argv.remove('-b-')

def makeH2D(name,graphs):
etaRanges = graphs.keys()
etaVals = [ r[0] for r in etaRanges ] + [ max(r[1] for r in etaRanges) ]
etaVals.sort()
oneGraph = graphs.values()[0]
ptVals = [ oneGraph.GetX()[i] + oneGraph.GetErrorXhigh(i) for i in xrange(oneGraph.GetN()) ]
ptVals.insert(0, oneGraph.GetX()[0] - oneGraph.GetErrorXlow(0))
th2 = ROOT.TH2F(name,name,len(ptVals)-1,array('f',ptVals),len(etaVals)-1,array('f',etaVals))
for etabin in xrange(1,th2.GetNbinsY()+1):
etaval = th2.GetYaxis().GetBinCenter(etabin)
for etaRange, graph in graphs.iteritems():
if etaRange[0] <= etaval and etaval < etaRange[1]:
break
for ptbin in xrange(1,th2.GetNbinsX()+1):
th2.SetBinContent(ptbin,etabin,graph.GetY()[ptbin-1])
th2.SetBinError(ptbin,etabin,max(graph.GetErrorYlow(ptbin-1),graph.GetErrorYhigh(ptbin-1)))
return th2

def readGraph(filename,plotname):
slicefile = ROOT.TFile.Open(filename)
if not slicefile: raise RuntimeError, "Cannot open "+filename
plot = slicefile.Get(plotname)
if not plot:
slicefile.ls()
raise RuntimeError, "Cannot find "+plotname+" in "+filename
ret = plot.Clone()
slicefile.Close()
return ret

def assemble2D(out,name,filepattern,slices,plotname):
graphs = dict([(r, readGraph(filepattern % n,plotname)) for (n,r) in slices.iteritems()])
out.cd()
th2 = makeH2D(name,graphs)
out.WriteTObject(th2)
return th2

if __name__ == "__main__":
from optparse import OptionParser
parser = OptionParser(usage="%prog [options] what path out")
parser.add_option("-s", "--sel", dest="sel", default=None, help="Select");
(options, args) = parser.parse_args()
(what,path,outname) = args
outfile = ROOT.TFile.Open(outname,"RECREATE")
muSlices = { 'barrel':(0,1.2), 'endcap':(1.2,2.4) }
elSlices = { 'barrel':(0,1.479), 'endcap':(1.479,2.5) }
for p in "data", "DY":
for l,slices in [('mu',muSlices),('el',elSlices)]:
assemble2D(outfile,"_".join([what,l,p]),path+"/%s_%%s.root"%l,slices,"pass_l3pt_coarse_"+p)
outfile.ls()
17 changes: 17 additions & 0 deletions HToZZ4L/python/plotting/cr_zl/plots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
nJet30 : nJet30 : [-0.5,0.5,1.5,2.5,3.5] : XTitle="N(Jets)", Logy
j1_btag : Jet1_btagCSV : 20,0,1 ; XTitle="Leading jet b-tag"
j1_pt : Jet1_pt : 24,0,200 ; XTitle="Leading jet b-tag", Logy
l3pt: WZ_lep3_pt : 24,0,100; XTitle="l_{3} p_{T} [GeV]", Logy
l3pt_coarse: min(WZ_lep3_pt,59.99) : [0,5,10,15,20,30,45,60]; XTitle="l_{3} p_{T} [GeV]"
l3eta: WZ_lep3_eta : 20,-2.5,2.5; XTitle="l_{3} #eta"
l3relIsoAfterFSR: WZ_lep3_relIsoAfterFSR : 20,0,4.5; XTitle="l_{3} relIso"
l3mvaId: WZ_lep3_mvaIdSpring15 : 20,-1,1; XTitle="l_{3} mva eleID"
l3segComp: WZ_lep3_segmentCompatibility : 20,0,1; XTitle="l_{3} segm comp"

mZ1: WZ_z_mass : 15,80,110; XTitle="m(Z) [GeV]", IncludeOverflows=False
mZ1_wide: WZ_z_mass : 24,55,180; XTitle="m(Z}) [GeV]"
m3l: WZ_mass : 15,80,200; XTitle="m(3l) [GeV]"
met: met_pt : 24,0,90; XTitle="E_{T}^{miss} [GeV]"
mtW: mt_2(met_pt,met_phi,WZ_lep3_pt,WZ_lep3_phi) : 15,0,90; XTitle="m_{T}(E_{T}^{miss}\, l_{3}) [GeV]"
#metNoHF: metNoHF_pt : 15,0,90; XTitle="E_{T}^{miss} [GeV]", Logy
#mtWNoHF: mt_2(metNoHF_pt,metNoHF_phi,WZ_lep3_pt,WZ_lep3_phi) : 15,0,90; XTitle="m_{T}(E_{T}^{miss}\, l_{3}) [GeV]"
5 changes: 5 additions & 0 deletions HToZZ4L/python/plotting/cr_zll/cuts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
hlt: HLT_Signal
base: zz1_mass > 70
z4l: zz1_mass > 70 && zz1_mass < 110 ; Disable=True
high: zz1_mass > 150 ; Disable=True
window: zz1_mass > 110 and zz1_mass < 150 ; Disable=True
26 changes: 26 additions & 0 deletions HToZZ4L/python/plotting/cr_zll/make_plots.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
T=/afs/cern.ch/work/g/gpetrucc/TREES_HZZ4L_231115/4L
BASE="python mcPlots.py --s2v -f -j 8 -P $T cr_zll/mca.txt -l 2.47 "
PDIR=plots/251115/cr_zll

WHAT=$1; shift;
POST=""; if [[ $1 != "" ]]; then POST=$1; shift; fi;
case $WHAT in
ss|2p2f|3p1f)
BASE="$BASE --mcc cr_zll/mcc-$WHAT.txt cr_zll/cuts.txt cr_zll/plots.txt --showRatio --maxRatioRange 0 2.48"
REBIN="1"; [[ "$WHAT" == "3p1f" ]] && REBIN=2;
for ll in all 2x2e 2x2mu; do
case $ll in
all) RUN="$BASE "; SUB="" ;;
2x2e) RUN="$BASE -A hlt 2x2e 'abs(zz1_z2_l1_pdgId)==11' "; SUB="$ll" ;;
2x2mu) RUN="$BASE -A hlt 2x2mu 'abs(zz1_z2_l1_pdgId)==13' "; SUB="$ll"; REBIN=$(( $REBIN * 2 ));;
esac;
echo "( $RUN --pdir=$PDIR/$WHAT/$POST/$SUB --rebin $REBIN $* )";
echo "( $RUN --pdir=$PDIR/$WHAT/$POST/$SUB/fits --sP mZ1_wide,met --fitData --flp DY,Top --rebin $(( $REBIN * 2 )) $* )";
echo "( ${RUN/--showRatio/} --pdir=$PDIR/$WHAT/$POST/$SUB/zscaled --scaleSigToData --sp DY --rebin $(( $REBIN * 2 )) $* )";
done
;;
all)
for W in ss 2p2f 3p1f; do
bash $0 $W;
done
esac
Loading

0 comments on commit 938244c

Please sign in to comment.