From c8b4fd9c7c5fb6d832d05c5138a8fe5008e3986c Mon Sep 17 00:00:00 2001 From: Mads Bertelsen Date: Wed, 2 Jun 2021 15:05:32 +0200 Subject: [PATCH 1/3] Cryostat tool along with example in new tool module. The tool module is called through functions to simplify loading, but that may not be the best name. The cryostat tool makes it easy to build simple cryostat models, including windows and logging. Simple example is included. --- examples/cryostat.ipynb | 216 +++++++++ mcstasscript/interface/functions.py | 1 + mcstasscript/tools/__init__.py | 0 mcstasscript/tools/cryostat.py | 698 ++++++++++++++++++++++++++++ 4 files changed, 915 insertions(+) create mode 100644 examples/cryostat.ipynb create mode 100644 mcstasscript/tools/__init__.py create mode 100644 mcstasscript/tools/cryostat.py diff --git a/examples/cryostat.ipynb b/examples/cryostat.ipynb new file mode 100644 index 00000000..bc743bc1 --- /dev/null +++ b/examples/cryostat.ipynb @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "brown-despite", + "metadata": {}, + "outputs": [], + "source": [ + "from mcstasscript.interface import instr, functions, plotter\n", + "import matplotlib\n", + "%matplotlib widget" + ] + }, + { + "cell_type": "markdown", + "id": "approved-parade", + "metadata": {}, + "source": [ + "## Demo of cryostat builder\n", + "This notebook contains a quick demo of the Cryostat class that makes the task of adding a cryostat model much less daunting. First an instrument object is created with just a source." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "composed-custody", + "metadata": {}, + "outputs": [], + "source": [ + "instrument = instr.McStas_instr(\"cryostat_test\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "secret-convert", + "metadata": {}, + "outputs": [], + "source": [ + "source = instrument.add_component(\"source\", \"Source_simple\")\n", + "source.xwidth = 0.01\n", + "source.yheight = 0.01\n", + "source.focus_xw = 0.01\n", + "source.focus_yh = 0.01\n", + "source.dist = 2\n", + "source.E0 = 5\n", + "source.dE = 0.1" + ] + }, + { + "cell_type": "markdown", + "id": "eastern-journal", + "metadata": {}, + "source": [ + "## Creating a cryostat\n", + "One use the Cryostat class to make a cryostat object. This object can be placed in the instrument file much like a component with *set_AT* and *set_ROTATED*. Here we place it 2 m after the source.\n", + "\n", + "Then the different layers of the cryostat is added, starting with the smallest closest to the sample. A negative value for top or bottom thickness removes the cap in that end. After adding a layer, it can be accessed with the attribute *last_layer*, which allows adding a window. Here 4 layers are set up, 3 of which have windows." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "welcome-cathedral", + "metadata": {}, + "outputs": [], + "source": [ + "orange_cryostat = functions.Cryostat(\"orange\", instrument)\n", + "orange_cryostat.set_AT([0,0,2], source)\n", + "\n", + "orange_cryostat.add_layer(inner_radius=70E-3/2, outer_radius=75E-3/2,\n", + " sample_to_bottom=83E-3, bottom_thickness=5E-3,\n", + " sample_to_top=200E-3, top_thickness=-1E-3,\n", + " material=\"Al\", p_interact=0.2)\n", + "orange_cryostat.last_layer.add_window(outer_radius=73E-3/2, sample_to_top=44.42E-3, sample_to_bottom=88.2E-3)\n", + "\n", + "orange_cryostat.add_layer(inner_radius=80E-3/2, outer_radius=81E-3/2,\n", + " sample_to_bottom=90E-3, bottom_thickness=2E-3,\n", + " sample_to_top=240E-3, top_thickness=-1E-3, p_interact=0.2)\n", + "\n", + "orange_cryostat.add_layer(inner_radius=95E-3/2, outer_radius=99.5E-3/2,\n", + " sample_to_bottom=93E-3, bottom_thickness=6E-3,\n", + " sample_to_top=225E-3, top_thickness=9E-3, p_interact=0.2)\n", + "orange_cryostat.last_layer.add_window(outer_radius=97E-3/2, sample_to_top=52E-3, sample_to_bottom=100E-3)\n", + "\n", + "orange_cryostat.add_layer(inner_radius=120E-3/2, outer_radius=127E-3/2,\n", + " sample_to_bottom=109E-3, bottom_thickness=11E-3,\n", + " sample_to_top=205E-3, top_thickness=22E-3, p_interact=0.2)\n", + "orange_cryostat.last_layer.add_window(outer_radius=125E-3/2, inner_radius=122E-3/2,\n", + " sample_to_top=55.7E-3, sample_to_bottom=93.54E-3)" + ] + }, + { + "cell_type": "markdown", + "id": "coral-retention", + "metadata": {}, + "source": [ + "After the cryostat description is done one can optionally add Union loggers that show scattering intensity in space using the *add_spatial_loggers* method. Shows the cryostat from the 3 directions along axis, and a zoom in on a cut in zy that clearly shows all windows added. In addition its possible to record the scattering as a function of time, this is done with the *add_time_histogram* and *add_animation* methods, the first of which adds a simple histogram and the latter of which records spatial scattering in a number of time frames.\n", + "\n", + "At the end it is necessary to run the *build* method, this assigns the appropriate priorites to each Union component used, and adds a Union_master component to the end. A sample could be added before the *build* method is called using Union components." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dutch-prevention", + "metadata": {}, + "outputs": [], + "source": [ + "orange_cryostat.add_spatial_loggers()\n", + "orange_cryostat.add_time_histogram(t_min=0.00195, t_max=0.0024)\n", + "orange_cryostat.add_animation(t_min=0.00195, t_max=0.0024, n_frames=5)\n", + "orange_cryostat.build()" + ] + }, + { + "cell_type": "markdown", + "id": "pregnant-rwanda", + "metadata": {}, + "source": [ + "For further information on these methods, the built in help can be used shown below" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "noticed-third", + "metadata": {}, + "outputs": [], + "source": [ + "help(orange_cryostat.add_animation)" + ] + }, + { + "cell_type": "markdown", + "id": "armed-graph", + "metadata": {}, + "source": [ + "### Running the simulation\n", + "This is sufficient to run the simulation and see the resulting plots." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "paperback-palmer", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "data = instrument.run_full_instrument(foldername=\"test_cryostat\", increment_folder_name=True, ncount=1E7)" + ] + }, + { + "cell_type": "markdown", + "id": "solar-checkout", + "metadata": {}, + "source": [ + "### Plotting with interface\n", + "Recommend using log plot and orders of magnitude = 5 to see details. It may be necessary to refresh this cell after the simulation has been performed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "mobile-strike", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib widget\n", + "plotter.interface(data)" + ] + }, + { + "cell_type": "markdown", + "id": "generic-ability", + "metadata": {}, + "source": [ + "## Future expansions\n", + "Some additional features are expected to be added to this system at a later point.\n", + "\n", + "### Entry windows\n", + "Create a layer method to make entry windows, square and circular.\n", + "\n", + "### Mounting plate\n", + "A cryostat usually has a mounting plate with a larger radius than the widest layer, could easily add such a feature.\n", + "\n", + "### External sample\n", + "Create a cryostat method that takes an external sample component that is not in Union but incorperates this into the cryostat using the best practice method." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/mcstasscript/interface/functions.py b/mcstasscript/interface/functions.py index 8d7a6600..e1c30286 100644 --- a/mcstasscript/interface/functions.py +++ b/mcstasscript/interface/functions.py @@ -2,6 +2,7 @@ import os from mcstasscript.data.data import McStasData +from mcstasscript.tools.cryostat import Cryostat import mcstasscript.helper.managed_mcrun as managed_mcrun diff --git a/mcstasscript/tools/__init__.py b/mcstasscript/tools/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mcstasscript/tools/cryostat.py b/mcstasscript/tools/cryostat.py new file mode 100644 index 00000000..ba97260a --- /dev/null +++ b/mcstasscript/tools/cryostat.py @@ -0,0 +1,698 @@ +import numpy as np + +class Layer: + def __init__(self, name, cryostat, + sample_to_bottom, bottom_thickness, sample_to_top, top_thickness=0.01, + inner_radius=None, outer_radius=None, thickness=None, + material="Al", p_interact=0): + """ + Layer of cryostat with a shell made of given material and hollowed by vacuum + + Describes a layer of a cryostat with given geometry and materials. The geometry + is specified with distance from sample to top and bottom, along with a + thickness of these. In addition an outer and inner radius is needed, here the + user can specify two of inner_radius, outer_radius and thickness. + The Layer is given the cryostat object of which is it a part to access methods + and attributes in a simple way. + The layer is built from Union components, and so are not allowed to perfectly + intersect the planes from other layers. These are registred and check with the + cryostat class. If a custom material is given instead of Al, that material has + to exist as a Union_make_material component. + + It is possible to add windows to a layer, these are added with the add_window + method, windows can be a reduction of radius from the inside, outside or both. + + Parameters + ---------- + + sample_to_bottom: float + Distance from sample to bottom of layer [m] (bottom thickness added) + + bottom_thickness: float + Thickness of layer bottom [m] + + sample_to_top: float + Distance from sample to top of layer [m] (top thickness added) + + top_thickness: float + Thickness of layer top [m] + + inner_radius: float + Inner radius of the cryostat layer [m] + + outer_radius: float + Outer radius of the cryostat layer [m] + + thickness: float + Thickness of the shell, can be provided instead of either inner or outer radius [m] + + material: string + Material of which the cryostat layer should be made + + p_interact: float + p_interact set for all Union geometry components + """ + + self.name = name + self.material = material + self.p_interact = p_interact + + self.cryostat = cryostat + self.instr = self.cryostat.instr + self.reference = self.cryostat.origin + + try: + self.instr.get_component(self.material) + except: + raise RuntimeError("No material named '" + str(self.material) + + "' found in given instrument file. \n" + + "Construct with Union_make_material.") + + self.shell_lowest_point = -sample_to_bottom - bottom_thickness + self.shell_highest_point = sample_to_top + top_thickness + self.shell_center = 0.5 * (self.shell_lowest_point + self.shell_highest_point) + self.shell_height = self.shell_highest_point - self.shell_lowest_point + + # Check with the database these wont cause a collision + self.cryostat.add_y_plane(self.shell_lowest_point) + self.cryostat.add_y_plane(self.shell_highest_point) + + self.vac_lowest_point = -sample_to_bottom + self.vac_highest_point = sample_to_top + self.vac_center = 0.5 * (self.vac_highest_point + self.vac_lowest_point) + self.vac_height = self.vac_highest_point - self.vac_lowest_point + + # Check with the database these wont cause a collision + self.cryostat.add_y_plane(self.vac_lowest_point) + self.cryostat.add_y_plane(self.vac_highest_point) + + self.inner_radius, self.outer_radius = self.check_radius_input(inner_radius, outer_radius, thickness) + + # Check with the database these wont cause a collision + self.cryostat.add_radius(self.inner_radius) + self.cryostat.add_radius(self.outer_radius) + + # Set up shell + layer = self.instr.add_component(self.name + "_layer", "Union_cylinder") + layer.material_string = '"' + self.material + '"' + layer.p_interact = self.p_interact + + layer.radius = self.outer_radius + layer.yheight = self.shell_height + + layer.set_AT([0, self.shell_center, 0], RELATIVE=self.reference) + + self.layer = layer + + # Set up vacuum + layer_vac = self.instr.add_component(self.name + "_layer_vac", "Union_cylinder") + layer_vac.material_string = '"Vacuum"' + + layer_vac.radius = self.inner_radius + layer_vac.yheight = self.vac_height + + layer_vac.set_AT([0, self.vac_center, 0], RELATIVE=self.reference) + + self.layer_vac = layer_vac + + # List of union components, highest priority first + self.outer_cuts = [] + self.inner_cuts = [] + # self.main_union_components = [self.layer_vac, self.layer] + self.union_components = [self.layer_vac, self.layer] + + # Prepare for windows + self.inner_window_index = 0 + self.outer_window_index = 0 + + def count_inputs(self, *args): + """ + Counts how many of given inputs are not None + """ + n_inputs = 0 + for arg in args: + if arg is not None: + n_inputs += 1 + return n_inputs + + def check_radius_input(self, inner_radius, outer_radius, thickness): + """ + Returns inner and outer radius from user input that may include thickness + + The inner_radius, outer_radius and thickness can have one not specified, + and this method will calculate the inner and out radius from the two given. + A input not given is specified as None. + """ + + n_inputs = self.count_inputs(inner_radius, outer_radius, thickness) + + if n_inputs != 2: + raise RuntimeError("Set two of inner_radius, outer_radius, and thickness.") + + if inner_radius is None: + inner_radius = outer_radius - thickness + else: + inner_radius = inner_radius + + if outer_radius is None: + outer_radius = inner_radius + thickness + else: + outer_radius = outer_radius + + return inner_radius, outer_radius + + def add_window(self, inner_radius=None, outer_radius=None, thickness=None, + height=None, sample_to_top=None, sample_to_bottom=None): + """ + Adds 360 deg window in given height interval + + Adds window as a reduction in thickness of the layer in a certain height + interval. The reduction can be both from the outside, inside or both. + If only outer_radius is given, a reduction of the outside is assumed. + If only inner_radius is given, the window will be on the inside. + If two of the three parameters inner_radius, outer_radius and thickness + is given, material will be removed from both the outside and inside, only + use this if necessary, never specify inner / outer radius identical to the + main layer. + Any two of height, sample_to_top and sample_to_bottom can be given, or if + the window is symetical in height around the sample position, the height + alone is sufficient. + It is possible to add multiple multiple windows by calling this method + multiple times, add the tallest first. + + Keyword arguments + ----------------- + + inner_radius : float + inner radius of window (should be larger than main inner_radius) + + outer_radius : float + outer radius of window (should be less than main outer_radius) + + thickness : float + thickness of the window + + height : float + height of window + + sample_to_top : float + distance from sample center to top of window + + sample_to_bototm : float + distance from sample center to bottom of window + """ + + # Assume no cuts are made + outer_cut = False + inner_cut = False + + # Check if cuts are made to inner, outer or both + if self.count_inputs(inner_radius, outer_radius, thickness) == 1: + if inner_radius is not None: + inner_cut = True + outer_radius = self.outer_radius + elif outer_radius is not None: + outer_cut = True + inner_radius = self.inner_radius + else: + # could center this window + raise RuntimeError("Cant tell if window is on inside or outside.") + + inner_radius, outer_radius = self.check_radius_input(inner_radius, outer_radius, thickness) + + if inner_radius < self.inner_radius: + raise RuntimeError("Window has smaller inner radius than main layer, needs to be larger.") + + if outer_radius > self.outer_radius: + raise RuntimeError("Window has larger outer radius than main layer, needs to be smaller.") + + if abs(inner_radius - self.inner_radius) > 1E-5: + inner_cut = True + + if abs(outer_radius - self.outer_radius) > 1E-5: + outer_cut = True + + if self.count_inputs(height, sample_to_top, sample_to_bottom) == 3: + raise RuntimeError("Ambigious definition of window height.") + + if height is not None: + window_top = height / 2 + window_bottom = -height / 2 + if sample_to_top is not None: + window_top = sample_to_top + window_bottom = sample_to_top - height + if sample_to_bottom is not None: + window_top = -sample_to_bottom + height + window_bottom = -sample_to_bottom + else: + window_top = sample_to_top + window_bottom = -sample_to_bottom + + window_height = window_top - window_bottom + window_position = 0.5 * (window_top + window_bottom) + + if outer_cut: + name = self.name + "_outer_cut_" + str(self.outer_window_index) + o_cut = self.instr.add_component(name, "Union_cylinder") + o_cut.set_AT([0, window_position, 0], RELATIVE=self.reference) + + o_cut.material_string = '"Vacuum"' + o_cut.radius = self.outer_radius + 1E-6 + o_cut.yheight = window_height + 1E-6 + + # Check these radius and y_planes do not collide with others + self.cryostat.add_radius(o_cut.radius) + self.cryostat.add_y_plane(window_top + 0.5E-6) + self.cryostat.add_y_plane(window_bottom - 0.5E-6) + + name = self.name + "_outer_cut_replace_" + str(self.outer_window_index) + o_cut_m = self.instr.add_component(name, "Union_cylinder") + o_cut_m.set_AT([0, window_position, 0], RELATIVE=self.reference) + + o_cut_m.material_string = '"' + self.material + '"' + o_cut_m.p_interact = self.p_interact + o_cut_m.radius = outer_radius + o_cut_m.yheight = window_height + 5E-6 + + # Check these radius and y_planes do not collide with others + self.cryostat.add_radius(o_cut_m.radius) + self.cryostat.add_y_plane(window_top + 2.5E-6) + self.cryostat.add_y_plane(window_bottom - 2.5E-6) + + # Update list of outer cut components, order is important + self.outer_cuts = [o_cut_m, o_cut] + self.outer_cuts + + self.outer_window_index += 1 + + if inner_cut: + name = self.name + "_inner_cut_" + str(self.inner_window_index) + i_cut = self.instr.add_component(name, "Union_cylinder") + i_cut.set_AT([0, window_position, 0], RELATIVE=self.reference) + + i_cut.material_string = '"Vacuum"' + i_cut.radius = inner_radius + i_cut.yheight = window_height + + # Check these radius and y_planes do not collide with others + self.cryostat.add_radius(i_cut.radius) + self.cryostat.add_y_plane(window_top) + self.cryostat.add_y_plane(window_bottom) + + # Update list of inner cut components, order is important + self.inner_cuts = [i_cut] + self.inner_cuts + + self.inner_window_index += 1 + + # Create full list of Union components used in order from highest to lowest priority + self.union_components = [self.layer_vac] + self.inner_cuts + self.outer_cuts + [self.layer] + + +class Cryostat: + def __init__(self, name, instr, reference="PREVIOUS", + min_priority=20, max_priority=100): + """ + Handles addition of a cryostat with multiple layers and windows + + This class can add a description of a cryostat to a McStasScript + instrument object. The cryostat is made of several layers consisting + of a shell and vacuum, these are added with the add_layer method and + should be added in the order from smallest (inside) to largest. Each + layer can be accessed with the last_layer attribute, and one can add + windows to each layer. Consult the Layer class for details. When all + layers are added, it is necessary to build the cryostat, this step is + necessary to adjust the priority of each Union component. + The position of the cryostat can be adjusted with the set_AT and + set_ROTATED methods that works as the standard McStasScript versions. + It is possible to add logger components that show scattering in the + system with the add_spatial_loggers method. + + Parameters + ---------- + + name : str + Name of the cryostat, will be used in naming of all added components + + instr : instrument object inherited from McCode_instr + Instrument object where the cryostat should be added + + Keyword arguments + ----------------- + + reference : str + Name of the component which the cryostat should be located relative to + + min_priority : float + Minimum Union priority used (default 20) + + max_priority : float + Maximum Union priority used, add a sample with higher priority (default 100) + """ + self.name = str(name) + self.instr = instr + self.reference = reference + self.min_priority = min_priority + self.max_priority = max_priority + + self.layers = [] + self.last_layer = None + + self.origin = self.instr.add_component(self.name, "Arm") + self.origin.set_AT([0, 0, 0], RELATIVE=reference) + + # Check if Al exists, if not add it! + try: + Al_component = None + Al_component = instr.get_component("Al") + except: + Al_inc = self.instr.add_component("Al_inc", "Incoherent_process") + Al_inc.sigma = 4 * 0.0082 # Incoherent cross section in Barns + Al_inc.unit_cell_volume = 66.4 # Unit cell volume in AA^3 + + Al_pow = self.instr.add_component("Al_pow", "Powder_process") + Al_pow.reflections = "\"Al.laz\"" # Data file with powder lines + + Al = self.instr.add_component("Al", "Union_make_material") + Al.my_absorption = "100*4*0.231/66.4" # Inverse penetration depth in 1/m + Al.process_string = '"Al_inc,Al_pow"' # Make a material with aluminium incoherent and aluminium powder` + + # Set intial state of loggers, not having been added yet + # Important to avoid multiple sets of the same kind added + self.spatial_loggers_set = False + self.time_logger_set = False + self.animation_loggers = [] + + # Height database + self.used_y_planes = [] + self.used_radius_values = [] + + def set_AT(self, *args, **kwargs): + """ + Sets position of cryostat, sample position used as reference + """ + self.origin.set_AT(*args, **kwargs) + + def set_ROTATED(self, *args, **kwargs): + """ + Sets rotation of cryostat, sample position used as reference + """ + self.origin.set_AT(*args, **kwargs) + + def add_layer(self, *args, **kwargs): + """ + Adds layer to cryostat, all arguments passed to Layer. Consult Layer + class for additional help on adding a layer. + """ + + if "name" not in kwargs: + kwargs["name"] = self.name + "_layer_" + str(len(self.layers)) + + if "cryostat" not in kwargs: + kwargs["cryostat"] = self + + layer = Layer(*args, **kwargs) + self.last_layer = layer + self.layers.append(layer) + + def find_cryostat_dimensions(self): + """ + Returns spatial extend of cryostat with padding for plotting + + Returns tuple with x, lowest y, highest y and z + """ + # find outer dimensions: + max_radius = self.last_layer.outer_radius + highest_point = self.last_layer.shell_highest_point + lowest_point = self.last_layer.shell_lowest_point + + if highest_point > abs(lowest_point): + height = 2 * highest_point + else: + height = 2 * abs(lowest_point) + + mon_z = 1.1 * max_radius + mon_x = 1.1 * max_radius + if lowest_point < 0: + mon_y_low = 1.1 * lowest_point + else: + mon_y_low = 0.9 * lowest_point + + if highest_point > 0: + mon_y_high = 1.1 * highest_point + else: + mon_y_high = 0.9 * highest_point + + return mon_x, mon_y_low, mon_y_high, mon_z + + def add_spatial_loggers(self, n_x=500, n_y=500, n_z=500): + """ + Adds spatial Union loggers to the code + + The spatial loggers will be set so they cover the entire cryostat and + include views from top, side and front along with a close up of the + windows as a slice in zy with limited z of +/- 5 mm. + + Keyword arguments + ----------------- + + n_x : int + Number of bins in x direction + + n_y : int + Number of bins in y direction + + n_z : int + Number of bins in z direction + """ + + if self.spatial_loggers_set: + raise RuntimeError("Can not add two sets of spatial loggers.") + + self.spatial_loggers_set = True + + # find outer dimensions: + mon_x, mon_y_low, mon_y_high, mon_z = self.find_cryostat_dimensions() + + space_2D_zx = self.instr.add_component(self.name + "_logger_space_zx", "Union_logger_2D_space") + space_2D_zx.set_AT([0, 0, 0], RELATIVE=self.origin) + space_2D_zx.filename = '"' + self.name + '_space_zx.dat"' + space_2D_zx.D_direction_1 = '"z"'; + space_2D_zx.n1 = n_z + space_2D_zx.D1_min = -mon_z; + space_2D_zx.D1_max = mon_z + space_2D_zx.D_direction_2 = '"x"'; + space_2D_zx.n2 = n_x + space_2D_zx.D2_min = -mon_x; + space_2D_zx.D2_max = mon_x + + space_2D_zy = self.instr.add_component(self.name + "_logger_space_zy", "Union_logger_2D_space") + space_2D_zy.set_AT([0, 0, 0], RELATIVE=self.origin) + space_2D_zy.filename = '"' + self.name + '_space_zy.dat"' + space_2D_zy.D_direction_1 = '"z"'; + space_2D_zy.n1 = n_z + space_2D_zy.D1_min = -mon_z; + space_2D_zy.D1_max = mon_z + space_2D_zy.D_direction_2 = '"y"'; + space_2D_zy.n2 = n_y + space_2D_zy.D2_min = mon_y_low; + space_2D_zy.D2_max = mon_y_high + + space_2D_xy = self.instr.add_component(self.name + "_logger_space_xy", "Union_logger_2D_space") + space_2D_xy.set_AT([0, 0, 0], RELATIVE=self.origin) + space_2D_xy.filename = '"' + self.name + '_space_xy.dat"' + space_2D_xy.D_direction_1 = '"x"'; + space_2D_xy.n1 = n_x + space_2D_xy.D1_min = -mon_x; + space_2D_xy.D1_max = mon_x + space_2D_xy.D_direction_2 = '"y"'; + space_2D_xy.n2 = n_y + space_2D_xy.D2_min = mon_y_low; + space_2D_xy.D2_max = mon_y_high + + # Adding monitor that shows windows better + lowest_inner_radius = self.layers[0].inner_radius + largest_outer_radius = self.layers[-1].outer_radius + + space_3D_zy = self.instr.add_component(self.name + "_logger_space_zy_close", "Union_logger_3D_space") + space_3D_zy.set_AT([0, 0, 0], RELATIVE=self.origin) + space_3D_zy.filename = '"' + self.name + '_space_zy_close.dat"' + space_3D_zy.D_direction_1 = '"z"'; + space_3D_zy.n1 = n_z + space_3D_zy.D1_min = -1.02 * largest_outer_radius; + space_3D_zy.D1_max = -0.9 * lowest_inner_radius + space_3D_zy.D_direction_2 = '"y"'; + space_3D_zy.n2 = n_y + space_3D_zy.D2_min = mon_y_low; + space_3D_zy.D2_max = mon_y_high + space_3D_zy.D_direction_3 = '"x"'; + space_3D_zy.n3 = 1 + space_3D_zy.D3_min = -0.005; + space_3D_zy.D3_max = 0.005 + + def add_time_histogram(self, t_min=0, t_max=0.1): + """ + Adds histogram of scattering intensity as function of time + + Very useful when setting time range for animation, only one can be added. + + Parameters + ---------- + + t_min : float + Lowest time recorded in [s] + + t_max : float + Highest time recorded in [s] + """ + + if self.time_logger_set: + raise RuntimeError("Can not add two sets of time_histogram loggers.") + + self.time_logger_set = True + + time_mon = self.instr.add_component(self.name + "_logger_time", "Union_logger_1D") + time_mon.variable = '"time"' + time_mon.min_value = t_min + time_mon.max_value = t_max + time_mon.n1 = 1000 + + def add_animation(self, t_min=0, t_max=0.1, n_frames=10, + d1="z", n1=300, d2="y", n2=300): + """ + Adds 2D_space_time logger that records the information necessary for animation + + Adds a 2D_space_time logger that records the requested number of frames, n_frames. + The time span of both is from t_min to t_max. The default orientation is in the zy + plane, but this can be chosen along with the desired resolution. + Errors can happen with too many empty frames, so it is recommended to set + t_min close to the first scattering time. + Select the appropriate animation data from simulation output and use + plotter.make_animation with a filename to save the animation as a gif. + + Parameters + ---------- + + t_min : float + Lowest time recorded in [s] + + t_max : float + Highest time recorded in [s] + + n_frames : int + Number of frames in space 2D time logger + + d1 : str + First direction of space 2D time logger, "x", "y" or "z" + + n1 : int + Number of bins in first direction + + d2 : str + Second direction of space 2D time logger, "x", "y" or "z" + + n2 : int + Number of bins in second direction + """ + + if d1 == d2: + raise RuntimeError("Cant have both d1 and d2 along the same axis.") + + if d1 + d2 in self.animation_loggers: + raise RuntimeError("Can only add one animation logger with the same axis.") + + self.animation_loggers.append(d1 + d2) + + # find outer dimensions: + mon_x, mon_y_low, mon_y_high, mon_z = self.find_cryostat_dimensions() + + name = self.name + "_logger_space_" + d1 + d2 + "_time" + ani_logger = self.instr.add_component(name, "Union_logger_2D_space_time") + ani_logger.set_AT([0, 0, 0], RELATIVE=self.origin) + ani_logger.filename = '"' + name + '.dat"' + ani_logger.time_bins = int(n_frames) + ani_logger.time_min = t_min + ani_logger.time_max = t_max + + ani_logger.D_direction_1 = '"' + d1 + '"'; + ani_logger.n1 = int(n1) + if d1 == "x": + ani_logger.D1_min = -mon_x; + ani_logger.D1_max = mon_x + elif d1 == "y": + ani_logger.D1_min = mon_y_low; + ani_logger.D1_max = mon_y_high + elif d1 == "z": + ani_logger.D1_min = -mon_z; + ani_logger.D1_max = mon_z + else: + raise RuntimeError("Dimension: '" + d1 + "' not recoignized, must be x, y or z.") + + ani_logger.D_direction_2 = '"' + d2 + '"'; + ani_logger.n2 = int(n2) + if d2 == "x": + ani_logger.D2_min = -mon_x; + ani_logger.D2_max = mon_x + elif d2 == "y": + ani_logger.D2_min = mon_y_low; + ani_logger.D2_max = mon_y_high + elif d2 == "z": + ani_logger.D2_min = -mon_z; + ani_logger.D2_max = mon_z + else: + raise RuntimeError("Dimension: '" + d2 + "' not recoignized, must be x, y or z.") + + def add_y_plane(self, value): + """ + Adds a y plane to database, checking if it is already present + + If duplicates occur, errors would happen in the Union algorithm + """ + + for y_plane in self.used_y_planes: + if abs(y_plane - value) < 1E-7: + raise RuntimeError("Two planes overlap with the same y value.") + + self.used_y_planes.append(value) + + def add_radius(self, value): + """ + Adds a radius to databse, checking if it is already present + + If duplicates occur, errors would happen in the Union algorithm + """ + + for radius in self.used_radius_values: + if abs(radius - value) < 1E-7: + raise RuntimeError("The radius of two cylinders are almost equal.") + + self.used_radius_values.append(value) + + def build(self, include_master=True): + """ + Assigns priorities to the internal components of the cryostat + + The build method must be called after all layers and windows are added + in order for priorities to be assigned according to the priority window + given at class initialization. It is optional to include the Union_master + with the build method, if it is not included it must be manually provided + later. + + Keyword arguments + ----------------- + + inclde_master : bool + If True a Union_master component is added to the instrument file + """ + + union_component_list = [] + + for layer in self.layers: + union_component_list += layer.union_components + + priorities = np.linspace(self.max_priority, self.min_priority, len(union_component_list)) + + for component, priority in zip(union_component_list, priorities): + component.priority = priority + + if include_master: + master = self.instr.add_component(self.name + "_master", "Union_master") + From 3666e1858ed44527387be24464eb6b50a131674e Mon Sep 17 00:00:00 2001 From: Mads Bertelsen Date: Mon, 7 Jun 2021 11:22:43 +0200 Subject: [PATCH 2/3] Upload of clean cryostat notebook. --- examples/cryostat.ipynb | 714 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 702 insertions(+), 12 deletions(-) diff --git a/examples/cryostat.ipynb b/examples/cryostat.ipynb index bc743bc1..cfc1de16 100644 --- a/examples/cryostat.ipynb +++ b/examples/cryostat.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "brown-despite", "metadata": {}, "outputs": [], @@ -23,17 +23,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "composed-custody", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The following components are found in the work_directory / input_path:\n", + " Union_sphere.comp\n", + " Union_box.comp\n", + " Single_crystal_process.comp\n", + " Union_logger_2D_kf.comp\n", + " Template_process.comp\n", + " Union_conditional_standard.comp\n", + " Union_logger_2D_space.comp\n", + " Union_conditional_PSD.comp\n", + " Union_master.comp\n", + " Union_logger_2D_kf_time.comp\n", + " Union_cylinder.comp\n", + " Powder_process.comp\n", + " Union_make_material.comp\n", + " Incoherent_process.comp\n", + " Union_logger_1D.comp\n", + " Union_logger_3D_space.comp\n", + " Union_logger_2DQ.comp\n", + " Union_logger_2D_space_time.comp\n", + "These definitions will be used instead of the installed versions.\n" + ] + } + ], "source": [ "instrument = instr.McStas_instr(\"cryostat_test\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "secret-convert", "metadata": {}, "outputs": [], @@ -61,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "welcome-cathedral", "metadata": {}, "outputs": [], @@ -103,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "dutch-prevention", "metadata": {}, "outputs": [], @@ -124,10 +151,54 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "noticed-third", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on method add_animation in module mcstasscript.tools.cryostat:\n", + "\n", + "add_animation(t_min=0, t_max=0.1, n_frames=10, d1='z', n1=300, d2='y', n2=300) method of mcstasscript.tools.cryostat.Cryostat instance\n", + " Adds 2D_space_time logger that records the information necessary for animation\n", + " \n", + " Adds a 2D_space_time logger that records the requested number of frames, n_frames.\n", + " The time span of both is from t_min to t_max. The default orientation is in the zy\n", + " plane, but this can be chosen along with the desired resolution.\n", + " Errors can happen with too many empty frames, so it is recommended to set\n", + " t_min close to the first scattering time.\n", + " Select the appropriate animation data from simulation output and use\n", + " plotter.make_animation with a filename to save the animation as a gif.\n", + " \n", + " Parameters\n", + " ----------\n", + " \n", + " t_min : float\n", + " Lowest time recorded in [s]\n", + " \n", + " t_max : float\n", + " Highest time recorded in [s]\n", + " \n", + " n_frames : int\n", + " Number of frames in space 2D time logger\n", + " \n", + " d1 : str\n", + " First direction of space 2D time logger, \"x\", \"y\" or \"z\"\n", + " \n", + " n1 : int\n", + " Number of bins in first direction\n", + " \n", + " d2 : str\n", + " Second direction of space 2D time logger, \"x\", \"y\" or \"z\"\n", + " \n", + " n2 : int\n", + " Number of bins in second direction\n", + "\n" + ] + } + ], "source": [ "help(orange_cryostat.add_animation)" ] @@ -143,12 +214,606 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "paperback-palmer", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO: Using directory: \"/Users/madsbertelsen/PaNOSC/McStasScript/github/McStasScript/examples/test_cryostat_7\"\n", + "INFO: Regenerating c-file: cryostat_test.c\n", + "CFLAGS= -I@MCCODE_LIB@/share/\n", + "INFO: Recompiling: ./cryostat_test.out\n", + "In file included from Incoherent_process.comp:65:0:\n", + "./Union_functions.c: In function ‘write_tagging_tree’:\n", + "./Union_functions.c:1604:82: warning: passing argument 4 of ‘qsort’ from incompatible pointer type [enabled by default]\n", + " qsort(total_history.saved_histories,total_history.used_elements,sizeof (struct saved_history_struct), Sample_compare_history_intensities);\n", + " ^\n", + "In file included from mccode-r.h:41:0:\n", + "/usr/include/stdlib.h:165:7: note: expected ‘int (*)(const void *, const void *)’ but argument is of type ‘int (*)(const struct saved_history_struct *, const struct saved_history_struct *)’\n", + " void qsort(void *__base, size_t __nel, size_t __width,\n", + " ^\n", + "In file included from Incoherent_process.comp:65:0:\n", + "./Union_functions.c:1608:3: warning: passing argument 1 of ‘printf_history’ from incompatible pointer type [enabled by default]\n", + " MPI_MASTER(\n", + " ^\n", + "./Union_functions.c:1434:6: note: expected ‘struct dynamic_history_list *’ but argument is of type ‘struct saved_history_struct *’\n", + " void printf_history(struct dynamic_history_list *history) {\n", + " ^\n", + "INFO: ===\n", + "INFO: Placing instr file copy cryostat_test.instr in dataset /Users/madsbertelsen/PaNOSC/McStasScript/github/McStasScript/examples/test_cryostat_7\n", + "\n", + " Instrument parameters for cryostat_test (cryostat_test.instr)\n", + "Opening input file '/Applications/McStas-2.5.app/Contents/Resources/mcstas/2.5/tools/Python/mcrun/../mccodelib/../../../data/Al.laz' (Table_Read_Offset)\n", + "Table from file 'Al.laz' (block 1) is 26 x 18 (x=1:8), constant step. interpolation: linear\n", + " '# TITLE *Aluminum-Al-[FM3-M] Miller, H.P.jr.;DuMond, J.W.M.[1942] at 298 K; ...'\n", + "PowderN: Al_pow: Reading 26 rows from Al.laz\n", + "PowderN: Al_pow: Read 26 reflections from file 'Al.laz'\n", + "PowderN: Al_pow: Vc=66.4 [Angs] sigma_abs=0.924 [barn] sigma_inc=0.0328 [barn] reflections=Al.laz\n", + "Allocating 3D arrays \n", + "Allocating 3D arrays \n", + "---------------------------------------------------------------------\n", + "global_process_list.num_elements: 2\n", + "name of process [0]: Al_inc \n", + "component index [0]: 3 \n", + "name of process [1]: Al_pow \n", + "component index [1]: 4 \n", + "---------------------------------------------------------------------\n", + "global_material_list.num_elements: 1\n", + "name of material [0]: Al \n", + "component index [0]: 5 \n", + "my_absoprtion [0]: 1.391566 \n", + "number of processes [0]: 2 \n", + "---------------------------------------------------------------------\n", + "global_geometry_list.num_elements: 1\n", + "\n", + "name of geometry [0]: orange_layer_0_layer \n", + "component index [0]: 6 \n", + "Volume.name [0]: orange_layer_0_layer \n", + "Volume.p_physics.is_vacuum [0]: 0 \n", + "Volume.p_physics.my_absorption [0]: 1.391566 \n", + "Volume.p_physics.number of processes [0]: 2 \n", + "Volume.geometry.shape [0]: cylinder \n", + "Volume.geometry.center.x [0]: 0.000000 \n", + "Volume.geometry.center.y [0]: 0.055500 \n", + "Volume.geometry.center.z [0]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [0]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [0]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [0]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [0]: 0.037500 \n", + "Volume.geometry.geometry_parameters.height [0]: 0.287000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [0]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [1]: orange_layer_0_layer_vac \n", + "component index [1]: 7 \n", + "Volume.name [1]: orange_layer_0_layer_vac \n", + "Volume.p_physics.is_vacuum [1]: 1 \n", + "Volume.p_physics.my_absorption [1]: 0.000000 \n", + "Volume.p_physics.number of processes [1]: 0 \n", + "Volume.geometry.shape [1]: cylinder \n", + "Volume.geometry.center.x [1]: 0.000000 \n", + "Volume.geometry.center.y [1]: 0.058500 \n", + "Volume.geometry.center.z [1]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [1]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [1]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [1]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [1]: 0.035000 \n", + "Volume.geometry.geometry_parameters.height [1]: 0.283000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [1]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [2]: orange_layer_0_outer_cut_0 \n", + "component index [2]: 8 \n", + "Volume.name [2]: orange_layer_0_outer_cut_0 \n", + "Volume.p_physics.is_vacuum [2]: 1 \n", + "Volume.p_physics.my_absorption [2]: 0.000000 \n", + "Volume.p_physics.number of processes [2]: 0 \n", + "Volume.geometry.shape [2]: cylinder \n", + "Volume.geometry.center.x [2]: 0.000000 \n", + "Volume.geometry.center.y [2]: -0.021890 \n", + "Volume.geometry.center.z [2]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [2]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [2]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [2]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [2]: 0.037501 \n", + "Volume.geometry.geometry_parameters.height [2]: 0.132621 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [2]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [3]: orange_layer_0_outer_cut_replace_0 \n", + "component index [3]: 9 \n", + "Volume.name [3]: orange_layer_0_outer_cut_replace_0 \n", + "Volume.p_physics.is_vacuum [3]: 0 \n", + "Volume.p_physics.my_absorption [3]: 1.391566 \n", + "Volume.p_physics.number of processes [3]: 2 \n", + "Volume.geometry.shape [3]: cylinder \n", + "Volume.geometry.center.x [3]: 0.000000 \n", + "Volume.geometry.center.y [3]: -0.021890 \n", + "Volume.geometry.center.z [3]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [3]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [3]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [3]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [3]: 0.036500 \n", + "Volume.geometry.geometry_parameters.height [3]: 0.132625 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [3]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [4]: orange_layer_1_layer \n", + "component index [4]: 10 \n", + "Volume.name [4]: orange_layer_1_layer \n", + "Volume.p_physics.is_vacuum [4]: 0 \n", + "Volume.p_physics.my_absorption [4]: 1.391566 \n", + "Volume.p_physics.number of processes [4]: 2 \n", + "Volume.geometry.shape [4]: cylinder \n", + "Volume.geometry.center.x [4]: 0.000000 \n", + "Volume.geometry.center.y [4]: 0.073500 \n", + "Volume.geometry.center.z [4]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [4]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [4]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [4]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [4]: 0.040500 \n", + "Volume.geometry.geometry_parameters.height [4]: 0.331000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [4]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [5]: orange_layer_1_layer_vac \n", + "component index [5]: 11 \n", + "Volume.name [5]: orange_layer_1_layer_vac \n", + "Volume.p_physics.is_vacuum [5]: 1 \n", + "Volume.p_physics.my_absorption [5]: 0.000000 \n", + "Volume.p_physics.number of processes [5]: 0 \n", + "Volume.geometry.shape [5]: cylinder \n", + "Volume.geometry.center.x [5]: 0.000000 \n", + "Volume.geometry.center.y [5]: 0.075000 \n", + "Volume.geometry.center.z [5]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [5]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [5]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [5]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [5]: 0.040000 \n", + "Volume.geometry.geometry_parameters.height [5]: 0.330000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [5]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [6]: orange_layer_2_layer \n", + "component index [6]: 12 \n", + "Volume.name [6]: orange_layer_2_layer \n", + "Volume.p_physics.is_vacuum [6]: 0 \n", + "Volume.p_physics.my_absorption [6]: 1.391566 \n", + "Volume.p_physics.number of processes [6]: 2 \n", + "Volume.geometry.shape [6]: cylinder \n", + "Volume.geometry.center.x [6]: 0.000000 \n", + "Volume.geometry.center.y [6]: 0.067500 \n", + "Volume.geometry.center.z [6]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [6]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [6]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [6]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [6]: 0.049750 \n", + "Volume.geometry.geometry_parameters.height [6]: 0.333000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [6]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [7]: orange_layer_2_layer_vac \n", + "component index [7]: 13 \n", + "Volume.name [7]: orange_layer_2_layer_vac \n", + "Volume.p_physics.is_vacuum [7]: 1 \n", + "Volume.p_physics.my_absorption [7]: 0.000000 \n", + "Volume.p_physics.number of processes [7]: 0 \n", + "Volume.geometry.shape [7]: cylinder \n", + "Volume.geometry.center.x [7]: 0.000000 \n", + "Volume.geometry.center.y [7]: 0.066000 \n", + "Volume.geometry.center.z [7]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [7]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [7]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [7]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [7]: 0.047500 \n", + "Volume.geometry.geometry_parameters.height [7]: 0.318000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [7]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [8]: orange_layer_2_outer_cut_0 \n", + "component index [8]: 14 \n", + "Volume.name [8]: orange_layer_2_outer_cut_0 \n", + "Volume.p_physics.is_vacuum [8]: 1 \n", + "Volume.p_physics.my_absorption [8]: 0.000000 \n", + "Volume.p_physics.number of processes [8]: 0 \n", + "Volume.geometry.shape [8]: cylinder \n", + "Volume.geometry.center.x [8]: 0.000000 \n", + "Volume.geometry.center.y [8]: -0.024000 \n", + "Volume.geometry.center.z [8]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [8]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [8]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [8]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [8]: 0.049751 \n", + "Volume.geometry.geometry_parameters.height [8]: 0.152001 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [8]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [9]: orange_layer_2_outer_cut_replace_0 \n", + "component index [9]: 15 \n", + "Volume.name [9]: orange_layer_2_outer_cut_replace_0 \n", + "Volume.p_physics.is_vacuum [9]: 0 \n", + "Volume.p_physics.my_absorption [9]: 1.391566 \n", + "Volume.p_physics.number of processes [9]: 2 \n", + "Volume.geometry.shape [9]: cylinder \n", + "Volume.geometry.center.x [9]: 0.000000 \n", + "Volume.geometry.center.y [9]: -0.024000 \n", + "Volume.geometry.center.z [9]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [9]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [9]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [9]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [9]: 0.048500 \n", + "Volume.geometry.geometry_parameters.height [9]: 0.152005 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [9]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [10]: orange_layer_3_layer \n", + "component index [10]: 16 \n", + "Volume.name [10]: orange_layer_3_layer \n", + "Volume.p_physics.is_vacuum [10]: 0 \n", + "Volume.p_physics.my_absorption [10]: 1.391566 \n", + "Volume.p_physics.number of processes [10]: 2 \n", + "Volume.geometry.shape [10]: cylinder \n", + "Volume.geometry.center.x [10]: 0.000000 \n", + "Volume.geometry.center.y [10]: 0.053500 \n", + "Volume.geometry.center.z [10]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [10]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [10]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [10]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [10]: 0.063500 \n", + "Volume.geometry.geometry_parameters.height [10]: 0.347000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [10]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [11]: orange_layer_3_layer_vac \n", + "component index [11]: 17 \n", + "Volume.name [11]: orange_layer_3_layer_vac \n", + "Volume.p_physics.is_vacuum [11]: 1 \n", + "Volume.p_physics.my_absorption [11]: 0.000000 \n", + "Volume.p_physics.number of processes [11]: 0 \n", + "Volume.geometry.shape [11]: cylinder \n", + "Volume.geometry.center.x [11]: 0.000000 \n", + "Volume.geometry.center.y [11]: 0.048000 \n", + "Volume.geometry.center.z [11]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [11]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [11]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [11]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [11]: 0.060000 \n", + "Volume.geometry.geometry_parameters.height [11]: 0.314000 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [11]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [12]: orange_layer_3_outer_cut_0 \n", + "component index [12]: 18 \n", + "Volume.name [12]: orange_layer_3_outer_cut_0 \n", + "Volume.p_physics.is_vacuum [12]: 1 \n", + "Volume.p_physics.my_absorption [12]: 0.000000 \n", + "Volume.p_physics.number of processes [12]: 0 \n", + "Volume.geometry.shape [12]: cylinder \n", + "Volume.geometry.center.x [12]: 0.000000 \n", + "Volume.geometry.center.y [12]: -0.018920 \n", + "Volume.geometry.center.z [12]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [12]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [12]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [12]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [12]: 0.063501 \n", + "Volume.geometry.geometry_parameters.height [12]: 0.149241 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [12]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [13]: orange_layer_3_outer_cut_replace_0 \n", + "component index [13]: 19 \n", + "Volume.name [13]: orange_layer_3_outer_cut_replace_0 \n", + "Volume.p_physics.is_vacuum [13]: 0 \n", + "Volume.p_physics.my_absorption [13]: 1.391566 \n", + "Volume.p_physics.number of processes [13]: 2 \n", + "Volume.geometry.shape [13]: cylinder \n", + "Volume.geometry.center.x [13]: 0.000000 \n", + "Volume.geometry.center.y [13]: -0.018920 \n", + "Volume.geometry.center.z [13]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [13]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [13]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [13]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [13]: 0.062500 \n", + "Volume.geometry.geometry_parameters.height [13]: 0.149245 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [13]: [0.000000 0.000000 1.000000] \n", + "\n", + "name of geometry [14]: orange_layer_3_inner_cut_0 \n", + "component index [14]: 20 \n", + "Volume.name [14]: orange_layer_3_inner_cut_0 \n", + "Volume.p_physics.is_vacuum [14]: 1 \n", + "Volume.p_physics.my_absorption [14]: 0.000000 \n", + "Volume.p_physics.number of processes [14]: 0 \n", + "Volume.geometry.shape [14]: cylinder \n", + "Volume.geometry.center.x [14]: 0.000000 \n", + "Volume.geometry.center.y [14]: -0.018920 \n", + "Volume.geometry.center.z [14]: 2.000000 \n", + "Volume.geometry.rotation_matrix[0] [14]: [1.000000 0.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[1] [14]: [0.000000 1.000000 0.000000] \n", + "Volume.geometry.rotation_matrix[2] [14]: [0.000000 0.000000 1.000000] \n", + "Volume.geometry.geometry_parameters.cyl_radius [14]: 0.061000 \n", + "Volume.geometry.geometry_parameters.height [14]: 0.149240 \n", + "Volume.geometry.focus_data_array.elements[0].Aim [14]: [0.000000 0.000000 1.000000] \n", + "---------------------------------------------------------------------\n", + "number_of_volumes = 16\n", + "number_of_masks = 0\n", + "number_of_masked_volumes = 0\n", + "\n", + " ---- Overview of the lists generated for each volume ---- \n", + "List overview for surrounding vacuum\n", + "LIST: Children for Volume 0 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]\n", + "LIST: Direct_children for Volume 0 = [5,6,7,11,13]\n", + "LIST: Intersect_check_list for Volume 0 = [5,6,7,11,13]\n", + "LIST: Mask_intersect_list for Volume 0 = []\n", + "LIST: Destinations_list for Volume 0 = []\n", + "LIST: Reduced_destinations_list for Volume 0 = []\n", + "LIST: Next_volume_list for Volume 0 = [5,6,7,11,13]\n", + "LIST: mask_list for Volume 0 = []\n", + "LIST: masked_by_list for Volume 0 = []\n", + "LIST: masked_by_mask_index_list for Volume 0 = []\n", + " mask_mode for Volume 0 = 0\n", + "\n", + "List overview for orange_layer_0_layer with cylinder shape made of Al\n", + "LIST: Children for Volume 1 = []\n", + "LIST: Direct_children for Volume 1 = []\n", + "LIST: Intersect_check_list for Volume 1 = [2,3,4]\n", + "LIST: Mask_intersect_list for Volume 1 = []\n", + "LIST: Destinations_list for Volume 1 = [6,9,10,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 1 = [6,9,10,13,14]\n", + "LIST: Next_volume_list for Volume 1 = [6,9,10,13,14,15,2,3,4]\n", + " Is_vacuum for Volume 1 = 0\n", + " is_mask_volume for Volume 1 = 0\n", + " is_masked_volume for Volume 1 = 0\n", + " is_exit_volume for Volume 1 = 0\n", + "LIST: mask_list for Volume 1 = []\n", + "LIST: masked_by_list for Volume 1 = []\n", + "LIST: masked_by_mask_index_list for Volume 1 = []\n", + " mask_mode for Volume 1 = 0\n", + "\n", + "List overview for orange_layer_0_layer_vac with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 2 = []\n", + "LIST: Direct_children for Volume 2 = []\n", + "LIST: Intersect_check_list for Volume 2 = []\n", + "LIST: Mask_intersect_list for Volume 2 = []\n", + "LIST: Destinations_list for Volume 2 = [1,3,4,6,9,10,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 2 = [6,9,10,13,14]\n", + "LIST: Next_volume_list for Volume 2 = [1,3,4,6,9,10,13,14,15]\n", + " Is_vacuum for Volume 2 = 1\n", + " is_mask_volume for Volume 2 = 0\n", + " is_masked_volume for Volume 2 = 0\n", + " is_exit_volume for Volume 2 = 0\n", + "LIST: mask_list for Volume 2 = []\n", + "LIST: masked_by_list for Volume 2 = []\n", + "LIST: masked_by_mask_index_list for Volume 2 = []\n", + " mask_mode for Volume 2 = 0\n", + "\n", + "List overview for orange_layer_0_outer_cut_0 with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 3 = []\n", + "LIST: Direct_children for Volume 3 = []\n", + "LIST: Intersect_check_list for Volume 3 = [2,4]\n", + "LIST: Mask_intersect_list for Volume 3 = []\n", + "LIST: Destinations_list for Volume 3 = [1,6]\n", + "LIST: Reduced_destinations_list for Volume 3 = [6]\n", + "LIST: Next_volume_list for Volume 3 = [1,6,2,4]\n", + " Is_vacuum for Volume 3 = 1\n", + " is_mask_volume for Volume 3 = 0\n", + " is_masked_volume for Volume 3 = 0\n", + " is_exit_volume for Volume 3 = 0\n", + "LIST: mask_list for Volume 3 = []\n", + "LIST: masked_by_list for Volume 3 = []\n", + "LIST: masked_by_mask_index_list for Volume 3 = []\n", + " mask_mode for Volume 3 = 0\n", + "\n", + "List overview for orange_layer_0_outer_cut_replace_0 with cylinder shape made of Al\n", + "LIST: Children for Volume 4 = []\n", + "LIST: Direct_children for Volume 4 = []\n", + "LIST: Intersect_check_list for Volume 4 = [2]\n", + "LIST: Mask_intersect_list for Volume 4 = []\n", + "LIST: Destinations_list for Volume 4 = [1,3,6]\n", + "LIST: Reduced_destinations_list for Volume 4 = [6]\n", + "LIST: Next_volume_list for Volume 4 = [1,3,6,2]\n", + " Is_vacuum for Volume 4 = 0\n", + " is_mask_volume for Volume 4 = 0\n", + " is_masked_volume for Volume 4 = 0\n", + " is_exit_volume for Volume 4 = 0\n", + "LIST: mask_list for Volume 4 = []\n", + "LIST: masked_by_list for Volume 4 = []\n", + "LIST: masked_by_mask_index_list for Volume 4 = []\n", + " mask_mode for Volume 4 = 0\n", + "\n", + "List overview for orange_layer_1_layer with cylinder shape made of Al\n", + "LIST: Children for Volume 5 = [1,2,3,4]\n", + "LIST: Direct_children for Volume 5 = [1,2,3,4]\n", + "LIST: Intersect_check_list for Volume 5 = [6]\n", + "LIST: Mask_intersect_list for Volume 5 = []\n", + "LIST: Destinations_list for Volume 5 = [0,7,8,9,10,11,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 5 = [7,11,13]\n", + "LIST: Next_volume_list for Volume 5 = [0,7,8,9,10,11,12,13,14,15,6]\n", + " Is_vacuum for Volume 5 = 0\n", + " is_mask_volume for Volume 5 = 0\n", + " is_masked_volume for Volume 5 = 0\n", + " is_exit_volume for Volume 5 = 0\n", + "LIST: mask_list for Volume 5 = []\n", + "LIST: masked_by_list for Volume 5 = []\n", + "LIST: masked_by_mask_index_list for Volume 5 = []\n", + " mask_mode for Volume 5 = 0\n", + "\n", + "List overview for orange_layer_1_layer_vac with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 6 = [1,2,3,4]\n", + "LIST: Direct_children for Volume 6 = [1,2,3,4]\n", + "LIST: Intersect_check_list for Volume 6 = [1,2,3,4]\n", + "LIST: Mask_intersect_list for Volume 6 = []\n", + "LIST: Destinations_list for Volume 6 = [0,5,7,8,9,10,11,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 6 = [5,7,11,13]\n", + "LIST: Next_volume_list for Volume 6 = [0,5,7,8,9,10,11,12,13,14,15,1,2,3,4]\n", + " Is_vacuum for Volume 6 = 1\n", + " is_mask_volume for Volume 6 = 0\n", + " is_masked_volume for Volume 6 = 0\n", + " is_exit_volume for Volume 6 = 0\n", + "LIST: mask_list for Volume 6 = []\n", + "LIST: masked_by_list for Volume 6 = []\n", + "LIST: masked_by_mask_index_list for Volume 6 = []\n", + " mask_mode for Volume 6 = 0\n", + "\n", + "List overview for orange_layer_2_layer with cylinder shape made of Al\n", + "LIST: Children for Volume 7 = [1,2,3,4,8]\n", + "LIST: Direct_children for Volume 7 = [8]\n", + "LIST: Intersect_check_list for Volume 7 = [5,6,8,9,10]\n", + "LIST: Mask_intersect_list for Volume 7 = []\n", + "LIST: Destinations_list for Volume 7 = [0,11,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 7 = [11,13]\n", + "LIST: Next_volume_list for Volume 7 = [0,11,12,13,14,15,5,6,8,9,10]\n", + " Is_vacuum for Volume 7 = 0\n", + " is_mask_volume for Volume 7 = 0\n", + " is_masked_volume for Volume 7 = 0\n", + " is_exit_volume for Volume 7 = 0\n", + "LIST: mask_list for Volume 7 = []\n", + "LIST: masked_by_list for Volume 7 = []\n", + "LIST: masked_by_mask_index_list for Volume 7 = []\n", + " mask_mode for Volume 7 = 0\n", + "\n", + "List overview for orange_layer_2_layer_vac with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 8 = [1,2,3,4]\n", + "LIST: Direct_children for Volume 8 = [1,2,3,4]\n", + "LIST: Intersect_check_list for Volume 8 = [5,6]\n", + "LIST: Mask_intersect_list for Volume 8 = []\n", + "LIST: Destinations_list for Volume 8 = [7,9,10,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 8 = [7,12,13,14]\n", + "LIST: Next_volume_list for Volume 8 = [7,9,10,12,13,14,15,5,6]\n", + " Is_vacuum for Volume 8 = 1\n", + " is_mask_volume for Volume 8 = 0\n", + " is_masked_volume for Volume 8 = 0\n", + " is_exit_volume for Volume 8 = 0\n", + "LIST: mask_list for Volume 8 = []\n", + "LIST: masked_by_list for Volume 8 = []\n", + "LIST: masked_by_mask_index_list for Volume 8 = []\n", + " mask_mode for Volume 8 = 0\n", + "\n", + "List overview for orange_layer_2_outer_cut_0 with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 9 = [3,4]\n", + "LIST: Direct_children for Volume 9 = [3,4]\n", + "LIST: Intersect_check_list for Volume 9 = [5,6,8,10]\n", + "LIST: Mask_intersect_list for Volume 9 = []\n", + "LIST: Destinations_list for Volume 9 = [7,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 9 = [7,12,13,14]\n", + "LIST: Next_volume_list for Volume 9 = [7,12,13,14,15,5,6,8,10]\n", + " Is_vacuum for Volume 9 = 1\n", + " is_mask_volume for Volume 9 = 0\n", + " is_masked_volume for Volume 9 = 0\n", + " is_exit_volume for Volume 9 = 0\n", + "LIST: mask_list for Volume 9 = []\n", + "LIST: masked_by_list for Volume 9 = []\n", + "LIST: masked_by_mask_index_list for Volume 9 = []\n", + " mask_mode for Volume 9 = 0\n", + "\n", + "List overview for orange_layer_2_outer_cut_replace_0 with cylinder shape made of Al\n", + "LIST: Children for Volume 10 = [3,4]\n", + "LIST: Direct_children for Volume 10 = [3,4]\n", + "LIST: Intersect_check_list for Volume 10 = [5,6,8]\n", + "LIST: Mask_intersect_list for Volume 10 = []\n", + "LIST: Destinations_list for Volume 10 = [7,9,12,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 10 = [7,12,13,14]\n", + "LIST: Next_volume_list for Volume 10 = [7,9,12,13,14,15,5,6,8]\n", + " Is_vacuum for Volume 10 = 0\n", + " is_mask_volume for Volume 10 = 0\n", + " is_masked_volume for Volume 10 = 0\n", + " is_exit_volume for Volume 10 = 0\n", + "LIST: mask_list for Volume 10 = []\n", + "LIST: masked_by_list for Volume 10 = []\n", + "LIST: masked_by_mask_index_list for Volume 10 = []\n", + " mask_mode for Volume 10 = 0\n", + "\n", + "List overview for orange_layer_3_layer with cylinder shape made of Al\n", + "LIST: Children for Volume 11 = [1,2,3,4,8,9,10,12,14,15]\n", + "LIST: Direct_children for Volume 11 = [8,12,14]\n", + "LIST: Intersect_check_list for Volume 11 = [5,6,7,12,13,14]\n", + "LIST: Mask_intersect_list for Volume 11 = []\n", + "LIST: Destinations_list for Volume 11 = [0]\n", + "LIST: Reduced_destinations_list for Volume 11 = []\n", + "LIST: Next_volume_list for Volume 11 = [0,5,6,7,12,13,14]\n", + " Is_vacuum for Volume 11 = 0\n", + " is_mask_volume for Volume 11 = 0\n", + " is_masked_volume for Volume 11 = 0\n", + " is_exit_volume for Volume 11 = 0\n", + "LIST: mask_list for Volume 11 = []\n", + "LIST: masked_by_list for Volume 11 = []\n", + "LIST: masked_by_mask_index_list for Volume 11 = []\n", + " mask_mode for Volume 11 = 0\n", + "\n", + "List overview for orange_layer_3_layer_vac with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 12 = [1,2,3,4,9,10]\n", + "LIST: Direct_children for Volume 12 = [1,2,9,10]\n", + "LIST: Intersect_check_list for Volume 12 = [5,6,7,9,10]\n", + "LIST: Mask_intersect_list for Volume 12 = []\n", + "LIST: Destinations_list for Volume 12 = [11,13,14,15]\n", + "LIST: Reduced_destinations_list for Volume 12 = [11,13]\n", + "LIST: Next_volume_list for Volume 12 = [11,13,14,15,5,6,7,9,10]\n", + " Is_vacuum for Volume 12 = 1\n", + " is_mask_volume for Volume 12 = 0\n", + " is_masked_volume for Volume 12 = 0\n", + " is_exit_volume for Volume 12 = 0\n", + "LIST: mask_list for Volume 12 = []\n", + "LIST: masked_by_list for Volume 12 = []\n", + "LIST: masked_by_mask_index_list for Volume 12 = []\n", + " mask_mode for Volume 12 = 0\n", + "\n", + "List overview for orange_layer_3_outer_cut_0 with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 13 = [3,4,15]\n", + "LIST: Direct_children for Volume 13 = [15]\n", + "LIST: Intersect_check_list for Volume 13 = [5,6,7,12,14]\n", + "LIST: Mask_intersect_list for Volume 13 = []\n", + "LIST: Destinations_list for Volume 13 = [0,11]\n", + "LIST: Reduced_destinations_list for Volume 13 = [11]\n", + "LIST: Next_volume_list for Volume 13 = [0,11,5,6,7,12,14]\n", + " Is_vacuum for Volume 13 = 1\n", + " is_mask_volume for Volume 13 = 0\n", + " is_masked_volume for Volume 13 = 0\n", + " is_exit_volume for Volume 13 = 0\n", + "LIST: mask_list for Volume 13 = []\n", + "LIST: masked_by_list for Volume 13 = []\n", + "LIST: masked_by_mask_index_list for Volume 13 = []\n", + " mask_mode for Volume 13 = 0\n", + "\n", + "List overview for orange_layer_3_outer_cut_replace_0 with cylinder shape made of Al\n", + "LIST: Children for Volume 14 = [3,4,15]\n", + "LIST: Direct_children for Volume 14 = [15]\n", + "LIST: Intersect_check_list for Volume 14 = [5,6,7,12,15]\n", + "LIST: Mask_intersect_list for Volume 14 = []\n", + "LIST: Destinations_list for Volume 14 = [11,13]\n", + "LIST: Reduced_destinations_list for Volume 14 = [11,13]\n", + "LIST: Next_volume_list for Volume 14 = [11,13,5,6,7,12,15]\n", + " Is_vacuum for Volume 14 = 0\n", + " is_mask_volume for Volume 14 = 0\n", + " is_masked_volume for Volume 14 = 0\n", + " is_exit_volume for Volume 14 = 0\n", + "LIST: mask_list for Volume 14 = []\n", + "LIST: masked_by_list for Volume 14 = []\n", + "LIST: masked_by_mask_index_list for Volume 14 = []\n", + " mask_mode for Volume 14 = 0\n", + "\n", + "List overview for orange_layer_3_inner_cut_0 with cylinder shape made of Vacuum\n", + "LIST: Children for Volume 15 = [3,4]\n", + "LIST: Direct_children for Volume 15 = [3,4]\n", + "LIST: Intersect_check_list for Volume 15 = [5,6,7,12]\n", + "LIST: Mask_intersect_list for Volume 15 = []\n", + "LIST: Destinations_list for Volume 15 = [14]\n", + "LIST: Reduced_destinations_list for Volume 15 = [14]\n", + "LIST: Next_volume_list for Volume 15 = [14,5,6,7,12]\n", + " Is_vacuum for Volume 15 = 1\n", + " is_mask_volume for Volume 15 = 0\n", + " is_masked_volume for Volume 15 = 0\n", + " is_exit_volume for Volume 15 = 0\n", + "LIST: mask_list for Volume 15 = []\n", + "LIST: masked_by_list for Volume 15 = []\n", + "LIST: masked_by_mask_index_list for Volume 15 = []\n", + " mask_mode for Volume 15 = 0\n", + "\n", + "Union_master component orange_master initialized sucessfully\n", + "Detector: orange_logger_space_zx_I=3.67974e-07 orange_logger_space_zx_ERR=1.525e-10 orange_logger_space_zx_N=1.74413e+07 \"orange_space_zx.dat\"\n", + "Detector: orange_logger_space_zy_I=3.67974e-07 orange_logger_space_zy_ERR=1.525e-10 orange_logger_space_zy_N=1.74413e+07 \"orange_space_zy.dat\"\n", + "Detector: orange_logger_space_xy_I=3.67974e-07 orange_logger_space_xy_ERR=1.525e-10 orange_logger_space_xy_N=1.74413e+07 \"orange_space_xy.dat\"\n", + "Detector: orange_logger_space_zy_close_I=1.79485e-07 orange_logger_space_zy_close_ERR=8.2902e-11 orange_logger_space_zy_close_N=8.34055e+06 \"orange_space_zy_close.dat_0\"\n", + "Detector: orange_logger_time_I=3.67853e-07 orange_logger_time_ERR=1.5246e-10 orange_logger_time_N=1.72375e+07 \"NULL.dat\"\n", + "Detector: orange_logger_space_zy_time_I=1.80317e-07 orange_logger_space_zy_time_ERR=8.27806e-11 orange_logger_space_zy_time_N=8.90244e+06 \"orange_logger_space_zy_time.dat_0\"\n", + "Detector: orange_logger_space_zy_time_I=1.7243e-07 orange_logger_space_zy_time_ERR=1.24229e-10 orange_logger_space_zy_time_N=4.98917e+06 \"orange_logger_space_zy_time.dat_1\"\n", + "Detector: orange_logger_space_zy_time_I=9.97519e-09 orange_logger_space_zy_time_ERR=2.08364e-11 orange_logger_space_zy_time_N=2.08282e+06 \"orange_logger_space_zy_time.dat_2\"\n", + "Detector: orange_logger_space_zy_time_I=4.40471e-09 orange_logger_space_zy_time_ERR=2.00216e-11 orange_logger_space_zy_time_N=928729 \"orange_logger_space_zy_time.dat_3\"\n", + "Detector: orange_logger_space_zy_time_I=7.25431e-10 orange_logger_space_zy_time_ERR=1.11136e-11 orange_logger_space_zy_time_N=334335 \"orange_logger_space_zy_time.dat_4\"\n", + "\n" + ] + } + ], "source": [ "data = instrument.run_full_instrument(foldername=\"test_cryostat\", increment_folder_name=True, ncount=1E7)" ] @@ -164,10 +829,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "mobile-strike", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a006fc39067e48d693f5b9d2a0065b29", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "HBox(children=(Output(layout=Layout(width='75%')), VBox(children=(Label(value='Choose monitor'), Dropdown(layo…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py:3099: UserWarning: Attempting to set identical left==right results\n", + "in singular transformations; automatically expanding.\n", + "left=1.0, right=1.0\n", + " self.set_xlim(upper, lower, auto=None)\n" + ] + } + ], "source": [ "%matplotlib widget\n", "plotter.interface(data)" From fb7bc94d76064f27f61b7aea7dcd911be245e05d Mon Sep 17 00:00:00 2001 From: Mads Bertelsen Date: Mon, 7 Jun 2021 11:24:48 +0200 Subject: [PATCH 3/3] Ensure cryostat notebook has no data in cells. --- examples/cryostat.ipynb | 714 +--------------------------------------- 1 file changed, 12 insertions(+), 702 deletions(-) diff --git a/examples/cryostat.ipynb b/examples/cryostat.ipynb index cfc1de16..bc743bc1 100644 --- a/examples/cryostat.ipynb +++ b/examples/cryostat.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "brown-despite", "metadata": {}, "outputs": [], @@ -23,44 +23,17 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "composed-custody", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The following components are found in the work_directory / input_path:\n", - " Union_sphere.comp\n", - " Union_box.comp\n", - " Single_crystal_process.comp\n", - " Union_logger_2D_kf.comp\n", - " Template_process.comp\n", - " Union_conditional_standard.comp\n", - " Union_logger_2D_space.comp\n", - " Union_conditional_PSD.comp\n", - " Union_master.comp\n", - " Union_logger_2D_kf_time.comp\n", - " Union_cylinder.comp\n", - " Powder_process.comp\n", - " Union_make_material.comp\n", - " Incoherent_process.comp\n", - " Union_logger_1D.comp\n", - " Union_logger_3D_space.comp\n", - " Union_logger_2DQ.comp\n", - " Union_logger_2D_space_time.comp\n", - "These definitions will be used instead of the installed versions.\n" - ] - } - ], + "outputs": [], "source": [ "instrument = instr.McStas_instr(\"cryostat_test\")" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "secret-convert", "metadata": {}, "outputs": [], @@ -88,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "welcome-cathedral", "metadata": {}, "outputs": [], @@ -130,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "dutch-prevention", "metadata": {}, "outputs": [], @@ -151,54 +124,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "noticed-third", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Help on method add_animation in module mcstasscript.tools.cryostat:\n", - "\n", - "add_animation(t_min=0, t_max=0.1, n_frames=10, d1='z', n1=300, d2='y', n2=300) method of mcstasscript.tools.cryostat.Cryostat instance\n", - " Adds 2D_space_time logger that records the information necessary for animation\n", - " \n", - " Adds a 2D_space_time logger that records the requested number of frames, n_frames.\n", - " The time span of both is from t_min to t_max. The default orientation is in the zy\n", - " plane, but this can be chosen along with the desired resolution.\n", - " Errors can happen with too many empty frames, so it is recommended to set\n", - " t_min close to the first scattering time.\n", - " Select the appropriate animation data from simulation output and use\n", - " plotter.make_animation with a filename to save the animation as a gif.\n", - " \n", - " Parameters\n", - " ----------\n", - " \n", - " t_min : float\n", - " Lowest time recorded in [s]\n", - " \n", - " t_max : float\n", - " Highest time recorded in [s]\n", - " \n", - " n_frames : int\n", - " Number of frames in space 2D time logger\n", - " \n", - " d1 : str\n", - " First direction of space 2D time logger, \"x\", \"y\" or \"z\"\n", - " \n", - " n1 : int\n", - " Number of bins in first direction\n", - " \n", - " d2 : str\n", - " Second direction of space 2D time logger, \"x\", \"y\" or \"z\"\n", - " \n", - " n2 : int\n", - " Number of bins in second direction\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "help(orange_cryostat.add_animation)" ] @@ -214,606 +143,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "paperback-palmer", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO: Using directory: \"/Users/madsbertelsen/PaNOSC/McStasScript/github/McStasScript/examples/test_cryostat_7\"\n", - "INFO: Regenerating c-file: cryostat_test.c\n", - "CFLAGS= -I@MCCODE_LIB@/share/\n", - "INFO: Recompiling: ./cryostat_test.out\n", - "In file included from Incoherent_process.comp:65:0:\n", - "./Union_functions.c: In function ‘write_tagging_tree’:\n", - "./Union_functions.c:1604:82: warning: passing argument 4 of ‘qsort’ from incompatible pointer type [enabled by default]\n", - " qsort(total_history.saved_histories,total_history.used_elements,sizeof (struct saved_history_struct), Sample_compare_history_intensities);\n", - " ^\n", - "In file included from mccode-r.h:41:0:\n", - "/usr/include/stdlib.h:165:7: note: expected ‘int (*)(const void *, const void *)’ but argument is of type ‘int (*)(const struct saved_history_struct *, const struct saved_history_struct *)’\n", - " void qsort(void *__base, size_t __nel, size_t __width,\n", - " ^\n", - "In file included from Incoherent_process.comp:65:0:\n", - "./Union_functions.c:1608:3: warning: passing argument 1 of ‘printf_history’ from incompatible pointer type [enabled by default]\n", - " MPI_MASTER(\n", - " ^\n", - "./Union_functions.c:1434:6: note: expected ‘struct dynamic_history_list *’ but argument is of type ‘struct saved_history_struct *’\n", - " void printf_history(struct dynamic_history_list *history) {\n", - " ^\n", - "INFO: ===\n", - "INFO: Placing instr file copy cryostat_test.instr in dataset /Users/madsbertelsen/PaNOSC/McStasScript/github/McStasScript/examples/test_cryostat_7\n", - "\n", - " Instrument parameters for cryostat_test (cryostat_test.instr)\n", - "Opening input file '/Applications/McStas-2.5.app/Contents/Resources/mcstas/2.5/tools/Python/mcrun/../mccodelib/../../../data/Al.laz' (Table_Read_Offset)\n", - "Table from file 'Al.laz' (block 1) is 26 x 18 (x=1:8), constant step. interpolation: linear\n", - " '# TITLE *Aluminum-Al-[FM3-M] Miller, H.P.jr.;DuMond, J.W.M.[1942] at 298 K; ...'\n", - "PowderN: Al_pow: Reading 26 rows from Al.laz\n", - "PowderN: Al_pow: Read 26 reflections from file 'Al.laz'\n", - "PowderN: Al_pow: Vc=66.4 [Angs] sigma_abs=0.924 [barn] sigma_inc=0.0328 [barn] reflections=Al.laz\n", - "Allocating 3D arrays \n", - "Allocating 3D arrays \n", - "---------------------------------------------------------------------\n", - "global_process_list.num_elements: 2\n", - "name of process [0]: Al_inc \n", - "component index [0]: 3 \n", - "name of process [1]: Al_pow \n", - "component index [1]: 4 \n", - "---------------------------------------------------------------------\n", - "global_material_list.num_elements: 1\n", - "name of material [0]: Al \n", - "component index [0]: 5 \n", - "my_absoprtion [0]: 1.391566 \n", - "number of processes [0]: 2 \n", - "---------------------------------------------------------------------\n", - "global_geometry_list.num_elements: 1\n", - "\n", - "name of geometry [0]: orange_layer_0_layer \n", - "component index [0]: 6 \n", - "Volume.name [0]: orange_layer_0_layer \n", - "Volume.p_physics.is_vacuum [0]: 0 \n", - "Volume.p_physics.my_absorption [0]: 1.391566 \n", - "Volume.p_physics.number of processes [0]: 2 \n", - "Volume.geometry.shape [0]: cylinder \n", - "Volume.geometry.center.x [0]: 0.000000 \n", - "Volume.geometry.center.y [0]: 0.055500 \n", - "Volume.geometry.center.z [0]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [0]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [0]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [0]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [0]: 0.037500 \n", - "Volume.geometry.geometry_parameters.height [0]: 0.287000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [0]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [1]: orange_layer_0_layer_vac \n", - "component index [1]: 7 \n", - "Volume.name [1]: orange_layer_0_layer_vac \n", - "Volume.p_physics.is_vacuum [1]: 1 \n", - "Volume.p_physics.my_absorption [1]: 0.000000 \n", - "Volume.p_physics.number of processes [1]: 0 \n", - "Volume.geometry.shape [1]: cylinder \n", - "Volume.geometry.center.x [1]: 0.000000 \n", - "Volume.geometry.center.y [1]: 0.058500 \n", - "Volume.geometry.center.z [1]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [1]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [1]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [1]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [1]: 0.035000 \n", - "Volume.geometry.geometry_parameters.height [1]: 0.283000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [1]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [2]: orange_layer_0_outer_cut_0 \n", - "component index [2]: 8 \n", - "Volume.name [2]: orange_layer_0_outer_cut_0 \n", - "Volume.p_physics.is_vacuum [2]: 1 \n", - "Volume.p_physics.my_absorption [2]: 0.000000 \n", - "Volume.p_physics.number of processes [2]: 0 \n", - "Volume.geometry.shape [2]: cylinder \n", - "Volume.geometry.center.x [2]: 0.000000 \n", - "Volume.geometry.center.y [2]: -0.021890 \n", - "Volume.geometry.center.z [2]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [2]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [2]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [2]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [2]: 0.037501 \n", - "Volume.geometry.geometry_parameters.height [2]: 0.132621 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [2]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [3]: orange_layer_0_outer_cut_replace_0 \n", - "component index [3]: 9 \n", - "Volume.name [3]: orange_layer_0_outer_cut_replace_0 \n", - "Volume.p_physics.is_vacuum [3]: 0 \n", - "Volume.p_physics.my_absorption [3]: 1.391566 \n", - "Volume.p_physics.number of processes [3]: 2 \n", - "Volume.geometry.shape [3]: cylinder \n", - "Volume.geometry.center.x [3]: 0.000000 \n", - "Volume.geometry.center.y [3]: -0.021890 \n", - "Volume.geometry.center.z [3]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [3]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [3]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [3]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [3]: 0.036500 \n", - "Volume.geometry.geometry_parameters.height [3]: 0.132625 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [3]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [4]: orange_layer_1_layer \n", - "component index [4]: 10 \n", - "Volume.name [4]: orange_layer_1_layer \n", - "Volume.p_physics.is_vacuum [4]: 0 \n", - "Volume.p_physics.my_absorption [4]: 1.391566 \n", - "Volume.p_physics.number of processes [4]: 2 \n", - "Volume.geometry.shape [4]: cylinder \n", - "Volume.geometry.center.x [4]: 0.000000 \n", - "Volume.geometry.center.y [4]: 0.073500 \n", - "Volume.geometry.center.z [4]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [4]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [4]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [4]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [4]: 0.040500 \n", - "Volume.geometry.geometry_parameters.height [4]: 0.331000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [4]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [5]: orange_layer_1_layer_vac \n", - "component index [5]: 11 \n", - "Volume.name [5]: orange_layer_1_layer_vac \n", - "Volume.p_physics.is_vacuum [5]: 1 \n", - "Volume.p_physics.my_absorption [5]: 0.000000 \n", - "Volume.p_physics.number of processes [5]: 0 \n", - "Volume.geometry.shape [5]: cylinder \n", - "Volume.geometry.center.x [5]: 0.000000 \n", - "Volume.geometry.center.y [5]: 0.075000 \n", - "Volume.geometry.center.z [5]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [5]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [5]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [5]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [5]: 0.040000 \n", - "Volume.geometry.geometry_parameters.height [5]: 0.330000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [5]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [6]: orange_layer_2_layer \n", - "component index [6]: 12 \n", - "Volume.name [6]: orange_layer_2_layer \n", - "Volume.p_physics.is_vacuum [6]: 0 \n", - "Volume.p_physics.my_absorption [6]: 1.391566 \n", - "Volume.p_physics.number of processes [6]: 2 \n", - "Volume.geometry.shape [6]: cylinder \n", - "Volume.geometry.center.x [6]: 0.000000 \n", - "Volume.geometry.center.y [6]: 0.067500 \n", - "Volume.geometry.center.z [6]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [6]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [6]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [6]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [6]: 0.049750 \n", - "Volume.geometry.geometry_parameters.height [6]: 0.333000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [6]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [7]: orange_layer_2_layer_vac \n", - "component index [7]: 13 \n", - "Volume.name [7]: orange_layer_2_layer_vac \n", - "Volume.p_physics.is_vacuum [7]: 1 \n", - "Volume.p_physics.my_absorption [7]: 0.000000 \n", - "Volume.p_physics.number of processes [7]: 0 \n", - "Volume.geometry.shape [7]: cylinder \n", - "Volume.geometry.center.x [7]: 0.000000 \n", - "Volume.geometry.center.y [7]: 0.066000 \n", - "Volume.geometry.center.z [7]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [7]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [7]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [7]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [7]: 0.047500 \n", - "Volume.geometry.geometry_parameters.height [7]: 0.318000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [7]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [8]: orange_layer_2_outer_cut_0 \n", - "component index [8]: 14 \n", - "Volume.name [8]: orange_layer_2_outer_cut_0 \n", - "Volume.p_physics.is_vacuum [8]: 1 \n", - "Volume.p_physics.my_absorption [8]: 0.000000 \n", - "Volume.p_physics.number of processes [8]: 0 \n", - "Volume.geometry.shape [8]: cylinder \n", - "Volume.geometry.center.x [8]: 0.000000 \n", - "Volume.geometry.center.y [8]: -0.024000 \n", - "Volume.geometry.center.z [8]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [8]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [8]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [8]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [8]: 0.049751 \n", - "Volume.geometry.geometry_parameters.height [8]: 0.152001 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [8]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [9]: orange_layer_2_outer_cut_replace_0 \n", - "component index [9]: 15 \n", - "Volume.name [9]: orange_layer_2_outer_cut_replace_0 \n", - "Volume.p_physics.is_vacuum [9]: 0 \n", - "Volume.p_physics.my_absorption [9]: 1.391566 \n", - "Volume.p_physics.number of processes [9]: 2 \n", - "Volume.geometry.shape [9]: cylinder \n", - "Volume.geometry.center.x [9]: 0.000000 \n", - "Volume.geometry.center.y [9]: -0.024000 \n", - "Volume.geometry.center.z [9]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [9]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [9]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [9]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [9]: 0.048500 \n", - "Volume.geometry.geometry_parameters.height [9]: 0.152005 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [9]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [10]: orange_layer_3_layer \n", - "component index [10]: 16 \n", - "Volume.name [10]: orange_layer_3_layer \n", - "Volume.p_physics.is_vacuum [10]: 0 \n", - "Volume.p_physics.my_absorption [10]: 1.391566 \n", - "Volume.p_physics.number of processes [10]: 2 \n", - "Volume.geometry.shape [10]: cylinder \n", - "Volume.geometry.center.x [10]: 0.000000 \n", - "Volume.geometry.center.y [10]: 0.053500 \n", - "Volume.geometry.center.z [10]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [10]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [10]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [10]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [10]: 0.063500 \n", - "Volume.geometry.geometry_parameters.height [10]: 0.347000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [10]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [11]: orange_layer_3_layer_vac \n", - "component index [11]: 17 \n", - "Volume.name [11]: orange_layer_3_layer_vac \n", - "Volume.p_physics.is_vacuum [11]: 1 \n", - "Volume.p_physics.my_absorption [11]: 0.000000 \n", - "Volume.p_physics.number of processes [11]: 0 \n", - "Volume.geometry.shape [11]: cylinder \n", - "Volume.geometry.center.x [11]: 0.000000 \n", - "Volume.geometry.center.y [11]: 0.048000 \n", - "Volume.geometry.center.z [11]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [11]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [11]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [11]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [11]: 0.060000 \n", - "Volume.geometry.geometry_parameters.height [11]: 0.314000 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [11]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [12]: orange_layer_3_outer_cut_0 \n", - "component index [12]: 18 \n", - "Volume.name [12]: orange_layer_3_outer_cut_0 \n", - "Volume.p_physics.is_vacuum [12]: 1 \n", - "Volume.p_physics.my_absorption [12]: 0.000000 \n", - "Volume.p_physics.number of processes [12]: 0 \n", - "Volume.geometry.shape [12]: cylinder \n", - "Volume.geometry.center.x [12]: 0.000000 \n", - "Volume.geometry.center.y [12]: -0.018920 \n", - "Volume.geometry.center.z [12]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [12]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [12]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [12]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [12]: 0.063501 \n", - "Volume.geometry.geometry_parameters.height [12]: 0.149241 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [12]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [13]: orange_layer_3_outer_cut_replace_0 \n", - "component index [13]: 19 \n", - "Volume.name [13]: orange_layer_3_outer_cut_replace_0 \n", - "Volume.p_physics.is_vacuum [13]: 0 \n", - "Volume.p_physics.my_absorption [13]: 1.391566 \n", - "Volume.p_physics.number of processes [13]: 2 \n", - "Volume.geometry.shape [13]: cylinder \n", - "Volume.geometry.center.x [13]: 0.000000 \n", - "Volume.geometry.center.y [13]: -0.018920 \n", - "Volume.geometry.center.z [13]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [13]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [13]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [13]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [13]: 0.062500 \n", - "Volume.geometry.geometry_parameters.height [13]: 0.149245 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [13]: [0.000000 0.000000 1.000000] \n", - "\n", - "name of geometry [14]: orange_layer_3_inner_cut_0 \n", - "component index [14]: 20 \n", - "Volume.name [14]: orange_layer_3_inner_cut_0 \n", - "Volume.p_physics.is_vacuum [14]: 1 \n", - "Volume.p_physics.my_absorption [14]: 0.000000 \n", - "Volume.p_physics.number of processes [14]: 0 \n", - "Volume.geometry.shape [14]: cylinder \n", - "Volume.geometry.center.x [14]: 0.000000 \n", - "Volume.geometry.center.y [14]: -0.018920 \n", - "Volume.geometry.center.z [14]: 2.000000 \n", - "Volume.geometry.rotation_matrix[0] [14]: [1.000000 0.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[1] [14]: [0.000000 1.000000 0.000000] \n", - "Volume.geometry.rotation_matrix[2] [14]: [0.000000 0.000000 1.000000] \n", - "Volume.geometry.geometry_parameters.cyl_radius [14]: 0.061000 \n", - "Volume.geometry.geometry_parameters.height [14]: 0.149240 \n", - "Volume.geometry.focus_data_array.elements[0].Aim [14]: [0.000000 0.000000 1.000000] \n", - "---------------------------------------------------------------------\n", - "number_of_volumes = 16\n", - "number_of_masks = 0\n", - "number_of_masked_volumes = 0\n", - "\n", - " ---- Overview of the lists generated for each volume ---- \n", - "List overview for surrounding vacuum\n", - "LIST: Children for Volume 0 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]\n", - "LIST: Direct_children for Volume 0 = [5,6,7,11,13]\n", - "LIST: Intersect_check_list for Volume 0 = [5,6,7,11,13]\n", - "LIST: Mask_intersect_list for Volume 0 = []\n", - "LIST: Destinations_list for Volume 0 = []\n", - "LIST: Reduced_destinations_list for Volume 0 = []\n", - "LIST: Next_volume_list for Volume 0 = [5,6,7,11,13]\n", - "LIST: mask_list for Volume 0 = []\n", - "LIST: masked_by_list for Volume 0 = []\n", - "LIST: masked_by_mask_index_list for Volume 0 = []\n", - " mask_mode for Volume 0 = 0\n", - "\n", - "List overview for orange_layer_0_layer with cylinder shape made of Al\n", - "LIST: Children for Volume 1 = []\n", - "LIST: Direct_children for Volume 1 = []\n", - "LIST: Intersect_check_list for Volume 1 = [2,3,4]\n", - "LIST: Mask_intersect_list for Volume 1 = []\n", - "LIST: Destinations_list for Volume 1 = [6,9,10,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 1 = [6,9,10,13,14]\n", - "LIST: Next_volume_list for Volume 1 = [6,9,10,13,14,15,2,3,4]\n", - " Is_vacuum for Volume 1 = 0\n", - " is_mask_volume for Volume 1 = 0\n", - " is_masked_volume for Volume 1 = 0\n", - " is_exit_volume for Volume 1 = 0\n", - "LIST: mask_list for Volume 1 = []\n", - "LIST: masked_by_list for Volume 1 = []\n", - "LIST: masked_by_mask_index_list for Volume 1 = []\n", - " mask_mode for Volume 1 = 0\n", - "\n", - "List overview for orange_layer_0_layer_vac with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 2 = []\n", - "LIST: Direct_children for Volume 2 = []\n", - "LIST: Intersect_check_list for Volume 2 = []\n", - "LIST: Mask_intersect_list for Volume 2 = []\n", - "LIST: Destinations_list for Volume 2 = [1,3,4,6,9,10,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 2 = [6,9,10,13,14]\n", - "LIST: Next_volume_list for Volume 2 = [1,3,4,6,9,10,13,14,15]\n", - " Is_vacuum for Volume 2 = 1\n", - " is_mask_volume for Volume 2 = 0\n", - " is_masked_volume for Volume 2 = 0\n", - " is_exit_volume for Volume 2 = 0\n", - "LIST: mask_list for Volume 2 = []\n", - "LIST: masked_by_list for Volume 2 = []\n", - "LIST: masked_by_mask_index_list for Volume 2 = []\n", - " mask_mode for Volume 2 = 0\n", - "\n", - "List overview for orange_layer_0_outer_cut_0 with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 3 = []\n", - "LIST: Direct_children for Volume 3 = []\n", - "LIST: Intersect_check_list for Volume 3 = [2,4]\n", - "LIST: Mask_intersect_list for Volume 3 = []\n", - "LIST: Destinations_list for Volume 3 = [1,6]\n", - "LIST: Reduced_destinations_list for Volume 3 = [6]\n", - "LIST: Next_volume_list for Volume 3 = [1,6,2,4]\n", - " Is_vacuum for Volume 3 = 1\n", - " is_mask_volume for Volume 3 = 0\n", - " is_masked_volume for Volume 3 = 0\n", - " is_exit_volume for Volume 3 = 0\n", - "LIST: mask_list for Volume 3 = []\n", - "LIST: masked_by_list for Volume 3 = []\n", - "LIST: masked_by_mask_index_list for Volume 3 = []\n", - " mask_mode for Volume 3 = 0\n", - "\n", - "List overview for orange_layer_0_outer_cut_replace_0 with cylinder shape made of Al\n", - "LIST: Children for Volume 4 = []\n", - "LIST: Direct_children for Volume 4 = []\n", - "LIST: Intersect_check_list for Volume 4 = [2]\n", - "LIST: Mask_intersect_list for Volume 4 = []\n", - "LIST: Destinations_list for Volume 4 = [1,3,6]\n", - "LIST: Reduced_destinations_list for Volume 4 = [6]\n", - "LIST: Next_volume_list for Volume 4 = [1,3,6,2]\n", - " Is_vacuum for Volume 4 = 0\n", - " is_mask_volume for Volume 4 = 0\n", - " is_masked_volume for Volume 4 = 0\n", - " is_exit_volume for Volume 4 = 0\n", - "LIST: mask_list for Volume 4 = []\n", - "LIST: masked_by_list for Volume 4 = []\n", - "LIST: masked_by_mask_index_list for Volume 4 = []\n", - " mask_mode for Volume 4 = 0\n", - "\n", - "List overview for orange_layer_1_layer with cylinder shape made of Al\n", - "LIST: Children for Volume 5 = [1,2,3,4]\n", - "LIST: Direct_children for Volume 5 = [1,2,3,4]\n", - "LIST: Intersect_check_list for Volume 5 = [6]\n", - "LIST: Mask_intersect_list for Volume 5 = []\n", - "LIST: Destinations_list for Volume 5 = [0,7,8,9,10,11,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 5 = [7,11,13]\n", - "LIST: Next_volume_list for Volume 5 = [0,7,8,9,10,11,12,13,14,15,6]\n", - " Is_vacuum for Volume 5 = 0\n", - " is_mask_volume for Volume 5 = 0\n", - " is_masked_volume for Volume 5 = 0\n", - " is_exit_volume for Volume 5 = 0\n", - "LIST: mask_list for Volume 5 = []\n", - "LIST: masked_by_list for Volume 5 = []\n", - "LIST: masked_by_mask_index_list for Volume 5 = []\n", - " mask_mode for Volume 5 = 0\n", - "\n", - "List overview for orange_layer_1_layer_vac with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 6 = [1,2,3,4]\n", - "LIST: Direct_children for Volume 6 = [1,2,3,4]\n", - "LIST: Intersect_check_list for Volume 6 = [1,2,3,4]\n", - "LIST: Mask_intersect_list for Volume 6 = []\n", - "LIST: Destinations_list for Volume 6 = [0,5,7,8,9,10,11,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 6 = [5,7,11,13]\n", - "LIST: Next_volume_list for Volume 6 = [0,5,7,8,9,10,11,12,13,14,15,1,2,3,4]\n", - " Is_vacuum for Volume 6 = 1\n", - " is_mask_volume for Volume 6 = 0\n", - " is_masked_volume for Volume 6 = 0\n", - " is_exit_volume for Volume 6 = 0\n", - "LIST: mask_list for Volume 6 = []\n", - "LIST: masked_by_list for Volume 6 = []\n", - "LIST: masked_by_mask_index_list for Volume 6 = []\n", - " mask_mode for Volume 6 = 0\n", - "\n", - "List overview for orange_layer_2_layer with cylinder shape made of Al\n", - "LIST: Children for Volume 7 = [1,2,3,4,8]\n", - "LIST: Direct_children for Volume 7 = [8]\n", - "LIST: Intersect_check_list for Volume 7 = [5,6,8,9,10]\n", - "LIST: Mask_intersect_list for Volume 7 = []\n", - "LIST: Destinations_list for Volume 7 = [0,11,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 7 = [11,13]\n", - "LIST: Next_volume_list for Volume 7 = [0,11,12,13,14,15,5,6,8,9,10]\n", - " Is_vacuum for Volume 7 = 0\n", - " is_mask_volume for Volume 7 = 0\n", - " is_masked_volume for Volume 7 = 0\n", - " is_exit_volume for Volume 7 = 0\n", - "LIST: mask_list for Volume 7 = []\n", - "LIST: masked_by_list for Volume 7 = []\n", - "LIST: masked_by_mask_index_list for Volume 7 = []\n", - " mask_mode for Volume 7 = 0\n", - "\n", - "List overview for orange_layer_2_layer_vac with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 8 = [1,2,3,4]\n", - "LIST: Direct_children for Volume 8 = [1,2,3,4]\n", - "LIST: Intersect_check_list for Volume 8 = [5,6]\n", - "LIST: Mask_intersect_list for Volume 8 = []\n", - "LIST: Destinations_list for Volume 8 = [7,9,10,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 8 = [7,12,13,14]\n", - "LIST: Next_volume_list for Volume 8 = [7,9,10,12,13,14,15,5,6]\n", - " Is_vacuum for Volume 8 = 1\n", - " is_mask_volume for Volume 8 = 0\n", - " is_masked_volume for Volume 8 = 0\n", - " is_exit_volume for Volume 8 = 0\n", - "LIST: mask_list for Volume 8 = []\n", - "LIST: masked_by_list for Volume 8 = []\n", - "LIST: masked_by_mask_index_list for Volume 8 = []\n", - " mask_mode for Volume 8 = 0\n", - "\n", - "List overview for orange_layer_2_outer_cut_0 with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 9 = [3,4]\n", - "LIST: Direct_children for Volume 9 = [3,4]\n", - "LIST: Intersect_check_list for Volume 9 = [5,6,8,10]\n", - "LIST: Mask_intersect_list for Volume 9 = []\n", - "LIST: Destinations_list for Volume 9 = [7,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 9 = [7,12,13,14]\n", - "LIST: Next_volume_list for Volume 9 = [7,12,13,14,15,5,6,8,10]\n", - " Is_vacuum for Volume 9 = 1\n", - " is_mask_volume for Volume 9 = 0\n", - " is_masked_volume for Volume 9 = 0\n", - " is_exit_volume for Volume 9 = 0\n", - "LIST: mask_list for Volume 9 = []\n", - "LIST: masked_by_list for Volume 9 = []\n", - "LIST: masked_by_mask_index_list for Volume 9 = []\n", - " mask_mode for Volume 9 = 0\n", - "\n", - "List overview for orange_layer_2_outer_cut_replace_0 with cylinder shape made of Al\n", - "LIST: Children for Volume 10 = [3,4]\n", - "LIST: Direct_children for Volume 10 = [3,4]\n", - "LIST: Intersect_check_list for Volume 10 = [5,6,8]\n", - "LIST: Mask_intersect_list for Volume 10 = []\n", - "LIST: Destinations_list for Volume 10 = [7,9,12,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 10 = [7,12,13,14]\n", - "LIST: Next_volume_list for Volume 10 = [7,9,12,13,14,15,5,6,8]\n", - " Is_vacuum for Volume 10 = 0\n", - " is_mask_volume for Volume 10 = 0\n", - " is_masked_volume for Volume 10 = 0\n", - " is_exit_volume for Volume 10 = 0\n", - "LIST: mask_list for Volume 10 = []\n", - "LIST: masked_by_list for Volume 10 = []\n", - "LIST: masked_by_mask_index_list for Volume 10 = []\n", - " mask_mode for Volume 10 = 0\n", - "\n", - "List overview for orange_layer_3_layer with cylinder shape made of Al\n", - "LIST: Children for Volume 11 = [1,2,3,4,8,9,10,12,14,15]\n", - "LIST: Direct_children for Volume 11 = [8,12,14]\n", - "LIST: Intersect_check_list for Volume 11 = [5,6,7,12,13,14]\n", - "LIST: Mask_intersect_list for Volume 11 = []\n", - "LIST: Destinations_list for Volume 11 = [0]\n", - "LIST: Reduced_destinations_list for Volume 11 = []\n", - "LIST: Next_volume_list for Volume 11 = [0,5,6,7,12,13,14]\n", - " Is_vacuum for Volume 11 = 0\n", - " is_mask_volume for Volume 11 = 0\n", - " is_masked_volume for Volume 11 = 0\n", - " is_exit_volume for Volume 11 = 0\n", - "LIST: mask_list for Volume 11 = []\n", - "LIST: masked_by_list for Volume 11 = []\n", - "LIST: masked_by_mask_index_list for Volume 11 = []\n", - " mask_mode for Volume 11 = 0\n", - "\n", - "List overview for orange_layer_3_layer_vac with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 12 = [1,2,3,4,9,10]\n", - "LIST: Direct_children for Volume 12 = [1,2,9,10]\n", - "LIST: Intersect_check_list for Volume 12 = [5,6,7,9,10]\n", - "LIST: Mask_intersect_list for Volume 12 = []\n", - "LIST: Destinations_list for Volume 12 = [11,13,14,15]\n", - "LIST: Reduced_destinations_list for Volume 12 = [11,13]\n", - "LIST: Next_volume_list for Volume 12 = [11,13,14,15,5,6,7,9,10]\n", - " Is_vacuum for Volume 12 = 1\n", - " is_mask_volume for Volume 12 = 0\n", - " is_masked_volume for Volume 12 = 0\n", - " is_exit_volume for Volume 12 = 0\n", - "LIST: mask_list for Volume 12 = []\n", - "LIST: masked_by_list for Volume 12 = []\n", - "LIST: masked_by_mask_index_list for Volume 12 = []\n", - " mask_mode for Volume 12 = 0\n", - "\n", - "List overview for orange_layer_3_outer_cut_0 with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 13 = [3,4,15]\n", - "LIST: Direct_children for Volume 13 = [15]\n", - "LIST: Intersect_check_list for Volume 13 = [5,6,7,12,14]\n", - "LIST: Mask_intersect_list for Volume 13 = []\n", - "LIST: Destinations_list for Volume 13 = [0,11]\n", - "LIST: Reduced_destinations_list for Volume 13 = [11]\n", - "LIST: Next_volume_list for Volume 13 = [0,11,5,6,7,12,14]\n", - " Is_vacuum for Volume 13 = 1\n", - " is_mask_volume for Volume 13 = 0\n", - " is_masked_volume for Volume 13 = 0\n", - " is_exit_volume for Volume 13 = 0\n", - "LIST: mask_list for Volume 13 = []\n", - "LIST: masked_by_list for Volume 13 = []\n", - "LIST: masked_by_mask_index_list for Volume 13 = []\n", - " mask_mode for Volume 13 = 0\n", - "\n", - "List overview for orange_layer_3_outer_cut_replace_0 with cylinder shape made of Al\n", - "LIST: Children for Volume 14 = [3,4,15]\n", - "LIST: Direct_children for Volume 14 = [15]\n", - "LIST: Intersect_check_list for Volume 14 = [5,6,7,12,15]\n", - "LIST: Mask_intersect_list for Volume 14 = []\n", - "LIST: Destinations_list for Volume 14 = [11,13]\n", - "LIST: Reduced_destinations_list for Volume 14 = [11,13]\n", - "LIST: Next_volume_list for Volume 14 = [11,13,5,6,7,12,15]\n", - " Is_vacuum for Volume 14 = 0\n", - " is_mask_volume for Volume 14 = 0\n", - " is_masked_volume for Volume 14 = 0\n", - " is_exit_volume for Volume 14 = 0\n", - "LIST: mask_list for Volume 14 = []\n", - "LIST: masked_by_list for Volume 14 = []\n", - "LIST: masked_by_mask_index_list for Volume 14 = []\n", - " mask_mode for Volume 14 = 0\n", - "\n", - "List overview for orange_layer_3_inner_cut_0 with cylinder shape made of Vacuum\n", - "LIST: Children for Volume 15 = [3,4]\n", - "LIST: Direct_children for Volume 15 = [3,4]\n", - "LIST: Intersect_check_list for Volume 15 = [5,6,7,12]\n", - "LIST: Mask_intersect_list for Volume 15 = []\n", - "LIST: Destinations_list for Volume 15 = [14]\n", - "LIST: Reduced_destinations_list for Volume 15 = [14]\n", - "LIST: Next_volume_list for Volume 15 = [14,5,6,7,12]\n", - " Is_vacuum for Volume 15 = 1\n", - " is_mask_volume for Volume 15 = 0\n", - " is_masked_volume for Volume 15 = 0\n", - " is_exit_volume for Volume 15 = 0\n", - "LIST: mask_list for Volume 15 = []\n", - "LIST: masked_by_list for Volume 15 = []\n", - "LIST: masked_by_mask_index_list for Volume 15 = []\n", - " mask_mode for Volume 15 = 0\n", - "\n", - "Union_master component orange_master initialized sucessfully\n", - "Detector: orange_logger_space_zx_I=3.67974e-07 orange_logger_space_zx_ERR=1.525e-10 orange_logger_space_zx_N=1.74413e+07 \"orange_space_zx.dat\"\n", - "Detector: orange_logger_space_zy_I=3.67974e-07 orange_logger_space_zy_ERR=1.525e-10 orange_logger_space_zy_N=1.74413e+07 \"orange_space_zy.dat\"\n", - "Detector: orange_logger_space_xy_I=3.67974e-07 orange_logger_space_xy_ERR=1.525e-10 orange_logger_space_xy_N=1.74413e+07 \"orange_space_xy.dat\"\n", - "Detector: orange_logger_space_zy_close_I=1.79485e-07 orange_logger_space_zy_close_ERR=8.2902e-11 orange_logger_space_zy_close_N=8.34055e+06 \"orange_space_zy_close.dat_0\"\n", - "Detector: orange_logger_time_I=3.67853e-07 orange_logger_time_ERR=1.5246e-10 orange_logger_time_N=1.72375e+07 \"NULL.dat\"\n", - "Detector: orange_logger_space_zy_time_I=1.80317e-07 orange_logger_space_zy_time_ERR=8.27806e-11 orange_logger_space_zy_time_N=8.90244e+06 \"orange_logger_space_zy_time.dat_0\"\n", - "Detector: orange_logger_space_zy_time_I=1.7243e-07 orange_logger_space_zy_time_ERR=1.24229e-10 orange_logger_space_zy_time_N=4.98917e+06 \"orange_logger_space_zy_time.dat_1\"\n", - "Detector: orange_logger_space_zy_time_I=9.97519e-09 orange_logger_space_zy_time_ERR=2.08364e-11 orange_logger_space_zy_time_N=2.08282e+06 \"orange_logger_space_zy_time.dat_2\"\n", - "Detector: orange_logger_space_zy_time_I=4.40471e-09 orange_logger_space_zy_time_ERR=2.00216e-11 orange_logger_space_zy_time_N=928729 \"orange_logger_space_zy_time.dat_3\"\n", - "Detector: orange_logger_space_zy_time_I=7.25431e-10 orange_logger_space_zy_time_ERR=1.11136e-11 orange_logger_space_zy_time_N=334335 \"orange_logger_space_zy_time.dat_4\"\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "data = instrument.run_full_instrument(foldername=\"test_cryostat\", increment_folder_name=True, ncount=1E7)" ] @@ -829,35 +164,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "mobile-strike", "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a006fc39067e48d693f5b9d2a0065b29", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "HBox(children=(Output(layout=Layout(width='75%')), VBox(children=(Label(value='Choose monitor'), Dropdown(layo…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_base.py:3099: UserWarning: Attempting to set identical left==right results\n", - "in singular transformations; automatically expanding.\n", - "left=1.0, right=1.0\n", - " self.set_xlim(upper, lower, auto=None)\n" - ] - } - ], + "outputs": [], "source": [ "%matplotlib widget\n", "plotter.interface(data)"