ATLAS Offline Software
Loading...
Searching...
No Matches
RiddersAlgorithm.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6// RiddersAlgorithm.h, (c) ATLAS Detector software
8
9#ifndef TRKRIDDERSALGORITHM_H
10#define TRKRIDDERSALGORITHM_H
11
12// Gaudi includes
14#include "GaudiKernel/ToolHandle.h"
15#include "GaudiKernel/IRndmGenSvc.h"
16#include "GaudiKernel/RndmGenerators.h"
17#include "GaudiKernel/SystemOfUnits.h"
19#include <string>
20
22
23class AtlasDetectorID;
24class Identifier;
25class TTree;
26
27#ifndef RIDDLERSSTEPS
28#define RIDDLERSSTEPS 10
29#endif
30
31namespace Trk
32{
33
34 class MagneticFieldProperties;
35
43
45 {
46 public:
47
49 RiddersAlgorithm(const std::string& name, ISvcLocator* pSvcLocator);
52
54 StatusCode initialize();
56 StatusCode execute();
58 StatusCode finalize();
59
60 private:
62 static Amg::Transform3D createTransform(double x, double y, double z, double phi=0., double theta=0., double alphaZ=0.);
63
65 static double parabolicInterpolation(double y0, double y1, double y2,
66 double x0, double x1, double x2);
67
69 PublicToolHandle<IPropagator> m_propagator
70 {this, "Propagator", "Trk::RungeKuttaPropagator/RungeKuttaPropagator"};
71 BooleanProperty m_useCustomField{this, "UseCustomMagneticField", true};
72 BooleanProperty m_useAlignedSurfaces{this, "UseAlignedSurfaces", true};
73 DoubleProperty m_fieldValue
74 {this, "CustomFieldValue", 2.*Gaudi::Units::tesla};
76
78 DoubleProperty m_sigmaLoc
79 {this, "StartPerigeeSigmaLoc", 100.*Gaudi::Units::micrometer};
80 DoubleProperty m_sigmaR
81 {this, "StartPerigeeSigmaR", 0.};
82 DoubleProperty m_minPhi{this, "StartPerigeeMinPhi", -M_PI};
83 DoubleProperty m_maxPhi{this, "StartPerigeeMaxPhi", M_PI};
84 DoubleProperty m_minEta{this, "StartPerigeeMinEta", -2.5};
85 DoubleProperty m_maxEta{this, "StartPerigeeMaxEta", 2.5};
86 DoubleProperty m_minP
87 {this, "StartPerigeeMinP", 0.5*Gaudi::Units::GeV};
88 DoubleProperty m_maxP
89 {this, "StartPerigeeMaxP", 50000*Gaudi::Units::GeV};
90
92 DoubleProperty m_minimumR{this, "TargetSurfaceMinR", 10.};
93 DoubleProperty m_maximumR{this, "TargetSurfaceMaxR", 1000.};
94
96 DoubleArrayProperty m_localVariations{this, "LocalVariations", {}};
97 DoubleArrayProperty m_angularVariations{this, "AngularVariations", {}};
98 DoubleArrayProperty m_qOpVariations{this, "QopVariations", {}};
99
100 TTree* m_validationTree = nullptr;
101
102 StringProperty m_validationTreeName
103 {this, "ValidationTreeName", "RiddersTree",
104 "validation tree name - to be acessed by this from root"};
106 {this, "ValidationTreeDescription", "Output of the RiddersAlgorithm",
107 "validation tree description - second argument in TTree"};
109 {this, "ValidationTreeFolder", "/val/RiddersAlgorithm",
110 "stream/folder to for the TTree to be written out"};
111
112 int m_steps = 0;
119
126
133
140
147
148
150 Rndm::Numbers* m_gaussDist = nullptr;
151 Rndm::Numbers* m_flatDist = nullptr;
152
153 };
154} // end of namespace
155
156#endif
#define M_PI
#define RIDDLERSSTEPS
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
This class provides an interface to generate or decode an identifier for the upper levels of the dete...
magnetic field properties to steer the behavior of the extrapolation
StringProperty m_validationTreeFolder
float m_phisteps[RIDDLERSSTEPS]
DoubleProperty m_maximumR
Rndm::Numbers * m_flatDist
DoubleProperty m_minimumR
To create the first extimations.
float m_phiqop[RIDDLERSSTEPS]
float m_qopphi[RIDDLERSSTEPS]
float m_loc1theta[RIDDLERSSTEPS]
float m_loc2theta[RIDDLERSSTEPS]
static double parabolicInterpolation(double y0, double y1, double y2, double x0, double x1, double x2)
Langrange-parabolic interpolation.
TTree * m_validationTree
Root Validation Tree.
float m_thetaloc1[RIDDLERSSTEPS]
DoubleArrayProperty m_angularVariations
Rndm::Numbers * m_gaussDist
Random Number setup.
float m_loc1loc1[RIDDLERSSTEPS]
PublicToolHandle< IPropagator > m_propagator
member variables for algorithm properties:
float m_loc1qop[RIDDLERSSTEPS]
float m_qoptheta[RIDDLERSSTEPS]
float m_qopqop[RIDDLERSSTEPS]
DoubleArrayProperty m_localVariations
variations
float m_loc2steps[RIDDLERSSTEPS]
float m_loc1loc2[RIDDLERSSTEPS]
float m_thetaloc2[RIDDLERSSTEPS]
float m_loc2qop[RIDDLERSSTEPS]
StringProperty m_validationTreeDescription
StatusCode initialize()
standard Athena-Algorithm method
StatusCode finalize()
standard Athena-Algorithm method
float m_phiphi[RIDDLERSSTEPS]
~RiddersAlgorithm()
Default Destructor.
RiddersAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Standard Athena-Algorithm Constructor.
float m_phitheta[RIDDLERSSTEPS]
BooleanProperty m_useCustomField
float m_philoc2[RIDDLERSSTEPS]
float m_philoc1[RIDDLERSSTEPS]
float m_loc2loc2[RIDDLERSSTEPS]
float m_loc2phi[RIDDLERSSTEPS]
float m_qoploc1[RIDDLERSSTEPS]
static Amg::Transform3D createTransform(double x, double y, double z, double phi=0., double theta=0., double alphaZ=0.)
private helper method to create a HepTransform
float m_qoploc2[RIDDLERSSTEPS]
float m_thetaqop[RIDDLERSSTEPS]
DoubleProperty m_sigmaLoc
The smearing.
float m_thetaphi[RIDDLERSSTEPS]
DoubleArrayProperty m_qOpVariations
StringProperty m_validationTreeName
float m_qopsteps[RIDDLERSSTEPS]
StatusCode execute()
standard Athena-Algorithm method
float m_loc1steps[RIDDLERSSTEPS]
float m_thetasteps[RIDDLERSSTEPS]
float m_loc1phi[RIDDLERSSTEPS]
float m_thetatheta[RIDDLERSSTEPS]
MagneticFieldProperties * m_magFieldProperties
BooleanProperty m_useAlignedSurfaces
DoubleProperty m_fieldValue
float m_loc2loc1[RIDDLERSSTEPS]
Eigen::Affine3d Transform3D
Ensure that the ATLAS eigen extensions are properly loaded.
@ 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