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

This is for the Doxygen-Documentation. More...

#include <MaterialOnTrackValidation.h>

Inheritance diagram for Trk::MaterialOnTrackValidation:
Collaboration diagram for Trk::MaterialOnTrackValidation:

Public Member Functions

 MaterialOnTrackValidation (const std::string &name, ISvcLocator *pSvcLocator)
 Standard Athena-Algorithm Constructor.
 ~MaterialOnTrackValidation ()
 Default Destructor.
StatusCode initialize ()
 standard Athena-Algorithm method
StatusCode execute ()
 standard Athena-Algorithm method
StatusCode finalize ()
 standard Athena-Algorithm method
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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 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

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 bookTree ()
 booking the tree
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_inputTrackCollection
 properties from JobOptions:
TTree * m_Tree {}
int m_updates {}
 variables
float m_positionX [MAXUPDATES] {}
 x position of the update
float m_positionY [MAXUPDATES] {}
 y position of the update
float m_positionZ [MAXUPDATES] {}
 z position of the update
float m_positionR [MAXUPDATES] {}
 r value of the material update
float m_momentum [MAXUPDATES] {}
 momentum before the update is applied
float m_momentumChange [MAXUPDATES] {}
 change of the momentum
float m_traversedPathInX0 [MAXUPDATES] {}
 accumulated traversed path in rlength
double m_currentPathInX0 {}
 accumulation variable
float m_traversedStepInX0 [MAXUPDATES] {}
 the step path in x0
double m_eta [MAXUPDATES] {}
 eta
double m_stepInX0 {}
 traversed thickness in radiation length
DataObjIDColl m_extendedExtraObjects
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

This is for the Doxygen-Documentation.

Please delete these lines and fill in information about the Algorithm! Please precede every member function declaration with a short Doxygen comment stating the purpose of this function.

Author
Markus Haider marku.nosp@m.s.ha.nosp@m.ider@.nosp@m.stud.nosp@m.ent.u.nosp@m.ibk..nosp@m.ac.at

Definition at line 35 of file MaterialOnTrackValidation.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MaterialOnTrackValidation()

Trk::MaterialOnTrackValidation::MaterialOnTrackValidation ( const std::string & name,
ISvcLocator * pSvcLocator )

Standard Athena-Algorithm Constructor.

Definition at line 23 of file MaterialOnTrackValidation.cxx.

23 :
24 AthAlgorithm(name,pSvcLocator),
25 m_inputTrackCollection("Tracks"),
26 m_Tree(nullptr),
27 m_updates(0), // Coverity complaints about this and the following members not to be initialised, although they are before usage.
29 m_stepInX0(0)
30{
31
32
33 // Get Parameter values from JobOptions file
34 declareProperty("InputTrackCollection", m_inputTrackCollection);
35}
AthAlgorithm()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_inputTrackCollection
properties from JobOptions:
double m_currentPathInX0
accumulation variable
double m_stepInX0
traversed thickness in radiation length

◆ ~MaterialOnTrackValidation()

Trk::MaterialOnTrackValidation::~MaterialOnTrackValidation ( )
default

Default Destructor.

Member Function Documentation

◆ bookTree()

void Trk::MaterialOnTrackValidation::bookTree ( )
private

booking the tree

Definition at line 165 of file MaterialOnTrackValidation.cxx.

165 {
166
167 // Booking the Tree
168 ATH_MSG_VERBOSE("Booking the tree ...");
169 m_Tree = new TTree("MaterialOnTrackValidation","Material on track validation");
170
171 // Adding the branches
172 m_Tree->Branch("Updates" ,&m_updates , "updates/I");
173 m_Tree->Branch("UpdatePositionX", m_positionX , "updateX[updates]/F");
174 m_Tree->Branch("UpdatePositionR", m_positionR , "updateR[updates]/F");
175 m_Tree->Branch("PreMomentum" , m_momentum , "preMomentum[updates]/F");
176 m_Tree->Branch("MomentumChange" , m_momentumChange , "momentumChange[updates]/F");
177 m_Tree->Branch("PathInX0" , m_traversedPathInX0 , "PathInX0[updates]/F");
178 m_Tree->Branch("StepInX0" , m_traversedStepInX0 , "StepInX0[updates]/F");
179 m_Tree->Branch("Eta" , m_eta , "Eta[updates]/F");
180
181
182 // Registering the Tree
183 SmartIF<ITHistSvc> tHistSvc{service("THistSvc")};
184 if (!tHistSvc) {
185 ATH_MSG_ERROR("initialize() Could not find Hist Service -> Switching ValidationMode Off !");
186 delete m_Tree; m_Tree = nullptr;
187 return;
188 }
189
190 if ((tHistSvc->regTree("/val/MaterialOnTrackValidation", m_Tree)).isFailure()) {
191 ATH_MSG_ERROR("initialize() Could not register the Tree -> Switching ValidationMode Off !");
192 delete m_Tree; m_Tree = nullptr;
193 return;
194 }
195
196}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
float m_positionR[MAXUPDATES]
r value of the material update
float m_positionX[MAXUPDATES]
x position of the update
float m_traversedStepInX0[MAXUPDATES]
the step path in x0
float m_momentumChange[MAXUPDATES]
change of the momentum
float m_traversedPathInX0[MAXUPDATES]
accumulated traversed path in rlength
float m_momentum[MAXUPDATES]
momentum before the update is applied

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::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 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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< Algorithm > >::evtStore ( )
inlineinherited

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode Trk::MaterialOnTrackValidation::execute ( )

standard Athena-Algorithm method

Definition at line 66 of file MaterialOnTrackValidation.cxx.

67{
68 // Code entered here will be executed once per event
69
70 // Retrieving the Trackcollection specified via m_inputTrackCollection
71 StatusCode sc = StatusCode::SUCCESS;
72 const TrackCollection* trackCollection = nullptr;
73
74 if (!m_inputTrackCollection.empty()) {
75 sc = evtStore()->retrieve(trackCollection,m_inputTrackCollection);
76 if (sc.isFailure())
77 ATH_MSG_ERROR( "TrackCollection "<<m_inputTrackCollection<<" not found!" );
78 else
79 ATH_MSG_VERBOSE("TrackCollection " << m_inputTrackCollection<<" found." );
80
81 } else {
82 ATH_MSG_ERROR("No Track collection given!" );
83 return StatusCode::FAILURE;
84 }
85
86 // Looping over the tracks of retrieved trackcollection
87
88 // Creating the iterators for the loop
89 TrackCollection::const_iterator itTracks = trackCollection->begin();
90 TrackCollection::const_iterator endTracks = trackCollection->end();
91
92 for (;itTracks!=endTracks;++itTracks) {
93
94 // Getting the TrackStateOnSurface for every track
95 const Trk::TrackStates *currentTSOSList =(*itTracks)->trackStateOnSurfaces();
96
97 // Iterators for loop inside track
100
101 // Initialize variables
102 m_updates = 0;
104
105 // Loop over all TrackStatesOnSurface
106 for (;itTSOS!=endTSOS;++itTSOS) {
107
108 // Get the Pointer to a trackStateOnSurface
109 const MaterialEffectsBase* mEffect = (*itTSOS)->materialEffectsOnTrack();
110
111 // Get the Pointer to Trackparameters
112 const TrackParameters* tParameter = (*itTSOS)->trackParameters();
113
114 // Getting all the parameters
115 if (mEffect&&tParameter) { //protection against zero pointers
116
117 m_stepInX0 = mEffect->thicknessInX0(); //traversed thickness in radiation length
118 m_currentPathInX0 += m_stepInX0; //accumulated traversed path in rlength
119
120 // Get hit parameters
121 m_positionR[m_updates] = tParameter->position().perp();
122 m_positionX[m_updates] = tParameter->position().x();
123 m_positionY[m_updates] = tParameter->position().y();
124 m_positionZ[m_updates] = tParameter->position().z();
125
126 // Get momentum parameters
127 m_momentum[m_updates] = tParameter->momentum().mag();
128 const Trk::EstimatedBremOnTrack* eb =
129 dynamic_cast<const Trk::EstimatedBremOnTrack*>(mEffect);
130 const Trk::MaterialEffectsOnTrack* mef =
131 dynamic_cast<const Trk::MaterialEffectsOnTrack*>(mEffect);
132 if (eb!=nullptr) {
133 m_momentumChange[m_updates] = (1.0-eb->retainedEnFraction()) * tParameter->momentum().mag();
134 } else if ( (mef!=nullptr) && (mef->energyLoss() != nullptr) ) {
136 } else m_momentumChange[m_updates] = 0.0;
137
138 m_eta[m_updates] = tParameter->position().eta();
139 m_traversedStepInX0[m_updates] = m_stepInX0; //current traversed thickness/radiation length
140 m_traversedPathInX0[m_updates] = m_currentPathInX0; //accumulated traversed path/radiation length
141
142 ++m_updates; //increases m_updates everytime the trackparameters are nonzero
143 if (m_updates>=MAXUPDATES) {
144 ATH_MSG_ERROR("Maximum number of updates reached!");
145 // @TODO still fill the tree ?
146 return StatusCode::FAILURE;
147 }
148
149 } //protection end
150
151
152 } //loop TSOS end
153
154 if (m_Tree)
155 m_Tree->Fill();
156
157 } //loop tracks end
158
159
160 return StatusCode::SUCCESS;
161}
static Double_t sc
#define MAXUPDATES
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
double deltaE() const
returns the
double retainedEnFraction() const
returns
const EnergyLoss * energyLoss() const
returns the energy loss object.
float m_positionY[MAXUPDATES]
y position of the update
float m_positionZ[MAXUPDATES]
z position of the update
::StatusCode StatusCode
StatusCode definition for legacy code.
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersBase< TrackParametersDim, Charged > TrackParameters

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

StatusCode Trk::MaterialOnTrackValidation::finalize ( )

standard Athena-Algorithm method

Definition at line 58 of file MaterialOnTrackValidation.cxx.

59{
60 // Code entered here will be executed once at the end of the program run.
61 return StatusCode::SUCCESS;
62}

◆ initialize()

StatusCode Trk::MaterialOnTrackValidation::initialize ( )

standard Athena-Algorithm method

Definition at line 45 of file MaterialOnTrackValidation.cxx.

46{
47 ATH_MSG_INFO( "initialize() successful in " << name() );
48
49 // Book the Tree
50 bookTree();
51
52 return StatusCode::SUCCESS;
53
54}
#define ATH_MSG_INFO(x)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::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.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Algorithm >::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< Algorithm > >::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.

◆ 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< Algorithm > >::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< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_WARNING(x)
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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

Member Data Documentation

◆ m_currentPathInX0

double Trk::MaterialOnTrackValidation::m_currentPathInX0 {}
private

accumulation variable

Definition at line 69 of file MaterialOnTrackValidation.h.

69{};

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_eta

double Trk::MaterialOnTrackValidation::m_eta[MAXUPDATES] {}
private

eta

Definition at line 71 of file MaterialOnTrackValidation.h.

71{};

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_inputTrackCollection

std::string Trk::MaterialOnTrackValidation::m_inputTrackCollection
private

properties from JobOptions:

Definition at line 54 of file MaterialOnTrackValidation.h.

◆ m_momentum

float Trk::MaterialOnTrackValidation::m_momentum[MAXUPDATES] {}
private

momentum before the update is applied

Definition at line 66 of file MaterialOnTrackValidation.h.

66{};

◆ m_momentumChange

float Trk::MaterialOnTrackValidation::m_momentumChange[MAXUPDATES] {}
private

change of the momentum

Definition at line 67 of file MaterialOnTrackValidation.h.

67{};

◆ m_positionR

float Trk::MaterialOnTrackValidation::m_positionR[MAXUPDATES] {}
private

r value of the material update

Definition at line 65 of file MaterialOnTrackValidation.h.

65{};

◆ m_positionX

float Trk::MaterialOnTrackValidation::m_positionX[MAXUPDATES] {}
private

x position of the update

Definition at line 62 of file MaterialOnTrackValidation.h.

62{};

◆ m_positionY

float Trk::MaterialOnTrackValidation::m_positionY[MAXUPDATES] {}
private

y position of the update

Definition at line 63 of file MaterialOnTrackValidation.h.

63{};

◆ m_positionZ

float Trk::MaterialOnTrackValidation::m_positionZ[MAXUPDATES] {}
private

z position of the update

Definition at line 64 of file MaterialOnTrackValidation.h.

64{};

◆ m_stepInX0

double Trk::MaterialOnTrackValidation::m_stepInX0 {}
private

traversed thickness in radiation length

Definition at line 72 of file MaterialOnTrackValidation.h.

72{};

◆ m_traversedPathInX0

float Trk::MaterialOnTrackValidation::m_traversedPathInX0[MAXUPDATES] {}
private

accumulated traversed path in rlength

Definition at line 68 of file MaterialOnTrackValidation.h.

68{};

◆ m_traversedStepInX0

float Trk::MaterialOnTrackValidation::m_traversedStepInX0[MAXUPDATES] {}
private

the step path in x0

Definition at line 70 of file MaterialOnTrackValidation.h.

70{};

◆ m_Tree

TTree* Trk::MaterialOnTrackValidation::m_Tree {}
private

Definition at line 58 of file MaterialOnTrackValidation.h.

58{};

◆ m_updates

int Trk::MaterialOnTrackValidation::m_updates {}
private

variables

number of updates, for max value MAXUPDATES in line 14

Definition at line 61 of file MaterialOnTrackValidation.h.

61{};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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