27 from ROOT
import Belle2
28 from array
import array
31 parser = argparse.ArgumentParser(description=
"Plot gain maps")
32 parser.add_argument(
'--maps', dest=
'maps', action=
"store_true", help=
'Create maps from payloads. This can be slow!')
33 args = parser.parse_args()
49 histofile = ROOT.TFile(
'gain_histos.root',
'RECREATE')
51 histofile.mkdir(
"maps")
54 rfile = ROOT.TFile(
"gain_payloads.root",
"READ")
55 b2.conditions = rfile.Get(
"conditions")
58 for sensorID
in sensor_list:
59 gain_table[sensorID.getID()] = list()
62 for condition
in b2.conditions:
63 if condition.PXDGainMapPar_valid:
64 run_list.append(condition.run)
65 for sensorID
in sensor_list:
67 nBinsU = condition.PXDGainMapPar.getBinsU()
68 nBinsV = condition.PXDGainMapPar.getBinsV()
70 layer = sensorID.getLayerNumber()
71 ladder = sensorID.getLadderNumber()
72 sensor = sensorID.getSensorNumber()
75 for guID
in range(nBinsU):
76 for gvID
in range(nBinsV):
77 mean_gain += condition.PXDGainMapPar.getContent(sensorID.getID(), guID, gvID)
79 mean_gain /= (nBinsU * nBinsV)
80 gain_table[sensorID.getID()].append(mean_gain)
83 name =
"Gains_{:d}_{:d}_{:d}_run_{:d}".format(layer, ladder, sensor, condition.run)
84 title =
"Relative energy calibration Sensor={:d}.{:d}.{:d} run={:d}".format(layer, ladder, sensor, condition.run)
85 gain_map = ROOT.TH2F(name, title, nBinsU, 0, nBinsU, nBinsV, 0, nBinsV)
86 gain_map.GetXaxis().SetTitle(
"uBin")
87 gain_map.GetYaxis().SetTitle(
"vBin")
88 gain_map.GetZaxis().SetTitle(
"rel. gain factor")
91 for guID
in range(nBinsU):
92 for gvID
in range(nBinsV):
93 gain = condition.PXDGainMapPar.getContent(sensorID.getID(), guID, gvID)
94 gain_map.SetBinContent(int(guID + 1), int(gvID + 1), gain)
100 c = ROOT.TCanvas(
'gain_vs_runno',
'Gain evolution vs. run number', 200, 10, 700, 500)
103 for sensorID
in sensor_list:
106 x, y = array(
'd'), array(
'd')
107 for value
in gain_table[sensorID.getID()]:
112 gr = ROOT.TGraph(n, x, y)
113 gr.SetLineColor(ROOT.kBlue)
115 gr.SetName(
"graph_{}".format(sensorID.getID()))
116 gr.SetMarkerColor(ROOT.kBlue)
117 gr.SetMarkerStyle(21)
118 gr.SetTitle(
'Gain evolution Sensor={}'.format(sensorID))
119 gr.GetXaxis().SetTitle(
'run number')
120 gr.GetYaxis().SetTitle(
'gain')
125 c.Print(
'gains_vs_runno_{}.png'.format(sensorID.getID()))
Class to uniquely identify a any structure of the PXD and SVD.