9#ifndef TRKGEOMETY_LAYERMATERIALPROPERTIES_H
10#define TRKGEOMETY_LAYERMATERIALPROPERTIES_H
127 virtual MsgStream&
dump(MsgStream& sl)
const = 0;
130 virtual std::ostream&
dump(std::ostream& sl)
const = 0;
133 friend class ::BinnedLayerMaterialCnv_p1;
141 return (
static_cast<int>(pDir) *
static_cast<int>(mStage) > 0 ?
A generic symmetric BinUtility, for fully symmetric binning in terms of binning grid and binning type...
This virtual base class encapsulates the logics to build pre/post/full update material for Layer stru...
virtual ~LayerMaterialProperties()=default
Destructor.
LayerMaterialProperties()=default
Constructor.
virtual MsgStream & dump(MsgStream &sl) const =0
Output Method for MsgStream, to be overloaded by child classes.
virtual const MaterialProperties * fullMaterial(const Amg::Vector3D &gp) const =0
Return method for full material description of the Layer.
virtual LayerMaterialProperties & operator*=(double scale)=0
Scale operator.
virtual LayerMaterialProperties * clone() const =0
Pseudo-Constructor clone().
void updateElementTable(const std::shared_ptr< const ElementTable > &) const
Update the ElementTable.
virtual const BinUtility * binUtility() const =0
Return the BinUtility.
double oppositePostFactor() const
Return method for post update material description of the Layer along normalvector.
const ElementTable * elementTable() const
Get the ElementTable.
double alongPreFactor() const
Return method for pre update material description of the Layer along normalvector.
virtual void updateBinning(BinUtility *bu)=0
Update the BinUtility if necessary - passing ownership of the utility class.
double alongPostFactor() const
Return method for post update material description of the Layer along normalvector.
double m_splitFactor
the split factor in favour of oppositePre
LayerMaterialProperties(LayerMaterialProperties &&) noexcept=default
virtual const MaterialProperties * material(size_t ib0, size_t ib1) const =0
Direct access via bins to the MaterialProperties.
virtual std::ostream & dump(std::ostream &sl) const =0
Output Method for std::ostream, to be overloaded by child classes.
double oppositePreFactor() const
Return method for pre update material description of the Layer along normalvector.
LayerMaterialProperties(const LayerMaterialProperties &)=default
double factor(PropDirection pDir, MaterialUpdateStage mStage) const
Update pre factor.
Material with information about thickness of material.
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.
PropDirection
PropDirection, enum for direction of the propagation.
MaterialUpdateStage
This is a steering enum to tell which material update stage:
MsgStream & operator<<(MsgStream &sl, const AlignModule &alignModule)
overload of << operator for MsgStream for debug output
MaterialConcentration
Simple enum to identify when a material update on a non-structured layer should be done,...