ATLAS Offline Software
Loading...
Searching...
No Matches
StandaloneBunchgroupHandler.BunchgroupHandler Class Reference
Inheritance diagram for StandaloneBunchgroupHandler.BunchgroupHandler:
Collaboration diagram for StandaloneBunchgroupHandler.BunchgroupHandler:

Public Types

typedef HLT::TypeInformation::for_each_type_c< typenameEDMLIST::map, my_functor, my_result<>, my_arg< HLT::TypeInformation::get_cont, CONTAINER > >::type result

Public Member Functions

 __init__ (self)
 openDB (self)
 closeDB (self)
 loadRunData (self, run)
 loadBunchgroups (self, run)
 getTrainPosition (self, run, lb, bcid)
 getNeighbourBcids (self, run, lb, bcid)
 getNeighbourPattern (self, run, lb, bcid)

Public Attributes

str trigProdDbName = 'COOLONL_TRIGGER/COMP200'
str bunchGroupContentFolder = '/TRIGGER/LVL1/BunchGroupContent'
str bunchGroupDescFolder = '/TRIGGER/LVL1/BunchGroupDescription'
 trigProdDb = None
bool verbose = True
int physicsBunchgroupBit = 1
 runObjects = dict()
list runArchive = []
int runsToArchive = 20
int bcidRange = 32

Detailed Description

Definition at line 69 of file StandaloneBunchgroupHandler.py.

Member Typedef Documentation

◆ result

Definition at line 90 of file EDM_MasterSearch.h.

Constructor & Destructor Documentation

◆ __init__()

StandaloneBunchgroupHandler.BunchgroupHandler.__init__ ( self)

Definition at line 71 of file StandaloneBunchgroupHandler.py.

71 def __init__(self):
72
73 # Database parameters
74 self.trigProdDbName = 'COOLONL_TRIGGER/COMP200'
75 self.bunchGroupContentFolder = '/TRIGGER/LVL1/BunchGroupContent'
76 self.bunchGroupDescFolder = '/TRIGGER/LVL1/BunchGroupDescription'
77
78 # Database handle
79 self.trigProdDb = None
80
81 # self.verbose = False
82 self.verbose = True
83
84 # set physics bunch group
85 self.physicsBunchgroupBit = 1
86
87 # run objects
88 self.runObjects = dict()
89
90 # remember how many runs we have, keep only runsToArchive in memory
91 self.runArchive = []
92 # number of runs we keep in memory
93 self.runsToArchive = 20
94
95 # BCID range
96 self.bcidRange = 32
97

Member Function Documentation

◆ closeDB()

StandaloneBunchgroupHandler.BunchgroupHandler.closeDB ( self)

Definition at line 108 of file StandaloneBunchgroupHandler.py.

108 def closeDB(self):
109 # Close the database
110 if self.trigProdDb is not None:
111 self.trigProdDb.closeDatabase()
112 self.trigProdDb = None
113

◆ getNeighbourBcids()

StandaloneBunchgroupHandler.BunchgroupHandler.getNeighbourBcids ( self,
run,
lb,
bcid )

Definition at line 153 of file StandaloneBunchgroupHandler.py.

153 def getNeighbourBcids(self,run,lb,bcid):
154
155 if self.verbose:
156 print('getNeighbourBcids called')
157
158 before, after = self.getNeighbourPattern(run,lb,bcid)
159
160 l1 = []
161 for bcidOffset in range(len(before)):
162 checkBcid = bcid - (bcidOffset+1)
163 if checkBcid < 0: checkBcid += 3564
164 if before[bcidOffset]:
165 if self.verbose:
166 print("BCID",checkBcid,"is filled")
167 l1.append(checkBcid)
168 l2 = []
169 for bcidOffset in range(len(after)):
170 checkBcid = bcid + (bcidOffset+1)
171 if checkBcid > 3563: checkBcid -= 3564
172 if after[bcidOffset]:
173 if self.verbose:
174 print("BCID",checkBcid,"is filled")
175 l2.append(checkBcid)
176 return l1, l2
177
178
void print(char *figname, TCanvas *c1)

◆ getNeighbourPattern()

StandaloneBunchgroupHandler.BunchgroupHandler.getNeighbourPattern ( self,
run,
lb,
bcid )

Definition at line 179 of file StandaloneBunchgroupHandler.py.

179 def getNeighbourPattern(self,run,lb,bcid):
180
181 if self.verbose:
182 print('getNeighbourPattern called')
183
184 lbList = []
185 try:
186 lbList = list(self.runObjects[run].physicsBunchgroupBcids.keys())
187 except KeyError:
188 self.loadRunData(run)
189 lbList = list(self.runObjects[run].physicsBunchgroupBcids.keys())
190
191 latestLb = -1
192 try:
193 latestLb = self.runObjects[run].lbLookup[lb]
194 except KeyError:
195 for testLb in sorted(lbList):
196 if latestLb < 0: latestLb = testLb
197 if lb > testLb: latestLb = testLb
198 if self.verbose:
199 print("LB",lb,"latest LB",latestLb)
200 self.runObjects[run].lbLookup[lb] = latestLb
201
202 return (self.runObjects[run].bcidLookupBefore[latestLb][bcid], self.runObjects[run].bcidLookupAfter[latestLb][bcid])
203

◆ getTrainPosition()

StandaloneBunchgroupHandler.BunchgroupHandler.getTrainPosition ( self,
run,
lb,
bcid )

Definition at line 146 of file StandaloneBunchgroupHandler.py.

146 def getTrainPosition(self,run,lb,bcid):
147
148 if self.verbose:
149 print('getTrainPosition called')
150 before, after = self.getNeighbourBcids(run,lb,bcid)
151 return (len(before)+1)
152

◆ loadBunchgroups()

StandaloneBunchgroupHandler.BunchgroupHandler.loadBunchgroups ( self,
run )

Definition at line 124 of file StandaloneBunchgroupHandler.py.

124 def loadBunchgroups(self, run):
125
126 self.runObjects[run] = BunchgroupRunData(run)
127 self.runArchive.append(run)
128 self.runObjects[run].verbose = self.verbose
129
130 if self.verbose:
131 print('loadBounchgroups called, run',run)
132
133 bgFolder = self.trigProdDb.getFolder(self.bunchGroupContentFolder)
134 itr = bgFolder.browseObjects(run << 32,(run+1) << 32,cool.ChannelSelection.all())
135 while itr.goToNext() :
136 obj=itr.currentRef()
137 lb=(obj.since() & 0xffff)
138 self.runObjects[run].physicsBunchgroupBcids[lb] = []
139 bgcont = obj.payload()['BunchCode']
140 for bcid in range(3564):
141 if(bgcont[bcid]>>self.physicsBunchgroupBit & 1): self.runObjects[run].physicsBunchgroupBcids[lb].append(bcid)
142 self.runObjects[run].createLookup(lb,self.bcidRange)
143 if self.verbose:
144 print("LB",lb,"BCIDs",self.runObjects[run].physicsBunchgroupBcids[lb])
145
if(febId1==febId2)

◆ loadRunData()

StandaloneBunchgroupHandler.BunchgroupHandler.loadRunData ( self,
run )

Definition at line 114 of file StandaloneBunchgroupHandler.py.

114 def loadRunData(self, run):
115 self.openDB()
116 self.loadBunchgroups(run)
117 self.closeDB()
118 if len(self.runArchive) > self.runsToArchive:
119 if self.verbose:
120 print("Remove run",self.runArchive[0],"from memory")
121 del self.runObjects[self.runArchive[0]]
122 self.runArchive.pop(0)
123

◆ openDB()

StandaloneBunchgroupHandler.BunchgroupHandler.openDB ( self)

Definition at line 98 of file StandaloneBunchgroupHandler.py.

98 def openDB(self):
99 # Open the trigger COOL database
100 try:
101 self.trigProdDb = indirectOpen(self.trigProdDbName, True, False)
102 if self.verbose: print('Connected to', self.trigProdDbName, 'for Trigger data')
103 except Exception as e:
104 print(e)
105 return False
106 return True
107

Member Data Documentation

◆ bcidRange

StandaloneBunchgroupHandler.BunchgroupHandler.bcidRange = 32

Definition at line 96 of file StandaloneBunchgroupHandler.py.

◆ bunchGroupContentFolder

str StandaloneBunchgroupHandler.BunchgroupHandler.bunchGroupContentFolder = '/TRIGGER/LVL1/BunchGroupContent'

Definition at line 75 of file StandaloneBunchgroupHandler.py.

◆ bunchGroupDescFolder

str StandaloneBunchgroupHandler.BunchgroupHandler.bunchGroupDescFolder = '/TRIGGER/LVL1/BunchGroupDescription'

Definition at line 76 of file StandaloneBunchgroupHandler.py.

◆ physicsBunchgroupBit

int StandaloneBunchgroupHandler.BunchgroupHandler.physicsBunchgroupBit = 1

Definition at line 85 of file StandaloneBunchgroupHandler.py.

◆ runArchive

StandaloneBunchgroupHandler.BunchgroupHandler.runArchive = []

Definition at line 91 of file StandaloneBunchgroupHandler.py.

◆ runObjects

StandaloneBunchgroupHandler.BunchgroupHandler.runObjects = dict()

Definition at line 88 of file StandaloneBunchgroupHandler.py.

◆ runsToArchive

int StandaloneBunchgroupHandler.BunchgroupHandler.runsToArchive = 20

Definition at line 93 of file StandaloneBunchgroupHandler.py.

◆ trigProdDb

StandaloneBunchgroupHandler.BunchgroupHandler.trigProdDb = None

Definition at line 79 of file StandaloneBunchgroupHandler.py.

◆ trigProdDbName

str StandaloneBunchgroupHandler.BunchgroupHandler.trigProdDbName = 'COOLONL_TRIGGER/COMP200'

Definition at line 74 of file StandaloneBunchgroupHandler.py.

◆ verbose

bool StandaloneBunchgroupHandler.BunchgroupHandler.verbose = True

Definition at line 82 of file StandaloneBunchgroupHandler.py.


The documentation for this class was generated from the following file: