Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-20 01:53:37

0001 import argparse
0002 import sys
0003 import math
0004 
0005 # example: cmsRun L1Trigger/Phase2L1ParticleFlow/test/make_l1ct_patternFiles_cfg.py --patternFilesOFF
0006 # example: cmsRun L1Trigger/Phase2L1ParticleFlow/test/make_l1ct_patternFiles_cfg.py --dumpFilesOFF --serenity
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 # process.MessageLogger.cerr.threshold = "DEBUG"
0036 # process.MessageLogger.debugModules = ["l1tLayer1BarrelTDR"]
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') # needed to read HCal TPs
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 # these would need stubs, and are not used anyway
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 # process.l1tLayer1BarrelSerenity.caloSectors = cms.VPSet(
0164 #         cms.PSet(
0165 #             etaBoundaries = cms.vdouble(-1.5, 1.5),
0166 #             phiSlices     = cms.uint32(3),
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         # process.l1tLayer2SeedConeJetWriter +
0210         process.l1tLayer2EG
0211     )
0212 process.runPF.associate(process.L1TInputTask)
0213 process.runPF.associate(process.L1TLayer1TaskInputsTask)
0214 
0215 #####################################################################################################################
0216 ## Layer 2 e/gamma
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 ## Layer 2 seeded-cone jets
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     # FIXME: we need to schedule a new deregionizer for TM18
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' ]