#!/bin/bash

# Analyze 2d histogram to get mean and rms values from line-outs. 

\rm xyValues.* xyLines.sdds

# Make 50 distributions of 10k x and y values
# x: mean=2mm, sigma=2mm
# y: mean=-3mm, sigma=1mm

sddssampledist -pipe=out -samples=500000 \
    -gaussian=column=x,mean=0.002,sigma=0.0015,units=m \
    -uniform=column=y,minimum=-0.003,maximum=0.001,units=m  \
    | sddsbreak -pipe=in xyValues.sdds -rowlimit=10000 

# Make 50, 100x100 2d histograms
# Reorganize into 100 columns of 100 values
# This simulates a video frame with 100 horizontal lines
# Analyzing these horizontal lines gives information x distribution
sddshist2d xyValues.sdds -pipe=out -column=x,y -xparam=100,-0.01,0.01 -yparam=100,-0.01,0.01 \
    | sddsprocess -pipe -define=parameter,ImageIndex,i_page,type=short \
    | sddsbreak -pipe -rowlimit=100 \
    | sddstranspose -pipe -noOldColumnNames \
    | sddscombine -merge=ImageIndex -pipe \
    | sddsprocess -pipe \
    "-define=column,Index,i_row,type=long"  \
    | sddsrowstats -pipe -sum=ColumnSum,Column??? \
    | sddsprocess -pipe \
    "-define=col,x,Index xInterval * xMinimum +,units=m" \
    -process=x,ave,xMean,weight=ColumnSum \
    -process=x,stand,xStDev,weight=ColumnSum \
    | sddscollapse -pipe=in xAnalysis.sdds

# Analyze vertical distribution
sddshist2d xyValues.sdds -pipe=out -column=y,x -xparam=100,-0.01,0.01 -yparam=100,-0.01,0.01 \
    | sddsprocess -pipe -define=parameter,ImageIndex,i_page,type=short \
    | sddsbreak -pipe -rowlimit=100 \
    | sddstranspose -pipe -noOldColumnNames \
    | sddscombine -merge=ImageIndex -pipe \
    | sddsprocess -pipe \
    "-define=column,Index,i_row,type=long"  \
    | sddsrowstats -pipe -sum=ColumnSum,Column??? \
    | sddsprocess -pipe \
    "-define=col,y,Index yInterval * yMinimum +,units=m" \
    -process=y,ave,yMean,weight=ColumnSum \
    -process=y,stand,yStDev,weight=ColumnSum \
    | sddscollapse -pipe \
    | sddsxref -pipe=in xAnalysis.sdds xyAnalysis.sdds

sddsplot -column=ImageIndex,'(xMean,xStDev,yMean,yStDev)' -layout=2,2 xyAnalysis.sdds -sep


