From 035121217c1998689697c1424d41240c952ba8f8 Mon Sep 17 00:00:00 2001 From: Elisabetta Manca Date: Tue, 12 Feb 2019 17:45:09 +0100 Subject: [PATCH 1/2] first attempt to apply calibration in multi-thread --- framework/RDFtree.py | 26 ++-- framework/RDFtreeV2.py | 111 ++++++++++++++ framework/module.cpp | 3 - framework/module.h | 1 - framework/plotter.py | 127 ++++++++++++++++ framework/snapshot.py | 1 + wmass/muonCalibration/applyCalibration.cpp | 37 +++++ wmass/muonCalibration/applyCalibration.h | 46 ++++++ wmass/muonCalibration/applyCalibration.so | Bin 0 -> 151840 bytes wmass/muonCalibration/basicPlots.py | 136 ++++++++++++++++++ wmass/muonCalibration/prepareSample.py | 52 +++++++ wmass/muonCalibration/prepareSampleAfter.py | 51 +++++++ wmass/muonCalibration/prepareSampleGen.cpp | 70 +++++++++ wmass/muonCalibration/prepareSampleGen.h | 44 ++++++ wmass/muonCalibration/prepareSampleGen.so | Bin 0 -> 154424 bytes wmass/muonCalibration/prepareSampleOLD.cpp | 73 ++++++++++ wmass/muonCalibration/prepareSampleOLD.h | 43 ++++++ wmass/muonCalibration/reweightSample.cpp | 38 +++++ wmass/muonCalibration/reweightSample.h | 41 ++++++ wmass/muonCalibration/reweightSample.so | Bin 0 -> 90320 bytes .../AngCoeff.cpp | 0 .../AngCoeff.h | 0 .../AngCoeff.so | Bin .../GetWeights.cpp | 0 .../GetWeights.h | 2 +- .../GetWeights.so | Bin .../TemplateBuilder.cpp | 0 .../TemplateBuilder.h | 0 .../TemplateBuilder.py | 0 .../TemplateBuilder.so | Bin .../TemplateBuilderPy.py | 0 .../TemplateProj.py | 0 .../defineHarmonics.py | 0 .../filter.py | 2 +- .../getAngularCoefficients.py | 0 .../keepVars.txt | 0 36 files changed, 889 insertions(+), 15 deletions(-) create mode 100644 framework/RDFtreeV2.py create mode 100644 framework/plotter.py create mode 100644 wmass/muonCalibration/applyCalibration.cpp create mode 100644 wmass/muonCalibration/applyCalibration.h create mode 100755 wmass/muonCalibration/applyCalibration.so create mode 100644 wmass/muonCalibration/basicPlots.py create mode 100644 wmass/muonCalibration/prepareSample.py create mode 100644 wmass/muonCalibration/prepareSampleAfter.py create mode 100644 wmass/muonCalibration/prepareSampleGen.cpp create mode 100644 wmass/muonCalibration/prepareSampleGen.h create mode 100755 wmass/muonCalibration/prepareSampleGen.so create mode 100644 wmass/muonCalibration/prepareSampleOLD.cpp create mode 100644 wmass/muonCalibration/prepareSampleOLD.h create mode 100644 wmass/muonCalibration/reweightSample.cpp create mode 100644 wmass/muonCalibration/reweightSample.h create mode 100755 wmass/muonCalibration/reweightSample.so rename wmass/{SignalTemplates => signalTemplates}/AngCoeff.cpp (100%) rename wmass/{SignalTemplates => signalTemplates}/AngCoeff.h (100%) rename wmass/{SignalTemplates => signalTemplates}/AngCoeff.so (100%) rename wmass/{SignalTemplates => signalTemplates}/GetWeights.cpp (100%) rename wmass/{SignalTemplates => signalTemplates}/GetWeights.h (97%) rename wmass/{SignalTemplates => signalTemplates}/GetWeights.so (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateBuilder.cpp (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateBuilder.h (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateBuilder.py (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateBuilder.so (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateBuilderPy.py (100%) rename wmass/{SignalTemplates => signalTemplates}/TemplateProj.py (100%) rename wmass/{SignalTemplates => signalTemplates}/defineHarmonics.py (100%) rename wmass/{SignalTemplates => signalTemplates}/filter.py (90%) rename wmass/{SignalTemplates => signalTemplates}/getAngularCoefficients.py (100%) rename wmass/{SignalTemplates => signalTemplates}/keepVars.txt (100%) diff --git a/framework/RDFtree.py b/framework/RDFtree.py index 2ad2d093074e5..8fc6ee440bc39 100644 --- a/framework/RDFtree.py +++ b/framework/RDFtree.py @@ -3,12 +3,13 @@ class RDFtree: - def __init__(self, inputFiles, outputDir, outputFiles, graphList=[]): + def __init__(self, inputFiles, outputDir, outputFiles, graphList=[], treeName='Events'): self.inputFiles = inputFiles # list of input files self.outputFiles = outputFiles # list of output files - one for each path - self.outputDir = outputDir # output directory + self.outputDir = outputDir # output directories self.graphList = graphList + self.treeName = treeName self.objList = [] # list of dictionaries containing objects to write self.rdfOut = [] self.nodesToRestart = [] @@ -38,8 +39,7 @@ def getOutput(self): if not os.path.exists(self.outputDir): os.system("mkdir -p " + self.outputDir) - - cwd = os.getcwd() + os.chdir(self.outputDir) print time.time()-self.start, "before writing objects" @@ -51,6 +51,8 @@ def getOutput(self): fout = ROOT.TFile(outfile+'_{f}'.format(f=self.nIter)+'.root', "recreate") fout.cd() for h in hList: + + h.Write() os.chdir('..') @@ -87,7 +89,7 @@ def run(self): # this is the starting RDF to be recreated at the beginning of each path RDF = ROOT.ROOT.RDataFrame - self.d = RDF("Events", self.inputFiles[j]) + self.d = RDF(self.treeName, self.inputFiles[j]) print 'analysing path:', path print self.nIter, 'iteration number:' @@ -99,7 +101,8 @@ def run(self): subpath = path[self.nodesToRestart[i]:] #if subpath is empty it doesn't loop - print subpath, 'subpath' + + objs[self.outputFiles[i]] = [] for idx, name in enumerate(subpath): # modifies RDF using modules in a sequential way @@ -133,9 +136,9 @@ def run(self): tmp_th2 = run.getTH2() tmp_th3 = run.getTH3() - objs[self.outputFiles[i]] = [] for obj in tmp_th1: + if isinstance(obj, ROOT.TH1D): objs[self.outputFiles[i]].append(ROOT.TH1D(obj)) @@ -158,12 +161,15 @@ def run(self): objs[self.outputFiles[i]].append(ROOT.RDF.RResultPtr('TH3D')(obj)) self.objList.append(objs) + triggerLoop = run.triggerLoop() + print 'var triggerLoop', triggerLoop self.rdfOut[i]=self.d if triggerLoop == True: + print 'am i triggering loop?' self.nodesToRestart[i]=self.nodesToRestart[i]+idx+1 # restart from that module print self.nodesToRestart[i], 'index for path', i, 'idx', idx @@ -177,18 +183,20 @@ def run(self): opts.fLazy = True print time.time()-self.start, "before snapshot" - out = self.d.Snapshot("Events",self.outputFiles[i], "", opts) + out = self.d.Snapshot(self.treeName,self.outputFiles[i], "", opts) # dummy histogram to trigger snapshot - h = self.d.Histo1D("event") + h = self.d.Define("event", "1").Histo1D("event") objs[self.outputFiles[i]].append(ROOT.RDF.RResultPtr('TH1D')(h)) + print check, 'before increasing' check = check +1 self.nIter = self.nIter+1 print 'triggered loop!' self.getOutput() # this triggers loop + print check if check == len(self.paths): stop = False #there is nothing to do so exit diff --git a/framework/RDFtreeV2.py b/framework/RDFtreeV2.py new file mode 100644 index 0000000000000..224792e423324 --- /dev/null +++ b/framework/RDFtreeV2.py @@ -0,0 +1,111 @@ +from header import * + +class RDFtree: + def __init__(self, outputDir, outputFile, inputFile, modules=[],treeName='Events'): + + self.outputDir = outputDir # output directory + self.outputFile = outputFile + self.inputFile = inputFile + self.modules = modules + self.treeName = treeName + + RDF = ROOT.ROOT.RDataFrame + self.d = RDF(self.treeName, self.inputFile) + self.entries = self.d.Count() #stores lazily the number of events + + self.objs = [] # objects to be received from modules + + def run(self): + + #start analysis + self.start = time.time() + + # modify RDF according to modules + for i, m in enumerate(self.modules): + + print 'analysing module', i+1 + + self.d = m.run(CastToRNode(self.d)) + tmp_th1 = m.getTH1() + tmp_th2 = m.getTH2() + tmp_th3 = m.getTH3() + + for obj in tmp_th1: + print obj.GetName() + self.objs.append(ROOT.RDF.RResultPtr('TH1D')(obj)) + + for obj in tmp_th2: + self.objs.append(ROOT.RDF.RResultPtr('TH2D')(obj)) + + for obj in tmp_th3: + self.objs.append(ROOT.RDF.RResultPtr('TH3D')(obj)) + + def branch(self, mlist): + + self.start = time.time() + + self.d1 = self.d + + for m in mlist: + + self.d1 = m.run(CastToRNode(self.d1)) + tmp_th1 = m.getTH1() + tmp_th2 = m.getTH2() + tmp_th3 = m.getTH3() + + for obj in tmp_th1: + self.objs.append(ROOT.RDF.RResultPtr('TH1D')(obj)) + + for obj in tmp_th2: + self.objs.append(ROOT.RDF.RResultPtr('TH2D')(obj)) + + for obj in tmp_th3: + self.objs.append(ROOT.RDF.RResultPtr('TH3D')(obj)) + + + def takeSnapshot(self): + + opts = ROOT.ROOT.RDF.RSnapshotOptions() + opts.fLazy = True + + print time.time()-self.start, "before snapshot" + out = self.d.Snapshot(self.treeName,self.outputFiles[i], "", opts) + + # dummy histogram to trigger snapshot + + h = self.d.Define("foo", "1").Histo1D("foo") + self.objs.append(ROOT.RDF.RResultPtr('TH1D')(h)) + + + def getOutput(self, outputFile=''): + + if not outputFile=='': + self.outputFile = outputFile + + # now write all the outputs together + + print "writing output files in "+ self.outputDir + + if not os.path.exists(self.outputDir): + os.system("mkdir -p " + self.outputDir) + + os.chdir(self.outputDir) + + fout = ROOT.TFile(self.outputFile, "recreate") + fout.cd() + + for obj in self.objs: + + obj.Write() + + os.chdir('..') + self.objs = [] # re-initialise object list + + print self.entries.GetValue(), " events processed in ", time.time()-self.start, " s" + + def saveGraph(self): + + from graphviz import Source + + RDF = ROOT.ROOT.RDataFrame(1000) + Source(ROOT.ROOT.RDF.SaveGraph(CastToRNode(self.d))).render() diff --git a/framework/module.cpp b/framework/module.cpp index 52d675cc24b9b..c0b52709ade94 100644 --- a/framework/module.cpp +++ b/framework/module.cpp @@ -10,6 +10,3 @@ std::vector> Module::getTH2(){ std::vector> Module::getTH3(){ return _h3List; } -bool Module::triggerLoop(){ - return _trigLoop; -} \ No newline at end of file diff --git a/framework/module.h b/framework/module.h index a464c7998f6a1..e601a651fa966 100644 --- a/framework/module.h +++ b/framework/module.h @@ -26,7 +26,6 @@ class Module { virtual std::vector> getTH1(); virtual std::vector> getTH2(); virtual std::vector> getTH3(); - virtual bool triggerLoop(); }; diff --git a/framework/plotter.py b/framework/plotter.py new file mode 100644 index 0000000000000..235f57a00f7c9 --- /dev/null +++ b/framework/plotter.py @@ -0,0 +1,127 @@ +import os +import ROOT +import copy + +ROOT.gInterpreter.Declare('TH1D *Obj2TH1D(TObject *p) { return (TH1D*)p; }') + +class plotter: + + def __init__(self, outdir, folder = '', fileList = []): + + self.folder = folder # folder containig the various outputs + self.fileList = fileList # list of files in each folders + self.canvas = [] + self.outdir = outdir + + ROOT.gROOT.SetBatch() + + if not os.path.exists(self.outdir): + os.system("mkdir -p " + self.outdir) + + def getHistos(self): + + self.histos = [] + + os.chdir(self.folder) + + for f in self.fileList: + + hlist = [] + + fIn = ROOT.TFile.Open(f) + + for key in fIn.GetListOfKeys(): + + h = fIn.Get(key.GetName()) + h.Sumw2() + + hlist.append(copy.deepcopy(h)) + + self.histos.append(hlist) + + os.chdir('..') + + self.histos = zip(*self.histos) # now in the right order + + def createStack(self): + + self.stacks = [] + + for group in self.histos: + + hs = ROOT.THStack(group[0].GetName(),"") + for h in group: + hs.Add(h) + + self.stacks.append(hs) + + def plotDataMC(self): + + + self.getHistos() + + for group in self.histos: # group of histos with same name + + legend = ROOT.TLegend(0.62, 0.70, 0.82, 0.88) + legend.SetFillColor(0) + legend.SetBorderSize(0) + legend.SetTextSize(0.03) + + legend.AddEntry(group[0], "Data", "PE1") + legend.AddEntry(group[1], "MC", "f") + + group[0].Scale(1./group[0].Integral()) + group[1].Scale(1./group[1].Integral()) + + c = ROOT.TCanvas(group[0].GetName(), '') + rp = ROOT.TRatioPlot(group[0], group[1]) + + #group[1].SetLineWidth(2) + #group[1].SetFillStyle(1001) + #group[1].SetLineColor(ROOT.kBlack) + #group[1].SetFillColor(ROOT.kAzure - 9) + + c.SetTicks(0, 1) + rp.GetLowYaxis().SetNdivisions(505) + c.cd() + rp.Draw() + + h = ROOT.Obj2TH1D(rp.GetUpperRefObject()) + h.SetMarkerStyle(ROOT.kFullCircle) + h.SetLineWidth(1) + h.SetMarkerSize(1.0) + h.SetMarkerColor(ROOT.kBlack) + h.SetLineColor(ROOT.kBlack) + + legend.Draw() + + c.Update() + c.SaveAs("{dir}/{c}.pdf".format(dir=self.outdir,c=c.GetName())) + + #self.canvas.append(copy.deepcopy(c)) + + def draw(self): + + if not os.path.exists(self.outdir): + os.system("mkdir -p " + self.outdir) + + for c in self.canvas: + c.SetDirectory(self.outdir) + + os.chdir(self.outdir) + + for c in self.canvas: + c.SaveAs("{c}.pdf".format(c=c.GetName())) + + os.chdir('..') + + + + + + + + + + + \ No newline at end of file diff --git a/framework/snapshot.py b/framework/snapshot.py index 944f790186226..b79e20938eaf7 100644 --- a/framework/snapshot.py +++ b/framework/snapshot.py @@ -9,6 +9,7 @@ def __init__(self): self.myTH1 = [] self.myTH2 = [] self.myTH3 = [] + self.trigLoop = False def doSomething(self,d): diff --git a/wmass/muonCalibration/applyCalibration.cpp b/wmass/muonCalibration/applyCalibration.cpp new file mode 100644 index 0000000000000..304f31e715839 --- /dev/null +++ b/wmass/muonCalibration/applyCalibration.cpp @@ -0,0 +1,37 @@ +#include "applyCalibration.h" + + +RNode applyCalibration::run(RNode d){ + + auto correctedPtPos = [*this](float pt, float eta, float phi){ + + float ptcorr = calib_->getCorrectedPt(pt,eta,phi,1); + return ptcorr; + + }; + + auto correctedPtNeg = [*this](float pt, float eta, float phi){ + + float ptcorr = calib_->getCorrectedPt(pt,eta,phi,-1); + return ptcorr; + + }; + + auto d1 = d.Define("corrpt1", correctedPtPos, {"pt1", "eta1", "phi1"}).Define("corrpt2", correctedPtNeg, {"pt2", "eta2", "phi2"}); + + + return d1; + + +} + +std::vector> applyCalibration::getTH1(){ + return _h1List; +} +std::vector> applyCalibration::getTH2(){ + return _h2List; +} +std::vector> applyCalibration::getTH3(){ + return _h3List; +} + diff --git a/wmass/muonCalibration/applyCalibration.h b/wmass/muonCalibration/applyCalibration.h new file mode 100644 index 0000000000000..91fe937ff8c13 --- /dev/null +++ b/wmass/muonCalibration/applyCalibration.h @@ -0,0 +1,46 @@ +#ifndef APPLYCALIBRATION_H +#define APPLYCALIBRATION_H + + +#include "ROOT/RDataFrame.hxx" +#include "ROOT/RVec.hxx" +#include "ROOT/RDF/RInterface.hxx" +#include "TH1D.h" +#include "TH2D.h" +#include "TString.h" +#include "TMath.h" +#include "TLorentzVector.h" +#include "../../framework/module.h" +#include "/scratch/emanca/WMass/MuonCalibration/KaMuCaSLC7/CMSSW_8_0_20/src/KaMuCa/Calibration/interface/KalmanMuonCalibrator.h" + +using namespace ROOT::VecOps; +using RNode = ROOT::RDF::RNode; +using rvec_f = const RVec &; +using rvec_i = const RVec &; + + +class applyCalibration : public Module { + + private: + + std::vector> _h1List; + std::vector> _h2List; + std::vector> _h3List; + std::string name_; + KalmanMuonCalibrator *calib_; + + public: + + applyCalibration(std::string calibName): name_(calibName) { + + calib_ = new KalmanMuonCalibrator(name_); + }; + ~applyCalibration() {}; + RNode run(RNode) override; + std::vector> getTH1() override; + std::vector> getTH2() override; + std::vector> getTH3() override; + +}; + +#endif \ No newline at end of file diff --git a/wmass/muonCalibration/applyCalibration.so b/wmass/muonCalibration/applyCalibration.so new file mode 100755 index 0000000000000000000000000000000000000000..cbf6e9873fa7b92e797cf0275b0e8dc9e70e4616 GIT binary patch literal 151840 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

FRN4 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 NQvH!W%6D1%zX40Qi9rAW literal 0 HcmV?d00001 diff --git a/wmass/muonCalibration/basicPlots.py b/wmass/muonCalibration/basicPlots.py new file mode 100644 index 0000000000000..45db0caf2a11b --- /dev/null +++ b/wmass/muonCalibration/basicPlots.py @@ -0,0 +1,136 @@ +import math + +class basicPlots: + + def __init__(self, gen = False, weight = False, res = 'J', calib = False): + + + self.myTH1 = [] + self.myTH2 = [] + self.myTH3 = [] + + self.gen = gen + self.weight = weight + self.res = res + self.calib = calib + + def run(self,d): + + self.d = d + + heta1 = d.Histo1D(("eta1", " ; #eta muon pos; ", 100, -2.5, 2.5), "eta1") + heta2 = d.Histo1D(("eta2", " ; #eta muon neg; ", 100, -2.5, 2.5), "eta2") + + hphi1 = d.Histo1D(("phi1", " ; #phi muon pos; ", 100, -math.pi, math.pi), "phi1") + hphi2 = d.Histo1D(("phi2", " ; #phi muon neg; ", 100, -math.pi, math.pi), "phi2") + + + self.myTH1.append(heta1) + self.myTH1.append(heta2) + + self.myTH1.append(hphi1) + self.myTH1.append(hphi2) + + mypt1 = 'pt1' + mypt2 = 'pt2' + + if self.calib: + mypt1 = 'corrpt1' + mypt2 = 'corrpt2' + + if self.res == 'Z': + + hptRes = d.Histo1D(("ptRes", " ; p_{T} Z ; ", 200, 0, 100), "ptRes") + hmass = d.Histo1D(("mass", " ; Z dimuon mass ; ", 100, 75, 115), "mass") + + self.myTH1.append(hptRes) + self.myTH1.append(hmass) + + if not self.gen: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 22, 100), "{}".format(mypt1)) + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 20, 100), "{}".format(mypt2)) + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + + else: + + if self.weight: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 22, 100), "mcpt1", "ptWeight") + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 20, 100), "mcpt2", "ptWeight") + + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + + else: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 22, 100), "mcpt1") + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 20, 100), "mcpt2") + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + else: + + hptRes = d.Histo1D(("ptRes", " ; p_{T} J/#Psi ; ", 200, 0, 100), "ptRes") + hmass = d.Histo1D(("mass", " ; J/#Psi dimuon mass ; ", 100, 2.895, 3.295), "mass") + + self.myTH1.append(hptRes) + self.myTH1.append(hmass) + + if not self.gen: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 5, 30), "{}".format(mypt1)) + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 5, 30), "{}".format(mypt2)) + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + + else: + + if self.weight: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 5, 30), "mcpt1", "ptWeight") + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 5, 30), "mcpt2", "ptWeight") + + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + + else: + + hpt1 = d.Histo1D(("pt1", " ; p_{T} muon pos; ", 100, 5, 30), "mcpt1") + hpt2 = d.Histo1D(("pt2", " ; p_{T} muon neg; ", 100, 5, 30), "mcpt2") + + self.myTH1.append(hpt1) + self.myTH1.append(hpt2) + + + + + return self.d + + def getTH1(self): + + return self.myTH1 + + def getTH2(self): + + return self.myTH2 + + def getTH3(self): + + return self.myTH3 + + def triggerLoop(self): + + return self.trigLoop + + diff --git a/wmass/muonCalibration/prepareSample.py b/wmass/muonCalibration/prepareSample.py new file mode 100644 index 0000000000000..e1caccb8c0564 --- /dev/null +++ b/wmass/muonCalibration/prepareSample.py @@ -0,0 +1,52 @@ +class prepareSample: + + def __init__(self, cut, target, isMC = True, gen = False): + + self.myTH1 = [] + self.myTH2 = [] + self.myTH3 = [] + + self.isMC = isMC + self.gen = gen + self.cut = cut + self.target = target + + def run(self,d): + + if not self.gen: + + self.d = d.Filter(self.cut)\ + .Define('scale', 'mass/{t}'.format(t=self.target))\ + .Define('resolution', 'massErr/{t}'.format(t=self.target))\ + .Define('v1', 'ROOT::Math::PtEtaPhiMVector(pt1,eta1,phi1,0.105)')\ + .Define('v2', 'ROOT::Math::PtEtaPhiMVector(pt2,eta2,phi2,0.105)')\ + .Define('rapidity', '(v1+v2).Rapidity()')\ + .Filter('fabs(rapidity)<2.4')\ + .Define('ptRes', 'float((v1+v2).Pt())') + + + else: + + self.d = d.Filter(self.cut)\ + .Define('scale', 'mass/{t}'.format(t=self.target))\ + .Define('resolution', 'massErr/{t}'.format(t=self.target))\ + .Define('v1', 'ROOT::Math::PtEtaPhiMVector(mcpt1,eta1,phi1,0.105)')\ + .Define('v2', 'ROOT::Math::PtEtaPhiMVector(mcpt2,eta2,phi2,0.105)')\ + .Define('rapidity', '(v1+v2).Rapidity()')\ + .Filter('fabs(rapidity)<2.4')\ + .Define('ptRes', 'float((v1+v2).Pt())') + + + return self.d + + def getTH1(self): + + return self.myTH1 + + def getTH2(self): + + return self.myTH2 + + def getTH3(self): + + return self.myTH3 diff --git a/wmass/muonCalibration/prepareSampleAfter.py b/wmass/muonCalibration/prepareSampleAfter.py new file mode 100644 index 0000000000000..b3515e68746b9 --- /dev/null +++ b/wmass/muonCalibration/prepareSampleAfter.py @@ -0,0 +1,51 @@ +class prepareSampleAfter: + + ROOT.gInterpreter.ProcessLine(''' + std::vector myRndGens(8); + int seed = 1; // not 0 because seed 0 has a special meaning + for (auto &&gen : myRndGens) gen.SetSeed(seed++); + ''') + + + def __init__(self, cut,isMC = True, gen = False, res = 'J'): + + self.myTH1 = [] + self.myTH2 = [] + self.myTH3 = [] + + self.isMC = isMC + self.gen = gen + self.cut = cut + self.target = target + + def run(self,d): + + + if not self.gen: + + self.d = d.Filter(self.cut)\ + .Define('v1', 'ROOT::Math::PtEtaPhiMVector(corrpt1,eta1,phi1,0.105)')\ + .Define('v2', 'ROOT::Math::PtEtaPhiMVector(corrpt2,eta2,phi2,0.105)')\ + .Define('corrMass', 'float((v1+v2).M())') + + else: + + self.d = d.Filter(self.cut)\ + .Define('smearedgenMass', 'genMass+myRndGens[rdfslot_].Gaus(0, massError)') + + + heta1 = d.Histo1D(("eta1", " ; #eta muon pos; ", 100, -2.5, 2.5), "eta1") + + return self.d + + def getTH1(self): + + return self.myTH1 + + def getTH2(self): + + return self.myTH2 + + def getTH3(self): + + return self.myTH3 diff --git a/wmass/muonCalibration/prepareSampleGen.cpp b/wmass/muonCalibration/prepareSampleGen.cpp new file mode 100644 index 0000000000000..ad0e158a6ddac --- /dev/null +++ b/wmass/muonCalibration/prepareSampleGen.cpp @@ -0,0 +1,70 @@ +#include "prepareSampleGen.h" + + +RNode prepareSampleGen::run(RNode d){ + + // define scale, resolution and rapidity + + auto rapidity = [](float pt1, float pt2, float eta1, float eta2, float phi1, float phi2){ + + + TLorentzVector v1(1,1,1,1); + TLorentzVector v2(1,1,1,1); + + v1.SetPtEtaPhiM(pt1,eta1,phi1,0.105); + v2.SetPtEtaPhiM(pt2,eta2,phi2,0.105); + auto rapidity =(v1+v2).Rapidity(); + + return rapidity; +}; + +auto ptResonance = [](float pt1, float pt2, float eta1, float eta2, float phi1, float phi2){ + + TLorentzVector v1(1,1,1,1); + TLorentzVector v2(1,1,1,1); + + v1.SetPtEtaPhiM(pt1,eta1,phi1,0.105); + v2.SetPtEtaPhiM(pt2,eta2,phi2,0.105); + float ptRes =(v1+v2).Pt(); + + return ptRes; +}; + +TRandom3 *random_ = new TRandom3(10101982); + +auto smear = [random_](float mass, float massErr){ + + //std::cout << " random " << std::endl; + + float smeared = random_->Gaus(0,massErr); + + return mass+smeared; + +}; + + +auto d1 = d.Filter(_myString).Define("rapidity", rapidity, {"mcpt1","mcpt2","eta1","eta2","phi1","phi2"}).Define("ptRes", ptResonance, {"mcpt1","mcpt2","eta1","eta2","phi1","phi2"}).Filter("fabs(rapidity)<2.4") +.Define("genMassSmeared", smear, {"genMass", "massErr"}); + +auto h = d1.Histo1D(TH1D("ptRes", "ptRes", 200, 0, 100), "ptRes"); + +_h1List.push_back(h); + + +return d1; + + +} + +std::vector> prepareSampleGen::getTH1(){ + return _h1List; +} +std::vector> prepareSampleGen::getTH2(){ + return _h2List; +} +std::vector> prepareSampleGen::getTH3(){ + return _h3List; +} +bool prepareSampleGen::triggerLoop(){ + return _trigLoop; +} diff --git a/wmass/muonCalibration/prepareSampleGen.h b/wmass/muonCalibration/prepareSampleGen.h new file mode 100644 index 0000000000000..eb572fa5a667b --- /dev/null +++ b/wmass/muonCalibration/prepareSampleGen.h @@ -0,0 +1,44 @@ +#ifndef PREPARESAMPLEGEN_H +#define PREPARESAMPLEGEN_H + + +#include "ROOT/RDataFrame.hxx" +#include "ROOT/RVec.hxx" +#include "ROOT/RDF/RInterface.hxx" +#include "TH1D.h" +#include "TH2D.h" +#include "TString.h" +#include "TMath.h" +#include "TLorentzVector.h" +#include "TRandom3.h" +#include "../../framework/module.h" + +using namespace ROOT::VecOps; +using RNode = ROOT::RDF::RNode; +using rvec_f = const RVec &; +using rvec_i = const RVec &; + + +class prepareSampleGen : public Module { + + private: + + std::vector> _h1List; + std::vector> _h2List; + std::vector> _h3List; + bool _trigLoop = false; + std::string _myString; + + public: + + prepareSampleGen(std::string s): _myString(s) {}; + ~prepareSampleGen() {}; + RNode run(RNode) override; + std::vector> getTH1() override; + std::vector> getTH2() override; + std::vector> getTH3() override; + bool triggerLoop() override; + +}; + +#endif \ No newline at end of file diff --git a/wmass/muonCalibration/prepareSampleGen.so b/wmass/muonCalibration/prepareSampleGen.so new file mode 100755 index 0000000000000000000000000000000000000000..356d9bb0e84688cd6ee148ca2ab3762c0b64fd88 GIT binary patch literal 154424 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 prepareSample::getTH1(){ + return _h1List; +} +std::vector> prepareSample::getTH2(){ + return _h2List; +} +std::vector> prepareSample::getTH3(){ + return _h3List; +} +bool prepareSample::triggerLoop(){ + return _trigLoop; +} diff --git a/wmass/muonCalibration/prepareSampleOLD.h b/wmass/muonCalibration/prepareSampleOLD.h new file mode 100644 index 0000000000000..e16960995fe04 --- /dev/null +++ b/wmass/muonCalibration/prepareSampleOLD.h @@ -0,0 +1,43 @@ +#ifndef PREPARESAMPLE_H +#define PREPARESAMPLE_H + + +#include "ROOT/RDataFrame.hxx" +#include "ROOT/RVec.hxx" +#include "ROOT/RDF/RInterface.hxx" +#include "TH1D.h" +#include "TH2D.h" +#include "TString.h" +#include "TMath.h" +#include "TLorentzVector.h" +#include "../../framework/module.h" + +using namespace ROOT::VecOps; +using RNode = ROOT::RDF::RNode; +using rvec_f = const RVec &; +using rvec_i = const RVec &; + + +class prepareSample : public Module { + + private: + + std::vector> _h1List; + std::vector> _h2List; + std::vector> _h3List; + bool _trigLoop = false; + std::string _myString; + + public: + + prepareSample(std::string s): _myString(s) {}; + ~prepareSample() {}; + RNode run(RNode) override; + std::vector> getTH1() override; + std::vector> getTH2() override; + std::vector> getTH3() override; + bool triggerLoop() override; + +}; + +#endif \ No newline at end of file diff --git a/wmass/muonCalibration/reweightSample.cpp b/wmass/muonCalibration/reweightSample.cpp new file mode 100644 index 0000000000000..c5e150d5d2a22 --- /dev/null +++ b/wmass/muonCalibration/reweightSample.cpp @@ -0,0 +1,38 @@ +#include "reweightSample.h" + + +RNode reweightSample::run(RNode d){ + + TFile *f = TFile::Open("TEST/testData.root"); + TFile *f1 = TFile::Open("TEST/test.root"); + + TH1D *hTarget = (TH1D*)f->Get("ptRes"); + TH1D *h = (TH1D*)f1->Get("ptRes"); + + hTarget->Divide(h); + + auto weights = [hTarget](float ptRes){ + + int bin = hTarget->FindBin(ptRes); + + + return hTarget->GetBinContent(bin); + + }; + + auto d1 = d.Define("ptWeight", weights, {"ptRes"}); + + return d1; + + +} + +std::vector> reweightSample::getTH1(){ + return _h1List; +} +std::vector> reweightSample::getTH2(){ + return _h2List; +} +std::vector> reweightSample::getTH3(){ + return _h3List; +} diff --git a/wmass/muonCalibration/reweightSample.h b/wmass/muonCalibration/reweightSample.h new file mode 100644 index 0000000000000..279b38cc71e44 --- /dev/null +++ b/wmass/muonCalibration/reweightSample.h @@ -0,0 +1,41 @@ +#ifndef REWEIGHTSAMPLE_H +#define REWEIGHTSAMPLE_H + + +#include "ROOT/RDataFrame.hxx" +#include "ROOT/RVec.hxx" +#include "ROOT/RDF/RInterface.hxx" +#include "TH1D.h" +#include "TH2D.h" +#include "TString.h" +#include "TMath.h" +#include "TLorentzVector.h" +#include "../../framework/module.h" + +using namespace ROOT::VecOps; +using RNode = ROOT::RDF::RNode; +using rvec_f = const RVec &; +using rvec_i = const RVec &; + + +class reweightSample : public Module { + + private: + + std::vector> _h1List; + std::vector> _h2List; + std::vector> _h3List; + std::string _myString; + + public: + + reweightSample() {}; + ~reweightSample() {}; + RNode run(RNode) override; + std::vector> getTH1() override; + std::vector> getTH2() override; + std::vector> getTH3() override; + +}; + +#endif \ No newline at end of file diff --git a/wmass/muonCalibration/reweightSample.so b/wmass/muonCalibration/reweightSample.so new file mode 100755 index 0000000000000000000000000000000000000000..3cd7a7d3bfb51e75cdecafdc26a5410f32925f5e GIT binary patch literal 90320 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 _h1List; std::vector> _h2List; std::vector> _h3List; - bool _trigLoop; + bool _trigLoop = false; std::string _myString; public: diff --git a/wmass/SignalTemplates/GetWeights.so b/wmass/signalTemplates/GetWeights.so similarity index 100% rename from wmass/SignalTemplates/GetWeights.so rename to wmass/signalTemplates/GetWeights.so diff --git a/wmass/SignalTemplates/TemplateBuilder.cpp b/wmass/signalTemplates/TemplateBuilder.cpp similarity index 100% rename from wmass/SignalTemplates/TemplateBuilder.cpp rename to wmass/signalTemplates/TemplateBuilder.cpp diff --git a/wmass/SignalTemplates/TemplateBuilder.h b/wmass/signalTemplates/TemplateBuilder.h similarity index 100% rename from wmass/SignalTemplates/TemplateBuilder.h rename to wmass/signalTemplates/TemplateBuilder.h diff --git a/wmass/SignalTemplates/TemplateBuilder.py b/wmass/signalTemplates/TemplateBuilder.py similarity index 100% rename from wmass/SignalTemplates/TemplateBuilder.py rename to wmass/signalTemplates/TemplateBuilder.py diff --git a/wmass/SignalTemplates/TemplateBuilder.so b/wmass/signalTemplates/TemplateBuilder.so similarity index 100% rename from wmass/SignalTemplates/TemplateBuilder.so rename to wmass/signalTemplates/TemplateBuilder.so diff --git a/wmass/SignalTemplates/TemplateBuilderPy.py b/wmass/signalTemplates/TemplateBuilderPy.py similarity index 100% rename from wmass/SignalTemplates/TemplateBuilderPy.py rename to wmass/signalTemplates/TemplateBuilderPy.py diff --git a/wmass/SignalTemplates/TemplateProj.py b/wmass/signalTemplates/TemplateProj.py similarity index 100% rename from wmass/SignalTemplates/TemplateProj.py rename to wmass/signalTemplates/TemplateProj.py diff --git a/wmass/SignalTemplates/defineHarmonics.py b/wmass/signalTemplates/defineHarmonics.py similarity index 100% rename from wmass/SignalTemplates/defineHarmonics.py rename to wmass/signalTemplates/defineHarmonics.py diff --git a/wmass/SignalTemplates/filter.py b/wmass/signalTemplates/filter.py similarity index 90% rename from wmass/SignalTemplates/filter.py rename to wmass/signalTemplates/filter.py index 23cf65456dfcc..3ea6225db9100 100644 --- a/wmass/SignalTemplates/filter.py +++ b/wmass/signalTemplates/filter.py @@ -12,7 +12,7 @@ def __init__(self, string): def run(self,d): - self.d = d.Filter(self.string) # selects W- + self.d = d.Filter(self.string) return self.d diff --git a/wmass/SignalTemplates/getAngularCoefficients.py b/wmass/signalTemplates/getAngularCoefficients.py similarity index 100% rename from wmass/SignalTemplates/getAngularCoefficients.py rename to wmass/signalTemplates/getAngularCoefficients.py diff --git a/wmass/SignalTemplates/keepVars.txt b/wmass/signalTemplates/keepVars.txt similarity index 100% rename from wmass/SignalTemplates/keepVars.txt rename to wmass/signalTemplates/keepVars.txt From a0c55f95c16dd9fc52fe99c6dc2c0c8bd7ed6d55 Mon Sep 17 00:00:00 2001 From: Elisabetta Manca Date: Wed, 6 Mar 2019 18:11:45 +0100 Subject: [PATCH 2/2] first version of stack plots --- framework/RDFtreeV2.py | 99 ++++---- framework/header.py | 19 +- framework/module.py | 48 ++++ framework/plotter.py | 107 +++++++-- wmass/controlPlots/controlPlots.py | 70 ++++++ wmass/controlPlots/defs.py | 225 ++++++++++++++++++ wmass/muonCalibration/LineshapeFitter.py | 151 ++++++++++++ wmass/muonCalibration/applyCalibration.cpp | 4 +- wmass/muonCalibration/applyCalibration.so | Bin 151840 -> 146992 bytes wmass/muonCalibration/fittingTools.py | 101 ++++++++ wmass/muonCalibration/prepareSample.py | 1 + wmass/muonCalibration/prepareSampleAfter.py | 83 +++++-- wmass/muonCalibration/reweightSample.cpp | 7 +- wmass/muonCalibration/reweightSample.so | Bin 90320 -> 90320 bytes wmass/signalTemplates/ACoeff.py | 71 ++++++ wmass/signalTemplates/AngCoeff.cpp | 11 +- wmass/signalTemplates/AngCoeff.h | 4 - wmass/signalTemplates/AngCoeff.so | Bin 147400 -> 151184 bytes wmass/signalTemplates/defineHarmonics.py | 9 - .../signalTemplates/getAngularCoefficients.py | 5 +- wmass/signalTemplates/muonCalibration.py | 103 ++++++++ wmass/signalTemplates/test.py | 126 ++++++++++ wmass/signalTemplates/test2.py | 107 +++++++++ 23 files changed, 1238 insertions(+), 113 deletions(-) create mode 100644 framework/module.py create mode 100644 wmass/controlPlots/controlPlots.py create mode 100644 wmass/controlPlots/defs.py create mode 100644 wmass/muonCalibration/LineshapeFitter.py create mode 100644 wmass/muonCalibration/fittingTools.py create mode 100644 wmass/signalTemplates/ACoeff.py create mode 100644 wmass/signalTemplates/muonCalibration.py create mode 100644 wmass/signalTemplates/test.py create mode 100644 wmass/signalTemplates/test2.py diff --git a/framework/RDFtreeV2.py b/framework/RDFtreeV2.py index 224792e423324..043e4206f2bca 100644 --- a/framework/RDFtreeV2.py +++ b/framework/RDFtreeV2.py @@ -1,66 +1,65 @@ from header import * +import copy class RDFtree: - def __init__(self, outputDir, outputFile, inputFile, modules=[],treeName='Events'): + def __init__(self, outputDir, inputFile,treeName='Events'): self.outputDir = outputDir # output directory - self.outputFile = outputFile self.inputFile = inputFile - self.modules = modules + self.treeName = treeName RDF = ROOT.ROOT.RDataFrame self.d = RDF(self.treeName, self.inputFile) self.entries = self.d.Count() #stores lazily the number of events - self.objs = [] # objects to be received from modules + self.modules = [] - def run(self): - - #start analysis - self.start = time.time() - - # modify RDF according to modules - for i, m in enumerate(self.modules): + self.objs = {} # objects to be received from modules + + self.node = {} # dictionary branchName - RDF + self.node['input'] = self.d # assign input RDF to a branch called 'input' - print 'analysing module', i+1 + self.graph = {} # save the graph to write it in the end - self.d = m.run(CastToRNode(self.d)) - tmp_th1 = m.getTH1() - tmp_th2 = m.getTH2() - tmp_th3 = m.getTH3() - for obj in tmp_th1: - print obj.GetName() - self.objs.append(ROOT.RDF.RResultPtr('TH1D')(obj)) + #start analysis + self.start = time.time() + + def branch(self, nodeToStart, nodeToEnd, outputFile, modules=[]): - for obj in tmp_th2: - self.objs.append(ROOT.RDF.RResultPtr('TH2D')(obj)) + self.outputFile = outputFile + self.objs[self.outputFile] = [] - for obj in tmp_th3: - self.objs.append(ROOT.RDF.RResultPtr('TH3D')(obj)) + if nodeToStart in self.graph: + self.graph[nodeToStart].append(nodeToEnd) + else: + self.graph[nodeToStart]=[nodeToEnd] - def branch(self, mlist): + branchRDF = self.node[nodeToStart] - self.start = time.time() + lenght = len(self.modules) - self.d1 = self.d + self.modules.extend(modules) - for m in mlist: + # modify RDF according to modules + for i, m in enumerate(self.modules[lenght:]): - self.d1 = m.run(CastToRNode(self.d1)) + branchRDF = m.run(CastToRNode(branchRDF)) tmp_th1 = m.getTH1() tmp_th2 = m.getTH2() tmp_th3 = m.getTH3() for obj in tmp_th1: - self.objs.append(ROOT.RDF.RResultPtr('TH1D')(obj)) + self.objs[self.outputFile].append(ROOT.RDF.RResultPtr('TH1D')(obj)) for obj in tmp_th2: - self.objs.append(ROOT.RDF.RResultPtr('TH2D')(obj)) + self.objs[self.outputFile].append(ROOT.RDF.RResultPtr('TH2D')(obj)) for obj in tmp_th3: - self.objs.append(ROOT.RDF.RResultPtr('TH3D')(obj)) + self.objs[self.outputFile].append(ROOT.RDF.RResultPtr('TH3D')(obj)) + + self.node[nodeToEnd] = branchRDF def takeSnapshot(self): @@ -69,7 +68,7 @@ def takeSnapshot(self): opts.fLazy = True print time.time()-self.start, "before snapshot" - out = self.d.Snapshot(self.treeName,self.outputFiles[i], "", opts) + out = self.d.Snapshot(self.treeName,self.outputFile[i], "", opts) # dummy histogram to trigger snapshot @@ -77,10 +76,7 @@ def takeSnapshot(self): self.objs.append(ROOT.RDF.RResultPtr('TH1D')(h)) - def getOutput(self, outputFile=''): - - if not outputFile=='': - self.outputFile = outputFile + def getOutput(self): # now write all the outputs together @@ -90,22 +86,35 @@ def getOutput(self, outputFile=''): os.system("mkdir -p " + self.outputDir) os.chdir(self.outputDir) + + for outfile, hList in self.objs.iteritems(): - fout = ROOT.TFile(self.outputFile, "recreate") - fout.cd() - - for obj in self.objs: + fout = ROOT.TFile(outfile, "recreate") + fout.cd() + + for h in hList: + + h.Write() - obj.Write() os.chdir('..') - self.objs = [] # re-initialise object list + self.objs = {} # re-initialise object list print self.entries.GetValue(), " events processed in ", time.time()-self.start, " s" def saveGraph(self): - from graphviz import Source + from graphviz import Digraph + + dot = Digraph(name='my analysis', filename = 'graph.pdf') + + for node, nodelist in self.graph.iteritems(): + for n in nodelist: + + dot.node(node, n) + + + print(dot.source) + + #dot.render(view=True) - RDF = ROOT.ROOT.RDataFrame(1000) - Source(ROOT.ROOT.RDF.SaveGraph(CastToRNode(self.d))).render() diff --git a/framework/header.py b/framework/header.py index 21523e4a5b47a..1337d4af6aa8b 100644 --- a/framework/header.py +++ b/framework/header.py @@ -23,4 +23,21 @@ class NodeCaster { def CastToRNode(node): return ROOT.NodeCaster(node.__cppname__).Cast(node) -# end code for casting \ No newline at end of file +# end code for casting +""" +NSlots = 64 +ROOT.gInterpreter.ProcessLine(''' + std::vector myRndGens({NSlots}); + int seed = 1; // not 0 because seed 0 has a special meaning + for (auto &&gen : myRndGens) gen.SetSeed(seed++); + '''.format(NSlots = NSlots)) + """ + +getVector_code =''' +float getVector (std::vector vec, int idx) +{ + return vec[idx]; +} +''' + +ROOT.gInterpreter.Declare(getVector_code) \ No newline at end of file diff --git a/framework/module.py b/framework/module.py new file mode 100644 index 0000000000000..865b2b8e3949d --- /dev/null +++ b/framework/module.py @@ -0,0 +1,48 @@ +# Base class from which the other modules will inherit + +class module: + + def __init__(self): + + self.myTH1 = [] + self.myTH2 = [] + self.myTH3 = [] + + + def run(self,d): + + pass + + def defineSubcollectionFromIndex(self, collection, subcollection, idx, d): + + columns = list(d.GetColumnNames()) + columns.extend(d.GetDefinedColumnNames()) + + main = [c for c in columns if c.startswith(collection)] # columns of the main collection + + subSet = [c.replace(collection,subcollection) for c in main if c.startswith(collection)] # columns of the sub collection + + for i,s in enumerate(subSet): + + d = d.Define(s, '{vec}[{idx}]'.format(vec=main[i], idx=idx)) + + # define new vector length + + d = d.Define("n{}".format(subcollection), "{}".format(1)) + + + return d + + def getTH1(self): + + return self.myTH1 + + def getTH2(self): + + return self.myTH2 + + def getTH3(self): + + return self.myTH3 + + diff --git a/framework/plotter.py b/framework/plotter.py index 235f57a00f7c9..85f2a0117126c 100644 --- a/framework/plotter.py +++ b/framework/plotter.py @@ -6,12 +6,14 @@ class plotter: - def __init__(self, outdir, folder = '', fileList = []): + def __init__(self, outdir, folder = '', fileList = [], norm = 1): self.folder = folder # folder containig the various outputs self.fileList = fileList # list of files in each folders self.canvas = [] self.outdir = outdir + self.norm = norm + self.colours =[ROOT.kRed, ROOT.kGreen+2, ROOT.kBlue, ROOT.kMagenta+1, ROOT.kOrange+7, ROOT.kCyan+1, ROOT.kGray+2, ROOT.kViolet+5, ROOT.kSpring+5, ROOT.kAzure+1, ROOT.kPink+7, ROOT.kOrange+3, ROOT.kBlue+3, ROOT.kMagenta+3, ROOT.kRed+2] ROOT.gROOT.SetBatch() @@ -32,10 +34,13 @@ def getHistos(self): for key in fIn.GetListOfKeys(): + if key.InheritsFrom(ROOT.TH2D.Class()): continue + h = fIn.Get(key.GetName()) + h.Sumw2() - hlist.append(copy.deepcopy(h)) + hlist.append((copy.deepcopy(h),f.split('_')[0])) self.histos.append(hlist) @@ -43,17 +48,54 @@ def getHistos(self): self.histos = zip(*self.histos) # now in the right order - def createStack(self): + def plotStack(self): + + self.getHistos() self.stacks = [] - for group in self.histos: - - hs = ROOT.THStack(group[0].GetName(),"") - for h in group: - hs.Add(h) + for group in self.histos: - self.stacks.append(hs) + hs = ROOT.THStack((group[0])[0].GetName(),"") + + c = ROOT.TCanvas(hs.GetName(), '') + + legend = ROOT.TLegend(0.62, 0.70, 0.82, 0.88) + legend.SetFillColor(0) + legend.SetBorderSize(0) + legend.SetTextSize(0.03) + + hdata = ROOT.TH1D() + for i,tup in enumerate(group): + + if 'data' in tup[1]: + legend.AddEntry(tup[1], "Data", "PE1") + hdata = tup[0] + hdata.SetMarkerStyle(20) + hdata.SetMarkerColor(ROOT.kBlack) + continue + + legend.AddEntry(tup[0], tup[1], "f") + tup[0].Scale(self.norm) + tup[0].SetFillStyle(1001) + tup[0].SetLineWidth(0) + tup[0].SetFillColor(self.colours[i]) + hs.Add(tup[0]) + + c.SetTicks(0, 1) + c.cd() + + hs.Draw("HIST") + hdata.Draw("same") + + legend.Draw() + + c.Update() + c.SaveAs("{dir}/{c}.pdf".format(dir=self.outdir,c=c.GetName())) + + + + def plotDataMC(self): @@ -94,27 +136,52 @@ def plotDataMC(self): h.SetLineColor(ROOT.kBlack) legend.Draw() - + c.Update() c.SaveAs("{dir}/{c}.pdf".format(dir=self.outdir,c=c.GetName())) #self.canvas.append(copy.deepcopy(c)) - def draw(self): + def plotDataMCDiff(self): - if not os.path.exists(self.outdir): - os.system("mkdir -p " + self.outdir) + self.getHistos() - for c in self.canvas: - c.SetDirectory(self.outdir) - - os.chdir(self.outdir) + for group in self.histos: # group of histos with same name - for c in self.canvas: - c.SaveAs("{c}.pdf".format(c=c.GetName())) + legend = ROOT.TLegend(0.62, 0.70, 0.82, 0.88) + legend.SetFillColor(0) + legend.SetBorderSize(0) + legend.SetTextSize(0.03) - os.chdir('..') + legend.AddEntry(group[0], "Data", "PE1") + legend.AddEntry(group[1], "MC", "f") + + c = ROOT.TCanvas(group[0].GetName(), '') + rp = ROOT.TRatioPlot(group[0], group[1],'diff') + + #group[1].SetLineWidth(2) + #group[1].SetFillStyle(1001) + #group[1].SetLineColor(ROOT.kBlack) + #group[1].SetFillColor(ROOT.kAzure - 9) + + c.SetTicks(0, 1) + rp.GetLowYaxis().SetNdivisions(505) + c.cd() + rp.Draw() + + h = ROOT.Obj2TH1D(rp.GetUpperRefObject()) + h.SetMarkerStyle(ROOT.kFullCircle) + h.SetLineWidth(1) + h.SetMarkerSize(1.0) + h.SetMarkerColor(ROOT.kBlack) + h.SetLineColor(ROOT.kBlack) + + legend.Draw() + c.Update() + c.SaveAs("{dir}/{c}.pdf".format(dir=self.outdir,c=c.GetName())) + + #self.canvas.append(copy.deepcopy(c)) diff --git a/wmass/controlPlots/controlPlots.py b/wmass/controlPlots/controlPlots.py new file mode 100644 index 0000000000000..3ac38428ba9fd --- /dev/null +++ b/wmass/controlPlots/controlPlots.py @@ -0,0 +1,70 @@ +import math +import ROOT + +import sys +sys.path.append('../../framework') +from module import * + +class controlPlots(module): + + def __init__(self, selections, variables, dataType, xsec, file, targetLumi = 1.): + + self.myTH1 = [] + self.myTH2 = [] + self.myTH3 = [] + + self.dataType = dataType # mc or data + self.selections = selections # for example, 'W' + self.variables = variables + + self.xsec = xsec / 0.001 # pb to fb conversion + self.file = file + self.targetLumi = targetLumi + + + + def run(self,d): + + + RDF = ROOT.ROOT.RDataFrame + runs = RDF('Runs', self.file) + + if self.dataType == 'mc': + genEventSumw = runs.Mean("genEventSumw").GetValue() + + self.d = d.Filter(self.selections[self.dataType]['cut']) + + # define mc specific weights + + if self.dataType == 'mc': + + self.d = self.d.Define('lumiweight', '{L}/({genEventSumw}/{xsec})'.format(L=self.targetLumi, genEventSumw = genEventSumw, xsec = self.xsec))\ + .Define("Generator_weight_norm","Generator_weight/fabs(Generator_weight)")\ + .Define('totweight', 'lumiweight*Generator_weight_norm*{}'.format(self.selections[self.dataType]['weight'])) + + else: + self.d = self.d.Define('totweight', '1') + + # loop over variables + + for Collection,dic in self.variables.iteritems(): + + + if not dic['newCollection'] == '': + + if 'index' in dic: + + # first of all define a new subcollection with all the columns of the original collection + + self.d = self.defineSubcollectionFromIndex(Collection, dic['newCollection'], dic['index'], self.d) + + for var,tools in dic['variables'].iteritems(): + + columns = list(self.d.GetDefinedColumnNames()) + + h = self.d.Histo1D((var, " ; {}; ".format(tools[0]), tools[1],tools[2], tools[3]), dic['newCollection']+dic['modifiers']+'_'+var, 'totweight') + + self.myTH1.append(h) + + return self.d + diff --git a/wmass/controlPlots/defs.py b/wmass/controlPlots/defs.py new file mode 100644 index 0000000000000..6adf596bb7069 --- /dev/null +++ b/wmass/controlPlots/defs.py @@ -0,0 +1,225 @@ +import os +import copy + + +selections = { + + 'signal' : { + 'mc' : { + 'cut': 'Vtype==0 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && ' % muon) \ + #('Muon%s_MET%s_mt[Idx_mu1]>40.' % (muon, met)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : \ + 'puWeight*' \ + 'Muon_effSF[Idx_mu1]', + }, + 'data' : { + 'cut': 'Vtype==0 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && ' % muon_pt) \ + #('Muon%s_MET%s_mt[Idx_mu1]>40. ' % (muon, met)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : '', + }, + }, + + 'control' : { + 'mc' : { + 'cut': 'Vtype==1 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && ' % muon_pt) \ + #('Muon%s_MET%s_mt[Idx_mu1]<40. ' % (muon, met)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : \ + 'puWeight*' \ + 'Muon_effSF[Idx_mu1]', + }, + 'data' : { + 'cut': 'Vtype==1 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && ' % muon_pt) \ + #('Muon%s_MET%s_mt[Idx_mu1]<40.' % (muon, met)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : '', + }, + }, + + 'dimuon' : { + 'mc' : { + 'cut': 'Vtype==2 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && Muon_pt%s[Muon_idx2]>20.' % (muon_pt, muon_pt)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : \ + 'puWeight*' \ + 'Muon_effSF[Idx_mu1]*Muon_effSF[Muon_idx2]', + }, + 'data' : { + 'cut': 'Vtype==2 && ' \ + #'Muon_HLT && ' \ + #('Muon_pt%s[Idx_mu1]>25. && Muon_pt%s[Muon_idx2]>20.' % (muon_pt, muon_pt)) \ + #'MET_filters==1 && ' \ + #'nVetoElectrons==0 && ', \ + '1', + 'weight' : '', + }, + }, + } + +selections['signalplus'] = copy.deepcopy(selections['signal']) +selections['signalminus'] = copy.deepcopy(selections['signal']) +selections['signalplus']['mc']['cut'] += ' && Muon_charge[Idx_mu1]>0' +selections['signalminus']['mc']['cut'] += ' && Muon_charge[Idx_mu1]<0' + +selections['controlplus'] = copy.deepcopy(selections['control']) +selections['controlminus'] = copy.deepcopy(selections['control']) +selections['controlplus']['mc']['cut'] += ' && Muon_charge[Idx_mu1]>0' +selections['controlminus']['mc']['cut'] += ' && Muon_charge[Idx_mu1]<0' + + +# respect nanoAOD structure: Collection_modifiers_variable + +# modifiers: + +# corrected = Rochester +muon = '_corrected' + +# nom = MET w/ jet smearing +met = '_nom' + + +variables = { + + + 'Muon': { # collection we want to take + + 'newCollection': 'SelectedMuon', # if we want to define a new subcollection, what is it called? + 'modifiers': '', # modifiers we have added to the original collection + 'index': 'Idx_mu1', # cuts or idx for defining the new collection + 'variables': { + 'corrected_pt': ('muon pt', 100, 20, 100), # variable to plot: (title of x axis, number of bins, xLow, xUp) + 'eta': ('muon eta', 100, -2.5, 2.5), + + }, + + }, + +} + + +import sys +sys.path.append('../../framework') + +import ROOT + +from RDFtreeV2 import RDFtree + +ROOT.ROOT.EnableImplicitMT(48) + +from controlPlots import * +""" +inputDir = '/gpfs/ddn/cms/user/bianchi/NanoAOD2016-TEST/' + +# mc samples + +samples = { + + 'W' : ['WJetsToLNu_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8', 61526.7], + 'DY' : ['DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8_ext2', 6025.2], + 'ttbar': ['TTJets_SingleLeptFromT_TuneCUETP8M1_13TeV-madgraphMLM-pythia8', 182.0], + 'diboson': ['WW_TuneCUETP8M1_13TeV-pythia8', 115.0], + 'QCD' : ['QCD_Pt-30to50_MuEnrichedPt5_TuneCUETP8M1_13TeV_pythia8', 1655000.0], + +} + +for sample, mylist in samples.iteritems(): + + print 'analysing', sample + + p = RDFtree(outputDir = 'TEST', inputFile = inputDir+mylist[0]+'/tree.root') + p.branch(nodeToStart = 'input', nodeToEnd = 'controlPlotsPlus',outputFile="{}_plus.root".format(sample), modules = [controlPlots(selections = selections['signalplus'], variables = variables, dataType = 'mc', xsec = mylist[1], file = inputDir+mylist[0]+'/tree.root')]) + p.branch(nodeToStart = 'input', nodeToEnd = 'controlPlotsMinus',outputFile="{}_minus.root".format(sample), modules = [controlPlots(selections = selections['signalminus'], variables = variables, dataType = 'mc', xsec = mylist[1], file = inputDir+mylist[0]+'/tree.root')]) + p.getOutput() + +# data +print 'analysing data' + +p = RDFtree(outputDir = 'TEST', inputFile = inputDir+'SingleMuon'+'/tree.root') +p.branch(nodeToStart = 'input', nodeToEnd = 'controlPlotsPlus',outputFile="data_plus.root", modules = [controlPlots(selections = selections['signalplus'], variables = variables, dataType = 'data', xsec = 1, file = inputDir+'SingleMuon'+'/tree.root')]) +p.branch(nodeToStart = 'input', nodeToEnd = 'controlPlotsMinus',outputFile="data_minus.root", modules = [controlPlots(selections = selections['signalminus'], variables = variables, dataType = 'data', xsec = 1, file = inputDir+'SingleMuon'+'/tree.root')]) +p.getOutput() +""" +from plotter import plotter + +plt = plotter(outdir= 'TESTstack', folder = 'TEST', fileList = ['W_plus.root', 'DY_plus.root', 'ttbar_plus.root', 'diboson_plus.root', 'QCD_plus.root', 'data_plus.root'], norm = 2.7) +plt.plotStack() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wmass/muonCalibration/LineshapeFitter.py b/wmass/muonCalibration/LineshapeFitter.py new file mode 100644 index 0000000000000..817200480b1fe --- /dev/null +++ b/wmass/muonCalibration/LineshapeFitter.py @@ -0,0 +1,151 @@ +import ROOT +import os +import math + + +class LineshapeFitter(object): + def __init__(self,histoData, genData, bin, mydir,twoD = 0,customGEN = ""): + + self.direc = mydir + self.conditionals=[] + self.bin=bin + + self.w = ROOT.RooWorkspace("w","w") + self.w.factory("x[0,1000]") + self.w.factory("y[0,1000]") + self.w.factory("z[0,1000]") + self.w.factory("genx[0,1000]") + if twoD==1: + hist = ROOT.RooDataHist("data","data",ROOT.RooArgList(self.w.var("x"),self.w.var("y")),histoData) + elif twoD==0: + hist = ROOT.RooDataHist("data","data",ROOT.RooArgList(self.w.var("x")),histoData) + else: + hist = ROOT.RooDataHist("data","data",ROOT.RooArgList(self.w.var("x"),self.w.var("y"),self.w.var("z")),histoData) + + getattr(self.w,'import')(hist) + genhist = ROOT.RooDataHist("gen","gen",ROOT.RooArgList(self.w.var("genx")),genData) + getattr(self.w,'import')(genhist) + self.dataSize=histoData.Integral() + self.genSize=genData.Integral() + + def build1DModel(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('error1[0.5,0.4,1]') + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("model","model",self.w.var("x"),self.w.var('scale'),self.w.var('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + + def build1DModelBkg(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('error1[0.5,0.4,1]') + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("modelSig","model",self.w.var("x"),self.w.var('scale'),self.w.var('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,0,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + + def build1DModelJPsiBkg(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('error1[0.01,0.004,0.5]') + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("modelSig","model",self.w.var("x"),self.w.var('scale'),self.w.var('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,0,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + + def build1DModelJPsi(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('error1[0.01,0.004,0.5]') + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("model","model",self.w.var("x"),self.w.var('scale'),self.w.var('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + + + def build1DModelRel(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('error1[1,0.3,3]') + self.w.var("error1").setError(1000.0) + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdfRelative.Class(),1) + pdf = ROOT.RooGaussianSumPdfRelative("modelSig","model",self.w.var("x"),self.w.var('scale'),self.w.var('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,0,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + + + + + def build2DModel(self): + self.w.factory('scale[1.0,0.99,1.01]') + self.w.factory('a2[0,-0.0008,0.001]') + self.w.factory("expr::error1('sqrt(y*y/(x*x)+0.5*a2)*x',x,y,a2)") + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("modelSig","model",self.w.var("x"),self.w.var('scale'),self.w.function('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,100,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + self.conditionals.append('y') + + + + def build3DModel(self): + self.w.factory('scale[1.0,0.995,1.005]') + self.w.factory('a2[100e-6,5e-6,0.001]') + self.w.factory('c2[100e-6,1e-6,0.001]') + self.w.factory('b2[1e-8,1e-9,1e-4]') + self.w.factory('d2[1,0,1000]') + self.w.factory("expr::error1('sqrt(0.5*a2+0.25*b2*y*y+0.25*b2*z*z+0.25/(1+d2/(y*y)) +0.25/(1+d2/(z*z)))*x',x,y,z,a2,b2,c2,d2)") + self.w.factory('error2[0.0]') + getattr(self.w,'importClassCode')(ROOT.RooGaussianSumPdf.Class(),1) + pdf = ROOT.RooGaussianSumPdf("modelSig","model",self.w.var("x"),self.w.var('scale'),self.w.function('error1'),self.w.var('error2'),self.w.data("gen"),'genx') + getattr(self.w,'import')(pdf) + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,100,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + self.conditionals.append('y') + self.conditionals.append('z') + + + + def build1DCBModel(self): + self.w.factory("RooCBShape::modelSig(x,scale[3,2.5,3.5],sigma[0.03,0.0001,5],alpha[3,0.1,10],n[5])") + self.w.factory("RooExponential::expo(x,slope[-1,-10,10])") + self.w.factory("SUM::model(NSIG[100000,0,500000000]*modelSig,NBKG[1000,0,500000000]*expo)") + + + def plot(self): + c=ROOT.TCanvas("c","c") + frame=self.w.var("x").frame() + self.w.data("data").plotOn(frame) + self.w.pdf("model").plotOn(frame) + chi=frame.chiSquare() + self.w.pdf('model').paramOn(frame, self.w.data('data'), "chi2=%s" %chi) + frame.Draw() + c.SaveAs(self.direc+"/plot_"+str(self.bin)+".root") + c.SaveAs(self.direc+"/plot_"+str(self.bin)+".pdf") + c.SaveAs(self.direc+"/plot_"+str(self.bin)+".png") + + def fit(self,verbose=1): + if verbose==0 : + ROOT.RooMsgService.instance().setGlobalKillBelow(ROOT.RooFit.WARNING) + + if len(self.conditionals)==0: + self.fitResult=self.w.pdf("model").fitTo(self.w.data("data"),ROOT.RooFit.Verbose(verbose),ROOT.RooFit.PrintLevel(verbose),ROOT.RooFit.Timer(0),ROOT.RooFit.NumCPU(1,0),ROOT.RooFit.Save(1)) + self.fitResult=self.w.pdf("model").fitTo(self.w.data("data"),ROOT.RooFit.Verbose(verbose),ROOT.RooFit.PrintLevel(verbose),ROOT.RooFit.Timer(0),ROOT.RooFit.NumCPU(1,0),ROOT.RooFit.Save(1)) + else: + self.w.defineSet("conditionals",",".join(self.conditionals)) + self.fitResult=self.w.pdf("model").fitTo(self.w.data("data"),ROOT.RooFit.Verbose(verbose),ROOT.RooFit.PrintLevel(verbose),ROOT.RooFit.NumCPU(1,0),ROOT.RooFit.Save(1),ROOT.RooFit.ConditionalObservables(self.w.set('conditionals'))) + print '-------FINAL RESULT------' + if self.fitResult is not None: + self.fitResult.Print() + print '-COVARIANCE-' + self.fitResult.correlationMatrix().Print() + + def write(self): + self.outFile.cd() + self.w.Write() + diff --git a/wmass/muonCalibration/applyCalibration.cpp b/wmass/muonCalibration/applyCalibration.cpp index 304f31e715839..7015f59b7f3ec 100644 --- a/wmass/muonCalibration/applyCalibration.cpp +++ b/wmass/muonCalibration/applyCalibration.cpp @@ -3,14 +3,14 @@ RNode applyCalibration::run(RNode d){ - auto correctedPtPos = [*this](float pt, float eta, float phi){ + auto correctedPtPos = [this](float pt, float eta, float phi){ float ptcorr = calib_->getCorrectedPt(pt,eta,phi,1); return ptcorr; }; - auto correctedPtNeg = [*this](float pt, float eta, float phi){ + auto correctedPtNeg = [this](float pt, float eta, float phi){ float ptcorr = calib_->getCorrectedPt(pt,eta,phi,-1); return ptcorr; diff --git a/wmass/muonCalibration/applyCalibration.so b/wmass/muonCalibration/applyCalibration.so index cbf6e9873fa7b92e797cf0275b0e8dc9e70e4616..f0a36be1178c92649629ace4e9cd0ee929380517 100755 GIT binary patch literal 146992 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

FRN4 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 NQvH!W%6D1%zX40Qi9rAW diff --git a/wmass/muonCalibration/fittingTools.py b/wmass/muonCalibration/fittingTools.py new file mode 100644 index 0000000000000..b0f4ee022cf3b --- /dev/null +++ b/wmass/muonCalibration/fittingTools.py @@ -0,0 +1,101 @@ +from LineshapeFitter import * +import os + +def runFits(hmap,inputFile,genFile,outputFile,J=0): + f=ROOT.TFile(outputFile,"RECREATE") + direc = inputFile.split('.root')[0] + os.mkdir('results'+direc) + scale=ROOT.TH3D(hmap) + scale.SetName("scale") + sigma=ROOT.TH3D(hmap) + sigma.SetName("sigma") + for i in range(1,hmap.GetNbinsX()+1): + for j in range(1,hmap.GetNbinsY()+1): + for k in range(1,hmap.GetNbinsZ()+1): + bin=hmap.GetBin(i,j,k) + fitter=LineshapeFitter(inputFile,genFile,bin) + if J==0: + if 'MC' in inputFile: + fitter.build1DModel() + else: + fitter.build1DModelBkg() + else: + if 'MC' in inputFile: + fitter.build1DModelJPsi() + else: + fitter.build1DModelJPsiBkg() + fitter.fit(0) + fitter.fit(0) + fitter.fit(1) + fitter.plot() + + scale.SetBinContent(bin,fitter.w.var("scale").getVal()) + scale.SetBinError(bin,fitter.w.var("scale").getError()) + sigma.SetBinContent(bin,fitter.w.var("error1").getVal()) + sigma.SetBinError(bin,fitter.w.var("error1").getError()) + fitter.write() + f.cd() + scale.Write() + sigma.Write() + f.Close() + +def runFits1D(inputFilestr,genFilestr,outputFile,J=0): + + closureType = ['eta1', 'eta2', 'pt1', 'pt2'] + inputFile=ROOT.TFile.Open(inputFilestr) + genFile=ROOT.TFile.Open(genFilestr) + + isData = '' + if 'Data' in inputFilestr: + isData = '_DATA' + + print isData + + for clos in closureType: + + if not os.path.exists("FITS_{}{}".format(clos,isData)): + os.mkdir("FITS_{}{}".format(clos, isData)) + + f=ROOT.TFile(outputFile.split('.')[0]+'_'+clos+'.root',"RECREATE") + + histoData2D = inputFile.Get("closure_"+clos) + genData2D = genFile.Get("closure_"+clos) + + scale=ROOT.TH1D(histoData2D.ProjectionX()) + scale.SetName("scale") + sigma=ROOT.TH1D(histoData2D.ProjectionX()) + sigma.SetName("sigma") + + for i in range(1,histoData2D.GetNbinsX()+1): + + data = histoData2D.ProjectionY("proj{}".format(i),i,i) + gen = genData2D.ProjectionY("projGen{}".format(i),i,i) + + fitter=LineshapeFitter(data,gen,i, "FITS_{}".format(clos)) + if J==0: + if 'MC' in inputFile: + fitter.build1DModel() + else: + fitter.build1DModelBkg() + else: + if 'MC' in inputFile: + fitter.build1DModelJPsi() + else: + fitter.build1DModelJPsiBkg() + fitter.fit(0) + fitter.fit(0) + fitter.fit(1) + fitter.plot() + + scale.SetBinContent(i,fitter.w.var("scale").getVal()) + scale.SetBinError(i,fitter.w.var("scale").getError()) + sigma.SetBinContent(i,fitter.w.var("error1").getVal()) + sigma.SetBinError(i,fitter.w.var("error1").getError()) + #fitter.write() + + f.cd() + scale.Write() + sigma.Write() + f.Close() + + diff --git a/wmass/muonCalibration/prepareSample.py b/wmass/muonCalibration/prepareSample.py index e1caccb8c0564..dc9eef5c78589 100644 --- a/wmass/muonCalibration/prepareSample.py +++ b/wmass/muonCalibration/prepareSample.py @@ -24,6 +24,7 @@ def run(self,d): .Filter('fabs(rapidity)<2.4')\ .Define('ptRes', 'float((v1+v2).Pt())') + else: diff --git a/wmass/muonCalibration/prepareSampleAfter.py b/wmass/muonCalibration/prepareSampleAfter.py index b3515e68746b9..2c1e89fa15b62 100644 --- a/wmass/muonCalibration/prepareSampleAfter.py +++ b/wmass/muonCalibration/prepareSampleAfter.py @@ -1,40 +1,87 @@ -class prepareSampleAfter: - - ROOT.gInterpreter.ProcessLine(''' - std::vector myRndGens(8); - int seed = 1; // not 0 because seed 0 has a special meaning - for (auto &&gen : myRndGens) gen.SetSeed(seed++); - ''') +import ROOT +from array import array +class prepareSampleAfter: - def __init__(self, cut,isMC = True, gen = False, res = 'J'): + def __init__(self, cut, gen = False, weight = False, res = 'J'): self.myTH1 = [] self.myTH2 = [] self.myTH3 = [] - self.isMC = isMC - self.gen = gen self.cut = cut - self.target = target - - def run(self,d): + self.gen = gen + self.weight = weight + self.res = res + + def run(self,d): + if not self.gen: self.d = d.Filter(self.cut)\ - .Define('v1', 'ROOT::Math::PtEtaPhiMVector(corrpt1,eta1,phi1,0.105)')\ - .Define('v2', 'ROOT::Math::PtEtaPhiMVector(corrpt2,eta2,phi2,0.105)')\ - .Define('corrMass', 'float((v1+v2).M())') + .Define('v1corr', 'ROOT::Math::PtEtaPhiMVector(corrpt1,eta1,phi1,0.105)')\ + .Define('v2corr', 'ROOT::Math::PtEtaPhiMVector(corrpt2,eta2,phi2,0.105)')\ + .Define('corrMass', 'float((v1corr+v2corr).M())') else: + + self.d = d.Filter(self.cut)\ - .Define('smearedgenMass', 'genMass+myRndGens[rdfslot_].Gaus(0, massError)') + .Define('smearedgenMass', 'genMass+myRndGens[rdfslot_].Gaus(0, massErr)') + + + mass = 'corrMass' + + if self.gen: + + mass = 'smearedgenMass' + + pts=[20,30,40,50,60,70,100] + etas=[-1.0,-0.7,-0.5,-0.25, 0.25, 0.5,0.7,1.0] + masses=[] + + for i in range(0,101): + masses.append(75+0.4*i) + if self.res == 'Z': + + if not self.weight: + + heta1 = self.d.Histo2D(("closure_eta1", " ; #eta muon pos; Z dimuon mass", len(etas)-1, array('f',etas),len(masses)-1, array('f',masses)), "eta1", "{}".format(mass)) + heta2 = self.d.Histo2D(("closure_eta2", " ; #eta muon neg; Z dimuon mass", len(etas)-1, array('f',etas),len(masses)-1, array('f',masses)),"eta2", "{}".format(mass)) + + hpt1 = self.d.Histo2D(("closure_pt1", " ; p_{T} muon pos; Z dimuon mass", len(pts)-1, array('f',pts),len(masses)-1, array('f',masses)), "pt1","{}".format(mass)) + hpt2 = self.d.Histo2D(("closure_pt2", " ; p_{T} muon neg; Z dimuon mass", len(pts)-1, array('f',pts),len(masses)-1, array('f',masses)), "pt2","{}".format(mass)) + + self.myTH2.append(heta1) + self.myTH2.append(heta2) + + self.myTH2.append(hpt1) + self.myTH2.append(hpt2) + + + else: #reweight gen to match Z data + + + heta1 = self.d.Histo2D(("closure_eta1", " ; #eta muon pos; Z dimuon mass", len(etas)-1, array('f',etas),len(masses)-1, array('f',masses)), "eta1", "{}".format(mass), "ptWeight") + heta2 = self.d.Histo2D(("closure_eta2", " ; #eta muon neg; Z dimuon mass", len(etas)-1, array('f',etas),len(masses)-1, array('f',masses)), "eta2", "{}".format(mass), "ptWeight") + + hpt1 = self.d.Histo2D(("closure_pt1", " ; p_{T} muon pos; Z dimuon mass", len(pts)-1, array('f',pts),len(masses)-1, array('f',masses)), "pt1", "{}".format(mass), "ptWeight") + hpt2 = self.d.Histo2D(("closure_pt2", " ; p_{T} muon neg; Z dimuon mass", len(pts)-1, array('f',pts),len(masses)-1, array('f',masses)), "pt2", "{}".format(mass), "ptWeight") + + self.myTH2.append(heta1) + self.myTH2.append(heta2) + + self.myTH2.append(hpt1) + self.myTH2.append(hpt2) + + + else: - heta1 = d.Histo1D(("eta1", " ; #eta muon pos; ", 100, -2.5, 2.5), "eta1") + print 'ciao' return self.d diff --git a/wmass/muonCalibration/reweightSample.cpp b/wmass/muonCalibration/reweightSample.cpp index c5e150d5d2a22..f63a45acb4f43 100644 --- a/wmass/muonCalibration/reweightSample.cpp +++ b/wmass/muonCalibration/reweightSample.cpp @@ -3,8 +3,8 @@ RNode reweightSample::run(RNode d){ - TFile *f = TFile::Open("TEST/testData.root"); - TFile *f1 = TFile::Open("TEST/test.root"); + TFile *f = TFile::Open("TEST/beforeCalibData.root"); + TFile *f1 = TFile::Open("TEST/gen.root"); TH1D *hTarget = (TH1D*)f->Get("ptRes"); TH1D *h = (TH1D*)f1->Get("ptRes"); @@ -15,8 +15,9 @@ RNode reweightSample::run(RNode d){ int bin = hTarget->FindBin(ptRes); + auto w = hTarget->GetBinContent(bin); - return hTarget->GetBinContent(bin); + return w; }; diff --git a/wmass/muonCalibration/reweightSample.so b/wmass/muonCalibration/reweightSample.so index 3cd7a7d3bfb51e75cdecafdc26a5410f32925f5e..7747a9c41fca6def5c5198f268988bc77d9e9096 100755 GIT binary patch delta 391 zcmW-aO(?^07{~Ygwz+6tBPm%pcwadg?cil0Wd}Qm16xLfm6vG7qL3uzA#a=iBqt8j zQ!)&jme#~j3r$K>lY?AbB>wx~zR&0TdHM$2(tum);08cN_5llki{wKV7QKe`44z1A zQj1}U>c%EAz>EHMOSW1i5=CULzrWgfl`@)v&yk*E9?V{RZ1Yr$y&EU6g85br)S$`Q z2`~6+t&_Ev^LAlWoL4nrsckytwu~ohN5bp-_pi{n@ZR<-J5%z_j8h+odf35hP7aIs$)$i9rS<^qW6=HxMd;W{gG=&lr6<51h4;H9P(hjl1%o`Y9L58b z(1P=nK{GX+lu2ZnY5dB~im>uS%jX4*iBi$y$%0*a^QGMk4)$+vH|WwH%@rDIvR%a%iC_QdX?o2_+>`Hk8w%kdXM2)9l|8H*Tgc zhdFQTLMzr*vO*F?E?jXT;@^Mwe$V@Sy#bFp;8D9oGYZ&YwgNk>>#+)vtFJ{skd^(F zN=$S0&`26i$-iRFC^aY)ubSh(zp5ESek4Q6uN{XHm^^=9muM|@t{!2IvTa6`Q@^bZ zVS2JvYZ^-=J2xWE80x5SZCvXwmdNsf{QCCwD>r)-TKm+uQweV{Nh~_&_KgJ9o|Xw>0=HPBzbaPmcJAD z&UdFoD!VWJDyVtvYD$F*jt>ngg&*+jO%REeR0') + + hDenominator = dch.Histo2D(("hdenom_{}".format(ch), " ; W rapidity; W p_{T}",\ + self.hmap.GetXaxis().GetNbins(),self.hmap.GetXaxis().GetXbins().GetArray(), \ + self.hmap.GetYaxis().GetNbins(),self.hmap.GetYaxis().GetXbins().GetArray()), \ + "Wrap_preFSR", "Wpt_preFSR", "Generator_weight_norm") + + self.myTH2.append(hDenominator) + + for c in coeff: + + dch = self.defineHarmonicsFunc(dch,c) + + hNumerator = dch.Histo2D(('A_{c}_{ch}'.format(c=c, ch=ch), " ; W rapidity; W p_{T}",\ + self.hmap.GetXaxis().GetNbins(),self.hmap.GetXaxis().GetXbins().GetArray(), \ + self.hmap.GetYaxis().GetNbins(),self.hmap.GetYaxis().GetXbins().GetArray()),\ + "Wrap_preFSR", "Wpt_preFSR", "P{c}w".format(c=c)) + + hP2 = dch.Histo2D(('hnum2_{c}_{ch}'.format(c=c, ch=ch), " ; W rapidity; W p_{T}",\ + self.hmap.GetXaxis().GetNbins(),self.hmap.GetXaxis().GetXbins().GetArray(), \ + self.hmap.GetYaxis().GetNbins(),self.hmap.GetYaxis().GetXbins().GetArray()),\ + "Wrap_preFSR", "Wpt_preFSR", "P{c}sq".format(c=c)) + + self.myTH2.append(hNumerator) + self.myTH2.append(hP2) + + return dch + + def getTH1(self): + + return self.myTH1 + + def getTH2(self): + + return self.myTH2 + + def getTH3(self): + + return self.myTH3 + + + diff --git a/wmass/signalTemplates/AngCoeff.cpp b/wmass/signalTemplates/AngCoeff.cpp index 9204014ed4905..e2d824a0cdb11 100644 --- a/wmass/signalTemplates/AngCoeff.cpp +++ b/wmass/signalTemplates/AngCoeff.cpp @@ -14,7 +14,7 @@ RNode AngCoeff::defineArmonicsSqAndW(RNode d, std::string c){ RNode AngCoeff::run(RNode d){ // first normalise generator weights - + /* auto dArm = d.Define("Generator_weight_norm", [](float w)-> float{ return w/abs(w);}, {"Generator_weight"}); float yArr[] = {-6.0, -3.0, -2.5, -2.0, -1.6, -1.2, -0.8, -0.4, 0, 0.4, 0.8, 1.2 ,1.6, 2.0, 2.5, 3.0, 6.0}; @@ -40,10 +40,10 @@ RNode AngCoeff::run(RNode d){ _h2List.push_back(hP2); } + */ + auto c = d.Count().OnPartialResult(10, [] (ULong64_t entry) { std::cout << "entry " << entry << std::endl; }); - _trigLoop = true; - - return dArm; + return d; } @@ -55,7 +55,4 @@ std::vector> AngCoeff::getTH2(){ } std::vector> AngCoeff::getTH3(){ return _h3List; -} -bool AngCoeff::triggerLoop(){ - return _trigLoop; } \ No newline at end of file diff --git a/wmass/signalTemplates/AngCoeff.h b/wmass/signalTemplates/AngCoeff.h index 6b9ce6123ac64..f62a697e93d23 100644 --- a/wmass/signalTemplates/AngCoeff.h +++ b/wmass/signalTemplates/AngCoeff.h @@ -24,18 +24,14 @@ class AngCoeff : public Module { std::vector> _h1List; std::vector> _h2List; std::vector> _h3List; - bool _trigLoop = false; - std::string _myString; public: - AngCoeff(std::string s): _myString(s) {}; ~AngCoeff() {}; RNode run(RNode) override; std::vector> getTH1() override; std::vector> getTH2() override; std::vector> getTH3() override; - bool triggerLoop() override; RNode defineArmonicsSqAndW(RNode, std::string); }; diff --git a/wmass/signalTemplates/AngCoeff.so b/wmass/signalTemplates/AngCoeff.so index 98dc84ceb3516164715d78597661ae62ca1273e8..2618ca8e972816e1de3f775e9a09142dc4246e78 100755 GIT binary patch literal 151184 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 z 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', 'filter,GenPart_pdgId[GenPart_preFSRMuonIdx]<0'] +mygraph['filter,GenPart_pdgId[GenPart_preFSRMuonIdx]>0'] = ['ROOT.AngCoeff,WMinus'] +mygraph['filter,GenPart_pdgId[GenPart_preFSRMuonIdx]<0'] = ['ROOT.AngCoeff,WPlus'] +mygraph['ROOT.AngCoeff,WPlus'] = ['getAngularCoefficients,PLOTS/histosWPlus_1.root'] +mygraph['getAngularCoefficients,PLOTS/histosWPlus_1.root'] = ['ROOT.GetWeights,PLOTS/histosWPlus_2.root'] +mygraph['ROOT.GetWeights,PLOTS/histosWPlus_2.root'] = ['ROOT.TemplateBuilder, WPlus'] +mygraph['ROOT.TemplateBuilder, WPlus'] = ['TemplateProj, PLOTS/histosWPlus_3.root'] +mygraph['ROOT.AngCoeff,WMinus'] = ['getAngularCoefficients,PLOTS/histosWMinus_1.root'] +mygraph['getAngularCoefficients,PLOTS/histosWMinus_1.root'] = ['ROOT.GetWeights,PLOTS/histosWMinus_2.root'] +mygraph['ROOT.GetWeights,PLOTS/histosWMinus_2.root'] = ['ROOT.TemplateBuilder, WMinus'] +mygraph['ROOT.TemplateBuilder, WMinus'] = ['TemplateProj, PLOTS/histosWMinus_3.root'] + + +ROOT.ROOT.EnableImplicitMT(20) + +p = RDFtree(inputFiles=["/scratch/emanca/WMass/NanoDevelopment/CMSSW_10_2_6/src/PhysicsTools/NanoAODTools/scripts/nanoPost.root"], outputDir = "PLOTS", outputFiles = ["histosWMinus", "histosWPlus"], graphList = [mygraph]) +p.run() diff --git a/wmass/signalTemplates/test.py b/wmass/signalTemplates/test.py new file mode 100644 index 0000000000000..6fe07884bdc15 --- /dev/null +++ b/wmass/signalTemplates/test.py @@ -0,0 +1,126 @@ +import os +import sys +import ROOT +from math import * + +# append location of the framework and of the modules to use + +sys.path.append('../../framework') + +from RDFtreeV2 import RDFtree + +from defineHarmonics import * +from ACoeff import * + +os.system("g++ -fPIC -Wall -O3 ../../framework/module.cpp ../../wmass/signalTemplates/AngCoeff.cpp $(root-config --libs --cflags) -shared -o ../../wmass/signalTemplates/AngCoeff.so") +ROOT.gInterpreter.Declare('#include "../../framework/module.h"') +ROOT.gInterpreter.Declare('#include "../../wmass/signalTemplates/AngCoeff.h"') +ROOT.gSystem.Load('../../wmass/signalTemplates/AngCoeff.so') +""" +import numpy as np + +np_bins_qt_p0 = np.linspace( 0.0, 10.0, 6) +np_bins_qt_p1 = np.linspace(12.0, 20.0, 5) +np_bins_qt_p2 = np.linspace(24.0, 40.0, 5) +np_bins_qt_p3 = np.array([60, 80, 100, 200]) +np_bins_qt = np.append( np.append(np_bins_qt_p0, np_bins_qt_p1), np.append( np_bins_qt_p2, np_bins_qt_p3)) + +np_bins_y_p0 = np.linspace(-5.0, -2.5, 2) +np_bins_y_p1 = np.linspace(-2.0, +2.0, 21) +np_bins_y_p2 = np.linspace(+2.5, +5.0, 2) +np_bins_y = np.append( np.append(np_bins_y_p0, np_bins_y_p1), np_bins_y_p2) + +hmap = ROOT.TH2D("hmap","hmap",len(np_bins_y)-1,np_bins_y,len(np_bins_qt)-1,np_bins_qt) +""" +#ROOT.ROOT.EnableImplicitMT(32) + +inputFile = '/scratch/emanca/WMass/RDFprocessor/wmass/data/signalTree_1.root' + +p = RDFtree(outputDir = 'TEST', inputFile = inputFile) +p.branch(nodeToStart = 'input', nodeToEnd = 'AngCoeff',outputFile="test.root", modules = [defineHarmonics(), ROOT.AngCoeff()]) +p.getOutput() +""" +fIn = ROOT.TFile.Open('TEST/test.root') + +charge = ['Plus', 'Minus'] + +hList = {} +hList['Plus'] = [] +hList['Minus'] = [] + +for ch in charge: + + hNum =[] + hNum2 =[] + hDen =[] + + for key in fIn.GetListOfKeys(): + + hname = key.GetName() + h = fIn.Get(hname) + + if not ch in hname: + continue + + if "denom" in hname: + hDen.append(h) + elif "A" in hname: + hNum.append(h) + else: + hNum2.append(h) + + + for p,h in enumerate(hNum): + + h.SetName('A{p}'.format(p=p)) + + for n in range(1,h.GetNbinsY()+1): + + for m in range(1, h.GetNbinsX()+1): + + print h.GetXaxis().GetBinCenter(m),h.GetYaxis().GetBinCenter(n), hNum2[p].GetName(), hDen[0].GetBinContent(m,n) + h.SetBinContent(m,n,h.GetBinContent(m,n)/hDen[0].GetBinContent(m,n)) + + # error propagation + + stdErr2 = hNum2[p].GetBinContent(m,n)/hDen[0].GetBinContent(m,n) - h.GetBinContent(m,n)*h.GetBinContent(m,n) + sqrtneff = hDen[0].GetBinContent(m,n)/hDen[0].GetBinError(m,n) + + print stdErr2, sqrtneff + coefferr = sqrt(stdErr2)/sqrtneff + + h.SetBinError(m,n,coefferr) + + cont = h.GetBinContent(m,n) + err = h.GetBinError(m,n) + + if p == 0: + h.SetBinContent(m,n, 20./3.*cont + 2./3.) + h.SetBinError(m,n, 20./3.*err) + + elif p == 1 or p == 5 or p == 6: + h.SetBinContent(m,n, 5*cont) + h.SetBinError(m,n, 5*err) + + elif p == 2: + h.SetBinContent(m,n, 10*cont) + h.SetBinError(m,n, 10*err) + + else: + h.SetBinContent(m,n, 4*cont) + h.SetBinError(m,n, 4*err) + + hList[ch].extend(hNum) + +fO = ROOT.TFile('testAC.root', 'recreate') + +fO.cd() + +for charge, list in hList.iteritems(): + for h in list: + + h.Write() + + """ + + diff --git a/wmass/signalTemplates/test2.py b/wmass/signalTemplates/test2.py new file mode 100644 index 0000000000000..0091b829d8eb9 --- /dev/null +++ b/wmass/signalTemplates/test2.py @@ -0,0 +1,107 @@ +import os +import sys +import ROOT + +sys.path.append('../RDFprocessor/framework') +sys.path.append('../RDFprocessor/wmass/muonCalibration') + +from RDFtreeV2 import RDFtree +from plotter import plotter + +from basicPlots import * +from prepareSample import * +from prepareSampleAfter import * +''' +os.system("g++ -fPIC -Wall -O3 ../RDFprocessor/framework/module.cpp ../RDFprocessor/wmass/muonCalibration/reweightSample.cpp $(root-config --libs --cflags) -shared -o ../RDFprocessor/wmass/muonCalibration/reweightSample.so") +ROOT.gInterpreter.Declare('#include "../RDFprocessor/framework/module.h"') +ROOT.gInterpreter.Declare('#include "../RDFprocessor/wmass/muonCalibration/reweightSample.h"') +ROOT.gSystem.Load('../RDFprocessor/wmass/muonCalibration/reweightSample.so') + +os.system("g++ -fPIC -Wall -O3 ../RDFprocessor/framework/module.cpp ../RDFprocessor/wmass/muonCalibration/applyCalibration.cpp /scratch/emanca/WMass/MuonCalibration/KaMuCaSLC7/CMSSW_8_0_20/src/KaMuCa/Calibration/src/KalmanMuonCalibrator.cc $(root-config --libs --cflags) -shared -o ../RDFprocessor/wmass/muonCalibration/applyCalibration.so") +ROOT.gInterpreter.Declare('#include "../RDFprocessor/framework/module.h"') +ROOT.gInterpreter.Declare('#include "../RDFprocessor/wmass/muonCalibration/applyCalibration.h"') +ROOT.gSystem.Load('../RDFprocessor/wmass/muonCalibration/applyCalibration.so') + +ROOT.ROOT.EnableImplicitMT(64) + +cut = 'pt1>22.0&&pt2>20.0&&abs(eta1)<1&&abs(eta2)<1&&mass>75&&mass<115' +inputFileMC ='/scratch/emanca/WMass/MuonCalibration/KaMuCaSLC7/CMSSW_8_0_20/src/KaMuCa/Derivation/run/Scale/muonTreeMCZ.root' + +inputFileD ='/scratch/emanca/WMass/MuonCalibration/KaMuCaSLC7/CMSSW_8_0_20/src/KaMuCa/Derivation/run/Scale/muonTreeDataZ.root' + +calibData = ROOT.string('DATA_80X_13TeV') +calibMC = ROOT.string('MC_80X_13TeV') + +# data + +pD = RDFtree(outputDir = 'TESTBarr', outputFile = "beforeCalibData.root", inputFile = inputFileD, \ + modules=[prepareSample(cut=cut, target=90.851,isMC=False),basicPlots(res='J')], treeName = 'tree') +pD.run() +pD.branch([ROOT.applyCalibration(calibData),basicPlots(res='Z', calib=True),prepareSampleAfter(cut,res='Z')],outputFile="afterCalibData.root") +pD.getOutput() + + +# mc reco + +pMC = RDFtree(outputDir = 'TESTBarr', outputFile = "beforeCalibMC.root", inputFile = inputFileMC, \ + modules=[prepareSample(cut=cut, target=90.851,isMC=True),basicPlots(res='Z')], treeName = 'tree') +pMC.run() +pMC.branch([ROOT.applyCalibration(calibMC),basicPlots(res='Z', calib=True),prepareSampleAfter(cut,res='Z')],outputFile=("afterCalibMC.root")) +pMC.getOutput() + +# gen to match data and MC + +p = RDFtree(outputDir = 'TESTBarr', outputFile = "gen.root", inputFile = inputFileMC, \ + modules=[prepareSample(cut=cut, target=90.851, gen=True),basicPlots(res='Z', gen = True)],treeName = 'tree') +p.run() +p.getOutput() +p.branch([ROOT.reweightSample(),basicPlots(res='Z', gen = True, weight = True),prepareSampleAfter(cut,res='Z', gen = True, weight = True)],outputFile = "genAfterRew.root") +p.branch([basicPlots(res='Z', gen = True, weight = False),prepareSampleAfter(cut,res='Z', gen = True, weight = False)],outputFile = "genAfter.root") +p.getOutput() + +plt = plotter(outdir= 'PlotsZDATAMC', folder = 'TESTBarr', fileList = ['beforeCalibData.root', 'beforeCalibMC.root']) +plt.plotDataMC() + +plt = plotter(outdir= 'PlotsZDATAGENUNW', folder = 'TESTBarr', fileList = ['beforeCalibData.root', 'genAfter.root']) +plt.plotDataMC() + +plt = plotter(outdir= 'PlotsZDATAGENW', folder = 'TESTBarr', fileList = ['beforeCalibData.root', 'genAfterRew.root']) +plt.plotDataMC() +''' + +ROOT.gSystem.Load("/scratch/emanca/WMass/MuonCalibration/KaMuCaSLC7/CMSSW_8_0_20/src/KaMuCa/Derivation/bin/libChargedHiggs.so") + +from fittingTools import * + +runFits1D('TESTBarr/afterCalibData.root','TESTBarr/genAfterRew.root','resultsZDataBarr.root') +runFits1D('TESTBarr/afterCalibMC.root','TESTBarr/genAfter.root','resultsZMCBarr.root') + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +