Mantid
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Attributes | 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

void addBool (const size_t componentIndex, const std::string &name, bool value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add or replace a named boolean parameter at a specific component index.
 
void addDouble (const size_t componentIndex, const std::string &name, double value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add or replace a named double parameter at a specific component index.
 
void addFittingParameter (const size_t componentIndex, const std::string &name, const std::string &fittingFunction, const std::string &value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add a fitting parameter.
 
void addInt (const size_t componentIndex, const std::string &name, int value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add or replace a named integer parameter at a specific component index.
 
void addParameter (const size_t componentIndex, const std::string &type, const std::string &name, const std::string &value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add or replace a named parameter at a specific component index.
 
void addQuat (const size_t componentIndex, const std::string &name, const Kernel::Quat &value, const std::string *const pDescription=nullptr)
 Add or replace a named quaternion parameter at a specific component index.
 
void addString (const size_t componentIndex, const std::string &name, const std::string &value, const std::string *const pDescription=nullptr, const std::string &pVisible="true")
 Add or replace a named string parameter at a specific component index.
 
void addV3D (const size_t componentIndex, const std::string &name, const Kernel::V3D &value, const std::string *const pDescription=nullptr)
 Add or replace a named vector parameter at a specific component index.
 
ComponentInfoIterator< ComponentInfo > begin ()
 
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 ComponentInfo > cbegin ()
 
const ComponentInfoIterator< const ComponentInfo > cend ()
 
const std::vector< size_t > & children (size_t componentIndex) const
 
void clearParameter (const size_t componentIndex, const std::string &name)
 Remove every parameter of this name from this component.
 
std::unique_ptr< ComponentInfo > cloneWithoutDetectorInfo () const
 Clone current instance but not the DetectorInfo non-owned parts.
 
const IComponent * componentID (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, std::shared_ptr< ParameterInfo > parameterInfo=nullptr)
 Constructor.
 
std::vector< size_t > componentsInSubtree (size_t componentIndex) const
 
Beamline::ComponentType componentType (const size_t componentIndex) const
 
size_t detectorIndexAtXYZ (const size_t componentIndex, const int x, const int y, const int z) const
 
std::vector< size_t > detectorsInSubtree (size_t componentIndex) const
 
ComponentInfoIterator< ComponentInfo > end ()
 
size_t findBankParent (size_t index, const std::string &bankPart) const
 
std::string fullName (const size_t componentIndex) const
 The fully-qualified name of a component ("instrument/bank1/pixel3")
 
std::vector< bool > getBoolParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
double getFittingParameter (const size_t componentIndex, const std::string &name, double xvalue) const
 
std::vector< int > getIntParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
size_t getMemorySize () const
 Return memory used by the component info, in bytes.
 
std::vector< double > getNumberParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
std::set< std::string > getParameterNames (const size_t componentIndex, bool recursive=true) const
 
std::vector< std::string > getStringParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
bool hasDetectorInfo () const
 
bool hasDetectors (const size_t componentIndex) const
 
bool hasEquivalentSample (const ComponentInfo &other) const
 
bool hasEquivalentSource (const ComponentInfo &other) const
 
bool hasParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 Returns empty (or false) if the ComponentInfo was built without parameters or the parameter is unset.
 
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
 
size_t indexOfFullName (const std::string &fullName) const
 The component with this fully-qualified name, or invalidIndex if there is none.
 
size_t indexOfOrInvalid (Geometry::IComponent const *id) const
 The index for a component ID, or invalidIndex if it is not part of this instrument.
 
bool isDetector (const size_t componentIndex) const
 
bool isGridDetector (size_t const componentIndex) const
 
double l1 () const
 
void merge (const ComponentInfo &other)
 
const std::string & name (const size_t componentIndex) const
 
ComponentInfo & operator= (const ComponentInfo &)=delete
 Copy assignment is not possible for ComponentInfo.
 
const ParameterInfo::ComponentParameters & parameters (const size_t componentIndex) const
 All parameters on one component, non-recursive, ordered by name.
 
size_t parent (const size_t componentIndex) const
 
Beamline::PixelGridComponent pixelGridComponent (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::IObject & shape (const size_t componentIndex) const
 
std::unordered_map< std::shared_ptr< const Geometry::IObject >, std::vector< size_t > > shapeToComponentIndices () const
 Build a map from each unique shape to the list of component indices that share it.
 
const std::shared_ptr< ParameterInfo > & sharedParameterInfo () const
 This allows ParameterMap to delegate to ParameterInfo, rather than keeping a parallel copy that would silently diverge.
 
Kernel::V2D sideBySideViewPosition (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
 
std::tuple< int, int, int > xyzForDetectorID (const size_t componentIndex, const detid_t detectorID) const
 Given the component index of a Rectangular/Grid bank, and a detector ID within it, return the (x, y, z) pixel indices of that detector.
 
 ~ComponentInfo ()
 

Static Public Attributes

static constexpr size_t invalidIndex = std::numeric_limits<size_t>::max()
 Returned by indexOfOrInvalid() for a component ID that is not part of this instrument.
 

Private Member Functions

template<class T >
void addTypedParameter (const size_t componentIndex, const std::string &type, const std::string &name, const T &value, const std::string *const pDescription, const std::string &pVisible)
 Shared implementation of the typed add*() methods.
 
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.
 
template<class T >
std::vector< T > getParameter (size_t componentIndex, const std::string &name, bool recursive) const
 
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.
 
ParameterInfo & mutableParameterInfo ()
 The store, created on first write if this ComponentInfo was built without one (a bare, non-parametrized instrument).
 

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< ParameterInfo > m_parameterInfo
 The instrument's named parameters, keyed by component index.
 
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 48 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 95 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,
std::shared_ptr< ParameterInfo >  parameterInfo = nullptr 
)

Constructor.

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

Definition at line 61 of file ComponentInfo.cpp.

References m_compIDToIndex, m_componentIds, and m_componentInfo.

◆ ~ComponentInfo()

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

Member Function Documentation

◆ addBool()

void Mantid::Geometry::ComponentInfo::addBool ( const size_t  componentIndex,
const std::string &  name,
bool  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

Add or replace a named boolean parameter at a specific component index.

Definition at line 730 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pBool(), and value.

◆ addDouble()

void Mantid::Geometry::ComponentInfo::addDouble ( const size_t  componentIndex,
const std::string &  name,
double  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

Add or replace a named double parameter at a specific component index.

Definition at line 720 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pDouble(), and value.

◆ addFittingParameter()

void Mantid::Geometry::ComponentInfo::addFittingParameter ( const size_t  componentIndex,
const std::string &  name,
const std::string &  fittingFunction,
const std::string &  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

◆ addInt()

void Mantid::Geometry::ComponentInfo::addInt ( const size_t  componentIndex,
const std::string &  name,
int  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

Add or replace a named integer parameter at a specific component index.

Definition at line 725 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pInt(), and value.

◆ addParameter()

void Mantid::Geometry::ComponentInfo::addParameter ( const size_t  componentIndex,
const std::string &  type,
const std::string &  name,
const std::string &  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

Add or replace a named parameter at a specific component index.

Definition at line 707 of file ComponentInfo.cpp.

References Mantid::Geometry::ParameterInfo::add(), Mantid::Geometry::ParameterFactory::create(), mutableParameterInfo(), name, and value.

◆ addQuat()

void Mantid::Geometry::ComponentInfo::addQuat ( const size_t  componentIndex,
const std::string &  name,
const Kernel::Quat &  value,
const std::string *const  pDescription = nullptr 
)

Add or replace a named quaternion parameter at a specific component index.

Definition at line 745 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pQuat(), and value.

◆ addString()

void Mantid::Geometry::ComponentInfo::addString ( const size_t  componentIndex,
const std::string &  name,
const std::string &  value,
const std::string *const  pDescription = nullptr,
const std::string &  pVisible = "true" 
)

Add or replace a named string parameter at a specific component index.

Definition at line 735 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pString(), and value.

◆ addTypedParameter()

template<class T >
void Mantid::Geometry::ComponentInfo::addTypedParameter ( const size_t  componentIndex,
const std::string &  type,
const std::string &  name,
const T &  value,
const std::string *const  pDescription,
const std::string &  pVisible 
)
private

Shared implementation of the typed add*() methods.

Definition at line 691 of file ComponentInfo.cpp.

References Mantid::Geometry::ParameterInfo::add(), Mantid::Geometry::ParameterFactory::create(), mutableParameterInfo(), name, and value.

Referenced by addBool(), addDouble(), addInt(), addQuat(), addString(), and addV3D().

◆ addV3D()

void Mantid::Geometry::ComponentInfo::addV3D ( const size_t  componentIndex,
const std::string &  name,
const Kernel::V3D &  value,
const std::string *const  pDescription = nullptr 
)

Add or replace a named vector parameter at a specific component index.

Definition at line 740 of file ComponentInfo.cpp.

References addTypedParameter(), name, Mantid::Geometry::ParameterMap::pV3D(), and value.

◆ begin()

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

Definition at line 552 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 504 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 556 of file ComponentInfo.cpp.

References size().

◆ cend()

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

Definition at line 558 of file ComponentInfo.cpp.

References size().

◆ children()

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

◆ clearParameter()

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

Remove every parameter of this name from this component.

Matches the name case-sensitively, as ParameterMap::clearParametersByName() does.

Definition at line 761 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

◆ 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 86 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 106 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ componentType()

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

◆ detectorIndexAtXYZ()

size_t Mantid::Geometry::ComponentInfo::detectorIndexAtXYZ ( const size_t  componentIndex,
const int  x,
const int  y,
const int  z 
) const

◆ detectorsInSubtree()

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

◆ end()

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

Definition at line 554 of file ComponentInfo.cpp.

References size().

◆ findBankParent()

size_t Mantid::Geometry::ComponentInfo::findBankParent ( size_t  index,
const std::string &  bankPart 
) const

Definition at line 560 of file ComponentInfo.cpp.

References children(), findBankParent(), index, name, and parent().

Referenced by findBankParent().

◆ fullName()

std::string Mantid::Geometry::ComponentInfo::fullName ( const size_t  componentIndex) const

The fully-qualified name of a component ("instrument/bank1/pixel3")

The fully-qualified name of a component, e.g.

"instrument/bank1/pixel3". Matches IComponent::getFullName()

Definition at line 587 of file ComponentInfo.cpp.

References hasParent(), index, name, and parent().

Referenced by indexOfFullName().

◆ getBoolParameter()

std::vector< bool > Mantid::Geometry::ComponentInfo::getBoolParameter ( const size_t  componentIndex,
const std::string &  name,
bool  recursive = true 
) const

Definition at line 782 of file ComponentInfo.cpp.

References name.

◆ getFittingParameter()

double Mantid::Geometry::ComponentInfo::getFittingParameter ( const size_t  componentIndex,
const std::string &  name,
double  xvalue 
) const

◆ getIntParameter()

std::vector< int > Mantid::Geometry::ComponentInfo::getIntParameter ( const size_t  componentIndex,
const std::string &  name,
bool  recursive = true 
) const

Definition at line 777 of file ComponentInfo.cpp.

References name.

◆ getMemorySize()

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

Return memory used by the component info, in bytes.

Returns
bytes used.

Definition at line 811 of file ComponentInfo.cpp.

References m_componentInfo, m_shapes, n, and size().

Referenced by export_ComponentInfo().

◆ getNumberParameter()

std::vector< double > Mantid::Geometry::ComponentInfo::getNumberParameter ( const size_t  componentIndex,
const std::string &  name,
bool  recursive = true 
) const

Definition at line 772 of file ComponentInfo.cpp.

References name.

◆ getParameter()

template<class T >
std::vector< T > Mantid::Geometry::ComponentInfo::getParameter ( size_t  componentIndex,
const std::string &  name,
bool  recursive 
) const
private

Definition at line 648 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

◆ getParameterNames()

std::set< std::string > Mantid::Geometry::ComponentInfo::getParameterNames ( const size_t  componentIndex,
bool  recursive = true 
) const

Definition at line 670 of file ComponentInfo.cpp.

References getParameterNames(), hasParent(), m_parameterInfo, and parent().

Referenced by getParameterNames().

◆ getStringParameter()

std::vector< std::string > Mantid::Geometry::ComponentInfo::getStringParameter ( const size_t  componentIndex,
const std::string &  name,
bool  recursive = true 
) const

Definition at line 787 of file ComponentInfo.cpp.

References name.

◆ 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 421 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 400 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 202 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 232 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasEquivalentSource()

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

Definition at line 218 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasParameter()

bool Mantid::Geometry::ComponentInfo::hasParameter ( const size_t  componentIndex,
const std::string &  name,
bool  recursive = true 
) const

Returns empty (or false) if the ComponentInfo was built without parameters or the parameter is unset.

Definition at line 660 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

◆ hasParent()

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

◆ hasSample()

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

Definition at line 222 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasSource()

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

Definition at line 208 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 153 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

◆ indexOfFullName()

size_t Mantid::Geometry::ComponentInfo::indexOfFullName ( const std::string &  fullName) const

The component with this fully-qualified name, or invalidIndex if there is none.

The component with this fully-qualified name, or invalidIndex.

Descends the tree one path segment at a time rather than comparing fullName() against every component, which would be O(components x depth) on every lookup – prohibitive for the large instruments this is called for once per stored parameter during a load.

Where two children of the same parent share a name the first is returned, matching what Instrument::getComponentByName() does within a level. Such a full name is ambiguous anyway.

Definition at line 612 of file ComponentInfo.cpp.

References children(), fullName(), invalidIndex, name, root(), and size().

◆ indexOfOrInvalid()

size_t Mantid::Geometry::ComponentInfo::indexOfOrInvalid ( Geometry::IComponent const *  id) const

The index for a component ID, or invalidIndex if it is not part of this instrument.

Definition at line 140 of file ComponentInfo.cpp.

References invalidIndex, and m_compIDToIndex.

Referenced by Mantid::API::ExperimentInfo::populateWithParameter().

◆ isDetector()

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

◆ isGridDetector()

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

◆ l1()

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

◆ merge()

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

◆ mutableParameterInfo()

ParameterInfo & Mantid::Geometry::ComponentInfo::mutableParameterInfo ( )
private

The store, created on first write if this ComponentInfo was built without one (a bare, non-parametrized instrument).

Reads leave it null, so they stay cheap and const.

Definition at line 683 of file ComponentInfo.cpp.

References m_parameterInfo.

Referenced by addFittingParameter(), addParameter(), and addTypedParameter().

◆ 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.

◆ parameters()

const ParameterInfo::ComponentParameters & Mantid::Geometry::ComponentInfo::parameters ( const size_t  componentIndex) const

All parameters on one component, non-recursive, ordered by name.

Definition at line 767 of file ComponentInfo.cpp.

References m_parameterInfo.

◆ parent()

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

◆ pixelGridComponent()

Beamline::PixelGridComponent Mantid::Geometry::ComponentInfo::pixelGridComponent ( 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 162 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 170 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 194 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 548 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 182 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 186 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 544 of file ComponentInfo.cpp.

References m_componentInfo.

◆ shape()

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

◆ shapeToComponentIndices()

std::unordered_map< std::shared_ptr< const IObject >, std::vector< size_t > > Mantid::Geometry::ComponentInfo::shapeToComponentIndices ( ) const

Build a map from each unique shape to the list of component indices that share it.

Components with a null or invalid shape are excluded from the result.

Returns
An unordered map keyed by shared shape pointer, with values being the list of component indices that reference that shape.

Definition at line 267 of file ComponentInfo.cpp.

References m_shapes.

◆ sharedParameterInfo()

const std::shared_ptr< ParameterInfo > & Mantid::Geometry::ComponentInfo::sharedParameterInfo ( ) const
inline

This allows ParameterMap to delegate to ParameterInfo, rather than keeping a parallel copy that would silently diverge.

Definition at line 226 of file ComponentInfo.h.

◆ sideBySideViewPosition()

Kernel::V2D Mantid::Geometry::ComponentInfo::sideBySideViewPosition ( 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 147 of file ComponentInfo.cpp.

References m_componentInfo, and name.

Referenced by export_ComponentInfo().

◆ xyzForDetectorID()

std::tuple< int, int, int > Mantid::Geometry::ComponentInfo::xyzForDetectorID ( const size_t  componentIndex,
const detid_t  detectorID 
) const

Given the component index of a Rectangular/Grid bank, and a detector ID within it, return the (x, y, z) pixel indices of that detector.

Ports Geometry::GridDetector::getXYZForDetectorID's arithmetic exactly (detector-ID numbering is never parametrized, so this is safe to compute from the cached PixelGridComponent alone).

Definition at line 352 of file ComponentInfo.cpp.

References pixelGridComponent().

Friends And Related Symbol Documentation

◆ Instrument

friend class Instrument
friend

Definition at line 228 of file ComponentInfo.h.

Member Data Documentation

◆ invalidIndex

constexpr size_t Mantid::Geometry::ComponentInfo::invalidIndex = std::numeric_limits<size_t>::max()
staticconstexpr

◆ 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 59 of file ComponentInfo.h.

Referenced by ComponentInfo(), indexOf(), and indexOfOrInvalid().

◆ m_componentIds

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

Collection of component ids.

Definition at line 57 of file ComponentInfo.h.

Referenced by ComponentInfo().

◆ m_componentInfo

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

◆ m_parameterInfo

std::shared_ptr<ParameterInfo> Mantid::Geometry::ComponentInfo::m_parameterInfo
private

The instrument's named parameters, keyed by component index.

Definition at line 65 of file ComponentInfo.h.

Referenced by clearParameter(), getFittingParameter(), getParameter(), getParameterNames(), hasParameter(), mutableParameterInfo(), and parameters().

◆ 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 62 of file ComponentInfo.h.

Referenced by getMemorySize(), and shapeToComponentIndices().


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