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
660 geometry_convertor = L1CaloGeometryConvertor()
661 receiver_gains = GainReader()
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()