ATLAS Offline Software
Loading...
Searching...
No Matches
PlotCalibrationGains Namespace Reference

Classes

class  EmPartitionPlots
class  GainReader
class  HadPartitionPlots
class  L1CaloGeometryConvertor
class  L1CaloMap

Functions

 setAxisSizes (histos, tsize=0.05, lsize=0.05, zsize=0.05)
 setAxisTitles (histos, xtit, ytit, ztit="foo", xoff=0, yoff=0, zoff=0)
 PlotCalibrationGains (input_file_name="", reference_file_name="", isInputXml=False, isInputSqlite=False, isRefXml=False, isRefSqlite=False, isRefOracle=False, isTileOnly=False)

Variables

 parser = OptionParser()
 action
 type
 dest
 help
 default
 options
 args

Function Documentation

◆ PlotCalibrationGains()

PlotCalibrationGains.PlotCalibrationGains ( input_file_name = "",
reference_file_name = "",
isInputXml = False,
isInputSqlite = False,
isRefXml = False,
isRefSqlite = False,
isRefOracle = False,
isTileOnly = False )

Definition at line 608 of file PlotCalibrationGains.py.

611 isTileOnly=False):
612
613 ROOT.gROOT.SetBatch( True )
614 ROOT.gStyle.SetPalette(1)
615 ROOT.gStyle.SetOptStat(111111)
616 ROOT.gStyle.SetCanvasColor(10)
617
618 ROOT.gStyle.SetPadTopMargin(0.12)
619 ROOT.gStyle.SetPadBottomMargin(0.12)
620 ROOT.gStyle.SetPadRightMargin(0.12)
621 ROOT.gStyle.SetPadLeftMargin(0.12)
622
623 canvas = ROOT.TCanvas('canvas','Gains',0,0,600,800)
624 canvas.SetBatch(True)
625
626 h_gains_em = L1CaloMap("EM receiver gains","#eta bin","#phi bin")
627 h_gains_had = L1CaloMap("HAD receiver gains","#eta bin","#phi bin")
628
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")
631
632 h_chi2_em = L1CaloMap("EM fit Chi2","#eta bin","#phi bin")
633 h_chi2_had = L1CaloMap("HAD fit Chi2","#eta bin","#phi bin")
634
635 h_offset_em = L1CaloMap("EM fit offsets","#eta bin","#phi bin")
636 h_offset_had = L1CaloMap("HAD fit offsets","#eta bin","#phi bin")
637
638 h_unfitted_em = L1CaloMap("EM failed fits","#eta bin","#phi bin")
639 h_unfitted_had = L1CaloMap("HAD failed fits","#eta bin","#phi bin")
640
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")
643
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")
646
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")
651
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")
654
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")
657
658 threshold_change = 0.1
659
660 geometry_convertor = L1CaloGeometryConvertor()
661 receiver_gains = GainReader()
662
663 bad_gain_file = open('bad_gains.txt','w')
664 drifted_towers_file = open('drifted_towers.txt','w')
665
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)
672 else:
673 print ("No option for input file selected, assuming sqlite file energyscanresults.sqlite")
674 receiver_gains.LoadGainsSqlite("energyscanresults.sqlite")
675
676 if isRefXml is True:
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)
686 else:
687 print (" No option for reference file, assuming Oracle")
688 geometry_convertor.LoadReceiverPPMMap()
689 receiver_gains.LoadReferenceOracle(geometry_convertor)
690
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)
695
696 if not coolEm == '': # there is a channel for this eta-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)
702
703 if (not gain == '') and (not reference_gain == ''): # both gains should be available
704
705 if gain == -1. :
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.)
710 else:
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)
717
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' %
721 (i_eta,i_phi,coolEm,float(gain),float(chi2),float(offset)))
722 #h_gains_em_reference.Fill(i_eta,i_phi,-100.)
723 #h_gains_em_reference_rel.Fill(i_eta,i_phi,-100.)
724
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))
733
734
735 if not coolHad == '': # there is a channel for this eta-phi
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)
741
742 if (not gain == '') and (not reference_gain == ''): # both gains should be available
743
744 if gain == -1. :
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.)
749 else:
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)
756
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' %
760 (i_eta,i_phi,coolHad,float(gain),float(chi2),float(offset)))
761 #h_gains_had_reference.Fill(i_eta,i_phi,-100.)
762 #h_gains_had_reference_rel.Fill(i_eta,i_phi,-100.)
763
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))
772
773 # start the plotting
774 pdfFileName = "Gains.pdf"
775 canvas.Print( pdfFileName + "[" )
776
777 # new page: EM gains and drifts
778 if not isTileOnly:
779 canvas.Clear()
780 canvas.Divide(1,2)
781 canvas.cd(1)
782 ROOT.gPad.SetLogy(0)
783 h_gains_em.SetMinimum(0.6)
784 h_gains_em.SetMaximum(1.4)
785 h_gains_em.Draw()
786 canvas.cd(2)
787 h_drifted_em.Draw()
788 canvas.Print( pdfFileName )
789
790 # new page: EM gains that failed selection and failed fits
791 if not isTileOnly:
792 canvas.Clear()
793 canvas.Divide(1,2)
794 canvas.cd(1)
795 ROOT.gPad.SetLogy(0)
796 h_gains_em_fselect.Draw()
797 canvas.cd(2)
798 h_unfitted_em.Draw()
799 canvas.Print( pdfFileName )
800
801 # new page: HAD gains and drifts
802 canvas.Clear()
803 canvas.Divide(1,2)
804 canvas.cd(1)
805 ROOT.gPad.SetLogy(0)
806 h_gains_had.SetMinimum(0.6)
807 h_gains_had.SetMaximum(1.4)
808 h_gains_had.Draw()
809 canvas.cd(2)
810 h_drifted_had.Draw()
811 canvas.Print( pdfFileName )
812
813 # new page: HAD gains that failed selection and failed fits
814 canvas.Clear()
815 canvas.Divide(1,2)
816 canvas.cd(1)
817 h_gains_had_fselect.Draw()
818 canvas.cd(2)
819 h_unfitted_had.Draw()
820 canvas.Print( pdfFileName )
821
822 # new page: EM gains relative references
823 if not isTileOnly:
824 canvas.Clear()
825 canvas.Divide(1,2)
826 canvas.cd(1)
827 ROOT.gPad.SetLogy(0)
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()
831 canvas.cd(2)
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 )
836
837 # new page: HAD gains relative references
838 canvas.Clear()
839 canvas.Divide(1,2)
840 canvas.cd(1)
841 ROOT.gPad.SetLogy(0)
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()
845 canvas.cd(2)
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 )
850
851 # new page: EM gains absolute references
852 if not isTileOnly:
853 canvas.Clear()
854 canvas.Divide(1,2)
855 canvas.cd(1)
856 ROOT.gPad.SetLogy(0)
857 h_gains_em_reference.SetMinimum(-0.5)
858 h_gains_em_reference.SetMaximum(0.5)
859 h_gains_em_reference.Draw()
860 canvas.cd(2)
861 ROOT.gPad.SetLogy(0)
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 )
866
867 # new page: HAD gains absolute references
868 canvas.Clear()
869 canvas.Divide(1,2)
870 canvas.cd(1)
871 ROOT.gPad.SetLogy(0)
872 h_gains_had_reference.SetMinimum(-0.5)
873 h_gains_had_reference.SetMaximum(0.5)
874 h_gains_had_reference.Draw()
875 canvas.cd(2)
876 ROOT.gPad.SetLogy(0)
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 )
881
882 # new page: EM chi2 and offsets
883 if not isTileOnly:
884 canvas.Clear()
885 canvas.Divide(1,2)
886 canvas.cd(1)
887 ROOT.gPad.SetLogy(0)
888 h_chi2_em.SetMinimum(0.1)
889 h_chi2_em.SetMaximum(100)
890 h_chi2_em.Draw()
891 canvas.cd(2)
892 ROOT.gPad.SetLogy(0)
893 h_offset_em.SetMinimum(-1.)
894 h_offset_em.SetMaximum(1.)
895 h_offset_em.Draw()
896 canvas.Print( pdfFileName )
897
898 # new page: HAD chi2 and offsets
899 canvas.Clear()
900 canvas.Divide(1,2)
901 canvas.cd(1)
902 ROOT.gPad.SetLogy(0)
903 h_chi2_had.SetMinimum(0.1)
904 h_chi2_had.SetMaximum(100)
905 h_chi2_had.Draw()
906 canvas.cd(2)
907 ROOT.gPad.SetLogy(0)
908 h_offset_had.SetMinimum(-1.)
909 h_offset_had.SetMaximum(1.)
910 h_offset_had.Draw()
911 canvas.Print( pdfFileName )
912
913 # new page: EM 1D gains per layer
914 if not isTileOnly:
915 canvas.Clear()
916 canvas.Divide(2,3)
917 for i_p in range(0,em_partition_gains.nPartitions):
918 canvas.cd(i_p+1)
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 )
922
923 # new page: HAD 1D gains per layer
924 canvas.Clear()
925 canvas.Divide(2,3)
926 for i_p in range(0,had_partition_gains.nPartitions):
927 if (isTileOnly and i_p>2): break
928 canvas.cd(i_p+1)
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 )
932
933 # new page: EM 1D gains absolute references per layer
934 if not isTileOnly:
935 canvas.Clear()
936 canvas.Divide(2,3)
937 for i_p in range(0,em_partition_gains_ref.nPartitions):
938 canvas.cd(i_p+1)
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 )
942
943 # new page: HAD 1D gains absolute references per layer
944 canvas.Clear()
945 canvas.Divide(2,3)
946 for i_p in range(0,had_partition_gains_ref.nPartitions):
947 if (isTileOnly and i_p>2): break
948 canvas.cd(i_p+1)
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 )
952
953 # new page: EM 1D gains relative references per layer
954 if not isTileOnly:
955 canvas.Clear()
956 canvas.Divide(2,3)
957 for i_p in range(0,em_partition_gains_ref_rel.nPartitions):
958 canvas.cd(i_p+1)
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 )
962
963 # new page: HAD 1D gains relative references per layer
964 canvas.Clear()
965 canvas.Divide(2,3)
966 for i_p in range(0,had_partition_gains_ref_rel.nPartitions):
967 if (isTileOnly and i_p>2): break
968 canvas.cd(i_p+1)
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 )
972
973 # Closing files
974 canvas.Print( pdfFileName + "]" )
975 bad_gain_file.close()
976 drifted_towers_file.close()
977 print ("finished!")
978
979
TGraphErrors * GetEntries(TH2F *histo)

◆ setAxisSizes()

PlotCalibrationGains.setAxisSizes ( histos,
tsize = 0.05,
lsize = 0.05,
zsize = 0.05 )

Definition at line 14 of file PlotCalibrationGains.py.

14def setAxisSizes(histos, tsize=0.05, lsize=0.05, zsize=0.05):
15 for h in histos:
16 h.GetXaxis().SetTitleSize(tsize)
17 h.GetXaxis().SetLabelSize(lsize)
18 h.GetYaxis().SetTitleSize(tsize)
19 h.GetYaxis().SetLabelSize(lsize)
20
21 if h.GetZaxis():
22 h.GetZaxis().SetTitleSize(zsize)
23 h.GetZaxis().SetLabelSize(zsize)
24

◆ setAxisTitles()

PlotCalibrationGains.setAxisTitles ( histos,
xtit,
ytit,
ztit = "foo",
xoff = 0,
yoff = 0,
zoff = 0 )

Definition at line 25 of file PlotCalibrationGains.py.

25def setAxisTitles(histos, xtit, ytit, ztit="foo", xoff=0, yoff=0, zoff=0):
26 for h in histos:
27 h.GetXaxis().SetTitle(xtit)
28 h.GetYaxis().SetTitle(ytit)
29 if ztit != "foo":
30 h.GetZaxis().SetTitle(ztit)
31
32 if xoff!=0: h.GetXaxis().SetTitleOffset(xoff)
33 if yoff!=0: h.GetYaxis().SetTitleOffset(yoff)
34 if zoff!=0: h.GetZaxis().SetTitleOffset(zoff)
35
36

Variable Documentation

◆ action

PlotCalibrationGains.action

Definition at line 985 of file PlotCalibrationGains.py.

◆ args

PlotCalibrationGains.args

Definition at line 994 of file PlotCalibrationGains.py.

◆ default

PlotCalibrationGains.default

Definition at line 992 of file PlotCalibrationGains.py.

◆ dest

PlotCalibrationGains.dest

Definition at line 985 of file PlotCalibrationGains.py.

◆ help

PlotCalibrationGains.help

Definition at line 985 of file PlotCalibrationGains.py.

◆ options

PlotCalibrationGains.options

Definition at line 994 of file PlotCalibrationGains.py.

◆ parser

PlotCalibrationGains.parser = OptionParser()

Definition at line 984 of file PlotCalibrationGains.py.

◆ type

PlotCalibrationGains.type

Definition at line 985 of file PlotCalibrationGains.py.