Source code for pyimgalgos.tahometer
#------------------------------
"""User analysis module
This software was developed for the LCLS project. If you use all or
part of it, please give an appropriate acknowledgment.
@version $Id: tahometer.py 8453 2014-06-20 22:38:14Z dubrovin@SLAC.STANFORD.EDU $
@author Mikhail S. Dubrovin
"""
#------------------------------
# Module's version from SVN --
#------------------------------
__version__ = "$Revision: 8453 $"
# $Source$
#--------------------------------
# Imports of standard modules --
#--------------------------------
import os
import sys
import logging
#-----------------------------
# Imports for other modules --
#-----------------------------
from time import time
[docs]class tahometer (object) :
"""Saves image array in file with specified in the name type."""
def __init__ ( self ) :
"""Class constructor.
Parameters are passed from pyana.cfg configuration file.
@param dn int, interval in number of events to print current statistics
@param print_bits int, bit-word for verbosity control
"""
self.m_dn = self.configInt ('dn', 100)
self.m_print_bits = self.configInt ('print_bits', 1)
if self.m_print_bits & 1 : self.print_input_pars()
self.counter = 0
self.counter_dn = 0
[docs] def beginjob( self, evt, env ) :
pass
self.t_beginjob = time()
self.t_dn = self.t_beginjob
[docs] def beginrun( self, evt, env ) :
#logging.info( "tahometer.beginrun() called" )
self.run = evt.run()
[docs] def event( self, evt, env ) :
"""This method is called for every L1Accept transition.
@param evt event data object
@param env environment object
"""
self.counter += 1
self.counter_dn += 1
if self.counter_dn == self.m_dn :
if self.m_print_bits & 2 :
self.print_event_record()
self.counter_dn = 0
self.t_dn = time()
[docs] def endjob( self, evt, env ) :
pass
self.print_event_record()
[docs] def print_event_record( self ) :
t_curr = time()
dt_sec = t_curr - self.t_dn
t_sec = t_curr - self.t_beginjob
rate = 0
drate = 0
if t_sec != 0 : rate = self.counter/t_sec
if dt_sec != 0 : drate = self.counter_dn/dt_sec
rec = '%s: run:%04d evt:%06d t[sec]:%10.3f dt[sec]:%10.3f n/t[1/sec]:%10.3f dn/dt[1/sec]:%10.3f' % \
(__name__, self.run, self.counter, t_sec, dt_sec, rate, drate)
#logging.info( rec )
print rec
#-----------------------------
#-----------------------------
#-----------------------------