9#ifndef TRKDETDESCRALGS_MATERIALMAPPING_H
10#define TRKDETDESCRALGS_MATERIALMAPPING_H
14#include "GaudiKernel/ServiceHandle.h"
15#include "GaudiKernel/ToolHandle.h"
33#ifdef TRKDETDESCR_MEMUSAGE
39#define ucharbin 0.00392157
41#define uchar2uint(uchar) static_cast<unsigned int>(uchar)
42#define uint2uchar(unint) static_cast<unsigned char>(unint)
44#define uchar2dfrac(uchar) double(uchar * ucharbin)
45#define dfrac2uchar(dfrac) lrint(dfrac* UCHAR_MAX)
54class SurfaceMaterialRecord;
55class LayerMaterialRecord;
56class LayerMaterialMap;
58class MaterialProperties;
59class BinnedLayerMaterial;
60class CompressedLayerMaterial;
118 "ExtrapolationEngine",
120 "Extrapolation Engine"
138 "LayerMaterialRecordAnalyser",
140 "Layer material analyser for the layer material record"
144 "LayerMaterialAnalysers",
146 "Layer material analysers per creator (if wanted)"
150 "LayerMaterialCreators",
152 "Layer material creators"
160 "IMaterialMapper algTool" };
170 std::map<const Layer*, LayerMaterialRecord>
172 std::map<const Layer*, bool>
187 const EventContext& ctx)
const
195 return handle.
cptr();
200 "TrackingGeometryReadKey",
202 "Key of the TrackingGeometry conditions data."
205#ifdef TRKDETDESCR_MEMUSAGE
215 if (!tracking_geometry) {
216 ATH_MSG_FATAL(
"Did not get valid TrackingGeometry. Aborting.");
217 throw GaudiException(
"MaterialMapping",
218 "Problem with TrackingGeometry loading.",
219 StatusCode::FAILURE);
221 return *tracking_geometry;
Property holding a SG store/key/clid from which a ReadHandle is made.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
const_pointer_type cptr()
Property holding a SG store/key/clid from which a ReadHandle is made.
This class extends the DataVector<Trk::LayerMaterialProperties> by an elementTable;.
Base Class for a Detector Layer in the Tracking realm.
std::map< const Layer *, LayerMaterialRecord > m_layerRecords
this is the general record for the search
bool m_useLayerThickness
use the actual layer thickness
MaterialMapping(const std::string &name, ISvcLocator *pSvcLocator)
Standard Athena-Algorithm Constructor.
double m_accumulatedMaterialXX0
the accumulated material information
std::map< const Layer *, bool > m_layersRecordedPerEvent
these are the layers hit per event - for empty hit scaling
ToolHandle< IMaterialMapper > m_materialMapper
void throwFailedToGetTrackingGeometry() const
std::string m_outputLayerMaterialSetName
void registerVolume(const Trk::TrackingVolume &tvol, int lvl)
Output information with Level.
double m_minCompositionFraction
minimal fraction to be accounted for the composition recording
SG::ReadHandleKey< Trk::ElementTable > m_inputEventElementTable
input event table
int m_etaSide
needed for debugging: -1 negative | 0 all | 1 positive
StatusCode finalize()
standard Athena-Algorithm method
ToolHandleArray< ILayerMaterialAnalyser > m_layerMaterialAnalysers
Trk::ElementTable * m_elementTable
the accumulated element table
bool m_mapMaterial
Mapper and Inspector.
void insertLayerMaterialRecord(const Trk::Layer &lay)
const Trk::TrackingVolume * m_mappingVolume
SG::ReadCondHandleKey< TrackingGeometry > m_trackingGeometryReadKey
StatusCode initialize()
standard Athena-Algorithm method
SG::ReadHandleKey< MaterialStepCollection > m_inputMaterialStepCollection
output / input steering
const TrackingGeometry & trackingGeometry() const
const TrackingGeometry * retrieveTrackingGeometry(const EventContext &ctx) const
StatusCode handleTrackingGeometry()
Retrieve the TrackingGeometry and its informations.
void assignLayerMaterialProperties(Trk::TrackingVolume &tvol, Trk::LayerMaterialMap *propSet)
create the LayerMaterialRecord */
ToolHandleArray< ILayerMaterialCreator > m_layerMaterialCreators
int m_layerMaterialScreenOutput
bool associateHit(const Trk::Layer &tvol, const Amg::Vector3D &pos, const Amg::Vector3D &layerHitPosition, double stepl, const Trk::Material &mat)
Associate the Step to the Layer.
ToolHandle< ILayerMaterialAnalyser > m_layerMaterialRecordAnalyser
~MaterialMapping()
Default Destructor.
StatusCode execute()
standard Athena-Algorithm method
ToolHandle< IExtrapolationEngine > m_extrapolationEngine
std::string m_mappingVolumeName
double m_etaCutOff
general steering
bool m_mapComposition
map the composition of the material
bool m_checkForEmptyHits
use extrapoaltion engine to check for empty hits
A common object to be contained by.
A small helper class looking at /proc/<PID>status.
The TrackingGeometry class is the owner of the constructed TrackingVolumes.
Full Volume description used in Tracking, it inherits from Volume to get the geometrical structure,...
Eigen::Matrix< double, 3, 1 > Vector3D
Ensure that the ATLAS eigen extensions are properly loaded.