Versions Compared

Key

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

...

Add the Geometry Control Node as usually and remove input terminal for arr3d. Click on "Apply" and use any geometry output parameters except "image".


PythonEditor for calib components for epix10ka and epixhr detectors

Command to test 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

Composition of Control Nodes for example

Image RemovedImage RemovedImage RemovedImage Removed

Implementation of the class calib_componenyts

...

Code example

...

Code example for PythonEditor

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

Composition of Control Nodes in the example

Image AddedImage AddedImage AddedImage Added

Implementation of the class calib_componenyts

  • Module detector/utils_ami.py will be available in releases grater than ps-4.5.24.
  • It is implemented for epix10ka and epixhr detector types.
  • Code example is also available in the head of this module.
  • Common mode correction methods are not available yet in this example.

Code test in psana

python ./lcls2/psana/psana/detector/test_issues_2023.py 2

...