Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EMTF May 2020 emulator update #29767

Merged
merged 34 commits into from
May 18, 2020
Merged

EMTF May 2020 emulator update #29767

merged 34 commits into from
May 18, 2020

Conversation

jiafulow
Copy link
Contributor

@jiafulow jiafulow commented May 7, 2020

PR description:

This PR improves the EMTF emulator configuration. In the past few months, several issues had been identified and fixes have been made. These changes have been consolidated in this PR. Right now, the emulator is configured by the FW version. The FW version is supplied by the GlobalTag, specifically the L1TMuonEndCapParamsRcd record. The BDT trees used for pT assignment are also supplied by the GlobalTag, specifically the L1TMuonEndCapForestRcd record. These two records must be in sync. Furthermore, the global "era" (e.g. Run2_2016, Run2_2017, Run2_2018) must be in sync with the GTs. When making changes in the future (e.g. Run3_2021), we need to keep all the above in sync to avoid the issues that occurred in the past few months. By default (if "era" is not specified), Run2_2018 is used.

Two new classes (VersionControl, EMTFSetup) have been added to handle these configuration issues more transparently. In addition, other improvements have been made to facilitate the development of Run 3 pT assignment method.

Notes:

  • VersionControl has been added to collect all the configurables and apply the function configure_by_fw_version() which was previously found in SectorProcessor.
  • EMTFSetup has been added to collect the objects: geometry, conditions, versions, sp LUTs, and pt assignment engine. These objects may be updated run-by-run or event-by-event. These objects were previously found in TrackFinder.
  • The configurable primConvLUT has been removed from the python cfi. The correct PC LUT version should be inferred from the FW version. If necessary to choose a different PC LUT version, do: (i) turn off FWConfig; (ii) set PrimConvVersion in the "fake" condition file (python/fakeEmtfParams_empty_cff.py); (iii) load the fake condition.
  • All the assert have been turned off. If necessary to enable the assertion checks, see the comment about emtf_assert in interface/DebugTools.h.
  • The functions in PtLUTVarCalc have been merged into PtAssignmentEngineAux2017. This is done to reduce the number of files used for each pt assignment engine.
  • Fake condition files for 2018 have been added (python/fakeEmtfParams_2018_MC_cff.py, python/fakeEmtfParams_2018_data_cff.py). Other fake condition files have been updated.
  • This PR is a continuation of EMTF March 2020 emulator update #29262 .

PR validation:

Validated with:

  • runTheMatrix.py -l limited -i all -j10
  • runTheMatrix.py -w upgrade -l 20434.0,20504.0 -j10

Notifications: @abrinke1 @eyigitba @rekovic

jiafulow added 30 commits May 7, 2020 10:50
@rekovic
Copy link
Contributor

rekovic commented May 17, 2020

+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. @silviodonato, @dpiparo (and backports should be raised in the release meeting by the corresponding L2)

@silviodonato
Copy link
Contributor

+1

CSCInput = cms.InputTag('simCscTriggerPrimitiveDigis','MPCSORTED'),
CSCComparatorInput = cms.InputTag('simMuonCSCDigis','MuonCSCComparatorDigi'),
RPCInput = cms.InputTag('simMuonRPCDigis'),
RPCRecHitInput = cms.InputTag('rpcRecHits'),
Copy link
Contributor

Choose a reason for hiding this comment

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

By quick look it seems that this change could have broken a unit test in TauAnalysis/MCEmbeddingTools, see #29897.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sorry, I didn't realize this could be an issue. Yes, the rpcRecHits is not needed at the moment, and can be removed. Should I create a new pull request?

Copy link
Contributor

Choose a reason for hiding this comment

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

Should I create a new pull request?

Yes, thanks!

Copy link
Contributor

Choose a reason for hiding this comment

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

the rpcRecHits is not needed at the moment

On the other hand, if it becomes needed in the future, it needs to be discussed because that would break the test again. (rpcRecHits is part of reconstruction, which makes me wonder why L1 simulation should depend on reconstruction, but I'm probably missing some detail).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, I agree with what you said:

rpcRecHits is part of reconstruction, which makes me wonder why L1 simulation should depend on reconstruction

The reason was because I plan to eventually include Phase-2 iRPC hits in the EMTF emulator. According to the suggestion from Brieuc Francois, the clusterization of the iRPC hits is done in the rpcRecHits, so if I wanted to use the iRPC hits, I have to use rpcRecHits. (There is no dedicated L1 producer to do the clusterization). I realized that it was a strange way of doing things, but it did seem to work (at least to me). But now it turned out to be a problem.

I'm not sure what's the best way to move forward (other than to do development in a private CMSSW branch). It seems like the RPC group should develop a L1 producer? But this is not something I could have a say.

Copy link
Contributor

Choose a reason for hiding this comment

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

Could the same EDProducer but with a different module label than rpcRecHits work?

It's the re-use of a module label already used in RECO that causes the specific problem in the unit test.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh I see. So using the EDProducer itself is not an issue, but I shouldn't be using/re-using the exact rpcRecHits. I'll do what you suggested in the future. Thanks!

iConfig.getParameter<edm::InputTag>("CSCComparatorInput"))),
tokenRPC_(iConsumes.consumes<emtf::RPCTag::digi_collection>(iConfig.getParameter<edm::InputTag>("RPCInput"))),
tokenRPCRecHit_(
iConsumes.consumes<emtf::RPCTag::rechit_collection>(iConfig.getParameter<edm::InputTag>("RPCRecHitInput"))),
Copy link
Contributor

Choose a reason for hiding this comment

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

Seems that the tokenRPCRecHit_ is not used so maybe a simple fix would be to remove this parameter and consumes() call?

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.

7 participants