ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::MaterialMapper Class Reference

Implementation of the class MaterialMapper. More...

#include <MaterialMapper.h>

Inheritance diagram for Trk::MaterialMapper:
Collaboration diagram for Trk::MaterialMapper:

Public Member Functions

 MaterialMapper (const std::string &, const std::string &, const IInterface *)
 AlgTool like constructor.
virtual ~MaterialMapper ()
 Virtual destructor.
StatusCode initialize ()
 AlgTool initialize method.
StatusCode finalize ()
 AlgTool finalize method.
void recordMaterialHit (const AssociatedMaterial &amhit, const Amg::Vector3D &projectedPosition) const
 Record material hit along the recording.
void recordLayerHit (const AssociatedMaterial &amhit, bool full=false) const
 Record material hit - if various hits per uniform layer are recorded, or if you want to record one full hit.
void recordSurfaceHit (const Amg::Vector2D &locpos, const AssociatedMaterial &amhit) const
 Record material hit on a surface.
void handle (const Incident &inc)
 Handle the incident from the incident service.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
 DeclareInterfaceID (IMaterialMapper, 1, 0)
 Creates the InterfaceID and interfaceID() method.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void finalizeVolumeHits (bool mapped=true) const
 Finalize the Volume Steps.
void finalizeLayerHits () const
 Finalize the SingleLayer Steps.
void finalizeSurfaceHits () const
 Finalize the SingleLayer Steps.
void bookValidationTree ()
 Validation : book the Tree.
VolumeTreeObjectvolumeTreeObject (const Layer *lay=0, const TrackingVolume *tvol=0) const
 find (&&,||) create a VolumeTreObject
LayerTreeObjectlayerTreeObject (const Layer &lay, bool full=false) const
 find (&&,||) create the LayerTreeObject
SurfaceTreeObjectsurfaceTreeObject (const Layer &lay) const
 find (&&,||) create the LayerTreeObject
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ServiceHandle< IIncidentSvc > m_incidentSvc
ServiceHandle< ITHistSvc > m_histSvc
int m_materialAssociationType
unsigned int m_maxMappingEvents
unsigned int m_processedEvents
std::string m_totalMaterialTree
TTree * m_validationTree
 The validation tree.
std::string m_validationTreeName
 validation tree name - to be accessed by this from root
std::string m_validationTreeDescription
 validation tree description - second argument in TTree
std::string m_validationTreeFolder
 stream/folder to for the TTree to be written out
int m_materialSteps
 number of update positions
float m_averageEta
 average eta
float m_averagePhi
 average ogu
float m_mappedPath
 total mapped path
float m_mappedPathInX0
 total mapped path in X0
float m_mappedPathInL0
 total mapped path in L0
float m_mappedPathRho
 total mapped path times rho
float m_mappedPathZARho
 total mapped path times (Z/A)*rho
float m_unmappedPathInX0
 total path in x0 in these events lost
int m_mapped [TRKDETDESCRTOOLS_MAXSTEPS] {}
 mapped or not mapped
float m_materialAccumPathInX0 [TRKDETDESCRTOOLS_MAXSTEPS] {}
 accumulated path length in x0
float m_materialAccumPathZARho [TRKDETDESCRTOOLS_MAXSTEPS] {}
 accumulated path length times (Z/A)*rho
float m_materialStepPath [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step path
float m_materialStepX0 [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step x0
float m_materialStepL0 [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step l0
float m_materialStepZ [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step Z
float m_materialStepA [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step A
float m_materialStepRho [TRKDETDESCRTOOLS_MAXSTEPS] {}
 step rho
float m_materialStepPositionX [TRKDETDESCRTOOLS_MAXSTEPS] {}
 x position of the material recording
float m_materialStepPositionY [TRKDETDESCRTOOLS_MAXSTEPS] {}
 y position of the material recording
float m_materialStepPositionZ [TRKDETDESCRTOOLS_MAXSTEPS] {}
 z position of the material recording
float m_materialStepPositionR [TRKDETDESCRTOOLS_MAXSTEPS] {}
 r value of the material recording
float m_materialProjPositionX [TRKDETDESCRTOOLS_MAXSTEPS] {}
 x position of the material recording when assigned to layer
float m_materialProjPositionY [TRKDETDESCRTOOLS_MAXSTEPS] {}
 y position of the material recording when assigned to layer
float m_materialProjPositionZ [TRKDETDESCRTOOLS_MAXSTEPS] {}
 z position of the material recording when assigned to layer
float m_materialProjPositionR [TRKDETDESCRTOOLS_MAXSTEPS] {}
 r value of the material recording when assigned to layer
float m_materialProjDistance [TRKDETDESCRTOOLS_MAXSTEPS] {}
 the distance to the projected hit
bool m_volumeValidation
std::string m_volumeTreePrefix
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTrees
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTreesUnmapped
bool m_layerValidation
std::string m_layerTreePrefix
std::map< const Trk::Layer *, LayerTreeObject * > m_layerTrees
std::map< const Trk::Layer *, LayerTreeObject * > m_layerFullTrees
bool m_surfaceValidation
std::string m_surfaceTreePrefix
std::map< const Trk::Layer *, SurfaceTreeObject * > m_surfaceTrees
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Implementation of the class MaterialMapper.

The correct material mapping can only be done with stiff tracks as the finalizeEvent method requires an eta,phi bin!

Author
Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 204 of file MaterialMapper.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MaterialMapper()

Trk::MaterialMapper::MaterialMapper ( const std::string & t,
const std::string & n,
const IInterface * p )

AlgTool like constructor.

Definition at line 20 of file MaterialMapper.cxx.

21: AthAlgTool(t,n,p),
22 m_incidentSvc("IncidentSvc", n),
23 m_histSvc("THistSvc", n),
25 m_maxMappingEvents(100000),
27 m_totalMaterialTree("TotalMaterial"),
28 m_validationTree(nullptr),
29 m_validationTreeName("MaterialMapper"),
30 m_validationTreeDescription("Material Effects Updator information"),
31 m_validationTreeFolder("/val/MaterialMapper"),
37 m_volumeTreePrefix("VolumeMaterial"),
39 m_layerTreePrefix("LayerMaterial_"),
41 m_surfaceTreePrefix("SurfaceMaterial_")
42{
43 declareInterface<IMaterialMapper>(this);
44
45 // The maximum mapping events to control the output file size
46 declareProperty("MaximumMappingEvents", m_maxMappingEvents);
47 // specification for the Validation Tree
48 declareProperty("ValidationTreeName", m_validationTreeName);
49 declareProperty("ValidationTreeDescription", m_validationTreeDescription);
50 declareProperty("ValidationTreeFolder", m_validationTreeFolder);
51 // the total material statistics
52 declareProperty("TotalMaterialTreeName", m_totalMaterialTree);
53 // declare the association type
54 declareProperty("MaterialAssociationType", m_materialAssociationType);
55 // the volume validation
56 declareProperty("TrackingVolumeValidation", m_volumeValidation);
57 declareProperty("TrackingVolumeTreePrefix", m_volumeTreePrefix);
58 // the layer Validation
59 declareProperty("DetailedLayerValidation", m_layerValidation);
60 declareProperty("DetailedLayerTreePrefix", m_layerTreePrefix);
61 // the surface Validation
62 declareProperty("DetailedSurfaceValidation", m_surfaceValidation);
63 declareProperty("DetailedSurfaceTreePrefix", m_surfaceTreePrefix);
64
65}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_validationTreeFolder
stream/folder to for the TTree to be written out
std::string m_layerTreePrefix
float m_unmappedPathInX0
total path in x0 in these events lost
float m_averageEta
average eta
float m_mappedPath
total mapped path
std::string m_surfaceTreePrefix
float m_averagePhi
average ogu
float m_mappedPathRho
total mapped path times rho
float m_mappedPathInL0
total mapped path in L0
ServiceHandle< ITHistSvc > m_histSvc
TTree * m_validationTree
The validation tree.
unsigned int m_processedEvents
ServiceHandle< IIncidentSvc > m_incidentSvc
std::string m_validationTreeDescription
validation tree description - second argument in TTree
float m_mappedPathZARho
total mapped path times (Z/A)*rho
unsigned int m_maxMappingEvents
int m_materialSteps
number of update positions
float m_mappedPathInX0
total mapped path in X0
std::string m_validationTreeName
validation tree name - to be accessed by this from root
std::string m_volumeTreePrefix
std::string m_totalMaterialTree

◆ ~MaterialMapper()

Trk::MaterialMapper::~MaterialMapper ( )
virtual

Virtual destructor.

Definition at line 68 of file MaterialMapper.cxx.

69{
70 // memory cleanup
72 auto volTreeIter = m_volumeTrees.begin();
73 auto endVolTreeIter = m_volumeTrees.end();
74 for ( ; volTreeIter != endVolTreeIter; delete (volTreeIter->second), ++volTreeIter) {}
75 }
76
78 // delete the layer hit TTree
79 auto layTreeIter = m_layerTrees.begin();
80 auto endLayTreeIter = m_layerTrees.end();
81 for ( ; layTreeIter != endLayTreeIter; delete (layTreeIter->second), ++layTreeIter) {}
82 // delete the layer per event TTree
83 layTreeIter = m_layerFullTrees.begin();
84 endLayTreeIter = m_layerFullTrees.end();
85 for ( ; layTreeIter != endLayTreeIter; delete (layTreeIter->second), ++layTreeIter) {}
86 }
87
89 // finalize the Hit Tree
90 auto surfTreeIter = m_surfaceTrees.begin();
91 auto endSurfTreeIter = m_surfaceTrees.end();
92 for ( ; surfTreeIter != endSurfTreeIter; delete (surfTreeIter->second), ++surfTreeIter) {}
93 }
94}
std::map< const Trk::Layer *, LayerTreeObject * > m_layerFullTrees
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTrees
std::map< const Trk::Layer *, LayerTreeObject * > m_layerTrees
std::map< const Trk::Layer *, SurfaceTreeObject * > m_surfaceTrees

Member Function Documentation

◆ bookValidationTree()

void Trk::MaterialMapper::bookValidationTree ( )
private

Validation : book the Tree.

Definition at line 616 of file MaterialMapper.cxx.

617{
618
619 ATH_MSG_INFO( "Booking the Validation Tree ... " );
620
621 // (1) Main MaterialMapper TTree
622 // ------------- validation section ------------------------------------------
624
625 // position coordinates of the update
626 m_validationTree->Branch("Eta", &m_averageEta, "averageEta/F");
627 m_validationTree->Branch("Phi", &m_averagePhi, "averagePhiF");
628 m_validationTree->Branch("Path", &m_mappedPath, "path/F");
629 m_validationTree->Branch("PathInX0", &m_mappedPathInX0, "pathInX0/F");
630 m_validationTree->Branch("PathInL0", &m_mappedPathInL0, "pathInL0/F");
631 m_validationTree->Branch("PathRho", &m_mappedPathRho, "pathRho/F");
632 m_validationTree->Branch("PathZARho", &m_mappedPathZARho, "pathZARho/F");
633 m_validationTree->Branch("UnmappedPathInX0", &m_unmappedPathInX0, "unmappedPathInX0/F");
634 m_validationTree->Branch("MaterialSteps", &m_materialSteps, "steps/I");
635 m_validationTree->Branch("Mapped", m_mapped, "mapped[steps]/I");
636 m_validationTree->Branch("MaterialAccumPathInX0", m_materialAccumPathInX0, "materialAccumPinX0[steps]/F");
637 m_validationTree->Branch("MaterialAccumPathZARho", m_materialAccumPathZARho, "materialAccumPZARho[steps]/F");
638 m_validationTree->Branch("MaterialStepPath", m_materialStepPath, "materialStepPath[steps]/F");
639 m_validationTree->Branch("MaterialStepX0", m_materialStepX0, "materialStepX0[steps]/F");
640 m_validationTree->Branch("MaterialStepL0", m_materialStepL0, "materialStepL0[steps]/F");
641 m_validationTree->Branch("MaterialStepZ", m_materialStepZ, "materialStepZ[steps]/F");
642 m_validationTree->Branch("MaterialStepA", m_materialStepA, "materialStepA[steps]/F");
643 m_validationTree->Branch("MaterialStepRho", m_materialStepRho, "materialStepRho[steps]/F");
644 m_validationTree->Branch("MaterialStepPositionX", m_materialStepPositionX , "materialStepX[steps]/F");
645 m_validationTree->Branch("MaterialStepPositionY", m_materialStepPositionY , "materialStepY[steps]/F");
646 m_validationTree->Branch("MaterialStepPositionZ", m_materialStepPositionZ , "materialStepZ[steps]/F");
647 m_validationTree->Branch("MaterialStepPositionR", m_materialStepPositionR , "materialStepR[steps]/F");
648 m_validationTree->Branch("MaterialProjPositionX", m_materialProjPositionX , "materialProjX[steps]/F");
649 m_validationTree->Branch("MaterialProjPositionY", m_materialProjPositionY , "materialProjY[steps]/F");
650 m_validationTree->Branch("MaterialProjPositionZ", m_materialProjPositionZ , "materialProjZ[steps]/F");
651 m_validationTree->Branch("MaterialProjPositionR", m_materialProjPositionR , "materialProjR[steps]/F");
652 m_validationTree->Branch("MaterialProjDistance", m_materialProjDistance , "materialProjD[steps]/F");
653
654 // now register the Tree
655 if (m_histSvc->regTree(m_validationTreeFolder.c_str(), m_validationTree).isFailure()) {
656 ATH_MSG_ERROR("initialize() Could not register the validation Tree -> Switching ValidationMode Off !" );
657 delete m_validationTree; m_validationTree = nullptr;
658 return;
659 }
660
661 ATH_MSG_INFO( " ... successful." );
662
663}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
float m_materialProjPositionY[TRKDETDESCRTOOLS_MAXSTEPS]
y position of the material recording when assigned to layer
float m_materialStepPositionY[TRKDETDESCRTOOLS_MAXSTEPS]
y position of the material recording
float m_materialAccumPathInX0[TRKDETDESCRTOOLS_MAXSTEPS]
accumulated path length in x0
float m_materialStepX0[TRKDETDESCRTOOLS_MAXSTEPS]
step x0
float m_materialProjPositionX[TRKDETDESCRTOOLS_MAXSTEPS]
x position of the material recording when assigned to layer
float m_materialStepZ[TRKDETDESCRTOOLS_MAXSTEPS]
step Z
float m_materialStepPositionX[TRKDETDESCRTOOLS_MAXSTEPS]
x position of the material recording
float m_materialProjDistance[TRKDETDESCRTOOLS_MAXSTEPS]
the distance to the projected hit
int m_mapped[TRKDETDESCRTOOLS_MAXSTEPS]
mapped or not mapped
float m_materialStepRho[TRKDETDESCRTOOLS_MAXSTEPS]
step rho
float m_materialAccumPathZARho[TRKDETDESCRTOOLS_MAXSTEPS]
accumulated path length times (Z/A)*rho
float m_materialProjPositionR[TRKDETDESCRTOOLS_MAXSTEPS]
r value of the material recording when assigned to layer
float m_materialStepPositionR[TRKDETDESCRTOOLS_MAXSTEPS]
r value of the material recording
float m_materialStepA[TRKDETDESCRTOOLS_MAXSTEPS]
step A
float m_materialStepPath[TRKDETDESCRTOOLS_MAXSTEPS]
step path
float m_materialStepL0[TRKDETDESCRTOOLS_MAXSTEPS]
step l0
float m_materialProjPositionZ[TRKDETDESCRTOOLS_MAXSTEPS]
z position of the material recording when assigned to layer
float m_materialStepPositionZ[TRKDETDESCRTOOLS_MAXSTEPS]
z position of the material recording

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ DeclareInterfaceID()

Trk::IMaterialMapper::DeclareInterfaceID ( IMaterialMapper ,
1 ,
0  )
inherited

Creates the InterfaceID and interfaceID() method.

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode Trk::MaterialMapper::finalize ( )

AlgTool finalize method.

Definition at line 114 of file MaterialMapper.cxx.

115{
116 ATH_MSG_INFO( "finalize() successful" );
117 return StatusCode::SUCCESS;
118}

◆ finalizeLayerHits()

void Trk::MaterialMapper::finalizeLayerHits ( ) const
private

Finalize the SingleLayer Steps.

Definition at line 294 of file MaterialMapper.cxx.

295{
296
297 ATH_MSG_VERBOSE( "finalizeEvent() on Layer hits " );
298
299 for (size_t iltm = 0; iltm < 2; ++iltm) {
300 // loop over all layer Tree objects and fill them
301 auto layObjIter = iltm ? m_layerFullTrees.begin() : m_layerTrees.begin();
302 auto endIter = iltm ? m_layerFullTrees.end() : m_layerTrees.end();
303 // do the loop
304 for ( ; layObjIter != endIter; ++layObjIter ) {
305
306 Trk::LayerTreeObject* layTreeObj = layObjIter->second;
307
308 if (!layTreeObj) continue;
309
310 // get the number of single hits
311 int hits = (*layTreeObj).densedHits;
312
313 if ((*layTreeObj).pathInX0 > 0.) {
314 if (hits>1) {
315 (*layTreeObj).densedHitX /= hits;
316 (*layTreeObj).densedHitY /= hits;
317 (*layTreeObj).densedHitZ /= hits;
318 (*layTreeObj).densedHitR /= hits;
319 (*layTreeObj).densedHitPhi /= hits;
320 (*layTreeObj).densedHitTheta /= hits;
321 (*layTreeObj).correctionFactor /= hits;
322 (*layTreeObj).A /= (*layTreeObj).rho;
323 (*layTreeObj).Z /= (*layTreeObj).rho;
324 (*layTreeObj).rho /= (*layTreeObj).path;
325 }
326 // fill the layer Tree Object
327 (*layTreeObj).tree->Fill();
328 }
329 // reset
330 (*layTreeObj).layerHits = 0;
331 (*layTreeObj).path = 0.;
332 (*layTreeObj).pathInX0 = 0.;
333 (*layTreeObj).pathInL0 = 0.;
334 (*layTreeObj).densedHits = 0;
335 (*layTreeObj).densedHitX = 0.;
336 (*layTreeObj).densedHitY = 0.;
337 (*layTreeObj).densedHitZ = 0.;
338 (*layTreeObj).densedHitR = 0.;
339 (*layTreeObj).densedHitPhi = 0.;
340 (*layTreeObj).densedHitTheta = 0.;
341 (*layTreeObj).correctionFactor = 0.;
342 (*layTreeObj).A = 0.;
343 (*layTreeObj).Z = 0.;
344 (*layTreeObj).rho = 0.;
345 }
346 }
347}
#define ATH_MSG_VERBOSE(x)

◆ finalizeSurfaceHits()

void Trk::MaterialMapper::finalizeSurfaceHits ( ) const
private

Finalize the SingleLayer Steps.

Definition at line 381 of file MaterialMapper.cxx.

382{
383
384 ATH_MSG_VERBOSE( "finalizeEvent() on Surface hits " );
385
386 // loop over all layer Tree objects and fill them
387 auto surfObjIter = m_surfaceTrees.begin();
388 auto endIter = m_surfaceTrees.end();
389 // do the loop
390 for ( ; surfObjIter != endIter; ++surfObjIter ) {
391 Trk::SurfaceTreeObject* surfTreeObj = surfObjIter->second;
392 // get the number of single hits
393 int hits = (*surfTreeObj).surfaceHits;
394 // fill only if hits have been there
395 if ((*surfTreeObj).pathInX0 > 0.) {
396 if (hits>1) {
397 (*surfTreeObj).loc1 /= hits;
398 (*surfTreeObj).loc2 /= hits;
399 (*surfTreeObj).eta /= hits;
400 (*surfTreeObj).correctionFactor /= hits;
401 (*surfTreeObj).A /= hits;
402 (*surfTreeObj).Z /= hits;
403 (*surfTreeObj).rho /= hits;
404 }
405 // fill the tree
406 (*surfTreeObj).tree->Fill();
407 }
408 // reset
409 (*surfTreeObj).loc1 = 0.;
410 (*surfTreeObj).loc2 = 0.;
411 (*surfTreeObj).eta = 0.;
412
413 (*surfTreeObj).correctionFactor = 0.;
414 (*surfTreeObj).path = 0.;
415 (*surfTreeObj).pathInX0 = 0.;
416 (*surfTreeObj).pathInL0 = 0.;
417 (*surfTreeObj).rho = 0.;
418
419 (*surfTreeObj).surfaceHits = 0;
420
421 }
422}

◆ finalizeVolumeHits()

void Trk::MaterialMapper::finalizeVolumeHits ( bool mapped = true) const
private

Finalize the Volume Steps.

Definition at line 206 of file MaterialMapper.cxx.

207{
208 ATH_MSG_VERBOSE( "finalizeEvent() on Volume hits " );
209
210 auto volTreeIter = mapped ? m_volumeTrees.begin() : m_volumeTreesUnmapped.begin();
211 auto endVolTreeIter = mapped ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
212
213 // do the loop
214 for ( ; volTreeIter != endVolTreeIter; ++volTreeIter ) {
215
216 Trk::VolumeTreeObject* volTreeObj = volTreeIter->second;
217
218 if (!volTreeObj) continue;
219
220 if ((*volTreeObj).path > 0.) {
221 // spatial mapping
222 (*volTreeObj).eta = m_averageEta;
223 (*volTreeObj).phi = m_averagePhi;
224 // fill the volume Tree Object
225 (*volTreeObj).tree->Fill();
226 }
227 // reset
228 (*volTreeObj).eta = 0.;
229 (*volTreeObj).phi = 0.;
230 (*volTreeObj).path = 0.;
231 (*volTreeObj).pathInX0 = 0.;
232 (*volTreeObj).pathInL0 = 0.;
233 (*volTreeObj).pathZARho = 0.;
234
235 }
236}
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTreesUnmapped
std::vector< std::string > mapped
Definition hcg.cxx:54

◆ handle()

void Trk::MaterialMapper::handle ( const Incident & inc)

Handle the incident from the incident service.

Definition at line 583 of file MaterialMapper.cxx.

583 {
584 // check the incident type
585 if ( inc.type() == IncidentType::EndEvent && m_materialSteps){
586 // check if the hit collection already contains:
587 ATH_MSG_VERBOSE("EndEvent incident caught, finalize histogramns");
588 // average Eta / Phi
591 // (a) the volume validation
592 finalizeVolumeHits(true); // trees with mapped hits
593 finalizeVolumeHits(false); // trees with unmapped hits
594 // (b) the layer validation
596 // (c) the surface validation (reference material)
598 // fill the main TTree & reset
599 m_validationTree->Fill();
600 // initialize the eta/phi
601 m_averageEta = 0.;
602 m_averagePhi = 0.;
603 // initialize the rest
604 m_materialSteps = 0;
605 m_mappedPath = 0.;
606 m_mappedPathInX0 = 0.;
607 m_mappedPathInL0 = 0.;
608 m_mappedPathRho = 0.;
609 m_mappedPathZARho = 0.;
610 // increate counter
612 }
613 }
void finalizeLayerHits() const
Finalize the SingleLayer Steps.
void finalizeVolumeHits(bool mapped=true) const
Finalize the Volume Steps.
void finalizeSurfaceHits() const
Finalize the SingleLayer Steps.

◆ initialize()

StatusCode Trk::MaterialMapper::initialize ( )

AlgTool initialize method.

Definition at line 98 of file MaterialMapper.cxx.

99{
100
101 // Athena/Gaudi framework
102 ATH_CHECK( m_incidentSvc.retrieve() );
103 ATH_CHECK( m_histSvc.retrieve() );
104
105 // register to the incident service: EndEvent for histogram filling and reset
106 m_incidentSvc->addListener( this, IncidentType::EndEvent);
107
108 // book the Tree
110 return StatusCode::SUCCESS;
111}
#define ATH_CHECK
Evaluate an expression and check for errors.
void bookValidationTree()
Validation : book the Tree.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ layerTreeObject()

Trk::LayerTreeObject * Trk::MaterialMapper::layerTreeObject ( const Layer & lay,
bool full = false ) const
private

find (&&,||) create the LayerTreeObject

Definition at line 474 of file MaterialMapper.cxx.

475{
476 if (!lay.layerIndex().value()) return nullptr;
477
478 // try to find the histogram
479
480 Trk::LayerTreeObject* layTreeObj = nullptr;
481
482 if (full) {
483 auto it = m_layerFullTrees.find(&lay);
484 if (it != m_layerFullTrees.end()) {
485 return it->second;
486 }
487 }
488 else {
489 auto it = m_layerTrees.find(&lay);
490 if (it != m_layerTrees.end()) {
491 return it->second;
492 }
493 }
494
495 {
496 // check if it is a boundary MaterialLayer
497 const Trk::MaterialLayer* mLayer = dynamic_cast<const Trk::MaterialLayer*>(&lay);
498 if (mLayer)
499 ATH_MSG_INFO("MaterialLayer from BoundarySurface detected.");
500 // get the TrackingVolume
501 const Trk::TrackingVolume* enclosingVolume = lay.enclosingTrackingVolume();
502 TString tvolName = (enclosingVolume) ? enclosingVolume->volumeName() : "BoundaryLayers";
503 tvolName.ReplaceAll("::","_");
504
505 TString treeName = tvolName;
506 treeName += "_";
508
509 TString layerType = (lay.surfaceRepresentation().type() == Trk::SurfaceType::Cylinder) ?
510 "CylinderLayer_" : "DiscLayer_";
511 if (full) treeName += "full_";
512 treeName += layerType;
513 if (mLayer) treeName += "boundary_";
514 treeName += lay.layerIndex().value();
515
516 TString treeTitle = "TrackingVolume :";
517 treeTitle += tvolName;
518
519 TString treeRegName = "/val/";
520 treeRegName += treeName;
521
522 ATH_MSG_INFO( "No Tree found for Layer " << lay.layerIndex().value() << " in Volume '" << tvolName << "'.");
523 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
524
525 layTreeObj = new Trk::LayerTreeObject(treeName, treeTitle);
526 if (full) m_layerFullTrees.insert(std::make_pair(&lay,layTreeObj));
527 else m_layerTrees.insert(std::make_pair(&lay,layTreeObj));
528
529 // now register the Tree
530 if (m_histSvc->regTree(treeRegName.Data(), (*layTreeObj).tree).isFailure()) {
531 ATH_MSG_ERROR( "initialize() Could not register the validation Tree -> Switching Tree output for this layer off !" );
532 delete layTreeObj; layTreeObj = nullptr;
533 }
534
535 }
536
537 return layTreeObj;
538}
const std::string & volumeName() const
Returns the VolumeName - for debug reason, might be depreciated later.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ recordLayerHit()

void Trk::MaterialMapper::recordLayerHit ( const AssociatedMaterial & amhit,
bool full = false ) const
virtual

Record material hit - if various hits per uniform layer are recorded, or if you want to record one full hit.

Implements Trk::IMaterialMapper.

Definition at line 239 of file MaterialMapper.cxx.

240{
241
243
244 const Trk::Layer* lay = amhit.associatedLayer();
245 if (m_layerValidation && lay) {
246 // try to find the histogram
247 Trk::LayerTreeObject* layTreeObj = layerTreeObject(*lay,full);
248 if (layTreeObj
249 && (*layTreeObj).layerHits < TRKDETDESCRTOOLS_MAXLAYERHITS
250 && amhit.steplengthInX0() > 0.)
251 {
252
253 const Amg::Vector3D& pos = amhit.materialPosition();
254
255 // hit positions
256 double posX = pos.x();
257 double posY = pos.y();
258 double posZ = pos.z();
259 double posR = pos.perp();
260 double posEta = pos.eta();
261
262 // fill the hit position --------------------
263 (*layTreeObj).hitPositionX[(*layTreeObj).layerHits] = posX;
264 (*layTreeObj).hitPositionY[(*layTreeObj).layerHits] = posY;
265 (*layTreeObj).hitPositionZ[(*layTreeObj).layerHits] = posZ;
266 (*layTreeObj).hitPositionR[(*layTreeObj).layerHits] = posR;
267 (*layTreeObj).hitPositionEta[(*layTreeObj).layerHits] = posEta;
268
269 // increase the layer Hits
270 ++(*layTreeObj).layerHits;
271 ++(*layTreeObj).densedHits;
272
273 // fill the densed Hit position ---------------
274 (*layTreeObj).densedHitX += posX;
275 (*layTreeObj).densedHitY += posY;
276 (*layTreeObj).densedHitZ += posZ;
277 (*layTreeObj).densedHitR += posR;
278 (*layTreeObj).densedHitPhi += pos.phi();
279 (*layTreeObj).densedHitTheta += pos.theta();
280
281 // fill the correction factor ------------------
282 (*layTreeObj).correctionFactor += amhit.correctionFactor();
283 (*layTreeObj).path += amhit.steplength();
284 (*layTreeObj).pathInX0 += amhit.steplengthInX0();
285 (*layTreeObj).pathInL0 += amhit.steplengthInL0();
286 (*layTreeObj).A += amhit.A() * amhit.rho() * amhit.steplength();
287 (*layTreeObj).Z += amhit.Z() * amhit.rho() * amhit.steplength();
288 (*layTreeObj).rho += amhit.rho() * amhit.steplength();
289
290 }
291 }
292}
#define TRKDETDESCRTOOLS_MAXLAYERHITS
LayerTreeObject * layerTreeObject(const Layer &lay, bool full=false) const
find (&&,||) create the LayerTreeObject
Eigen::Matrix< double, 3, 1 > Vector3D

◆ recordMaterialHit()

void Trk::MaterialMapper::recordMaterialHit ( const AssociatedMaterial & amhit,
const Amg::Vector3D & projectedPosition ) const
virtual

Record material hit along the recording.

Implements Trk::IMaterialMapper.

Definition at line 120 of file MaterialMapper.cxx.

121{
122
124
125 // ----------------------------------- Recording Hits section --------------------------------
126 const Amg::Vector3D& position = amhit.materialPosition();
127
128 // get the tracking volume
129 const Trk::TrackingVolume* tvol = amhit.associatedTrackingVolume();
130 const Trk::Layer* lay = amhit.associatedLayer();
131
132 if (!tvol) {
133 ATH_MSG_WARNING("Could not associate TrackingVolume to material step!");
134 return;
135 }
136
137 // ----------------------------------- The Material Validation code --------------------------
138 const Trk::TrackingVolume* itvol = tvol;
139 while (itvol) {
140 // get the volume tree object
141 ATH_MSG_VERBOSE( "getting volTreeObj for: " << itvol->volumeName() << " at: " << itvol );
142 Trk::VolumeTreeObject* volTreeObj = volumeTreeObject(lay,itvol);
143 if (volTreeObj) {
144 // add the quantities
145 (*volTreeObj).path += amhit.steplength();
146 (*volTreeObj).pathInX0 += amhit.steplengthInX0();
147 (*volTreeObj).pathInL0 += amhit.steplengthInL0();
148 if(amhit.A() != 0.0) {
149 (*volTreeObj).pathZARho += (amhit.Z()/amhit.A())*amhit.rho()*amhit.steplength();
150 }
151 } else
152 ATH_MSG_WARNING( "Cannot find/create VolumeTreeObject for volume '" << itvol->volumeName() << "'." );
153 itvol = itvol->getMotherVolume();
154 if (itvol) ATH_MSG_VERBOSE( "motherVolume found: " << itvol->volumeName() );
155 }
156
157 // -------------------------------- main tree section -----------------------------------------
158 // eta / phi
159 m_averageEta += position.eta();
160 m_averagePhi += position.phi();
161 // effectively crossed Z/A*rho
162 double steplength = amhit.steplength();
163 // fill the variables for spatial information & event characteristics
164 if (lay) {
165 m_mappedPath += steplength;
166 m_mappedPathInX0 += amhit.steplengthInX0();
167 m_mappedPathInL0 += amhit.steplengthInL0();
168 m_mappedPathRho += amhit.rho()*steplength;
169 if(amhit.A() != 0.0) {
170 m_mappedPathZARho += (amhit.Z()/amhit.A())*amhit.rho()*steplength;
171 }
172 ATH_MSG_VERBOSE("[ MaterialMapper ] Accumulated Path in Rho (*Z/A) = " << m_mappedPathRho << " ( " << m_mappedPathZARho << " )");
173 } else
174 m_unmappedPathInX0 += amhit.steplengthInX0();
175
176 // mapping information
177 m_mapped[m_materialSteps] = lay ? lay->layerIndex().value() : 0;
178 // the position & step information
182 m_materialStepX0[m_materialSteps] = amhit.x0();
183 m_materialStepL0[m_materialSteps] = amhit.l0();
184 m_materialStepA[m_materialSteps] = amhit.A();
185 m_materialStepZ[m_materialSteps] = amhit.Z();
186 m_materialStepRho[m_materialSteps] = amhit.rho();
190 m_materialStepPositionR[m_materialSteps] = position.perp();
191 // record the projected position as well
192 m_materialProjPositionX[m_materialSteps] = projectedPosition.x();
193 m_materialProjPositionY[m_materialSteps] = projectedPosition.y();
194 m_materialProjPositionZ[m_materialSteps] = projectedPosition.z();
195 m_materialProjPositionR[m_materialSteps] = projectedPosition.perp();
196 m_materialProjDistance[m_materialSteps] = (position-projectedPosition).mag();
197 // and increase the number of steps
199
200
201 // record the layer hit
203}
Scalar mag() const
mag method
#define ATH_MSG_WARNING(x)
int value() const
layerIndex expressed in an integer
Definition LayerIndex.h:71
const LayerIndex & layerIndex() const
get the layerIndex
void recordLayerHit(const AssociatedMaterial &amhit, bool full=false) const
Record material hit - if various hits per uniform layer are recorded, or if you want to record one fu...
VolumeTreeObject * volumeTreeObject(const Layer *lay=0, const TrackingVolume *tvol=0) const
find (&&,||) create a VolumeTreObject
const TrackingVolume * getMotherVolume() const
Return the MotherVolume - if it exists.

◆ recordSurfaceHit()

void Trk::MaterialMapper::recordSurfaceHit ( const Amg::Vector2D & locpos,
const AssociatedMaterial & amhit ) const
virtual

Record material hit on a surface.

Implements Trk::IMaterialMapper.

Definition at line 350 of file MaterialMapper.cxx.

352{
353
355
356 const Trk::Layer* lay = amhit.associatedLayer();
357 if (m_surfaceValidation && lay) {
358 // try to find the histogram
359 Trk::SurfaceTreeObject* surfTreeObj = surfaceTreeObject(*lay);
360 // now fill
361 if (surfTreeObj) {
362 // fill it
363 (*surfTreeObj).loc1 += locpos[0];
364 (*surfTreeObj).loc2 += locpos[1];
365 (*surfTreeObj).eta += amhit.materialPosition().eta();
366 (*surfTreeObj).correctionFactor += amhit.correctionFactor();
367 (*surfTreeObj).path += amhit.steplength();
368 (*surfTreeObj).pathInX0 += amhit.steplengthInX0();
369 (*surfTreeObj).pathInL0 += amhit.steplengthInL0();
370 (*surfTreeObj).A += amhit.A()*amhit.steplength()*amhit.rho();
371 (*surfTreeObj).Z += amhit.Z()*amhit.steplength()*amhit.rho();
372 (*surfTreeObj).rho += amhit.rho()*amhit.steplength();
373 // increase the surface hits
374 ++(*surfTreeObj).surfaceHits;
375
376 }
377 }
378}
SurfaceTreeObject * surfaceTreeObject(const Layer &lay) const
find (&&,||) create the LayerTreeObject

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ surfaceTreeObject()

Trk::SurfaceTreeObject * Trk::MaterialMapper::surfaceTreeObject ( const Layer & lay) const
private

find (&&,||) create the LayerTreeObject

Definition at line 541 of file MaterialMapper.cxx.

542{
543 // try to find the histogram
544 auto endIter = m_surfaceTrees.end();
545 auto findIter = m_surfaceTrees.end();
546
547 Trk::SurfaceTreeObject* surfTreeObj = nullptr;
548
549 findIter = m_surfaceTrees.find(&lay);
550 if (findIter == endIter) {
551 // get the TrackingVolume
552 const Trk::TrackingVolume* enclosingVolume = lay.enclosingTrackingVolume();
553 TString volumeName = (enclosingVolume) ? enclosingVolume->volumeName() : "Unknown";
554
556 treeName += lay.layerIndex().value();
557
558 TString treeTitle = "TrackingVolume :";
559 treeTitle += volumeName;
560
561 TString treeRegName = "/val/";
562 treeRegName += treeName;
563
564 ATH_MSG_INFO( "No Tree found for Layer " << lay.layerIndex().value()
565 << " in Volume '" << volumeName << "'." );
566 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
567
568 surfTreeObj = new Trk::SurfaceTreeObject(treeName, treeTitle);
569 m_surfaceTrees.insert(std::make_pair(&lay,surfTreeObj));
570
571 // now register the Tree
572 if (m_histSvc->regTree(treeRegName.Data(), (*surfTreeObj).tree).isFailure()) {
573 ATH_MSG_INFO( "initialize() Could not register the validation Tree -> Switching Tree output for this surface off !" );
574 delete surfTreeObj; surfTreeObj = nullptr;
575 }
576
577 } else // a tree is found
578 surfTreeObj = findIter->second;
579 return surfTreeObj;
580}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

◆ volumeTreeObject()

Trk::VolumeTreeObject * Trk::MaterialMapper::volumeTreeObject ( const Layer * lay = 0,
const TrackingVolume * tvol = 0 ) const
private

find (&&,||) create a VolumeTreObject

Definition at line 425 of file MaterialMapper.cxx.

426{
427 // try to find the histogram
428 auto endIter = lay ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
429 auto findIter = lay ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
430
431 Trk::VolumeTreeObject* tvolTreeObj = nullptr;
432
433 findIter = lay ? m_volumeTrees.find(tvol) : m_volumeTreesUnmapped.find(tvol);
434
435 if (findIter == endIter) {
436
437 TString tvolName = tvol->volumeName();
438 tvolName.ReplaceAll("::","_");
439
440 TString treeName = tvolName;
441 treeName += "_";
443 if (!lay) treeName += "_UNMAPPED";
444
445 TString treeTitle = "TrackingVolume : ";
446 treeTitle += tvolName;
447 if (!lay) treeTitle += " - UNMAPPED";
448
449 TString treeRegName = "/val/";
450 treeRegName += treeName;
451
452 ATH_MSG_INFO( "No Tree found for " << treeTitle );
453 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
454
455 tvolTreeObj = new Trk::VolumeTreeObject(treeName, treeTitle);
456 if (lay)
457 m_volumeTrees.insert(std::make_pair(tvol,tvolTreeObj));
458 else
459 m_volumeTreesUnmapped.insert(std::make_pair(tvol,tvolTreeObj));
460
461 // now register the Tree
462 if (m_histSvc->regTree(treeRegName.Data(), (*tvolTreeObj).tree).isFailure()) {
463 ATH_MSG_ERROR( "initialize() Could not register the validation Tree -> Switching Tree output for this volume off !" );
464 delete tvolTreeObj; tvolTreeObj = nullptr;
465 }
466
467 } else // a tree is found
468 tvolTreeObj = findIter->second;
469
470 return tvolTreeObj;
471}

Member Data Documentation

◆ m_averageEta

float Trk::MaterialMapper::m_averageEta
mutableprivate

average eta

Definition at line 280 of file MaterialMapper.h.

◆ m_averagePhi

float Trk::MaterialMapper::m_averagePhi
mutableprivate

average ogu

Definition at line 281 of file MaterialMapper.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> Trk::MaterialMapper::m_histSvc
private

Definition at line 261 of file MaterialMapper.h.

◆ m_incidentSvc

ServiceHandle<IIncidentSvc> Trk::MaterialMapper::m_incidentSvc
private

Definition at line 260 of file MaterialMapper.h.

◆ m_layerFullTrees

std::map< const Trk::Layer*, LayerTreeObject* > Trk::MaterialMapper::m_layerFullTrees
mutableprivate

Definition at line 317 of file MaterialMapper.h.

◆ m_layerTreePrefix

std::string Trk::MaterialMapper::m_layerTreePrefix
private

Definition at line 315 of file MaterialMapper.h.

◆ m_layerTrees

std::map< const Trk::Layer*, LayerTreeObject* > Trk::MaterialMapper::m_layerTrees
mutableprivate

Definition at line 316 of file MaterialMapper.h.

◆ m_layerValidation

bool Trk::MaterialMapper::m_layerValidation
private

Definition at line 314 of file MaterialMapper.h.

◆ m_mapped

int Trk::MaterialMapper::m_mapped[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

mapped or not mapped

Definition at line 288 of file MaterialMapper.h.

288{};

◆ m_mappedPath

float Trk::MaterialMapper::m_mappedPath
mutableprivate

total mapped path

Definition at line 282 of file MaterialMapper.h.

◆ m_mappedPathInL0

float Trk::MaterialMapper::m_mappedPathInL0
mutableprivate

total mapped path in L0

Definition at line 284 of file MaterialMapper.h.

◆ m_mappedPathInX0

float Trk::MaterialMapper::m_mappedPathInX0
mutableprivate

total mapped path in X0

Definition at line 283 of file MaterialMapper.h.

◆ m_mappedPathRho

float Trk::MaterialMapper::m_mappedPathRho
mutableprivate

total mapped path times rho

Definition at line 285 of file MaterialMapper.h.

◆ m_mappedPathZARho

float Trk::MaterialMapper::m_mappedPathZARho
mutableprivate

total mapped path times (Z/A)*rho

Definition at line 286 of file MaterialMapper.h.

◆ m_materialAccumPathInX0

float Trk::MaterialMapper::m_materialAccumPathInX0[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

accumulated path length in x0

Definition at line 289 of file MaterialMapper.h.

289{};

◆ m_materialAccumPathZARho

float Trk::MaterialMapper::m_materialAccumPathZARho[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

accumulated path length times (Z/A)*rho

Definition at line 290 of file MaterialMapper.h.

290{};

◆ m_materialAssociationType

int Trk::MaterialMapper::m_materialAssociationType
private

Definition at line 263 of file MaterialMapper.h.

◆ m_materialProjDistance

float Trk::MaterialMapper::m_materialProjDistance[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

the distance to the projected hit

Definition at line 305 of file MaterialMapper.h.

305{};

◆ m_materialProjPositionR

float Trk::MaterialMapper::m_materialProjPositionR[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

r value of the material recording when assigned to layer

Definition at line 304 of file MaterialMapper.h.

304{};

◆ m_materialProjPositionX

float Trk::MaterialMapper::m_materialProjPositionX[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

x position of the material recording when assigned to layer

Definition at line 301 of file MaterialMapper.h.

301{};

◆ m_materialProjPositionY

float Trk::MaterialMapper::m_materialProjPositionY[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

y position of the material recording when assigned to layer

Definition at line 302 of file MaterialMapper.h.

302{};

◆ m_materialProjPositionZ

float Trk::MaterialMapper::m_materialProjPositionZ[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

z position of the material recording when assigned to layer

Definition at line 303 of file MaterialMapper.h.

303{};

◆ m_materialStepA

float Trk::MaterialMapper::m_materialStepA[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step A

Definition at line 295 of file MaterialMapper.h.

295{};

◆ m_materialStepL0

float Trk::MaterialMapper::m_materialStepL0[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step l0

Definition at line 293 of file MaterialMapper.h.

293{};

◆ m_materialStepPath

float Trk::MaterialMapper::m_materialStepPath[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step path

Definition at line 291 of file MaterialMapper.h.

291{};

◆ m_materialStepPositionR

float Trk::MaterialMapper::m_materialStepPositionR[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

r value of the material recording

Definition at line 300 of file MaterialMapper.h.

300{};

◆ m_materialStepPositionX

float Trk::MaterialMapper::m_materialStepPositionX[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

x position of the material recording

Definition at line 297 of file MaterialMapper.h.

297{};

◆ m_materialStepPositionY

float Trk::MaterialMapper::m_materialStepPositionY[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

y position of the material recording

Definition at line 298 of file MaterialMapper.h.

298{};

◆ m_materialStepPositionZ

float Trk::MaterialMapper::m_materialStepPositionZ[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

z position of the material recording

Definition at line 299 of file MaterialMapper.h.

299{};

◆ m_materialStepRho

float Trk::MaterialMapper::m_materialStepRho[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step rho

Definition at line 296 of file MaterialMapper.h.

296{};

◆ m_materialSteps

int Trk::MaterialMapper::m_materialSteps
mutableprivate

number of update positions

Definition at line 279 of file MaterialMapper.h.

◆ m_materialStepX0

float Trk::MaterialMapper::m_materialStepX0[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step x0

Definition at line 292 of file MaterialMapper.h.

292{};

◆ m_materialStepZ

float Trk::MaterialMapper::m_materialStepZ[TRKDETDESCRTOOLS_MAXSTEPS] {}
mutableprivate

step Z

Definition at line 294 of file MaterialMapper.h.

294{};

◆ m_maxMappingEvents

unsigned int Trk::MaterialMapper::m_maxMappingEvents
private

Definition at line 266 of file MaterialMapper.h.

◆ m_processedEvents

unsigned int Trk::MaterialMapper::m_processedEvents
mutableprivate

Definition at line 267 of file MaterialMapper.h.

◆ m_surfaceTreePrefix

std::string Trk::MaterialMapper::m_surfaceTreePrefix
private

Definition at line 321 of file MaterialMapper.h.

◆ m_surfaceTrees

std::map< const Trk::Layer*, SurfaceTreeObject* > Trk::MaterialMapper::m_surfaceTrees
mutableprivate

Definition at line 322 of file MaterialMapper.h.

◆ m_surfaceValidation

bool Trk::MaterialMapper::m_surfaceValidation
private

Definition at line 320 of file MaterialMapper.h.

◆ m_totalMaterialTree

std::string Trk::MaterialMapper::m_totalMaterialTree
private

Definition at line 269 of file MaterialMapper.h.

◆ m_unmappedPathInX0

float Trk::MaterialMapper::m_unmappedPathInX0
mutableprivate

total path in x0 in these events lost

Definition at line 287 of file MaterialMapper.h.

◆ m_validationTree

TTree* Trk::MaterialMapper::m_validationTree
private

The validation tree.

Definition at line 272 of file MaterialMapper.h.

◆ m_validationTreeDescription

std::string Trk::MaterialMapper::m_validationTreeDescription
private

validation tree description - second argument in TTree

Definition at line 274 of file MaterialMapper.h.

◆ m_validationTreeFolder

std::string Trk::MaterialMapper::m_validationTreeFolder
private

stream/folder to for the TTree to be written out

Definition at line 275 of file MaterialMapper.h.

◆ m_validationTreeName

std::string Trk::MaterialMapper::m_validationTreeName
private

validation tree name - to be accessed by this from root

Definition at line 273 of file MaterialMapper.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_volumeTreePrefix

std::string Trk::MaterialMapper::m_volumeTreePrefix
private

Definition at line 309 of file MaterialMapper.h.

◆ m_volumeTrees

std::map< const Trk::TrackingVolume*, VolumeTreeObject* > Trk::MaterialMapper::m_volumeTrees
mutableprivate

Definition at line 310 of file MaterialMapper.h.

◆ m_volumeTreesUnmapped

std::map< const Trk::TrackingVolume*, VolumeTreeObject* > Trk::MaterialMapper::m_volumeTreesUnmapped
mutableprivate

Definition at line 311 of file MaterialMapper.h.

◆ m_volumeValidation

bool Trk::MaterialMapper::m_volumeValidation
private

Definition at line 308 of file MaterialMapper.h.


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