You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 33 Next »

Contents

 

pnCCD overview

Large area pnCCD DAQ and Elictronics, Lothar Struder & Robert Hartmann

 

Data for tests

On 2014-01-27 Sebastian Carron kindly provide us with data files for pnCCD experiment amoa1214:

  • Dark Run: 169, rear sensors gain 1/64, front 1/1, Imaging mode                                  exp=amoa1214:run=169
  • Run With Hits:  170  Low hit rate though, so you will have to use a hit finder of sorts   exp=amoa1214:run=170

Psana modules for pnCCD

Module ImgAlgos.PnccdNDArrProducer

  • Get from the event store Psana::PNCCD::FramesV1,
  • Put in the event store   ndarray<const T,3>, where shape=[4][512][512], T=uint16_t, int, float, double, int16_t

Performance: ~13 ms/event

Modified module ImgAlgos.PnccdImageProducer

  • Get  from the event store Psana::PNCCD::FullFrameV1 or ndarray<const T,3> or ndarray<const T,3>
    for source and key parameters
  • Put in the event store   ndarray<const T,2>, where shape=[1024+gap][1024], T= input type

Performance: ~30 ms/event (copy involves inverse iteration for 180 degree rotation of two bottom frames)

Sequence of modules for raw image averaging

          ImgAlgos.PnccdImageProducer - get Psana::PNCCD::FullFrameV1, put  ndarray<const uint16_t, 2>
          ImgAlgos.NDArrAverage            - averages ndarray<const T, 2>, save in file

Sequence of modules for calibrated image or ndarray averaging

          ImgAlgos.PnccdNDArrProducer - get Psana::PNCCD::FramesV1,     put  ndarray<const T, 3>

          ImgAlgos.NDArrCalib - getinput (raw) ndarray<const T, Ndim>, put  calibrated ndarray<const T, Ndim>
          ImgAlgos.PnccdImageProducer - get ndarray<const T,3>, put  ndarray<const T, 2>
          ImgAlgos.NDArrAverage            - averages ndarray<const T, 2> or ndarray<const T,3>, save in file

"Natural order" for common mode correction in pnCCD ndarray

pnCCD image has intensity "strips" in both dimensions;

[4][512][512] array for single event and averaged over 1000 events:

At large number of events common mode should be averaged out. For 1000 events horizontal intensity "stripes" have gone.

This proves that common mode should be evaluated for horizontal stripes.

 

Data corrections in module ImgAlgos.NDArrCalib

Midule description: Module ImgAlgos::NDArrCalib 

List of parameters in configuration file

[ImgAlgos.NDArrCalib]
source = DetInfo(Camp.0:pnCCD.0)
key_in = pnccd-ndarr  
key_out = calibrated  
do_peds = yes 
do_cmod = no 
do_stat = no 
do_mask = no 
do_bkgd = no 
do_gain = no  
do_nrms = no 
do_thre = yes 
fname_bkgd =  
fname_mask =
masked_value = 0
threshold_nrms = 0  
threshold = 100.0  
below_thre_value = 50
bkgd_ind_min = 0
bkgd_ind_max = 1000
bkgd_ind_inc = 2
print_bits = 11

 

 

2014-02-10 Test of the module ImgAlgos.NDArrCalib

Dark run: exp=amoa1214:run=7, all plots are shown for Camp.0:pnCCD.0 event 5

pedestals and  pixel_rms are generated by the calibman for arrays of shape=[4,512,512] using the same run.

Raw data

All do_* = no - that means no correction is applied

Pedestals

do_peds = yes 

file with pedestals is loaded automatically from

/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/pedestals/1-end.data

Common mode

do_peds = yes 
do_cmod = yes

files with pedestals and common_mode are loaded automatically from

/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/pedestals/1-end.data

/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/common_mode/1-end.data

where common mode parameters were set preliminary as:

echo "1 300 50 256 0.2" > /reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/common_mode/1-end.data

Average over each consecutive group of 256 pixels

Common mode subtraction improves the width of intensity distribution.


Pixel status

do_stat = yes

masked_value=0

Calibration type: pixel_status (0-good, 1,2,4,...-bad)

File with pixel status mask was produced in Calibration Manager ROI Mask application

/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/pixel_status/7-7.data

Set bad pixels (1) in the half of frame[1]:

 

Mask

do_mask = yes

fname_mask = pnccd-test-mask.txt

masked_value=0

Background

do_bkgd = yes

fname_bkgd = pnccd-test-mask.txt

For this test the file with pedestals is used:

 Gain

do_gain = yes  

file with gain factors is loaded automatically from

/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/pixel_gain/7-7.data

 

 

Fot this test all gains for [4,512,512] pixels were set to 0.5


 

N*RMS Threshold

do_nrms = yes

below_thre_value = 0

threshold_nrms = 0.5
file with rms values is loaded automatically from
/reg/d/psdm/AMO/amoa1214/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/pixel_rms/1-end.data
 

Common Threshold

do_thre = yes

below_thre_value = 0

threshold = 100 

Test for amob33314 run 167

Evaluate parameters in Calibration Manager

for types

  • pedestals
  • pixel_status for rms threshold = 15 ADU
  • pixel_rms

Camp.0.pnCCD.0

Camp.0.pnCCD.1

Raw data average and rms

Pedestals subtracted average and rms

Pedestals and common mode subtracted average and rms

echo "1 50 10 128 0.2" > /reg/d/psdm/AMO/amob3313/calib/PNCCD::CalibV1/Camp.0:pnCCD.0/common_mode/167-167.data

 

 Support of pnCCD in Calibration Manager

In dark run processing in  Calibration Manager produces pedestals and pixel_rms. Then, if thresholds on rms and averaged intensity are set correctly, the pixel_status can be also produced and deployed under the calib directory.  Calibration manager works with arrays of shape=[4,512,512]. Embedded ROI Mask Editor can be used to generate the ROI mask for pnCCD.

Get latest version of calibman

Run Calibration Manager from current release (for release version ≥ ana-0.10.12):

ssh -Y psana
cd <your-favorite-NON-RELEASE-directory>
sit_setup
calibman

 

If CalibManager or other packages were recently updated and these updates are wanted to be used:

ssh -Y psana
cd <your-favorite-directory>
newrel ana-current <release-directory>
cd <release-directory>
sit_setup 

addpkg CalibManager HEAD;
addpkg <package-name-2> HEAD;
addpkg <package-name-3> HEAD;
...
scons;

calibman

 

References

  • No labels