183 print(
'ScanNtupleHandler.fill() called')
187 for obj
in data.scanData.data:
221 print(
'ScanNtupleHandler.fill() - filled', nfilled,
'entries')
263 self.
scanDataStruct.fAcquisitionFlag = obj.payload()[
'AcquisitionFlag']
265 self.
scanDataStruct.fNominalSeparation = obj.payload()[
'NominalSeparation']
293 if timeobj.since() != obj.since():
continue
307 print(
"scanNtupleHandler.fillBeamPosition - Didn't find beam position data to match scan data!")
429 if timeobj.since() != obj.since():
continue
431 if obj.channelId() == 0:
434 self.
lbdataStruct.fB1IntensityBPTX = obj.payload()[
'Beam1Intensity']
435 self.
lbdataStruct.fB2IntensityBPTX = obj.payload()[
'Beam2Intensity']
436 self.
lbdataStruct.fB1IntensityAllBPTX = obj.payload()[
'Beam1IntensityAll']
437 self.
lbdataStruct.fB2IntensityAllBPTX = obj.payload()[
'Beam2IntensityAll']
439 elif obj.channelId() == 1:
442 self.
lbdataStruct.fB1IntensityBCT = obj.payload()[
'Beam1Intensity']
443 self.
lbdataStruct.fB2IntensityBCT = obj.payload()[
'Beam2Intensity']
444 self.
lbdataStruct.fB1IntensityAllBCT = obj.payload()[
'Beam1IntensityAll']
445 self.
lbdataStruct.fB2IntensityAllBCT = obj.payload()[
'Beam2IntensityAll']
447 elif obj.channelId() == 2:
450 self.
lbdataStruct.fB1IntensityAllDCCT = obj.payload()[
'Beam1IntensityAll']
451 self.
lbdataStruct.fB2IntensityAllDCCT = obj.payload()[
'Beam2IntensityAll']
454 print(
'scanNtupleHandler.fillLbdata - Found unknown channel', obj.channelId(),
'!')
456 if foundBCT
and foundBPTX
and foundDCCT :
break
459 if (
not foundBPTX)
and (
not foundBCT)
and (
not foundDCCT):
460 print(
"scanNtupleHandler.fillLBdata - Couldn't find LBDATA!")
462 print(
"scanNtupleHandler.fillLBdata - Couldn't find BCT data in LBDATA!")
464 print(
"scanNtupleHandler.fillLBdata - Couldn't find BPTX data in LBDATA!")
466 print(
"scanNtupleHandler.fillLBdata - Couldn't find DCCT data in LBDATA!")
538 if timeobj.since() != obj.since():
continue
541 self.
bcidData.fillCurrents(obj.payload())
543 if obj.channelId() == 0:
546 self.
bunchDataStruct.fB1BunchAverageBPTX = obj.payload()[
'B1BunchAverage']
547 self.
bunchDataStruct.fB2BunchAverageBPTX = obj.payload()[
'B2BunchAverage']
557 for (bcid, val)
in self.
bcidData.b1Curr.iteritems():
567 for (bcid, val)
in self.
bcidData.b2Curr.iteritems():
572 elif obj.channelId() == 1:
575 self.
bunchDataStruct.fB1BunchAverageBCT = obj.payload()[
'B1BunchAverage']
576 self.
bunchDataStruct.fB2BunchAverageBCT = obj.payload()[
'B2BunchAverage']
584 for (bcid, val)
in self.
bcidData.b1Curr.iteritems():
594 for (bcid, val)
in self.
bcidData.b2Curr.iteritems():
600 print(
'scanNtupleHandler.fillLbdata - Found unknown channel', obj.channelId(),
'!')
602 if foundBCT
and foundBPTX:
break
605 if (
not foundBPTX)
and (
not foundBCT):
606 print(
"scanNtupleHandler.fillBunchData - Couldn't find BUNCHDATA!")
608 print(
"scanNtupleHandler.fillBunchData - Couldn't find BCT data in BUNCHDATA!")
610 print(
"scanNtupleHandler.fillBunchData - Couldn't find BPTX data in BUNCHDATA!")
634 gROOT.ProcessLine(
"struct BunchLumiStruct {\
637 Float_t fAverageRawInstLum;\
638 Int_t fLuminousBunches;\
639 Int_t fLuminousBCIDs[3564];\
640 Float_t fBunchRawInstLum[3564];\
642 from ROOT
import BunchLumiStruct
648 for (chId, algstr)
in self.
bbbAlgDict.iteritems():
649 print(
'scanNtupleHandler.initLumiData - initializing', algstr,
'as channel', chId)
656 branchString1 =
'ALG_Channel/i:ALG_Valid/i:ALG_AverageRawInstLum/F:ALG_LuminousBunches/I'
657 branchString2 =
'ALG_LuminousBCIDs[ALG_LuminousBunches]/I'
658 branchString3 =
'ALG_BunchRawInstLum[ALG_LuminousBunches]/F'
660 self.
tree.Branch(algstr+
'_BUNCHDATA', self.
bunchLumiStruct[chId], branchString1.replace(
'ALG', algstr))
663 self.
tree.Branch(algstr+
'_BCID', self.
fLuminousBCIDs[chId], branchString2.replace(
'ALG', algstr))
664 self.
tree.Branch(algstr+
'_BunchRawInstLum', self.
fBunchRawInstLum[chId], branchString3.replace(
'ALG', algstr))
677 if timeobj.since() != obj.since():
continue
680 chId = obj.channelId()
682 print(
'scanNtupleHandler.fillBunchLumi - Unknown lumi channel', chId,
'!')
688 self.
bcidData.fillRawLumi(obj.payload())
693 self.
bunchLumiStruct[chId].fAverageRawInstLum = obj.payload()[
'AverageRawInstLum']
702 bcidList = self.
bcidData.rawLumi.keys()
703 for bcid
in sorted(bcidList):
713 print(
'scanNtupleHandler.fillBunchLumi - Found no BUNCHLUMIS data to match IOV!')
716 for (chId, algstr)
in self.
bbbAlgDict.iteritems():
718 print(
'scanNtupleHandler.fillBunchLumi - Found no BUNCHLUMIS data for', algstr,
'!')
769 for chId
in self.
algDict.iterkeys():
773 if timeobj.since() != obj.since():
continue
776 chId = obj.channelId()
780 elif chId >= 50
and chId <=70:
781 liveDict[chId] = obj.payload()[
'LBAvOLCInstLum']
785 print(
'scanNtupleHandler.fillLumiData - Unknown lumi channel', chId,
'!')
792 self.
lumiStruct[chId].fChannel = obj.channelId()
793 self.
lumiStruct[chId].fLBAvInstLumPhys = obj.payload()[
'LBAvInstLumPhys']
794 self.
lumiStruct[chId].fLBAvEvtsPerBXPhys = obj.payload()[
'LBAvEvtsPerBXPhys']
795 self.
lumiStruct[chId].fLBAvRawInstLumPhys = obj.payload()[
'LBAvRawInstLumPhys']
796 self.
lumiStruct[chId].fLBAvInstLumAll = obj.payload()[
'LBAvInstLumAll']
797 self.
lumiStruct[chId].fLBAvEvtsPerBXAll = obj.payload()[
'LBAvEvtsPerBXAll']
798 self.
lumiStruct[chId].fLBAvRawInstLumAll = obj.payload()[
'LBAvRawInstLumAll']
799 self.
lumiStruct[chId].fLBAvOLCInstLum = obj.payload()[
'LBAvOLCInstLum']
800 self.
lumiStruct[chId].fLBAvOLCEvtsPerBX = obj.payload()[
'LBAvOLCEvtsPerBX']
801 self.
lumiStruct[chId].fLBAvOLCRawInstLum = obj.payload()[
'LBAvOLCRawInstLum']
802 self.
lumiStruct[chId].fDetectorState = obj.payload()[
'DetectorState']
804 self.
lumiStruct[chId].fNOrbPhys = obj.payload()[
'NOrbPhys']
805 self.
lumiStruct[chId].fNOrbAll = obj.payload()[
'NOrbAll']
806 self.
lumiStruct[chId].fNOrbOLC = obj.payload()[
'NOrbOLC']
807 except Exception
as e:
813 self.
lumiStruct[chId].fValid = obj.payload()[
'Valid']
816 print(
'scanNtupleHandler.fillLumiData - Found no LUMINOSITY data to match IOV!')
819 for (chId, algstr)
in self.
algDict.iteritems():
821 print(
'scanNtupleHandler.fillLumiData - Found no LUMINOSITY data for', algstr,
'!')
823 for chId
in self.
algDict.iterkeys():
828 self.
lumiStruct[chId].fLBAvRawInstLumPhys = 0.
852 def fillLive(self, liveDict, denchan, numchan, dest):
853 num = liveDict.get(numchan, 0.)
854 den = liveDict.get(denchan, 0.)