5 from __future__
import print_function
6 import FWCore.ParameterSet.Config
as cms
7 from FWCore.ParameterSet.Utilities
import cleanUnscheduled
26 def __init__(self, module_name, manipulator_name, steps = ["SELECT","CLEAN","SIM","MERGE"], instance=[""], merge_prefix = ""):
41 to_bemanipulate.append(
module_manipulate(module_name =
'siPixelClusters', manipulator_name =
"Pixel", steps = [
"SELECT",
"CLEAN"] ))
42 to_bemanipulate.append(
module_manipulate(module_name =
'siStripClusters', manipulator_name =
"Strip", steps = [
"SELECT",
"CLEAN"] ))
44 to_bemanipulate.append(
module_manipulate(module_name =
'generalTracks', manipulator_name =
"Track", steps = [
"SIM",
"MERGE"]))
45 to_bemanipulate.append(
module_manipulate(module_name =
'muons1stStep', manipulator_name =
"Muon", steps = [
"SIM",
"MERGE"]))
46 to_bemanipulate.append(
module_manipulate(module_name =
'gedGsfElectronsTmp', manipulator_name =
"GsfElectron", steps = [
"SIM",
"MERGE"]))
47 to_bemanipulate.append(
module_manipulate(module_name =
'gedPhotonsTmp', manipulator_name =
"Photon", steps = [
"SIM",
"MERGE"]))
48 to_bemanipulate.append(
module_manipulate(module_name =
'particleFlowTmp', manipulator_name =
"PF", steps = [
"SIM",
"MERGE"], instance=[
"",
"CleanedHF",
"CleanedCosmicsMuons",
"CleanedTrackerAndGlobalMuons",
"CleanedFakeMuons",
"CleanedPunchThroughMuons",
"CleanedPunchThroughNeutralHadrons",
"AddedMuonsAndHadrons"]))
51 to_bemanipulate.append(
module_manipulate(module_name =
'ecalRecHit', manipulator_name =
"EcalRecHit", instance= [
"EcalRecHitsEB",
"EcalRecHitsEE"]))
52 to_bemanipulate.append(
module_manipulate(module_name =
'ecalPreshowerRecHit', manipulator_name =
"EcalRecHit", instance= [
"EcalRecHitsES"]))
54 to_bemanipulate.append(
module_manipulate(module_name =
'hbheprereco', manipulator_name =
"HBHERecHit"))
55 to_bemanipulate.append(
module_manipulate(module_name =
'hbhereco', manipulator_name =
"HBHERecHit"))
56 to_bemanipulate.append(
module_manipulate(module_name =
'zdcreco', manipulator_name =
"ZDCRecHit"))
58 to_bemanipulate.append(
module_manipulate(module_name =
'horeco', manipulator_name =
"HORecHit"))
59 to_bemanipulate.append(
module_manipulate(module_name =
'hfreco', manipulator_name =
"HFRecHit"))
60 to_bemanipulate.append(
module_manipulate(module_name =
'castorreco', manipulator_name =
"CastorRecHit"))
63 to_bemanipulate.append(
module_manipulate(module_name =
'dt1DRecHits', manipulator_name =
"DTRecHit", steps = [
"SELECT",
"CLEAN"] ))
64 to_bemanipulate.append(
module_manipulate(module_name =
'dt1DCosmicRecHits', manipulator_name =
"DTRecHit", steps = [
"SELECT",
"CLEAN"] ))
66 to_bemanipulate.append(
module_manipulate(module_name =
'csc2DRecHits', manipulator_name =
"CSCRecHit", steps = [
"SELECT",
"CLEAN"] ))
67 to_bemanipulate.append(
module_manipulate(module_name =
'rpcRecHits', manipulator_name =
"RPCRecHit", steps = [
"SELECT",
"CLEAN"] ))
71 outputModulesList = [key
for key,value
in six.iteritems(process.outputModules)]
72 for outputModule
in outputModulesList:
73 if outputModule
in module_veto_list:
75 outputModule = getattr(process, outputModule)
76 for add_element
in keep_drop_list:
77 outputModule.outputCommands.extend(add_element)
85 ret_vstring = cms.untracked.vstring(
87 "keep *_patMuonsAfterID_*_"+dataTier,
88 "keep *_slimmedMuons_*_"+dataTier,
89 "keep *_selectedMuonsForEmbedding_*_"+dataTier,
90 "keep recoVertexs_offlineSlimmedPrimaryVertices_*_"+dataTier,
91 "keep *_firstStepPrimaryVertices_*_"+dataTier,
92 "keep *_offlineBeamSpot_*_"+dataTier
94 for akt_manimod
in to_bemanipulate:
95 if "CLEAN" in akt_manimod.steps:
96 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_"+dataTier)
101 process._Process__name =
"RESELECT" 104 process._Process__name =
"SELECT" 107 process.load(
'TauAnalysis.MCEmbeddingTools.SelectingProcedure_cff')
109 process.slimmedMuons.trackExtraAssocs = []
110 process.patMuonsAfterKinCuts.src = cms.InputTag(
"slimmedMuons",
"",dataTier)
111 process.patMuonsAfterID = process.patMuonsAfterLooseID.clone()
113 process.selecting = cms.Path(process.makePatMuonsZmumuSelection)
114 process.schedule.insert(-1, process.selecting)
116 outputModulesList = [key
for key,value
in six.iteritems(process.outputModules)]
117 for outputModule
in outputModulesList:
118 outputModule = getattr(process, outputModule)
119 outputModule.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring(
"selecting"))
120 outputModule.outputCommands.extend(
keepSelected(dataTier))
130 ret_vstring = cms.untracked.vstring(
135 for akt_manimod
in to_bemanipulate:
136 if "MERGE" in akt_manimod.steps:
137 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_LHEembeddingCLEAN")
138 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_CLEAN")
139 ret_vstring.append(
"keep *_standAloneMuons_*_LHEembeddingCLEAN")
140 ret_vstring.append(
"keep *_glbTrackQual_*_LHEembeddingCLEAN")
146 if changeProcessname:
147 process._Process__name =
"CLEAN" 154 TrackAssociatorParameterBlock.TrackAssociatorParameters.CSCSegmentCollectionLabel = cms.InputTag(
"cscSegments",
"",dataTier)
155 TrackAssociatorParameterBlock.TrackAssociatorParameters.CaloTowerCollectionLabel = cms.InputTag(
"towerMaker",
"",dataTier)
156 TrackAssociatorParameterBlock.TrackAssociatorParameters.DTRecSegment4DCollectionLabel = cms.InputTag(
"dt4DSegments",
"",dataTier)
157 TrackAssociatorParameterBlock.TrackAssociatorParameters.EBRecHitCollectionLabel = cms.InputTag(
"ecalRecHit",
"EcalRecHitsEB",dataTier)
158 TrackAssociatorParameterBlock.TrackAssociatorParameters.EERecHitCollectionLabel = cms.InputTag(
"ecalRecHit",
"EcalRecHitsEE",dataTier)
159 TrackAssociatorParameterBlock.TrackAssociatorParameters.HBHERecHitCollectionLabel = cms.InputTag(
"hbhereco",
"",dataTier)
160 TrackAssociatorParameterBlock.TrackAssociatorParameters.HORecHitCollectionLabel = cms.InputTag(
"horeco",
"",dataTier)
163 MuonImput = cms.InputTag(
"selectedMuonsForEmbedding",
"",
"")
164 for akt_manimod
in to_bemanipulate:
165 if "CLEAN" in akt_manimod.steps:
166 oldCollections_in = cms.VInputTag()
167 for instance
in akt_manimod.instance:
168 oldCollections_in.append(cms.InputTag(akt_manimod.module_name,instance,dataTier))
169 setattr(process, akt_manimod.module_name, cms.EDProducer(akt_manimod.cleaner_name,MuonCollection = MuonImput,TrackAssociatorParameters = TrackAssociatorParameterBlock.TrackAssociatorParameters,oldCollection = oldCollections_in))
170 process.ecalPreshowerRecHit.TrackAssociatorParameters.usePreshower = cms.bool(
True)
177 ret_vstring = cms.untracked.vstring()
178 ret_vstring.append(
"keep *_externalLHEProducer_*_LHEembedding")
179 ret_vstring.append(
"keep *_externalLHEProducer_*_LHEembeddingCLEAN")
184 ret_vstring = cms.untracked.vstring()
185 for akt_manimod
in to_bemanipulate:
186 if "MERGE" in akt_manimod.steps:
187 ret_vstring.append(
"keep *_"+akt_manimod.module_name+
"_*_SIMembedding")
188 ret_vstring.append(
"keep *_genParticles_*_SIMembedding")
189 ret_vstring.append(
"keep *_standAloneMuons_*_SIMembedding")
190 ret_vstring.append(
"keep *_glbTrackQual_*_SIMembedding")
191 ret_vstring.append(
"keep *_generator_*_SIMembedding")
192 ret_vstring.append(
"keep *_addPileupInfo_*_SIMembedding")
193 ret_vstring.append(
"keep *_slimmedAddPileupInfo_*_*")
204 if changeProcessname:
205 process._Process__name =
"LHEembedding" 206 process.load(
'TauAnalysis.MCEmbeddingTools.EmbeddingLHEProducer_cfi')
208 process.externalLHEProducer.vertices=cms.InputTag(
"offlineSlimmedPrimaryVertices",
"",
"RESELECT")
209 process.lheproduction = cms.Path(process.makeexternalLHEProducer)
210 process.schedule.insert(0,process.lheproduction)
222 if changeProcessname:
223 process._Process__name =
"SIMembedding" 227 process.load(
'TauAnalysis.MCEmbeddingTools.EmbeddingVertexCorrector_cfi')
228 process.VtxSmeared = process.VtxCorrectedToInput.clone()
229 print(
"Correcting Vertex in genEvent to one from input. Replaced 'VtxSmeared' with the Corrector.")
232 process.reconstruction.remove(process.offlineBeamSpot)
235 process.mix.digitizers.castor.doNoise = cms.bool(
False)
237 process.mix.digitizers.ecal.doESNoise = cms.bool(
False)
238 process.mix.digitizers.ecal.doENoise = cms.bool(
False)
240 process.mix.digitizers.hcal.doNoise = cms.bool(
False)
241 process.mix.digitizers.hcal.doThermalNoise = cms.bool(
False)
242 process.mix.digitizers.hcal.doHPDNoise = cms.bool(
False)
244 process.mix.digitizers.pixel.AddNoisyPixels = cms.bool(
False)
245 process.mix.digitizers.pixel.AddNoise = cms.bool(
False)
247 process.mix.digitizers.strip.Noise = cms.bool(
False)
260 ret_vstring = cms.untracked.vstring()
261 ret_vstring.append(
"drop *_*_*_"+dataTier)
262 ret_vstring.append(
"keep *_prunedGenParticles_*_MERGE")
263 ret_vstring.append(
"keep *_generator_*_SIMembedding")
273 process.load(
'PhysicsTools.PatAlgos.slimming.genParticles_cff')
274 process.merge_step += process.prunedGenParticlesWithStatusOne
275 process.load(
'PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi')
276 process.merge_step += process.prunedGenParticles
277 process.load(
'PhysicsTools.PatAlgos.slimming.packedGenParticles_cfi')
278 process.merge_step += process.packedGenParticles
280 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.muonMatch_cfi')
281 process.merge_step += process.muonMatch
282 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi')
283 process.merge_step += process.electronMatch
284 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.photonMatch_cfi')
285 process.merge_step += process.photonMatch
286 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.tauMatch_cfi')
287 process.merge_step += process.tauMatch
288 process.load(
'PhysicsTools.JetMCAlgos.TauGenJets_cfi')
289 process.merge_step += process.tauGenJets
290 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff')
291 process.merge_step += process.patJetPartons
292 process.load(
'PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi')
293 process.merge_step += process.patJetPartonMatch
295 process.muonMatch.matched =
"prunedGenParticles" 296 process.electronMatch.matched =
"prunedGenParticles" 297 process.electronMatch.src = cms.InputTag(
"reducedEgamma",
"reducedGedGsfElectrons")
298 process.photonMatch.matched =
"prunedGenParticles" 299 process.photonMatch.src = cms.InputTag(
"reducedEgamma",
"reducedGedPhotons")
300 process.tauMatch.matched =
"prunedGenParticles" 301 process.tauGenJets.GenParticles =
"prunedGenParticles" 305 process.patJetPartons.particles =
"prunedGenParticles" 306 process.patJetPartonMatch.matched =
"prunedGenParticles" 307 process.patJetPartonMatch.mcStatus = [ 3, 23 ]
308 process.patJetGenJetMatch.matched =
"slimmedGenJets" 309 process.patJetGenJetMatchAK8.matched =
"slimmedGenJetsAK8" 310 process.patMuons.embedGenMatch =
False 311 process.patElectrons.embedGenMatch =
False 312 process.patPhotons.embedGenMatch =
False 313 process.patTaus.embedGenMatch =
False 314 process.patTausBoosted.embedGenMatch =
False 315 process.patJets.embedGenPartonMatch =
False 317 process.patJetFlavourAssociation.rParam = 0.4
319 process.schedule.insert(0,process.merge_step)
325 if changeProcessname:
326 process._Process__name =
"MERGE" 333 process.source.inputCommands = cms.untracked.vstring()
334 process.source.inputCommands.append(
"keep *_*_*_*")
342 process.load(
'Configuration.StandardSequences.Reconstruction_Data_cff')
343 process.merge_step = cms.Path()
346 for akt_manimod
in to_bemanipulate:
347 if "MERGE" in akt_manimod.steps:
350 print(akt_manimod.module_name)
351 mergCollections_in = cms.VInputTag()
352 for instance
in akt_manimod.instance:
353 mergCollections_in.append(cms.InputTag(akt_manimod.merge_prefix+akt_manimod.module_name,instance,
"SIMembedding"))
354 mergCollections_in.append(cms.InputTag(akt_manimod.merge_prefix+akt_manimod.module_name,instance,
"LHEembeddingCLEAN"))
355 setattr(process, akt_manimod.module_name, cms.EDProducer(akt_manimod.merger_name,
356 mergCollections = mergCollections_in
359 process.merge_step +=getattr(process, akt_manimod.module_name)
362 process.merge_step += process.doAlldEdXEstimators
363 process.merge_step += process.vertexreco
364 process.unsortedOfflinePrimaryVertices.beamSpotLabel = cms.InputTag(
"offlineBeamSpot",
"",dataTier)
365 process.ak4CaloJetsForTrk.srcPVs = cms.InputTag(
"firstStepPrimaryVertices",
"",dataTier)
367 process.muons.FillDetectorBasedIsolation = cms.bool(
False)
368 process.muons.FillSelectorMaps = cms.bool(
False)
369 process.muons.FillShoweringInfo = cms.bool(
False)
370 process.muons.FillCosmicsIdMap = cms.bool(
False)
372 process.muonsFromCosmics.fillShowerDigis = cms.bool(
False)
373 process.muonsFromCosmics1Leg.fillShowerDigis = cms.bool(
False)
375 process.merge_step += process.highlevelreco
380 process.merge_step.remove(process.ak4JetTracksAssociatorExplicit)
382 process.merge_step.remove(process.pfTrack)
383 process.merge_step.remove(process.pfConversions)
384 process.merge_step.remove(process.pfV0)
385 process.merge_step.remove(process.particleFlowDisplacedVertexCandidate)
386 process.merge_step.remove(process.particleFlowDisplacedVertex)
387 process.merge_step.remove(process.pfDisplacedTrackerVertex)
388 process.merge_step.remove(process.pfTrackElec)
389 process.merge_step.remove(process.electronsWithPresel)
390 process.merge_step.remove(process.mvaElectrons)
391 process.merge_step.remove(process.particleFlowBlock)
392 process.merge_step.remove(process.particleFlowEGamma)
393 process.merge_step.remove(process.gedGsfElectronCores)
395 process.merge_step.remove(process.gedPhotonCore)
396 process.merge_step.remove(process.ecalDrivenGsfElectronCores)
397 process.merge_step.remove(process.ecalDrivenGsfElectrons)
398 process.merge_step.remove(process.uncleanedOnlyElectronSeeds)
399 process.merge_step.remove(process.uncleanedOnlyAllConversions)
400 process.merge_step.remove(process.uncleanedOnlyPfTrack)
401 process.merge_step.remove(process.uncleanedOnlyPfTrackElec)
402 process.merge_step.remove(process.uncleanedOnlyGsfElectrons)
403 process.merge_step.remove(process.uncleanedOnlyElectronCkfTrackCandidates)
404 process.merge_step.remove(process.cosmicsVeto)
405 process.merge_step.remove(process.cosmicsVetoTrackCandidates)
410 process.merge_step.remove(process.hcalnoise)
412 process.load(
'CommonTools.ParticleFlow.genForPF2PAT_cff')
414 process.merge_step += process.genForPF2PATSequence
416 process.schedule.insert(0,process.merge_step)
423 return customiseMerging(process, changeProcessname=changeProcessname, reselect=
True)
428 process._Process__name =
"LHEembeddingCLEAN" 430 process =
customiseLHE(process,changeProcessname=
False,reselect=reselect)
439 if not hasattr(process,
"options"):
440 process.options = cms.untracked.PSet()
441 process.options.emptyRunLumiMode = cms.untracked.string(
'doNotHandleEmptyRunsAndLumis')
442 if not hasattr(process,
"bunchSpacingProducer"):
443 process.bunchSpacingProducer = cms.EDProducer(
"BunchSpacingProducer")
444 process.bunchSpacingProducer.bunchSpacingOverride = cms.uint32(25)
445 process.bunchSpacingProducer.overrideBunchSpacing = cms.bool(
True)
446 process.options.numberOfThreads = cms.untracked.uint32(1)
447 process.options.numberOfStreams = cms.untracked.uint32(0)
453 process.load(
"TauAnalysis.MCEmbeddingTools.DYToMuMuGenFilter_cfi")
454 process.ZToMuMuFilter = cms.Path(process.dYToMuMuGenFilter)
455 process.schedule.insert(-1,process.ZToMuMuFilter)
459 process.load(
"TauAnalysis.MCEmbeddingTools.TTbartoMuMuGenFilter_cfi")
460 process.MCFilter = cms.Path(process.TTbartoMuMuGenFilter)
464 process.schedule.insert(-1,process.MCFilter)
465 outputModulesList = [key
for key,value
in six.iteritems(process.outputModules)]
466 for outputModule
in outputModulesList:
467 outputModule = getattr(process, outputModule)
468 outputModule.SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring(
"MCFilter"))
471 def fix_input_tags(process, formodules = ["generalTracks","cscSegments","dt4DSegments","rpcRecHits"]):
472 def change_tags_process(test_input):
473 if isinstance(test_input, cms.InputTag):
474 if test_input.getModuleLabel()
in formodules:
475 test_input.setProcessName(process._Process__name)
477 def search_for_tags(pset):
478 if isinstance(pset, dict):
480 if isinstance(pset[key], cms.VInputTag):
481 for akt_inputTag
in pset[key]:
482 change_tags_process(akt_inputTag)
483 elif isinstance(pset[key], cms.PSet):
484 search_for_tags(pset[key].__dict__)
485 elif isinstance(pset[key], cms.VPSet):
486 for akt_pset
in pset[key]:
487 search_for_tags(akt_pset.__dict__)
489 change_tags_process(pset[key])
491 print(
"must be python dict not a ",type(pset))
493 for module
in process.producers_():
494 search_for_tags(getattr(process, module).__dict__)
495 for module
in process.filters_():
496 search_for_tags(getattr(process, module).__dict__)
497 for module
in process.analyzers_():
498 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.
S & print(S &os, JobReport::InputFile const &f)
def keepLHE()
Customizer for simulaton ###########################.
def customiseKeepPrunedGenParticles(process, reselect=False)
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 customiseMCFilter(process)
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)
def customiseFilterTTbartoMuMu(process)