Noise, bad pedestal
To assess noise in keV:
python -i CalcNoiseAndMean.py -r 383 --special noCommonMode,slice --label calib
python -i CalcNoiseAndMean.py -r 383 --special regionCommonMode,slice --label common
This calculation needs to be multiplied by 2 to handle the bit shift.
To make a fake pedestal, just call python CalcNoiseAndMean.py -r 383. If 'CommonMode' is not in special it reverts to raw.
More fakePedestal info at Procedure for cluster-based gain analysis while the calib db is down or pedestals are bad
Standard pedestal
(No evskip 6000 and events 100k unless we're taking 6k + 2 2k events)
epix10ka_pedestals_calibration -k exp=ascdaq18rixx1003721,run=407 -d epixhr --evskip 6000 --events 100000
epix10ka epix10ka_deploy_constants -k exp=ascdaq18rixx1003721,run=407 -d epixhr -D
Check for deployed pedestal:
python nonBasicScript.py rixx1003721 407
This prints out various sorts of information.
Timing scan
sbatch -p milano --nodes 10 --ntasks-per-node 10 --wrap="mpirun python -u -m mpi4py.run TimeScanParallelSlice.py -r 305"
python MapCompEnOn.py -f ../scan/TimeScanParallel_c0_r216_n1.h5
which computes the Onset, the Onset of CompEnOn and the length of a transfer function for each pixel. The first figure displays the map of these 3 parameters and this map is clickable in order to see each pixel's transfer function in a separate window. Close the figures to stop the program. The picture of the maps is saved here: /sdf/data/lcls/ds/rix/rixx1003721/results/scan/ (.png format)
Example of analysis of a TimeScan:
sbatch -p milano --nodes 10 --ntasks-per-node 10 --wrap="mpirun python -u -m mpi4py.run TimeScanParallelSlice.py -r 444 -t 100"
python TimeScanParallelSlice.py -r 444 --threshold 0
python MapCompEnOn.py -f ../scan/TimeScanParallel_c0_r444_n1.h5
→ and click on the maps in order to plot the transfer function of pixel selected
SinglePhotons
To estimate the occupancy, do e.g.
...
To make the h5 files, assuming the normal pedestal works, do
python SimpleClustersParallelSlice.py --special regionCommonMode,FH -r 389
or in parallel : sbatch -p milano --nodes 10 --ntasks-per-node 10 --wrap="mpirun python -u -m mpi4py.run SimpleClustersParallelSlice.py --special regionCommonMode,FH -r 389"
(FH also for AHL; FM for FM and AML.)
Else do --fakePedestals ... after doing CalcCalcNoiseAndMean
where you'll want FM for FM and AML-M. Eventually we'll want to have specialized cluster cuts for all modes, but for now check that the seedCut in SimpleClustersParallelSlice.py is about 0.5 photons.
When all the runs are done, you can go to the rix directory and run e.g.
python runAnalyzeH5.py /sdf/data/lcls/ds/ascrix/ascdaq18rixx1003721/results/lowFlux 384 SimpleClusters 384,385,386,387,388,389
This makes plots and .npy labelled run 384 using the SimpleClusters analysis for the listed runs.
Let me know if this makes sense and works for you. At the end you can do e.g.
(ps-4.6.1) display ../testlowFlux/*384*285*62*png
(ps-4.6.1) display ../testlowFlux/*384*gain*png
LinearityScans
...
self.profiles = [True, False][0] ## to get unbinned plots, turn this off
self.seabornProfiles = [True, False][1]
...
display ../scan/LinearityPlotsParallel_r325_sliceFits_residualTest2_raw_g1slope_g0slope_ratio_map_and_histo.png
Examples of commands that we are running:
Analysis of a TimeScan:
sbatch -p milano --nodes 10 --ntasks-per-node 10 --wrap="mpirun python -u -m mpi4py.run TimeScanParallelSlice.py -r 444 -t 100"
python TimeScanParallelSlice.py -r 444 --threshold 0
python MapCompEnOn.py -f ../scan/TimeScanParallel_c0_r444_n1.h5
Pedestals:
epix10ka_pedestals_calibration -k exp=rixx1003721,run=448 -d epixhr --evskip 2000 --events 100000
Deploy the pedestals:
epix10ka_deploy_constants -k exp=rixx1003721,run=448 -d epixhr -D
Check that they are deployed (the mean is):
python nonBasicScript.py rixx1003721 448
(Mean should be around 700 or 800)
For linearity scan:
python LinearityPlotsParallelSlice.py -r 453
python LinearityPlotsParallelSlice.py -r 453 -f ../scan/LinearityPlotsParallel_c0_r453_n1.h5 --label fooBar
python analyze_npy.py ../scan/LinearityPlotsParallel_r454_sliceFits_fooBar_raw.npy
To check the occupancy rate:
python simplePhotonCounter.py -r463 --special slice
To plot stuff vs time:
python EventScanParallel.py -r 457
Single photon:
python runAnalyzeH5.py /sdf/data/lcls/ds/rix/rixx1003721/results/lowFlux 470 SimpleClusters 468,469,470
python AnalyzeH5.py -r 470 -f /sdf/data/lcls/ds/rix/rixx1003721/results/lowFlux/SimpleClusters_c0_r468_n1.h5,/sdf/data/lcls/ds/rix/rixx1003721/results/lowFlux/SimpleClusters_c0_r469_n1.h5,/sdf/data/lcls/ds/rix/rixx1003721/results/lowFlux/SimpleClusters_c0_r470_n1.h5