1 import FWCore.ParameterSet.Config
as cms
4 leadTrackFinding = cms.PSet(
5 Producer = cms.InputTag(
'pfRecoTauDiscriminationByLeadingTrackFinding'),
10 noPrediscriminants = cms.PSet(
11 BooleanOperator = cms.string(
"and"),
15 requireLeadTrack = cms.PSet(
16 BooleanOperator = cms.string(
"and"),
17 leadTrack = leadTrackFinding,
21 requireLeadTrackCalo = cms.PSet(
22 BooleanOperator = cms.string(
"and"),
24 Producer = cms.InputTag(
'caloRecoTauDiscriminationByLeadingTrackFinding'),
31 requireLeadPion = cms.PSet(
32 BooleanOperator = cms.string(
"and"),
33 leadPion = leadTrackFinding,
37 ''' Generator to return all sub-PSets in a PSet '''
38 for name, value
in pSet.parameters_().iteritems():
39 if isinstance(value, cms.PSet):
40 yield getattr(pSet, name)
44 recoTauTypeMapperRegex = re.compile(
"(\w*)Producer")
46 return recoTauTypeMapperRegex.match(tauProducer).
group(1)
49 producerIsTauTypeMapper =
lambda tauProducer: tauProducer
52 oldTauTypeMapper=recoTauTypeMapper, newTauTypeMapper=recoTauTypeMapper,
53 preservePFTauProducer =
False):
54 ''' Change a TauDiscriminator to use a different tau/prediscriminant sources
56 Tau discriminators use the following convention:
57 [tauType]DiscriminationByXXX
59 i.e. fixedConePFTauDiscriminationByIsolation,
60 allLayer1TausDiscriminationByIsolation, etc
62 However, the mapping of tauType to tau producer name is not constant. In
63 RECO, the form is [tauType]Producer. In PAT, the producer is just named
64 [tauType]. To manage this oldTauTypeMapper and newTauTypeMapper are
65 functions with signature f(str) that translate a TauProducer name (like
66 shrinkingConePFTauProducer) to its type (shrinkingConePFTau). Two types of
69 shrinkingConePFTauProducer->shrinkingConePFTau
70 * producerIsTauTypeMapper
71 allLayer1Taus->allLayer1Taus
75 oldTauProducer = discriminator.PFTauProducer
76 if isinstance(newTauProducer, str):
77 newTauProducer = cms.InputTag(newTauProducer)
81 if not preservePFTauProducer:
82 discriminator.PFTauProducer = newTauProducer
84 oldTauType = oldTauTypeMapper(oldTauProducer.value())
85 newTauType = newTauTypeMapper(newTauProducer.value())
87 replacementRegex = re.compile(oldTauType)
91 oldProducer = prediscriminant.Producer.value()
94 prediscriminant.Producer = cms.InputTag(replacementRegex.sub(newTauType,
98 def fixer(discriminator):
99 if hasattr(discriminator,
"Prediscriminants"):
101 sequence.visit(fixer)
104 ''' Same as adaptTauDiscriminator, kept for backwards compatibility'''