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 const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
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
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) 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
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.

31 : AthAlgorithm(name,pSvcLocator) {}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:

◆ ~EnergyLossExtrapolationValidation()

Trk::EnergyLossExtrapolationValidation::~EnergyLossExtrapolationValidation ( )

Default Destructor.

Definition at line 35 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
45}
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 459 of file EnergyLossExtrapolationValidation.cxx.

461{
462
463 if (phi!=0. && theta != 0.){
464 // create the Start Surface
465 Amg::Vector3D surfacePosition(x,y,z);
466 // z direction
467 Amg::Vector3D surfaceZdirection(cos(phi)*sin(theta),
468 sin(phi)*sin(theta),
469 cos(theta));
470 // the global z axis
471 Amg::Vector3D zAxis(0.,0.,1.);
472 // the y direction
473 Amg::Vector3D surfaceYdirection(zAxis.cross(surfaceZdirection));
474 // the x direction
475 Amg::Vector3D surfaceXdirection(surfaceYdirection.cross(surfaceZdirection));
476 // the rotation
477 Amg::RotationMatrix3D surfaceRotation;
478 surfaceRotation.col(0) = surfaceXdirection;
479 surfaceRotation.col(1) = surfaceYdirection;
480 surfaceRotation.col(2) = surfaceZdirection;
481 // return it
482 if (alphaZ==0.){
483 return std::make_unique<Amg::Transform3D>(surfaceRotation, surfacePosition);
484 }
485 Amg::Transform3D nominalTransform(surfaceRotation, surfacePosition);
486 return std::make_unique<Amg::Transform3D>(nominalTransform*Amg::AngleAxis3D(alphaZ,zAxis));
487
488 }
489
490 return std::make_unique<Amg::Transform3D>(Amg::Translation3D(x,y,z));
491}
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 189 of file EnergyLossExtrapolationValidation.cxx.

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

◆ 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 & 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

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode Trk::EnergyLossExtrapolationValidation::finalize ( )

standard Athena-Algorithm method

Definition at line 162 of file EnergyLossExtrapolationValidation.cxx.

163{
164 // Code entered here will be executed once at the end of the program run.
165 ATH_MSG_INFO( "finalize() ================== Output Statistics =========================" );
166 ATH_MSG_INFO( "finalize() = Navigation : " );
167 ATH_MSG_INFO( "finalize() = - breaks fwd : " << static_cast<double>(m_breaksForward)/static_cast<double>(m_triesForward)
168 << " (" << m_breaksForward << "/" << m_triesForward << ")" );
169 ATH_MSG_INFO( "finalize() = - breaks bwd : " << static_cast<double>(m_breaksBack)/static_cast<double>(m_triesBack)
170 << " (" << m_breaksBack << "/" << m_triesBack << ")" );
172 ATH_MSG_INFO( "finalize() = Material collection : " );
173 ATH_MSG_INFO( "finalize() = - layer collected fwd : " << m_collectedLayerForward );
174 ATH_MSG_INFO( "finalize() = - layer collected bwd : " << m_collectedLayerBack );
175 }
176 ATH_MSG_INFO( "finalize() ==============================================================" );
177
178 m_avgRecordedLayers = m_events ? static_cast<float>(m_totalRecordedLayers) / static_cast<float>(m_events) : 0;
179 ++m_cylinders;
181 m_validationRunTree->Fill();
182 --m_cylinders;
183
184 return StatusCode::SUCCESS;
185}
#define ATH_MSG_INFO(x)
float m_avgRecordedLayers
average recorded layers per event
size_t m_collectedLayerBack
collected material layers backward

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initialize()

StatusCode Trk::EnergyLossExtrapolationValidation::initialize ( )

standard Athena-Algorithm method

Definition at line 50 of file EnergyLossExtrapolationValidation.cxx.

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

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ 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() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}
void setFilterPassed(bool state) const

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ 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< Gaudi::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}
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ 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 AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 114 of file AthAlgorithm.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: