File indexing completed on 2024-04-06 12:27:34
0001
0002
0003
0004
0005
0006 import FWCore.ParameterSet.Config as cms
0007
0008 from Configuration.Eras.Era_Run3_cff import Run3
0009
0010 process = cms.Process('rereHLT',Run3)
0011
0012
0013 process.load('Configuration.StandardSequences.Services_cff')
0014 process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi')
0015 process.load('FWCore.MessageService.MessageLogger_cfi')
0016 process.load('Configuration.EventContent.EventContent_cff')
0017 process.load('SimGeneral.MixingModule.mixNoPU_cfi')
0018 process.load('Configuration.StandardSequences.GeometryRecoDB_cff')
0019 process.load('Configuration.StandardSequences.MagneticField_cff')
0020 process.load('HLTrigger.Configuration.HLT_GRun_cff')
0021 process.load('Configuration.StandardSequences.EndOfProcess_cff')
0022 process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
0023
0024 process.load('Configuration.StandardSequences.Accelerators_cff')
0025 process.load('HeterogeneousCore.AlpakaCore.ProcessAcceleratorAlpaka_cfi')
0026
0027 process.maxEvents = cms.untracked.PSet(
0028
0029 input = cms.untracked.int32(100),
0030
0031 output = cms.optional.untracked.allowed(cms.int32,cms.PSet)
0032 )
0033
0034
0035
0036
0037 process.source = cms.Source("PoolSource",
0038 fileNames = cms.untracked.vstring('/store/relval/CMSSW_13_0_0/RelValTTbar_14TeV/GEN-SIM-DIGI-RAW/PU_130X_mcRun3_2022_realistic_v2_HS-v4/2590000/0088b51b-0cda-40f2-95fc-590f446624ee.root'),
0039 secondaryFileNames = cms.untracked.vstring()
0040 )
0041
0042 process.options = cms.untracked.PSet(
0043 IgnoreCompletely = cms.untracked.vstring(),
0044 Rethrow = cms.untracked.vstring(),
0045 allowUnscheduled = cms.obsolete.untracked.bool,
0046 canDeleteEarly = cms.untracked.vstring(),
0047 deleteNonConsumedUnscheduledModules = cms.untracked.bool(True),
0048 dumpOptions = cms.untracked.bool(False),
0049 emptyRunLumiMode = cms.obsolete.untracked.string,
0050 eventSetup = cms.untracked.PSet(
0051 forceNumberOfConcurrentIOVs = cms.untracked.PSet(
0052 allowAnyLabel_=cms.required.untracked.uint32
0053 ),
0054 numberOfConcurrentIOVs = cms.untracked.uint32(0)
0055 ),
0056 fileMode = cms.untracked.string('FULLMERGE'),
0057 forceEventSetupCacheClearOnNewRun = cms.untracked.bool(False),
0058 makeTriggerResults = cms.obsolete.untracked.bool,
0059 numberOfConcurrentLuminosityBlocks = cms.untracked.uint32(0),
0060 numberOfConcurrentRuns = cms.untracked.uint32(1),
0061 numberOfStreams = cms.untracked.uint32(0),
0062 numberOfThreads = cms.untracked.uint32(1),
0063 printDependencies = cms.untracked.bool(False),
0064 sizeOfStackForThreadsInKB = cms.optional.untracked.uint32,
0065 throwIfIllegalParameter = cms.untracked.bool(True),
0066 wantSummary = cms.untracked.bool(False)
0067 )
0068
0069
0070 process.configurationMetadata = cms.untracked.PSet(
0071 annotation = cms.untracked.string('reHLT nevts:5'),
0072 name = cms.untracked.string('Applications'),
0073 version = cms.untracked.string('$Revision: 1.19 $')
0074 )
0075
0076
0077 process.FEVTDEBUGHLToutput = cms.OutputModule("PoolOutputModule",
0078 dataset = cms.untracked.PSet(
0079 dataTier = cms.untracked.string('GEN-SIM-DIGI-RAW'),
0080 filterName = cms.untracked.string('')
0081 ),
0082 fileName = cms.untracked.string('reHLT_HLT.root'),
0083 outputCommands = process.FEVTDEBUGHLTEventContent.outputCommands,
0084 splitLevel = cms.untracked.int32(0)
0085 )
0086
0087
0088 from HLTrigger.Configuration.CustomConfigs import ProcessName
0089 process = ProcessName(process)
0090
0091 from Configuration.AlCa.GlobalTag import GlobalTag
0092 process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2022_realistic', '')
0093
0094
0095 process.endjob_step = cms.EndPath(process.endOfProcess)
0096 process.FEVTDEBUGHLToutput_step = cms.EndPath(process.FEVTDEBUGHLToutput)
0097
0098
0099
0100 process.schedule.extend([process.endjob_step,process.FEVTDEBUGHLToutput_step])
0101 from PhysicsTools.PatAlgos.tools.helpers import associatePatAlgosToolsTask
0102 associatePatAlgosToolsTask(process)
0103
0104
0105 from HLTrigger.Configuration.customizeHLTforMC import customizeHLTforMC
0106 process = customizeHLTforMC(process)
0107
0108
0109 from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDelete
0110 process = customiseEarlyDelete(process)
0111
0112 process.load( "HLTrigger.Timer.FastTimerService_cfi" )
0113 if hasattr(process, 'MessageLogger'):
0114 process.MessageLogger.TriggerSummaryProducerAOD = cms.untracked.PSet()
0115 process.MessageLogger.L1GtTrigReport = cms.untracked.PSet()
0116 process.MessageLogger.L1TGlobalSummary = cms.untracked.PSet()
0117 process.MessageLogger.HLTrigReport = cms.untracked.PSet()
0118 process.MessageLogger.FastReport = cms.untracked.PSet()
0119 process.MessageLogger.ThroughputService = cms.untracked.PSet()
0120 process.MessageLogger.cerr.FastReport = cms.untracked.PSet( limit = cms.untracked.int32( 10000000 ) )
0121
0122
0123
0124
0125
0126 import sys
0127 import argparse
0128 parser = argparse.ArgumentParser(prog="cmsRun "+sys.argv[0], description='Test and validation of PFRecHitProducer with Alpaka')
0129 parser.add_argument('-c', '--cal', type=str, default='HCAL',
0130 help='Calorimeter type. Possible options: HCAL, ECAL. Default: HCAL')
0131 parser.add_argument('-b', '--backend', type=str, default='auto',
0132 help='Alpaka backend. Possible options: CPU, GPU, auto. Default: auto')
0133 parser.add_argument('-s', '--synchronise', action='store_true', default=False,
0134 help='Put synchronisation point at the end of Alpaka modules (for benchmarking performance)')
0135 parser.add_argument('-t', '--threads', type=int, default=8,
0136 help='Number of threads. Default: 8')
0137 parser.add_argument('-d', '--debug', type=int, default=0, const=1, nargs="?",
0138 help='Dump PFRecHits for first event (n>0) or first error (n<0). This applies to the n-th validation (1: Legacy vs Alpaka, 2: Legacy vs Legacy-from-Alpaka, 3: Alpaka vs Legacy-from-Alpaka). Default: 0')
0139 args = parser.parse_args()
0140
0141 if(args.debug and args.threads != 1):
0142 args.threads = 1
0143 print("Number of threads set to 1 for debugging")
0144
0145 assert args.cal.lower() in ["hcal", "ecal", "h", "e"], "Invalid calorimeter type"
0146 hcal = args.cal.lower() in ["hcal", "h"]
0147 CAL = "HCAL" if hcal else "ECAL"
0148
0149 alpaka_backends = {
0150 "cpu": "alpaka_serial_sync::%s",
0151 "gpu": "alpaka_cuda_async::%s",
0152 "cuda": "alpaka_cuda_async::%s",
0153 "auto": "%s@alpaka"
0154 }
0155 assert args.backend.lower() in alpaka_backends, "Invalid backend"
0156 alpaka_backend_str = alpaka_backends[args.backend.lower()]
0157
0158
0159
0160
0161
0162 if hcal:
0163 process.hltParticleFlowRecHit = cms.EDProducer("PFRecHitProducer",
0164 navigator = cms.PSet(
0165 hcalEnums = cms.vint32(1, 2),
0166 name = cms.string('PFRecHitHCALDenseIdNavigator')
0167 ),
0168 producers = cms.VPSet(cms.PSet(
0169 name = cms.string('PFHBHERecHitCreator'),
0170 qualityTests = cms.VPSet(
0171 cms.PSet(
0172 cuts = cms.VPSet(
0173 cms.PSet(
0174 depth = cms.vint32(1, 2, 3, 4),
0175 detectorEnum = cms.int32(1),
0176 threshold = cms.vdouble(0.1, 0.2, 0.3, 0.3)
0177 ),
0178 cms.PSet(
0179 depth = cms.vint32(1, 2, 3, 4, 5, 6, 7),
0180 detectorEnum = cms.int32(2),
0181 threshold = cms.vdouble(0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2)
0182 )
0183 ),
0184 name = cms.string('PFRecHitQTestHCALThresholdVsDepth')
0185 ),
0186 cms.PSet(
0187 cleaningThresholds = cms.vdouble(0.0),
0188 flags = cms.vstring('Standard'),
0189 maxSeverities = cms.vint32(11),
0190 name = cms.string('PFRecHitQTestHCALChannel')
0191 )
0192 ),
0193 src = cms.InputTag("hltHbhereco")
0194 ))
0195 )
0196 else:
0197 qualityTestsECAL = cms.VPSet(
0198 cms.PSet(
0199 name = cms.string("PFRecHitQTestDBThreshold"),
0200 applySelectionsToAllCrystals=cms.bool(True),
0201 ),
0202 cms.PSet(
0203 name = cms.string("PFRecHitQTestECAL"),
0204 cleaningThreshold = cms.double(2.0),
0205 timingCleaning = cms.bool(True),
0206 topologicalCleaning = cms.bool(True),
0207 skipTTRecoveredHits = cms.bool(True)
0208 )
0209 )
0210 process.hltParticleFlowRecHit = cms.EDProducer("PFRecHitProducer",
0211 navigator = cms.PSet(
0212 name = cms.string("PFRecHitECALNavigator"),
0213 barrel = cms.PSet( ),
0214 endcap = cms.PSet( )
0215 ),
0216 producers = cms.VPSet(
0217 cms.PSet(
0218 name = cms.string("PFEBRecHitCreator"),
0219 src = cms.InputTag("hltEcalRecHit","EcalRecHitsEB"),
0220 srFlags = cms.InputTag(""),
0221 qualityTests = qualityTestsECAL
0222 ),
0223 cms.PSet(
0224 name = cms.string("PFEERecHitCreator"),
0225 src = cms.InputTag("hltEcalRecHit","EcalRecHitsEE"),
0226 srFlags = cms.InputTag(""),
0227 qualityTests = qualityTestsECAL
0228 )
0229 )
0230 )
0231
0232
0233
0234
0235
0236
0237 if hcal:
0238 process.hltParticleFlowRecHitToSoA = cms.EDProducer(alpaka_backend_str % "HCALRecHitSoAProducer",
0239 src = cms.InputTag("hltHbhereco"),
0240 synchronise = cms.untracked.bool(args.synchronise)
0241 )
0242 else:
0243 process.hltParticleFlowRecHitEBToSoA = cms.EDProducer(alpaka_backend_str % "ECALRecHitSoAProducer",
0244 src = cms.InputTag("hltEcalRecHit","EcalRecHitsEB"),
0245 synchronise = cms.untracked.bool(args.synchronise)
0246 )
0247 process.hltParticleFlowRecHitEEToSoA = cms.EDProducer(alpaka_backend_str % "ECALRecHitSoAProducer",
0248 src = cms.InputTag("hltEcalRecHit","EcalRecHitsEE"),
0249 synchronise = cms.untracked.bool(args.synchronise)
0250 )
0251
0252
0253 process.pfRecHitTopologyRecordSource = cms.ESSource('EmptyESSource',
0254 recordName = cms.string(f'PFRecHit{CAL}TopologyRecord'),
0255 iovIsRunNotTime = cms.bool(True),
0256 firstValid = cms.vuint32(1)
0257 )
0258 if hcal:
0259
0260 process.pfRecHitParamsRecordSource = cms.ESSource('EmptyESSource',
0261 recordName = cms.string(f'PFRecHit{CAL}ParamsRecord'),
0262 iovIsRunNotTime = cms.bool(True),
0263 firstValid = cms.vuint32(1)
0264 )
0265 process.hltParticleFlowRecHitTopologyESProducer = cms.ESProducer(alpaka_backend_str % f"PFRecHit{CAL}TopologyESProducer")
0266 if hcal:
0267 process.hltParticleFlowRecHitParamsESProducer = cms.ESProducer(alpaka_backend_str % "PFRecHitHCALParamsESProducer",
0268 energyThresholdsHB = cms.vdouble( 0.1, 0.2, 0.3, 0.3 ),
0269 energyThresholdsHE = cms.vdouble( 0.1, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 )
0270 )
0271 else:
0272 process.hltParticleFlowRecHitParamsESProducer = cms.ESProducer(alpaka_backend_str % "PFRecHitECALParamsESProducer",
0273 cleaningThreshold = cms.double(2))
0274
0275
0276 if hcal:
0277 process.hltParticleFlowPFRecHitAlpaka = cms.EDProducer(alpaka_backend_str % "PFRecHitSoAProducerHCAL",
0278 producers = cms.VPSet(
0279 cms.PSet(
0280 src = cms.InputTag("hltParticleFlowRecHitToSoA"),
0281 params = cms.ESInputTag("hltParticleFlowRecHitParamsESProducer:"),
0282 )
0283 ),
0284 topology = cms.ESInputTag("hltParticleFlowRecHitTopologyESProducer:"),
0285 synchronise = cms.untracked.bool(args.synchronise)
0286 )
0287 else:
0288 process.hltParticleFlowPFRecHitAlpaka = cms.EDProducer(alpaka_backend_str % "PFRecHitSoAProducerECAL",
0289 producers = cms.VPSet(
0290 cms.PSet(
0291 src = cms.InputTag("hltParticleFlowRecHitEBToSoA"),
0292 params = cms.ESInputTag("hltParticleFlowRecHitParamsESProducer:")
0293 ),
0294 cms.PSet(
0295 src = cms.InputTag("hltParticleFlowRecHitEEToSoA"),
0296 params = cms.ESInputTag("hltParticleFlowRecHitParamsESProducer:")
0297 )
0298 ),
0299 topology = cms.ESInputTag("hltParticleFlowRecHitTopologyESProducer:"),
0300 synchronise = cms.untracked.bool(args.synchronise)
0301 )
0302
0303
0304 process.hltParticleFlowAlpakaToLegacyPFRecHits = cms.EDProducer("LegacyPFRecHitProducer",
0305 src = cms.InputTag("hltParticleFlowPFRecHitAlpaka")
0306 )
0307
0308
0309
0310
0311
0312
0313
0314 from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
0315 process.hltParticleFlowPFRecHitComparison = DQMEDAnalyzer("PFRecHitProducerTest",
0316
0317 pfRecHitsSource1 = cms.untracked.InputTag("hltParticleFlowRecHit"),
0318 pfRecHitsSource2 = cms.untracked.InputTag("hltParticleFlowPFRecHitAlpaka"),
0319 pfRecHitsType1 = cms.untracked.string("legacy"),
0320 pfRecHitsType2 = cms.untracked.string("alpaka"),
0321 title = cms.untracked.string("Legacy vs Alpaka"),
0322 dumpFirstEvent = cms.untracked.bool(args.debug == 1),
0323 dumpFirstError = cms.untracked.bool(args.debug == -1),
0324 strictCompare = cms.untracked.bool(True)
0325 )
0326
0327
0328 process.hltParticleFlowAlpakaToLegacyPFRecHitsComparison1 = DQMEDAnalyzer("PFRecHitProducerTest",
0329 pfRecHitsSource1 = cms.untracked.InputTag("hltParticleFlowRecHit"),
0330 pfRecHitsSource2 = cms.untracked.InputTag("hltParticleFlowAlpakaToLegacyPFRecHits"),
0331 pfRecHitsType1 = cms.untracked.string("legacy"),
0332 pfRecHitsType2 = cms.untracked.string("legacy"),
0333 title = cms.untracked.string("Legacy vs Legacy-from-Alpaka"),
0334 dumpFirstEvent = cms.untracked.bool(args.debug == 2),
0335 dumpFirstError = cms.untracked.bool(args.debug == -2),
0336 strictCompare = cms.untracked.bool(True)
0337 )
0338
0339
0340
0341 process.hltParticleFlowAlpakaToLegacyPFRecHitsComparison2 = DQMEDAnalyzer("PFRecHitProducerTest",
0342 pfRecHitsSource1 = cms.untracked.InputTag("hltParticleFlowPFRecHitAlpaka"),
0343 pfRecHitsSource2 = cms.untracked.InputTag("hltParticleFlowAlpakaToLegacyPFRecHits"),
0344 pfRecHitsType1 = cms.untracked.string("alpaka"),
0345 pfRecHitsType2 = cms.untracked.string("legacy"),
0346 title = cms.untracked.string("Alpaka vs Legacy-from-Alpaka"),
0347 dumpFirstEvent = cms.untracked.bool(args.debug == 3),
0348 dumpFirstError = cms.untracked.bool(args.debug == -3),
0349 strictCompare = cms.untracked.bool(True)
0350 )
0351
0352
0353
0354 process.FEVTDEBUGHLToutput.outputCommands = cms.untracked.vstring('drop *_*_*_*')
0355 process.FEVTDEBUGHLToutput.outputCommands.append('keep *_hltParticleFlowRecHitToSoA_*_*')
0356 process.FEVTDEBUGHLToutput.outputCommands.append('keep *_hltParticleFlowPFRecHitAlpaka_*_*')
0357
0358
0359 path = process.hltParticleFlowRecHit
0360 if hcal:
0361 path += process.hltParticleFlowRecHitToSoA
0362 else:
0363 path += process.hltParticleFlowRecHitEBToSoA
0364 path += process.hltParticleFlowRecHitEEToSoA
0365 path += process.hltParticleFlowPFRecHitAlpaka
0366 path += process.hltParticleFlowPFRecHitComparison
0367 path += process.hltParticleFlowAlpakaToLegacyPFRecHits
0368 path += process.hltParticleFlowAlpakaToLegacyPFRecHitsComparison1
0369 path += process.hltParticleFlowAlpakaToLegacyPFRecHitsComparison2
0370
0371 process.PFRecHitAlpakaValidationTask = cms.EndPath(path)
0372 process.schedule = cms.Schedule(process.PFRecHitAlpakaValidationTask)
0373 process.schedule.extend([process.endjob_step,process.FEVTDEBUGHLToutput_step])
0374 process.options.numberOfThreads = cms.untracked.uint32(args.threads)
0375
0376
0377 process.DQMoutput = cms.OutputModule("DQMRootOutputModule",
0378 dataset = cms.untracked.PSet(
0379 dataTier = cms.untracked.string('DQMIO'),
0380 filterName = cms.untracked.string('')
0381 ),
0382 fileName = cms.untracked.string('file:DQMIO.root'),
0383 outputCommands = process.DQMEventContent.outputCommands,
0384 splitLevel = cms.untracked.int32(0)
0385 )
0386 process.DQMTask = cms.EndPath(process.DQMoutput)
0387 process.schedule.append(process.DQMTask)