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

Compare with Current View Page History

Version 1 Next »

Content

Pre-processing

Pedestals

PSANA configuration script *peds.cfg

[psana] 
#files = /reg/d/ana12/xcs/xcsi0112/xtc/e167-r0020-*.xtc 
skip-events = 0 
events = 75 
modules = ImgAlgos.Tahometer ImgAlgos.PrincetonImageProducer ImgAlgos.ImgAverage 

[ImgAlgos.Tahometer] 
print_bits = 7 

[ ImgAlgos.PrincetonImageProducer ] 
source = DetInfo(:Princeton) 
key_in = 
key_out = img 
print_bits = 1 

[ImgAlgos.ImgAverage] 
source = DetInfo(:Princeton) 
key = img 
avefile = /reg/neh/home1/dubrovin/LCLS/PSANA-V01/work/t1-xcsi0112-r0020-peds-ave.txt 
rmsfile = /reg/neh/home1/dubrovin/LCLS/PSANA-V01/work/t1-xcsi0112-r0020-peds-rms.txt 
hotpix_mask = /reg/neh/home1/dubrovin/LCLS/PSANA-V01/work/t1-xcsi0112-r0020-hotpix-mask-thr-10.0ADU.txt 
hotpix_thr_adu = 10.0 
print_bits = 21 

PSANA module ImgAlgos.ImgAverage

  • Unknown macro: {ImgAlgos.ImgAverage.cpp|https}
  • Unknown macro: {ImgAlgos.ImgAverage.h|https}

Data types:

  • Input image may be : double, float, int, uint16_t, uint8_t
  • Calculation: intensity in double, statistics in unsigned
  • Save arrays in txt for
      save2DArrayInFile<double> ( m_aveFile, m_ave, m_rows, m_cols, m_print_bits & 16 );
      save2DArrayInFile<double> ( m_rmsFile, m_rms, m_rows, m_cols, m_print_bits & 16 );
      if (m_do_mask) save2DArrayInFile<int> ( m_hotFile, m_hot, m_rows, m_cols, m_print_bits & 16 );
    

Averaging in ImgAlgos::ImgAverage::

template <typename T>
    void accumulateCorrelators(const T* data)
    {
      double amp(0);
      for (unsigned i=0; i<m_size; ++i) {

	amp = (double)data[i];
	if ( m_gate_width > 0 && std::abs(amp-m_ave[i]) > m_gate_width ) continue;

        m_stat[i] ++;
        m_sum [i] += amp;
        m_sum2[i] += amp*amp;
      }
    }

Averaging in ImgAlgos::ImgAverage::procStatArrays()

    for (unsigned i=0; i!=m_size; ++i) {

        double stat = m_stat[i];
        if (stat > 0) {
          double ave = m_sum[i] / stat;
	  m_ave[i] = ave;
          m_rms[i] = std::sqrt(m_sum2[i] / stat - ave*ave);
        } 
        else 
        {
	  m_ave[i] = 0;
	  m_rms[i] = 0;
        }
    }

Hot pixel mask in ImgAlgos::ImgAverage::procStatArrays()

    if (m_do_mask) {
      for (unsigned i=0; i!=m_size; ++i)
         m_hot[i] = (m_rms[i] > m_hot_thr) ? 0 : 1;
    }

Data scan

Saturated pixel mask


Time records


Intensity monitor records


Data processing

Split


Processing


Merging


Presentation of results

Summary

  • No labels