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