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
Gaudi::Property< unsigned int > m_maxMappingEvents
unsigned int m_processedEvents = 0
TTree * m_validationTree = nullptr
 The validation tree.
Gaudi::Property< std::string > m_validationTreeName
Gaudi::Property< std::string > m_validationTreeDescription
Gaudi::Property< std::string > m_validationTreeFolder
int m_materialSteps = 0
 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
Gaudi::Property< bool > m_volumeValidation {this, "TrackingVolumeValidation", true}
Gaudi::Property< std::string > m_volumeTreePrefix {this, "TrackingVolumeTreePrefix", "VolumeMaterial"}
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTrees
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTreesUnmapped
Gaudi::Property< bool > m_layerValidation {this, "DetailedLayerValidation", true}
Gaudi::Property< std::string > m_layerTreePrefix {this, "DetailedLayerTreePrefix", "LayerMaterial_"}
std::map< const Trk::Layer *, LayerTreeObject * > m_layerTrees
std::map< const Trk::Layer *, LayerTreeObject * > m_layerFullTrees
Gaudi::Property< bool > m_surfaceValidation {this, "DetailedSurfaceValidation", true}
Gaudi::Property< std::string > m_surfaceTreePrefix {this, "DetailedSurfaceTreePrefix", "SurfaceMaterial_"}
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 19 of file MaterialMapper.cxx.

20: AthAlgTool(t,n,p),
21 m_incidentSvc("IncidentSvc", n),
22 m_histSvc("THistSvc", n)
23{
24 declareInterface<IMaterialMapper>(this);
25}
AthAlgTool()
Default constructor:
ServiceHandle< ITHistSvc > m_histSvc
ServiceHandle< IIncidentSvc > m_incidentSvc

◆ ~MaterialMapper()

Trk::MaterialMapper::~MaterialMapper ( )
virtual

Virtual destructor.

Definition at line 28 of file MaterialMapper.cxx.

29{
30 // memory cleanup
32 auto volTreeIter = m_volumeTrees.begin();
33 auto endVolTreeIter = m_volumeTrees.end();
34 for ( ; volTreeIter != endVolTreeIter; delete (volTreeIter->second), ++volTreeIter) {}
35 }
36
38 // delete the layer hit TTree
39 auto layTreeIter = m_layerTrees.begin();
40 auto endLayTreeIter = m_layerTrees.end();
41 for ( ; layTreeIter != endLayTreeIter; delete (layTreeIter->second), ++layTreeIter) {}
42 // delete the layer per event TTree
43 layTreeIter = m_layerFullTrees.begin();
44 endLayTreeIter = m_layerFullTrees.end();
45 for ( ; layTreeIter != endLayTreeIter; delete (layTreeIter->second), ++layTreeIter) {}
46 }
47
49 // finalize the Hit Tree
50 auto surfTreeIter = m_surfaceTrees.begin();
51 auto endSurfTreeIter = m_surfaceTrees.end();
52 for ( ; surfTreeIter != endSurfTreeIter; delete (surfTreeIter->second), ++surfTreeIter) {}
53 }
54}
Gaudi::Property< bool > m_layerValidation
std::map< const Trk::Layer *, LayerTreeObject * > m_layerFullTrees
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTrees
Gaudi::Property< bool > m_volumeValidation
Gaudi::Property< bool > m_surfaceValidation
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 576 of file MaterialMapper.cxx.

577{
578
579 ATH_MSG_INFO( "Booking the Validation Tree ... " );
580
581 // (1) Main MaterialMapper TTree
582 // ------------- validation section ------------------------------------------
583 m_validationTree = new TTree(m_validationTreeName.value().c_str(), m_validationTreeDescription.value().c_str());
584
585 // position coordinates of the update
586 m_validationTree->Branch("Eta", &m_averageEta, "averageEta/F");
587 m_validationTree->Branch("Phi", &m_averagePhi, "averagePhiF");
588 m_validationTree->Branch("Path", &m_mappedPath, "path/F");
589 m_validationTree->Branch("PathInX0", &m_mappedPathInX0, "pathInX0/F");
590 m_validationTree->Branch("PathInL0", &m_mappedPathInL0, "pathInL0/F");
591 m_validationTree->Branch("PathRho", &m_mappedPathRho, "pathRho/F");
592 m_validationTree->Branch("PathZARho", &m_mappedPathZARho, "pathZARho/F");
593 m_validationTree->Branch("UnmappedPathInX0", &m_unmappedPathInX0, "unmappedPathInX0/F");
594 m_validationTree->Branch("MaterialSteps", &m_materialSteps, "steps/I");
595 m_validationTree->Branch("Mapped", m_mapped, "mapped[steps]/I");
596 m_validationTree->Branch("MaterialAccumPathInX0", m_materialAccumPathInX0, "materialAccumPinX0[steps]/F");
597 m_validationTree->Branch("MaterialAccumPathZARho", m_materialAccumPathZARho, "materialAccumPZARho[steps]/F");
598 m_validationTree->Branch("MaterialStepPath", m_materialStepPath, "materialStepPath[steps]/F");
599 m_validationTree->Branch("MaterialStepX0", m_materialStepX0, "materialStepX0[steps]/F");
600 m_validationTree->Branch("MaterialStepL0", m_materialStepL0, "materialStepL0[steps]/F");
601 m_validationTree->Branch("MaterialStepZ", m_materialStepZ, "materialStepZ[steps]/F");
602 m_validationTree->Branch("MaterialStepA", m_materialStepA, "materialStepA[steps]/F");
603 m_validationTree->Branch("MaterialStepRho", m_materialStepRho, "materialStepRho[steps]/F");
604 m_validationTree->Branch("MaterialStepPositionX", m_materialStepPositionX , "materialStepX[steps]/F");
605 m_validationTree->Branch("MaterialStepPositionY", m_materialStepPositionY , "materialStepY[steps]/F");
606 m_validationTree->Branch("MaterialStepPositionZ", m_materialStepPositionZ , "materialStepZ[steps]/F");
607 m_validationTree->Branch("MaterialStepPositionR", m_materialStepPositionR , "materialStepR[steps]/F");
608 m_validationTree->Branch("MaterialProjPositionX", m_materialProjPositionX , "materialProjX[steps]/F");
609 m_validationTree->Branch("MaterialProjPositionY", m_materialProjPositionY , "materialProjY[steps]/F");
610 m_validationTree->Branch("MaterialProjPositionZ", m_materialProjPositionZ , "materialProjZ[steps]/F");
611 m_validationTree->Branch("MaterialProjPositionR", m_materialProjPositionR , "materialProjR[steps]/F");
612 m_validationTree->Branch("MaterialProjDistance", m_materialProjDistance , "materialProjD[steps]/F");
613
614 // now register the Tree
615 if (m_histSvc->regTree(m_validationTreeFolder.value().c_str(), m_validationTree).isFailure()) {
616 ATH_MSG_ERROR("initialize() Could not register the validation Tree -> Switching ValidationMode Off !" );
617 delete m_validationTree; m_validationTree = nullptr;
618 return;
619 }
620
621 ATH_MSG_INFO( " ... successful." );
622
623}
#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_unmappedPathInX0
total path in x0 in these events lost
float m_materialStepPositionY[TRKDETDESCRTOOLS_MAXSTEPS]
y position of the material recording
float m_averageEta
average eta
float m_mappedPath
total mapped path
float m_averagePhi
average ogu
Gaudi::Property< std::string > m_validationTreeName
float m_mappedPathRho
total mapped path times rho
float m_mappedPathInL0
total mapped path in L0
TTree * m_validationTree
The validation tree.
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
float m_mappedPathZARho
total mapped path times (Z/A)*rho
int m_mapped[TRKDETDESCRTOOLS_MAXSTEPS]
mapped or not mapped
Gaudi::Property< std::string > m_validationTreeFolder
float m_materialStepRho[TRKDETDESCRTOOLS_MAXSTEPS]
step rho
float m_materialAccumPathZARho[TRKDETDESCRTOOLS_MAXSTEPS]
accumulated path length times (Z/A)*rho
int m_materialSteps
number of update positions
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
Gaudi::Property< std::string > m_validationTreeDescription
float m_materialStepA[TRKDETDESCRTOOLS_MAXSTEPS]
step A
float m_materialStepPath[TRKDETDESCRTOOLS_MAXSTEPS]
step path
float m_mappedPathInX0
total mapped path in X0
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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ 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 74 of file MaterialMapper.cxx.

75{
76 ATH_MSG_INFO( "finalize() successful" );
77 return StatusCode::SUCCESS;
78}

◆ finalizeLayerHits()

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

Finalize the SingleLayer Steps.

Definition at line 254 of file MaterialMapper.cxx.

255{
256
257 ATH_MSG_VERBOSE( "finalizeEvent() on Layer hits " );
258
259 for (size_t iltm = 0; iltm < 2; ++iltm) {
260 // loop over all layer Tree objects and fill them
261 auto layObjIter = iltm ? m_layerFullTrees.begin() : m_layerTrees.begin();
262 auto endIter = iltm ? m_layerFullTrees.end() : m_layerTrees.end();
263 // do the loop
264 for ( ; layObjIter != endIter; ++layObjIter ) {
265
266 Trk::LayerTreeObject* layTreeObj = layObjIter->second;
267
268 if (!layTreeObj) continue;
269
270 // get the number of single hits
271 int hits = (*layTreeObj).densedHits;
272
273 if ((*layTreeObj).pathInX0 > 0.) {
274 if (hits>1) {
275 (*layTreeObj).densedHitX /= hits;
276 (*layTreeObj).densedHitY /= hits;
277 (*layTreeObj).densedHitZ /= hits;
278 (*layTreeObj).densedHitR /= hits;
279 (*layTreeObj).densedHitPhi /= hits;
280 (*layTreeObj).densedHitTheta /= hits;
281 (*layTreeObj).correctionFactor /= hits;
282 (*layTreeObj).A /= (*layTreeObj).rho;
283 (*layTreeObj).Z /= (*layTreeObj).rho;
284 (*layTreeObj).rho /= (*layTreeObj).path;
285 }
286 // fill the layer Tree Object
287 (*layTreeObj).tree->Fill();
288 }
289 // reset
290 (*layTreeObj).layerHits = 0;
291 (*layTreeObj).path = 0.;
292 (*layTreeObj).pathInX0 = 0.;
293 (*layTreeObj).pathInL0 = 0.;
294 (*layTreeObj).densedHits = 0;
295 (*layTreeObj).densedHitX = 0.;
296 (*layTreeObj).densedHitY = 0.;
297 (*layTreeObj).densedHitZ = 0.;
298 (*layTreeObj).densedHitR = 0.;
299 (*layTreeObj).densedHitPhi = 0.;
300 (*layTreeObj).densedHitTheta = 0.;
301 (*layTreeObj).correctionFactor = 0.;
302 (*layTreeObj).A = 0.;
303 (*layTreeObj).Z = 0.;
304 (*layTreeObj).rho = 0.;
305 }
306 }
307}
#define ATH_MSG_VERBOSE(x)

◆ finalizeSurfaceHits()

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

Finalize the SingleLayer Steps.

Definition at line 341 of file MaterialMapper.cxx.

342{
343
344 ATH_MSG_VERBOSE( "finalizeEvent() on Surface hits " );
345
346 // loop over all layer Tree objects and fill them
347 auto surfObjIter = m_surfaceTrees.begin();
348 auto endIter = m_surfaceTrees.end();
349 // do the loop
350 for ( ; surfObjIter != endIter; ++surfObjIter ) {
351 Trk::SurfaceTreeObject* surfTreeObj = surfObjIter->second;
352 // get the number of single hits
353 int hits = (*surfTreeObj).surfaceHits;
354 // fill only if hits have been there
355 if ((*surfTreeObj).pathInX0 > 0.) {
356 if (hits>1) {
357 (*surfTreeObj).loc1 /= hits;
358 (*surfTreeObj).loc2 /= hits;
359 (*surfTreeObj).eta /= hits;
360 (*surfTreeObj).correctionFactor /= hits;
361 (*surfTreeObj).A /= hits;
362 (*surfTreeObj).Z /= hits;
363 (*surfTreeObj).rho /= hits;
364 }
365 // fill the tree
366 (*surfTreeObj).tree->Fill();
367 }
368 // reset
369 (*surfTreeObj).loc1 = 0.;
370 (*surfTreeObj).loc2 = 0.;
371 (*surfTreeObj).eta = 0.;
372
373 (*surfTreeObj).correctionFactor = 0.;
374 (*surfTreeObj).path = 0.;
375 (*surfTreeObj).pathInX0 = 0.;
376 (*surfTreeObj).pathInL0 = 0.;
377 (*surfTreeObj).rho = 0.;
378
379 (*surfTreeObj).surfaceHits = 0;
380
381 }
382}

◆ finalizeVolumeHits()

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

Finalize the Volume Steps.

Definition at line 166 of file MaterialMapper.cxx.

167{
168 ATH_MSG_VERBOSE( "finalizeEvent() on Volume hits " );
169
170 auto volTreeIter = mapped ? m_volumeTrees.begin() : m_volumeTreesUnmapped.begin();
171 auto endVolTreeIter = mapped ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
172
173 // do the loop
174 for ( ; volTreeIter != endVolTreeIter; ++volTreeIter ) {
175
176 Trk::VolumeTreeObject* volTreeObj = volTreeIter->second;
177
178 if (!volTreeObj) continue;
179
180 if ((*volTreeObj).path > 0.) {
181 // spatial mapping
182 (*volTreeObj).eta = m_averageEta;
183 (*volTreeObj).phi = m_averagePhi;
184 // fill the volume Tree Object
185 (*volTreeObj).tree->Fill();
186 }
187 // reset
188 (*volTreeObj).eta = 0.;
189 (*volTreeObj).phi = 0.;
190 (*volTreeObj).path = 0.;
191 (*volTreeObj).pathInX0 = 0.;
192 (*volTreeObj).pathInL0 = 0.;
193 (*volTreeObj).pathZARho = 0.;
194
195 }
196}
std::map< const Trk::TrackingVolume *, VolumeTreeObject * > m_volumeTreesUnmapped
std::vector< std::string > mapped
Definition hcg.cxx:56

◆ handle()

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

Handle the incident from the incident service.

Definition at line 543 of file MaterialMapper.cxx.

543 {
544 // check the incident type
545 if ( inc.type() == IncidentType::EndEvent && m_materialSteps){
546 // check if the hit collection already contains:
547 ATH_MSG_VERBOSE("EndEvent incident caught, finalize histogramns");
548 // average Eta / Phi
551 // (a) the volume validation
552 finalizeVolumeHits(true); // trees with mapped hits
553 finalizeVolumeHits(false); // trees with unmapped hits
554 // (b) the layer validation
556 // (c) the surface validation (reference material)
558 // fill the main TTree & reset
559 m_validationTree->Fill();
560 // initialize the eta/phi
561 m_averageEta = 0.;
562 m_averagePhi = 0.;
563 // initialize the rest
564 m_materialSteps = 0;
565 m_mappedPath = 0.;
566 m_mappedPathInX0 = 0.;
567 m_mappedPathInL0 = 0.;
568 m_mappedPathRho = 0.;
569 m_mappedPathZARho = 0.;
570 // increate counter
572 }
573 }
void finalizeLayerHits() const
Finalize the SingleLayer Steps.
unsigned int m_processedEvents
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 58 of file MaterialMapper.cxx.

59{
60
61 // Athena/Gaudi framework
62 ATH_CHECK( m_incidentSvc.retrieve() );
63 ATH_CHECK( m_histSvc.retrieve() );
64
65 // register to the incident service: EndEvent for histogram filling and reset
66 m_incidentSvc->addListener( this, IncidentType::EndEvent);
67
68 // book the Tree
70 return StatusCode::SUCCESS;
71}
#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 434 of file MaterialMapper.cxx.

435{
436 if (!lay.layerIndex().value()) return nullptr;
437
438 // try to find the histogram
439
440 Trk::LayerTreeObject* layTreeObj = nullptr;
441
442 if (full) {
443 auto it = m_layerFullTrees.find(&lay);
444 if (it != m_layerFullTrees.end()) {
445 return it->second;
446 }
447 }
448 else {
449 auto it = m_layerTrees.find(&lay);
450 if (it != m_layerTrees.end()) {
451 return it->second;
452 }
453 }
454
455 {
456 // check if it is a boundary MaterialLayer
457 const Trk::MaterialLayer* mLayer = dynamic_cast<const Trk::MaterialLayer*>(&lay);
458 if (mLayer)
459 ATH_MSG_INFO("MaterialLayer from BoundarySurface detected.");
460 // get the TrackingVolume
461 const Trk::TrackingVolume* enclosingVolume = lay.enclosingTrackingVolume();
462 TString tvolName = (enclosingVolume) ? enclosingVolume->volumeName() : "BoundaryLayers";
463 tvolName.ReplaceAll("::","_");
464
465 TString treeName = tvolName;
466 treeName += "_";
467 treeName += m_layerTreePrefix.value();
468
469 TString layerType = (lay.surfaceRepresentation().type() == Trk::SurfaceType::Cylinder) ?
470 "CylinderLayer_" : "DiscLayer_";
471 if (full) treeName += "full_";
472 treeName += layerType;
473 if (mLayer) treeName += "boundary_";
474 treeName += lay.layerIndex().value();
475
476 TString treeTitle = "TrackingVolume :";
477 treeTitle += tvolName;
478
479 TString treeRegName = "/val/";
480 treeRegName += treeName;
481
482 ATH_MSG_INFO( "No Tree found for Layer " << lay.layerIndex().value() << " in Volume '" << tvolName << "'.");
483 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
484
485 layTreeObj = new Trk::LayerTreeObject(treeName, treeTitle);
486 if (full) m_layerFullTrees.insert(std::make_pair(&lay,layTreeObj));
487 else m_layerTrees.insert(std::make_pair(&lay,layTreeObj));
488
489 // now register the Tree
490 if (m_histSvc->regTree(treeRegName.Data(), (*layTreeObj).tree).isFailure()) {
491 ATH_MSG_ERROR( "initialize() Could not register the validation Tree -> Switching Tree output for this layer off !" );
492 delete layTreeObj; layTreeObj = nullptr;
493 }
494
495 }
496
497 return layTreeObj;
498}
Gaudi::Property< std::string > m_layerTreePrefix
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 199 of file MaterialMapper.cxx.

200{
201
203
204 const Trk::Layer* lay = amhit.associatedLayer();
205 if (m_layerValidation && lay) {
206 // try to find the histogram
207 Trk::LayerTreeObject* layTreeObj = layerTreeObject(*lay,full);
208 if (layTreeObj
209 && (*layTreeObj).layerHits < TRKDETDESCRTOOLS_MAXLAYERHITS
210 && amhit.steplengthInX0() > 0.)
211 {
212
213 const Amg::Vector3D& pos = amhit.materialPosition();
214
215 // hit positions
216 double posX = pos.x();
217 double posY = pos.y();
218 double posZ = pos.z();
219 double posR = pos.perp();
220 double posEta = pos.eta();
221
222 // fill the hit position --------------------
223 (*layTreeObj).hitPositionX[(*layTreeObj).layerHits] = posX;
224 (*layTreeObj).hitPositionY[(*layTreeObj).layerHits] = posY;
225 (*layTreeObj).hitPositionZ[(*layTreeObj).layerHits] = posZ;
226 (*layTreeObj).hitPositionR[(*layTreeObj).layerHits] = posR;
227 (*layTreeObj).hitPositionEta[(*layTreeObj).layerHits] = posEta;
228
229 // increase the layer Hits
230 ++(*layTreeObj).layerHits;
231 ++(*layTreeObj).densedHits;
232
233 // fill the densed Hit position ---------------
234 (*layTreeObj).densedHitX += posX;
235 (*layTreeObj).densedHitY += posY;
236 (*layTreeObj).densedHitZ += posZ;
237 (*layTreeObj).densedHitR += posR;
238 (*layTreeObj).densedHitPhi += pos.phi();
239 (*layTreeObj).densedHitTheta += pos.theta();
240
241 // fill the correction factor ------------------
242 (*layTreeObj).correctionFactor += amhit.correctionFactor();
243 (*layTreeObj).path += amhit.steplength();
244 (*layTreeObj).pathInX0 += amhit.steplengthInX0();
245 (*layTreeObj).pathInL0 += amhit.steplengthInL0();
246 (*layTreeObj).A += amhit.A() * amhit.rho() * amhit.steplength();
247 (*layTreeObj).Z += amhit.Z() * amhit.rho() * amhit.steplength();
248 (*layTreeObj).rho += amhit.rho() * amhit.steplength();
249
250 }
251 }
252}
#define TRKDETDESCRTOOLS_MAXLAYERHITS
LayerTreeObject * layerTreeObject(const Layer &lay, bool full=false) const
find (&&,||) create the LayerTreeObject
Gaudi::Property< unsigned int > m_maxMappingEvents
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 80 of file MaterialMapper.cxx.

81{
82
84
85 // ----------------------------------- Recording Hits section --------------------------------
86 const Amg::Vector3D& position = amhit.materialPosition();
87
88 // get the tracking volume
89 const Trk::TrackingVolume* tvol = amhit.associatedTrackingVolume();
90 const Trk::Layer* lay = amhit.associatedLayer();
91
92 if (!tvol) {
93 ATH_MSG_WARNING("Could not associate TrackingVolume to material step!");
94 return;
95 }
96
97 // ----------------------------------- The Material Validation code --------------------------
98 const Trk::TrackingVolume* itvol = tvol;
99 while (itvol) {
100 // get the volume tree object
101 ATH_MSG_VERBOSE( "getting volTreeObj for: " << itvol->volumeName() << " at: " << itvol );
102 Trk::VolumeTreeObject* volTreeObj = volumeTreeObject(lay,itvol);
103 if (volTreeObj) {
104 // add the quantities
105 (*volTreeObj).path += amhit.steplength();
106 (*volTreeObj).pathInX0 += amhit.steplengthInX0();
107 (*volTreeObj).pathInL0 += amhit.steplengthInL0();
108 if(amhit.A() != 0.0) {
109 (*volTreeObj).pathZARho += (amhit.Z()/amhit.A())*amhit.rho()*amhit.steplength();
110 }
111 } else
112 ATH_MSG_WARNING( "Cannot find/create VolumeTreeObject for volume '" << itvol->volumeName() << "'." );
113 itvol = itvol->getMotherVolume();
114 if (itvol) ATH_MSG_VERBOSE( "motherVolume found: " << itvol->volumeName() );
115 }
116
117 // -------------------------------- main tree section -----------------------------------------
118 // eta / phi
119 m_averageEta += position.eta();
120 m_averagePhi += position.phi();
121 // effectively crossed Z/A*rho
122 double steplength = amhit.steplength();
123 // fill the variables for spatial information & event characteristics
124 if (lay) {
125 m_mappedPath += steplength;
126 m_mappedPathInX0 += amhit.steplengthInX0();
127 m_mappedPathInL0 += amhit.steplengthInL0();
128 m_mappedPathRho += amhit.rho()*steplength;
129 if(amhit.A() != 0.0) {
130 m_mappedPathZARho += (amhit.Z()/amhit.A())*amhit.rho()*steplength;
131 }
132 ATH_MSG_VERBOSE("[ MaterialMapper ] Accumulated Path in Rho (*Z/A) = " << m_mappedPathRho << " ( " << m_mappedPathZARho << " )");
133 } else
134 m_unmappedPathInX0 += amhit.steplengthInX0();
135
136 // mapping information
137 m_mapped[m_materialSteps] = lay ? lay->layerIndex().value() : 0;
138 // the position & step information
142 m_materialStepX0[m_materialSteps] = amhit.x0();
143 m_materialStepL0[m_materialSteps] = amhit.l0();
144 m_materialStepA[m_materialSteps] = amhit.A();
145 m_materialStepZ[m_materialSteps] = amhit.Z();
146 m_materialStepRho[m_materialSteps] = amhit.rho();
151 // record the projected position as well
152 m_materialProjPositionX[m_materialSteps] = projectedPosition.x();
153 m_materialProjPositionY[m_materialSteps] = projectedPosition.y();
154 m_materialProjPositionZ[m_materialSteps] = projectedPosition.z();
155 m_materialProjPositionR[m_materialSteps] = projectedPosition.perp();
156 m_materialProjDistance[m_materialSteps] = (position-projectedPosition).mag();
157 // and increase the number of steps
159
160
161 // record the layer hit
163}
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.
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.

◆ 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 310 of file MaterialMapper.cxx.

312{
313
315
316 const Trk::Layer* lay = amhit.associatedLayer();
317 if (m_surfaceValidation && lay) {
318 // try to find the histogram
319 Trk::SurfaceTreeObject* surfTreeObj = surfaceTreeObject(*lay);
320 // now fill
321 if (surfTreeObj) {
322 // fill it
323 (*surfTreeObj).loc1 += locpos[0];
324 (*surfTreeObj).loc2 += locpos[1];
325 (*surfTreeObj).eta += amhit.materialPosition().eta();
326 (*surfTreeObj).correctionFactor += amhit.correctionFactor();
327 (*surfTreeObj).path += amhit.steplength();
328 (*surfTreeObj).pathInX0 += amhit.steplengthInX0();
329 (*surfTreeObj).pathInL0 += amhit.steplengthInL0();
330 (*surfTreeObj).A += amhit.A()*amhit.steplength()*amhit.rho();
331 (*surfTreeObj).Z += amhit.Z()*amhit.steplength()*amhit.rho();
332 (*surfTreeObj).rho += amhit.rho()*amhit.steplength();
333 // increase the surface hits
334 ++(*surfTreeObj).surfaceHits;
335
336 }
337 }
338}
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 501 of file MaterialMapper.cxx.

502{
503 // try to find the histogram
504 auto endIter = m_surfaceTrees.end();
505 auto findIter = m_surfaceTrees.end();
506
507 Trk::SurfaceTreeObject* surfTreeObj = nullptr;
508
509 findIter = m_surfaceTrees.find(&lay);
510 if (findIter == endIter) {
511 // get the TrackingVolume
512 const Trk::TrackingVolume* enclosingVolume = lay.enclosingTrackingVolume();
513 TString volumeName = (enclosingVolume) ? enclosingVolume->volumeName() : "Unknown";
514
515 TString treeName = m_surfaceTreePrefix.value();
516 treeName += lay.layerIndex().value();
517
518 TString treeTitle = "TrackingVolume :";
519 treeTitle += volumeName;
520
521 TString treeRegName = "/val/";
522 treeRegName += treeName;
523
524 ATH_MSG_INFO( "No Tree found for Layer " << lay.layerIndex().value()
525 << " in Volume '" << volumeName << "'." );
526 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
527
528 surfTreeObj = new Trk::SurfaceTreeObject(treeName, treeTitle);
529 m_surfaceTrees.insert(std::make_pair(&lay,surfTreeObj));
530
531 // now register the Tree
532 if (m_histSvc->regTree(treeRegName.Data(), (*surfTreeObj).tree).isFailure()) {
533 ATH_MSG_INFO( "initialize() Could not register the validation Tree -> Switching Tree output for this surface off !" );
534 delete surfTreeObj; surfTreeObj = nullptr;
535 }
536
537 } else // a tree is found
538 surfTreeObj = findIter->second;
539 return surfTreeObj;
540}
Gaudi::Property< std::string > m_surfaceTreePrefix

◆ 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 >, and AthCheckedComponent<::AthAlgTool >.

◆ 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 385 of file MaterialMapper.cxx.

386{
387 // try to find the histogram
388 auto endIter = lay ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
389 auto findIter = lay ? m_volumeTrees.end() : m_volumeTreesUnmapped.end();
390
391 Trk::VolumeTreeObject* tvolTreeObj = nullptr;
392
393 findIter = lay ? m_volumeTrees.find(tvol) : m_volumeTreesUnmapped.find(tvol);
394
395 if (findIter == endIter) {
396
397 TString tvolName = tvol->volumeName();
398 tvolName.ReplaceAll("::","_");
399
400 TString treeName = tvolName;
401 treeName += "_";
402 treeName += m_volumeTreePrefix.value();
403 if (!lay) treeName += "_UNMAPPED";
404
405 TString treeTitle = "TrackingVolume : ";
406 treeTitle += tvolName;
407 if (!lay) treeTitle += " - UNMAPPED";
408
409 TString treeRegName = "/val/";
410 treeRegName += treeName;
411
412 ATH_MSG_INFO( "No Tree found for " << treeTitle );
413 ATH_MSG_INFO( " -> Booking it now with register name : " << treeRegName.Data() );
414
415 tvolTreeObj = new Trk::VolumeTreeObject(treeName, treeTitle);
416 if (lay)
417 m_volumeTrees.insert(std::make_pair(tvol,tvolTreeObj));
418 else
419 m_volumeTreesUnmapped.insert(std::make_pair(tvol,tvolTreeObj));
420
421 // now register the Tree
422 if (m_histSvc->regTree(treeRegName.Data(), (*tvolTreeObj).tree).isFailure()) {
423 ATH_MSG_ERROR( "initialize() Could not register the validation Tree -> Switching Tree output for this volume off !" );
424 delete tvolTreeObj; tvolTreeObj = nullptr;
425 }
426
427 } else // a tree is found
428 tvolTreeObj = findIter->second;
429
430 return tvolTreeObj;
431}
Gaudi::Property< std::string > m_volumeTreePrefix

Member Data Documentation

◆ m_averageEta

float Trk::MaterialMapper::m_averageEta {}
mutableprivate

average eta

Definition at line 284 of file MaterialMapper.h.

284{};

◆ m_averagePhi

float Trk::MaterialMapper::m_averagePhi {}
mutableprivate

average ogu

Definition at line 285 of file MaterialMapper.h.

285{};

◆ 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 324 of file MaterialMapper.h.

◆ m_layerTreePrefix

Gaudi::Property<std::string> Trk::MaterialMapper::m_layerTreePrefix {this, "DetailedLayerTreePrefix", "LayerMaterial_"}
private

Definition at line 321 of file MaterialMapper.h.

322{this, "DetailedLayerTreePrefix", "LayerMaterial_"};

◆ m_layerTrees

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

Definition at line 323 of file MaterialMapper.h.

◆ m_layerValidation

Gaudi::Property<bool> Trk::MaterialMapper::m_layerValidation {this, "DetailedLayerValidation", true}
private

Definition at line 320 of file MaterialMapper.h.

320{this, "DetailedLayerValidation", true};

◆ m_mapped

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

mapped or not mapped

Definition at line 292 of file MaterialMapper.h.

292{};

◆ m_mappedPath

float Trk::MaterialMapper::m_mappedPath {}
mutableprivate

total mapped path

Definition at line 286 of file MaterialMapper.h.

286{};

◆ m_mappedPathInL0

float Trk::MaterialMapper::m_mappedPathInL0 {}
mutableprivate

total mapped path in L0

Definition at line 288 of file MaterialMapper.h.

288{};

◆ m_mappedPathInX0

float Trk::MaterialMapper::m_mappedPathInX0 {}
mutableprivate

total mapped path in X0

Definition at line 287 of file MaterialMapper.h.

287{};

◆ m_mappedPathRho

float Trk::MaterialMapper::m_mappedPathRho {}
mutableprivate

total mapped path times rho

Definition at line 289 of file MaterialMapper.h.

289{};

◆ m_mappedPathZARho

float Trk::MaterialMapper::m_mappedPathZARho {}
mutableprivate

total mapped path times (Z/A)*rho

Definition at line 290 of file MaterialMapper.h.

290{};

◆ m_materialAccumPathInX0

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

accumulated path length in x0

Definition at line 293 of file MaterialMapper.h.

293{};

◆ m_materialAccumPathZARho

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

accumulated path length times (Z/A)*rho

Definition at line 294 of file MaterialMapper.h.

294{};

◆ m_materialProjDistance

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

the distance to the projected hit

Definition at line 309 of file MaterialMapper.h.

309{};

◆ m_materialProjPositionR

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

r value of the material recording when assigned to layer

Definition at line 308 of file MaterialMapper.h.

308{};

◆ m_materialProjPositionX

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

x position of the material recording when assigned to layer

Definition at line 305 of file MaterialMapper.h.

305{};

◆ m_materialProjPositionY

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

y position of the material recording when assigned to layer

Definition at line 306 of file MaterialMapper.h.

306{};

◆ m_materialProjPositionZ

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

z position of the material recording when assigned to layer

Definition at line 307 of file MaterialMapper.h.

307{};

◆ m_materialStepA

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

step A

Definition at line 299 of file MaterialMapper.h.

299{};

◆ m_materialStepL0

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

step l0

Definition at line 297 of file MaterialMapper.h.

297{};

◆ m_materialStepPath

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

step path

Definition at line 295 of file MaterialMapper.h.

295{};

◆ m_materialStepPositionR

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

r value of the material recording

Definition at line 304 of file MaterialMapper.h.

304{};

◆ m_materialStepPositionX

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

x position of the material recording

Definition at line 301 of file MaterialMapper.h.

301{};

◆ m_materialStepPositionY

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

y position of the material recording

Definition at line 302 of file MaterialMapper.h.

302{};

◆ m_materialStepPositionZ

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

z position of the material recording

Definition at line 303 of file MaterialMapper.h.

303{};

◆ m_materialStepRho

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

step rho

Definition at line 300 of file MaterialMapper.h.

300{};

◆ m_materialSteps

int Trk::MaterialMapper::m_materialSteps = 0
mutableprivate

number of update positions

Definition at line 283 of file MaterialMapper.h.

◆ m_materialStepX0

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

step x0

Definition at line 296 of file MaterialMapper.h.

296{};

◆ m_materialStepZ

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

step Z

Definition at line 298 of file MaterialMapper.h.

298{};

◆ m_maxMappingEvents

Gaudi::Property<unsigned int> Trk::MaterialMapper::m_maxMappingEvents
private
Initial value:
{this, "MaximumMappingEvents", 100000,
"The maximum mapping events to control the output file size"}

Definition at line 264 of file MaterialMapper.h.

265 {this, "MaximumMappingEvents", 100000,
266 "The maximum mapping events to control the output file size"};

◆ m_processedEvents

unsigned int Trk::MaterialMapper::m_processedEvents = 0
mutableprivate

Definition at line 267 of file MaterialMapper.h.

◆ m_surfaceTreePrefix

Gaudi::Property<std::string> Trk::MaterialMapper::m_surfaceTreePrefix {this, "DetailedSurfaceTreePrefix", "SurfaceMaterial_"}
private

Definition at line 329 of file MaterialMapper.h.

330{this, "DetailedSurfaceTreePrefix", "SurfaceMaterial_"};

◆ m_surfaceTrees

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

Definition at line 331 of file MaterialMapper.h.

◆ m_surfaceValidation

Gaudi::Property<bool> Trk::MaterialMapper::m_surfaceValidation {this, "DetailedSurfaceValidation", true}
private

Definition at line 327 of file MaterialMapper.h.

328{this, "DetailedSurfaceValidation", true};

◆ m_unmappedPathInX0

float Trk::MaterialMapper::m_unmappedPathInX0 {}
mutableprivate

total path in x0 in these events lost

Definition at line 291 of file MaterialMapper.h.

291{};

◆ m_validationTree

TTree* Trk::MaterialMapper::m_validationTree = nullptr
private

The validation tree.

Definition at line 270 of file MaterialMapper.h.

◆ m_validationTreeDescription

Gaudi::Property<std::string> Trk::MaterialMapper::m_validationTreeDescription
private
Initial value:
{this, "ValidationTreeDescription", "Material Effects Updator information",
"validation tree description - second argument in TTree"}

Definition at line 274 of file MaterialMapper.h.

275 {this, "ValidationTreeDescription", "Material Effects Updator information",
276 "validation tree description - second argument in TTree"};

◆ m_validationTreeFolder

Gaudi::Property<std::string> Trk::MaterialMapper::m_validationTreeFolder
private
Initial value:
{this, "ValidationTreeFolder", "/val/MaterialMapper",
"stream/folder to for the TTree to be written out"}

Definition at line 277 of file MaterialMapper.h.

278 {this, "ValidationTreeFolder", "/val/MaterialMapper",
279 "stream/folder to for the TTree to be written out"};

◆ m_validationTreeName

Gaudi::Property<std::string> Trk::MaterialMapper::m_validationTreeName
private
Initial value:
{this, "ValidationTreeName", "MaterialMapper",
"validation tree name - to be accessed by this from root"}

Definition at line 271 of file MaterialMapper.h.

272 {this, "ValidationTreeName", "MaterialMapper",
273 "validation tree name - to be accessed by this from root"};

◆ 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

Gaudi::Property<std::string> Trk::MaterialMapper::m_volumeTreePrefix {this, "TrackingVolumeTreePrefix", "VolumeMaterial"}
private

Definition at line 314 of file MaterialMapper.h.

315{this, "TrackingVolumeTreePrefix", "VolumeMaterial"};

◆ m_volumeTrees

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

Definition at line 316 of file MaterialMapper.h.

◆ m_volumeTreesUnmapped

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

Definition at line 317 of file MaterialMapper.h.

◆ m_volumeValidation

Gaudi::Property<bool> Trk::MaterialMapper::m_volumeValidation {this, "TrackingVolumeValidation", true}
private

Definition at line 312 of file MaterialMapper.h.

313{this, "TrackingVolumeValidation", true};

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