ATLAS Offline Software
Functions | Variables
plotting.efficiency Namespace Reference

Functions

def main ()
 
def plot_channel (channel)
 

Variables

 parser = argparse.ArgumentParser()
 
 type
 
 str
 
 help
 
 action
 
 args = parser.parse_args()
 
 infilename = args.infile
 
 outdir = args.outdir
 
string substring = "data"
 
 pattern = re.compile(substring + r"(\d{2})")
 
 match = pattern.search(infilename)
 
 year = match.group(1)
 

Function Documentation

◆ main()

def plotting.efficiency.main ( )

Definition at line 29 of file efficiency.py.

29 def main():
30  plot_channel('Zee')
31  plot_channel('Zmumu')
32 

◆ plot_channel()

def plotting.efficiency.plot_channel (   channel)

Definition at line 33 of file efficiency.py.

33 def plot_channel(channel):
34  dfz = pd.read_csv(infilename, delimiter=",")
35  dfz_small = dfz
36  dfz_small['ZLumi'] = dfz_small[channel + 'Lumi']
37  dfz_small['ZLumiErr'] = dfz_small[channel + 'LumiErr']
38  dfz_small['EffTrig'] = dfz_small[channel + 'EffTrig']
39  dfz_small['ErrTrig'] = dfz_small[channel + 'ErrTrig']
40  dfz_small['EffReco'] = dfz_small[channel + 'EffReco']
41  dfz_small['ErrReco'] = dfz_small[channel + 'ErrReco']
42 
43  dfz_small = dfz_small.drop(dfz_small[dfz_small.ZLumi == 0].index)
44  if channel == "Zee":
45  channel_string = "Z #rightarrow ee"
46  lep = "e"
47  ymin = 0.65
48  if year == "15":
49  ymax = 0.55
50  leg = R.TLegend(0.7, 0.37, 0.8, 0.6)
51  else:
52  ymax = 0.40
53  leg = R.TLegend(0.7, 0.22, 0.8, 0.45)
54  elif channel == "Zmumu":
55  channel_string = "Z #rightarrow #mu#mu"
56  lep = "#mu"
57  leg = R.TLegend(0.7, 0.47, 0.8, 0.7)
58  ymax = 0.65
59  ymin = 0.65
60 
61  dict_mu = {}
62  dict_trig = {}
63  dict_trig_err = {}
64  dict_reco = {}
65  dict_reco_err = {}
66 
67  for index, event in dfz_small.iterrows():
68  run_number = str(int(event.RunNum))
69  lhc_fill = str(int(event.FillNum))
70  if args.usemu:
71  pileup = int(event.OffMu)
72  else:
73  pileup = (event.LBNum // 20)*20
74 
75  if event.ErrTrig == 0.0 or event.ErrReco == 0.0:
76  continue
77 
78  weight_trig = 1/pow(event.ErrTrig, 2)
79  weight_reco = 1/pow(event.ErrReco, 2)
80  if pileup not in dict_mu:
81  dict_mu[pileup] = pileup
82  dict_trig[pileup] = weight_trig * event.EffTrig
83  dict_reco[pileup] = weight_reco * event.EffReco
84  dict_trig_err[pileup] = weight_trig
85  dict_reco_err[pileup] = weight_reco
86  else:
87  dict_trig[pileup] += weight_trig * event.EffTrig
88  dict_reco[pileup] += weight_reco * event.EffReco
89  dict_trig_err[pileup] += weight_trig
90  dict_reco_err[pileup] += weight_reco
91 
92  vec_trig = array('d')
93  vec_trig_err = array('d')
94  vec_reco = array('d')
95  vec_reco_err = array('d')
96  vec_mu = array('d')
97 
98  if not dict_mu:
99  print("File "+infilename+ " has no filled lumi blocks!")
100  return
101 
102  for pileup in dict_mu:
103  trig_weighted_average = dict_trig[pileup]/dict_trig_err[pileup]
104  trig_error = sqrt(1/dict_trig_err[pileup])
105  vec_trig.append(trig_weighted_average)
106  vec_trig_err.append(trig_error)
107 
108  reco_weighted_average = dict_reco[pileup]/dict_reco_err[pileup]
109  reco_error = sqrt(1/dict_reco_err[pileup])
110  vec_reco.append(reco_weighted_average)
111  vec_reco_err.append(reco_error)
112 
113  vec_mu.append(pileup)
114 
115  trig_graph = R.TGraphErrors(len(vec_trig), vec_mu, vec_trig, R.nullptr, vec_trig_err)
116  trig_graph.GetHistogram().SetYTitle("Efficiency")
117  trig_graph.GetHistogram().GetYaxis().SetRangeUser(ymin, 1.0)
118  trig_graph.SetMarkerSize(1)
119 
120  reco_graph = R.TGraphErrors(len(vec_reco), vec_mu, vec_reco, R.nullptr, vec_reco_err)
121  reco_graph.GetHistogram().GetYaxis().SetRangeUser(ymin, 1.0)
122  reco_graph.SetMarkerSize(1)
123  reco_graph.SetMarkerStyle(21)
124  reco_graph.SetMarkerColor(R.kRed)
125  reco_graph.SetLineColor(R.kRed)
126 
127 
128  leg.SetBorderSize(0)
129  leg.SetTextSize(0.07)
130  leg.AddEntry(reco_graph, "#varepsilon_{reco}^{single-"+lep+"}", "ep")
131  leg.AddEntry(trig_graph, "#varepsilon_{trig}^{single-"+lep+"}", "ep")
132 
133  c1 = R.TCanvas()
134  trig_graph.Draw("ap")
135  reco_graph.Draw("p")
136 
137  pt.drawAtlasLabel(0.2, ymax, "Internal")
138  if year in ['15', '16', '17', '18']:
139  pt.drawText(0.2, ymax-0.06, "Data 20" + year + ", #sqrt{s} = 13 TeV")
140  else:
141  pt.drawText(0.2, ymax-0.06, "Data 20" + year + ", #sqrt{s} = 13.6 TeV")
142  pt.drawText(0.2, ymax-0.12, "LHC Fill " + lhc_fill)
143  pt.drawText(0.2, ymax-0.18, channel_string + " counting")
144  leg.Draw()
145 
146  if args.usemu:
147  trig_graph.GetHistogram().SetXTitle("<#mu>")
148  c1.SaveAs(outdir +run_number+ "/eff_v_mu_"+channel+"_data"+year+"_"+run_number+".eps")
149  c1.SaveAs(outdir +run_number+ "/eff_v_mu_"+channel+"_data"+year+"_"+run_number+".pdf")
150  else:
151  trig_graph.GetHistogram().SetXTitle("Luminosity Block Number")
152  c1.SaveAs(outdir +run_number+ "/eff_v_lb_"+channel+"_data"+year+"_"+run_number+".eps")
153  c1.SaveAs(outdir +run_number+ "/eff_v_lb_"+channel+"_data"+year+"_"+run_number+".pdf")
154 

Variable Documentation

◆ action

plotting.efficiency.action

Definition at line 15 of file efficiency.py.

◆ args

plotting.efficiency.args = parser.parse_args()

Definition at line 17 of file efficiency.py.

◆ help

plotting.efficiency.help

Definition at line 13 of file efficiency.py.

◆ infilename

plotting.efficiency.infilename = args.infile

Definition at line 18 of file efficiency.py.

◆ match

plotting.efficiency.match = pattern.search(infilename)

Definition at line 23 of file efficiency.py.

◆ outdir

plotting.efficiency.outdir = args.outdir

Definition at line 19 of file efficiency.py.

◆ parser

plotting.efficiency.parser = argparse.ArgumentParser()

Definition at line 12 of file efficiency.py.

◆ pattern

plotting.efficiency.pattern = re.compile(substring + r"(\d{2})")

Definition at line 22 of file efficiency.py.

◆ str

plotting.efficiency.str

Definition at line 13 of file efficiency.py.

◆ substring

string plotting.efficiency.substring = "data"

Definition at line 21 of file efficiency.py.

◆ type

plotting.efficiency.type

Definition at line 13 of file efficiency.py.

◆ year

plotting.efficiency.year = match.group(1)

Definition at line 25 of file efficiency.py.

CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
plotting.efficiency.main
def main()
Definition: efficiency.py:29
plotting.efficiency.plot_channel
def plot_channel(channel)
Definition: efficiency.py:33
array
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
str
Definition: BTagTrackIpAccessor.cxx:11