Skip to content

Commit

Permalink
Merge pull request #28 from cms-l1-dpg/141pre7-dev
Browse files Browse the repository at this point in the history
141pre7 dev
  • Loading branch information
artlbv authored Oct 7, 2024
2 parents 601876a + 208824b commit 9b8dee6
Show file tree
Hide file tree
Showing 7 changed files with 583 additions and 61 deletions.
14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ NanoAOD ntupler for Phase-2 L1 Objects

## Setup

This is for version `V38` that is based on the IB tag `phase2-l1t-1400pre3_v9` with these instructions:
https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideL1TPhase2Instructions#Recipe_for_phase2_l1t_1400pre3_v9
This is for version `V43` that is based on CMSSW_14_1_0_pre7.
For more information on the latest L1T Phase 2 software developments in CMSSW see: https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideL1TPhase2Instructions#Development

Corresponding menu twiki section: https://twiki.cern.ch/twiki/bin/view/CMS/PhaseIIL1TriggerMenuTools#Phase_2_L1_Trigger_objects_for_2
Corresponding menu twiki section: https://twiki.cern.ch/twiki/bin/viewauth/CMS/PhaseIIL1TriggerMenuTools#Phase_2_L1_Trigger_objects_based

```bash
cmsrel CMSSW_14_0_0_pre3
cd CMSSW_14_0_0_pre3/src/
cmsrel CMSSW_14_1_0_pre7
cd CMSSW_14_1_0_pre7/src/
cmsenv
git cms-init
git cms-checkout-topic -u cms-l1t-offline:phase2-l1t-1400pre3_v9

### ADDING NANO
git clone git@github.com:cms-l1-dpg/Phase2-L1Nano.git PhysicsTools/L1Nano
Expand All @@ -26,7 +24,7 @@ scram b -j 8

In the `test` directory there is a `cmsRun` config to rerun the L1 + **(L1 Track trigger)** + the P2GT emulator and produce the nano ntuple from these outputs.

Usage: `cmsRun test/V38_rerunL1wTT_cfg.py`
Usage: `cmsRun test/V43_rerunL1wTT_cfg.py`

### Via cmsDriver

Expand Down
3 changes: 3 additions & 0 deletions plugins/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
<use name="DataFormats/Candidate"/>
<use name="DataFormats/L1TGlobal"/>
<use name="DataFormats/L1Trigger"/>
<use name="DataFormats/L1TCorrelator"/>
<use name="DataFormats/L1TMuonPhase2"/>
<use name="DataFormats/L1TParticleFlow"/>
<use name="DataFormats/NanoAOD"/>
<use name="DataFormats/PatCandidates"/>
<use name="DataFormats/ProtonReco"/>
Expand Down
36 changes: 36 additions & 0 deletions plugins/L1TableProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,50 @@ typedef SimpleFlatTableProducer<l1t::VertexWord> SimpleL1VtxWordCandidateFlatTab
#include "DataFormats/L1Trigger/interface/P2GTAlgoBlock.h"
typedef SimpleFlatTableProducer<l1t::P2GTAlgoBlock> P2GTAlgoBlockFlatTableProducer;

#include "DataFormats/L1Trigger/interface/P2GTCandidate.h"
typedef SimpleFlatTableProducer<l1t::P2GTCandidate> SimpleP2GTCandidateFlatTableProducer;

#include "DataFormats/L1Trigger/interface/TkJetWord.h"
typedef SimpleFlatTableProducer<l1t::TkJetWord> SimpleL1TkJetWordCandidateFlatTableProducer;

#include "DataFormats/L1Trigger/interface/TkTripletWord.h"
typedef SimpleFlatTableProducer<l1t::TkTripletWord> SimpleTkTripletWordCandidateFlatTableProducer;

#include "DataFormats/L1Trigger/interface/L1Candidate.h"
typedef SimpleFlatTableProducer<l1t::L1Candidate> SimpleTriggerL1CandidateFlatTableProducer;

#include "DataFormats/L1TCorrelator/interface/TkEm.h"
typedef SimpleFlatTableProducer<l1t::TkEm> SimpleTriggerL1TkEmFlatTableProducer;

#include "DataFormats/L1TCorrelator/interface/TkElectron.h"
typedef SimpleFlatTableProducer<l1t::TkElectron> SimpleTriggerL1TkElectronFlatTableProducer;

#include "DataFormats/L1TMuonPhase2/interface/SAMuon.h"
typedef SimpleFlatTableProducer<l1t::SAMuon> SimpleTriggerL1SAMuonFlatTableProducer;

#include "DataFormats/L1TMuonPhase2/interface/TrackerMuon.h"
typedef SimpleFlatTableProducer<l1t::TrackerMuon> SimpleTriggerL1TrackerMuonFlatTableProducer;

#include "DataFormats/L1TCalorimeterPhase2/interface/Phase2L1CaloJet.h"
typedef SimpleFlatTableProducer<l1tp2::Phase2L1CaloJet> SimpleTriggerL1CaloJetFlatTableProducer;

#include "DataFormats/L1TParticleFlow/interface/PFTau.h"
typedef SimpleFlatTableProducer<l1t::PFTau> SimpleTriggerL1PFTauFlatTableProducer;

#include "DataFormats/L1TParticleFlow/interface/HPSPFTau.h"
typedef SimpleFlatTableProducer<l1t::HPSPFTau> SimpleTriggerL1HPSPFTauFlatTableProducer;

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(SimpleL1VtxWordCandidateFlatTableProducer);
DEFINE_FWK_MODULE(P2GTAlgoBlockFlatTableProducer);
DEFINE_FWK_MODULE(SimpleP2GTCandidateFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1TkJetWordCandidateFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTkTripletWordCandidateFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1CandidateFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1TkEmFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1TkElectronFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1SAMuonFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1TrackerMuonFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1CaloJetFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1PFTauFlatTableProducer);
DEFINE_FWK_MODULE(SimpleTriggerL1HPSPFTauFlatTableProducer);
101 changes: 70 additions & 31 deletions python/l1tPh2GTtables_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,31 @@
)

### P2GT Algo Block - trigger decisions
gtAlgoTable = cms.EDProducer(
"P2GTAlgoBlockFlatTableProducer",
src = cms.InputTag('l1tGTAlgoBlockProducer'),
cut = cms.string(""),
name = cms.string("L1GT"),
doc = cms.string("GT Algo Block decisions"),
singleton = cms.bool(False), # the number of entries is variable
variables = cms.PSet(
# name = Var("algoName",string, doc = "algo name"), # does not work
final = Var("decisionFinal",float, doc = "final decision"),
initial = Var("decisionBeforeBxMaskAndPrescale",float, doc = "initial decision"),
)
l1tP2GTTrigConvert = cms.EDProducer("P2GTTriggerResultsConverter",
src = cms.InputTag("l1tGTAlgoBlockProducer"),
prefix = cms.string("L1_"), # can be anything or omitted, default: "L1_"
decision = cms.string("final"), # can be "beforeBxMaskAndPrescale", "beforePrescale", "final" or omitted, default: "final"
)

# gtAlgoTable = cms.EDProducer(
# "P2GTAlgoBlockFlatTableProducer",
# src = cms.InputTag('l1tGTAlgoBlockProducer'),
# cut = cms.string(""),
# name = cms.string("L1GT"),
# doc = cms.string("GT Algo Block decisions"),
# singleton = cms.bool(False), # the number of entries is variable
# variables = cms.PSet(
# # name = Var("algoName",string, doc = "algo name"), # does not work
# final = Var("decisionFinal",float, doc = "final decision"),
# initial = Var("decisionBeforeBxMaskAndPrescale",float, doc = "initial decision"),
# )
# )



### Vertex
gtVtxTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','GTTPrimaryVert'),
cut = cms.string(""),
name = cms.string("L1GTVertex"),
Expand All @@ -51,7 +59,7 @@

### GT
gtTkPhoTable =cms.EDProducer(
"SimpleCandidateFlatTableProducer",
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2Photons'),
name = cms.string("L1GTtkPhoton"),
doc = cms.string("GT tkPhotons"),
Expand All @@ -61,12 +69,12 @@
l1GTObjVars,
## hw values
# hwPt = Var("hwPT_toInt()",int,doc="hardware pt"),
hwQual = Var("hwQual_toInt()",int),
hwIso = Var("hwIso_toInt()",int),
hwQual = Var("hwQualityFlags_toInt()",int),
hwIso = Var("hwIsolationPT_toInt()",int),
## more physical values
## using the GT scales for HW to physicsal vonversion, see scales in https://github.com/cms-sw/cmssw/blob/master/L1Trigger/Phase2L1GT/python/l1tGTScales.py
iso = Var(f"hwIso_toInt()*{scale_parameter.isolation_lsb.value()}",float, doc = "absolute isolation"),
relIso = Var(f"hwIso_toInt()*{scale_parameter.isolation_lsb.value()} / pt",float, doc = "relative isolation")
iso = Var(f"hwIsolationPT_toInt()*{scale_parameter.isolationPT_lsb.value()}",float, doc = "absolute isolation"),
relIso = Var(f"hwIsolationPT_toInt()*{scale_parameter.isolationPT_lsb.value()} / pt",float, doc = "relative isolation")
)
)

Expand All @@ -91,7 +99,7 @@
z0 = Var("vz",float),
charge = Var("charge", int, doc="charge id"),
## hw
hwQual = Var("hwQual_toInt()",int),
hwQual = Var("hwQualityScore_toInt()",int),
hwD0 = Var("hwD0_toInt()",int),
hwZ0 = Var("hwZ0_toInt()",int),
# hwBeta = Var("hwBeta_toInt()",int)
Expand All @@ -110,13 +118,42 @@
doc = cms.string("GT GMT standalone displaced Muon"),
)

## GT seededCone puppi Jets
gtSCJetsTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2Jets'),
# ## GT seededCone puppi Jets
# gtSCJetsTable = cms.EDProducer(
# # "SimpleCandidateFlatTableProducer",
# "SimpleP2GTCandidateFlatTableProducer",
# src = cms.InputTag('l1tGTProducer','CL2Jets'),
# cut = cms.string(""),
# name = cms.string("L1GTscJet"),
# doc = cms.string("GT CL2Jets: seededCone Puppi Jets"),
# singleton = cms.bool(False), # the number of entries is variable
# variables = cms.PSet(
# l1GTObjVars,
# z0 = Var("vz",float),
# )
# )

## GT seededCone 0.4 puppi Jets
gtSC4JetsTable = cms.EDProducer(
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2JetsSC4'),
cut = cms.string(""),
name = cms.string("L1GTsc4Jet"),
doc = cms.string("GT CL2JetsSC4: seededCone 0.4 Puppi Jets"),
singleton = cms.bool(False), # the number of entries is variable
variables = cms.PSet(
l1GTObjVars,
z0 = Var("vz",float),
)
)

## GT seededCone 0.8 puppi Jets
gtSC8JetsTable = cms.EDProducer(
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2JetsSC8'),
cut = cms.string(""),
name = cms.string("L1GTscJet"),
doc = cms.string("GT CL2Jets: seededCone Puppi Jets"),
name = cms.string("L1GTsc8Jet"),
doc = cms.string("GT CL2JetsSC8: seededCone 0.8 Puppi Jets"),
singleton = cms.bool(False), # the number of entries is variable
variables = cms.PSet(
l1GTObjVars,
Expand All @@ -125,7 +162,7 @@
)

gtNNTauTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2Taus'),
cut = cms.string(""),
name = cms.string("L1GTnnTau"),
Expand All @@ -139,7 +176,7 @@
)

gtEtSumTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2EtSum'),
name = cms.string("L1GTpuppiMET"),
doc = cms.string("GT CL2EtSum"),
Expand All @@ -151,7 +188,7 @@
)

gtHtSumTable = cms.EDProducer(
"SimpleCandidateFlatTableProducer",
"SimpleP2GTCandidateFlatTableProducer",
src = cms.InputTag('l1tGTProducer','CL2HtSum'),
name = cms.string("L1GTscJetSum"),
doc = cms.string("GT CL2HtSum"),
Expand All @@ -160,18 +197,20 @@
# l1GTObjVars,
mht = Var("pt", float, doc="MHT pt"),
mhtPhi = Var("phi", float, doc="MHT phi"),
ht = Var(f"hwSca_sum_toInt()*{scale_parameter.sca_sum_lsb.value()}", float, doc="HT"), ## HACK via hw value!
ht = Var(f"hwScalarSumPT_toInt()*{scale_parameter.scalarSumPT_lsb.value()}", float, doc="HT"), ## HACK via hw value!
)
)

## GT objects
p2GTL1TablesTask = cms.Task(
gtAlgoTable,
l1tP2GTTrigConvert, #gtAlgoTable,
gtTkPhoTable,
gtTkEleTable,
gtTkMuTable,
gtSaMuTable, gtSaDispMuTable,
gtSCJetsTable,
# gtSCJetsTable,
gtSC4JetsTable,
gtSC8JetsTable,
gtNNTauTable,
gtEtSumTable,
gtHtSumTable,
Expand Down
Loading

0 comments on commit 9b8dee6

Please sign in to comment.