CMS 3D CMS Logo

hltMuonPostProcessors_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
4 
5 def efficiency_string(numer_label, denom_label,
6  plot_type, output_label=None):
7 
8  if output_label is None:
9  output_label = numer_label
10  if denom_label == "All" and numer_label != "L1":
11  output_description = "Full Path"
12  else:
13  output_description = numer_label
14  if denom_label == "All":
15  denom_description = "# Gen #mu"
16  else:
17  denom_description = "# Gen #mu Matched to %s" % (denom_label)
18  numer_description = "# Gen #mu Matched to %s" % (numer_label)
19 
20  if plot_type == "TurnOn1":
21  title = "pT Turn-On"
22  xAxis = "p_{T} of Leading Generated Muon (GeV)"
23  input_type = "PassMaxPt1"
24  if plot_type == "TurnOn2":
25  title = "Next-to-Leading pT Turn-On"
26  xAxis = "p_{T} of Next-to-Leading Generated Muon (GeV)"
27  input_type = "PassMaxPt2"
28  if plot_type == "EffEta":
29  title = "#eta Efficiency"
30  xAxis = "#eta of Generated Muon (GeV)"
31  input_type = "PassEta"
32  if plot_type == "EffPhi":
33  title = "#phi Efficiency"
34  xAxis = "#phi of Generated Muon (GeV)"
35  input_type = "PassPhi"
36 
37  yAxis = "%s / %s" % (numer_description, denom_description)
38  all_titles = "%s for %s; %s; %s" % (title, output_description,
39  xAxis, yAxis)
40  return "gen%s_%s '%s' gen%s_%s gen%s_%s" % (plot_type, output_label,
41  all_titles, input_type,
42  numer_label, input_type,
43  denom_label)
44 
45 
46 def add_reco_strings(strings):
47  reco_strings = []
48  for entry in strings:
49  reco_strings.append(entry
50  .replace("Generated", "Reconstructed")
51  .replace("Gen", "Reco")
52  .replace("gen", "rec"))
53  strings.extend(reco_strings)
54 
55 
56 plot_types = ["TurnOn1", "TurnOn2", "EffEta", "EffPhi"]
57 efficiency_strings = []
58 iso_strings = []
59 noniso_strings = []
60 
61 for type in plot_types:
62  efficiency_strings.append(efficiency_string("L1", "All", type))
63  for step in ["L2", "L2Iso", "L3", "Tk", "L3EcalIso", "L3HcalIso", "L3TkIso"]:
64  efficiency_strings.append(efficiency_string(step, "L1", type))
65  noniso_strings.append(efficiency_string("L3", "All", type, "Total"))
66  iso_strings.append(efficiency_string("L3EcalIso", "All", type, "Total"))
67  iso_strings.append(efficiency_string("L3HcalIso", "All", type, "Total"))
68  iso_strings.append(efficiency_string("L3TkIso", "All", type, "Total"))
69 
70 add_reco_strings(efficiency_strings)
71 add_reco_strings(noniso_strings)
72 add_reco_strings(iso_strings)
73 
74 hltMuonPostMain = hltMuonPostProcessor.clone()
75 hltMuonPostMain.subDirs = ['HLT/Muon/Distributions/*']
76 hltMuonPostMain.efficiencyProfile = efficiency_strings
77 
78 hltMuonPostNonIso = hltMuonPostMain.clone()
79 #hltMuonPostNonIso.subDirs = ['HLT/Muon/Distributions/^(?:[^I]+|I(?!so))*$']
80 hltMuonPostNonIso.subDirs = ['HLT/Muon/Distributions/((?!Iso).)*$']
81 hltMuonPostNonIso.efficiencyProfile = noniso_strings
82 
83 hltMuonPostIso = hltMuonPostMain.clone()
84 hltMuonPostIso.subDirs = ['HLT/Muon/Distributions/.*Iso.*$']
85 hltMuonPostIso.efficiencyProfile = iso_strings
86 
87 hltMuonPostProcessors = cms.Sequence(
88  hltMuonPostNonIso *
89  hltMuonPostIso *
90  hltMuonPostMain
91 )
def efficiency_string(numer_label, denom_label, plot_type, output_label=None)
def replace(string, replacements)