Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-30 22:24:28

0001 import argparse
0002 import sys
0003 
0004 # example: cmsRun L1Trigger/Phase2L1ParticleFlow/test/make_l1ct_patternFiles_cfg.py --patternFilesOFF
0005 # example: cmsRun L1Trigger/Phase2L1ParticleFlow/test/make_l1ct_patternFiles_cfg.py --dumpFilesOFF --serenity
0006 
0007 parser = argparse.ArgumentParser(prog=sys.argv[0], description='Optional parameters')
0008 
0009 parser.add_argument("--dumpFilesOFF", help="switch on dump file production", action="store_true", default=False)
0010 parser.add_argument("--patternFilesOFF", help="switch on Layer-1 pattern file production", action="store_true", default=False)
0011 parser.add_argument("--serenity", help="use Serenity settigns as default everwhere, i.e. also for barrel", action="store_true", default=False)
0012 parser.add_argument("--tm18", help="Add TM18 emulators", action="store_true", default=False)
0013 parser.add_argument("--split18", help="Make 3 TM18 layer 1 pattern files", action="store_true", default=False)
0014 
0015 args = parser.parse_args()
0016 
0017 if args.dumpFilesOFF:
0018     print(f'Switching off dump file creation: dumpFilesOFF is {args.dumpFilesOFF}')
0019 if args.patternFilesOFF:
0020     print(f'Switching off pattern file creation: patternFilesOFF is {args.patternFilesOFF}')
0021 
0022 
0023 import FWCore.ParameterSet.Config as cms
0024 from Configuration.StandardSequences.Eras import eras
0025 
0026 process = cms.Process("RESP", eras.Phase2C17I13M9)
0027 
0028 process.load('Configuration.StandardSequences.Services_cff')
0029 process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi")
0030 process.load("FWCore.MessageLogger.MessageLogger_cfi")
0031 process.options   = cms.untracked.PSet( wantSummary = cms.untracked.bool(True), allowUnscheduled = cms.untracked.bool(False) )
0032 process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1008))
0033 process.MessageLogger.cerr.FwkReport.reportEvery = 1
0034 
0035 process.source = cms.Source("PoolSource",
0036     fileNames = cms.untracked.vstring('file:inputs110X.root'),
0037     inputCommands = cms.untracked.vstring("keep *", 
0038             "drop l1tPFClusters_*_*_*",
0039             "drop l1tPFTracks_*_*_*",
0040             "drop l1tPFCandidates_*_*_*",
0041             "drop l1tTkPrimaryVertexs_*_*_*",
0042             "drop l1tKMTFTracks_*_*_*"),
0043     skipEvents = cms.untracked.uint32(0),
0044 )
0045 
0046 process.load('Configuration.Geometry.GeometryExtendedRun4D110Reco_cff')
0047 process.load('Configuration.Geometry.GeometryExtendedRun4D110_cff')
0048 process.load('Configuration.StandardSequences.MagneticField_cff')
0049 process.load('SimCalorimetry.HcalTrigPrimProducers.hcaltpdigi_cff') # needed to read HCal TPs
0050 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0051 
0052 from Configuration.AlCa.GlobalTag import GlobalTag
0053 process.GlobalTag = GlobalTag(process.GlobalTag, '125X_mcRun4_realistic_v2', '')
0054 
0055 process.load('L1Trigger.Phase2L1ParticleFlow.l1ctLayer1_cff')
0056 process.load('L1Trigger.Phase2L1ParticleFlow.l1ctLayer2EG_cff')
0057 process.load('L1Trigger.Phase2L1ParticleFlow.l1pfJetMet_cff')
0058 process.load('L1Trigger.L1TTrackMatch.l1tGTTInputProducer_cfi')
0059 process.load('L1Trigger.L1TTrackMatch.l1tTrackSelectionProducer_cfi')
0060 process.l1tTrackSelectionProducer.processSimulatedTracks = False # these would need stubs, and are not used anyway
0061 process.load('L1Trigger.VertexFinder.l1tVertexProducer_cfi')
0062 from L1Trigger.Configuration.SimL1Emulator_cff import l1tSAMuonsGmt
0063 process.l1tSAMuonsGmt = l1tSAMuonsGmt.clone()
0064 from L1Trigger.L1CaloTrigger.l1tPhase2L1CaloEGammaEmulator_cfi import l1tPhase2L1CaloEGammaEmulator
0065 process.l1tPhase2L1CaloEGammaEmulator = l1tPhase2L1CaloEGammaEmulator.clone()
0066 from L1Trigger.L1CaloTrigger.l1tPhase2CaloPFClusterEmulator_cfi import l1tPhase2CaloPFClusterEmulator
0067 process.l1tPhase2CaloPFClusterEmulator = l1tPhase2CaloPFClusterEmulator.clone()
0068 
0069 process.L1TInputTask = cms.Task(
0070     process.l1tSAMuonsGmt,
0071     process.l1tPhase2L1CaloEGammaEmulator,
0072     process.l1tPhase2CaloPFClusterEmulator
0073 )
0074 
0075 
0076 from L1Trigger.Phase2L1ParticleFlow.l1tJetFileWriter_cfi import l1tSeededConeJetFileWriter
0077 l1ctLayer2SCJetsProducts = cms.VPSet([cms.PSet(jets = cms.InputTag("l1tSC4NGJetProducer","l1tSC4NGJets"),
0078                                                nJets = cms.uint32(12),
0079                                                mht  = cms.InputTag("l1tSC4PFL1PuppiCorrectedEmulatorMHT"),
0080                                                nSums = cms.uint32(2)),
0081                                       cms.PSet(jets = cms.InputTag("l1tSC8PFL1PuppiCorrectedEmulator"),
0082                                                nJets = cms.uint32(12))
0083                                       ])
0084 process.l1tLayer2SeedConeJetWriter = l1tSeededConeJetFileWriter.clone(collections = l1ctLayer2SCJetsProducts)
0085 
0086 process.l1tLayer1BarrelTDR = process.l1tLayer1Barrel.clone()
0087 process.l1tLayer1BarrelTDR.regionizerAlgo = cms.string("TDR")
0088 process.l1tLayer1BarrelTDR.regionizerAlgoParameters = cms.PSet(
0089         nTrack = cms.uint32(22),
0090         nCalo = cms.uint32(15),
0091         nEmCalo = cms.uint32(12),
0092         nMu = cms.uint32(2),
0093         nClocks = cms.uint32(162),
0094         doSort = cms.bool(False),
0095         bigRegionEdges = cms.vint32(-560, -80, 400, -560)
0096     )
0097 
0098 process.l1tLayer1BarrelSerenity = process.l1tLayer1Barrel.clone()
0099 process.l1tLayer1BarrelSerenity.regionizerAlgo = "MultififoBarrel"
0100 process.l1tLayer1BarrelSerenity.regionizerAlgoParameters = cms.PSet(
0101         barrelSetup = cms.string("Full54"),
0102         useAlsoVtxCoords = cms.bool(True),
0103         nClocks = cms.uint32(54),
0104         nHCalLinks = cms.uint32(2),
0105         nECalLinks = cms.uint32(1),
0106         nTrack = cms.uint32(22),
0107         nCalo = cms.uint32(15),
0108         nEmCalo = cms.uint32(12),
0109         nMu = cms.uint32(2))
0110 process.l1tLayer1BarrelSerenity.pfAlgoParameters.nTrack = 22
0111 process.l1tLayer1BarrelSerenity.pfAlgoParameters.nSelCalo = 15
0112 process.l1tLayer1BarrelSerenity.pfAlgoParameters.nCalo = 15
0113 process.l1tLayer1BarrelSerenity.pfAlgoParameters.nAllNeutral = 27
0114 process.l1tLayer1BarrelSerenity.puAlgoParameters.nTrack = 22
0115 process.l1tLayer1BarrelSerenity.puAlgoParameters.nIn = 27
0116 process.l1tLayer1BarrelSerenity.puAlgoParameters.nOut = 27
0117 process.l1tLayer1BarrelSerenity.puAlgoParameters.finalSortAlgo = "FoldedHybrid"
0118 
0119 if args.serenity:
0120     process.l1tLayer1.pfProducers[0] = "l1tLayer1BarrelSerenity"
0121     process.l1tLayer2EG.tkElectrons[1].pfProducer = "l1tLayer1BarrelSerenity:L1TkElePerBoard"
0122     process.l1tLayer2EG.tkEms[2].pfProducer = "l1tLayer1BarrelSerenity:L1TkEmPerBoard"
0123 
0124 from L1Trigger.Phase2L1ParticleFlow.l1ctLayer1_patternWriters_cff import *
0125 from L1Trigger.Phase2L1ParticleFlow.l1ctLayer1_patternWriters_cff import _eventsPerFile
0126 if not args.patternFilesOFF:
0127     process.l1tLayer1Barrel.patternWriters = cms.untracked.VPSet(*barrelWriterConfigs)
0128     process.l1tLayer1BarrelSerenity.patternWriters = cms.untracked.VPSet(barrelSerenityVU9PPhi1Config,barrelSerenityVU13PPhi1Config)
0129     process.l1tLayer1HGCal.patternWriters = cms.untracked.VPSet(*hgcalWriterConfigs)
0130     process.l1tLayer1HGCalElliptic.patternWriters = cms.untracked.VPSet(*hgcalWriterConfigs)
0131     process.l1tLayer1HGCalNoTK.patternWriters = cms.untracked.VPSet(*hgcalNoTKWriterConfigs)
0132     process.l1tLayer1HF.patternWriters = cms.untracked.VPSet(*hfWriterConfigs)
0133 
0134 process.l1tSC4NGJetProducer.l1tSC4NGJetModelPath = cms.string(os.environ['CMSSW_BASE']+"/src/L1TSC4NGJetModel/L1TSC4NGJetModel_v0")
0135 process.l1tSC4NGJetProducer.jets = cms.InputTag("l1tSC4PFL1PuppiCorrectedEmulator")
0136 
0137 process.runPF = cms.Path( 
0138         # process.l1tSAMuonsGmt + 
0139         # process.l1tPhase2L1CaloEGammaEmulator + 
0140         # process.l1tPhase2CaloPFClusterEmulator +
0141         process.l1tGTTInputProducer +
0142         process.l1tTrackSelectionProducer +
0143         process.l1tVertexFinderEmulator +
0144         process.l1tLayer1Barrel +
0145         process.l1tLayer1BarrelTDR +
0146         process.l1tLayer1BarrelSerenity +
0147         process.l1tLayer1HGCal +
0148         process.l1tLayer1HGCalElliptic +
0149         process.l1tLayer1HGCalNoTK +
0150         process.l1tLayer1HF +
0151         process.l1tLayer1 +
0152         process.l1tLayer2Deregionizer +
0153         process.l1tSC4PFL1PuppiCorrectedEmulator +
0154         process.l1tSC4NGJetProducer +
0155         process.l1tSC4PFL1PuppiCorrectedEmulatorMHT +
0156         process.l1tSC8PFL1PuppiCorrectedEmulator +
0157         # process.l1tLayer2SeedConeJetWriter +
0158         process.l1tLayer2EG
0159     )
0160 process.runPF.associate(process.L1TInputTask)
0161 process.runPF.associate(process.L1TLayer1TaskInputsTask)
0162 
0163 #####################################################################################################################
0164 ## Layer 2 e/gamma 
0165 
0166 if not args.patternFilesOFF:
0167     process.l1tLayer2EG.writeInPattern = True
0168     process.l1tLayer2EG.writeOutPattern = True
0169     process.l1tLayer2EG.inPatternFile.maxLinesPerFile = _eventsPerFile*54
0170     process.l1tLayer2EG.outPatternFile.maxLinesPerFile = _eventsPerFile*54
0171 
0172 #####################################################################################################################
0173 ## Layer 2 seeded-cone jets 
0174 if not args.patternFilesOFF:
0175     process.runPF.insert(process.runPF.index(process.l1tSC8PFL1PuppiCorrectedEmulator)+1, process.l1tLayer2SeedConeJetWriter)
0176     process.l1tLayer2SeedConeJetWriter.maxLinesPerFile = _eventsPerFile*54
0177 
0178 if not args.dumpFilesOFF:
0179   for det in "Barrel", "BarrelTDR", "BarrelSerenity", "HGCal", "HGCalElliptic", "HGCalNoTK", "HF":
0180         l1pf = getattr(process, 'l1tLayer1'+det)
0181         l1pf.dumpFileName = cms.untracked.string("TTbar_PU200_"+det+".dump")
0182 
0183 
0184 if args.tm18:
0185     process.l1tLayer1HGCalTM18 = process.l1tLayer1HGCal.clone()
0186     process.l1tLayer1HGCalTM18.regionizerAlgo = "BufferedFoldedMultififo"
0187     process.l1tLayer1HGCalTM18.regionizerAlgoParameters.nClocks = 162
0188     del process.l1tLayer1HGCalTM18.regionizerAlgoParameters.nEndcaps 
0189     del process.l1tLayer1HGCalTM18.regionizerAlgoParameters.nTkLinks
0190     del process.l1tLayer1HGCalTM18.regionizerAlgoParameters.nCaloLinks
0191     process.l1tLayer1HGCalNoTKTM18 = process.l1tLayer1HGCalNoTK.clone()
0192     process.l1tLayer1HGCalNoTKTM18.regionizerAlgo = "BufferedFoldedMultififo"
0193     process.l1tLayer1HGCalNoTKTM18.regionizerAlgoParameters.nClocks = 162
0194     del process.l1tLayer1HGCalNoTKTM18.regionizerAlgoParameters.nEndcaps 
0195     del process.l1tLayer1HGCalNoTKTM18.regionizerAlgoParameters.nTkLinks
0196     del process.l1tLayer1HGCalNoTKTM18.regionizerAlgoParameters.nCaloLinks
0197     process.l1tLayer1BarrelSerenityTM18 = process.l1tLayer1BarrelSerenity.clone()
0198     process.l1tLayer1BarrelSerenityTM18.regionizerAlgo = "MiddleBufferMultififo"
0199     process.l1tLayer1BarrelSerenityTM18.regionizerAlgoParameters = cms.PSet(
0200         nTrack = process.l1tLayer1BarrelSerenity.regionizerAlgoParameters.nTrack,
0201         nCalo = process.l1tLayer1BarrelSerenity.regionizerAlgoParameters.nCalo,
0202         nEmCalo = process.l1tLayer1BarrelSerenity.regionizerAlgoParameters.nEmCalo,
0203         nMu = process.l1tLayer1BarrelSerenity.regionizerAlgoParameters.nMu,
0204     )
0205     process.l1tLayer1BarrelSerenityTM18.boards = cms.VPSet(*[cms.PSet(regions = cms.vuint32(*range(18*i,18*i+18))) for i in range(3)])
0206     process.runPF.insert(process.runPF.index(process.l1tLayer1HGCal)+1, process.l1tLayer1HGCalTM18)
0207     process.runPF.insert(process.runPF.index(process.l1tLayer1HGCalNoTK)+1, process.l1tLayer1HGCalNoTKTM18)
0208     process.runPF.insert(process.runPF.index(process.l1tLayer1BarrelSerenity)+1, process.l1tLayer1BarrelSerenityTM18)
0209     # FIXME: we need to schedule a new deregionizer for TM18
0210     process.runPF.insert(process.runPF.index(process.l1tLayer2EG)+1, process.l1tLayer2EGTM18)
0211     if not args.patternFilesOFF:
0212         process.l1tLayer1HGCalTM18.patternWriters = cms.untracked.VPSet(*hgcalTM18WriterConfigs)
0213         process.l1tLayer1HGCalNoTKTM18.patternWriters = cms.untracked.VPSet(hgcalNoTKOutputTM18WriterConfig)
0214         process.l1tLayer1BarrelSerenityTM18.patternWriters = cms.untracked.VPSet(*barrelSerenityTM18WriterConfigs)
0215         process.l1tLayer2EGTM18.writeInPattern = True
0216         process.l1tLayer2EGTM18.writeOutPattern = True
0217     if not args.dumpFilesOFF:
0218         for det in "HGCalTM18", "HGCalNoTKTM18", "BarrelSerenityTM18":
0219                 getattr(process, 'l1tLayer1'+det).dumpFileName = cms.untracked.string("TTbar_PU200_"+det+".dump")
0220     if args.split18 and not args.patternFilesOFF:
0221         from FWCore.Modules.preScaler_cfi import preScaler
0222         for tmSlice, psOffset in (0,1), (6,2), (12,0):
0223             setattr(process, f"preTM{tmSlice}", preScaler.clone(prescaleFactor = 3, prescaleOffset = psOffset))
0224             for det in "HGCalTM18", "HGCalNoTKTM18", "BarrelSerenityTM18":
0225                 tsmod = getattr(process, 'l1tLayer1'+det).clone()
0226                 tsmod.dumpFileName = cms.untracked.string("")
0227                 setattr(process, f"l1tLayer1{det}TS{tmSlice}", tsmod)
0228                 setattr(process, f"Write_{det}TS{tmSlice}", cms.Path(getattr(process, f"preTM{tmSlice}")+tsmod))
0229             getattr(process, f'l1tLayer1HGCalTM18TS{tmSlice}').patternWriters = cms.untracked.VPSet(
0230                 hgcalWriterOutputTM18WriterConfig.clone(outputFileName = f"l1HGCalTM18-outputs-ts{tmSlice}"),
0231                 hgcalWriterVU9PTM18WriterConfig.clone(inputFileName = f"l1HGCalTM18-inputs-vu9p-ts{tmSlice}"),
0232                 hgcalWriterVU13PTM18WriterConfig.clone(inputFileName = f"l1HGCalTM18-inputs-vu13p-ts{tmSlice}")
0233             )
0234             getattr(process, f'l1tLayer1HGCalNoTKTM18TS{tmSlice}').patternWriters = cms.untracked.VPSet(
0235                 hgcalNoTKOutputTM18WriterConfig.clone(outputFileName = f"l1HGCalTM18-outputs-ts{tmSlice}"),
0236             )
0237             getattr(process, f'l1tLayer1BarrelSerenityTM18TS{tmSlice}').patternWriters = cms.untracked.VPSet(
0238                 barrelSerenityOutputTM18WriterConfig.clone(outputFileName = f"l1BarrelSerenityTM18-outputs-ts{tmSlice}"),
0239                 barrelSerenityVU13PTM18WriterConfig.clone(inputFileName = f"l1BarrelSerenityTM18-inputs-vu13p-ts{tmSlice}")
0240             )        
0241 
0242 process.source.fileNames  = [ '/store/cmst3/group/l1tr/cerminar/14_0_X/fpinputs_131X/v3/TTbar_PU200/inputs131X_1.root' ]