3 from PixelCalibAlgs.EvoMonitoring
import ReadCSV
4 from matplotlib.backends.backend_agg
import FigureCanvasAgg
5 from matplotlib.figure
import Figure
15 return params[0]*(num/den)
20 os.makedirs(
"plots/parameters", exist_ok=
True)
24 expectedTOTint = {
"IBL": {
"normal":[],
"long":[]},
25 "Blayer": {
"normal":[],
"long":[],
"ganged":[]},
26 "L1" : {
"normal":[],
"long":[],
"ganged":[]},
27 "L2" : {
"normal":[],
"long":[],
"ganged":[]},
28 "Disk" : {
"normal":[],
"long":[],
"ganged":[]}}
29 CalibThreshold = {
"IBL": {
"normal":[],
"long":[]},
30 "Blayer": {
"normal":[],
"long":[],
"ganged":[]},
31 "L1" : {
"normal":[],
"long":[],
"ganged":[]},
32 "L2" : {
"normal":[],
"long":[],
"ganged":[]},
33 "Disk" : {
"normal":[],
"long":[],
"ganged":[]}}
34 CalibRMS = {
"IBL": {
"normal":[],
"long":[]},
35 "Blayer": {
"normal":[],
"long":[],
"ganged":[]},
36 "L1" : {
"normal":[],
"long":[],
"ganged":[]},
37 "L2" : {
"normal":[],
"long":[],
"ganged":[]},
38 "Disk" : {
"normal":[],
"long":[],
"ganged":[]}}
39 CalibNoise = {
"IBL": {
"normal":[],
"long":[]},
40 "Blayer": {
"normal":[],
"long":[],
"ganged":[]},
41 "L1" : {
"normal":[],
"long":[],
"ganged":[]},
42 "L2" : {
"normal":[],
"long":[],
"ganged":[]},
43 "Disk" : {
"normal":[],
"long":[],
"ganged":[]}}
44 CalibIntime = {
"IBL": {
"normal":[],
"long":[]},
45 "Blayer": {
"normal":[],
"long":[],
"ganged":[]},
46 "L1" : {
"normal":[],
"long":[],
"ganged":[]},
47 "L2" : {
"normal":[],
"long":[],
"ganged":[]},
48 "Disk" : {
"normal":[],
"long":[],
"ganged":[]}}
51 for mod, FEs
in calib.items():
52 mod_name = mapping[
str(mod)]
54 if mod_name.startswith(
"L0"):
56 elif mod_name.startswith(
"L1"):
58 elif mod_name.startswith(
"L2"):
60 elif mod_name.startswith(
"D"):
64 if mod_name.startswith(
"LI_S15"):
67 key =
"%-16s - %s" % (mod_name,mod)
71 for ife
in range(len(FEs)):
73 if mod_layer ==
"IBL":
75 bool1, str1 =
ValThreshold(mod_layer,
"normal",fe[0],MaxThreshold)
76 bool2, str2 =
ValThreshold(mod_layer,
"long" ,fe[2],MaxThreshold)
78 report[key] += (
"\tFE%02u: "% ife) + str1
80 report[key] += (
"\tFE%02u: "% ife) + str2
82 CalibThreshold[mod_layer][
"normal"].
append(fe[0])
83 CalibThreshold[mod_layer][
"long"].
append(fe[2])
85 CalibRMS[mod_layer][
"normal"].
append(fe[1])
86 CalibRMS[mod_layer][
"long"].
append(fe[3])
89 bool1, str1 =
ValThreshold(mod_layer,
"normal",fe[0],MaxThreshold)
90 bool2, str2 =
ValThreshold(mod_layer,
"long" ,fe[4],MaxThreshold)
91 bool3, str3 =
ValThreshold(mod_layer,
"ganged",fe[8],MaxThreshold)
93 report[key] += (
"\tFE%02u: "% ife) + str1
95 report[key] += (
"\tFE%02u: "% ife) + str2
97 report[key] += (
"\tFE%02u: "% ife) + str3
103 expectedTOTint[mod_layer][
"normal"].
append(totint_nor)
104 expectedTOTint[mod_layer][
"long"].
append(totint_lon)
105 expectedTOTint[mod_layer][
"ganged"].
append(totint_gan)
107 CalibThreshold[mod_layer][
"normal"].
append(fe[0])
108 CalibThreshold[mod_layer][
"long"].
append(fe[4])
109 CalibThreshold[mod_layer][
"ganged"].
append(fe[8])
111 CalibRMS[mod_layer][
"normal"].
append(fe[1])
112 CalibRMS[mod_layer][
"long"].
append(fe[5])
113 CalibRMS[mod_layer][
"ganged"].
append(fe[9])
115 CalibNoise[mod_layer][
"normal"].
append(fe[2])
116 CalibNoise[mod_layer][
"long"].
append(fe[6])
117 CalibNoise[mod_layer][
"ganged"].
append(fe[10])
119 CalibIntime[mod_layer][
"normal"].
append(fe[3])
120 CalibIntime[mod_layer][
"long"].
append(fe[7])
121 CalibIntime[mod_layer][
"ganged"].
append(fe[11])
124 fout =
open(
"CheckValues_log.txt",
"w")
126 fout.write(
"_______________ LOG _______________\n\n" )
127 fout.write(
"File chosen:\n" )
128 fout.write(
"Calibration : '%s'\n" % (_file) )
129 fout.write(
"Data base IOV: %s\n\n" % (iov) )
131 fout.write(
"\n Threshold FE values validation:\n")
132 fout.write(
"-"*40+
"\n")
133 for key, val
in report.items():
140 fout.write(
"\n\n\n\n Threshold MEAN values validation:\n")
141 fout.write(
"-"*40+
"\n")
142 for i
in [
"IBL",
"Blayer",
"L1",
"L2",
"Disk"]:
144 for j
in CalibThreshold[i]:
145 if len(CalibThreshold[i][j]) == 0:
147 _bool_, _str_ =
ValThreshold(i,j,np.average(CalibThreshold[i][j]))
148 fout.write(
"\t"+_str_)
151 figurIBL(i,CalibThreshold,
"Threshold",
"CalibThreshold_"+i+
".png")
152 figurIBL(i,CalibRMS ,
"RMS" ,
"CalibRMS_"+i+
".png")
154 figur(i,expectedTOTint,
"ToT for intime threshold",
"totIntime_"+i+
".png")
155 figur(i,CalibThreshold,
"Threshold",
"CalibThreshold_"+i+
".png")
156 figur(i,CalibRMS ,
"RMS" ,
"CalibRMS_"+i+
".png")
157 figur(i,CalibNoise ,
"Noise" ,
"CalibNoise_"+i+
".png")
158 figur(i,CalibIntime ,
"Intime" ,
"CalibIntime_"+i+
".png")
160 fout.write(
"-"*40+
"\n\n")
164 fe_indiv = {
"IBL":0,
"Blayer":0,
"L1":0,
"L2":0,
"Disk":0}
165 params_indiv = {
"IBL":0,
"Blayer":0,
"L1":0,
"L2":0,
"Disk":0}
166 for key, FEs
in calib.items():
168 mod_name = mapping[
str(key)]
170 if mod_name.startswith(
"L0"):
172 elif mod_name.startswith(
"L1"):
174 elif mod_name.startswith(
"L2"):
176 elif mod_name.startswith(
"D"):
182 fe_indiv[mod_layer] += len(FEs)
184 totalParams += len(fe)
185 params_indiv[mod_layer] += len(fe)
188 fout.write(
"Modules checked : %6u\n" % (len(calib)))
189 fout.write(
"FrontEnds checked : %6u\n" % (totalFE))
190 for key, value
in fe_indiv.items():
191 fout.write(
" - %-6s:%6u \n" % (key,value))
192 fout.write(
"Parameters checked: %6u\n" % (totalParams))
193 for key, value
in params_indiv.items():
194 fout.write(
" - %-6s:%6u \n" % (key,value))
200 fin =
open(
"CheckValues_log.txt",
"r")
208 realThresholds = {
"IBL": 1500,
"Blayer": 4700 ,
"L1": 4300,
"L2": 4300,
"Disk": 4300}
210 dev = abs((realThresholds[layer]-listavg)/listavg*100)
214 status =
"NEEDS CHECKING!!!"
215 if perc != 1
and status ==
"OK":
218 _str_ =
"%-25s: %6.1fe (exp.: %4ue), dev.: %6.2f%% - status (>%i%%): %s\n" % (layer+
" avg. thr. ["+pix+
"]", listavg, realThresholds[layer], dev, perc, status)
222 fig = Figure(figsize=(13,10))
224 plot(fig.add_subplot(2,2,1),hist[title][
"normal"]
if len(hist[title][
"normal"])
else [-1], xlabel+
" - normal")
225 plot(fig.add_subplot(2,2,2),hist[title][
"long"]
if len(hist[title][
"long"])
else [-1], xlabel+
" - normal")
226 plot(fig.add_subplot(2,2,3),hist[title][
"normal"]
if len(hist[title][
"normal"])
else [-1], xlabel+
" - normal",
True)
227 plot(fig.add_subplot(2,2,4),hist[title][
"long"]
if len(hist[title][
"long"])
else [-1], xlabel+
" - normal",
True)
228 FigureCanvasAgg(fig).print_figure(
"plots/parameters/"+namef, dpi=150)
231 fig = Figure(figsize=(13,10))
233 plot(fig.add_subplot(2,3,1),hist[title][
"normal"]
if len(hist[title][
"normal"])
else [-1], xlabel+
" - normal")
234 plot(fig.add_subplot(2,3,2),hist[title][
"long"]
if len(hist[title][
"long"])
else [-1], xlabel+
" - long")
235 plot(fig.add_subplot(2,3,3),hist[title][
"ganged"]
if len(hist[title][
"ganged"])
else [-1], xlabel+
" - ganged")
236 plot(fig.add_subplot(2,3,4),hist[title][
"normal"]
if len(hist[title][
"normal"])
else [-1], xlabel+
" - normal" ,
True)
237 plot(fig.add_subplot(2,3,5),hist[title][
"long"]
if len(hist[title][
"long"])
else [-1], xlabel+
" - long" ,
True)
238 plot(fig.add_subplot(2,3,6),hist[title][
"ganged"]
if len(hist[title][
"ganged"])
else [-1], xlabel+
" - ganged" ,
True)
239 FigureCanvasAgg(fig).print_figure(
"plots/parameters/"+namef, dpi=150)
241 def plot(axs,arr, xlabel, islog = False):
242 axs.hist(arr, bins=60)
243 axs.set_xlabel(xlabel)
245 axs.set_yscale(
"log")
246 axs.set_ylabel(
"Counts [log scale]" if islog
else "Counts")
250 from PixelCalibAlgs.EvoMonitoring
import ReadCalibOutput
256 if __name__ ==
"__main__":
259 parser = argparse.ArgumentParser(prog=
'python -m PixelCalibAlgs.CheckValues',
260 description=
"""Checks the Threshold values.\n\n
261 Example: python -m PixelCalibAlgs.CheckValues -f "path/to/file" """)
263 parser.add_argument(
'-f' , required=
True, help=
"New calibration file (output format from the Recovery.py)")
264 parser.add_argument(
'--isDB' , action=
'store_true', help=
"File with a DB format (from MakeReferenceFile)")
265 args = parser.parse_args()
270 from PixelCalibAlgs.Recovery
import ReadDbFile
274 from PixelCalibAlgs.EvoMonitoring
import ReadCalibOutput