Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Configuration/Eras/python/Era_Run3_2023_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

from Configuration.Eras.Era_Run3_cff import Run3
from Configuration.Eras.Modifier_run3_egamma_2023_cff import run3_egamma_2023
from Configuration.Eras.Modifier_run3_scouting_nanoAOD_2023_cff import run3_scouting_nanoAOD_2023

Run3_2023 = cms.ModifierChain(Run3, run3_egamma_2023)
Run3_2023 = cms.ModifierChain(Run3, run3_egamma_2023, run3_scouting_nanoAOD_2023)
4 changes: 2 additions & 2 deletions Configuration/Eras/python/Era_Run3_2024_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

from Configuration.Eras.Era_Run3_cff import Run3
from Configuration.Eras.Modifier_stage2L1Trigger_2024_cff import stage2L1Trigger_2024
from Configuration.Eras.Modifier_run3_scouting_nanoAOD_post2023_cff import run3_scouting_nanoAOD_post2023
from Configuration.Eras.Modifier_run3_scouting_nanoAOD_2024_cff import run3_scouting_nanoAOD_2024

Run3_2024 = cms.ModifierChain(Run3, stage2L1Trigger_2024, run3_scouting_nanoAOD_post2023)
Run3_2024 = cms.ModifierChain(Run3, stage2L1Trigger_2024, run3_scouting_nanoAOD_2024)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import FWCore.ParameterSet.Config as cms

run3_scouting_nanoAOD_2023 = cms.Modifier()
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import FWCore.ParameterSet.Config as cms

run3_scouting_nanoAOD_2024 = cms.Modifier()

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,28 @@ typedef SimpleFlatTableProducer<Run3ScoutingPhoton> SimpleRun3ScoutingPhotonFlat

#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h"
typedef SimpleFlatTableProducer<Run3ScoutingMuon> SimpleRun3ScoutingMuonFlatTableProducer;
typedef SimpleCollectionFlatTableProducer<Run3ScoutingMuon> SimpleRun3ScoutingMuonCollectionFlatTableProducer;

#include "DataFormats/Scouting/interface/Run3ScoutingElectron.h"
typedef SimpleFlatTableProducer<Run3ScoutingElectron> SimpleRun3ScoutingElectronFlatTableProducer;
typedef SimpleCollectionFlatTableProducer<Run3ScoutingElectron> SimpleRun3ScoutingElectronCollectionFlatTableProducer;

#include "DataFormats/Scouting/interface/Run3ScoutingTrack.h"
typedef SimpleFlatTableProducer<Run3ScoutingTrack> SimpleRun3ScoutingTrackFlatTableProducer;

#include "DataFormats/Scouting/interface/Run3ScoutingParticle.h"
typedef SimpleFlatTableProducer<Run3ScoutingParticle> SimpleRun3ScoutingParticleFlatTableProducer;

#include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h"
typedef SimpleFlatTableProducer<Run3ScoutingPFJet> SimpleRun3ScoutingPFJetFlatTableProducer;

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(SimpleRun3ScoutingVertexFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingPhotonFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingMuonFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingMuonCollectionFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingElectronFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingElectronCollectionFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingTrackFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingParticleFlatTableProducer);
DEFINE_FWK_MODULE(SimpleRun3ScoutingPFJetFlatTableProducer);
50 changes: 46 additions & 4 deletions PhysicsTools/NanoAOD/python/custom_run3scouting_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,19 @@
scoutingMuonTableTask = cms.Task(scoutingMuonTable)
scoutingMuonDisplacedVertexTableTask = cms.Task(scoutingMuonDisplacedVertexTable)

# from 2024, there are two muon collections
from Configuration.Eras.Modifier_run3_scouting_nanoAOD_post2023_cff import run3_scouting_nanoAOD_post2023
run3_scouting_nanoAOD_post2023.toReplaceWith(scoutingMuonTableTask, cms.Task(scoutingMuonVtxTable, scoutingMuonNoVtxTable))\
# from 2024, there are two muon collections (https://its.cern.ch/jira/browse/CMSHLT-3089)
run3_scouting_nanoAOD_2024.toReplaceWith(scoutingMuonTableTask, cms.Task(scoutingMuonVtxTable, scoutingMuonNoVtxTable))\
.toReplaceWith(scoutingMuonDisplacedVertexTableTask, cms.Task(scoutingMuonVtxDisplacedVertexTable, scoutingMuonNoVtxDisplacedVertexTable))

# Scouting Electron
scoutingElectronTableTask = cms.Task(scoutingElectronTable)

# from 2023, scouting electron's tracks are added as std::vector since multiple tracks can be associated to a scouting electron
# plugin to select the best track to reduce to a single track per scouting electron is added
(run3_scouting_nanoAOD_2023 | run3_scouting_nanoAOD_2024).toReplaceWith(
scoutingElectronTableTask, cms.Task(scoutingElectronBestTrack, scoutingElectronTable)
)

# other collections are directly from original Run3Scouting objects, so unnessary to define tasks

############################
Expand Down Expand Up @@ -90,7 +98,7 @@ def prepareScoutingNanoTaskCommon():
# all scouting objects are saved except PF Candidate and Track
scoutingNanoTaskCommon = cms.Task()
scoutingNanoTaskCommon.add(scoutingMuonTableTask, scoutingMuonDisplacedVertexTableTask)
scoutingNanoTaskCommon.add(scoutingElectronTable)
scoutingNanoTaskCommon.add(scoutingElectronTableTask)
scoutingNanoTaskCommon.add(scoutingPhotonTable)
scoutingNanoTaskCommon.add(scoutingPrimaryVertexTable)
scoutingNanoTaskCommon.add(scoutingPFJetTable)
Expand Down Expand Up @@ -243,3 +251,37 @@ def addScoutingPFCandidate(process):
# PF candidate after translation to reco::PFCandidate
process.scoutingNanoSequence.associate(scoutingPFCandidateTask)
return process

# this adds all electron tracks in addition to best track selected
# this should be only used with ScoutingElectron format from 2023
def addScoutingElectronTrack(process):
process.scoutingElectronTable.externalVariables.bestTrack_index\
= ExtVar(cms.InputTag("scoutingElectronBestTrack", "Run3ScoutingElectronBestTrackIndex"), int, doc="best track index")

process.scoutingElectronTable.collectionVariables = cms.PSet(
ScoutingElectronTrack = cms.PSet(
name = cms.string("ScoutingElectronTrack"),
doc = cms.string("Scouting Electron Track"),
useCount = cms.bool(True),
useOffset = cms.bool(True),
variables = cms.PSet(
d0 = Var("trkd0", "float", doc="track d0"),
dz = Var("trkdz", "float", doc="track dz"),
pt = Var("trkpt", "float", doc="track pt"),
eta = Var("trketa", "float", doc="track eta"),
phi = Var("trkphi", "float", doc="track phi"),
chi2overndf = Var("trkchi2overndf", "float", doc="track normalized chi squared"),
charge = Var("trkcharge", "int", doc="track charge"),
),
),
)

# additional electron track variables added in 2024 in https://github.com/cms-sw/cmssw/pull/43744
run3_scouting_nanoAOD_2024.toModify(
process.scoutingElectronTable.collectionVariables.variables,
pMode = Var("trkpMode", "float", doc="track pMode"),
etaMode = Var("trketaMode", "float", doc="track etaMode"),
phiMode = Var("trkphiMode", "float", doc="track phiMode"),
qoverpModeError = Var("trkqoverpModeError", "float", doc="track qoverpModeError"),
)
return process
Loading