psana_examples/src/dump_cspad.py

Go to the documentation of this file.
00001 #--------------------------------------------------------------------------
00002 # File and Version Information:
00003 #  $Id: dump_cspad.py 2622 2011-11-11 14:35:00Z 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: dump_cspad.py 2622 2011-11-11 14:35:00Z salnikov@SLAC.STANFORD.EDU $
00018 
00019 @author Andrei Salnikov
00020 """
00021 
00022 
00023 #------------------------------
00024 #  Module's version from CVS --
00025 #------------------------------
00026 __version__ = "$Revision: 2622 $"
00027 # $Source$
00028 
00029 #--------------------------------
00030 #  Imports of standard modules --
00031 #--------------------------------
00032 import sys
00033 import logging
00034 
00035 #---------------------------------
00036 #  Imports of base class module --
00037 #---------------------------------
00038 
00039 #-----------------------------
00040 # Imports for other modules --
00041 #-----------------------------
00042 from psana import *
00043 
00044 #----------------------------------
00045 # Local non-exported definitions --
00046 #----------------------------------
00047 
00048 #------------------------
00049 # Exported definitions --
00050 #------------------------
00051 
00052 #---------------------
00053 #  Class definition --
00054 #---------------------
00055 class dump_cspad ( object ) :
00056     """Example analysis module which dumps ControlConfig object info."""
00057 
00058     #--------------------
00059     #  Class variables --
00060     #--------------------
00061 
00062     #----------------
00063     #  Constructor --
00064     #----------------
00065     def __init__ ( self ) :
00066         """Constructor. """
00067         
00068         self.m_src = self.configSrc('source', "")
00069 
00070     #-------------------
00071     #  Public methods --
00072     #-------------------
00073 
00074     def beginjob( self, evt, env ) :
00075 
00076         config = env.configStore().get(CsPad.Config, self.m_src)
00077         if not config:
00078             return
00079         
00080         print "dump_cspad: %s: %s" % (config.__class__.__name__, self.m_src)
00081         print "  concentratorVersion =", config.concentratorVersion();
00082         print "  runDelay =", config.runDelay();
00083         print "  eventCode =", config.eventCode();
00084         print "  inactiveRunMode =", config.inactiveRunMode();
00085         print "  activeRunMode =", config.activeRunMode();
00086         print "  tdi =", config.tdi();
00087         print "  payloadSize =", config.payloadSize();
00088         print "  badAsicMask0 =", config.badAsicMask0();
00089         print "  badAsicMask1 =", config.badAsicMask1();
00090         print "  asicMask =", config.asicMask();
00091         print "  quadMask =", config.quadMask();
00092         print "  numAsicsRead =", config.numAsicsRead();
00093         print "  numQuads =", config.numQuads();
00094         try:
00095             # older versions may not have all methods
00096             print "  roiMask = [%s]" % ', '.join([hex(config.roiMask(q)) for q in range(4)])
00097             print "  numAsicsStored = %s" % str(map(config.numAsicsStored, range(4)))
00098         except:
00099             pass
00100         try:
00101             print "  sections = %s" % str(map(config.sections, range(4)))
00102         except:
00103             pass
00104 
00105 
00106     def event( self, evt, env ) :
00107 
00108         data = evt.get(CsPad.Data, self.m_src)
00109         if not data:
00110             return
00111         
00112         nQuads = data.quads_shape()[0]
00113 
00114         # dump information about quadrants
00115         print "dump_cspad: %s: %s" % (data.quads(0).__class__.__name__, self.m_src)
00116         print "  Number of quadrants: %d" % nQuads
00117         for i in range(nQuads):
00118             q = data.quads(i)
00119             
00120             print "  Quadrant #%d" % q.quad()
00121             print "    virtual_channel = %s" % q.virtual_channel()
00122             print "    lane = %s" % q.lane()
00123             print "    tid = %s" % q.tid()
00124             print "    acq_count = %s" % q.acq_count()
00125             print "    op_code = %s" % q.op_code()
00126             print "    quad = %s" % q.quad()
00127             print "    seq_count = %s" % q.seq_count()
00128             print "    ticks = %s" % q.ticks()
00129             print "    fiducials = %s" % q.fiducials()
00130             print "    frame_type = %s" % q.frame_type()
00131             print "    sb_temp = %s" % q.sb_temp()
00132             print "    common_mode = %s" % [q.common_mode(i) for i in range(q.data().shape[0])]
00133             # image data as 3-dimentional array
00134             print "    data shape = {}".format(q.data().shape)
00135             print "    data = %s" % q.data()

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7