From a469335e903cd73e80d0b1f7f3534c3416a2f1de Mon Sep 17 00:00:00 2001 From: Nick Draper <nick.draper@stfc.ac.uk> Date: Tue, 15 Jul 2014 15:42:12 +0100 Subject: [PATCH] initial translation using pandoc links need fixing. re #9923 --- .../Mantid/docs/source/concepts/Algorithm.rst | 153 ++ .../source/concepts/Analysis_Data_Service.rst | 34 + .../docs/source/concepts/Data_Service.rst | 28 + .../docs/source/concepts/Dynamic_Factory.rst | 25 + .../source/concepts/Error_Propagation.rst | 66 + .../docs/source/concepts/EventWorkspace.rst | 126 ++ .../docs/source/concepts/Facilities_File.rst | 106 + .../docs/source/concepts/FitConstraint.rst | 54 + .../source/concepts/Framework_Manager.rst | 35 + Code/Mantid/docs/source/concepts/Geometry.rst | 39 + .../source/concepts/Geometry_of_Position.rst | 68 + .../source/concepts/Geometry_of_Shape.rst | 57 + .../concepts/HowToDefineGeometricShape.rst | 468 +++++ .../docs/source/concepts/Instrument.rst | 47 + .../concepts/InstrumentDefinitionFile.rst | 1698 +++++++++++++++++ .../concepts/Instrument_Data_Service.rst | 33 + Code/Mantid/docs/source/concepts/Lattice.rst | 265 +++ .../docs/source/concepts/MDHistoWorkspace.rst | 131 ++ .../docs/source/concepts/MDWorkspace.rst | 106 + .../docs/source/concepts/MatrixWorkspace.rst | 41 + .../docs/source/concepts/Nexus_file.rst | 26 + Code/Mantid/docs/source/concepts/Plugin.rst | 74 + Code/Mantid/docs/source/concepts/Project.rst | 24 + .../docs/source/concepts/Properties.rst | 191 ++ .../docs/source/concepts/Properties_File.rst | 7 + Code/Mantid/docs/source/concepts/RAW_File.rst | 85 + Code/Mantid/docs/source/concepts/Run.rst | 71 + .../docs/source/concepts/Shared_Pointer.rst | 61 + .../docs/source/concepts/Table_Workspaces.rst | 99 + .../docs/source/concepts/Unit_Factory.rst | 76 + .../source/concepts/Workflow_Algorithm.rst | 47 + .../Mantid/docs/source/concepts/Workspace.rst | 105 + .../docs/source/concepts/Workspace2D.rst | 20 + .../docs/source/concepts/WorkspaceGroup.rst | 26 + .../source/images/MDWorkspace_structure.png | Bin 0 -> 44483 bytes .../docs/source/images/NestedHistory.png | Bin 0 -> 27834 bytes .../docs/source/images/XMLconeDescription.png | Bin 0 -> 46074 bytes .../source/images/XMLcuboidDescription.png | Bin 0 -> 8455 bytes .../source/images/XMLcylinderDescription.png | Bin 0 -> 15171 bytes .../images/XMLhexahedronDescription.png | Bin 0 -> 44044 bytes .../XMLsliceCylinderRingDescription.png | Bin 0 -> 9185 bytes .../mantiddoc/directives/categories.py | 2 +- .../scripts/AddAlgorithmWikiLinksToText.py | 17 + .../scripts/FindIncompleteAlgRSTPages.py | 51 + 44 files changed, 4561 insertions(+), 1 deletion(-) create mode 100644 Code/Mantid/docs/source/concepts/Algorithm.rst create mode 100644 Code/Mantid/docs/source/concepts/Analysis_Data_Service.rst create mode 100644 Code/Mantid/docs/source/concepts/Data_Service.rst create mode 100644 Code/Mantid/docs/source/concepts/Dynamic_Factory.rst create mode 100644 Code/Mantid/docs/source/concepts/Error_Propagation.rst create mode 100644 Code/Mantid/docs/source/concepts/EventWorkspace.rst create mode 100644 Code/Mantid/docs/source/concepts/Facilities_File.rst create mode 100644 Code/Mantid/docs/source/concepts/FitConstraint.rst create mode 100644 Code/Mantid/docs/source/concepts/Framework_Manager.rst create mode 100644 Code/Mantid/docs/source/concepts/Geometry.rst create mode 100644 Code/Mantid/docs/source/concepts/Geometry_of_Position.rst create mode 100644 Code/Mantid/docs/source/concepts/Geometry_of_Shape.rst create mode 100644 Code/Mantid/docs/source/concepts/HowToDefineGeometricShape.rst create mode 100644 Code/Mantid/docs/source/concepts/Instrument.rst create mode 100644 Code/Mantid/docs/source/concepts/InstrumentDefinitionFile.rst create mode 100644 Code/Mantid/docs/source/concepts/Instrument_Data_Service.rst create mode 100644 Code/Mantid/docs/source/concepts/Lattice.rst create mode 100644 Code/Mantid/docs/source/concepts/MDHistoWorkspace.rst create mode 100644 Code/Mantid/docs/source/concepts/MDWorkspace.rst create mode 100644 Code/Mantid/docs/source/concepts/MatrixWorkspace.rst create mode 100644 Code/Mantid/docs/source/concepts/Nexus_file.rst create mode 100644 Code/Mantid/docs/source/concepts/Plugin.rst create mode 100644 Code/Mantid/docs/source/concepts/Project.rst create mode 100644 Code/Mantid/docs/source/concepts/Properties.rst create mode 100644 Code/Mantid/docs/source/concepts/Properties_File.rst create mode 100644 Code/Mantid/docs/source/concepts/RAW_File.rst create mode 100644 Code/Mantid/docs/source/concepts/Run.rst create mode 100644 Code/Mantid/docs/source/concepts/Shared_Pointer.rst create mode 100644 Code/Mantid/docs/source/concepts/Table_Workspaces.rst create mode 100644 Code/Mantid/docs/source/concepts/Unit_Factory.rst create mode 100644 Code/Mantid/docs/source/concepts/Workflow_Algorithm.rst create mode 100644 Code/Mantid/docs/source/concepts/Workspace.rst create mode 100644 Code/Mantid/docs/source/concepts/Workspace2D.rst create mode 100644 Code/Mantid/docs/source/concepts/WorkspaceGroup.rst create mode 100644 Code/Mantid/docs/source/images/MDWorkspace_structure.png create mode 100644 Code/Mantid/docs/source/images/NestedHistory.png create mode 100644 Code/Mantid/docs/source/images/XMLconeDescription.png create mode 100644 Code/Mantid/docs/source/images/XMLcuboidDescription.png create mode 100644 Code/Mantid/docs/source/images/XMLcylinderDescription.png create mode 100644 Code/Mantid/docs/source/images/XMLhexahedronDescription.png create mode 100644 Code/Mantid/docs/source/images/XMLsliceCylinderRingDescription.png create mode 100644 Code/Tools/scripts/AddAlgorithmWikiLinksToText.py create mode 100644 Code/Tools/scripts/FindIncompleteAlgRSTPages.py diff --git a/Code/Mantid/docs/source/concepts/Algorithm.rst b/Code/Mantid/docs/source/concepts/Algorithm.rst new file mode 100644 index 00000000000..15613d8674d --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Algorithm.rst @@ -0,0 +1,153 @@ +.. _Algorithm: + +Algorithm +========= + +What are they? +-------------- + +Algorithms are the verbs of Mantid. They are the actors. If you want to +manipulate your data in any way it will be done through an algorithm. +Algorithms operate primarily on data in `workspaces <Workspace>`__. They +will normally take one or more `workspaces <Workspace>`__ as an input, +perform some processing on them and provide an output as another +`workspace <Workspace>`__ (although it is possible to have multiple +outputs). + +Categories, Name and Versions +----------------------------- + +Each algorithm has a category, a name and a version. The name and +version of an algorithm when taken together have to be unique. + +Category +~~~~~~~~ + +A category is a group of algorithms that have some connection in their +usage. This is primarily used to make the list of algorithms easier to +work with in graphical user interfaces. Example categories include, +DataHandling, Diffraction, Muon, Workflow and are currently +subcategories of +`Algorithms <http://docs.mantidproject.org/algorithms>`__ category. + +Name +~~~~ + +The name of an algorithm is what is used to refer to it. This can be +different from the class name in C++, as for example if you had two +versions of the same algorithm they would have the same name, but would +have to have different class names (or at least be in different +namespaces). + +Version +~~~~~~~ + +Mantid allows multiple versions of the same algorithm. These are +differentiated by using a single integer as a version number, where a +higher version number denotes a more recent version. This allows you to +normally use the most recent version of an algorithm but also to access +previous versions if you prefer. + +Parameters +---------- + +Each algorithm will have one or more parameters, known within Mantid as +`properties <properties>`__, that will control how it performs its +processing. These parameters specify both what the inputs and outputs of +the algorithm will be as well any other options that alter the +processing. + +For examples of the parameters of an algorithm, look at the page for one +of the example algorithms below. + +Usage +----- + +From MantidScript(Python) +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. raw:: html + + <div style="border:1pt dashed blue; background:#f9f9f9;padding: 1em 0;"> + +.. code:: python + + # where p1,p2 & p3 are values for algorithm "Alg"'s properties + mtd.execute("Alg","p1;p2;p3") # using parameter ordinal position + #or + mtd.execute("Alg","Property1=p1;Property2=p2;Property3=p3") #using parameter names + #or + alg = mtd.createAlgorithm("Alg") # explicitly setting each parameter, then executing + alg.setPropertyValue("Property1","p1") + alg.setPropertyValue("Property2","p2") + alg.setPropertyValue("Property3","p3") + alg.execute() + + # Properties of Algorithms can be read (but not written to) through a Python dictionary. So you may do: + print alg["Property1"] + # prints 'p1' + print alg["Property2"] + # prints 'p2', etc + +.. raw:: html + + </div> + +Using the C++ API +^^^^^^^^^^^^^^^^^ + +(for algorithm "Alg" having properties InputWorkspace, OutputWorkspace & +prop) + +.. raw:: html + + <div style="border:1pt dashed blue; background:#f9f9f9;padding: 1em 0;"> + +.. code:: cpp + + // Explicitly setting the parameters and then executing + API::IAlgorithm* alg = API::FrameworkManager::Instance().createAlgorithm("Alg"); + alg->setPropertyValue("InputWorkspace", "InWS"); + alg->setPropertyValue("OutputWorkspace", "OutWS"); + alg->setPropertyValue("prop", "aValue"); + alg->execute(); + API::Workspace* ws = API::FrameworkManager::Instance().getWorkspace("OutWS"); + + // Or in one shot + API::FrameworkManager::Instance().exec("Alg","InWS,OutWS,aValue"); + API::Workspace* ws = API::FrameworkManager::Instance().getWorkspace("OutWS"); + +.. raw:: html + + </div> + +Example Algorithms +------------------ + +- `Plus <http://docs.mantidproject.org/nightly/algorithms/Plus.html>`__ + - An algorithm for adding data in two `workspaces <Workspace>`__ + together +- `Rebin <http://docs.mantidproject.org/nightly/algorithms/Rebin.html>`__ + - An algorithm for altering the binning of the data in a + `workspace <Workspace>`__. +- `LoadRaw <http://docs.mantidproject.org/nightly/algorithms/LoadRaw.html>`__ + - An algorithm for loading the data from a RAW file into a + `workspace <Workspace>`__. +- `GroupDetectors <http://docs.mantidproject.org/nightly/algorithms/GroupDetectors.html>`__ + - An algorithm for grouping two or more detectors into a larger + 'logical' detector. + +A full list of algorithms is avilable +`here <http://docs.mantidproject.org/nightly/algorithms/index.html>`__ +category + +Writing your own algorithm +-------------------------- + +A primer for this is `here <Writing an Algorithm>`__. Also look at the +examples in the `UserAlgorithms <UserAlgorithms>`__ directory of your +Mantid installation. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Analysis_Data_Service.rst b/Code/Mantid/docs/source/concepts/Analysis_Data_Service.rst new file mode 100644 index 00000000000..f219bd05b5f --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Analysis_Data_Service.rst @@ -0,0 +1,34 @@ +.. _Analysis Data Service: + +Analysis_Data_Service +===================== + +What is it? +----------- + +The Analysis Data Service is a `Data Service <Data Service>`__ that is +specialized to hold all of the `workspaces <Workspace>`__ that are +created by user run `algorithms <Algorithm>`__. Whenever an algorithm is +executed it automatically extracts its input workspaces from the +Analysis Data Service, and inserts its output workspaces upon +completion. + +Extracting a workspace from the Analysis Data Service +----------------------------------------------------- + +The most usual way in user code would be to use the `Framework +Manager <Framework Manager>`__. + +``Workspace* result = FrameworkManager::Instance().getWorkspace("workspaceName")`` + +Or you could get it directly from the AnalysisDataService (as a `Shared +Pointer <Shared Pointer>`__) + +``Workspace_sptr result = AnalysisDataService::Instance().retrieve("test_out1");`` + +If you were writing an algorithm however you would most likely use a +Workspace `Property <Properties>`__ to access or store your workspaces. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Data_Service.rst b/Code/Mantid/docs/source/concepts/Data_Service.rst new file mode 100644 index 00000000000..4462ece86a8 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Data_Service.rst @@ -0,0 +1,28 @@ +.. _Data Service: + +Data_Service +============ + +What are they? +-------------- + +Data Services are the internal storage locations within Mantid. Each +data service holds a list of objects that share a common base class (for +example the Instrument Data Service can hold anything which inherits +from instrument). Each item that is held is associated with a name that +uniquely describes the object. This name is them used when the object +needs to be retrieved, or for other operations such as overwriting it or +deleting it. + +Data Services in Mantid +----------------------- + +- `Analysis Data Service <Analysis Data Service>`__ - A data service + holding all of the `workspaces <Workspace>`__ used in this session. +- `Instrument Data Service <Instrument Data Service>`__ - A data + service holding all of the `instruments <Instrument>`__ used in this + session. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Dynamic_Factory.rst b/Code/Mantid/docs/source/concepts/Dynamic_Factory.rst new file mode 100644 index 00000000000..e52bdeb1c37 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Dynamic_Factory.rst @@ -0,0 +1,25 @@ +.. _Dynamic Factory: + +Dynamic_Factory +=============== + +What is it? +----------- + +A dynamic factory is a software concept that in instrumental in +implementing the `Plugin <Plugin>`__ technology in Mantid. + +A factory in software terms is an class that is responsible for creating +other objects on demand. In mantid terms the AlgorithmFactory is +responsible for creating instances of `Algorithms <Algorithm>`__ when +you need them. + +As the factory is dynamic it does not have a set list of objects that it +can create instead it knows how to create instances of a particular base +class. During execution of the code any object of the appropriate base +class can be registered with the factory, and then the factory can be +used to create fresh instances of that object. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Error_Propagation.rst b/Code/Mantid/docs/source/concepts/Error_Propagation.rst new file mode 100644 index 00000000000..636e35c7212 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Error_Propagation.rst @@ -0,0 +1,66 @@ +.. _Error Propagation: + +Error_Propagation +================= + +The purpose of this document is to explain how Mantid deals with Error +Propogation and how it is used in its algorithms. + +Theory +------ + +In order to deal with error propagation, Mantid treats errors as a +guassian curve (also known as a bell curve or normal curve). Meaning +that if X = 100 +- 1 then it is still possible for a value of 102 to +occur, but far less likely than 101 or 99, then a value of 105 is far +less likely still than 102, and then 110 is simply unheard of. + +This allows Mantid to work with the errors quite simply. + +Plus and Minus Algorithm +------------------------ + +The plus algorithm adds a selection of datasets together, including +their margin of errors. Mantid has to therefore adapt the margin of +error so it continues to work with just one margin of error. The way it +does this is by simply adding together the certain values, for this +example we will use X\ :sub:`1` and X\ :sub:`2`. X\ :sub:`1` = 101 ± 2 +and X\ :sub:`2` = 99 ± 2, Just to make it easier. Mantid takes the +average of the two definite values, 101 and 99. + +X = 200 = (101 + 99). + +The average of the error is calculated by taking the root of the sum of +the squares of the two error margins: + +(√2:sup:`2` + 2\ :sup:`2`) = √8 + +X = 200 ± √8 + +Mantid deals with the minus algorithm similarly, doing the inverse +function of Plus. + +Multiply and Divide Algorithm +----------------------------- + +The Multiply and Divide Algorithm work slightly different from the Plus +and Minus Algorithms, in the sense that they have to be more complex. + +To calculate error propagation, of say X\ :sub:`1` and X\ :sub:`2`. +X\ :sub:`1` = 101 ± 2 and X\ :sub:`2` = 99 ± 2 again, Mantid would +undertake the following calculation for divide: + +Q = X\ :sub:`1`/X:sub:`2` = 101/99 + +Error Propogation = (√ ± 2/99 + ±2/101) All multiplied by Q = 0.22425 + +For the multiply algorithm, the only difference is in how Q is created, +which in turn affects the Error Propogation, + +Q = X\ :sub:`1`\ \*X\ :sub:`2` = 101\*99 + +Error Propogation = (√ ± 2/99 + ±2/101) All multiplied by Q = 0.22425 + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/EventWorkspace.rst b/Code/Mantid/docs/source/concepts/EventWorkspace.rst new file mode 100644 index 00000000000..a364ae053ae --- /dev/null +++ b/Code/Mantid/docs/source/concepts/EventWorkspace.rst @@ -0,0 +1,126 @@ +.. _EventWorkspace: + +EventWorkspace +============== + +Quick Summary For Users +----------------------- + +The EventWorkspace is a type of `MatrixWorkspace <MatrixWorkspace>`__, +where the information about each individual neutron detection event is +maintained. For you as a user, this means that: + +- You can `rebin <rebin>`__ an EventWorkspace over and over and no + information is ever lost. +- The histogram (Y and E values) of an EventWorkspace are only + calculated when they are requested. + + - You typically get better performance, even for very fine binning. + +- You can convert an EventWorkspace to a `Workspace2D <Workspace2D>`__ + by using the `Rebin <Rebin>`__ algorithm and changing the output + workspace name. +- You cannot modify the histogram Y values (for example, with the + Divide algorithm) and keep the event data. If you use an algorithm + that modifies the Y values, the output workspace will be a + `Workspace2D <Workspace2D>`__ using the current binning parameters. + If you set the same name on the output as the input of your + algorithm, then you will overwrite the EventWorkspace and lose that + event-based information. +- Some algorithms are EventWorkspace-aware, meaning that the output of + it can be another EventWorkspace. For example, the `Plus <Plus>`__ + algorithm will append the event lists if given two input + EventWorkspaces. +- Since it retains the most information, it is advantageous to keep + your data as an EventWorkspace for as much processing as is possible + (as long as you have enough memory!). + +For Developers/Writing Algorithms +--------------------------------- + +The following information will be useful to you if you want to write an +algorithm that is EventWorkspace-aware. + +Individual Neutron Event Data (TofEvent) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The TofEvent class holds information for each neutron detection event +data: + +- PulseTime: An absolute time of the pulse that generated this neutron. + This is saved as an INT64 of the number of nanoseconds since Jan 1, + 1990; this can be converted to other date and time formats as needed. +- tof: Time-of-flight of the neutron, in microseconds, as a double. + Note that this field can be converted to other units, e.g. d-spacing. + +Lists of Events (EventList) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- The EventList class consists of a list of TofEvent's. The order of + this list is not significant, since various algorithms will resort by + time of flight or pulse time, as needed. + +- Also contained in the EventList is a std::set of detector ID's. This + tracks which `detector <detector>`__\ (s) were hit by the events in + the list. + +- The histogram bins (X axis) are also stored in EventList. The Y and E + histogram data are not, however, as they are calculated by the MRU + (below). + +The += operator can be used to append two EventList's together. The +lists of TofEvent's get appended, as is the list of +`detector <detector>`__ ID's. Don't mess with the udetmap manually if +you start appending event lists - just call +EventWorkpspace->makeSpectraMap to generate the spectra map (map between +spectrum # and detector IDs) by using the info in each EventList. + +Most Recently Used List (MRUList) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +An EventWorkspace contains a list of the 100 most-recently used +histograms, a `MRUList <MRUList>`__. This MRU caches the last histogram +data generated for fastest display. + +A note about workspace index / spectrum number / detector ID +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The loading algorithms **match** the workspace index and spectrum number +in the EventWorkspace. Therefore, in an EventWorkspace, the two numbers +will be the same, and your workspace's Axis[1] is a simple 1:1 map. As +mentioned above, the detectorID is saved in EventList, but the +makeSpectraMap() method generates the usual SpectraDetectorMap object. + +Workspace2D compatibility +~~~~~~~~~~~~~~~~~~~~~~~~~ + +EventWorkspace is designed to be able to be read (but not written to) +like a `Workspace2D <Workspace2D>`__. By default, if an algorithm +performs an operation and outputs a new workspace, the +`WorkspaceFactory <WorkspaceFactory>`__ will create a Workspace2D *copy* +of your EventWorkspace's histogram representation. If you attempt to +change an EventWorkspace's Y or E data in place, you will get an error +message, since that is not possible. + +A Note about Thread Safety +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Thread safety can be surprising when using an EventWorkspace: + +If two threads *read* a Y histogram at the same time, this *can* cause +problems. This is because the histogramming code will try to sort the +event list. If two threads try to sort the same event list, you can get +segfaults. + +Remember that the PARALLEL\_FOR1(), PARALLEL\_FOR2() etc. macros will +perform the check Workspace->threadSafe() on the input EventWorkspace. +This function will return *false* (thereby disabling parallelization) if +any of the event lists are unsorted. + +You can go around this by forcing the parallel loop with a plain +PARALLEL\_FOR() macro. **Make sure you do not read from the same +spectrum in parallel!** + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Facilities_File.rst b/Code/Mantid/docs/source/concepts/Facilities_File.rst new file mode 100644 index 00000000000..19f134edf29 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Facilities_File.rst @@ -0,0 +1,106 @@ +.. _Facilities File: + +Facilities_File +=============== + +Summary +------- + +The facilities file, called **facilities.xml**, contains properties of +facilities and instruments that Mantid is aware of. In order for Mantid +to function correctly for your facility then the facilites file should +contain the appropriate definitions as defined below. + +File syntax +----------- + +Each facility is described using XML with an instrument defined as a sub +component of a facility. A simple facility definition would be + +.. raw:: html + + <div style="border:1pt dashed blue; background:#f9f9f9;padding: 1em 0;"> + +.. code:: XML + + <?xml version="1.0" encoding="UTF-8"?> + <facilities> + + <facility name="BrandNew" delimiter="_" zeropadding="8" FileExtensions=".nxs,.n*"> + + <instrument name="ABCDEF"/> + + </facility> + + </facilities> + +.. raw:: html + + </div> + +which would define a facility called *BrandNew* with an instrument +called *ABCDEF*. The facilities attributes have the following meanings: + +- ``delimiter`` gives the delimiter that is inserted between the + instrument name and the run number when constructing a file name; +- ``zeroPadding`` gives the number of digits that a run number is + padded to when constructing a file name; +- ``FileExtensions`` should list the extensions of the data files for + the facility. The first is taken as the preferred extension. + +An instrument can have further attributes which define properties of the +that instrument rather than the facility as a whole, e.g. + +.. raw:: html + + <div style="border:1pt dashed blue; background:#f9f9f9;padding: 1em 0;"> + +.. code:: XML + + <?xml version="1.0" encoding="UTF-8"?> + <facilities> + + <facility name="BrandNew" zeropadding="8" FileExtensions=".nxs,.n*"> + + <instrument name="ABCDEF" shortName="ABC"> + <technique>Tech 1</technique> + <technique>Tech 2</technique> + <zeropadding size="12" startRunNumber="12345" prefix="FEDCBA"></zeropadding> + <zeropadding size="15" startRunNumber="54321" prefix="ZYXWUV"></zeropadding> + </instrument> + + </facility> + + </facilities> + +.. raw:: html + + </div> + +where the attributes are defined as: + +- ``shortName`` gives a shortened version of the instrument name + sometimes used in run filename generation; +- ``<technique>NAME<\technique>`` tags give a named technique supported + by the instrument. Mantid uses this to retrieve lists of instruments + based on a particular technique. Multiple techniques can be + specified. +- ``<zeropadding size="12" startRunNumber="12345" prefix="FEDCBA"\>`` + is an optional tag to specify zero padding different from the default + for the facility. ``startRunNumber`` is an optional attribute + specifying the smallest run number at which this zero padding must be + used. If ``startRunNumber`` is omitted this zero padding is applied + from run number 0. The optional ``prefix`` attribute allows a + filename to have a different prefix. An ``instrument`` tag can have + multiple ``zeropadding`` tags. + +Location +-------- + +The file should be located in the directory pointed to by the +**instrumentDefinition.directory** key in the +`.properties <Properties_File>`__ file. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/FitConstraint.rst b/Code/Mantid/docs/source/concepts/FitConstraint.rst new file mode 100644 index 00000000000..880d1eb6c88 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/FitConstraint.rst @@ -0,0 +1,54 @@ +.. _FitConstraint: + +FitConstraint +============= + +.. role:: math(raw) + :format: html latex +.. + +How constraints on parameters work +---------------------------------- + +Consider the scenario where the aim is to fit a lorenzian function to a +1D dataset but a constraint applied on the peak centre parameter. Assume +the 1D dataset consists of :math:`N` data points +:math:`(x_1,y_1^{obs}), (x_2,y_2^{obs}), ... (x_N,y_N^{obs})`, where +:math:`x_i` is the ith x-value and :math:`y_i^{obs}` is the ith observed +value for that x-value. Write the lorentzian function as: + +.. math:: y_i^{cal}(h, x0, w) = h \left( \frac{w^2}{(x_i-x0)^2+w^2} \right) + +where he lorentzian fitting parameters here are + +- :math:`h` - height of peak (at maximum) +- :math:`x0` - centre of peak +- :math:`w` - half-width at half-maximum + +:math:`x_i` is the x-value of the ith data point and :math:`y_i^{cal}` +is the lorentzian calculated value at that data point. + +We want to apply a constraint on the x0 parameter, i.e. the centre of +the peak. For example, apply the constraint that :math:`x0` should be in +between :math:`x0_{min}` and :math:`x0_{max}`. If this is not satisfied +we then add the following penalty function to :math:`y_i^{cal}` if +:math:`x0 < x0_{min}</`: + +.. math:: p_i = C(x0_{min}-x0)*R(x_i) + +where :math:`C` is a constant (default 1000) and :math:`R(x_i)` a spiky +function which takes the value 1 for the first and last data point and +for every 10th data point from the 1st data point, but is otherwise +zero. The penalty function when :math:`x0 > x0_{min}</` takes the form: + +.. math:: p_i = C(x0-x0_{max})*R(x_i) + +. + +If more than one constraint is defined, then for each violated +constraint a penalty of the type defined above is added to the +calculated fitting function. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Framework_Manager.rst b/Code/Mantid/docs/source/concepts/Framework_Manager.rst new file mode 100644 index 00000000000..1003315f89d --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Framework_Manager.rst @@ -0,0 +1,35 @@ +.. _Framework Manager: + +Framework_Manager +================= + +What is it? +----------- + +The framework manager is the main class through which user code will +interact with the Mantid framework. It is the center piece of the +application programming interface. + +The main purpose of the frameworkManager is to simplfy the interaction +with the various internal services of the Mantid framework. Of course +this does not prevent you from accessing those services directly should +you so wish. + +What does it allow you to do? +----------------------------- + +The frameworkManager allows you to create and execute algorithms as well +as retrieving workspaces, and deleteing them if they are no longer +required. + +It is good practice to delete workspaces that are no longer required to +free up the memory used. + +For the most up to date listing of the methods that Framework Manager +provides look at the `Doxygen code +documentation <http://doxygen.mantidproject.org/>`__. Select the classes +tab and look for FrameworkManagerImpl (Mantid::API). + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Geometry.rst b/Code/Mantid/docs/source/concepts/Geometry.rst new file mode 100644 index 00000000000..0c5ad980f42 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Geometry.rst @@ -0,0 +1,39 @@ +.. _Geometry: + +Geometry +======== + +What is it? +----------- + +Geometry is the description of the physical shape (volume) of an object +within a Mantid `instrument <Instrument>`__ and the distances and +rotations between them. + +Geometry in Mantid +------------------ + +In Mantid we seperate the `Geometry of the shape <Geometry of Shape>`__ +of an object from the `Geometry of it's +position <Geometry of Position>`__. This is done primarily to save on +memory usage but also to improve performance. Many operations within +Mantid need to know where for example a detector is, but do not need to +know what shape it is. By keeping the Geometry and Position seperate we +can keep the performance high. Also while in any one instrument we may +have over 10,000 detector pixels all with different locations they will +all have the same shape, therefore by keeping the shape seperate we can +greatly reduce the amount of memory required. + +Basics of Geometry +------------------ + +Both of the forms of Geometry share certain basic concepts. These are +that co-ordinates are stored as `3D +Vectors <http://en.wikipedia.org/wiki/Vector_(spatial)>`__ (the class in +Mantid is called V3D), directions are described as similar unit 3D +Vectors, and rotations are described using +`quaternions <http://en.wikipedia.org/wiki/Quaternion>`__. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Geometry_of_Position.rst b/Code/Mantid/docs/source/concepts/Geometry_of_Position.rst new file mode 100644 index 00000000000..4007e956d07 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Geometry_of_Position.rst @@ -0,0 +1,68 @@ +.. _Geometry of Position: + +Geometry_of_Position +==================== + +What is it? +----------- + +In Mantid we need to be able to define the position and orientation of +every component within an `instrument <instrument>`__. + +What is a component? +-------------------- + +A component is an abstract concept that is anything that we want to +define a position for, it could be a detector pixel, a whole detector +bank, a sample position or the whole instrument itself. For each +component we store: + +- A link to it's parent component. +- Position co-ordinates as a `3D + Vector <http://en.wikipedia.org/wiki/Vector_(spatial)>`__, internally + these store the location in `cartesian + co-ordinates <http://en.wikipedia.org/wiki/Cartesian_coordinate_system>`__ + in metres, but can also be set in `spherical + co-ordinates <http://en.wikipedia.org/wiki/Spherical_coordinate_system>`__. + This position is the relative position compared to it's parent. +- Orientation as a + `quaternion <http://en.wikipedia.org/wiki/Quaternion>`__. The + orientation is applied after any position adjustment relative to the + parent. + +Subtypes of Component +~~~~~~~~~~~~~~~~~~~~~ + +Object Component +^^^^^^^^^^^^^^^^ + +An object component is a component that has a +`shape <Geometry_of_Shape>`__. Shapes can contain a lot more information +to properly define them, and therefore take more memory. Where an +instrument contains a lot of instances of the same shape Mantid shares +one instance of the object(shape) across all of the object components +that need it. + +Component Assembly +^^^^^^^^^^^^^^^^^^ + +This component that is a logical collection of several smaller +components, an example of this is a bank of detector pixels. The whole +instrument itself is a Component Assembly which contains all of the +other top level components in the Instrument tree. + +Instrument Tree +--------------- + +|SimpleInstrumentTree.png| Most instruments in Mantid are defined using +a tree structure allowing the top level structure objects to be reused +if they are repeated in an instrument. This is an example of a +simplified instrument tree, the lines show the links between the parent +and child relationships of the components. Full details on how to define +an instrument can be found `here <InstrumentDefinitionFile>`__. + + + +.. |SimpleInstrumentTree.png| image:: SimpleInstrumentTree.png + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Geometry_of_Shape.rst b/Code/Mantid/docs/source/concepts/Geometry_of_Shape.rst new file mode 100644 index 00000000000..e232f7e90f7 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Geometry_of_Shape.rst @@ -0,0 +1,57 @@ +.. _Geometry of Shape: + +Geometry_of_Shape +================= + +What is it? +----------- + +In Mantid we use `constructive solid geometry +(CSG) <http://en.wikipedia.org/wiki/Constructive_solid_geometry>`__ to +describe the shape of an object. This involves the creation of more +complex shapes by the union, complement or intersection of simple +primitive surfaces. + +Why did we use CSG +------------------ + +Defining our object shape using CSG was selected for a number of +reasons: + +#. Using Surfaces based on mathematical equations rather than meshes of + vertices give much better accuracy when tracking the interaction of + particles through objects. +#. Scientists think in the shape of objects this way, for example if + they have a sample that is a sphere radius 0.03m with a conical + extrusion on top then that is exactly how they describe it in CSG. + Otherwise they would need to be able to describe the co-ordinates for + each vertex of the surface. + +What shapes can be constructed +------------------------------ + +Mantid has direct support for creating various shapes directly, +including + +- Sphere +- Infinite Cylinder +- Cylinder (finite height) +- Slice of cylinder ring +- Infinite Plane +- Cuboid +- Infinite Cone + +Some of these shapes are infinite surfaces (the infinite plane, cone and +cylinder) these are therefore not very useful on there own, but in +combination with other shapes they can be capped as required. + +For example if you cap and infinite Cylinder with two infinite planes +you get a finite capped cylinder. This is in fact how the Cylinder shape +is defined internally within Mantid. + +For more on this see +`HowToDefineGeometricShape <HowToDefineGeometricShape>`__. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/HowToDefineGeometricShape.rst b/Code/Mantid/docs/source/concepts/HowToDefineGeometricShape.rst new file mode 100644 index 00000000000..c9251bcd851 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/HowToDefineGeometricShape.rst @@ -0,0 +1,468 @@ +.. _HowToDefineGeometricShape: + +HowToDefineGeometricShape +========================= + +Overview +-------- + +Primitive Shapes +~~~~~~~~~~~~~~~~ + +There is direct support for defining any of the following geometric +shapes to add `Instrument Definition File <IDF>`__. + +- Sphere +- Infinite Cylinder +- Cylinder (finite height) +- Slice of cylinder ring +- Infinite Plane +- Cuboid +- Infinite Cone +- Cone + +Combining Primitive shapes +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In addition to the shapes listed above, other shapes may be defined by +combining already defined shapes into new ones. This is done using an +algebra that follows the following notation: + ++------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ +| Operator | Description | Example | ++============+================================================================================================================================================================+======================================================================================================+ +| | Union (i.e two or more things making up one shape). See e.g. also `1 <http://en.wikipedia.org/wiki/Union_(set_theory)>`__ | a body = legs : torso : arms : head | ++------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ +| " " | "space" shared between shapes, i,e. intersection (the common region of shapes). See e.g. also `2 <http://en.wikipedia.org/wiki/Intersection_(set_theory)>`__ | "small-circle = big-circle small-circle" (where the small circle placed within the big-circle) | ++------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ +| #. | Complement | #. sphere = shape defined by all points outside sphere | + ++------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ +| ( ) | Brackets are used to emphasise which shapes an operation should be applied to. | box1 (# box2) is the intersection between box1 and the shape defined by all points not inside box2 | ++------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ + +Axes and units of measure +~~~~~~~~~~~~~~~~~~~~~~~~~ + +All objects are defined with respect to cartesian axes (x,y,z), and the +`default <IDF#Using_.3Cdefaults.3E>`__ unit of all supplied values are +metres(m). Objects may be defined so that the origin (0,0,0) is at the +centre, so that when rotations are applied they do not also apply an +unexpected translation. + +Within instrument definitions we support the concept of defining a +rotation by specifying what point the object is +`facing <InstrumentDefinitionFile#Using_.3Cfacing.3E>`__. To apply that +correctly the side of the object we consider to be the front is the xy +plane. Hence, when planning to use +`facing <InstrumentDefinitionFile#Using_.3Cfacing.3E>`__ the shape +should be defined such that the positive y-axis is considered to be up, +the x-axis the width, and the z-axis the depth of the shape. + +To be aware off +--------------- + +When defining a shape you have complete freedom to define it with +respect to whatever coordinate system you like. However, we have a least +the following recommendation + +- The origin of coordinate system of a shape is used for calculating + the L2 distances. Therefore at least for any TOF instruments where + you care about L2 distances, the origin should be chosen to be at the + position on your detector shape that is best used for calculation the + L2 distance + +Examples +-------- + +Defining a sphere +~~~~~~~~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <sphere id="some-sphere"> + <centre x="0.0" y="0.0" z="0.0" /> + <radius val="0.5" /> + </sphere> + + <algebra val="some-sphere" /> + +.. raw:: html + + </div> + +Any shape must be given an ID name. Here the sphere has been given the +name "some-sphere". The purpose of the ID name is to use it in the +description, here this is done with the line . The description is +optional. If it is left out the algebraic intersection is taken between +any shapes defined. + +Defining a ball with a hole through it along the x-axis +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <cylinder id="stick"> + <centre-of-bottom-base x="-0.5" y="0.0" z="0.0" /> + <axis x="1.0" y="0.0" z="0.0" /> + <radius val="0.05" /> + <height val="1.0" /> + </cylinder> + + <sphere id="some-sphere"> + <centre x="0.0" y="0.0" z="0.0" /> + <radius val="0.5" /> + </sphere> + + <algebra val="some-sphere (# stick)" /> + +.. raw:: html + + </div> + +This algebra string reads as follows: take the *intersection* between a +sphere and the shape defined by all points *not* inside a cylinder of +length 1.0 along the x-axis. Note the brackets around # stick in the +algebraic string are optional, but here included to emphasis that the +"space" between the "some-sphere" and "(# stick)" is the intersection +operator. + +Notation used to defined any of the predefined geometric shapes +--------------------------------------------------------------- + +Sphere +~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <sphere id="A"> + <centre x="4.1" y="2.1" z="8.1" /> + <radius val="3.2" /> + </sphere> + +.. raw:: html + + </div> + +Cylinder +~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <cylinder id="A"> + <centre-of-bottom-base r="0.0" t="0.0" p="0.0" /> <!-- here position specified using spherical coordinates --> + <axis x="0.0" y="0.2" z="0" /> + <radius val="1" /> + <height val="10.2" /> + </cylinder> + +.. raw:: html + + </div> + +.. figure:: XMLcylinderDescription.png‎ + :alt: XMLcylinderDescription.png‎ + + XMLcylinderDescription.png‎ +Infinite cylinder +~~~~~~~~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <infinite-cylinder id="A" > + <centre x="0.0" y="0.2" z="0" /> + <axis x="0.0" y="0.2" z="0" /> + <radius val="1" /> + </infinite-cylinder> + +.. raw:: html + + </div> + +Slice of cylinder ring +~~~~~~~~~~~~~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <slice-of-cylinder-ring id="A"> + <inner-radius val="0.0596"/> + <outer-radius val="0.0646"/> + <depth val="0.01"/> + <arc val="45.0"/> + </slice-of-cylinder-ring> + +.. raw:: html + + </div> + +This XML element defines a slice of a cylinder ring. Most importantly +the part of this shape facing the sample is flat and looks like this: + +.. figure:: XMLsliceCylinderRingDescription.png + :alt: XMLsliceCylinderRingDescription.png + + XMLsliceCylinderRingDescription.png +For this shape you may find it useful to specify a +`Bounding-Box <HowToDefineGeometricShape#Bounding-Box>`__. + +Cone +~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <cone id="A" > + <tip-point x="0.0" y="0.2" z="0" /> + <axis x="0.0" y="0.2" z="0" /> + <angle val="30.1" /> + <height val="10.2" /> + </cone> + +.. raw:: html + + </div> + +.. figure:: XMLconeDescription.png + :alt: XMLconeDescription.png + + XMLconeDescription.png +Infinite cone +~~~~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <infinite-cone id="A" > + <tip-point x="0.0" y="0.2" z="0" /> + <axis x="0.0" y="0.2" z="0" /> + <angle val="30.1" /> + </infinite-cone> + +.. raw:: html + + </div> + +Infinite plane +~~~~~~~~~~~~~~ + +Is the 3D shape of all points on the plane and all points on one side of +the infinite plane, the side which point away from the infinite plane in +the direction of the normal vector. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <infinite-plane id="A"> + <point-in-plane x="0.0" y="0.2" z="0" /> + <normal-to-plane x="0.0" y="0.2" z="0" /> + </infinite-plane> + +.. raw:: html + + </div> + +Cuboid +~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <cuboid id="shape"> + <left-front-bottom-point x="0.0025" y="-0.1" z="0.0" /> + <left-front-top-point x="0.0025" y="-0.1" z="0.02" /> + <left-back-bottom-point x="-0.0025" y="-0.1" z="0.0" /> + <right-front-bottom-point x="0.0025" y="0.1" z="0.0" /> + </cuboid> + <algebra val="shape" /> + +.. raw:: html + + </div> + +This particular example describes a cuboid with the origin at the centre +of the front face, which is here facing the negative z-axis and has the +dimensions 0.005mm x 0.2mm (in the xy-plane), and the depth of this +cuboid is 0.02mm. + +.. figure:: XMLcuboidDescription.png + :alt: XMLcuboidDescription.png + + XMLcuboidDescription.png +Another example of a cuboid is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <cuboid id="shape"> + <left-front-bottom-point x="0.0" y="-0.1" z="-0.01" /> + <left-front-top-point x="0.0" y="0.1" z="-0.01" /> + <left-back-bottom-point x="0.001" y="-0.1" z="-0.01" /> + <right-front-bottom-point x="0.0" y="-0.1" z="0.01" /> + </cuboid> + <algebra val="shape" /> + +.. raw:: html + + </div> + +which describes a cuboid with a front y-z plane (looking down the +x-axis). The origin is assumed to be the centre of this front surface, +which has dimensions 200mm along y and 20mm along z. The depth of this +cuboid is taken to be 1mm (along x). + +Hexahedron +~~~~~~~~~~ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <hexahedron id="Bertie"> + <left-back-bottom-point x="0.0" y="0.0" z="0.0" /> + <left-front-bottom-point x="1.0" y="0.0" z="0.0" /> + <right-front-bottom-point x="1.0" y="1.0" z="0.0" /> + <right-back-bottom-point x="0.0" y="1.0" z="0.0" /> + <left-back-top-point x="0.0" y="0.0" z="2.0" /> + <left-front-top-point x="0.5" y="0.0" z="2.0" /> + <right-front-top-point x="0.5" y="0.5" z="2.0" /> + <right-back-top-point x="0.0" y="0.5" z="2.0" /> + </hexahedron> + +.. raw:: html + + </div> + +.. figure:: XMLhexahedronDescription.png + :alt: XMLhexahedronDescription.png + + XMLhexahedronDescription.png +For this shape you may find it useful to specify a +`Bounding-Box <HowToDefineGeometricShape#Bounding-Box>`__. + +Tapered Guide +~~~~~~~~~~~~~ + +Available from version 3.0 onwards. + +A tapered guide is a special case of hexahedron; a "start" rectangular +aperture which in a continued fashion changes into an "end" rectangular +aperture. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <tapered-guide id="A Guide"> + <aperture-start height="2.0" width="2.0" /> + <length val="3.0" /> + <aperture-end height="4.0" width="4.0" /> + <centre x="0.0" y="5.0" z="10.0" /> <!-- Optional. Defaults to (0, 0 ,0) --> + <axis x="0.5" y="1.0" z="0.0" /> <!-- Optional. Defaults to (0, 0 ,1) --> + </tapered-guide> + +.. raw:: html + + </div> + +The centre value denotes the centre of the start aperture. The specified +axis runs from the start aperture to the end aperture. "Height" is along +the y-axis and "width" runs along the x-axis, before the application of +the "axis" rotation. + +For this shape you may find it useful to specify a +`Bounding-Box <HowToDefineGeometricShape#Bounding-Box>`__. + +Bounding-Box +------------ + +When a geometric shape is rendered in the MantidPlot instrument viewer a +bounding box is automatically created for each geometric shape. This +works well for shapes such as cylinders and cuboids. However, for more +complex shapes and combined shapes the library used for the +visualization sometimes struggle, which can results in your instrument +being viewed artifically very small (and you have to zoom in for a long +time to see your instrument) and often in this context that the +visualization axes does not display properly. For such cases this can be +fixed by explicitely adding a bounding-box using the notation +demonstrated below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <hexahedron id="shape"> + <left-front-bottom-point x="0.0" y="-0.037" z="-0.0031" /> + <right-front-bottom-point x="0.0" y="-0.037" z="0.0031" /> + <left-front-top-point x="0.0" y="0.037" z="-0.0104" /> + <right-front-top-point x="0.0" y="0.037" z="0.0104" /> + <left-back-bottom-point x="0.005" y="-0.037" z="-0.0031" /> + <right-back-bottom-point x="0.005" y="-0.037" z="0.0031" /> + <left-back-top-point x="0.005" y="0.037" z="-0.0104" /> + <right-back-top-point x="0.005" y="0.037" z="0.0104" /> + </hexahedron> + <algebra val="shape" /> + + <bounding-box> + <x-min val="0.0"/> + <x-max val="0.005"/> + <y-min val="-0.037"/> + <y-max val="0.037"/> + <z-min val="-0.0104"/> + <z-max val="0.0104"/> + </bounding-box> + +.. raw:: html + + </div> + +Note for the best effect this bounding box should be enclosing the shape +as tight as possible. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Instrument.rst b/Code/Mantid/docs/source/concepts/Instrument.rst new file mode 100644 index 00000000000..f0a453ddb68 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Instrument.rst @@ -0,0 +1,47 @@ +.. _Instrument: + +Instrument +========== + +What are they? +-------------- + +The Instrument is a geometrical description of the components that make +up the beam line. The components described will generally include: + +- The source +- The sample position +- Each detector 'pixel' +- Each monitor + +Other components may also be included such as + +- Slits +- Mirrows +- Guides +- Choppers +- Engineering obstacles in the beam path +- Link between log-files and variable parameters of the instrument + (such as the height of a detector table) + +An instrument is described using an `instrument definition +file <InstrumentDefinitionFile>`__. + +The Mantid geometry is further explained `here <Geometry>`__. + +Why do we have a full instrument description, and not just a list of L2 and 2Theta values? +------------------------------------------------------------------------------------------ + +A list of L2 and 2Theta values will provide information to perform unit +conversions and several other algorithms, however a full geometric +instrument description allows much more. + +- Visualization of the instrument internals with data overlays +- Complex absorption corrections +- Montecarlo simulations of experiments +- Updating the instrument geometry according to values stored in + log-files + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/InstrumentDefinitionFile.rst b/Code/Mantid/docs/source/concepts/InstrumentDefinitionFile.rst new file mode 100644 index 00000000000..171fa718aa1 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/InstrumentDefinitionFile.rst @@ -0,0 +1,1698 @@ +.. _InstrumentDefinitionFile: + +InstrumentDefinitionFile +======================== + +.. role:: math(raw) + :format: html latex +.. + +The documentation on this wiki page is the full detailed description of +the syntax you can use in an IDF to describe an instrument (note +parameters of instrument components may optionally be stored in +`parameter file <InstrumentParameterFile>`__). + +To get started creating an IDF follow the instructions on the `Create an +IDF <Create_an_IDF>`__ page, then return here for more detailed +explanations of syntax and structures. + +Introduction +------------ + +An instrument definition file (IDF) aims to describe an instrument, in +particular providing details about those components of the instruments +that are critically affecting the observed signal from an experiment. +Parameter values of components may also be specified such as information +about the opening height of a slit, the final energy of a detector and +so on. The value of such parameters can optionally be linked to values +stored in log-files. + +In summary an IDF may be used to describe any or all of the following: + +#. Instrument components defined using a hierarchical structure. Take, + for example, a detector bank containing 100 identical tubes each + containing 100 detector pixels. One option is to describe this setup + using a flat structure of 100\*100=10000 pixel components. Although + this is a valid approach it 1) create uncessarily large files 2) but + most importantly it does not capture the layout of the instrument. + The prefered option is to describe this example by first defining a + “pixel†type, then a “tube†type containing 100 "pixels" and finally + a “bank†component containing 100 "tubes". This latter approach + requires the specification of 1(the bank)+100(tubes)+100(pixels)=201 + components as compared to specifying 10000 components using the + former approach. The other benefit of organising the IDF according to + the layout of the instrument is that users can subsequently refer to + the structure of the instrument as it is layed out. For example can + then subsequently easily move entire 'bank' or associate parameters + which relevant for a specific say 'tube' or 'bank'. +#. The geometric shape and position of any component including: slits, + mirrors, detectors etc. +#. A number of `specialised component + types <InstrumentDefinitionFile#Special_.3Ctype.3Es>`__ are defined + including: + + - detector and monitor components: required to be associated with + unique detector or monitor ID numbers. The importance of these IDs + are described further in + `1 <http://www.mantidproject.org/IDF#Using_detector.2Fmonitor_IDs_.3Cidlist.3E>`__ + - SamplePos component: Purpose to store the sample position. Needed + e.g. to calculate sample-to-detector distances + - Source component: Purpose to store the source position or a + position along the beamline but before the sample. Needed e.g. for + spallation source instruments to calculate neutron flightpaths + including the source-to-sample (primary path) distance. Also, used + to define a point along the beam located before the sample. The + direction from this position to the SamplePos is currently used to + calculate the beam direction in some calculates (for example + two-theta scattering angles). + +#. Handling of log-files. Values specified in log-files can be used to + modify parameters of components, such as a detector position + coordinate or a slit opening height, in addition to assign values to + such parameters directly +#. Specifying 'fitting' parameters of instrument profile functions and + other function to be used when data from the instrument are analysed. +#. Choice of preferred coordinate system. For example the default is to + define the beam along the z-axis and the y-axis to point up. + +An IDF is structured as an `XML <http://en.wikipedia.org/wiki/XML>`__ +document. For the purpose here it is enough to know that an XML document +follows a tree-based structure of elements with attributes. For example: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <type name="main-detector-bank"> + <component type="main-detector-pixel" > + <location x="-0.31" y="0.1" z="0.0" /> + <location x="-0.32" y="0.1" z="0.0" /> + <location x="-0.33" y="0.1" z="0.0" /> + </component> + </type> + +.. raw:: html + + </div> + +defines an XML element with has the attribute name="main-detector-bank". +This element contains one sub-element , which again contains 3 elements. +In plain English the above XML code aims to describe a +“main-detector-bank†that contains 3 detector pixels and their locations +within the bank. + +If a component is a cylindrical tube where slices of this types are +treated as detector pixels the tube detector performance enhacement can +optionally be used, which will e.g. make the display of this tube in the +instrument viewer faster. This can be done by adding 'outline' attribute +to the tag and setting its value to "yes". + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <type name="standard-tube" outline="yes"> + <component type="standard-pixel" > + <location y="-1.4635693359375"/> + <location y="-1.4607080078125"/> + <location y="-1.4578466796875"/> + </component> + </type> + +.. raw:: html + + </div> + +The 'outline attribute' only affects the 3D view of the instrument, +which appears by default. It may lead to a less accurate placing of the +detector pixels and in particular may not show the effects of tube +calibration. However a 2D view of the instrument will still place pixel +detectors accurately. + +IDF filename convention +----------------------- + +An IDF can be loaded manually from any file with extension .xml or .XML +using `LoadInstrument <LoadInstrument>`__ or +`LoadEmptyInstrument <LoadEmptyInstrument>`__. + +IDFs located in the MantidInstall instrument directory are automatically +loaded together with e.g. the loading of raw data file. Such files are +required to have the format INSTRUMENTNAME\_DefinitionANYTHING.xml, +where INSTRUMENTNAME is the name of the instrument and ANYTHING can be +any string including an empty string. Where more than one IDF is defined +for an instrument the appropriate IDF is loaded based on its +`valid-from <#Top_level_.3Cinstrument.3E>`__ and +`valid-to <#Top_level_.3Cinstrument.3E>`__ dates. Note for this to work +the `Workspace <Workspace>`__ for which an IDF is loaded into must +contain a record of when the data were collected. This information is +taken from the workspace's `Run <Run>`__ object, more specifically the +*run\_start* property of this object. + +In order to programmatically determine which is the correct filename for +a given date/time you can access a helper method from Python: + +.. raw:: html + + <div style="border:1pt dashed blue; background:#f9f9f9;padding: 1em 0;"> + +.. code:: python + + import mantid.api + # if no date is given it will default to returning the IDF filename that is currently valid. + currentIDF = mantid.api.ExperimentInfo.getInstrumentFilename("ARCS") + otherIDF = mantid.api.ExperimentInfo.getInstrumentFilename("ARCS", "2012-10-30") + +.. raw:: html + + </div> + +More detailed descriptions of various parts of the IDF +------------------------------------------------------ + +Geometry shapes +~~~~~~~~~~~~~~~ + +For information on how to define geometric shapes see +`HowToDefineGeometricShape <HowToDefineGeometricShape>`__. + +Top level +~~~~~~~~~~ + + is the top level XML element of an IDF. It takes attributes, two of +which must be included. An example is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <instrument name="ARCS" + valid-from="1900-01-31 23:59:59" + valid-to="2100-01-31 23:59:59" + last-modified="2010-10-12 08:54:07.279621"> + +.. raw:: html + + </div> + +Of the four attributes in the example above + +- name is (at present) optional, although it is recommended to specify + something sensible +- valid-from is compulsory and is the date from which the IDF is valid + from (+). This date must be larger than or equal to 1900-01-31 + 23:59:01 +- valid-to may optionally be added to indicate the date to which the + IDF is valid to. If not used, the file is permenently valid. (+) +- last-modified is optional. Changing it can be used as an alternative + to force MantidPlot to reload the IDF, which e.g. might be useful + during the build up of an IDF + +(+) Both valid-from and valid-to are required to be set using the ISO +8601 date-time format, i.e. as YYYY-MM-DD HH:MM:SS or +YYYY-MM-DDTHH:MM:SS `2 <http://en.wikipedia.org/wiki/ISO_8601YYYY>`__. +Valid ranges may overlap, provided the valid-from times are all +different. If several files are currently valid, the one with the most +recent valid-from time is selected. + +Using and +~~~~~~~~~~ + +Use the element to define a physical part of the instrument. A requires +two things + +#. It must have a type="some type" attribute. This specify the 'type' of + the component and this type must be specified somewhere in the IDF + using: . +#. It must contain at least one element. If multiple are specified then + this is essentially a shorthand notation for defining multiple + components of the same type at different locations. + +Here is an example + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="slit" name="bob"> + <location x="10.651"/> + <location x="11.983"/> + </component> + + <type name="slit"></type> + +.. raw:: html + + </div> + +Which defined two slits at two difference locations. Optionally a can be +given a 'name', in the above example this name is "bob". If no 'name' +attribute is specified the name of the defaults to the 'type' string, in +the above this is "slit". Giving sensible names to components is +recommended for a number of reasons including 1) The 'Instrument Tree' +view of an instrument in MantidPlot uses these names 2) when specifying +s through s these names are used. + +Special s +^^^^^^^^^ + +Within Mantid certain s have special meaning. A special is specified by +including an 'is' attribute as demonstrated below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <type name="pixel" is="detector"> + <cuboid id="app-shape"> + <left-front-bottom-point x="0.0025" y="-0.1" z="0.0" /> + <left-front-top-point x="0.0025" y="-0.1" z="0.0002" /> + <left-back-bottom-point x="-0.0025" y="-0.1" z="0.0" /> + <right-front-bottom-point x="0.0025" y="0.1" z="0.0" /> + </cuboid> + </type> + +.. raw:: html + + </div> + +where the 'is' attribute of is used to say this is a detector- (note +this particular detector- has been assigned a geometric shape, in this +case a cuboid, see +`HowToDefineGeometricShape <HowToDefineGeometricShape>`__). Special +types recognised are: + +#. Detector (or detector) +#. Monitor (or monitor) +#. `RectangularDetector <InstrumentDefinitionFile#Creating_Rectangular_Area_Detectors>`__ + (or rectangularDetector, rectangulardetector, or + rectangular\_detector) +#. Source (or source) +#. SamplePos (or samplePos) +#. ChopperPos (or chopperPos) + +For example it is important to specify the location of one Source- and +one SamplePos- in order for Mantid to be able to calculate L1 and L2 +distances and convert time-of-flight to, for instance, d-spacing. An +example of specifying a Source and SamplePos is shown below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="neutron moderator"> <location z="-10.0"/> </component> + <type name="neutron moderator" is="Source"/> + + <component type="some sample holder"> <location /> </component> + <type name="some sample holder" is="SamplePos" /> + +.. raw:: html + + </div> + +Using detector/monitor IDs +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Any component that is either a detector or monitor must be assigned a +unique detector/monitor ID numbers (note this is *not* spectrum ID +numbers but detector/monitor ID numbers). There are at least two +important reason to insist on this. + +- Data stored in files need to have a way to be linked to + detectors/monitors defined in the IDF. For example, at the ISIS + facility, data are recorded together with unique detector ID numbers. + Hence the job here to match the IDs in the data file with the IDs of + the IDF. Where unique IDs are not stored with the data the creator of + an IDF have some flexibility to chose these ID numbers since the data + themself does not contain such number. However a link between the IDs + and spectra in a workspace still needs to be made. By default the + `LoadInstrument <LoadInstrument>`__ algorithm, see in particular the + RewriteSpectraMap parameter of this algorithm, will map the + detector/monitor IDs with spectrum numbers as follows: the + detector/monitor IDs in the IDF are ordered from smallest to largest + number and then assigned in that order to the spectra in the + workspace used to hold the data in Mantid. +- Mantid needs to have a way to associate data which the + detectors/monitors of the instrument, which is do this using the + detector IDs. Although not mandatory it is recommended to give + memorizable names to collection of detectors/monitors or individual + detectors/monitors that a user is likely to want to refer. This allow + a user to refer to a collection of detectors by name rather than + trying to remember a sequence of IDs. Note the counts in a histogram + spectrum may be the sum of counts from a number of detectors and + Mantid, behind the scene, use the IDs to keep track of this. + +The element and the idlist attribute of the elements is used to assign +detector IDs. The notation for using idlist is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="monitor" idlist="monitor-id-list"> + <location r="5.15800" t="180.0" p="0.0" /> <!-- set to ID=500 in list below --> + <location r="5.20400" t="180.0" p="0.0" /> <!-- set to ID=510 --> + <location r="5.30400" t="180.0" p="0.0" /> <!-- set to ID=520 --> + <location r="5.40400" t="180.0" p="0.0" /> <!-- set to ID=531 --> + <location r="6.10400" t="180.0" p="0.0" /> <!-- set to ID=611 --> + <location r="6.24700" t="0.000" p="0.0" /> <!-- set to ID=612 --> + <location r="6.34700" t="0.000" p="0.0" /> <!-- set to ID=613 --> + <location r="6.50000" t="0.000" p="0.0" /> <!-- set to ID=650 --> + </component> + + <type name="monitor" is="monitor"/> + + <idlist idname="monitor-id-list"> + <id start="500" step="10" end="530" /> <!-- specifies IDs: 500, 510, 520, 530 --> + <id start="611" end="613" /> <!-- specifies IDs: 611, 612 and 613 --> + <id val="650" /> <!-- specifies ID: 650 --> + </idlist> + +.. raw:: html + + </div> + +As can be seen to specify a sequence of IDs use the notation , where if +the step attribute defaults to step="1" if it is left out. Just specify +just a single ID number you may alternatively use the notation . Please +note the number of ID specified must match the number of +detectors/monitors defined. + +Creating Rectangular Area Detectors +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There is a shortcut way to create 2D arrays of detector pixels. Here is +an example of how to do it: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="panel" idstart="1000" idfillbyfirst="y" idstepbyrow="300"> + <location r="0" t="0" name="bank1"> + </location> + </component> + + <component type="panel" idstart="100000" idfillbyfirst="y" idstepbyrow="300"> + <location r="45.0" t="0" name="bank2"> + </location> + </component> + + <!-- Rectangular Detector Panel. Position 100 "pixel" along x from -0.1 to 0.1 + and 200 "pixel" along y from -0.2 to 0.2 (relative to the coordinate system of the bank) --> + <type name="panel" is="RectangularDetector" type="pixel" + xpixels="100" xstart="-0.100" xstep="+0.002" + ypixels="200" ystart="-0.200" ystep="+0.002" > + </type> + + <!-- Pixel for Detectors. Shape defined to be a (0.001m)^2 square in XY-plane with tickness 0.0001m --> + <type is="detector" name="pixel"> + <cuboid id="pixel-shape"> + <left-front-bottom-point y="-0.001" x="-0.001" z="0.0"/> + <left-front-top-point y="0.001" x="-0.001" z="0.0"/> + <left-back-bottom-point y="-0.001" x="-0.001" z="-0.0001"/> + <right-front-bottom-point y="-0.001" x="0.001" z="0.0"/> + </cuboid> + <algebra val="pixel-shape"/> + </type> + +.. raw:: html + + </div> + +- The "panel" type defined above has the special "is" tag of + "RectangularDetector". The same type definition then needs these + attributes specified: + + - type: point to another type defining your pixel shape and size. + - xpixels: number of pixels in X + - xstart: x-position of the 0-th pixel (in length units, normally + meters) + - xstep: step size between pixels in the horizontal direction (in + length units, normally meters) + - ypixels: number of pixels in Y + - ystart: y-position of the 0-th pixel (in length units, normally + meters) + - ystep: step size between pixels in the vertical direction (in + length units, normally meters) + +- Detectors of the type specified ("pixel" in the example) will be + replicated at the X Y coordinates given. The usual rotation and + translation of the panel will rotate the pixels as needed. +- Each instance of a "panel" needs to set these attributes, at the tag, + in order to specify the Pixel IDs of the 2D array. + + - idstart: detector ID of the first pixel + - idfillbyfirst: set to true if ID numbers increase with Y indices + first. That is: (0,0)=0; (0,1)=1, (0,2)=2 and so on. Default is + idfillbyfirst="y". + - idstepbyrow: amount to increase the ID number on each row. e.g, if + you fill by Y first,and set idstepbyrow = 100, and have 50 Y + pixels, you would get: (0,0)=0; (0,1)=1; ... (0,49)=49; (1,0)=100; + (1,1)=101; etc. + - idstep. Default to 1. Set the ID increment within a row. + +- DO NOT also specify an "idlist" attribute for rectangular detectors, + as it will not be used. + +- Advantages of using a Rectangular Detector tag instead of defining + every single pixel: + + - The data will be displayed as a bitmap in the instrument 3D view, + making rendering much faster. + - Smaller IDF and faster instrument loading times. + - No need to make a script to generate the pixel positions. + +- Disadvantages/Limitations: + + - Must have constant pixel spacing in each direction. + - Must be rectangular shape. + +Using +~~~~~~ + +The element allows the specification of both the position of a component +and a rotation or the component's coordinate system. The position part +can be specified either using standard x, y and z coordinates or using +spherical coordinates: r, t and p, which stands for radius, theta and +phi, t is the angle from the z-axis towards the x-axis and p is the +azimuth angle in the xy-plane +`3 <http://en.wikipedia.org/wiki/Spherical_coordinate_system>`__. +Examples of translations include + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="something" name="bob"> + <location x="1.0" y="0.0" z="0.0" name="benny" /> + <location r="1.0" t="90.0" p="0.0"/> + </component> + +.. raw:: html + + </div> + +The above two translations have identical effect. They both translate a +component along the x-axis by "1.0". Note that optionally a can be given +a name similarly to how a can optionally be given a name. In a 'name' +attribtute is not specified for a element it defaults to the name of the +. + +The rotation part is specified using the attributes 'rot', 'axis-x', +'axis-y', 'axis-z' and these result in a rotation about the axis defined +by the latter three atttributes. As an example the effect of + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location rot="45.0" axis-x="0.0" axis-y="0.0" axis-z="1.0"/> + +.. raw:: html + + </div> + +is to set the coordinate frame of the this component equal to that of +the parent component rotated by 45 degrees around the z-axis. + +Both a translation and rotation can be defined within one element. For +example + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location x="1.0" y="0.0" z="0.0" rot="45.0" axis-x="0.0" axis-y="0.0" axis-z="1.0"/> + +.. raw:: html + + </div> + +will cause this componet to be translation along the x-axis by "1.0" +relative to the coordinate frame of the parent component followed by a +rotation of the coordinate frame by 45 degrees around the z-axis as +demonstrated in the figure below. + +.. figure:: Location-element-transformation.png + :alt: Location-element-transformation.png + + Location-element-transformation.png +Any rotation of a coordinate system can be performed by a rotation about +some axis, however, sometime it may be advantageous to think of such a +rotation as a composite of two or more rotations. For this reason a +element is allowed to have sub-rotation-elements, and an example of a +composite rotation is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location r="4.8" t="5.3" p="102.8" rot="-20.6" axis-x="0" axis-y="1" axis-z="0"> + <rot val="102.8"> + <rot val="50" axis-x="0" axis-y="1" axis-z="0" /> + </rot> + </location> + +.. raw:: html + + </div> + +The outermost is applied first followed by the 2nd outermost operation +and so on. In the above example this results in a -20.6 degree rotation +about the y-axis followed by a 102.8 degree rotation about the z-axis +(of the frame which has just be rotated by -20.6 degrees) and finally +followed by another rotation about the y-axis, this time by 50 degrees. +The ISIS NIMROD instrument (NIM\_Definition.xml) uses this feature. + +The translation part of a element can like the rotation part also be +split up into a nested set of translations. This is demonstrated below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location r="10" t="90" > + <trans r="8" t="-90" /> + </location> + +.. raw:: html + + </div> + +This combination of two translations: one moving 10 along the x-axis in +the positive direction and the other in the opposite direction by 8 adds +up to a total translation of 2 in the positive x-direction. This +feature, for example, is useful when the positions of detectors are best +described in spherical coordinates with respect to an origin different +from the origin of the parent component. For example, say you have +defined a with contains 3 pixels. The centre of the bank is at the +location r="1" with respect to the sample and the positions of the 3 +pixels are known with respect to the sample to be at r="1" and with +t="-1", t="0" and t="1". One option is to describe this bank/pixels +structure as + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="bank"> + <location /> + </component> + + <type name="bank"> + <component type="pixel"> + <location r="1" t="-1" /> + <location r="1" t="0" /> + <location r="1" t="1" /> + </component> + </type> + +.. raw:: html + + </div> + +However a better option for this case is to use nested translations as +demonstrated below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="bank"> + <location r="1"/> + </component> + + <type name="bank"> + <component type="pixel"> + <location r="1" t="180"> <trans r="1" t="-1" /> </location> + <location r="1" t="180"> <trans r="1" t="0" /> </location> + <location r="1" t="180"> <trans r="1" t="1" /> </location> + </component> + </type> + +.. raw:: html + + </div> + +since this means the bank is actually specified at the right location, +and not artificially at the sample position. + +Finally a combination of and sub-elements of a element can be used as +demonstrated below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location x="10" > + <rot val="90" > + <trans x="-8" /> + </rot> + </location> + +.. raw:: html + + </div> + +which put something at the location (x,y,z)=(10,-8,0) relative to the +parent component and with a 90 rotation around the z-axis, which causes +the x-axis to be rotated onto the y-axis. + +Most of the attributes of have default values. These are: x="0" y="0" +z="0" rot="0" axis-x="0" axis-y="0" axis-z="1" + +Using +^^^^^^ + +The element is an element you can use together with a . Its purpose is +to be able, with one line of IDF code, to make a given component face a +point in space. For example many detectors on ISIS instruments are setup +to face the sample. A element must be specified as a sub-element of a +element, and the facing operation is applied after the translation +and/or rotation operation as specified by the location element. An +example of a element is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <facing x="0.0" y="0.0" z="0.0"/> + or + <facing r="0.0" t="0.0" p="0.0"/> + +.. raw:: html + + </div> + +In addition if the is set under , i.e. by default any component in the +IDF will be rotated to face a default position then + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <facing val="none"/> + +.. raw:: html + + </div> + +can be used to overwrite this default to say you don't want to apply +'facing' to given component. + +The process of facing is to make the xy-plane of the geometric shape of +the component face the position specified in the element. The z-axis is +normal to the xy-plan, and the operation of facing is to change the +direction of the z-axis so that it points in the direction from the +position specified in the facing towards the position of the component. + + supports a rot attribute, which allow rotation of the z-axis around it +own axis before changing its direction. The effect of rot here is +identical to the effect of using rot in a where axis-x="0.0" +axis-y="0.0" axis-z="1.0". Allowing rot here perhpas make it slightly +clearly that such a rot is as part of facing a component towards another +component. + +which rotate the is a convenient element for adjusting the orientation +of the z-axis. The base rotation is to take the direction the z-axis +points and change it to point from the position specified by the element +to the positon of the component. + +Using +^^^^^^ + +A specifies the location of a . If this type consists of a number of +sub-parts can be used to exclude certain parts of a type. For example +say the type below is defined in an IDF + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <type name="door"> + <component type="standard-tube"> + <location r="2.5" t="19.163020" name="tube1"/> + <location r="2.5" t="19.793250" name="tube2"/> + <location r="2.5" t="20.423470" name="tube3"/> + <location r="2.5" t="21.053700" name="tube4"/> + <location r="2.5" t="21.683930" name="tube5"/> + </component> + </type> + +.. raw:: html + + </div> + +and the instrument consists of a number of these doors but where some of +the doors are different in the sense that for example the 1st and/or the +2nd tube is missing from some of these. Using this can be succinctly +described as follows: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="door"> + <location x="0"> + <exclude sub-part="tube1"/> + <exclude sub-part="tube3"/> + </location> + <location x="1" /> + <location x="2" /> + <location x="3"> + <exclude sub-part="tube3"/> + </location> + </component> + +.. raw:: html + + </div> + +where the sub-part of refers to the 'name' of a part of the type 'door'. + +Extra options for indirect geometry instruments +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Optionally, both physical and 'neutronic' detector positions can be +specified for indirect geometry instrument. This is described +`here <Indirect Instrument Definition Options>`__. + +Using +~~~~~~ + +Most instruments have detectors which are orderered in some way. For a +`rectangular array of +detectors <IDF#Creating_Rectangular_Area_Detectors>`__ we have a +shorthand notation. The tag is a shorthand notation to use for a +linear/spherical sequence of detectors, as any of the position +coordinates or the coordinate rotation angles of a tag are changing. + +For example a element may be used to describe the position of equally +distanced pixels along a tube, in the example below along the y variable + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <locations y="1.0" y-end="10.0" n-elements="10" name="det"/> + +.. raw:: html + + </div> + +The above one line of XML is shorthand notation for + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location y="1.0" name="det0"/> + <location y="2.0" name="det1" /> + <location y="3.0" name="det2" /> + <location y="4.0" name="det3" /> + <location y="5.0" name="det4" /> + <location y="6.0" name="det5" /> + <location y="7.0" name="det6" /> + <location y="8.0" name="det7" /> + <location y="9.0" name="det8" /> + <location y="10.0" name="det9" /> + +.. raw:: html + + </div> + +As is seen n-elements is the number of elements this element is +shorthand for. y-end specifies the y end position, and the equal +distance in y between the pixels is calculated in the code as +('y'-'y-end')/('n-elements'-1). Multiple 'variable'-end attributes can +be specified for the tag, where 'variable' here is any of the +attributes: x, y, z, r, t, p and rot. The example below describes a list +of detectors aligned in a semi-circle: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <locations n-elements="7" r="0.5" t="0.0" t-end="180.0" rot="0.0" rot-end="180.0" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + +.. raw:: html + + </div> + +The above one line of XML is shorthand notation for + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <location r="0.5" t="0" rot="0" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="30" rot="30" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="60" rot="60" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="90" rot="90" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="120" rot="120" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="150" rot="150" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + <location r="0.5" t="180" rot="180" axis-x="0.0" axis-y="1.0" axis-z="0.0"/> + +.. raw:: html + + </div> + +If name is specified, e.g. as name="det" in the first example, then as +seen the elements are given the 'name' plus a counter, where by default +this counter starts from zero. This counter can optionally be changed by +using attribute name-count-start, e.g. setting name-count-start="1" in +the above example would have named the 10 elements det1, det2, ..., +det10. + +When one tag was used in ISIS LET\_Definition.xml the number of lines of +this file reduced from 1590 to 567. + +Using +~~~~~~ + +Parameters which do not change or are changed via should be stored using +this element inside the IDF, however parameters which may need to be +accessed and changed manually on a regular basis should be stored in a +separate `parameter file <InstrumentParameterFile>`__. + + is used to specify a value to a parameter which can then be extracted +from Mantid. One usage of is to link values stored in log-files to +parameter names. For example + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="x"> + <logfile id="trolley2_x_displacement" extract-single-value-as="position 1" /> + </parameter> + +.. raw:: html + + </div> + +reads: “take the first value in the “trolley2\_x\_displacement" log-file +and use this value to set the parameter named 'x'. + +The name of the is specified using the 'name' tag. You may specify any +name for a parameter except for name="pos" and name="rot". These are +reserved keywords. Further a few names have a special effect when +processed by Mantid + +- "x", "y", and "z" overwrite the x, y and z coordinate respectively of + the element of the component the is a sub-element of. +- "r-position", "t-position" and "p-position" like "x", "y" and "z" + overwrite the x, y, z coordinates but specified using spherical + coordinates (as defined ). Note that the parameters "t-position" and + "p-position" are ignored if the parameter "r-position" is not also + set for the same component. If only "r-position" is set, say to + r-position="10.0", than the component will be set to + (x,y,z)=(0,0,10.0) i.e. theta and phi default to zero where not + specified. +- "rotx", "roty" and "rotz" rotate the component's coordinate system + around the x-axis, y-axis and z-axis respectively in units of + degrees. If any of these are specified they re-define the rotation + for the component. You can specify two or three of these to create + any rotation. Regardless of what order rotx, roty and rotz is + specified in the IDF the combined rotation is equals that obtained by + applying rotx, then roty and finally rotz. +- "Efixed". If specified the `ConvertUnits <ConvertUnits>`__ algorithm + uses this value in unit conversion +- "SplitInto". How many MD boxes to split into when converting to MD. +- "SplitThreshold". The threshold number of MDEvents in an MDBox before + splitting into a new MDBox. Concerns convert to MD. +- "MaxRecursionDepth". The maximum depth of the MDBox tree when + converting to MD. +- "offset-phi". Effective boolean for turning on/off Phi offsets by PI. + Set to Always to apply. + +The value of the parameter is in the above example specified using a +log-file as specified with the element . The required attribute of is + +- *id* - the logfile name minus the file extension and the ISIS raw + file name. For example the id for the logfile 'CSP78173\_height.txt' + is 'height'. + +Optional attributes of are: + +- *extract-single-value-as* - specify which value (or values) from the + logfile should be used to. This attribute takes any of the following + strings + + - **mean** (default) + - **position n** where n is an integer + - **first\_value** The first value in the run + - **last\_value** The last value in the run + - **median** The median value in the run + - **minimum** The minimum value in the run + - **maximum** The maximum value in the run + +- *eq* - the values in the log-file may not directly specify the + parameter you want to set in the IDF. A simple example is where the + values in the logfile are in units of mm, whereas the unit of length + in the IDF is meters. Hence for this case by setting + eq="0.001\*value" the values in the logfile are automatically + converted to meters. A more complicated example is where the height + of a detector is recorded in a log-file as the angle between from the + horizontal plane to the detector in unit of degrees. Say the distance + between the sample (which is assumed to be in the horizontal plane) + and the detector is 1.863m then by specifying + eq="1.863\*sin(value\*0.0174533)" the values in the log-file are + automatically converted into the height of the detector from the + horizontal plane in units of meters. Note pi/180=0.0174533 in + "sin(value\*0.0174533)" above is to transform degrees to radians. + +Another option for specifying a value for a parameter is to use the +notation: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="x"> + <value val="7.2"/> + </parameter> + +.. raw:: html + + </div> + +Here a value for the parameter with name "x" is set directly to 7.2. The +only and required attribute of the element is 'val'. + +For a given you should specify its value only once. If by mistake you +specify a value twice as demonstrated in the example below then the +first encountered element is used, and if no element is present then the +first encountered element is used. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="x"> + <value val="7.2"/> + <logfile id="trolley2_x_displacement" extract-single-value-as="position 1" /> + </parameter> + +.. raw:: html + + </div> + +In the above example is used. + +Accessing +~~~~~~~~~~ + +Parameters are by default accessed recursively, see for instance methods +of +`ParametrizedComponent <http://doxygen.mantidproject.org/classMantid_1_1Geometry_1_1ParametrizedComponent.html>`__. +Demonstrated with an example: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="dummy"> + <location/> + <parameter name="something"> <value val="35.0"/> </parameter> + </component> + + <type name="dummy"> + <component type="pixel" name="pixel1"> + <location y="0.0" x="0.707" z="0.707"/> + <parameter name="something1"> <value val="25.0"/> </parameter> + </component> + + <component type="pixel" name="pixel2"> + <location y="0.0" x="1.0" z="0.0"/> + <parameter name="something2"> <value val="15.0"/> </parameter> + </component> + </type> + +.. raw:: html + + </div> + +this implies that if you for instance ask the component with +name="pixel1" what parameters it has then the answer is two: +something1=25.5 and something=35.0. If you ask the component +name="dummy" the same question the answer is one: something=35.0 and so +on. Recursive look-up can be diabled see for instance +`ParametrizedComponent <http://doxygen.mantidproject.org/classMantid_1_1Geometry_1_1ParametrizedComponent.html>`__. + +Using *string* +~~~~~~~~~~~~~~~ + +This is a special category of parameters where the value specified for +the paramter is string rather than a double. The syntax is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="instrument-status" type="string"> + <value val="closed"/> + </parameter> + +.. raw:: html + + </div> + +Using *fitting* +~~~~~~~~~~~~~~~~ + +This is a special category of parameters, which follows the same syntax +as other but allows a few extra features. Fitting parameters are meant +to be used when raw data are fitted against models that contain +parameters, where some of these parameters are instrument specific. If +such parameters are specified these will be pulled in before the fitting +process starts, where optionally these may, for instance, be specified +to be treated as fixed by default. To specify a fitting parameter use +the additional tag type="fitting" as shown in the example below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <value val="7.2"/> + </parameter> + +.. raw:: html + + </div> + +It is required that the parameter name uses the syntax +NameOfFunction:Parameter, where NameOfFunction is the name of the +fitting function the parameter is associated with. In the example above +the fitting function name is `IkedaCarpenterPV <IkedaCarpenterPV>`__ and +the parameter name is Alpha0. + +To specify that a parameter should be treated as fixed in the fitting +process use the element as demonstrated in the example below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <value val="7.2"/> + <fixed /> + </parameter> + +.. raw:: html + + </div> + +A parameter can be specified to have a min/max value, which results in a +constraint being applied to this parameter. An example of this is shown +below + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <value val="7.2"/> + <min val="4"/> <max val="12"/> + </parameter> + +.. raw:: html + + </div> + +The min/max values may also be specified as percentage values. For +example: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <value val="250"/> + <min val="80%"/> <max val="120%"/> + <penalty-factor val="2000"/> + </parameter> + +.. raw:: html + + </div> + +results in Alpha0 being constrained to sit between 250\*0.8=200 and +250\*1.20=300. Further this example also demonstrates how a can be +specified to tell how strongly the min/max constraints should be +enforced. The default value for the penalty-factor is 1000. For more +information about this factor see `FitConstraint <FitConstraint>`__. + +A value for a parameter may alternatively be set using a look-up-table +or a formula. An example demonstrating a formula is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <formula eq="100.0+10*centre+centre^2" unit="TOF" result-unit="1/dSpacing^2"/> + </parameter> + +.. raw:: html + + </div> + +'centre' in the formula is substituted with the centre-value of the peak +shape function as known prior to the start of the fitting process. The +attributes 'unit' is optional. If it is not set then the peak +centre-value is directly substituted for the centre variable in the +formula. If it is set then it must be set to no one of the units defined +in `Unit\_Factory <Unit_Factory>`__, and what happens is that the peak +centre-value is converted to this unit before assigned to the centre +variable in the formula. + +The optional 'result-unit' attribute tells what the unit is of the +output of the formula. In the example above this unit is "1/dSpacing^2" +(for the 'result-unit' this attribute can be set to an algebraic +expression of the units defined in `Unit\_Factory <Unit_Factory>`__). If +the x-axis unit of the data you are trying to fit is dSpacing then the +output of the formula is left as it is. But for example if the x-axis +unit of the data is TOF then the formula output is converted into, it in +this case, the unit "1/TOF^2". Examples where 'unit' and 'result-unit' +are used include: +`CreateBackToBackParameters <CreateBackToBackParameters>`__ and +`CreateIkedaCarpenterParameters <CreateIkedaCarpenterParameters>`__. + +An example which demonstrate using a look-up-table is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <parameter name="IkedaCarpenterPV:Alpha0" type="fitting"> + <lookuptable interpolation="linear" x-unit="TOF" y-unit="dSpacing"> + <point x="1" y="1" /> + <point x="3" y="100" /> + <point x="5" y="1120" /> + <point x="10" y="1140" /> + </lookuptable> + </parameter> + +.. raw:: html + + </div> + +As with a formula the look-up is done for the 'x'-value that corresponds +to the centre of the peak as known prior to the start of the fitting +process. The only interpolation option currently supported is 'linear'. +The optional 'x-unit' and 'y-unit' attributes must be set to one of the +units defined in `Unit\_Factory <Unit_Factory>`__. The 'x-unit' and +'y-unit' have very similar effect to the 'unit' and 'result-unit' +attributes for described above. 'x-unit' converts the unit of the centre +before lookup against the x-values. 'y-axis' is the unit of the y values +listed, which for the example above correspond to Alpha0. + +Using +~~~~~~ + +Allow s to be linked to components without needing s to be defined +inside, as sub-elements, of the components they belong to. The standard +approach for defining a parameter is + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="bank" name="bank_90degnew"> + <location /> + <parameter name="test"> <value val="50.0" /> </parameter> + </component> + +.. raw:: html + + </div> + +where a parameter 'test' is defined to belong to the component with the +name 'bank\_90degnew'. However, alternatively the parameter can be +defined using the notation in the an example below. Note that if more +than one component e.g. have the name 'bank\_90degnew' then the +specified parameters are applied to all such components. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="bank" name="bank_90degnew"> + <location /> + </component> + + <component-link name="bank_90degnew" > + <parameter name="test"> <value val="50.0" /> </parameter> + </component-link> + +.. raw:: html + + </div> + + is the only way parameters can be defined in a **parameter file** used +by the `LoadParameterFile <LoadParameterFile>`__ algorithm. + +If there are several components with name 'bank\_90degnew' but you want +specified paramentes to apply to only one of them, then you can specify +the name by a path name. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component-link name="HRPD/leftside/bank_90degnew" > + <parameter name="test"> <value val="50.0" /> </parameter> + </component-link> + +.. raw:: html + + </div> + +The path name need not be complete provided it specifies a unique +component. Here we drop the instrument name HRPD. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component-link name="leftside/bank_90degnew" > + <parameter name="test"> <value val="50.0" /> </parameter> + </component-link> + +.. raw:: html + + </div> + +. + +Using +~~~~~~ + +The standard way of making up geometric shapes as a collection of parts +is described here: +`HowToDefineGeometricShape <HowToDefineGeometricShape>`__. However, +offers in some circumstances a more convenient way of defining more +complicated shapes, as for example is the case for the ISIS POLARIS +instrument. This tag combining components into one shape as demonstrated +below: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="adjusted cuboid" + <location /> + </component> + + <type name="adjusted cuboid" is="detector"> + <combine-components-into-one-shape /> + <component type="cuboid1"> + <location name="A"/> + <!-- "A" translated by y=10 and rotated around x-axis by 90 degrees --> + <location name="B" y="10" rot="90" axis-x="1" axis-y="0" axis-z="0" /> + </component> + <algebra val="A : B" /> + + <!-- this bounding box is used for this combined into one shape--> + <bounding-box> + <x-min val="-0.5"/> + <x-max val="0.5"/> + <y-min val="-5.0"/> + <y-max val="10.5"/> + <z-min val="-5.0"/> + <z-max val="5.0"/> + </bounding-box> + + </type> + + <type name="cuboid1" is="detector"> + <cuboid id="bob"> + <left-front-bottom-point x="0.5" y="-5.0" z="-0.5" /> + <left-front-top-point x="0.5" y="-5.0" z="0.5" /> + <left-back-bottom-point x="-0.5" y="-5.0" z="-0.5" /> + <right-front-bottom-point x="0.5" y="5.0" z="-0.5" /> + </cuboid> + + <!-- this bounding box is not used in the combined shape --> + <!-- Note you would not normally need to add a bounding box + for a single cuboid shape. The reason for adding one + here is just to illustrate that a bounding added here + will not be used in created a combined shape as in + "adjusted cuboid" above --> + <bounding-box> + <x-min val="-0.5"/> + <x-max val="0.5"/> + <y-min val="-5.0"/> + <y-max val="5.0"/> + <z-min val="-0.5"/> + <z-max val="0.5"/> + </bounding-box> + </type> + +.. raw:: html + + </div> + +which combines two components "A" and "B" into one shape. The resulting +shape is shape is shown here:\ |CombineIntoOneShapeExample.png‎|. + +Note for this to work, a unique name for each component must be provided +and these names must be used in the algebra sting (here "A : B", see +`HowToDefineGeometricShape <HowToDefineGeometricShape>`__). Further a +bounding-box may optionally be added to the to the type , see +`HowToDefineGeometricShape#Bounding-Box <HowToDefineGeometricShape#Bounding-Box>`__. +Note the above geometric shape can alternatively be defined with the XML +(Mantid behind the scene translates the above XML to the XML below +before proceeding): + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="adjusted cuboid"> + <location /> + </component> + + <type name="adjusted cuboid" is="detector"> + <cuboid id="A"> + <left-front-bottom-point x="0.5" y="-5.0" z="-0.5" /> + <left-front-top-point x="0.5" y="-5.0" z="0.5" /> + <left-back-bottom-point x="-0.5" y="-5.0" z="-0.5" /> + <right-front-bottom-point x="0.5" y="5.0" z="-0.5" /> + </cuboid> + <!-- cuboid "A" translated along y by 10 and rotated around x by 90 degrees --> + <cuboid id="B"> + <left-front-bottom-point x="0.5" y="10.5" z="-5.0" /> + <left-front-top-point x="0.5" y="9.5" z="-5.0" /> + <left-back-bottom-point x="-0.5" y="9.5" z="-5.0" /> + <right-front-bottom-point x="0.5" y="10.5" z="5.0" /> + </cuboid> + <algebra val="A : B" /> + </type> + +.. raw:: html + + </div> + + for now works only for combining cuboids. Please do not hesitate to +contact the Mantid team if you would like to extend this. + +This applies when defining any geometric shape, but perhaps something +which a user has to be in particular aware of when defining more +complicated geometry shapes, for example, using the tag: the coordinate +system in which a shape is defined can be chosen arbitrary, and the +origin of this coordinate system is the position returned when a user +asked for its position. It is therefore highly recommended that when a +user define a detector geometric shape, this could be simple cuboid, +that it is defined with the origin at the centre of the front of the +detector. For detector shapes build up of for example multiple cuboids +the origin should be chosen perhaps for the center of the front face of +the 'middle' cuboid. When Mantid as for the position of such a shape it +will be with reference to coordinate system origin of the shape. +However, sometimes it may simply be inconvenient to build up a geometry +shape with an coordinate system as explained above. For this case, and +for now only when using it possible to get around this by using the +element , which takes the same attributes as a element. The effect of +this element is basically to redefine the shape coordinate system origin +(in fact also rotate it if requested). + +Using +~~~~~~ + +Used for setting various defaults. + +Used to make the xy-plane of the geometric shape of any component by +default face a given location. For example + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <components-are-facing x="0.0" y="0.0" z="0.0" /> + +.. raw:: html + + </div> + +If this element is not specified the default is to *not* attempt to +apply facing. + +Originally introduced to handle detector position coordinates as defined +by the +`Ariel <http://www.isis.rl.ac.uk/Disordered/GEM/ariel/index_ariel.htm>`__ +software. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <offsets spherical="delta" /> + +.. raw:: html + + </div> + +When this is set all components which have coordinates specified using +spherical coordinates (i.e. using the r, t, p attributes, see +description of ) are then treated as offsets to the spherical position +of the parent, i.e. the value given for :math:`r` are added to the +parent's :math:`r` to give the total radial coordinate, and the same for +:math:`\theta` and :math:`\phi`. Note using this option breaks the +symmetry that the element of a child component equals the position of +this component relative to its parent component. + +Reference frame in which instrument is described. The author/reader of +an IDF can chose the reference coordinate system in which the instrument +is described. The default reference system is the one shown below. + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <reference-frame> + <!-- The z-axis is set parallel to and in the direction of the beam. the + y-axis points up and the coordinate system is right handed. --> + <along-beam axis="z"/> + <pointing-up axis="y"/> + <handedness val="right"/> + </reference-frame> + +.. raw:: html + + </div> + +This reference frame is e.g. used when a signed theta detector values +are calculated where it is needed to know which direction is defined as +up. The direction here means the direction of the beam if it was not +modified by any mirrows etc. + +This tag is used to control how the instrument first appears in the +`Instrument View <MantidPlot:_Instrument_View>`__. Attribute ``view`` +defines the type of the view that opens by default. It can have the +following values: "3D", "cylindrical\_x", "cylindrical\_y", +"cylindrical\_z", "spherical\_x", "spherical\_y", "spherical\_z". If the +attribute is omitted value "3D" is assumed. Opening the 3D view on +start-up is also conditioned on the value of the +``MantidOptions.InstrumentView.UseOpenGL`` property in the `Properties +File <Properties_File>`__. If set to "Off" this property prevents the +Instrument View to start in 3D mode and "cylindrical\_y" is used +instead. The user can change to 3D later. + +Another attribute, ``axis-view`` governs on which axis the instrument is +initially viewed from in 3D and can be set equal to one of "Z-", "Z+", +"X-", etc. If "Z-" were selected then the view point would be on the +z-axis on the negative of the origin looking in the +z direction. + +If + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <angle unit="radian"/> + +.. raw:: html + + </div> + +is set then all angles specified in elements and 's with names "rotx", +"roty", "rotz", "t-position" and "p-position" are assumed to in radians. +The default is to assume all angles are specified in degrees. + +Other defaults +^^^^^^^^^^^^^^ + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <length unit="meter"/> + +.. raw:: html + + </div> + +This default, for now, does not do anything, but is the default unit for +length used by Mantid. If it would be useful for you to specify user +defined units do not hesitate to `request +this <mailto:mantid-help@mantidproject.org>`__. + +Parameter Files +--------------- + +To prevent an IDF file from getting too long and complicated, +information not related to the geometry of the instrument may be put +into a separate file, whose content is automatically included into the +IDF file. + +For more information see the **`parameter file +page <InstrumentParameterFile>`__**. + +Deprecated Features +------------------- + +=== mark-as="monitor" === The following notation to mark a detector as a +monitor is now deprecated: + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="monitor" idlist="monitor"> + <location r="3.25800" t="180.0" p="0.0" mark-as="monitor"/> + </component> + + <type name="monitor" is="detector"/> + + <idlist idname="monitor"> + <id val="11" /> + </idlist> + +.. raw:: html + + </div> + +The above XML should be replaced with + +.. raw:: html + + <div style="border:1pt dashed black; background:#f9f9f9;padding: 1em 0;"> + +.. code:: xml + + <component type="monitor" idlist="monitor"> + <location r="3.25800" t="180.0" p="0.0"/> + </component> + + <type name="monitor" is="monitor"/> + + <idlist idname="monitor"> + <id val="11" /> + </idlist> + +.. raw:: html + + </div> + + + +.. |CombineIntoOneShapeExample.png‎| image:: CombineIntoOneShapeExample.png‎ + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Instrument_Data_Service.rst b/Code/Mantid/docs/source/concepts/Instrument_Data_Service.rst new file mode 100644 index 00000000000..8acf9cbeffe --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Instrument_Data_Service.rst @@ -0,0 +1,33 @@ +.. _Instrument Data Service: + +Instrument_Data_Service +======================= + +What is it? +----------- + +The Instrument Data Service (IDS) is a `Data Service <Data Service>`__ +that is specialized to hold all of the `instruments <Instrument>`__ that +are created during a user session. Whenever an instrument definition is +loaded it is saved in the IDS and further workspaces that refer to the +same instrument share the same definition. + +Extracting an instrument from the Instrument Data Service +--------------------------------------------------------- + +This is rarely something that a user or an algorithm writer would need +to do as it is all handled by the framework internals. Normally you +would access the instrument relating to a workspace directly though that +workspace. + +``workspace->getInstrument();`` + +However if you really did want to access the instrument from the IDS (as +a `Shared Pointer <Shared Pointer>`__), although this would then lack +any workspace specific alterations or properties. + +``boost::shared_ptr``\ \ `` intrument = workspace->getInstrument();`` + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Lattice.rst b/Code/Mantid/docs/source/concepts/Lattice.rst new file mode 100644 index 00000000000..1d955201ca5 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Lattice.rst @@ -0,0 +1,265 @@ +.. _Lattice: + +Lattice +======= + +.. role:: math(raw) + :format: html latex +.. + +The purpose of this document is to explain how Mantid is using +information about unit cells and their orientation with respect to the +laboratory frame. For a detailed description, see +http://github.com/mantidproject/documents/blob/master/Design/UBMatriximplementationnotes.pdf + +Theory +------ + +The physics of a system studied by neutron scattering is described by +the conservation of energy and momentum. In the laboratory frame: + +:math:`Q_l= \hbar \mathbf{k}_i^{} - \hbar \mathbf{k}_f` + +:math:`\Delta E_l= \frac{\hbar^2}{2m} (k_i^2 - k_f^2)` + +Note that the left side in the above equations refer to what is +happening to the lattice, not to the neutron. + +Let's assume that we have a periodic lattice, described by lattice +parameters :math:`a,\ b,\ c,\ \alpha,\ \beta,\ \gamma`. The reciprocal +lattice will be described by parameters +:math:`a^*,\ b^*,\ c^*,\ \alpha^*,\ \beta^*,\ \gamma^*`. Note that +Mantid uses :math:`a^*=\frac{1}{a}` type of notation, like in +crystallography. + +For such a lattice, the physics will be described in terms of reciprocal +lattice parameters by +:math:`Q= 2 \pi\left(h \mathbf{a}^* + k \mathbf{b}^* +l \mathbf{c}^* \right) = \left(\begin{array}{c} + + h \\ + + k \\ + + l + + \end{array}\right)`. +The :math:`UB_{}^{}` matrix formalism relates :math:`Q_l^{}` and +:math:`Q_{}^{}` with the following equation: + +:math:`Q_l = 2 \pi R \cdot U \cdot B \left(\begin{array}{c} + + h \\ + + k \\ + + l + + \end{array}\right)` + +The :math:`B_{}^{}` matrix transforms the :math:`h^{}_{}, k, l` triplet +into a Cartesian system, with the first axis along +:math:`\ \mathbf{a}^*`, the second in the plane defined by +:math:`\ \mathbf{a}^*` and :math:`\ \mathbf{b}^*`, and the third axis +perpendicular to this plane. In the Busing and Levi convention (W. R. +Busing and H. A. Levy, Angle calculations for 3- and 4-circle X-ray and +neutron diffractometers - Acta Cryst. (1967). 22, 457-464): + +:math:`B = \left( \begin{array}{ccc} + a^* & b^*\cos(\gamma^*) & c^*\cos(\beta^*) \\ + 0 & b^*\sin(\gamma^*) & -c^*\sin(\beta^*)\cos(\alpha) \\ + 0 & 0 & 1/c \end{array} \right)` + +The :math:`U_{}^{}` matrix represents the rotation from this Cartesian +coordinate frame to the Cartesian coordinate frame attached to the +innermost axis of the goniometer that holds the sample. + +The :math:`R_{}^{}` matrix is the rotation matrix of the goniometer + +Other useful equations: + +:math:`G^* = (UB)^T UB = B^T B = \left( \begin{array}{ccc} + a^*a^* & a^*b^*\cos(\gamma^*) & a^*c^*\cos(\beta^*) \\ + a^*b^*\cos(\gamma^*) & b^*b^* & b^*c^*\cos(\alpha^*) \\ + a^*c^*\cos(\beta^*) & b^*c^*\cos(\alpha^*) & c^*c^* \end{array} \right)` + +:math:`G=(G^*)^{-1}=\left( \begin{array}{ccc} + aa & ab\cos(\gamma) & ac\cos(\beta) \\ + ab\cos(\gamma) & bb & bc\cos(\alpha) \\ + ac\cos(\beta) & bc\cos(\alpha) & cc \end{array} \right)` + +The distance in reciprocal space to the :math:`\left(h,k,l\right)` plane +is given by :math:`d^* =\left| B \left(\begin{array}{c} + + h \\ + + k \\ + + l + + \end{array}\right)\right|` + +The distance in real space to the :math:`\left(h,k,l\right)` plane is +given by :math:`d=\frac{1}{d^*}` + +The angle between :math:`Q_1^{}` and :math:`Q_2^{}` is given by +:math:`\cos( Q_1^{}, Q_2^{})=\frac{(BQ_1)(BQ_2)}{|(BQ_1)| |(BQ_2)|}` + +Unit cells +---------- + +The UnitCell class provides the following functions to access direct and +reciprocal lattices. The examples can be run from the script console in +Mantid + ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Example | Description | ++================================================+=================================================================================+================================================================================================================================================================================================================================================================================================================================+ +| UnitCell() | u = UnitCell() | default constructor, with :math:`a=b=c=1\rm \AA, \ \alpha=\beta=\gamma=90^\circ` | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| UnitCell(other unit cell) | | u = UnitCell() | copy constructor | +| | | u2 = UnitCell(u) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| UnitCell(a,b,c) | u = UnitCell(2,3.5,4) | constructor using :math:`a, b, c\ (\rm {in \ \AA}), \ \alpha=\beta=\gamma=90^\circ` | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| UnitCell(a,b,c,alpha,beta,gamma,Unit = unit) | | u = UnitCell(2,3.5,4,90,90,90) | constructor using :math:`a, b, c\ (\rm {in \ \AA}), \ \alpha, \ \beta,\ \gamma \ (\rm {in \ degrees \ or \ radians})`. The optional parameter "Unit" controls the units for the angles, and can have the value of "Degrees" or "Radians". By default Unit = Degrees | +| | | u = UnitCell(2,3.5,4,90,90,90,Unit = Degrees) | | +| | | u = UnitCell(2,3.5,4,0.5\*math.pi,0.5\*math.pi,0.5\*math.pi,Unit = Radians) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | a() | | u = UnitCell(2,3.5,4) | returns lattice parameters :math:`a, b, c\ (\rm {in \ \AA})` | +| | b() | | print u.c() | | +| | c() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | a1() | | u = UnitCell(2,3.5,4) | returns lattice parameters :math:`a_1=a, a_2=b, a_3=c\ (\rm {in \ \AA})`. Note: `"International Tables for Crystallography" <http://it.iucr.org/Ba/ch1o1v0001/>`__ notation | +| | a2() | | print u.a2() | | +| | a3() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | alpha() | | u = UnitCell(2,3.5,4,95,95,105) | returns lattice parameters :math:`\alpha,\ \beta, \gamma\ (\rm {in \ degrees})` | +| | beta() | | print u.alpha() | | +| | gamma() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | alpha1() | | u = UnitCell(2,2,4,90,90,60) | returns lattice parameters :math:`\alpha_1=\alpha,\ \alpha_2=\beta, \ \alpha_3=\gamma \ (\rm {in \ radians})`. Note: `"International Tables for Crystallography" <http://it.iucr.org/Ba/ch1o1v0001/>`__ notation | +| | alpha2() | | print u.alpha3() | | +| | alpha3() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | astar() | | u = UnitCell(2,3.5,4) | returns reciprocal lattice parameters :math:`a^*, b^*, c^* \ (\rm {in \ \AA^{-1}})` | +| | bstar() | | print u.cstar() | | +| | cstar() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | b1() | | u = UnitCell(2,3.5,4) | returns lattice parameters :math:`b_1=a^*, b_2=b^*, b_3=c^*\ (\rm {in \ \AA^{-1}})`. Note: `"International Tables for Crystallography" <http://it.iucr.org/Ba/ch1o1v0001/>`__ notation | +| | b2() | | print u.b2() | | +| | b3() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | alphastar() | | u = UnitCell(2,3.5,4,95,95,105) | returns lattice parameters :math:`\alpha^*,\ \beta^*, \gamma^*\ (\rm {in \ degrees})` | +| | betastar() | | print u.alphastar() | | +| | gammastar() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | beta1() | | u = UnitCell(2,2,4,90,90,60) | returns lattice parameters :math:`\beta_1=\alpha^*,\ \beta_2=\beta^*, \ \beta_3=\gamma^* \ (\rm {in \ radians})`. Note: `"International Tables for Crystallography" <http://it.iucr.org/Ba/ch1o1v0001/>`__ notation | +| | beta2() | | print u.beta3() | | +| | beta3() | | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| set(a,b,c,alpha,beta,gamma,Unit=unit) | | u = UnitCell() | sets :math:`a, b, c\ (\rm {in \ \AA}), \ \alpha, \ \beta,\ \gamma \ (\rm {in \ degrees \ or \ radians})` values. The optional parameter "Unit" controls the units for the angles, and can have the value of "Degrees" or "Radians". By default Unit = Degrees | +| | | u.set(2,3.5,4,90,90,90) | | +| | | u.set(2,3.5,4,90,90,90,Unit = Degrees) | | +| | | u.set(2,3.5,4,0.5\*math.pi,0.5\*math.pi,0.5\*math.pi,Unit = Radians) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | seta(a) | | u = UnitCell(2,3.5,4) | sets lattice parameters :math:`a, b, c\ (\rm {in \ \AA})` | +| | setb(b) | | u.setc(5) | | +| | setc(c) | | print u.c() | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | setalpha(alpha,Unit=unit) | | u = UnitCell() | sets :math:`\alpha, \ \beta,\ \gamma \ (\rm {in \ degrees \ or \ radians})` values. The optional parameter "Unit" controls the units for the angles, and can have the value of "Degrees" or "Radians". By default Unit = Degrees | +| | setbeta(beta,Unit=unit) | | u.setalpha(88) | | +| | setgamma(gamma,Unit=unit) | | u.setbeta(95,Unit = Degrees) | | +| | | u.setgamma(0.5\*math.pi,Unit = Radians) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | d(h,k,l) | | u = UnitCell(2,3.5,4) | returns :math:`d^{}_{}`-spacing :math:`(\rm in \ \rm \AA)` for given h,k,l coordinates | +| | d(V3D vector) | | print u.d(1,1,1) | | +| | | print u.d(V3D(1,1,1)) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | dstar(h,k,l) | | u = UnitCell(2,3.5,4) | returns :math:`d^*=1/d \ (\rm in \ \rm \AA^{-1})` for given h,k,l coordinates | +| | dstar(V3D vector) | | print u.dstar(1,1,1) | | +| | | print u.dstar(V3D(1,1,1)) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| recAngle(h1,k1,l1,h2,k2,l2,Unit=unit) | | u = UnitCell(2,3.5,4) | returns the angle in reciprocal space between vectors given by :math:`\left(h_1, k_1, l_1\right)` and :math:`\left(h_2, k_2, l_2\right) \ (\rm {in \ degrees \ or \ radians})`. The optional parameter "Unit" controls the units for the angles, and can have the value of "Degrees" or "Radians". By default Unit = Degrees | +| | | print u.recAngle(1,0,0,1,1,0) | | +| | | print u.recAngle(1,0,0,1,1,1,Unit=Degrees) | | +| | | print u.recAngle(1,0,0,1,1,0,Unit = Radians) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | volume() | | u = UnitCell(2,3.5,4) | return the volume of the direct or reciprocal unit cell :math:`(\rm {in \ \AA^3 \ respectively \ \AA^{-3}})` | +| | recVolume() | | print u.volume() | | +| | | print u.recVolume() | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | getB() | | u = UnitCell(2,3.5,4) | return the :math:`B^{}_{}` and :math:`B^{-1}_{}` matrices | +| | getBinv() | | print u.getB() | | +| | | print u.getBinv() | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | getG() | | u = UnitCell(2,3.5,4) | return the :math:`G^{}_{}` and :math:`G^{*}_{}` metric tensors of the direct and reciprocal lattices | +| | getGstar() | | print u.getG() | | +| | | print u.getGstar() | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| recalculateFromGstar(Gstar 2D 3x3 array) | | newGstar=array([[2,0,0],[0,0.5,0],[0,0,1]]) | recalculates the lattice parameters from the new :math:`G^{*}_{}` and sets them to the current UnitCell object | +| | | u=UnitCell() | | +| | | u.recalculateFromGstar(newGstar) | | ++------------------------------------------------+---------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Oriented lattices +----------------- + +All the functions defined for UnitCell are inherited by the +OrientedLattice objects. In addition, the following functions are +defined for OrientedLattice only: + ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Function | Example | Description | ++=======================================================+========================================================================================+=================================================================================================================================================================================================================================================================================================================================================+ +| OrientedLattice() | o = OrientedLattice() | default constructor, with :math:`a=b=c=1\rm \AA, \ \alpha=\beta=\gamma=90^\circ`. The :math:`U^{}_{}` matrix is set to identity | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| OrientedLattice(other oriented lattice) | | o = OrientedLattice() | copy constructor | +| | | o2 = OrientedLattice(o) | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| OrientedLattice(a,b,c) | o = OrientedLattice(2,3.5,4) | constructor using :math:`a, b, c\ (\rm {in \ \AA}), \ \alpha=\beta=\gamma=90^\circ`. The :math:`U^{}_{}` matrix is set to identity | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| OrientedLattice(a,b,c,alpha,beta,gamma,Unit = unit) | | o = OrientedLattice(2,3.5,4,90,90,90) | constructor using :math:`a, b, c\ (\rm {in \ \AA}), \ \alpha, \ \beta,\ \gamma \ (\rm {in \ degrees \ or \ radians})`. The optional parameter "Unit" controls the units for the angles, and can have the value of "Degrees" or "Radians". By default Unit = Degrees. The :math:`U^{}_{}` matrix is set to identity | +| | | o = OrientedLattice(2,3.5,4,90,90,90,Unit = Degrees) | | +| | | o = OrientedLattice(2,3.5,4,0.5\*math.pi,0.5\*math.pi,0.5\*math.pi,Unit = Radians) | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| OrientedLattice(unit cell) | | u=UnitCell(2,3,4) | constructor from UnitCell. The :math:`U^{}_{}` matrix is set to identity | +| | | o = OrientedLattice(u) | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | getU() | | o.OrientedLattice(2,3.5,4) | return the :math:`U^{}_{}` and :math:`UB^{}_{}` matrices | +| | getUB() | | print u.getU() | | +| | | print u.getUB() | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | setU() | | o.OrientedLattice(2,3.5,4) | sets the :math:`U^{}_{}` and :math:`UB^{}_{}` matrices. for setUB function, it will calculate first the lattice parameters, then the :math:`B^{}_{}` matrix, and then :math:`U^{}_{}`. See `#Note about orientation <#Note_about_orientation>`__ | +| | setUB() | | newU=array([[0,1,0],[1,0,0],[0,0,-1]]) | | +| | | o.setU(newU) | | +| | | newUB=array([[2,1,0],[1,2,0],[2,0,-1]]) | | +| | | o.setUB(newUB) | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| setUFromVectors(v1,v2) | | o.OrientedLattice(2,3.5,4) | recalculates and sets the :math:`U^{}_{}` matrix, such as the first vector is along the beam direction, and the second vector is in the horizontal plane. See `#Note about orientation <#Note_about_orientation>`__. In python, the v1 and v2 vectors can be of type V3D, or length 3 list, or length 3 numpy array, not necessarily the same | +| | | o.setUFromVectors([1,0,0],[0,1,0]) | | +| | | o.setUFromVectors(array([1,0,0]),array([0,1,0])) | | +| | | o.setUFromVectors(V3D(1,0,0),V3D(0,1,0)) | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| | getuVector() | | o.OrientedLattice(2,3.5,4) | getuVector returns a vector along beam direction, while getvVector returns a vector in the horizontal plane, perpendicular to the beam direction (see `http://horace.isis.rl.ac.uk/Getting_started <http://horace.isis.rl.ac.uk/Getting_started>`__). See `#Note about orientation <#Note_about_orientation>`__ | +| | getvVector() | | o.setUFromVectors([5,5,0],[-2,1,0]) | | +| | | print o.getuVector() | | +| | | print o.getvVector() | | ++-------------------------------------------------------+----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Note about orientation +---------------------- + +Most of the instruments have incident beam along the :math:`\mathbf{z}` +direction. For an orthogonal lattice with :math:`\mathbf{a}^*` along +:math:`\mathbf{z}`, :math:`\mathbf{b}^*` along :math:`\mathbf{x}`, and +:math:`\mathbf{c}^*` along :math:`\mathbf{y}`, the :math:`U^{}_{}` +matrix has the form: + +:math:`U = \left( \begin{array}{ccc} + 0 & 1 & 0 \\ + 0 & 0 & 1 \\ + 1 & 0 & 0 \end{array} \right)` + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/MDHistoWorkspace.rst b/Code/Mantid/docs/source/concepts/MDHistoWorkspace.rst new file mode 100644 index 00000000000..622926d6813 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/MDHistoWorkspace.rst @@ -0,0 +1,131 @@ +.. _MDHistoWorkspace: + +MDHistoWorkspace +================ + +The MDHistoWorkspace is a simple multi-dimensional workspace. In +contrast to the `MDEventWorkspace <MDEventWorkspace>`__, which contains +points in space, the MDHistoWorkspace consists of a signal and error +spread around space on a regular grid. + +In a way, the MDHistoWorkspace is to a +`MDEventWorkspace <MDEventWorkspace>`__ is what the +`Workspace2D <Workspace2D>`__ is to the +`EventWorkspace <EventWorkspace>`__. + +Creating a MDHistoWorkspace +--------------------------- + +MDHistoWorkspaces typically have 3 or 4 dimensions, although they can be +created in up to 9 dimensions. + +- You can bin a `MDEventWorkspace <MDEventWorkspace>`__ to a + MDHistoWorkspace using the `BinMD <BinMD>`__ algorithm. + + - You can use `CreateMDWorkspace <CreateMDWorkspace>`__ to create a + blank MDEventWorkspace first, if you do not have data to bin. + +- `Paraview <Paraview>`__ and the `Vates Simple + Interface <VatesSimpleInterface>`__ will create a MDHistoWorkspace + from a `MDWorkspace <MDWorkspace>`__ when rebinning on a regular + grid. + +Viewing a MDHistoWorkspace +-------------------------- + +- MDHistoWorkspaces can be created and visualized directly within + `Paraview <Paraview>`__ and the `Vates Simple + Interface <VatesSimpleInterface>`__ when rebinning along a regular + grid. +- You can right-click on the workspace and select: + + - **Plot MD**: to perform a 1D plot of the signal in the workspace + (only works on 1D MDHistoWorkspaces). + - **Show Slice Viewer**: to open the `Slice + Viewer <MantidPlot:_SliceViewer>`__, which shows 2D slices of the + multiple-dimension workspace. + +Arithmetic Operations +--------------------- + +The following algorithms allow you to perform simple arithmetic on the +values: + +- `MinusMD <MinusMD>`__, `PlusMD <PlusMD>`__, `DivideMD <DivideMD>`__, + `MultiplyMD <MultiplyMD>`__ +- `ExponentialMD <ExponentialMD>`__, `PowerMD <PowerMD>`__, + `LogarithmMD <LogarithmMD>`__ + +These arithmetic operations propagate errors as described +`here <http://en.wikipedia.org/wiki/Propagation_of_uncertainty#Example_formulas>`__. +The formulas used are described in each algorithm's wiki page. + +The basic arithmetic operators are available from python. For example: + +| ``# Get two workspaces`` +| ``A = mtd['workspaceA']`` +| ``B = mtd['workspaceB']`` +| ``# Creating a new workspace`` +| ``C = A + B`` +| ``C = A - B`` +| ``C = A * B`` +| ``C = A / B`` +| ``# Modifying a workspace in-place`` +| ``C += A`` +| ``C -= A`` +| ``C *= A`` +| ``C /= A`` +| ``# Operators with doubles`` +| ``C = A * 12.3`` +| ``C *= 3.45`` + +Compound arithmetic expressions can be made, e.g: + +``E = (A - B) / (C - D)`` + +Boolean Operations +~~~~~~~~~~~~~~~~~~ + +The MDHistoWorkspace can be treated as a boolean workspace. In this +case, 0.0 is "false" and 1.0 is "true". + +The following operations can create a boolean MDHistoWorkspace: + +- `LessThanMD <LessThanMD>`__, `GreaterThanMD <GreaterThanMD>`__, + `EqualToMD <EqualToMD>`__ + +These operations can combine/modify boolean MDHistoWorkspaces: + +- `NotMD <NotMD>`__, `AndMD <AndMD>`__, `OrMD <OrMD>`__, + `XorMD <XorMD>`__ + +These boolean operators are available from python. Make sure you use the +bitwise operators: & \| ^ ~ , not the "word" operators (and, or, not). +For example: + +| ``# Create boolean workspaces by comparisons`` +| ``C = A > B`` +| ``D = B < 12.34`` +| ``# Combine boolean workspaces using not, or, and, xor:`` +| ``not_C = ~C`` +| ``C_or_D = C | D`` +| ``C_and_D = C & D`` +| ``C_xor_D = C ^ D`` +| ``C |= D`` +| ``C &= D`` +| ``C ^= D`` + +| ``# Compound expressions can be used:`` +| ``D = (A > 123) & (A > B) & (A < 456)`` + +Using Boolean Masks +^^^^^^^^^^^^^^^^^^^ + +The `SetMDUsingMask <SetMDUsingMask>`__ algorithm allows you to modify +the values in a MDHistoWorkspace using a mask created using the boolean +operations above. See the `algorithm wiki page <SetMDUsingMask>`__ for +more details. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/MDWorkspace.rst b/Code/Mantid/docs/source/concepts/MDWorkspace.rst new file mode 100644 index 00000000000..804a8434a6d --- /dev/null +++ b/Code/Mantid/docs/source/concepts/MDWorkspace.rst @@ -0,0 +1,106 @@ +.. _MDWorkspace: + +MDWorkspace +=========== + +The MDWorkspace (short for "Multi-Dimensional" Workspace) is a generic +data structure holdings points (MDEvents) that are defined by their +position in several dimensions. See also +`MDHistoWorkspace <MDHistoWorkspace>`__. + +Description of MDWorkspace +-------------------------- + +- **Dimensions**: A MDWorkspace can have between 1 and 9 dimensions. + + - Each dimension is defined with a name, units, and minimum/maximum + extents. + +- **MDEvent**: A MDEvent is simply a point in space defined by its + coordinates, plus a signal (weight) and error. + + - The MDLeanEvent type contains only coordinates, signal and error. + - The MDEvent type also contains a run index (for multiple runs + summed into one workspace) and a detector ID, allowing for more + information to be extracted. + +- The class is named MDEventWorkspace. + +Structure +~~~~~~~~~ + +The MDWorkspace is a container that can hold a large number of MDEvents. +The events are organized into "boxes": types are MDBox and MDGridBox. At +the simplest level, an MDWorkspace will be a single MDBox with an +unsorted bunch of events. + +In order to allow for efficient searching and binning of these events, +the boxes are organized into a recursive boxing structure (adaptive mesh +refinement). During MDWorkspace construction, if a MDBox is found to +contain too many events, it will be split into smaller boxes. + +.. figure:: MDWorkspace_structure.png + :alt: MDWorkspace_structure.png + + MDWorkspace\_structure.png +The threshold for splitting is defined in +`CreateMDWorkspace <CreateMDWorkspace>`__ as the SplitThreshold +parameter. Each parent box will get split into N sub-boxes in each +dimension. For example, in a 2D workspace, you might split a parent box +into 4x4 sub-boxes, creating 16 MDBoxes under the parent box (which +becomes a MDGridBox). The level of splitting is defined in the SplitInto +parameter. + +Creating a MDWorkspace +---------------------- + +There are several algorithms that will create a MDWorkspace: + +- `CreateMDWorkspace <CreateMDWorkspace>`__ creates a blank MDWorkspace + with any arbitrary set of dimensions. +- `ConvertToDiffractionMDWorkspace <ConvertToDiffractionMDWorkspace>`__ + converts an `EventWorkspace <EventWorkspace>`__ or + `Workspace2D <Workspace2D>`__ from detector space to reciprocal + space, for elastic single-crystal or powder diffraction experiments. +- `ConvertToMDEvents <ConvertToMDEvents>`__ converts workspaces for + inelastic experiments. +- `SliceMD <SliceMD>`__ takes a slice out of a MDWorkspace to create a + new one. +- `LoadSQW <LoadSQW>`__ converts from the SQW format. + +File-Backed MDWorkspaces +------------------------ + +For workspaces with a large number of events that would not fit in +memory, it is possible to use a NXS file back-end as a data store. The +box structure will always remain in memory, but the underlying events +will be stored in a file and retrieved only when required. This can be +set at creation (`CreateMDWorkspace <CreateMDWorkspace>`__) or when +loading from a file, or an in-memory MDWorkspace can be converted to +file-backed with the `SaveMD <SaveMD>`__ algorithm. + +Because of disk IO, file-backed MDWorkspaces are slower to process for +some operations (e.g. binning or slicing). Some types of visualization +and analysis, however, are just as fast with file-backed MDWorkspaces as +their in-memory equivalent. + +Viewing MDWorkspaces +-------------------- + +- Right-click on a MDWorkspace and select: + + - **Show Vates Simple Interface**: to open a `simplified 3D + view <VatesSimpleInterface>`__ based on `Paraview <Paraview>`__. + - **Show Slice Viewer**: to open the `Slice + Viewer <MantidPlot:_SliceViewer>`__, which shows 2D slices of the + multiple-dimensional workspace. + +- You can also `use Python script to open the + SliceViewer <SliceViewer Python Interface>`__. + +Or, you can load a MDWorkspace .nxs file in `Paraview <Paraview>`__ if +the proper plugin is installed. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/MatrixWorkspace.rst b/Code/Mantid/docs/source/concepts/MatrixWorkspace.rst new file mode 100644 index 00000000000..95e58ef449f --- /dev/null +++ b/Code/Mantid/docs/source/concepts/MatrixWorkspace.rst @@ -0,0 +1,41 @@ +.. _MatrixWorkspace: + +MatrixWorkspace +=============== + +What information is in a MatrixWorkspace +---------------------------------------- + +Mandatory: + +- Measured or derived data with associated errors + +Optionally: + +- `Axes <Interacting_with_Workspaces#Axes>`__ with + `Units <Unit Factory>`__ +- Sample and sample environment data +- Run logs +- A full `instrument <instrument>`__ geometric definition, along with + an instrument parameter map +- A spectra - detector map +- A distribution flag +- A list of 'masked' bins + +Concrete Matrix Workspaces +-------------------------- + +- WorkspaceSingleValue - Holds a single number (and X & error value, if + desired). Mainly used for workspace algebra, e.g. to divide all bins + in a 2D workspace by a single value. +- `Workspace2D <Workspace2D>`__ - A workspace for holding two + dimensional data in memory. This is the most commonly used workspace. +- `EventWorkspace <EventWorkspace>`__ - A workspace that retains the + individual neutron event data. + +More information on working with them: `Interacting with Matrix +Workspaces <Interacting with Matrix Workspaces>`__. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Nexus_file.rst b/Code/Mantid/docs/source/concepts/Nexus_file.rst new file mode 100644 index 00000000000..6b233d12d9a --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Nexus_file.rst @@ -0,0 +1,26 @@ +.. _Nexus file: + +Nexus_file +========== + +A **Nexus file** is a type of data file used by ISIS traget station 2 +and by MantidPlot. The format appears to be like an XML file plus some +unprintable characters. + +ManditPlot is capable of saving certain types of +`workspace <workspace>`__ as a Nexus file. It can also save a +`project <project>`__ as a mantid file plus Nexus files. + +Structure +--------- + +To be completed. + +See also +-------- + +`RAW File <RAW File>`__ an older data file format. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Plugin.rst b/Code/Mantid/docs/source/concepts/Plugin.rst new file mode 100644 index 00000000000..8184f95fabd --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Plugin.rst @@ -0,0 +1,74 @@ +.. _Plugin: + +Plugin +====== + +What is it? +----------- + +Mantid is designed to be extensible by anyone who can write a simple +library in C++. There are several areas that have been built so that new +version and instances can be added just by copying a library with the +new code into the plugin directory before starting mantid. This +eliminates the need to recompile the main Mantid code or any user +interfaces derived from it when you want to extend it by, for example, +adding a new algorithm. + +What is a plugin? +----------------- + +A plugin is a library of one or more classes that include the +functionality that you need. Within the outputs of the Mantid project +Several of the libraries we deliver are created as plugins. Examples +are: + +- MantidAlgorithms - Contains the general `algorithms <Algorithm>`__ +- MantidDataHandling - Contains the basic data loading and saving + `algorithms <Algorithm>`__ +- MantidNexus - Contains the `algorithms <Algorithm>`__ for handling + nexus files +- MantidDataObjects - Contains the definitions of the standard + `workspaces <Workspace>`__ + +How can you extend Mantid? +-------------------------- + +The following areas have been designed to be easily extensible through +using plugins. Each one contains more details in case you wish to create +one of your own. + +- `Algorithm <Algorithm>`__ +- `Workspace <Workspace>`__ +- `Unit <Unit>`__ + +How do you create a plugin? +--------------------------- + +There is nothing special about the library you build in order for it to +be used as a plugin, as long as it contains one or more algorithms, +workspaces or units (they can be mixed) they will automatically be +registered and available for use. + +How does it work? +----------------- + +Each of the extensible units within Mantid shares a base class that all +further objects of that type inherit from. For example all algorithms +must inherit from the Algorithm base class. This allows all uses of +those objects to work through the interface of the base class, and the +user (or other code) does not need to know what the algorithm actually +is, just that it is an algorithm. + +In addition each of the extensible units has a macro that adds some code +that automatically registers the class with the appropriate `dynamic +factory <Dynamic_Factory>`__. This code executes immediately when the +library is loaded and is what makes you new objects available for use. +All of these macros start DECLARE and, for example, the one for +algorithms is: + +- ``DECLARE_ALGORITHM(classname)`` (or ``namespace::classname`` if the + declaration is not enclosed in the algorithm's namespace) + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Project.rst b/Code/Mantid/docs/source/concepts/Project.rst new file mode 100644 index 00000000000..3972edb7c75 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Project.rst @@ -0,0 +1,24 @@ +.. _Project: + +Project +======= + +In MantidPlot, you can save your work into project. Then when you run +MantidPlot at a later time you can recover this work by loading the +project. + +What a Project Consists of +-------------------------- + +A project consists of a .mantid file and a collection of `Nexus +files <Nexus file>`__ it refers to. For this reason, a project is put +into its own folder when saved. + +See Also +-------- + +MantidPlot:_The_File_Menu for how to save or load a project + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Properties.rst b/Code/Mantid/docs/source/concepts/Properties.rst new file mode 100644 index 00000000000..ca99e0d6fa3 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Properties.rst @@ -0,0 +1,191 @@ +.. _Properties: + +Properties +========== + +Properties in Mantid are the mechanism by which we pass parameters into +`algorithms <algorithm>`__. There are a number of different types of +properties, and these are described below. + +Types of Properties +------------------- + +Single Value Properties +~~~~~~~~~~~~~~~~~~~~~~~ + +This is the simplest type of property, which is essentially a name-value +pair. Currently, single value properties of type integer (``int``), +floating point (``double``), string (``std::string``) and boolean +(``bool``) are supported. The C++ class which implements this kind of +property is called +`PropertyWithValue <http://doxygen.mantidproject.org/classMantid_1_1Kernel_1_1PropertyWithValue.html>`__. + +Array Properties +~~~~~~~~~~~~~~~~ + +Sometimes, a multi-element parameter may be required (a list of spectra +to process, for example). This is achieved using an +`ArrayProperty <http://doxygen.mantidproject.org/classMantid_1_1Kernel_1_1ArrayProperty.html>`__ +(which is actually a PropertyWithValue - see above - of type +std::vector). It can be created in a number of ways: + +- As an empty vector: ``ArrayProperty<double>("PropertyName");`` +- By passing in an existing vector: + ``ArrayProperty<double>("PropertyName",myStdVecOfDoubles);`` +- By passing in a string of comma-separated values: + ``ArrayProperty<int>("PropertyName","1,2,3,4");`` + +A validator (see below) argument can optionally be appended to all of +these options. + +An ArrayProperty can be declared in a algorithm as follows: + +``declareProperty(new ArrayProperty``\ \ ``(...));`` + +or, if creating using an already existing vector: + +``declareProperty("PropertyName",myVector);`` + +File Properties +~~~~~~~~~~~~~~~ + +These properties are for capturing and holding the path and filename to +an external file. File properties have a FileAction property that +controls it's purpose and behavior. + +Save :to specify a file to write to, the file may or may not exist +OptionalSave :to specify a file to write to but an empty string is +allowed here which will be passed to the algorithm +Load :to specify a file to open for reading, the file must exist +OptionalLoad :to specify a file to read but the file doesn't have to +exist + +If the file property is has a FileAction of Load as is given a relative +path (such as "input.txt" or "\\data\\input.txt" as its value it will +search for matching files in this order: + +#. The current directory +#. The entries in order from the datasearch.directories entry in the + `Properties File <Properties File#Directory_Properties>`__ + +If the file property is has a FileAction of Save as is given a relative +path (such as "input.txt" or "\\data\\input.txt" as its value it will +assume that path starts from the location definied in the +defaultsave.directory entry in the `Properties +File <Properties File#Directory_Properties>`__. + +A FileProperty can be declared in a algorithm as follows: + +| ``declareProperty(new Kernel::FileProperty("Filename","",`` +| ``  Kernel::FileProperty::Load), "Descriptive text");`` + +or for saving a file providing a suggested extension + +| ``declareProperty(new Kernel::FileProperty("Filename","",`` +| ``  Kernel::FileProperty::Save, `` +| ``  std::vector``\ \ ``(1,"cal")), "Descriptive text");`` + +Workspace Properties +~~~~~~~~~~~~~~~~~~~~ + +Properties for holding `workspaces <workspace>`__ are more complicated, +in that they need to hold links both to the workspace name (in the +`Analysis Data Service <Analysis Data Service>`__) and the workspace +itself. When setting or retrieving the value as a string (i.e. using the +``setValue`` or ``value`` methods) you are interacting with the +workspace's name; other methods interact with a `shared +pointer <Shared Pointer>`__ to the workspace. + +The syntax to declare a +`WorkspaceProperty <http://doxygen.mantidproject.org/classMantid_1_1API_1_1WorkspaceProperty.html>`__ +in an algorithm is: + +``declareProperty(new WorkspaceProperty("PropertyName","WorkspaceName",direction));`` + +In this case, the direction (see below) must be explicitly declared. An +optional `validator <Properties#Validators>`__ may also be appended to +the above declaration. + +Other 'Property Properties' +--------------------------- + +Default values +~~~~~~~~~~~~~~ + +If a property is empty + +- in a GUI algorithm call, then the property's default value is used + (if there is any) +- in a Python API call, then the property's value is left empty. + +Direction +~~~~~~~~~ + +All properties have a direction. They can be input or output properties, +or both. The default is always input. Technically, these are a C++ enum, +which can have the following values: + +| ``Mantid::Kernel::Direction::Input`` +| ``Mantid::Kernel::Direction::Output`` +| ``Mantid::Kernel::Direction::InOut`` + +This is what should be passed in when a direction argument is required. +The InOut option is principally used by workspace properties, when a +single workspace is to be input and manipulated by as algorithm rather +than a new one created to store the result. + +Validators +~~~~~~~~~~ + +A validator is an external object that is used to verify that the value +of a property is suitable for a particular algorithm. If no validator is +given, then the property can have any value (of the correct type). +Validators are checked immediately before an algorithm is executed, when +the value of a property is set (which will fail if it doesn't pass the +validator) and through the MantidPlot interface to an algorithm. + +The validators currently included in Mantid are: + +- BoundedValidator - restricts a numeric property to a particular + range. +- MandatoryValidator - requires that a string or array property not be + empty. +- ListValidator - restricts a string property to one of a particular + set of values. +- FileValidator - ensures that a file (given as a string property) + exists (used internally by the FileProperty). + +In addition, there are a number of validators specifically for use with +Workspace properties: + +- InstrumentValidator - checks that the workspace has an Instrument + object. +- WorkspaceUnitValidator - checks that the workspace has a specified + unit. +- HistogramValidator - requires that the workspace contains histogram + data (or not). +- RawCountValidator - requires that the workspace data is raw counts. +- CommonBinsValidator - checks that all spectra in a workspace have the + same bins. +- SpectraAxisValidator - checks that the axis of the workspace contains + spectra numbers. +- NumericAxisValidator - checks that the axis of the workspace contains + numeric data. +- CompositeValidator - enables combination of more that one of the + above validators for the same WorkspaceProperty. + +In addition to the above, if used, Workspace properties also have a +built in validator that requires that input workspaces exist and are of +the correct type and that output workspaces have a name set. + +For more details on using validators, see the +`PropertyAlgorithm <https://github.com/mantidproject/mantid/blob/master/Code/Mantid/Framework/UserAlgorithms/PropertyAlgorithm.cpp>`__ +example or the full documentation for the individual validators (linked +above). + +Writing your own validator is relatively straightforward - it simply has +to implement the IValidator interface. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Properties_File.rst b/Code/Mantid/docs/source/concepts/Properties_File.rst new file mode 100644 index 00000000000..8be3575067c --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Properties_File.rst @@ -0,0 +1,7 @@ +.. _Properties File: + +Properties_File +=============== + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/RAW_File.rst b/Code/Mantid/docs/source/concepts/RAW_File.rst new file mode 100644 index 00000000000..4816964d89a --- /dev/null +++ b/Code/Mantid/docs/source/concepts/RAW_File.rst @@ -0,0 +1,85 @@ +.. _RAW File: + +RAW_File +======== + +The RAW file format has been for many years the primary data format of +the ISIS facility. + +Structure +--------- + +The Raw file is a binary formatted file that uses a simple but effective +compression system to achieve 4-1 compression of the data in holds. + +Compression +----------- + +To be completed later + +Alternate Data Streams +---------------------- + +When the Raw file is archived to the NTFS archive additional information +about it is added as an Alternate Data Stream. This includes a list of +all of the files that were archived with this RAW file and a checksum +for each. This can provide a fast way of finding the log files +associated with a RAW file in a crowded directory. + +For example: + +:: + + d28cb560cdefc765fc8d550b6f335006 *SANS2D00000799.log + 52526cd14652284c2748e905ff74fc4b *SANS2D00000799.nxs + 7d3b5776c32b63aa76b9e36d2e7ec348 *SANS2D00000799.raw + de230169cda344118d26315dd31c0fb4 *SANS2D00000799.s001 + cbd0685b6ce19781fca13ba4395318d9 *SANS2D00000799.s01 + f9b9aa805179598207d6bf713eacd5a7 *SANS2D00000799_Beam_Shutter.txt + d10238be18d69d21f8890f73805795bb *SANS2D00000799_Changer.txt + acc92b1223bb93ad85e03b523639142a *SANS2D00000799_Fast_Shutter.txt + 671d77b4d2d9a1deee3e6dc9c3db9875 *SANS2D00000799_Height.txt + 2eb44a65f79f73e194cdcd48d38385b4 *SANS2D00000799_ICPdebug.txt + 0268e471a0ae4c0382ffb81622e03dde *SANS2D00000799_ICPevent.txt + 3cda6c3f179c6f70fea82e9ad9e75360 *SANS2D00000799_ICPstatus.txt + 19ea5cbe0e57b01db61b01ba24f70bc5 *SANS2D00000799_Julabo.txt + 2e6bb0fe5965527d1cb319fff0df928d *SANS2D00000799_Moderator_Temp.txt + 604946b7385f8d08ff9c9eb47b0803c2 *SANS2D00000799_Sample.txt + cf5022506705b6ba5c850edd824088be *SANS2D00000799_Status.txt + 54e4a8e82fe00cd5e9263bb14506682f *SANS2D00000799_Table.txt + +In the links below you will streams or DIR on Vista can list the streams +on a file. Not many programs can display the contents of an alternate +data stream, but so far I have discovered that the following work, at +least for RAW files. + +:: + + notepad2.exe SANS2D00000799.raw:checksum + more < SANS2D00000799.raw:checksum + +If a file with an alternate data stream is copied to an FAT file system +the alternate data stream is lost. It has been reported that if a file +with an ADS is copied using SAMBA to a unix file system the streams are +extracted into seperate files with automatically generates suffixes. + +More information about Alternate Data Streams +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- `Microsoft support + article <http://support.microsoft.com/kb/105763>`__ +- `DIR command on Vista can list Alternate + streams <http://bartdesmet.net/blogs/bart/archive/2006/07/13/4129.aspx>`__ +- `Streams.exe from SysInternals can list alternate + streams <http://technet.microsoft.com/en-us/sysinternals/bb897440.aspx>`__ +- `Practical Guide to Alternative Data Streams in + NTFS <http://www.irongeek.com/i.php?page=security/altds>`__ + +See also +~~~~~~~~ + +`Nexus file <Nexus file>`__ a newer type of data file + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Run.rst b/Code/Mantid/docs/source/concepts/Run.rst new file mode 100644 index 00000000000..53df6475223 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Run.rst @@ -0,0 +1,71 @@ +.. _Run: + +Run +=== + +What is it? +----------- + +A Run holds data related to the properties of the experimental run, e.g. +good proton charge, total frames etc. It also holds all of the sample +log files as sets of time-series data. Currently used properties within +Mantid includes *run\_start*, which specified the date the data were +collected. Where an instrument has been modified over time, and multiple +`instrument definition files <InstrumentDefinitionFile>`__ have been +defined for it, this property is used to loads the IDF valid when the +data were collected. + +What information is stored here? +-------------------------------- + +On loading experimental data there is a default set of properties that +are populated within the run. These are as follows: + +ISIS (not including ISIS Muon data) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- **run\_header** - The complete header for this run +- **run\_title** - The run title +- **run\_start** - Start date and time. Format: YYYY-MM-DD HH:MM:SS (+) +- **run\_end** - End date and time. Format: YYYY-MM-DD HH:MM:SS (+) +- **nspectra** - The number of spectra in the raw data file +- **nchannels** - The number of time channels in the raw data +- **nperiods** - The number of periods within the raw data +- **dur** - The run duration +- **durunits** - The units of the run duration, 1 = seconds +- **dur\_freq** - Test interval for above +- **dmp** - Dump interval +- **dmp\_units** - The units (scaler) for above +- **dmp\_freq** - Test interval for above +- **freq** - 2\*\*k where source frequency = 50 / 2\*\*k +- **gd\_prtn\_chrg** - Good proton charge (uA.hour) +- '''tot\_prtn\_chrg\* '''- Total proton charge (uA.hour) +- **goodfrm** - Good frames +- '''rawfrm\* '''- Raw frames +- **dur\_wanted** - Requested run duration (units as for "duration" + above) +- **dur\_secs** - Actual run duration in seconds +- **mon\_sum1** - Monitor sum 1 +- **mon\_sum2** - Monitor sum 2 +- **mon\_sum3** - Monitor sum 3 +- **rb\_proposal** - The proposal number + +ISIS Muon data +^^^^^^^^^^^^^^ + +- **run\_title** - The run title +- **run\_start** - Start date and time. Format: YYYY-MM-DD HH:MM:SS (+) +- **run\_end** - End date and time. Format: YYYY-MM-DD HH:MM:SS (+) +- **nspectra** - The number of spectra in the raw data file +- **goodfrm** - Good frames +- **dur\_secs** - Run duration in seconds +- **run\_number** - Run number +- **sample\_temp** - Temperature of the sample +- **sample\_magn\_field** - Magnetic field of the sample + +(+) or YYYY-MM-DDTHH:MM:SS (ISO 8601 format, see +`1 <http://en.wikipedia.org/wiki/ISO_8601>`__) + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Shared_Pointer.rst b/Code/Mantid/docs/source/concepts/Shared_Pointer.rst new file mode 100644 index 00000000000..f6454bb03fc --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Shared_Pointer.rst @@ -0,0 +1,61 @@ +.. _Shared Pointer: + +Shared_Pointer +============== + +What are they? +-------------- + +Shared pointers are used extensively within the Mantid Framework to +simplify memory management and reduce memory leaks. We use the Shared +Pointer `definition from the Boost +library <http://www.boost.org/doc/libs/1_35_0/libs/smart_ptr/smart_ptr.htm>`__. + +Shared pointers are objects which store pointers to dynamically +allocated (heap) objects. They behave much like built-in C++ pointers +except that they automatically delete the object pointed to at the +appropriate time. Shared pointers are particularly useful in the face of +exceptions as they ensure proper destruction of dynamically allocated +objects. They can also be used to keep track of dynamically allocated +objects shared by multiple owners. + +Conceptually, Shared pointers are seen as owning the object pointed to, +and thus responsible for deletion of the object when it is no longer +needed. + +Declaring a shared pointer +-------------------------- + +creating a shared pointer to a new object + +``boost::shared_ptr``\ \ `` ptr(new C);`` + +assigning a shared pointer + +``boost::shared_ptr``\ \ `` instrument = workspace->getInstrument();`` + +Several of our shared pointers have typedefs to give them much shorter +definitions. For example instead of boost::shared\_ptr you can just type +workspace\_sptr (where sptr stands for shared pointer). + +Using a shared pointer +---------------------- + +Shared pointer can be used just like any pointer. + +``workspacePointer->readX(1);`` + +The only real differences are when casting the pointer instead of + +``Workspace2D* input2D = dynamic_cast``\ \ ``(m_input);`` + +you would use + +``Workspace2D_sptr input2D = boost::dynamic_pointer_cast``\ \ ``(input);`` + +and that you should not delete a shared pointer, it will take care of +itself. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Table_Workspaces.rst b/Code/Mantid/docs/source/concepts/Table_Workspaces.rst new file mode 100644 index 00000000000..e43ec07a442 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Table_Workspaces.rst @@ -0,0 +1,99 @@ +.. _Table Workspaces: + +Table_Workspaces +================ + +- *This page focusses on dealing with Table Workspaces in C++, and is + aimed at developers. For details on interacting with Table Workspaces + in Python, please see `this page <Python_ITableWorkspace>`__.* + +Overview +-------- + +Table workspaces are general purpose workspaces for storing data of +mixed types. A table workspace is organized in columns. Each column has +a name and a type - the type of the data in that column. Table wokspaces +can be created using the workspace factory: + +``ITableWorkspace_sptr table = WorkspaceFactory::Instance().createTable("TableWorkspace");`` + +Columns are added using the addColumn method: + +| ``table->addColumn("str","Parameter Name");`` +| ``table->addColumn("double","Value");`` +| ``table->addColumn("double","Error");`` +| ``table->addColumn("int","Index");`` + +Here the first argument is a symbolic name of the column's data type and +the second argument is the name of the column. The predefined types are: + ++-----------------+-------------------------+ +| Symbolic name | C++ type | ++=================+=========================+ +| int | int | ++-----------------+-------------------------+ +| float | float | ++-----------------+-------------------------+ +| double | double | ++-----------------+-------------------------+ +| bool | bool | ++-----------------+-------------------------+ +| str | std::string | ++-----------------+-------------------------+ +| V3D | Mantid::Geometry::V3D | ++-----------------+-------------------------+ +| long64 | int64\_t | ++-----------------+-------------------------+ + +The data in the table can be accessed in a number of ways. The most +simple way is to call templated method T& cell(row,col), where col is +the index of the column in the workspace and row is the index of the +cell in the comlumn. Colunms are indexed in the order they are created +with addColumn. There are also specialized methods for four predefined +data types: int& Int(row,col), double& Double(row,col), std::string& +String(row,col), bool& Bool(row,col). Columns use std::vector to store +the data. To get access to the vector use getVector(name). To get the +column object use getColumn(name). + +Only columns of type int, double and str can currently be saved to Nexus +by `SaveNexus <SaveNexus>`__ or +`SaveNexusProcessed <SaveNexusProcessed>`__. Columns of other types will +simply be ommitted from the Nexus file without any error message. + +Table rows +---------- + +Cells with the same index form a row. TableRow class represents a row. +Use getRow(int) or getFirstRow() to access existing rows. For example: + +| ``std::string key;`` +| ``double value;`` +| ``TableRow row = table->getFirstRow();`` +| ``do`` +| ``{`` +| ``  row >> key >> value;`` +| ``  std::cout << "key=" << key << " value=" << value << std::endl;`` +| ``}`` +| ``while(row.next());`` + +TableRow can also be use for writing into a table: + +| ``for(int i=0; i < n; ++i)`` +| ``{`` +| ``  TableRow row = table->appendRow();`` +| ``  row << keys[i] << values[i];`` +| ``}`` + +Defining new column types +------------------------- + +Users can define new data types to be used in TableWorkspace. +TableColumn.h defines macro +DECLARE\_TABLECOLUMN(c\_plus\_plus\_type,symbolic\_name). +c\_plus\_plus\_type must be a copyable type and operators << and >> must +be defined. There is also DECLARE\_TABLEPOINTERCOLUMN macro for +declaring non-copyable types, but it has never been used. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Unit_Factory.rst b/Code/Mantid/docs/source/concepts/Unit_Factory.rst new file mode 100644 index 00000000000..0b063750a9c --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Unit_Factory.rst @@ -0,0 +1,76 @@ +.. _Unit Factory: + +Unit_Factory +============ + +.. role:: math(raw) + :format: html latex +.. + +What is it? +----------- + +The Unit Factory is a `Dynamic Factory <Dynamic Factory>`__ that creates +and hands out instances of Mantid Unit objects. + +Available units +~~~~~~~~~~~~~~~ + +The following units are available in the default Mantid distribution. + ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Name | ID (as known by Unit Factory) | Unit | Relevant equation | ++===========================================+=================================+=============================+==================================================================================================================+ +| Time of flight | TOF | :math:`\mu s` | TOF | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Wavelength | Wavelength | :math:`\mathrm{\AA}` | :math:`\lambda = \frac{h}{p} = \frac{h \times \mathrm{tof}}{m_N \times L_{tot}}` (see below) | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Energy | Energy | :math:`meV` | :math:`E = \frac{1}{2} mv^2 = \frac{m_N}{2} \left ( \frac{L_{tot}}{\mathrm{tof}} \right )^2` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Energy in wavenumber | Energy\_inWavenumber | :math:`cm^{-1}` | :math:`8.06554465 \times E` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Momentum (k) | Momentum | :math:`\mathrm{\AA}^{-1}` | :math:`k = \frac{2 \pi }{\lambda}=\frac{2 \pi \times m_N \times L_{tot}}{h \times \mathrm{tof}}` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| d-spacing | dSpacing | :math:`\mathrm{\AA}` | :math:`d = \frac{n \, \lambda}{2 \, sin \, \theta}` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Momentum transfer (Q) | MomentumTransfer | :math:`\mathrm{\AA}^{-1}` | :math:`Q = 2 \, k \, sin \, \theta = \frac{4 \pi sin \theta}{\lambda}` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Momentum transfer squared (:math:`Q^2`) | QSquared | :math:`\mathrm{\AA}^{-2}` | :math:`Q^2 \frac{}{}` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Energy transfer | DeltaE | :math:`meV` | :math:`\Delta E = E_{i}-\frac{1}{2}m_N \left ( \frac{L_2}{\mathrm{tof}-L_1\sqrt{\frac{m_N}{2E_i}}} \right )^2` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Energy transfer in wavenumber | DeltaE\_inWavenumber | :math:`cm^{-1}` | :math:`8.06554465 \times \Delta E` | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Spin Echo Length | SpinEchoLength | :math:`nm` | | :math:`constant \times \lambda^2` | +| | | | | The constant is supplied in eFixed | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ +| Spin Echo Time | SpinEchoTime | :math:`ns` | | :math:`constant \times \lambda^3` | +| | | | | The constant is supplied in eFixed | ++-------------------------------------------+---------------------------------+-----------------------------+------------------------------------------------------------------------------------------------------------------+ + +Where :math:`L_1` and :math:`L_2` are sample to the source and sample to +detector distances respectively, :math:`L_{tot} = L_1+L_2` and +:math:`E_i` is the energy of neutrons leaving the source. :math:`\theta` +here is the Bragg scattering angle (e.g. half of the +:math:`\theta`-angle used in spherical coordinate system directed along +Mantid z-axis) + +**Note on Wavelength**: If the emode property in +`ConvertUnits <http://docs.mantidproject.org/nightly/algorithms/ConvertUnits.html>`__ +is specified as inelastic Direct/Indirect (inelastic) then the +conversion to wavelength will take into account the fixed initial/final +energy respectively. Units conversion into elastic momentum transfer +(MomentumTransfer) will throw in elastic mode (emode=0) on inelastic +workspace (when energy transfer is specified along x-axis) + +Adding new units +~~~~~~~~~~~~~~~~ + +Writing and adding a new unit is relatively straightforward. +Instructions will appear here in due course. In the meantime if a unit +that you require is missing, then please contact the development team +and we will add it to the default Mantid library. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Workflow_Algorithm.rst b/Code/Mantid/docs/source/concepts/Workflow_Algorithm.rst new file mode 100644 index 00000000000..2ea111cef71 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Workflow_Algorithm.rst @@ -0,0 +1,47 @@ +.. _Workflow Algorithm: + +Workflow_Algorithm +================== + +A workflow algorithm is a special subset of algorithms that perform +higher level tasks by solely making use of other algorithms. These +algorithms inherit from a specialized base class DataProcessorAlgorithm, +to indicate that these are indeed WorkflowAlgorithms. Due to the special +functions that can be applied to these algorithms it is vital that they +do not alter the data in any way directly themselves and rather use +child algorithms to do so. + +Special Functions +~~~~~~~~~~~~~~~~~ + +.. figure:: NestedHistory.png + :alt: NestedHistory.png + + NestedHistory.png +Nested History +^^^^^^^^^^^^^^ + +As workflow algorithms are effectively just a collection of sub +algorithms tied together with some logic it is possible to represent +them as a simple flow diagram, and extract out the child algorithms from +any particular run. The nested history approach on Mantid allow any +workflow algorithm to be "unrolled" into the child algorithms that were +used by it. + +Flow Diagrams +^^^^^^^^^^^^^ + +As workflow algorithms are effectively just a collection of sub +algorithms tied together with some logic it is possible to represent +them as a simple flow diagram. Each worklow algorithm should provide a +flow diagram of it's operations. + +Examples +'''''''' + +- `DGSReduction <http://docs.mantidproject.org/algorithms/DgsReduction.html>`__ +- `MuonLoad <http://docs.mantidproject.org/algorithms/MuonLoad.html>`__ + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Workspace.rst b/Code/Mantid/docs/source/concepts/Workspace.rst new file mode 100644 index 00000000000..010cc4c0fc3 --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Workspace.rst @@ -0,0 +1,105 @@ +.. _Workspace: + +Workspace +========= + +What are they? +-------------- + +Workspaces are the nouns of Mantid (while `algorithms <algorithm>`__ are +the verbs). Workspaces hold the data in Mantid. + +They come in several forms, but the most common by far is the +`MatrixWorkspace <MatrixWorkspace>`__ which contains measured or derived +data with associated errors. Matrix Workspaces are typically created +initially by executing one of Mantid's 'Load' algorithms, for example +`LoadRaw <http://docs.mantidproject.org/nightly/algorithms/LoadRaw.html>`__ +or +`LoadNexus <http://docs.mantidproject.org/nightly/algorithms/LoadNexus.html>`__, +or they are the output of algorithms which took a matrix workspace as +input. In `MantidPlot <MantidPlot:_Help>`__ the data from the workspace +can viewed as a table, and graphed in many ways. + +Another form of workspace is the `TableWorkspace <Table Workspaces>`__. +This stores data of (somewhat) arbitrary type in rows and columns, much +like a spreadsheet. These typically are created as the output of certain +specialized algorithms (e.g. curve fitting). + +In addition to data, workspaces hold a `workspace +history <WorkspaceHistory>`__, which details the algorithms which have +been run on this workspace. + +In software engineering terms, the 'abstract' concept of a workspace is +an 'interface', in that it defines common properties that are +implemented by various 'concrete' workspaces. Interaction with +workspaces is typically through an interface. The concrete workspaces +themselves are loaded in via Mantid's `plugin <plugin>`__ mechanism and +are created using the `Workspace Factory <Workspace Factory>`__. + +Example Workspaces +------------------ + +- `MatrixWorkspace <MatrixWorkspace>`__ - A base class that contains + among others: + + - `Workspace2D <Workspace2D>`__ - A workspace for holding two + dimensional data in memory, this is the most commonly used + workspace. + - `EventWorkspace <EventWorkspace>`__ - A workspace that retains the + individual neutron event data. + +- `TableWorkspace <Table Workspaces>`__ - A workspace holding data in + rows of columns having a particular type (e.g. text, integer, ...). +- `WorkspaceGroup <WorkspaceGroup>`__ - A container for a collection of + workspaces. Algorithms given a group as input run sequentially on + each member of the group. + +Writing you own workspace +------------------------- + +This is perfectly possible, but not as easy as creating your own +algorithm. Please talk to a member of the development team if you wish +to implement you own workspace. + +Workspace Types +--------------- + +The workspace type id identifies the type (underlying class) of a +Workspace object. These IDs are listed here for ease of reference, so +you needn't navigate Doxygen for a list of workspace types. These values +are needed in such functions as the AnalysisDataService's +createWorkspace if you are writing C++ or Python algorithms. + ++-------------------------------+-------------------------------------------+ +| ID | Workspace Type | ++===============================+===========================================+ +| "IEventWorkspace" | IEventWorkspace | ++-------------------------------+-------------------------------------------+ +| "ITableWorkspace" | ITableWorkspace | ++-------------------------------+-------------------------------------------+ +| "WorkspaceGroup" | WorkspaceGroup | ++-------------------------------+-------------------------------------------+ +| "AbsManagedWorkspace2D" | AbsManagedWorkspace2D | ++-------------------------------+-------------------------------------------+ +| "CompressedWorkspace2D" | CompressedWorkspace2D | ++-------------------------------+-------------------------------------------+ +| "EventWorkspace" | `EventWorkspace <EventWorkspace>`__ | ++-------------------------------+-------------------------------------------+ +| "ManagedWorkspace2D" | ManagedWorkspace2D | ++-------------------------------+-------------------------------------------+ +| "TableWorkspace" | TableWorkspace | ++-------------------------------+-------------------------------------------+ +| "Workspace2D" | `Workspace2D <Workspace2D>`__ | ++-------------------------------+-------------------------------------------+ +| "WorkspaceSingleValue" | WorkspaceSingleValue | ++-------------------------------+-------------------------------------------+ +| "ManagedRawFileWorkspace2D" | ManagedRawFileWorkspace2D | ++-------------------------------+-------------------------------------------+ +| "MDEventWorkspace" | `MDEventWorkspace <MDEventWorkspace>`__ | ++-------------------------------+-------------------------------------------+ +| "MDHistoWorkspace" | `MDHistoWorkspace <MDHistoWorkspace>`__ | ++-------------------------------+-------------------------------------------+ + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/Workspace2D.rst b/Code/Mantid/docs/source/concepts/Workspace2D.rst new file mode 100644 index 00000000000..76bd44da45b --- /dev/null +++ b/Code/Mantid/docs/source/concepts/Workspace2D.rst @@ -0,0 +1,20 @@ +.. _Workspace2D: + +Workspace2D +=========== + +The Workspace2D is a Mantid data type for a +`MatrixWorkspace <MatrixWorkspace>`__. + +It consists of a workspace with 1 or more spectra. Typically, each +spectrum will be a histogram. For example, you might have 10 bins, and +so have 11 X-value, 10 Y-values and 10 E-values in a workspace. + +In contrast to an `EventWorkspace <EventWorkspace>`__, a Workspace2D +only contains bin information and does not contain the underlying event +data. The `EventWorkspace <EventWorkspace>`__ presents itself as a +histogram (with X,Y,E values) but preserves the underlying event data. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/concepts/WorkspaceGroup.rst b/Code/Mantid/docs/source/concepts/WorkspaceGroup.rst new file mode 100644 index 00000000000..9544412892c --- /dev/null +++ b/Code/Mantid/docs/source/concepts/WorkspaceGroup.rst @@ -0,0 +1,26 @@ +.. _WorkspaceGroup: + +WorkspaceGroup +============== + +A WorkspaceGroup is a group of workspaces. + +Most algorithms will execute on a WorkspaceGroup by simply executing the +algorithm on each workspace contained within. + +Creating a Workspace Group +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Select a few workspaces in MantidPlot and click the "Group" button + above the list of workspaces. +- Use the `GroupWorkspaces <GroupWorkspaces>`__ algorithm. + +Un-grouping Workspaces +~~~~~~~~~~~~~~~~~~~~~~ + +- Select the WorkspaceGroup and click "Ungroup". +- Use the `UnGroupWorkspace <UnGroupWorkspace>`__ algorithm. + + + +.. categories:: Concepts \ No newline at end of file diff --git a/Code/Mantid/docs/source/images/MDWorkspace_structure.png b/Code/Mantid/docs/source/images/MDWorkspace_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..a30dc7fdb5c75558c79f1889af81abfeda2b9bb6 GIT binary patch literal 44483 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%0DHxrjvsvtRf4=DshG z$JxUV7lP~h@bO|_j0ANl`>=Mjt|xEUb7<OSTQ1k`CPauwH7e2fLjX6s$@SCKO%;H5 zG->JEPGtT$EF1by*<jNO6g%_r<zhJHmQfU=5yXPbVZfAUY6dP30jHf7rpqE0fGGg2 z1>hPAgj64?r03l%QX3u<T4M*3VMAmlD{M(q-^ZU9kAAHiX15uhZv%83o4b?yHyDQa z8&2B_n~yZTfefTwg%HQ^$%_hRhYXk`(~3i(tbO6u9p)p(YCL}1eh<7DfKEnq`*xyM zZM4(CQGYFhgtm|He2gM^f$M~kf}L2aW6+qExeL$6pLfLe;vpvNK@5>hN%fn)`ox1g zTltAxnAyuxsM46y`*ff>OimG$uLzX2A8o<ooUSrbKYp{5ja|UgIh+WZx4>`KAbvAm znwBfe$1_{~#%^HUWEE$*qDgAIo?EKe?siyMz+0)iEwXEy#$;qj*kl^08j<x@+v=HS zo;Pj8V4=0efq|>E85yGbeiX9^Q(MpB^6<D(*Jt?ct79;^tB@Lu?&HI?z52)}NKcm1 zFw|Hb+&EF^8v~lhR+<V(76~TF=A%<WG2+*=jauwgK4s%uYoRo`H3G5vv{md6-I~ed zUYfrhLg${6Xsj4*+0a{QUM&r{vk|etMFi^86_G-Y>~Jd*8gzJ{*r_m6%NwlwLS?83 z;3XWC#d?v1m|oQ56KnFdr?1u*U45L*RNM#0N2=)DdjY~6UoyoojvqNoxdz$4|3b@X zI^BxX$-pHwopnxmlRuoki3Vh7u+^}Ysd25AJtb5S_HYr*mZuD_cSBf)brsW4(pph7 ztO#`mBlg9^)9iQ}zdz0b>bP0;PiczMEX%B@yVxodbRPd`&l7|35wJq}Kqj5ja^w>b zUTZVTLdU{FZlldG%BUw%rv>i%#9LI2AJ$2eDP}3TYp<=Pbf*U@A@U;g&n+oesEsyI z^UBWDVl$)9xpA)rT|PR2pAGWf_npiPD>6U&C`oBkUyqhc=oRMc08nN1aBo`N=h@$0 zY&^|BEsQ;4W*;S187*e^`X=}WF68!wP$IwfA!~a=#QGwLc0TuvT~OJu&u`wzZ6*X% z6648JW~zw7SH{0qD6jOQk&9?-#m#C^JnC-2$?b-q4M=%&_FcVJZ~vB-GEZ}P$9~ao zd-?5a^f#7*cNNRtfNt1|H57b<A10F5Rc=DXjc(9Q-qzCf*aUjk)z{=GDBF`CJ$#V; zOTG%6-;~3Y;!nbkm%i`9p(MgydgyE55AqGorbmbqyNDu}tO-SyiwQ?JkFI*R6?U4? zIbRVb-h4rJ?m7)@DUQNpLFPMCwK*gqB}VB^SM2O$_Z~$>Xiq$7;$<QG`0j`p?)trI zq85mUSZ$4|^_^$@p?E*L>?2Q~8nU4Z-=#UZ9qTk8cH~W&g3!X={F8PuG4PtM80tAw z^on%aVRU+5Azd(aleDoD2)@~#vEbTrVa}8&!LpkAiOcwP;_)(fOvmFH!@{&wZD&LI z5Ti$!j@E8mt6VL4?(Zj@{B8)^ISJ4vI8_6ut@SG}_6Xu1D7z87+r$}_TPlgxH_OvM zB%0kZF1+x>JMG0Vs;{4(m1V?a&N(51j31Ydk_>sn@Hb>}5dG(dA9(E2hxG=ocZ1=z zFr3jx*nI9g3bEqe1I!4ZI;gyr(P9THfdn8Etxc@zB94P;iktH~7xv6GX(2{c<R?vr zpSGy9{lKQdW(+ZYye@A1k4!W3hCakWg~d}pWAF#KuuQM~$pqi{MzL2ce5Vkcj5bqA z>Mfc2P$TH$@KrOmt3Y_8cxe7e-}se_+7W4!2PwSxeHCk{@3S5hhq&hb`?2EUC5hK& z-w!R2)xcK(Gslqibcc`FVvau2<qu{qswNdGK2`}PG{CIZ+C{$iJc&~DZnd`Uu>?bw zLD#MP{f~{FrS)$i{}I0&P`6HGQ+*ZRNP|W~<6mrA2ncMHU9&zu*>2xhqi8-Oek1N~ zf<a`x(k`b>D=xPjsv!$9!{7$Evk|ce?(DUr<!XW!??;Iu80d-4{NN8V*VNtHLFE_c zFYfXDndUl(+wX$9F>cj&vcjQC>+RnWleveykoOBPf?i4a!LMzjo))r66r;ei0QRAb zj}b9VmNi@g^sY^G98ZL<bX(+agdN=xw!+RG?V3=OqLt<?I#!mQMMn-SHt#5&#=7d* z)@6;cN~grP1q>qmj-Rll`pK(7%SbKUBKsy|b4Z`R(ef3gnazydI@-2j3e8$cnPzOK zCQZtR+bF{W9|!m!JeAk2hq2h}EI=D%WRoa@gUwK6@EbW(sGf3~b)4vNFz2BJPN&Ut z1!=`t0n=ys3o6=_ykVy|iE|@abUgC&J+axPO7G#hb}z=D2|c{c@nypundkS!(^acw zYAXt>@z(>H;g-I4+fmC43A-cn;*=YiFW{WjxZ{?;?@(T?;e&Ni{BK?upfWtT)IHft zsT~*$H<I#>Oo#}l!zWIF|Ng)Euy6g;HkF5AKX~A7_0)rlG2Qrup#3`%@eLNtqsdhP zN^AIibpCGI@P(K4A#VfwO?H4{i~XmSjam+A6WJXvPDgCh+tZd6{Cs<CpupA@!g4-I zi<c<nAv?7O=Cp%dbm@_c^LG-)5~^nAVYKe=in12bGTrOZkYWOnTpr%<6=5C&PYftm zf$&ym=-=G89s-E3yE+k>q{ZlfwVm#zrzXIS0l{!nG(@hg+QyB3F;;FXj5d`B;Mz+2 zCt~~>K)Nv_-y>;5bFE6tIQ~sp-GG#8dkR^y(3~=2BU{BS5=Ql2fG@4d!Gv^O=Sz)u zmtuy~wHV7G(e&sI-cii;u==*=^+U1ghFW%KNs3Y;)Zq2}#ipeJY+7X0`pA6ub?gvK z(8v%0W@E?PQ@;BdtoETJWEVx_UpYvCKZL_Md)Y0gPOw48jq{{}=mdmOQ_i9P>ShCm z@Q?;lUVAa+u&B%b4>@LQq}IMhMd8&Kc{Rhf@TyB>mndHHV``;+AdmELaUs4@E!G(U zz538}njY9;5ZWffk4ZQfZ!&*|s|~JVq?7us!y-*WeAW=$V;4e#SUo1pDv$b7u5_+5 z5WXAQ#QRMmyNkWB;dLuu_v1iJUfBRzAz5(U=El6j;>}9979-B`n%(PR)D+*NTc}<% zhU*9~;d63<mFuSBpfa%jI~?SJ_1~%L?-{2{5XEci!e!8=@vSV^`-_d0DCM6N+MqU# z&}0BAGa)vpQSg+Rc%nc9!*mzoFuOeJ`MF#v=8ZiD52ukQOFPrBA^A~*iOJ1%AXD)R zF0=V(fP*p&sGxxbjW;jf;Hu}u$X&z2n3&XozKU!qsCW`zBjYStBQBL!>KnW)lAu1v zLIag?ysQ~1ap*SWp5yx*B|UYh^|7Zt=p2eSZf{9iEk<NJAmog|&6W0<Awv-V(TA^u z&fn)XD3Rnvgu%8go>y56B=))DDjLk?{3H|a0ag@LmBpd=r;)FG5kn)upA&|hBzAY< zcLdFtAp$i&<`(STKUcW=G^h(5Vsa8Mw4tWSIKrE4GW|Tc@g>4q%zn_LRlmMpbeI?q zQ>Lx;r<=>U!3GAgeEIGO4o66{a5&kjpq>K8g)2!ogbxV}+QW{z7}xTA@!okkc=H22 zhmN$>AYd)N-=b`&sy43$PPK}>{I;==p{_94I+ndrvsi!qP`rf<9_{kd<MeCeZXB;0 z2x$%NK>X7d(<0^2+=OnR_dWthC7Dmq?ld5T8`Zld&e%w~E*s)}QJ#{ov2t@!fdFd# z#kgrnSOSdOh_AVh$<g6^(V$dG<;uD9WL|qZT=}h7(Mvq2Xre$K;ZbQ1Mc|~#;<zoY z{vA%HGmQX}fi~erl{~hhT4WUK_>=d70bez`xEH<f^u#EJh09S4Hj%C6txb@s!VUV& zxyAN<buvvZd89ghkFN5JbfZ?%J%shA+$`<VNYm4uRci`FxqpeSvFkx{a}foK?(2M- zOPOc+u4O^*`bG{`;^A+H&8D6Ua+0QFh938~NH;l^$u?RcdVH`ezvMk#z;8|(p;ld2 zv1qa96WC*f)<t*!9BC&ToiEsBsGhZvUa>qRoW07l3F{Gd-aCOzWa8|nI8nKbweNe! zsEM{8;Dr-OyPP4%(~*tBwp1`IstB$7wsR<@^y@FBS2exyYG~bzj{-;uk?<M1`#76o zHo-M`UAYk#%|La>7ybebGb=)eit-`9N%q~xF3@Gnd%^jxdM0fI%iiy)maZ6YO+Q-9 zs|$I{9X$=7V3kX`HpGc{auUFb2b8^m5_}IyTfh~=mIkPG<!Zu9-y`CWcOY2<t^j)+ z+T7e^wAj@Ltcw!&-j2NOX!F3Uz>>>H7JFOc^ESK@{gBhp|DC-64FA80dVr16Q{#Pi z!0W_(1*;j5=2KGh2Pe@#O!caxFMRq3bPPp0$v>n7@9oL9{u`)_>3`BFM-x|x|40Y> z@3Q?*2;n~gvZ<;_Kk3qGgbl{MQfmazvZJjA*(lwohR*{P{@8QcM|VzsENn1;c5r@S zH2Enfh#Or1Id+cYeFwfxCO=M^i4zZ@nn^oETezol7;aYF{AF*Z_ls}Qx3{lYvwQ#5 zECp`11r96ee?|nXpaMnwG)Z%Ir-U%O+zYGq@gYA06Gz*AaReF8OJ|kO@08FX_A%!n zY498G#0M7uDditPIaY&24(Y!hA9q_9?KXBtl0I}5xAAj;Nt1%jiAV$RwHTH4hmn(> zO7F+k{_XW%N6o`s^*QH&oKAo5kfMoSR(_#QbD>kLu|l&+;dc{WZv9y4>Y<Gn;hpp? zQPX2z^CAVYZZWQlX;xRM-k?|qr<z4>ob~^{k5Jqy9~ur2cT^J^kBs@^k3qzv+<`lW zj?knaQ?`XsQ}nI~_v@rcpQ0=dL7!BUh1BA(A%}(i`zX}|7kicj^l}`#7J^Ol(r2@+ zU%vX7T<5VaIOuO#q#iG0&9}Xop5)4d+w#N_hvL&*e)C}!214nAw&xoGhw)DTpWI5o zHM9$R!mwk{!ZLL%(I22%h%QKA>`jSLXH5`t!56;z1ig|?^Hs*m?+bv_?+d^^BY_MW z&(qpu<S!pUlm3`%EJhK0<g?05S=#37L0O6xJam*$=P@?jQ!>$SjY3Q#KWW!c5qtaj zMy$k68DS(1p=BFcg3-<l;R)GM<ot9(_?Ep|=QZ|<@j{5bEwRs8z~#1n;6}`P?$dw< ze>`L)gw9lJgsTY-lgS!(c+@gvo~#&rc0WQf>C=F$$QeJVN^M^jE)(Y)f;_?YxqaC% z$4-dzKF2Ni8Ks+=05)z`?E2Ri_@ua&-w*QyyIcM8I-I=K|Gv4Hq`;ES?{*(oq6KNw z{<n7dveBO4sYBEIN3sfX@-JTkp7YhX`LoxH9{EPF&z81UWK9|mv17D&g(2dM&SE2D z=OY=XKF;Qk`yy<CCGpz3i={AIICz=zOzRqvCZv~_F?6weNi|pZ9exEo3UTLTy_^G$ zYm4Dxw(<1o+R~NxP!HjmLWk9R1m1h<QemtQKhH8=(&0Wg`Rgd48dJObo{8@enS=VM zQ(r~X2HkSQ$x{i!tskSy-X!6B>?OYD<g-!n2{e-etmsfA1xx9Bu?QW3zmZITfE(cX zW^olq?${MW^3;j~eBVM`wd&AU11cv#dHXt-)>h;+(Ipi5a(cs&3sct;$0f6_%7DSv zyJq1iyCeC}>raX6u_7n6Daj1m#LT9`$TWr6can^!QQ`HI+;9b~k+01|12oX$_DIQP z*pl@O>{?)Pdjh#GIb>TaZkraFg<~T`NV;B=vnTYwJcz6OL_|$ybR%=ZLY`O$Yq|`x z97sL>_%~>Tb>WMuOI}RaE{1oZe->Em1J9h-oWPe|)lw=R;DkHQTZz(PY~jpTu5ETr zzzSq~x3tLAtmoFxls|xaX8e2*e)TTkn09s|$TgmSKx2)5DX)_ziJq-9c$-}Oc!TyZ zsHXm8p5wYT<z}J83K{j}Y_}Inj+S1Jj(S(!NDt6R-^j?hFMMmdAint`%J}4W>;m!z z5Q0V}{$rK(S6NR2vpegzm(Px^CEVO`mJNoNU!3t2aQtjj_=MOZ(|PgVZfpEOk^)=r zrB(U&#ev52^yDX2U5EA#A1yErQ<3T=o9`BeHU>704-&R}(S@^ww-iK#UvrbPU9V;P zM;19~R2Pp>9!T4S_ga<lfS>(FbwI6VL11)jMSTfOiY&B@UN#*08D8k{5b(-531n9( zaev5}DMt+P?AfPGvn>X;(>r`G>SY3JPgvbKl8=m18A%q|A`2X{VO<HSCK*0?Dt*sk zuK76}IycNlVp)Wy-e~Jj)j*SH6m1R4CJ_fvvUuX;<o%9<PlUQ%gktK$^Idsj$86w8 zJ90BuoUAX?m~R<?qVy%UVg?n|ktN!)v}6qkhTHm7<%l893HrsjZ@O)Y!%Sfev}X~{ z4v4?S4)W|H-q6+dGHR^p%~FB>P%w(!k4OR9C7IF1g{Sdck0;Q2dsWJMdGTclz}fZT z=c;KDVvHz%Oieo6$*HAAhlc>C{<*e@`x%!a@*#GAI>coFCO2}kGE9J7)U*EO>ui+G zeajNDGN6di;dbGXNeL{D6p3{D@M!o)I3h@^<c`+z>gHbCp)pXUF5_MdU*yNl?3m>N zMnBh>`9jE-naUwraxX-y2s6d#q|GxHKqB}`K-5%=Xr%n(fF<|pg<%#k!aRi?sF{6t z+>8GwJnnN`x7k8uqxo%P2q1hYpkIixcm6*_`66OAg88W0Iu#Sd?m>@Rt{st*8>rH% z$k=a0RuQ#M`s(=}TxFy9H0cQ)!+HPz>bO<;mP!f{NbB)EmYB|#J+PTHvhgRtRU(O^ z?z_#5e99|md)>?Tf7-jws3w=KO&2L5pfo9hQUe4;iXhccq(?*$2vs0}G?Atx(gdUg z=^a8xIs(#5sEQbRF?6I!2NRkEzHrXD_n!N$^{sV(eZTJf+Us32^R9Q^Ju}bj+0Wki zNJ7@IF(YA*(okRNk%I?np0vje6RC)=Cm~Wl2_MiE-Iub>v%4Y7knO=_Jv1%IvR4MA z3g42IHmA(3yG1Y-{sR#Z4y>dmyDJPUH6n%gu^^kB0EFpF`<%F}td0(aC~#Q~^=7xz zTTMgNAkpl}q)yWUSh#;;UUPGpVNj5Mp^7-~DTkS6u1SQlF&mEMXPu>^l49oy#T^aO z$}<#4FdZ$(_xOy>KE8CEq_b{XH_at`75|5FoP;|==jCRgjUg)c(QkbsCN}k*Ft*~4 z)X~v;&FBBTWfj^17KX(a>C-{@Lw@v?Xd6j0PzV1F!QJKVO8wh9`6sRIFOc>ZZR#(d zihtu=UnG3`Gc!p(6W`zN0t)_tM*c-%Czvq*7l`^ds;kJqQ&S1X=YNsw|FG|0wWj?i zR{QTu{{nme9p1lP-u)3X<->oXNXAQTk1juKe4_-!Q)oJ)zp9*_8kpjGBrY^^ziRSL ze(TX9^)eS&Q!xM2@(%n^4u8&gRVB=}!{XOv?%=B`l;XsMsuuz`Ups*VdLeWX;`aR^ z1Sb>Dk{3^cuQFN^X2*qKO+vUNyAV{g3C>A>2w|7S2>h#y7XNu?aqPLUkDSD8w0FZL z#ijYc=bGbrT_N0qLzTKj<BCJ;7GLUHuuRw@%DE8bwNpH_f69~9{mV%L4FM>tSj-sL z?I0GT;O>00ncZ%BGxZF3-J9lZGK{W>Ts`rbdPfiI-LqT2uRhw9DJ|b-aRPP*MfQTU z`S(~wUDDnXD|^mE8d<0?8?B*i>dZbTcRL6R;E&xFvON6g!$-T&{4AIBIiaqCHRg+N zzDHPHUTF8s<1+o0<+D==25P)PFCl{#I`jI%)|N<VaJX#*_nURuS1qmGff7K_35!No zt-kAwQ@;AVSs>h<g5e@tc&Aif==`u8o|;voewVRN@Q0A4-%F+-1vZM8F0t2|7!@B^ zjleQhdKnVtH!Qe_;R?GiymcYvUyPXJ^m<wGn|}<kAA#%;Yx5{*VwP5P|IJrK&s*UR zLvBF|52wB`LFA1rTcy{QyD4=i`LAl;`5f=wxgv5-|4n|0#lbN0ek{|_<yH0U$dAo; z3e1hPj-O3i6wvW@J0>&6<-Pfq44O{e%DrLW$Z}^}a~tK4mW<`Hf&pN+lhz|ud$|@M zjU)XJedt@rJ7FB2HsLRO&t!6m1>b3CXeg=hY@`rW>Zcg;A>twJY)8~k-KQW*Mmn1N zDa(13x6RW6g{+$)IG5c4;J5@YGD_o}T+jzx29|r2wJB>om!II7mhgVVX})f=_46_f zG>fOXfu?A9ZMr(}$U<(EE<#e4@dN)d{W#eg`dQ!4n-#bS4_ar2*&cosLTFRTn&^q# z?2Oadr1nGg>N7-smx~f$*}g)ibq060^YInJ|6A((>_H4W+=ggp-e={I^BM(mH>f)9 zGC@NPf00=7pEW@TI(<I8k(b|b6YSD@r+WTWixAx865fj75rmit8z)~jrfudoXEIG{ z?n0qO`|k7>q*>KCZ~*CY46LdUTK1dMQ#V|!&CaCc_INsFwti(m%Ro=K$#x<}fRgXS zCUYai^K?YwMW0tRC-syQO~X=i4o5TU_j-J691KXQD7f0=(yZ2Yc8K}+YPFIy=vTgz z*DwL~qC+e0gw_#a0lv{wl;<O_aNX?bZ`GMM=%GcwfaoaH`#e^Tn>Dx!$JK(b@hu!Q zulF4gj2zt&_WV`zzm<F%)(1Ld6O?eDa;x?*Y5m+OSQ`6@=m+-a`)*?cPwRl20paki zy^)iMFavpTS};F2LcGRVBwk4PP4>r7Ee9^LgVcAVDJvWsKHhH>3vka#EGicJR(V#1 zlFDa@JCm|{BpBh@8sRCVT+7u(0p#AJXT_E`>4DpdAhVp4L%|usVd~N#>Z$kUcN13* z_*XZ#22Znb^aq2&!A4J~=d;aE?{(@?a{DISrymS~mg{Gezz>_|7S8c)=b?m*uNxM; z7yn4M7PSok5Yo?>XCo%@X1ocrXT?oE0}4cKX0wQuD~oN4JjiYecf0yRQA>govCaoA z0sx~PCfCZg+#DEe-7BQ%c+hNTq(~FZ>8fnN8lw7oQ6q#gu_77^0yjkYeWTAT@AyG4 zUnocg_$>f`T7;o=ZhEQiMy(kC1fdSHtBncsa}f{|$#ii<n$B9XsTn5Ogd<}uU}RB> zfKQ2@N^MQGB+8;M{J8I0_!zR6A&#^p=-=xdnxoB$p<`7Nvfj@FWHV0$(5um3>}lyU z0z=!@IxA1~vE@YpK}J_kqB4UA#qopXYTS5PTCvq)@bqm()GYC`XN5!hf?>sVSu$^> zum0fzMZzP<exwG=fWLl0i!iMUJ${2+z9d)q2howw+Ujk&6K-s?dlCP_(6~YolFOo9 z?kY#4mvWO5*Ni<-c--o`^$S`2DZvwaqSqzrU12rlY3XMkBx6n$(!&1b`lw(v>Khn* zF0Xg4Wh}~-l)y+&pMClpK*)!D)|1Q^y!5nG3OSbZ-I(I#b{t#tabTtNwz!nkSAG)I zWf3WPriZba(qR08XpgMajQ=EalLt3abxrMH^pYv8bR>%;-uoC@lwK=>fP;HR9-f^a zY~w}3UqzE1MdRrJH#Oce2tj#Da$K@k$btF=@7@(T<mB09YU)(q1xS8Fgs<3G&)$^K zUCPh7Kdbwq`I@6pnD;&+aM~;pmUWEoN5j2Y<7>a&!ouYT4t=e?yzJ}~*X1n~ex)?Y z?8Qit&TdunOh%P+=-C{&?w|LU#GG%BtiMV;(y12?#V}G2L1rwpB99imr(;N#W~k?^ zU&!sH5_n%LthQYFQ;fCF<h814=D*z9Z+%a>1ntF{X-6<kQK{^Zhl1@03@63>;NlI_ zIYj{xqtV30`HoCVeRFEg)F`KQ7f1K8T3FS6cUr2FJZZzMo>Ua(zyvX8OSah5HV|qE zi@v_Y@!s{5N6zN_r4yZGNTpI^!?5|09`=!z0LH2#@z;q3*)_?D-H|DbZ=JDXyF32z zg!x>Ekx4kt^rpDH1y!@|<7>~`i`@21Zk|*)SYEnjfA37LI_MLZZOx54q$OTUKQt2# zU2|A1TzP7KOeX;ym>ES3b`7gu_e|~dj(z?@Y{E%10va8?TTBFN8x*FafS&)N9Mnv0 zs`bcY6C$B-!3wDhbk5ee@yY}*E^kRM2;=npy}U=)Lh{SgC=x823zCfOlzV-9^KW`{ zmW<tCfdo9I8r9Nk>Wplm%<>$W<*Hj}pB^eA@ij0l`6|+)s6K;$T`@yzgWmh#zlis2 zdjCW-j}9||L-y1%y**kQi7`*lZZI7V*~Q7V;3Zr>uMWZ4w8jR;Nxn49=JSTHTeD-5 zLTy$xk%j^qQ$~SXkq<o6e$RZD12<7Rh_g?*IL^JruXFolWxS0trF*q)p^x5Km#J#8 z)A-z)Js<#J=J2T56%u`4v%9_0+(4U~Ynlt0cvdP8&^5ab&&Y@5kzK*~TkpWaJW?cC zzICsDgohELNxMJEKpDl^&=+x5INeoWss{4lGW4p%553KPHCOAeYWaIDqO*@*HE8hn zV}KTxr;@#6$z#mOWt5l>NC$O`3kkdYZQs)WKyiSmOjuwl>T(&Va_#Lv{x%bOs)40! zoHM#x&pLHPkGOGVkqxUq5skXk3vmEB+S{8FOI8RvRyZr?B&WC}guqU)Zp$bK=&kXM zU-|T2>`Btdtj2F><CmJ6Uk*rww|No)s8=|0LF1--XU3tcqlaF-A0;raqloZJfJvA- z<n|uTV7DRj`;=i#e8bj}tNtd(a0c(BxJsJ%l{E$0r@isW(za&=YRQjWor8+{gdmXT zO8u>s)KB{E9q?6(@PQ0vFgWH8yc5%E4WqVZW`_PY3d9#eYHeW>Ixc-!KD2G=r&j0V zrz19Q*X-9;KLYQ-)&Z;SWj5y>g(D#gDU{w?ayDdYHlO8g#O&ab{6i?9y<<D?F(%Ie zESIyGg_5qswqfhp3PZ@CzGB*pU>lqU#ae1Ao3QDp{?$MAvxE@|4mj6!DxnB-(W1f; zEp$bt->!}J=vu<-OQdI!U}qS)Hfjq7tjB!4^E~USBYOE-C~~pAF_eahZ*On;gL5FM z5#U9&E+qG7u)Rfw!0|S(b4Vp#*ypiV{7z?yqt1(~A#m3_zX9>fJP*tC5bYZ$&#UQ? za%f41J$~|OPOZv4ogr3G>2FTN=&#!>uid5i*7JF+gI}%%(YyKu*G@&xe>BU?j{U@i zS3smL$L!0q07PActyp#%KkB0&*baFcpPG>5;9faZ4=ppwD;cd=6|)JMS}qOP3C={k z5H%R{a8UL+k8i|vTSv0xC7y=eiKXN6DIO2lU-UbTuO;!|r&X1PWvy50KG>!;@^`lM zFBerhQ34k{Q+|fIV)iT33QibRpCdNp@&eU}udnaPcvu)GBzltuOCayZ#KZ&;yw2|* zOxhHjqn3|0)O2+bXFBy`w1b*GpWhf!S8%K<XIv|92^SfNhz-_ghG|qhJkauIlBQX= zl3ubsy=iZfn*k9EaRz|LOWOkk>H7wlx?CF<Gr7xJLPRd-#Hq3L;7!@vIW~2iKa?|z zFZ-{K&_uaSQ#qV};GcQI-o8}WB^%%aru(kuzkQ~6Z7d}=UQ2k1K45ffBL2v}{L|*O zPa>IN0pi1*%3YLUJ(b6EKVqx69DciJJ!tH4ljv~08M2nuP&`jfGZJL^9;d3E(#GyI zZojZmW?JRBLD4^MpB6;~Igp4QE9YHE#%js0suiSvT{xs%$-G7LL9OyUjy+$d6;5J} zbyjcj)IUeuxQcXgwVBf{TPl1y-Fs9!{o7h~j~`LuI@eloK8uH_D=882>7)h|QoNyl z-n};g0!1gQfl2W<tx_ch&+M6yR*LUb9X|vyB-0snfSWn@azIM(&*6$BHNTkPEV;F% z)!4aU0B3gZ47%J91CKZ2>b)dx-LySSr9+D@3pbdENOdPOEZ5~u<QMO0dK)U<R22M! z1J|zv=#|uVK4uCBH`SyV-&1<MX|l|U?98<A?|-|8QAII6ob>x5yw~RlhW|7=t%TDT zv_i*b3nPm@yvE)j$=@>F@LkV=jxh<%PB1VY0^En)S<@In)Uwnn3{MvG4kzZD-)$;m z;E_ZSPqLA*(5buXv3n72bbSr!$T{c)lGUm0<B!oC^!jSuOGu8lYlDS<IV!*O+17%h zRcF<)bq4U!uQ&4L>Ty7cL7HzM0>P~~jq+_shy!64ksxT3(!I2D9H+}6nmc_w>vY04 z2Ak}vNVe8gn8>3GktTakXSSDGmVo)*-LHO@LW5;GpSIG?Q1^>KFs?`DIg?XSjqF7p zt*!un@^Ub|=1yFbs2IrmD$U$@FEaHxKw<d&{@gs#j4v^qIn>O9J}s8hD2bfb_}vKY z8K8~h&8bs5W(va~!*Y*z@t4*V-3`}K_*c*bL)nTP#V^$kDbZ_zVoP%3uXj{0f0e*7 zFx*nQA<ZPTYM1}L!M%eJeqew9#p5vn)0!;Q$8F4s{DgV2cR>rv@hiCIH=xu+jQQ)E zhJ1Ehi$=ynp27{ilx8D;ubjm-{<VBBuXiYH%i&~eTXf0gdJBI$C|^!N&Ja2DdrQY% z(wcJugy7XMHwlGXkAFX*>)*Pic{{V4YGTH(Ba3QK_i@$$sz%pDzp6`!`1><MZ@DG~ z<II>m1-IL$l5vGpgxRw}-}g!xc++O)YHfsCHF1i$1V)ATO561hTh&I5?jAX&w4#1P zdemR(<Mtw2b15!C8=_{$*dq<6G6Vy#Km2mzyWD@vz$fDo15#PL!a#SynRnUiH1#@) zbNe*jPTJph<N?KI(B~8DBO+Ed?*XZ-0OD88Y{+kY;_+L{c`UHXGOmolrgVYT6=(c3 z*7&Wgo;q-<%vFNHm4nIR$#u8~Zg;zOI4}3z{+B*I>#2zbnOFJ6E@6i&!rkSMw^p<w zwiwxQKFLu@n2pa5$3^u?C>mQ=Pe^Ni^h75!@G89apfPqIUh8#65A=?aC6hx#?06i* z**yIdeM2u4s|2W2;yD0>mQ9ZCPV$p7FYDu!h%o_uC54stI8awH%9xe=vaz5d5y-Bl zni`~@Ca_A0+RdobR?!lKYcpkts0_^%ke6_l45XpOrl=FwCHh5TnzwHgaynp-X2QgI z!T=TC7Hd?AbWF(Z{aA<ref~CpLgFx~IBUwCmwF(=f4V>9UQ@+un3|lZT|U&7V!>gu z(9ZUrlIhiH56%Nk*iT0-FPp?!$&Pwd^$Pp&*ritEL3j`Ghlv^vqc@qMN4px>Du>z$ z?prSsstenS({F46Nl+}6OJToZlG2s-2p!1Wu)7pu&35;ox@1rf&q3LZRBiLQpE2;% z^NK~GgYsP;w*n(AkjEImf^s@Wrz^1c_khX@3b4Cryb4;*C!O4lw#Q0&(<djJ=A?6H zXA;2<X~wUNBWiI+>}JmGtGkEpl3wLR-v+foI*_=_gLmi)ytk)6oP*9Dx%xlp==-(> zEP((){yP2pLRIyy{-2PlztLe)QDbV%0G=^f$RXusY{<8_348&Q-G~le$jpwzI9G~i zVZ!xAy_2BPOYfl@J=X34Uq-Ww*;H@zaGO}vIS+8N$a7y81a@WDwhF)6l)a|${TxM7 z)A2N<`THv)gp|XP`O8SRC-ZB=WcX&2t4vc|58~8q`afH-Od2*F4_P}zf02Vo-_)Fn zP7C_!PFxx6rQ$bi9Qpbl=Qw}OmN6$+AdO994bwzj)KFmkog9itHIsEpnlPB=@jVt8 zGe^fy;g-4D7uj(#RuoS-7(digkvo~+nYF)Mopaa@Un`$Q7Df8Y`1vd$urR>@#n)`l zPi#8U)G_bHtZCHvaq9dN-W<n5pGJ*b%|c0~57DYX*lUbEG!*?wrt5ntl$mqW+{Gbc z0T8W8*C9?lxOm6|rkg@l((0g!z`6as_1;xmA2(j~%=M1dUuR~PxXU;+rxHgqh@B`> zR032aY!72v$>}=l)SAQ~q$Dph=m)99<+FN=zEtl$^-|F6F9>T1^YSXMbgB}O7Hk?E zO&@W}>R#J*$&hu>(|w$d?wK}X7`nA0D5()r^D}alqAmP*jwyQ>z<=M(pGhd%Dn{W3 zdtx*Bn=l)%CqMjLWDEEeL)QvbaQ@7Jy9W?)F;C*wdnP>Jw6&&oS~$DwqOC^yZ%<-^ zp<h*ahHlv^yg<K7V3YxXv0JY-KB_KUt}@qWk;QUGM0-$;J@vLf7SD^Waa3;gwQshH z51Dk|QY_h95xap|j~;`6Y+<-*kaY9Vy7p%`dPb{(0DTxvJR^p=7&*f#li@y|%2J4# zeOUN79542fsTGl@kTIy%x<=*lc8xPg+{%UGApNj)_YU=-WPPPc6AF9QSz=$`G1sd~ z*n_1gpgDX$6o@kj;e}2EiBpTdSo-tv@VsJSLB30+p@8!6<b($NpN|QR!aiT383bJv zg+E&I@az+l-lZp$7&<~97d8CaiF7V1ERkOHM<`rkN`#X!J^isiaq9nj7o(Q#=R^Xx WL&RU^#Fi5g%0pFMP`Qd_;Qs(`$T6q@ literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/NestedHistory.png b/Code/Mantid/docs/source/images/NestedHistory.png new file mode 100644 index 0000000000000000000000000000000000000000..62be27353b227772e643b459efd8b93ccc9df786 GIT binary patch literal 27834 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�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 literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/XMLconeDescription.png b/Code/Mantid/docs/source/images/XMLconeDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..321083be38798c4fec5fc0dca67ac65483afd583 GIT binary patch literal 46074 zcmYIPV|3<B8?J2|+iq>!*4DOd+wIo2ZQJhFw(UN(@%8=n<(%Nm$t0P%?+cSm{>saV z!^7af009BPOG=0+0s#Sw{~QCLKz_E@r~$A)I~r$Eb!TBm69Z=pJ6j@U3mX$4WpfuI zCN?556GI{<1_n+d22L&pb}j~1B3g!@<@nqe^`{=Bv!tvj<QfPLG$gL8vzhx(5wyL8 zh7%AF!r*@^@Tgsx@lPR`nV_s75Kw(A?1uq35KyCnq==xh`}$?Jq&=Ei#^_Flv`MlQ z3f8(!oyK}-&KdLuGM~%?w78zVGoiP=NG|?XYtQ~^IOi)<7y`2y;RwPzM;HS4CMeqo zt=2W$NL9ix87UY_W^izvvb3r#p!>Cl3K*mioe_HfQ$C5hkx9>_<RW+H+e=H)2(Dh8 z#tJIs8CabrMP;O7-B80yT}6w=3ck`Z(xloz#iqWBwW@+Pr8!ikdAMP@uA)VK8Ao*q zV?uNA|0hSQC_LJ`J>O)9T)R;e+j(<z?a!+Q91#xkmNMwYbLJ)wH?R<BF1=Xoyrt%M z%^WD?4&2OIG`v^uSdYD{)20j~SL*K9JV$xZpEPPd8ev_(T?A~|b@%>0xo=QU8IUq$ z9cn3^j4UV{t8KBf==r{Zf0J|D7B{Y^@z;RZxoq!VxkjYhYV>x~u{zp(_UdUjlh)QA zSfS}z;oaeT4{_q}0Jzin)Mb7&wL#_#fcBn0(K(H4d??eT;Hhg?*)H=byuEF2^d8ZF z)tQ{J$K)gKm|v|K11_W^A7HOTAX!e7gb+R)E`*TL__p6hL5*!4Cc;~{-k%eAd$*P} zSMS2;ZFk`E(1ygWhb0%fVt3084d&<xj7~y_bF11K-#_aedh*OunpXb6wBz&J0dDe) z+BzREGrXkrcEfM(LkeC7FwLXy=fnwVJ7fzP-9KLZME2abA>W(o1gb{B?jF0{d@BK0 znrG3VXbxs4IsjI5_uX2ZLF#Q-Ve*L68Uz2AwM~71-mw#KC%^mm^m6AH%Ssgec;M2G zI{nIFCa*Lru~lU2j<46nay6mf$1TW4+x2%!F5vU>bgm2W$-)3wrEtmmOZ9B<b@Cmp z{)pW!U*J7Vtpl?nYSU#%n(AqLzQy_*y(@=6^AJh1siOD9Y9V7v*8JkDwQ9(Cih+lx zE3btf)$#PQ+V9i)MrP({`{%Od`te<!Y-ss2+Vx##7cqo=_>z-M?2A*qE8p}^mA!=a zhiRKL>*=qPlbwJb=@mLR`b8U?=jZ1cULT{L4CRLuk2RZ>Ttr_+9tTRmcd=D&@lwhZ zvYYgFZ2l77HUG^`2v6Ipmp3pOnbSEu=8UYslE;ZgY+Sq9+i|9y@7q}^x7&4A<F!~x zhgS*P@A>2$8T@9zW>5K>G9Q0@X{brF+78L}??yMj=gnc$8<I{p+w{bwX{MFF>0Y%7 z{+;L7DtbHHx{OVwPoJ>ju~$lvhs}ir&;;M3WVPcO_L2)RHfBrTetdl7;mB!O*4wea zf6g6v0m8ZyRYjOE;SL(mhubTF(5Gv+3|bkluP$@odqDF=tJn2A-u{VVqz(ba`TI4R z`j-BYci8L0rZJNe<a-G_g$9Z?suWA%(ezXP+iXvckA*32CjojTvni}r<cZ5sryIc5 z*OweIM836+24mf7#Y?u+{`p>2>){<I526f*X9}-Amzkjyb^?a-`v}LbDFTG@c=r zMOqsY+IaTSLaUsg&y$r=F2k+4ySd5?RTPbU_2=^Y^P`lOVwsjb{lhi?nO4g@&Z);A zgS~UR38BS(tLV#xFR9WyHbsl5S&{jQ82mqIFyOtXgamxv&a*8pyeOw6-FmLQpavLV ztvub;*7OqxLGy>_4}P!1wNKGs8Obe@sT87!k5S}zBei;~DJm+8(gh3=rTaU*Pw)6M zSO4DKS8!aH!6wd~OgjGD)G#Mr7=BgdDN`3Rq1&g6R-`P0VFsg;rQJ^U^!OCEirw>V z|Hnrr$>ro@#xH*l$S?<JiFAHNv5niqkGT{`Oro4g5Q8HR-DXErc)RX5Y9(uV5I$xM zRIE3QKg52|DsZ@7tBTX)pyD}i;SK)zd%<KXVlH&dFmvy{@(iOZk1&#WJLAO{yTAbe z)#K(_?^?fWVpPbzZvV=y<#F3@oLf=+7Tv+jxfsSl_wwMl?sU8z#`mu59ggf~fLRc$ zNR}&P$wJWEdN~K^zHe<#Tc)5J88w@*o?*X_mfWquCb!62qXbHj!GlBAKr^BQw(KK` z3ZVx=i(}G-9B||Sl2=l_#JoEGxSaUBSb<eqPE<JDE+?0tUQ7!e2zAMF@S!F-!ffNB zS|v+{SqL9+)R-*Em<%C}o0l-VgL^<;^~X<$ztKG&`Jh+<|I|LuYvOZmzbJkbHgb?R z$ZYcmsxHqPrx>vRM;~lEC2+`tT)sE*r~~|sm+D|Duph;c>XLod!D1Tb$3vsKl(LlX z_8>Fvsb^jZ&%%a_ja0*V5(s0zD~2Te*Ph72lv2dDgaqR?1|T4S=pBASWPP(|ySps; zX*c@C=4-_RX!K~PuV|?PNiMtlO!n()*gF@Yu^XD{3}%k2*o|TgU;VGfBxCS`CJt_e zWzq8a1@7RlG6MFa0c1hWG-76=OHK8O_pBWK9~r9bdrpm|T<>k>@u=wd>uzGyBoFcp z*P^N<N~vjm<g`K>C)4PuXh#Y!&ji(pg$B<Yrzso=-_oT`7yH`?(i35IkC6ID<nHRU zGuyY>=iULCWVXK_G#jFWc3hj{A-rM(dYG$~vWsDYuN=#9NM+|ORih<D`ctV<ek-Jy z<QZ(HnM<^6tZzV&L3Vg{S~p&d{|F)vnr0=Smf*3wK9!4nTG_Y6g#7mqQeilVUUm7j zx)`ZJ0%I7ZoWRy5>HsQZEO9LY3~(EO2&%7Gno@8neSFtv7UMw|z{_S&1GxA4_0v~8 zXeVUTdSy9&k7n#v8axTzLma_s(b&wZ7T19l(5hZWJ18&Z=-TPUa0BdfMKu>hE|jD% z_U@0~u@0&*QuB$sgT&L!u|8g38&0V+M?MjM2!5iN40`-JyF|zp5si<(BB#biRyBwm zY%qn{1tkbBV(mOv!YRnQ&@*Ug(iiD8a8Z;q2X{!1w;APx5E;dInYAxLe<N@*M4X%Z z@o^VD;gNfa`X2y~vf6wNX>c~?7&9`=Nqr=x1UZ6s(A3R=JIL^;`wadnRY8!8LFI^Q zQzloiC>x}O5V^`Zz{^$jWpn(6^#y(od_<scPF9S+=I`<AV9S1P=ac+#AFBUET=q{N zQBC-_)*MXo>iG<DIVIM21rX|X^lSEd|H?Hj=c%~M%ARv{#iz4?uO&<xCszeJ;B}^_ zlS((x1m)q28IaiajnrHS32iTLvl*E_5pE$;-}4=iL;S!&%3u9$>z|to&i6!zgWUPa zMelCRVL~8{V4)Osta}7i9Gztrvl!*xqMLaE3%O9+0IF{G@|<<2E+a+9JS`abiUY2~ zpab5lN7nFaeG;;|U$gI{{*0h@6U~2MlWMcSAJBgk%C!5k8BB&%@cO-xhZ;gV8D(A( zf<*9~*6*k8G&1LBRlozeET4=M$J-UO$i>EZJTK&LsP(DhUAL>7e~PJvKdnivvvWmw z@%^>=?2-GN81U2GYyMh%j#uG^)?O!V<Rvr8db=^yq{R_1Bz<1olgP>fc_S5!m+#Rn zoAUcySy(AWV$4w;*kk7!_}3uST{tbEyuzn34N#ZtPYTE^6yWoN<ID<3VUUQ=a8HLm zPk(@ZvczP8ec6o`ht~b=XgVI2)o<MzW4D4A`j;`n6OTjGfdXP>H?tTkD`m+{o=1s9 zCm>!V4GqOSIrL1~2&RAq%!ASd#<3IvO)jJPLXcQKJ&*(7NjG%g(!yqc<p+3w52?hw z>j8@8{<+hUf`xL7Hva&=nUX;jsra8IUE_H(JSU4m_;E!Fi3H-Cz)m??7%JBBKElKO zKt=Iz2Gw8-GHeIQ?3F#;UHdS0$py6WfIeNT#eI&@VT$M*@d$WRI1o<i22fte5wg*{ z9=KT6|L)`Pa<@0;K7O=TIipMXw@dP~OFtAU3m15?OdwfII;eX{F@uWbXtxU*VJs;_ zD#0Gr1OlTREQFgevcD|oB1Icw*dKXW)fSWxq3=zxJ~&!`3SqCgZshl~5C8EkCV5X< z&3a3X#}902g5t;G8<ospL-z0Smt3w-)7M=Gd<<DA+R=?z7dUznUeWMd4dYa1vYW!s z3<cQ?Lt25fLBe9Lw2+FMN4VJVV1)D`Bc?QyIATBtFckfB@OLDYLD*r>#&6BLE=FrO z>Xov2v3^oaF#zmkHd$EHeCDW^Mh{PV$h_h2J=}Xb63hT9UhX_`nSD8I3ods`yy^_o zyk}whZLv8i%wldF*og#jMTUxj5#E+))B#tVPLS>11yQywDg4eo<LxqK(b{ew?@o|S zFg3&|Wbf5G8$kLl%}~WggUZY{3p-jYgyy45SqGr=<zVVG9=V%d9QJEydOHG1PGCOa zUsRx-T;`vtAy=9YX6&Msn%zf{Gm&A9Dy8hAv8Wv2M^i580WhX}iU^`YTNWIo?*o>a zP?aoxyk39z9LSbU`j;Ebq@aVrQN(Pnq-PZmy#G4%ucb0CpKI3MrqNoYO%OY(V{?y+ z)Hqg$^(s*1cm~c>86-7v#|V|JsP(0kn8bvZFi156yjxLF5SRC;nqo28Bj}C+g7KoF zl$-}KMH$(WCOTf*xN=&ky2|x91488RuT81Imfg+(fSe9b@^iDt<qw<F{7qc>vmIr} zbX-Nh$c9M=Ka|P5W~#V^)1Hr|>Kv3%uMugehZ?>F)|tpkE}GB54FambeB7C5Sz*yw z$<COjnFu#(hn&S7f^&|c4RvW>>Tldxy?FfIbJ)<mX=@L{QpFjxA>OS3c^fqFnXuzi z;$>`23YfTe{~2p(WZjOt1KjEP!h;%9*>x+iS@CR836AH}9zrQ0j6xQmrO05L{8da$ z*+hbJw2XKd+Lv*J8kURJ$YkqJ((~=b%T8geV~dO3=_OPmcojcDpf(=2C`RNckw!QV z^aqIhm*J|pUtEz~M;ht>_;NC`#y^XCM*Y`lki*uk)DF~~7vHmV!=`5YFXgKfRuwif z(6C8RIWS}yiQgt<y!(Q>@F1Z@ng>}0aJa1*0`?=C4kgV74rR&-tj@xtnykva<tv4r zn-7<HPWHz{cB|k;u#&97=Kq?AQ*F_qE+%YDpuTS+ggJEh(Es4`crZi_bkQ#z1pY7^ z^7IaeU%e;e4amPBH`gfT#&dzT?EOm-G@;+FkVnC7BCzn-4HMedRkm!-e??}K1_;Ab zNrO$%csi_3A?S%BJjR1?fze2!!p*^8?3y)$$e+FGWfd7V<mC$I{O_ojU?}kBA3e1p zCx9*(>k_L9yMr85t?6~M+dXey`c->bB7dHNcz~3L%@gjT2F@b!k+xso@4?!5Svu9Q z1+HSKgT85pgHyq29rR`iej!{2Z6VEoEm}ujAe~5`j3VY@pJf?h$6cyT=tZa<CK%pe zjgsRAhHc|fJN$cCQGu)BFtu$kku*RVhww8#*Z|Lz3)DuKOphvA->1FM`)&NJ*6T9y z8u<s?LLcs*qkoMD9I_}PbMM2LcsW;B=bZaFkU_c>(g$=4D3@KB2fWXn0vj^~IwBh* z9Kjhkp^Vz*V&p_1?&Q*87T_T5kRLYCsApJ;mXWeTkfxw9;L31JChHa95C*CBYaM4j z&AiChfvSl{U3p4TRGAX@C>YhMHtMd2X8$Gzk>B^2z8b06q^FL(83RP<)wQ7_FCwkQ z-)9B79LT&vrJYyv`0R%p8?%w5@L_&El!d976fM2tt{kB9WNZx+H4SX_88q#3L~|J7 z9C!<%NaXLy{;p(c5VN9B#G&Kp63><fu0?R$EzKB$j=^GtD<Vh&5$C!(deZEMcn<Vb zhm7wOeU|^u51<D1&}+~7&kbSC&dgPcQ&$AS%S8dy*(Jvo%jcpyu(g3n9B@!?MnFmt zhW<vA4l||^8O>73<qF(DYvG(AOxO8wJn>2zXh89y{w^O^OeUiW@aC3XkPmxoLdZ14 zcTd_kr<D|}kJBH#cEAgwFI%KCAc2bjUIo6)lY&}(G;D{`+ge*&lVAXa-1t_RQClIa zIr90u8~U-2`k`c@ZzJzg;QutU6J}b_XYlw`2)}c`RoO%9Bcx$2Ti_*WNGCg3X|dzM z2-$K2sa(K>z*$XKbE{ruWFipf4Oc;<+mXUpAA?DVPd#7kWp*C(`{F{goESC`_^1{r z-$b)~7vsTu<BXx#ZG(c?Zl464n^i+<N9c-e8*R1g4E^tZOynj}56`VhvF_MA%JGjG zI|4SQdOx}02d9_;zo2GMwR68*KV+^&p?f%^LqQe8UQT5E!R<a9={ymqyo(i?JrdhA zq#R@Dfin4&evFR74e{fogF6U;7VLV)A>23voRXDFK!N--oVbaR6s>WJK{Zwvtvfi> zKV|tF1de`&Q908ampom%R~eg7P8ukX6}JuU_0hrGPyWl;1PTCbI^vJ|LfTtCEV^?M zya0#8;N7x4A4+Jax%!T=0~SflmL6D(l`;0)5bWnpN6G`_FBuUl$9HoCRH!{?V%98U z)(7IMiOnziPSpEDD!*d8sjuP>I%;ZlyVt!kL+~7iRDS(V*UTF#L8FKO5)Y*%Z8-pg zx+DsZJIuUe6zI8tJR}E`@F&_qp@bD$%l~CXE*jHjN&MTgj966aQ0DnT)vLQAOG$Lq zzjru=rKQA<9VhzwT#a?hX}kTo+iQk3P0Vx=_Do1-2#l0oDn&8qKyoZu;s9+G0?{Y~ zC@iQ$aAjQe%2i7x%UOG6Sc7I%6Hv=tlXy(|LfF?c-|Kj}Sbx>N!YceY={v_ZIMr&` za|KTD#XaA(zR}KVrq_#vPX)8Vd1r$cm;Es_Um;B|&9Moy$HHD598Inai;j(NrvPky z6OAi*L$(xUv1ejHosND)`gcMRG#IMXrJ|81^3I%jZBj8J+SCAJlrb5dp}a4BWzt=; z5ltlf9PN+48P>KVUf5WndlPL`=nDBB7!hFVna<bqcF2po<?Uh<Bs1UBwAZ}UE{ouZ zgosUUUw5?AZ|`ntu|wmMJ*q%^vz*{7rRP?`;ZBsH0$p8(gf-2;P_0z~Ug88DS{pS| z)X7Xf3TT67&r0h>!UV>E3#uMGQ$6U=XD|$upLUHp5pL7bCk)55YGHh>oxs*LfvjLV zIwy+U0Bt`v)sWJ@@q%;#pW9V``NpSr%W{y@Z0awqs;b(w4qxli&S|QRWhK47X|JxU zkMrmJDT=T`+S#?G-P7R_`@FD21x;mKvLm4n)!GXO?<=a&34sgXbMc-nQc6YE$pd1^ zgpP^W$wHNkSp}vL11ePp4YF0uR9urgt7UN<IpVC4EOyd_P6jywDab#ry;nuL<RyoH zdPKFGE6j;iQz9RsJ;n9_Mg>h&7F#kOhX1B?&$)(OElD)z2u<$qg4(u6@rBznJz(d& z_GzLKTW#j@1cLrKI(8?#vJKUlChQLEJ*%<R(Sf8J_Cd;YX`l}78!?CN!}V@}--IyB zj3g!kSAh&w9QcF=GN?j(V>6=wEzqTN27~*o{wjr-#;B@MQc$pA@}DF33YiKd@TY`` z1NKCOla$WtZ-09M93;`r80zuJ&HiK$HVCi*WF4pM%_g8-3zp(cqPsowRSP!;qD}ui z{GwmHp6916RNrYof#z>@%FXIr?Zs*X_U6zD2e0il*Wn}FsTSREJWp{)|Gb*Nz2bkv zB{3iUevEzX92IOiR4lg#YU^05Iv&8nx52Oo41=~%L2IB80oJUBV-(Y_UIRuIWcoP4 zV{}N7i#%h%H`Ul0EnM^%NOfS8%wjn=X$6-|1~<b62H6Ct&Nf)$r|6cJ!hsjWEVy$J zfP8TD-FIJWyH%9ZXL%d2;M+W6e*9j8TVn3C2^Ur4(@M|GY_z79Oc<vCSnA*$db%{U zPP&*d9#zJ_h_O(2@P5;OEq58|-QD$)&3p=Twt<WM)!ctKqc-N?GfIZgS7)%vv^p{= zmX?OW6?9Z3E-Q(o8=H66egB|JA|B~C&!Pa^a@rtc-bo=$20>=k1|@Q3!MhD=Daf(N zU}Ds%kMr_%ASf+bPADGW7#ij7p7w0=y<B9}o>BFi(hE(W;d{SS)f=4jrM;}Kw5t}Y ztT|Zb%(3*y_ilSXPj`M@*w2$|R8%|`;96vh(_GFrw>ilnQNcLIoGCKXt!!A;+05=d zCe0<fHqk)0wJ$^$vV@)uYywsgU-wX{-VRSr2dvGFi`Y6!w5)^HH;R_X!&>$?ufAX? z0h?n%-n>Z(&M_^JMO(pFIr7RZ;P*Kri`TQUaPUZ??mX_v8(S=2Ilrpnv1hwME(oR= zyV346FYP>F+BPmVq|fo;`aH>f<KNXyQ|{wBKS7R?i@qp$vbR?0MBvIV4HaoaBP6C& zRWcPl9uh`E_7dy9I(%1uk8JI@t@eB)d+c;4w3G7W;I6cyPLNXYzMUQ@a;9*_VTk^g z>XJ|`^#|D!tFxsT5FxLw81BBtX-&h#8%-xuazDPj%jc*%ao;r<x{Yx}>I*7e_$7M> zc0Huea%1Bchkz6|NW3$P8=+zZLFDseh+1}h53ORYAD=&m*MG7Cm8dCkMJ`n3bWL{) zX4KYWkMH>-b1=KGYqXmB4`p>4MuL(EFwqd`4ZSoKZaIGE$=3&<s?w_Pz7~!?CwzGu zRUEv)mbaCZCggA67-<?To1N+&7(v~pL+O2A|6CJ|<*mKzs-j7<ibgu{rvo<PL!On3 zXm(qm1w`y+ng+T@7JHz0o?hEScvc~e(BT#MBKab5apY$WVF>cR&Cc`aEmm!lX7!l+ zylv|(PgZbk*S*w)4L+Z}du8t<{j6zOPWp@fXOMKEv|yx)ygtvuGr)P8-19-fV+f<f zAlX_%M|D1#W+Y-&kbnq`7p4myvOPG``VErMlJKKimu<7{#<9txu*0<&4}SdCpIo5J zdz6o{)tu)A-s&}O-6hw{qp5%L8m5Q+Mv`8jK?;nI+aDkM(n_{MH38lpJdz84MzS!; z6D}j7c#cJAbuwWlxN{AIZmT|#v|oFHCV9r~r1aLAhrn$EO%7WwEITjg6}+cU+DvcY zev8}9?h*4_^aq+7Tf5CU>f8Z-U^9<x8(GOZoIMlV-?k0RC~nFsG2!d85Jcg9sqMKD z<@t-mR8=KJu(j;_#(4`MbdP&G7;glxr|etvQ_3S#mP1RL#bk_USUHnPSN{T0zR|ho zB9oMYe%n|m4c4K=$Lu~aH;Fx5ON5?8v=^sI(P-=>EkU6e(m_Qc9jn?3UnW`$H8ZF7 zUAJ_!b@9w}Ze5!@vEac6_{6zln2xH(_<Yv`=pQhCMDAP2x&@+V%f`g!$kelO<=i2J za)##U(n^O><h%R9K3T0p_hC826cpYBrLRPgt}e|xklVjPs+cN7d>sB*TN%`aIa-;@ z)@`X{K+LJK8AIK~MoO64zPXw<3fenTaW&lr!}v==q>bI6-6B(ViWPI-8vNXr>)=<` z$QcrSTMlf2ZA(?A2umD)Om5&*Aq7;ROe2+-gG2nMb0%AM3*%&{_#eFJ#9GtRcWgB~ ztBXJHW_H<+8+^|JqSxxatu~wZ+V1okt2C+3IFhNFP?Hc2lT)aKHT=DXo-Iyhu|%7^ z^wwwFoeNxbm{3!{-E#cRFm%i_GZp=<erG0A(N!HKWHSnGrKdG2kKQ>~NN0wF-?+P8 z4ISI;1q*VewI1U(>t`=@`+|isG|+&mp{}NYkO3=iv``wV*GY+_fqb#4Et0}Amo89p zY}Q5XxpS;!3Wo!$LQV&`Z8Y;|`aaE{rRI1(P|DzIeR6wGvmKmYSpm(AlT(*V1z=gm zQBE{;AL&n_wN4`-oHi+^tR1>zKeSaY2YJE$cF7V=wG*vu4XxFk<Xd|HXa|eKEfT*? zMf0FyLk#h<-!Do4yYQ5lWF%v6k4M4HIK`u@a!Mpvq+>8Gl+Y>nqp?^pD9A8zI+Kc- zXrOeHRdP`4Tu`QODo870*g4^LQIIV_-(;nFqy;b7TT*X4Q!-3~(2rg>alc5^ZVigm z_4MQ%Q}Q^0ZEWeTJnGDT{=Ave<^S$@8K=yilJEAhsqTH+I~5Ktj5*?HDGau$aE^8H ztTz8s-Hig=EZJ`>vItcjQ1GI;W9`BJ-qyIe@u(IH+p$^|V=L8=MyI*x32l;%N4AQQ zII!zdscBESZ(Mji1fHsy8fwD{Ree^&PJ6csjTzIz%Ube6!z?KyiVto98rL@6hiK1L z%2vl%Tet7)qN+d%-4=aUCMgBG5ck=k4oY|8b?;IL4C+T_3M|jwhq!{@$M?E7#+=$? znSE_W@WRF#JUd!T5L;1(>U{H!UyKaYx}XhvxIX+4-t@r~*~kJ)8WGLl`JH%kslrh1 z2bh1UR`K54p40F>&J1oUA;K<83(?{n(7l#(cwE=tRu?|lG@z3$bS+G$t)YT#qEQCP z2~CYrQU)JcOxO?Z;-CdOizjHVz$if<x)-2SlBZU6Pp=;<=8lwh<3PshTsSvglq!$| z1)t%`j=g7*yhV=UM;N`zyK;}2X0`8evM}>2<c|=u-=fZ~hK$kUiUCEq=4@N)9Xl~) zR<={>yg3VLKGU@8f!r0<D2i;@Xe7Ms_M&~ZRefjaG8G1$yj`<et5$g5>+a0)-Mnmp z(+UP`0lB7p-~F8jiDK?-pwu5(tVK~^VV<F~HH5YN#SmrtvC(0Nm|H*F0rbnm9IdoG zMzH!aHeE$K5fvt%^<JgIv0GbDQ96x8eX-mHTd6WhqQw}6yd*R-w^1`vK-E1#89EfC zQmdr+SeYk!4YZF5`2F##<HVzFXzKQOe{+9eU_hV2A5=(3Sr|qOPmA-o^Xo3=sQOET zkMPHBbFVYt<#c+`nL`q>w^adcX`5M4w#_LKc60gYJ9{AYbmQoCUE_BY`W#;G25iaR z!<QIP7e1Z_Ebs9ePVa@P{N7_`pQgp^yExX+zD9AOrWL*+L6`1dEz)Jc2e)^j-iS*! z!FCv-qSFT5w(J1^r#OIXM@3D7%y^}oa7eo$1SLNP6YC7007tsHXzCc-fkAA879vUm zq~8JE5`y}R=LVFJu%0rBBCK#v%&&0cx<%{i);Ow_!&+fa`-i7K_W<8WMcqsM(<k~r z@e${4cXe!BeZbG1D$t44?26Hrko(w}a6DQZ9q3wqeG7Qy_nt)nAyW24>9LBRm1J{j zd_G*Mn&0P-L9uVY*gxISmR+t+Thv(gIrm_vG&W``*4hV#bdarS(w6V4^w$Vpa5W$^ z8JIFNSZ~)U*X))D%3%Zv<}^a6wddy{F-lA;ru2@1cFU-|E|ENE!%h@;2*&b98BRC> zc_kMOB-tw{)i~$WtzEgOeRjZ-3mYsT)zs9^h$81Ws_w5gDvj|0+yeGsTHl^uRcu1f zZOm5KYkPZNd+yMXq#LLjqM!LX?)F{}T9;1<Pp@AZN2_YAI3Owu&oIpdnEs*8s?hyY zz+TrcD4UO_V)$hsU(D8qWOFD+4E<GtNS1X{^2lNee;lw9C~oZ1e@8dNR*DSK55*HI z%z7<=?`3qVTzX)*seqr;U8OWd^|vj<>~Wk_hGxc6swbnGCZUmdH|3z+h<meg;+`W) za0}`^vLWxhj_~2w^Tk>pygIL$a}`f6H0P>+7|2hr!*@*Uw&(tz8wceF*~X7hPXPI& zuE-@-Sg%zd9={!}>|E-7)OGsptPsW{@@sy0y@=#*Q9(+%7hdO%Mo1{gBlMfUS)%=_ zb>vZ{l%|x9bkP7~$g@NlS$s%2v^~y(sz76^sKIxxz)ZQxXNG^tRF;6cU#-O2aU|*3 z?%#j;HEIr33Taq3v99t5Y}0G-Uvv#eWwU5J8Rc_LyRx0B=y4|Bru8_YWj|a>L`<Kz zR}Sn8ms&yvCDwwfGL4yKMnlTAI?hv=0eZuCZj$dtuluLr^VYQyB45iA|6;B2PqNW_ zeILIQZniP>+}$QGRVt=;4?+^YU6ejw*7&wQ)AMh)Q8NdD*wzj!QW0SRnH!G@#A<g! z?1z_d`LdPE9H!9m?t5}~ifKX9XDq25*~HtMmM#Ix6dm+BsDOle$j1BFZW96oG*<=D z^<_MF!xvbcR>JKSWRK9&oMplyjY}3Cx}nH9GlBXvGKit<n8tSXoeZ=yw5jNa-FZfm z8%Z0{!1&)yz5E$Zam*Ze%(!wi=QDCM0j`~i_J&?)Y{Ab2O+n0+W?Z@_0YQk?k9Lm} z|HWzej>qe2>f3#<^c(Mq-7^dU@9kP?T5)E!VIgy4=k2U4Ts6_>F9GxK%(pEUZs|@{ zviaZA8R)H<8E<A?2t-P`lW6V9>|a#Pz89{pZLGic4kt6pa9x5U#$hM9Z8Cr#tc|uD zlXv-==S9hw4WKK+gGy-=cy=*U9g0Zw>UDA4`Vyc^9|>5Wo9+S`>-vvevY`5o-_nr^ z&4Y=$mMn@zBUS_#10&5Hb|JEIf=`>cEiy(H+?lfV!6v~a6DDaV_h>(8U!?VT?hPmG zK98k-r1NvBb!iE<w)<(bT#0|J`Mc+d*NxEgw6ibB8SB)ux}`R>b1|KLWFn-~TuhW! zb^wq5hKk$NVv9zb#L{Gpg+eJ4DkpPWb90EwWuXw%TBcULXxC(x=w`uMr2n+Q%F((z z!k3$nr!`W`AOUJA0mnNAXd9hQL8tt9m#o@EISQi+yyM|<bT@c`xo=Ij1=wHMmRp94 z6~9rVc+hF*xp;;T_=ff7R}D{wNS1X4N)J$oRLBi4q5FuHJ0{`!=B6=vDZuE9stSbo zbM8Rg@1dG-%I&1}ZROp>I`q7@>hYajF8eK4P0we#;gUS(C2=(8W8u5|tD;4tqCWvn ziBf-t!L_2*h_}7K4-)GiIx}-*kvWf9#{!U}!ioheuN5+qnheguBLqgEoj}I8kjpf* zxAiV|jkQuKcw8dx1w4bufOWQp+mMM|TU-kXlE|O^A#r<M<UYyt+4L2N{ihOl*w$!E zquR#Q!lfM79Q)XeV#A*tB|$hKWAPX6_XW)}?>&MdA4@FRD6#6K!DL;fXg#Z#vNLVm zv2oi=jCEq$w{F&Y*?14~tvax+wAyfW%je$2>bY5l<$viW1k<fs>OK74FfIG4z~-@; zy&E5|r&goG<Gi~v%Xxk0^|}t=|M+M>8DxS}27*+FV3PW^;85jg-^cI8ri&1bFEbn3 z3s;0GmY$@lUw_%32Sk(>C%us1CHg(O-OReCkiF9Fw$nLdBUXqD72JmI07slm5mG)B za|@~x6ETpyzvf4D)EjrF_b>OK^c`9%d{RGSQJg>u5(P*QO#q8f1Ix3M+|KiLcC#xY zX-haTE+Yynt`zIZ@|Ic2%Ga`+79sja@ztP_wY4hRuf58^W9N5BHP?CJ@Wd8>n;W-Y z6L<}BZ{aN=j_HQ`CR6{Z#w^d#U`M?qG78Ym!j3v{S4f0ecpgvS3>tiAAnuSS7J+T$ ztcky{gAl<7LDG$8TK6JcD`!Mk)H3f5dXx2%CWf|RK9Nu-E*ik61EW0-2N38h+KA)E zGl%EPOS#|YCp&)o@1IRu+~!vWZx@Z8B|gWKetaJ{dOjCgqrMM?ey@kcu+*4za`d4Z zScA#%A0E8q(1aq0a@+Bi7oTsn0lg)3>Fg*e=YG=+8|zcq7<52K)>V+&_CPV0phg>e zS25^D#=9vnki2Qhs$>j43gkM5=*}|M(B}c6HMJ9FrN0%ff)E(;rv$xoP!ZXi?tK8J zzbmv){z`dzED#}Bn{=n48~Ib-Kwy;?CSe+Zud-&_aKPqJU7%DE=bmsR+BZ<SLwkYI z=^M!4D}Eq_%%zy@u>S2%Qo!4@vHxe5$$Xw@I(GCpQJdrOSYG(&>S5<8vRX%Z=l0?` z?FrHM=1<`qARL&bgVXn{4GL_P@`!_*&7$~>=&AC3VZp34lKKh-Y4W;E{?X_*O$>(H zRSM(5s2+Ki;XqU{gmKSOuFtL+HXe9Y035pAu4Pa&!ADK`)fHgoKXsJZ8m1$?{zTMg zprWyq(Re0Vu}6CF@5X`z^|7o(Gop^Y3s<@y#pk%^4J}i`B%`K(u;&;quB35G<7M^o zAt4EBwB36+3olRFLrHX4s7nK0x%f<TMRw}p(R^UFhqxQ^OYqF0AY>TadyQwtA*+?H zoAqa~*6ZM0`aP|u{}W9)o!s#z{>SW6`rIB}UBrdB{N0)%*<3M;IMerT)ST`+*GIP= z!iW-;_{yD>DlAaM(m3<JT{c0G)h6fAHSsNl)J)cm?3pz;IZGtAM3T#{JVHz92}*vx z?#9C^+-74y8^mtPZ!013fK*JI;)%TIvl;2P`^zKO{UYZLaQwSw*JxHMd?n**Y4uhU z>R<gf!+!~<PMoH%o#WU?`gmgs(}4LUZ%MLXFF}1>63G5a+D|Cq34xm^4U|JX%k6`S z_c0e*D?>hx9FHi=zH=$XJm0~)zc66)IUdGme`We@H%Fdx+kFC;_}pt|SLbMProy4h zt8Nb6GLRMU%$!e!jo5YbW>0>+C%Jsp{JQa{UKOx(@RAc<bhaOO_mxSrwM=O0!$e(| zApw^Ge?&Kp(%h(_2X|Yb4{%?=3^NMq6J8E@F1JfbQuk&FS6+~yig9tE@0gYLd#^?u zpW?!Lat&W!j<%>nG)Og&#`w4!0W9c0KoyOba(Y$h03q`G>qKtXv%^iZ-jjucX!jA} zp02|~Lj|oyI&7ag!vr%o*>)CCDDL{k?V?p)RMMEUD;xd`)lg!m@A?`rXXsE`=XX`` z8LgTzUT3G@%qUIyv*bG^W^!Rx81<LJrpgXM6chD(+;8T4gn>ntE%Kd!6fX;Bo0XWB z)W}Ha*~q+Jo&DG?=K%|sz2c7`qvh|ip9z`M=>m?jI3I1yEpSqjxwefn*lw$^>H-zX z3j%lJfn+K3djnS13n#6&5EiF{%&ww<o*b7(8Izn7o7PD61po~xa*s8SZ`{w&s4hRU z1D4J7;9@2MTW-8=je%CW0Kcb|8#hsFaIelr6U#LQ9_eU(echY~<Nym^+?{zBeg*{h zhj@(nvU{D+i;eyeXkpP_K1AQFSz#`<zQ29QydOXIk3*iYPe&@l6#&Z+de2eS?z2o8 ze$R*jd{+_J3*Iw4Oq%7yprdG!qz7T?R~;|KR-C)D;*jKKH<<Fk!4iB2O;oJMK*okM zgJQa|8T<t}yhOn+B)nX{dU8Y_UQJVN3i{czc9^3;wL}V%>%OZ_ZGTgXk!r9Is74IZ zy)zQ6WL|g$b${wl`I^_zosm6Ex4`|b%XpF8xr7$)sL}Yd>@~sIQ~h`lw*Y(kJ(@D@ zw3wb{lbJ+K8_5v^eE0b1;*Uq;f3hT#Pq^x&-@yt#6)>!uTRUjT|9)jw4}19_dyD;F zYXNUUKdl9?cs&nME1hz7=z@{~A+;A@V8BNp^9sCAf8Nf-jkVYlM-Feee1xD}kSufc z!N^eNdC>6Qpa19YLx?r#M>Lis2E!o}3vJOS%SdeOaspzj=(32oV>{W@Vt2MLxY^`6 zM{zW!aA{|$z-~h%G%`}B=Uyc~sDu4u(@FERIeZ6g^)vN}wwBUo&8={3)@{81J)c*E zx_laI0?F&3qq9Yj%7okW%Th&<xSB&Wohd7^R-=ksn>MZ)vjD3CZ&^-{ATC$By4sk) zm-sT^EsE+WhqSz{A2+A^J>D(+;ql3o&i<jH7OjP|b*tLX(c1(5{+ZlF3%_%&_qnwr zZ|o!#u_)mjpU{#$Ef6U2dG?ycIrvwBQ;!Zd1B~Sx{K(K27JXTYN&L?I<SP|Hi^R3K zy;Y8b^{5C`7pbS?c$Hs@2eNFI((<=bAgMlutgR5Hwcc0v@PSX;pdTj2xI0xC#qfqL zA^y8o2s?ZB1kwmQ3&3>LQd+7y=<kf~tg}$6eY(i8TF?hK>cqF$L%_2!fIvip3j_SN z3y1^loCvNk0TOa|(H=^;-a-@fb9a_wZMvhO1ZDQ@KesX&#XQO?Mu<U>(?Tm0eJa`A z&KTUoZn3^@rFMz@O+U!(q+zg0Gx2XXTj&4S<KOZ7F7$htGd;RoTv8gGV~|}apx6hN zG#Wimu+`^NzuDpB`!+2VYxr#2r!oXI+0cIKKG7?1mYu9N)hC1)x%aHx2B#n3YQLu1 zZ*vDJHUP)$aANE5u=W7--%@9^RrXw=@UJ;eY+esRs+hxQS7gM7^Psb53Tn|Nv(KS? z$V(i}O$njQLT=DZ)M}cojQlpm58gho3pMC^Wz%mt#?3tFv;39x=|NLXp#<hQ2Inin zT@HK{;Q0nx8nu&3@P>ls!gZYq2O&M#+1XaumxZf>zbEfK4n-IFQ}7-_YVAL=54=Xa z2)thEvwKXwc7C`yTTg$TT<+uWa11jR&jU>cH^&Jn*l(Zlk1p5ROH@EWq+&n4Jk8+w zdI??3HD_nVQiJcm{q_cDmmOu$2O4H68Ifd}lejjB6rY%)OgO1q6}8MUu-Z!8tNXDi zUkyvRbvc^cF1x1N)&1>qn-X6hH>T~$sCrh^n8pbn1vRMfr3~a-Ik^)P7|;rmib(Ea zMs2@bpp!DsR((^o^W?!>102(_fXBma8+x>94_*#SrTV`(#~Hl&DV>tV)T=7md|8&Z ziZ%RTUhvEtf^9u5+W^_Dm7_ZwK@9&edK#L(R8zClQK#YamJzl95;WO(1V!ytYP()0 zf+)lt7xz*?_8+~@vhDguzjU^~j|0N*4Z_hTJKYJZ34mSCOajV<;(`It0&Npk3?_=l zYt75$A9jLCS(=TEs}#w9ic<ZSw339GW3(y_$O*J@<G1!(knJs<4c-TX%ZxBr9SlAb zNUbVjUZw^pH1G?g!`H|a#FJ#O>=Ofa(pp}kNYH!342ia+{?K(+?xfe_qih)a&V6Qh zWKBabCkPdJZ|YAn@-B-EbOO9e;<MT2!YfdioNB*tO^7CCl#E!XiP$gCPMc-_ZGdk9 zNTsoUo6Dw{pz*`m6XU^wZTEDva7~8V)77yqa=HmOJQr<f?-(cW8wo=V+6}g4rT%;` z+e;_U<*a+|liLx`ZE#iiRH>y;wb<#>H`;0YfOuheA$RKPsgMEJ0@Is|Ef7y|t3`kG z8b(HkfhZv9b&CQ9Qs3r7E=B<_*={w9_vMD0jqAXWmYW3HAGm6%;A^-_3IeBPB$pgK ztSA9HsaCBG>*eE2|1`xK(3@h%1Z=r~P&U>P+A^-zNbN71!E@*=BM7Jhi|ch#;M-2t z)bj+`&j%M|js@O-b_AQ8By<7kHd}DhLw7Sc;|;V7nVpK)vnp!<^Iaqy_;QfSPzh`< zme8B@Cu$`0cQL2dP!uDH&RKH>1x;yd>foB3>LZTqo&epCjEE6OIIx)}O-pj<7k;c= z@OxdCpFo`HmjcRnelp?fe7RbGoxRqrw#UohN{9o7{0xksSrrEehZK}P%KLs!XD<Cj zE#}mgSfQc5$z4B(2Hd6?Gr{V4AV^s}{FJH@X4qZ|gEnWhPTdHnK~JrI{sO*3;r=oe zsABL|`_G=8k)8yf`$Z1BpJ#7-Jz#cQ-#`JuSfB1s>d!0{0x$ab_2u=(%b~Q|YLz+5 zMN%F1=107328)1}{ERf)t%i&ck^Fkg4m;=P7l%ut{N-$m0o4`FO8Hil$$<EF0XNw_ za0@650~H{(?NEGl3~#KpA_}KA?8h#+10<S42gVRXT`)=i+H_HdZ4H%1J2>OP`|j%K zYTL>Q2<(5;#!LZ?SB7wxY=GnuwfiMZJ-^%49RgUp{+-)D8l7c5M;FVCSDBc2y$6`F zgTN3`{cM~>ilS9}PlsJJU*7JXmd6w4fLk@l!ONt|*rzhoabuU$M;NfWjY%D7SI@Rs zPc*i(E!!<{wmcC*EjPNF-`YUhj&C|ZGo0y7Q@{Ikb$MQAkDejk6GFy<JezJdI5H$X z1TuM#-{#+NR}cvKt}NyD;_1=ZRXfTa7J>gH1CJWND~7NQ2`&gQUB)oKEHfAAz~f|& zz$_==giC?hWNH;>&MHf-_-c*1D5cnhPyGv|m$*_gtbPEsV>v4*YA(38Ml*59c-8;5 z#vcWLvC#spSun(r2%Wv<*2bc*3pX*o_t;*9H+oMQ^S;U3(@%5b%o(*a<-p15b^XF5 z_q%;a`~!H<dE)-hE?90^mVB09EEX$i8CtOrxXAs6YsJ?}RR-;fPCO5|ZAWb!4AE&4 z=rhHK$67D;acw{SQ=q3`W?kth6i8=Q9CZ>5Z=V%|z+!gPZYxEJ?v=`2+#Le~qYCMu z<A3UE@VOBLiFvsHh4{REuXpg7da(Gf(oKi!6R}5Qz3aA5C)RgJDO}EHmgS7Mp9D3Z zIl-a0)y$#)fK@Q+DhT}a0l8@rS7=&^{&93YWTGrkRSm~D6UWS-am*#th`Ew?ZoDEv z1sT0PT{h^<Q)$V<OiXH>h%!j#Qln{2o-BwWrk(PY56-WwU~_V#CHv&(bs}h0xT!Y- zR+7qJpGpc?Ylpgxx)ZI1Y8JWC#M|^pv)wJ8+bMF_x0v_;WQN|)hxNxyxfppKY@Txx zrQeqYkB_W%rK_1F)6tEL?b>^m%v+t@jcUz#E{j<V$taq1B{{xcsxMcpuo>c)_0l$+ zE&9ufx32I$h`_~e9>`2iH~4C{h_Pf_n~t~im_Pf&BAys9toQm|BbvR(<X~O)(t$n2 za}c;}wI{C<4mgj$<Y6|~mp_{pgXOa_3Y-T?Hpak17T;0Wuyk#dorn4MWs(VOROhpw z1}kA+uZjfnO1wotvs;KFd8RX|5H-jvH6_t`FlWw;^V}*IHLD#uvRy5+bx-v6KM$44 zpj{A^9|UM_GCyY$$)q4eMeqQ27Y{yjAmyf^bqzQOVz2saZEb8LWOqGQIgjkw)!$#* z4+@PRq9JWlC7*w2Ct-!&?-fAb`%&AP@k7A^$bYnp+|4yoq!WL~#9r=lY>-M8P(XL> zZyz3JHi9~}(<6B6SkOO7&`@to;+A+1_#Y7lF4(_8z@_N6Ut3@q#Vjfi2+k|uwOyUl z(c5Hubs*UsY)qD=Km1BJ+0*Iq=$*d`R5m@MpN<9Cxp>VkEMi0@-|ih&hDK}Ec>_=S zU_ux=Z7;V(+j~y!cG!!SbOFtU{vs`^KGgx;buZTCM8h|1lldoy6`O3Am2H#sjszaM z1qmea`@Dk`5XTm^&ma}7=;=TRJD*XKc1+1J;!Jmpd*-a9-A=*h-P^#m?bfQzwL2_~ zYNo-3RsveLr|(q^87V7zJ7>(5nNnb^6&~l$LRa-KGF7gdMFR4fpzFu63DoE)`;A?2 z@4SkCd@tobe>~n#3_Dh?Qv}M+CsD+K$Tg>WEEIU^yNiWa_Ac+-e?mR;ZA78N8vv~| z8`l2nq{j>26LXzU7u57V@-~h2!NafPxwtF0^sZK0-8p(^k`!q$4y>0&tW!kGJq4?a z4|;9c>K~2{6~1Bx2QyGEboD`)$PKP8Z-U`zcwJ|<5(Q0zoQFMf-D=xR;Wm;c3)=l8 zd4BNhoGw8=s!6e=a(>r{Dag`o%X_|n<Xa1i#Chr2xqxA}K@Xa{-vwE**hdOo&85-w zs%5nAxj(yW&M!NtmUY_GR%~v+tMm!$3VIGc7<T?OZV{6myrrLDQ<}$MaLJ`riGrBO zF?Rp)iaNvpyy$c@=JrOgDf+l#xM%BiHDDEOtuJHW$$Y^brGdQ<aj<Ipbn_DZJl>6a z9Cz2@sN0rfv20~0og@-SLT@QoV|>R3jwU3^YG+`zl~E3UQDp`b2LB5ifSmaGYg*)= zd?RR16G7=!ogxj8?YZ1Na0|>u6xF?f7+5?!rs=VzS<{NL01;H3#4i*5FRcmtw91R? zrQY`?tI|jO?9YESKgu$%f>V@L5tfP;*|$d$XD)#;QxCd`<DE?eTlNlk!1BK;v51<P zmSWFC<W3l^=ete?QfALX3A=8gVo=Zr-m0EDTo->#p4d*l|3#2yT@?mvgN7guTe8H_ z@7xhG!QJMJG-=LP+;wZu0XC59_xWnp`$;3v)A&3{SJ8`bF?p9>d0&}W{Fm@eMM0J< z@!J5PX>?F=_udZhI*BnGiREz6CHtEVIRuu}mq20T+R0KBepw)2-l@nBR>qbLb*?I^ zMM?P5Cncex@GQK5I7ipnq)6R_f*f)bpG0dMkVcB&!9l;@g%^do;c$67xjDM2_TB4L zLoT;3kHJ8yh(M9i?gVIe8#(d&0_?<+0+(xMqv>xYSOkT7?;VV1P+5orc}l8gqm%B& zqi2T-h!dG{Di|kuCfZ3`COueCI*i>F+2sGiu1K0_l*ukyipQir0}_ZADFg=!6kg}_ zx9{U1?>>Vp438bn9|`8T(`NHAUh)8@$A<L@a<lcfiHzDL3Qva*X675?ct{_5?=}pt z;qX^IFJeMNm|8f2X28%-NDxNOqkyl*iQ|yqz^2*v?mrM;u&fX(1@4Oqs^6`!#8L*W z+vubl<NrKK!eb&-9yDe)9iwdw3UN~vr^6i-mIAbo<j+v?l1I=wU1(yew?k+wh=<Ze zr$lN@kWJvp2nb3{%k9|jY-HQ<-;u|9cQ*007Qdwsk|f6qV<MQ`Yb@%FPO?lgK<kXE zn6PF}#lLRa0ys6BydtArILXHPaPyMkBWO^t34KyeJ>r^0k_#d*lf;V~s3G~JdDhs9 z-z=(XLe9u`#eS2ip*tHuL!m{f_YpJ3cm$h5^VZ}ZagflIzz=}uaKu^;Gx6)O4KhSD zOTbb=;8bXspPo_>duass#HXi>(AtlHQ4&@Ny&@wRkAw#1zm9poEM-XoVa`*tn_|2$ z=J&-n4wOK25ZwLz$g(RRzyF?<#*FOUafrfggm8%iD@(!>YwOPm1m1vGKE)(cI(vGA zJJ~WEdSLEzB3(M8GLxHvgR@rk8k$~M>Iy>GUD1a4L^8+{lgqEmA^+mK!EY=5NX!3} zvxZv+OnVv?Pwb**qQY+PqB3*b0IhU?r=WEHO8OC#zajb0<BSEuUXMW{v4|?eMx-d? zQ_<Ojlv0&t*dT=#Gb1fNd5mQxNklw^47Bz)XNTiJa-2U{sK^+Kvjt3*fa7m7M+InF z5=;3x;-^ihlOuJeip7e0i+?IBK=S-=zmc|KIR7GQHeko03@NXA9?pit5pV1x!Ot%l zoA1ihx973R%1YWCFz}Y$B(dG?Vf`R5Q&E6PMiWiP3~uS5&8Q%pOCD|TLQ~*vqZWkz zFF+VZ`rl9sY_z10m_=HOPF<1XSC@}RA9q8n?QqGIgV_voN$csMOH>RFc95;qn;+n| zJH&c#`}ec2mh^s$^3M9f=5BjVe9jOMT`pcB2O1N`{q?V1->B(kevSjPQ1#B_xlKdP za8T(+b6G7hGMEJQyU+OeB9@_wn4)vXLFZxzx&>M^_4!K#MJ>fX<(M*mTbUZnFbLd< z-$|158`zJ9rUuGLRu1-Hq@@G?QBK43`N$0r`eFpOC3E;foyyzvR!q+Y@U#B^av-;` zqy)6fL?`U&FUhKom4*FLm!Pv5{i^!Sk#q_&2GSjb(OMk?d6g>@<wvPTC1z0##ul!H z8_qo_@L>z(7vu8tJNBXPc!^hy3ld>TDB%6M2tthC-E$)S!6hThFRI<ZoQ|ok+}3@% z$J-l){Z1)crYGn%O;@p35aC2AS<uFZ@4UjcCrlfzs;_p&E81w6T5s}LpZm`cXZ6rS zT{Lyd6&tMUB->5cMZ8p*NSJ4{IPdpvm=NKy{s&n=roZ%0qJ<iXvaBkR?|4H)l7Cr~ zBPpAcTiTeGr4M8smb4V}?3OH%REVxDI=Xk)syBc4=Mx_wTUUPSr@w+mOJIk?4VGCH zgq|1aniRNZJOLh@WUXbs@7(oiF5lm<_|u4gq=Mf=a=etqUgq$^0BlH7ZV*`YktWQ0 z2yL8@${mSDn$#xXC6edNndL<-O{~Kz7XnHCNa%zl-gtfqLMy<)UC%{3wyF!1Z_Us^ zf@@kr_yGl_BeX`gH2iH%qcbaR1@J5izNe)rZlxNjx_$R@w&d>S-gD&x2mJTn3hSpE z^A{y%PL@=fThiICgS+Z7b>B++$F0riIYp!Ur4^etJ-&0`OHa`G(xw&9@9dlE=RDMV zXuusnoX60e3c&QliUd*@OKi(*%N;oHN@xAKEUI$uXkE`)?&xLj{8_*EIIEV_=4N@p zoywecDO-TIDMw)vaI-lP4y{NXla`M3X!)vrEi<qBQ65?U`$EQ(1K^M$)|G$<N6PrV z<i?@ujTt0d3CGQcUX7DnV|4e1!)*`mtDir>@$?x<imJ-hYHD385wOu{HZ@e$fLE|3 z05BtAkCZ4-f=~@ZB^-zbSdx->AqhuA1CN(b@}S+~Ajcvc2*(|*Be271cOV;^6taLl zqye<E1pT4uSK_IApe(p9?NcPubj;LEuj+{~9t?Fu3#--G_i1x9+81WlJuKgIpBy-H z*B`=zUDeWP6$v-ljodePzga95r+OJ&KW<C)6pVr1e%7&K+3YF3$(TE~_xxU~&Jt{L zwDQQWD|_Y0kMf1QENixOp-DS@xZEBqc@r^VIjoF^pB+=i&T3l13bXWi3-y*cl5TMb zeDF>S9KY0wjjkBah+{>x#N!#WF4i7k>Agqpx~Ch6MTmz3Rza<*imx{2<;JE`p=qR$ z^VCpRBaJ?iLXNu-D)5qhUGfZis|1S8)S3BghM97#C^09{0!9ODZ<5|B?NM5ld<v*= zIeip*!qI3Hbn^<jw@{{@@VeJn63K0N4_vV$-4&(unk1Ihpo$I9G(?+P`t2khB&$}h zd|3{V;JF^GZr;#BTLuZgKqCe2LLBNQ&|{Jq)B$G3l3QDqRckV<R%c=_`0$;m=SVg1 zRLi_ry!giZZv;W`4KKjk7Wmgc1`h4$ZGGs;=~H``eP{MLvXhZBq<IY0pp{1=Z77Cj zYldl#l*-NW|6U5C^U_jHk-g%uf1yv2T&cd0nSGaJ*9B$tO#~HBG<Aql@QJx%P-3ZZ zs{L4U`b7JVSJyR7ztpz))Tt9~WP3mK=-XK0N(hb)E>7s>Oyo>sb-}umhIP!yyCkEG z3FMNrup}0Z+LFLCkt99wrNFPap`?@L4P*v27JMKAJ_%eRu@2}GmR6Y2RHe9742xMU z3zRjS$_cA!_Xr|@B1nn235hygNa74DU6$!r67WnY6qgkdY{$N!Dw3Zfw+R9e`p7iR zG;GEP@?NeZLUE!uo0K{21zhJRCds^$NV8k*S##Ahr!RNz@h^O;-hIE7DV(`<Zs$ik zA71_NRln^Nk6S~k$s~S#=Br!QPObL)nnvHDu5LE-CtRrec0T`T|N5?tUw2za-*Dft z!DCp#ETP3ZS{_v;bSXnCYEs4X3TEk!+|hT6ZKX=cE_a8Ol4Lg+bLJ~{mR463#H7F! zQ$hi#o6=~}g_v5by(EoqgTHQ|X~%2p%BAcNHoP^fy=Qo6+PTwzyY7cONU&L`ibAwB zn#EnySP66UhB&xC2{HU+dNu%qDsh~qwGr0h<nq7?qvMsaAc{Ha3IjEdD2x-iu2gPW z`cxvh<tP47Ff_xQAslA-3Q~d?xEqQnI{fVzuq$MN({*}Qmw10C@F6t79)moL7p{o9 z7y9V}A9)1Qz;qS)GIXk2aRJZ9>(~%%)4`_+YB6$~C5gnIydL^g_~&Hud*!m7&6<mr zG`7qd-MdFW{&8H_V9c0zqW@(5;f7VqR(@kk@FtgPa!{Y{<gZ#EoBX&KD>q+}9NGf5 zc6L1W+|SvIkG|47$qCoau<~EGZDe@c`pk1%el)3y<#Ud|x$$XyeA?g3R<6JDC+yt1 zqBFhA*YkHJuW!%UJ)wqmnYFW(N(D$`U}RTF3mKZBs@CHA?xN>>d^AqflX@YiHZIZ& z1yw_579vn#1Q|wR3tAco!6?5NPZXnX3j*YM=6gHW967M`yK8sdw{kyN^(48e`O;rK z@p9Y3Q>ld2G!Rb&^MW=x3RIy~MWjmX5$VG-F4zD)VBAh7-$A(?kPyPh27QOfnbl^M zP@1A7<FzQ`DJ~Ft#Axq89F2#s>DLh0plLZu1RfGIX9i9njtf_u9)RSK)GXkQSu7lW zQIt|HmFbtXEQGtsu2*%WxW!w>)pbw}=tv<~NCW1kfl?n88FJG$Q9$ZAD7??u#)=in z`~|t=$Jo)m!Mr71JzcqMe(5*W{&BPV)!ol;+O%R*DtH?<Z|l0EsPWNNBF(tuywrWw z^{+g8MWnAiVc_NGC(h9M^rn~Iz44<U^tE;3{d!+`_H$xs-S2j?4a?IVWcJ!EUE4Nq zNbiDg^n5q_s^fV7@iU`mR8=K)L5qyEhn+*af5oYowq@G+jC^U1-g#g!6X*qX<~((F zyJ}_?87!6J500=A-_N1v6o%R|I$kC3GXZx8k41m9`+=?h^pvWGoB#3Omap1}b<9;a zT_r@Cjn`)LiBcsmn6!lBno??sAu*w%#cRf`Z(d~1W{sBb@9qmZ$yN<TTv+Ymf7)_H z-AHZFJR{MF8@r^LN#F&suE<?S6~H+NXhDGuikO)|aRIU^9t`Lx95@x2$4JG=f@+tH z@QjfW&NJiTao`?DDS4Q%2t<Hg98rPBpppj;8$_1L*%lDRNfMDZSDKoY)oTjhxj#P9 z?d{+F)~;83FMjrw|M*{M+;qBnf>tD9-g2Gk+PCxd?TnEs{>|FyS6$M%zjI^9L}hs8 zoNG?#e(MFudrf(gkU#rE=MA6d>1#DDZ7W;1zw+YC%O=y<-TSwbGH;%EsAJ2vZCh#= zZr!w<O=3HI(cx9S&a<6%ogJ`%796Tgve~j<j>0%ss5dmNc=F&~b-%APjP_*L<)_V! z$onh0AlVXw>tRs@o(7GCW;S?~D27~~?rwkkjfcpEe&X+bSzliirw9(}+8m;&E2Ya! zV^5;rT22L+?;nD=E5!_DDdZ^N#!zGq;it1ZPWI3E`22y9HrWO$xEiUU9M*I@fLY{_ zJPUH*#X;y>Ij%&NVo=O$dD7u9H+T+>WK48)pp->0@=1|w$WYfRr~c!66UxX`9o2OP z?R7FVaNv_>R%NvsR%_vL2&%;iy12S_eV6tKGKIjxX=TJYhGkU7DnSs`W$WnSt&HV3 z4*ww}GMQY@*On|P<nmtUp1}|Q=fB3vPd@%k^VBol-&DGqyigK9Xy$GBf6HXco@>8t zS45gd$6q{iJ=SCEV?VE*bM*-%-Q0?<N$K<-Z4v5plEF{D#(3`7^4wz`tarzuNz`@U zg?`q$V)f+qImDZPwapvIcKC9suRW*tR2bM>$?&rbi&n4`IEt!ftz0-daH;cmYTxd* zma_+|^IU7LOwwg=2>$V?FJSkpDCK6N9#ax2EG7s#E{!z(=fD5;J3GI>e*K$2{_$@c z?GmJ;mO7pg5*Po9NR=1@#z2rirxf;B+t)5IUfqTvYRHr@UV7{^HHw$Nc9aR*Vf^3P zyg(IBlvK`n3x^=(8Sn>i{|L{<+f@|Ou7ZdswGqTFz&p<b|F*zy0z|orhybZ;+9iP) z1K2V{Gd1CdiyMimHF`<vm*keFMO;z?Yd0OKeR18;Q}Qqg`F@z?Re-C|k8GNH;8e7x z#)coPpK(ve*#38a`|E!$yUv&RyZ=$+rqb1r*cQ^OT$|lMS6@B2_Df&)_YSa?H9@{A zu{6DPCK=A+1f-p=6TFV^tz_FLQP=!r7|)Zb^8P`Z`I_@T=<4lQ@#GDndJ~@Z%jxRD z;^5&6hxM#ZD#bD_QW~@nB}Gd-zkFhUJkn>+U%2odJG4LfWb961$;M%%SjgoDUI2hD zPH+d}yP8QGVL7_Kv1{jdj~raOX6<_`?(af{wa&GAgcP(0lBYo|iPacqh3%RKz__;z zmChBoFmBnnie`+}EOYS&{aA@Iqr2Y<!qJ4yJUTRTbnwEW8MUf!3_)|xZ>j*)KM{o} z=tX1krQi}7ECOs)>`$o2)@4B$!Wl#ok*Ow~Ol~v%4v=mRZ_c>Y0L&AE{1{VME|7mk zM(Eqr#cqcVYSVBlU<I))TRak7;<yfy<T8wZz!e*s>$$dVgPcgyq9CF_jWE&mSO<r8 z#;#wpI?iUtIy>L^&A&YQH$OA<DFo8EsiYdCV`JC0jaM0~*NOMFp|U@244xtL`-|c@ z^OJ8h`Y-gcj;jP1IW5+{{u)uAxb=LIt?C8?xCo~|@+8lQj9e~<nnzVJGj_56ly~Hy zl~<+vR^{f+U10z6=-9L(Yv$?+z}l*bKyK)Tfg5n_@6<g`YcoUk(cT9>+_ieyiUUvm zY^#~^<Z5bcgOXn5J}qa-14kv_0^ptU649FHoa$}yoP65a+gb!JHPj`kW;oD9cYN3< zV$4yLbi8(a@E@9m4WC{TGm*YlVnt&bDQ(=2_f~@eHy(CEC$HzzdR0!!h1iuBrHL!x zJfMbDB)x?54>voCk-p*{H5fc31R%w8l6-n)FVT~lcMYn8D1v{^w-3hBc)0KTWQPm7 zpG-F6lpUIrW<x5@)Lqvl1rL@0L+1smZk`;Zdza~j{KefLz4Pl|JoLoht5YV}H=R_c zBlSgv07JZ69}}4^veL&zx)zJ(j&bi-y5HxG@mv4@W3a!Qt^COZp+#mZ4cdL>82HHx zCwqo_$fBl&5`o5*WitBZqn*LI<7WGk`sMe>TDBp4UkcA02_K||3>@Du7RrjDhFK-s zJ8~m6tBxm+rBk1@?f7qGp`YCRt9;{#=%WCam6|HmT5dUz1FUuKPJ{9?mgG=Qt1LOo zG*ZOe{f48<(v3r~TZ@Rgh?v)6X7s`wt~B%vd$Ob|KmxWedrNknKJ(x*HMp`Y#k7G0 z_;Jt-Oc=i8le%s+8^QQ7UMQ|es63(lNQB2=D&V0|(27vM0USjT*+YLD0>Ee@8y=co zbaZHtWI_*<Kzg2OoAlGc4_DGi9w}t>fdo~$HNB?a4IXvHQGwC`&LATL><W?hLM6HD zp_p8^sxw>U@Bi5+@4j!o_>1p7{!`gBreek3tWuqhl^eHpZ4~)xaR4UnbrSNq8ui*C zjP0%u2G&l9bs=y)*=U|mTD|v`|L9)(MHDQY@Rggd72Pi#7@Ig~E$%+GTQ+4{JqnyX znN`cfd*3sps`0>|=G*QB$wcfgviF>DnuggNjv>MTC!i@c)kj(yEgGEiVq|Rkj@Q?f z$FdLq@bx<uor4SrEFmE{S656ZF}HtND&Z*hVzJJ2U?fQ*=mmN`^eyumPa(!vO1Pr5 z%Mwxt05YEO3T1oLJN@8d`J!VDp8c$~{`g-m9-doJc_lZ^40}OJo5R8+)Dleq`lpvO z+Gc{m>R@|}4vI8?CZgyX+PRSJ<FNoij!SRJR3V8*Ov|)H<P4M{0ouG!c`l0N7}C+C zu4D9&0~nmtucrPVdsiAHM|qyVKBv29_RuYZKr10}NC<H#1_cZ*nSd~r15@Qnl~Xac zi<BL(Q>0w}k)KI9sY;w51Q#**z$TT;P?$I>gG7R`k+ZtcRYJm&&;de1yIN^>XQsQS zuP^WOz2EfAB5;Bv7fYd!tz|Xa)6+BC@AtgN^FFVGelIoGz6|f_B#mZ+Ue~Yq+&zMb zI&ND5#tfi{Z3|W-XZjjO4_Jw7Sy6v&VD+kP&%N0H<fFfJ--E(E|DD)VDqHrRi`?=_ zXgR#TTcuj}g&zO*|Fc%!uu@g0e%LW&g8KJ5!<;`<h399!{n!82lNv*<>s^TA*cz5y zG%5X!Ou>1fpzL~M*MyirGS)H!zZM<dpY49x9t^6ttga3%2H!b1rd#`};?S1*<(Y&u zA7~y*@w>Dx6nH8|ZuYHv?yetw=e{ehc<uf_eRTffL;Mmt*Hs8j{OVZ@x#i;cS!KG( zdU7&&x?eLV%g9D7!of7L6Z(#+m{v|-hH3D?4d$GXBTcR{JwCo*`kuQN{%X}FZJ9UX z_VLRH5?9jWd@xs-b&Ivx**nnWEtnHV{~XOmlRSZfB3HHzlRGPUi{T_0iy0ziSV+eN za-w`~=rR>hH%DKpa@bY8ZJ9i~gBHXTK(9r#jE%IHSZZh|s9d0|*k;s55RTLxp6Xy| zwn`kr=Gzz~j=6)?TJ`o%Y<y$;{(t|WV6N_YT~i#Z&scMASuy`xM~;*s_t~sv_dT+5 z_^ZQb=D;qRKj*y;MveMgy^r_i*m<2ezF*A0bNO$8C_3I6-}=VZ+CXh0ZdM(?zH?K0 zeBa=T>x+2{3t?d(ECrt;UF5!eFzO$3hGY~AvqC`4+269~fuhH48*il$`q~vczVgsN zRP0E`!mtenE})R9xmHq%9q2@tDt%>ER%XS7&^4`&DxeNZk%t49MRJ-7$1r156}n-l zoM^KJ8ylio$IAL$;BPDCvXhY@a}GD&>}V$-RhN6h>#cqR_D!o%H0oJ>wmq9iWb@^* zKq`d^sH<hVy2jb;BA*=XqaoZPUm8*>LSr=^RR-+We3&$+<qb)o9k*ikx9P}s0{#ic z24)GGK-BX*&ucYW4BhAq^WD6alatREz~E0W;W}2OT1#%b>E&N;>Hq1#oO?d|j&1ZD z*M|eEdlsSJv-eI)c75i-$J8V5UTS*RMUMR=y``#q|MHQQzwY3zlig}Me(M>LHi)9{ zS<^bVwc)i5p%EsMz&DxL{&IAD|EyKF_bt8NL~9Td(YY|EnFj~N-dEyfR?tU=PQD-d zjXkp@gzVe9@bO0<I&x^}iw}Nx)m<+HeTm^>$`mHrw$(g3LpMw!*WI(2l3C(Xq2bS9 z1nxbO4PHmuol<tmBrDU@NS<3J0$o`|<E^nMaf-a!Ou2271<Bs!Q&4H}@@L+y+M<0j zI|&RoIwTWACH5>cZKP-^u>su}^hqFDag->NRJx=r<)E5C3=8s%hQ4@;fXUANKA+Qp z-FIh$YM!*Q>(KFNy>^j5$EMIJ*Fki}#pFTGtI;B-T_0e8okmwe+X10`5O{W_B5u2W z!|wIX7hgEPH;gf<Hu#ZUoNqgSq|WoW4xKpk^!BISKF`d;aL-1%Z!Wt1)BfDqMUphe zC&*Xyy@39NH+cUv(cb+`{8>V2axmKyZD<k<A{ldXbmqD>cQq!eci#Q{f-8>jq*&l{ zg89#=T^F!zScRoVbW{q}hEXukBlS&)SINuFHcYxe4;FddqT{-ADa*;6+|IjDFA?b4 znVNU+=DJ5(NQ}}M&)n1Qsc5Xo<XwNiIcc^x{@`xc23L%}+E&}>#V<p6nMda%$G-Q& z$@6@nyKvR?RXC?q6SH&tkfFyrHv3F2N~Z-J0gT!UF(;I^GhA~4-WXUhML}*enJ5Np zCJAdN(5r(74l}g7+519<&5#}>tES^s$2Cx$p2)Haw7^19$%Y^Z_y=;D8WWBFfqs@} zX*Qae@)cC0Fd}<T>h(*9fAy))-0xg_?fJTAK6F@p?u(=1UgqY}b>Bw{T?O1zYo%#2 zd|<e6MLIr`ygD2V4ov&x9saDD_(j}CC$NN`XTSC4G-KC}_SMq#O>THXIml?9ve&Lz z{p90cSbXK4FaF6RLyHcVn>Y+FFIaL6(C7)wwarxRDj|1XC687987XBoJ)_%Yp}3-q z#_WD;-k3DIgfsTi8O-^5;E9`L&*AZK;=n}nXtRh4%(i#U%qK@Yw^~{Z9M!DJCe8J2 zmN$lXQr@?QIGvwHSEfWiCNo&cc+~iM&KPRnf!$`f!D-ji24w}41pwEy3y?2O2l&3v zF$hR$iS88>O4NxBzSU}xAFk!o34v9Cik?fqMbo7rf@(nDlQ<E)7nmUPK{ZVv74Ld3 z+Ctk2ohnV*m1)yoUo>mS^FNlyj-9XD=ED|OpN9qG9UeX-GN1qTyME&XbKduQ^{qW4 z*_hF+=LfdTyn3lvu*B=DAv!G3y#Vj7NXetS#NT|ZE#DN2S<VymNmFd!dE18dH!oZM z%9kH{m_q0tK8Ui<6#lBVI>sUseULhu%>^f%C`^V=?yB;&G7o+_K;6_N6HP%;qMyi? zm&0j!DQ_9+u3Sd-C>o8R9H`nS@St*X<66ZdlW8Slz(WWsY;vu;pMvJR6q<I<thEdQ z0EX9Q?eTQHX4O#BGIY2OrBMfdHPq5nZHwauP-PuRDS$w#D(48=^PJuyou{wbhaQ=t z(D^N=LLo81K4Nk<Z1Qgk3>(G%CAx2r+qrCv^+~w^?t7q)+6DO@kSnJUJxd^~#9Id1 zOR@wL&OEnB)5>K-ue4sBwdTh|fBY43K5AVbL99kb9hA?WHUHjcANzG}SRc%4#jWkf zb{Wl+`MxbPue;7)exvC+c>(l*6sC=l8n*3K&Es>8EjyDd+eRN_8HLc_eeBPV931-6 z1K(S9#|yS>BKz$cC4}k<*5v3_vq$WLK%1O!Xd4k)rv^FIC?F@uKS@1&w!0&A|g z?r-P+_%CTC^&|DhTa7%<ansrG%sVoJMO1U?y!J@Tv^oec#iTE$mkG-$2-Pie=^f!P zdn~e|6X^*}LuchfHT(;o5Bg1&0H~sks%RRdPN=4E2HOC}CV2v-e%I%$yZ$WHB4?Yd zTE7v)h+-tPt9@0paENZDfL;p?*kOpc+O}EmiDlB@6BT6KHf_OKh8i~=gXFmDU?XtQ zKZ_XX%FAA<A8f8aKLPef5Ua7~-0{R?cYM$n@qew22RENMx+6WZdvMv+1J~XZHXANk zHJ~Nu?Vq__msfX=#L4T$mE=uR2)*`at0{#3^zZ-Yf<>s}bC(v`68O?)w?hNiWlwH| zQvNfOsF777d~;xXn4f27h_2I)fuV`nQrT{mT{k*}6D3X3JtHHhEYj0y>qLvp1F|iu z?ya-#g_i$KJ%!ri34;u}pe4lpS)35bvsAF=3C2y^s+?wYTT@1|kz91djFn)b1+h~* zg+l^|oU>Vq6DKkGr;UEkte`6b+0LtYyd99&gS;B2%~YtuAvDwxDsC8qzfHzZy946( zF!rk*HGc_1ZMK?$6O`{B)X^-b;2d6t+EB=_DVD}qTvfpa#Vw5;%c1kcX?psa%l2%4 zX~p8J%te=-<DK&nwd$$Aj@L(izVRpa$nJq<%LbO;kVG*(NS<DlMiim(plQ0bee?9i z&X%>OhQ^Xvn>MU^b?35MZvF4;ZrEh`mTG4(**CU47=|F!alu7F#@mEdmti(6IhUFW zDs;04tc&Rx7Bo-r3#l^91=ypYVPzKU2QhGQNg0r?)xC{8$(tvdqOJ<f%HYf9O-_c} zhFutW(eHbXU7N__oIqTX<Jwyxhk4uJoFJ1&CT-^|MaHdTbO97vH<HGnJE*n94fPZO zXPf+9!!tN<r>BT0ZfVxaq$la~WIr6jDYhDNkY$9c=qfX{e_rvRIvPm|VKjXOe+bWw zno&oh5EqHg_DV%f6)npB#q+(1@d?nyEquJ7g%f~>F&aXo<or2p8G#@4*Mi7#4qrMx z@8z`@&HK_h`r#i%4}9t`y78X><x}CoEdxuI%)I_4!n-7C(=CFVvyg-yu8$0j6!tu4 zYbzQ5=gnXJ{<ptondz7R?BV6t4uemoey#oCT;;_*G%(6U7D-o{U+V<&jhQQ?E!d6j zKsrD$*CGc(cRNGX)X55`$lNToQ~D=2egN$=!BgzXGK+~Kc_T4Tn~-55>o7h2Wq5%R z_@<8*Xw#*yct(vN(m5R?(k4g2LI))nEOrhan^8a!MKM@FR+XB9qH|-yY89<|UN6h? zZ0)Rtz{hh13n-pq#3v3jAv4PD8KN_<4+FaLv?RCc)-;pee=bwWb9QtCsi~w$+X;V2 zkblfFI)HWrRHr+Oo(rw=EH8V}XpbOwfS?{9wJCyHz#U)}+SV*{;^NtR>xbIAcb((? za{;TT;@bJzrhS{9p0#Z0j1?;hm7_4GeciAOMpRb7EhK?%{q=qF51!f>%#1#N|Kl}( zgrEbNGTST#F$t_N1QtVSf!F}#1Ybo^lzkL@$E$o)QT9UXGoXCjZM4E->n(KQnt|F- zYT-->CxfRG#uIUPG^8B_x39{HwPl+fZ+7yTphiw|EW@UiCV5_*YDo;e0_z)oxs)Z} zOJ9<KxgVL#7$Gq?PYv9mmmWz*hP)vdxuNMO0Cq#a1-#MRfZnKKfT`_T?Wm2Mwry}` zTQS8Y*<>a%^33t^D!w|ID|tpNpU{;hS64)E9X3OjE<>S<b}h@K9g3oBdKS271*DxJ z&E})o1H3>b+d>g_tJ$Ien~tHEz(}AtLQ&nZ!_+=>QQxJ*|F!t4rJ@?VpIc_qx?t5) zZjCqVzj*FD(-wYg@cJ8-+6ngligL;5E}`#$FIgNNo$=I~C5^@ncijEV#}-eJStYUA zZnphFpAndAPJ~X-8|-+zFcMd350ZHkG&&~d%s}%p4PDAAm!e^CuDiF=q+343q(@kX z6kC8H!qXv{G-^mTs9lZ$EnXe^YEfbs9+{A$y@<qzrh#Z?TuP^tyM~LXcrxP(WAua` zugBjZDy&R*BppE;wh}EXF&5FaZKq)>9b5?%%hcp8o~MT)TedCD9&?30IpErJJ+Q}A zA4tVTPc`iVx<ixSuSyMY+XkUDCILAXGfzN4Q~7W-ho}kID26p)#&EoI#PbwL({{jN z6cosX9Y&#tiNsDe@8Z3$Z@FaGc5mg)XMGD@@W7|olHz~XJsJDW!5eR>R;y$#bZg-j zQ4TZRScDrz-uJ|_*ZkFEzkSd0pZx6upP#*;ZmJ>eoaw=IOU2ScMJMB1wded6>SEGW zg>47a4YF-QR49t7jwsC`Q+{}FGOTy086I6Cs(MJ2x$$T$YQ5FMOWPg&z*0?6>Qa^- zj%BI}nULWi#kV4uh>K1N3{T;gEwg)y7p56zolG_S7hw>_QfS@Gn%&+HwMF4NCEhP6 z*<^Nx%8D!3owhUJbFNF-yfm*<4IvBLA$iWMO93f$mHOff=v*QiJn0cKS7xo~57@?5 z5+}%h(=JSoIs)v#105~P*x(4>>5`Zt&V@0M;WD`8USI9)p*hE1*&sUZ{aLIFRz0=W z!Obu2+P{9*&7ZJ*9~tj7Cu~8kMX|W)#(rVb(r-Ncdlb3;%Qyb!k8XN+cd|@XgHSGl zE<z2n+_EqO;n@(HXJUwwF@jTMIwgj5bOpADyS#0hDK}vh+(7}aRT^FB?i88WG0sG{ z-lKmj@RasMyLG$;l(stRD4md!)ef{IC|9%!C9WW46xd{KUJC;=h3dQFhAnN<J<QEQ zy;oIwHn_CTn@()SW9gW-*uvyZf&NM8O8X$Ui)o&@>=-dUoJx*9IPTCQO@-NtS`_94 z6#jQo`apiiVq!`8t_i;BZIXeK!E;%jO`G7F-dY%kyw754i4C0=dOFYUM2EKL(#hjE z=55IHJ^DkZSxQIyix=&mIF=tcaMpLx1*@Jys~A1`(%SF2E0$V=)42hHoIrBIktCCH z>#H;W;vetXb7<B#A6);rJ2x-sTf474cifn#YrZ+44EZ5f<$f`fr=YuyTOGQKXH?i- zr6KT4DiQ(-YN(YNn<63Ku``3xd?!}37u^*<kllDYZ{>}*8bC;O!Fv9O(A^PiqFQXI z=upnN@J8{iV+O5unsr$*T2005yeNM}X5kbL{}u!2q2&#|VJo*r;t{Fm2tn<LspjnB zf_8#JwXL0VrToC-KFa-q`RY(pFrj}0h&DBGhiw>4KG1)3HX%t9f@1QgV6N??+jeT` zK23saoJ440Da`J&%qWahRs^4(ANYBmGaZc{p}-rbO%j6Z`p~pfJ2#8sEZN)_;_4~0 zvV6x+e{lR#_o79YlZ`sI!%YI@o*g|_``5J}Ki#O@fA6-Xmz~UoHP=3D<wv%~pAxp} z&mhBS=eT{9>DZo)Zr%`)TbViIg=Cv!z0*)L(7Xhz`q=P|35ikP&P^~<G6?i)*k%H` zkY%}8pVmYME*^=IV7De~kI9Zuk!lF*HbO|gnf0a<S1ay`W|m5{8>@tz))k%9Kcd>F z4J(s$#fFW|3G?&_;^=zb&fiXqgkpI1BlNT_m8_-@hbib>vJ#@hGqWK-N}C`(9U2H} z0yPD@f_~C8MLDqZMz|_QmPvR^Q8DedJg}Obc3so%(Kew2$Z2N}yzKO-_?75XRLV=S zB{wD-Lcf3!1Ob^nIqt>K#YZ;on>jXS%$j)?x6%cxo+_)cal^KW-7{9NB*)b8AdAzE z+nKEW=x5h#*fH;SZ{D{0mctk&fti!Z0_PX|P7fZ7=X!m*=0q4mpuwj?N2FsDsFAZx zH#B;)N~RZ?Lq(Q}Twd^vJ8h3#SOUsngdWSH*sS%XXJROOmK|a!ONi17wT`xosDsk{ z8)=kXAN(p^l~Q#KH(K)pan-hILl|wE^9Kv{E6!c3U*el)i7BC_N>O3KL)vaoc2XiO z&7xUP>T@e|Io9CfIg;U)RkCZ~fftI_Y9ifbxmFS-FzFn86^f!cSI6y{It$QAq#=;5 zKoJ2PGJ#rjnYSZ<imVap|7zRAa|_uQ^hNE6XX}<)6x`8;(8E$uy^RKM`a`3^(=zCz zremV0Rq5*+wc_~5LI13*`ho{OHP(rdotyq6`}kFs<3hpOM#tZ}Ela-s$lZ>e|J~Qt z+<MI(GHJ+)80Iwla8T^sE0;;Ll14GhA@D7ZWwI)_>VgcEe;ek4JDu1mKBLW%XTf*> z*(u?oSyC0H39)%xJOQ|!+901KCcfuTEukZ$u_zo5IY{QT7J8Kg(o3*9Xdo7xxPp^U z2%2X7^`^cg#WD+PFbT7f7$zH#B-;azy09GSV3=Nxp9?k8ht5o}oLf0u3`;AA(nc_v zj+Q|(7-?$9;gRu1q7!1KcC1a^9G(_gl9A!z<F#}qfe;&pO>nL1WF@JF&rBNuOD~Ad zhia%`08zK<b%Ph}q0m)vDo`U8+Roq$(4W_}!6Yqx84Hz2GHm|nX=^}tca}Bh47T1p zD9*|Uzkt<KU=?y?!wav?$%FZq#!*N&#EyM)pICF}C39NeeBi~|(+L}*)HJoMfs{k` z&yTeI<8px?*hwqPQ_P*wN=6;ZG}}3XY8#^V(Be~F&F}ID=lkXiPPl5;Qf6al&s?ue zD=RR=l<xMlnaVL4SOMMJ6;WZF<h&TZ7i5%<H_b!zo=SiBi7Q{+zHs}2mp*q}G-Ddb zTe5<li<%!ePHnu9sjbLtpnO9t4VWu6%SBbz+Xkj&!FN|YOfEG;FU`nD^HKKjc>*qL zwn4qXb>n8tjy+!(?KOnD@I)$VIJa$S=~AO$@l(2HvOOIyC<LdCiTr9hxZ)uhhG_(y zQ3p^UthiAt;$BW<H`GW&#QnKVh#gb{dLq3dZwFy3<U$v+;)Wo{J8Yoz&2c!n<srRx zf3<$}_>3?#-hbixf>nR;E8o9w%h6%ucm9{XD~-|XI?LytyMF7e_GIjd?U}LTB`GPS zY15)K6$N!sSc0fn3KA+vzz>2dfdqd*m5>lWkdOdTwIHRfkg8Uqf<`2y+0`T@A*+)( zQ4%}0GqF9pzvb@tT;Aur=iYC;Kx5N1AkAsiOzyXT-+9lwJ@4~eU#enrIP>Ly{m6RH z`;AXOe)EqF1=4L8B!r;S)b-or^2C&U{{HAgxokRC4lbSnDzR=uhu>8O%glTH{FVbx z0_4dMJPN2(*`vT%^Wj(0?OWn<G?3(|k&9$on(CLKF0u><;O5e19_N@ekq+Y}N5Cw~ zej84AXV<fmYaV)W-`&r2-!!V4Yy0=P0=yy=cG9ub>-ZC@DAtFitMm+&o~GJDY*;V4 z&Ch)hC-Ks4c66%CVkKW0sv(^(d{6$2EGj_X07hJN-5bQ9`mBMC=T;VF3?t=|9u)1h zG1F;C@iX~bp`~!a^6y|ylR{_~<-%)J?RW5&`C$B~Uj$=Y!hChO7!LUrMb$XeO7}5$ z(Kw6`S^;3>vdLb(*=TGwyyfB2{N{$eZPow(R+gW7^1kD9UJ%TD{oVu5zINbqKlRE- zkGueMXW0RqFiOdv0C*IKw#w&&N8gU@CF>BXV5PBGbXK+^pLDKTSHBJ2r-zgh{~2R! z18pr`)&h#F9?#Ir)WhiY9r){-Bv@2W2YZ(KRcsNRkK*$&Z_P|)Q4w)riOhhZonupD zs-r%1=hr7+8R^k1Enc(kWg^e$AP5y@2>H-2a*EQ|hC=tWz;h_ekr2<;OmR!<&SADG zr&}^s@kX}Mb-L)!S)+D3d^=?ik)|lIFjkGxw6dh29W^tlr?^~;`GdKl#;l1TAtT40 z7v!bUWTp(cL`ND0@OnbCE+Rt3tO#UKABDAHLv~MCb>V{oD~d#-C}OHJp{>2yXmT8m z*uj#`@v&ZcJlj~ackjN^J++-zzt5|9?bR37k3JgR@kf9A8Q)cZb?3j`_T$GWxkBw! z?<Ww9Xc0zmSLY{o%Kv;iI+9yWZhgV_=nhR62r6bNk_f*MY+ne>;tsZGP{^yX8L1M9 zV5Whs!&@bj`&KAxL$xicouXq=7>u@ddd|VQ0S=3@YFsl_DHsZE_Fxp4)8!}r;#XHc zI3lKc=fEsyyvDIxR?_kiPxrFX=q1x3nRn0sr-@Uof>UMla7p&)axaT~JGpDN<T`Wa zemw@Nwam4Rl-V&L8m+u7J&A9FS%;<I*q%w9=n5UCj5cG1dLAJ0T(6$c<nKAB^gK&j zofcgm<;*O{WovX$hV0!S1$3i}UM3Eq!p#@Cody<E{Xn<bC?;FU>bqs_+Pb!_`h8u6 z`sM@2fA934zj<!&pMK$<U;gRmn?XuBFdzyR$f%KPdE8|spX}^&pFEosC#}PFRZPy4 zoGGj+-cI9`3>#R{LK)fGEekDZj?Bo)d|~4AnEPTDg`2r2bKenwmr5R!G#IaX+(Q{N zFz9g!fNIv)1SWict{JOpUP61(XcK(*al?J*@N81aeVshGt0p#MaCqEt$V`KNQt<`q z(aU0MP9S*nisNLS3`66}!l#1e=sDB1VvRy^T&xgmQX@_HpfoI{qN<|tEE(ICGL7ZB zTb_Yc82_VynV!F%`hcN2T9+p^Y$s&W6j4*)jl#HXVd`V6VR2zXR$PeHO+f%or5eB^ zH0BJ1Dw=?W{z!c%>-Vl=TWv?+@7sFytoY(x@f&Au`uy!r99mrMG~00w5-h-#X|vi6 zSt$@unlG9*McX-djq~h%>jzV}>j<OpOh<s<Mi$2vnlwx)xUA=#%_K9^A(YyIbM;5+ z26aGQoktoiYml{9dm;|ghF8o@;bwc()G;h7Qm|VtE8NR)d1yLJ8pwrN3q2yjAw5%q z_0RT;jpE>g&(1&e@;CnEbGLr?seMOJp542{6u<S*RSK&HhO@I7_bQ28e#2Gk3kz*3 zOC#xI0i|xwWY#b_g_m<nw^#HAYA|Mvac~YjO|GbEk$TFLQDP{~M}s(~g3*&F2V#dg zS*1X?KTV-S5CmjnhTprq;QOR-I*AfGAJKzM02ZQPnx2geI~qjv<$$G3r_BJ6N!^Q1 zA|vag4-xQ?dv-ln%fA;?xM>x+bY0~+MH*k!hI}_`+p6D(wHb;p-7UWPwD`l_FaO#n zzY`re;9AJ9@)$u~qX~==wqTaFJ8dH$DXcy2)BQAjJvtz4WmIW0G-KKMAZ(V>Yk6ru z#mq*fhGi@;Q><l!0+KTRsPH_IWfaSgomsx+u1Cg?u58-g*}2Kr|KOA9^n}UIYjGT5 z!eBFlU5aFw6oZ1Vb8nfEo(w+Y1)EdW!jo^@bl=f$-}%|N<$mv1escHCize0AlUq7S zmPvpQVn-RJ*N&_8t60nWqCT8L+DWEP2CUy5no1o1YaphK@@PF-A8(G2EKq4GVoM7i zgo2w}tO~%=nK)S-J0IqlX;USSRnisTL7j{e7EEiP#!#WhSgBj00U3qBazj<macT`c z&-cjSnbv|$6yQ^G!ub}kiUd-n*=j<RD~U0=Z6mQKJ9niUM-<%Xj$S_$<j);jT*=zD z>L2y`>j%VN-Yb6dW8&EFub;T*UtV0;MMrwj3^*NyIs~U)x(LjL*0QA3Z*!M?{QK!* z*4&|@*lzg%U}S~u+jW(gJp;G6@-Qb?1}us$BcY}&E9kZ6xVN%m?<3F7ys|Qw4t5?p zdH8$B!$M3bLEiBVdfi;p>N5$cE;5@gj<UGdMK6|ZW_D`l4o)Hi+pg+H{G!Y>y63f} zTfXzy-M{mx^HVK8WZqtw(Uz=H=}0Be_CDYB5FbD^wsg3hF98=Zfb$v(Vj27?tA)72 zB^!WuE%MCDD89(bY(=fii+S#K)$*O_!=VCZV;)muY!C<(1%o${Y&%X77Z~I&mGAmI z%f;3UHkcykQdv!Y4jv`4>S1JP!__FX0fS1a4cG;r8D>B9$s4%AFdTAXj}dD<mqP!9 zgOCiKtet5X08LdY9)@(#rA2~FMQmI3|J8Nx%i@dQ5{Ir4PyDgiHzneyUOm+g^Hzg0 zLguVPyTvyRD&UQLmkxURv6bb_+Rw%L+H2Xz(c)52mZ3wPb{LAO70V|w)f~~U({#Y~ zn}7(3Tn#WFg~E`Q&?PSTR$C?U%s)SK-KjVaHz-ivkYaUlvbT5o+>Lvq>4wa6;c3r9 z2Sr{DIcw!;p|$3q*51=P@(f6|OmHqL!f^g$dTISr-+1JK-~P<n?kPGXSb9?9S#YP! z5d(^*ldQS1v3GTNAd5PQcwVW7PSg?4S3$4P2Z{wz0GFq%V5OeWyiFD>TI1g-vi&u+ zmY3+XvD6OA=@k1|_`1;FBCB@raOh?VL*&9x83-7GOx>*@?1oZ;%q&S0ST*+-I8;d! z3fe(mp+t=d<!U1R+i&_wm_#Z9`rI~FMyCnt;c47zwwTY9uhW?hLSlgH@Pi7io|{Ec zN-t41-reT9U~OCVk76N({+2k~6Mz4C@rmp7rChC@c&Wd$TPWe`au@|&fF)~DbpRwp z2|BAJc1v={gL(J<CwqH(a;IIQmPYw=Hq0D<Bv`8|1xzH*wDCMidzYM#3biPYE*Wj% zI4M-aJ8|Q+yHCB^PB1z3^3Q$nrQf<On(ks)E7#aGdxY*}l`ITY<+?;%N|64>4ui=I zx4w|6K=sIk_oA3Mcm9sQyZ4@7zjby0tSVCN=Y_US96xT7&8!Xf_tp;g)ZE%~Gq;+K z6Li}%!by~_W|h)W4tL1RJCX41$dP49@wp~VvKdScSgSxPOAqO(UZ}#Z?2<u|c?;%Q z(=2GnO$NdWtlEbo4u{eflta<?w(R;Vt?_m|q?s$66sXB*I11)8wd__rj5z`tJ*q@G zEuj!Q$~t46QKL(bh>+Vy!;DpaG`@h&bbwfNFwZ(CAUSI^<0O+5j>s!6X>VKgd%Nls z`p<3`zkA!38#XqU`%A;?y1wVqUPL@5k&n?{p(8wvQ$O%AjU??jD;I+2^8Cz8$sM#Q zfql|~j#-$wfm@T7m{kbiOqe{FEUkg*g)%bD*m|M}%aQ4h37Mcly1uv*COtbYW8GHC zx6ES+Q^MtR8m6t804Y$0XS3khIPms`=5?@gepGwCcl%c!_>W)s*x4hC0eDIg#8SxH z%<}FanO_gDUk!I9rPY`yx)ZB&*Cq=G_jQkT-(J5_?0dR6%><zAmUC&e1Pqy3X@Yz& z_uzHexJ#Q1+bJA6jN&|APM0U$Ns7ir-G0|+6HZJgH$k|jTLHWb{!|l&D*@rlhRtN7 z9Ool<k<zn4ctXc0=DO0DCoz~K6*+mD*MtftJ;@>B$;h^ggoJ`1==b|fgu=CPdI|cu zk%4D<vjNPB9vYR+z<0|)*jE;Qi*2iZPuD1g{*oBK5Fk`6pIIq;c4xQipi)X^jBP<7 zWC3^sU18vnV|!_Ke%^cVXn%K)!f*^%Xn;swl1Wn>4)@}jNeke~99cJ(dC@^YCk0?3 z+6a}Sow?K^apVUw?E8)VGs$?%j!dW2q=;KrRfaX?D_hV$#<KIch&lYG9UQBeH?be3 zKl6|Oe(WO$UcTk9vWiR<?altK^}+u0*<z$xg(8=)Cg;`<-%##7>`d&O=uW!AYivGP z{6u!c<dM@dI~|^OEC(biRmN_{LU~47D{s}+c<y)uylvY|OS)3594rrVh`~V$Cn*?K zmsTF;bOeDaTsOw>R607r@K&nD4>aQwnrD_#%%Y!zJ}yPwoM4+oT3bE{28S`CeF^iU zuYz6$`nW+r(GALGt;R*T6mFqiFukrj*lCiQ=fMwD+PMmv?JF&Si*2iZkJd#g^rb6$ z=hSLjG&>#2c|oa5skH~7BKAR?uy``=C!JaUb(x=dG5cAZ*$SX8^12vEXoB1W^x71{ zHEiy3;SY5o3L)2HRe>&=XC=6Fb4b$A&Ph6MWS32fn;R|)GM1UOa0EQw1vt&R5^k9$ zcA1nlrvf*MXfuPc2q9(h^IyI9tphWUe&SH~?3ruVhSwL(Lu>ukFpOM3+P&xe!4JrN zhrQW-Q~sC$VMv0~pU9(6-wN6wA#X`<*@!oWYRI*#5tOwa=M>6Fc?i=~GnJ>pNv)Lr zST2@9$1m-=5yi;@Yur;r13F=?=BIht?7BLD7@-hcAcX9JGSUJ}gign3tJPxa1@2Dq zSp(YeH0Q}pde31TLQ=~G!W@k;MxhB~(op}=o$540Ij#Php%9>TGmUsiS$aw4Omwee z`)ynG4|!cCg}!uAQoVL6n;C2QemETDN!}Un@Xn*n0YJ5O)SAF2*&jUq{L1vY+-=vL zTQ*cij|JfR21?8^6!sUr6!xWU>R4#->hxH}N@Oyc?nDhw4kND@+LSXpCe`GDiji-r zmT6hB)6Pw0%+$RxA8Ds#IYstMU%5Z-1o6JvFFdt0AD3=g^mlf`{WtU%4!QG38aw7Z z(b8hml)ls6&Q+0@RXs`5dl$RBT{lnM{P5btsQi@<BJfMz%xF%#B2+{vTY?6h-046J zHjB+2a);&`HJpST5|c|r6;TwNA;W=J#Nz;;d0HROwYW~kT;c_qT@bPto|!x~mGJr; zbW!wXz<Csb@!NAe#^KNb4Haw0bfoEdghrb{vMUT3cE$h|x<4Hm5C%%ppxK}##~#M+ z#N~X#4_ez+{X<*-Z3=zq3d8<z+1fc_>H3!IL$rwrHG#GCn9i0qqdg^G35sJ!vyX!^ zsAZfmX!NS`DQvqbRHQIp(QrnQ-j<k|l5lgKEzp4km&nRuti3tAW4hS%&u31Y<lQD@ zGjeOIDn-3`)7Ri?6x-?8K_SOUZHmP6R@9$gTfgnQ&x{X}sT=2SK9i+8W_pL_i^ap~ zu00de3r%{XpdX}d9V;;^8Z!mrmJx6e7#?XJIh&k4zImJihnh{Pek%wT9H`_0a#I1t zghrS_*~4}yFIdS|X5Cpx^9Vh^DGfy#8rMELV54Ff152e*0<#j3MhK1Np_d^4j2zze zD7;4mp5=^DtJ#zp0S@aOCiEyeHGI#nWk8sy5VM(nK&cS3e+zDFyPm<N=!!auXPO-e z6J1#*)1(!b-nLc0kL!O(p)a%IC@W&woTU?*Otjh7KeMK!WH^*y!8wubald~&9y{My z6j707g{C6Zh-J5`pp;r{rXf{d0czrCcU_nUCumGm<>Iy)s?=(z<6hJv7e<C=+5I95 z5G~YfAs0cKG<Uwaq8yt%S4sv#;bO19*dOfgtNmr8`PlQx`oR9h&u%On78GO8Ew)=b zeBlqorc1H37+(5K7{%F(SR8bj>ce9n?kD|~cx9AOXoXF(Qp0CZpwrDFvO*(FDM|LF zUxKqhkyYo&-$mW_<7gZ+p3-IQOw3D~u~CEl22xEkc(W;zlSYBs_P7B?b~wz2pf1+X z7f$GF1uqC$qnPcNTh1){lZP~O1nDV5`uQgATv8m)?a9CmxSIgVlsE}`gK2NlotV6e z-MDSl|J(HgQ|L=qISgZp`*ar+Qyi9oOjAbPYPZrN)kPg|%zA5FyzoH$(ZXtYjSP%M zjtwRwru!{N{SvgJUCq}ME9Ia`gR8o00wce~Y)sX>?GGm#{^sfKQt1tb(M-q61XSsy zMKR|^dOaAXcAeCbxmCEUtKE~!*PIpmqx?`5HsfU2Y7LgpMT5lpn}4tujx@b72YGq{ zN^CJK@}#u&nQ`GV+E|wZS<o&Yv&U{4yXoQdVG5^5p1d?7)fkYrbFcK+XL_3O1>v;N za`vv+P#d8N8+OACTJz*-X-EzXMBJ84NQyvRnHf?t;=B)jC^}65`NFxU>Ix!kJ}a0x z)bzCVaZEpDqtz%2Gx)jnv(WQX$W0#D@f{@6)dvxp5ITx6m5qUu>QM%W^7isrXOGox zU&Wr>w(6^2?<$49+*08nq0?ESIvq3u(Ca|dHp38t3-Ma0bNJp~_o0)qdrB?X4yK<_ zBOPL^fuFFd8yV-R$+s}DQ3#c&Jk-&6W$hKo?`Wa(3|$GCj<s?r+<w$p@AZz%ay1*S zlJZT>$*&w)x>jyej2JbR*Js{Z+VjRc2Tl&B%5Lm6lXh#kaIk;f2gGY{%E$g`{Hu4% zUAuMOk4Sq|Z7VN1RxVr@nE^k9-11ywZn3fWT>RXqjm)ehC0bbsVl$79FsE<~a!%`t zFoHEK!;NyIE!$l2!qgP|SWBb=V0#dHdXhPqVEOtzXtnEt1ppvesZ?1Jtg#&;Y%U^x zD)@iP;=(wCMmcyM5t!9clFppXr`S@3gfM{P4Z=aU(=|8gBAn;C{zkubVDFV;MR{#o z_0_B^NTDycR1(Fmh*{a(vB^23KCNk`h4uzvl8uR_De=@J@lDEU+ZwJ+J_IG1OxJ|v zXzY>M#aQYQg9-uW3X8BXO0=#i6r20=%0WRwHzreE+C%MO(LA@QD5Ym!K~Rp`g_P*= z^!lCSYqO_%bL-LG)qJ*}XK7<~`r4)I4yuJi{+`2~u{rDU$NFEp%m4D%<gOj%R)yMX zS(h{D8VADKv}P8fDp}W$xW04!idb2SmMC)OS~m;LB3rgJd4m9tDz580c+$%xn28dZ ztY)iwygjBZ%vxgl4^S-G;5>q})dXfnhbUK!372h94%OJQksWI27`;{QUDE~4EeBdc zF4xg7hzGi*5%kh8N(Tjn*+DbFdEuh_U2Y){<-t#$1~Hf9f3bJ%F>+Ps{oMDxGdtcL z@2>a#et7-1X<Q&e)D(r17K$pTQbhX)EeNL)4XQ*+N*a(z+axW`A1!JXC8(_wrBYP> zLMjMBp@a%tObG>pS=)Gx?X`FI{kSvtd2YY&eCOVoec7;Hmp|g8)oSL>ea@Wke6Qd4 z`xNfFO`e+X8{F9Zye`$Bd3-h(dac2uAONE@0nZAl$f$)XLAVLq2=lx{dHJHReZoi7 zn${VZcQII43C*0Dd7F~oJH;yEZZ^&mRzWA3)c7*7N@19AF?WCW`CZMtvvGc)74tQk z#tqHa0%LBbc)rwgda~o}Z0}51A3AeeiqnH5CvM%vn_HE}W~ZUqWCj?*!Mm^f-+EAc z`p3Mp3#mVuQY)FY-Kwf|Xz2^aQi5Rt@G=k0j1tC@8Yz)1;yjHw9mpM6^cI)+68b3u zRR+%s@(h~U;SP4^OeDBXBH;xS0ti(pF8Q%flnEI*A+_MaN@fKs(lMVOqL+<|S67J6 zg{*O0B{c~tt)(SI@+05FQmw#8wgV$4ll;PXhMzC=MI$u)))j1v=~qD7;V97L7~ghm z`GX3I6%hDbK8Gc@nobr$0xQn=M3ddDx3z6-ie8uM&oDONLa#j#cM{tI^iLBUlyF^M zdQdQziso#me)QkxcSgz<J&C26Ex5AnybV(AyS|mTNU*VT%M#0cCc1*6jBA2kGekrr zA}&n14A7Ltox_+9b-nfdd%dPD5m=jEMW3AA_Hn8I<MIAa7JHXKSsPPz4Ra&IrI9^J z*FdthsVU!TFeAaFRK$}w{OCjfPaiVB^HexE2<r!$6iF5rmZFR3l-R>qbgGLoE?&w5 zqs>d4*rLHDlN|o4A@WN;_q)ul1C0k>n|Te1M@hFOO3KcJ#alcLc_A@4(}?W=^!Y-v z0Cspit0&@dS|bpLMj32f^~*l2k_ZFURScma7C)v6F!ZiPYhFB1Nf#Q?d<(x-g_X-? zjEw146?;de9hUA@Jd>NmOo%<S3<E2=7&gHqZZphW2$uvz8a~2ASCSyTnIjg6gy+XD zwGG~>Y_v1xb*cVTW5X`=nnTr$ylz#DjI9^{k)ozn7k$>76R!86JE9k=rW!VF6%j1M zK~$MvLBR%5$C3cuSa}U`F6^)+3KHTV2Fb#5VgvKGiNO>@j}-<^bw#uD;}<(lUKl<x z(LSeihF0W9Q;l7tBLjTLKD&FwZfq;C97wXqT_oz2!6$`XyaXbhf9O%`mM^)Hi&TV~ zm1*ECGzD)#E1H^UK$%E`mZX<LO+kWc3Mu%N6q}u?bm3itq>bc8N?z%Mr4J~9Od)7o z5!6@-kqen1C1jsdcR_gAa#WrPXNr1JmVb+czszHC^vu-=R4q2dCJqJ?TB<(5a<`Dn zKzE{$3ys>IBZVkxeqBX=vW($ek+3{sWue|lB+?iaPtqbyTNY_zyX?@1i-H;_zC<Jy zj{?(j;>l9Sf?2n7--ajHb*a9>xJnm#&7s(i8H01h$rwdUn4a=$tD2omwJNW_6pmDq zx_lH7u!IZm8JY3K5afiYvC;B0SE2t^6yqupzs3l2#>0eTQx2UQk+LvXn3!z+cyi#> zWPd4W49&9clzIn82L_VfA**Y+Sm-cudQjZU3*&&L$szn(Tv+(}edbs1Gw(huuc^pp zni<1hCZ(S0fxBB<IFWu4_z&D*COXm97KF33uoMIGEOr#<V8g-bXnG=;&_u)>E3UW- z);Jo>3773J#TiLm)18!}Qh(B4wZK!P8XDoY4%R!}Cn8crO91llsnuqpA;T2HNJT!3 z(C^gs4mrjG-;aD)$f|(WlmP}K+inG0VVk<lT{CHNQ^Jh8>cKAv)_C^3j_rWD)=V>Z z@_c*yPPMgV!xQYfR9|jfy$ikO&~kYY7#@Zo-oA&WT3~Eqp9f8csnu>ATMQRYCBNb1 zjG*FKbrwckgyh%8iVfQU^^4>u0+Es-qVY41&URJW!8M0D1b(6s>Ql3gr{}sRX8X_0 zb<O&DUs=dE%n$ZX434nAVcyizSl?|UgbHlzkk^F1C}AT7FYp(S+-u%(mviqQW|t<Z zuEm+Ic)fxultxBHy5^^}2UTU(YxOtQ-}vJ6ix^x~WgH868WL<gL_M@6BZ6qwgS=*n zG8IpG9M_auESg+*(f}mLEpaW8=}*+<vQtL|DJYQe0K9}Kgpa_AMtgyCs+|S_LU@bF zu?tuZsdjWLU?b__>az&e3OIvT_TUwwkJM_28&o{#^-8JKb<QpR){Ps0e`n*mRIfX} z_X0b5=Bi!jwT6<<BR7KR4gt2blXnoqgoK-xt}L|cKYw$!yP|B>H7xI-*jN%IMt+r< zt)rqQLowqC&SJJ`V;gELTHspams-wT>_0Qzf6?y<ZLPvf4aM=j+ue>%y>F<{+TUz7 z!i04ByouBs<&`%~_zj}G4}ABLuj$)&IuAZvz2X%gIgO&N*e;uUq^w43e5zpn4=Ey& zxZCR9SGVuz+)=s{MlC+Du(PJjgGn}j9XwoSmE&@mmu;-Q6cr#0yZI2!F!hcOy^tJf zxi&Frfintyfr^fhi2<BpaC4{zODcTPOB2^(RYyyK%ltd$u6^Hhu>1~PXjQF6(J(=H z%7j0a%jK4pd|)djlZ}4TQQvP4Y%uzr&Wr0~o$<{(ui2?{Ift9dk{cH4K~ZC+5mOPg z#8{91ZWvxV$$tmaG>n4_?YSQOWlTo313}}+lcy2EsFtJ7Q(DXuuvvNJIpfo<r!VxM zm>e4SS`x=)`oy-bQ#%Khp<Pz@@Rr8*A~RzaM6vINGXkWF$(byzRBH^gRIgUP`)z!J zC;mFSjZ7fdl*|>UTIaK5y&W=|QQBdDVSgzsovEAw^-D3bfCYAfIsaI}M%malfLVkp z0e`;C%9Fw5)|^CWRReWQa+qRRG2n`Yk#pjHBJ`-FVN)40M%Agr6DSX-tW}b>s<w2B z6kvKX#4h%*9rQc~H9a3|u$K?GRSfKDnykvs%C=xFnw{&p;I)4F*Eg1?&c=1A{yc`0 zYuM7JPhND3jgD=~*sNyoaK77l=@$!KbF5WYq)li!R(Ymu)UQ<3)D#vekQ8QYF~Ugk zz;uigqrAA~>`eP7m-^344Nix}(3&^wneL(E1H;MS&bXzcsj<(&T4=Pf;lF`={tgI$ z8z7<+78l7wfR2G==j8&O0X}5q2Y(TdpRfD-e_D1YwZ{LdaYao|#_(kZ$viC?refY) zfAd1TFc;3D(j#<Nh#_lu4ASA~Y-=3rsNtsL_)>gnI2k6HM0K5LGL|k9UEul#et@r2 z&z!cCrbS~xQ^DAl-MJHKx=UyZlj<591|$hcI2?ksgc`CwgS5l4OQc2k7#zP=(&U)C zhNU!<c`Alenf1S?huZhs+jm^${JJjHpU2SELb21h_>r<b!5KidpW!sd$C7aDxPOmg zXe{*uiJ=Z@q6I*LrE((jE_!U~;K0R^Z_dxPoGo>YPWNA`bT1@1kIxp0GlRY3LpxaS zu+!P!<TQg`C`SuuV<!TVEj1RN%}|kV-qKM~$CyTq{n%$j_eZT+nd1HE@1kRGZu#NA zDyGe9GSAW?Rg}wl&g;90$Vs@O^JT66S7hFs*w?^*1_ygje$UaFqsVO{TvY;fhAgD3 zU?U+RjcSDD)6;y~PkeY$TQ^E4L<vVmWi0F>r#D8-2&aD3SeRjHu->7MW2S^hlulP< z<9p0|gJ-U(6c{Jg!Hl;Mmy95gqN^gC3euQ47TQ;uRu0P;QKN3SAo=6tz2m&;E4K?X z?ds;&=Qgu{xrf!>v-MQ$DoI*lh4Hds=fB=xXr0BP%PPANQk2=4t-<DOHYg?J!ezSd z<3x-K=g)PVnix1U+cCb>T~Xs$pJ-@2y{n)1_2-87)wOgNjCz3?kFa?g(hMP6cd|;v zDCJAa8SQvg7DeJ5XWWnc;JIg&=l;$7(N8OmuErjUglG>fJ3J@VE<EziQ|(Hg^LpRI zGSmuN>#hVzL?x<F`j<qj*Y2Ik&zz{7z;b1!qQ^S+*-Oxoft#m*88s?^u^2AS^Z6F7 zCB#B48K0*_7jd}~v<r-33~`BqFwKyGNu(CH^k6BVEwZSSsE7qJ9MpIa2IWfG&<sgq z!mBX?RM(;r8i+R%43<6QThI+c!dSKizLj3kkytSfwjMn>u;WWwclXuLuIp0$`3$wK zqg`*fIJc1G>x8P(o7H!nWc01M+u}NDvJn~-Kf^u`*v6_7U@ArnD%RPlfsZcj9Ge=r z6l{wuH_@h>yFc1Jr0m=uw|CYzc9@0@6Ggbnl_YiEz@r0&yt-DIrD>$vI5y>e$&{$P z`5)}*9~6G_T(Yf=KwyMjr#KTrE#rtN3dkrW_#~Z;cA$PB83%ZkJ4v+8#Ksrc`I-|A zcqY9WlexkbQ!|l@P-sZF)(yoQrufuUG=&@wBJqbU<3-jwv!#i~C{)9VV4_uTWrBMg zD`!&9Ba~+a31q+rrZ(M3m!wO>o=!sDJg{Ytu1G$Xv||<;2(VOg47_1Wy_je0=u-bH zn5ux~82izC6<MU2Ch*V*G7y?-74quQcZYau;g;JrWp-Vc>d$F3G&B`^?6K2+XS)DJ z_`T*!AGurS?Lp>yiO5UigbtYEm}q84q2?}Z8!NS(n%?>Gbf?Q3LUTd4XS)W+hqkN3 zyK_CmO?53gM&0IfXh<Uf(u=$@_dzm2Bq*FCJ2|ehlqp+V8}7;`U-<T$-jm<7|KVSZ zj%rICCT2d#A!u?EB&k}d8D{E#3LIS^w+JyNc99HXP1V|zvPQpGaG_CG4f1k*1$_ZT zan;;yK`q==f744dFQGx9#GtOhI41;K6=9xI=U)si?sj%(2v)M`iDneJ6p&no>kfAO zMii%zQbLl^sZ>h^i%FWw>A=n^VF3Gs)r~A}aZDMnDs)_Ax!|Zk3EV~3v`xg2NmPR5 zbpa>5?0M?hPX<4j?fmWEXNCNxOs;Dy)vx|DyX_73<0sku8_lSHrZarXonL*A9olob z9lmjdy?>ZJf5)}_YBZ%Vuy^Y_|8veO>*kiCaWcn`|HAt<1Exs1?E8^X=R_>=BDXN_ zHXfhuJw4qwHrKtF7=baBFOCoNj*sk62ev!y{cX8s9i<WJi^3>Cy23QBlQVNzS`Y=5 zup()?RjEH$_`skoRb>r3IU4=Iee7Z5&;L>z-m&5k3EpJLSE9s<qd6H8qq;PtATvjI zFvy%jtXPewjSZibz&7j^MtEkHW4TonF}<3!!y8MYcC&r|mi@=(k40)^auex95MC=e zz$G=RsQQ>o=E}UB)A8FNd8T445^qqaf?6u3{V7@|X&%!SA8<LMC8RGlKph=|Elsuz zmDy2pF$*zdO$d>eI8LfHn6=-bU<Tj%+KG|9cNrtwH*0eJlIiOAnDR8c^YCS*dV;;r z*jF|V*ZZ_X@8910-`mD7OeO<`Zv8*cRPq!0P;4rR?Np{_8_rC0kCl2yXSa{LEyy*Z z&2DWO+dsfZb|>9~QK7zA+*ZIIdJ#{&IF%NxF03J%MbN0CIi>@eq#Tw*9+m_20FhXS zEz1}o-G^$fkXt@}e(8_@AopkA32*vhmLjg6JXPiyz@s+kB}FtXzmm;vYT|ROHiWjU zFlyx`2zDk-_w-0QWJhktq(3<xj60FT5k4D{wr8owPW&e>cc;VYf?hz-XnK#hScqUa zf=o@!OUqhoCL0M*uz(OL2q29x0fs~uA%^7~+d(5d60AuY@*kvXSk1^}K$yYsMis3h zAOY*%vu{YOt~`z#j*adu?%s0i?VCBZHh;Em>Ns>COYZxBz2exr?1dioj~j>Ued^Ir zXzM%JaQx+<FUhO#JRcwQ!=yNNx_$Ig&*_<-lHVNaWv0(<>l_^(;k)<Sz1!;>TTI3A zVpmN-1qbu73)(pK!Wns_wr<x70LcpydTBc1C=?a!VX(|$Dw{f@IHk<6WQDFy78e%3 zcCY>5*UdwB1mTiY%WKMBl8|}7Y-7z^f`zOJGLd$2vMx-84$olT;(gVh2dDZ#{ei{V zMU)xrgDrbyW%bfXY{aog$Amx8ZDAk^qhc)1$cYF>iruZkNPbyrwRt_U7ZD0ADo3cX z1xpzsPdMs#*>)GZ4{Cns+msy;=v2&I2R`f!zBJ{rG_KVUIl)6I#ycPGEalq1`nzDq zZ{p0_e5nRA`1|eG*nGW~<K<(FwX<IF`kB9CC+=o{v*+s0xc)HqePQ@#uP@F0Y@WN@ zUYz{msq@2AvBS+-+quxuKibz@+<!3NGu&7}hZ(KT1hi2(^viiWZ|X*%sIKo?hDA+S zah@qvZBsj73mlm<avE}(nqU!v-Uivu5?4$VGi5uYNFTY^yz8)i`1hpjt&cFFim1y! zDdDSEZ_mtNS+lXuKvZT@JthkcfKyyli+k(#zCZgu5e9-UKo!fd1D12eJm3L{afz3x zj0COW)Hr8i$)Gm$m>#35RWdpf*{g(FaALKlpMb7LoF9|mP-G(&<c$;zFIUPKR1<v* zL7uT--nJ-rO<l5Og(kHt(>3<t=<xByo_qdCY2CKD^J+7t8r;#R#EUx*ul#82Mb`JM ze7)N5C4X3s9(Lw2DO7ANS2?>1yBXCuzFmIEdY8+t^1`!Bd3Ig*`@~uH$lcYqPdzOz zck{I|8Csh=1_#u)o>@BI)%H%fSZEmA-5c!Kr4H_3&21e{A&(W<Dvy1hqMAU{k{lv~ zv~GZk@IdwQ2>enIRFK%!7a^ns6KYD9A}gw`+3-h5)k<7}Y3(u>yT^cF1Y!AG59@ml zI1fHd-gs89vBt?$G{zO4bp6khWL;occK-wvUx8Q2-1r`=XUSeV8Jz^b8blP7Hf%@L z&0>V3Fx0WLF;WpXXbrV1RBew0)l_3YMjBQ@qCk;+I2J@5DM{gkIbBkth-C$XZJKPp zN4a#ATk#WM{RWSmyn}oxse1x;xL@%RPX;TFp|dmRdVhX;==KM+!GTSmR+}N!!dcD6 zD?en1mVbWYdG^2?)wd5k&Q3g3Re)6~rE!+^9a%@@CfJuBXD?)L-@sq>kyU$L{&H7* z7Py&L(w*;rjNMO92iJOI?WeoSVgAakvybokxV0&||B&7@oNMi>Hw&O>+{%1TGd!;h z;wbGpF%@BkVQ;srSF57stehYD;4p*e*5~S1hq$SRSvJ|oHm1eKNLU}q>PXBm#X<bU zqb!#*AN@8pf+piU%POy7X<r!zemRCCDYKVFp<&Sl<5W16=~xt6tUAX9tJCS6UYd3z z7sS|Ck(?=3(H@~DTU6sc9ZYXEwo2o?hF+h@50R9{3uJs=LoQORa^;v~L)s}3DUZuB z#jfQlBUoH0*M<3K(<*yq>Zt%fid;jpN6?TaE%GCykc-b<=z00W-CsCt9sJczolSCF z6^aG4pK?TsG)(tI{2f}g+fzc>(x<Q7EVjH|J%iMQ>EX#kxcz}=*x2gJJugH$+xba$ z=Nrpcgv(wIU377BFeTulH5K)%Z=<o$Tf1q`vKzbY2tM*R-rKYvKxrAY@A;F$&<%~Z z{N}dqU3tR>mEn7fm^xKe+d?N9B$gBcRRUE_*|eQ4C~8m<pcY_H@a|S$1(X#@<{CLI z!9ZeY2B_}5kyrlqd#dYNPka}yRSwIG!J-?uh_*^Z%_B=w!K?~9S?!ar@tEr?a~U*F z)&Qbp5ieo|qR1SqJC&&Nf9zd(a9!nf|L*$UyYD^8S}e)3h2=$(7ldt0*g}j2<ATG| zu()*kPocD(EReRuO`0^FOs8$iBxD)}{=k`Gpnn9CP6(X|44VxOEwPKK<Hi^}Hr_4C zlAo;Q?RV`t-?{g``&P-jWpw6^{FeLf@_f&Cw%_?3JTW5;XGryPIP)&83u54m0PCQM z2ota1Oe+y6|DZYO4%YP;9sK>%&x`%%24AKO2ko<fRK%FOmUsk?lRj{`M`7KxJ&qUd ztsuF%iL9<_NTq7Fe--ouNkw6^{=v@8dsi&~V)V8<&f9HNEN8FP5Oab<TSJ+B0WI=X zXzh9yY?^p|TbXm)%ML$)7JJK3>3(oyaJK!8TiF|ro!Q|gm4gH9&g+V`I&fmXdV^cO z{_V5=<w`|c(>F&CTOa(l#dPrYur0wdC?3O_PzWnVSv^aoRO0I?-39O6kA-9Chnq$! zpVCde@FBO=SXdG&5PegQjiT|)PkwCe-WB`Nrbwh-leL%{gTJH|So$_Iph&1oW(G_j z#H(lw9m_>r1+Zl$YR|m9RPg=shmU^2=1RvR#{mwMw$k8?z%P(8QecgBEaD^05S&{a z44<S$L@b*%$PJ4_i?Q}>;Q~Y`ZhnP~8mdkiry$nwqX~DJ<G&t_u*b=yU~ALv3|d&} zP-#W9+jJF}3Afz#EO+OQ8(QbG$a$niG-}vzapS~H>i-5IMIJqU)oZ&}^xP4><F0cv zskP+nJ#g?&7rltKi=>8YT2v)!WmiLFJAkIRlh=@Z=e9)l4dccI;TxB#TrYayPfhV~ zlU~vg`^8cA;G<PO4Fnn+r|!~EMPkv|P3!8n{Kt6b{Ls8kP#?4#UUe4)6dUg8bUqDt zQbhH7fC4@(bze~VG#bV!s-O>`a^Q7?yN+FlqDXXq<yuVzSdiQ+Kh<A*rS7M%2_F85 zpdj!~Fyr8g2eDrS$tF7wDu-AUJ5OCu%xl>2fmWcOa56Y$K8P5zT?!F2jTT2}Np7Db zotU2+Cv+<49jI|Z6$7O;cY8-zpe#t*$pL+UV_rp~njpvryd1a3C#;DUxrHdiiQ$9} zgePVSl>f%Ev*Lnj&_6=jahG}(Ghq@s{gNWlcwHO>ZW>sumc)pH>o2S(I9o>vAu>nw z&JzwHOZM^p1)D!v*?YHk$KB@+_O2o46j!@tCw{w6MZHU9I1nV4$;X4Jv?Uu~xaLSk zH7&-zRpOaXmNhspBK9n8I&xih^H%er2O;dEA;u`45`r?Pb7{C;P^*i*X!8ABIuX7Q zgk;Q$gQ|eOnVjk0-C<d9>q1kQXl~t{|MyMt=Ux)xg~3iPp2Q>iAbTFnR1;Pl4jPuj zuIZwgTU>4MBmQ-G2|DkWk%Rm6cLV|p2VI3rf#kR)F`A(P>r_#7Eij~>c}Y9CknT`7 zO}cfbXL_h_(7?QvA2CK+L#+k276-j?7m*?%4h*}z2#(?h1>P_%dI|b$<t<QqVlvO^ zIh;DKVs8xP#$jpA>v@%_ZXXy;0aqk;;85q*-}hd9ueR<kKGW<1%K6Baao3c2c`s1! zJI@4|bw(RsP&qPy;lSF!I}m03`BDDt0_DJc5e4<u+gpEr?AVsg=IytIl@N1^fn1zA z6K<wVK0~FfLT<@HfH(D8cyI7FEJ=X}e3Z;5DIj-8x(6vfxmw!WKS=-UcVo}IAhypd zIWHe5R)QpT&&r!+L(GBYm*qoTFk%m=amn+%lZUTkKF<rY>4O5lCr5NRQfVqah-Sk+ zN6V~N>Orx0Wp=@HKaW6zyJ2YnGrq)GLi1}W(dP~iq0rbtrG=GHQYD&MkDyUZaHGXW z3^~I&#IOO!%Gy|tmSrMKp|%hT#lb5<;(i&?aDpV6%uznx-}S+XuGJeNed{iq<6XF$ z&f~s*7)Ve}Nm|hMzWEB<I+cyNv;F2r#aXo76|!Y#EfBYFTwVGmINKOYKYSj4rz)aF zB6r^3bYMjK-<=L;=fO8U4Z_|j(2Y<OY&9W3nSW370dW-w3He$8nhd5psz$*gfg6wM zG&3JedYSt_G5-1Q<4<jpyO))Iow@d^b~20-!WADSd-I={ZYFqvsJDWYe7!=!yv*sK zm<1HCU20z#T1c>Pp9q0qb_pYqGjo2en^=&7;BX`ZXKp{1j}`NeK}a>&kDk;aXaEz9 z#YGQ!j#U2qD&T!LX9+58TiW*DUGw4S^4lMd+<q}snw?**CIPp6s<yY4eTy#vecvzA z)xYI==I6_@Wp~}g>s~K<uZP(BXD2<zl!Y%4ON!wDkACL@LQu*@oYU6)2OFAqeroR7 zjT8W$VpGA{9}ow+4fkkTPZM~X0@R8a4~l6?w>4FR2U-#YvSdKLaaMN!G5u?gXy5yR z+`FpMx4k}%no^^8y0EM2MQPuj*Q#t`^Oaptb#E9*uyo{u<Y42)>f&apnez6?>F<aN ztb3N6w$fw9nBTMQFqh1z&;(A@Wu{Fz1^@IYPmXx+98U2<V&f2IF_^aoQGbhz=iz_? z9afl3rg8I*)d!@-cmIX7dNsRPa)}Y6umo(}#-8Fe>YxPk*rgknXV==NkO>P&MHI@B zK}@jUei4A8HAP&$tTDabe(#MjRSALdG!43UL8}QsMrH)`6Z6A*4hPT(tOlHudL)@w ze+o$<c);zB8Rk=i`j`Jic<dYOhMS1Tt0WPHxgW3Rp&CxRXufncnG~i{sg11km!Xjt zQeb;8@MeKB72{;XGLyU1u9T62cpjCIiFq-P#N*89H~QPPc6YvKNrr;x${=#aj#s2i zp?R7#Go0WkV5yZTGB;!2r7Zf_C3?ewIU<G0(TH*AXvdDjOVy=K8y;kH&NF&!lHclL z9;~ALu*_)(eXC~eVdIU(TW(}$BE5xUVU9f@TRy5@)4I4KUw^~wRekX{f1N+PpMfTO z&H7{+{00eCQnio<%9+Zgf*l<}p|BaVP~J;=Aa^&I>L<P`f9WCNi}%7dV7*g%Dr;t` z&zS`*a774e@DOenM0IhTDd1F`No+oi!t`HK-ahyh;t$SR*_@Swzx8r`SGda(EzoBS zbOnoGJVW{r0ax5IyHGd*^0BdM&BJD10N_r7VLK+q?P^GcXc_S&GADs7K67_cmng!L z5c&APvd#NfwXSX2@MjlUr5R(wlz#EcRtRl&p;K9xLd^HK4()m;dFL0@?&W$u1NRQL zZFo%yB*e}!k)1#S6G;YR?pC?IPr*7tEDg#p6swG*=TnbA0$#WHm9HaxpA@oPYlIah z!f%0v#{km8>8+|*0HQj@BXtmEZCepJQtd*p3~pqw6H}0?tq!1OAOxW+7do6_;T&n| zvUa>l8i@Bo!X}Gc7(|;3lB%dk>cV?GcBFP3${b?cXK_$B%{YtSH~YSr90R+}$MfK> zK<5#u=GgQ%pUpe4hR6=G1rzoL2NR-Oguf3zI*up}OKwV!rZb2FI6ThS_^fSvmY$I3 zta(7X_S#Ew^IYydTS1{5d$6|j{PS3g+IaB-mWwCynze1BAiwqQcwRTUyEG;254#Bp zmPX|e=mX+3jI3ly@X{|n(J<<A8<_siUrFurw8y>)_8E&(G}s-XQ*L<%)XePwF>+X% z7SXs-gBJm$3mGO}g$lapL7n%dwg(>kGzeS?X4Hs)1xf#T@yTtk;)pL~S>VFy4@^S2 z!UO#9UafajA59nutUQC#Ibw>XPU<JSlrH)@5&AQ)UEH1QBS_hF7Kin~`oJkrFb8g9 z4jdLcH1%lH5&kKMWp~Adm$s$sJABoS<BPPOx()ZTxo0^g>pa{%m+HW0A$Q$`L3Lko z1P;OQ*Dhj0>tc#{%dO3!h`8lf!=oe4nm#^~!z$SZ?l9`F3@c%*W0}}N4a!LqaNLSl zaa5f7$8Rz{ANlq_`MITX4TN2(Or@}y>S2WU0zLObZt6@1Ta8^1g2_Dk5#N~m$gM(` zwKwd_KPB2&<UDEQ`IBw*;V9HTMaeeoaOQ3?s4-@wSb+kSc_lGIp1961L&}sD@fGin zzE9+ejDu$f^Mi{tx2M8CANN#kkHCn-QE2)?kX(&0r;K-ln8@|aM_9^|eR{0<!@UcS zu=W-A$TxnTg)6k#Tr`<ZTD|sRcDTLJjKwaeTK9zzGytEwz9Afu-+eWaebel_O;I(_ ztOBHrXR5&KCIz7Gf5ldGQ%@Ud&_=k!aeRbOP}=NIo;HshjBk2LRKsX<99E-hMe3oV z!7A{XxfwEYfE}AW_MDk>8%}7}lpqF^=crMR2jLO|mfR^E$TBTMG<=Y$JKsk@l2D%x z4XMACu)j30;u@F>>gI#8s2qi91!m1v<}T5e{C48E{+<(NB5&v6_aSN&&!Kl~Y{<~A zNMPqZt|k{VgEN4+pYK-t(6^CH#IabR-3Qut99tA!7XQQbth3`%-#F7fuKsL@(?6Jb z;}?lYT3^>Ewaf*R?eMvlSekOoh*A{Oy6m}*1r9j`)zNTNL4r(lo-;2!Z@l(PP-y~? z;glKMz(K8*1oi`;f<i`>XvzD*q<6;3fZ`F4iVN&uE<rDvT&^!!GYfvcubhSR6ukaq z(0n5wQ6sf$;}D-id{MN4=Lq-}csQ1f#Eo(=A~2cx-s$&_XO9y~G{i#pG~Lq_YI0X4 zhH*9V8DW&pJ43)k=khs-obe?O$f<3MSFjul7BqCZO?I%qb@$-~3AO3kb@KH$G4--A zlb6Lw%t&n!=FZXn=;5}_uaCU?M&{;~PVY(ysX{H{moIU!{T53c?51+$mVra|oGove zKYO9>xtGOwJ#B*_s3_N{T2<srD21BYh_x(O%OD#zbIZA~#Dt}Ad3f(#ULpR+hU7AC z@S?Nw*$ln!djGmXIM$*-<wPg=CPWjf>sF8HW8=m+ybDpoh(6LRH@o|E%UoX5wSy5j z<HPImTqM`GcLxK)3If+FiQ?$!?45_^?n}<;yjFdvkG0Oe)VE1NX0&>Gh)@>~-MgXn zqyI_%*Vfa=28=bI7vqg~73LEX>fi_ChEtS3csKXsC*^0K&o(zGW}d9KPwrd!h}??S zE^9H*OAp4${zpX~`((Tb!LL*kDsGjp4nebwnSY-f*lz-3c9Y!H8^hTE2-0($q5M#H zwA)96(^Zgj;WH@VYGq(=w#|Dx5DzMejwCzDvHDLAweJ~e3(wcqKfsop^XTLAEi+m@ zeMFX|8*i?kH$U|5>!Uw=b^OL_oFz*|31{oDvM`EtiKac92R_OD!xMFzUKYESfO$v! ziGe9D@W821RE-gVYPKbN7E0KKONwR{WeP!_4?C^34cAz?%1!Hs&D1zaFNszGvF^6r zp>~W!NA{-nf|d>&!x;ys>iGm_r71(6lrys?ws2884}Qx`KDPT%+y9+tVJ*>X?-#G` zy|h`eYBHnM(@cbUb0dHJi1OjK@Ybyp`;Qu5xKV7GCs8O}T&ZTnym#ba>hVXS|MIld zy%g?UOm1_21qhfi_BONbybj_v3M6|eBreCd)F1<`Chi>D$#lQsB2s+uMUycCZx=Ff za1}Y0qg=hgGmAJkN0LE8LTFXPs$p|@I5#|Ij*aKXaaN9xAqo8TrxYN+KX2xClF9g| z$7b(7(U^<Gm#-IBt!B{(yIf^PtEZu;ihRqOhK1d+-@H5i%G=4_1;&aMQoIRWNUFX% zF2A=k(4YGHBav@>SH1aG7I29%TP`A_Foe6re1K_ci@1G|jnsvp3I*1_%6jX!JxwZ; zZGwo)nu%M%8?{wZ7-t^w1MxRlNF0b)M6?Gu1JDCdg59nY>u#vK;T_|hjF}nMhub1; z%p(c*<9Ro)F5vHsi^%BstYasd_MU9aYvG<g;hL3fRvo*%WhMtcjRo)UeS5Pzem!BG zPWLW$daoA4vjn8MchdQkoXzIG`lrg>_tWh7pir(D{t^U*k;iV^E{&1nmVZG#ke1W~ zpOiFR5lS4?BPvI06Bwn8R7{T5R{p$^mm~=X1{I&D?>NxkypD5ZshaJdtxK`!HB^D0 z0#E4Df=hr8T-iCXbKB`{J>j0)nr}mF8FMRGCQc)RpAX`4xHMflH4@o(q+$P1ozfWY zS;>|zyZrT;WX4ucV?l$uY?-!TQE2zBy4~9+_8d&F?6H?E6V$k68phxJrMh-qxk@uH z>UP^jy!#%U?GW?un0(HT;TS|$zz<eX8}ij%+7oWxD^L{rC&`%!N^E|R&&csu!OJsY zE~<=F7wbt@*2?O-?sKhRIbBlyiM+H!Log5@TJ4k^wmi0cAUAL_cQR+^B2t7ipYabw z*@Tm^a-kDL_4^LTPmG7PR%P{i*3-kHmFs_(r_9*uD@2@B#{T$sxjox6N+!8v;rI(r zD{URo@BK)iyl%-Y?r?0jQVW}nZn>GKYPPRb?wmSKb;3ByH<ERQv;uDliQ`lB;SC1% zocPaNo%Nb1gNFuNjU^~WrTx1Wn7Lch&N0Ks5wh+Wy+DVVpY$g9SI)@ch@YT$5MU99 z<tbq#-Wq=Emik*dV+#x%<qf{QE{u<9M^8o%9FHbVwRt{UdbQBGfGOuRApVlbj8<P! zVkgti-j9zy^Vj+OMD+2$)4Lb3);5tT9#w~H9&wPel|xOd?iC}2ux*i67nP2fTLA*? z(`{Wh5%1+rbq@AF2b!NjV{tOJKUR*pVK(VJ?UsgYf>!&yg$OTqDb?J0y6_h#3MmQ! z-K&<_9jAg;dmod?g7QgbZ_>=Hj;~_rlstSYa;QH#G!Ygxv11YI>bb1y&u1z#9{3d{ zVm#Xa;eT3n@vcXou@C<~d+>u~b4*`6-<p4w5UCSs-URn)2}E5ZcTF6I<$i3Cs8AL# zuLe$RNnxx&Y2vt1D>3yk#!4)<Pc3GM1}qb_D}N`!F?5VD;S%o{m#exM<RH*E4u2B8 zyF*NCOE}#M77->akme2^+Zi9;t_`IWoym=D!gZfx9UV-&e3RQ#lo?xnMajt*pB#Pr z=iQs$lj5_mr|?9-d0>w@csMPkGxJ)E#hrFbizvr*mJ@6{TsAJx7toEgk)|$@YR7U@ zZUQ!PR{WHnAWONKDd8<ECt5%rQqHwlyGTYua|=zWRZfg>>0qwCV~HGGg1|LLPl-cA z@{!}(;Au7E#F`g~S1n}oI#|Q3DJAo#gUs0KD@R6t^<v_en|fZ@hAPdlbSup7P~b6< zR*!sIe`tUHon6_un48y<X=_kg=h&eTLQ8qnEtDZZY7f3*eu1}&CX|58%9Zde>fVea zVaZpoAr7xvn<jWAVA2I1d+5&im~<);I?*3GIj$K}sJ>0^TEjXzS!3g56AGrE%-HHH zM8<#f=J6-L(*4|fYI|qJ4dDOT9zG=;KWd#gm`f#cF;Q=8(A!$<<|Zc^6$O=RsY6Om z<*3>vE7%^4FxYeA2CXJYv1X=AY<2mrz~R>oy&7?XFPI6-=d`d^c{lg~9ThAFn@xlb zQy3kUhZFM2gqF;Q98GO#lOb%LGZ!rL6xi0LtITNil_2Te+YfHMZ}Bs4Xx%F(-5AOF zM-tB9fO+zSnLd?gdcH2KH`g024NgM?(?I<|ONES;ib)zP%byn=*GPl=T~cH&JsfFu z%>{z-SRed(O`W8G1j|iU&tjC0d!uTZ$PF??%c#pNnUqFP%cn-gfkY%{DvqLRjmqq~ z;+ziFJe$R)Q-SKNWk#!~y=3<9`t<Sj3%>tyeD&Hh`zBcL@d=hV<qQuRBSS`J%u>vJ zOf{S9vkmb~EEH{Qb)=BMWOoJ!&!W2n;dx-3)RUlKB}u8$gG^DYd9h7Xs;1?6Y>fY= zt!zZnL?&AZ8p*SCN*JFI6A3jjDvu=9oT&<7CDtrA&k<YOoyKONz8<gOvm`TGJ-tOA zII{oCee<69w^?hybWS_6Y-eJ^NhF-%llJ(CnI6@hoT<r1G^E!>?1nlk7IQR>g~Ln+ zUtK15I%y|kVpJ;77z7Qw!)>XHEi3oHJy1$Pz@Lv`S(`La2=X~0Q3|sJOJ}*9ae73_ zWTo*5d2~#f$fzk(7F0=zDvfPYbDJ=`RcLH-Vo~D#{cOsNR!?u~fA-tq`8`edJbWJa ziGa~`noUfgqdq=rj3roZ!mxBx`v3OMAEs?Aj^ppe!8n9cOiz_SISF#Qr5saOkUD@E zj_MW^F)*Eq$il!DbP^I%)h=Y~&?TrVLlt$YlnxaPr?P}8M|Bcvk`qzblEU4^CW-y- z_iXaVPD0xN4QGBIMUnmd-m{7L=J)-*XTOvyqM%7)#Ve5kFC@W5H<RuTQBh(&Zsv9q zzJ|F#>Z|)wV;V_UNYP9BiS^MaS|1xT<G=ndM1Gg((sjOGa;ZdB6)uAoi&RnFCx5#^ z$!b|pD!pYYh+Zo7y9e*N<oo2i`&7QiynXa$tXOapKvg53Lu2d=1Xd)cC*&Up&!5=o z2`ejFsi>V5!3OIB1B<J>Sj8>qpzYos%`GqyLO3{gfeGYHD~Y{*{GUzNT;?sJ6`k?* z_jO&<T$)bHWmj3#Pm4V|6LkKgbX4O%hr^%E5Iq7U+mctfGe`$ya%X@H43hqS3a;UH z+3K$VRgH84A95>|2&i3A$k`cF;ay>{trS_gM0EZG(6n6Q&rns$I#dw&Bb{2gB0yB< zKh{eKyt{j-;D!yxmkH|u0TapN0-x{cBVsS{c(`<7LljZKUj?cfxq51MhZ#d`IyIk( zGUmjMCn{Y=&TXzN%DKH6@b!SIMi8fg&IUo82C5oCoCc~IL7WDv`i4??M)xNl9cMdh zy_=q-AGR~y{v(j?fU0&P*^dgDlOK+D`#O;BfMeheMBRRL@OEMR<+617zL5VR7^|-m zu+2BX_ht%j<K)L53`u8>muPyg+gF5qTTs<k0?%XjCuu6yy1e$P3oN_!ftRcm>Xo?y zYq_*7uZHm3(9gyBc1BH-p_%F0ety+x^=!A>pAzzoKviFky){E-GkLxf_9xhb#nFaC zW_cYD*txKM%l_~jA(7*1Y*)8ea!KL|zZmw}Pr@B_B;HUE&&{`wz<Y1<Bs@4}?u-t< zWP#^lz8Ra@w||cy4uv5dk$*}O0rM5kw>X~8J%&Sbxud2gPj_0>If@>@p~q3hQrT?2 zld_%Vec0Mh(}gwkW5H}_yi)JG{Rtx120pyj0brHKa!H8Hn{wMaJV*{(i{xLUo>)j} ztn(yVm=EPP)>INv$lS=2FB{*Q+6*K%+g+P_NIXB!N*6Z-AF)c6aJud+5C?${yaTvm z{lQ4;Jj?w8Piq?Wc|+2NAJtm9>BEzed>ij=Fg+NA_uA<$Oscc*3d#0!TIcx!-CvCi zJ!dFsr-HG%L*#W9ST}<n=q+ND*`oJux+$-2MtZp5iNr6SUY6I>BZuG)%srk|=Li8= zj!oHXs=vQd$WQif2je2EI~Q9F#0g-mz8u`svOr>Ii0|-lTAkSfmtK|hM0A|jVS(4t zruE}9#~Y?6kLNbF)V8NF2ED93<X2k+Z6y^a!C&OY{+H;vq=P%grJ|&r560>%VR|gV z#*FExW3zxeVM9pk)Ad?Me=62y)p75%pR622LaFW9&$wdW@`J=Osg8=PM^Msuc=uBb zV)(SJQOl@~I2er8R|(j1i!5VrYAH9LaIV{6gX~r+5{F3cUmTSdUyMu;C9={YXEtZH zml`9vai0m9lfJjs<a1iKLLTH%(zgwa)z^b>RtA+OYbkd#ruVLmd)LOpw`AL$p1$Sb zU?>#}9ZZHS9Rz=~<<IJ0e~^g<*+-CD4#w(h0)k{3!fyj%f5Iq9zA9wTy|+b~T)l7< ze0avz7g&ICe#=T7Fx3`s&*1^Q?VJ{Jo4}_#5X5O<tVR&0fvQFjr-7<Q5U24Uhwo(a TKq5mc00000NkvXXu0mjfEDf4# literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/XMLcuboidDescription.png b/Code/Mantid/docs/source/images/XMLcuboidDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..c6cb54145c281b39e38413f3ad8fe2648ac61000 GIT binary patch literal 8455 zcmZ{p1yEZ-n8$-Vv_P@qgaAd0(-eo4;Khm*ch?de3Y6j&ic?&RyF<}pMT%Q-w_?S6 zkGq+>nY+2nBrkb+yKi?t+28+rVXDe+2ym%zK_CzTTuw#}1VViYd{4nf1wP*{-QfTS z4mVkCH)$7hV>fF@2YL-_dvlP6)dzZBL3)_E2|X_lj|e@F$g7txUkUKgbMidCa!%d> z?XcY7O0rmUs8l%k_+;u(H{cYGlbnt#2t?TZ_(th>EHVR5qFYKTNrFICF?e^z7$6Y6 z0bE8>!(;v+!`6;e^LamFfl<vdn3Vy0fXu)&O1oVC53wFY<CmU*Vv`^oljoH=veN8H ziDX5jgAOK28wK{ddDAf47vyvI^zL7{tpeW%R$}KbV4_QA2VkGyi1F35WTa#)7+C5) zbP$ak4ZHq4OXpiS6W<;d;oDkXHXs28WCU6}Cj^e56I3N&9gIk`;J}YaRDNJJ0^SBd zP(UCa+%Yh44u+D74gz(uN+5wB6c|>-z#$j(-;K^$-eXwQh~y6DihL}5(S4BLxhcBg zQk+LLuTZP-G$j@luiW5S2;-H!DknYCoV3F21n7vOvk^DmCA|yH!d1<)X4!f7Ey-FS z(N)QqnuN;POQe8nv+S|<EieimCu3b|<bdwn#E_A~FDUI3T5G}P$Y?u-9^Uf<TPG@o zcwpQVw0p-P0xi4_rLxD2An7i-_~Y&Gil;Xghzs;o^Z;XHN4n&ZU3UT)_3J|uONZGo zsP`*`P?$*9*5)vL!h_^vlBbb3^GT^g_T-9l$ZANQ#<Q-#A<a+k3ER~p``e*zVra{v z&@YTvd^p*pkkxzeZ_BT)1_txxb^V9@o1^k){@Z?RuN2g|L7i6on`aMi&eD1;eUQ#l zP`c%sHP>sUE~W>?jXS+Et=)8UQ9P3`)hFiknz;EM{J~(#SfTXJKn2ZDYJ}~-uD^WI z8owqRe|iy4@IywAP38jPiqSfqS}tG;zWTs+cVdDG*az*qElHjpdYD$2Bdg7F(<N`G zME>>mr&X0b(KV%kP4*u!(#Wyp%;4W9r(Yxl7{A1BEQXb$F_C@y=tI~J0-twVGP0WT z%QNJ|eW%xc2hG=6{2a>Ax@Uk90Jg<sP?Z2bY1l&9vg2w`guGTF-r~%bK3yHM?4&)D z&DM;al!|}FhN~@$oOH#mja9dJM)~A9`rB{`C1Nw?=EWD^d8VmuQB%uRgFElRApAh) z1xd~TguJ1zTBe@*w$R`2%Tg}QqO1Mg9pjzBLZZK3Wbh%-f?E(DO6S&Nl+sbY#B^MZ zrXYKk|6rReB`M0?<}I?JbG%F06VXPZNfG#AgcWtJCP*cJF+ULg$E?a-y%rDsr&Q(! zwSEsyx+z9cLhY2OjPPyxS)3~T@^7K}_$(I&hx%B1drXp=CqW4D!99beGS_e09R^CA zd^HLa8nFLBhRp1+zy)EWN$V#N;4gnx;3O={E(A4;dGZO+`mZJUnNPxw^f6HK-Gr$X zDP>DYt60BiKw%;j*`(ETxP4{^H=;)+drUBcM_(lS$RAb(t}%^ND#!MSo#eg!8(2CQ zEg<CC>${=L<&W#PFrdU3#vAL$tDG98&g?HDg>BuO2R#m1?VJ-V9>j-!K4BNUQ$zo_ z@9o{mpZ(Kh0|OY-c=n}|$)f3iL7&wZQBfwREq2~B{kzgOBDO)pX>#m}3$vTqK+4uy z9h9mjTnfA}D1~)I%F{$q{h@LSAO@G-%AlaIPdm?w1RGYpjQkh}j{Ett;THc-UQBXX z0SFWv6LJqnu?<5bkH9N4Yu(t6aQ$lu7FQv!<kdMX^>~?d!)P-Vn^129Cx7oF!~D4u zNCSAx0%a|Di{|-tq$vAGGUXe7G;5)?oK3&5B9Wk-4jw+4k1b4J93al>=J<Pf6Bcta zBdHzFm3(dDINp96q;(cNIQ!94Q0X@m-zK}D4HwG;A#zf&IU27*bqV8`TosD)v2o{Y z?K=w>FN`7j6HrVLsFBI(S@N&L;k9TAuJR*GqxAoqm;!G9E06X4uXN^w<-FSU>E_0( zEf*v~1~@tbx4~g)@W&6QmL)GN)Bq0cbx>ypD$YdcQ>Kz{-!2HzK{`Cjs4LO*LPALo z4s+GA#}Xh_M#*C!`@Oa74k5rIq_(oLX}&#bxroL9F$1Q@ciP+EZ?Ip01@gP?sJ5A+ zNMJ0gpc>JyyEIi-S5p)A2jh^O1J{0V62}QZiC8#<NS2hBhtPj~0J3ht$AM3H<h;DR z(-nqvSGXb|d_3SJ3U<RY>xa8*$M)-j<toq<^u|o|P7u0YoP;>w6%xTBZaZT{;&-vh z$--7+^!g7SdwY8i*V~y5zx~os$69zJBj)Umc6Z@&a+SJexv;1SDD}!?L-6j-PO^yW zmWud&LVUbbwM>~oB$}}Q!)u%g(-=`QI=TvkIRzE5T}cs=MTLx%G$AQzpN8-x@E#75 zi62Q5Lek$K`~Uk^UQYYcL?*KBc(KX#{^mmb;c9(nJolm;M_M`vyeHavy_M$B&{9^W zbnGNS2W%#cecywygd7%yeXdTjr9Veg351LFOtcJb>bAIZ)-zh0-CiDc++QyIh-1Pc zqAf*mWD%9NpwaWbZ*ebcY-}tnv;=I3gM$NDE<7J$CyN`-^d_3au>G}wz(sN4*YNwh z7pg!6OPCcE7tggIDn=}rG<SA(Li24OuT2wjOiWBv>-fkujYjl(Y-%bWA(KS}xWdzw zzrX#tU%c?T-b~saNt@{==9`%fC*@dZaCEe@<KW;>gu}y}k5P(%t&;w|!|!%|RaIcg zwco#|CMSPmXu2!P&K?1?`1Y=1x`pZni$yt|UV!o0Hn_E=MejH?095J>qJLlSu(anS zENDN^?|HgG(ekhoL}Zm7+`woZ43nL7q~Nzw)zO(-Li~<`!ZCqeOG29(>VA+LBbF-W zd!y&r_RMtV*|TR{NqCO36Uyf1=F-yLeNoTV)zkowl0yT=<@RuU+>w)$b98j1B6bb# z>pB5Ci&JlX28RMRXl;GX#I)Y_clj5TjQ-KH#^$O_`^)uPtXfa6)?@l7jz6MdxwyL0 z5Pt488E+xH!J?s|0Ved==}ej4XXE_1j}Vk6jQufm++18+)2+P|75(cee3pduj2N=| z`b#s0{`NI<5askD1cwC9qt!^8TUwGh^`__MnvA<cuxLF3{7VW8KS#gWg~uNr9`5e$ z0&7fKsFG<=V=)rJ-QMW5Dg^}13jhzWKb4e}h<ac8T&;dqdHpANXY&5<Z*hy^<lx{R zDpE%5YS?ZcKD<3%9sI)1%*_0E36Z(H3VOzaz>*lF7WYf165c~>Z*F3I%>dSJV*r`^ zr?REAv~**`?9mNwZf=$U-_UE|5)jZl)(&`uNyE~FJ8a<!`|`#WRYfyoPT}K__m9nq zSOZ35{xRan`hXA2JNr3mtdNeZYChDAjEvsi-Xv~AE_QYWMMZr6te;na*E2mFF#_Fx zR4-I6d*9@;H(7k#dKL`?trCR>GO$N8HesEVmM0B4m=>f$k+CxwG*0EzAyudPb;}fD zyX6+K{1Nkwz5O8&xq7;~udFBXl0`P_8GSFN-f8m{WR#b4QPJwRc}+Pq{B|7`_4<s) z|B{|R%z9oCVr#Cz9mL6bgLAAgVW*)2u#uU|8Nf!DLU0>vYn>MN!$?X#t4T)7U-R?L zh~s5!G4k|<@X6WP&@wqmNqww6iBj#Vz&^NFKWeQ>)-8PU8<&a$PTTkALV`UB3@qrz z-{s=17kTk+n_e&tv<>ep1p<LY_UxH{yN~Boi6#(^@uNt{_+#3EOT{CRZ(?Ze1=G6S zZicu!Hnz5o=4vb_i{5$!*17*o7pZaEov{8@U_4#!Zyb!sL{j80%&G93tn!D6Zv2Dr zuPuZ{lUyq)6}T-wm4r+f_~I1Hnh|XY)q#^-UA<hQgPU%0mP`f@({RnsNIc^RVc%gR zZ0kLfmfhDH<yIG9D)~WbHP$+p?5mWN*2_qUC*NDP;IGtTK3Bl#Sd1z7EFu@h3B#U* zP4`BS4{VjU9O0h*`&LtfoS*(o=XbU2eLU52ejf=qeqVq8%+!?V{rN8!K~Ygr9UYzY zl;uCD+|AKQ^ut6cb#NjPl8<FzQI)bUSw7Bmv&p^O^IVAoj=4gHsrWhm3UcYjC(u~K zr~&0wRvOWy6!C>^oF&`Tu|mc-G(2>3CR6!)FWNG=nr9~B4|hhk($&cn(P0S%fcr2* zAQqOE;#Vs{d1Uc|&d$z2F1*_<%;e?c`%Lhh?5DbzwYJvVw|@rND-=_BWsh_IvJ~k_ zOd06tT=$TuuwoPQu(o-PB^>`%QHn|b_*X1uCfV@^&FK=>o_%qxJmuBs5OM4nc{2Tr z<L~VUjb^@D?Hayhfys5~Bu2S&)`q1haI<gvTw#KRUHgphZ0Z8}SibyZdk}NWsjqjx zyZYn*a9vof<Li5$2S;+fZ+sHXO`JD5IT;^M+=jPgm?Gr3Y+KP*VE1cjNlB1jV*;u@ z_U2$lm?xrQjuK2b)z0%PgA9@S%TCdB*KT$@Og?mau=lm49f(x&_es#J3p-PL?rm<< zdM$@PdU>4X_>Ran_d?Ex@KqbxI^7MV)rS|uoV9A~Tur7)YCQa#zlzu{BYJIZY``(< zSm}XkzIfCG*+rSOTSIG=&)BHFblP^O{`H|_r_S0E^C@%-3d{>)I4i8*ZHdjM5h*vY zP(8&>ljjP!)3NSSQyi_uMSD_E9ZB=XKStm)g^`sqGybG}ze>(jv5&*NLRsrZ^b%%o zr@KK8zwEcpKn%S2`1p+kxTylUau5(q#;5{&9XmB-iwi^+1y++i1M6C|;(2u=e;b?) z+?EO`2aL=T@oBZ3j6*d;7UQAL;MZ)YD)YM^R0h`nu(GS4cWQy1SaSCtz+d^D*T6Hc zhn5hbzC`meIa*!CA+IsecrTr)7WZ&ROlrL@Y+T)T@P-N%9U7p5bx~z<D}?>n-WC`W z;J*0bVd_mg7uil}Io-aIH*+22m@7;6X{Dl>S%Kqw8fM=K#eW#p2jZoG6Il~9$lM1q ztfG0Y;+|ToB^*_swhez3O(SI#5fKU8ObYU5CvNK2i|eF`c*;M3S2smGQp4;`nX7r} z_MIX;Z8L0y^!+@CGpK!p|9U7#Q2Ezhg5#>MYP_z-DcnR;4HhrM*uQAbKR@B9mMi_4 zFixsxOF-6xofrg>wvMN^7Ia7NwM+QZJ$!od&IjIA5E|fsfxfb!GGv%h7?NmoB{-k1 zTQ)5g;pQ-vF8`}M0nEs($=UcP(}mnrfOoY_4s^AHmD)4nj$?V5{9I9<#A&&2iZr{< z69uK{n&=e;&T}PYzJ?P!3bc#wAtv!B@+HM9_bY6ODh(!*TP-jZ!($gbGS)C!ndeap zf!&IzS3Up$u(7dma&it@82bF_z527Rr>7@iaeK30fu!2iZ$yzrAcUs&zE!lB*o27I zz`7+yjWCRiBsggZe7)-I<8-P_WWBwiQN!oaR3K?UB-3}bo=+(7r&GN&2`<^3F4N0U zwp3Rqsb@s#1f&Xm7ry0N0VaVL+}tdZU0Pt!odoiReb@$FZxR{6>U?#wih)NaOigGf ziyENPp$+VB{%aHY3Sbf3QKMeq@(n;CKQX>M{@vkoecJKwLGRSg+uIukgTdiAz%8C& z0~<Z|Bbn9L3qC0P1ERIlccq?jBm+vW7YB-c#Ejsum>9a(9z6ea%K3Rpii&uu9KTm; zb39tf#V865G@jqqcF!|(dART<lHwz<Vypqq#GvusO&4c6xx`8$9FRGHzA{M}P{fV6 zKd=@5Dp1OeLoQ1a_{dar#e=!Hl&3IzD2A6%p6K7LgQ>u64>$V}WSm`)x!J7EKgv{e zC>W2bHUL|Cg!)4#330N2c~_TIOh2F9Y-Jb;i`dOhZV(pHLn`x_-{ryFsOVp6-!|V{ zcL0{^Y-bW$P7=apfQ=a7fKTm@u(D8Z5B0t*wJEu}@`&$aQ!f~McUo=Q9}VQyx1hmK zdq+op>rp~qeNN#wcL1|YO-`nZ`x^*os;H<K7%V5hG*vus=@}LO*9uUp$TL|v*<^A5 z2fz=Sm;}=f0n9BaE_&~}HSD>SV%hlWZaqf4+@P)5Wphxk!2u3o;7-^8P+*qXg7tAx zl0VaWh1RYDGz(y=oxQ!1k`l8LZ<U_;X1r>U_vYZUBR+u&0DuZAO7`NDljU-{d=K~b za_-X7(ll9eix@5o8S@$9ggsC5$dpbC_jYzpDy_!z{yp4|(lJb7!av!(AYre17~R+z zPT?ylmigeZ-bbJ&*|4B=1GZMlz$AXh3ow3x&1-s#<d<$35=<XHeAwLFgd&bKJm{a) zwK}$4BzCXT*A!;@rKURCjA(uc#4id1*R8ax@s(`SA=L<|_(N?=2fq4P-ysS#(z&aT zP2NVuPJY7le9!<WNOw>+F=3D{yHBG>AF;Gap8aGmHYfinxXISaD%K|pQ%Ei+?)Ss} z?XHQlsge;opr+{KHQv2Ly4f!_#-R`N)R!@sNgaAr!i(YvIH%|njnqG>mXE2WNR>&) zQ=iIpK^ms3+S}W!s;X*hNdwJTD~|{RLY+@mzH5Hd8c7w{2bgdMnh2$#N*uR>9~}TN z8Xg`#F)?v^dU_sBirp!U6YyhfdHHMRXzO4@PL9+NCrK7LfVFhK=i~VbNmNu+m8Qd1 zE8<uIKP1{tDfuikw6q}1%)2yrsyV<-o12>(8)rLei6|ZgZ74pV`Pex)CZV`lT>#P~ zap~WzMR0Q&v{F2`AixIXW^lwMhNFbx4sV%m-5$W^va+(tb$k#&_H?ZQ;WOFkdpTzb zNX<z=6*&SrEs@*s;h<)8j|MLm^O5%_r>E!b>LbXx_h_(Hv&+h&yol5b6u;|2nSuaK z8~k%T_szRf?Z;jJ5sLv@OV~L&0$d;J|8N&g0}a8a%s~iCkO5=Gj=Q|P1ZD_<KpbW( z8G`Ri=o1f?+geIW!u#MrAWT8Yvd|w#96Dm*+VsAzt}f>FX()iI%s(@r?^IQJ?B{C_ z4($FL#sM<QE-kei&yjWA{`uIrYrf8wTfey$h$}2QA5{RNag9fo{(p#8#ewXc+MMQ; zVMfZFTx99OAVVj%f`a&zym@tX9|q!?fr+xccmb%>tS&&40PqjkP)%JOP}W5xL$~nq zz&z^0lYqH&jb&<|t{s^|&g4+9uqbukaW&Zg)C=1H3i**CFDKXNybiOrwpLIWDo{#; zMN#D=DkaGFL;)3Pzd86N54LEU8Sp188}jlndcdsAZr8jrUsjwUln^K_68=wVQ7&E) zkBmc3ULIEiax}L9><6*{pQj4ge)Za8Yh%Kw?&<GGeE8sd_ou&5Iiq^c4iJ$Y%TH01 z(97VH`vkVp=8M`2ktC?O-9SC^hPS46JpJnwHL{<iND(Z@|9ZaF^DJG&b=mi?ew!(} z{G#`98=!u3t2i2(C6Ao~EWGL_Ht23{U>u7K|AeyRP85+=i|N0?uNi;H%zxv~J~r}G zSIF0#i{p7`So>i1aOV|-6CyHHv&|bDqf<{@s`af@y-tls`8Ir&Z{?X{J@y^76#J*0 zX7<UFt#I>FAGpW096EDWULM%xAC|l}M<P)2itX>~gWcQ!deE@ht(cr5jaeaatXEz^ zp~Yo0e7P!seys8+8V1{SH-It-c|s~powmR!&tK><iVSqGYkQVwv<z&dUBuyca^fcw z;(VR6QxQr_^|HiRZ)BJ`a69D_?qknQq(~S~kapFCHUA@fPDvVR59iuma?6#bg!HBs zQoGzN2J7JN>Q3oe%=~q~(f5qvoQqzz`zgNJh0bt`)EmjEGYI<l&*~=-fygUn7M5R@ zK)Um<Fzk2$lD|TG8z}|4&Ai|J#ms8=XL2$!LYh|^K<(iP>&Q~o(6?c`{f*=5!Fs;( zKsQIUwa>c`uUuVHQpC0h(Pz-M@a?RJ<JuqU?e-~?#}IwHZeAJAVQnbq7rjkpmu`O) zRWmVWA{zXUCnzFEE3BwjICE|A8Mz5R2dmrXS8i`4qX%hvzru-kDq3~(CY6^I5te5E zgil;YrENA4ZVnzu<q+;(t~}k8ogh8DNSuhJqIu;O+6N<nD6T}CSy+&flaD69%x!6b z(o!ThHVQW@X8PUi;&Hb=+5b&|O_K75#1PADb!7F5B^cH9sWNAntb%hY970w;g-li< zesl8g^5<-WHFNa3te5mZ^ga!JVw|v)k*5*gxLy|%+XZ-_J;RfOX|l}X%41S|?Rv6R zG=Vgd^c_;KVGzX3tIqN|NRC5EKx{*y+cl%@L;5ED4}JywV!w}Xp@o0XmhOElEW>LQ zcWZi51$s8-o+u^Q#+LnneQ0~4kVlXpWM{CS;u)9HqTXQR**!6_*?}^W8P255uSRo! zu|MOe>NqQ)J6eI!C@X+?Q>f~mX=qx*@=4wODTjaq1-Xi}<1F-Nko7B-2psIoUyRTO zA|Kw$r|5a3dk4$(Xu*!+U7RX<S!U8aRr$r)rIZ4#I~FCpiYRf_iyUp0R+@<}LTaR> zkf%d_fn3J>uopk<uTtGWV`AZ3M_2gaJpMW9k~kgYuf=7&S!k}_8%yPns!q#CdUNl^ z_p%l&ZvG(Kiu!{O0@+J2^?wX0kn|an|18zc==j}GN345-v~MtKd<>sEVG8rj*OT7c zHsN=s8B9!L?=5QPW-1Kxxf>c9s>-BA$Nk0N6awbEZobX(4}T|N3f0vkFL9j4eV!U> z8+K;aAMVYlbHS>gF75D<TvDa3enNRWn8B|U8u!!*7e{>btLT2Ah^T0pF8PoCs}!Ay zq0OG~pSetl4_{K(Ow@VyQ!Y*~%~Af)Ae=VbPayLvEws-6)s3JC8^Vo&<U6)-a8KTV z8DsnI-Oa_mt#>0q@|v9^gJUOOID+gOxtl;IT}(K%dIulNnVl&>3FUg7<*Oevl}RAI z_Uy{_u`^3av1B#l!)^~AfzR)Ti>}bckg_>0L{^ns%Muca+)yD#cJY+zlK$vl^+OEQ zu;TC|8mv&G5q^5+M87!LvxXmBOfIn|zLKrk`=($H$Vb10a@UGb=y(_hR~zrw57Aih zs$_~?ymn;AmHT`A`}e|v_tgmlqdGy8VCLwzY0$KMLaAD}4=G4%XlhEcV&-`i?C;T1 z+K7eYa;qnh7Xbt`X!ZEmM!Sc$>`Mr;!Y~VVb9aZK5??C@jtwPo14Svnhr6blnzOwr z_S0;ej{$+n=pZXRwFjXvHM80C>$7cc!}i!8=SNE|B^anZV30)1u6qlem`}1Iq_D8C z&ER;wKSq<?MnGEycpOHEBiG;GZ+7SA;u84Th8<-cco4P%(BJmj+8WS<KdiC=8Svrp z79ciSaX%kVPtUWh5r6?{XlV`f^)<_iWa)uNXaU2Qmx2nzOmtptwAZiGMoP%0a4Ww8 zjbww3J$!r=#S|gPk~)4mU^pPq2NYKXaM(jN0iLi0GzUC(p2hXp4X6k&^s$`%pMRCn zd+pa84e?#ze*RSq`>=Z3cEy=FTKMg(LMAfqc3$gTH%mFWLAp4mR{pai$s0vfP_i^M zCu2sOf3RwXbVe#toqhkMF6S$;W<ULNI!!16NE_>X^LtR8UOtW1`B#%xscKr`f0UIo zvN5lIzUToU3L<f2Me{RLc&pE$&<4jyU@Vr@(D0SQzLA$ZA!yd<XV8^@N+c|}BJgae zikmvLT`@dQ8El@vK0pVjS!?P_QOm$J$78>qcNr|Sjk>^g@$iM2?7ST~WE^>6uh)Le z9+l`R8O602inmc;(-pB{L+Sle#c(T7Ysx`e_l1~j5zCtdE@1w4kYX{WDXhx&K9#@T z#mUIMPudugf)EVJf=SQ5Q{I>G=|oO;kuToKUwFdd?FX@pa+dr%y<i&dz^chhsetJ- zM)jb2^0V~hJdU!dN)x#kw>ma}1v^9D`owUM{=m^F{>duxm9nl!z^o6p+p?3R=T&7P z8LFG6t<S;ArJ3_aT5-baR9M1Ar%bXwhsuM>qpC4}LRESyX~8>=9GTcLc<wQdZIdz< zd;tatV!tx~O$Yh6j;5kNNhki6I>V0&rVn><-yYXl7OfGdWlq6aMh=e+2G-Wg5$!gT zc|MU*olGG#jIcGk^pfjlR`w41(bMtoj-1L$HCHc4H4w`1{xKzZF|^;a^0FDc^5*8y zt>f8@wopG=;XioJ;m!y_sg#W63b~I-5<AIN9*uHY-RNHSQ++RO`L|C?$Ff+V*&;EG z{J`5<#gT5T{nEQg*p^Z>p5S|MIi|q8fgAL+IE0OUBEROmD@RjjFk{b>OcX~p>?r&E zjO!^9G|O{Ez)CZ>gI<Wgiug-}&rI{AaDuv17buL&>Q__rCbUq`-5c{-zvE9I1$?*D zf-x9EmM&PcuUQ>F*5pSpaw4T;Z=*<dI4dbV?(#h}2)G7@#8vXL9J7Aa4vOp4Vzko) zC%<MK+KLFtEGTxo{#CDk?={#fCz$ix*P_cnny-~7;K5|WTI!ookE9}M7EUa!B9yQ) z>wHF;clC{f)2$Z6fSPx0qQC(+rk9LrE%RF-Ti#-gWB$GfO{<&%vUqJa13cW-t?Cye zh4T|6$ckopCH+F*XHR@C{-;xMV2=QcddPbfjSPCZ43WmXWO{5e!5a=)&LbHC0XeN6 z@eGgbkH@$51{84%mF0*gJz$y=cnsYyoa;yF45<_!s&Lmx&L<`YFU$~hV{})$;dA6m z1(2SF8(xC=FVwm223D>-)hAup=G|n4i#pEsVwn|Lx}Z+j_brc}ZG^;qvKR|mZpg7! z1fa0(gYx&och^^MyRF6<YRm{aQy-^n-^0EdVQHA7iM5SK2TBIkP-6cC^OURfo6Z%e hlcJR6Ka<5jv`nlCMa)B&D<Elr;Ihgx<x)n0{{bRS=I8(b literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/XMLcylinderDescription.png b/Code/Mantid/docs/source/images/XMLcylinderDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1c16c2b5f97da15d514e4091f6026c95f8af90 GIT binary patch literal 15171 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 V^Cvc215d3&G*onz-zwTf{T~UTWIO-> literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/XMLhexahedronDescription.png b/Code/Mantid/docs/source/images/XMLhexahedronDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb687bf03023fbb2c6e9cf23d0d71c3f86f2392 GIT binary patch literal 44044 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 literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/source/images/XMLsliceCylinderRingDescription.png b/Code/Mantid/docs/source/images/XMLsliceCylinderRingDescription.png new file mode 100644 index 0000000000000000000000000000000000000000..468caf5bec6a0346b3f19b6fb53b6cbdf1ec0755 GIT binary patch literal 9185 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 literal 0 HcmV?d00001 diff --git a/Code/Mantid/docs/sphinxext/mantiddoc/directives/categories.py b/Code/Mantid/docs/sphinxext/mantiddoc/directives/categories.py index 2a93e455d8f..50e18701867 100644 --- a/Code/Mantid/docs/sphinxext/mantiddoc/directives/categories.py +++ b/Code/Mantid/docs/sphinxext/mantiddoc/directives/categories.py @@ -17,7 +17,7 @@ CATEGORIES_DIR = "categories" # List of category names that are considered the index for everything in that type # When this category is encountered an additional index.html is written to both the # directory of the document and the category directory -INDEX_CATEGORIES = ["Algorithms", "FitFunctions"] +INDEX_CATEGORIES = ["Algorithms", "FitFunctions","Concepts"] class LinkItem(object): """ diff --git a/Code/Tools/scripts/AddAlgorithmWikiLinksToText.py b/Code/Tools/scripts/AddAlgorithmWikiLinksToText.py new file mode 100644 index 00000000000..fafd7ee3bd1 --- /dev/null +++ b/Code/Tools/scripts/AddAlgorithmWikiLinksToText.py @@ -0,0 +1,17 @@ +text = """ +===Algorithms=== +* PlotPeakByLogValue now optionally outputs calculated spectra like the Fit algorithm. +* StartLiveData now checks whether the instrument listener supports the provision of historic values. +* LiveData processing now handles the transition between runs much better at facilities that support this functionality (at present only the SNS). +* LoadEventNexus reads the Pause log and discards any events found during Paused time spans. +* GenerateEventsFilter has been improved to make it easier to use and allowing split sections to be added together into workplaces on a cyclic basis. +* LoadPreNexus is now more forgiving if it encounters bad event indexes in pulse ID file . + +""" + +import re + +algs = AlgorithmFactory.getRegisteredAlgorithms(True) +for alg in algs: + text = re.sub(r'\b' + alg+ r'\b',r'[http://docs.mantidproject.org/algorithms/' + alg + '.html ' + alg + '] ',text) +print text \ No newline at end of file diff --git a/Code/Tools/scripts/FindIncompleteAlgRSTPages.py b/Code/Tools/scripts/FindIncompleteAlgRSTPages.py new file mode 100644 index 00000000000..33139d28057 --- /dev/null +++ b/Code/Tools/scripts/FindIncompleteAlgRSTPages.py @@ -0,0 +1,51 @@ +import os, re +import urllib2 + +def readWebPage(url): + proxy = urllib2.ProxyHandler({'http': 'wwwcache.rl.ac.uk:8080'}) + opener = urllib2.build_opener(proxy) + urllib2.install_opener(opener) + aResp =urllib2.urlopen(url) + web_pg = aResp.read(); + return web_pg + +def ticketExists(alg, ticketHash): + retVal = "" + algPattern = re.compile(alg, re.IGNORECASE) + for ticket in ticketHash: + ticketText = ticketHash[ticket] + if algPattern.search(ticketText): + retVal = str(ticket) + break + return retVal + +def outputError(alg, algVersion, description, notes=""): + print "%s, %i, %s, %s" % (alg, algVersion, description, notes) + +rstdir = r"C:\Mantid\Code\Mantid\docs\source\algorithms" +ticketList = [9582,9586,9607,9610,9704,9804,9726] + +ticketHash = {} +for ticket in ticketList: + ticketHash[ticket] = readWebPage( r"http://trac.mantidproject.org/mantid/ticket/" + str(ticket)) + +usagePattern = re.compile('Usage', re.IGNORECASE) +excusesPattern = re.compile('(rarely called directly|designed to work with other algorithms|only used for testing|deprecated)', re.IGNORECASE) + + +algs = AlgorithmFactory.getRegisteredAlgorithms(True) +for alg in algs: + algVersion = algs[alg][0] + fileFound = False + filename = os.path.join(rstdir,alg + "-v" + str(algVersion) + ".rst") + if os.path.exists(filename): + with open (filename, "r") as algRst: + fileFound = True + algText = algRst.read() + if (usagePattern.search(algText) == None) and (excusesPattern.search(algText) == None): + #check if already in a ticket + usageTicket = ticketExists(alg,ticketHash) + outputError(alg, algVersion, "No usage section", usageTicket) + if fileFound==False: + outputError(alg, algVersion, "File not found") + -- GitLab