Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:18

0001 import FWCore.ParameterSet.Config as cms
0002 from Validation.RecoTau.RecoTauValidation_cfi import *
0003 import copy
0004 
0005 from PhysicsTools.HepMCCandAlgos.genParticles_cfi import *
0006 from RecoJets.Configuration.RecoGenJets_cff import *
0007 from RecoJets.Configuration.GenJetParticles_cff import *
0008 
0009 from SimGeneral.HepPDTESSource.pythiapdt_cfi import *
0010 import PhysicsTools.PatAlgos.tools.helpers as helpers
0011 
0012 
0013 selectMuons = cms.EDProducer(
0014     "GenParticlePruner",
0015     src = cms.InputTag("prunedGenParticles"),
0016     select = cms.vstring(
0017     "drop  *  ", # this is the default
0018     "keep++ pdgId = 13",
0019     "keep++ pdgId = -13",
0020     )
0021 )
0022 
0023 selectStableMuons = genParticlesForJets.clone(src = "selectMuons")
0024 
0025 kinematicSelectedTauValDenominatorZMM = cms.EDFilter(
0026    "CandPtrSelector",
0027    src = cms.InputTag('selectStableMuons'),
0028    cut = kinematicSelectedTauValDenominatorCut,#cms.string('pt > 5. && abs(eta) < 2.5'), #Defined: Validation.RecoTau.RecoTauValidation_cfi 
0029    filter = cms.bool(False)
0030 )
0031 
0032 procAttributes = dir(proc) #Takes a snapshot of what there in the process
0033 helpers.cloneProcessingSnippet( proc, proc.TauValNumeratorAndDenominator, 'ZMM') #clones the sequence inside the process with ZMM postfix
0034 helpers.cloneProcessingSnippet( proc, proc.TauEfficiencies, 'ZMM') #clones the sequence inside the process with ZMM postfix
0035 helpers.massSearchReplaceAnyInputTag(proc.TauValNumeratorAndDenominatorZMM, 'kinematicSelectedTauValDenominator', 'kinematicSelectedTauValDenominatorZMM') #sets the correct input tag
0036 
0037 #adds to TauValNumeratorAndDenominator modules in the sequence ZMM to the extention name
0038 zttLabeler = lambda module : SetValidationExtention(module, 'ZMM')
0039 zttModifier = ApplyFunctionToSequence(zttLabeler)
0040 proc.TauValNumeratorAndDenominatorZMM.visit(zttModifier)
0041 
0042 #Set discriminators
0043 discs_to_retain = ['ByDecayModeFinding', 'MuonRejection']
0044 proc.RunHPSValidationZMM.discriminators = cms.VPSet([p for p in proc.RunHPSValidationZMM.discriminators if any(disc in p.discriminator.value() for disc in discs_to_retain) ])
0045 
0046 #Sets the correct naming to efficiency histograms
0047 proc.efficienciesZMM.plots = Utils.SetPlotSequence(proc.TauValNumeratorAndDenominatorZMM)
0048 proc.efficienciesZMMSummary = cms.EDProducer("TauDQMHistEffProducer",
0049     plots = cms.PSet(
0050         Summary = cms.PSet(
0051             denominator = cms.string('RecoTauV/standardValidation/hpsPFTauProducerZMM_Summary/#PAR#PlotDen'),
0052             efficiency = cms.string('RecoTauV/standardValidation/hpsPFTauProducerZMM_Summary/#PAR#Plot'),
0053             numerator = cms.string('RecoTauV/standardValidation/hpsPFTauProducerZMM_Summary/#PAR#PlotNum'),
0054             parameter = cms.vstring('summary'),
0055             stepByStep = cms.bool(True)
0056         ),
0057     )
0058 )
0059 
0060 #checks what's new in the process (the cloned sequences and modules in them)
0061 newProcAttributes = [x for x in dir(proc) if (x not in procAttributes) and (x.find('ZMM') != -1)]
0062 
0063 #spawns a local variable with the same name as the proc attribute, needed for future process.load
0064 for newAttr in newProcAttributes:
0065     locals()[newAttr] = getattr(proc,newAttr)
0066 
0067 produceDenominatorZMM = cms.Sequence(
0068       selectMuons
0069       +cms.ignore(selectStableMuons)
0070       +cms.ignore(kinematicSelectedTauValDenominatorZMM)
0071       )
0072 
0073 produceDenominator = cms.Sequence(produceDenominatorZMM)
0074 
0075 runTauValidationBatchMode = cms.Sequence(
0076       produceDenominatorZMM
0077       +TauValNumeratorAndDenominatorZMM
0078       )
0079 
0080 runTauValidation = cms.Sequence(
0081       runTauValidationBatchMode
0082       +TauEfficienciesZMM
0083       )