CMS 3D CMS Logo

customisers.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 
4 # Various set of customise functions needed for embedding
5 import FWCore.ParameterSet.Config as cms
6 
7 from PhysicsTools.NanoAOD.common_cff import ExtVar
8 
9 
15 
16 
17 
18 
21 
22 
24  def __init__(
25  self,
26  module_name,
27  manipulator_name,
28  steps=["SELECT", "CLEAN", "SIM", "MERGE"],
29  instance=[""],
30  merge_prefix="",
31  ):
32  self.module_name = module_name
33  self.manipulator_name = manipulator_name
34  self.steps = steps
35  self.instance = instance
36  self.merger_name = manipulator_name + "ColMerger"
37  self.cleaner_name = manipulator_name + "ColCleaner"
38  self.merge_prefix = merge_prefix
39 
40 
41 to_bemanipulate = []
42 
43 
44 to_bemanipulate.append(
46  module_name="siPixelClusters",
47  manipulator_name="Pixel",
48  steps=["SELECT", "CLEAN"],
49  )
50 )
51 to_bemanipulate.append(
53  module_name="siStripClusters",
54  manipulator_name="Strip",
55  steps=["SELECT", "CLEAN"],
56  )
57 )
58 
59 to_bemanipulate.append(
61  module_name="generalTracks", manipulator_name="Track", steps=["SIM", "MERGE"]
62  )
63 )
64 to_bemanipulate.append(
66  module_name="cosmicsVetoTracksRaw", manipulator_name="Track", steps=["SIM", "MERGE"]
67  )
68 )
69 to_bemanipulate.append(
71  module_name="electronGsfTracks",
72  manipulator_name="GsfTrack",
73  steps=["SIM", "MERGE"],
74  )
75 )
76 to_bemanipulate.append(
78  module_name="lowPtGsfEleGsfTracks",
79  manipulator_name="GsfTrack",
80  steps=["SIM", "MERGE"],
81  )
82 )
83 to_bemanipulate.append(
85  module_name="conversionStepTracks",
86  manipulator_name="Track",
87  steps=["SIM", "MERGE"],
88  )
89 )
90 to_bemanipulate.append(
92  module_name="displacedTracks",
93  manipulator_name="Track",
94  steps=["SIM", "MERGE"],
95  )
96 )
97 to_bemanipulate.append(
99  module_name="ckfInOutTracksFromConversions",
100  manipulator_name="Track",
101  steps=["SIM", "MERGE"],
102  )
103 )
104 to_bemanipulate.append(
106  module_name="ckfOutInTracksFromConversions",
107  manipulator_name="Track",
108  steps=["SIM", "MERGE"],
109  )
110 )
111 
112 to_bemanipulate.append(
114  module_name="muons1stStep", manipulator_name="Muon", steps=["SIM", "MERGE"]
115  )
116 )
117 to_bemanipulate.append(
119  module_name="displacedMuons1stStep", manipulator_name="Muon", steps=["SIM", "MERGE"]
120  )
121 )
122 # to_bemanipulate.append(module_manipulate(module_name = 'gedGsfElectronsTmp', manipulator_name = "GsfElectron", steps = ["SIM", "MERGE"]))
123 # to_bemanipulate.append(module_manipulate(module_name = 'gedPhotonsTmp', manipulator_name = "Photon", steps = ["SIM", "MERGE"]))
124 to_bemanipulate.append(
126  module_name="conversions", manipulator_name="Conversion", steps=["SIM", "MERGE"]
127  )
128 )
129 to_bemanipulate.append(
131  module_name="allConversions",
132  manipulator_name="Conversion",
133  steps=["SIM", "MERGE"],
134  )
135 )
136 to_bemanipulate.append(
138  module_name="particleFlowTmp",
139  manipulator_name="PF",
140  steps=["SIM", "MERGE"],
141  instance=[
142  "",
143  "CleanedHF",
144  "CleanedCosmicsMuons",
145  "CleanedTrackerAndGlobalMuons",
146  "CleanedFakeMuons",
147  "CleanedPunchThroughMuons",
148  "CleanedPunchThroughNeutralHadrons",
149  "AddedMuonsAndHadrons",
150  ],
151  )
152 )
153 to_bemanipulate.append(
155  module_name="ecalDigis", manipulator_name="EcalSrFlag", steps=["SIM", "MERGE"]
156  )
157 )
158 to_bemanipulate.append(
160  module_name="hcalDigis", manipulator_name="HcalDigi", steps=["SIM", "MERGE"]
161  )
162 )
163 to_bemanipulate.append(
165  module_name="electronMergedSeeds",
166  manipulator_name="ElectronSeed",
167  steps=["SIM", "MERGE"],
168  )
169 )
170 to_bemanipulate.append(
172  module_name="ecalDrivenElectronSeeds",
173  manipulator_name="EcalDrivenElectronSeed",
174  steps=["SIM", "MERGE"],
175  )
176 )
177 
178 to_bemanipulate.append(
180  module_name="ecalRecHit",
181  manipulator_name="EcalRecHit",
182  instance=["EcalRecHitsEB", "EcalRecHitsEE"],
183  )
184 )
185 to_bemanipulate.append(
187  module_name="ecalPreshowerRecHit",
188  manipulator_name="EcalRecHit",
189  instance=["EcalRecHitsES"],
190  )
191 )
192 
193 to_bemanipulate.append(
194  module_manipulate(module_name="hbheprereco", manipulator_name="HBHERecHit")
195 )
196 to_bemanipulate.append(
197  module_manipulate(module_name="hbhereco", manipulator_name="HBHERecHit")
198 )
199 to_bemanipulate.append(
200  module_manipulate(module_name="zdcreco", manipulator_name="ZDCRecHit")
201 )
202 
203 to_bemanipulate.append(
204  module_manipulate(module_name="horeco", manipulator_name="HORecHit")
205 )
206 to_bemanipulate.append(
207  module_manipulate(module_name="hfreco", manipulator_name="HFRecHit")
208 )
209 
210 
211 to_bemanipulate.append(
213  module_name="dt1DRecHits",
214  manipulator_name="DTRecHit",
215  steps=["SELECT", "CLEAN"],
216  )
217 )
218 to_bemanipulate.append(
220  module_name="dt1DCosmicRecHits",
221  manipulator_name="DTRecHit",
222  steps=["SELECT", "CLEAN"],
223  )
224 )
225 
226 to_bemanipulate.append(
228  module_name="dt4DSegments",
229  manipulator_name="DTRecSegment4D",
230  steps=["SELECT", "CLEAN"],
231  )
232 )
233 
234 to_bemanipulate.append(
236  module_name="dt4DCosmicSegments",
237  manipulator_name="DTRecSegment4D",
238  steps=["SELECT", "CLEAN"],
239  )
240 )
241 
242 to_bemanipulate.append(
244  module_name="csc2DRecHits",
245  manipulator_name="CSCRecHit",
246  steps=["SELECT", "CLEAN"],
247  )
248 )
249 
250 to_bemanipulate.append(
252  module_name="cscSegments",
253  manipulator_name="CSCSegment",
254  steps=["SELECT", "CLEAN"],
255  )
256 )
257 
258 to_bemanipulate.append(
260  module_name="rpcRecHits",
261  manipulator_name="RPCRecHit",
262  steps=["SELECT", "CLEAN"],
263  )
264 )
265 
266 
267 def modify_outputModules(process, keep_drop_list=[], module_veto_list=[]):
268  outputModulesList = [key for key, value in process.outputModules.items()]
269  for outputModule in outputModulesList:
270  if outputModule in module_veto_list:
271  continue
272  outputModule = getattr(process, outputModule)
273  for add_element in keep_drop_list:
274  outputModule.outputCommands.extend(add_element)
275  return process
276 
277 
278 
279 
280 
281 def keepSelected(dataTier):
282  ret_vstring = cms.untracked.vstring(
283  # "drop *_*_*_"+dataTier,
284  "keep *_patMuonsAfterID_*_" + dataTier,
285  "keep *_slimmedMuons_*_" + dataTier,
286  "keep *_slimmedMuonTrackExtras_*_" + dataTier,
287  "keep *_selectedMuonsForEmbedding_*_" + dataTier,
288  "keep recoVertexs_offlineSlimmedPrimaryVertices_*_" + dataTier,
289  "keep *_firstStepPrimaryVertices_*_" + dataTier,
290  "keep *_offlineBeamSpot_*_" + dataTier,
291  "keep *_ecalDrivenElectronSeeds_*_" + dataTier,
292  )
293  for akt_manimod in to_bemanipulate:
294  if "CLEAN" in akt_manimod.steps:
295  ret_vstring.append("keep *_" + akt_manimod.module_name + "_*_" + dataTier)
296  return ret_vstring
297 
298 
299 def customiseSelecting(process, reselect=False):
300  if reselect:
301  process._Process__name = "RESELECT"
302  dataTier = "RESELECT"
303  # process.source.inputCommands = cms.untracked.vstring("drop *",
304  # "keep *_*_*_LHC",
305  # "keep *_*_*_HLT",
306  # )
307  else:
308  process._Process__name = "SELECT"
309  dataTier = "SELECT"
310 
311  process.load("TauAnalysis.MCEmbeddingTools.SelectingProcedure_cff")
312  process.patMuonsAfterKinCuts.src = cms.InputTag("slimmedMuons", "", dataTier)
313  process.selectedMuonsForEmbedding.PuppiMet = cms.InputTag(
314  "slimmedMETsPuppi", "", dataTier
315  )
316  process.selectedMuonsForEmbedding.Met = cms.InputTag("slimmedMETs", "", dataTier)
317  process.patMuonsAfterID = process.patMuonsAfterLooseID.clone()
318 
319  process.selecting = cms.Path(process.makePatMuonsZmumuSelection)
320  process.schedule.insert(-1, process.selecting)
321 
322  outputModulesList = [key for key, value in process.outputModules.items()]
323  for outputModule in outputModulesList:
324  outputModule = getattr(process, outputModule)
325  outputModule.SelectEvents = cms.untracked.PSet(
326  SelectEvents=cms.vstring("selecting")
327  )
328  outputModule.outputCommands.extend(keepSelected(dataTier))
329 
330  process = customisoptions(process)
331  return modify_outputModules(process, [keepSelected(dataTier)])
332 
333 
335  return customiseSelecting(process, reselect=True)
336 
337 
338 
339 
340 
341 def keepCleaned(dataTier):
342  ret_vstring = cms.untracked.vstring(
343  # "drop *_*_*_LHEembeddingCLEAN",
344  # "drop *_*_*_CLEAN"
345  "drop *_*_*_" + dataTier,
346  "keep *_patMuonsAfterID_*_" + dataTier,
347  "keep *_slimmedMuons_*_" + dataTier,
348  # "keep *_slimmedMuonTrackExtras_*_" + dataTier,
349  "keep *_selectedMuonsForEmbedding_*_" + dataTier,
350  "keep recoVertexs_offlineSlimmedPrimaryVertices_*_" + dataTier,
351  "keep *_firstStepPrimaryVertices_*_" + dataTier,
352  "keep *_offlineBeamSpot_*_" + dataTier,
353  "keep *_l1extraParticles_*_" + dataTier,
354  "keep TrajectorySeeds_*_*_*",
355  "keep recoElectronSeeds_*_*_*",
356  "drop recoIsoDepositedmValueMap_muIsoDepositTk_*_*" ,
357  "drop recoIsoDepositedmValueMap_muIsoDepositTkDisplaced_*_*",
358  "drop *_ctppsProtons_*_*",
359  "drop *_ctppsLocalTrackLiteProducer_*_*",
360  "drop *_ctppsDiamondLocalTracks_*_*",
361  "drop *_ctppsDiamondRecHits_*_*",
362  "drop *_ctppsDiamondRawToDigi_*_*",
363  "drop *_ctppsPixelLocalTracks_*_*",
364  "drop *_ctppsPixelRecHits_*_*",
365  "drop *_ctppsPixelClusters_*_*",
366  "drop *_ctppsPixelDigis_*_*",
367  "drop *_totemRPLocalTrackFitter_*_*",
368  "drop *_totemRPUVPatternFinder_*_*",
369  "drop *_totemRPRecHitProducer_*_*",
370  "drop *_totemRPClusterProducer_*_*",
371  "drop *_totemRPRawToDigi_*_*",
372  "drop *_muonSimClassifier_*_*",
373  # "keep recoPFClusters_*_*_*",
374  # "keep recoPFRecHits_*_*_*"
375  )
376 
377  for akt_manimod in to_bemanipulate:
378  if "MERGE" in akt_manimod.steps:
379  ret_vstring.append(
380  "keep *_" + akt_manimod.module_name + "_*_LHEembeddingCLEAN"
381  )
382  ret_vstring.append("keep *_" + akt_manimod.module_name + "_*_CLEAN")
383  ret_vstring.append("keep *_standAloneMuons_*_LHEembeddingCLEAN")
384  ret_vstring.append("keep *_glbTrackQual_*_LHEembeddingCLEAN")
385  return ret_vstring
386 
387 
388 def customiseCleaning(process, changeProcessname=True, reselect=False):
389  if changeProcessname:
390  process._Process__name = "CLEAN"
391  if reselect:
392  dataTier = "RESELECT"
393  else:
394  dataTier = "SELECT"
395 
396  from TrackingTools.TrackAssociator.default_cfi import TrackAssociatorParameterBlock
397 
398  TrackAssociatorParameterBlock.TrackAssociatorParameters.CSCSegmentCollectionLabel = cms.InputTag(
399  "cscSegments", "", dataTier
400  )
401  TrackAssociatorParameterBlock.TrackAssociatorParameters.CaloTowerCollectionLabel = (
402  cms.InputTag("towerMaker", "", dataTier)
403  )
404  TrackAssociatorParameterBlock.TrackAssociatorParameters.DTRecSegment4DCollectionLabel = cms.InputTag(
405  "dt4DSegments", "", dataTier
406  )
407  TrackAssociatorParameterBlock.TrackAssociatorParameters.EBRecHitCollectionLabel = (
408  cms.InputTag("ecalRecHit", "EcalRecHitsEB", dataTier)
409  )
410  TrackAssociatorParameterBlock.TrackAssociatorParameters.EERecHitCollectionLabel = (
411  cms.InputTag("ecalRecHit", "EcalRecHitsEE", dataTier)
412  )
413  TrackAssociatorParameterBlock.TrackAssociatorParameters.HBHERecHitCollectionLabel = cms.InputTag(
414  "hbhereco", "", dataTier
415  )
416  TrackAssociatorParameterBlock.TrackAssociatorParameters.HORecHitCollectionLabel = (
417  cms.InputTag("horeco", "", dataTier)
418  )
419  TrackAssociatorParameterBlock.TrackAssociatorParameters.ME0HitCollectionLabel = (
420  cms.InputTag("me0RecHits", "", dataTier)
421  )
422  TrackAssociatorParameterBlock.TrackAssociatorParameters.ME0SegmentCollectionLabel = (
423  cms.InputTag("me0Segments", "", dataTier)
424  )
425  TrackAssociatorParameterBlock.TrackAssociatorParameters.RPCHitCollectionLabel = (
426  cms.InputTag("rpcRecHits", "", dataTier)
427  )
428 
429  MuonImput = cms.InputTag("selectedMuonsForEmbedding", "", "")
430  for akt_manimod in to_bemanipulate:
431  if "CLEAN" in akt_manimod.steps:
432  oldCollections_in = cms.VInputTag()
433  for instance in akt_manimod.instance:
434  oldCollections_in.append(
435  cms.InputTag(akt_manimod.module_name, instance, dataTier)
436  )
437  setattr(
438  process,
439  akt_manimod.module_name,
440  cms.EDProducer(
441  akt_manimod.cleaner_name,
442  MuonCollection=MuonImput,
443  TrackAssociatorParameters=TrackAssociatorParameterBlock.TrackAssociatorParameters,
444  oldCollection=oldCollections_in,
445  cscDigiCollectionLabel = cms.InputTag("muonCSCDigis","MuonCSCStripDigi"),
446  digiMaxDistanceX = cms.double(25.0),
447  dtDigiCollectionLabel = cms.InputTag("muonDTDigis"),
448  ),
449  )
450  process.ecalPreshowerRecHit.TrackAssociatorParameters.usePreshower = cms.bool(True)
451  process = customisoptions(process)
452  return modify_outputModules(
453  process, [keepSelected(dataTier), keepCleaned(dataTier)], ["MINIAODoutput"]
454  )
455 
456 
457 
458 
459 
460 def keepLHE():
461  ret_vstring = cms.untracked.vstring()
462  ret_vstring.append("keep *_externalLHEProducer_*_LHEembedding")
463  ret_vstring.append("keep *_externalLHEProducer_*_LHEembeddingCLEAN")
464  return ret_vstring
465 
466 
467 def customiseLHE(process, changeProcessname=True, reselect=False):
468  if reselect:
469  dataTier = "RESELECT"
470  else:
471  dataTier = "SELECT"
472  if changeProcessname:
473  process._Process__name = "LHEembedding"
474  process.load("TauAnalysis.MCEmbeddingTools.EmbeddingLHEProducer_cfi")
475  if reselect:
476  process.externalLHEProducer.vertices = cms.InputTag(
477  "offlineSlimmedPrimaryVertices", "", "RESELECT"
478  )
479  process.lheproduction = cms.Path(process.makeexternalLHEProducer)
480  process.schedule.insert(0, process.lheproduction)
481 
482  process = customisoptions(process)
483  return modify_outputModules(
484  process,
485  [keepSelected(dataTier), keepCleaned(dataTier), keepLHE()],
486  ["MINIAODoutput"],
487  )
488 
489 
490 def customiseLHEandCleaning(process, reselect=False):
491  process._Process__name = "LHEembeddingCLEAN"
492  process = customiseCleaning(process, changeProcessname=False, reselect=reselect)
493  process = customiseLHE(process, changeProcessname=False, reselect=reselect)
494  return process
495 
496 
498  return customiseLHEandCleaning(process, reselect=True)
499 
500 
501 
502 
503 
504 def keepSimulated(process, processname="SIMembedding"):
505  ret_vstring = cms.untracked.vstring()
506  for akt_manimod in to_bemanipulate:
507  if "MERGE" in akt_manimod.steps:
508  ret_vstring.append(
509  "keep *_" + akt_manimod.module_name + "_*_{}".format(processname)
510  )
511  ret_vstring.append("keep *_genParticles_*_{}".format(processname))
512  ret_vstring.append("keep *_standAloneMuons_*_{}".format(processname))
513  ret_vstring.append("keep *_glbTrackQual_*_{}".format(processname))
514  ret_vstring.append("keep *_generator_*_{}".format(processname))
515  ret_vstring.append("keep *_addPileupInfo_*_{}".format(processname))
516  ret_vstring.append("keep *_selectedMuonsForEmbedding_*_*")
517  ret_vstring.append("keep *_slimmedAddPileupInfo_*_*")
518  ret_vstring.append("keep *_embeddingHltPixelVertices_*_*")
519  ret_vstring.append("keep *_*_vertexPosition_*")
520  ret_vstring.append("keep recoMuons_muonsFromCosmics_*_*")
521  ret_vstring.append("keep recoTracks_cosmicMuons1Leg_*_*")
522  ret_vstring.append("keep recoMuons_muonsFromCosmics1Leg_*_*")
523  ret_vstring.append("keep *_muonDTDigis_*_*")
524  ret_vstring.append("keep *_muonCSCDigis_*_*")
525  ret_vstring.append("keep TrajectorySeeds_*_*_*")
526  ret_vstring.append("keep recoElectronSeeds_*_*_*")
527  ret_vstring.append("drop recoIsoDepositedmValueMap_muIsoDepositTk_*_*")
528  ret_vstring.append("drop recoIsoDepositedmValueMap_muIsoDepositTkDisplaced_*_*")
529  ret_vstring.append("drop *_ctppsProtons_*_*")
530  ret_vstring.append("drop *_ctppsLocalTrackLiteProducer_*_*")
531  ret_vstring.append("drop *_ctppsDiamondLocalTracks_*_*")
532  ret_vstring.append("drop *_ctppsDiamondRecHits_*_*")
533  ret_vstring.append("drop *_ctppsDiamondRawToDigi_*_*")
534  ret_vstring.append("drop *_ctppsPixelLocalTracks_*_*")
535  ret_vstring.append("drop *_ctppsPixelRecHits_*_*")
536  ret_vstring.append("drop *_ctppsPixelClusters_*_*")
537  ret_vstring.append("drop *_ctppsPixelDigis_*_*")
538  ret_vstring.append("drop *_totemRPLocalTrackFitter_*_*")
539  ret_vstring.append("drop *_totemRPUVPatternFinder_*_*")
540  ret_vstring.append("drop *_totemRPRecHitProducer_*_*")
541  ret_vstring.append("drop *_totemRPClusterProducer_*_*")
542  ret_vstring.append("drop *_totemRPRawToDigi_*_*")
543  ret_vstring.append("drop *_muonSimClassifier_*_*")
544 
545  # for those two steps, the output has to be modified
546  # to keep the information from the cleaning step in the output file
547  if processname == "SIMembeddingpreHLT" or processname == "SIMembeddingHLT":
548  rawreco_commands = set(process.RAWRECOEventContent.outputCommands)
549  rawreco_commands_excl = rawreco_commands - set(
550  process.RAWSIMEventContent.outputCommands
551  )
552  for entry in rawreco_commands_excl:
553  if (
554  processname == "SIMembeddingpreHLT"
555  and "muonReducedTrackExtras" in entry
556  ):
557  continue
558  if not any(
559  x in entry
560  for x in [
561  "TotemTimingLocalTrack",
562  "ForwardProton",
563  "ctppsDiamondLocalTracks",
564  ]
565  ):
566  ret_vstring.append(entry)
567  return ret_vstring
568 
569 def customiseGenerator_preHLT(process, changeProcessname=True, reselect=False):
570  if reselect:
571  dataTier = "RESELECT"
572  else:
573  dataTier = "SELECT"
574  if changeProcessname:
575  process._Process__name = "SIMembeddingpreHLT"
576 
577 
578 
579  process.load("TauAnalysis.MCEmbeddingTools.EmbeddingVertexCorrector_cfi")
580  process.VtxSmeared = process.VtxCorrectedToInput.clone()
581  print(
582  "Correcting Vertex in genEvent to one from input. Replaced 'VtxSmeared' with the Corrector."
583  )
584 
585  # Disable noise simulation
586  process.mix.digitizers.castor.doNoise = cms.bool(False)
587 
588  process.mix.digitizers.ecal.doESNoise = cms.bool(False)
589  process.mix.digitizers.ecal.doENoise = cms.bool(False)
590 
591  process.mix.digitizers.hcal.doNoise = cms.bool(False)
592  process.mix.digitizers.hcal.doThermalNoise = cms.bool(False)
593  process.mix.digitizers.hcal.doHPDNoise = cms.bool(False)
594 
595  process.mix.digitizers.pixel.AddNoisyPixels = cms.bool(False)
596  process.mix.digitizers.pixel.AddNoise = cms.bool(False)
597 
598  process.mix.digitizers.strip.Noise = cms.bool(False)
599 
600  process = customisoptions(process)
601 
602 
603  return modify_outputModules(
604  process,
605  [
606  keepSelected(dataTier),
607  keepCleaned(dataTier),
608  keepSimulated(process, processname="SIMembeddingpreHLT"),
609  ],
610  ["AODSIMoutput"],
611  )
612 
613 
615  return customiseGenerator_preHLT(process, reselect=True)
616 
617 
618 def customiseGenerator_HLT(process, changeProcessname=True, reselect=False):
619  if reselect:
620  dataTier = "RESELECT"
621  else:
622  dataTier = "SELECT"
623  if changeProcessname:
624  process._Process__name = "SIMembeddingHLT"
625 
626 
627  process.load("TauAnalysis.MCEmbeddingTools.EmbeddingBeamSpotOnline_cfi")
628  process.hltOnlineBeamSpot = process.onlineEmbeddingBeamSpotProducer.clone()
629  print(
630  "Setting online beam spot in HLTSchedule to the one from input data. Replaced 'hltOnlineBeamSpot' with the offline beam spot."
631  )
632 
633  # Replace HLT vertexing with vertex taken from LHE step
634  process.load("TauAnalysis.MCEmbeddingTools.EmbeddingHltPixelVerticesProducer_cfi")
635  process.hltPixelVertices = process.embeddingHltPixelVertices.clone()
636  process.offlinePrimaryVertices = process.embeddingHltPixelVertices.clone()
637  process.firstStepPrimaryVerticesUnsorted = process.embeddingHltPixelVertices.clone()
638  process.firstStepPrimaryVerticesPreSplitting = (
639  process.embeddingHltPixelVertices.clone()
640  )
641 
642  process = customisoptions(process)
643 
644 
645  return modify_outputModules(
646  process,
647  [
648  keepSelected(dataTier),
649  keepCleaned(dataTier),
650  keepLHE(),
651  keepSimulated(process, processname="SIMembeddingpreHLT"),
652  keepSimulated(process, processname="SIMembeddingHLT"),
653  ],
654  ["AODSIMoutput"],
655  )
656 
657 
659  return customiseGenerator_HLT(process, reselect=True)
660 
661 
662 def customiseGenerator_postHLT(process, changeProcessname=True, reselect=False):
663  if reselect:
664  dataTier = "RESELECT"
665  else:
666  dataTier = "SELECT"
667  if changeProcessname:
668  process._Process__name = "SIMembedding"
669 
670 
671 
672  # process.load('TauAnalysis.MCEmbeddingTools.EmbeddingVertexCorrector_cfi')
673  # process.VtxSmeared = process.VtxCorrectedToInput.clone()
674  # print "Correcting Vertex in genEvent to one from input. Replaced 'VtxSmeared' with the Corrector."
675  # process.load('TauAnalysis.MCEmbeddingTools.EmbeddingBeamSpotOnline_cfi')
676  # process.hltOnlineBeamSpot = process.onlineEmbeddingBeamSpotProducer.clone()
677  # print "Setting online beam spot in HLTSchedule to the one from input data. Replaced 'hltOnlineBeamSpot' with the offline beam spot."
678 
679  # Remove BeamSpot Production, use the one from selected data instead.
680  process.reconstruction.remove(process.offlineBeamSpot)
681 
682  process = customisoptions(process)
683 
684 
685  return modify_outputModules(
686  process,
687  [
688  keepSelected(dataTier),
689  keepCleaned(dataTier),
690  keepLHE(),
691  keepSimulated(process, processname="SIMembeddingpreHLT"),
692  keepSimulated(process, processname="SIMembeddingHLT"),
693  keepSimulated(process, processname="SIMembedding"),
694  ],
695  ["AODSIMoutput"],
696  )
697 
698 
700  return customiseGenerator_postHLT(process, reselect=True)
701 
702 
703 
704 
705 
706 def keepMerged(dataTier="SELECT"):
707  ret_vstring = cms.untracked.vstring()
708  ret_vstring.append("drop *_*_*_" + dataTier)
709  ret_vstring.append("keep *_prunedGenParticles_*_MERGE")
710  ret_vstring.append("keep *_generator_*_SIMembeddingpreHLT")
711  ret_vstring.append("keep *_generator_*_SIMembeddingHLT")
712  ret_vstring.append("keep *_generator_*_SIMembedding")
713  ret_vstring.append("keep *_selectedMuonsForEmbedding_*_*")
714  ret_vstring.append("keep *_unpackedPatTrigger_*_*")
715  ret_vstring.extend(cms.untracked.vstring(
716  'keep patPackedGenParticles_packedGenParticles_*_*',
717  'keep recoGenParticles_prunedGenParticles_*_*',
718  'keep *_packedPFCandidateToGenAssociation_*_*',
719  'keep *_lostTracksToGenAssociation_*_*',
720  'keep LHEEventProduct_*_*_*',
721  'keep GenFilterInfo_*_*_*',
722  'keep GenLumiInfoHeader_generator_*_*',
723  'keep GenLumiInfoProduct_*_*_*',
724  'keep GenEventInfoProduct_generator_*_*',
725  'keep recoGenParticles_genPUProtons_*_*',
726  'keep *_slimmedGenJetsFlavourInfos_*_*',
727  'keep *_slimmedGenJets__*',
728  'keep *_slimmedGenJetsAK8__*',
729  'keep *_slimmedGenJetsAK8SoftDropSubJets__*',
730  'keep *_genMetTrue_*_*',
731  # RUN
732  'keep LHERunInfoProduct_*_*_*',
733  'keep GenRunInfoProduct_*_*_*',
734  'keep *_genParticles_xyz0_*',
735  'keep *_genParticles_t0_*'))
736  return ret_vstring
737 
738 
739 def customiseKeepPrunedGenParticles(process, reselect=False):
740  if reselect:
741  dataTier = "RESELECT"
742  else:
743  dataTier = "SELECT"
744 
745  process.keep_step = cms.Path()
746 
747  process.load("PhysicsTools.PatAlgos.slimming.genParticles_cff")
748  process.keep_step += process.prunedGenParticlesWithStatusOne
749  process.load("PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi")
750  process.keep_step += process.prunedGenParticles
751  process.load("PhysicsTools.PatAlgos.slimming.packedGenParticles_cfi")
752  process.keep_step += process.packedGenParticles
753  process.load("PhysicsTools.PatAlgos.slimming.slimmedGenJets_cfi")
754  process.keep_step += process.slimmedGenJets
755 
756  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.muonMatch_cfi")
757  process.keep_step += process.muonMatch
758  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.electronMatch_cfi")
759  process.keep_step += process.electronMatch
760  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.photonMatch_cfi")
761  process.keep_step += process.photonMatch
762  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.tauMatch_cfi")
763  process.keep_step += process.tauMatch
764  process.load("PhysicsTools.JetMCAlgos.TauGenJets_cfi")
765  process.keep_step += process.tauGenJets
766  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.jetFlavourId_cff")
767  process.keep_step += process.patJetPartons
768  process.load("PhysicsTools.PatAlgos.mcMatchLayer0.jetMatch_cfi")
769  process.keep_step += process.patJetPartonMatch
770 
771  process.muonMatch.matched = "prunedGenParticles"
772  process.electronMatch.matched = "prunedGenParticles"
773  process.electronMatch.src = cms.InputTag("reducedEgamma", "reducedGedGsfElectrons")
774  process.photonMatch.matched = "prunedGenParticles"
775  process.photonMatch.src = cms.InputTag("reducedEgamma", "reducedGedPhotons")
776  process.tauMatch.matched = "prunedGenParticles"
777  process.tauGenJets.GenParticles = "prunedGenParticles"
778 
781  process.patJetPartons.particles = "prunedGenParticles"
782  process.patJetPartonMatch.matched = "prunedGenParticles"
783  process.patJetPartonMatch.mcStatus = [3, 23]
784  process.patJetGenJetMatch.matched = "slimmedGenJets"
785  process.patJetGenJetMatchAK8.matched = "slimmedGenJetsAK8"
786  process.patMuons.embedGenMatch = False
787  process.patElectrons.embedGenMatch = False
788  process.patPhotons.embedGenMatch = False
789  process.patTaus.embedGenMatch = False
790  process.patTausBoosted.embedGenMatch = False
791  process.patJets.embedGenPartonMatch = False
792  # also jet flavour must be switched
793  process.patJetFlavourAssociation.rParam = 0.4
794 
795  process.schedule.insert(0, process.keep_step)
796  process = customisoptions(process)
797  return modify_outputModules(process, [keepMerged(dataTier)])
798 
799 
800 def customiseMerging(process, changeProcessname=True, reselect=False):
801 
802  print("**** Attention: overriding behaviour of 'removeMCMatching' ****")
803 
804  from PhysicsTools.PatAlgos.slimming.miniAOD_tools import miniAOD_customizeMC
805  def performMCMatching(process, names, postfix, outputModules):
806  miniAOD_customizeMC(process)
807 
809  PhysicsTools.PatAlgos.tools.coreTools.removeMCMatching = performMCMatching
810 
811  if changeProcessname:
812  process._Process__name = "MERGE"
813  if reselect:
814  dataTier = "RESELECT"
815  else:
816  dataTier = "SELECT"
817 
818  process.source.inputCommands = cms.untracked.vstring()
819  process.source.inputCommands.append("keep *_*_*_*")
820  process.load("PhysicsTools.PatAlgos.slimming.unpackedPatTrigger_cfi")
821  process.unpackedPatTrigger.triggerResults = cms.InputTag("TriggerResults::SIMembeddingHLT")
822 
823  # process.source.inputCommands.append("drop *_*_*_SELECT")
824  # process.source.inputCommands.append("drop *_*_*_SIMembedding")
825  # process.source.inputCommands.append("drop *_*_*_LHEembeddingCLEAN")
826  # process.source.inputCommands.extend(keepSimulated())
827  # process.source.inputCommands.extend(keepCleaned())
828 
829  process.load('Configuration.StandardSequences.RawToDigi_cff')
830  process.load("Configuration.StandardSequences.Reconstruction_Data_cff")
831  process.merge_step = cms.Path()
832  # produce local CT PPS reco
833  process.load("RecoPPS.Configuration.recoCTPPS_cff")
834  process.totemRPRawToDigi.rawDataTag = cms.InputTag("rawDataCollector", "", "LHC")
835  process.ctppsDiamondRawToDigi.rawDataTag = cms.InputTag("rawDataCollector", "", "LHC")
836  process.ctppsPixelDigis.inputLabel = cms.InputTag("rawDataCollector", "", "LHC")
837  process.merge_step += process.totemRPRawToDigi
838  process.merge_step += process.ctppsDiamondRawToDigi
839  process.merge_step += process.ctppsPixelDigis
840  process.merge_step += cms.Sequence(process.recoCTPPSTask)
841  # produce local Calo
842  process.load("RecoLocalCalo.Configuration.RecoLocalCalo_cff")
843  process.merge_step += process.calolocalreco
844  #process.merge_step += process.caloglobalreco
845  process.merge_step += process.reducedHcalRecHitsSequence
846 
847  # produce hcal towers
848  process.load("RecoLocalCalo.CaloTowersCreator.calotowermaker_cfi")
849  process.merge_step += process.calotowermaker
850  process.merge_step += process.towerMaker
851 
852  # produce clusters
853  process.load("RecoEcal.Configuration.RecoEcal_cff")
854  process.merge_step += process.ecalClusters
855 
856  # produce PFCluster Collections
857  process.load("RecoParticleFlow.PFClusterProducer.particleFlowCluster_cff")
858  process.merge_step += process.particleFlowCluster
859  process.load(
860  "RecoEcal.EgammaClusterProducers.particleFlowSuperClusteringSequence_cff"
861  )
862  process.merge_step += process.particleFlowSuperClusteringSequence
863 
864  # muonEcalDetIds
865  process.load("RecoMuon.MuonIdentification.muons1stStep_cfi")
866  process.merge_step += process.muonEcalDetIds
867  process.merge_step += process.muonShowerInformation
868 
869  # muon Isolation sequences
870  process.load("RecoMuon.MuonIsolationProducers.muIsolation_cff")
871  process.merge_step += process.muIsolation
872  process.merge_step += process.muIsolationDisplaced
873 
874  # muon ID selection type sequences
875  process.load("RecoMuon.MuonIdentification.muonSelectionTypeValueMapProducer_cff")
876  process.merge_step += process.muonSelectionTypeSequence
877 
878  # displaced muons extras & tracks
879  process.load("RecoMuon.MuonIdentification.displacedMuonReducedTrackExtras_cfi")
880  process.merge_step += process.displacedMuonReducedTrackExtras
881 
882  process.load("RecoMuon.Configuration.MergeDisplacedTrackCollections_cff")
883  process.merge_step += process.displacedTracksSequence
884 
885  # Other things
886  process.merge_step += process.doAlldEdXEstimators
887  process.merge_step += process.vertexreco
888  process.unsortedOfflinePrimaryVertices.beamSpotLabel = cms.InputTag(
889  "offlineBeamSpot", "", dataTier
890  )
891  process.ak4CaloJetsForTrk.srcPVs = cms.InputTag(
892  "firstStepPrimaryVertices", "", dataTier
893  )
894  process.dedxHitInfo.clusterShapeCache = cms.InputTag("")
895 
896  # process.muons.FillDetectorBasedIsolation = cms.bool(False)
897  # process.muons.FillSelectorMaps = cms.bool(False)
898  # process.muons.FillShoweringInfo = cms.bool(False)
899  # process.muons.FillCosmicsIdMap = cms.bool(False)
900 
901  # process.displacedMuons.FillDetectorBasedIsolation = cms.bool(False)
902  # process.displacedMuons.FillSelectorMaps = cms.bool(False)
903  # process.displacedMuons.FillShoweringInfo = cms.bool(False)
904  # process.displacedMuons.FillCosmicsIdMap = cms.bool(False)
905 
906  # seed configuration needed for seedmerger
907  #process.load(
908  # "RecoEgamma.EgammaElectronProducers.ecalDrivenElectronSeedsParameters_cff"
909  #)
910  #process.ecalDrivenElectronSeeds.SeedConfiguration = cms.PSet(
911  # process.ecalDrivenElectronSeedsParameters
912  #)
913 
914  process.merge_step += process.highlevelreco
915  # process.merge_step.remove(process.reducedEcalRecHitsEE)
916  # process.merge_step.remove(process.reducedEcalRecHitsEB)
917 
918  # process.merge_step.remove(process.ak4JetTracksAssociatorExplicit)
919 
920  # process.merge_step.remove(process.cosmicsVeto)
921  # process.merge_step.remove(process.cosmicsVetoTrackCandidates)
922  # process.merge_step.remove(process.ecalDrivenGsfElectronCores)
923  # process.merge_step.remove(process.ecalDrivenGsfElectrons)
924  # process.merge_step.remove(process.gedPhotonsTmp)
925  # process.merge_step.remove(process.particleFlowTmp)
926 
927  # process.merge_step.remove(process.hcalnoise)
928 
929  process.load("CommonTools.ParticleFlow.genForPF2PAT_cff")
930 
931  # process.muonsFromCosmics.ShowerDigiFillerParameters.dtDigiCollectionLabel = cms.InputTag("simMuonDTDigis")
932 
933  process.merge_step += process.genForPF2PATSequence
934 
935  # Replace manipulated modules contained in merg_step with Mergers, and
936  # put remaining ones into a list to be sorted to avoid deadlocks
937  modules_to_be_ordered = {}
938  # prepare reco list to determine indices
939  reconstruction_modules_list = str(process.RawToDigi).split(",")
940  reconstruction_modules_list += str(process.reconstruction).split(",")
941  for akt_manimod in to_bemanipulate:
942  if "MERGE" in akt_manimod.steps:
943  mergCollections_in = cms.VInputTag()
944  for instance in akt_manimod.instance:
945  mergCollections_in.append(
946  cms.InputTag(
947  akt_manimod.merge_prefix + akt_manimod.module_name,
948  instance,
949  "SIMembedding",
950  )
951  )
952  mergCollections_in.append(
953  cms.InputTag(
954  akt_manimod.merge_prefix + akt_manimod.module_name,
955  instance,
956  "LHEembeddingCLEAN",
957  )
958  )
959  setattr(
960  process,
961  akt_manimod.module_name,
962  cms.EDProducer(
963  akt_manimod.merger_name, mergCollections=mergCollections_in
964  ),
965  )
966  if not process.merge_step.contains(getattr(process, akt_manimod.module_name)):
967  modules_to_be_ordered[akt_manimod.module_name] = -1
968  # Determine indices and place them in right order into the list
969  for name,index in modules_to_be_ordered.items():
970  if name in reconstruction_modules_list:
971  modules_to_be_ordered[name] = reconstruction_modules_list.index(name)
972  else:
973  print("ERROR:",name,"not prepared in modules list. Please adapt 'customiseMerging'")
974  sys.exit(1)
975 
976  modules_ordered = sorted(list(modules_to_be_ordered.items()), key=lambda x : -x[1])
977  for m in modules_ordered:
978  process.merge_step.insert(0, getattr(process, m[0]))
979 
980 
981  process.schedule.insert(0, process.merge_step)
982  # process.load('PhysicsTools.PatAlgos.slimming.slimmedGenJets_cfi')
983  process = customisoptions(process)
984  return modify_outputModules(process, [keepMerged(dataTier)])
985 
986 
987 def customiseMerging_Reselect(process, changeProcessname=True):
988  return customiseMerging(process, changeProcessname=changeProcessname, reselect=True)
989 
990 
991 
992 
993 
994 def customiseNanoAOD(process):
995 
996  process.load("PhysicsTools.NanoAOD.nano_cff")
997  process.nanoAOD_step.insert(0, cms.Sequence(process.nanoTableTaskFS))
998 
999 
1000  for outputModule in process.outputModules.values():
1001  outputModule.outputCommands.append("keep edmTriggerResults_*_*_SIMembeddingpreHLT")
1002  outputModule.outputCommands.append("keep edmTriggerResults_*_*_SIMembeddingHLT")
1003  outputModule.outputCommands.append("keep edmTriggerResults_*_*_SIMembedding")
1004  outputModule.outputCommands.append("keep edmTriggerResults_*_*_MERGE")
1005  outputModule.outputCommands.append("keep edmTriggerResults_*_*_NANO")
1006  outputModule.outputCommands.remove("keep edmTriggerResults_*_*_*")
1007 
1008  process.load("PhysicsTools.NanoAOD.l1trig_cff")
1009  process.nanoAOD_step.insert(0, cms.Sequence(process.l1TablesTask))
1010 
1011  process.embeddingTable = cms.EDProducer(
1012  "GlobalVariablesTableProducer",
1013  name=cms.string("TauEmbedding"),
1014  # doc=cms.string("TauEmbedding"),
1015  variables=cms.PSet(
1016  nInitialPairCandidates=ExtVar(
1017  cms.InputTag("selectedMuonsForEmbedding", "nPairCandidates"),
1018  float,
1019  doc="number of muons pairs suitable for selection (for internal studies only)",
1020  ),
1021  SelectionOldMass=ExtVar(
1022  cms.InputTag("selectedMuonsForEmbedding", "oldMass"),
1023  float,
1024  doc="Mass of the Dimuon pair using the old selection algorithm (for internal studies only)",
1025  ),
1026  SelectionNewMass=ExtVar(
1027  cms.InputTag("selectedMuonsForEmbedding", "newMass"),
1028  float,
1029  doc="Mass of the Dimuon pair using the new selection algorithm (for internal studies only)",
1030  ),
1031  isMediumLeadingMuon=ExtVar(
1032  cms.InputTag("selectedMuonsForEmbedding", "isMediumLeadingMuon"),
1033  bool,
1034  doc="leading muon ID (medium)",
1035  ),
1036  isMediumTrailingMuon=ExtVar(
1037  cms.InputTag("selectedMuonsForEmbedding", "isMediumTrailingMuon"),
1038  bool,
1039  doc="trailing muon ID (medium)",
1040  ),
1041  isTightLeadingMuon=ExtVar(
1042  cms.InputTag("selectedMuonsForEmbedding", "isTightLeadingMuon"),
1043  bool,
1044  doc="leading muon ID (tight)",
1045  ),
1046  isTightTrailingMuon=ExtVar(
1047  cms.InputTag("selectedMuonsForEmbedding", "isTightTrailingMuon"),
1048  bool,
1049  doc="trailing muon ID (tight)",
1050  ),
1051  initialMETEt=ExtVar(
1052  cms.InputTag("selectedMuonsForEmbedding", "initialMETEt"),
1053  float,
1054  doc="MET Et of selected event",
1055  ),
1056  initialMETphi=ExtVar(
1057  cms.InputTag("selectedMuonsForEmbedding", "initialMETphi"),
1058  float,
1059  doc="MET phi of selected event",
1060  ),
1061  initialPuppiMETEt=ExtVar(
1062  cms.InputTag("selectedMuonsForEmbedding", "initialPuppiMETEt"),
1063  float,
1064  doc="PuppiMET Et of selected event",
1065  ),
1066  initialPuppiMETphi=ExtVar(
1067  cms.InputTag("selectedMuonsForEmbedding", "initialPuppiMETphi"),
1068  float,
1069  doc="PuppiMET phi of selected event",
1070  ),
1071  ),
1072  )
1073  process.embeddingTableTask = cms.Task(process.embeddingTable)
1074  process.schedule.associate(process.embeddingTableTask)
1075 
1076  return process
1077 
1078 
1079 
1080 
1081 
1082 
1083 
1084 
1085 def customisoptions(process):
1086  if not hasattr(process, "options"):
1087  process.options = cms.untracked.PSet()
1088  process.options.emptyRunLumiMode = cms.untracked.string(
1089  "doNotHandleEmptyRunsAndLumis"
1090  )
1091  if not hasattr(process, "bunchSpacingProducer"):
1092  process.bunchSpacingProducer = cms.EDProducer("BunchSpacingProducer")
1093  process.bunchSpacingProducer.bunchSpacingOverride = cms.uint32(25)
1094  process.bunchSpacingProducer.overrideBunchSpacing = cms.bool(True)
1095  process.options.numberOfThreads = cms.untracked.uint32(1)
1096  process.options.numberOfStreams = cms.untracked.uint32(0)
1097  return process
1098 
1099 
1100 
1101 
1102 
1104  process.load("TauAnalysis.MCEmbeddingTools.DYToMuMuGenFilter_cfi")
1105  process.ZToMuMuFilter = cms.Path(process.dYToMuMuGenFilter)
1106  process.schedule.insert(-1, process.ZToMuMuFilter)
1107  return process
1108 
1109 
1111  process.load("TauAnalysis.MCEmbeddingTools.TTbartoMuMuGenFilter_cfi")
1112  process.MCFilter = cms.Path(process.TTbartoMuMuGenFilter)
1113  return customiseMCFilter(process)
1114 
1115 
1116 def customiseMCFilter(process):
1117  process.schedule.insert(-1, process.MCFilter)
1118  outputModulesList = [key for key, value in process.outputModules.items()]
1119  for outputModule in outputModulesList:
1120  outputModule = getattr(process, outputModule)
1121  outputModule.SelectEvents = cms.untracked.PSet(
1122  SelectEvents=cms.vstring("MCFilter")
1123  )
1124  return process
1125 
1126 
1127 def fix_input_tags(
1128  process, formodules=["generalTracks", "cscSegments", "dt4DSegments", "rpcRecHits"]
1129 ):
1130  def change_tags_process(test_input):
1131  if isinstance(test_input, cms.InputTag):
1132  if test_input.getModuleLabel() in formodules:
1133  test_input.setProcessName(process._Process__name)
1134 
1135  def search_for_tags(pset):
1136  if isinstance(pset, dict):
1137  for key in pset:
1138  if isinstance(pset[key], cms.VInputTag):
1139  for akt_inputTag in pset[key]:
1140  change_tags_process(akt_inputTag)
1141  elif isinstance(pset[key], cms.PSet):
1142  search_for_tags(pset[key].__dict__)
1143  elif isinstance(pset[key], cms.VPSet):
1144  for akt_pset in pset[key]:
1145  search_for_tags(akt_pset.__dict__)
1146  else:
1147  change_tags_process(pset[key])
1148  else:
1149  print("must be python dict not a {}".format(type(pset)))
1150 
1151  for module in process.producers_():
1152  search_for_tags(getattr(process, module).__dict__)
1153  for module in process.filters_():
1154  search_for_tags(getattr(process, module).__dict__)
1155  for module in process.analyzers_():
1156  search_for_tags(getattr(process, module).__dict__)
1157 
1158  return process
def customiseSelecting(process, reselect=False)
Definition: customisers.py:299
def keepCleaned(dataTier)
Customizer for cleaning ###########################.
Definition: customisers.py:341
def keepSimulated(process, processname="SIMembedding")
Customizer for simulaton ###########################.
Definition: customisers.py:504
bool any(const std::vector< T > &v, const T &what)
Definition: ECalSD.cc:37
def customiseLHEandCleaning_Reselect(process)
Definition: customisers.py:497
def ExtVar(tag, valtype, doc=None, precision=-1)
Definition: common_cff.py:28
def customiseSelecting_Reselect(process)
Definition: customisers.py:334
Customizer for skimming ########################### There are four different parts.
Definition: customisers.py:23
def customiseGenerator_postHLT_Reselect(process)
Definition: customisers.py:699
def keepLHE()
Customizer for LHE ###########################.
Definition: customisers.py:460
def customiseKeepPrunedGenParticles(process, reselect=False)
Definition: customisers.py:739
def keepMerged(dataTier="SELECT")
Customizer for merging ###########################.
Definition: customisers.py:706
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Definition: Utilities.cc:47
def customiseFilterZToMuMu(process)
MC specific Customizer ###########################.
def customiseMerging(process, changeProcessname=True, reselect=False)
Definition: customisers.py:800
def fix_input_tags(process, formodules=["generalTracks", cscSegments, dt4DSegments, rpcRecHits)
def customiseNanoAOD(process)
Customize NanoAOD ################################.
Definition: customisers.py:994
def customiseGenerator_preHLT(process, changeProcessname=True, reselect=False)
Definition: customisers.py:569
def customiseGenerator_postHLT(process, changeProcessname=True, reselect=False)
Definition: customisers.py:662
def customiseMerging_Reselect(process, changeProcessname=True)
Definition: customisers.py:987
def miniAOD_customizeMC(process)
def customiseLHEandCleaning(process, reselect=False)
Definition: customisers.py:490
def customiseMCFilter(process)
def __init__(self, module_name, manipulator_name, steps=["SELECT", CLEAN, SIM, MERGE, instance=[""], merge_prefix="")
Definition: customisers.py:31
def customisoptions(process)
cross Customizers ###########################
def customiseGenerator_preHLT_Reselect(process)
Definition: customisers.py:614
#define str(s)
def modify_outputModules(process, keep_drop_list=[], module_veto_list=[])
Definition: customisers.py:267
def customiseLHE(process, changeProcessname=True, reselect=False)
Definition: customisers.py:467
def keepSelected(dataTier)
Customizer for Selecting ###########################.
Definition: customisers.py:281
def customiseGenerator_HLT_Reselect(process)
Definition: customisers.py:658
def customiseGenerator_HLT(process, changeProcessname=True, reselect=False)
Definition: customisers.py:618
def customiseCleaning(process, changeProcessname=True, reselect=False)
Definition: customisers.py:388
def customiseFilterTTbartoMuMu(process)