CbmRoot
Loading...
Searching...
No Matches
cbm::algo::kf::Field< T > Class Template Reference

Magnetic field manager class. More...

#include <KfField.h>

Inheritance diagram for cbm::algo::kf::Field< T >:
[legend]

Public Types

template<EFieldMode Mode>
using ConcreteField_t = typename detail::ConcreteField<T, Mode>
 
using Interpolated_t = ConcreteField_t<EFieldMode::Interpolated>
 
using Original_t = ConcreteField_t<EFieldMode::Original>
 
using FieldVariant_t = typename std::variant<Interpolated_t, Original_t>
 
using SlicesContainer_t = typename Interpolated_t::SlicesContainer_t
 

Public Member Functions

 Field ()=default
 Default constructor.
 
 Field (const Field &)=default
 Copy constructor for the same class.
 
 Field (Field &&)=default
 Move constructor.
 
 ~Field ()=default
 Destructor.
 
Fieldoperator= (const Field &other)=default
 Copy assignment operator.
 
Fieldoperator= (Field &&other)=default
 Move assignment operator.
 
template<EFieldMode FieldMode>
const ConcreteField_t< FieldMode > * GetConcrete () const
 Gets a pointer to the concrete field instance.
 
EFieldMode GetFieldMode () const
 Gets stored mode of the field.
 
FieldValue< T > GetFieldValue (int sliceId, T x, T y) const
 Creates field value object.
 
const FieldValue< T > GetFieldValueForLine (int sliceId, const TrackParam< T > &tp) const
 Creates field value for the intersection with a straight track.
 
EFieldType GetFieldType () const
 Gets field type.
 
FieldRegion< T > GetFieldRegion (const FieldValue< T > &b0, const FieldValue< T > &b1, const FieldValue< T > &b2) const
 Creates field region object from nodes.
 
const FieldRegion< T > & GetPrimVertexField () const
 Gets field region near primary vertex.
 
void RemoveSlice (int iLayer)
 Removes a field slice.
 
std::string ToString (int indentLevel, int verbose) const
 String representation of the class.
 

Static Public Member Functions

template<EFieldMode FieldMode, typename... Args>
static constexpr Field Create (Args... args)
 Creates a field (compile-time mode selection)
 
template<typename I>
static Field CopyConvert (const Field< I > &other)
 Creates a converted copy of the field with a different floating point type.
 

Private Member Functions

 Field (SlicesContainer_t &fieldSlices, FieldRegion< T > &vtxField, EFieldType fieldType, Tag< EFieldMode::Interpolated >)
 Constructor for interpolated field.
 
 Field (FieldFn_t fieldFn, std::vector< T > &fieldSliceZ, FieldRegion< T > &vtxField, EFieldType fieldType, Tag< EFieldMode::Original >)
 Constructor for original field.
 
template<typename I, EFieldMode FieldMode>
 Field (const Field< I > &other, Tag< FieldMode >)
 Constructor from a field of another type.
 
template<class Archive>
void load (Archive &ar, const unsigned int)
 Serialization load method.
 
template<class Archive>
void save (Archive &ar, const unsigned int) const
 Serialization save method.
 
template<class Archive>
void serialize (Archive &ar, const unsigned int version)
 Serialization method.
 

Private Attributes

FieldVariant_t fFieldVariant
 Concrete field implementation.
 

Friends

template<typename>
class Field
 
class boost::serialization::access
 

Detailed Description

template<typename T>
class cbm::algo::kf::Field< T >

Magnetic field manager class.

Template Parameters
TUnderlying floating point type (float/double/fvec)

Definition at line 272 of file KfField.h.

Member Typedef Documentation

◆ ConcreteField_t

template<typename T>
template<EFieldMode Mode>
using cbm::algo::kf::Field< T >::ConcreteField_t = typename detail::ConcreteField<T, Mode>

Definition at line 279 of file KfField.h.

◆ FieldVariant_t

template<typename T>
using cbm::algo::kf::Field< T >::FieldVariant_t = typename std::variant<Interpolated_t, Original_t>

Definition at line 283 of file KfField.h.

◆ Interpolated_t

template<typename T>
using cbm::algo::kf::Field< T >::Interpolated_t = ConcreteField_t<EFieldMode::Interpolated>

Definition at line 281 of file KfField.h.

◆ Original_t

template<typename T>
using cbm::algo::kf::Field< T >::Original_t = ConcreteField_t<EFieldMode::Original>

Definition at line 282 of file KfField.h.

◆ SlicesContainer_t

template<typename T>
using cbm::algo::kf::Field< T >::SlicesContainer_t = typename Interpolated_t::SlicesContainer_t

Definition at line 284 of file KfField.h.

Constructor & Destructor Documentation

◆ Field() [1/6]

template<typename T>
cbm::algo::kf::Field< T >::Field ( )
default

Default constructor.

◆ Field() [2/6]

template<typename T>
cbm::algo::kf::Field< T >::Field ( const Field< T > & )
default

Copy constructor for the same class.

References Field.

◆ Field() [3/6]

template<typename T>
cbm::algo::kf::Field< T >::Field ( Field< T > && )
default

Move constructor.

References Field.

◆ ~Field()

template<typename T>
cbm::algo::kf::Field< T >::~Field ( )
default

Destructor.

◆ Field() [4/6]

template<typename T>
cbm::algo::kf::Field< T >::Field ( SlicesContainer_t & fieldSlices,
FieldRegion< T > & vtxField,
EFieldType fieldType,
Tag< EFieldMode::Interpolated >  )
inlineprivate

Constructor for interpolated field.

Parameters
fieldSlicesA container of field slices (NOTE: resource is moved)
vtxFieldField in the primary vertex region (NOTE: resource is moved)
fieldTypeA type of the field

Definition at line 429 of file KfField.h.

References fFieldVariant.

◆ Field() [5/6]

template<typename T>
cbm::algo::kf::Field< T >::Field ( FieldFn_t fieldFn,
std::vector< T > & fieldSliceZ,
FieldRegion< T > & vtxField,
EFieldType fieldType,
Tag< EFieldMode::Original >  )
inlineprivate

Constructor for original field.

Parameters
fieldFnMagnetic field function
fieldSliceZz-coordinates of field slices (NOTE: resource is moved)
vtxFieldField in the primary vertex region (NOTE: resource is moved)
fieldTypeA type of the field

Definition at line 439 of file KfField.h.

References fFieldVariant.

◆ Field() [6/6]

template<typename T>
template<typename I, EFieldMode FieldMode>
cbm::algo::kf::Field< T >::Field ( const Field< I > & other,
Tag< FieldMode >  )
inlineprivate

Constructor from a field of another type.

Template Parameters
IUnderlying floating point type of another field region
Note
This is not a copy constructor, since it requers a tag of the magnetic field implementation

Definition at line 449 of file KfField.h.

References fFieldVariant, and Field.

Member Function Documentation

◆ CopyConvert()

template<typename T>
template<typename I>
static Field cbm::algo::kf::Field< T >::CopyConvert ( const Field< I > & other)
inlinestatic

Creates a converted copy of the field with a different floating point type.

Template Parameters
Iunderlying type of the class
Parameters
otherA source field of different type

Definition at line 328 of file KfField.h.

References fFieldVariant, and Field.

◆ Create()

template<typename T>
template<EFieldMode FieldMode, typename... Args>
static constexpr Field cbm::algo::kf::Field< T >::Create ( Args... args)
inlinestaticconstexpr

Creates a field (compile-time mode selection)

Template Parameters
FieldModeMode of the field
Parameters
argsParameters for construction of the concrete field

Parameters for FieldMode == EFieldMode::Interpolated: (1) std::vector<FieldSlices<T>>& vector of field slices (moved) (2) FieldRegion<t>& a field region near target (3) EFieldType a type of the field

Parameters for FieldMode == EFieldMode::Original: (1) FieldFn_t field function (2) std::vector<T> vector of reference z-positions of field slices (moved) (3) FieldRegion<t>& a field region near target (4) EFieldType a type of the field

Definition at line 319 of file KfField.h.

References Field.

◆ GetConcrete()

template<typename T>
template<EFieldMode FieldMode>
const ConcreteField_t< FieldMode > * cbm::algo::kf::Field< T >::GetConcrete ( ) const
inline

Gets a pointer to the concrete field instance.

Template Parameters
FieldModeField mode
Note
Returns nullptr, if the FieldMode differs from the type of the field held by the fFieldVariant

Definition at line 338 of file KfField.h.

References fFieldVariant.

◆ GetFieldMode()

template<typename T>
EFieldMode cbm::algo::kf::Field< T >::GetFieldMode ( ) const
inline

Gets stored mode of the field.

Note
Unique

Definition at line 345 of file KfField.h.

References fFieldVariant.

◆ GetFieldRegion()

template<typename T>
FieldRegion< T > cbm::algo::kf::Field< T >::GetFieldRegion ( const FieldValue< T > & b0,
const FieldValue< T > & b1,
const FieldValue< T > & b2 ) const
inline

Creates field region object from nodes.

Parameters
n0First node
n1Second node
n2Third node

Makes field region object

Parameters
b0Field value in the first node
b1Field value in the second node
b2Field value in the third node
Note
Parameters b0-b2, z0-z2 are ignored, if fFieldMode == EFieldMode::Original
Unique

Definition at line 393 of file KfField.h.

References fFieldVariant.

◆ GetFieldType()

template<typename T>
EFieldType cbm::algo::kf::Field< T >::GetFieldType ( ) const
inline

Gets field type.

Definition at line 372 of file KfField.h.

References fFieldVariant.

◆ GetFieldValue()

template<typename T>
FieldValue< T > cbm::algo::kf::Field< T >::GetFieldValue ( int sliceId,
T x,
T y ) const
inline

Creates field value object.

Parameters
sliceIdIndex of slice
xx-coordinate of the point [cm]
yy-coordinate of the point [cm]
Note
Common

Definition at line 355 of file KfField.h.

References fFieldVariant, x, and y.

◆ GetFieldValueForLine()

template<typename T>
const FieldValue< T > cbm::algo::kf::Field< T >::GetFieldValueForLine ( int sliceId,
const TrackParam< T > & tp ) const
inline

Creates field value for the intersection with a straight track.

Parameters
sliceIDIndex of slice
tpTrack parameter set
Note
Common

Definition at line 365 of file KfField.h.

References fFieldVariant.

◆ GetPrimVertexField()

template<typename T>
const FieldRegion< T > & cbm::algo::kf::Field< T >::GetPrimVertexField ( ) const
inline

Gets field region near primary vertex.

Note
Common

Definition at line 406 of file KfField.h.

References fFieldVariant.

◆ load()

template<typename T>
template<class Archive>
void cbm::algo::kf::Field< T >::load ( Archive & ar,
const unsigned int  )
inlineprivate

Serialization load method.

Definition at line 460 of file KfField.h.

References fFieldVariant.

◆ operator=() [1/2]

template<typename T>
Field & cbm::algo::kf::Field< T >::operator= ( const Field< T > & other)
default

Copy assignment operator.

References Field.

◆ operator=() [2/2]

template<typename T>
Field & cbm::algo::kf::Field< T >::operator= ( Field< T > && other)
default

Move assignment operator.

References Field.

◆ RemoveSlice()

template<typename T>
void cbm::algo::kf::Field< T >::RemoveSlice ( int iLayer)
inline

Removes a field slice.

Parameters
iLayerIndex of field slice

Definition at line 414 of file KfField.h.

References fFieldVariant.

◆ save()

template<typename T>
template<class Archive>
void cbm::algo::kf::Field< T >::save ( Archive & ar,
const unsigned int  ) const
inlineprivate

Serialization save method.

Definition at line 470 of file KfField.h.

References fFieldVariant.

◆ serialize()

template<typename T>
template<class Archive>
void cbm::algo::kf::Field< T >::serialize ( Archive & ar,
const unsigned int version )
inlineprivate

Serialization method.

Definition at line 483 of file KfField.h.

◆ ToString()

template<typename T>
std::string Field::ToString ( int indentLevel,
int verbose ) const

String representation of the class.

Parameters
indentLevelIndent level of the string output
verboseVerbosity level

Definition at line 61 of file KfField.cxx.

References fFieldVariant, and v.

Friends And Related Symbol Documentation

◆ boost::serialization::access

template<typename T>
friend class boost::serialization::access
friend

Definition at line 275 of file KfField.h.

◆ Field

template<typename T>
template<typename>
friend class Field
friend

Definition at line 274 of file KfField.h.

References Field.

Referenced by CopyConvert(), Create(), Field, Field(), Field(), Field(), operator=(), and operator=().

Member Data Documentation

◆ fFieldVariant

template<typename T>
FieldVariant_t cbm::algo::kf::Field< T >::fFieldVariant
private

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