Skip to content

Pixel CPE Generic-only era modifier#50480

Merged
cmsbuild merged 1 commit intocms-sw:masterfrom
mroguljic:2026_CPEGeneric_modifier
Mar 23, 2026
Merged

Pixel CPE Generic-only era modifier#50480
cmsbuild merged 1 commit intocms-sw:masterfrom
mroguljic:2026_CPEGeneric_modifier

Conversation

@mroguljic
Copy link
Contributor

@mroguljic mroguljic commented Mar 20, 2026

PR description:

This PR adds a modifier to the Run 3 2026 era configuration that makes the PixelRecHits ESProducers use Generic CPE. The PR is created in case of a possible change in reconstruction during 2026 data-taking.

PR validation:

Tested at configuration level with

cmsDriver.py step3 --era Run3_2026 --conditions auto:run3_data --data -s RECO --no_exec -n 1 --python_filename test_Run3_SiPixelGenericCPE_2026.py
edmConfigDump test_Run3_SiPixelGenericCPE_2026.py >& alternative.txt

The full configuration, w.r.t. the unmodified configuration, only differs in the PixelCPE parameter for the two TkTransientTrackingRecHitBuilderESProducer for

src$ diff alternative.txt central.txt 
85755c85755
<     PixelCPE = cms.string('PixelCPEGeneric'),
---
>     PixelCPE = cms.string('PixelCPEClusterRepair'),
85766c85766
<     PixelCPE = cms.string('PixelCPEGeneric'),
---
>     PixelCPE = cms.string('PixelCPEClusterRepairWithoutProbQ'),

The producers, with the change included, are shown below

process.TTRHBuilderAngleAndTemplate = cms.ESProducer("TkTransientTrackingRecHitBuilderESProducer",
    ComponentName = cms.string('WithAngleAndTemplate'),
    ComputeCoarseLocalPositionFromDisk = cms.bool(False),
    Matcher = cms.string('StandardMatcher'),
    Phase2StripCPE = cms.string(''),
    PixelCPE = cms.string('PixelCPEGeneric'),
    StripCPE = cms.string('StripCPEfromTrackAngle'),
    appendToDataLabel = cms.string('')
)


process.TTRHBuilderAngleAndTemplateWithoutProbQ = cms.ESProducer("TkTransientTrackingRecHitBuilderESProducer",
    ComponentName = cms.string('WithAngleAndTemplateWithoutProbQ'),
    ComputeCoarseLocalPositionFromDisk = cms.bool(False),
    Matcher = cms.string('StandardMatcher'),
    Phase2StripCPE = cms.string(''),
    PixelCPE = cms.string('PixelCPEGeneric'),
    StripCPE = cms.string('StripCPEfromTrackAngle'),
    appendToDataLabel = cms.string('')
)

Changes are expected in all workflows that use Run3 2026 era modifier.

If this PR is a backport please specify the original PR and why you need to backport that PR. If this PR will be backported please specify to which release cycle the backport is meant for:

To be backported to 16.0.X

@cmsbuild
Copy link
Contributor

cmsbuild commented Mar 20, 2026

cms-bot internal usage

@cmsbuild
Copy link
Contributor

@cmsbuild
Copy link
Contributor

A new Pull Request was created by @mroguljic for master.

It involves the following packages:

  • Configuration/Eras (operations)
  • RecoLocalTracker/SiPixelRecHits (reconstruction)

@Moanwar, @cmsbuild, @davidlange6, @fabiocos, @ftenchini, @jfernan2, @mandrenguyen, @srimanob can you please review it and eventually sign? Thanks.
@GiacomoSguazzoni, @Martin-Grunewald, @VinInn, @VourMa, @dkotlins, @elusian, @fabiocos, @felicepantaleo, @ferencek, @gpetruc, @makortel, @mmasciov, @mmusich, @mroguljic, @mtosi, @rovere, @threus, @tsusa this is something you requested to watch as well.
@ftenchini, @mandrenguyen, @sextonkennedy you are the release manager for this.

cms-bot commands are listed here

@mmusich
Copy link
Contributor

mmusich commented Mar 20, 2026

I guess for testing purposes it would be good to start adding

Run3_2026 = cms.ModifierChain(Run3_2025, run3_SiPixelGenericCPE)

to the configuration, assuming that's the intended outcome.

@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50480/48631

@cmsbuild
Copy link
Contributor

Pull request #50480 was updated. @Moanwar, @cmsbuild, @davidlange6, @fabiocos, @ftenchini, @jfernan2, @mandrenguyen, @srimanob can you please check and sign again.

# Customize the Pixel CPE to only use Generic algorithm
from Configuration.Eras.Modifier_run3_SiPixelGenericCPE_cff import run3_SiPixelGenericCPE
from RecoTracker.Configuration.customizePixelCPEGenericOnly import replacePixelCPETemplateWithGeneric
modifyForRun3SiPixelGenericCPE_ = run3_SiPixelGenericCPE.makeProcessModifier(replacePixelCPETemplateWithGeneric)
Copy link
Contributor

Choose a reason for hiding this comment

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

One detail to be aware of. The modifyForRun3SiPixelGenericCPE_ will be called once during the first process.load() call that loads a configuration fragment whose import chain leads to this cff file. If a second process.load() call loads a configuration fragment (same or different) whose import chain also leads to this cff file, the modifyForRun3SiPixelGenericCPE_ will not be called again.

Given how the ConfigBuilder works and how the application configuration fragments are organized, this probably works for reconstruction. But if this fragment gets loaded via e.g. DQM, Validation, AlCa configuration fragments, and if those fragments add any new modules that have configuration parameters for the CPE, those configuration parameters are not modified.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the very relevant warning. We will attempt a different implementation that does not use makeProcessModifier.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

There is already an appropriate modifier in CMSSW. It was intended for Phase-2 workflows, but it works for Phase-1 as well.

After changing the era,

from Configuration.ProcessModifiers.PixelCPEGeneric_cff import PixelCPEGeneric

Run3_2026 = cms.ModifierChain(Run3_2025, PixelCPEGeneric)

the config differs only in the ESProducers for RecHits

src$ diff alternative.txt central.txt 
85755c85755
<     PixelCPE = cms.string('PixelCPEGeneric'),
---
>     PixelCPE = cms.string('PixelCPEClusterRepair'),
85766c85766
<     PixelCPE = cms.string('PixelCPEGeneric'),
---
>     PixelCPE = cms.string('PixelCPEClusterRepairWithoutProbQ'),

@cmsbuild
Copy link
Contributor

+code-checks

Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-50480/48655

@cmsbuild
Copy link
Contributor

Pull request #50480 was updated. @cmsbuild, @davidlange6, @fabiocos, @ftenchini, @mandrenguyen can you please check and sign again.

@vlimant
Copy link
Contributor

vlimant commented Mar 23, 2026

assign ppd

@cmsbuild
Copy link
Contributor

New categories assigned: ppd

@abenecke,@vlimant you have been requested to review this Pull request/Issue and eventually sign? Thanks

@mmusich
Copy link
Contributor

mmusich commented Mar 23, 2026

please test

@cmsbuild
Copy link
Contributor

+1

Size: This PR adds an extra 24KB to repository
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-608934/52147/summary.html
COMMIT: 566ca3c
CMSSW: CMSSW_16_1_X_2026-03-22-2300/el8_amd64_gcc13
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week0/cms-sw/cmssw/50480/52147/install.sh to create a dev area with all the needed externals and cmssw changes.

Comparison Summary

Summary:

@vlimant
Copy link
Contributor

vlimant commented Mar 23, 2026

+1

@cmsbuild
Copy link
Contributor

This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @ftenchini, @sextonkennedy, @mandrenguyen (and backports should be raised in the release meeting by the corresponding L2)

@vlimant
Copy link
Contributor

vlimant commented Mar 23, 2026

let's have the 16.0 backport created right away please

@ftenchini
Copy link

+1

@cmsbuild cmsbuild merged commit 6e97e5f into cms-sw:master Mar 23, 2026
10 checks passed
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