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

ComponentInfo : Provides a component centric view on to the instrument. More...

#include <ComponentInfo.h>

Classes

struct  QuadrilateralComponent
 

Public Member Functions

ComponentInfoIterator< ComponentInfobegin ()
 
BoundingBox boundingBox (const size_t componentIndex, const BoundingBox *reference=nullptr, const bool excludeMonitors=false) const
 Compute the bounding box for the component with componentIndex taking into account all sub components. More...
 
const ComponentInfoIterator< const ComponentInfocbegin ()
 
const ComponentInfoIterator< const ComponentInfocend ()
 
const std::vector< size_t > & children (size_t componentIndex) const
 
std::unique_ptr< ComponentInfocloneWithoutDetectorInfo () const
 Clone current instance but not the DetectorInfo non-owned parts. More...
 
const IComponentcomponentID (const size_t componentIndex) const
 
 ComponentInfo (std::unique_ptr< Beamline::ComponentInfo > componentInfo, std::shared_ptr< const std::vector< Mantid::Geometry::IComponent * > > componentIds, std::shared_ptr< const std::unordered_map< Geometry::IComponent *, size_t > > componentIdToIndexMap, std::shared_ptr< std::vector< std::shared_ptr< const Geometry::IObject > > > shapes)
 Constructor. More...
 
std::vector< size_t > componentsInSubtree (size_t componentIndex) const
 
Beamline::ComponentType componentType (const size_t componentIndex) const
 
std::vector< size_t > detectorsInSubtree (size_t componentIndex) const
 
ComponentInfoIterator< ComponentInfoend ()
 
bool hasDetectorInfo () const
 
bool hasDetectors (const size_t componentIndex) const
 
bool hasEquivalentSample (const ComponentInfo &other) const
 
bool hasEquivalentSource (const ComponentInfo &other) const
 
bool hasParent (const size_t componentIndex) const
 
bool hasSample () const
 
bool hasSource () const
 
bool hasValidShape (const size_t componentIndex) const
 
size_t indexOf (Geometry::IComponent *id) const
 
size_t indexOfAny (const std::string &name) const
 
bool isDetector (const size_t componentIndex) const
 
double l1 () const
 
void merge (const ComponentInfo &other)
 
const std::string & name (const size_t componentIndex) const
 
ComponentInfooperator= (const ComponentInfo &)=delete
 Copy assignment is not possible for ComponentInfo. More...
 
size_t parent (const size_t componentIndex) const
 
Kernel::V3D position (const size_t componentIndex) const
 
Kernel::V3D position (const std::pair< size_t, size_t > &index) const
 
QuadrilateralComponent quadrilateralComponent (const size_t componentIndex) const
 
Kernel::V3D relativePosition (const size_t componentIndex) const
 
Kernel::Quat relativeRotation (const size_t componentIndex) const
 
size_t root () const
 
Kernel::Quat rotation (const size_t componentIndex) const
 
Kernel::Quat rotation (const std::pair< size_t, size_t > &index) const
 
size_t sample () const
 
Kernel::V3D samplePosition () const
 
Kernel::V3D scaleFactor (const size_t componentIndex) const
 
size_t scanCount () const
 
void setPosition (const std::pair< size_t, size_t > &index, const Kernel::V3D &newPosition)
 
void setPosition (size_t componentIndex, const Kernel::V3D &newPosition)
 
void setRotation (const std::pair< size_t, size_t > &index, const Kernel::Quat &newRotation)
 
void setRotation (size_t componentIndex, const Kernel::Quat &newRotation)
 
void setScaleFactor (const size_t componentIndex, const Kernel::V3D &scaleFactor)
 
void setScanInterval (const std::pair< Types::Core::DateAndTime, Types::Core::DateAndTime > &interval)
 
const Geometry::IObjectshape (const size_t componentIndex) const
 
size_t size () const
 
double solidAngle (const size_t componentIndex, const Kernel::V3D &observer) const
 
size_t source () const
 
Kernel::V3D sourcePosition () const
 
bool uniqueName (const std::string &name) const
 
 ~ComponentInfo ()
 

Private Member Functions

BoundingBox componentBoundingBox (const size_t index, const BoundingBox *reference, const bool excludeMonitors=false) const
 Calculates the absolute bounding box for the leaf item at index. More...
 
 ComponentInfo (const ComponentInfo &other)
 Private copy constructor. Do not make public. More...
 
void growBoundingBoxAsOutline (size_t index, const Geometry::BoundingBox *reference, Geometry::BoundingBox &mutableBB, const bool excludeMonitors=false) const
 Grow the bounding box on the basis that the component described by index has an outline, which describes the full bounding box of all components and detectors held within. More...
 
void growBoundingBoxAsRectuangularBank (size_t index, const Geometry::BoundingBox *reference, Geometry::BoundingBox &mutableBB, const bool excludeMonitors=false) const
 Grow the bounding box on the basis that the component described by index is a regular grid in a trapezoid, thus the bounding box can be fully described by just the 4 vertex detectors within. More...
 

Private Attributes

std::shared_ptr< const std::unordered_map< Geometry::IComponent *, size_t > > m_compIDToIndex
 Map of component ids to indexes. More...
 
std::shared_ptr< const std::vector< Geometry::IComponent * > > m_componentIds
 Collection of component ids. More...
 
std::unique_ptr< Beamline::ComponentInfo > m_componentInfo
 Pointer to the actual ComponentInfo object (non-wrapping part). More...
 
std::shared_ptr< std::vector< std::shared_ptr< const Geometry::IObject > > > m_shapes
 Shapes for each component. More...
 

Friends

class Instrument
 

Detailed Description

ComponentInfo : Provides a component centric view on to the instrument.

Indexes are per component.

Definition at line 40 of file ComponentInfo.h.

Constructor & Destructor Documentation

◆ ComponentInfo() [1/2]

Mantid::Geometry::ComponentInfo::ComponentInfo ( const ComponentInfo other)
private

Private copy constructor. Do not make public.

Copy constructor.

Use with EXTREME CARE.

Should not be public since proper links between DetectorInfo and ComponentInfo must be set up.

Definition at line 86 of file ComponentInfo.cpp.

◆ ComponentInfo() [2/2]

Mantid::Geometry::ComponentInfo::ComponentInfo ( std::unique_ptr< Beamline::ComponentInfo >  componentInfo,
std::shared_ptr< const std::vector< Mantid::Geometry::IComponent * > >  componentIds,
std::shared_ptr< const std::unordered_map< Geometry::IComponent *, size_t > >  componentIdToIndexMap,
std::shared_ptr< std::vector< std::shared_ptr< const Geometry::IObject > > >  shapes 
)

Constructor.

Parameters
componentInfo: Internal Beamline ComponentInfo
componentIds: ComponentIDs ordered by component
componentIdToIndexMap: ID -> index translation map
shapes: Shapes for each component

Definition at line 54 of file ComponentInfo.cpp.

References m_compIDToIndex, m_componentIds, and m_componentInfo.

◆ ~ComponentInfo()

Mantid::Geometry::ComponentInfo::~ComponentInfo ( )
default

Member Function Documentation

◆ begin()

ComponentInfoIt Mantid::Geometry::ComponentInfo::begin ( )

Definition at line 435 of file ComponentInfo.cpp.

References size().

◆ boundingBox()

BoundingBox Mantid::Geometry::ComponentInfo::boundingBox ( const size_t  componentIndex,
const BoundingBox reference = nullptr,
const bool  excludeMonitors = false 
) const

Compute the bounding box for the component with componentIndex taking into account all sub components.

Parameters
componentIndex: Component index to get the bounding box for
reference: Optional reference for coordinate system for non-axis aligned bounding boxes
excludeMonitors: Optional flag to exclude monitors and choppers
Returns
Absolute bounding box

Definition at line 387 of file ComponentInfo.cpp.

References boundingBox(), children(), componentBoundingBox(), componentType(), Mantid::Geometry::BoundingBox::grow(), growBoundingBoxAsOutline(), growBoundingBoxAsRectuangularBank(), hasSource(), isDetector(), parent(), size(), and source().

Referenced by boundingBox(), Mantid::Geometry::ObjComponent::getBoundingBox(), Mantid::Geometry::Instrument::getBoundingBox(), Mantid::Geometry::CompAssembly::getBoundingBox(), Mantid::Geometry::GridDetector::getBoundingBox(), and Mantid::Geometry::StructuredDetector::getBoundingBox().

◆ cbegin()

const ComponentInfoConstIt Mantid::Geometry::ComponentInfo::cbegin ( )

Definition at line 439 of file ComponentInfo.cpp.

References size().

◆ cend()

const ComponentInfoConstIt Mantid::Geometry::ComponentInfo::cend ( )

Definition at line 441 of file ComponentInfo.cpp.

References size().

◆ children()

const std::vector< size_t > & Mantid::Geometry::ComponentInfo::children ( size_t  componentIndex) const

Definition at line 101 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by boundingBox(), and export_ComponentInfo().

◆ cloneWithoutDetectorInfo()

std::unique_ptr< Geometry::ComponentInfo > Mantid::Geometry::ComponentInfo::cloneWithoutDetectorInfo ( ) const

Clone current instance but not the DetectorInfo non-owned parts.

Returns
unique pointer wrapped deep copy of ComponentInfo

Definition at line 77 of file ComponentInfo.cpp.

Referenced by Mantid::Geometry::Instrument::makeWrappers().

◆ componentBoundingBox()

BoundingBox Mantid::Geometry::ComponentInfo::componentBoundingBox ( const size_t  index,
const BoundingBox reference,
const bool  excludeMonitors = false 
) const
private

◆ componentID()

const IComponent * Mantid::Geometry::ComponentInfo::componentID ( const size_t  componentIndex) const
inline

Definition at line 117 of file ComponentInfo.h.

◆ componentsInSubtree()

std::vector< size_t > Mantid::Geometry::ComponentInfo::componentsInSubtree ( size_t  componentIndex) const

Definition at line 97 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ componentType()

Beamline::ComponentType Mantid::Geometry::ComponentInfo::componentType ( const size_t  componentIndex) const

◆ detectorsInSubtree()

std::vector< size_t > Mantid::Geometry::ComponentInfo::detectorsInSubtree ( size_t  componentIndex) const

◆ end()

ComponentInfoIt Mantid::Geometry::ComponentInfo::end ( )

Definition at line 437 of file ComponentInfo.cpp.

References size().

◆ growBoundingBoxAsOutline()

void Mantid::Geometry::ComponentInfo::growBoundingBoxAsOutline ( size_t  index,
const Geometry::BoundingBox reference,
Geometry::BoundingBox mutableBB,
const bool  excludeMonitors = false 
) const
private

Grow the bounding box on the basis that the component described by index has an outline, which describes the full bounding box of all components and detectors held within.

Parameters
index: Index of the component to get the bounding box for
reference: Reference bounding box (optional)
mutableBB: Output bounding box. This will be grown.
excludeMonitors: Optional flag to exclude monitors and choppers

Definition at line 304 of file ComponentInfo.cpp.

References componentBoundingBox(), Mantid::Geometry::BoundingBox::grow(), and index.

Referenced by boundingBox().

◆ growBoundingBoxAsRectuangularBank()

void Mantid::Geometry::ComponentInfo::growBoundingBoxAsRectuangularBank ( size_t  index,
const Geometry::BoundingBox reference,
Geometry::BoundingBox mutableBB,
const bool  excludeMonitors = false 
) const
private

Grow the bounding box on the basis that the component described by index is a regular grid in a trapezoid, thus the bounding box can be fully described by just the 4 vertex detectors within.

Find the vertexes Grow the bounding box by each vetex Record detectors that form part of this bank that are enclosed and therefore already inclusive of the external bounding box Based on the number of sub-components, which are also fully enclosed, skip the component iterator forward so that those will not need to be evaluated.

Parameters
index: Index of the component to get the bounding box for
reference: Reference bounding box (optional)
mutableBB: Output bounding box. This will be grown.
excludeMonitors: Optional flag to exclude monitors and choppers

Definition at line 283 of file ComponentInfo.cpp.

References componentBoundingBox(), Mantid::Geometry::BoundingBox::grow(), index, and quadrilateralComponent().

Referenced by boundingBox().

◆ hasDetectorInfo()

bool Mantid::Geometry::ComponentInfo::hasDetectorInfo ( ) const

Definition at line 180 of file ComponentInfo.cpp.

References m_componentInfo.

◆ hasDetectors()

bool Mantid::Geometry::ComponentInfo::hasDetectors ( const size_t  componentIndex) const

◆ hasEquivalentSample()

bool Mantid::Geometry::ComponentInfo::hasEquivalentSample ( const ComponentInfo other) const

Definition at line 210 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasEquivalentSource()

bool Mantid::Geometry::ComponentInfo::hasEquivalentSource ( const ComponentInfo other) const

Definition at line 196 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasParent()

bool Mantid::Geometry::ComponentInfo::hasParent ( const size_t  componentIndex) const

Definition at line 178 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasSample()

bool Mantid::Geometry::ComponentInfo::hasSample ( ) const

Definition at line 200 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasSource()

bool Mantid::Geometry::ComponentInfo::hasSource ( ) const

Definition at line 186 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by boundingBox(), and export_ComponentInfo().

◆ hasValidShape()

bool Mantid::Geometry::ComponentInfo::hasValidShape ( const size_t  componentIndex) const

◆ indexOf()

size_t Mantid::Geometry::ComponentInfo::indexOf ( Geometry::IComponent id) const

◆ indexOfAny()

size_t Mantid::Geometry::ComponentInfo::indexOfAny ( const std::string &  name) const

Definition at line 131 of file ComponentInfo.cpp.

References m_componentInfo, and name().

Referenced by export_ComponentInfo().

◆ isDetector()

bool Mantid::Geometry::ComponentInfo::isDetector ( const size_t  componentIndex) const

◆ l1()

double Mantid::Geometry::ComponentInfo::l1 ( ) const

◆ merge()

void Mantid::Geometry::ComponentInfo::merge ( const ComponentInfo other)

◆ name()

const std::string & Mantid::Geometry::ComponentInfo::name ( const size_t  componentIndex) const

◆ operator=()

ComponentInfo & Mantid::Geometry::ComponentInfo::operator= ( const ComponentInfo )
delete

Copy assignment is not possible for ComponentInfo.

◆ parent()

size_t Mantid::Geometry::ComponentInfo::parent ( const size_t  componentIndex) const

◆ position() [1/2]

Kernel::V3D Mantid::Geometry::ComponentInfo::position ( const size_t  componentIndex) const

◆ position() [2/2]

Kernel::V3D Mantid::Geometry::ComponentInfo::position ( const std::pair< size_t, size_t > &  index) const

Definition at line 148 of file ComponentInfo.cpp.

References index, m_componentInfo, and Mantid::Kernel::toV3D().

◆ quadrilateralComponent()

ComponentInfo::QuadrilateralComponent Mantid::Geometry::ComponentInfo::quadrilateralComponent ( const size_t  componentIndex) const

◆ relativePosition()

Kernel::V3D Mantid::Geometry::ComponentInfo::relativePosition ( const size_t  componentIndex) const

◆ relativeRotation()

Kernel::Quat Mantid::Geometry::ComponentInfo::relativeRotation ( const size_t  componentIndex) const

◆ root()

size_t Mantid::Geometry::ComponentInfo::root ( ) const

◆ rotation() [1/2]

Kernel::Quat Mantid::Geometry::ComponentInfo::rotation ( const size_t  componentIndex) const

◆ rotation() [2/2]

Kernel::Quat Mantid::Geometry::ComponentInfo::rotation ( const std::pair< size_t, size_t > &  index) const

Definition at line 156 of file ComponentInfo.cpp.

References index, m_componentInfo, and Mantid::Kernel::toQuat().

◆ sample()

size_t Mantid::Geometry::ComponentInfo::sample ( ) const

◆ samplePosition()

Kernel::V3D Mantid::Geometry::ComponentInfo::samplePosition ( ) const

◆ scaleFactor()

Kernel::V3D Mantid::Geometry::ComponentInfo::scaleFactor ( const size_t  componentIndex) const

◆ scanCount()

size_t Mantid::Geometry::ComponentInfo::scanCount ( ) const

Definition at line 431 of file ComponentInfo.cpp.

References m_componentInfo.

◆ setPosition() [1/2]

void Mantid::Geometry::ComponentInfo::setPosition ( const std::pair< size_t, size_t > &  index,
const Kernel::V3D newPosition 
)

Definition at line 168 of file ComponentInfo.cpp.

References index, m_componentInfo, and Mantid::Kernel::toVector3d().

◆ setPosition() [2/2]

void Mantid::Geometry::ComponentInfo::setPosition ( size_t  componentIndex,
const Kernel::V3D newPosition 
)

◆ setRotation() [1/2]

void Mantid::Geometry::ComponentInfo::setRotation ( const std::pair< size_t, size_t > &  index,
const Kernel::Quat newRotation 
)

Definition at line 172 of file ComponentInfo.cpp.

References index, m_componentInfo, and Mantid::Kernel::toQuaterniond().

◆ setRotation() [2/2]

void Mantid::Geometry::ComponentInfo::setRotation ( size_t  componentIndex,
const Kernel::Quat newRotation 
)

◆ setScaleFactor()

void Mantid::Geometry::ComponentInfo::setScaleFactor ( const size_t  componentIndex,
const Kernel::V3D scaleFactor 
)

Definition at line 247 of file ComponentInfo.cpp.

References m_componentInfo, scaleFactor(), and Mantid::Kernel::toVector3d().

Referenced by export_ComponentInfo().

◆ setScanInterval()

void Mantid::Geometry::ComponentInfo::setScanInterval ( const std::pair< Types::Core::DateAndTime, Types::Core::DateAndTime > &  interval)

Definition at line 427 of file ComponentInfo.cpp.

References m_componentInfo.

◆ shape()

const IObject & Mantid::Geometry::ComponentInfo::shape ( const size_t  componentIndex) const

◆ size()

size_t Mantid::Geometry::ComponentInfo::size ( ) const

Definition at line 105 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by begin(), boundingBox(), cbegin(), cend(), end(), and export_ComponentInfo().

◆ solidAngle()

double Mantid::Geometry::ComponentInfo::solidAngle ( const size_t  componentIndex,
const Kernel::V3D observer 
) const

◆ source()

size_t Mantid::Geometry::ComponentInfo::source ( ) const

◆ sourcePosition()

Kernel::V3D Mantid::Geometry::ComponentInfo::sourcePosition ( ) const

◆ uniqueName()

bool Mantid::Geometry::ComponentInfo::uniqueName ( const std::string &  name) const

Definition at line 133 of file ComponentInfo.cpp.

References m_componentInfo, and name().

Referenced by export_ComponentInfo().

Friends And Related Function Documentation

◆ Instrument

friend class Instrument
friend

Definition at line 137 of file ComponentInfo.h.

Member Data Documentation

◆ m_compIDToIndex

std::shared_ptr<const std::unordered_map<Geometry::IComponent *, size_t> > Mantid::Geometry::ComponentInfo::m_compIDToIndex
private

Map of component ids to indexes.

Definition at line 47 of file ComponentInfo.h.

Referenced by ComponentInfo(), and indexOf().

◆ m_componentIds

std::shared_ptr<const std::vector<Geometry::IComponent *> > Mantid::Geometry::ComponentInfo::m_componentIds
private

Collection of component ids.

Definition at line 45 of file ComponentInfo.h.

Referenced by ComponentInfo().

◆ m_componentInfo

std::unique_ptr<Beamline::ComponentInfo> Mantid::Geometry::ComponentInfo::m_componentInfo
private

◆ m_shapes

std::shared_ptr<std::vector<std::shared_ptr<const Geometry::IObject> > > Mantid::Geometry::ComponentInfo::m_shapes
private

Shapes for each component.

Definition at line 50 of file ComponentInfo.h.


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