File indexing completed on 2024-06-14 02:53:34
0001
0002 from __future__ import print_function
0003 import sys
0004
0005 """
0006 Description: script used for offline validation of the Global Trigger firmware and emulator agreement
0007 (Contacts: Richard Cavanaugh, Elisa Fontanesi)
0008 -----------------------------------------------------------------------------------------------------
0009 The parameters can be changed by adding command line arguments of the form:
0010 runGlobalFakeInputProducer.py nevents=-1
0011 The latter can be used to change parameters in crab.
0012 Running on 3564 events (=one orbit) is recommended for test vector production for GT firmware validation.
0013 """
0014
0015 job = 0
0016 njob = 1
0017 nevents = 3564
0018 rootout = False
0019 dump = False
0020 newXML = False
0021
0022
0023
0024
0025 if len(sys.argv) == 2 and ':' in sys.argv[1]:
0026 argv = sys.argv[1].split(':')
0027 else:
0028 argv = sys.argv[1:]
0029
0030 for arg in argv:
0031 (k, v) = map(str.strip, arg.split('='))
0032 if k not in globals():
0033 raise "Unknown argument '%s'!" % (k,)
0034 if isinstance(globals()[k], bool):
0035 globals()[k] = v.lower() in ('y', 'yes', 'true', 't', '1')
0036 elif isinstance(globals()[k], int):
0037 globals()[k] = int(v)
0038 else:
0039 globals()[k] = v
0040
0041 neventsPerJob = int(nevents/njob)
0042 skip = job * neventsPerJob
0043
0044 if skip>4:
0045 skip = skip-4
0046 neventsPerJob = neventsPerJob+4
0047
0048 import FWCore.ParameterSet.Config as cms
0049
0050 process = cms.Process('L1TEMULATION')
0051
0052 process.load('Configuration.StandardSequences.Services_cff')
0053 process.load('Configuration/StandardSequences/FrontierConditions_GlobalTag_cff')
0054
0055
0056
0057
0058
0059 process.load('FWCore.MessageService.MessageLogger_cfi')
0060
0061
0062
0063 process.MessageLogger.debugModules = ["simGtStage2Digis"]
0064 process.MessageLogger.debugModules = ["l1t|Global"]
0065 process.MessageLogger.cerr = cms.untracked.PSet(
0066 threshold = cms.untracked.string('DEBUG')
0067 )
0068
0069
0070 process.MessageLogger.l1t_debug = cms.untracked.PSet()
0071 process.MessageLogger.l1t = cms.untracked.PSet(
0072 limit = cms.untracked.int32(100000),
0073 )
0074
0075
0076
0077
0078
0079 process.maxEvents = cms.untracked.PSet(
0080 input = cms.untracked.int32(neventsPerJob)
0081 )
0082
0083 process.source = cms.Source("PoolSource",
0084 secondaryFileNames = cms.untracked.vstring(),
0085 fileNames = cms.untracked.vstring(
0086
0087 "/store/relval/CMSSW_14_0_1/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/140X_mcRun3_2024_realistic_v4_PU_AlpakaVal_AlpakaDeviceVSHost-v14/50000/34ae12a4-2d90-4d5d-b243-e949af0952ae.root",
0088 "/store/relval/CMSSW_14_0_1/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/140X_mcRun3_2024_realistic_v4_PU_AlpakaVal_AlpakaDeviceVSHost-v14/50000/5c08de0e-0571-4792-aa37-1b7d1915dbda.root",
0089 "/store/relval/CMSSW_14_0_1/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/140X_mcRun3_2024_realistic_v4_PU_AlpakaVal_AlpakaDeviceVSHost-v14/50000/1aed742b-2f48-4cc3-8758-24153c38c79b.root",
0090 "/store/relval/CMSSW_14_0_1/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/140X_mcRun3_2024_realistic_v4_PU_AlpakaVal_AlpakaDeviceVSHost-v14/50000/096ba83b-620d-449d-a408-ebb209b54d76.root"
0091 ),
0092 skipEvents = cms.untracked.uint32(skip)
0093 )
0094
0095 process.output =cms.OutputModule("PoolOutputModule",
0096 outputCommands = cms.untracked.vstring('keep *'),
0097 fileName = cms.untracked.string('testGlobalMCInputProducer_'+repr(job)+'.root')
0098 )
0099
0100 process.options = cms.untracked.PSet(
0101 wantSummary = cms.bool(True)
0102 )
0103
0104
0105
0106
0107 process.load("CommonTools.UtilAlgos.TFileService_cfi")
0108 process.TFileService.fileName = cms.string('l1t_histos.root')
0109
0110
0111
0112
0113 from Configuration.AlCa.GlobalTag import GlobalTag
0114 process.GlobalTag = GlobalTag(process.GlobalTag, '123X_mcRun3_2021_realistic_v13', '')
0115
0116
0117
0118
0119 process.load('L1Trigger.L1TGlobal.GlobalParameters_cff')
0120 process.load("L1Trigger.L1TGlobal.TriggerMenu_cff")
0121 xmlMenu="L1Menu_Collisions2024_v1_1_0.xml"
0122 process.TriggerMenu.L1TriggerMenuFile = cms.string(xmlMenu)
0123 process.ESPreferL1TXML = cms.ESPrefer("L1TUtmTriggerMenuESProducer","TriggerMenu")
0124
0125
0126
0127 process.dumpMenu = cms.EDAnalyzer("L1MenuViewer")
0128
0129
0130 useMCtoGT = True
0131
0132 process.dumpGT = cms.EDAnalyzer("l1t::GtInputDump",
0133 egInputTag = cms.InputTag("gtInput"),
0134 muInputTag = cms.InputTag("gtInput"),
0135 muShowerInputTag = cms.InputTag("gtInput"),
0136 tauInputTag = cms.InputTag("gtInput"),
0137 jetInputTag = cms.InputTag("gtInput"),
0138 etsumInputTag = cms.InputTag("gtInput"),
0139 minBx = cms.int32(0),
0140 maxBx = cms.int32(0)
0141 )
0142 process.dumpED = cms.EDAnalyzer("EventContentAnalyzer")
0143 process.dumpES = cms.EDAnalyzer("PrintEventSetupContent")
0144
0145 process.mcL1GTinput = cms.EDProducer("l1t::GenToInputProducer",
0146 bxFirst = cms.int32(-2),
0147 bxLast = cms.int32(2),
0148 maxMuCand = cms.int32(8),
0149 maxMuShowerCand = cms.int32(8),
0150 maxJetCand = cms.int32(12),
0151 maxEGCand = cms.int32(12),
0152 maxTauCand = cms.int32(8),
0153 jetEtThreshold = cms.double(1),
0154 tauEtThreshold = cms.double(1),
0155 egEtThreshold = cms.double(1),
0156 muEtThreshold = cms.double(1),
0157 emptyBxTrailer = cms.int32(5),
0158 emptyBxEvt = cms.int32(neventsPerJob)
0159 )
0160
0161 process.mcL1GTinput.maxMuCand = cms.int32(8)
0162 process.mcL1GTinput.maxMuShowerCand = cms.int32(8)
0163 process.mcL1GTinput.maxJetCand = cms.int32(12)
0164 process.mcL1GTinput.maxEGCand = cms.int32(12)
0165 process.mcL1GTinput.maxTauCand = cms.int32(8)
0166
0167
0168
0169
0170 process.fakeL1GTinput = cms.EDProducer("l1t::FakeInputProducer",
0171
0172
0173 egParams = cms.untracked.PSet(
0174 egBx = cms.untracked.vint32(-2, -1, 0, 0, 1, 2),
0175 egHwPt = cms.untracked.vint32(10, 20, 30, 61, 40, 50),
0176 egHwPhi = cms.untracked.vint32(11, 21, 31, 61, 41, 51),
0177 egHwEta = cms.untracked.vint32(12, 22, 32, 62, 42, 52),
0178 egIso = cms.untracked.vint32( 0, 0, 1, 1, 0, 0)
0179 ),
0180
0181 muParams = cms.untracked.PSet(
0182 muBx = cms.untracked.vint32(-2, -1, 0, 0, 1, 2),
0183 muHwPt = cms.untracked.vint32(5, 20, 30, 61, 40, 50),
0184 muHwPhi = cms.untracked.vint32(11, 21, 31, 61, 41, 51),
0185 muHwEta = cms.untracked.vint32(12, 22, 32, 62, 42, 52),
0186 muIso = cms.untracked.vint32( 0, 0, 1, 1, 0, 0)
0187 ),
0188
0189 tauParams = cms.untracked.PSet(
0190 tauBx = cms.untracked.vint32(),
0191 tauHwPt = cms.untracked.vint32(),
0192 tauHwPhi = cms.untracked.vint32(),
0193 tauHwEta = cms.untracked.vint32(),
0194 tauIso = cms.untracked.vint32()
0195 ),
0196
0197 jetParams = cms.untracked.PSet(
0198 jetBx = cms.untracked.vint32( 0, 0, 2, 1, 1, 2),
0199 jetHwPt = cms.untracked.vint32(100, 200, 130, 170, 85, 145),
0200 jetHwPhi = cms.untracked.vint32( 2, 67, 10, 3, 78, 10),
0201 jetHwEta = cms.untracked.vint32( 110, -99, 11, 0, 17, 11)
0202 ),
0203
0204 etsumParams = cms.untracked.PSet(
0205 etsumBx = cms.untracked.vint32( -2, -1, 0, 1, 2),
0206 etsumHwPt = cms.untracked.vint32( 2, 1, 204, 3, 4),
0207 etsumHwPhi = cms.untracked.vint32( 2, 1, 20, 3, 4)
0208 )
0209 )
0210
0211
0212
0213
0214 process.load('L1Trigger.L1TGlobal.simGtExtFakeProd_cfi')
0215 process.simGtExtFakeProd.bxFirst = cms.int32(-2)
0216 process.simGtExtFakeProd.bxLast = cms.int32(2)
0217 process.simGtExtFakeProd.setBptxAND = cms.bool(True)
0218 process.simGtExtFakeProd.setBptxPlus = cms.bool(True)
0219 process.simGtExtFakeProd.setBptxMinus = cms.bool(True)
0220 process.simGtExtFakeProd.setBptxOR = cms.bool(True)
0221
0222
0223
0224
0225 process.load('L1Trigger.L1TGlobal.simGtStage2Digis_cfi')
0226 process.simGtStage2Digis.useMuonShowers = cms.bool(True)
0227 process.simGtStage2Digis.PrescaleSet = cms.uint32(1)
0228 process.simGtStage2Digis.ExtInputTag = cms.InputTag("simGtExtFakeProd")
0229 process.simGtStage2Digis.MuonInputTag = cms.InputTag("gtInput")
0230 process.simGtStage2Digis.MuonShowerInputTag = cms.InputTag("gtInput")
0231 process.simGtStage2Digis.EGammaInputTag = cms.InputTag("gtInput")
0232 process.simGtStage2Digis.TauInputTag = cms.InputTag("gtInput")
0233 process.simGtStage2Digis.JetInputTag = cms.InputTag("gtInput")
0234 process.simGtStage2Digis.EtSumInputTag = cms.InputTag("gtInput")
0235 process.simGtStage2Digis.EmulateBxInEvent = cms.int32(1)
0236
0237
0238
0239
0240 process.dumpGTRecord = cms.EDAnalyzer("l1t::GtRecordDump",
0241 egInputTag = cms.InputTag("gtInput"),
0242 muInputTag = cms.InputTag("gtInput"),
0243 muShowerInputTag = cms.InputTag("gtInput"),
0244 tauInputTag = cms.InputTag("gtInput"),
0245 jetInputTag = cms.InputTag("gtInput"),
0246 etsumInputTag = cms.InputTag("gtInput"),
0247 uGtAlgInputTag = cms.InputTag("simGtStage2Digis"),
0248 uGtExtInputTag = cms.InputTag("simGtExtFakeProd"),
0249 uGtObjectMapInputTag = cms.InputTag("simGtStage2Digis"),
0250 bxOffset = cms.int32(skip),
0251 minBx = cms.int32(-2),
0252 maxBx = cms.int32(2),
0253 minBxVec = cms.int32(0),
0254 maxBxVec = cms.int32(0),
0255 dumpGTRecord = cms.bool(True),
0256 dumpGTObjectMap= cms.bool(False),
0257 dumpTrigResults= cms.bool(False),
0258 dumpVectors = cms.bool(True),
0259 tvFileName = cms.string( ("TestVector_ttBar_%03d.txt") % job ),
0260 tvVersion = cms.int32(3),
0261 ReadPrescalesFromFile = cms.bool(True),
0262 psFileName = cms.string( "prescale_L1TGlobal.csv" ),
0263 psColumn = cms.int32(1),
0264 unprescaleL1Algos = cms.bool(False),
0265 unmaskL1Algos = cms.bool(False)
0266 )
0267
0268 process.load("L1Trigger.GlobalTriggerAnalyzer.l1GtTrigReport_cfi")
0269 process.l1GtTrigReport.L1GtRecordInputTag = "simGtStage2Digis"
0270 process.l1GtTrigReport.PrintVerbosity = 2
0271 process.report = cms.Path(process.l1GtTrigReport)
0272
0273 process.MessageLogger.debugModules = ["MuCondition"]
0274
0275 if useMCtoGT:
0276 process.gtInput = process.mcL1GTinput.clone()
0277 else:
0278 process.gtInput = process.fakeL1GTinput.clone()
0279
0280
0281
0282
0283 process.load('EventFilter.L1TRawToDigi.gtStage2Raw_cfi')
0284 process.gtStage2Raw.GtInputTag = cms.InputTag("simGtStage2Digis")
0285 process.gtStage2Raw.ExtInputTag = cms.InputTag("simGtExtFakeProd")
0286 process.gtStage2Raw.EGammaInputTag = cms.InputTag("gtInput")
0287 process.gtStage2Raw.TauInputTag = cms.InputTag("gtInput")
0288 process.gtStage2Raw.JetInputTag = cms.InputTag("gtInput")
0289 process.gtStage2Raw.EtSumInputTag = cms.InputTag("gtInput")
0290 process.gtStage2Raw.MuonInputTag = cms.InputTag("gtInput")
0291 process.gtStage2Raw.MuonShowerInputTag = cms.InputTag("gtInput")
0292
0293 process.load('EventFilter.L1TRawToDigi.gtStage2Digis_cfi')
0294 process.newGtStage2Digis = process.gtStage2Digis.clone()
0295 process.newGtStage2Digis.InputLabel = cms.InputTag('gtStage2Raw')
0296
0297
0298
0299 process.dumpRaw = cms.EDAnalyzer(
0300 "DumpFEDRawDataProduct",
0301 label = cms.untracked.string("gtStage2Raw"),
0302 feds = cms.untracked.vint32 ( 1404 ),
0303 dumpPayload = cms.untracked.bool ( True )
0304 )
0305
0306 process.newDumpGTRecord = cms.EDAnalyzer("l1t::GtRecordDump",
0307 egInputTag = cms.InputTag("newGtStage2Digis","EGamma"),
0308 muInputTag = cms.InputTag("newGtStage2Digis","Muon"),
0309 muShowerInputTag = cms.InputTag("newGtStage2Digis", "MuonShower"),
0310 tauInputTag = cms.InputTag("newGtStage2Digis","Tau"),
0311 jetInputTag = cms.InputTag("newGtStage2Digis","Jet"),
0312 etsumInputTag = cms.InputTag("newGtStage2Digis","EtSum"),
0313 uGtAlgInputTag = cms.InputTag("newGtStage2Digis"),
0314 uGtExtInputTag = cms.InputTag("newGtStage2Digis"),
0315 uGtObjectMapInputTag = cms.InputTag("simGtStage2Digis"),
0316 bxOffset = cms.int32(skip),
0317 minBx = cms.int32(0),
0318 maxBx = cms.int32(0),
0319 minBxVec = cms.int32(0),
0320 maxBxVec = cms.int32(0),
0321 dumpGTRecord = cms.bool(True),
0322 dumpGTObjectMap= cms.bool(True),
0323 dumpTrigResults= cms.bool(False),
0324 dumpVectors = cms.bool(False),
0325 tvFileName = cms.string( ("TestVector_%03d.txt") % job ),
0326 ReadPrescalesFromFile = cms.bool(False),
0327 psFileName = cms.string( "prescale_L1TGlobal.csv" ),
0328 psColumn = cms.int32(1)
0329 )
0330
0331
0332
0333
0334 process.l1tGlobalAnalyzer = cms.EDAnalyzer('L1TGlobalAnalyzer',
0335 doText = cms.untracked.bool(False),
0336 gmuToken = cms.InputTag("None"),
0337 dmxEGToken = cms.InputTag("None"),
0338 dmxTauToken = cms.InputTag("None"),
0339 dmxJetToken = cms.InputTag("None"),
0340 dmxEtSumToken = cms.InputTag("None"),
0341 muToken = cms.InputTag("gtInput"),
0342 egToken = cms.InputTag("gtInput"),
0343 tauToken = cms.InputTag("gtInput"),
0344 jetToken = cms.InputTag("gtInput"),
0345 etSumToken = cms.InputTag("gtInput"),
0346 gtAlgToken = cms.InputTag("simGtStage2Digis"),
0347 emulDxAlgToken = cms.InputTag("None"),
0348 emulGtAlgToken = cms.InputTag("simGtStage2Digis")
0349 )
0350
0351
0352
0353
0354
0355 process.p1 = cms.Path(
0356
0357
0358 process.dumpMenu
0359 *process.gtInput
0360
0361 *process.simGtExtFakeProd
0362 *process.simGtStage2Digis
0363 *process.dumpGTRecord
0364
0365
0366
0367
0368
0369
0370
0371
0372 *process.l1tGlobalAnalyzer
0373
0374
0375
0376
0377 )
0378
0379
0380
0381
0382 process.schedule = cms.Schedule(
0383 process.p1
0384 )
0385
0386 if rootout:
0387 process.outpath = cms.EndPath(process.output)
0388 process.schedule.append(process.outpath)
0389
0390
0391 process.options = cms.untracked.PSet(wantSummary = cms.untracked.bool(True))
0392
0393
0394
0395
0396
0397 if dump:
0398 outfile = open('dump_runGlobalFakeInputProducer_'+repr(job)+'.py','w')
0399 print(process.dumpPython(), file=outfile)
0400 outfile.close()