Monte Carlo Production 
 Full simulation on 10_2_5 
 Preparation 
$ export SCRAM_ARCH=slc6_amd64_gcc700
$ cmsrel CMSSW_10_2_5
$ cd CMSSW_10_2_5/src
$ cmsenv
$ mkdir -p Configuration/GenProduction/ 
$ git clone git@github.com:cms-sw/genproductions.git Configuration/GenProduction/ 
$ scram b
 Using Pythia fragment to generate Randall-Sundrum Graviton 
 STEP 1 - Event generation and detector simulation 
$ cmsDriver.py \
Configuration/GenProduction/python/ThirteenTeV/RSGraviton/RSGravitonToZZ_kMpl01_M_1000_TuneCUETP8M1_13TeV_pythia8_cfi.py \
--fileout file:RSGravitonToZZ_GEN-SIM.root \
--python_filename RSGravitonToZZ_GEN-SIM_cfg.py \
--step GEN,SIM \
--datatier GEN-SIM \
--eventcontent RAWSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--mc --no_exec --number 10
$ cmsRun RSGravitonToZZ_GEN-SIM_cfg.py
 STEP 2 - RAW creation from GEN-SIM 
$ cmsDriver.py RAWSIM \
--filein file:RSGravitonToZZ_GEN-SIM.root \
--fileout file:RSGravitonToZZ_GEN-SIM-RAW.root \
--python_filename RSGravitonToZZ _GEN-SIM-RAW_cfg.py \
--step DIGI,L1,DIGI2RAW,HLT \
--datatier GEN-SIM-RAW \
--eventcontent RAWSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--mc --no_exec --number -1
$ cmsRun RSGravitonToZZ _GEN-SIM-RAW_cfg.py
 STEP 3 - AOD from RAW 
$ cmsDriver.py AODSIM \
--filein file:RSGravitonToZZ_GEN-SIM-RAW.root \
--fileout file:RSGravitonToZZ_GEN-SIM-RAW-AOD.root \
--python_filename RSGravitonToZZ_GEN-SIM-RAW-AOD_cfg.py \
--step RAW2DIGI,L1Reco,RECO \
--datatier RECO \
--eventcontent AODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun RSGravitonToZZ_GEN-SIM-RAW-AOD_cfg.py
 STEP 4 - MINIAOD from AOD 
$ cmsDriver.py MINIAOD \
--filein file:RSGravitonToZZ_GEN-SIM-RAW-AOD.root \
--fileout file:RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD.root \
--python_filename RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD_cfg.py \
--step PAT \
--datatier MINIAODSIM \
--eventcontent MINIAODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD_cfg.py
 STEP 5 - NANOAOD from MINIAOD 
$ cmsDriver.py NANOAOD \
--filein file:RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD.root \
--fileout file:RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD-NANOAOD.root \
--python_filename RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD-NANOAOD_cfg.py \
--step NANO \
--datatier NANOAODSIM \
--eventcontent NANOAODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun RSGravitonToZZ_GEN-SIM-RAW-AOD-MINIAOD-NANOAOD_cfg.py
 Using LHE from MadGraph and Pythia hadronizer fragment 
 Step 1 - GEN,SIM from LHE 
$ cmsDriver.py Configuration/GenProduction/python/ThirteenTeV/Hadronizer/Hadronizer_TuneCUETP8M1_13TeV_aMCatNLO_0p_LHE_pythia8_cff.py \
--filein file:MG5_pp2mumu_1000evts.lhe \
--fileout file:pp2mumu_LHE-GEN-SIM.root \
--python_filename pp2mumu_LHE-GEN-SIM_cfg.py \
--step GEN,SIM \
--eventcontent RAWSIM \
--datatier LHE-GEN-SIM \
--conditions 102X_upgrade2018_realistic_v15 \
--beamspot Realistic25ns13TeVEarly2017Collision \
--geometry DB:Extended \
--era Run2_2018  \
--mc  --no_exec --number 100
$ cmsRun pp2mumu_LHE-GEN-SIM_cfg.py
 Step 2 - RAW from SIM 
$ cmsDriver.py RAWSIM \
--filein file:pp2mumu_LHE-GEN-SIM.root \
--fileout file:pp2mumu_LHE-GEN-SIM-RAW.root \
--python_filename pp2mumu_LHE-GEN-SIM-RAW_cfg.py \
--step DIGI,L1,DIGI2RAW,HLT \
--datatier GEN-SIM-RAW \
--eventcontent RAWSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--mc --no_exec --number -1
$ cmsRun pp2mumu_LHE-GEN-SIM-RAW_cfg.py
 Step 3 - AOD from RAW 
$ cmsDriver.py AODSIM \
--filein file:pp2mumu_LHE-GEN-SIM-RAW.root \
--fileout file:pp2mumu_LHE-GEN-SIM-RAW-AOD.root \
--python_filename pp2mumu_LHE-GEN-SIM-RAW-AOD_cfg.py \
--step RAW2DIGI,L1Reco,RECO \
--datatier RECO \
--eventcontent AODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun pp2mumu_LHE-GEN-SIM-RAW-AOD_cfg.py
 Step 4 - MINIAOD from AOD 
$ cmsDriver.py MINIAOD \
--filein file:pp2mumu_LHE-GEN-SIM-RAW-AOD.root \
--fileout file:pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD.root \
--python_filename pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD_cfg.py \
--step PAT \
--datatier MINIAODSIM \
--eventcontent MINIAODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD_cfg.py
 Step 5 - NANOAOD from MINIAOD 
$ cmsDriver.py NANOAOD \
--filein file:pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD.root \
--fileout file:pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD-NANOAOD.root \
--python_filename pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD-NANOAOD_cfg.py \
--step NANO \
--datatier NANOAODSIM \
--eventcontent NANOAODSIM \
--beamspot Realistic25ns13TeVEarly2017Collision \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--era Run2_2018 \
--runUnscheduled \
--number -1 --no_exec --mc
$ cmsRun pp2mumu_LHE-GEN-SIM-RAW-AOD-MINIAOD-NANOAOD_cfg.py
 NANOAOD Analyzer 
 NANOAOD Tools 
 Example analyzer using NanoAODTools package 
 pp2mumu_Analysis.py 
#!/usr/bin/env python
import os, sys, math
import ROOT
ROOT.PyConfig.IgnoreCommandLineOptions = True
from importlib import import_module
from PhysicsTools.NanoAODTools.postprocessing.framework.postprocessor import PostProcessor
from PhysicsTools.NanoAODTools.postprocessing.framework.datamodel import Collection
from PhysicsTools.NanoAODTools.postprocessing.framework.eventloop import Module
class ExampleAnalysis(Module):
    def __init__(self):
        self.writeHistFile=True
    def beginJob(self,histFile=None,histDirName=None):
        Module.beginJob(self,histFile,histDirName)
        self.h_minv=ROOT.TH1F('Minv',   'Minv',   10, 80, 100)
        self.addObject(self.h_minv )
        self.h_mumass=ROOT.TH1F('MuMass',   'MuMass',   100, 0, 0.2)
        self.addObject(self.h_mumass )
    def analyze(self, event):
        muons = Collection(event, "Muon")
        sum = ROOT.TLorentzVector()
        if len(muons) == 2 :      #Select events with 2 muons
            for iter in muons :     #Loop on muons
            muonp = iter.p4()
            sum += iter.p4()
            self.h_mumass.Fill(math.sqrt(    #Fills histogram with muon mass
                muonp.E()*muonp.E() -
                muonp.Px()*muonp.Px() -
                muonp.Py()*muonp.Py() -
                muonp.Pz()*muonp.Pz() ))
            self.h_minv.Fill(math.sqrt(           #Fills histogram with 2 muon invariant mass
                sum.E()*sum.E() -
                sum.Px()*sum.Px() -
                sum.Py()*sum.Py() -
                sum.Pz()*sum.Pz() ))
    return True
preselection=""
files=["pp2mumu_LHE-NANOAOD.root"]
p=PostProcessor(
    ".",
    files,
    cut=preselection,
    branchsel=None,
    modules=[ExampleAnalysis()],
    noOut=True,
    histFileName="pp2mumu_Analysis.root",
    histDirName="plots")
p.run()
Run it:
$ python pp2mumu_Analysis.py
-- 
 
 gregores  - 2019-04-01