1 import FWCore.ParameterSet.Config
as cms
11 elif objtype ==
"refittedStandAloneMuons":
12 objtypeLatex=
"refittedStandAlone #mu" 13 elif objtype ==
"Ele":
15 elif objtype ==
"Photon":
17 elif objtype ==
"PFTau":
21 numer_description =
"# gen %s passed the %s" % (objtypeLatex,triggerpath)
22 denom_description =
"# gen %s " % (objtypeLatex)
24 if plot_type ==
"TurnOn1":
26 xAxis =
"p_{T} of Leading Generated %s (GeV/c)" % (objtype)
27 input_type =
"gen%sMaxPt1" % (objtype)
28 if plot_type ==
"TurnOn2":
29 title =
"Next-to-Leading pT Turn-On" 30 xAxis =
"p_{T} of Next-to-Leading Generated %s (GeV/c)" % (objtype)
31 input_type =
"gen%sMaxPt2" % (objtype)
32 if plot_type ==
"TurnOn3":
33 title =
"Next-to-next-to-Leading pT Turn-On" 34 xAxis =
"p_{T} of Next-to-next-to-Leading Generated %s (GeV/c)" % (objtype)
35 input_type =
"gen%sMaxPt3" % (objtype)
36 if plot_type ==
"TurnOn4":
37 title =
"SumEt Turn-On" 38 xAxis =
"SumEt of Leading Generated %s (GeV/c)" % (objtype)
39 input_type =
"gen%sSumEt" % (objtype)
40 if plot_type ==
"EffEta":
41 title =
"#eta Efficiency" 42 xAxis =
"#eta of Generated %s " % (objtype)
43 input_type =
"gen%sEta" % (objtype)
44 if plot_type ==
"EffPhi":
45 title =
"#phi Efficiency" 46 xAxis =
"#phi of Generated %s " % (objtype)
47 input_type =
"gen%sPhi" % (objtype)
48 if plot_type ==
"EffDxy":
49 title =
"Dxy Efficiency" 50 xAxis =
"Dxy of Generated %s " % (objtype)
51 input_type =
"gen%sDxy" % (objtype)
53 yAxis =
"%s / %s" % (numer_description, denom_description)
54 all_titles =
"%s for trigger %s; %s; %s" % (title, triggerpath,
56 return "Eff_%s_%s '%s' %s_%s %s" % (input_type,triggerpath,
57 all_titles,input_type,triggerpath,input_type)
63 reco_strings.append(entry
64 .
replace(
"Generated",
"Reconstructed")
67 strings.extend(reco_strings)
70 plot_types = [
"TurnOn1",
"TurnOn2",
"TurnOn3",
"TurnOn4",
"EffEta",
"EffPhi",
"EffDxy"]
73 obj_types = [
"Mu",
"refittedStandAloneMuons",
"Track",
"Ele",
"Photon",
"PFTau",
"PFJet",
"MET",
"PFMET",
"PFMHT",
"GenMET",
"CaloJet" 74 ,
"CaloMET",
"CaloMHT",
"l1MET"]
77 efficiency_strings = []
82 for an
in _config.analysis:
83 s = _config.__getattribute__(an)
84 vstr = s.__getattribute__(
"hltPathsToCheck")
85 map(
lambda x: triggers.add(x.replace(
"_v",
"")),vstr)
86 triggers =
list(triggers)
90 for type
in plot_types:
100 hltExoticaPostLowPtTrimuon = hltExoticaPostProcessor.clone()
101 hltExoticaPostLowPtTrimuon.subDirs = [
'HLT/Exotica/LowPtTrimuon']
102 hltExoticaPostLowPtTrimuon.efficiencyProfile = efficiency_strings
104 hltExoticaPostHighPtDimuon = hltExoticaPostProcessor.clone()
105 hltExoticaPostHighPtDimuon.subDirs = [
'HLT/Exotica/HighPtDimuon']
106 hltExoticaPostHighPtDimuon.efficiencyProfile = efficiency_strings
108 hltExoticaPostHighPtDielectron = hltExoticaPostProcessor.clone()
109 hltExoticaPostHighPtDielectron.subDirs = [
'HLT/Exotica/HighPtDielectron']
110 hltExoticaPostHighPtDielectron.efficiencyProfile = efficiency_strings
112 hltExoticaPostHighPtElectron = hltExoticaPostProcessor.clone()
113 hltExoticaPostHighPtElectron.subDirs = [
'HLT/Exotica/HighPtElectron']
114 hltExoticaPostHighPtElectron.efficiencyProfile = efficiency_strings
116 hltExoticaPostLowPtElectron = hltExoticaPostProcessor.clone()
117 hltExoticaPostLowPtElectron.subDirs = [
'HLT/Exotica/LowPtElectron']
118 hltExoticaPostLowPtElectron.efficiencyProfile = efficiency_strings
120 hltExoticaPostLowPtDimuon = hltExoticaPostProcessor.clone()
121 hltExoticaPostLowPtDimuon.subDirs = [
'HLT/Exotica/LowPtDimuon']
122 hltExoticaPostLowPtDimuon.efficiencyProfile = efficiency_strings
124 hltExoticaPostLowPtDielectron = hltExoticaPostProcessor.clone()
125 hltExoticaPostLowPtDielectron.subDirs = [
'HLT/Exotica/LowPtDielectron']
126 hltExoticaPostLowPtDielectron.efficiencyProfile = efficiency_strings
128 hltExoticaPostHighPtPhoton = hltExoticaPostProcessor.clone()
129 hltExoticaPostHighPtPhoton.subDirs = [
'HLT/Exotica/HighPtPhoton']
130 hltExoticaPostHighPtPhoton.efficiencyProfile = efficiency_strings
132 hltExoticaPostDiPhoton = hltExoticaPostProcessor.clone()
133 hltExoticaPostDiPhoton.subDirs = [
'HLT/Exotica/DiPhoton']
134 hltExoticaPostDiPhoton.efficiencyProfile = efficiency_strings
136 hltExoticaPostSingleMuon = hltExoticaPostProcessor.clone()
137 hltExoticaPostSingleMuon.subDirs = [
'HLT/Exotica/SingleMuon']
138 hltExoticaPostSingleMuon.efficiencyProfile = efficiency_strings
140 hltExoticaPostPFHT = hltExoticaPostProcessor.clone()
141 hltExoticaPostPFHT.subDirs = [
'HLT/Exotica/PFHT']
142 hltExoticaPostPFHT.efficiencyProfile = efficiency_strings
144 hltExoticaPostCaloHT = hltExoticaPostProcessor.clone()
145 hltExoticaPostCaloHT.subDirs = [
'HLT/Exotica/CaloHT']
146 hltExoticaPostCaloHT.efficiencyProfile = efficiency_strings
148 hltExoticaPostJetNoBptx = hltExoticaPostProcessor.clone()
149 hltExoticaPostJetNoBptx.subDirs = [
'HLT/Exotica/JetNoBptx']
150 hltExoticaPostJetNoBptx.efficiencyProfile = efficiency_strings
152 hltExoticaPostMuonNoBptx = hltExoticaPostProcessor.clone()
153 hltExoticaPostMuonNoBptx.subDirs = [
'HLT/Exotica/MuonNoBptx']
154 hltExoticaPostMuonNoBptx.efficiencyProfile = efficiency_strings
156 hltExoticaPostDisplacedMuEG = hltExoticaPostProcessor.clone()
157 hltExoticaPostDisplacedMuEG.subDirs = [
'HLT/Exotica/DisplacedMuEG']
158 hltExoticaPostDisplacedMuEG.efficiencyProfile = efficiency_strings
160 hltExoticaPostDisplacedDimuon = hltExoticaPostProcessor.clone()
161 hltExoticaPostDisplacedDimuon.subDirs = [
'HLT/Exotica/DisplacedDimuon']
162 hltExoticaPostDisplacedDimuon.efficiencyProfile = efficiency_strings
164 hltExoticaPostMonojet = hltExoticaPostProcessor.clone()
165 hltExoticaPostMonojet.subDirs = [
'HLT/Exotica/Monojet']
166 hltExoticaPostMonojet.efficiencyProfile = efficiency_strings
168 hltExoticaPostMonojetBackup = hltExoticaPostProcessor.clone()
169 hltExoticaPostMonojetBackup.subDirs = [
'HLT/Exotica/MonojetBackup']
170 hltExoticaPostMonojetBackup.efficiencyProfile = efficiency_strings
172 hltExoticaPostPureMET = hltExoticaPostProcessor.clone()
173 hltExoticaPostPureMET.subDirs = [
'HLT/Exotica/PureMET']
174 hltExoticaPostPureMET.efficiencyProfile = efficiency_strings
176 hltExoticaPostMETplusTrack = hltExoticaPostProcessor.clone()
177 hltExoticaPostMETplusTrack.subDirs = [
'HLT/Exotica/METplusTrack']
178 hltExoticaPostMETplusTrack.efficiencyProfile = efficiency_strings
180 hltExoticaEleMu = hltExoticaPostProcessor.clone()
181 hltExoticaEleMu.subDirs = [
'HLT/Exotica/EleMu']
182 hltExoticaEleMu.efficiencyProfile = efficiency_strings
184 hltExoticaPhotonMET = hltExoticaPostProcessor.clone()
185 hltExoticaPhotonMET.subDirs = [
'HLT/Exotica/PhotonMET']
186 hltExoticaPhotonMET.efficiencyProfile = efficiency_strings
188 hltExoticaHTDisplacedJets = hltExoticaPostProcessor.clone()
189 hltExoticaHTDisplacedJets.subDirs = [
'HLT/Exotica/HTDisplacedJets']
190 hltExoticaHTDisplacedJets.efficiencyProfile = efficiency_strings
192 hltExoticaDSTJets = hltExoticaPostProcessor.clone()
193 hltExoticaDSTJets.subDirs = [
'HLT/Exotica/DSTJets']
194 hltExoticaDSTJets.efficiencyProfile = efficiency_strings
196 hltExoticaDSTMuons = hltExoticaPostProcessor.clone()
197 hltExoticaDSTMuons.subDirs = [
'HLT/Exotica/DSTMuons']
198 hltExoticaDSTMuons.efficiencyProfile = efficiency_strings
200 hltExoticaTracklessJets = hltExoticaPostProcessor.clone()
201 hltExoticaTracklessJets.subDirs = [
'HLT/Exotica/TracklessJets']
202 hltExoticaTracklessJets.efficiencyProfile = efficiency_strings
204 hltExoticaPostProcessors = cms.Sequence(
206 hltExoticaPostLowPtTrimuon +
208 hltExoticaPostHighPtDimuon +
209 hltExoticaPostHighPtDielectron +
210 hltExoticaPostLowPtDimuon +
211 hltExoticaPostLowPtDielectron +
213 hltExoticaPostHighPtElectron +
214 hltExoticaPostLowPtElectron +
216 hltExoticaPostHighPtPhoton +
217 hltExoticaPostDiPhoton +
220 hltExoticaPostCaloHT +
222 hltExoticaPostJetNoBptx +
223 hltExoticaPostMuonNoBptx +
225 hltExoticaPostDisplacedMuEG +
226 hltExoticaPostDisplacedDimuon +
228 hltExoticaPostMonojet +
229 hltExoticaPostMonojetBackup +
230 hltExoticaPostPureMET +
231 hltExoticaPostMETplusTrack +
233 hltExoticaPhotonMET +
234 hltExoticaHTDisplacedJets +
235 hltExoticaTracklessJets +
def efficiency_string(objtype, plot_type, triggerpath)
def replace(string, replacements)
def add_reco_strings(strings)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run