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,