Versions Compared

Key

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

Content

Note

In 2014 new universal detector geometry software is implemented and documented in the Detector Geometry page. New interface completely supersedes features discussed in this page and  is recommended for use.

...

This note describes alternative old-style python modules which access calibrated geometry parameters for CSPAD2x2.

Calibration types

Current total list of calibration types for CSPAD2x2 is shown in the table:

...

Two of them, center and tilt, are used to describe precise pixel geometry in the detector. The beam_vector is intended (but not used yet and need to be elaborated) to describe the detector position w.r.t. IP. Other types, filter, common_mode, pedestals, and pixel_status, have the same meaning as for CSPAD detector and are used for intensity correction, that is beyond the scope of this note.

Code location

All modules discussed in this note belong to the package PyCSPadImage of psana
release, beginning from ana-0.9.8. This package contain modules for CSPAD and CSPAD2x2
detectors. Module with name pattern CSPAD2x2*.py are intended for CSPAD2x2.
Their functionality is explained in the table:

Class name

Functionality

CSPAD2x2CalibPars.py

Provides access to the calibration parameters through the DB

CSPAD2x2CalibParsDefault.py

Sets default values for all calibration types

CSPAD2x2Examples.py

Example of how to get calibrated data, get image, and plot it

CSPAD2x2PixCoords.py

Provides access to the pixel coordinate arrays

PixCoords2x1.py

Provides access to the pixel coordinate arrays for 2x1 sensor

GlobalGraphics.py

A set of simple graphical methods based on matplotlib

HDF5Methods.py

A set of methods for interaction with hdf5 files

GlobalMethods.py

A set of useful global methods

Program interface

Import

The modules discussed in this note can be imported as:

...

Code Block
import PyCSPadImage.HDF5Methods       as hm 
import PyCSPadImage.GlobalGraphics    as gg

Instantiate calibration object

The object of the class CSPAD2x2CalibPars may be instantiated by a few different ways, as explained below.

Regular constructor

For regular instantiation of the calibration object, the class CSPAD2x2CalibPars constructor expects at least two (named) parameters,

  • path - the string path to the directory with calibration types, and
  • run - integer run number.
    Third parameter list_of_clib_typesis used for run-time optimization; if it is missing, all parameters will be loaded, that takes more time and memory.

    Code Block
        # Official path:
        path = '/reg/d/psdm/mec/mec73313/calib/CsPad2x2::CalibV1/MecTargetChamber.0:Cspad2x2.1/
        # or local:
        # path = '/reg/neh/home1/dubrovin/LCLS/CSPad2x2Alignment/calib-cspad2x2-01-2013-02-13/'
    list_of_clib_types = ['center', 'tilt', 'pedestals']
        calib = calpars.CSPAD2x2CalibPars(path, run, list_of_clib_types)
    

Default constructor

Calibration object can be instantiated without parameters;

...

Code Block
    run      = 123, 
    calibdir = '/reg/d/psdm/mec/mec73313/calib',
    group    = 'CsPad2x2::CalibV1',
    source   = 'MecTargetChamber.0:Cspad2x2.1'

    calib.setCalibPars (run, calibdir, group, source) :

Update run number

If the path to calibration types is already instantiated, the run number can be changed in the process of analysis by the call like

Code Block
    run=234 # actual run number should be provided...
    calib.setRun (run)

Get pixel coordinates

In order to get the CSPAD2x2 geometry calibrated parameters, the coord object of the class CSPAD2x2PixCoords needs to be instatiated, using calibration parameters loaded in the calib object. Then the X and Y pixel coordinate (numpy) arrays of the data-like shape (185, 388, 2) can be obtained through the method get_cspad2x2_pix_coordinate_arrays_pix(),

Code Block
    coord = pixcoor.CSPAD2x2PixCoords(calib)
    X,Y = coord.get_cspad2x2_pix_coordinate_arrays_pix()

Get array of calibration parameters

Method calib.getCalibPars(type, run) allows to get array of calibration parameters for specific type and run number, for example

...

returns the pedestals (numpy) array with data-like shape (185, 388, 2).

Conversion between (185, 388, 2) and (2, 185, 388) shapes

Module CSPAD2x2CalibPars.py contains a couple of global methods which convert the array shape forth and back between (185, 388, 2) and (2, 185, 388);

Code Block
arrTwo2x1 = calpars.data2x2ToTwo2x1(arr2x2)    # converts (185, 388, 2) to (2, 185, 388)
arr2x2    = calpars.two2x1ToData2x2(arrTwo2x1) # converts (2, 185, 388) to (185, 388, 2)

Get CSPAD2x2 data array from hdf5 file

Code Block
import HDF5Methods as hm 
    fname  = '/reg/neh/home1/dubrovin/LCLS/HDF5Analysis-v01/PyCSPadImage/src/mec73313-r0180.h5
    dsname = '/Configure:0000/Run:0000/CalibCycle:0000/CsPad2x2::ElementV1/MecTargetChamber.0:Cspad2x2.1/data'
    data_arr = hm.getDataSetForOneEvent(fname, dsname, event=0)

Image from pixel coordinate and intensity arrays

Depending on experimental requirements, there may be different methods of how to generate image. For example we use a simple 2-d histogram technique.
The CSPAD2x2 image can be obtained from the pixel coordinate and intensity arrays (of the same shape) by call:
img2d = gg.getImageFromIndexArrays(X,Y,arr)

Plot image and its spectrum

Code Block
import GlobalGraphics as gg
    my_range = None
    my_range = (-10,40)
    gg.plotImageLarge(img2d, amp_range=my_range)        
    gg.plotSpectrum(img2d, amp_range=my_range)
    gg.show()

Code example

Essential code of the module CSPAD2x2Examples.py:

...

This example generates a couple of plots for CSPAD2x2 image and spectrum:

References