pyana_examples/src/myana1.py

Go to the documentation of this file.
00001 #--------------------------------------------------------------------------
00002 # File and Version Information:
00003 #  $Id: myana1.py 6194 2013-05-01 16:38:08Z salnikov@SLAC.STANFORD.EDU $
00004 #
00005 # Description:
00006 #  Module myana...
00007 #
00008 #------------------------------------------------------------------------
00009 
00010 """User analysis job for XTC data.
00011 
00012 This software was developed for the LUSI project.  If you use all or 
00013 part of it, please give an appropriate acknowledgment.
00014 
00015 @see RelatedModule
00016 
00017 @version $Id: myana1.py 6194 2013-05-01 16:38:08Z salnikov@SLAC.STANFORD.EDU $
00018 
00019 @author Andrei Salnikov
00020 """
00021 
00022 
00023 #------------------------------
00024 #  Module's version from CVS --
00025 #------------------------------
00026 __version__ = "$Revision: 6194 $"
00027 # $Source$
00028 
00029 #--------------------------------
00030 #  Imports of standard modules --
00031 #--------------------------------
00032 import sys
00033 import logging
00034 import numpy
00035 
00036 #---------------------------------
00037 #  Imports of base class module --
00038 #---------------------------------
00039 
00040 #-----------------------------
00041 # Imports for other modules --
00042 #-----------------------------
00043 
00044 #----------------------------------
00045 # Local non-exported definitions --
00046 #----------------------------------
00047 
00048 #------------------------
00049 # Exported definitions --
00050 #------------------------
00051 
00052 #---------------------
00053 #  Class definition --
00054 #---------------------
00055 class myana1 ( object ) :
00056     """Example analysis job that reads waveform and does something useless"""
00057 
00058     #--------------------
00059     #  Class variables --
00060     #--------------------
00061 
00062     #----------------
00063     #  Constructor --
00064     #----------------
00065     def __init__ ( self, nenergy, e1, e2 ) :
00066         """Constructor."""
00067         
00068         self.nenergy = self.configInt('nenergy')
00069         self.e1 = self.configFloat('e1')
00070         self.e2 = self.configFloat('e2')
00071         logging.info( "nenergy=%d e1=%f e2=%f", self.nenergy, self.e1, self.e2 )
00072         self.shotCountITof = 0
00073         self.sum2 = None
00074 
00075     #-------------------
00076     #  Public methods --
00077     #-------------------
00078 
00079     def beginjob( self, evt, env ) :
00080         """This method is called once at the beginning of the job"""
00081 
00082         logging.info( "myana1.beginjob() called" )
00083 
00084     def beginrun( self, evt, env ) :
00085         """This method is called at the beginning of the run"""
00086 
00087         logging.info( "myana1.beginrun() called" )
00088 
00089     def event( self, evt, env ) :
00090         """This method is called for every L1Accept transition"""
00091 
00092         # store energy in a file
00093         shotEnergy = evt.getFeeGasDet()
00094         if not shotEnergy : shotEnergy = [0,0,0,0]
00095 
00096         # determine energy bin 
00097         energy=(shotEnergy[2]+shotEnergy[3])/2-self.e1
00098         bin = int((energy/(self.e2-self.e1))*self.nenergy+0.5)
00099         if bin<1 : bin=0
00100         if bin>self.nenergy-1 : bin=self.nenergy-1
00101         
00102         # get Acqiris data
00103         channel = 0
00104         ddesc = evt.getAcqValue( "AmoITof", channel, env )
00105         if ddesc:
00106             wf = ddesc.waveform()
00107             ts = ddesc.timestamps()
00108             if self.sum2 is None :
00109                 self.sum2 = wf**2
00110             else :
00111                 self.sum2 += wf**2
00112 
00113     def endrun( self, env ) :
00114         """This method is called at the end of the run"""
00115         logging.info( "myana1.endrun() called" )
00116 
00117     def endjob( self, env ) :
00118         """This method is called at the end of the job, close your files"""
00119         logging.info( "myana1.endjob() called" )

Generated on 19 Dec 2016 for PSDMSoftware by  doxygen 1.4.7