Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PythonEditor for calib components for epix10ka and epixhr detectors

...

This example shows how to access in ami all internl components of the det.raw.calib(...) method such as calibration constants, per-panel trbit and asicPixelConfig, per-event gain factors and pedestals, mask, common mode correction, etc.

 AMI test command for epixquad and epixhr

Code Block
titleCommand to test
# for epixquad - 4 epix10ka panels:
ami-local -b 1 -f interval=1 psana://exp=ueddaq02,run=569,dir=/cds/data/psdm/prj/public01/xtc

# for epixhr 1-panel:
ami-local -b 1 -f interval=1 psana://exp=rixx45619,run=121,dir=/cds/data/psdm/prj/public01/xtc

Code example for PythonEditor

In this example the PythonEditor box receives input objects for raw, config, calibconst, accesses and prints call det.raw.calib(...) internal components and returns common mode correction. For imaging, the 3-d array of common mode correction is converted to 2-d table of segments. 

Code Block
titleCode example for PythonEditor
collapsetrue
import psana.detector.utils_ami as ua

 
class EventProcessor():

    def __init__(self):
        self.counter = 0
        self.cc = None
 
    def begin_run(self):
        pass

    def end_run(self):
        pass

    def begin_step(self, step):
        pass

    def end_step(self, step):
        pass
     
    def on_event(self, raw, config, calibconst, *args, **kwargs):
        self.counter += 1
        if self.cc is None:
            self.cc = ua.calib_components(calibconst, config)
        cc = self.cc
 
        ctypes   = cc.calib_types()
        npanels  = cc.number_of_panels()
        peds     = cc.pedestals() # OR cc.calib_constants('pedestals')
        gain     = cc.gain()      # OR cc.calib_constants('pixel_gain') # ADU/keV
        gfactor  = cc.gain_factor() # keV/ADU
        status   = cc.status()
        comode   = cc.common_mode()
        trbit_p0 = cc.trbit_for_panel(0)
        ascfg_p0 = cc.asicPixelConfig_for_panel(0)
        mask     = cc.mask(status=True)
        dettype  = cc.dettype()
        cbitscfg = cc.cbits_config_detector()
        cbitstot = cc.cbits_config_and_data_detector(raw, cbitscfg)
        gmap     = cc.gain_maps_epix10ka_any(raw)
        peds_ev  = cc.event_pedestals(raw)
        gfac_ev  = cc.event_gain_factor(raw)
        calib    = cc.calib(raw, cmpars=(0, 7, 300, 10))
        cmcorr   = cc.common_mode_correction(raw, cmpars=(0, 7, 300, 10))
        
        print('== Event %04d ==' % self.counter)
#        print('config', cc.config)
        print('calib_types', ctypes)
#        print('calib_metadata', cc.calib_metadata('pedestals'))
        print(ua.info_ndarr(peds, 'pedestals'))
        print(ua.info_ndarr(cc.gain(), 'gain'))
        print(ua.info_ndarr(gfactor, 'gain_factor'))
        print(ua.info_ndarr(status, 'status'))
        print('common_mode from caliconst', str(comode))        
        print('number_of_panels', npanels)
        print('trbit_for_panel(0)', trbit_p0)
        print(ua.info_ndarr(ascfg_p0, 'asicPixelConfig_for_panel(0)'))
        print(ua.info_ndarr(raw, 'raw'))
        print(ua.info_ndarr(mask, 'mask'))
        print('dettype', dettype)
        print(ua.info_ndarr(cbitscfg, 'cbitscfg'))
        print(ua.info_ndarr(cbitstot, 'cbitstot'))
        print(ua.info_ndarr(gmap, 'gmap'))
        print(ua.info_ndarr(peds_ev, 'peds_ev'))
        print(ua.info_ndarr(gfac_ev, 'gfac_ev'))
        print(ua.info_ndarr(calib, 'calib'))
        print(ua.info_ndarr(cmcorr, 'cmcorr'))

        # img = cmcorr[0, 144:, :192]
        img = ua.psu.table_nxn_epix10ka_from_ndarr(cmcorr)
        print(ua.info_ndarr(img, 'img'))
        return img

...