Meet The Teacher Early Stage One
Teachers Miss Alice McGowan K/1M and Mrs. Yvette Perceval KP are dedicated to creating a fun, exciting, and stress-free learning environment. The school aims to foster a love of learning in every student and provide individualized support for academic success. Stay updated on school activities, extracurriculars, and curriculum through the provided information.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
New Features in ADTimePix3 Controls for Neutron Detection https://github.com/areaDetector/ADTimePix3 Kazimierz Gofron ORNL EPICS Collaboration Meeting ISIS, Ditcot, UK April 7, @2:10pm, 2025 This research uses resources at the High Flux Isotope Reactor and the Spallation Neutron Source, DOE Office of Science User Facilities operated by the Oak Ridge National Laboratory. ORNL is managed by UT-Battelle for the US Department of Energy
Outline ORNL neutron facilities: HFIR (High Flux Isotope Reactor), SNS (Spallation Neutron Source - Hg), STS (Second Target Station W). Under construction Neutron detection thermal neutrons. MCP/TimePix3 detector ADTimePix3 Data channels Real time processing Mask creation in the chip Radiation induced detector challenges Hot pixels, pulsing pixels Double column cold pixels, strings hot pixels SPIDR issues Conclusions HFIR & SNS
Timepix family of pixel counting chips Event-mode readout involves counting individual events, such as single photon, single X- ray, single neutron. E.g. detecting a photon with deposited energy above a threshold (ToT). The Timepix Family of pixel detector readout chips (developed by CERN) Time stamping events down to 1.5 ns; 260 ps (TDC- Time to Digital Converter) One lower threshold HFIR & SNS
Neutron camera using Timepix3 couting chip The Timepix3 counting chip is a semiconductor sensor bump-bonded to the ASIC. E.g. Neutron-sensitive scintillator-based Timepix3 camera TPX3Cam ASI Funama, Fumiaki, et al. "Scintillator-based Timepix3 detector for neutron spin-echo techniques using intensity modulation." Review of Scientific Instruments 95.3 (2024). Scintillator containing 6Li generates light converted in photocathode and amplified by dual MCP stack. 6Li (n,4He) 3H + 4.78 [MeV] (5-9 um) https://indico.cern.ch/event/895924/contributions/4020698/attachments/2119022/3565847/Vertex2020MC.pdf HFIR & SNS
Thermal neutron energy conversion in MCP Microchannel Plates (MCPs) Neutron sensitive MCP (Nova/Photonis) MCPs Hamamatsu (normal) MCP Timepix3 Microchannel Plates, chevron-stacked: Cathodes: Bias voltage for first MCP (~ -1200 V) Bias voltage for second MCP (~ -1000 V) Rear field voltage (~ -600 V) SPIDR readout (ASI) Richard Riedel and James Torres (original developers of MCP/TPX3) Serval ADTimePix3 HFIR & SNS
Microchannel Plates (MCPs) amplification A microchannel plate (MCP) Thin glass wafer of ~1mm thick, miniature tilted channels First MCP is doped with 10B and/or Gd 10B(n, )7Li, 10B(n, )7Li* 155Gd(n, )156Gd, 157Gd(n, )158Gd The reaction products that escape the channel wall produce primary electrons The primary electrons are amplified into an avalanche of secondary electrons via impact ionization due to electric field The electrons exiting from the second MCP are detected by the pixelated Timepix3 chips For a 1-mm thick neutron MCP with 10 mol% of, a glass density of 3.86, a diameter pore of 8 m, the probability of a thermal neutron (25 meV) absorption Is ~50%. Tremsin, Anton S., W. Bruce Feller, and R. Gregory Downing. "Efficiency optimization of microchannel plate (MCP) neutron imaging detectors. I. Square channels with 10B doping." Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 539.1-2 (2005): 278-311. HFIR & SNS
Timepix3 An ASIC chip originally developed at CERN Mode: event-based Chip size: 14.1 x 14.1 [mm^2] Number of pixels: 256 x 256 pixels Pixel size: 55 [um^2] pitch Maximum rate: 80 Mhits/s/cm^2 per chip Dead time per pixel: >475 ns Simultaneous record of each hit: Pixel coordinates (x,y) Time-of-arrival (ToA) with 1.56 ns, range 409.6 us Time-over-threshold (ToT) Proportional to the energy deposited HFIR & SNS
Data Acquisition DAQ electronics BL10-daq1 BL10-daq2 DSP-T/ODB ADTimepix3 (configuration) Supervisory Control Software Visualization arrays and statistics Timing (60Hz) 8081 10.111.20.151 192.168.100.1 PVAccess (events) 100GigE-f ADARA (events) Key ADtED tED SERVAL SPYDR Box 8085 10GigE-f Vendor hardware 10.111.20.150 192.168.100.10 TCP: 5000, 5001 UDP: 8192, 8193, 8194, 8195 In-house hardware TIFF Files Vendor software SMS IP address: 192.168.100.1 MTU 9000, net.core.rmem_max=26214400 net.core.rmem_default=26214400 Serval port 8080->8081 In-house software Timepix3 UDP ADARA protocol and NeXus files TCP Vendor (ASI) Serval API Emulator SoPhy (phased out) ACCOS SPIDR Speedy PIxel Detector Readout van Der Heijden, B., et al. "SPIDR, a general-purpose readout system for pixel ASICs." Journal of instrumentation 12.02 (2017): C02040 HFIR & SNS
Serval Raw .tpx3 data format Consists of chunks with an 8-byte chunk headers prepended TPX3 identifier Chunk size (bytes) Chip index The chunk content consists of 8-byte words (little endian) TPX3 pixel data (max time: 26.8435456 s) SPIDR TDC data (max time: 107.3741824 s) TPX3 global time (max time: ~81 days) SPIDR control TPX3 control Serval is an API provided by vendor (Amsterdam Scientific Instrument - ASI) to communicate with the detector. It uses the standard HTTP request-response protocol (i.e. GET, PUT requests) The JSON API structure is grouped into namespaces (Server, Measurement, Detector, ) External trigger using TDC1 (and TDC2) 3.3 V LVTTL signal pulse 260 ps time resolution HFIR & SNS
ADTimePix3 dependencies Dependencies Depends on the CPR verson 1.9.1. Depends on the json version v3.11.2. Developed with ADCore R3-11 and ADSupport R1-10 or newer. This has only been tested on ubuntu 18.04, 20.04, 22.04 Linux 64-bit machines. Deployed: RHEL 9.5, RHEL 7.9 Developing with serval version 3.3.2, (older: 3.1.1, and 3.0.0) Driver is specific to Serval version, since features differ (2.3.6->3.0.0 major changes) Dependencies (ADTimePix3/tpx3Support/) Compile cpr (https://github.com/libcpr/cpr) Clone json (https://github.com/nlohmann/json) Histogram json-c HFIR & SNS
Acquisition modes Typically used At ORNL we use AreaDetector ImageMode: Continuous TimePix3 TriggerMode: Continuous AreaDetector ImageMode: Single/Multiple TimePix3 TriggerMode: AutoTrigger Start, Timer Stop HFIR & SNS
Control screens DetectorConfig.opi TimePix3.opi Subscreens Status: Health,Info, Dashboard, Config, Layout, API, Measurement, Chip settings (Temperature, Power, ..) Load: .bpc, .dacs DetConfig: chip thresholds, Layout, TDC, .. FileWriter: Configure streams for data transport Mask: Reduce data rate HFIR & SNS
Serval Server FileWriter.opi { "Server" : { "Destination" : { "Raw" : [ { "Base" : "tcp://listen@localhost:8085", "FilePattern" : "raw%MdHms_", "SplitStrategy" : "SINGLE_FILE", "QueueSize" : 16384 }, { "Base" : "file:/SNSlocal/data/IPTS-34969/raw_tpx3", "FilePattern" : "April2_2025_OB_MCP_TPX3_0_7C_1_9_Angs", "SplitStrategy" : "SINGLE_FILE", "QueueSize" : 16384 } ], "Preview" : { "Period" : 1.0, "SamplingMode" : "skipOnFrame", "ImageChannels" : [ { "Base" : "http://localhost:8081", "FilePattern" : "f%MdHms_", "Format" : "tiff", "Mode" : "tot", "Thresholds" : [ 0, 1, 2, 3, 4, 5, 6, 7 ], "IntegrationSize" : 1, "StopMeasurementOnDiskLimit" : false, "QueueSize" : 16, "Corrections" : [ ], "Processing" : [ ] } ] } } }, HFIR & SNS
Serval Server Preview/Histogram {Not yet released ToF histogram} FileWriter.opi "Server" : { "Destination" : { "Preview" : { "Period" : 1.0, "SamplingMode" : "skipOnFrame", "ImageChannels" : [ { "Base" : "http://localhost", "FilePattern" : "f%MdHms_", "Format" : "tiff", "Mode" : "tot", "Thresholds" : [ 0, 1, 2, 3, 4, 5, 6, 7 ], "IntegrationSize" : -1, "IntegrationMode" : "sum", "StopMeasurementOnDiskLimit" : false, "QueueSize" : 16, "Corrections" : [ ], "Processing" : [ ] } ], "HistogramChannels" : [ { "Base" : "tcp://listen@localhost:8451", "FilePattern" : "f%MdHms_", "Format" : "jsonhisto", "Mode" : "tof", "Thresholds" : [ 0, 1, 2, 3, 4, 5, 6, 7 ], "IntegrationSize" : 0, "StopMeasurementOnDiskLimit" : false, "QueueSize" : 1024, "NumberOfBins" : 10, "BinWidth" : 1.0E-4, "Offset" : 0.0, "Corrections" : [ ], "Processing" : [ ] } ] } } -1,0,1,2 ..32 sum average HFIR & SNS
Serval Server Preview sum/average FileWriter.opi "Server" : { "Destination" : { "Preview" : { "Period" : 1.0, "SamplingMode" : "skipOnFrame", "ImageChannels" : [ { "Base" : "http://localhost", "FilePattern" : "f%MdHms_", "Format" : "tiff", "Mode" : "tot", "Thresholds" : [ 0, 1, 2, 3, 4, 5, 6, 7 ], "IntegrationSize" : -1, "IntegrationMode" : "sum", "StopMeasurementOnDiskLimit" : false, "QueueSize" : 16, "Corrections" : [ ], "Processing" : [ ] } ] } } sum average -1,0,1,2 ..32 HFIR & SNS
Serval Server Measurement "Measurement" : { "Config" : { "Corrections" : { "Multiply" : null, "Gapfill" : null }, "Processing" : { "Binning" : null }, "TimeOfFlight" : { "TdcReference" : [ "PN0123", "PN0123" ], "Min" : 0.0, "Max" : 1.0E99 } }, "Info" : { "PixelEventRate" : 4000004, "Tdc1EventRate" : 5, "Tdc2EventRate" : 8, "StartDateTime" : 1743688206650, "ElapsedTime" : 5.049, "TimeLeft" : 9997.0, "FrameCount" : 3, "DroppedFrames" : 0, "Status" : "DA_RECORDING" } DetectorConfig.opi TimePix3Detector.opi HFIR & SNS
Serval Detector "Detector" : { "Health" : { "LocalTemperature" : 28.043, "FPGATemperature" : 43.679, "ChipTemperatures" : [ 58, 54, 61, 56 ], "Fan1Speed" : 0, "Fan2Speed" : 0, "VDD" : [ 1.428, 1.386, 1.98 ], "AVDD" : [ 1.42, 1.811, 2.566 ], "BiasVoltage" : 0.0, "Humidity" : 38 }, "Info" : { "IfaceName" : "Spidr", "SW_version" : "24031900", "PixCount" : 262144, "RowLen" : 2, "NumberOfChips" : 4, "NumberOfRows" : 512, "MpxType" : 6, "Boards" : [ { "ChipboardId" : "41000016", "IpAddress" : "192.168.100.10", "FirmwareVersion" : "24050321", "Chips" : [ { "Index" : 0, "Id" : 14417, "Name" : "W0056_A05" }, { "Index" : 1, "Id" : 14492, "Name" : "W0056_L09" }, { "Index" : 2, "Id" : 14467, "Name" : "W0056_C08" }, { "Index" : 3, "Id" : 14420, "Name" : "W0056_D05" TimePix3Detector.opi "SuppAcqModes" : 63, "ClockReadout" : 125.0, "MaxPulseCount" : 2147483647, "MaxPulseHeight" : 1.0, "MaxPulsePeriod" : 34.35973836, "TimerMaxVal" : 34.35973836, "TimerMinVal" : 8.0E-9, "TimerStep" : 8.0E-9, "ClockTimepix" : 125.0, "FW_version" : "24050321" }, HFIR & SNS } ] } ],
Serval Detector "Config" : { "Fan1PWM" : 70, "Fan2PWM" : 50, "BiasVoltage" : 0, "BiasEnabled" : false, "ChainMode" : "NONE", "TriggerIn" : 0, "TriggerOut" : 0, "Polarity" : "Negative", "TriggerMode" : "CONTINUOUS", "ExposureTime" : 0.0166667, "TriggerPeriod" : 0.0166667, "nTriggers" : 0, "PeriphClk80" : true, "TriggerDelay" : 0.0, "Tdc" : [ "P0123", "P0123" ], "GlobalTimestampInterval" : 1.0, "ExternalReferenceClock" : false, "LogLevel" : 0 }, TimePix3Detector.opi DetectorConfig.opi HFIR & SNS
Serval Detector "Layout" : { "DetectorOrientation" : "LEFT", "Original" : { "Width" : 512, "Height" : 512, "Chips" : [ { "Chip" : 0, "X" : 256, "Y" : 0, "Orientation" : "LtRBtT" }, { "Chip" : 1, "X" : 256, "Y" : 256, "Orientation" : "RtLTtB" }, { "Chip" : 2, "X" : 0, "Y" : 256, "Orientation" : "RtLTtB" }, { "Chip" : 3, "X" : 0, "Y" : 0, "Orientation" : "LtRBtT" } ] }, TimePix3Detector.opi DetectorConfig.opi HFIR & SNS
Serval Detector "Chips" : [ { "DACs" : { "Ibias_CP_PLL" : 128, "Ibias_DiscS1_OFF" : 8, "Ibias_DiscS1_ON" : 128, "Ibias_DiscS2_OFF" : 8, "Ibias_DiscS2_ON" : 128, "Ibias_Ikrum" : 10, "Ibias_PixelDAC" : 160, "Ibias_Preamp_OFF" : 8, "Ibias_Preamp_ON" : 128, "Ibias_TPbufferIn" : 128, "Ibias_TPbufferOut" : 128, "PLL_Vcntrl" : 128, "VPreamp_NCAS" : 128, "VTP_coarse" : 128, "VTP_fine" : 256, "Vfbk" : 128, "Vthreshold_coarse" : 6, "Vthreshold_fine" : 372 }, "PixelConfig" : DetectorConfig.opi TimePix3Detector.opi HFIR & SNS
Timepix3 chip mask reduce data rate by turning off some counting pixels Masked pixels image coordinates 1. Read from bpc 2. Mask2PV BL10:CS:tpx3:cam1:MaskBPC Mask.opi HFIR & SNS
Timepix3 chip mask BPC calibration displayed as image 1. Read from bpc 2. readBPC BL10:CS:tpx3:cam1:BPC Mask.opi HFIR & SNS
Timepix3 chip mask Simple Rectangle Positive Mask 1. X, Y, MinMaskX, MaxMaskY 2. Rectangle Mask.opi HFIR & SNS
Timepix3 chip mask Simple Circle Positive Mask 1. X, Y, Radius 2. Circle Mask.opi HFIR & SNS
Timepix3 chip complex mask A. Square neg mask 1. Mask BPC [On] {Neg} 2. X, Y, xSize,ySize 3. MaskRectangle [On] 4. Mask2BPC C. Two neg Circles D. Write to chip 1. Write to FPGA [On] 2. Mask2BPC E. Image with turned off pixels Reduce data rate B. Circle pos mask 1. Mask BPC [Off] {Pos} 2. X, Y, Radius 3. MaskCircle [On] 4. Mask2BPC Mask.opi HFIR & SNS
Timepix3 chip monitoring VDD: V [V], I [A], P [W] Figure 1: Chip temperature increases by about 2 C during acquisition. HFIR & SNS AVDD: V [V], I [A], P [W]
Timepix3 Radiation effects (recoverable) Venus beamline at SNS - Hot pixels - Super-pixel column structures - beads - streaks - Cold (no count) double column - One of chips has elevated count rate (+100) Figure 2: Hot pixels and Superpixel column profile. Monitoring uses ImageJ Plugins EPICS_areaDetector Dynamic Profile . Figure 1: Superpixel column structure. HFIR & SNS
Timepix3 Radiation effects (recoverable) Venus beamline at SNS Hot pixels Super-pixel column structures Beads Streaks of hot pixels Cold (no count) double column One of chips has elevated count rate (+100) SPIDR does not respond to ping. Date X Y Intensity Chip Note Action 02/14/25 27 172 18000 02/14/25 385 47 43000 02/14/25 490 105 40000 02/14/25 72 27 310 02/17/25 384 17 02/17/25 306 62 02/17/25 254 100 02/17/25 170 340 02/21/25 266 257 22000 02/21/25 368 171 18000 02/25/25 333 91 Stronger 02/25/25 388 371 Weaker Timepix3 recovery Load .bpc all pixels masked (not couting), all pixels couting. Power cycle SPIDR (remote controlled power supply) Jumper on SPIDR 02/27/25 429 77 03/03/25 26 37 1 03/03/25 277 503 3 03/04/25 119 353 Strong Pulsing (T 10s) Masked 03/04/25 119 354 weak Pulsing (T-> 10s) Masked 03/04/25 353 497 weak Masked 03/21/25 277 511 65535 03/24/25 259 255 42000 Streak (column) on chip0 03/24/25 277 503 65535 03/24/25 277 511 11000 Table 1: Radiation related effects on detector. 03/28/25 496 465 65535 3 HFIR & SNS
Summary on ADTimePix3 An EPICS areaDetector control driver for event-mode neutron imaging MCP/Timepix3 camera is presented. Timepix3 provides information associated with individual events (i.e. x, y, ToA, ToT), which enables its ToF (time-of-flight) capability. ADTimePix3 uses the HTTP request-response protocol (i.e. GET, PUT requests). Dependencies: Cpr (Curl For Human s library) json, json-c (histogram) Chip mask manipulation developed to reduce data rate, and/or block primary beam. Mask pixels in EPICS Radiation effects on the Timepix3 chip was discussed. Sum and average mode added to preview channel Development of ToF histogram capability in ADTimePix3 is ongoing Only preview images are send through areaDetector, histogram under development. X-ray, electrons and other charged particles use direct detection Thermal neutrons use indirect detection with 6Li, 10B conversion Primary method of storing data is through .tpx3 file, and/or live stream. HFIR & SNS
Acknowledgements Data acquisition integration team: Greg Guyotte, Bogdan Vacaliuc, Zach Thurman, Ray Gregory, James Kohl, Alex Sobhani, Steve Hicks, Rob Knudson, Starra Lyons Detector team: Funama Fumiaki, Richard Riedel, James Torres, Anton Khaplanov, Theodore Visscher, Cornelius Donahue, Kevin Berry, Loren Funk, Justin Beal, Christopher Montcalm, Vladislav Sedov, Polad Shikhaliev, Matthew Loyd, Yacouba Diawara, Chong Su-Ann, Zhang, Chen. Neutron imaging team: Hassina Bilheux, Chen Zhang, Jean Bilheux, Yuxuan Zhang, T Instrument support team: Harley Skorpenske, Jamie Molaison, Mary-Ellen Donnelly, Erik Stringfellow, Doug Kyle, Roger Hobbs This work was supported in part of the Scientific User Facilities Division, Office of Basic Sciences, U.S. Department of Energy. HFIR & SNS
Phoebus screens HFIR & SNS
Phoebus screens HFIR & SNS
Phoebus screens HFIR & SNS
Phoebus screens HFIR & SNS
ADTimePix3 dependencies Json C++ cpr, and json library use std::string config; config = this->serverURL + std::string("/detector/config"); // Detector configuration file r = cpr::Get(cpr::Url{config}, cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC}, cpr::Parameters{{"anon", "true"}, {"key", "value"}}); json config_j = json::parse(r.text.c_str()); config_j["BiasVoltage"] = 103; config_j["BiasEnabled"] = true; //config_j["Destination"]["Raw"][0]["Base"] = "file:///home/kgofron/Downloads"; //printf("Text JSON server: %s\n", config_j.dump(3,' ', true).c_str()); r = cpr::Put(cpr::Url{config}, cpr::Body{config_j.dump().c_str()}, cpr::Header{{"Content-Type", "text/plain"}}); printf("Status code: %li\n", r.status_code); printf("Text: %s\n", r.text.c_str()); HFIR & SNS