CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFRecoTauDiscriminationForChargedHiggs_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 import copy
3 
5 hplusTrackQualityCuts = PFTauQualityCuts.clone()
6 hplusTrackQualityCuts.maxTrackChi2 = cms.double(10.)
7 hplusTrackQualityCuts.minTrackHits = cms.uint32(8)
8 
21 
22 def addDiscriminator(process, tau, name, module):
23  producerPostfix = ""
24  if tau != "hpsTancTaus":
25  producerPostfix = "Producer"
26  module.PFTauProducer = cms.InputTag(tau+producerPostfix)
27  process.__setattr__(tau+name, module)
28  return module
29 
30 def addDiscriminatorSequence(process, tau):
31  leadingTrackFinding = tau+"DiscriminationByLeadingTrackFinding"
32  if tau == "hpsPFTau":
33  leadingTrackFinding = tau+"DiscriminationByDecayModeFinding"
34 
35  lst = []
36 
37  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsByLeadingTrackPtCut",
38  pfRecoTauDiscriminationByLeadingTrackPtCut.clone(
39  MinPtLeadingObject = cms.double(20.0),
40  qualityCuts = hplusTrackQualityCuts
41  )))
42 
43  lst.append(addDiscriminator(process, tau, "DiscriminationByCharge",
44  pfRecoTauDiscriminationByCharge.clone()))
45 
46  # index -1 points to the last element in the list
47  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsByECALIsolation",
48  pfRecoTauDiscriminationByECALIsolation.clone()))
49  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
50 
51  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsAgainstElectron",
52  pfRecoTauDiscriminationAgainstElectron.clone()))
53  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
54 
55  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsAgainstMuon",
56  pfRecoTauDiscriminationAgainstMuon.clone()))
57  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
58 
59  lst.append(addDiscriminator(process, tau, "DiscriminationByTauPolarization",
60  pfRecoTauDiscriminationByTauPolarization.clone()))
61  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
62 
63  lst.append(addDiscriminator(process, tau, "DiscriminationByDeltaE",
64  pfRecoTauDiscriminationByDeltaE.clone()))
65  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
66 
67  lst.append(addDiscriminator(process, tau, "DiscriminationByInvMass",
68  pfRecoTauDiscriminationByInvMass.clone()))
69  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
70 
71  lst.append(addDiscriminator(process, tau, "DiscriminationByFlightPathSignificance",
72  pfRecoTauDiscriminationByFlightPathSignificance.clone()))
73  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
74 
75  lst.append(addDiscriminator(process, tau, "DiscriminationBy1Prong",
76  pfRecoTauDiscriminationByNProngs.clone(
77  nProngs = cms.uint32(1)
78  )))
79  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
80 
81  lst.append(addDiscriminator(process, tau, "DiscriminationBy3Prongs",
82  pfRecoTauDiscriminationByNProngs.clone(
83  nProngs = cms.uint32(3)
84  )))
85  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
86 
87  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsBy3ProngCombined",
88  pfRecoTauDiscriminationByNProngs.clone(
89  nProngs = cms.uint32(3),
90  Prediscriminants = cms.PSet(
91  BooleanOperator = cms.string("and"),
92  leadTrack = cms.PSet(
93  Producer = cms.InputTag(leadingTrackFinding),
94  cut = cms.double(0.5)
95  ),
96  deltaE = cms.PSet(
97  Producer = cms.InputTag(tau+'DiscriminationByDeltaE'),
98  cut = cms.double(0.5)
99  ),
100  invMass = cms.PSet(
101  Producer = cms.InputTag(tau+'DiscriminationByInvMass'),
102  cut = cms.double(0.5)
103  ),
104  flightPathSig = cms.PSet(
105  Producer = cms.InputTag(tau+'DiscriminationByFlightPathSignificance'),
106  cut = cms.double(0.5)
107  )
108  )
109  )))
110  lst[-1].Prediscriminants.leadTrack.Producer = cms.InputTag(leadingTrackFinding)
111 
112  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggsBy1or3Prongs",
113  pfRecoTauDiscriminationByLeadingTrackFinding.clone(
114  Prediscriminants = cms.PSet(
115  BooleanOperator = cms.string("or"),
116  oneProng = cms.PSet(
117  Producer = cms.InputTag(tau+'DiscriminationBy1Prong'),
118  cut = cms.double(0.5)
119  ),
120  threeProng = cms.PSet(
121  Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsBy3ProngCombined'),
122  cut = cms.double(0.5)
123  )
124  )
125  )))
126  lst.append(addDiscriminator(process, tau, "DiscriminationForChargedHiggs",
127  pfRecoTauDiscriminationByTrackIsolation.clone(
128  Prediscriminants = cms.PSet(
129  BooleanOperator = cms.string("and"),
130  leadingTrack = cms.PSet(
131  Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsByLeadingTrackPtCut'),
132  cut = cms.double(0.5)
133  ),
134  charge = cms.PSet(
135  Producer = cms.InputTag(tau+'DiscriminationByCharge'),
136  cut = cms.double(0.5)
137  ),
138  ecalIsolation = cms.PSet(
139  Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsByECALIsolation'),
140  cut = cms.double(0.5)
141  ),
142  electronVeto = cms.PSet(
143  Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsAgainstElectron'),
144  cut = cms.double(0.5)
145  ),
146  polarization = cms.PSet(
147  Producer = cms.InputTag(tau+'DiscriminationByTauPolarization'),
148  cut = cms.double(0.5)
149  ),
150  prongs = cms.PSet(
151  Producer = cms.InputTag(tau+'DiscriminationForChargedHiggsBy1or3Prongs'),
152  cut = cms.double(0.5)
153  )
154  )
155  )))
156 
157  sequence = cms.Sequence()
158  for m in lst:
159  sequence *= m
160 
161  process.__setattr__(tau+"HplusDiscriminationSequence", sequence)
162  return sequence
163 
164 def addPFTauDiscriminationSequenceForChargedHiggs(process, tauAlgos=["shrinkingConePFTau"]):
165  process.PFTauDiscriminationSequenceForChargedHiggs = cms.Sequence()
166  for algo in tauAlgos:
167  process.PFTauDiscriminationSequenceForChargedHiggs *= addDiscriminatorSequence(process, algo)
168 
169  return process.PFTauDiscriminationSequenceForChargedHiggs