Skip to content
Closed
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
4 changes: 3 additions & 1 deletion Configuration/Eras/python/Era_Run3_2026_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@

from Configuration.Eras.Era_Run3_2025_cff import Run3_2025

Run3_2026 = cms.ModifierChain(Run3_2025)
from Configuration.Eras.Modifier_run3_l1scouting_2026_cff import run3_l1scouting_2026

Run3_2026 = cms.ModifierChain(Run3_2025, run3_l1scouting_2026)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import FWCore.ParameterSet.Config as cms

run3_l1scouting_2026 = cms.Modifier()
54 changes: 53 additions & 1 deletion Configuration/PyReleaseValidation/python/relval_nano.py
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ def next(self, index: int = None) -> None:


################################################################
# current release cycle workflows : 14.0
# 14.0 workflows
steps['TTbarMINIAOD14.0'] = {'INPUT': InputInfo(
location='STD', dataSet='/RelValTTbar_14TeV/CMSSW_14_0_0-PU_140X_mcRun3_2024_realistic_v3_STD_2024_PU-v2/MINIAODSIM')}

Expand Down Expand Up @@ -431,6 +431,12 @@ def next(self, index: int = None) -> None:
steps['ScoutingPFMonitor_Run2025C_MINIAOD_150X'] = {'INPUT': InputInfo(
location='STD', ls=lumis_Run2025C, dataSet='/ScoutingPFMonitor/Run2025C-PromptReco-v1/MINIAOD')}

steps['L1Scouting2025RAW15.0'] = {'INPUT': InputInfo(location='STD', ls={398860: [[498, 498]]},
dataSet='/L1Scouting/Run2025G-v1/L1SCOUT')}

steps['L1ScoutingSelection2025RAW15.0'] = {'INPUT': InputInfo(location='STD', ls={398860: [[498, 498]]},
dataSet='/L1ScoutingSelection/Run2025G-v1/L1SCOUT')}

steps['NANO_data15.0'] = merge([{'--era': 'Run3_2025', '--conditions': 'auto:run3_data_prompt'}, _NANO_data])

steps['NANO_data15.0_prompt'] = merge([{'-s': 'NANO:@Prompt,DQM:@nanoAODDQM', '-n': '1000'},
Expand Down Expand Up @@ -466,6 +472,29 @@ def next(self, index: int = None) -> None:
steps['scoutingNANO_monitorWithPrompt_data15.0'] = merge([{'-s': 'NANO:@Prompt+@ScoutMonitor'},
steps['NANO_data15.0']])

steps['l1ScoutingNANO_data15.0'] = merge([{'-s': 'NANO:@L1Scout', '-n': '1000'},
steps['NANO_data15.0']])

steps['l1ScoutingSelectionNANO_data15.0'] = merge([{'-s': 'NANO:@L1ScoutSelect', '-n': '1000'},
steps['NANO_data15.0']])

################################################################
# Run-3, 16_0_X (2026 data-taking)

steps['L1Scouting2026RAW16.0'] = {'INPUT': InputInfo(location='STD', ls={401733: [[250, 250]]},
dataSet='/L1Scouting/Run2026A-v1/L1SCOUT')}

steps['L1ScoutingSelection2026RAW16.0'] = {'INPUT': InputInfo(location='STD', ls={401733: [[250, 250]]},
dataSet='/L1ScoutingSelection/Run2026A-v1/L1SCOUT')}

steps['NANO_data16.0'] = merge([{'--era': 'Run3_2026', '--conditions': 'auto:run3_data_prompt'}, _NANO_data])

steps['l1ScoutingNANO_data16.0'] = merge([{'-s': 'NANO:@L1Scout', '-n': '1000'},
steps['NANO_data16.0']])

steps['l1ScoutingSelectionNANO_data16.0'] = merge([{'-s': 'NANO:@L1ScoutSelect', '-n': '1000'},
steps['NANO_data16.0']])

################################################################
# NANOGEN
steps['NANOGENFromGen'] = merge([{'-s': 'NANO:@GEN,DQM:@nanogenDQM',
Expand Down Expand Up @@ -633,13 +662,36 @@ def next(self, index: int = None) -> None:
workflows[_wfn()] = ['ScoutingNANOmonitordata150Xrun3', ['ScoutingPFMonitor_Run2025C_MINIAOD_150X', 'scoutingNANO_monitor_data15.0']] # noqa
workflows[_wfn()] = ['ScoutingNANOmonitorWithPromptdata150Xrun3', ['ScoutingPFMonitor_Run2025C_MINIAOD_150X', 'scoutingNANO_monitorWithPrompt_data15.0']] # noqa
workflows[_wfn()] = ['BPHNANOdata150Xrun3', ['JetMET1_Run2025C_MINIAOD_150X', 'BPHNANO_data15.0']]
workflows[_wfn()] = ['L1ScoutingNANOdata150Xrun3', ['L1Scouting2025RAW15.0', 'l1ScoutingNANO_data15.0']]
workflows[_wfn()] = ['L1ScoutingSelectionNANOdata150Xrun3', ['L1ScoutingSelection2025RAW15.0', 'l1ScoutingSelectionNANO_data15.0']]

# DPG custom NANOs, data
_wfn.subnext()

# DPG custom NANOs, MC
_wfn.subnext()

_wfn.next(4)
######## 2500.4xxx ########
# Run3, 16_0_X input (2026 data-taking)
# Standard NANO, MC

# Standard NANO, data
_wfn.subnext()

# POG/PAG custom NANOs, MC
_wfn.subnext()

# POG/PAG custom NANOs, data
_wfn.subnext()
workflows[_wfn()] = ['L1ScoutingNANOdata160Xrun3', ['L1Scouting2026RAW16.0', 'l1ScoutingNANO_data16.0']]
workflows[_wfn()] = ['L1ScoutingSelectionNANOdata160Xrun3', ['L1ScoutingSelection2026RAW16.0', 'l1ScoutingSelectionNANO_data16.0']]

# DPG custom NANOs, data
_wfn.subnext()

# DPG custom NANOs, MC
_wfn.subnext()

_wfn.next(9)
######## 2500.9xxx ########
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#include <memory>
#include <string>
#include <utility>
#include <vector>

#include "DataFormats/Common/interface/ValueMap.h"
#include "DataFormats/L1Scouting/interface/OrbitCollection.h"
#include "DataFormats/L1Scouting/interface/L1ScoutingCaloTower.h"
#include "FWCore/Framework/interface/global/EDProducer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "L1TriggerScouting/Utilities/interface/conversion.h"

class L1ScoutingCaloTowerPhysicalValueMapProducer : public edm::global::EDProducer<> {
public:
L1ScoutingCaloTowerPhysicalValueMapProducer(edm::ParameterSet const&);
~L1ScoutingCaloTowerPhysicalValueMapProducer() override = default;

static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;

void putValueMap(edm::Event&,
edm::Handle<l1ScoutingRun3::CaloTowerOrbitCollection> const&,
std::vector<float> const&,
std::string const&) const;

edm::EDGetTokenT<l1ScoutingRun3::CaloTowerOrbitCollection> const src_;
};

L1ScoutingCaloTowerPhysicalValueMapProducer::L1ScoutingCaloTowerPhysicalValueMapProducer(edm::ParameterSet const& params)
: src_(consumes(params.getParameter<edm::InputTag>("src"))) {
produces<edm::ValueMap<float>>("fEt");
produces<edm::ValueMap<float>>("fEta");
produces<edm::ValueMap<float>>("fPhi");
}

void L1ScoutingCaloTowerPhysicalValueMapProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("src");
descriptions.addWithDefaultLabel(desc);
}

void L1ScoutingCaloTowerPhysicalValueMapProducer::produce(edm::StreamID,
edm::Event& iEvent,
edm::EventSetup const&) const {
auto const src_h = iEvent.getHandle(src_);

std::vector<float> outv_fEt{};
std::vector<float> outv_fEta{};
std::vector<float> outv_fPhi{};

if (src_h.isValid()) {
auto const& src = *src_h;
auto const nobjs = src.size();

outv_fEt.reserve(nobjs);
outv_fEta.reserve(nobjs);
outv_fPhi.reserve(nobjs);

for (auto iobj = 0; iobj < nobjs; ++iobj) {
auto const& obj = src[iobj];
outv_fEt.emplace_back(l1ScoutingRun3::calol1::fEt(obj.hwEt()));
outv_fEta.emplace_back(l1ScoutingRun3::calol1::fEta(obj.hwEta()));
outv_fPhi.emplace_back(l1ScoutingRun3::calol1::fPhi(obj.hwPhi()));
}

putValueMap(iEvent, src_h, outv_fEt, "fEt");
putValueMap(iEvent, src_h, outv_fEta, "fEta");
putValueMap(iEvent, src_h, outv_fPhi, "fPhi");
}
}

void L1ScoutingCaloTowerPhysicalValueMapProducer::putValueMap(
edm::Event& iEvent,
edm::Handle<l1ScoutingRun3::CaloTowerOrbitCollection> const& handle,
std::vector<float> const& values,
std::string const& label) const {
auto valuemap = std::make_unique<edm::ValueMap<float>>();
edm::ValueMap<float>::Filler filler(*valuemap);
filler.insert(handle, values.begin(), values.end());
filler.fill();
iEvent.put(std::move(valuemap), label);
}

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(L1ScoutingCaloTowerPhysicalValueMapProducer);
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ class SimpleOrbitFlatTableProducer : public edm::stream::EDProducer<> {

std::vector<const T *> selobjs;
std::vector<edm::Ptr<T>> selptrs; // for external variables
std::vector<unsigned int> selbxOffsets;
std::vector<unsigned int> selbxOffsets(l1ScoutingRun3::OrbitFlatTable::NBX + 2, 0);

if (src.isValid() || !skipNonExistingSrc_) {
if (singleton_) {
Expand Down Expand Up @@ -297,9 +297,13 @@ typedef SimpleOrbitFlatTableProducer<l1ScoutingRun3::Jet> SimpleL1ScoutingJetOrb
#include "DataFormats/L1Scouting/interface/L1ScoutingBMTFStub.h"
typedef SimpleOrbitFlatTableProducer<l1ScoutingRun3::BMTFStub> SimpleL1ScoutingBMTFStubOrbitFlatTableProducer;

#include "DataFormats/L1Scouting/interface/L1ScoutingCaloTower.h"
typedef SimpleOrbitFlatTableProducer<l1ScoutingRun3::CaloTower> SimpleL1ScoutingCaloTowerOrbitFlatTableProducer;

#include "FWCore/Framework/interface/MakerMacros.h"
DEFINE_FWK_MODULE(SimpleL1ScoutingMuonOrbitFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1ScoutingEGammaOrbitFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1ScoutingTauOrbitFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1ScoutingJetOrbitFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1ScoutingBMTFStubOrbitFlatTableProducer);
DEFINE_FWK_MODULE(SimpleL1ScoutingCaloTowerOrbitFlatTableProducer);
6 changes: 3 additions & 3 deletions PhysicsTools/NanoAOD/python/autoNANO.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ def expandNanoMapping(seqList, mapping, key):
'ScoutFromMini' : {'sequence': '@Scout',
'customize': '@Scout+PhysicsTools/NanoAOD/custom_run3scouting_cff.customiseScoutingNanoFromMini'},
# L1Scouting nano
'L1Scout': {'sequence': 'PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff',
'L1Scout': {'sequence': 'PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff.l1scoutingNanoSequence',
'customize': 'PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff.customiseL1ScoutingNanoAOD'},
'L1ScoutSelect': {'sequence': '@L1Scout',
'customize': '@L1Scout+PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff.customiseL1ScoutingNanoAODSelection'},
'L1ScoutSelect': {'sequence': 'PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff.l1scoutingNanoSequence',
'customize': 'PhysicsTools/NanoAOD/custom_l1scoutingrun3_cff.customiseL1ScoutingNanoAODSelection'},
# BPH nano
'BPH' : {'sequence': '@PHYS',
'customize': '@PHYS+PhysicsTools/NanoAOD/custom_bph_cff.nanoAOD_customizeBPH'},
Expand Down
Loading