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"
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)
91 for type
in plot_types:
101 hltExoticaPostLowPtTrimuon = hltExoticaPostProcessor.clone()
102 hltExoticaPostLowPtTrimuon.subDirs = [
'HLT/Exotica/LowPtTrimuon']
103 hltExoticaPostLowPtTrimuon.efficiencyProfile = efficiency_strings
105 hltExoticaPostHighPtDimuon = hltExoticaPostProcessor.clone()
106 hltExoticaPostHighPtDimuon.subDirs = [
'HLT/Exotica/HighPtDimuon']
107 hltExoticaPostHighPtDimuon.efficiencyProfile = efficiency_strings
109 hltExoticaPostHighPtDielectron = hltExoticaPostProcessor.clone()
110 hltExoticaPostHighPtDielectron.subDirs = [
'HLT/Exotica/HighPtDielectron']
111 hltExoticaPostHighPtDielectron.efficiencyProfile = efficiency_strings
113 hltExoticaPostHighPtElectron = hltExoticaPostProcessor.clone()
114 hltExoticaPostHighPtElectron.subDirs = [
'HLT/Exotica/HighPtElectron']
115 hltExoticaPostHighPtElectron.efficiencyProfile = efficiency_strings
117 hltExoticaPostLowPtElectron = hltExoticaPostProcessor.clone()
118 hltExoticaPostLowPtElectron.subDirs = [
'HLT/Exotica/LowPtElectron']
119 hltExoticaPostLowPtElectron.efficiencyProfile = efficiency_strings
121 hltExoticaPostLowPtDimuon = hltExoticaPostProcessor.clone()
122 hltExoticaPostLowPtDimuon.subDirs = [
'HLT/Exotica/LowPtDimuon']
123 hltExoticaPostLowPtDimuon.efficiencyProfile = efficiency_strings
125 hltExoticaPostLowPtDielectron = hltExoticaPostProcessor.clone()
126 hltExoticaPostLowPtDielectron.subDirs = [
'HLT/Exotica/LowPtDielectron']
127 hltExoticaPostLowPtDielectron.efficiencyProfile = efficiency_strings
129 hltExoticaPostHighPtPhoton = hltExoticaPostProcessor.clone()
130 hltExoticaPostHighPtPhoton.subDirs = [
'HLT/Exotica/HighPtPhoton']
131 hltExoticaPostHighPtPhoton.efficiencyProfile = efficiency_strings
133 hltExoticaPostDiPhoton = hltExoticaPostProcessor.clone()
134 hltExoticaPostDiPhoton.subDirs = [
'HLT/Exotica/DiPhoton']
135 hltExoticaPostDiPhoton.efficiencyProfile = efficiency_strings
137 hltExoticaPostSingleMuon = hltExoticaPostProcessor.clone()
138 hltExoticaPostSingleMuon.subDirs = [
'HLT/Exotica/SingleMuon']
139 hltExoticaPostSingleMuon.efficiencyProfile = efficiency_strings
141 hltExoticaPostHT = hltExoticaPostProcessor.clone()
142 hltExoticaPostHT.subDirs = [
'HLT/Exotica/HT']
143 hltExoticaPostHT.efficiencyProfile = efficiency_strings
145 hltExoticaPostJetNoBptx = hltExoticaPostProcessor.clone()
146 hltExoticaPostJetNoBptx.subDirs = [
'HLT/Exotica/JetNoBptx']
147 hltExoticaPostJetNoBptx.efficiencyProfile = efficiency_strings
149 hltExoticaPostMuonNoBptx = hltExoticaPostProcessor.clone()
150 hltExoticaPostMuonNoBptx.subDirs = [
'HLT/Exotica/MuonNoBptx']
151 hltExoticaPostMuonNoBptx.efficiencyProfile = efficiency_strings
153 hltExoticaPostDisplacedMuEG = hltExoticaPostProcessor.clone()
154 hltExoticaPostDisplacedMuEG.subDirs = [
'HLT/Exotica/DisplacedMuEG']
155 hltExoticaPostDisplacedMuEG.efficiencyProfile = efficiency_strings
157 hltExoticaPostDisplacedDimuon = hltExoticaPostProcessor.clone()
158 hltExoticaPostDisplacedDimuon.subDirs = [
'HLT/Exotica/DisplacedDimuon']
159 hltExoticaPostDisplacedDimuon.efficiencyProfile = efficiency_strings
161 hltExoticaPostDisplacedL2Dimuon = hltExoticaPostProcessor.clone()
162 hltExoticaPostDisplacedL2Dimuon.subDirs = [
'HLT/Exotica/DisplacedL2Dimuon']
163 hltExoticaPostDisplacedL2Dimuon.efficiencyProfile = efficiency_strings
165 hltExoticaPostMonojet = hltExoticaPostProcessor.clone()
166 hltExoticaPostMonojet.subDirs = [
'HLT/Exotica/Monojet']
167 hltExoticaPostMonojet.efficiencyProfile = efficiency_strings
169 hltExoticaPostMonojetBackup = hltExoticaPostProcessor.clone()
170 hltExoticaPostMonojetBackup.subDirs = [
'HLT/Exotica/MonojetBackup']
171 hltExoticaPostMonojetBackup.efficiencyProfile = efficiency_strings
173 hltExoticaPostPureMET = hltExoticaPostProcessor.clone()
174 hltExoticaPostPureMET.subDirs = [
'HLT/Exotica/PureMET']
175 hltExoticaPostPureMET.efficiencyProfile = efficiency_strings
177 hltExoticaPostMETplusTrack = hltExoticaPostProcessor.clone()
178 hltExoticaPostMETplusTrack.subDirs = [
'HLT/Exotica/METplusTrack']
179 hltExoticaPostMETplusTrack.efficiencyProfile = efficiency_strings
181 hltExoticaDisplacedDimuonDijet = hltExoticaPostProcessor.clone()
182 hltExoticaDisplacedDimuonDijet.subDirs = [
'HLT/Exotica/DisplacedDimuonDijet']
183 hltExoticaDisplacedDimuonDijet.efficiencyProfile = efficiency_strings
185 hltExoticaEleMu = hltExoticaPostProcessor.clone()
186 hltExoticaEleMu.subDirs = [
'HLT/Exotica/EleMu']
187 hltExoticaEleMu.efficiencyProfile = efficiency_strings
189 hltExoticaPhotonMET = hltExoticaPostProcessor.clone()
190 hltExoticaPhotonMET.subDirs = [
'HLT/Exotica/PhotonMET']
191 hltExoticaPhotonMET.efficiencyProfile = efficiency_strings
193 hltExoticaHTDisplacedJets = hltExoticaPostProcessor.clone()
194 hltExoticaHTDisplacedJets.subDirs = [
'HLT/Exotica/HTDisplacedJets']
195 hltExoticaHTDisplacedJets.efficiencyProfile = efficiency_strings
197 hltExoticaPostProcessors = cms.Sequence(
199 hltExoticaPostLowPtTrimuon +
201 hltExoticaPostHighPtDimuon +
202 hltExoticaPostHighPtDielectron +
203 hltExoticaPostLowPtDimuon +
204 hltExoticaPostLowPtDielectron +
206 hltExoticaPostHighPtElectron +
207 hltExoticaPostLowPtElectron +
209 hltExoticaPostHighPtPhoton +
210 hltExoticaPostDiPhoton +
214 hltExoticaPostJetNoBptx +
215 hltExoticaPostMuonNoBptx +
217 hltExoticaPostDisplacedMuEG +
218 hltExoticaPostDisplacedDimuon +
219 hltExoticaPostDisplacedL2Dimuon +
221 hltExoticaPostMonojet +
222 hltExoticaPostMonojetBackup +
223 hltExoticaPostPureMET +
224 hltExoticaPostMETplusTrack +
225 hltExoticaDisplacedDimuonDijet +
227 hltExoticaPhotonMET +
228 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