Mantid
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
Mantid::Geometry::Union Class Reference

Combines two Rule objects in an union. More...

#include <Rules.h>

Inheritance diagram for Mantid::Geometry::Union:
Mantid::Geometry::Rule

Public Member Functions

std::string className () const override
 Returns class name as string.
 
std::unique_ptr< Union > clone () const
 Clone allows deep virtual coping.
 
std::string display () const override
 Display the union in the form (N:M) where N,M are the downward rules.
 
std::string displayAddress () const override
 Returns the memory address as a string.
 
Rule * findKey (const int KeyN) override
 Finds the leaf with the surface number KeyN.
 
int findLeaf (const Rule *) const override
 Finds out if the Rule is the same as the leaves.
 
void getBoundingBox (double &xmax, double &ymax, double &zmax, double &xmin, double &ymin, double &zmin) override
 gets the bounding box for the Union Rule
 
int isComplementary () const override
 Determine is the rule has complementary sub components.
 
bool isValid (const Kernel::V3D &) const override
 Calculates if Vec is within the object.
 
bool isValid (const std::map< int, int > &) const override
 Use MX to determine if the surface truth etc is valie.
 
Rule * leaf (const int ipt=0) const override
 Select a leaf component.
 
void setLeaf (std::unique_ptr< Rule >, const int side=0) override
 Replaces a leaf with a rule.
 
void setLeaves (std::unique_ptr< Rule >, std::unique_ptr< Rule >) override
 set leaves
 
int simplify () override
 apply general intersection simplification
 
int type () const override
 effective name
 
 Union ()=default
 
 Union (Rule *, std::unique_ptr< Rule >, std::unique_ptr< Rule >)
 Union constructor from two Rule ptrs.
 
 Union (std::unique_ptr< Rule >, std::unique_ptr< Rule >)
 Union constructor from two Rule ptrs.
 
- Public Member Functions inherited from Mantid::Geometry::Rule
int checkParents () const
 Debug test for parents.
 
std::unique_ptr< Rule > clone () const
 
int commonType () const
 Gets a common type.
 
int Eliminate ()
 elimination not written
 
int getKeyList (std::vector< int > &) const
 Generate the key list given an insertion type object.
 
Rule * getParent () const
 Returns the parent object.
 
void makeParents ()
 This is initialisation code that populates all the parents in the rule tree.
 
 Rule ()
 Standard Constructor.
 
 Rule (Rule *)
 Constructor copies.
 
void setParent (Rule *)
 Sets the parent object (not check for A==this)
 
int substituteSurf (const int SurfN, const int newSurfN, const std::shared_ptr< Surface > &SPtr)
 Substitues a surface item if within a rule.
 
virtual ~Rule ()=default
 

Protected Member Functions

Union & operator= (const Union &)
 Assignment operator :: Does a deep copy of the leaves of Iother.
 
 Union (const Union &)
 Copy constructor: Does a clone on the sub-tree below.
 
- Protected Member Functions inherited from Mantid::Geometry::Rule
Rule & operator= (const Rule &)
 Assignment operator= does not set parent as Rules are cloned.
 
 Rule (const Rule &)
 Constructor copies.
 

Private Member Functions

Union * doClone () const override
 Clone allows deep virtual coping.
 

Private Attributes

std::unique_ptr< Rule > A
 Leaf rule A.
 
std::unique_ptr< Rule > B
 Leaf rule B.
 

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.
 
static int makeCNFcopy (std::unique_ptr< Rule > &)
 Make Rule into a CNF format (slow)
 
static int makeFullDNF (std::unique_ptr< Rule > &)
 Make Rule into a full DNF format.
 
static int removeComplementary (std::unique_ptr< Rule > &)
 NOT WORKING.
 
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.
 

Detailed Description

Combines two Rule objects in an union.

Author
S. Ansell
Version
1.0
Date
August 2005

Union is defined as a valid Rule A or valid rule B

Definition at line 160 of file Rules.h.

Constructor & Destructor Documentation

◆ Union() [1/4]

Mantid::Geometry::Union::Union ( const Union &  Iother)
protected

Copy constructor: Does a clone on the sub-tree below.

Parameters
Iother:: Union to copy

Definition at line 396 of file RuleItems.cpp.

References A, and B.

◆ Union() [2/4]

Mantid::Geometry::Union::Union ( )
default

Referenced by doClone().

◆ Union() [3/4]

Mantid::Geometry::Union::Union ( std::unique_ptr< Rule >  Ix,
std::unique_ptr< Rule >  Iy 
)
explicit

Union constructor from two Rule ptrs.

  • Sets A,B's parents to *this.
  • Allowed to control Ix and Iy
    Parameters
    Ix:: Rule A
    Iy:: Rule B

Definition at line 380 of file RuleItems.cpp.

References A, B, and Mantid::Geometry::Rule::setParent().

◆ Union() [4/4]

Mantid::Geometry::Union::Union ( Rule *  Parent,
std::unique_ptr< Rule >  Ix,
std::unique_ptr< Rule >  Iy 
)
explicit

Union constructor from two Rule ptrs.

  • Sets A,B's parents to *this
  • Allowed to control Ix and Iy
    Parameters
    Parent:: Rule that is the parent to this
    Ix:: Rule A
    Iy:: Rule B

Definition at line 363 of file RuleItems.cpp.

References A, B, and Mantid::Geometry::Rule::setParent().

Member Function Documentation

◆ className()

std::string Mantid::Geometry::Union::className ( ) const
inlineoverridevirtual

Returns class name as string.

Reimplemented from Mantid::Geometry::Rule.

Definition at line 177 of file Rules.h.

◆ clone()

std::unique_ptr< Union > Mantid::Geometry::Union::clone ( ) const

Clone allows deep virtual coping.

Returns
new Union copy.

Definition at line 446 of file RuleItems.cpp.

References doClone().

◆ display()

std::string Mantid::Geometry::Union::display ( ) const
overridevirtual

Display the union in the form (N:M) where N,M are the downward rules.

Returns
bracket string

Implements Mantid::Geometry::Rule.

Definition at line 579 of file RuleItems.cpp.

References A, and B.

◆ displayAddress()

std::string Mantid::Geometry::Union::displayAddress ( ) const
overridevirtual

Returns the memory address as a string.

Displays addresses of leaves

Returns
String of address

Implements Mantid::Geometry::Rule.

Definition at line 605 of file RuleItems.cpp.

References A, and B.

◆ doClone()

Union * Mantid::Geometry::Union::doClone ( ) const
overrideprivatevirtual

Clone allows deep virtual coping.

Returns
new Union copy.

Implements Mantid::Geometry::Rule.

Definition at line 437 of file RuleItems.cpp.

References Union().

Referenced by clone().

◆ findKey()

Rule * Mantid::Geometry::Union::findKey ( const int  KeyN)
overridevirtual

Finds the leaf with the surface number KeyN.

Parameters
KeyN:: Number to search for
Return values
0:: no leaf with that key number availiable
Rule*if an appropiate leaf is found

Implements Mantid::Geometry::Rule.

Definition at line 509 of file RuleItems.cpp.

References A, B, and Mantid::Geometry::Rule::findKey().

◆ findLeaf()

int Mantid::Geometry::Union::findLeaf ( const Rule *  R) const
overridevirtual

Finds out if the Rule is the same as the leaves.

Parameters
R:: Rule pointer to compare
Return values
0/ 1 for LHS / RHS leaf
-1:: neither leaf

Implements Mantid::Geometry::Rule.

Definition at line 493 of file RuleItems.cpp.

◆ getBoundingBox()

void Mantid::Geometry::Union::getBoundingBox ( double &  xmax,
double &  ymax,
double &  zmax,
double &  xmin,
double &  ymin,
double &  zmin 
)
overridevirtual

gets the bounding box for the Union Rule

Parameters
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 635 of file RuleItems.cpp.

References A, and B.

◆ isComplementary()

int Mantid::Geometry::Union::isComplementary ( ) const
overridevirtual

Determine is the rule has complementary sub components.

Return values
1:: A side
-1:: B side
0:: no complement

Reimplemented from Mantid::Geometry::Rule.

Definition at line 524 of file RuleItems.cpp.

References A, and B.

◆ isValid() [1/2]

bool Mantid::Geometry::Union::isValid ( const Kernel::V3D &  Vec) const
overridevirtual

Calculates if Vec is within the object.

Parameters
Vec:: Point to test
Return values
1:: Vec is within object
0:: Vec is outside object.

Implements Mantid::Geometry::Rule.

Definition at line 556 of file RuleItems.cpp.

◆ isValid() [2/2]

bool Mantid::Geometry::Union::isValid ( const std::map< int, int > &  MX) const
overridevirtual

Use MX to determine if the surface truth etc is valie.

Parameters
MX:: map of key + logical value XOR sign
Return values
1:: if either side is valid
0:: Neither side is valid

Implements Mantid::Geometry::Rule.

Definition at line 567 of file RuleItems.cpp.

◆ leaf()

Rule * Mantid::Geometry::Union::leaf ( const int  ipt = 0) const
inlineoverridevirtual

Select a leaf component.

Reimplemented from Mantid::Geometry::Rule.

Definition at line 179 of file Rules.h.

◆ operator=()

Union & Mantid::Geometry::Union::operator= ( const Union &  Iother)
protected

Assignment operator :: Does a deep copy of the leaves of Iother.

Parameters
Iother:: Union to assign to it.
Returns
this union (copy).

Definition at line 414 of file RuleItems.cpp.

References A, B, and Mantid::Geometry::Rule::operator=().

◆ setLeaf()

void Mantid::Geometry::Union::setLeaf ( std::unique_ptr< Rule >  nR,
const int  side = 0 
)
overridevirtual

Replaces a leaf with a rule.

Calls delete on previous leaf.

Parameters
nR:: new rule
side:: side to use
  • 0 == LHS
  • 1 == RHS

Implements Mantid::Geometry::Rule.

Definition at line 455 of file RuleItems.cpp.

References A, and B.

◆ setLeaves()

void Mantid::Geometry::Union::setLeaves ( std::unique_ptr< Rule >  aR,
std::unique_ptr< Rule >  bR 
)
overridevirtual

set leaves

Replaces a both with a rule.

No deletion is carried out but sets the parents.

Parameters
aR:: Rule on the left
bR:: Rule on the right

Implements Mantid::Geometry::Rule.

Definition at line 477 of file RuleItems.cpp.

References A, and B.

◆ simplify()

int Mantid::Geometry::Union::simplify ( )
overridevirtual

apply general intersection simplification

Union simplification::

  • -S S simplify to True.
  • S S simplify to S
  • -S -S simplifies to -S
    Return values
    1if clauses removed (not top)
    -1replacement of this intersection is required by leaf 0
    0if no work to do.

Implements Mantid::Geometry::Rule.

Definition at line 541 of file RuleItems.cpp.

◆ type()

int Mantid::Geometry::Union::type ( ) const
inlineoverridevirtual

effective name

Reimplemented from Mantid::Geometry::Rule.

Definition at line 187 of file Rules.h.

Member Data Documentation

◆ A

std::unique_ptr<Rule> Mantid::Geometry::Union::A
private

◆ B

std::unique_ptr<Rule> Mantid::Geometry::Union::B
private

The documentation for this class was generated from the following files: