Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes | Functions | Variables
PlotCalibrationGains Namespace Reference

Classes

class  EmPartitionPlots
 
class  GainReader
 
class  HadPartitionPlots
 
class  L1CaloGeometryConvertor
 
class  L1CaloMap
 

Functions

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

Variables

 parser
 
 action
 
 type
 
 dest
 
 help
 
 default
 
 options
 
 args
 

Function Documentation

◆ PlotCalibrationGains()

def 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.

608 def PlotCalibrationGains(input_file_name="",reference_file_name="",
609  isInputXml=False,isInputSqlite=False,
610  isRefXml=False,isRefSqlite=False,isRefOracle=False,
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 

◆ setAxisSizes()

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

Definition at line 14 of file PlotCalibrationGains.py.

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

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

Definition at line 25 of file PlotCalibrationGains.py.

25 def 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

Definition at line 984 of file PlotCalibrationGains.py.

◆ type

PlotCalibrationGains.type

Definition at line 985 of file PlotCalibrationGains.py.

GetEntries
TGraphErrors * GetEntries(TH2F *histo)
Definition: TRTCalib_makeplots.cxx:4019
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
PlotCalibrationGains.PlotCalibrationGains
def PlotCalibrationGains(input_file_name="", reference_file_name="", isInputXml=False, isInputSqlite=False, isRefXml=False, isRefSqlite=False, isRefOracle=False, isTileOnly=False)
Definition: PlotCalibrationGains.py:608
PlotCalibrationGains.setAxisTitles
def setAxisTitles(histos, xtit, ytit, ztit="foo", xoff=0, yoff=0, zoff=0)
Definition: PlotCalibrationGains.py:25
Trk::open
@ open
Definition: BinningType.h:40
PlotCalibrationGains.setAxisSizes
def setAxisSizes(histos, tsize=0.05, lsize=0.05, zsize=0.05)
Definition: PlotCalibrationGains.py:14
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65