Monte Carlo Production

Fast Simulation on CMSSW_10_2_15

Preparation

$ ssh lxplus.cern.ch
$ cmsrel CMSSW_10_2_15
$ cd CMSSW_10_2_15/src
$ cmsenv
$ mkdir -p Configuration/GenProduction/ 
$ git clone git@github.com:cms-sw/genproductions.git Configuration/GenProduction/ 
$ scram b

Using MadGraph LHE and Pythia hadronizer

Step 1 - AOD from a 10000 events LHE

cmsDriver.py Configuration/GenProduction/python/ThirteenTeV/Hadronizer/Hadronizer_TuneCUETP8M1_13TeV_aMCatNLO_0p_LHE_pythia8_cff.py \
--filein file:MG5_pp2mumu_10kevts.lhe \
--fileout file:pp2mumu_FAST_LHE-AOD.root  \
--python_filename pp2mumu_FAST_LHE-AOD_cfg.py \
--step GEN,SIM,RECOBEFMIX,DIGI,L1,DIGI2RAW,L1Reco,RECO \
--eventcontent AODSIM \
--datatier AODSIM \
--conditions 102X_upgrade2018_realistic_v15 \
--beamspot Realistic25ns13TeVEarly2018Collision \
--customise_commands "process.source.numberEventsInLuminosityBlock = cms.untracked.uint32(10000)" \
--era Run2_2018_FastSim \
--nThreads 2 \
--no_exec --mc --fast --number -1

Step 2 - MINIAOD from AOD

cmsDriver.py MINIAOD \
--filein file:pp2mumu_FAST_LHE-AOD.root \
--fileout file:pp2mumu_FAST_LHE-AOD-MINIAOD.root \
--python_filename pp2mumu_FAST_LHE-AOD-MINIAOD_cfg.py \
--step PAT \
--eventcontent MINIAODSIM \
--datatier MINIAODSIM \
--conditions 102X_upgrade2018_realistic_v15 \
--geometry DB:Extended \
--runUnscheduled \
--era Run2_2018 \
--nThreads 8 \
--no_exec --mc --fast --number -1

Step 3 - NANOAOD from MINIAOD

cmsDriver.py NANOAOD \
--filein file:pp2mumu_FAST_LHE-AOD-MINIAOD.root \
--fileout file:pp2mumu_FAST_LHE-AOD-MINIAOD-NANOAOD.root \
--python_filename pp2mumu_FAST_LHE-AOD-MINIAOD-NANOAOD_cfg.py \
--step NANO \
--eventcontent NANOAODSIM \
--datatier NANOAODSIM \
--conditions 102X_upgrade2018_realistic_v16 \
--era Run2_2018,run2_nanoAOD_102Xv1 \
--customise_commands \
'process.particleLevelSequence.remove(process.genParticles2HepMCHiggsVtx);process.particleLevelSequence.remove(process.rivetProducerHTXS);process.particleLevelTables.remove(process.HTXSCategoryTable)' \
--nThreads 2 \
--no_exec --mc --fast --number -1

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 to generate Randall-Sundrum Graviton

STEP 1 - Event generation (GEN) and detector simulation (SIM)

$ 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 from 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 MadGraph LHE and Pythia hadronizer

Step 1 - Hadronization from Matrix Element LHE (GEN) and detector simulation (SIM)

$ 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( sum.M() )
        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

ROOT Analyzer

Example using TTreeReader

NanoReader.cc

#include "ostream"
#include "TFile.h"
#include "TTreeReader.h"
#include "TTreeReaderArray.h"
#include "TLorentzVector.h"

void NanoReader(){
    TFile *file = new TFile("PPto2Mu_MG5_10k_NANO.root");
    TTreeReader reader("Events", file);
    TTreeReaderArray<Float_t>   Muon_pt(reader, "Muon_pt"    );
    TTreeReaderArray<Float_t>  Muon_eta(reader, "Muon_eta"   );
    TTreeReaderArray<Float_t>  Muon_phi(reader, "Muon_phi"   );
    TTreeReaderArray<Float_t> Muon_mass(reader, "Muon_mass"  );
    TTreeReaderArray<UInt_t>      nMuon(reader, "nMuon"      );
    TTreeReaderArray<Int_t> Muon_charge(reader, "Muon_charge");

    Int_t nEvents = reader.GetEntries(0);
    Double_t ptCut = 0;
    Int_t nMuonCut = 3;
    Int_t count = 0;
    while(reader.Next()){
        int n = nMuon[0];
        Float_t ptMax = Muon_pt[0];
        if(ptMax < ptCut || n < nMuonCut ){continue;}
        count++;
        std::cout << "==============================================" << std::endl;
        std::cout << "Event Number: " << reader.GetCurrentEntry() << std::endl;
        std::cout << "Number of Muons: " << n << std::endl;
        TLorentzVector pMuon[n];
        for (Int_t i=0; i<n; i++) {
           pMuon[i].SetPtEtaPhiM(Muon_pt[i],Muon_eta[i],Muon_phi[i],Muon_mass[i]);
            std::cout << Muon_charge[i]     << "       ";
            std::cout << Muon_pt[i]         << "       ";
            std::cout << pMuon[i].E()       << "       ";
            std::cout << pMuon[i].Px()      << "       ";
            std::cout << pMuon[i].Py()      << "       ";
            std::cout << pMuon[i].Pz()      << std::endl;
        }
    }
    Float_t eff = float(count)/float(nEvents);
    std::cout << "==============================================" << std::endl;
    std::cout << "Number of events on the dataset: " << nEvents << std::endl;
    std::cout << "Number of events that passed the cut Pt > " << ptCut
              << " GeV and number of muons > "<< nMuonCut-1 <<": "<< count << std::endl;
    std::cout << "Cut efficiency: " << eff << std::endl;
    std::cout << "==============================================" << std::endl;
}

Run it:

$ root -b -q NanoReader.cc

-- gregores - 2019-04-01

Topic revision: r8 - 2019-06-09 - gregores
 

This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

antalya escort bursa escort eskisehir escort istanbul escort izmir escort