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 =
"SumEt Turn-On"
34 xAxis =
"SumEt of Leading Generated %s (GeV/c)" % (objtype)
35 input_type =
"gen%sSumEt" % (objtype)
36 if plot_type ==
"EffEta":
37 title =
"#eta Efficiency"
38 xAxis =
"#eta of Generated %s " % (objtype)
39 input_type =
"gen%sEta" % (objtype)
40 if plot_type ==
"EffPhi":
41 title =
"#phi Efficiency"
42 xAxis =
"#phi of Generated %s " % (objtype)
43 input_type =
"gen%sPhi" % (objtype)
45 yAxis =
"%s / %s" % (numer_description, denom_description)
46 all_titles =
"%s for trigger %s; %s; %s" % (title, triggerpath,
48 return "Eff_%s_%s '%s' %s_%s %s" % (input_type,triggerpath,
49 all_titles,input_type,triggerpath,input_type)
55 reco_strings.append(entry
56 .
replace(
"Generated",
"Reconstructed")
59 strings.extend(reco_strings)
62 plot_types = [
"TurnOn1",
"TurnOn2",
"TurnOn3",
"EffEta",
"EffPhi"]
65 obj_types = [
"Mu",
"refittedStandAloneMuons",
"Track",
"Ele",
"Photon",
"PFTau",
"PFJet",
"MET",
"PFMET",
"PFMHT",
"GenMET",
"CaloJet"
69 efficiency_strings = []
74 for an
in _config.analysis:
75 s = _config.__getattribute__(an)
76 vstr = s.__getattribute__(
"hltPathsToCheck")
77 map(
lambda x: triggers.add(x.replace(
"_v",
"")),vstr)
78 triggers =
list(triggers)
83 for type
in plot_types:
93 hltExoticaPostHighPtDimuon = hltExoticaPostProcessor.clone()
94 hltExoticaPostHighPtDimuon.subDirs = [
'HLT/Exotica/HighPtDimuon']
95 hltExoticaPostHighPtDimuon.efficiencyProfile = efficiency_strings
97 hltExoticaPostHighPtDielectron = hltExoticaPostProcessor.clone()
98 hltExoticaPostHighPtDielectron.subDirs = [
'HLT/Exotica/HighPtDielectron']
99 hltExoticaPostHighPtDielectron.efficiencyProfile = efficiency_strings
101 hltExoticaPostHighPtElectron = hltExoticaPostProcessor.clone()
102 hltExoticaPostHighPtElectron.subDirs = [
'HLT/Exotica/HighPtElectron']
103 hltExoticaPostHighPtElectron.efficiencyProfile = efficiency_strings
105 hltExoticaPostLowPtElectron = hltExoticaPostProcessor.clone()
106 hltExoticaPostLowPtElectron.subDirs = [
'HLT/Exotica/LowPtElectron']
107 hltExoticaPostLowPtElectron.efficiencyProfile = efficiency_strings
109 hltExoticaPostLowPtDimuon = hltExoticaPostProcessor.clone()
110 hltExoticaPostLowPtDimuon.subDirs = [
'HLT/Exotica/LowPtDimuon']
111 hltExoticaPostLowPtDimuon.efficiencyProfile = efficiency_strings
113 hltExoticaPostLowPtDielectron = hltExoticaPostProcessor.clone()
114 hltExoticaPostLowPtDielectron.subDirs = [
'HLT/Exotica/LowPtDielectron']
115 hltExoticaPostLowPtDielectron.efficiencyProfile = efficiency_strings
117 hltExoticaPostHighPtPhoton = hltExoticaPostProcessor.clone()
118 hltExoticaPostHighPtPhoton.subDirs = [
'HLT/Exotica/HighPtPhoton']
119 hltExoticaPostHighPtPhoton.efficiencyProfile = efficiency_strings
121 hltExoticaPostDiPhoton = hltExoticaPostProcessor.clone()
122 hltExoticaPostDiPhoton.subDirs = [
'HLT/Exotica/DiPhoton']
123 hltExoticaPostDiPhoton.efficiencyProfile = efficiency_strings
125 hltExoticaPostSingleMuon = hltExoticaPostProcessor.clone()
126 hltExoticaPostSingleMuon.subDirs = [
'HLT/Exotica/SingleMuon']
127 hltExoticaPostSingleMuon.efficiencyProfile = efficiency_strings
129 hltExoticaPostHT = hltExoticaPostProcessor.clone()
130 hltExoticaPostHT.subDirs = [
'HLT/Exotica/HT']
131 hltExoticaPostHT.efficiencyProfile = efficiency_strings
133 hltExoticaPostJetNoBptx = hltExoticaPostProcessor.clone()
134 hltExoticaPostJetNoBptx.subDirs = [
'HLT/Exotica/JetNoBptx']
135 hltExoticaPostJetNoBptx.efficiencyProfile = efficiency_strings
137 hltExoticaPostMuonNoBptx = hltExoticaPostProcessor.clone()
138 hltExoticaPostMuonNoBptx.subDirs = [
'HLT/Exotica/MuonNoBptx']
139 hltExoticaPostMuonNoBptx.efficiencyProfile = efficiency_strings
141 hltExoticaPostDisplacedMuEG = hltExoticaPostProcessor.clone()
142 hltExoticaPostDisplacedMuEG.subDirs = [
'HLT/Exotica/DisplacedMuEG']
143 hltExoticaPostDisplacedMuEG.efficiencyProfile = efficiency_strings
145 hltExoticaPostDisplacedDimuon = hltExoticaPostProcessor.clone()
146 hltExoticaPostDisplacedDimuon.subDirs = [
'HLT/Exotica/DisplacedDimuon']
147 hltExoticaPostDisplacedDimuon.efficiencyProfile = efficiency_strings
149 hltExoticaPostDisplacedL2Dimuon = hltExoticaPostProcessor.clone()
150 hltExoticaPostDisplacedL2Dimuon.subDirs = [
'HLT/Exotica/DisplacedL2Dimuon']
151 hltExoticaPostDisplacedL2Dimuon.efficiencyProfile = efficiency_strings
153 hltExoticaPostMonojet = hltExoticaPostProcessor.clone()
154 hltExoticaPostMonojet.subDirs = [
'HLT/Exotica/Monojet']
155 hltExoticaPostMonojet.efficiencyProfile = efficiency_strings
157 hltExoticaPostMonojetBackup = hltExoticaPostProcessor.clone()
158 hltExoticaPostMonojetBackup.subDirs = [
'HLT/Exotica/MonojetBackup']
159 hltExoticaPostMonojetBackup.efficiencyProfile = efficiency_strings
161 hltExoticaPostPureMET = hltExoticaPostProcessor.clone()
162 hltExoticaPostPureMET.subDirs = [
'HLT/Exotica/PureMET']
163 hltExoticaPostPureMET.efficiencyProfile = efficiency_strings
165 hltExoticaPostMETplusTrack = hltExoticaPostProcessor.clone()
166 hltExoticaPostMETplusTrack.subDirs = [
'HLT/Exotica/METplusTrack']
167 hltExoticaPostMETplusTrack.efficiencyProfile = efficiency_strings
169 hltExoticaDisplacedDimuonDijet = hltExoticaPostProcessor.clone()
170 hltExoticaDisplacedDimuonDijet.subDirs = [
'HLT/Exotica/DisplacedDimuonDijet']
171 hltExoticaDisplacedDimuonDijet.efficiencyProfile = efficiency_strings
173 hltExoticaEleMu = hltExoticaPostProcessor.clone()
174 hltExoticaEleMu.subDirs = [
'HLT/Exotica/EleMu']
175 hltExoticaEleMu.efficiencyProfile = efficiency_strings
177 hltExoticaPhotonMET = hltExoticaPostProcessor.clone()
178 hltExoticaPhotonMET.subDirs = [
'HLT/Exotica/PhotonMET']
179 hltExoticaPhotonMET.efficiencyProfile = efficiency_strings
181 hltExoticaHTDisplacedJets = hltExoticaPostProcessor.clone()
182 hltExoticaHTDisplacedJets.subDirs = [
'HLT/Exotica/HTDisplacedJets']
183 hltExoticaHTDisplacedJets.efficiencyProfile = efficiency_strings
185 hltExoticaPostProcessors = cms.Sequence(
187 hltExoticaPostHighPtDimuon +
188 hltExoticaPostHighPtDielectron +
189 hltExoticaPostLowPtDimuon +
190 hltExoticaPostLowPtDielectron +
192 hltExoticaPostHighPtElectron +
193 hltExoticaPostLowPtElectron +
195 hltExoticaPostHighPtPhoton +
196 hltExoticaPostDiPhoton +
200 hltExoticaPostJetNoBptx +
201 hltExoticaPostMuonNoBptx +
203 hltExoticaPostDisplacedMuEG +
204 hltExoticaPostDisplacedDimuon +
205 hltExoticaPostDisplacedL2Dimuon +
207 hltExoticaPostMonojet +
208 hltExoticaPostMonojetBackup +
209 hltExoticaPostPureMET +
210 hltExoticaPostMETplusTrack +
211 hltExoticaDisplacedDimuonDijet +
213 hltExoticaPhotonMET +
214 hltExoticaHTDisplacedJets
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