ATLAS Offline Software
Loading...
Searching...
No Matches
CalibDbCompareT0.py
Go to the documentation of this file.
1#!/usr/bin/env python
2
3
4import getopt
5import sys
6import CalibDbDefaults
7
8calibtype = 'rt'
9cool_database_string = CalibDbDefaults.cool_database_string
10cool_folder = CalibDbDefaults.cool_folders[calibtype]
11cool_tag = CalibDbDefaults.cool_tags[calibtype]
12dbname = CalibDbDefaults.cool_dbname
13
14# we may want to modify to take reader password from CalibDbInfo for convenience
15
16def 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
20optlist, args = getopt.gnu_getopt(sys.argv, 'hs:f:t:')
21if not len(args)==5:
22 printhelp(args[0])
23
24for 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
39run_number=int(args[1])
40asp=args[2].split("/")
41db=asp[0]
42head_id=int(asp[1])
43reader_password=args[3]
44root_filename=args[4]
45
46sys.argv=[ sys.argv[0], '-b' ]
47from ROOT import *
48from array import *
51
52if not cool_tag:
53 cool_tag = GetFolderTag(cool_database_string, cool_folder)
54
55
56print ("Cool database: " + cool_database_string + " " + cool_folder + " " + cool_tag + " " + str(run_number))
57cool_t0s=ReadT0Cool(cool_database_string, cool_folder, cool_tag, run_number)
58
59print ("Calibration database: " + db + "/" + str(head_id))
60calib_t0s=ReadT0CalibDb(db, reader_password, head_id)
61print (len(calib_t0s), "chambers in calibration databse")
62
63outfile=TFile(root_filename, "RECREATE")
64tree=TTree("tree", "t0 differences")
65
66station_nm=array('c', "BIL\0")
67station_phi=array('i', [0])
68station_eta=array('i', [0])
69tree.Branch("station_nm", station_nm, "station_nm/C")
70tree.Branch("station_phi", station_phi, "station_phi/I")
71tree.Branch("station_eta", station_eta, "station_eta/I")
72n_tubes=array('i', [0])
73n_tubes_calib=array('i', [0])
74n_tubes_cool=array('i', [0])
75dt0=array('f', 432*[0.0])
76t0_cool=array('f', 432*[0.0])
77t0_calib=array('f', 432*[0.0])
78d_validflag=array('i', 432*[0])
79validflag_cool=array('i', 432*[0])
80validflag_calib=array('i', 432*[0])
81d_adc=array('f', 432*[0])
82tree.Branch("n_tubes", n_tubes, "n_tubes/I")
83tree.Branch("n_tubes_calib", n_tubes_calib, "n_tubes_calib/I")
84tree.Branch("n_tubes_cool", n_tubes_cool, "n_tubes_cool/I")
85tree.Branch("dt0", dt0, "dt0[n_tubes]/F")
86
87tree.Branch("t0_cool", t0_cool, "t0_cool[n_tubes]/F")
88tree.Branch("t0_calib", t0_calib, "t0_calib[n_tubes]/F")
89
90
91tree.Branch("d_validflag", d_validflag, "d_validflag[n_tubes]/I")
92tree.Branch("validflag_cool", validflag_cool, "validflag_cool[n_tubes]/I")
93tree.Branch("validflag_calib", validflag_calib, "validflag_calib[n_tubes]/I")
94tree.Branch("d_adc", d_adc, "d_adc[n_tubes]/F")
95
96for 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
120outfile.Write()
121
#define min(a, b)
Definition cfImp.cxx:40
STL class.
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177