Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-03 00:12:45

0001 import FWCore.ParameterSet.Config as cms
0002 from Validation.RecoTau.RecoTauValidation_cfi import *
0003 import copy
0004 
0005 import PhysicsTools.PatAlgos.tools.helpers as helpers
0006 
0007 kinematicSelectedPFJets = cms.EDFilter(
0008     "TauValPFJetSelector",
0009     src = cms.InputTag('ak4PFJets'),
0010     cut = cms.string("pt > 15 & abs(eta) < 2.5"),
0011     filter = cms.bool(False)
0012     )
0013 
0014 PFJetsId = cms.EDFilter(
0015     "TauValPFJetSelector",
0016     src = cms.InputTag('kinematicSelectedPFJets'),
0017     cut = cms.string("chargedHadronEnergyFraction > 0.0 & neutralHadronEnergyFraction < 0.99 & neutralHadronEnergyFraction < 0.99 & chargedEmEnergyFraction < 0.99 & chargedEmEnergyFraction < 0.99 & neutralEmEnergyFraction < 0.99 & chargedMultiplicity > 0 & nConstituents > 1"),
0018     filter = cms.bool(False)
0019     )
0020 
0021 CleanedPFJets = cms.EDProducer("TauValJetViewCleaner",
0022     srcObject            = cms.InputTag( "kinematicSelectedPFJets" ),
0023     srcObjectsToRemove   = cms.VInputTag( cms.InputTag("muons"), cms.InputTag("gedGsfElectrons") ),
0024     deltaRMin            = cms.double(0.15)
0025 )
0026 
0027 procAttributes = dir(proc) #Takes a snapshot of what there in the process
0028 helpers.cloneProcessingSnippet( proc, proc.TauValNumeratorAndDenominator, 'RealData') #clones the sequence inside the process with RealData postfix
0029 helpers.cloneProcessingSnippet( proc, proc.TauEfficiencies, 'RealData') #clones the sequence inside the process with RealData postfix
0030 helpers.massSearchReplaceAnyInputTag(proc.TauValNumeratorAndDenominatorRealData, 'kinematicSelectedTauValDenominator', 'CleanedPFJets') #sets the correct input tag
0031 
0032 #adds to TauValNumeratorAndDenominator modules in the sequence RealData to the extention name
0033 zttLabeler = lambda module : SetValidationExtention(module, 'RealData')
0034 zttModifier = ApplyFunctionToSequence(zttLabeler)
0035 proc.TauValNumeratorAndDenominatorRealData.visit(zttModifier)
0036 
0037 binning = cms.PSet(
0038     pt = cms.PSet( nbins = cms.int32(25), min = cms.double(0.), max = cms.double(250.) ), #hinfo(75, 0., 150.)
0039     eta = cms.PSet( nbins = cms.int32(4), min = cms.double(-3.), max = cms.double(3.) ), #hinfo(60, -3.0, 3.0);
0040     phi = cms.PSet( nbins = cms.int32(4), min = cms.double(-180.), max = cms.double(180.) ), #hinfo(36, -180., 180.);
0041     pileup = cms.PSet( nbins = cms.int32(18), min = cms.double(0.), max = cms.double(72.) ),#hinfo(25, 0., 25.0);
0042     )
0043 zttModifier = ApplyFunctionToSequence(lambda m: setBinning(m,binning))
0044 proc.TauValNumeratorAndDenominatorRealData.visit(zttModifier)
0045 #-----------------------------------------
0046 
0047 #Set discriminators
0048 discs_to_retain = ['ByDecayModeFinding', 'CombinedIsolationDBSumPtCorr3Hits', 'IsolationMVArun2v1DBoldDMwLT', 'IsolationMVArun2v1DBnewDMwLT']
0049 proc.RunHPSValidationRealData.discriminators = cms.VPSet([p for p in proc.RunHPSValidationRealData.discriminators if any(disc in p.discriminator.value() for disc in discs_to_retain) ])
0050 
0051 #Sets the correct naming to efficiency histograms
0052 proc.efficienciesRealData.plots = Utils.SetPlotSequence(proc.TauValNumeratorAndDenominatorRealData)
0053 proc.efficienciesRealDataSummary = cms.EDProducer("TauDQMHistEffProducer",
0054     plots = cms.PSet(
0055         Summary = cms.PSet(
0056             denominator = cms.string('RecoTauV/standardValidation/hpsPFTauProducerRealData_Summary/#PAR#PlotDen'),
0057             efficiency = cms.string('RecoTauV/standardValidation/hpsPFTauProducerRealData_Summary/#PAR#Plot'),
0058             numerator = cms.string('RecoTauV/standardValidation/hpsPFTauProducerRealData_Summary/#PAR#PlotNum'),
0059             parameter = cms.vstring('summary'),
0060             stepByStep = cms.bool(True)
0061         ),
0062     )
0063 )
0064 
0065 #checks what's new in the process (the cloned sequences and modules in them)
0066 newProcAttributes = [x for x in dir(proc) if (x not in procAttributes) and (x.find('RealData') != -1)]
0067 
0068 #spawns a local variable with the same name as the proc attribute, needed for future process.load
0069 for newAttr in newProcAttributes:
0070     locals()[newAttr] = getattr(proc,newAttr)
0071 
0072 
0073 produceDenominatorRealData = cms.Sequence(
0074       cms.ignore(kinematicSelectedPFJets) *
0075       cms.ignore(PFJetsId) *
0076       CleanedPFJets
0077       )
0078 
0079 produceDenominator = cms.Sequence(produceDenominatorRealData)
0080 
0081 runTauValidationBatchMode = cms.Sequence(
0082       produceDenominatorRealData
0083       +TauValNumeratorAndDenominatorRealData
0084       )
0085 
0086 runTauValidation = cms.Sequence(
0087       runTauValidationBatchMode
0088       +TauEfficienciesRealData
0089       )