9 from array
import array
10 from PyCool
import cool
11 from optparse
import OptionParser
16 h.GetXaxis().SetTitleSize(tsize)
17 h.GetXaxis().SetLabelSize(lsize)
18 h.GetYaxis().SetTitleSize(tsize)
19 h.GetYaxis().SetLabelSize(lsize)
22 h.GetZaxis().SetTitleSize(zsize)
23 h.GetZaxis().SetLabelSize(zsize)
25 def setAxisTitles(histos, xtit, ytit, ztit="foo", xoff=0, yoff=0, zoff=0):
27 h.GetXaxis().SetTitle(xtit)
28 h.GetYaxis().SetTitle(ytit)
30 h.GetZaxis().SetTitle(ztit)
32 if xoff!=0: h.GetXaxis().SetTitleOffset(xoff)
33 if yoff!=0: h.GetYaxis().SetTitleOffset(yoff)
34 if zoff!=0: h.GetZaxis().SetTitleOffset(zoff)
39 def __init__(self,title,XaxisTitle="",YaxisTitle=""):
42 self.
xbins =
array(
'd',[-49.5,-44.5,-40.50,-36.5,-32.5,-31.5,-29.5,
43 -27.5,-25.5,-24.5,-23.5,-22.5,-21.5,-20.5,-19.5,
44 -18.5,-17.5,-16.5,-15.5,-14.5,-13.5,-12.5,-11.5,
45 -10.5,-9.5,-8.5,-7.5,-6.5,-5.5,-4.5,-3.5,
46 -2.5,-1.5,-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,
47 7.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,
48 17.5,18.5,19.5,20.5,21.5,22.5,23.5,24.5,26.5,28.5,
49 30.5,31.5,35.5,39.5,43.5,47.5])
52 L1CaloMap.Counter += 1
53 hname =
"GainTTsMap_%d" % L1CaloMap.Counter
61 self.
h_1.DrawCopy(
"colz")
62 ROOT.gPad.RedrawAxis()
64 def Fill(self,eta,phi,gain=1):
66 if eta >= 32
or eta < -32:
71 elif eta >= 25
or eta < -25:
86 self.
coolIdPath=ROOT.PathResolver.find_calib_file(
"TrigT1Calo/COOLIdDump_v1.txt")
91 for line
in input.readlines():
92 parts = line.split(
' ')
93 emCool = parts[4].rstrip()
94 hadCool = parts[5].rstrip()
106 dbSvc = cool.DatabaseSvcFactory.databaseService()
107 dbString =
'oracle://ATLAS_COOLPROD;schema=ATLAS_COOLONL_TRIGGER;dbname=CONDBR2'
109 db = dbSvc.openDatabase(dbString,
False)
110 except Exception
as e:
111 print (
'Error: Problem opening database', e)
114 folder_name =
"/TRIGGER/Receivers/RxPpmIdMap"
115 folder=db.getFolder(folder_name)
117 startUtime =
int(time.time())
118 endUtime =
int(time.time())
119 startValKey = startUtime * self.
UNIX2COOL
121 chsel = cool.ChannelSelection(0,sys.maxsize)
124 itr=folder.browseObjects(startValKey, endValKey, chsel)
125 except Exception
as e:
130 ReceiverId = hex(
int(row.channelId()))
131 payload = row.payload()
132 PPMId = hex(
int(payload[
'ppmid']))
148 if strategy_string
is None:
149 print (
" Warning! in getReceiverfromPPM no runtype given, using default!")
150 return ReceiverChannels[0]
154 if strategy_string ==
"GainOneOvEmbFcalHighEta":
155 for channel
in ReceiverChannels:
158 if strategy_string ==
"GainOneOvEmecFcalLowEta":
159 for channel
in ReceiverChannels:
164 if strategy_string ==
"GainOneOvEmbFcalHighEta":
165 for channel
in ReceiverChannels:
168 if strategy_string ==
"GainOneOvEmecFcalLowEta":
169 for channel
in ReceiverChannels:
174 return ReceiverChannels[0]
203 return int(channel[0][0])
206 return int(channel[0][0])
213 return int(channel[0][1])
216 return int(channel[0][1])
222 return missing_channels
225 recI=
int(ReceiverId,16)
228 recI = recI - crate*1024
231 recI = recI - module*64
234 recI = recI - conn*16
238 return [crate,module,conn,pair]
242 if eta_bin >= 32
or eta_bin <= -36:
249 if self.
isCoolEm(CoolId)
is True and (eta_bin == 14
or eta_bin == -15):
263 elif cabling[2] == 0:
265 elif cabling[2] == 2:
268 print (
"Error in GetOverlapLayer, can't determine layer!")
278 RecCoolInt =
int(RecCoolId,16)
279 if RecCoolInt%2 == 1:
311 input_file =
open(name)
313 for line
in input_file.readlines():
314 parts = line.split(
' ')
315 if parts[0] ==
'<Channel':
316 list_cool=parts[1].
split(
'\'')
319 list_gain=parts[2].
split(
'\'')
323 list_offset=parts[3].
split(
'\'')
324 offset=list_offset[1]
327 list_chi2=parts[4].
split(
'\'')
335 input_gains_reference =
open(name)
337 for line
in input_gains_reference.readlines():
338 parts = line.split(
' ')
339 if parts[0] ==
'<Channel':
340 list_cool=parts[1].
split(
'\'')
343 list_gain=parts[2].
split(
'\'')
351 dbSvc = cool.DatabaseSvcFactory.databaseService()
353 dbString=
'sqlite://;schema='+name+
';dbname=L1CALO'
355 db = dbSvc.openDatabase(dbString,
False)
356 except Exception
as e:
357 print (
'Error: Problem opening database', e)
360 folder_name =
'/TRIGGER/L1Calo/V1/Results/EnergyScanResults'
361 folder=db.getFolder(folder_name)
363 startUtime =
int(time.time())
364 endUtime =
int(time.time())
365 startValKey = startUtime * self.
UNIX2COOL
367 chsel = cool.ChannelSelection(0,sys.maxsize)
370 itr=folder.browseObjects(startValKey, endValKey, chsel)
371 except Exception
as e:
376 CoolId = hex(
int(row.channelId()))
377 payload = row.payload()
382 folder_gen_name =
'/TRIGGER/L1Calo/V1/Results/EnergyScanRunInfo'
383 folder_gen=db.getFolder(folder_gen_name)
386 itr=folder_gen.browseObjects(startValKey, endValKey, chsel)
388 payload = row.payload()
389 self.
run_nr = payload[
'RunNumber']
390 self.
strategy = payload[
'GainStrategy']
392 print ( (
"Run nr. = %d, Strategy = %s") % (self.
run_nr, self.
strategy) )
395 print (
"Warning, in LoadGainsSqlite can't get runtype info! Hope this is not serious!")
403 dbSvc = cool.DatabaseSvcFactory.databaseService()
405 dbString=
'sqlite://;schema='+name+
';dbname=L1CALO'
407 db = dbSvc.openDatabase(dbString,
False)
408 except Exception
as e:
409 print (
'Error: Problem opening database', e)
412 folder_name =
'/TRIGGER/L1Calo/V1/Results/EnergyScanResults'
413 folder=db.getFolder(folder_name)
415 startUtime =
int(time.time())
416 endUtime =
int(time.time())
417 startValKey = startUtime * self.
UNIX2COOL
419 chsel = cool.ChannelSelection(0,sys.maxsize)
422 itr=folder.browseObjects(startValKey, endValKey, chsel)
423 except Exception
as e:
428 CoolId = hex(
int(row.channelId()))
429 payload = row.payload()
439 dbSvc = cool.DatabaseSvcFactory.databaseService()
441 dbString =
'oracle://ATLAS_COOLPROD;schema=ATLAS_COOLONL_TRIGGER;dbname=CONDBR2'
443 db = dbSvc.openDatabase(dbString,
False)
444 except Exception
as e:
445 print (
'Error: Problem opening database', e)
448 folder_name =
"/TRIGGER/Receivers/Factors/CalibGains"
449 folder=db.getFolder(folder_name)
451 startUtime =
int(time.time())
452 endUtime =
int(time.time())
453 startValKey = startUtime * self.
UNIX2COOL
455 chsel = cool.ChannelSelection(0,sys.maxsize)
458 itr=folder.browseObjects(startValKey, endValKey, chsel)
459 except Exception
as e:
464 ReceiverId = hex(
int(row.channelId()))
465 PPMId = mapping_tool.getPPMfromReceiver(ReceiverId)
466 payload = row.payload()
467 gain = payload[
'factor']
469 if PPMId
is not None:
473 if mapping_tool.getReceiverfromPPM(PPMId,self.
strategy) == ReceiverId:
519 def __init__(self,name,nbins=40,minimum=0.,maximum=2.,XaxisTitle="",YaxisTitle=""):
522 self.
ext = [
"all",
"00_15",
"15_25",
"25_32",
"32_50"]
523 self.
name = [
"all",
"EMB",
"EMEC outer",
"EMEC Inner",
"FCAL 1"]
526 EmPartitionPlots.Counter += 1
530 hname = (
"GainTTEm_%d"%EmPartitionPlots.Counter) + self.
ext[i_em_partition]
531 htitle = name+
" for "+self.
name[i_em_partition]
539 if ( -9 <= eta_bin
and eta_bin <= 8):
541 elif ((eta_bin>8
and eta_bin<=14)
or (eta_bin>=-15
and eta_bin<-9)):
544 elif ((eta_bin>14
and eta_bin<=24)
or (eta_bin>=-25
and eta_bin<-15)):
546 elif ((eta_bin>24
and eta_bin<=31)
or (eta_bin>=-32
and eta_bin<-25)):
548 elif ((eta_bin>31)
or (eta_bin<-32)):
560 print (
"Warning in EmPartitionPlots, nonexisting partition!" )
564 def __init__(self,name,nbins=40,minimum=0.,maximum=2.,XaxisTitle="",YaxisTitle=""):
567 self.
ext = [
"all",
"00_09",
"09_15",
"15_25",
"25_32",
"32_50"]
568 self.
name = [
"all",
"Tile LB",
"Tile EB",
"HEC outer",
"HEC inner",
"FCAL 2/3"]
573 HadPartitionPlots.Counter += 1
575 hname = (
"GainTTHad_%d"%HadPartitionPlots.Counter) + self.
ext[i_had_partition]
576 htitle = name+
" for "+self.
name[i_had_partition]
584 if ( -9 <= eta_bin
and eta_bin <= 8):
586 elif ((eta_bin>8
and eta_bin<=14)
or (eta_bin>=-15
and eta_bin<-9)):
589 elif ((eta_bin>14
and eta_bin<=24)
or (eta_bin>=-25
and eta_bin<-15)):
591 elif ((eta_bin>24
and eta_bin<=31)
or (eta_bin>=-32
and eta_bin<-25)):
593 elif ((eta_bin>31)
or (eta_bin<-32)):
605 print (
"Warning in HadPartitionPlots, nonexisting partition!" )
609 isInputXml=False,isInputSqlite=False,
610 isRefXml=False,isRefSqlite=False,isRefOracle=False,
613 ROOT.gROOT.SetBatch(
True )
614 ROOT.gStyle.SetPalette(1)
615 ROOT.gStyle.SetOptStat(111111)
616 ROOT.gStyle.SetCanvasColor(10)
618 ROOT.gStyle.SetPadTopMargin(0.12)
619 ROOT.gStyle.SetPadBottomMargin(0.12)
620 ROOT.gStyle.SetPadRightMargin(0.12)
621 ROOT.gStyle.SetPadLeftMargin(0.12)
623 canvas = ROOT.TCanvas(
'canvas',
'Gains',0,0,600,800)
624 canvas.SetBatch(
True)
626 h_gains_em =
L1CaloMap(
"EM receiver gains",
"#eta bin",
"#phi bin")
627 h_gains_had =
L1CaloMap(
"HAD receiver gains",
"#eta bin",
"#phi bin")
629 h_gains_em_fselect =
L1CaloMap(
"EM gains that failed selection",
"#eta bin",
"#phi bin")
630 h_gains_had_fselect =
L1CaloMap(
"HAD gains that failed selection",
"#eta bin",
"#phi bin")
632 h_chi2_em =
L1CaloMap(
"EM fit Chi2",
"#eta bin",
"#phi bin")
633 h_chi2_had =
L1CaloMap(
"HAD fit Chi2",
"#eta bin",
"#phi bin")
635 h_offset_em =
L1CaloMap(
"EM fit offsets",
"#eta bin",
"#phi bin")
636 h_offset_had =
L1CaloMap(
"HAD fit offsets",
"#eta bin",
"#phi bin")
638 h_unfitted_em =
L1CaloMap(
"EM failed fits",
"#eta bin",
"#phi bin")
639 h_unfitted_had =
L1CaloMap(
"HAD failed fits",
"#eta bin",
"#phi bin")
641 h_drifted_em =
L1CaloMap(
"EM TTs that drifted by more than 10%",
"#eta bin",
"#phi bin")
642 h_drifted_had =
L1CaloMap(
"HAD TTs that drifted by more than 10%",
"#eta bin",
"#phi bin")
644 h_gains_em_reference =
L1CaloMap(
"EM (gain-reference)",
"#eta bin",
"#phi bin")
645 h_gains_had_reference =
L1CaloMap(
"HAD (gain-reference)",
"#eta bin",
"#phi bin")
647 h_gains_em_reference_rel =
L1CaloMap(
"EM (gain-reference)/reference",
"#eta bin",
"#phi bin")
648 h_gains_had_reference_rel =
L1CaloMap(
"HAD (gain-reference)/reference",
"#eta bin",
"#phi bin")
649 em_partition_gains =
EmPartitionPlots(
" EM gains",40,0.6,1.4,
"gain",
"Entries")
650 had_partition_gains =
HadPartitionPlots(
" HAD gains",40,0.5,2.5,
"gain",
"Entries")
652 em_partition_gains_ref =
EmPartitionPlots(
" EM (gains-reference)",40,-0.2,0.2,
"gain-reference",
"Entries")
653 had_partition_gains_ref =
HadPartitionPlots(
" HAD (gains-reference)",40,-1.,1.,
"gain-reference",
"Entries")
655 em_partition_gains_ref_rel =
EmPartitionPlots(
" EM (gains-reference)/reference",40,-0.2,0.2,
"(gain-reference)/reference",
"Entries")
656 had_partition_gains_ref_rel =
HadPartitionPlots(
" HAD (gains-reference)/reference",40,-1.,1.,
"(gain-reference)/reference",
"Entries")
658 threshold_change = 0.1
663 bad_gain_file =
open(
'bad_gains.txt',
'w')
664 drifted_towers_file =
open(
'drifted_towers.txt',
'w')
666 if isInputXml
is True:
667 print (
"Taking input from xml file: ", input_file_name)
668 receiver_gains.LoadGainsXml(input_file_name)
669 elif isInputSqlite
is True:
670 print (
"Taking input from Sqlite file: ", input_file_name)
671 receiver_gains.LoadGainsSqlite(input_file_name)
673 print (
"No option for input file selected, assuming sqlite file energyscanresults.sqlite")
674 receiver_gains.LoadGainsSqlite(
"energyscanresults.sqlite")
677 print (
"Taking reference from Xml file: ",reference_file_name)
678 receiver_gains.LoadReferenceXml(reference_file_name)
679 elif isRefSqlite
is True:
680 print (
"Taking reference from Sqlite file: ",reference_file_name)
681 receiver_gains.LoadReferenceSqlite(reference_file_name)
682 elif isRefOracle
is True:
683 print (
"Taking reference from Oracle")
684 geometry_convertor.LoadReceiverPPMMap()
685 receiver_gains.LoadReferenceOracle(geometry_convertor)
687 print (
" No option for reference file, assuming Oracle")
688 geometry_convertor.LoadReceiverPPMMap()
689 receiver_gains.LoadReferenceOracle(geometry_convertor)
691 for i_eta
in range(-49,45):
692 for i_phi
in range(0,64):
693 coolEm = geometry_convertor.getCoolEm(i_eta,i_phi)
694 coolHad = geometry_convertor.getCoolHad(i_eta,i_phi)
697 gain = receiver_gains.getGain(coolEm)
698 chi2 = receiver_gains.getChi2(coolEm)
699 offset = receiver_gains.getOffset(coolEm)
700 reference_gain = receiver_gains.getReferenceGain(coolEm)
701 passes_selection = receiver_gains.passesSelection(coolEm)
703 if (
not gain ==
'')
and (
not reference_gain ==
''):
706 h_unfitted_em.Fill(i_eta,i_phi)
707 bad_gain_file.write(
'%i %i %s EM gain= %.3f \n' % (i_eta,i_phi,coolEm,
float(gain)))
708 h_gains_em_reference.Fill(i_eta,i_phi,-100.)
709 h_gains_em_reference_rel.Fill(i_eta,i_phi,-100.)
711 h_gains_em.Fill(i_eta,i_phi,gain)
712 h_chi2_em.Fill(i_eta,i_phi,chi2)
713 h_offset_em.Fill(i_eta,i_phi,offset)
714 em_partition_gains.Fill(i_eta,gain)
715 em_partition_gains_ref.Fill(i_eta,gain-reference_gain)
716 h_gains_em_reference.Fill(i_eta,i_phi,gain-reference_gain)
718 if passes_selection
is False:
719 h_gains_em_fselect.Fill(i_eta,i_phi)
720 bad_gain_file.write(
'%i %i %s EM gain= %.3f chi2= %.3f offset= %.3f \n' %
725 if reference_gain > 0:
726 em_partition_gains_ref_rel.Fill(i_eta,(gain-reference_gain)/reference_gain)
727 h_gains_em_reference_rel.Fill(i_eta,i_phi,(gain-reference_gain)/reference_gain)
728 if fabs((gain-reference_gain)/reference_gain) > threshold_change:
729 h_drifted_em.Fill(i_eta,i_phi)
730 drifted_towers_file.write(
'%i %i %s EM gain= %.3f refGain= %.3f (%.3f %%) \n' %
731 (i_eta,i_phi,coolEm,
float(gain),
float(reference_gain),
732 (gain-reference_gain)*100/reference_gain))
735 if not coolHad ==
'':
736 gain = receiver_gains.getGain(coolHad)
737 chi2 = receiver_gains.getChi2(coolHad)
738 offset = receiver_gains.getOffset(coolHad)
739 reference_gain = receiver_gains.getReferenceGain(coolHad)
740 passes_selection = receiver_gains.passesSelection(coolHad)
742 if (
not gain ==
'')
and (
not reference_gain ==
''):
745 h_unfitted_had.Fill(i_eta,i_phi)
746 bad_gain_file.write(
'%i %i %s HAD gain= %.3f \n' % (i_eta,i_phi,coolHad,
float(gain)))
747 h_gains_had_reference.Fill(i_eta,i_phi,-100.)
748 h_gains_had_reference_rel.Fill(i_eta,i_phi,-100.)
750 h_gains_had.Fill(i_eta,i_phi,gain)
751 h_chi2_had.Fill(i_eta,i_phi,chi2)
752 h_offset_had.Fill(i_eta,i_phi,offset)
753 had_partition_gains.Fill(i_eta,gain)
754 had_partition_gains_ref.Fill(i_eta,gain-reference_gain)
755 h_gains_had_reference.Fill(i_eta,i_phi,gain-reference_gain)
757 if passes_selection
is False:
758 h_gains_had_fselect.Fill(i_eta,i_phi)
759 bad_gain_file.write(
'%i %i %s HAD gain= %.3f chi2= %.3f offset= %.3f \n' %
764 if reference_gain > 0:
765 had_partition_gains_ref_rel.Fill(i_eta,(gain-reference_gain)/reference_gain)
766 h_gains_had_reference_rel.Fill(i_eta,i_phi,(gain-reference_gain)/reference_gain)
767 if fabs((gain-reference_gain)/reference_gain) > threshold_change:
768 h_drifted_had.Fill(i_eta,i_phi)
769 drifted_towers_file.write(
'%i %i %s HAD gain= %.3f refGain= %.3f (%.3f %%) \n' %
770 (i_eta,i_phi,coolHad,
float(gain),
float(reference_gain),
771 (gain-reference_gain)*100/reference_gain))
774 pdfFileName =
"Gains.pdf"
775 canvas.Print( pdfFileName +
"[" )
783 h_gains_em.SetMinimum(0.6)
784 h_gains_em.SetMaximum(1.4)
788 canvas.Print( pdfFileName )
796 h_gains_em_fselect.Draw()
799 canvas.Print( pdfFileName )
806 h_gains_had.SetMinimum(0.6)
807 h_gains_had.SetMaximum(1.4)
811 canvas.Print( pdfFileName )
817 h_gains_had_fselect.Draw()
819 h_unfitted_had.Draw()
820 canvas.Print( pdfFileName )
828 h_gains_em_reference_rel.SetMinimum(-0.5)
829 h_gains_em_reference_rel.SetMaximum(0.5)
830 h_gains_em_reference_rel.Draw()
832 h_gains_em_reference_rel.SetMinimum(-0.1)
833 h_gains_em_reference_rel.SetMaximum(0.1)
834 h_gains_em_reference_rel.Draw()
835 canvas.Print( pdfFileName )
842 h_gains_had_reference_rel.SetMinimum(-0.5)
843 h_gains_had_reference_rel.SetMaximum(0.5)
844 h_gains_had_reference_rel.Draw()
846 h_gains_had_reference_rel.SetMinimum(-0.1)
847 h_gains_had_reference_rel.SetMaximum(0.1)
848 h_gains_had_reference_rel.Draw()
849 canvas.Print( pdfFileName )
857 h_gains_em_reference.SetMinimum(-0.5)
858 h_gains_em_reference.SetMaximum(0.5)
859 h_gains_em_reference.Draw()
862 h_gains_em_reference.SetMinimum(-0.1)
863 h_gains_em_reference.SetMaximum(0.1)
864 h_gains_em_reference.Draw()
865 canvas.Print( pdfFileName )
872 h_gains_had_reference.SetMinimum(-0.5)
873 h_gains_had_reference.SetMaximum(0.5)
874 h_gains_had_reference.Draw()
877 h_gains_had_reference.SetMinimum(-0.1)
878 h_gains_had_reference.SetMaximum(0.1)
879 h_gains_had_reference.Draw()
880 canvas.Print( pdfFileName )
888 h_chi2_em.SetMinimum(0.1)
889 h_chi2_em.SetMaximum(100)
893 h_offset_em.SetMinimum(-1.)
894 h_offset_em.SetMaximum(1.)
896 canvas.Print( pdfFileName )
903 h_chi2_had.SetMinimum(0.1)
904 h_chi2_had.SetMaximum(100)
908 h_offset_had.SetMinimum(-1.)
909 h_offset_had.SetMaximum(1.)
911 canvas.Print( pdfFileName )
917 for i_p
in range(0,em_partition_gains.nPartitions):
919 ROOT.gPad.SetLogy()
if em_partition_gains.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
920 em_partition_gains.his_partitions[i_p].Draw()
921 canvas.Print( pdfFileName )
926 for i_p
in range(0,had_partition_gains.nPartitions):
927 if (isTileOnly
and i_p>2):
break
929 ROOT.gPad.SetLogy()
if had_partition_gains.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
930 had_partition_gains.his_partitions[i_p].Draw()
931 canvas.Print( pdfFileName )
937 for i_p
in range(0,em_partition_gains_ref.nPartitions):
939 ROOT.gPad.SetLogy()
if em_partition_gains_ref.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
940 em_partition_gains_ref.his_partitions[i_p].Draw()
941 canvas.Print( pdfFileName )
946 for i_p
in range(0,had_partition_gains_ref.nPartitions):
947 if (isTileOnly
and i_p>2):
break
949 ROOT.gPad.SetLogy()
if had_partition_gains_ref.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
950 had_partition_gains_ref.his_partitions[i_p].Draw()
951 canvas.Print( pdfFileName )
957 for i_p
in range(0,em_partition_gains_ref_rel.nPartitions):
959 ROOT.gPad.SetLogy()
if em_partition_gains_ref_rel.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
960 em_partition_gains_ref_rel.his_partitions[i_p].Draw()
961 canvas.Print( pdfFileName )
966 for i_p
in range(0,had_partition_gains_ref_rel.nPartitions):
967 if (isTileOnly
and i_p>2):
break
969 ROOT.gPad.SetLogy()
if had_partition_gains_ref_rel.his_partitions[i_p].
GetEntries()>0
else ROOT.gPad.SetLogy(0)
970 had_partition_gains_ref_rel.his_partitions[i_p].Draw()
971 canvas.Print( pdfFileName )
974 canvas.Print( pdfFileName +
"]" )
975 bad_gain_file.close()
976 drifted_towers_file.close()
980 if __name__ ==
"__main__":
982 print (
"Starting plot_gains_xml")
984 parser = OptionParser()
985 parser.add_option(
"-f",
"--InputFile",action=
"store",type=
"string",dest=
"input_file_name",help=
"Name of input file")
986 parser.add_option(
"-r",
"--ReferenceFile",action=
"store",type=
"string",dest=
"reference_file_name",help=
"Name of reference file")
987 parser.add_option(
"--InputXml",action=
"store_true",dest=
"isInputXml",help=
"Input is .xml file")
988 parser.add_option(
"--InputSqlite",action=
"store_true",dest=
"isInputSqlite",help=
"Input is .sqlite file")
989 parser.add_option(
"--RefXml",action=
"store_true",dest=
"isRefXml",help=
"Reference is .xml file")
990 parser.add_option(
"--RefSqlite",action=
"store_true",dest=
"isRefSqlite",help=
"Reference is .sqlite file")
991 parser.add_option(
"--RefOracle",action=
"store_true",dest=
"isRefOracle",help=
"Reference is from Oracle")
992 parser.add_option(
"--TileOnly",action=
"store_true",dest=
"isTileOnly",help=
"Show only Tile",default=
True)
994 (options, args) = parser.parse_args()
997 options.isInputSqlite, options.isRefXml, options.isRefSqlite, options.isRefOracle,