ATLAS Offline Software
CalibDbCompareT0.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 
4 import getopt
5 import sys
6 import CalibDbDefaults
7 
8 calibtype = 'rt'
9 cool_database_string = CalibDbDefaults.cool_database_string
10 cool_folder = CalibDbDefaults.cool_folders[calibtype]
11 cool_tag = CalibDbDefaults.cool_tags[calibtype]
12 dbname = CalibDbDefaults.cool_dbname
13 
14 # we may want to modify to take reader password from CalibDbInfo for convenience
15 
16 def printhelp(argv0):
17  sys.stderr.write("Usage: " + argv0 + " [-h] [-s <cool database string>] [-f <cool folder>] [-t <cool tag>] <run number> <calib db>/<head id> <reader password> <root file>\n")
18  sys.exit(1)
19 
20 optlist, args = getopt.gnu_getopt(sys.argv, 'hs:f:t:')
21 if not len(args)==5:
22  printhelp(args[0])
23 
24 for opt, oa in optlist:
25  if opt=='-s':
26  if oa[-2:]=='db':
27  cool_database_string = 'sqlite://;schema=' + oa + ';dbname=' + dbname
28  cool_tag=''
29  else:
30  cool_database_string = oa
31  continue
32  if opt=='-f':
33  cool_folder=oa
34  continue
35  if opt=='-t':
36  cool_tag=oa
37  continue
38 
39 run_number=int(args[1])
40 asp=args[2].split("/")
41 db=asp[0]
42 head_id=int(asp[1])
43 reader_password=args[3]
44 root_filename=args[4]
45 
46 sys.argv=[ sys.argv[0], '-b' ]
47 from ROOT import *
48 from array import *
51 
52 if not cool_tag:
53  cool_tag = GetFolderTag(cool_database_string, cool_folder)
54 
55 
56 print ("Cool database: " + cool_database_string + " " + cool_folder + " " + cool_tag + " " + str(run_number))
57 cool_t0s=ReadT0Cool(cool_database_string, cool_folder, cool_tag, run_number)
58 
59 print ("Calibration database: " + db + "/" + str(head_id))
60 calib_t0s=ReadT0CalibDb(db, reader_password, head_id)
61 print (len(calib_t0s), "chambers in calibration databse")
62 
63 outfile=TFile(root_filename, "RECREATE")
64 tree=TTree("tree", "t0 differences")
65 
66 station_nm=array('c', "BIL\0")
67 station_phi=array('i', [0])
68 station_eta=array('i', [0])
69 tree.Branch("station_nm", station_nm, "station_nm/C")
70 tree.Branch("station_phi", station_phi, "station_phi/I")
71 tree.Branch("station_eta", station_eta, "station_eta/I")
72 n_tubes=array('i', [0])
73 n_tubes_calib=array('i', [0])
74 n_tubes_cool=array('i', [0])
75 dt0=array('f', 432*[0.0])
76 t0_cool=array('f', 432*[0.0])
77 t0_calib=array('f', 432*[0.0])
78 d_validflag=array('i', 432*[0])
79 validflag_cool=array('i', 432*[0])
80 validflag_calib=array('i', 432*[0])
81 d_adc=array('f', 432*[0])
82 tree.Branch("n_tubes", n_tubes, "n_tubes/I")
83 tree.Branch("n_tubes_calib", n_tubes_calib, "n_tubes_calib/I")
84 tree.Branch("n_tubes_cool", n_tubes_cool, "n_tubes_cool/I")
85 tree.Branch("dt0", dt0, "dt0[n_tubes]/F")
86 
87 tree.Branch("t0_cool", t0_cool, "t0_cool[n_tubes]/F")
88 tree.Branch("t0_calib", t0_calib, "t0_calib[n_tubes]/F")
89 
90 
91 tree.Branch("d_validflag", d_validflag, "d_validflag[n_tubes]/I")
92 tree.Branch("validflag_cool", validflag_cool, "validflag_cool[n_tubes]/I")
93 tree.Branch("validflag_calib", validflag_calib, "validflag_calib[n_tubes]/I")
94 tree.Branch("d_adc", d_adc, "d_adc[n_tubes]/F")
95 
96 for chamber_id in cool_t0s:
97  if chamber_id not in calib_t0s:
98  n_tubes[0]=0
99  continue
100  for i in range(0,3):
101  station_nm[i]=chamber_id[0][i]
102  print (station_nm)
103  station_phi[0]=chamber_id[1]
104  station_eta[0]=chamber_id[2]
105  cot0s=cool_t0s[chamber_id]
106  cat0s=calib_t0s[chamber_id]
107  n_tubes[0]=min(len(cot0s), len(cat0s))
108  n_tubes_calib[0]=len(cat0s)
109  n_tubes_cool[0]=len(cot0s)
110  for i in range(0, n_tubes[0]):
111  dt0[i]=cot0s[i][0] - cat0s[i][0]
112  d_validflag[i]=cot0s[i][1] - cat0s[i][1]
113  validflag_cool[i]=cot0s[i][1]
114  validflag_calib[i]=cat0s[i][1]
115  d_adc[i]=cot0s[i][2] - cat0s[i][2]
116  t0_cool[i]=cot0s[i][0]
117  t0_calib[i]=cat0s[i][0]
118  tree.Fill()
119 
120 outfile.Write()
121 
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
ReadCool.ReadT0Cool
def ReadT0Cool(db_string, folder, tag, run_number)
Definition: MuonSpectrometer/MuonCalib/MuonCalibDbOperations/python/ReadCool.py:122
CalibDbCompareT0.printhelp
def printhelp(argv0)
Definition: CalibDbCompareT0.py:16
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
ReadCalibDb.ReadT0CalibDb
def ReadT0CalibDb(db, reader_passwd, head_id)
Definition: ReadCalibDb.py:73
array
ReadCool.GetFolderTag
def GetFolderTag(db_string, folder)
Definition: MuonSpectrometer/MuonCalib/MuonCalibDbOperations/python/ReadCool.py:158
ReadCalibDb
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
ReadCool
str
Definition: BTagTrackIpAccessor.cxx:11
Trk::split
@ split
Definition: LayerMaterialProperties.h:38