Page History
...
- Gets acqiris configuration and data from
Acqiris::ConfigV1
andAcqiris::DataDescV1
, objects usingparameters source
andkey_in
; - produces
ndarray<double,2>
ofshape[] = {nbrChannels, nbrSamples}
for waveforms and time stamps; - save configuration data in the file defined by
fname_prefix
; - save waveforms and time stamps in the event store with keys
key_wform
andkey_wtime
.
parameter | default value | description |
---|---|---|
|
| source of data |
|
| key for input data (raw - by defaultby default (empty) – raw data) |
|
| output key for waveforms saved in event |
|
| output key for waveform times saved in event |
|
| file name prefix for configuration parameters (by default (empty) – do not save file) |
|
| verbosity:
|
Example for Module ImgAlgos::AcqirisArrProducer
Module ImgAlgos::
...
AcqirisAverage
Under construction
- Gets acqiris waveforms
from ndarray<double,2>
object usingparameters source
andkey_in
;
parameter | default value | description |
---|---|---|
|
| source of data |
|
| key for input data (raw - by default) |
key_average | "acq-ave" |
|
"" |
| "" |
|
| 0 | verbosity:
|
Example for Module ImgAlgos::AcqirisCalib
...
keyword for averaged waveform saved in the evt store | ||
fname_ave_prefix | "acq-ave" | text file name prefix for averaged array, full name will be extended by the experiment name, run number and suffix "-ave-wfs.txt" . |
thresholds | "" | list of threshold values for all Acqiris channels separated by space |
is_postive_signal | true | Threshold crossing algorithm depends on signal polarity (sign of threshold value is not changed!) |
do_inverse_selection |
| invert selection of the waveforms for averaging in case of threshold crossing |
skip_events |
| number of events (from the beginning of job) to skip before begin averaging. |
|
| number of events for averaging |
|
| verbosity:
|
Example for Module ImgAlgos::AcqirisAverage
Module ImgAlgos::AcqirisCalib
Under construction
- Gets acqiris waveforms
from ndarray<double,2>
object usingparameters source
andkey_in
;
parameter | default value | description |
---|---|---|
| "DetInfo(:Acqiris)" | source of data |
| "acq_wform" | key for input data (raw - by default) |
"" |
| |
"" |
| |
"" |
| |
| 0 | verbosity:
|
Example for Module ImgAlgos::AcqirisCalib
Module ImgAlgos::ImgAverage
This module averages over events the per-pixel data of the image array (ndarray<double,2>) and saves files for averaged, rms values, and, if requested, the hot pixel mask. Input data can be specified by the source
and key
parameters. Averaging may have up to three stages, depending on configuration parameters:
- 0-stage: the pixel amplitudes are averaged without any constrains for events from 0 to
evts_stage1
, the preliminary averaged and rms values are defined for each pixel at the end of this stage. - 1-stage: starting from event
evts_stage1
the pixel data are collected only forabs(amplitude-average0) < gate_width1
. At the end of this stage the preliminary averaged and rms values are defined for each pixel. - 2-stage: starting from the event
evts_stage1 + evts_stage2
the pixel data are collected only forabs(amplitude-average1) < gate_width2
. At the end of this stage the preliminary averaged and rms values are defined for each pixel and saved in the files specified by theavefile
andrmsfile
parameters, respectively.
This 3-stage averaging algorithm eliminates large statistical fluctuations in the pixel amplitude spectrum.
parameter | default value | description |
---|---|---|
| "DetInfo(:Opal1000") | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "" | out file with sum of amplitudes, saved if the name is not empty |
| "" | out file with averaged amplitudes, saved if the name is not empty |
| "" | out file with rms, saved if the name is not empty |
| "" | out file with hot pixel mask, saved if the name is not empty |
| "10000." | threshold on rms (in ADU); if rms exceeds this threshold - pixel is hot |
| 1000000 | number of events before stage 1 |
| 0 | additional number of events before stage 2 |
| 0 | gate_width for stage 1 |
| 0 | gate_width for stage 2 |
| 0 | module verbosity:
|
If all file names are empty (by default), the files with pre-defined names "img-ave-r####.dat" and "img-rms-r####.dat" (where #### stands for run number) will be saved for averaged and rms images, respectively. Otherwise, the files with specified names will be saved.
Default parameters are set for regular single-stage averaging without any constrains.
See also Example for Module ImgAlgos::ImgAverage.
Module ImgAlgos::ImgMaskEvaluation
This module gets the image data array (ndarray<T,2>), where T stands for double, float, int, uint8_t, or uint16_t, and evaluates two masks:
- saturated mask for pixels, which had an intensity above the saturation-threshold with frequency grater than specified fraction of events.
- noise mask for pixels, which estimated S/N ratio exceeds the S/N-threshold with frequency grater than specified fraction of events.
In the endJob
this module saves files (if their names are provided) of image size for:
- saturated mask
- noise mask,
- combined mask,
- fraction of noisy events,
- fraction of saturated events.
The S/N is estimated by averaging over neigbouring pixels.
parameter | default value | description |
---|---|---|
| "DetInfo(:Opal1000") | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "img-mask-satu.dat" | out file with saturated mask |
| "img-mask-nois.dat" | out file with noise mask |
| "img-mask-comb.dat" | out file with combined mask |
| "img-frac-satu.dat" | out file with fraction of saturated events |
| "img-frac-nois.dat" | out file with fraction of noisy events |
| 1000000 | saturation-threshold (in ADU if the gain correction was not applied to image) |
| 0 | allowed fraction of saturated events |
| 1 | radial size of the area for S/N evaluation |
| 3 | noise-threshold ( in ADU if the gain correction was not applied to image) |
| 0.5 | allowed fraction of noisy events |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::ImgMaskEvaluation.
Module ImgAlgos::ImgCalib
ImgCalib gets the raw image from data and process it as follows:
- subtracts pedestals,
- subtracts normalized background,
- apply gain factors,
- apply mask, and
- apply threshold as a constant low level,
- apply threshold as N*RMS,
and saves the corrected image in the event.
Functionality:
- ImgCalib uses the
source
andkey_in
parameters to get the input raw image (asndarray<T,2>
object), where T stands for uint16_t, int, float, uint8_t, or double, - gets the calibration parameters from files
fname_peds
,fname_bkgd
,fname_gain
,fname_mask
, andfname_nrms
, if their names are specified, the specified by the file name corrections are applied per-pixel to raw data image as follows:
Code Block bgColor #F7F7ED A_cor = A_raw (1) - pedestal | if the file name is specified in the parameter "fname_peds" (2) - N*background | if the file name is specified in the parameter "fname_bkgd" (3) * gain | if the file name is specified in the parameter "fname_gain" (4) apply mask | if the file name is specified in the parameter "fname_mask" (5) apply N*RMS threshold | if the file name is specified in the parameter "fname_nrms" (6) apply threshold | if the "do_threshold" = true
- corrected image is saved in the event with key
key_out
asdouble
type.
Details:
- All files with input calibration parameters should have the same shape as image and formatted as regular text file containing 2d matrix (table) of float (or integer) values, with columns separated by space(s), ' ', and rows(lines) terminated by the '\n'.
- Background normalization is performed in window defined by the parameters
bkgd_row_min
,bkgd_row_max
,bkgd_col_min
, andbkgd_col_max
. Normalization factorN
is evaluated for pixel amplitudes in this window as:
N = sum(A_raw - pedestal) / sum(A_bkgd)
. - Masking algorithm assumes that good pixels in the
fname_mask
file should be marked by '1' (ones) and bad pixels – by '0' (zeros). Mask is applied as a last correction. The bad masked pixel amplitudes are substituted by themasked_value
.
parameter | default value | description |
---|---|---|
| "DetInfo(:Camera)" | source of data |
|
| key for input image |
| "calibrated" | output key for calibrated image saved in event |
|
| input file name for pedestals, applied if the file name is specified |
|
| input file name for background, applied if the file name is specified |
|
| input file name for gain, applied if the file name is specified |
|
| input file name for mask, applied if the file name is specified |
|
| input file name for RMS, applied if the file name is specified |
| 0. | amplitude value (in ADU) substituted for masked pixels |
| 3. | threshold as a number of sigmas from file |
| 0. | constant low level threshold in ADU |
| 0. | the amplitude substituted in pixels below threshold |
| false | if true - low level |
| 0 | the window in image, which is used for background normalization |
| 10 | the window in image, which is used for background normalization |
| 0 | the window in image, which is used for background normalization |
| 10 | the window in image, which is used for background normalization |
| 0 | verbosity:
|
The pedestal, background, gain, mask, and N*RMS corrections are applied if associated file name is specified.
The constant low level threshold is applied if do_threshold
is true.
Corrections are not applied by default or with empty file names.
See also Example for Module ImgAlgos::ImgCalib.
Module ImgAlgos::ImgIntForBins
Functionality:
- ImgIntForBins uses the
source
andkey_in
parameters to get the input image (asndarray<T,2>
object), where T stands for uint16_t, int, float, uint8_t, or double, - gets the pixel-bin indexes from files
fname_map_bins
, which has a size of image, - calculates average per pixel intensity for each of
number_of_bins
bin (from 0 tonumber_of_bins-1
), - saves the 2-D array of <I>(event, bin) in file
fname_int_bins
.
parameter | default value | description |
---|---|---|
| "DetInfo(:Camera)" | source of data |
|
| key for input image |
|
| input file name for map of bin indexes |
|
| output file name for intensity(bin,event) |
| 10 | number of bins for output intensities, if map has bins \>= |
| 0 | verbosity:
|
Module ImgAlgos::ImgRadialCorrection
This module averages the image pixel amplitude in r-phi bins, normalizes it per single pixel and subtracts the average amplitude from each pixel. Image is obtained from event by its source
and inkey
values. The output corrected image is saved in the event with outkey
keyword. Carthesian to polar coordinate transformation is done with respect to center coordinates xcenter
, ycenter
. The central region (r<rmin) and edges of the image (r>rmax) pixels can be removed from further consideration by setting rmin
and rmax
. The number of radial bins is defined as an int(rmax-rmin)
. The number of angular bins is set by n_phi_bins
.
parameter | default value | description |
---|---|---|
| "DetInfo()" | input source of data |
|
| key for input data, by default use raw data |
| "rad_corrected" | output key for further image processing |
| 850 | x coordinate of the image center |
| 850 | y coordinate of the image center |
| 10 | radius minimal image is not processed for r<rmin |
| 1000 | radius maximal image is not processed for r>rmax |
| 12 | number of angular sectors for the background averaging |
| 0 | test event for print/save |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::ImgRadialCorrection.
Module ImgAlgos::ImgPixAmpFilter
The ImgAlgos::ImgPixAmpFilter is a filter for event selection.
This filter counts the number of image pixels in the specified window with amplitude exceeding the threshold
. If the number of high-amplitude pixels exceed the numPixMin
, the event is passed for further analysis.
The algorithm performance was tested for CSPad images. This algorithm consumes up to 15 ms/event on psana0205 for full CSPad (1650x1650) window size. For smaller window consumed time is negligible, comparing to the image reconstruction time, which is ~70 ms/event (for cspad_mod.CsPadCalib
and CSPadPixCoords::CSPadImageProducer
) on psana0205.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | source of data |
| "Image2D" | key for input image data |
| 10 | minimal threshold on pixel amplitude |
| 100 | minimal number of pixels with amplitude above the threshold |
| true | On/Off the filter |
| 0 | minimal column number |
| 100000 | maximal column number |
| 0 | minimal row number |
| 100000 | maximal row number |
| 0 | verbosity:
|
Remarks:
- The default
key
("Image2D") stands for theCSPadPixCoords::Image2D<double>
image object. Otherkey
names work for thendarray<double,2>
image object. - The
xmin
,xmax
,ymin
,ymax
(in pixels) defines the window in the image for pixel counting. Default values means the entire image range. - The
threshold
,numPixMin
, and the window extents have to be adjusted for particular experiment.
Module ImgAlgos::ImgPeakFinder
This algorithm was motivated by users of amo42112:
1. Select the pixels in the window xmin
, xmax
, ymin
, ymax
with amplitudes above the threshold_low
.
2. Smear image for selected pixels, using 2-d matrix of weights over pixels
from -smear_radius
to +smear_radius
around each smeared pixel amplitude.
The matrix of weights is defined by the 2-d Gaussian function of width sigma
.
3. Find peaks as pixels with absolute-maximal amplitude above the threshold_high
in the center of the matrix -peak_radius
to +peak_radius
.
4. Put the vector of found peaks in the event with key peaksKey
. Each entry of this vector has an object of the struct Peak
, containing x, y positions, peak pixel amplitude, the total amplitude in the matrix, defined by the peak_radius
, and the number of pixels in the matrix above threshold_low
:
Code Block | ||
---|---|---|
| ||
struct Peak{
double x;
double y;
double ampmax; // amplitude in the peak maximum
double amptot; // total amplitude in the range of {{peak_radius}}
unsigned npix; // number of pixels in the range of {{peak_radius}}
} ;
|
parameter | default value | description |
---|---|---|
| "DetInfo()" | source of data |
|
| key for input image data |
| "peaks" | key for output list of peaks |
| 10 | low threshold on pixel amplitude |
| 100 | high threshold on pixel amplitude |
| 1.5 | width of the Gaussian for smearing; =0-no smearing |
| 3 | radius in pixel for smearing - radial size of matrix of weights |
| 3 | radius in pixel for peak finding - radial size of the region to search for local maximum |
| 0 | minimal column number |
| 100000 | maximal column number |
| 0 | minimal row number |
| 100000 | maximal row number |
| 0 | event number to save images and print info for test purpose |
| true | On/Off algorithm |
| 0 | module verbosity:
|
Remarks:
- This algorithm consumes ~15 ms/event on psana0101 for full Opal1000 (1024x1024) camera image.
- Smearing algorithm use a "safety margin" which is currently set to 10 pixels (offset from each boarder of the full image size).
See also Example for Module ImgAlgos::ImgPeakFinder.
Module ImgAlgos::ImgPeakFilter
This module use results and should work after the ImgAlgos::ImgPeakFinder. It gets the vector of peaks for the source
and key
, loops over all founded peaks and counts the number of peaks above the thresholds threshold_peak
and threshold_total
. If the selection_mode
is "SELECTION_ON" and the number of found peaks exceeds the n_peaks_min
the event is passed for further analysis/processing,
the table of found peaks may be saved in file with prefix defined by the fname
parameter.
parameter | default value | description |
---|---|---|
| "DetInfo()" | source of data |
| "peaks" | key for input list of peaks, should be the same as |
| "SELECTION_ON" | three possible options:
|
| 0 | threshold on peak amplitude |
| 0 | threshold on total peak intensity (in the matrix around peak) |
| 1 | minimal number of peaks above all thresholds |
|
| file name prefix; by default the prefix is empty and file is not saved |
| 0 | filter verbosity:
|
See also Example for Module ImgAlgos::ImgPeakFilter.
Module ImgAlgos::ImgPeakFinderAB
This module finds peaks in the ndarray<double,2>
image object. Algorithm and the list of parameters are the same as described is section Psana Module Catalog. The only difference is that the image size is defined by the ndarray<double,2>
object.
See also Example for Module ImgAlgos::ImgPeakFinderAB.
Module ImgAlgos::ImgHitFinder
ImgHitFinder is created by request for amo74213. It works pretty similar to ImgCalib, but the threshold algorithms are extended and background subtraction is removed.
It gets the raw image from data and process it as follows:
- subtracts pedestals,
- apply gain factors,
- apply mask, and
- apply one of the threshold algorithms
and saves the corrected image or hit-pixel map in the event.
Functionality:
- ImgHitFinder uses the
source
andkey_in
parameters to get the input raw image (asndarray<T,2>
object), where T stands for uint16_t, int, float, uint8_t, or double, - gets the calibration parameters from files
fname_peds
,fname_gain
,fname_mask
, andfname_thre
, if their names are specified, the specified by the file name corrections are applied per-pixel to raw data image as follows:
Code Block bgColor #F7F7ED A_cor = A_raw (1) - pedestal | if the file name is specified in the parameter "fname_peds" (2) * gain | if the file name is specified in the parameter "fname_gain" (3) apply mask | if the file name is specified in the parameter "fname_mask" (4) apply threshold | if the file name is specified in the parameter "fname_thre"
- corrected image is saved in the event with key
key_out
asdouble
(or unsigned for pixel map) type.
Details:
- All files with input calibration parameters should have the same shape as image and formatted as regular text file containing 2d matrix (table) of float (or integer) values, with columns separated by space(s), ' ', and rows(lines) terminated by the '\n'.
- Masking algorithm assumes that good pixels in the
fname_mask
file should be marked by '1' (ones) and bad pixels – by '0' (zeros). The bad masked pixel amplitudes are substituted by themasked_value
.
parameter | default value | description |
---|---|---|
| "DetInfo(:Camera)" | source of data |
|
| key for input image |
| "img-hits" | output key for calibrated image saved in event |
|
| input file name for pedestals, applied if the file name is specified |
|
| input file name for mask, applied if the file name is specified |
|
| input file name for gain, applied if the file name is specified |
|
| input file name for threshold, applied if the file name is specified and |
| 0. | amplitude value (in ADU) substituted for masked pixels |
| 1 | threshold mode: 0 - is not applied; 1 - constant level threshold defined by |
| def | threshold parameter - its meaning depends on |
| 0. | the amplitude substituted in pixels below threshold |
| def | the amplitude substituted in pixels below threshold, by default - amplitude above threshold is not substituted |
| 1 | the window in image, which is used to make hit map |
| def | the window in image, which is used to make hit map, by default - use all rows-1 |
| 1 | the window in image, which is used to make hit map |
| def | the window in image, which is used to make hit map, by default - use all columns-1 |
| 0 | verbosity:
|
Corrections are not applied by default or with empty file names.
See also Example for Module ImgAlgos::ImgHitFinder.
Module ImgAlgos::ImgSpectra
This module is motivated by the discussion with Josef Frisch, Ryan Coffee, Nick Hartmann. In xppi0412 etc. experiments they need to extract two spectra from Opal1000 camera image for signal and reference, evaluate their relative difference, and find peak position in the differential spectrum.
Module mgAlgos::ImgSpectra
works as follows:
- gets the
ndarray<double,2>
image object from event, - selects two spectral band regions and integrates amplitudes for each column (it is assumed that both spectra are oriented along the rows),
- saves two spectral arrays for signal and reference bands and their relative difference as another
ndarray<double,2>
object with shape (3,<number-of-columns>) in the event. - Further analytical work is assumed to be done in the next module ImgAlgos::ImgSpectraProc.
parameter | default value | description |
---|---|---|
| "DetInfo(:Opal1000)" | source of data |
| "img" | key for input image data |
| "spectra" | key for output array with spectra |
| 510 | signal band central row at column=0 |
| 550 | reference ... |
| 0 | signal band tilt angle |
| 0 | reference ... |
| 10 | signal band width in number op rows |
| 10 | reference ... |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::ImgSpectra.
Module ImgAlgos::ImgSpectraProc
Works after module ImgAlgos::ImgSpectra.
This module is designed as an example, in order to show how to get access to spectral array.
In particular, method ImgSpectraProc::getSpectra(...)
shows how to get pointer to data, and method ImgSpectraProc::printSpectra(...)
iterates over array and selectively prints its elements.
parameter | default value | description |
---|---|---|
| "DetInfo(:Opal1000)" | source of data |
| "spectra" | key for input image data |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::ImgSpectraProc.
Module ImgAlgos::ImgSaveInFile
Note |
---|
Aka depricated modules: CSPadPixCoords::CSPadImageGetTest, CSPadPixCoords::SaveImageInFile, and ImgAlgos::SaveImageInFile. |
Module ImgSaveInFile receives from the event the image object using source
and key
parameters and saves it in the ftype
format with prefix file name fname
for event(s) specified by the parameters eventSave
or saveAll
. Currently implemented file formats: txt
, bin
, tiff
, and png
.
ImgSaveInFile works after the CSPadImageProducer, CSPadInterpolImageProducer, CameraImageProducer, PnccdImageProducer, etc., which produce image object in formats CSPadPixCoords::Image2D<T>
or ndarray<T,2>
, where the T
stands for one of the data types, double, float, int, uint8_t, or uint16_t.
parameter | default value | description |
---|---|---|
| "CxiDs1.0:Cspad.0" | source of data |
| "Image2D" | input image key |
| 0 | event number to save the CSPad image file |
| false | save or not all selected events |
| "txt" | output file format; currently implemented formats |
| "img" | prefix of the output file name. Entire file name is formed as |
| 0 | verbosity:
|
Note |
---|
Saving in PNG currently works for uint8_t and uint16_t formats only... |
See also Example for Module ImgAlgos::ImgSaveInFile
Module ImgAlgos::ImgVsTimeSplitInFiles
This module is a part of complex algorithm, described in Command Line Interface For Time Correlation Analysis.
This module is designed for parallel image processing for correlation analysis.
Functionality:
- get image for each event as an
ndarray<T,2>
object, - splits it for
nfiles_out
equal parts, - saves each part of the image for all events in the job in a separate file with name
<fname_prefix>-<fname-common>-b<block-number>.<file_type>
, - saves metadata in the text file with name:
<fname_prefix>-<fname-common>-med.txt
, - saves counter number and the time records in file:
<fname_prefix>-<fname-common>-time.txt
.
parameter | default value | description |
---|---|---|
| "DetInfo(:Princeton)" | source of data |
| "img" | input image key |
| "my-exp" | output files common prefix |
| "bin" | output files type: "bin", "txt" |
| true | add time stamp to the output file names |
| 8 | number of output files (or number of parts to split image), it works tested and works for |
| 1 | pixel amplitude threshold in image amplitude units |
| 1 | default pixel amplitude if it is below |
| 0 | verbosity:
|
See also Example for Module ImgAlgos::ImgVsTimeSplitInFiles.
Further processing of the files
<fname_prefix>-<fname-common>-b<block-number>.<file_type>
<fname_prefix>-<fname-common>-med.txt
<fname_prefix>-<fname-common>-time.txt
is implemented in stand-alone c++ moduleCode Block bgColor #F7F7ED ImgAlgos/app/corana.cpp (or ImgAlgos/test/corana.cpp)
Note Note, the application in the
test
directory is compiled and run by the commands:
scons test
<path>/corana -f <fname_data>
-t <fname_tau>\
-h
-l <logfile>\
-b <basedir>\
where
<fname_data>
is one of the data files:<fname_prefix>-<fname-common>-b<block-number>.<file_type>
, which needs to be available;<fname_tau>
is a file with a list of indexes of tau for evaluation of correlations. By default or if the file is missing, the list of indexes will be generated automatically, and for book-keeping is saved in the file<fname_prefix>-<fname-common>-tau.txt
;<basedir>
is a directory for all data files, which is current by default;<logfile>
is an output log-file, or standard output by default.
Module ImgAlgos::ImgTimeStampList
This module is reduced from ImgAlgos::ImgVsTimeSplitInFiles.
Functionality is restricted to:
- saves counter number and the time records in file
fname
. print summary parameters for parser, for example:
Code Block bgColor #F7F7ED ImgTimeStampList: Summary for parser BATCH_RUN_NUMBER 0020 BATCH_NUMBER_OF_EVENTS 75 BATCH_FRAME_TIME_INTERVAL_AVE 8.086934 BATCH_FRAME_TIME_INTERVAL_RMS 0.120381 BATCH_FRAME_TIME_INDEX_MAX 74
parameter | default value | description |
---|---|---|
| "tstamp-list.txt" | output files common prefix |
| 0 | verbosity:
|
Module ImgAlgos::ImgIntMonCorr
This module is intended for CorAna
project.
ImgIntMonCorr gets the image and intensity monitor data, evaluate the normalization factor, applies this factor to the image intensity, and saves the corrected image in the event.
Functionality:
- ImgIntMonCorr uses the
source
andkey_in
parameters to get the input image (asndarray<double,2>
object), - gets and process the intensity monitors' data in accordance with configuration from file
fname_imon_cfg
, - intensity normalized image is saved in the event with key
key_out
. The type of output data is the same as the type of input data.
parameter | default value | description |
---|---|---|
| "DetInfo(:Camera)" | source of data |
| "calibrated" | key for input image |
| "imon_corrected" | key for output calibrated image saved in event |
|
| input file name with intensity monitors' configuration |
| 0 | verbosity:
|
fname_imon_cfg
file content per line: source name, short name, on/off bits for 4-channels, normalization and selection, minimal, maximal and averaged intensities:
Code Block | ||
---|---|---|
| ||
BldInfo(FEEGasDetEnergy) FEEGasDetEnergy 1 1 1 1 0 1 3.000000 7.500000 5.250000
BldInfo(XCS-IPM-02) XCS-IPM-02 1 1 1 0 1 0 10.000000 13.000000 11.500000
BldInfo(XCS-IPM-mono) XCS-IPM-mono 1 1 1 0 0 1 14.500000 16.000000 15.250000
DetInfo(XcsBeamline.1:Ipimb.4) Ipimb.4 1 1 1 1 0 0 -1.000000 -1.000000 1.000000
DetInfo(XcsBeamline.1:Ipimb.5) Ipimb.5 1 1 1 1 0 0 -1.000000 -1.000000 1.000000
|
Module ImgAlgos::IntensityMonitorsData
This module is intended for CorAna
project.
It gets the 5 intensity monitors data (4 channels for each) and saves them in the text or binary file file_data
. Comments (or header) for this file is saved separately in file_header
. It also prints the summary parameters for parser, for example:
Code Block | ||
---|---|---|
| ||
IntensityMonitorsData: Summary for parser
BATCH_RUN_NUMBER 0020
BATCH_NUMBER_OF_EVENTS 75
|
parameter | default value | description |
---|---|---|
| "BldInfo(FEEGasDetEnergy)" | source name for intensity monitor |
| "BldInfo(XCS-IPM-02)" | source name for intensity monitor |
| "BldInfo(XCS-IPM-mono)" | source name for intensity monitor |
| "DetInfo(XcsBeamline.1:Ipimb.4)" | source name for intensity monitor |
| "DetInfo(XcsBeamline.1:Ipimb.5)" | source name for intensity monitor |
| "txt" | file type may be "txt" or "bin" |
| "intensity-monitor-data.txt" | file name for data from intensity monitors |
| "intensity-monitor-comments.txt" | file name for comments |
| 0 | verbosity:
|
Module ImgAlgos::CSPadArrSaveInFile
This module saves the CSPad data array formatted as [5920=4*8*185][388] in output file for each passes event.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "cspad-arr" | out file name prefix for saved array |
| 0 | module verbosity:
|
Module ImgAlgos::CSPadArrAverage
This module averages the CSPad data array and saves two files for averaged and rms values in CSPad format [5920=4*8*185][388]. In contrast to the cspad_mod.CsPadPedestals, the input data can be specified with a key
, that allows to average CSPad array for already pre-processed data, for example "calibrated"
. This feature can be used to evaluate the averaged signal or background event. Implemented algorithm of averaging allows to eliminate large statistical fluctuations in the pixel amplitude spectrum. In advanced case averaging may have up to three stages, depending on configuration parameters:
- 0-stage: the 1st portion of events from 0 to
evts_stage1
is averaged without any constrains, the preliminary averaged and rms values are defined for each pixel
at the end of this stage. - 1-stage: starting from the event
evts_stage1
data are collected only forabs(amplitude-average0) < gate_width1
. At the end of this stage the preliminary averaged and rms values are defined for each pixel. - 2-stage: starting from the event
evts_stage1 + evts_stage2
data are collected only forabs(amplitude-average1) < gate_width2
. At the end of this stage the preliminary averaged and rms values are defined for each pixel and saved in the files specified by theavefile
andrmsfile
parameters, respectively.
This type of averaging algorithm may be useful for pedestal defenition in case of large amplitude fluctuations.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "cspad-ave.dat" | out file with averaged amplitudes |
| "cspad-rms.dat" | out file with rms |
| 1<<31U | number of events before stage 1 |
| 100 | additional number of events before stage 2 |
| 0 | gate_width for stage 1 |
| 0 | gate_width for stage 2 |
| 0 | module verbosity:
|
Default version of the configuration parameters works the same way as cspad_mod.CsPadPedestals. In this case module gets raw events and stage 0 continues for entire input data sample.
See also Example for Module ImgAlgos::CSPadArrAverage.
Module ImgAlgos::CSPadCommonModeCorrection
Alternative to the cspad_mod.CsPadCalib
algorithm for the common mode correction.
Takes the CSPad data array with subtracted pedestals, evaluate the average amplitude for each 2x1 section for amplitudes below the threshold, and subtract it from all pixel amplitudes. This algorithm consumes about 30 ms/event on psana0205.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | source of data for CSPad |
| "calibrated" | key for input data, by default expects data from |
| "cm_subtracted" | output key for the next data processing stage |
| 30 | threshold to exclude the large pixel amplitudes in average |
Module ImgAlgos::CSPadBkgdSubtract
This module uses the CSPad array, specified by the configuration parameters source
and inputKey
, subtracts the background, defined in the file bkgd_fname
, and saves the resulting array in the event with outputKey
. The subtracted background array is normalized on the sum of pixel amplitudes in the quad section norm_sector
, which can be set from 0 to 7.
Note | |||||
---|---|---|---|---|---|
The shape of the CSPad array in the file
|
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, by default use raw data |
| "bkgd_subtracted" | output key for the next data processing stage |
| "cspad_background.dat" | file with CSPad array [4*8*185][388] of averaged background |
| 0 | CSPad sector in quad from 0 to 7 |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::CSPadBkgdSubtract.
Module ImgAlgos::CSPadMaskApply
This module uses the CSPad array, defined by the configuration parameters source
and inkey
, apply the mask from file mask_fnname
and saves the masked data with key outkey
. For masked pixels the amplitude will be replaced by the value from masked_amp
.
The file mask_fnname
has the same structure as files for pedestals and background with dimensions [4*8*185][388]. Masked pixels are indicated by 0-th in this file. This file can be generated, for example, from the averaged background file, using amplitude threshold. This can be done with auxiliary python script MakePixelMask.py
as explained in Example for Module ImgAlgos::CSPadMaskApply.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, by default use raw data |
| "bkgd_subtracted" | output key for the next data processing stage |
| "cspad_mask.dat" | file with CSPad mask array [4*8*185][388] |
| 0 | this amplitude will replace the amplitude in each masked pixel |
| 1 | control bits for applied mask:
|
| 0 | module verbosity:
|
Module ImgAlgos::CSPadArrNoise
This module works on CSPad data array shaped as [5920=4*8*185][388], uses the "median algorithm" to evaluate the signal and noise for each pixel, evaluates S/N ratio for each pixel, counts the fraction of events where S/N > SoNThr
, and writes the same shape arrays for pixel mask and status information in the maskfile
and statusfile
, respectively. The statusfile
contains for each pixel the fraction of events where S/N > SoNThr
. This module presents a part of features implemented in the module ImgAlgos::CSPadArrPeakFinder.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "cspad-pix-status.dat" | out file with pixel status: fraction of noisy images |
| "cspad-pix-mask.dat" | out file with pixel mask |
| 3 | radial parameter of the area for median algorithm |
| 1 | radial band width of the area for median algorithm |
| 3 | S/N threshold for each pixel to be considered as noisy |
| 0.1 | fraction of noisy images above which pixel is masked in the |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::CSPadArrNoise.
Module ImgAlgos::CSPadArrPeakFinder
Module ImgAlgos::CSPadArrPeakFinder
is a psana-based implementation of the "median algorithm" for peak finding in CSPad data array shaped as [5920=4*8*185][388]. This algorithm was first implemented in myana/Cheetah by Anton Barty and Co. The "median algorithm" assumes that the amplitude level of background and noise for each pixel can be estimated as a mean and RMS of the surrounding pixels, located in the ring with parameters rmin
and dr
around the pixel in question. The threshold SoNThr_noise
on signal over noise (S/N) ratio allow to asset the pixel amplitude as a large noise fluctuation. Statistics of pixels above the S/N threshold accumulated over many images can be used to form the noisy-pixel mask. For example, if the fraction of images where pixel exceeds the S/N threshold grater than certain value (frac_noisy_imgs
=0.9), the pixel is considered as noisy. The permanent bad pixel mask (see module ImgAlgos::CSPadMaskApply) and dynamically evaluated noisy pixel mask are used to get rid of bad pixels and improve the image quality. Healthy pixels with S/N above threshold (SoNThr_signal
about 3-5) are treated as potential signals. Using recursive flood-filling algorithm the groups of connected signal pixels can be found and considered as a candidate for a diffraction peaks. Peak finding algorithm uses the amplitude, S/N thresholds, and limits on number of pixels in the connected region (parameters peak_amp_tot_thr
, peak_SoN_thr
, peak_npix_min
, and peak_npix_max
) in order to define the peak. Finally, the event is selected or discarded depending on number of found peaks and total amplitude threshold, defined by the parameters event_npeak_min
, event_npeak_max
, and event_amp_tot_thr
, respectively.
Description of implemented algorithm:
- in the constructor and
beginJob(...)
method:- enter input parameters,
- (re)set the initial mask of noisy pixels from file
hot_pix_mask_file
(if its name is specified in the configuration file), - do necessary initialization of work arrays.
- in the
event(...)
method the main part of "median algorithm" is implemented:- fill [4][8][185][388] per-pixel arrays:
m_stat
- number of events with|S/N| > SoNThr
,m_signal
- signal amplitude, or 0(zero) for masked pixels,m_proc_status
- sets 255 forS/N > SoNThr
or 0(zero) for masked pixels.
- use arrays
m_proc_status
andm_signal
to find peaks:- iterate over [185][388] 2x1 pixels and find the connected regions (using recursive flood-filling algorithm)
- create vector of peaks
v_peaks
ofstruct Peak
, usingpeak_npix_min
,peak_npix_max
, andpeak_amp_tot_thr
parameters,
- loop over
v_peaks
, count total amplitude and the number of peaks in the event. - decide if the event selected or not based on
event_npeak_min
,event_amp_tot_thr
, andselection_mode
parameters. - periodically dynamically re-generate the mask, based on
m_stat
array andfrac_noisy_imgs
parameter. When to start and for how many events to update the mask is defined by thenevents_mask_update
andnevents_mask_accum
parameters, respectively. - save
m_signal
in file for selected events, depending onout_file_bits
parameter. - put the vector with peaks
v_peaks
in the evt with key=key_peaks_out
.
- fill [4][8][185][388] per-pixel arrays:
- in the
endJob(...)
method, depending on bit status inout_file_bits
:- save current hot-pixel mask in the file
hot_pix_mask_out_file
- save current fraction of events with noisy/signal pixels in the file
frac_noisy_evts_file
- save current hot-pixel mask in the file
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, for example, it might be "calibrated" |
|
| key for output signal array. If the string non-empty, the array is added in the datagram for each event (before selection). |
| "peaks" | key for vector of found peaks in the selected event |
| "cspad-pix-mask-in.dat" | in read the pixel mask from file |
| "cspad-pix-mask-out.dat" | out write current pixel mask in the file |
| "cspad-pix-frac-out.dat" | out file with per-pixel fraction of noisy images |
| "./cspad-ev-" | out file with signal CSPad array. Time stamp is added. |
| 3 | radial parameter of the area for median algorithm |
| 1 | radial band width of the area for median algorithm |
| 3 | S/N threshold for each pixel to be considered as noisy |
| 5 | S/N threshold for each pixel to be considered as noisy |
| 0.9 | fraction of noisy images above which pixel will be masked |
| 4 | minimal number of connected pixels for the good peak |
| 25 | maximal number of connected pixels for the good peak |
| 0. | threshold on total signal amplitude of the group of connected pixels, if =0:OFF |
| 7. | threshold on peak S/N (S and N are sums over connected pixels) |
| 10 | threshold on minimal number of good peaks for the event selection |
| 10000 | threshold on maximal number of good peaks for the event selection |
| 0. | threshold on total signal amplitude in ADU of all good peaks for the event selection, if =0:OFF |
| 0 | number of skipped events before each mask re-evaluation cycle |
| 50 | number of events for the mask re-evaluation |
| SELECTION_ON | selection mode, other allowed values are: SELECTION_OFF, or SELECTION_INV |
| 0 | control on writing of files:
|
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::CSPadArrPeakFinder.
Module ImgAlgos::CSPadArrPeakAnalysis
This module is intended for analysis of the results obtained in the peak finding algorithm implemented in the ImgAlgos::CSPadArrPeakFinder
module.
- It gets the vector of peaks defined by the
key
parameter, - fills ROOT-style histograms and ntuples, and
- saves histograms and ntuples in file defined by the
fname_root
parameter.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
| "peaks" | key for input data for peaks found in event |
| "file.root" | name of the output file with root histograms and ntuples |
| 0 | module verbosity:
|
See also Example for Module ImgAlgos::CSPadArrPeakAnalysis.
Package py_img_algos
This package contains python modules which work with both frameworks pyana and psana. Functionality of these modules resembles modules from C++ package ImgAlgos. The difference between two frameworks at code level is explained in Migration from pyana to psana.
Module py_img_algos.cspad_arr_producer
This module gets data from evt
store for CSAPD or CSPAD2x2 depending on unique detector name in parameter source
, produce numpy array of full scale shape (4,8,185,388) or (185, 388, 2) of specified in dtype
type, and saves it in the evt
store with unique name key_out
. In case of missing 2x1 sections, their pixel amplitudes substituted by the value form val_miss
.
parameter | default value | type | description |
---|---|---|---|
| *-*|Cspad-* | string | address of Detector-Id|Device-ID |
| int | string | output array data type. Implemented types: int, int8, int16, int32, uint8, uint16, uint32, float, double. |
| cspad_array | string | unique keyword for output array identification |
| 0 | float | intensity value substituted for missing 2x1 sections in data |
| 1 | int | module verbosity:
|
See also Examples for package py_img_algos.
Module py_img_algos.cspad_image_producer
This module gets from evt
store the numpy array identified by key_in
of full scale shape (4,8,185,388) or (185, 388, 2) for CSPAD or CSPAD2x2, respectively, and produces 2-d image numpy array, taking into account geometry calibration parameters specified by the path calib_dir
. The output image array is saved in the evt
store with unique name, specified by parameter key_out
.
parameter | default value | type | description |
---|---|---|---|
| '' (empty) | string | path to calibration directory for ex.: |
| cspad_array | string | keyword for input numpy array, shape=(4, 8, 185, 388) - for cspad or (185, 388, 2) - for cspad2x2 |
| cspad_image | string | unique keyword for output 2-d image numpy array |
| 1 | int | module verbosity:
|
See also Examples for package py_img_algos.
Module py_img_algos.image_save_in_file
This module gets from evt
store 2-d image numpy array for specified unique name in key_in
and saves it in the file with name given by parameter ofname
. File extension defines the output file format. Run and event numbers are added to the name of the output file. For example, for ofname = image.tiff
files will be created with names image-r####-ev######.tiff
, where symbols # stands for numbers.
parameter | default value | type | description |
---|---|---|---|
| image | string | unique keyword for input 2-d image numpy array |
| img.npy | string | output file name (type is selected by extension) supported formats: txt, tiff, gif, pdf, eps, png, jpg, jpeg, npy (default), npz |
| 1 | int | module verbosity:
|
See also Examples for package py_img_algos.
Module py_img_algos.tahometer
Is intended to print records showing job performance current and integrated from the beginning of job:
Code Block | ||
---|---|---|
| ||
py_img_algos.tahometer: run:0049 evt:000005 t[sec]: 2.575 dt[sec]: 2.575 n/t[1/sec]: 1.942 dn/dt[1/sec]: 1.942
|
parameter | default value | type | description |
---|---|---|---|
| 100 | int | interval in number of events to print current statistics |
| 1 | int | module verbosity:
|
See also Examples for package py_img_algos.
References
- Psana User Manual
- Psana Reference Manual
- Psana Module Examples
- Migration from pyana to psana
- psana - Migration from pyana
Module ImgAlgos::ImgAverage
This module averages over events the per-pixel data of the image array (ndarray<double,2>) and saves files for averaged, rms values, and, if requested, the hot pixel mask. Input data can be specified by the source
and key
parameters. Averaging may have up to three stages, depending on configuration parameters:
...
If all file names are empty (by default), the files with pre-defined names "img-ave-r####.dat" and "img-rms-r####.dat" (where #### stands for run number) will be saved for averaged and rms images, respectively. Otherwise, the files with specified names will be saved.
Default parameters are set for regular single-stage averaging without any constrains.
See also Example for Module ImgAlgos::ImgAverage.
Module ImgAlgos::ImgMaskEvaluation
This module gets the image data array (ndarray<T,2>), where T stands for double, float, int, uint8_t, or uint16_t, and evaluates two masks:
...
See also Example for Module ImgAlgos::ImgMaskEvaluation.
Module ImgAlgos::ImgCalib
ImgCalib gets the raw image from data and process it as follows:
...
See also Example for Module ImgAlgos::ImgCalib.
Module ImgAlgos::ImgIntForBins
Functionality:
- ImgIntForBins uses the
source
andkey_in
parameters to get the input image (asndarray<T,2>
object), where T stands for uint16_t, int, float, uint8_t, or double, - gets the pixel-bin indexes from files
fname_map_bins
, which has a size of image, - calculates average per pixel intensity for each of
number_of_bins
bin (from 0 tonumber_of_bins-1
), - saves the 2-D array of <I>(event, bin) in file
fname_int_bins
.
parameter | default value | description |
---|---|---|
| "DetInfo(:Camera)" | source of data |
|
| key for input image |
|
| input file name for map of bin indexes |
|
| output file name for intensity(bin,event) |
| 10 | number of bins for output intensities, if map has bins \>= |
| 0 | verbosity:
|
Module ImgAlgos::ImgRadialCorrection
This module averages the image pixel amplitude in r-phi bins, normalizes it per single pixel and subtracts the average amplitude from each pixel. Image is obtained from event by its source
and inkey
values. The output corrected image is saved in the event with outkey
keyword. Carthesian to polar coordinate transformation is done with respect to center coordinates xcenter
, ycenter
. The central region (r<rmin) and edges of the image (r>rmax) pixels can be removed from further consideration by setting rmin
and rmax
. The number of radial bins is defined as an int(rmax-rmin)
. The number of angular bins is set by n_phi_bins
.
...
See also Example for Module ImgAlgos::ImgRadialCorrection.
Module ImgAlgos::ImgPixAmpFilter
The ImgAlgos::ImgPixAmpFilter is a filter for event selection.
This filter counts the number of image pixels in the specified window with amplitude exceeding the threshold
. If the number of high-amplitude pixels exceed the numPixMin
, the event is passed for further analysis.
...
- The default
key
("Image2D") stands for theCSPadPixCoords::Image2D<double>
image object. Otherkey
names work for thendarray<double,2>
image object. - The
xmin
,xmax
,ymin
,ymax
(in pixels) defines the window in the image for pixel counting. Default values means the entire image range. - The
threshold
,numPixMin
, and the window extents have to be adjusted for particular experiment.
Module ImgAlgos::ImgPeakFinder
This algorithm was motivated by users of amo42112:
1. Select the pixels in the window xmin
, xmax
, ymin
, ymax
with amplitudes above the threshold_low
.
2. Smear image for selected pixels, using 2-d matrix of weights over pixels
from -smear_radius
to +smear_radius
around each smeared pixel amplitude.
The matrix of weights is defined by the 2-d Gaussian function of width sigma
.
3. Find peaks as pixels with absolute-maximal amplitude above the threshold_high
in the center of the matrix -peak_radius
to +peak_radius
.
4. Put the vector of found peaks in the event with key peaksKey
. Each entry of this vector has an object of the struct Peak
, containing x, y positions, peak pixel amplitude, the total amplitude in the matrix, defined by the peak_radius
, and the number of pixels in the matrix above threshold_low
:
...
See also Example for Module ImgAlgos::ImgPeakFinder.
Module ImgAlgos::ImgPeakFilter
This module use results and should work after the ImgAlgos::ImgPeakFinder. It gets the vector of peaks for the source
and key
, loops over all founded peaks and counts the number of peaks above the thresholds threshold_peak
and threshold_total
. If the selection_mode
is "SELECTION_ON" and the number of found peaks exceeds the n_peaks_min
the event is passed for further analysis/processing,
the table of found peaks may be saved in file with prefix defined by the fname
parameter.
...
See also Example for Module ImgAlgos::ImgPeakFilter.
Module ImgAlgos::ImgPeakFinderAB
This module finds peaks in the ndarray<double,2>
image object. Algorithm and the list of parameters are the same as described is section Psana Module Catalog. The only difference is that the image size is defined by the ndarray<double,2>
object.
See also Example for Module ImgAlgos::ImgPeakFinderAB.
Module ImgAlgos::ImgHitFinder
ImgHitFinder is created by request for amo74213. It works pretty similar to ImgCalib, but the threshold algorithms are extended and background subtraction is removed.
It gets the raw image from data and process it as follows:
...
See also Example for Module ImgAlgos::ImgHitFinder.
Module ImgAlgos::ImgSpectra
This module is motivated by the discussion with Josef Frisch, Ryan Coffee, Nick Hartmann. In xppi0412 etc. experiments they need to extract two spectra from Opal1000 camera image for signal and reference, evaluate their relative difference, and find peak position in the differential spectrum.
Module mgAlgos::ImgSpectra
works as follows:
...
See also Example for Module ImgAlgos::ImgSpectra.
Module ImgAlgos::ImgSpectraProc
Works after module ImgAlgos::ImgSpectra.
This module is designed as an example, in order to show how to get access to spectral array.
In particular, method ImgSpectraProc::getSpectra(...)
shows how to get pointer to data, and method ImgSpectraProc::printSpectra(...)
iterates over array and selectively prints its elements.
...
See also Example for Module ImgAlgos::ImgSpectraProc.
Module ImgAlgos::ImgSaveInFile
Note |
---|
Aka depricated modules: CSPadPixCoords::CSPadImageGetTest, CSPadPixCoords::SaveImageInFile, and ImgAlgos::SaveImageInFile. |
...
See also Example for Module ImgAlgos::ImgSaveInFile
Module ImgAlgos::ImgVsTimeSplitInFiles
This module is a part of complex algorithm, described in Command Line Interface For Time Correlation Analysis.
...
<fname_prefix>-<fname-common>-b<block-number>.<file_type>
<fname_prefix>-<fname-common>-med.txt
<fname_prefix>-<fname-common>-time.txt
is implemented in stand-alone c++ moduleCode Block bgColor #F7F7ED ImgAlgos/app/corana.cpp (or ImgAlgos/test/corana.cpp)
Note Note, the application in the
test
directory is compiled and run by the commands:
scons test
<path>/corana -f <fname_data>
-t <fname_tau>\
-h
-l <logfile>\
-b <basedir>\
where
<fname_data>
is one of the data files:<fname_prefix>-<fname-common>-b<block-number>.<file_type>
, which needs to be available;<fname_tau>
is a file with a list of indexes of tau for evaluation of correlations. By default or if the file is missing, the list of indexes will be generated automatically, and for book-keeping is saved in the file<fname_prefix>-<fname-common>-tau.txt
;<basedir>
is a directory for all data files, which is current by default;<logfile>
is an output log-file, or standard output by default.
Module ImgAlgos::ImgTimeStampList
This module is reduced from ImgAlgos::ImgVsTimeSplitInFiles.
Functionality is restricted to:
...
parameter | default value | description |
---|---|---|
| "tstamp-list.txt" | output files common prefix |
| 0 | verbosity:
|
Module ImgAlgos::ImgIntMonCorr
This module is intended for CorAna
project.
ImgIntMonCorr gets the image and intensity monitor data, evaluate the normalization factor, applies this factor to the image intensity, and saves the corrected image in the event.
...
Code Block | ||
---|---|---|
| ||
BldInfo(FEEGasDetEnergy) FEEGasDetEnergy 1 1 1 1 0 1 3.000000 7.500000 5.250000 BldInfo(XCS-IPM-02) XCS-IPM-02 1 1 1 0 1 0 10.000000 13.000000 11.500000 BldInfo(XCS-IPM-mono) XCS-IPM-mono 1 1 1 0 0 1 14.500000 16.000000 15.250000 DetInfo(XcsBeamline.1:Ipimb.4) Ipimb.4 1 1 1 1 0 0 -1.000000 -1.000000 1.000000 DetInfo(XcsBeamline.1:Ipimb.5) Ipimb.5 1 1 1 1 0 0 -1.000000 -1.000000 1.000000 |
Module ImgAlgos::IntensityMonitorsData
This module is intended for CorAna
project.
It gets the 5 intensity monitors data (4 channels for each) and saves them in the text or binary file file_data
. Comments (or header) for this file is saved separately in file_header
. It also prints the summary parameters for parser, for example:
...
parameter | default value | description |
---|---|---|
| "BldInfo(FEEGasDetEnergy)" | source name for intensity monitor |
| "BldInfo(XCS-IPM-02)" | source name for intensity monitor |
| "BldInfo(XCS-IPM-mono)" | source name for intensity monitor |
| "DetInfo(XcsBeamline.1:Ipimb.4)" | source name for intensity monitor |
| "DetInfo(XcsBeamline.1:Ipimb.5)" | source name for intensity monitor |
| "txt" | file type may be "txt" or "bin" |
| "intensity-monitor-data.txt" | file name for data from intensity monitors |
| "intensity-monitor-comments.txt" | file name for comments |
| 0 | verbosity:
|
Module ImgAlgos::CSPadArrSaveInFile
This module saves the CSPad data array formatted as [5920=4*8*185][388] in output file for each passes event.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, for example, it might be "calibrated" |
| "cspad-arr" | out file name prefix for saved array |
| 0 | module verbosity:
|
Module ImgAlgos::CSPadArrAverage
This module averages the CSPad data array and saves two files for averaged and rms values in CSPad format [5920=4*8*185][388]. In contrast to the cspad_mod.CsPadPedestals, the input data can be specified with a key
, that allows to average CSPad array for already pre-processed data, for example "calibrated"
. This feature can be used to evaluate the averaged signal or background event. Implemented algorithm of averaging allows to eliminate large statistical fluctuations in the pixel amplitude spectrum. In advanced case averaging may have up to three stages, depending on configuration parameters:
...
See also Example for Module ImgAlgos::CSPadArrAverage.
Module ImgAlgos::CSPadCommonModeCorrection
Alternative to the cspad_mod.CsPadCalib
algorithm for the common mode correction.
Takes the CSPad data array with subtracted pedestals, evaluate the average amplitude for each 2x1 section for amplitudes below the threshold, and subtract it from all pixel amplitudes. This algorithm consumes about 30 ms/event on psana0205.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | source of data for CSPad |
| "calibrated" | key for input data, by default expects data from |
| "cm_subtracted" | output key for the next data processing stage |
| 30 | threshold to exclude the large pixel amplitudes in average |
Module ImgAlgos::CSPadBkgdSubtract
This module uses the CSPad array, specified by the configuration parameters source
and inputKey
, subtracts the background, defined in the file bkgd_fname
, and saves the resulting array in the event with outputKey
. The subtracted background array is normalized on the sum of pixel amplitudes in the quad section norm_sector
, which can be set from 0 to 7.
...
See also Example for Module ImgAlgos::CSPadBkgdSubtract.
Module ImgAlgos::CSPadMaskApply
This module uses the CSPad array, defined by the configuration parameters source
and inkey
, apply the mask from file mask_fnname
and saves the masked data with key outkey
. For masked pixels the amplitude will be replaced by the value from masked_amp
.
...
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad)" | input source of data |
|
| key for input data, by default use raw data |
| "bkgd_subtracted" | output key for the next data processing stage |
| "cspad_mask.dat" | file with CSPad mask array [4*8*185][388] |
| 0 | this amplitude will replace the amplitude in each masked pixel |
| 1 | control bits for applied mask:
|
| 0 | module verbosity:
|
Module ImgAlgos::CSPadArrNoise
This module works on CSPad data array shaped as [5920=4*8*185][388], uses the "median algorithm" to evaluate the signal and noise for each pixel, evaluates S/N ratio for each pixel, counts the fraction of events where S/N > SoNThr
, and writes the same shape arrays for pixel mask and status information in the maskfile
and statusfile
, respectively. The statusfile
contains for each pixel the fraction of events where S/N > SoNThr
. This module presents a part of features implemented in the module ImgAlgos::CSPadArrPeakFinder.
...
See also Example for Module ImgAlgos::CSPadArrNoise.
Module ImgAlgos::CSPadArrPeakFinder
Module ImgAlgos::CSPadArrPeakFinder
is a psana-based implementation of the "median algorithm" for peak finding in CSPad data array shaped as [5920=4*8*185][388]. This algorithm was first implemented in myana/Cheetah by Anton Barty and Co. The "median algorithm" assumes that the amplitude level of background and noise for each pixel can be estimated as a mean and RMS of the surrounding pixels, located in the ring with parameters rmin
and dr
around the pixel in question. The threshold SoNThr_noise
on signal over noise (S/N) ratio allow to asset the pixel amplitude as a large noise fluctuation. Statistics of pixels above the S/N threshold accumulated over many images can be used to form the noisy-pixel mask. For example, if the fraction of images where pixel exceeds the S/N threshold grater than certain value (frac_noisy_imgs
=0.9), the pixel is considered as noisy. The permanent bad pixel mask (see module ImgAlgos::CSPadMaskApply) and dynamically evaluated noisy pixel mask are used to get rid of bad pixels and improve the image quality. Healthy pixels with S/N above threshold (SoNThr_signal
about 3-5) are treated as potential signals. Using recursive flood-filling algorithm the groups of connected signal pixels can be found and considered as a candidate for a diffraction peaks. Peak finding algorithm uses the amplitude, S/N thresholds, and limits on number of pixels in the connected region (parameters peak_amp_tot_thr
, peak_SoN_thr
, peak_npix_min
, and peak_npix_max
) in order to define the peak. Finally, the event is selected or discarded depending on number of found peaks and total amplitude threshold, defined by the parameters event_npeak_min
, event_npeak_max
, and event_amp_tot_thr
, respectively.
...
See also Example for Module ImgAlgos::CSPadArrPeakFinder.
Module ImgAlgos::CSPadArrPeakAnalysis
This module is intended for analysis of the results obtained in the peak finding algorithm implemented in the ImgAlgos::CSPadArrPeakFinder
module.
...
See also Example for Module ImgAlgos::CSPadArrPeakAnalysis.
Package py_img_algos
This package contains python modules which work with both frameworks pyana and psana. Functionality of these modules resembles modules from C++ package ImgAlgos. The difference between two frameworks at code level is explained in Migration from pyana to psana.
Module py_img_algos.cspad_arr_producer
This module gets data from evt
store for CSAPD or CSPAD2x2 depending on unique detector name in parameter source
, produce numpy array of full scale shape (4,8,185,388) or (185, 388, 2) of specified in dtype
type, and saves it in the evt
store with unique name key_out
. In case of missing 2x1 sections, their pixel amplitudes substituted by the value form val_miss
.
...
See also Examples for package py_img_algos.
Module py_img_algos.cspad_image_producer
This module gets from evt
store the numpy array identified by key_in
of full scale shape (4,8,185,388) or (185, 388, 2) for CSPAD or CSPAD2x2, respectively, and produces 2-d image numpy array, taking into account geometry calibration parameters specified by the path calib_dir
. The output image array is saved in the evt
store with unique name, specified by parameter key_out
.
...
See also Examples for package py_img_algos.
Module py_img_algos.image_save_in_file
This module gets from evt
store 2-d image numpy array for specified unique name in key_in
and saves it in the file with name given by parameter ofname
. File extension defines the output file format. Run and event numbers are added to the name of the output file. For example, for ofname = image.tiff
files will be created with names image-r####-ev######.tiff
, where symbols # stands for numbers.
...
See also Examples for package py_img_algos.
Module py_img_algos.tahometer
Is intended to print records showing job performance current and integrated from the beginning of job:
...
See also Examples for package py_img_algos.
References
- Psana User Manual
- Psana Reference Manual
- Psana Module Examples
- Migration from pyana to psana
- psana - Migration from pyana
...