10 import PlotCalibrationGains
12 import PlotCalibrationHV
14 from optparse
import OptionParser
17 import matplotlib.pyplot
as plt
21 if __name__ ==
"__main__":
23 print (
"Starting checkHVCorrections script")
25 parser = OptionParser()
27 parser.add_option(
"-f",
"--InputFile",action=
"store",type=
"string",dest=
"input_file_name",help=
"Name of input file")
28 (options, args) = parser.parse_args()
33 geometry_convertor.LoadReceiverPPMMap()
35 ROOT.gStyle.SetPalette(1)
36 ROOT.gStyle.SetOptStat(111111)
37 ROOT.gStyle.SetCanvasColor(10)
39 c1 = ROOT.TCanvas(
'c1',
'Example',200,10,700,500)
40 c2 = ROOT.TCanvas(
'c2',
'Example Partitions',200,10,700,500)
79 fileDefault =
'/afs/cern.ch/work/j/juraj/public/testarea/21.0.18/CalibrationProcessing/326189_HV/energyscanresults.sqlite'
80 fileNoHV =
'/afs/cern.ch/work/j/juraj/public/testarea/21.0.18/CalibrationProcessing/326189/energyscanresults.sqlite'
82 hvCorrFile =
'/afs/cern.ch/work/j/juraj/public/testarea/20.7.8.3/HVDumps/hvcorrections_9jun17.sqlite'
84 hvGainPredictor =
'/afs/cern.ch/work/j/juraj/public/testarea/20.7.8.3/HVDumps/hvUpdate_9jun17_0p.txt'
86 strategyString =
'GainOneOvEmecFcalLowEta'
90 receiver_gains.LoadGainsSqlite(fileDefault)
91 receiver_gains.LoadReferenceSqlite(fileNoHV)
95 strange_channel_file =
open(
'checkHVCorrections.txt',
'w')
97 gpReceiver,gpCool,gpEta,gpPhi,gpCorrection = np.genfromtxt(hvGainPredictor,unpack=
True,dtype=
'str')
99 gainPredictorCorrections = {}
101 for iii
in range(len(gpReceiver)):
102 gainPredictorCorrections[gpReceiver[iii]] =
float(gpCorrection[iii])
104 for i_eta
in range(-49,45):
105 for i_phi
in range(0,64):
107 coolEm = geometry_convertor.getCoolEm(i_eta,i_phi)
108 coolHad = geometry_convertor.getCoolHad(i_eta,i_phi)
113 gain = receiver_gains.getGain(coolEm)
114 reference_gain = receiver_gains.getReferenceGain(coolEm)
115 receiverEm = geometry_convertor.getReceiverfromPPM(coolEm,strategyString)
118 meanEmHVCorrection = (hv_status.GetMeanCorections())[receiverEm]
120 meanEmHVCorrection = 1.
123 gainPredictorEmHVCorrection = gainPredictorCorrections[receiverEm]
125 gainPredictorEmHVCorrection = 1.
127 if (
not gain ==
'')
and (
not reference_gain ==
''):
129 h_gains_em.Fill(i_eta,i_phi,gain)
130 h_gains_em_noHV.Fill(i_eta,i_phi,reference_gain)
131 h_corr_em.Fill(i_eta,i_phi,meanEmHVCorrection)
132 h_corrGainPredictor_em.Fill(i_eta,i_phi,gainPredictorEmHVCorrection)
134 h1D_corr_em.Fill(i_eta,meanEmHVCorrection)
135 if reference_gain > 0.1 :
136 if gain/reference_gain > 0.01:
137 h_gains_em_ratio.Fill(i_eta,i_phi,gain/reference_gain)
138 h1D_gains_em_ratio.Fill(i_eta,gain/reference_gain)
140 if gainPredictorEmHVCorrection > 0.00001:
141 relDifference = (gain/reference_gain - gainPredictorEmHVCorrection)/gainPredictorEmHVCorrection
143 if relDifference > 0.001:
144 h_corrHVdiffGainPredictor_em.Fill(i_eta,i_phi,relDifference)
145 if relDifference > 0.05:
146 strange_channel_file.write(
'%s %s %i %i EM corr(RampMaker)= %.4f corr(GainPredictor)= %.4f diff= %.4f \n' % (coolEm , receiverEm, \
147 i_eta , i_phi, gain/reference_gain,gainPredictorEmHVCorrection,relDifference) )
149 if meanEmHVCorrection > 0.00001:
150 relDifference = (gain/reference_gain - meanEmHVCorrection)/meanEmHVCorrection
151 if relDifference > 0.01:
152 h_corrHVdiff_em.Fill(i_eta,i_phi,relDifference)
154 h1D_corrHVdiff_em.Fill(i_eta,relDifference)
156 if not coolHad ==
'':
158 gain = receiver_gains.getGain(coolHad)
159 reference_gain = receiver_gains.getReferenceGain(coolHad)
160 receiverHad = geometry_convertor.getReceiverfromPPM(coolHad,strategyString)
163 meanHadHVCorrection = (hv_status.GetMeanCorections())[receiverHad]
165 meanHadHVCorrection = 1.
168 gainPredictorHadHVCorrection = gainPredictorCorrections[receiverHad]
170 gainPredictorHadHVCorrection = 1.
173 if (
not gain ==
'')
and (
not reference_gain ==
''):
175 h_gains_had.Fill(i_eta,i_phi,gain)
176 h_gains_had_noHV.Fill(i_eta,i_phi,reference_gain)
177 h_corr_had.Fill(i_eta,i_phi,meanHadHVCorrection)
178 h_corrGainPredictor_had.Fill(i_eta,i_phi,gainPredictorHadHVCorrection)
180 h1D_corr_had.Fill(i_eta,meanHadHVCorrection)
182 if reference_gain > 0.1 :
183 if gain/reference_gain > 0.01:
184 h_gains_had_ratio.Fill(i_eta,i_phi,gain/reference_gain)
185 h1D_gains_had_ratio.Fill(i_eta,gain/reference_gain)
187 if gainPredictorHadHVCorrection > 0.00001:
188 relDifference = (gain/reference_gain - gainPredictorHadHVCorrection)/gainPredictorHadHVCorrection
189 if relDifference > 0.001:
190 h_corrHVdiffGainPredictor_had.Fill(i_eta,i_phi,relDifference)
191 if relDifference > 0.05:
192 strange_channel_file.write(
'%s %s %i %i HAD corr(RampMaker)= %.4f corr(GainPredictor)= %.4f diff= %.4f \n' % (coolHad,receiverHad, \
193 i_eta , i_phi, gain/reference_gain,gainPredictorHadHVCorrection,relDifference) )
196 if meanHadHVCorrection > 0.00001:
197 relDifference = (gain/reference_gain - meanHadHVCorrection)/meanHadHVCorrection
198 if relDifference > 0.01:
199 h_corrHVdiff_had.Fill(i_eta,i_phi,relDifference)
200 h1D_corrHVdiff_had.Fill(i_eta,relDifference)
206 h_gains_em.SetMinimum(0.6)
207 h_gains_em.SetMaximum(1.4)
209 c1.Print(
"checkHVCorrections.ps(")
211 h_gains_had.SetMinimum(0.6)
212 h_gains_had.SetMaximum(1.4)
214 c1.Print(
"checkHVCorrections.ps")
216 h_gains_em_noHV.SetMinimum(0.6)
217 h_gains_em_noHV.SetMaximum(1.4)
218 h_gains_em_noHV.Draw()
219 c1.Print(
"checkHVCorrections.ps")
221 h_gains_had_noHV.SetMinimum(0.6)
222 h_gains_had_noHV.SetMaximum(1.4)
223 h_gains_had_noHV.Draw()
224 c1.Print(
"checkHVCorrections.ps")
226 h_gains_em_ratio.SetMinimum(1.05)
227 h_gains_em_ratio.SetMaximum(2.2)
228 h_gains_em_ratio.Draw()
229 c1.Print(
"checkHVCorrections.ps")
231 h_gains_had_ratio.SetMinimum(1.05)
232 h_gains_had_ratio.SetMaximum(2.2)
233 h_gains_had_ratio.Draw()
234 c1.Print(
"checkHVCorrections.ps")
236 h_corr_em.SetMinimum(1.05)
237 h_corr_em.SetMaximum(2.2)
239 c1.Print(
"checkHVCorrections.ps")
241 h_corr_had.SetMinimum(1.05)
242 h_corr_had.SetMaximum(2.2)
244 c1.Print(
"checkHVCorrections.ps")
246 h_corrGainPredictor_em.SetMinimum(1.0)
247 h_corrGainPredictor_em.SetMaximum(2.1)
248 h_corrGainPredictor_em.Draw()
249 c1.Print(
"checkHVCorrections.ps")
251 h_corrGainPredictor_had.SetMinimum(1.0)
252 h_corrGainPredictor_had.SetMaximum(2.1)
253 h_corrGainPredictor_had.Draw()
254 c1.Print(
"checkHVCorrections.ps")
257 h_corrHVdiff_em.SetMinimum(-.1)
258 h_corrHVdiff_em.SetMaximum( .1)
259 h_corrHVdiff_em.Draw()
260 c1.Print(
"checkHVCorrections.ps")
262 h_corrHVdiff_had.SetMinimum(-.1)
263 h_corrHVdiff_had.SetMaximum( .1)
264 h_corrHVdiff_had.Draw()
265 c1.Print(
"checkHVCorrections.ps")
267 h_corrHVdiffGainPredictor_em.SetMinimum(-.5)
268 h_corrHVdiffGainPredictor_em.SetMaximum( .5)
269 h_corrHVdiffGainPredictor_em.Draw()
270 c1.Print(
"checkHVCorrections.ps")
272 h_corrHVdiffGainPredictor_had.SetMinimum(-.5)
273 h_corrHVdiffGainPredictor_had.SetMaximum( .5)
274 h_corrHVdiffGainPredictor_had.Draw()
275 c1.Print(
"checkHVCorrections.ps")
277 h_corrHVdiffGainPredictor_em.SetMinimum(-.1)
278 h_corrHVdiffGainPredictor_em.SetMaximum( .1)
279 h_corrHVdiffGainPredictor_em.Draw()
280 c1.Print(
"checkHVCorrections.ps")
282 h_corrHVdiffGainPredictor_had.SetMinimum(-.1)
283 h_corrHVdiffGainPredictor_had.SetMaximum( .1)
284 h_corrHVdiffGainPredictor_had.Draw()
285 c1.Print(
"checkHVCorrections.ps")
287 h_corrHVdiffGainPredictor_em.SetMinimum(-.05)
288 h_corrHVdiffGainPredictor_em.SetMaximum( .05)
289 h_corrHVdiffGainPredictor_em.Draw()
290 c1.Print(
"checkHVCorrections.ps")
292 h_corrHVdiffGainPredictor_had.SetMinimum(-.05)
293 h_corrHVdiffGainPredictor_had.SetMaximum( .05)
294 h_corrHVdiffGainPredictor_had.Draw()
295 c1.Print(
"checkHVCorrections.ps")
299 for i_p
in range(0,h1D_gains_em_ratio.nPartitions):
301 if h1D_gains_em_ratio.his_partitions[i_p].
GetEntries() > 0:
305 h1D_gains_em_ratio.his_partitions[i_p].Draw()
307 c2.Print(
"checkHVCorrections.ps")
312 for i_p
in range(0,h1D_gains_had_ratio.nPartitions):
314 if h1D_gains_had_ratio.his_partitions[i_p].
GetEntries() > 0:
318 h1D_gains_had_ratio.his_partitions[i_p].Draw()
320 c2.Print(
"checkHVCorrections.ps")
324 for i_p
in range(0,h1D_corr_em.nPartitions):
326 if h1D_corr_em.his_partitions[i_p].
GetEntries() > 0:
330 h1D_corr_em.his_partitions[i_p].Draw()
332 c2.Print(
"checkHVCorrections.ps")
337 for i_p
in range(0,h1D_corr_had.nPartitions):
339 if h1D_corr_had.his_partitions[i_p].
GetEntries() > 0:
343 h1D_corr_had.his_partitions[i_p].Draw()
345 c2.Print(
"checkHVCorrections.ps")
348 for i_p
in range(0,h1D_corrHVdiff_em.nPartitions):
350 if h1D_corrHVdiff_em.his_partitions[i_p].
GetEntries() > 0:
354 h1D_corrHVdiff_em.his_partitions[i_p].Draw()
356 c2.Print(
"checkHVCorrections.ps")
361 for i_p
in range(0,h1D_corrHVdiff_had.nPartitions):
363 if h1D_corrHVdiff_had.his_partitions[i_p].
GetEntries() > 0:
367 h1D_corrHVdiff_had.his_partitions[i_p].Draw()
369 c2.Print(
"checkHVCorrections.ps)")
371 os.system(
"ps2pdf checkHVCorrections.ps")
373 strange_channel_file.close()