Page History
Include Page | ||||
---|---|---|---|---|
|
Table of Contents |
---|
Include Page | ||||
---|---|---|---|---|
|
About
This page provides a list of existing modules for psana framework. Only the modules that are included in the standard analysis releases appear on this page.
...
This page provides examples for selected modules in Psana Module Examples.
Source Code Access
You can find the source code at SLAC (e.g. for module CSPadPixCoords::PixCoordsTest) in these two directories:
Code Block |
---|
/reg/g/psdm/sw/releases/ana-current/CSPadPixCoords/src/PixCoordsTest.cpp (.cpp for c++ source code, or .py for python source code) /reg/g/psdm/sw/releases/ana-current/CSPadPixCoords/include/PixCoordsTest.h (c++ include file) |
Package psana
Psana package include several simple modules which do generic tasks that do not need knowledge of the event data types.
...
See also Example for Module CSPadPixCoords::CSPad2x2NDArrProducer.
Package ImgPixSpectra
For complete reference see the Doxygen documentation.
Note |
---|
Package ImgPixSpectra is available since release |
Package ImgPixSpectra is intended to accumulate the spectra for all pixels of the image array.
Different modules of this package work with different data types for detectors like CSPad, CSPad2x2, Opal, Princeton camera, etc. All modules have the same interface and the same functionality.
In the loop over events from beginJob
to endJob
the image pixel amplitudes are accumulated in the 2-d array,
of the shape (<number-of-pixels>, <number-of-spectral-bins>). The first parameter is defined by the image size. The second is passed as an external parameter of the psana configuration file (psana.cfg
) along with minimal and maximal amplitudes. At the endJob
the spectral array is saved in file with specified name. Auxiliary file with the name extension *.sha
is created in order to save the shape parameters. For example, the "cspad2x2-pix-spectra.txt.sha" outpuit file contains
Code Block | ||
---|---|---|
| ||
NPIXELS 143560
NBINS 100
AMIN 500
AMAX 1000
NEVENTS 2549
ARRFNAME cspad2x2-pix-spectra.txt
|
This information can be used in analysis or presentation of this array.
Module ImgPixSpectra::CSPadPixSpectra
Module CSPadPixCoords::CSPad2x2NDArrReshape
CSPad2x2NDArrReshape is a module for psana framework. This module reshapes ndarrays from cspad2x2 data format (185,388,2) to cspad-"natural" format (2,185,388). Input arrays for re-shaping are specified by the source
and keys_in
parameters. Output arrays - by the source
and keys_out
parameters. Currently four data type are supported for input arrays; int16, int, float, and double of const and non-const types. Output arrays have the same data type as input.
Conventions for key lists description
- keys_in should not be empty to convert something,
- keys should be space separated, ex.: keys_in = k1 key2 key3 k4,
- if keys_out is non-empty then the number of keys in keys_out should be equal to the number of keys in keys_in and their names will be used without any modifications,
- If keys_out is empty, then all keys are defined by the list of key_in
- if the key in key_in has a suffix specified by the colon ":", this suffix will be dropped for the output key, ex.: key12:xyz -> key12
- if the key suffix is missing in the input key, then it will be added to the output key as :2x185x388, ex.: key12 -> key12:2x185x388
Configuration List of parameters:
parameter | default value | description |
---|---|---|
| "CxiDs1.0:Cspad.0:Cspad2x2" | source of data for CSPad |
| 1<<31U | number of events before stop a job |
|
| input key for data processing stage |
| 0. | minimal spectral amplitude |
| 1000. | maximal spectral amplitude |
| 100 | number of bins in spectra |
| "..._spectral_array.txt" | output file name |
See also: Example for Module ImgPixSpectra::CSPadPixSpectra.
Module ImgPixSpectra::CSPad2x2PixSpectra
The only difference in interface of this module from previous is in the default name for the source parameter and the output file name.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad2x2)" | source of data for CSPad2x2 |
See also: Example for Module ImgPixSpectra::CSPad2x2PixSpectra.
Module ImgPixSpectra::CameraPixSpectra
The only difference in interface of this module from previous is in the default name for the source parameter and the output file name.
parameter | default value | description |
---|---|---|
| "DetInfo(SxrBeamline.0:Opal1000.1)" | source of data for Opal camera |
or:
parameter | default value | description |
---|---|---|
| "DetInfo(:Princeton)" | source of data for Princeton camera |
See also Example for Package ImgPixSpectra.
Package ImgAlgos
This packages contains a few psana
modules for analysis and image processing
Module ImgAlgos::Tahometer
This module measures the time interval for entire job and for each dn
events and prints the rate info as requested by the print_bits
parameter.
parameter | default value | description |
---|---|---|
| 100 | number of events between printout |
| 2 | filter verbosity:
|
See also Example for Module ImgAlgos::Tahometer.
Module ImgAlgos::TimeStampFilter
This module passes only the events if their time stamp is in the requested range.
The range of allowed time stamps is defined by the configuration parameters.
parameter | default value | description |
---|---|---|
| "1970-01-01 00:00:00.000000000 / 2100-01-01 00:00:00.000000000" | time-stamp interval string |
| "1970-01-01 00:00:00.000000000" | minimal time-stamp string |
| "2100-01-01 00:00:00.000000000" | maximal time-stamp string |
| true | On/Off the filter |
| 0 | filter verbosity:
|
The time-stamp string is accepted in various formats:
YYYYMMDD HHMMSS.FFF
YYYYMMDDTHHMMSS.F
YYYY-MM-DD HH:MM:SS.FFF
but the date field has to be presented mandatory.
If thetsinterval
is defined and is different from the default, it will be used in filter and override thetstamp_min
andtstamp_max
.
See also Example for TimeStampFilter and XtcOutputModule.
Module ImgAlgos::EventNumberFilter
This filter selects events by their number counting from the beginning of job, starting from 0. The event number is not a parameter which is associated with event. Use this filter cautiously on your own risk for debugging purpose only.
...
list of input keys separated by space. At least one should be specified. May have suffixes as <key>:<suffix>, which will be dropped for default | ||
|
| list of output keys separated by space. Is empty by default, list will be generated from the list defined in |
| 0 | verbosity:
|
See also Example for Module CSPadPixCoords::CSPad2x2NDArrReshape.
JIRA Issue:
Jira | ||||
---|---|---|---|---|
|
Package ImgPixSpectra
For complete reference see the Doxygen documentation.
Note |
---|
Package ImgPixSpectra is available since release |
Package ImgPixSpectra is intended to accumulate the spectra for all pixels of the image array.
Different modules of this package work with different data types for detectors like CSPad, CSPad2x2, Opal, Princeton camera, etc. All modules have the same interface and the same functionality.
In the loop over events from beginJob
to endJob
the image pixel amplitudes are accumulated in the 2-d array,
of the shape (<number-of-pixels>, <number-of-spectral-bins>). The first parameter is defined by the image size. The second is passed as an external parameter of the psana configuration file (psana.cfg
) along with minimal and maximal amplitudes. At the endJob
the spectral array is saved in file with specified name. Auxiliary file with the name extension *.sha
is created in order to save the shape parameters. For example, the "cspad2x2-pix-spectra.txt.sha" outpuit file contains
Code Block | ||
---|---|---|
| ||
NPIXELS 143560
NBINS 100
AMIN 500
AMAX 1000
NEVENTS 2549
ARRFNAME cspad2x2-pix-spectra.txt
|
This information can be used in analysis or presentation of this array.
Module ImgPixSpectra::CSPadPixSpectra
List of parameters:
parameter | default value | description |
---|---|---|
| "CxiDs1.0:Cspad.0" | source of data for CSPad |
| 1<<31U | number of events before stop a job |
|
| input key for data processing stage |
| 0. | minimal spectral amplitude |
| 1000. | maximal spectral amplitude |
| 100 | number of bins in spectra |
| "..._spectral_array.txt" | output file name |
See also: Example for Module ImgPixSpectra::CSPadPixSpectra.
Module ImgPixSpectra::CSPad2x2PixSpectra
The only difference in interface of this module from previous is in the default name for the source parameter and the output file name.
parameter | default value | description |
---|---|---|
| "DetInfo(:Cspad2x2)" | source of data for CSPad2x2 |
See also: Example for Module ImgPixSpectra::CSPad2x2PixSpectra.
Module ImgPixSpectra::CameraPixSpectra
The only difference in interface of this module from previous is in the default name for the source parameter and the output file name.
parameter | default value | description |
---|---|---|
| "DetInfo(SxrBeamline.0:Opal1000.1)" | source of data for Opal camera |
or:
parameter | default value | description |
---|---|---|
| "DetInfo(:Princeton)" | source of data for Princeton camera |
See also Example for Package ImgPixSpectra.
Anchor | ||||
---|---|---|---|---|
|
Package ImgAlgos
This packages contains a few psana
modules for analysis and image processing.
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::Tahometer
This module measures the time interval for entire job and for each dn
events and prints the rate info as requested by the print_bits
parameter.
parameter | default value | description |
---|---|---|
| 100 | number of events between printout |
| 2 | |
| true | On/Off filter |
| 0 | the first event from the beginning of job, starting from 0 |
| 1<<31 | the last event from the beginning of job |
|
| the string of events of intervals from the beginning of job |
| 0 | filter verbosity:
|
There are two modes of operation of this filter.
- If the
first
and/orlast
event numbers are defined, then the filter will select events in this range only. If the
evtstring
is defined, only listed events of event ranges will be selected. For example, theevtstring
parameter can be defined asCode Block bgColor #F7F7ED 2,5,11-15,20-25,29,30
that means the list of events:
Code Block bgColor #F7F7ED 2 5 11 12 13 14 15 20 21 22 23 24 25 29 30
In the
evtstring
parameter the comma "," and sign minus "-" as a dash are the only allowed separators. Blank spaces are also allowed. Other characters may abort the program. Theevtstring
mode has higher priority than the 1st mode.
ThefilterIsOn
allows easy turn on/off this filter in*.cfg
file.
Module ImgAlgos::EventCounterFilter
ImgAlgos::EventCounterFilter (ImgAlgos > V00-03-46) module is created by request of Thomas Kroll for experiment with mobile rack in SACLA .
Functionality:
Filter select events which numbers are listed in the input file ifname
. This module uses local counter started from 1 for the 1-st event of the job and incremented in the event(...) method. The file ifname
contains the list of integer event numbers in ascending order separated by space or '\n'.
parameter | default value | description |
---|---|---|
| 1 | filter mode: 0-off, 1-on, -1-on in inverted decision mode |
| input file name, is empty by default | |
| 0 | verbosity:
|
Input file (ifname
)consists of integer numbers in ascending order separated by space or '\n', for example:
Code Block |
---|
2 3 6 7 9 11 15
17 28 32 ... |
Module ImgAlgos::AndorImageProducer
Functionality:
- gets Andor data from the event store for specified
source
andkey_in
parameters, - puts the
ndarray<
object with camera image in the event store using specifiedconst
T,2>key_out
parameter, where the output type T is defined by theouttype
parameter.
|
See also Example for Module ImgAlgos::Tahometer.
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::TimeStampFilter
This module passes only the events if their time stamp is in the requested range.
The range of allowed time stamps is defined by the configuration parameters.
parameter | default value | description |
---|---|---|
| "1970-01-01 00:00:00.000000000 / 2100-01-01 00:00:00.000000000" | time-stamp interval string |
| "1970-01-01 00:00:00.000000000" | minimal time-stamp string |
| "2100-01-01 00:00:00.000000000" | maximal time-stamp string |
| true | On/Off the filter |
| 0 | filter verbosity:
|
The time-stamp string is accepted in various formats:
YYYYMMDD HHMMSS.FFF
YYYYMMDDTHHMMSS.F
YYYY-MM-DD HH:MM:SS.FFF
but the date field has to be presented mandatory.
If thetsinterval
is defined and is different from the default, it will be used in filter and override thetstamp_min
andtstamp_max
.
See also Example for TimeStampFilter and XtcOutputModule.
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::EventNumberFilter
This filter selects events by their number counting from the beginning of job, starting from 0. The event number is not a parameter which is associated with event. Use this filter cautiously on your own risk for debugging purpose only.
Note |
---|
The unique parameter associated with the event is a time-stamp. The event number is not defined in the xtc file and is not a recommended to use parameter. The events are counted locally inside this filter from the beginning of job starting from 0. Be cautious of using this filter in consecutive jobs for different runs! For example, this filter returns different subsets of events for the files with raw and selected events. |
parameter | default value | description |
---|---|---|
| true | On/Off filter |
| 0 | the first event from the beginning of job, starting from 0 |
| 1<<31 | the last event from the beginning of job |
|
| the string of events of intervals from the beginning of job |
| 0 | filter verbosity:
|
There are two modes of operation of this filter.
- If the
first
and/orlast
event numbers are defined, then the filter will select events in this range only. If the
evtstring
is defined, only listed events of event ranges will be selected. For example, theevtstring
parameter can be defined asCode Block bgColor #F7F7ED 2,5,11-15,20-25,29,30
that means the list of events:
Code Block bgColor #F7F7ED 2 5 11 12 13 14 15 20 21 22 23 24 25 29 30
In the
evtstring
parameter the comma "," and sign minus "-" as a dash are the only allowed separators. Blank spaces are also allowed. Other characters may abort the program. Theevtstring
mode has higher priority than the 1st mode.
ThefilterIsOn
allows easy turn on/off this filter in*.cfg
file.
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::EventCounterFilter
ImgAlgos::EventCounterFilter (ImgAlgos > V00-03-46) module is created by request of Thomas Kroll for experiment with mobile rack in SACLA .
Functionality:
Filter select events which numbers are listed in the input file ifname
. This module uses local counter started from 1 for the 1-st event of the job and incremented in the event(...) method. The file ifname
contains the list of integer event numbers in ascending order separated by space or '\n'.
parameter | default value | description |
---|---|---|
| 1 | filter mode: 0-off, 1-on, -1-on in inverted decision mode |
| input file name, is empty by default | |
parameter | default value | description |
| "DetInfo(:Andor)" | source of data |
|
| key for input data |
| "andorimg" | output key for image saved in the event store |
| "asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. |
| 0 | verbosity:
|
Module ImgAlgos::EpixNDArrProducer
Functionality:
- gets Epix data from the event store for specified
source
andkey_in
parameters, - puts the
ndarray<
object with image in the event store using specifiedconst
T,2>key_out
parameter, where the output type T is defined by theouttype
parameter.
|
Input file (ifname
)consists of integer numbers in ascending order separated by space or '\n', for example:
Code Block |
---|
2 3 6 7 9 11 15
17 28 32 ... |
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::EventCodeFilter
ImgAlgos::EventCodeFilter (ImgAlgos > V00-03-80) module is created by request of Silke Nelson for dark image selection based on EvrData eventCode.
Functionality: Filter selects events which have requested evtcode
in Psana::EvrData::DataV4, 3, ...
data objects in the list of Psana::EvrData::FIFOEvent
objects. Events which do not have the event code are skipped.
parameter | default value | description |
---|---|---|
source | DetInfo(:Evr) | data source |
evtcode | 0 | event code, unsigned number |
| 0 | filter mode: 0-off, 1-on, -1-on in inverted decision mode |
parameter | default value | description |
| "DetInfo(:Epix10k)" | source of data |
|
| key for input data |
| "andorimg" | output key for image saved in the event store |
| "asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. |
| 0 | verbosity:
|
See also Example for Module ImgAlgos::EpixNDArrProducer.
...
|
Example of configuration parameters for this module:
Code Block |
---|
modules = ... ImgAlgos.EventCodeFilter ...
[ImgAlgos.EventCodeFilter]
evtcode = 41
mode = 1
print_bits = 5 |
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::AndorImageProducer
Functionality:
- gets pnCCD Andor data from Psana::PNCCD::FramesV1 object from the event store for specified
source
andkey_in
parameters, - puts the
ndarray<
object of shape 4x512x512const
TOUTT,3>2>
object with camera image in the event store using specifiedkey_out
parameter, where the output type T is defined by theouttype
parameter.
parameter | default value | description |
---|---|---|
| "DetInfo(:pnCCDAndor)" | source of data |
|
| key for input data |
| "andorimg" | output key for image saved in the event store |
| "asdata" | out data type: implemented values: asdata (default, unsigned shortuint16_t), float, double, int and int16. |
| 0 | verbosity:
|
Module ImgAlgos::
...
EpixNDArrProducer
Functionality:
- gets Epix data from the event store the object with pnCCD data of type
- Psana::PNCCD::FullFrameV1 containing four [512][512] frames with T=uint16_t, or
ndarray<const T,3>
, where shape=[4][512][512], T=unsigned short, float, double, int, or int16,
source
andinkey
parametersfor specifiedsource
andkey_in
parameters, - puts the
ndarray<
object with image in the event store using specifiedconst
T,2>key_out
parameter, where the output type T is defined by theouttype
puts thendarray<
object with pnccd [1024+gap_rows][1024+gap_cols] image in the event using specifiedconst
T,2>outimgkey
parameter.
parameter | default value | description |
---|---|---|
| "DetInfo(:pnCCDEpix)" | source of data, it needs to be replaced for real detector to :Epix100a |
|
| key for input data |
| "pnccdimgepix-ndarr" | output key for image saved in the event store |
gap_rows | 0 | gap between top and bottom segments in number of pixels |
gap_cols | 0 | gap between left and right segments in number of pixels |
gap_value | 0 | Image effective pixel intensity value in the gap |
| "asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. |
| 0 | verbosity:
|
See also Example for Module ImgAlgos::PnccdImageProducerEpixNDArrProducer.
Module ImgAlgos::
...
PnccdNDArrProducer
Functionality:
- gets any camera image data CamerapnCCD data from Psana::PNCCD::FrameV1 FramesV1 object from the event store for specified
source
andkey_in
parameters, - puts the
ndarray<
object with camera image in the event using specified typeconst
TTOUT,2>
object of shape 4x512x512 specifiedouttype
and 3>key_out
parameters parameter.
parameter | default value | description | ||||
---|---|---|---|---|---|---|
| "DetInfo(:CamerapnCCD)" | source of data | ||||
|
| key for input data | ||||
| "pnccdimgpnccd-ndarr" | output key for image saved in event | ||||
| "asdata" | out data type: implemented values: asdata (default, | uint16_tunsigned short), float, double, int and int16. |
| true | on/off the amplitude offset using configuration data (not applied for |
| 0 | verbosity:
|
...
|
...
Module ImgAlgos::
...
PnccdImageProducer
Module ImgAlgos::PrincetonImageProducer
Functionality:
- gets the Princeton or Pimax camera image data Princeton::FrameV1/2 or Pimax::FrameV1 from the event store for specified
source
andkey_in
parameters,puts thendarray<
object with pnCCD data of type
T,2>const
- Psana::PNCCD::FullFrameV1 containing four [512][512] frames with T=uint16_t, or
ndarray<const T,3>
, where shape=[4][512][512], T=unsigned short, float, double, int, or int16,
source
andinkey
parameters
- puts the
ndarray<
object with pnccd [1024+gap_rows][1024+gap_cols] image in the event using specifiedconst
T,2>outimgkey
parameter camera image in the event using specified type
parameters.outtype
and key_out
parameter | default value | description |
---|---|---|
| "DetInfo(:PrincetonpnCCD)" | source of data |
|
| key for input data (raw - by default) |
| "imagepnccdimg" | output key for image saved in event |
| "asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. |
| 0 | verbosity:
|
gap_rows | 0 | gap between top and bottom segments in number of pixels |
gap_cols | 0 | gap between left and right segments in number of pixels |
gap_value | 0 | Image effective pixel intensity value in the gap |
| 0 | verbosity:
|
See also Example for Module ImgAlgos::PrincetonImageProducerPnccdImageProducer.
...
Module ImgAlgos::
...
CameraImageProducer
This module works with any generic camera image stored in data type Camera::FrameV#:
- gets any camera image data Camera::FrameV1 from the event store for specified Gets acqiris configuration and data from
Acqiris::ConfigV1
andAcqiris::DataDescV1
, objects usingparameters source
andkey_in
; - produces
ndarray<const double,2>
ofshape[] = {nbrChannels, nbrSamples}
for waveforms and time stamps; - saves configuration data in the file defined by
fname_prefix
; - parameters,
puts the
ndarray<
object with camera image in the event store using specified type
T,2>const
parameters.outtype
and key_out
saves waveforms and time stamps in the event store with keysNote Special treatment for fccd960: if
is not "asdata" the gain factor depending on gain bits is applied, See FCCD-Detectorouttype
key_wform
andkey_wtime
.
parameter | default value | description | ||
---|---|---|---|---|
| "DetInfo(:AcqirisCamera)" | source of data | ||
|
| key for input data (by default (empty) – raw data) | ||
| "acq_wformpnccdimg" | output key for waveforms image saved in event | ||
| " | acq_wtime"output key for waveform times saved in event | ||
|
| file name prefix for configuration parameters (by default (empty) – do not save file) | ||
asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. | |||
| true | on/off | switch for time correction; if the amplitude offset using configuration data (not applied for | |
| 0 | verbosity:
|
...
|
See also Example for Module ImgAlgos::
...
...
Module ImgAlgos::
...
PrincetonImageProducer
Functionality:
- gets the Princeton or Pimax camera image data Princeton::FrameV1/2 or Pimax::FrameV1 from the event store for specified Gets Acqiris waveforms from event store as
ndarray<
object using parametersconst
double,2>source
andkey_in
;performs waveform selection controlled by parameters:thresholds
,is_postive_signal
,do_inverse_selection
, in the range depending on local event numbersskip_events
andproc_events;
- puts the
ndarray<
object with camera image in the event using specified type
T,2>const
parametersafter number of eventsouttype
and key_outproc_events
or at the end of job (whatever happens first), saves array of averaged waveforms in the text file with name constructed fromfname_ave_prefix
and in the event store using parameterssource
and key_average
.
parameter | default value | description | ||
---|---|---|---|---|
| "DetInfo(:AcqirisPrinceton)" | Source source of data. | ||
|
|
| key Key for input data (raw - by default). | |
| average
| " | acq-aveimage" | Keyword for averaged waveform array saved in the evt store. If empty – array is not saved. |
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" , for example: "acq-amo01509-r0125-ave-wfs.txt". | ||
thresholds | "" | List of threshold values for all Acqiris channels separated by space. If empty – threshold selection is not applied, all waveforms are averaged. | ||
is_positive_signal |
| Space-separated list of 1/0 values indicating signal polarity. For example, "1 1 1 0 1" (without the quotes!) would indicate Acqiris channels 1,2,3,5 contained positive signal polarity, while channel 4 contained a negative signal polarity. | ||
do_inverse_selection |
| Space-separated ist of 1/0 values indicating which waveforms to include in average. For example, "0 0 0 1 0" (without the quotes) would tell the code to average only waveforms that do not cross the threshold for channels 1,2,3,5 while channel 4 would average only waveforms that do cross the threshold. | ||
skip_events |
| Number of events (from the beginning of job) to skip before begin averaging. | ||
output key for image saved in event | ||||
| "asdata" | out data type: implemented values: asdata (default, uint16_t), float, double, int and int16. | ||
| 0 | verbosity:
|
See also Example for Module ImgAlgos::PrincetonImageProducer.
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::AcqirisArrProducer
- Gets acqiris configuration and data from
Acqiris::ConfigV1
andAcqiris::DataDescV1
, objects usingparameters source
andkey_in
; - produces
ndarray<const double,2>
ofshape[] = {nbrChannels, nbrSamples}
for waveforms and time stamps; - saves configuration data in the file defined by
fname_prefix
; - saves 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 (by 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) | |||
correct_t | true | on/off switch for time correction; if =false - array indexes are the same as in raw data waveform |
|
| Number of events for averaging.|
|
| Verbosityverbosity:
|
...
Anchor |
---|
...
|
...
|
Module ImgAlgos::
...
AcqirisAverage
- Gets Acqiris waveforms from event store as
ndarray<
object using parametersconst
double,2>source
andkey_in
; - processes events performs waveform selection controlled by parameters:
thresholds
,is_postive_signal
,do_inverse_selection
, in the range depending on local event numbersskip_events
andproc_events;
- at the 1st processed event loads the fname_base_line file with baseline
ndarray<
;const
double,2> - subtract baseline from waveforms;
- save corrected waveforms in the event store as
ndarray<
object after number of eventsconst
double,2>proc_events
or at the end of job (whatever happens first), saves array of averaged waveforms in the text file with name constructed fromfname_ave_prefix
and in the event store using parameterssource
andkey_out
average
.
parameter | default value | description | ||||
---|---|---|---|---|---|---|
|
| Source of data. | ||||
|
| Key for input ndarray with raw waveforms from | ||||
key_ | outaverage | " | wfacq- | calibratedave" | Key for output ndarray with calibrated waveforms. | Keyword for averaged waveform array saved in the evt store. If empty – array is not saved. |
fname_ave_prefix | fname_base_line"acq-ave" | Name of the input text file with array of the baselines for active Acqiris channels. By default this name coincides with the name of the file produced by the module Text file name prefix for averaged array, full name will be extended by the experiment name, run number and suffix "-ave-wfs.txt" , for example: "acq-amo01509-r0125-ave-wfs.txt" | ) is not found on disk, the file name without extension will be tested. If it is not found as well, baseline subtraction will not be performed and output array will be identical to input one.. | |||
thresholds | "" | List of threshold values for all Acqiris channels separated by space. If empty – threshold selection is not applied, all waveforms are averaged. | ||||
is_positive_signal |
| Space-separated list of 1/0 values indicating signal polarity. For example, "1 1 1 0 1" (without the quotes!) would indicate Acqiris channels 1,2,3,5 contained positive signal polarity, while channel 4 contained a negative signal polarity. | ||||
do_inverse_selection |
| Space-separated ist of 1/0 values indicating which waveforms to include in average. For example, "0 0 0 1 0" (without the quotes) would tell the code to average only waveforms that do not cross the threshold for channels 1,2,3,5 while channel 4 would average only waveforms that do cross the threshold. | ||||
skip_events |
| Number of events (from the | skip_events |
| Number of events (from the beginning of job) to skip before begin subtractionaveraging. | |
|
| Number of events for | subtractionaveraging. | |||
|
| Verbosity:
|
Example for Module ImgAlgos::AcqirisCalibAcqirisAverage
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::
...
AcqirisCalib
- Gets Acqiris waveforms from event store as
ndarray<
ndarray<
object object using parameters parametersconst
double,2>source,
andkey_wform, key_wtime
; runs constant-fraction discriminator algorithm on all acqiris channels using user-specified per-channel parameters;
in
;- processes events in the range depending on local event numbers
skip_events
andproc_events;
- at the 1st processed event loads the fname_base_line file with baseline
ndarray<
;const
double,2> - subtract baseline from waveforms;
- save corrected waveforms in the event store as
ndarray<
object usingconst
double,2>parameters source
andkey_out.
saves edges into the event as a set of ndarray<double,1>;
parameter | default value | description |
---|---|---|
| "DetInfo(:Acqiris)" | Source of data. |
|
...
| " |
...
acq_wform" | Key for input ndarray with |
...
raw waveforms from
|
key_ |
...
out | " |
...
wf-calibrated" | Key for |
...
output ndarray with |
...
calibrated waveforms. |
...
fname_base_ |
...
line | " |
...
Key for output ndarray<double,1> with calibrated waveforms. This key will have the acqiris channel number (1 thru 20) appended to the end of it, and the data for that channel will be added to the event only if edges were found.
acq-ave" | Name of the input text file with array of the baselines for active Acqiris channels. By default this name coincides with the name of the file produced by the module | |
skip_events |
| Number of events (from the beginning of job) to skip before begin subtraction. |
|
| Number of events for subtraction. |
| 0 | Verbosity:
|
Example for Module ImgAlgos::AcqirisCalib
Anchor | ||||
---|---|---|---|---|
|
Module ImgAlgos::AcqirisCFD
- Gets Acqiris waveforms from event store as
ndarray<
object using parametersconst
double,2>source,
key_wform, key_wtime
; runs constant-fraction discriminator algorithm on all acqiris channels using user-specified per-channel parameters;
saves edges into the event as a set of ndarray<double,1>;
...
""
...
A list of baseline values (one per channel) to subtract from the waveform in volts.
...
""
...
A list of fractions (one per channel) between 0 and 1. The edge-time reported will be at the time when the pulse is at this fraction of the peak value.
...
""
...
A list of threshold values (one per channel) in volts that indicate a new edge should be found. If this value is less than the baseline, then the algorithm will look for negative pulses, otherwise it will look for positive pulses.
...
""
...
A list of deadtimes (one per channel) in seconds. After each edge the algorithm will ignore any new hits in this time interval.
...
""
...
A list of 0/1 values (one per channel) indicating whether edge-times are desired for leading edges (1) or falling edges (0).
Example for Module ImgAlgos::AcqirisCFD
Module ImgAlgos::NDArrImageProducer
For any available in the event store ndarray<
defined by the const
T,NDim>,source
and key_in
parameters, and which size is equal to the number of pixels in the detector, this module creates 2-d image ndarray<
and saves it in the event store with key_out. TOUT is defined by the type_out. Pixel geometry array is retreived from the calibration file of "geometry" type from default standard or specified in const
TOUT,2>calibdir
directory.
...
parameter
default value
description
source
"DetInfo(:Acqiris)"
...
Source of data.
...
key_in
...
""
...
key for input data, for example it might be "calibrated", by default (empty) raw data
...
print_bits
...
0
...
module verbosity:
- =0 - print nothing
- +1 - input pars
- +2 - info about (non-) availability of the calibration file
- +4 - event record
- +8 - info about produced image
- +16 - size of types table
- +32 - pixel coordinates
- +64 - detailed information about geometry file processing
key_wform
"acqiris_wform"
Key for input ndarray with waveforms (either raw, or subtracted using AcqirisCalib module) from
evt
store.key_wtime
"acqiris_wtime"
Key for input ndarray with waveform times from
evt
store.key_edges "acqiris_edges_"
Key for output ndarray<double,1> with calibrated waveforms. This key will have the acqiris channel number (1 thru 20) appended to the end of it, and the data for that channel will be added to the event only if edges were found.
baselines ""
A list of baseline values (one per channel) to subtract from the waveform in volts.
fractions ""
A list of fractions (one per channel) between 0 and 1. The edge-time reported will be at the time when the pulse is at this fraction of the peak value.
thresholds ""
A list of threshold values (one per channel) in volts that indicate a new edge should be found. If this value is less than the baseline, then the algorithm will look for negative pulses, otherwise it will look for positive pulses.
deadtimes ""
A list of deadtimes (one per channel) in seconds. After each edge the algorithm will ignore any new hits in this time interval.
leading_edges ""
A list of 0/1 values (one per channel) indicating whether edge-times are desired for leading edges (1) or falling edges (0).
Example for Module ImgAlgos::AcqirisCFD
Module ImgAlgos::NDArrImageProducer
This module converts any (detector-associated) ndarray in to image.
For any available in the event store ndarray<
defined by the const
T,NDim>,source
and key_in
parameters, and which size is equal to the number of pixels in the detector, this module creates 2-d image ndarray<
and saves it in the event store with key_out. TOUT is defined by the type_out. Pixel geometry array is retreived from the calibration file of "geometry" type from default standard or specified in const
TOUT,2>calibdir
directory.
Configuration parametersAdditional parameters which can be used for special applications like alignment:
parameter | default value | description |
---|---|---|
| "" | non-default calibration directory for "geometry" file |
calibgroup | "" | by-default calibration group is retreived from source name as <detector>::CalibV1 |
oname | "" | top object name in the hierarchial geometry file |
oindex | 0 | top object index in the hierarchial geometry file |
pix_scale_size_um | 0 | set the ize of the image bin. By-default this value is extracted from sensor. |
x0_off_pix | 0 | offset of the top geometry object origin x0 coordinate on the image in number of pixels |
y0_off_pix | 0 | offset of the top geometry object origin y0 coordinate on the image in number of pixels |
...
input source of data. This parameter MUST BE specified, for example: CxiDs1.0:Cspad.0 | ||
| "" | key for input data, for example it might be "calibrated", by default (empty) raw data |
key_out | "image" | key for output image in the event store. |
type_out | "asinp" | type of data in output image array. Possible values - "asinp"-the same type as input array, "int16", "float", "double", "int". |
| 0 | module verbosity:
|
Additional parameters which can be used for special applications like alignment:
parameter | default value | description |
---|---|---|
| "" | non-default calibration directory for "geometry" file |
calibgroup | "" | by-default calibration group is retreived from source name as <detector>::CalibV1 |
oname | "" | top object name in the hierarchial geometry file |
oindex | 0 | top object index in the hierarchial geometry file |
pix_scale_size_um | 0 | set the ize of the image bin. By-default this value is extracted from sensor. |
x0_off_pix | 0 | offset of the top geometry object origin x0 coordinate on the image in number of pixels |
y0_off_pix | 0 | offset of the top geometry object origin y0 coordinate on the image in number of pixels |
mode | 0 | mapping algorithm for overlapping pixels of ndarray on the 2-D image; 0-last pixel substitutes intensity, 1-use pixel with maximal intensity, 2-accumulate(sum) intensity |
do_tilt | true | on/off tilt angle correction for sensors |
See also Example for Module ImgAlgos::NDArrImageProducer.
Module ImgAlgos::NDArrAverage
This module averages over events the per-element data of the image array (ndarray<
, where T is implemented for almost all types: int, int16, uint, float, double etc., NDim≤5) and const
T,NDim>
Module ImgAlgos::NDArrAverage
This module averages over events the per-element data of the image array (ndarray<
, where T is implemented for almost all types: int, int16, uint, float, double etc., NDim≤5) and saves files for sum, averaged, rms values, mask, and, the hot pixel map. Input const
T,NDim>ndarray
can be specified by the source
and key
parameters. Averaging may have up to three stages, depending on configuration parameters:
...
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 |
maskfile | "" | out file with pixel mask with 0/1-for bad/good pixels, saved if the name is not empty |
| "" | out file with pixel bit-words: 0/1/2/4/8 for good/hot/saturated/cold, /cold-rms, saved if the name is not empty |
maxfile | "" | out file with maximal value per pixel over events |
ftype | txt | out file type: txt (default), metatxt, bin |
| 0. | minimal threshold on rms (in ADU); If rms lower than this threshold - pixel is cold-rms. |
| 10000. | maximal threshold on rms (in ADU); =0 - use auto-evaluated threshold. If rms exceeds this threshold - pixel is hot. |
| -100000. | threshold on minimal intensity (in ADU); if ave exceeds this threshold - pixel is good |
| 100000. | threshold on maximal intensity (in ADU); if ave exceeds this threshold - pixel is bad |
| 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:
|
...
- and saves the corrected ndarray<
const
doubleTOUT,
NDim>NDim
> in the event with keykey_out
, whereTOUT
is controlled by the parameterouttype,
which can be set todouble
(default),float
,int,
andint16
. - In ImgAlgos V00-02-01 implemented detectors: CsPad, CsPad2x2, Pnccd, Princeton, Andor, Opal1000, Opal4000
...
parameter | default value | description |
---|---|---|
| DetInfo(:Camera) | source of data |
|
| key for input |
| calibrated | output key for calibrated image saved in event |
outtype | double | output ndarray data type can be set to double (default), float , int, and int16 . |
| false | true: pedestals subtracted if available in calib store |
| false | true: common mode correction is evaluated and applied [Ref.] |
| false | true: bad/hot pixels in pixel_status are masked |
| false | true: mask is applied if the file |
| false | true: normalized background is subtracted if the file |
| false | true: |
| false | true: per-pixel threshold is applied if |
| false | true: low level |
|
| input file name for background, applied if the file name is specified |
|
| input file name for mask, applied if the file name is specified |
| 0. | intensity value (in ADU) substituted for masked pixels |
| 3. | threshold as a number of sigmas to |
| 0. | common low level threshold in ADU |
| 0. | intensity substituted for pixels below threshold |
| 0 | minimal index in flatten ndarray, which is used for background normalization |
| 100 | maximal index in flatten ndarray, which is used for background normalization |
| 2 | index increment in flatten ndarray, which is used for background normalization |
| 0 | verbosity:
|
...
Doxygen documentation for interface: CalibParsStore, GenericCalibPars: CalibParsStore, GenericCalibPars
See also Example for Module ImgAlgos::NDArrCalib,
Test of the NDArrCalib module for pnCCD.
Module ImgAlgos::NDArrDropletFinder
Finds "droplets" (wide peaks) in data ndarray and saves their list in output ndarray. This is a re-implementation of algorithm ImgPeakFinder for ndarray of 2-d segments with functionality as follows.
1. Selects pixels in the windows defined by the list of parameters: segment, rowmin
, rowmax
, colmin
, colmax
with amplitudes above the threshold_low
.
2. Optionally smears image for selected pixels using 2-d matrix of weights in the range -smear_radius
to +smear_radius
in both dimensions around smeared pixel. The matrix of weights is defined by the 2-d Gaussian function of width sigma
. If sigma=0
smearing is not applied.
3. Finds peaks as pixels with absolute-maximal amplitude above the threshold_high
in the center of the matrix covering the range -peak_radius
to +peak_radius
in both dimensions.
4. Puts the ndarray of found peaks in the event store with key
. Each row of this ndarray has parameters from key_droplets
struct Droplet
, containing segment number, row, column of the droplet center, peak pixel amplitude, the total amplitude inside peak_radius
the region, and the number of pixels in this region above threshold_low
:
Anchor | ||||
---|---|---|---|---|
|
Code Block | ||
---|---|---|
| ||
struct Droplet{
unsigned seg;
double row;
double col;
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 data ndarray, default is empty - raw data |
| key for output list of peaks as std::vector<AlgDroplet::Droplet> (default is empty - do not save) | |
key_smeared | ||
| 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 |
low_value | 0 | value substituted for pixels with intensity below threshold and outside window |
|
| list of windows, each window is defined by 5 parameters; |
mask | path to the file with mask, by default (empty) mask is not used | |
masked_value | 0 | value substituted for masked pixels (0-masked, non-zero - good pixel) |
|
| Common prefix for saved files. If non-empty - save files with image and list of droplets for each event with found droplets. The file name is formed as <prefix>-r####-e######-<suffix>.txt, where hash stands for number (0-9), suffix may be |
| 0 | module verbosity:
|
Remarks:
- if
print_bits
is not zero - warning messages will be printed. - Saves table of droplets/peaks as ndarray<float,2> with shape=[ndroplets,6] (see struct Droplet) if the keyword
peaks_droplets
is non-empty. - A set of threshold parameters should be different in cases when smearing is applied (
sigma
is not zero) or not.
See See also Example for Module ImgAlgos::NDArrCalib,
Test of the NDArrCalib module for pnCCD.
Module ImgAlgos::PixCoordsProducer
...
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:
...
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 pyimgalgos.cspad_arr_producer
...
The translator package include the H5Output module which translates xtc to hdf5. For more information see the page Outdated: The XTC - to - HDF5 Translator
Package psana_test
Anchor | ||||
---|---|---|---|---|
|
The psana_test package includes the psana module dump, some Python library code for testing, and a command line tool for providing a line oriented dump of xtc files. The psana_test package is primarily for psana developers to do software testing, however the dump module and xtclinedump can be generally useful to users.
module dump
The dump module . This will take a standard psana datasource and dump all the event, config, and epics data found. The entire contents of large arrays are not printed. However a checksum over all the array data is, as well as the min, 25th percentile, median, 75th percentile, and max over the data. The dump module does not serve as a good example of how to retrieve and work with objects from the event store – see the psana_examples package for this. The psana_test package is primarily for psana developers to do software testing.
...
Running psana_test dump
An example of running the module is
...
epics = False do not print epics
aliases = False do not print the EPICS alias list
dump_aliases=True follow EPICS aliases to print the EPICS pv's they point to
dump_sml=True dump the small data type (if found, psana should automatically replace these proxies)
regress_dump=True do not print the DAQ assigned pvId when printing EPICS when printing EPICS
dump_beginjob_evt=False do not dump begin job data
output_file = filename write output to filename
config = False do not print the contents of the configStore, only regular event data
counter = False do not print the counter string that labels event numbers and calib cycle numbers
header = False
indent = 4 change the indent from the default of 2 to 4
...
Code Block | ||
---|---|---|
| ||
from psana_test import obj2str, epicsPvToStr def getPsanaState(event, configStore, epicsStore): evtDict = {} cfgDict = {} epicsDict = {} for key in event.keys(): if key.type() is None: continue obj = event.get(key.type(), key.src(), key.key()) if (obj is None): continue if not hasattr(obj,'TypeId'): continue evtDict[str(key)]=obj2str(obj) for key in configStore.keys(): if key.type() is None: continue obj = configStore.get(key.type(), key.src()) if (obj is None): continue if not hasattr(obj,'TypeId'): continue cfgDict[str(key)]=obj2str(obj) for pvName in epicsStore.pvNames(): pv = epicsStore.getPV(pvName) if not pv: continue(): epicsDict[pvName] = epicsPvToStr(pv) if key.type() is None: continue return evtDict, cfgDict, epicsDict |
Package TimeTool
An example of how to use the TimeTool can be found Here.
Modules for analyzing recorded data from a timetool camera setup. The timetool camera measures the time difference between laser and FEL in one of two methods:
- spatial encoding, where the X-rays change the reflectivity of a material and the laser probesthat change by the incident angle of its wavefront; or
- spectral encoding, where the X-rays change the transmission of a material and the chirped laser probes it by a change in the spectral components of the transmitted laser.
Below the package modules are described. The package includes sample configuration files that describe all the options. From a psana release directory, users are encouraged to add the TimeTool package to obtain the latest source. For instance:
Code Block |
---|
newrel ana-current myrel cd myrel kinitobj = configStore.get(key.type(), key.src()) if (obj is None): continue # get ticket to check outif package from svn repository addpkg TimeTool sit_setup scons # now examine the files in TimeTool/data: sxr_timetool.cfg sxr_timetool_setup.cfg timetool_setup.py xpp_timetool.cfg xpptut.cfg |
timetool_setup.py is a python script to calculate the digital filter weights.
Module Analyze
a module that analyzes the camera image by projecting a region of interest onto an axis and dividing by a reference projection acquired without the FEL. The resulting projection is processed by a digital filter which yields a peak at the location of the change in reflectivity/transmission. The resulting parameters are written into the psana event. Starting with ana-0.13.3, a TimeTool::DataV1 object will be placed in the event in addition to the set of doubles that have been placed in the past. A temporary solution for C++ to Python conversion was adding the option
put_ndarrays=True
to the config file. This wrote the doubles as ndarrays, but this will not be necessary with ana-0.13.3.
Module Check
a module that retrieves results from the event for either the above module or from data recorded online.
Module Setup
not hasattr(obj,'TypeId'): continue
cfgDict[str(key)]=obj2str(obj)
for pvName in epicsStore.pvNames():
pv = epicsStore.getPV(pvName)
if not pv: continue
epicsDict[pvName] = epicsPvToStr(pv)
return evtDict, cfgDict, epicsDict |
xtclinedump
xtclinedump is a command line tool to dump xtc and datagram header information in a line oriented style. By keeping the output for each header to one line, it makes it easy to use grep to filter the output. The command can be run by
Code Block |
---|
xtclinedump dg xtcfile.xtc
or
xtclinedump xtc xtcfile.xtc |
The first just dumps datagram headers, the latter dumps xtc headers. There are some additional options, how much of the xtc payloads to print, and if you want parsed output for epics. A help string is available by typing xtclinedump with no arguments. Except for the non-default epics argument, xtclinedump does no parsing of the xtc payloads, it simply prints the first few bytes in hex. For reading through payloads, the intel architechture uses little endian, so 0x00040000 = 1024,a module that calculates the reference autocorrelation function from events without FEL for use in the digital filter construction.
References
- Psana User Manual - Old
- Psana Reference Manual - Old
- psana - Module Examples
- Migration from pyana to psana
- psana - Migration from pyana
dump_sml dump small data type