15 from ROOT
import TObject, TFile, TTree, gROOT, AddressOf
33 def open(self, update=True):
34 print(
'NtupleHandler.open() called')
36 if os.path.exists(self.
fileName)
and update:
50 print(
'ScanNtupleHandler.close() called')
52 self.
tree.Write(
'', TObject.kOverwrite)
56 print(
'ScanNtupleHandler.init() called')
66 self.
tree.GetEntry(entries-1)
75 self.
lbData.coolStartTime = lumi.startTime.timerunlb()
76 self.
lbData.coolEndTime = lumi.endTime.timerunlb()
78 self.
lbData.startTime = lumi.startTime.timerunlb()/1.E9
79 self.
lbData.endTime = lumi.endTime.timerunlb()/1.E9
81 self.
lbData.lbTime = (lumi.endTime.timerunlb() - lumi.startTime.timerunlb())/1.E9
83 self.
lbData.run = lumi.runLB.run
84 self.
lbData.lb = lumi.runLB.lb
96 self.
lbData.onlInstLum = lumi.onlInstLumi
97 self.
lbData.onlInstLumAll = lumi.onlInstLumiAll
98 self.
lbData.onlEvtsPerBX = lumi.onlEvtsPerBX
100 self.
lbData.onlPrefChan = lumi.onlPrefChan
101 self.
lbData.onlValid = lumi.onlValid
102 self.
lbData.olcValid = lumi.olcValid
104 self.
lbData.nColl = lumi.bcid.nbcol()
105 self.
lbData.nBeam1 = lumi.bcid.nb1()
106 self.
lbData.nBeam2 = lumi.bcid.nb2()
107 self.
lbData.qBeam1Col = lumi.IBeam1
108 self.
lbData.qBeam2Col = lumi.IBeam2
109 self.
lbData.qBeam1All = lumi.IBeam1All
110 self.
lbData.qBeam2All = lumi.IBeam2All
112 self.
lbData.specLumi = lumi.specLumi
113 self.
lbData.geomLumi = lumi.geomLumi
114 self.
lbData.maxEvtsPerBX = lumi.maxEvtsPerBX
116 self.
lbData.l1LiveFrac = lumi.l1Livefrac
122 self.
lbData.matched = lumi.matched
127 for (bcid, caliLumi)
in lumi.bcid.caliLumi.iteritems():
130 for (bcid, q)
in lumi.bcid.b1Curr.iteritems():
133 for (bcid, q)
in lumi.bcid.b2Curr.iteritems():
156 for (trig, chan)
in trigChan.iteritems():
157 self.
l1TBP[chan] = trigData.TBP[trig]
158 self.
l1TAP[chan] = trigData.TAP[trig]
159 self.
l1TAV[chan] = trigData.TAV[trig]
162 self.
tree.Branch(name, AddressOf(self.
lbData, name), name+
'/'+type)
165 branch = self.
tree.GetBranch(name)
166 branch.SetAddress(AddressOf(self.
lbData, name))
176 LBDataStructStr =
"struct LBDataStruct {\
177 ULong64_t coolStartTime;\
178 ULong64_t coolEndTime;\
196 Float_t onlInstLumAll;\
197 Float_t onlEvtsPerBX;\
209 Float_t maxEvtsPerBX;\
212 Float_t avgLiveFrac;\
213 Float_t lumiWtLiveFrac;\
219 gROOT.ProcessLine(LBDataStructStr)
220 from ROOT
import LBDataStruct
272 for (var, type)
in self.
varList:
285 self.
qBeam1 = array.array(
'f', (0.,)*3564)
286 self.
qBeam2 = array.array(
'f', (0.,)*3564)
290 self.
tree.GetBranch(
'lumiDel').SetAddress(self.
lumiDel)
291 self.
tree.GetBranch(
'qBeam1').SetAddress(self.
qBeam1)
292 self.
tree.GetBranch(
'qBeam2').SetAddress(self.
qBeam2)
293 self.
tree.GetBranch(
'liveFrac').SetAddress(self.
liveFrac)
297 self.
tree.Branch(
'lumiDel', self.
lumiDel,
'lumiDel[3564]/F')
298 self.
tree.Branch(
'qBeam1', self.
qBeam1,
'qBeam1[3564]/F')
299 self.
tree.Branch(
'qBeam2', self.
qBeam2,
'qBeam2[3564]/F')
300 self.
tree.Branch(
'liveFrac', self.
liveFrac,
'liveFrac[3564]/F')
303 self.
b1BCID = array.array(
'H', (0,)*3564)
304 self.
b2BCID = array.array(
'H', (0,)*3564)
308 self.
tree.GetBranch(
'b1BCID').SetAddress(self.
b1BCID)
309 self.
tree.GetBranch(
'b2BCID').SetAddress(self.
b2BCID)
310 self.
tree.GetBranch(
'colBCID').SetAddress(self.
colBCID)
312 self.
tree.Branch(
'b1BCID', self.
b1BCID,
'b1BCID[nBeam1]/s')
313 self.
tree.Branch(
'b2BCID', self.
b2BCID,
'b2BCID[nBeam2]/s')
314 self.
tree.Branch(
'colBCID', self.
colBCID,
'colBCID[nColl]/s')
321 self.
l1TBP = array.array(
'I', (0,)*256)
322 self.
l1TAP = array.array(
'I', (0,)*256)
323 self.
l1TAV = array.array(
'I', (0,)*256)
326 self.
tree.GetBranch(
'l1TBP').SetAddress(self.
l1TBP)
327 self.
tree.GetBranch(
'l1TAP').SetAddress(self.
l1TAP)
328 self.
tree.GetBranch(
'l1TAV').SetAddress(self.
l1TAV)
331 self.
tree.Branch(
'l1TBP', self.
l1TBP,
'l1TBP[256]/i')
332 self.
tree.Branch(
'l1TAP', self.
l1TAP,
'l1TAP[256]/i')
333 self.
tree.Branch(
'l1TAV', self.
l1TAV,
'l1TAV[256]/i')
347 self.
lbData.stable =
False
349 self.
lbData.physics =
False
350 self.
lbData.larVeto =
False
352 self.
lbData.onlPrefChan = 0
354 self.
lbData.onlInstLum = -1.
355 self.
lbData.onlInstLumAll = -1.
356 self.
lbData.onlEvtsPerBX = -1.
357 self.
lbData.onlValid = 0xFFFFFF
358 self.
lbData.olcValid = 0xFFFFFF
363 self.
lbData.qBeam1Col = -1.
364 self.
lbData.qBeam2Col = -1.
365 self.
lbData.qBeam1All = -1.
366 self.
lbData.qBeam2All = -1.
368 self.
lbData.specLumi = -1.
369 self.
lbData.geomLumi = -1.
370 self.
lbData.maxEvtsPerBX = -1.
372 self.
lbData.l1LiveFrac = -1.
373 self.
lbData.avgLiveFrac = -1.
374 self.
lbData.lumiWtLiveFrac = -1.
381 for i
in range(3564):