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 ()
 standard Athena-Algorithm method
StatusCode finalize ()
 standard Athena-Algorithm method
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

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

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

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< 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()
Default constructor:

◆ ~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 460 of file EnergyLossExtrapolationValidation.cxx.

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode Trk::EnergyLossExtrapolationValidation::execute ( )

standard Athena-Algorithm method

Definition at line 189 of file EnergyLossExtrapolationValidation.cxx.

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

Add StoreName to extra input/output deps as needed.

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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

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

◆ finalize()

StatusCode Trk::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

◆ 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< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

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

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ renounce()

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

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

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

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

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

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

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
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< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_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< 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< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_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< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


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