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

The EnergyLossExtrapolationValidation Algorithm runs a number of n test extrapolations from randomly distributed Track Parameters to specific reference surfaces within the ATLAS Detector (user defined cylinder tubes which can be placed e.g. More...

#include <EnergyLossExtrapolationValidation.h>

Inheritance diagram for Trk::EnergyLossExtrapolationValidation:
Collaboration diagram for Trk::EnergyLossExtrapolationValidation:

Public Member Functions

 EnergyLossExtrapolationValidation (const std::string &name, ISvcLocator *pSvcLocator)
 Standard Athena-Algorithm Constructor.
 ~EnergyLossExtrapolationValidation ()
 Default Destructor.
StatusCode initialize ()
 standard Athena-Algorithm method
StatusCode execute (const EventContext &ctx)
 standard Athena-Algorithm method
StatusCode finalize ()
 standard Athena-Algorithm method
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
 Get filter decision:
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 Set filter decision:
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

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
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

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static std::unique_ptr< Amg::Transform3DcreateTransform (double x, double y, double z, double phi=0., double theta=0., double alphaZ=0.)
 private helper method to create a Transform

Private Attributes

const TrackingVolumem_highestVolume = nullptr
 the highest volume
ToolHandle< IExtrapolatorm_extrapolator {this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"}
 The Extrapolator to be retrieved.
Rndm::Numbers * m_gaussDist = nullptr
 Random Number setup.
Rndm::Numbers * m_flatDist = nullptr
BooleanProperty m_materialCollectionValidation
TTree * m_validationTree = nullptr
 Root Validation Tree.
TTree * m_validationRunTree = nullptr
 Root Run Stats Tree.
StringProperty m_validationTreeFolder
StringProperty m_validationTreeName
StringProperty m_validationTreeDescription
StringProperty m_validationRunTreeFolder
StringProperty m_validationRunTreeName
StringProperty m_validationRunTreeDescription
UnsignedIntegerProperty m_cylinders
BooleanProperty m_onion
FloatProperty m_momentum
BooleanProperty m_usePt
FloatProperty m_minEta {this, "StartPerigeeMinEta", -3.}
FloatProperty m_maxEta {this, "StartPerigeeMaxEta", 3.}
size_t m_events = 0
 total number of recorded events
int m_totalRecordedLayers = 0
 total number of recorded layers
float m_avgRecordedLayers = 0
 average recorded layers per event
int m_pdg = 0
 PDG code corresponding to m_particleType.
IntegerProperty m_particleType
size_t m_entries = 0
 effective number of used entries (recorded layers) in this event
float m_energy [TRKEXALGS_MAXPARAMETERS] {}
 energy
float m_energyLoss [TRKEXALGS_MAXPARAMETERS] {}
 energy loss
float m_parameterX0 [TRKEXALGS_MAXPARAMETERS] {}
 thickness in X0
float m_radius [TRKEXALGS_MAXPARAMETERS] {}
 position radius
float m_positionX [TRKEXALGS_MAXPARAMETERS] {}
 position X
float m_positionY [TRKEXALGS_MAXPARAMETERS] {}
 position Y
float m_positionZ [TRKEXALGS_MAXPARAMETERS] {}
 position Z
float m_parameterPhi [TRKEXALGS_MAXPARAMETERS] {}
 phi
float m_parameterEta [TRKEXALGS_MAXPARAMETERS] {}
 eta
float m_parameterTheta [TRKEXALGS_MAXPARAMETERS] {}
 theta
float m_parameterQoverP [TRKEXALGS_MAXPARAMETERS] {}
 qOverP
float m_parameterP [TRKEXALGS_MAXPARAMETERS] {}
 P.
size_t m_layer [TRKEXALGS_MAXPARAMETERS] {}
 layer id
size_t m_triesForward = 0
 extrapolation events forward
size_t m_breaksForward = 0
 extrapolation breaks forward
size_t m_triesBack = 0
 extrapolation events backward
size_t m_breaksBack = 0
 extrapolation breaks backward
size_t m_collectedLayerForward = 0
 collected material layers forward
size_t m_collectedLayerBack = 0
 collected material layers backward
float m_cylinderR [TRKEXALGS_MAXPARAMETERS] {}
 radius of cylinder layers (for ROOT tree)
float m_cylinderZ [TRKEXALGS_MAXPARAMETERS] {}
 length of cylinder layers (for ROOT tree)
DataVector< const Trk::CylinderSurface > * m_theCylinders = nullptr
DataVector< const Trk::DiscSurface > * m_theDiscs1 = nullptr
DataVector< const Trk::DiscSurface > * m_theDiscs2 = nullptr
FloatArrayProperty m_cylinderVR
FloatArrayProperty m_cylinderVZ
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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

The EnergyLossExtrapolationValidation Algorithm runs a number of n test extrapolations from randomly distributed Track Parameters to specific reference surfaces within the ATLAS Detector (user defined cylinder tubes which can be placed e.g.

around Beam Pipe, Pixel, SCT, TRT, Calorimeter, Muon System, or have completely arbitrary dimensions).

In the jobOptions one can toggle these surfaces for

  • a) the Inner Detector via DetFlags.ID_setOn() / DetFlags.ID_setOff()
  • b) the Calorimeter via DetFlags.Calo_setOn() / DetFlags.Calo_setOff()
  • c) the Muon System via DetFlags.Muon_setOn() / DetFlags.Calo_setOff()

The code of ExtrapolationValidation (by Andreas Salzburger) has been reused and adjusted for this algorithm.

Author
Wolfgang Lukas <Wolfgang.Lukas -at- cern.ch>

Definition at line 61 of file EnergyLossExtrapolationValidation.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ EnergyLossExtrapolationValidation()

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

Standard Athena-Algorithm Constructor.

Definition at line 30 of file EnergyLossExtrapolationValidation.cxx.

32 : AthAlgorithm(name, pSvcLocator) {}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.

◆ ~EnergyLossExtrapolationValidation()

Trk::EnergyLossExtrapolationValidation::~EnergyLossExtrapolationValidation ( )

Default Destructor.

Definition at line 36 of file EnergyLossExtrapolationValidation.cxx.

36 {
37 // clear random number generators
38 delete m_gaussDist;
39 delete m_flatDist;
40 // clear data vectors
41 delete m_theCylinders;
42 delete m_theDiscs1;
43 delete m_theDiscs2;
44}
DataVector< const Trk::CylinderSurface > * m_theCylinders
DataVector< const Trk::DiscSurface > * m_theDiscs1
DataVector< const Trk::DiscSurface > * m_theDiscs2

Member Function Documentation

◆ createTransform()

std::unique_ptr< Amg::Transform3D > Trk::EnergyLossExtrapolationValidation::createTransform ( double x,
double y,
double z,
double phi = 0.,
double theta = 0.,
double alphaZ = 0. )
staticprivate

private helper method to create a Transform

Definition at line 455 of file EnergyLossExtrapolationValidation.cxx.

456 {
457 if (phi != 0. && theta != 0.) {
458 // create the Start Surface
459 Amg::Vector3D surfacePosition(x, y, z);
460 // z direction
461 Amg::Vector3D surfaceZdirection(cos(phi) * sin(theta),
462 sin(phi) * sin(theta),
463 cos(theta));
464 // the global z axis
465 Amg::Vector3D zAxis(0., 0., 1.);
466 // the y direction
467 Amg::Vector3D surfaceYdirection(zAxis.cross(surfaceZdirection));
468 // the x direction
469 Amg::Vector3D surfaceXdirection(surfaceYdirection.cross(surfaceZdirection));
470 // the rotation
471 Amg::RotationMatrix3D surfaceRotation;
472 surfaceRotation.col(0) = surfaceXdirection;
473 surfaceRotation.col(1) = surfaceYdirection;
474 surfaceRotation.col(2) = surfaceZdirection;
475 // return it
476 if (alphaZ == 0.) {
477 return std::make_unique<Amg::Transform3D>(surfaceRotation, surfacePosition);
478 }
479 Amg::Transform3D nominalTransform(surfaceRotation, surfacePosition);
480 return std::make_unique<Amg::Transform3D>(nominalTransform * Amg::AngleAxis3D(alphaZ, zAxis));
481 }
482
483 return std::make_unique<Amg::Transform3D>(Amg::Translation3D(x, y, z));
484}
Eigen::AngleAxisd AngleAxis3D
Eigen::Matrix< double, 3, 3 > RotationMatrix3D
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
Eigen::Translation< double, 3 > Translation3D
@ x
Definition ParamDefs.h:55
@ z
global position (cartesian)
Definition ParamDefs.h:57
@ theta
Definition ParamDefs.h:66
@ y
Definition ParamDefs.h:56
@ phi
Definition ParamDefs.h:75

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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< Gaudi::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::EnergyLossExtrapolationValidation::execute ( const EventContext & ctx)
virtual

standard Athena-Algorithm method

Implements AthAlgorithm.

Definition at line 203 of file EnergyLossExtrapolationValidation.cxx.

203 {
204 // get the overall dimensions
205 if (!m_highestVolume) {
206 // get TrackingGeometry and highest volume
207 const Trk::TrackingGeometry* trackingGeometry = m_extrapolator->trackingGeometry();
208 m_highestVolume = trackingGeometry ? trackingGeometry->highestTrackingVolume() : nullptr;
209 const Trk::CylinderVolumeBounds* cylBounds = m_highestVolume ?
210 dynamic_cast<const Trk::CylinderVolumeBounds*>(&(m_highestVolume->
211 volumeBounds())) :
212 nullptr;
213 // bail out
214 if (!cylBounds) {
215 ATH_MSG_WARNING("execute() No highest TrackingVolume / no VolumeBounds ... pretty useless!");
216 return StatusCode::SUCCESS;
217 }
218 }
219
220
221 m_entries = 0;
222 for (size_t par = 0; par < TRKEXALGS_MAXPARAMETERS; ++par) {
223 // -----------> start parameters
224
225 m_parameterP[par] = 0.;
226 m_energy[par] = 0.;
227 m_energyLoss[par] = 0.;
228 m_parameterX0[par] = 0.;
229 m_radius[par] = 0.;
230 m_positionX[par] = 0.;
231 m_positionY[par] = 0.;
232 m_positionZ[par] = 0.;
233 m_parameterEta[par] = 0.;
234 m_parameterPhi[par] = 0.;
235 m_parameterTheta[par] = 0.;
236 m_layer[par] = 0;
237 }
238
239 // the local start parameters
240 // are adopted for planar and straight line surfaces
241 m_parameterPhi[0] = M_PI * (2 * m_flatDist->shoot() - 1);
242 m_parameterEta[0] = m_minEta + m_flatDist->shoot() * (m_maxEta - m_minEta);
243 m_parameterTheta[0] = 2. * std::atan(std::exp(-m_parameterEta[0]));
244
245 double charge = -1.;
247 // convert transverse momentum (pt) to momentum (p) if flag is set: p = pt/sin(theta)
248 if (m_usePt) m_parameterP[0] /= std::sin(m_parameterTheta[0]);
250
252
253 double energy1 = sqrt(m_parameterP[0] * m_parameterP[0] + mass * mass);
254
255 double newX0 = 0;
256
257 const Trk::PerigeeSurface perigeeSurface;
258 // the initial perigee with random numbers
259 Trk::Perigee startParameters(0, // m_parameterLoc1[0],
260 0, // m_parameterLoc2[0],
264 perigeeSurface);
265
266 ATH_MSG_VERBOSE("execute() Start Parameters : " << startParameters);
268 "execute() Start Parameters : [phi,eta] = [ " << startParameters.momentum().phi() << ", " << startParameters.eta() <<
269 " ]");
270
271 // --------------- propagate to find an intersection ---------------------
272
273 // fill the TrackParameters vector with extrapolation from startParameters to dummy cylinder surface
274 std::unique_ptr<Trk::TrackParameters> lastParameters {};
275 std::unique_ptr<Trk::TrackParameters> newParameters {};
276
278 lastParameters = m_extrapolator->extrapolate(
279 ctx,
280 startParameters,
281 *(m_theCylinders->at(0)),
283 true,
284 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
285 } else { // material collection validation
286 // get the vector of TrackStateOnSurfaces back
287 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
288 m_extrapolator->extrapolateM(
289 ctx,
290 startParameters,
291 *(m_theCylinders->at(0)),
293 true,
294 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
295
296 // get the last one and clone it
297 if (collectedMaterial && !collectedMaterial->empty()) {
298 // get the last track state on surface & clone the destination parameters
299 const Trk::TrackStateOnSurface* destinationState = collectedMaterial->back();
300 lastParameters.reset(destinationState->trackParameters() ? destinationState->trackParameters()->clone() : nullptr);
301 m_collectedLayerForward += collectedMaterial->size();
302 // delete the layers / cleanup
303 for (const auto* tsos : *collectedMaterial) {
304 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
305 delete tsos;
306 }
307 ATH_MSG_VERBOSE("execute() newX0 = " << newX0);
308 }
309 }
310
311
312 for (size_t lay = 1; lay < m_cylinders + 1; ++lay) {
313 if (!m_onion) newX0 = 0;
314
315 if (m_onion) {
316 // safety check
317 if (!lastParameters) {
318 ATH_MSG_WARNING("execute() Layer " << lay << ": start parameters for cylinder NOT found - skip event !");
319 break;
320 }
321 ATH_MSG_VERBOSE("execute() Layer " << lay << ": start parameters for cylinder found: " << *lastParameters);
322 }
323
324 // trying to extrapolate to cylinder barrel
325 newParameters.reset();
327 newParameters = m_extrapolator->extrapolate(
328 ctx,
329 m_onion ? *lastParameters : startParameters,
330 *(m_theCylinders->at(lay)),
332 true,
333 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
334 } else { // material collection validation
335 // get the vector of TrackStateOnSurfaces back
336 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
337 m_extrapolator->extrapolateM(ctx,
338 m_onion ? *lastParameters : startParameters,
339 *(m_theCylinders->at(lay)),
341 true,
342 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
343
344 // get the last one and clone it
345 if (collectedMaterial && !collectedMaterial->empty()) {
346 // get the last track state on surface & clone the destination parameters
347 const Trk::TrackStateOnSurface* destinationState = collectedMaterial->back();
348 newParameters.reset(destinationState->trackParameters() ? destinationState->trackParameters()->clone() : nullptr);
349 if (m_onion) m_collectedLayerForward += collectedMaterial->size();
350 else m_collectedLayerForward = collectedMaterial->size(); // TODO: shouldn't there be something else here?
351 // delete the layers / cleanup
352 for (const auto* tsos : *collectedMaterial) {
353 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
354 delete tsos;
355 }
356 ATH_MSG_VERBOSE("execute() newX0 = " << newX0);
357 }
358 }
359
360 // no intersection with cylinder barrel, now trying disc endcaps
361 if (!newParameters) {
363 newParameters = m_extrapolator->extrapolate(
364 ctx,
365 m_onion ? *lastParameters : startParameters,
366 (m_parameterEta[0] < 0) ? *(m_theDiscs1->at(lay))
367 : *(m_theDiscs2->at(lay)),
369 true,
370 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
371 } else { // material collection validation
372 // get the vector of TrackStateOnSurfaces back
373 const std::vector<const Trk::TrackStateOnSurface*>* collectedMaterial =
374 m_extrapolator->extrapolateM(ctx,
375 m_onion ? *lastParameters : startParameters,
376 (m_parameterEta[0] < 0) ? *(m_theDiscs1->at(lay)) : *(m_theDiscs2->at(lay)),
378 true,
379 static_cast<Trk::ParticleHypothesis>(m_particleType.value()));
380
381 // get the last one and clone it
382 if (collectedMaterial && !collectedMaterial->empty()) {
383 // get the last track state on surface & clone the destination parameters
384 const Trk::TrackStateOnSurface* destinationState = collectedMaterial->back();
385 newParameters.reset(
386 destinationState->trackParameters() ? destinationState->trackParameters()->clone() : nullptr);
387 if (m_onion) m_collectedLayerForward += collectedMaterial->size();
388 else m_collectedLayerForward = collectedMaterial->size(); // TODO: shouldn't there be something else here?
389 // delete the layers / cleanup
390 for (const auto* tsos : *collectedMaterial) {
391 newX0 += tsos->materialEffectsOnTrack() ? tsos->materialEffectsOnTrack()->thicknessInX0() : 0;
392 delete tsos;
393 }
394 ATH_MSG_VERBOSE("execute() newX0 = " << newX0);
395 }
396 }
397 }
398
399 // still no intersection
400 if (!newParameters) {
401 ATH_MSG_WARNING("execute() Layer " << lay << " intersection did not work !");
402 } else if (m_highestVolume && newParameters && !(m_highestVolume->inside(newParameters->position()))) {
403 ATH_MSG_WARNING("execute() Layer " << lay << " intersection is outside the known world !");
404 } else {
405 // get the current surface intersection position
406 const Amg::Vector3D& newPosition = newParameters->position();
407 ATH_MSG_VERBOSE("execute() Track Parameters at layer " << lay << ": " << *newParameters);
409 "execute() Track Parameters at layer " << lay << ": [r,z] = [ " << newPosition.perp() << ", " <<
410 newPosition.z());
411
412 // record the surface parameters
414 ++m_entries;
415 m_parameterPhi[m_entries] = newParameters->parameters()[Trk::phi];
416 m_parameterEta[m_entries] = newParameters->momentum().eta();
417 m_parameterTheta[m_entries] = newParameters->parameters()[Trk::theta];
418 m_parameterP[m_entries] = newParameters->momentum().mag();
419 m_parameterX0[m_entries] = (float) newX0;
420 ATH_MSG_DEBUG("execute() Layer " << lay << ": cumulated X0 = " << m_parameterX0[m_entries]);
421
422 // get the current energy and calculate energy loss
425 ATH_MSG_DEBUG("execute() Layer " << lay << ": cumulated Energy Loss = " << m_energyLoss[m_entries]);
426
427 // record the current layer ID
428 m_layer[m_entries] = lay;
429 // record the current position
430 m_radius[m_entries] = newPosition.perp();
431 m_positionX[m_entries] = newPosition.x();
432 m_positionY[m_entries] = newPosition.y();
433 m_positionZ[m_entries] = newPosition.z();
434 }
435 lastParameters = std::move(newParameters);
436 }
437
438
440 ++m_events;
441 // increase m_entries once more before the fill (to account for the "start layer" at index 0 with initial track
442 // parameters)
443 ++m_entries;
444
445 // fill the event tree
447
448 // memory cleanup
449 ATH_MSG_DEBUG("execute() deleting DataVector parameters ... ");
450
451 return StatusCode::SUCCESS;
452}
#define M_PI
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
double charge(const T &p)
Definition AtlasPID.h:1003
#define TRKEXALGS_MAXPARAMETERS
ToolHandle< IExtrapolator > m_extrapolator
The Extrapolator to be retrieved.
float m_parameterX0[TRKEXALGS_MAXPARAMETERS]
thickness in X0
size_t m_collectedLayerForward
collected material layers forward
size_t m_entries
effective number of used entries (recorded layers) in this event
float m_positionZ[TRKEXALGS_MAXPARAMETERS]
position Z
int m_totalRecordedLayers
total number of recorded layers
const TrackingVolume * m_highestVolume
the highest volume
size_t m_layer[TRKEXALGS_MAXPARAMETERS]
layer id
float m_positionX[TRKEXALGS_MAXPARAMETERS]
position X
float m_positionY[TRKEXALGS_MAXPARAMETERS]
position Y
float m_energyLoss[TRKEXALGS_MAXPARAMETERS]
energy loss
float m_parameterQoverP[TRKEXALGS_MAXPARAMETERS]
qOverP
float m_radius[TRKEXALGS_MAXPARAMETERS]
position radius
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
const TrackingVolume * highestTrackingVolume() const
return the world
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses
@ alongMomentum
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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 & AthCommonAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 89 of file AthCommonAlgorithm.cxx.

54{
55 // If we didn't find any symlinks to add, just return the collection
56 // from the base class. Otherwise, return the extended collection.
57 if (!m_extendedExtraObjects.empty()) {
59 }
61}
Common base class for algorithms.

◆ filterPassed()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Get filter decision:

Definition at line 93 of file AthCommonAlgorithm.h.

93 {
94 return execState( ctx ).filterPassed();
95 }
virtual bool filterPassed(const EventContext &ctx) const
Get filter decision:

◆ finalize()

StatusCode Trk::EnergyLossExtrapolationValidation::finalize ( )

standard Athena-Algorithm method

Definition at line 177 of file EnergyLossExtrapolationValidation.cxx.

177 {
178 // Code entered here will be executed once at the end of the program run.
179 ATH_MSG_INFO("finalize() ================== Output Statistics =========================");
180 ATH_MSG_INFO("finalize() = Navigation : ");
181 ATH_MSG_INFO("finalize() = - breaks fwd : " << static_cast<double>(m_breaksForward) /
182 static_cast<double>(m_triesForward)
183 << " (" << m_breaksForward << "/" << m_triesForward << ")");
184 ATH_MSG_INFO("finalize() = - breaks bwd : " << static_cast<double>(m_breaksBack) / static_cast<double>(m_triesBack)
185 << " (" << m_breaksBack << "/" << m_triesBack << ")");
187 ATH_MSG_INFO("finalize() = Material collection : ");
188 ATH_MSG_INFO("finalize() = - layer collected fwd : " << m_collectedLayerForward);
189 ATH_MSG_INFO("finalize() = - layer collected bwd : " << m_collectedLayerBack);
190 }
191 ATH_MSG_INFO("finalize() ==============================================================");
192
193 m_avgRecordedLayers = m_events ? static_cast<float>(m_totalRecordedLayers) / static_cast<float>(m_events) : 0;
194 ++m_cylinders;
196 --m_cylinders;
197
198 return StatusCode::SUCCESS;
199}
#define ATH_MSG_INFO(x,...)
float m_avgRecordedLayers
average recorded layers per event
size_t m_collectedLayerBack
collected material layers backward

◆ initialize()

StatusCode Trk::EnergyLossExtrapolationValidation::initialize ( )

standard Athena-Algorithm method

Definition at line 48 of file EnergyLossExtrapolationValidation.cxx.

48 {
49 // Code entered here will be executed once at program start.
50 ATH_MSG_INFO("initialize()");
51 ATH_MSG_DEBUG("initialize() m_materialCollectionValidation = " << m_materialCollectionValidation);
52
53 // Get Extrapolator from ToolService
54 if (m_extrapolator.retrieve().isFailure()) {
55 ATH_MSG_FATAL("initialize() Could not retrieve Tool " << m_extrapolator << ". Exiting.");
56 return StatusCode::FAILURE;
57 }
58
59 // create the new Trees
60 m_validationTree = new TTree(m_validationTreeName.value().c_str(),
61 m_validationTreeDescription.value().c_str());
62 m_validationRunTree = new TTree(m_validationRunTreeName.value().c_str(),
63 m_validationRunTreeDescription.value().c_str());
64
65 // the branches for the parameters
66 m_validationTree->Branch("Entries", &m_entries, "entries/i");
67 m_validationTree->Branch("Energy", m_energy, "energy[entries]/F");
68 m_validationTree->Branch("EnergyLoss", m_energyLoss, "eLoss[entries]/F");
69 m_validationTree->Branch("tInX0", m_parameterX0, "tinX0[entries]/F");
70 m_validationTree->Branch("Radius", m_radius, "radius[entries]/F");
71 m_validationTree->Branch("PosX", m_positionX, "posX[entries]/F");
72 m_validationTree->Branch("PosY", m_positionY, "posY[entries]/F");
73 m_validationTree->Branch("PosZ", m_positionZ, "posZ[entries]/F");
74 m_validationTree->Branch("Eta", m_parameterEta, "eta[entries]/F");
75 m_validationTree->Branch("Phi", m_parameterPhi, "phi[entries]/F");
76 m_validationTree->Branch("Layer", m_layer, "layer[entries]/i");
77
78 m_validationRunTree->Branch("Layers", &m_cylinders, "layers/i");
79 m_validationRunTree->Branch("CylR", m_cylinderR, "cylR[layers]/F");
80 m_validationRunTree->Branch("CylZ", m_cylinderZ, "cylZ[layers]/F");
81 m_validationRunTree->Branch("Momentum", &m_momentum, "momentum/F");
82 m_validationRunTree->Branch("UsePt", &m_usePt, "usePt/O");
83 m_validationRunTree->Branch("MinEta", &m_minEta, "minEta/F");
84 m_validationRunTree->Branch("MaxEta", &m_maxEta, "maxEta/F");
85 m_validationRunTree->Branch("PDG", &m_pdg, "pdg/I");
86 m_validationRunTree->Branch("Events", &m_events, "events/i");
87 m_validationRunTree->Branch("AvgRecordedLayers", &m_avgRecordedLayers, "avgRecLayers/F");
88
89 // now register the Trees
90 SmartIF<ITHistSvc> tHistSvc {
91 service("THistSvc")
92 };
93 if (!tHistSvc) {
94 ATH_MSG_ERROR("initialize() Could not find Hist Service -> Switching ValidationMode Off !");
95 delete m_validationTree;
96 m_validationTree = nullptr;
98 m_validationRunTree = nullptr;
99 }
100 if ((tHistSvc->regTree(m_validationTreeFolder, m_validationTree)).isFailure()
101 || (tHistSvc->regTree(m_validationRunTreeFolder, m_validationRunTree)).isFailure()) {
102 ATH_MSG_ERROR("initialize() Could not register the validation Trees -> Switching ValidationMode Off !");
103 delete m_validationTree;
104 m_validationTree = nullptr;
105 delete m_validationRunTree;
106 m_validationRunTree = nullptr;
107 }
108
109 // initialize the random number generators
110 ATH_MSG_INFO("initialize() RandomService = " << randSvc()->name());
111 m_gaussDist = new Rndm::Numbers(randSvc(), Rndm::Gauss(0., 1.));
112 m_flatDist = new Rndm::Numbers(randSvc(), Rndm::Flat(0., 1.));
113
114 // initialize cylinders if they are not set in jobOptions
115 double const s_cylInitR[TRKEXALGS_MAXPARAMETERS] = {
116 0.5, 34.5, 250, 550, 1120, 4250, 13000, 0, 0, 0
117 };
118 double const s_cylInitZ[TRKEXALGS_MAXPARAMETERS] = {
119 100, 10e6, 680, 2820, 3120, 6500, 22000, 0, 0, 0
120 };
121
122 // output of vector from jobOptions
123 ATH_MSG_INFO("initialize() cylinder dimensions vector from jobOptions :");
124 for (size_t lay = 0; lay < m_cylinders + 1; ++lay) {
126 "initialize() m_cylinderVR[" << lay << "] = " << m_cylinderVR[lay] << "\t ... m_cylinderVZ[" << lay << "] = " <<
127 m_cylinderVZ[lay]);
128 }
129 // transform vector (from jobOptions) into array (for ROOT tree)
130 ATH_MSG_INFO("initialize() cylinder dimensions array for algorithm and ROOT tree :");
131 for (size_t lay = 0; lay < m_cylinders + 1; ++lay) {
132 m_cylinderR[lay] = m_cylinderVR[lay] > 0 ? m_cylinderVR[lay] : s_cylInitR[lay];
133 m_cylinderZ[lay] = m_cylinderVZ[lay] > 0 ? m_cylinderVZ[lay] : s_cylInitZ[lay];
134 // in "strict onion mode", constrain m_cylinders if the values don't make sense
135 if (m_onion && lay > 0 && (m_cylinderR[lay] < m_cylinderR[lay - 1])) {
137 "initialize() layer " << lay << "dimensions are smaller than those of layer " << lay - 1 << " - constraining m_cylinders to " << lay -
138 1);
139 ATH_MSG_INFO("initialize() cutting off here :");
141 "initialize() m_cylinderR[" << lay << "] = " << m_cylinderR[lay] << "\t ... m_cylinderZ[" << lay << "] = " <<
142 m_cylinderZ[lay]);
143 m_cylinders = lay - 1;
144 break;
145 }
147 "initialize() m_cylinderR[" << lay << "] = " << m_cylinderR[lay] << "\t ... m_cylinderZ[" << lay << "] = " <<
148 m_cylinderZ[lay]);
149 }
150
151 // fill data vector with cylinders once (in order not to create them every time)
152 m_theCylinders = new DataVector<const Trk::CylinderSurface>();
153 m_theDiscs1 = new DataVector<const Trk::DiscSurface>();
154 m_theDiscs2 = new DataVector<const Trk::DiscSurface>();
155 for (size_t lay = 0; lay < m_cylinders + 1; ++lay) {
156 m_theCylinders->push_back(new Trk::CylinderSurface(Amg::Transform3D(), m_cylinderR[lay], m_cylinderZ[lay]));
157 ATH_MSG_INFO("initialize() Cylinder " << lay << ": " << *m_theCylinders->at(lay));
158 m_theDiscs1->push_back(new Trk::DiscSurface(*createTransform(0., 0., -m_cylinderZ[lay]), 0., m_cylinderR[lay]));
159 ATH_MSG_INFO("initialize() Disc1 " << lay << ": " << *m_theDiscs1->at(lay));
160 m_theDiscs2->push_back(new Trk::DiscSurface(*createTransform(0., 0., m_cylinderZ[lay]), 0., m_cylinderR[lay]));
161 ATH_MSG_INFO("initialize() Disc2 " << lay << ": " << *m_theDiscs2->at(lay));
162 }
163
164 if (m_particleType == 0) m_pdg = 999; // geantino
165 else if (m_particleType == 1) m_pdg = 11; // electron
166 else if (m_particleType == 2) m_pdg = 13; // muon-
167 else if (m_particleType == 3) m_pdg = 211; // pion+
168 else if (m_particleType == 4) m_pdg = 321; // kaon+
169 ATH_MSG_INFO("initialize() ParticleType = " << m_particleType << " ... PDG = " << m_pdg);
170
171 ATH_MSG_INFO("initialize() successful");
172 return StatusCode::SUCCESS;
173}
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_FATAL(x,...)
static std::unique_ptr< Amg::Transform3D > createTransform(double x, double y, double z, double phi=0., double theta=0., double alphaZ=0.)
private helper method to create a Transform
int m_pdg
PDG code corresponding to m_particleType.
float m_cylinderZ[TRKEXALGS_MAXPARAMETERS]
length of cylinder layers (for ROOT tree)
float m_cylinderR[TRKEXALGS_MAXPARAMETERS]
radius of cylinder layers (for ROOT tree)

◆ inputHandles()

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

◆ isClonable()

virtual bool AthCommonAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
inlineoverridevirtualinherited

Specify if the algorithm is clonable.

Only relevant for non-reentrant algorithms. Actual number of clones needs to be set via the "Cardinality" property.

Reimplemented in AFP_DigiTop, AlgB, AlgT, BCM_Digitization, CscDigitBuilder, CscDigitToCscRDO, G4AtlasAlg, G4RunAlg, HGTD_Digitization, HiveAlgBase, InDet::GNNSeedingTrackMaker, InDet::SCT_Clusterization, InDet::SiSPGNNTrackMaker, InDet::SiSPSeededTrackFinder, InDet::SiTrackerSpacePointFinder, ISF::SimKernelMT, ITk::StripDigitization, ITkPixelCablingAlg, ITkStripCablingAlg, LArHitEMapMaker, LArTTL1Maker, LUCID_DigiTop, LVL1::L1TopoSimulation, MergeCalibHits, MergeGenericMuonSimHitColl, MergeHijingPars, MergeMcEventCollection, MergeTrackRecordCollection, MergeTruthJets, MergeTruthParticles, MuonDigitizer, PileUpMTAlg, PixelDigitization, RoIBResultToxAOD, SCT_ByteStreamErrorsTestAlg, SCT_CablingCondAlgFromCoraCool, SCT_CablingCondAlgFromText, SCT_ConditionsParameterTestAlg, SCT_ConditionsSummaryTestAlg, SCT_ConfigurationConditionsTestAlg, SCT_Digitization, SCT_FlaggedConditionTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_PrepDataToxAOD, SCT_RawDataToxAOD, SCT_ReadCalibChipDataTestAlg, SCT_ReadCalibDataTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_SiliconConditionsTestAlg, SCT_StripVetoTestAlg, SCT_TdaqEnabledTestAlg, SCT_TestCablingAlg, SCTEventFlagWriter, SCTRawDataProvider, SCTSiLorentzAngleTestAlg, SCTSiPropertiesTestAlg, SGInputLoader, Simulation::BeamEffectsAlg, TileHitVecToCnt, TileMuonFitter, TilePulseForTileMuonReceiver, TileRawChannelMaker, TRTDigitization, and ZDC_DigiTop.

Definition at line 68 of file AthCommonAlgorithm.h.

68 {
69 return true;
70 }

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 47 of file AthAlgorithm.h.

47{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Set filter decision:

Reimplemented in AthFilterAlgorithm.

Definition at line 99 of file AthCommonAlgorithm.h.

99 {
101 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const
Set filter decision:

◆ sysExecute()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Reimplemented in AthAnalysisAlgorithm.

Definition at line 80 of file AthCommonAlgorithm.cxx.

41{
42 return BaseAlg::sysExecute (ctx);
43}

◆ sysInitialize()

StatusCode AthCommonAlgorithm< Gaudi::Algorithm >::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< Gaudi::Algorithm > >.

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

Definition at line 60 of file AthCommonAlgorithm.cxx.

71 {
73
74 if (sc.isFailure()) {
75 return sc;
76 }
77
78 ServiceHandle<ICondSvc> cs("CondSvc",name());
79 for (auto h : outputHandles()) {
80 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
81 // do this inside the loop so we don't create the CondSvc until needed
82 if ( cs.retrieve().isFailure() ) {
83 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
85 }
86 if (cs->regHandle(this,*h).isFailure()) {
88 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
89 << " with CondSvc");
90 }
91 }
92 }
93 return sc;
94}
virtual StatusCode sysInitialize() override
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

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

Member Data Documentation

◆ m_avgRecordedLayers

float Trk::EnergyLossExtrapolationValidation::m_avgRecordedLayers = 0
private

average recorded layers per event

Definition at line 138 of file EnergyLossExtrapolationValidation.h.

◆ m_breaksBack

size_t Trk::EnergyLossExtrapolationValidation::m_breaksBack = 0
private

extrapolation breaks backward

Definition at line 164 of file EnergyLossExtrapolationValidation.h.

◆ m_breaksForward

size_t Trk::EnergyLossExtrapolationValidation::m_breaksForward = 0
private

extrapolation breaks forward

Definition at line 162 of file EnergyLossExtrapolationValidation.h.

◆ m_collectedLayerBack

size_t Trk::EnergyLossExtrapolationValidation::m_collectedLayerBack = 0
private

collected material layers backward

Definition at line 167 of file EnergyLossExtrapolationValidation.h.

◆ m_collectedLayerForward

size_t Trk::EnergyLossExtrapolationValidation::m_collectedLayerForward = 0
private

collected material layers forward

Definition at line 166 of file EnergyLossExtrapolationValidation.h.

◆ m_cylinderR

float Trk::EnergyLossExtrapolationValidation::m_cylinderR[TRKEXALGS_MAXPARAMETERS] {}
private

radius of cylinder layers (for ROOT tree)

Definition at line 171 of file EnergyLossExtrapolationValidation.h.

171{};

◆ m_cylinders

UnsignedIntegerProperty Trk::EnergyLossExtrapolationValidation::m_cylinders
private
Initial value:
{this, "ValidationCylinders", 6,
"number of cylinder layers"}

Definition at line 125 of file EnergyLossExtrapolationValidation.h.

125 {this, "ValidationCylinders", 6,
126 "number of cylinder layers"};

◆ m_cylinderVR

FloatArrayProperty Trk::EnergyLossExtrapolationValidation::m_cylinderVR
private
Initial value:
{this, "ValidationCylinderR", {},
"radius of cylinder layers"}

Definition at line 176 of file EnergyLossExtrapolationValidation.h.

176 {this, "ValidationCylinderR", {},
177 "radius of cylinder layers"};

◆ m_cylinderVZ

FloatArrayProperty Trk::EnergyLossExtrapolationValidation::m_cylinderVZ
private
Initial value:
{this, "ValidationCylinderZ", {},
"length of cylinder layers"}

Definition at line 178 of file EnergyLossExtrapolationValidation.h.

178 {this, "ValidationCylinderZ", {},
179 "length of cylinder layers"};

◆ m_cylinderZ

float Trk::EnergyLossExtrapolationValidation::m_cylinderZ[TRKEXALGS_MAXPARAMETERS] {}
private

length of cylinder layers (for ROOT tree)

Definition at line 172 of file EnergyLossExtrapolationValidation.h.

172{};

◆ m_detStore

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

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_energy

float Trk::EnergyLossExtrapolationValidation::m_energy[TRKEXALGS_MAXPARAMETERS] {}
private

energy

Definition at line 146 of file EnergyLossExtrapolationValidation.h.

146{};

◆ m_energyLoss

float Trk::EnergyLossExtrapolationValidation::m_energyLoss[TRKEXALGS_MAXPARAMETERS] {}
private

energy loss

Definition at line 147 of file EnergyLossExtrapolationValidation.h.

147{};

◆ m_entries

size_t Trk::EnergyLossExtrapolationValidation::m_entries = 0
private

effective number of used entries (recorded layers) in this event

Definition at line 145 of file EnergyLossExtrapolationValidation.h.

◆ m_events

size_t Trk::EnergyLossExtrapolationValidation::m_events = 0
private

total number of recorded events

Definition at line 136 of file EnergyLossExtrapolationValidation.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 108 of file AthCommonAlgorithm.h.

◆ m_extrapolator

ToolHandle<IExtrapolator> Trk::EnergyLossExtrapolationValidation::m_extrapolator {this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"}
private

The Extrapolator to be retrieved.

Definition at line 90 of file EnergyLossExtrapolationValidation.h.

91{this, "Extrapolator", "Trk::Extrapolator/AtlasExtrapolator"};

◆ m_flatDist

Rndm::Numbers* Trk::EnergyLossExtrapolationValidation::m_flatDist = nullptr
private

Definition at line 95 of file EnergyLossExtrapolationValidation.h.

◆ m_gaussDist

Rndm::Numbers* Trk::EnergyLossExtrapolationValidation::m_gaussDist = nullptr
private

Random Number setup.

Definition at line 94 of file EnergyLossExtrapolationValidation.h.

◆ m_highestVolume

const TrackingVolume* Trk::EnergyLossExtrapolationValidation::m_highestVolume = nullptr
private

the highest volume

Definition at line 87 of file EnergyLossExtrapolationValidation.h.

◆ m_layer

size_t Trk::EnergyLossExtrapolationValidation::m_layer[TRKEXALGS_MAXPARAMETERS] {}
private

layer id

Definition at line 158 of file EnergyLossExtrapolationValidation.h.

158{};

◆ m_materialCollectionValidation

BooleanProperty Trk::EnergyLossExtrapolationValidation::m_materialCollectionValidation
private
Initial value:
{this, "UseMaterialCollection", false,
"use the material collection (extrapolateM)"}

Definition at line 97 of file EnergyLossExtrapolationValidation.h.

98 {this, "UseMaterialCollection", false,
99 "use the material collection (extrapolateM)"};

◆ m_maxEta

FloatProperty Trk::EnergyLossExtrapolationValidation::m_maxEta {this, "StartPerigeeMaxEta", 3.}
private

Definition at line 134 of file EnergyLossExtrapolationValidation.h.

134{this, "StartPerigeeMaxEta", 3.};

◆ m_minEta

FloatProperty Trk::EnergyLossExtrapolationValidation::m_minEta {this, "StartPerigeeMinEta", -3.}
private

Definition at line 133 of file EnergyLossExtrapolationValidation.h.

133{this, "StartPerigeeMinEta", -3.};

◆ m_momentum

FloatProperty Trk::EnergyLossExtrapolationValidation::m_momentum
private
Initial value:
{this, "StartPerigeeMomentum",
10.*Gaudi::Units::GeV}

Definition at line 129 of file EnergyLossExtrapolationValidation.h.

129 {this, "StartPerigeeMomentum",
130 10.*Gaudi::Units::GeV};

◆ m_onion

BooleanProperty Trk::EnergyLossExtrapolationValidation::m_onion
private
Initial value:
{this, "StrictOnionMode", true,
"strictly hierarchical ordering (onion-like)"}

Definition at line 127 of file EnergyLossExtrapolationValidation.h.

127 {this, "StrictOnionMode", true,
128 "strictly hierarchical ordering (onion-like)"};

◆ m_parameterEta

float Trk::EnergyLossExtrapolationValidation::m_parameterEta[TRKEXALGS_MAXPARAMETERS] {}
private

eta

Definition at line 154 of file EnergyLossExtrapolationValidation.h.

154{};

◆ m_parameterP

float Trk::EnergyLossExtrapolationValidation::m_parameterP[TRKEXALGS_MAXPARAMETERS] {}
private

P.

Definition at line 157 of file EnergyLossExtrapolationValidation.h.

157{};

◆ m_parameterPhi

float Trk::EnergyLossExtrapolationValidation::m_parameterPhi[TRKEXALGS_MAXPARAMETERS] {}
private

phi

Definition at line 153 of file EnergyLossExtrapolationValidation.h.

153{};

◆ m_parameterQoverP

float Trk::EnergyLossExtrapolationValidation::m_parameterQoverP[TRKEXALGS_MAXPARAMETERS] {}
private

qOverP

Definition at line 156 of file EnergyLossExtrapolationValidation.h.

156{};

◆ m_parameterTheta

float Trk::EnergyLossExtrapolationValidation::m_parameterTheta[TRKEXALGS_MAXPARAMETERS] {}
private

theta

Definition at line 155 of file EnergyLossExtrapolationValidation.h.

155{};

◆ m_parameterX0

float Trk::EnergyLossExtrapolationValidation::m_parameterX0[TRKEXALGS_MAXPARAMETERS] {}
private

thickness in X0

Definition at line 148 of file EnergyLossExtrapolationValidation.h.

148{};

◆ m_particleType

IntegerProperty Trk::EnergyLossExtrapolationValidation::m_particleType
private
Initial value:
{this, "ParticleType", 2,
"the particle type for the extrapolation"}

Definition at line 141 of file EnergyLossExtrapolationValidation.h.

141 {this, "ParticleType", 2,
142 "the particle type for the extrapolation"};

◆ m_pdg

int Trk::EnergyLossExtrapolationValidation::m_pdg = 0
private

PDG code corresponding to m_particleType.

Definition at line 140 of file EnergyLossExtrapolationValidation.h.

◆ m_positionX

float Trk::EnergyLossExtrapolationValidation::m_positionX[TRKEXALGS_MAXPARAMETERS] {}
private

position X

Definition at line 150 of file EnergyLossExtrapolationValidation.h.

150{};

◆ m_positionY

float Trk::EnergyLossExtrapolationValidation::m_positionY[TRKEXALGS_MAXPARAMETERS] {}
private

position Y

Definition at line 151 of file EnergyLossExtrapolationValidation.h.

151{};

◆ m_positionZ

float Trk::EnergyLossExtrapolationValidation::m_positionZ[TRKEXALGS_MAXPARAMETERS] {}
private

position Z

Definition at line 152 of file EnergyLossExtrapolationValidation.h.

152{};

◆ m_radius

float Trk::EnergyLossExtrapolationValidation::m_radius[TRKEXALGS_MAXPARAMETERS] {}
private

position radius

Definition at line 149 of file EnergyLossExtrapolationValidation.h.

149{};

◆ m_theCylinders

DataVector<const Trk::CylinderSurface>* Trk::EnergyLossExtrapolationValidation::m_theCylinders = nullptr
private

Definition at line 173 of file EnergyLossExtrapolationValidation.h.

◆ m_theDiscs1

DataVector<const Trk::DiscSurface>* Trk::EnergyLossExtrapolationValidation::m_theDiscs1 = nullptr
private

Definition at line 174 of file EnergyLossExtrapolationValidation.h.

◆ m_theDiscs2

DataVector<const Trk::DiscSurface>* Trk::EnergyLossExtrapolationValidation::m_theDiscs2 = nullptr
private

Definition at line 175 of file EnergyLossExtrapolationValidation.h.

◆ m_totalRecordedLayers

int Trk::EnergyLossExtrapolationValidation::m_totalRecordedLayers = 0
private

total number of recorded layers

Definition at line 137 of file EnergyLossExtrapolationValidation.h.

◆ m_triesBack

size_t Trk::EnergyLossExtrapolationValidation::m_triesBack = 0
private

extrapolation events backward

Definition at line 163 of file EnergyLossExtrapolationValidation.h.

◆ m_triesForward

size_t Trk::EnergyLossExtrapolationValidation::m_triesForward = 0
private

extrapolation events forward

Definition at line 161 of file EnergyLossExtrapolationValidation.h.

◆ m_usePt

BooleanProperty Trk::EnergyLossExtrapolationValidation::m_usePt
private
Initial value:
{this, "StartPerigeeUsePt", true,
"use pt instead of p"}

Definition at line 131 of file EnergyLossExtrapolationValidation.h.

131 {this, "StartPerigeeUsePt", true,
132 "use pt instead of p"};

◆ m_validationRunTree

TTree* Trk::EnergyLossExtrapolationValidation::m_validationRunTree = nullptr
private

Root Run Stats Tree.

Definition at line 102 of file EnergyLossExtrapolationValidation.h.

◆ m_validationRunTreeDescription

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationRunTreeDescription
private
Initial value:
{this, "ValidationRunTreeDescription",
"Run stats of the EnergyLossExtrapolationValidation Algorithm",
"run stats tree description - second argument in TTree"}

Definition at line 120 of file EnergyLossExtrapolationValidation.h.

121 {this, "ValidationRunTreeDescription",
122 "Run stats of the EnergyLossExtrapolationValidation Algorithm",
123 "run stats tree description - second argument in TTree"};

◆ m_validationRunTreeFolder

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationRunTreeFolder
private
Initial value:
{this, "ValidationRunTreeFolder", "/val/RunTreeTG",
"stream/folder to for the second TTree to be written out"}

Definition at line 114 of file EnergyLossExtrapolationValidation.h.

115 {this, "ValidationRunTreeFolder", "/val/RunTreeTG",
116 "stream/folder to for the second TTree to be written out"};

◆ m_validationRunTreeName

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationRunTreeName
private
Initial value:
{this, "ValidationRunTreeName", "RunTreeTG",
"run stats tree name - to be accessed by this from root"}

Definition at line 117 of file EnergyLossExtrapolationValidation.h.

118 {this, "ValidationRunTreeName", "RunTreeTG",
119 "run stats tree name - to be accessed by this from root"};

◆ m_validationTree

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

Root Validation Tree.

Definition at line 101 of file EnergyLossExtrapolationValidation.h.

◆ m_validationTreeDescription

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationTreeDescription
private
Initial value:
{this, "ValidationTreeDescription",
"Event output of the EnergyLossExtrapolationValidation Algorithm",
"validation tree description - second argument in TTree"}

Definition at line 110 of file EnergyLossExtrapolationValidation.h.

111 {this, "ValidationTreeDescription",
112 "Event output of the EnergyLossExtrapolationValidation Algorithm",
113 "validation tree description - second argument in TTree"};

◆ m_validationTreeFolder

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationTreeFolder
private
Initial value:
{this, "ValidationTreeFolder", "/val/EventTreeTG",
"stream/folder to for the TTree to be written out"}

Definition at line 104 of file EnergyLossExtrapolationValidation.h.

105 {this, "ValidationTreeFolder", "/val/EventTreeTG",
106 "stream/folder to for the TTree to be written out"};

◆ m_validationTreeName

StringProperty Trk::EnergyLossExtrapolationValidation::m_validationTreeName
private
Initial value:
{this, "ValidationTreeName", "EventTreeTG",
"validation tree name - to be accessed by this from root"}

Definition at line 107 of file EnergyLossExtrapolationValidation.h.

108 {this, "ValidationTreeName", "EventTreeTG",
109 "validation tree name - to be accessed by this from root"};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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