Calibration

Dark processing command: det_dark_proc -e tmoc00318 -d epix100 -r 10 -D

Important notes:

  • you must run the command on a machine that has access to the data (typically "ssh psana" or "ssh psffb")
  • wait until the data has been transferred to that machine (e.g. "ls -rtl /cds/data/psdm/tmo/tmolv1720/xtc")
  • you must have a valid kerberos ticket (use "kinit" to get one that lasts for 24 hours, or "klist" to view the status)
  • you must be a member of the experiment (or in a hutch-scientist group like ps-tmo or ps-data) in order to have permissions to write to the database (use the command "id <username>" to see your group memberships)
  • if you're running on the FFB (Fast Feedback System) nodes you have to specify the location of the xtc files by adding the flag "-x /cds/data/drpsrcf/tmo/tmolv1720/xtc/"

Common-mode correction (optional, off by default): Common mode correction algorithms for LCLS2 detectors

Monitoring Stream

Runs on drp-neh-cmp014.  Start up an EDM window on any DRP node (currently recommended node: drp-srcf-cmp024):  

/cds/home/m/mcbrowne/trunk2/ioc/common/epixMon/children/build/iocBoot/ioc-det-epix3/edm-ioc-det-epix3.cmd

Currently only updates when DAQ is triggering.

Timing Scan

tmoc00318 run 38. Suggests optimal timing ("start_ns") around 40000ns:

This required setting acqToAsicR0Delay to zero as shown in this diagram from Conny Hansson:

Performance

700keV photons in tmoc00120 run 79.  Seem to see 2 and 3 photon peaks:

from psana import DataSource
from psana import container
import matplotlib.pyplot as plt
import numpy as np
import math

sigroi = np.s_[295:312,491:615]

def dump(obj, attrlist):
    allattrs = dir(obj)
    usefulattrs=[attr for attr in allattrs if (not attr.startswith('_') and attr !
= 'help')]
    for attr in usefulattrs:
        val = getattr(obj, attr)
        attrlist.append(attr)
        if type(val) in [int, float, np.ndarray, str]:
            print('.'.join(attrlist)+':', val)
        elif type(val) is container.Container:
            dump(val, attrlist)
        attrlist.pop(-1)

ds = DataSource(exp='tmoc00318',run=38)
myrun = next(ds.runs())
det = myrun.Detector('epix100')
step_value = myrun.Detector('step_value')
step_docstring = myrun.Detector('step_docstring')
cfg = det.raw._seg_configs()[0]
start_ns = []
intensity = []
intensity_err = []
for step in myrun.steps():
    #print('***',step_value(step),step_docstring(step))
    attrlist=[]
    #dump(cfg, attrlist)
    mysum = []
    for nevt,evt in enumerate(step.events()):
         mysum.append(np.sum(det.raw.image(evt)[sigroi]))
    start_ns.append(cfg.config.user.start_ns)
    intensity.append(np.mean(mysum))
    intensity_err.append(np.std(mysum)/math.sqrt(nevt))
plt.errorbar(start_ns,intensity,yerr=intensity_err)
plt.xlabel('start_ns')
plt.ylabel('ROI Intensity Sum (keV)')
plt.show()

Power Instructions

From Kaz: https://docs.google.com/document/d/1C33Hj1ABeDawbweOAVGJj2_PedpvLphzEQVGxMFA3HM/edit?usp=sharing

Miscellaneous Tips

  • Because of it's low start_ns value, the epix100 must run in a separate readout group with a lower XPM L0Delay setting (currently 10)
  • Since it is in a non-default readout group (currently 4 in TMO) remember to reset that value (in the Allocate window) when you remove it from the partition and then add it back later.  If you don't you will get an error from the epix100 on Configure.
  • No labels