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