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()