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 addLogfileParameter (size_t const componentIndex, std::string const &cacheKey, std::shared_ptr< const XMLInstrumentParameter > const &parameter)
 Add or replace a logfile parameter on a component.
 
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.
 
void clearParameters ()
 Remove every parameter from every 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, std::shared_ptr< const ReferenceFrame > referenceFrame=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
 
std::string getDescription (const size_t componentIndex) const
 The component's own description: that of the parameter named after the component, not inherited.
 
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::string getParamDescription (const size_t componentIndex, const std::string &name, bool recursive=true) const
 The description of the named parameter, or an empty string if it is unset.
 
std::string getParameterAsString (size_t const componentIndex, std::string const &name, bool const recursive=true) const
 The value of the named parameter as a string, whatever its type, or an empty string if it is unset.
 
std::set< std::string > getParameterNames (const size_t componentIndex, bool recursive=true) const
 
std::string getParameterType (const size_t componentIndex, const std::string &name, bool recursive=true) const
 The type of the named parameter, or an empty string if the component has no such parameter.
 
bool getParameterVisible (const size_t componentIndex, const std::string &name, bool recursive=true) const
 The named parameter's visibility attribute, or false if it is unset.
 
std::string getParamShortDescription (const size_t componentIndex, const std::string &name, bool recursive=true) const
 The short description (tooltip) of the named parameter, or an empty string if it is unset.
 
std::vector< Kernel::V3D > getPositionParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
std::vector< Kernel::Quat > getRotationParameter (const size_t componentIndex, const std::string &name, bool recursive=true) const
 
std::string getShortDescription (const size_t componentIndex) const
 The component's own short description: that of the parameter named after the component, not inherited.
 
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
 The first component with this name in a breadth-first search, as Instrument::getComponentByName() finds it.
 
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
 
bool isStructuredDetector (size_t const componentIndex) const
 
double l1 () const
 
const ParameterInfo::LogfileParameters & logfileParameters () const
 Parameters whose values are taken from the sample logs by ExperimentInfo::populateInstrumentParameters().
 
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.
 
std::shared_ptr< const Parameter > parameter (const size_t componentIndex, const std::string &name, const std::string &type="", bool recursive=true) const
 The named parameter, of the given type if one is given, or null if the component has none.
 
std::shared_ptr< const Parameter > parameterByType (const size_t componentIndex, const std::string &type, bool recursive=true) const
 The first parameter of the given type, or null if the component has none.
 
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
 
std::shared_ptr< const ReferenceFrame > referenceFrame () const
 The instrument's reference frame: which axes point up and along the beam, and its handedness.
 
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 setDescription (const size_t componentIndex, const std::string &description)
 Set the component's description, as Component::setDescription() does: on the parameter named after the component (searched recursively), or on a new empty string parameter of that name.
 
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
 
const Beamline::StructuredGridComponent & structuredGridComponent (const size_t componentIndex) const
 The pixel counts, ID numbering and pixel vertices of a Structured bank. Throws if it is not one.
 
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.
 
std::shared_ptr< Parameter > findParameter (size_t componentIndex, std::string const &name, bool recursive) const
 The named parameter on this component (or, if recursive, its nearest ancestor), or null.
 
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< const ReferenceFrame > m_referenceFrame
 The instrument's reference frame (up, along-beam and handedness), or null if none was given.
 
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 50 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 97 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,
std::shared_ptr< const ReferenceFrame >  referenceFrame = 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
referenceFrameA reference frame

Definition at line 63 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 755 of file ComponentInfo.cpp.

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

Referenced by Mantid::Algorithms::SetInstrumentParameter::addParameter(), and Mantid::API::ExperimentInfo::populateWithParameter().

◆ 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" 
)

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

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

Referenced by Mantid::Algorithms::SetInstrumentParameter::addParameter(), and Mantid::API::ExperimentInfo::populateWithParameter().

◆ addLogfileParameter()

void Mantid::Geometry::ComponentInfo::addLogfileParameter ( size_t const  componentIndex,
std::string const &  cacheKey,
std::shared_ptr< const XMLInstrumentParameter > const &  parameter 
)

Add or replace a logfile parameter on a component.

'cacheKey' is the parameter name, qualified by its fitting function if it has one.

Definition at line 791 of file ComponentInfo.cpp.

References Mantid::Geometry::ParameterInfo::addLogfileParameter(), and mutableParameterInfo().

◆ 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 732 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 770 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" 
)

◆ 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 716 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 765 of file ComponentInfo.cpp.

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

◆ begin()

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

Definition at line 573 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 525 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 577 of file ComponentInfo.cpp.

References size().

◆ cend()

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

Definition at line 579 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 796 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

Referenced by Mantid::Algorithms::SetInstrumentParameter::addParameter().

◆ clearParameters()

void Mantid::Geometry::ComponentInfo::clearParameters ( )

Remove every parameter from every component.

Definition at line 802 of file ComponentInfo.cpp.

References m_parameterInfo.

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

Referenced by WorkspaceCreationHelper::baseInstrumentID().

◆ componentsInSubtree()

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

Definition at line 109 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 575 of file ComponentInfo.cpp.

References size().

◆ findBankParent()

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

Definition at line 581 of file ComponentInfo.cpp.

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

Referenced by findBankParent().

◆ findParameter()

Parameter_sptr Mantid::Geometry::ComponentInfo::findParameter ( size_t  componentIndex,
std::string const &  name,
bool  recursive 
) const
private

The named parameter on this component (or, if recursive, its nearest ancestor), or null.

Definition at line 668 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

Referenced by getParamDescription(), getParameter(), getParameterAsString(), getParameterType(), getParameterVisible(), getParamShortDescription(), and setDescription().

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

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

Referenced by Mantid::Geometry::ParameterMap::asString(), Mantid::Geometry::ParameterMap::componentFullName(), export_ComponentInfo(), and indexOfFullName().

◆ getBoolParameter()

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

Definition at line 842 of file ComponentInfo.cpp.

References name.

◆ getDescription()

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

The component's own description: that of the parameter named after the component, not inherited.

Definition at line 891 of file ComponentInfo.cpp.

References getParamDescription(), and 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 837 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 927 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

◆ getParamDescription()

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

The description of the named parameter, or an empty string if it is unset.

Definition at line 879 of file ComponentInfo.cpp.

References findParameter(), and name.

Referenced by getDescription().

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

References findParameter(), and name.

◆ getParameterAsString()

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

The value of the named parameter as a string, whatever its type, or an empty string if it is unset.

Definition at line 862 of file ComponentInfo.cpp.

References findParameter(), and name.

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

◆ getParameterNames()

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

Definition at line 695 of file ComponentInfo.cpp.

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

Referenced by getParameterNames().

◆ getParameterType()

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

The type of the named parameter, or an empty string if the component has no such parameter.

Definition at line 873 of file ComponentInfo.cpp.

References findParameter(), and name.

◆ getParameterVisible()

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

The named parameter's visibility attribute, or false if it is unset.

Definition at line 868 of file ComponentInfo.cpp.

References findParameter(), and name.

◆ getParamShortDescription()

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

The short description (tooltip) of the named parameter, or an empty string if it is unset.

Definition at line 885 of file ComponentInfo.cpp.

References findParameter(), and name.

Referenced by getShortDescription().

◆ getPositionParameter()

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

Definition at line 852 of file ComponentInfo.cpp.

References name.

◆ getRotationParameter()

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

Definition at line 857 of file ComponentInfo.cpp.

References name.

◆ getShortDescription()

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

The component's own short description: that of the parameter named after the component, not inherited.

Definition at line 895 of file ComponentInfo.cpp.

References getParamShortDescription(), and name.

◆ getStringParameter()

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

◆ 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 442 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 421 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 205 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 235 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasEquivalentSource()

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

Definition at line 221 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 685 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

Referenced by Mantid::API::ExperimentInfo::getEMode(), and Mantid::API::DetectorSearcher::searchUsingNearestNeighbours().

◆ hasParent()

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

◆ hasSample()

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

Definition at line 225 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by export_ComponentInfo().

◆ hasSource()

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

◆ hasValidShape()

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

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

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

Referenced by export_ComponentInfo().

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

References invalidIndex, and m_compIDToIndex.

◆ isDetector()

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

◆ isGridDetector()

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

◆ isStructuredDetector()

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

Definition at line 315 of file ComponentInfo.cpp.

References m_componentInfo.

Referenced by structuredGridComponent().

◆ l1()

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

◆ logfileParameters()

const ParameterInfo::LogfileParameters & Mantid::Geometry::ComponentInfo::logfileParameters ( ) const

Parameters whose values are taken from the sample logs by ExperimentInfo::populateInstrumentParameters().

Definition at line 786 of file ComponentInfo.cpp.

References m_parameterInfo.

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

References m_parameterInfo.

Referenced by addFittingParameter(), addLogfileParameter(), 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.

◆ parameter()

std::shared_ptr< const Parameter > Mantid::Geometry::ComponentInfo::parameter ( const size_t  componentIndex,
const std::string &  name,
const std::string &  type = "",
bool  recursive = true 
) const

The named parameter, of the given type if one is given, or null if the component has none.

Definition at line 814 of file ComponentInfo.cpp.

References m_parameterInfo, and name.

◆ parameterByType()

std::shared_ptr< const Parameter > Mantid::Geometry::ComponentInfo::parameterByType ( const size_t  componentIndex,
const std::string &  type,
bool  recursive = true 
) const

The first parameter of the given type, or null if the component has none.

Definition at line 823 of file ComponentInfo.cpp.

References m_parameterInfo.

◆ 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 809 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 165 of file ComponentInfo.cpp.

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

◆ quadrilateralComponent()

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

◆ referenceFrame()

std::shared_ptr< const ReferenceFrame > Mantid::Geometry::ComponentInfo::referenceFrame ( ) const

The instrument's reference frame: which axes point up and along the beam, and its handedness.

A default frame (Y up, Z along the beam, right-handed) if this ComponentInfo was built without one.

Definition at line 258 of file ComponentInfo.cpp.

References m_referenceFrame.

Referenced by Mantid::API::DetectorSearcher::convertQtoDirection(), Mantid::API::DetectorSearcher::createDetectorCache(), and export_ComponentInfo().

◆ 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 173 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 197 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 569 of file ComponentInfo.cpp.

References m_componentInfo.

◆ setDescription()

void Mantid::Geometry::ComponentInfo::setDescription ( const size_t  componentIndex,
const std::string &  description 
)

Set the component's description, as Component::setDescription() does: on the parameter named after the component (searched recursively), or on a new empty string parameter of that name.

Definition at line 899 of file ComponentInfo.cpp.

References addString(), findParameter(), and name.

◆ setPosition() [1/2]

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

Definition at line 185 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 189 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 565 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 277 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 281 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

◆ structuredGridComponent()

const Beamline::StructuredGridComponent & Mantid::Geometry::ComponentInfo::structuredGridComponent ( const size_t  componentIndex) const

The pixel counts, ID numbering and pixel vertices of a Structured bank. Throws if it is not one.

Definition at line 319 of file ComponentInfo.cpp.

References isStructuredDetector(), and m_componentInfo.

◆ uniqueName()

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

Definition at line 150 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 373 of file ComponentInfo.cpp.

References pixelGridComponent().

Friends And Related Symbol Documentation

◆ Instrument

friend class Instrument
friend

Definition at line 283 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 61 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 59 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

◆ m_referenceFrame

std::shared_ptr<const ReferenceFrame> Mantid::Geometry::ComponentInfo::m_referenceFrame
private

The instrument's reference frame (up, along-beam and handedness), or null if none was given.

Definition at line 70 of file ComponentInfo.h.

Referenced by referenceFrame().

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

Referenced by getMemorySize(), and shapeToComponentIndices().


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