ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
UpdateHVReference.HVRefUpdator Class Reference
Collaboration diagram for UpdateHVReference.HVRefUpdator:

Public Member Functions

def __init__ (self)
 
def read_forced_list (self, forced_file_name)
 
def read_HV_reference (self, ref_file_name)
 
def read_HV_geometry (self, ref_file_name)
 
def update_HV (self)
 
def write_geometry (self, new_file_name)
 
def write_new_file (self, new_file_name)
 

Public Attributes

 reference_HV
 
 reference_AffectedCells
 
 forced_HV
 
 NLayers
 
 LayerName
 
 NCells
 
 UNIX2COOL
 

Detailed Description

Definition at line 11 of file UpdateHVReference.py.

Constructor & Destructor Documentation

◆ __init__()

def UpdateHVReference.HVRefUpdator.__init__ (   self)

Definition at line 13 of file UpdateHVReference.py.

13  def __init__(self):
14 
15  self.reference_HV = {}
16  self.reference_AffectedCells = {}
17  self.forced_HV = {}
18  self.NLayers = {}
19  self.LayerName = {}
20  self.NCells = {}
21  self.UNIX2COOL = 1000000000
22 

Member Function Documentation

◆ read_forced_list()

def UpdateHVReference.HVRefUpdator.read_forced_list (   self,
  forced_file_name 
)

Definition at line 23 of file UpdateHVReference.py.

23  def read_forced_list(self,forced_file_name):
24  print (" Loading forced file", forced_file_name)
25 
26  new_hv = []
27  myfile = open(forced_file_name,'r')
28  for line in myfile.readlines():
29  line.rstrip()
30  line.lstrip()
31  line_cont = line.split(' ')
32  line_cont = [iii for iii in line_cont if not iii == '']
33  rec_chan = line_cont[0]
34 
35  new_hv = [float(line_cont[iii]) for iii in range(2,6)]
36 
37  self.forced_HV[rec_chan]=new_hv
38  print ("updating channel ", rec_chan, " to HV ", new_hv )
39 
40  return
41 

◆ read_HV_geometry()

def UpdateHVReference.HVRefUpdator.read_HV_geometry (   self,
  ref_file_name 
)

Definition at line 101 of file UpdateHVReference.py.

101  def read_HV_geometry(self,ref_file_name):
102  print (" Reading HV geometry from file", ref_file_name)
103  # get database service and open database
104  dbSvc = cool.DatabaseSvcFactory.databaseService()
105 
106  dbString='sqlite://;schema='+ref_file_name+';dbname=L1CALO'
107  try:
108  db = dbSvc.openDatabase(dbString, False)
109  except Exception as e:
110  print ('Error: Problem opening database', e)
111  sys.exit(1)
112 
113  folder_name = '/TRIGGER/L1Calo/V1/Results/RxLayers'
114  folder=db.getFolder(folder_name)
115 
116  startUtime = int(time.time())
117  endUtime = int(time.time())
118  startValKey = startUtime * self.UNIX2COOL
119  endValKey = endUtime * self.UNIX2COOL
120  chsel = cool.ChannelSelection(0,sys.maxint)
121 
122  try:
123  itr=folder.browseObjects(startValKey, endValKey, chsel)
124  except Exception as e:
125  print (e)
126  sys.exit(1)
127 
128  for row in itr:
129  HV_layer_names=4*[0]
130  HV_Ncells = 4*[0]
131 
132  CoolId = hex(int(row.channelId()))
133  payload = row.payload()
134 
135  self.NLayers[CoolId] = struct.unpack('B',payload['NLayers'])[0]
136 
137  HV_layer_names[0] = struct.unpack('B',payload['Name1'])[0]
138  HV_layer_names[1] = struct.unpack('B',payload['Name2'])[0]
139  HV_layer_names[2] = struct.unpack('B',payload['Name3'])[0]
140  HV_layer_names[3] = struct.unpack('B',payload['Name4'])[0]
141 
142  HV_Ncells[0] = struct.unpack('B',payload['NCells1'])[0]
143  HV_Ncells[1] = struct.unpack('B',payload['NCells2'])[0]
144  HV_Ncells[2] = struct.unpack('B',payload['NCells3'])[0]
145  HV_Ncells[3] = struct.unpack('B',payload['NCells4'])[0]
146 
147  self.LayerName[CoolId] = HV_layer_names
148  self.NCells[CoolId] = HV_Ncells
149 
150 
151 # for iii in self.NLayers.keys():
152 # print (iii," NLayers: ",self.NLayers[iii], " Names: ",self.LayerName[iii], " NCells: ",self.NCells[iii])
153 
154 
155  # close database
156  db.closeDatabase()
157 
158  return 0
159 
160 
161 

◆ read_HV_reference()

def UpdateHVReference.HVRefUpdator.read_HV_reference (   self,
  ref_file_name 
)

Definition at line 42 of file UpdateHVReference.py.

42  def read_HV_reference(self,ref_file_name):
43  print (" Loading reference HV file", ref_file_name)
44  # get database service and open database
45  dbSvc = cool.DatabaseSvcFactory.databaseService()
46 
47  dbString='sqlite://;schema='+ref_file_name+';dbname=L1CALO'
48  try:
49  db = dbSvc.openDatabase(dbString, False)
50  except Exception as e:
51  print ('Error: Problem opening database', e)
52  sys.exit(1)
53 
54  folder_name = '/TRIGGER/L1Calo/V1/Results/HVCorrections'
55  folder=db.getFolder(folder_name)
56 
57  startUtime = int(time.time())
58  endUtime = int(time.time())
59  startValKey = startUtime * self.UNIX2COOL
60  endValKey = endUtime * self.UNIX2COOL
61  chsel = cool.ChannelSelection(0,sys.maxint)
62 
63  try:
64  itr=folder.browseObjects(startValKey, endValKey, chsel)
65  except Exception as e:
66  print (e)
67  sys.exit(1)
68 
69  for row in itr:
70  HV_corrections=4*[0]
71  Affected_cells = 4*[0]
72 
73  CoolId = hex(int(row.channelId()))
74  payload = row.payload()
75 
76  HV_corrections[0] = payload['LayerMean1']
77  HV_corrections[1] = payload['LayerMean2']
78  HV_corrections[2] = payload['LayerMean3']
79  HV_corrections[3] = payload['LayerMean4']
80 
81  Affected_cells[0] = struct.unpack('B',payload['AffectedCells1'])[0]
82  Affected_cells[1] = struct.unpack('B',payload['AffectedCells2'])[0]
83  Affected_cells[2] = struct.unpack('B',payload['AffectedCells3'])[0]
84  Affected_cells[3] = struct.unpack('B',payload['AffectedCells4'])[0]
85 
86  self.reference_AffectedCells[CoolId] = Affected_cells
87  self.reference_HV[CoolId] = HV_corrections
88 
89 # for iii in self.reference_AffectedCells.keys():
90 # print (iii," ",self.reference_AffectedCells[iii] )
91 
92 # for iii in self.reference_HV.keys():
93 # print (iii," ",self.reference_HV[iii] )
94 
95  # close database
96  db.closeDatabase()
97 
98  return 0
99 
100 

◆ update_HV()

def UpdateHVReference.HVRefUpdator.update_HV (   self)

Definition at line 162 of file UpdateHVReference.py.

162  def update_HV(self):
163 
164  print (" Updating internal HV list")
165 
166  for iii in self.forced_HV.keys():
167 
168  isNominal = False
169  if (self.forced_HV[iii][0] == 0 or self.forced_HV[iii][0] == 1.) and \
170  (self.forced_HV[iii][1] == 0 or self.forced_HV[iii][1] == 1.) and \
171  (self.forced_HV[iii][2] == 0 or self.forced_HV[iii][2] == 1.) and \
172  (self.forced_HV[iii][3] == 0 or self.forced_HV[iii][3] == 1.) :
173 
174  isNominal = True
175 
176  if isNominal: # if the channel is on nominal HV, doesn't go to the file
177  del self.reference_HV[iii]
178  del self.reference_AffectedCells[iii]
179  else: #
180  self.reference_HV[iii] = self.forced_HV[iii]
181  self.reference_AffectedCells[iii] = [99,99,99,99] # don't know what to put there, hope this is OK
182 
183 
184 # print ("***************************************************************")
185 # print (" Now changed HV dictionary")
186 # print ("***************************************************************")
187 # for iii in self.reference_HV.keys():
188 # print (iii," ",self.reference_HV[iii] )
189 
190  return
191 

◆ write_geometry()

def UpdateHVReference.HVRefUpdator.write_geometry (   self,
  new_file_name 
)

Definition at line 192 of file UpdateHVReference.py.

192  def write_geometry(self,new_file_name):
193  print (" Writing geometry to file " , new_file_name)
194 
195  dbSvc = cool.DatabaseSvcFactory.databaseService()
196  connectString = 'sqlite://;schema='+new_file_name+';dbname=L1CALO'
197 
198 
199  print ('Writing into database file',new_file_name)
200  db = dbSvc.openDatabase(connectString, False)
201 
202  spec = cool.RecordSpecification()
203  spec.extend('NLayers',cool.StorageType.UChar)
204 
205  spec.extend( 'Name1', cool.StorageType.UChar)
206  spec.extend( 'Name2', cool.StorageType.UChar)
207  spec.extend( 'Name3', cool.StorageType.UChar)
208  spec.extend( 'Name4', cool.StorageType.UChar)
209 
210  spec.extend('NCells1',cool.StorageType.UChar)
211  spec.extend('NCells2',cool.StorageType.UChar)
212  spec.extend('NCells3',cool.StorageType.UChar)
213  spec.extend('NCells4',cool.StorageType.UChar)
214 
215  now = int(time.time())
216 
217  since = now*self.UNIX2COOL
218  until = cool.ValidityKeyMax
219 
220  folder_description = "<timeStamp>time</timeStamp><addrHeader><address_header service_type=\"71\" clid=\"1238547719\"/></addrHeader><typeName>CondAttrListCollection</typeName>"
221  f = db.createFolder( "/TRIGGER/L1Calo/V1/Results/RxLayers" , spec,folder_description)
222 
223  for i in self.NLayers.keys():
224 
225  data = cool.Record( spec )
226 
227  data['NLayers'] = struct.pack('B',self.NLayers[i])
228  data['Name1'] = struct.pack('B',self.LayerName[i][0])
229  data['Name2'] = struct.pack('B',self.LayerName[i][1])
230  data['Name3'] = struct.pack('B',self.LayerName[i][2])
231  data['Name4'] = struct.pack('B',self.LayerName[i][3])
232 
233  data['NCells1'] = struct.pack('B',self.NCells[i][0])
234  data['NCells2'] = struct.pack('B',self.NCells[i][1])
235  data['NCells3'] = struct.pack('B',self.NCells[i][2])
236  data['NCells4'] = struct.pack('B',self.NCells[i][3])
237 
238  f.storeObject(since,until, data, int(i,16) )
239 
240  db.closeDatabase()
241 
242  return
243 
244 

◆ write_new_file()

def UpdateHVReference.HVRefUpdator.write_new_file (   self,
  new_file_name 
)

Definition at line 245 of file UpdateHVReference.py.

245  def write_new_file(self,new_file_name):
246 
247  print (" Writing output to file " , new_file_name)
248 
249  dbSvc = cool.DatabaseSvcFactory.databaseService()
250  connectString = 'sqlite://;schema='+new_file_name+';dbname=L1CALO'
251 
252  print ('recreating database file',new_file_name)
253  dbSvc.dropDatabase( connectString )
254  db = dbSvc.createDatabase( connectString )
255 
256  spec = cool.RecordSpecification()
257  spec.extend('RxMean',cool.StorageType.Float)
258 
259  spec.extend( 'AffectedCells1', cool.StorageType.UChar)
260  spec.extend( 'AffectedCells2', cool.StorageType.UChar)
261  spec.extend( 'AffectedCells3', cool.StorageType.UChar)
262  spec.extend( 'AffectedCells4', cool.StorageType.UChar)
263 
264  spec.extend('LayerMean1',cool.StorageType.Float)
265  spec.extend('LayerMean2',cool.StorageType.Float)
266  spec.extend('LayerMean3',cool.StorageType.Float)
267  spec.extend('LayerMean4',cool.StorageType.Float)
268 
269  now = int(time.time())
270 
271  since = now*self.UNIX2COOL
272  until = cool.ValidityKeyMax
273  db.createFolderSet('/TRIGGER')
274  db.createFolderSet('/TRIGGER/L1Calo')
275  db.createFolderSet('/TRIGGER/L1Calo/V1')
276  db.createFolderSet('/TRIGGER/L1Calo/V1/Results')
277 # db.createFolderSet('/TRIGGER/L1Calo/V1/Results/HVCorrections')
278 
279  folder_description = "<timeStamp>time</timeStamp><addrHeader><address_header service_type=\"71\" clid=\"1238547719\"/></addrHeader><typeName>CondAttrListCollection</typeName>"
280  f = db.createFolder( "/TRIGGER/L1Calo/V1/Results/HVCorrections" , spec,folder_description)
281 # f = db.createFolder( folder_name , spec, True )
282 
283  for i in self.reference_HV.keys():
284 
285  data = cool.Record( spec )
286 
287  MeanHV=0.
288  TotalNrCells=0
289 
290  for ilayer in range(4):
291  if self.NCells[i][ilayer]>0:
292  MeanHV += self.reference_HV[i][ilayer]*self.NCells[i][ilayer]
293  TotalNrCells += self.NCells[i][ilayer]
294 
295  MeanHV /= TotalNrCells
296 
297 # data['RxMean'] =(self.reference_HV[i][0]+self.reference_HV[i][1]+self.reference_HV[i][2]+self.reference_HV[i][3])/4.
298  data['RxMean'] = MeanHV
299 
300  data['LayerMean1'] = self.reference_HV[i][0]
301  data['LayerMean2'] = self.reference_HV[i][1]
302  data['LayerMean3'] = self.reference_HV[i][2]
303  data['LayerMean4'] = self.reference_HV[i][3]
304 
305  data['AffectedCells1'] = struct.pack('B',self.reference_AffectedCells[i][0])
306  data['AffectedCells2'] = struct.pack('B',self.reference_AffectedCells[i][1])
307  data['AffectedCells3'] = struct.pack('B',self.reference_AffectedCells[i][2])
308  data['AffectedCells4'] = struct.pack('B',self.reference_AffectedCells[i][3])
309 
310  f.storeObject(since,until, data, int(i,16) )
311 
312  db.closeDatabase()
313 
314  return
315 

Member Data Documentation

◆ forced_HV

UpdateHVReference.HVRefUpdator.forced_HV

Definition at line 17 of file UpdateHVReference.py.

◆ LayerName

UpdateHVReference.HVRefUpdator.LayerName

Definition at line 19 of file UpdateHVReference.py.

◆ NCells

UpdateHVReference.HVRefUpdator.NCells

Definition at line 20 of file UpdateHVReference.py.

◆ NLayers

UpdateHVReference.HVRefUpdator.NLayers

Definition at line 18 of file UpdateHVReference.py.

◆ reference_AffectedCells

UpdateHVReference.HVRefUpdator.reference_AffectedCells

Definition at line 16 of file UpdateHVReference.py.

◆ reference_HV

UpdateHVReference.HVRefUpdator.reference_HV

Definition at line 15 of file UpdateHVReference.py.

◆ UNIX2COOL

UpdateHVReference.HVRefUpdator.UNIX2COOL

Definition at line 21 of file UpdateHVReference.py.


The documentation for this class was generated from the following file:
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.py:18
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
Trk::open
@ open
Definition: BinningType.h:40
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65