4 from itertools
import product
6 from argparse
import ArgumentParser
8 parser = ArgumentParser()
9 parser.add_argument(
"--outFilePreFix", help=
"Output JSON file",
11 parser.add_argument(
"--scaleError", help=
"Scale the uncertainties of the MM",type=float, default = 1. )
12 parser.add_argument(
"--addErrorMMClusterTime", help=
"add fixed error to the uncertainties of the MM",type=float, default = 0.)
15 if __name__ ==
"__main__":
21 for stationName, stationEta, stationPhi, multilayer, gasGap, author
in product([
"MMS",
"MML"], [-2,-1,1,2],
range(1,9), [1,2],
range(1,5), [0,65,66]):
27 if abs(stationEta) == 1:
28 constant = args.scaleError * 0.163
29 linear = args.scaleError * 0.0
30 quad = args.scaleError * 1.312
31 elif abs(stationEta) == 2:
32 constant = args.scaleError * 0.113
33 linear = args.scaleError * 0.0
34 quad = args.scaleError * 1.258
42 if abs(stationEta) == 1:
43 constant = args.scaleError * 0.127
44 linear = args.scaleError * 0.0
45 quad = args.scaleError * 1.192
46 elif abs(stationEta) == 2
and stationName ==
"MML":
47 constant = args.scaleError * (-0.496)
48 linear = args.scaleError * 0.0
49 quad = args.scaleError * 4.086
50 elif abs(stationEta) == 2
and stationName ==
"MMS":
51 constant = args.scaleError * 0.319
52 linear = args.scaleError * 0.0
53 quad = args.scaleError * 0.117
57 constant = args.scaleError * 0.1796
58 linear = args.scaleError * 0.0
59 quad = args.scaleError * 1.9821
63 maxStrip = (5
if abs(stationEta)==1
else 3)*1024
65 calibEntry = dict({
"station": stationName,
"eta":stationEta,
"phi": stationPhi,
"multilayer": multilayer,
"gasGap": gasGap,
"minStrip": minStrip,
"maxStrip": maxStrip,
"modelName":
"tanThetaPolynomial" ,
"modelPars": [constant, linear, quad],
"clusterAuthor": author})
66 logging.debug(calibEntry)
68 dbEntriesMMCSide.append(calibEntry)
70 dbEntriesMMASide.append(calibEntry)
89 dbEntriessTGCASide = []
90 dbEntriessTGCCSide = []
91 maxStripStgc = dict({
"QL1": 408 ,
"QL2": 366,
"QL3": 353,
"QS1": 406,
"QS2": 365,
"QS3": 307})
92 for stationName, stationEta, stationPhi, multilayer, gasGap
in product([
"STL",
"STS"], [-3, -2,-1,1,2,3],
range(1,9), [1,2],
range(1,5)):
93 chamberKey = f
"Q{stationName[2]}{abs(stationEta)}"
95 maxStrip = maxStripStgc[chamberKey]
97 if abs(stationEta) == 1:
98 const = args.scaleError * 0.261
99 linear = args.scaleError * 0
100 quad = args.scaleError * (-0.1949)
101 elif abs(stationEta) == 2:
102 const = args.scaleError * 0.228
103 linear = args.scaleError * 0
104 quad = args.scaleError * (0.0252)
105 elif abs(stationEta) == 3:
106 const = args.scaleError * 0.3158
107 linear = args.scaleError * 0
108 quad = args.scaleError * (-0.1223)
111 calibEntry = dict({
"station": stationName,
"eta":stationEta,
"phi": stationPhi,
"multilayer": multilayer,
"gasGap": gasGap,
"minStrip": minStrip,
"maxStrip": maxStrip,
"modelName":
"tanThetaPolynomial" ,
"modelPars": [const, linear, quad],
"clusterAuthor": author})
112 logging.debug(calibEntry)
114 dbEntriessTGCCSide.append(calibEntry)
116 dbEntriessTGCASide.append(calibEntry)
131 outFileName = f
"{args.outFilePreFix}_scale_x{args.scaleError}_mmConstOffset_{args.addErrorMMClusterTime}.json"
132 with open(outFileName,
'w')
as outStream:
133 json.dump(dbEntriesMMASide + dbEntriesMMCSide +dbEntriessTGCASide + dbEntriessTGCCSide, outStream)