Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:23:46

0001 #!/usr/bin/env python3
0002 #
0003 # Example of filling an histogram with nanoAODTools in a plain python script.
0004 # 
0005 from PhysicsTools.NanoAODTools.postprocessing.framework.eventloop import Module
0006 from PhysicsTools.NanoAODTools.postprocessing.framework.datamodel import Collection
0007 from PhysicsTools.NanoAODTools.postprocessing.framework.postprocessor import PostProcessor
0008 from importlib import import_module
0009 import os
0010 import sys
0011 import ROOT
0012 ROOT.PyConfig.IgnoreCommandLineOptions = True
0013 
0014 
0015 class ExampleAnalysis(Module):
0016     def __init__(self):
0017         self.writeHistFile = True
0018 
0019     def beginJob(self, histFile=None, histDirName=None):
0020         Module.beginJob(self, histFile, histDirName)
0021 
0022         self.h_vpt = ROOT.TH1F('sumpt', 'sumpt', 100, 0, 1000)
0023         self.addObject(self.h_vpt)
0024 
0025     def analyze(self, event):
0026         electrons = Collection(event, "Electron")
0027         muons = Collection(event, "Muon")
0028         jets = Collection(event, "Jet")
0029         eventSum = ROOT.TLorentzVector()
0030 
0031         # select events with at least 2 muons
0032         if len(muons) >= 2:
0033             for lep in muons:  # loop on muons
0034                 eventSum += lep.p4()
0035             for lep in electrons:  # loop on electrons
0036                 eventSum += lep.p4()
0037             for j in jets:  # loop on jets
0038                 eventSum += j.p4()
0039             self.h_vpt.Fill(eventSum.Pt())  # fill histogram
0040 
0041         return True
0042 
0043 
0044 preselection = "Jet_pt[0] > 250"
0045 files = ["root://eoscms.cern.ch//eos/cms/store/user/cmsbuild/store/group/cat/datasets/NANOAODSIM/RunIISummer20UL18NanoAODv9-106X_upgrade2018_realistic_v16_L1v1-v2/DYJetsToLL_M-50_TuneCP5_13TeV-amcatnloFXFX-pythia8/7B930101-EB91-4F4E-9B90-0861460DBD94.root"]
0046 
0047 p = PostProcessor(".",
0048                   files,
0049                   cut=preselection,
0050                   branchsel=None,
0051                   modules=[ExampleAnalysis()],
0052                   noOut=True,
0053                   histFileName="histOut.root",
0054                   histDirName="plots",
0055                   )
0056 p.run()