Skip to content

Adding a reduced data format: phase2_l1scout for use in the Spring24 MC Campaign#51259

Closed
BenjaminRS wants to merge 1 commit into
cms-sw:CMSSW_14_0_Xfrom
BenjaminRS:AddL1SFormat
Closed

Adding a reduced data format: phase2_l1scout for use in the Spring24 MC Campaign#51259
BenjaminRS wants to merge 1 commit into
cms-sw:CMSSW_14_0_Xfrom
BenjaminRS:AddL1SFormat

Conversation

@BenjaminRS

Copy link
Copy Markdown
Contributor

PR description:

Adding in new configuration options providing a reduced data format: phase2_l1scout for use in the Spring24 MC Campaign.

PR validation:

Ran the usual format checks:

scram build code-checks 
scram build code-format

Will test this PR whilst in draft before opening the PR for inclusion.

@cmsbuild

Copy link
Copy Markdown
Contributor

Pull request #51259 was updated.

@cmsbuild

cmsbuild commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

cms-bot internal usage

@BenjaminRS

Copy link
Copy Markdown
Contributor Author

test parameters:

  • workflow = 29634.78
  • relvals_opt = --what upgrade

@BenjaminRS

Copy link
Copy Markdown
Contributor Author

please test

@cmsbuild

Copy link
Copy Markdown
Contributor

-1

Failed Tests: RelVals
Size: This PR adds an extra 24KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-2fc3b1/54077/summary.html
COMMIT: 3014346
CMSSW: CMSSW_14_0_X_2026-06-16-2300/el8_amd64_gcc12
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week0/cms-sw/cmssw/51259/54077/install.sh to create a dev area with all the needed externals and cmssw changes.

Failed RelVals

----- Begin Fatal Exception 18-Jun-2026 17:05:54 CEST-----------------------
An exception of category 'LogicError' occurred while
   [0] Constructing the EventProcessor
Exception Message:
Duplicate Product Identifier 
The Framework requires a unique branch name for each product
which consists of four parts: a friendly class name, module label,
product instance name, and process name. A product has been
registered with a duplicate branch name. The most common way
to fix this error is to modify the product instance name in
one of the offending 'produces' function calls. Another fix
would be to delete one of them if they are for the same product.

    friendly class name = edmHLTPathStatus
    module label = pIsoTkEleEGEle22_12
    product instance name = 
    process name = HLT

The following additional information is not used as part of
the unique branch identifier.

    branch types = Event  Event
    class name = edm::HLTPathStatus

Note that if the four parts of the branch name are the same,
then this error will occur even if the branch types differ!

----- End Fatal Exception -------------------------------------------------

@makortel

Copy link
Copy Markdown
Contributor

It seems that the pDoubleEGEle37_24 is in the Schedule twice

@makortel

Copy link
Copy Markdown
Contributor

Uncommenting these lines from the step2_DIGI_L1_L1TrackTrigger_L1P2GT_DIGI2RAW_HLT.py

#process.schedule.insert(5, process.pDoubleEGEle37_24)
#process.schedule.insert(6, process.pDoubleIsoTkPho22_12)
#process.schedule.insert(7, process.pDoublePuppiTau52_52)
#process.schedule.insert(8, process.pDoubleTkEle25_12)
#process.schedule.insert(9, process.pDoubleTkMuon15_7)
#process.schedule.insert(10, process.pIsoTkEleEGEle22_12)
#process.schedule.insert(11, process.pPuppiHT400)
#process.schedule.insert(12, process.pPuppiHT450)
#process.schedule.insert(13, process.pPuppiMET200)
#process.schedule.insert(14, process.pQuadJet70_55_40_40)
#process.schedule.insert(15, process.pSingleEGEle51)
#process.schedule.insert(16, process.pSingleIsoTkEle28)
#process.schedule.insert(17, process.pSingleIsoTkPho36)
#process.schedule.insert(18, process.pSinglePuppiJet230)
#process.schedule.insert(19, process.pSingleTkEle36)
#process.schedule.insert(20, process.pSingleTkMuon22)
#process.schedule.insert(21, process.pTripleTkMuon5_3_3)

allowed the job to complete.

I checked that in 20_1_X a better error message is given in this kind of situation.

@BenjaminRS

Copy link
Copy Markdown
Contributor Author

@cms-sw/core-l2 I am not sure what is the best way forward here. Matti said the jobs complete when uncommenting lines from a step2.py file. How do I proceed? Thanks, Benjamin

@Dr15Jones

Copy link
Copy Markdown
Contributor

@BenjaminRS I'm afraid @makortel is on vacation for the next 3 weeks.

@Dr15Jones

Copy link
Copy Markdown
Contributor

So part of the issue is the path pIsoTkEleEGEle22_12 is already defined in HLTrigger.Configuration.HLT_75e33_cff so when cmsDriver.py injected the same path using

process.schedule.insert(10, process.pIsoTkEleEGEle22_12)

(which was probably written by this piece of code

for index, item in enumerate(pathNames[:self.scheduleIndexOfFirstHLTPath]):
result += 'process.schedule.insert('+str(index)+', '+item+')\n'

)

a duplicate entry was added to the Schedule. Now in principle, the Schedule should just ignore duplicate entries and take the first one, but I guess we never added such a safety feature.

@Dr15Jones

Copy link
Copy Markdown
Contributor

It looks like the loading of the HLT menu was done here

self.loadAndRemember('HLTrigger/Configuration/HLT_%s_cff' % stepSpec)

@mmusich

mmusich commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Setting aside the framework issue about duplication of paths in the schedule, it looks to me that this workflow 29634.78 is bugged to begin with, because it's running the L1P2GT as an additional extra step, while in this release it looks like the P2 GT emulator was already run as part of the HLT menu

fragment.load('L1Trigger.Configuration.GTemulator_cff')
fragment.l1tGTProducer.GMTTkMuons = cms.InputTag("l1tTkMuonsGmt")
#fragment.l1tGTProducer.CL2Jets = cms.InputTag("l1tSCPFL1PuppiCorrectedEmulator")
#fragment.l1tGTProducer.CL2HtSum = cms.InputTag("l1tSCPFL1PuppiCorrectedEmulatorMHT")
fragment.GTemulatorTask = cms.Task(fragment.l1tGTProducer, fragment.l1tGTAlgoBlockProducer)
fragment.GTemulation_step = cms.Path(cms.Sequence(fragment.GTemulatorTask))
fragment.load('L1Trigger.Phase2L1GT.l1tGTMenu_cff')
from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import collectAlgorithmPaths
fragment.schedule = cms.Schedule(*[
fragment.GTemulation_step,

Was it ever tested in isolation ?

@Dr15Jones

Copy link
Copy Markdown
Contributor

Also, the whole use of process.schedule.insert is meaningless now to the framework since all Paths are scheduled to run concurrently and the actual module order is really determined by dependencies between modules.

MINIAODSIMEventContent.outputCommands.extend(MicroEventContentMC.outputCommands)
MINIAODSIMEventContent.outputCommands.extend(HLTriggerMINIAOD.outputCommands)

phase2_l1scout.toModify(MINIAODSIMEventContent,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of polluting this file with this large list for everyone, wouldn't it be better to have this definition in a package that is overviewed by L1T (e.g. L1Trigger/Configuration/python/L1Trigger_EventContent_cff.py) and then use it here?

@srimanob

Copy link
Copy Markdown
Contributor

Why is this PR based on 14_0?

@BenjaminRS

Copy link
Copy Markdown
Contributor Author

@srimanob -- This is for adding modifications to the Spring24 MC campaign, based in 14X.

@BenjaminRS

Copy link
Copy Markdown
Contributor Author

Superseded by #51319

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants