|
Mantid
|
Combines two Rule objects in an intersection. More...
#include <Rules.h>
Public Member Functions | |
| std::string | className () const override |
| Returns class name as string. More... | |
| std::unique_ptr< Intersection > | clone () const |
| Makes a copy of the whole downward tree. More... | |
| std::string | display () const override |
| Displaces a bracket wrapped object. More... | |
| std::string | displayAddress () const override |
| Debug function that converts the the intersection ion space delimited unit to denote intersection. More... | |
| Rule * | findKey (const int KeyN) override |
| Finds the leaf with the surface number KeyN. More... | |
| int | findLeaf (const Rule *) const override |
| Finds out if the Rule is the same as the leaves. More... | |
| void | getBoundingBox (double &xmax, double &ymax, double &zmax, double &xmin, double &ymin, double &zmin) override |
| find the common bounding box with the two childs of intersection More... | |
| Intersection ()=default | |
| Intersection (Rule *, std::unique_ptr< Rule >, std::unique_ptr< Rule >) | |
| Intersection constructor from two Rule ptrs. More... | |
| Intersection (std::unique_ptr< Rule >, std::unique_ptr< Rule >) | |
| Intersection constructor from two Rule ptrs. More... | |
| int | isComplementary () const override |
| Determine is the rule has complementary sub components. More... | |
| bool | isValid (const Kernel::V3D &) const override |
| Calculates if Vec is within the object. More... | |
| bool | isValid (const std::map< int, int > &) const override |
| Use MX to determine if the surface truth etc is valie. More... | |
| Rule * | leaf (const int ipt=0) const override |
| selects leaf component More... | |
| void | setLeaf (std::unique_ptr< Rule > nR, const int side=0) override |
| set one leaf. More... | |
| void | setLeaves (std::unique_ptr< Rule >, std::unique_ptr< Rule >) override |
| set leaves More... | |
| int | simplify () override |
| apply general intersection simplification More... | |
| int | type () const override |
| Null rule. More... | |
Public Member Functions inherited from Mantid::Geometry::Rule | |
| int | checkParents () const |
| Debug test for parents. More... | |
| virtual std::string | className () const |
| Returns class name as string. More... | |
| std::unique_ptr< Rule > | clone () const |
| int | commonType () const |
| Gets a common type. More... | |
| virtual std::string | display () const =0 |
| Abstract Display. More... | |
| virtual std::string | displayAddress () const =0 |
| Abstract Display Address. More... | |
| int | Eliminate () |
| elimination not written More... | |
| virtual Rule * | findKey (const int)=0 |
| Abstract key find. More... | |
| virtual int | findLeaf (const Rule *) const =0 |
| Abstract find. More... | |
| virtual void | getBoundingBox (double &xmax, double &ymax, double &zmax, double &xmin, double &ymin, double &zmin)=0 |
| Abstract getBoundingBox. More... | |
| int | getKeyList (std::vector< int > &) const |
| Generate the key list given an insertion type object. More... | |
| Rule * | getParent () const |
| Returns the parent object. More... | |
| virtual int | isComplementary () const |
| Always returns false (0) More... | |
| virtual bool | isValid (const Kernel::V3D &) const =0 |
| Abstract: The point is within the object. More... | |
| virtual bool | isValid (const std::map< int, int > &) const =0 |
| Abstract Validity based on surface true/false map. More... | |
| virtual Rule * | leaf (const int=0) const |
| No leaf for a base rule. More... | |
| void | makeParents () |
| This is initialisation code that populates all the parents in the rule tree. More... | |
| Rule () | |
| Standard Constructor. More... | |
| Rule (Rule *) | |
| Constructor copies. More... | |
| virtual void | setLeaf (std::unique_ptr< Rule >, const int=0)=0 |
| Abstract set. More... | |
| virtual void | setLeaves (std::unique_ptr< Rule >, std::unique_ptr< Rule >)=0 |
| abstract set leaves More... | |
| void | setParent (Rule *) |
| Sets the parent object (not check for A==this) More... | |
| virtual int | simplify ()=0 |
| Abstract: Can the rule be simplified. More... | |
| int | substituteSurf (const int SurfN, const int newSurfN, const std::shared_ptr< Surface > &SPtr) |
| Substitues a surface item if within a rule. More... | |
| virtual int | type () const |
| Null rule. More... | |
| virtual | ~Rule ()=default |
Protected Member Functions | |
| Intersection (const Intersection &) | |
| Copy constructor: Does a clone on the sub-tree below. More... | |
| Intersection & | operator= (const Intersection &) |
| Assignment operator :: Does a deep copy of the leaves of Iother. More... | |
Protected Member Functions inherited from Mantid::Geometry::Rule | |
| Rule & | operator= (const Rule &) |
| Assignment operator= does not set parent as Rules are cloned. More... | |
| Rule (const Rule &) | |
| Constructor copies. More... | |
Private Member Functions | |
| Intersection * | doClone () const override |
| Makes a copy of the whole downward tree. More... | |
Private Attributes | |
| std::unique_ptr< Rule > | A |
| Rule 1. More... | |
| std::unique_ptr< Rule > | B |
| Rule 2. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Mantid::Geometry::Rule | |
| static int | makeCNF (std::unique_ptr< Rule > &) |
| Make Rule into a CNF format. More... | |
| static int | makeCNFcopy (std::unique_ptr< Rule > &) |
| Make Rule into a CNF format (slow) More... | |
| static int | makeFullDNF (std::unique_ptr< Rule > &) |
| Make Rule into a full DNF format. More... | |
| static int | removeComplementary (std::unique_ptr< Rule > &) |
| NOT WORKING. More... | |
| static int | removeItem (std::unique_ptr< Rule > &TRule, const int SurfN) |
| Given an item as a surface name, remove the surface from the Rule tree. More... | |
Combines two Rule objects in an intersection.
Intersection is defined as a valid Rule A and valid rule B
|
protected |
Copy constructor: Does a clone on the sub-tree below.
| Iother | :: Intersection to copy |
Definition at line 88 of file RuleItems.cpp.
|
default |
Referenced by doClone().
|
explicit |
Intersection constructor from two Rule ptrs.
Definition at line 56 of file RuleItems.cpp.
|
explicit |
Intersection constructor from two Rule ptrs.
| Parent | :: Set the Rule::Parent pointer |
| Ix | :: Rule A |
| Iy | :: Rule B |
Definition at line 72 of file RuleItems.cpp.
|
inlineoverridevirtual |
Returns class name as string.
Reimplemented from Mantid::Geometry::Rule.
| std::unique_ptr< Intersection > Mantid::Geometry::Intersection::clone | ( | ) | const |
Makes a copy of the whole downward tree.
Virtual copy constructor.
Definition at line 138 of file RuleItems.cpp.
References doClone().
|
overridevirtual |
Displaces a bracket wrapped object.
Implements Mantid::Geometry::Rule.
Definition at line 231 of file RuleItems.cpp.
|
overridevirtual |
Debug function that converts the the intersection ion space delimited unit to denote intersection.
Implements Mantid::Geometry::Rule.
Definition at line 254 of file RuleItems.cpp.
|
overrideprivatevirtual |
Makes a copy of the whole downward tree.
Virtual copy constructor.
Implements Mantid::Geometry::Rule.
Definition at line 129 of file RuleItems.cpp.
References Intersection().
Referenced by clone().
|
overridevirtual |
Finds the leaf with the surface number KeyN.
| KeyN | :: Number to search for |
| 0 | :: no leaf with that key number availiable |
| Rule* | if an appropiate leaf is found |
Implements Mantid::Geometry::Rule.
Definition at line 217 of file RuleItems.cpp.
|
overridevirtual |
Finds out if the Rule is the same as the leaves.
| R | :: Rule pointer to compare |
| 0 | / 1 for LHS / RHS leaf |
| -1 | :: neither leaf |
Implements Mantid::Geometry::Rule.
Definition at line 201 of file RuleItems.cpp.
|
overridevirtual |
find the common bounding box with the two childs of intersection
| xmax | :: Maximum value for the bounding box in x direction |
| ymax | :: Maximum value for the bounding box in y direction |
| zmax | :: Maximum value for the bounding box in z direction |
| xmin | :: Minimum value for the bounding box in x direction |
| ymin | :: Minimum value for the bounding box in y direction |
| zmin | :: Minimum value for the bounding box in z direction |
Implements Mantid::Geometry::Rule.
Definition at line 327 of file RuleItems.cpp.
|
overridevirtual |
Determine is the rule has complementary sub components.
| 1 | :: A side |
| -1 | :: B side |
| 0 | :: no complement |
Reimplemented from Mantid::Geometry::Rule.
Definition at line 147 of file RuleItems.cpp.
|
overridevirtual |
Calculates if Vec is within the object.
| Vec | :: Point to test |
| 1 | :: Vec is within object |
| 0 | :: Vec is outside object. |
Implements Mantid::Geometry::Rule.
Definition at line 275 of file RuleItems.cpp.
|
overridevirtual |
Use MX to determine if the surface truth etc is valie.
| MX | :: map of key + logical value XOR sign |
| 1 | :: Both sides are valid |
| 0 | :: Either side is invalid. |
Implements Mantid::Geometry::Rule.
Definition at line 289 of file RuleItems.cpp.
|
inlineoverridevirtual |
selects leaf component
Reimplemented from Mantid::Geometry::Rule.
|
protected |
Assignment operator :: Does a deep copy of the leaves of Iother.
| Iother | :: object to copy |
Definition at line 106 of file RuleItems.cpp.
References A, B, and Mantid::Geometry::Rule::operator=().
|
overridevirtual |
set one leaf.
Replaces a leaf with a rule.
Calls delete on previous leaf.
| nR | :: new rule |
| side | :: side to use
|
Implements Mantid::Geometry::Rule.
Definition at line 180 of file RuleItems.cpp.
|
overridevirtual |
set leaves
Replaces a both with a rule.
No deletion is carried out but sets the parents.
Implements Mantid::Geometry::Rule.
Definition at line 164 of file RuleItems.cpp.
|
overridevirtual |
apply general intersection simplification
Union simplification::
| 1 | if clauses removed (not top) |
| -1 | replacement of this intersection is required by leaf 0 |
| 0 | if no work to do. |
Implements Mantid::Geometry::Rule.
Definition at line 303 of file RuleItems.cpp.
|
inlineoverridevirtual |
|
private |
Rule 1.
Definition at line 112 of file Rules.h.
Referenced by display(), displayAddress(), findKey(), getBoundingBox(), Intersection(), isComplementary(), operator=(), setLeaf(), and setLeaves().
|
private |
Rule 2.
Definition at line 113 of file Rules.h.
Referenced by display(), displayAddress(), findKey(), getBoundingBox(), Intersection(), isComplementary(), operator=(), setLeaf(), and setLeaves().