Page History
Content
Table of Contents |
---|
Introduction
In this note we describe the python
-based PyCSPadImage package which is intended to evaluate and provide access to the pixel coordinate arrays. In addition, it converts the CSPAD raw data from HDF5 file to the geometry-corrected 2-D image array. This package can be used in a stand-alone python
code.
...
Below we assume that all standard environment variable settings are done (otherwise see Analysis Workbook. Account Setup). In order to copy the PyCSPadImage package from SVN
repository and run a simple test one has to use commands:
Code Block |
---|
log in to psana<XXXX>
kinit
cd <your-favorite-directory>
newrel ana-current <your-release-directory-name>
cd <your-release-directory-name>
sit_setup
addpkg PyCSPadImage HEAD
python PyCSPadImage/src/Examples.py 1
|
Import modules
Code Block |
---|
import sys
import os
import numpy as np
import PyCSPadImage.CalibPars as calp
import PyCSPadImage.CSPadConfigPars as ccp
import PyCSPadImage.CSPadImageProducer as cip
import PyCSPadImage.CSPADPixCoords as pixcoor
import PyCSPadImage.PixCoords2x1 as pixcoor2x1
import PyCSPadImage.GlobalGraphics as gg
import PyCSPadImage.GlobalMethods as gm
import PyCSPadImage.HDF5Methods as hm
|
...
HDF5 data file:
Code Block |
---|
fname = '/reg/d/psdm/xpp/xpptut13/hdf5/xpptut13-r0150.h5' # to test XPP data
fname = '/reg/d/psdm/cxi/cxitut13/hdf5/cxitut13-r1150.h5' # to test CXI data
|
Path to the directory with calibration types:
Code Block |
---|
path_calib = '/reg/d/psdm/CXI/cxi80410/calib/CsPad::CalibV1/CxiDs1.0:Cspad.0/'
path_calib = '/reg/d/psdm/xpp/xpptut13/calib/CsPad::CalibV1/XppGon.0:Cspad.0/'
|
...
This class provides access to the CSPAD calibration parameters.
Code Block |
---|
Regular instantiation:
ALL parameters are OPTIONAL NAMED parameters;
path = '/reg/d/psdm/xpp/xpptut13/calib/CsPad::CalibV1/XppGon.0:Cspad.0/'
run = 123
calib = CalibPars(path, list_of_clib_types=['center', 'tilt', 'pedestals'])
arr_pedestals = calib.getCalibPars('pedestals', run)
Other option for instantiation:
calib = CalibPars()
run = 123 - is an optional, named
calibdir = '/reg/d/psdm/CXI/cxi35711/calib'
group = 'CsPad::CalibV1'
source = 'CxiDs1.0:Cspad.0'
calib.setCalibPars (run, calibdir, group, source)
Get array of calibration parameters for specified type and run number:
type = 'center'
arr = calib.getCalibPars (type[,run])
|
...
This class provides access to the CSPAD configuration parameters.
Code Block |
---|
1. Sets a bunch of default configuration parameters,
loads current coniguration parameters from hdf5 file or from external parameters.
2. Provides access to current coniguration parameters
3. Contains conversion methods for arrays between raw data and entire cspad.
Interface
=========
1. Instatiation
1.1 Default constructor sets default parameters for indPairsInQuads & quadNumsInEvent:
config = CSPadConfigPars()
1.2 Initialization of configuration parameters using hdf5 file, for example:
fname = '/reg/d/psdm/xpp/xpp66213/hdf5/xpp66213-r0150.h5'
dsname = '/Configure:0000/Run:0000/CalibCycle:0000/CsPad::ElementV2/XppGon.0:Cspad.0/data'
config.setCSPadConfiguration( fname, dsname, event=0 ):
1.3 Initialization of configuration parameters using external arrays, for example:
indPairs = np.arange(32)
indPairs.shape = (4,8)
quadNums = np.arange(4)
config.setCSPadConfigArrays( indPairsInQuads=indPairs, quadNumsInEvent=quadNums )
2. Access methods:
2.1 Access to indPairsInQuads and quadNumsInEvent:
quadNums = config.getQuadNumsInEvent()
indPairs = config.getIndPairsInQuads()
config.printCSPadConfigPars()
2.2 Access to static class parameters:
import CSPadConfigPars as ccp
my_wid2x1 = ccp.CSPadConfigPars().wid2x1
etc...
3. Conversions between entire (4,8,185,388) and shaped as data (N<32,185,388) cspad pixel array shapes:
3.1 Conversion of the entire cspad pixel array arr_entire_cspad with shape (4,8,185,388)
in to the arr_raw_data, shaped as data (N<32,185,388):
arr_raw_data = config.getCSPadPixArrayShapedAsData(arr_entire_cspad)
3.2 Conversion of the cspad pixel array arr_raw_data shaped as data (N<32,185,388)
in to the entire cspad pixel array arr_entire_cspad with shape (4,8,185,388):
arr_entire_cspad = getCSPadPixArrayFromArrayShapedAsData(arr_raw_data)
4. Tests
To test CSPadConfigPars from release directory use command:
python PyCSPadImage/src/CSPadConfigPars.py <test-number>
where <test-number> stands for 0, 1, 2, or 3
|
...
Class for generation of CSPad pixel coordinate array with and without data base
Code Block |
---|
Interface
=========
1.0 Instantiation with default parameters taken from optical measurement for XPP on 2013-01-29:
coord = CSPADPixCoords()
1.1 Instantiation with external geometry parameters:
All parameters optional. Default values will be used if parameters are not specified.
xc - np.array(...), shape=(3, 4, 8)) [um]
yc - np.array(...), shape=(3, 4, 8)) [um]
tilt - np.array(...), shape=(4, 8)) [deg]
coord = CSPADPixCoords(xc_um=xc, yc_um=yc, tilt_deg=tilt)
1.2 Instantiation with regular calibration parameters:
path = '/reg/neh/home1/dubrovin/LCLS/CSPadAlignment-v01/calib-xpp-2013-01-29'
run = 123
calib = CalibPars(path, run)
coord = CSPADPixCoords(calib)
1.2 Access methods:
Get arrays of pixel coordinates in mu with shape: [2,185,388]
X, Y = coord.get_cspad_pix_coordinate_arrays_um (config=None)
or in integer pixels:
iX,iY = coord.get_cspad_pix_coordinate_arrays_pix (config=None)
1.3 Get image
img = coord.get_cspad_image(data,config)
|
...
Module Examples.py
contains a few examples of how to use the PyCSPadImage package.
References
- CSPad image producer in Python (DEPRICATED) - earlier old version descriptionof this page.
- CSPAD Alignment
- CSPAD Geometry Software (depricated)
- Package CSPadPixCoords for Psana