Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:45

0001 from __future__ import print_function
0002 import FWCore.ParameterSet.Config as cms
0003 
0004 ## L1REPACK FullMC : Re-Emulate all of L1 and repack into RAW
0005 
0006 from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
0007 from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
0008 
0009 (~stage2L1Trigger).toModify(None, lambda x:
0010     print("# L1T WARN:  L1REPACK:FullMC (intended for MC events with RAW eventcontent) only supports Stage-2 eras for now.\n# L1T WARN:  Use a legacy version of L1REPACK for now."))
0011 stage2L1Trigger.toModify(None, lambda x:
0012     print("# L1T INFO:  L1REPACK:FullMC will unpack Calorimetry and Muon L1T inputs, re-emulate L1T (Stage-2), and pack uGT, uGMT, and Calo Stage-2 output."))
0013 
0014 # First, Unpack all inputs to L1:
0015 
0016 import EventFilter.RPCRawToDigi.rpcUnpacker_cfi
0017 unpackRPC = EventFilter.RPCRawToDigi.rpcUnpacker_cfi.rpcunpacker.clone(
0018     InputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0019 
0020 import EventFilter.DTRawToDigi.dtunpacker_cfi
0021 unpackDT = EventFilter.DTRawToDigi.dtunpacker_cfi.muonDTDigis.clone(
0022     inputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0023 
0024 import EventFilter.CSCRawToDigi.cscUnpacker_cfi
0025 unpackCSC = EventFilter.CSCRawToDigi.cscUnpacker_cfi.muonCSCDigis.clone(
0026     InputObjects = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0027 
0028 import EventFilter.GEMRawToDigi.muonGEMDigis_cfi
0029 unpackGEM = EventFilter.GEMRawToDigi.muonGEMDigis_cfi.muonGEMDigis.clone(
0030     InputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0031 
0032 import EventFilter.EcalRawToDigi.EcalUnpackerData_cfi
0033 unpackEcal = EventFilter.EcalRawToDigi.EcalUnpackerData_cfi.ecalEBunpacker.clone(
0034     InputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0035 
0036 import EventFilter.HcalRawToDigi.HcalRawToDigi_cfi
0037 unpackHcal = EventFilter.HcalRawToDigi.HcalRawToDigi_cfi.hcalDigis.clone(
0038     InputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess()))
0039 
0040 # Second, Re-Emulate the entire L1T
0041 #
0042 # Legacy trigger primitive emulations still running in 2016 trigger:
0043 #
0044 from SimCalorimetry.Configuration.SimCalorimetry_cff import *
0045 
0046 # Ecal TPs
0047 # cannot simulate EcalTPs, don't have EcalUnsuppressedDigis in RAW
0048 #     simEcalTriggerPrimitiveDigis.Label = 'unpackEcal'
0049 # further downstream, use unpacked EcalTPs
0050 
0051 # Hcal TPs
0052 simHcalTriggerPrimitiveDigis.inputLabel = [
0053     'unpackHcal',
0054     'unpackHcal'
0055 ]
0056 simHcalTriggerPrimitiveDigis.inputUpgradeLabel = [
0057     'unpackHcal',     # upgrade HBHE
0058     'unpackHcal'      # upgrade HF
0059 ]
0060 
0061 from L1Trigger.Configuration.SimL1Emulator_cff import *
0062 # DT TPs
0063 simDtTriggerPrimitiveDigis.digiTag                    = 'unpackDT'
0064 # CSC TPs
0065 simCscTriggerPrimitiveDigis.CSCComparatorDigiProducer = 'unpackCSC:MuonCSCComparatorDigi'
0066 simCscTriggerPrimitiveDigis.CSCWireDigiProducer       = 'unpackCSC:MuonCSCWireDigi'
0067 # GEM
0068 (stage2L1Trigger & run3_GEM).toModify(simMuonGEMPadDigis, InputCollection = 'unpackGEM')
0069 
0070 # TWIN-MUX
0071 simTwinMuxDigis.RPC_Source         = 'unpackRPC'
0072 simTwinMuxDigis.DTDigi_Source      = "simDtTriggerPrimitiveDigis"
0073 simTwinMuxDigis.DTThetaDigi_Source = "simDtTriggerPrimitiveDigis"
0074 
0075 # BMTF
0076 simBmtfDigis.DTDigi_Source       = "simTwinMuxDigis"
0077 simBmtfDigis.DTDigi_Theta_Source = "simDtTriggerPrimitiveDigis"
0078 
0079 # OMTF
0080 simOmtfDigis.srcRPC              = 'unpackRPC'
0081 simOmtfDigis.srcDTPh             = "simDtTriggerPrimitiveDigis"
0082 simOmtfDigis.srcDTTh             = "simDtTriggerPrimitiveDigis"
0083 simOmtfDigis.srcCSC              = 'simCscTriggerPrimitiveDigis:MPCSORTED'
0084 
0085 # EMTF
0086 simEmtfDigis.CSCInput            = 'simCscTriggerPrimitiveDigis:MPCSORTED'
0087 simEmtfDigis.RPCInput            = 'unpackRPC'
0088 
0089 # CALO Layer1
0090 simCaloStage2Layer1Digis.ecalToken = 'unpackEcal:EcalTriggerPrimitives'
0091 simCaloStage2Layer1Digis.hcalToken = 'simHcalTriggerPrimitiveDigis'
0092 
0093 # Finally, pack the new L1T output back into RAW
0094 from EventFilter.L1TRawToDigi.caloStage2Raw_cfi import caloStage2Raw as packCaloStage2
0095 from EventFilter.L1TRawToDigi.gmtStage2Raw_cfi import gmtStage2Raw as packGmtStage2
0096 from EventFilter.L1TRawToDigi.gtStage2Raw_cfi import gtStage2Raw as packGtStage2
0097 
0098 # combine the new L1 RAW with existing RAW for other FEDs
0099 import EventFilter.RawDataCollector.rawDataCollectorByLabel_cfi
0100 rawDataCollector = EventFilter.RawDataCollector.rawDataCollectorByLabel_cfi.rawDataCollector.clone(
0101     verbose = 0,
0102         RawCollectionList = [
0103             'packCaloStage2',
0104             'packGmtStage2',
0105             'packGtStage2',
0106             cms.InputTag('rawDataCollector', processName=cms.InputTag.skipCurrentProcess()),
0107         ]
0108     )
0109 
0110 SimL1EmulatorTask = cms.Task()
0111 stage2L1Trigger.toReplaceWith(SimL1EmulatorTask, cms.Task(unpackRPC
0112                                                           , unpackDT
0113                                                           , unpackCSC
0114                                                           , unpackEcal
0115                                                           , unpackHcal
0116                                                           #, simEcalTriggerPrimitiveDigis
0117                                                           , simHcalTriggerPrimitiveDigis
0118                                                           , SimL1EmulatorCoreTask
0119                                                           , packCaloStage2
0120                                                           , packGmtStage2
0121                                                           , packGtStage2
0122                                                           , rawDataCollector))
0123 
0124 _SimL1EmulatorTaskWithGEM = SimL1EmulatorTask.copy()
0125 _SimL1EmulatorTaskWithGEM.add(unpackGEM)
0126 (stage2L1Trigger & run3_GEM).toReplaceWith(SimL1EmulatorTask, _SimL1EmulatorTaskWithGEM)
0127 
0128 SimL1Emulator = cms.Sequence(SimL1EmulatorTask)