00001 import FWCore.ParameterSet.Config as cms
00002 import sys, string
00003
00004 def switchToL1Emulator(process,
00005
00006 newGmtSetting = False,
00007 MergeMethodPtBrl = 'minPt',
00008 MergeMethodPtFwd = 'minPt',
00009 newCSCTFLUTs = False,
00010 newGctSetting = False,
00011 newECALLUTs = False,
00012 newHCALLUTs = False):
00013 """patch the process to run the RawToDigi and SimL1Emulator sequences instead of unpacking the hltGctDigis and hltGtDigis"""
00014
00015
00016 HLTL1UnpackerSequence = cms.Sequence( process.RawToDigi + process.SimL1Emulator + process.hltL1GtObjectMap + process.hltL1extraParticles )
00017
00018 for iterable in process.sequences.itervalues():
00019 iterable.replace( process.HLTL1UnpackerSequence, HLTL1UnpackerSequence)
00020
00021 for iterable in process.paths.itervalues():
00022 iterable.replace( process.HLTL1UnpackerSequence, HLTL1UnpackerSequence)
00023
00024 for iterable in process.endpaths.itervalues():
00025 iterable.replace( process.HLTL1UnpackerSequence, HLTL1UnpackerSequence)
00026
00027 process.HLTL1UnpackerSequence = HLTL1UnpackerSequence
00028
00029
00030 process.HLTL1GtDigisSequence = cms.Sequence( process.RawToDigi + process.SimL1Emulator )
00031
00032 for iterable in process.sequences.itervalues():
00033 iterable.replace( process.hltGtDigis, process.HLTL1GtDigisSequence)
00034
00035 for iterable in process.paths.itervalues():
00036 iterable.replace( process.hltGtDigis, process.HLTL1GtDigisSequence)
00037
00038 for iterable in process.endpaths.itervalues():
00039 iterable.replace( process.hltGtDigis, process.HLTL1GtDigisSequence)
00040
00041
00042 if newGmtSetting:
00043 process.load('L1TriggerConfig.GMTConfigProducers.L1MuGMTParameters_cfi')
00044
00045
00046 process.L1MuGMTParameters.MergeMethodPtBrl = cms.string(MergeMethodPtBrl)
00047 process.L1MuGMTParameters.MergeMethodPtFwd = cms.string(MergeMethodPtFwd)
00048
00049 process.L1MuGMTParameters.VersionSortRankEtaQLUT = cms.uint32(275)
00050
00051 import L1Trigger.CSCTrackFinder.csctfDigis_cfi as csctfDigisGMT
00052
00053 process.csctfReEmulDigis = csctfDigisGMT.csctfDigis.clone()
00054 process.csctfReEmulDigis.CSCTrackProducer = cms.untracked.InputTag("csctfReEmulTracks")
00055
00056 import L1Trigger.CSCTrackFinder.csctfTrackDigis_cfi as csctfTrackDigis
00057
00058 process.csctfReEmulTracks = csctfTrackDigis.csctfTrackDigis.clone()
00059 process.csctfReEmulTracks.readDtDirect = True
00060 process.csctfReEmulTracks.SectorReceiverInput = cms.untracked.InputTag("csctfDigis")
00061 process.csctfReEmulTracks.DtDirectProd = cms.untracked.InputTag("csctfDigis", "DT")
00062 process.csctfReEmulTracks.SectorProcessor.initializeFromPSet = True
00063
00064 process.load("L1Trigger.RPCTrigger.rpcTriggerDigis_cfi")
00065 process.rpcReEmulDigis = process.rpcTriggerDigis.clone()
00066
00067 process.load("L1Trigger.GlobalMuonTrigger.gmtDigis_cfi")
00068 process.gmtReEmulDigis = process.gmtDigis.clone()
00069 process.gmtReEmulDigis.DTCandidates = cms.InputTag("gtDigis","DT")
00070 process.gmtReEmulDigis.RPCbCandidates = cms.InputTag("gtDigis","RPCb")
00071
00072
00073 if newCSCTFLUTs:
00074 process.gmtReEmulDigis.CSCCandidates = cms.InputTag("csctfReEmulDigis","CSC")
00075 else:
00076 process.gmtReEmulDigis.CSCCandidates = cms.InputTag("gtDigis","CSC")
00077
00078 process.gmtReEmulDigis.RPCfCandidates = cms.InputTag("gtDigis","RPCf")
00079 process.gmtReEmulDigis.MipIsoData = cms.InputTag("none")
00080
00081 HLTL1MuonTriggerSequence = cms.Sequence( process.csctfReEmulTracks + process.csctfReEmulDigis + process.gmtReEmulDigis )
00082
00083
00084 process.simGtDigis.GmtInputTag = 'gmtReEmulDigis'
00085 process.HLTL1MuonTriggerSequence = HLTL1MuonTriggerSequence
00086 process.HLTL1UnpackerSequence.replace( process.simGtDigis, process.HLTL1MuonTriggerSequence + process.simGtDigis)
00087
00088
00089 if newGctSetting:
00090 process.load('SimCalorimetry.EcalTrigPrimProducers.ecalTriggerPrimitiveDigis_cff')
00091 process.load('SimCalorimetry.HcalTrigPrimProducers.hcaltpdigi_cff')
00092
00093
00094 if newECALLUTs:
00095 process.ecalReEmulDigis = process.simEcalTriggerPrimitiveDigis.clone()
00096 process.ecalReEmulDigis.Label = 'ecalDigis'
00097 process.ecalReEmulDigis.InstanceEB = 'ebDigis'
00098 process.ecalReEmulDigis.InstanceEE = 'eeDigis'
00099 process.ecalReEmulDigis.BarrelOnly = False
00100
00101
00102 if newHCALLUTs:
00103 process.hcalReEmulDigis = process.simHcalTriggerPrimitiveDigis.clone()
00104 process.hcalReEmulDigis.inputLabel = cms.VInputTag(cms.InputTag('hcalDigis'), cms.InputTag('hcalDigis'))
00105 process.HcalTPGCoderULUT.LUTGenerationMode = cms.bool(False)
00106
00107
00108 import L1Trigger.RegionalCaloTrigger.rctDigis_cfi
00109 process.rctReEmulDigis = L1Trigger.RegionalCaloTrigger.rctDigis_cfi.rctDigis.clone()
00110
00111 if newECALLUTs:
00112 process.rctReEmulDigis.ecalDigis = cms.VInputTag( cms.InputTag( 'ecalReEmulDigis' ) )
00113 else:
00114 process.rctReEmulDigis.ecalDigis = cms.VInputTag( cms.InputTag( 'ecalDigis:EcalTriggerPrimitives' ) )
00115
00116 if newHCALLUTs:
00117 process.rctReEmulDigis.hcalDigis = cms.VInputTag( cms.InputTag( 'hcalReEmulDigis' ) )
00118 else:
00119 process.rctReEmulDigis.hcalDigis = cms.VInputTag( cms.InputTag( 'hcalDigis' ) )
00120
00121
00122 import L1Trigger.GlobalCaloTrigger.gctDigis_cfi
00123 process.gctReEmulDigis = L1Trigger.GlobalCaloTrigger.gctDigis_cfi.gctDigis.clone()
00124 process.gctReEmulDigis.inputLabel = 'rctReEmulDigis'
00125
00126 if newECALLUTs and newHCALLUTs:
00127 HLTL1CaloTriggerSequence = cms.Sequence( process.ecalReEmulDigis + process.hcalReEmulDigis + process.rctReEmulDigis + process.gctReEmulDigis )
00128 elif newECALLUTs:
00129 HLTL1CaloTriggerSequence = cms.Sequence( process.ecalReEmulDigis + process.rctReEmulDigis + process.gctReEmulDigis )
00130 elif newHCALLUTs:
00131 HLTL1CaloTriggerSequence = cms.Sequence( process.hcalReEmulDigis + process.rctReEmulDigis + process.gctReEmulDigis )
00132 else:
00133 HLTL1CaloTriggerSequence = cms.Sequence( process.rctReEmulDigis + process.gctReEmulDigis )
00134
00135
00136 process.simGtDigis.GctInputTag = 'gctReEmulDigis'
00137 process.HLTL1CaloTriggerSequence = HLTL1CaloTriggerSequence
00138 process.HLTL1UnpackerSequence.replace( process.simGtDigis, process.HLTL1CaloTriggerSequence + process.simGtDigis)
00139
00140 return process
00141
00142
00143 def switchToCustomL1Digis(process, customGmt, customGct, customGt):
00144 """patch the process to use custom GMT, GCT and GT results"""
00145
00146
00147 if 'hltL1GtObjectMap' in process.__dict__:
00148 process.hltL1GtObjectMap.GmtInputTag = cms.InputTag( customGmt )
00149 process.hltL1GtObjectMap.GctInputTag = cms.InputTag( customGct )
00150 if 'hltL1extraParticles' in process.__dict__:
00151 process.hltL1extraParticles.muonSource = cms.InputTag( customGmt )
00152 process.hltL1extraParticles.isolatedEmSource = cms.InputTag( customGct, 'isoEm' )
00153 process.hltL1extraParticles.nonIsolatedEmSource = cms.InputTag( customGct, 'nonIsoEm' )
00154 process.hltL1extraParticles.centralJetSource = cms.InputTag( customGct, 'cenJets' )
00155 process.hltL1extraParticles.forwardJetSource = cms.InputTag( customGct, 'forJets' )
00156 process.hltL1extraParticles.tauJetSource = cms.InputTag( customGct, 'tauJets' )
00157 process.hltL1extraParticles.etTotalSource = cms.InputTag( customGct )
00158 process.hltL1extraParticles.etHadSource = cms.InputTag( customGct )
00159 process.hltL1extraParticles.etMissSource = cms.InputTag( customGct )
00160 if 'hltL2MuonSeeds' in process.__dict__:
00161 process.hltL2MuonSeeds.GMTReadoutCollection = cms.InputTag( customGmt )
00162
00163
00164 for module in process.__dict__.itervalues():
00165 if isinstance(module, cms._Module):
00166 for parameter in module.__dict__.itervalues():
00167 if isinstance(parameter, cms.InputTag):
00168 if parameter.moduleLabel == 'hltGtDigis':
00169 parameter.moduleLabel = customGt
00170 elif parameter.moduleLabel == 'hltGctDigis':
00171 parameter.moduleLabel = customGct
00172
00173
00174 hasGtDigis = 'hltGtDigis' in process.producers
00175 hasGctDigis = 'hltGctDigis' in process.producers
00176
00177
00178 for iterable in process.sequences.itervalues():
00179 if hasGtDigis: iterable.remove( process.hltGtDigis )
00180 if hasGctDigis: iterable.remove( process.hltGctDigis )
00181
00182 for iterable in process.paths.itervalues():
00183 if hasGtDigis: iterable.remove( process.hltGtDigis )
00184 if hasGctDigis: iterable.remove( process.hltGctDigis )
00185
00186 for iterable in process.endpaths.itervalues():
00187 if hasGtDigis: iterable.remove( process.hltGtDigis )
00188 if hasGctDigis: iterable.remove( process.hltGctDigis )
00189
00190 return process
00191
00192
00193 def switchToSimGtDigis(process):
00194 """patch the process to use newly emulated GT results"""
00195 return switchToCustomL1Digis(process, 'gtDigis', 'gctDigis', 'simGtDigis')
00196
00197 def switchToSimGmtGctGtDigis(process):
00198 """patch the process to use newly emulated GMT, GCT and GT results"""
00199 return switchToCustomL1Digis(process, 'simGmtDigis', 'simGctDigis', 'simGtDigis')
00200
00201 def switchToSimGctGtDigis(process):
00202 """patch the process to use gtDigis for GMT results, and newly emulated GCT and GT results"""
00203 return switchToCustomL1Digis(process, 'gtDigis', 'simGctDigis', 'simGtDigis')
00204
00205 def switchToSimGmtGtDigis(process):
00206 """patch the process to use gctDigis for GCT results, and newly emulated GMT and GT results"""
00207 return switchToCustomL1Digis(process, 'simGmtDigis', 'gctDigis', 'simGtDigis')
00208
00209 def switchToSimGtReEmulGmtGctDigis(process):
00210 """patch the process to use newly emulated GMT, GCT and GT results starting from new Muon and Calo LUTs (eventually)"""
00211 return switchToCustomL1Digis(process, 'gmtReEmulDigis', 'gctReEmulDigis', 'simGtDigis')
00212
00213 def switchToSimGtReEmulGmtDigis(process):
00214 """patch the process to use newly emulated GMT and GT results starting from new Muon LUTs (eventually)"""
00215 return switchToCustomL1Digis(process, 'gmtReEmulDigis', 'gctDigis', 'simGtDigis')
00216
00217 def switchToSimGtReEmulGctDigis(process):
00218 """patch the process to use newly emulated GCT and GT results starting from new Calo LUTs (eventually)"""
00219 return switchToCustomL1Digis(process, 'gtDigis', 'gctReEmulDigis', 'simGtDigis')
00220