427 def processQuery(self,rateBundle):
428 result = {}
429 result[rateBundle.alias] = {}
430
431
432 firstResult = {}
433 folder = self.getFolder(rateBundle.folderName)
434 folder.setPrefetchAll(False)
435 folderIterator = folder.browseObjects(rateBundle.IoVStart,rateBundle.IoVEnd,rateBundle.channelSelection)
436 while folderIterator.goToNext():
437 currentSlice = folderIterator.currentRef()
438 firstResult[currentSlice.since()]=float(currentSlice.payloadValue(rateBundle.payloadName))
439 folderIterator.close()
440
441
442 if rateBundle.turnCountFolderName is not None:
443 secondResult = {}
444 folder = self.getFolder(rateBundle.turnCountFolderName)
445 folder.setPrefetchAll(False)
446 folderIterator = folder.browseObjects(rateBundle.IoVStart,rateBundle.IoVEnd,cool.ChannelSelection())
447 while folderIterator.goToNext():
448 currentSlice = folderIterator.currentRef()
449 secondResult[currentSlice.since()]=float(currentSlice.payloadValue(rateBundle.turnCountPayloadName))
450 folderIterator.close()
451 result[rateBundle.alias].update(dict((key,11246.0*firstResult.get(key)/secondResult.get(key)) for key in commonKeys([firstResult,secondResult])))
452 else:
453 result[rateBundle.alias].update(firstResult)
454 return result
455
456
457