Commit 601c955a authored by Jibril Mammeri's avatar Jibril Mammeri Committed by bliss administrator
Browse files

doc

parent 5d017322
......@@ -1356,6 +1356,11 @@ class Tomo(TomoParameters):
dataset_name=None,
run=True,
):
"""
Prepares and runs pcotomo acquisition.
It allows to take images at very high speed with pco dimax.
If a dataset name is specified, it will update tomo scan dataset.
"""
self.sequence = "tomo:pcotomo"
self.parameters.start_pos = start_pos
......
......@@ -68,7 +68,7 @@ class TomoMetaData:
scan["latency_time"] = self.tomo.parameters.latency_time * 1000.0
scan["latency_time@units"] = "ms"
if self.tomo.shutter.sync_shutter:
scan["shutter_time"] = self.tomo.shutter.sync_shutter_time * 1000.0
scan["shutter_time"] = self.tomo.shutter.sync_shutter_time
else:
scan["shutter_time"] = (
self.tomo.shutter.fast_shutter_closing_time() * 1000.0
......
......@@ -35,6 +35,7 @@ from tomo.TomoTools import TopoTools
from tomo.pcotomo.PcoTomoScan import PcoTomoScan
from tomo.pcotomo.Presets import PcoTomoShutterPreset
from tomo.pcotomo.PcoTomoTools import PcoTomoTools
from tomo.pcotomo.PcoTomoMusst import PcoTomoMusst
"""
......@@ -1480,20 +1481,38 @@ class PcoTomo(FastTomo, TomoParameters):
Class to handle pcotomo acquisition
Use PcoTomoScan object to create scan
**Attributes**
name : str
The Bliss object name
tomo : Tomo object (ex: HrPcoTomo)
contains all info about tomo (hardware, parameters)
tomo_scan : TomoScan object
contains acquisition chain corresponding to scan type
tomo_musst : Tomo musst object
contains methods to configure musst program
tomo_tools : Tomo tools object
contains methods to estimate scan time
Parameters
----------
mode : str
type of acquisition (consecutive, multiple, endless)
ntomo : int
number of consecutive tomo
nloop : int
number of time ( ntomo + waiting turns ) will be executed
nwait : int
number of waiting turns
noread : int
activate or not image transfer between loop
start_turn : int
number of turns taken by the rotation to speed up
user_output: int
either the image indicator or the loop indicator used to alert user
"""
def __init__(self, tomo, *args, **kwargs):
"""
Parameters
----------
name : str
The Bliss object name
tomo : Tomo object (ex: HrPcoTomo)
contains all info about tomo (hardware, parameters)
tomo_scan : TomoScan object
contains acquisition chain corresponding to scan type
"""
# init logging
self.name = tomo.tomo_name + ".pcotomo"
......@@ -1575,7 +1594,9 @@ class PcoTomo(FastTomo, TomoParameters):
def projection_scan(
self, start_pos, end_pos, nb_trig, title, scan_sequence=None, header={}
):
"""
Pcotomo scan for one reference group.
"""
log_info(self, "projection_scan() entering")
# add image identification to the common image header
......@@ -1678,6 +1699,9 @@ class PcoTomo(FastTomo, TomoParameters):
self.tomo_musst.set_timer_back()
def run(self):
"""
Runs pcotomo tomo acquisition
"""
with cleanup(self.scan_cleanup):
......
......@@ -32,6 +32,15 @@ class PcoTomoScan:
def calculate_parameters(
self, start_pos, end_pos, nb_points, exposure_time, latency_time=0, ntomo=1
):
"""
Calculates scan parameters:
- scan_step_size : angle in degrees between each image
- scan_point_time : time in seconds between each image
(exposure time + readout time + shutter time + latency time)
- scan_speed : rotation speed in degrees per seconds
- start_turn : number of turns needed by the rotation to reach the
desired speed
"""
log_info(self, "calculate_parameters() entering")
......@@ -62,7 +71,9 @@ class PcoTomoScan:
)
def calculate_undershoot(self, motor, start_pos, time, start_turn):
"""
Returns number of turns needed by rotation to reach scan speed
"""
speed = motor.sign * (self.tomo.parameters.end_pos - start_pos) / time
acctime = speed / motor.acceleration
accdisp = speed * acctime / 2
......@@ -108,7 +119,15 @@ class PcoTomoScan:
save=True,
run=False,
):
"""
PcoTomoMotorMaster moves rotation axis based on speed from start position at constant speed (related to scan point time) during the time necessary to acquire all scans
MusstAcquisitionSlave runs 'pcotomo' program and receives encoder and timer data.
Musst triggers are synchronized by rotation axis encoder.
Triggers can be equally spaced in time or position.
LimaAcquisitionMaster waits the external musst triggers and takes one image at each trigger.
"""
chain = AcquisitionChain(parallel_prepare=True)
def stop_motor(motor):
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment