5 import FWCore.ParameterSet.Config
as cms
6 from FWCore.ParameterSet.Utilities
import cleanUnscheduled
24 def __init__(self, module_name, manipulator_name, steps = ["SELECT","CLEAN","SIM","MERGE"], instance=[""], merge_prefix = ""):
39 to_bemanipulate.append(
module_manipulate(module_name =
'siPixelClusters', manipulator_name =
"Pixel", steps = [
"SELECT",
"CLEAN"] ))
40 to_bemanipulate.append(
module_manipulate(module_name =
'siStripClusters', manipulator_name =
"Strip", steps = [
"SELECT",
"CLEAN"] ))
42 to_bemanipulate.append(
module_manipulate(module_name =
'generalTracks', manipulator_name =
"Track", steps = [
"SIM",
"MERGE"]))
43 to_bemanipulate.append(
module_manipulate(module_name =
'muons1stStep', manipulator_name =
"Muon", steps = [
"SIM",
"MERGE"]))
44 to_bemanipulate.append(
module_manipulate(module_name =
'gedGsfElectronsTmp', manipulator_name =
"GsfElectron", steps = [
"SIM",
"MERGE"]))
45 to_bemanipulate.append(
module_manipulate(module_name =
'gedPhotonsTmp', manipulator_name =
"Photon", steps = [
"SIM",
"MERGE"]))
46 to_bemanipulate.append(
module_manipulate(module_name =
'particleFlowTmp', manipulator_name =
"PF", steps = [
"SIM",
"MERGE"], instance=[
"",
"CleanedHF",
"CleanedCosmicsMuons",
"CleanedTrackerAndGlobalMuons",
"CleanedFakeMuons",
"CleanedPunchThroughMuons",
"CleanedPunchThroughNeutralHadrons",
"AddedMuonsAndHadrons"]))
49 to_bemanipulate.append(
module_manipulate(module_name =
'ecalRecHit', manipulator_name =
"EcalRecHit", instance= [
"EcalRecHitsEB",
"EcalRecHitsEE"]))
50 to_bemanipulate.append(
module_manipulate(module_name =
'ecalPreshowerRecHit', manipulator_name =
"EcalRecHit", instance= [
"EcalRecHitsES"]))
52 to_bemanipulate.append(
module_manipulate(module_name =
'hbheprereco', manipulator_name =
"HBHERecHit"))
53 to_bemanipulate.append(
module_manipulate(module_name =
'hbhereco', manipulator_name =
"HBHERecHit"))
54 to_bemanipulate.append(
module_manipulate(module_name =
'zdcreco', manipulator_name =
"ZDCRecHit"))
56 to_bemanipulate.append(
module_manipulate(module_name =
'horeco', manipulator_name =
"HORecHit"))
57 to_bemanipulate.append(
module_manipulate(module_name =
'hfreco', manipulator_name =
"HFRecHit"))
58 to_bemanipulate.append(
module_manipulate(module_name =
'castorreco', manipulator_name =
"CastorRecHit"))
61 to_bemanipulate.append(
module_manipulate(module_name =
'dt1DRecHits', manipulator_name =
"DTRecHit", steps = [
"SELECT",
"CLEAN"] ))
62 to_bemanipulate.append(
module_manipulate(module_name =
'dt1DCosmicRecHits', manipulator_name =
"DTRecHit", steps = [
"SELECT",
"CLEAN"] ))
64 to_bemanipulate.append(
module_manipulate(module_name =
'csc2DRecHits', manipulator_name =
"CSCRecHit", steps = [
"SELECT",
"CLEAN"] ))
65 to_bemanipulate.append(
module_manipulate(module_name =
'rpcRecHits', manipulator_name =
"RPCRecHit", steps = [
"SELECT",
"CLEAN"] ))
69 outputModulesList = [key
for key,value
in process.outputModules.iteritems()]
70 for outputModule
in outputModulesList:
71 if outputModule
in module_veto_list:
73 outputModule = getattr(process, outputModule)
74 for add_element
in keep_drop_list:
75 outputModule.outputCommands.extend(add_element)
83 ret_vstring = cms.untracked.vstring(
85 "keep *_patMuonsAfterID_*_"+dataTier,
86 "keep *_slimmedMuons_*_"+dataTier,
87 "keep *_selectedMuonsForEmbedding_*_"+dataTier,
88 "keep recoVertexs_offlineSlimmedPrimaryVertices_*_"+dataTier,
89 "keep *_firstStepPrimaryVertices_*_"+dataTier,
90 "keep *_offlineBeamSpot_*_"+dataTier
92 for akt_manimod
in to_bemanipulate:
93 if "CLEAN" in akt_manimod.steps:
94 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_"+dataTier)
99 process._Process__name =
"RESELECT" 102 process._Process__name =
"SELECT" 105 process.load(
'TauAnalysis.MCEmbeddingTools.SelectingProcedure_cff')
106 process.patMuonsAfterKinCuts.src = cms.InputTag(
"slimmedMuons",
"",dataTier)
107 process.patMuonsAfterID = process.patMuonsAfterLooseID.clone()
109 process.selecting = cms.Path(process.makePatMuonsZmumuSelection)
110 process.schedule.insert(-1, process.selecting)
112 outputModulesList = [key
for key,value
in process.outputModules.iteritems()]
113 for outputModule
in outputModulesList:
114 outputModule = getattr(process, outputModule)
115 outputModule.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring(
"selecting"))
116 outputModule.outputCommands.extend(
keepSelected(dataTier))
126 ret_vstring = cms.untracked.vstring(
131 for akt_manimod
in to_bemanipulate:
132 if "MERGE" in akt_manimod.steps:
133 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_LHEembeddingCLEAN")
134 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_CLEAN")
135 ret_vstring.append(
"keep *_standAloneMuons_*_LHEembeddingCLEAN")
136 ret_vstring.append(
"keep *_glbTrackQual_*_LHEembeddingCLEAN")
142 if changeProcessname:
143 process._Process__name =
"CLEAN" 150 TrackAssociatorParameterBlock.TrackAssociatorParameters.CSCSegmentCollectionLabel = cms.InputTag(
"cscSegments",
"",dataTier)
151 TrackAssociatorParameterBlock.TrackAssociatorParameters.CaloTowerCollectionLabel = cms.InputTag(
"towerMaker",
"",dataTier)
152 TrackAssociatorParameterBlock.TrackAssociatorParameters.DTRecSegment4DCollectionLabel = cms.InputTag(
"dt4DSegments",
"",dataTier)
153 TrackAssociatorParameterBlock.TrackAssociatorParameters.EBRecHitCollectionLabel = cms.InputTag(
"ecalRecHit",
"EcalRecHitsEB",dataTier)
154 TrackAssociatorParameterBlock.TrackAssociatorParameters.EERecHitCollectionLabel = cms.InputTag(
"ecalRecHit",
"EcalRecHitsEE",dataTier)
155 TrackAssociatorParameterBlock.TrackAssociatorParameters.HBHERecHitCollectionLabel = cms.InputTag(
"hbhereco",
"",dataTier)
156 TrackAssociatorParameterBlock.TrackAssociatorParameters.HORecHitCollectionLabel = cms.InputTag(
"horeco",
"",dataTier)
159 MuonImput = cms.InputTag(
"selectedMuonsForEmbedding",
"",
"")
160 for akt_manimod
in to_bemanipulate:
161 if "CLEAN" in akt_manimod.steps:
162 oldCollections_in = cms.VInputTag()
163 for instance
in akt_manimod.instance:
164 oldCollections_in.append(cms.InputTag(akt_manimod.module_name,instance,dataTier))
165 setattr(process, akt_manimod.module_name, cms.EDProducer(akt_manimod.cleaner_name,MuonCollection = MuonImput,TrackAssociatorParameters = TrackAssociatorParameterBlock.TrackAssociatorParameters,oldCollection = oldCollections_in))
166 process.ecalPreshowerRecHit.TrackAssociatorParameters.usePreshower = cms.bool(
True)
173 ret_vstring = cms.untracked.vstring()
174 ret_vstring.append(
"keep *_externalLHEProducer_*_LHEembedding")
175 ret_vstring.append(
"keep *_externalLHEProducer_*_LHEembeddingCLEAN")
180 ret_vstring = cms.untracked.vstring()
181 for akt_manimod
in to_bemanipulate:
182 if "MERGE" in akt_manimod.steps:
183 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_SIMembedding")
184 ret_vstring.append(
"keep *_genParticles_*_SIMembedding")
185 ret_vstring.append(
"keep *_standAloneMuons_*_SIMembedding")
186 ret_vstring.append(
"keep *_glbTrackQual_*_SIMembedding")
187 ret_vstring.append(
"keep *_generator_*_SIMembedding")
198 if changeProcessname:
199 process._Process__name =
"LHEembedding" 200 process.load(
'TauAnalysis.MCEmbeddingTools.EmbeddingLHEProducer_cfi')
202 process.externalLHEProducer.vertices=cms.InputTag(
"offlineSlimmedPrimaryVertices",
"",
"RESELECT")
203 process.lheproduction = cms.Path(process.makeexternalLHEProducer)
204 process.schedule.insert(0,process.lheproduction)
216 if changeProcessname:
217 process._Process__name =
"SIMembedding" 221 process.load(
'TauAnalysis.MCEmbeddingTools.EmbeddingVertexCorrector_cfi')
222 process.VtxSmeared = process.VtxCorrectedToInput.clone()
223 print "Correcting Vertex in genEvent to one from input. Replaced 'VtxSmeared' with the Corrector." 226 process.reconstruction.remove(process.offlineBeamSpot)
229 process.mix.digitizers.castor.doNoise = cms.bool(
False)
231 process.mix.digitizers.ecal.doESNoise = cms.bool(
False)
232 process.mix.digitizers.ecal.doENoise = cms.bool(
False)
234 process.mix.digitizers.hcal.doNoise = cms.bool(
False)
235 process.mix.digitizers.hcal.doThermalNoise = cms.bool(
False)
236 process.mix.digitizers.hcal.doHPDNoise = cms.bool(
False)
238 process.mix.digitizers.pixel.AddNoisyPixels = cms.bool(
False)
239 process.mix.digitizers.pixel.AddNoise = cms.bool(
False)
241 process.mix.digitizers.strip.Noise = cms.bool(
False)
254 ret_vstring = cms.untracked.vstring()
255 ret_vstring.append(
"drop *_*_*_"+dataTier)
256 ret_vstring.append(
"keep *_generator_*_SIMembedding")
262 if changeProcessname:
263 process._Process__name =
"MERGE" 270 process.source.inputCommands = cms.untracked.vstring()
271 process.source.inputCommands.append(
"keep *_*_*_*")
279 process.load(
'Configuration.StandardSequences.Reconstruction_Data_cff')
280 process.merge_step = cms.Path()
283 for akt_manimod
in to_bemanipulate:
284 if "MERGE" in akt_manimod.steps:
287 print akt_manimod.module_name
288 mergCollections_in = cms.VInputTag()
289 for instance
in akt_manimod.instance:
290 mergCollections_in.append(cms.InputTag(akt_manimod.merge_prefix+akt_manimod.module_name,instance,
"SIMembedding"))
291 mergCollections_in.append(cms.InputTag(akt_manimod.merge_prefix+akt_manimod.module_name,instance,
"LHEembeddingCLEAN"))
292 setattr(process, akt_manimod.module_name, cms.EDProducer(akt_manimod.merger_name,
293 mergCollections = mergCollections_in
296 process.merge_step +=getattr(process, akt_manimod.module_name)
299 process.merge_step += process.vertexreco
300 process.unsortedOfflinePrimaryVertices.beamSpotLabel = cms.InputTag(
"offlineBeamSpot",
"",dataTier)
301 process.ak4CaloJetsForTrk.srcPVs = cms.InputTag(
"firstStepPrimaryVertices",
"",dataTier)
303 process.muons.FillDetectorBasedIsolation = cms.bool(
False)
304 process.muons.FillSelectorMaps = cms.bool(
False)
305 process.muons.FillShoweringInfo = cms.bool(
False)
306 process.muons.FillCosmicsIdMap = cms.bool(
False)
309 process.merge_step += process.highlevelreco
314 process.merge_step.remove(process.ak4JetTracksAssociatorExplicit)
316 process.merge_step.remove(process.pfTrack)
317 process.merge_step.remove(process.pfConversions)
318 process.merge_step.remove(process.pfV0)
319 process.merge_step.remove(process.particleFlowDisplacedVertexCandidate)
320 process.merge_step.remove(process.particleFlowDisplacedVertex)
321 process.merge_step.remove(process.pfDisplacedTrackerVertex)
322 process.merge_step.remove(process.pfTrackElec)
323 process.merge_step.remove(process.electronsWithPresel)
324 process.merge_step.remove(process.mvaElectrons)
325 process.merge_step.remove(process.particleFlowBlock)
326 process.merge_step.remove(process.particleFlowEGamma)
327 process.merge_step.remove(process.gedGsfElectronCores)
329 process.merge_step.remove(process.gedPhotonCore)
330 process.merge_step.remove(process.ecalDrivenGsfElectronCores)
331 process.merge_step.remove(process.ecalDrivenGsfElectrons)
332 process.merge_step.remove(process.uncleanedOnlyElectronSeeds)
333 process.merge_step.remove(process.uncleanedOnlyAllConversions)
334 process.merge_step.remove(process.uncleanedOnlyPfTrack)
335 process.merge_step.remove(process.uncleanedOnlyPfTrackElec)
336 process.merge_step.remove(process.uncleanedOnlyGsfElectrons)
337 process.merge_step.remove(process.uncleanedOnlyElectronCkfTrackCandidates)
338 process.merge_step.remove(process.cosmicsVeto)
339 process.merge_step.remove(process.cosmicsVetoTrackCandidates)
344 process.merge_step.remove(process.hcalnoise)
346 process.load(
'CommonTools.ParticleFlow.genForPF2PAT_cff')
348 process.merge_step += process.genForPF2PATSequence
350 process.schedule.insert(0,process.merge_step)
357 return customiseMerging(process, changeProcessname=changeProcessname, reselect=
True)
362 process._Process__name =
"LHEembeddingCLEAN" 364 process =
customiseLHE(process,changeProcessname=
False,reselect=reselect)
373 if not hasattr(process,
"options"):
374 process.options = cms.untracked.PSet()
375 process.options.emptyRunLumiMode = cms.untracked.string(
'doNotHandleEmptyRunsAndLumis')
381 process.load(
"TauAnalysis.MCEmbeddingTools.DYToMuMuGenFilter_cfi")
382 process.ZToMuMuFilter = cms.Path(process.dYToMuMuGenFilter)
383 process.schedule.insert(-1,process.ZToMuMuFilter)
388 def fix_input_tags(process, formodules = ["generalTracks","cscSegments","dt4DSegments","rpcRecHits"]):
389 def change_tags_process(test_input):
390 if isinstance(test_input, cms.InputTag):
391 if test_input.getModuleLabel()
in formodules:
392 test_input.setProcessName(process._Process__name)
394 def search_for_tags(pset):
395 if isinstance(pset, dict):
397 if isinstance(pset[key], cms.VInputTag):
398 for akt_inputTag
in pset[key]:
399 change_tags_process(akt_inputTag)
400 elif isinstance(pset[key], cms.PSet):
401 search_for_tags(pset[key].__dict__)
402 elif isinstance(pset[key], cms.VPSet):
403 for akt_pset
in pset[key]:
404 search_for_tags(akt_pset.__dict__)
406 change_tags_process(pset[key])
408 print "must be python dict not a ",type(pset)
410 for module
in process.producers_():
411 search_for_tags(getattr(process, module).__dict__)
412 for module
in process.filters_():
413 search_for_tags(getattr(process, module).__dict__)
414 for module
in process.analyzers_():
415 search_for_tags(getattr(process, module).__dict__)
def customiseSelecting(process, reselect=False)
def customiseLHEandCleaning_Reselect(process)
def customiseSelecting_Reselect(process)
def keepCleaned()
Customizer for cleaining ###########################.
def customiseGenerator(process, changeProcessname=True, reselect=False)
Customizer for skimming ########################### There are four different parts.
def keepLHE()
Customizer for simulaton ###########################.
def keepMerged(dataTier="SELECT")
Customizer for merging ###########################.
def customiseFilterZToMuMu(process)
MC specific Customizer ###########################.
def customiseMerging(process, changeProcessname=True, reselect=False)
def fix_input_tags(process, formodules=["generalTracks", cscSegments, dt4DSegments, rpcRecHits)
def customiseMerging_Reselect(process, changeProcessname=True)
def customiseLHEandCleaning(process, reselect=False)
cross Customizers ###########################
def __init__(self, module_name, manipulator_name, steps=["SELECT", CLEAN, SIM, MERGE, instance=[""], merge_prefix="")
def customisoptions(process)
additionla Customizer ###########################
def modify_outputModules(process, keep_drop_list=[], module_veto_list=[])
def customiseLHE(process, changeProcessname=True, reselect=False)
def keepSelected(dataTier)
Customizer for Selecting ###########################.
def customiseGenerator_Reselect(process)
def customiseCleaning(process, changeProcessname=True, reselect=False)