ATLAS Offline Software
Loading...
Searching...
No Matches
CalibDbCompareRT.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
14def printhelp(argv0):
15 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")
16 sys.exit(1)
17
18optlist, args = getopt.gnu_getopt(sys.argv, 'hs:f:t:')
19if not len(args)==5:
20 printhelp(args[0])
21
22for opt, oa in optlist:
23 if opt=='-s':
24 if oa[-2:]=='db':
25 cool_database_string = 'sqlite://;schema=' + oa + ';dbname=' + dbname
26 cool_tag=''
27 else:
28 cool_database_string = oa
29 continue
30 if opt=='-f':
31 cool_folder=oa
32 continue
33 if opt=='-t':
34 cool_tag=oa
35 continue
36
37run_number=int(args[1])
38asp=args[2].split("/")
39db=asp[0]
40head_id=int(asp[1])
41reader_password=args[3]
42root_filename=args[4]
43
44sys.argv=[ sys.argv[0], '-b' ]
45from ROOT import *
46from array import *
50
51
52outfile=TFile(root_filename, "RECREATE")
53
54if not cool_tag:
55 cool_tag = GetFolderTag(cool_database_string, cool_folder)
56
57outfile.mkdir("cool").cd()
58print ("Cool database: " + cool_database_string + " " + cool_folder + " " + cool_tag + " " + str(run_number))
59cool_gr, cool_sp, dummy=ReadRtCool(cool_database_string, cool_folder, cool_tag, run_number)
60
61outfile.mkdir("calibdb").cd()
62print ("Calibration database: " + db + "/" + str(head_id))
63calib_gr, calib_sp=ReadRtCalibDb(db, reader_password, head_id)
64
65outfile.cd()
66tree=TTree("tree", "rt differences")
67region_id=array('i', [0])
68station_nm=array('c', "BIL\0")
69station_phi=array('i', [0])
70station_eta=array('i', [0])
71tree.Branch("region_id", region_id, "region_id/I")
72tree.Branch("station_nm", station_nm, "station_nm/C")
73tree.Branch("station_phi", station_phi, "station_phi/I")
74tree.Branch("station_eta", station_eta, "station_eta/I")
75n_points=array('i', [0])
76n_points_calib=array('i', [0])
77n_points_cool=array('i', [0])
78dt13=array('f', [0.0])
79dr13=array('f', [0.0])
80dr=array('f', 100*[0.0])
81dt=array('f', 100*[0.0])
82tree.Branch("n_points", n_points, "n_points/I")
83tree.Branch("n_points_calib", n_points_calib, "n_points_calib/I")
84tree.Branch("n_points_cool", n_points_cool, "n_points_cool/I")
85tree.Branch("dt13", dt13, "dt13/F")
86tree.Branch("dr13", dr13, "dr13/F")
87
88for chamber_id in cool_gr:
89 if chamber_id not in calib_gr:
90 continue
91 region_id[0]=chamber_id
92 up=MuonFixedIdUnpack(chamber_id)
93 st_str=up.stationNameString()
94 for i in range(0,3):
95 station_nm[i]=st_str[i]
96 station_phi[0]=up.stationPhi()
97 station_eta[0]=up.stationEta()
98 co_gr=cool_gr[chamber_id]
99 co_sp=cool_sp[chamber_id]
100 ca_gr=calib_gr[chamber_id]
101 ca_sp=calib_sp[chamber_id]
102 n_points[0] = min(co_gr.GetN(), ca_gr.GetN(), 100)
103 n_points_calib[0] = ca_gr.GetN()
104 n_points_cool[0] = co_gr.GetN()
105 for i in range(i, n_points[0]):
106 dr[i]=ca_gr.GetX()[i]
107 dt[i]=ca_gr.GetY()[i]
108 dt13[0] = ca_sp.Eval(13.0) - co_sp.Eval(13.0)
109 dr13[0] = dt13[0] / ca_sp.Derivative(13.0)
110 tree.Fill()
111
112outfile.Write()
113
#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