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.
 
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.
 
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 const *, size_t > > componentIdToIndexMap, std::shared_ptr< std::vector< std::shared_ptr< const Geometry::IObject > > > shapes)
 Constructor.
 
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 const *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.
 
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
 
void scaleComponent (const size_t componentIndex, const Kernel::V3D &newScaling)
 
void scaleComponent (const std::pair< size_t, size_t > &index, const Kernel::V3D &newScaling)
 
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 Geometry::SolidAngleParams &params) 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.
 
 ComponentInfo (const ComponentInfo &other)
 Private copy constructor. Do not make public.
 
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.
 
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.
 

Private Attributes

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

Friends

class Instrument
 

Detailed Description

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

Indexes are per component.

Definition at line 41 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 const *, 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 444 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 396 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(), Mantid::Geometry::StructuredDetector::getBoundingBox(), and Mantid::API::PanelsSurfaceCalculator::transformedBoundingBoxPoints().

◆ cbegin()

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

Definition at line 448 of file ComponentInfo.cpp.

References size().

◆ cend()

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

Definition at line 450 of file ComponentInfo.cpp.

References size().

◆ children()

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

◆ 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

◆ 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 446 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 313 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 292 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 188 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 218 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasEquivalentSource()

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

Definition at line 204 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasParent()

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

◆ hasSample()

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

Definition at line 208 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasSource()

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

Definition at line 194 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by boundingBox(), and export_ComponentInfo().

◆ hasValidShape()

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

Definition at line 139 of file ComponentInfo.cpp.

Referenced by componentBoundingBox(), export_ComponentInfo(), and solidAngle().

◆ indexOf()

size_t Mantid::Geometry::ComponentInfo::indexOf ( Geometry::IComponent const *  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

◆ scaleComponent() [1/2]

void Mantid::Geometry::ComponentInfo::scaleComponent ( const size_t  componentIndex,
const Kernel::V3D newScaling 
)

◆ scaleComponent() [2/2]

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

Definition at line 180 of file ComponentInfo.cpp.

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

◆ scaleFactor()

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

◆ scanCount()

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

Definition at line 440 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 
)

◆ setScanInterval()

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

Definition at line 436 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

◆ solidAngle()

double Mantid::Geometry::ComponentInfo::solidAngle ( const size_t  componentIndex,
const Geometry::SolidAngleParams params 
) 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 Symbol Documentation

◆ Instrument

friend class Instrument
friend

Definition at line 140 of file ComponentInfo.h.

Member Data Documentation

◆ m_compIDToIndex

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

Map of component ids to indexes.

Definition at line 48 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 46 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 51 of file ComponentInfo.h.


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