ATLAS Offline Software
ExtrapolatorComparisonTest.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // ExtrapolatorComparisonTest.cxx, (c) ATLAS Detector software
8 
10 
11 // Tracking
18 
19 #include "GaudiKernel/SystemOfUnits.h"
20 #include "GaudiKernel/ISvcLocator.h"
21 
22 // ACTS
23 #include "Acts/Definitions/Algebra.hpp"
24 #include "Acts/Definitions/TrackParametrization.hpp"
25 #include "Acts/EventData/ParticleHypothesis.hpp"
26 #include "Acts/Geometry/GeometryContext.hpp"
27 #include "Acts/Propagator/detail/SteppingLogger.hpp"
28 #include "Acts/Surfaces/CylinderSurface.hpp"
29 #include "Acts/Surfaces/DiscSurface.hpp"
30 #include "Acts/Surfaces/PerigeeSurface.hpp"
31 #include "Acts/Surfaces/Surface.hpp"
32 #include "Acts/Utilities/Helpers.hpp"
33 #include "Acts/Utilities/Logger.hpp"
35 #include "ActsInterop/Logger.h"
36 
37 // OTHER
38 #include "CLHEP/Random/RandomEngine.h"
39 #include "CLHEP/Random/Randomize.h"
40 
41 // STL
42 #include <string>
43 #include <fstream>
44 #include <chrono>
45 #include <cmath>
46 
47 using xclock = std::chrono::steady_clock;
48 
49 //================ Constructor =================================================
50 
51 Trk::ExtrapolatorComparisonTest::ExtrapolatorComparisonTest(const std::string& name, ISvcLocator* pSvcLocator)
52  :
53  AthReentrantAlgorithm(name,pSvcLocator),
54  m_sigmaD0(17.*Gaudi::Units::micrometer),
55  m_sigmaZ0(50.*Gaudi::Units::millimeter),
56  m_minPhi(-M_PI),
57  m_maxPhi(M_PI),
58  m_minEta(-3.),
59  m_maxEta(3.),
60  m_minPt(0.5*Gaudi::Units::GeV),
61  m_maxPt(50000.*Gaudi::Units::GeV),
62  m_particleType(2),
63  m_referenceSurfaces(0),
64  m_eventsPerExecute(1),
65  m_atlasPropResultWriterSvc("ATLASPropResultRootWriterSvc", name),
66  m_actsPropResultWriterSvc("ACTSPropResultRootWriterSvc", name),
67  m_rndmSvc("AthRNGSvc", name)
68 {
69  // algorithm steering
70  declareProperty("StartPerigeeSigmaD0" , m_sigmaD0 );
71  declareProperty("StartPerigeeSigmaZ0" , m_sigmaZ0 );
72  declareProperty("StartPerigeeMinPhi" , m_minPhi );
73  declareProperty("StartPerigeeMaxPhi" , m_maxPhi );
74  declareProperty("StartPerigeeMinEta" , m_minEta );
75  declareProperty("StartPerigeeMaxEta" , m_maxEta );
76  declareProperty("StartPerigeeMinPt" , m_minPt );
77  declareProperty("StartPerigeeMaxPt" , m_maxPt );
78  declareProperty("ParticleType" , m_particleType );
79  declareProperty("ReferenceSurfaceRadius" , m_referenceSurfaceRadius );
80  declareProperty("ReferenceSurfaceHalfZ" , m_referenceSurfaceHalflength);
81  declareProperty("EventsPerExecute" , m_eventsPerExecute );
82  declareProperty("ATLASPropResultRootWriter" , m_atlasPropResultWriterSvc );
83  declareProperty("ACTSPropResultRootWriter" , m_actsPropResultWriterSvc );
84  declareProperty("RndmSvc" , m_rndmSvc );
85 }
86 
87 //================ Destructor =================================================
88 
90 {
91  // cleanup of the Trk::Surfaces
92  std::vector< std::vector< const Trk::Surface* > >::const_iterator atlasSurfaceTripleIter = m_atlasReferenceSurfaceTriples.begin();
93  std::vector< std::vector< const Trk::Surface* > >::const_iterator atlasSurfaceTripleIterEnd = m_atlasReferenceSurfaceTriples.end();
94  for ( ; atlasSurfaceTripleIter != atlasSurfaceTripleIterEnd; ++atlasSurfaceTripleIter) {
95  std::vector<const Trk::Surface*>::const_iterator surfIter = (*atlasSurfaceTripleIter).begin();
96  std::vector<const Trk::Surface*>::const_iterator surfIterEnd = (*atlasSurfaceTripleIter).end();
97  for ( ; surfIter != surfIterEnd; delete (*surfIter), ++surfIter);
98  }
99 }
100 
101 
102 //================ Initialisation =================================================
103 
105 {
106  // Code entered here will be executed once at program start.
107 
108  ATH_MSG_INFO(" initialize()");
109 
110  ATH_CHECK( m_extrapolationTool.retrieve() );
111  ATH_CHECK( m_atlasExtrapolator.retrieve() );
112 
113  // Create the destination surfaces for extrapolation
114  // --> you need the Trk::Surfaces and the Acts::Surfaces
115  if (m_referenceSurfaceRadius.size() == m_referenceSurfaceHalflength.size()) {
116  // assign the size
117  m_referenceSurfaces = m_referenceSurfaceRadius.size();
118  // loop over it and create the
119  for (unsigned int surface = 0; surface < m_referenceSurfaces; surface++) {
120 
121  double radius = m_referenceSurfaceRadius.at(surface);
122  double halfZ = m_referenceSurfaceHalflength.at(surface);
123 
124  // create the Surface triplet
125  std::vector< const Trk::Surface*> trkSurfaceTriplet;
126  trkSurfaceTriplet.push_back(new Trk::DiscSurface (Amg::Transform3D(Amg::Translation3D(0.,0., halfZ)), 0.,radius));
127  trkSurfaceTriplet.push_back(new Trk::CylinderSurface(Amg::Transform3D(Amg::Translation3D(0.,0., 0.)),radius, halfZ));
128  trkSurfaceTriplet.push_back(new Trk::DiscSurface (Amg::Transform3D(Amg::Translation3D(0.,0.,-halfZ)), 0.,radius));
129  ATH_MSG_INFO("Creating Trk::Surface at: R " << radius << " Z " << halfZ);
130  m_atlasReferenceSurfaceTriples.push_back(trkSurfaceTriplet);
131 
132  // create the Surface triplet
133  std::vector<std::shared_ptr<const Acts::Surface>> actsSurfaceTriplet;
134 
135  Acts::Transform3 posTransf(Acts::Transform3::Identity()*Acts::Translation3(Acts::Vector3(0.,0., halfZ)));
136  Acts::Transform3 cTransf(Acts::Transform3::Identity()*Acts::Translation3(Acts::Vector3(0.,0., 0.)));
137  Acts::Transform3 negTransf(Acts::Transform3::Identity()*Acts::Translation3(Acts::Vector3(0.,0.,-halfZ)));
138 
139  auto posSurface = Acts::Surface::makeShared<Acts::DiscSurface> (posTransf , 0.,radius);
140  auto cSurface = Acts::Surface::makeShared<Acts::CylinderSurface>( cTransf ,radius, halfZ);
141  auto negSurface = Acts::Surface::makeShared<Acts::DiscSurface> (negTransf , 0.,radius);
142 
143  actsSurfaceTriplet.push_back(posSurface);
144  actsSurfaceTriplet.push_back(cSurface );
145  actsSurfaceTriplet.push_back(negSurface);
146  ATH_MSG_INFO("Creating Acts::Surface at: R " << radius << " Z " << halfZ);
147  m_actsReferenceSurfaceTriples.push_back(actsSurfaceTriplet);
148 
149  m_referenceSurfaceNegativeBoundary.push_back(atan2(radius,-halfZ));
150  m_referenceSurfacePositiveBoundary.push_back(atan2(radius, halfZ));
151  }
152  } else {
153  ATH_MSG_WARNING("Not compatible size of ReferenceSurfaceRadius and ReferenceSurfaceHalfZ!! Returning FAILURE!");
154  return StatusCode::FAILURE;
155  }
156 
157  ATH_CHECK( m_atlasPropResultWriterSvc.retrieve() );
158  ATH_CHECK( m_actsPropResultWriterSvc.retrieve() );
159  ATH_CHECK( m_rndmSvc.retrieve() );
160  m_randomEngine = m_rndmSvc->getEngine (this, "ExtrapolatorComparisonTest");
161 
162  return StatusCode::SUCCESS;
163 }
164 
165 //================ Finalisation =================================================
166 
168 {
169  // Code entered here will be executed once at the end of the program run.
170  return StatusCode::SUCCESS;
171 }
172 
173 //================ Execution ====================================================
174 
175 StatusCode Trk::ExtrapolatorComparisonTest::execute(const EventContext& ctx) const {
176 
177  float milliseconds_to_seconds = 1000.;
178 
179  // generate perigees with random number generator
180  CLHEP::HepRandomEngine* engine = m_randomEngine->getEngine(ctx);
181 
182  std::vector<perigeeParameters> parameters = {};
183  for (int ext = 0; ext<m_eventsPerExecute; ext++) {
184  // generate with random number generator
185  double d0 = CLHEP::RandGauss::shoot(engine) * m_sigmaD0;
186  double z0 = CLHEP::RandGauss::shoot(engine) * m_sigmaZ0;
187  double phi = m_minPhi + (m_maxPhi-m_minPhi)* CLHEP::RandFlat::shoot(engine);
188  double eta = m_minEta + CLHEP::RandFlat::shoot(engine)*(m_maxEta-m_minEta);
189  double pt = m_minPt + CLHEP::RandFlat::shoot(engine)*(m_maxPt-m_minPt);
190  double charge = (CLHEP::RandFlat::shoot(engine) > 0.5 ) ? -1. : 1.;
191  parameters.emplace_back(d0, z0, phi, eta, pt, charge);
192  }
193 
194  int n_extraps = 0;
195  auto start = xclock::now();
196  for (auto& perigee : parameters) {
197 
198  Acts::Vector3 momentum(perigee.m_pt * std::cos(perigee.m_phi), perigee.m_pt * std::sin(perigee.m_phi), perigee.m_pt * std::sinh(perigee.m_eta));
200  double qOverP = perigee.m_charge / momentum.norm();
201 
202  const Trk::PerigeeSurface atlPerigeeSurface;
203  const Trk::Perigee * atlPerigee = new const Trk::Perigee(perigee.m_d0, perigee.m_z0, perigee.m_phi, theta, qOverP, atlPerigeeSurface);
204 
205  for (unsigned int surface = 0; surface < m_atlasReferenceSurfaceTriples.size(); surface++) {
206  n_extraps++;
207 
208  double negRef = m_referenceSurfaceNegativeBoundary.at(surface);
209  double posRef = m_referenceSurfacePositiveBoundary.at(surface);
210 
211  // decide which reference surface to take
212  int refSurface = theta < posRef ? 2 : 1;
213  refSurface = theta > negRef ? 0 : 1;
214 
215  const Trk::Surface* destinationSurface = m_atlasReferenceSurfaceTriples.at(surface).at(refSurface);
216 
217  ATH_MSG_VERBOSE("Starting extrapolation " << n_extraps << " from : " << *atlPerigee << " to : " << *destinationSurface);
218 
219  auto start_fwd = xclock::now();
220  const Trk::TrackParameters* destParameters =
221  m_atlasExtrapolator->extrapolate(
222  ctx,
223  *atlPerigee,
224  *destinationSurface,
226  true,
227  (Trk::ParticleHypothesis)m_particleType).release();
228  auto end_fwd = xclock::now();
229  float ms_fwd = std::chrono::duration_cast<std::chrono::milliseconds>(end_fwd-start_fwd).count();
230 
231  if (destParameters) {
232  ATH_MSG_VERBOSE(" ATLAS Extrapolator succeded!! --> Forward" );
233  ATH_MSG_VERBOSE(" [ intersection ] with surface at (x,y,z) = " << destParameters->position().x() << ", " << destParameters->position().y() << ", " << destParameters->position().z() );
234  ATH_MSG_VERBOSE(" [ intersection ] parameters: " << destParameters->parameters() );
235  ATH_MSG_VERBOSE(" [ intersection ] cov matrix: " << destParameters->covariance() );
236 
237  // now try backward extrapolation
238  auto start_bkw = xclock::now();
239  const Trk::TrackParameters* finalperigee =
240  m_atlasExtrapolator->extrapolate(
241  ctx,
242  *destParameters,
243  atlPerigee->associatedSurface(),
245  true,
246  (Trk::ParticleHypothesis)m_particleType).release();
247  auto end_bkw = xclock::now();
248  float ms_bkw = std::chrono::duration_cast<std::chrono::milliseconds>(end_bkw-start_bkw).count();
249 
250  if (finalperigee) {
251  ATH_MSG_VERBOSE(" ATLAS Extrapolator succeded!! --> Backward" );
252  ATH_MSG_VERBOSE(" [extrapolation to perigee] input: " << atlPerigee->parameters() );
253  ATH_MSG_VERBOSE(" [extrapolation to perigee] output: " << finalperigee->parameters() );
254  ATH_MSG_VERBOSE(" [extrapolation to perigee] cov matrix: " << finalperigee->covariance() );
255 
256  } else if (!finalperigee) {
257  ATH_MSG_DEBUG(" ATLAS Extrapolation to perigee failed for input parameters: " << destParameters->parameters());
258  }
259 
260  m_atlasPropResultWriterSvc->write<Trk::TrackParameters>(atlPerigee, destParameters, ms_fwd, finalperigee, ms_bkw);
261  delete finalperigee;
262  } else if (!destParameters) {
263  ATH_MSG_DEBUG(" ATLAS Extrapolation not successful! " );
264  m_atlasPropResultWriterSvc->write<Trk::TrackParameters>(atlPerigee);
265  }
266  delete destParameters;
267  }
268  delete atlPerigee;
269  }
270  auto end = xclock::now();
271  auto secs = std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count() / milliseconds_to_seconds;
272  double secs_per_ex = secs / n_extraps;
273 
274  ATH_MSG_INFO("ATLAS : Time for " << n_extraps << " iterations: " << secs << "s (" << secs_per_ex << "s per extrapolation)");
275 
276  n_extraps = 0;
277  start = xclock::now();
278  for (auto& perigee : parameters) {
279  Acts::Vector3 momentum(perigee.m_pt * std::cos(perigee.m_phi), perigee.m_pt * std::sin(perigee.m_phi), perigee.m_pt * std::sinh(perigee.m_eta));
281  double qOverP = perigee.m_charge / momentum.norm();
282 
283  std::shared_ptr<Acts::PerigeeSurface> actsPerigeeSurface = Acts::Surface::makeShared<Acts::PerigeeSurface>(Acts::Vector3(0, 0, 0));
284  double t = 0.;
285  Acts::BoundVector pars;
286  //cppcheck-suppress constStatement
287  pars << perigee.m_d0, perigee.m_z0, perigee.m_phi, theta, qOverP, t;
288  std::optional<Acts::BoundSquareMatrix> cov = std::nullopt;
289 
290  // Perigee, no alignment -> default geo context
291  ActsGeometryContext gctx = m_extrapolationTool->trackingGeometryTool()->getNominalGeometryContext();
292  auto anygctx = gctx.context();
293  const auto* startParameters = new const Acts::GenericBoundTrackParameters(std::move(actsPerigeeSurface), pars, std::move(cov), Acts::ParticleHypothesis::pion());
294 
295  for (unsigned int surface = 0; surface < m_actsReferenceSurfaceTriples.size(); surface++) {
296  n_extraps++;
297 
298  double negRef = m_referenceSurfaceNegativeBoundary.at(surface);
299  double posRef = m_referenceSurfacePositiveBoundary.at(surface);
300 
301  // decide which reference surface to take
302  int refSurface = theta < posRef ? 2 : 1;
303  refSurface = theta > negRef ? 0 : 1;
304 
305  auto destinationSurface = m_actsReferenceSurfaceTriples.at(surface).at(refSurface);
306 
307  ATH_MSG_VERBOSE("Starting extrapolation " << n_extraps << " from : " << pars << " to : " << destinationSurface);
308 
309  auto start_fwd = xclock::now();
310  auto destParameters = m_extrapolationTool->propagate(ctx, *startParameters, *destinationSurface, Acts::Direction::Forward);
311  auto end_fwd = xclock::now();
312  float ms_fwd = std::chrono::duration_cast<std::chrono::milliseconds>(end_fwd-start_fwd).count();
313 
314  if (destParameters) {
315  ATH_MSG_VERBOSE(" ACTS Extrapolator succeded!! --> Forward" );
316  ATH_MSG_VERBOSE(" [ intersection ] with surface at (x,y,z) = " << destParameters->position(anygctx).x() << ", " << destParameters->position(anygctx).y() << ", " << destParameters->position(anygctx).z() );
317  ATH_MSG_VERBOSE(" [ intersection ] parameters: " << destParameters->parameters() );
318  ATH_MSG_VERBOSE(" [ intersection ] cov matrix: " << *destParameters->covariance() );
319 
320  // now try backward extrapolation
321  auto start_bkw = xclock::now();
322  auto finalperigee = m_extrapolationTool->propagate(ctx, *destParameters, startParameters->referenceSurface(), Acts::Direction::Backward);
323  auto end_bkw = xclock::now();
324  float ms_bkw = std::chrono::duration_cast<std::chrono::milliseconds>(end_bkw-start_bkw).count();
325 
326  if (finalperigee) {
327  ATH_MSG_VERBOSE(" ACTS Extrapolator succeded!! --> Backward" );
328  ATH_MSG_VERBOSE(" [extrapolation to perigee] input: " << startParameters->parameters() );
329  ATH_MSG_VERBOSE(" [extrapolation to perigee] output: " << finalperigee->parameters() );
330  ATH_MSG_VERBOSE(" [extrapolation to perigee] cov matrix: " << *finalperigee->covariance() );
331 
332  } else if (!finalperigee) {
333  ATH_MSG_DEBUG(" ACTS Extrapolation to perigee failed for input parameters: " << destParameters->parameters());
334  }
335 
336  // Construct wrappers for Acts track parameters
337  const ActsTrackWrapper* startWrapper = new ActsTrackWrapper(startParameters, anygctx);
338  const ActsTrackWrapper* destWrapper = new ActsTrackWrapper(&destParameters.value(), anygctx);
339  const ActsTrackWrapper* finalWrapper = new ActsTrackWrapper(&finalperigee.value(), anygctx);
340 
341  m_actsPropResultWriterSvc->write<ActsTrackWrapper>(startWrapper, destWrapper, ms_fwd, finalWrapper, ms_bkw);
342 
343  delete startWrapper;
344  delete destWrapper;
345  delete finalWrapper;
346  } else if (!destParameters) {
347  ATH_MSG_DEBUG(" ACTS Extrapolation not successful! " );
348  const ActsTrackWrapper* startWrapper = new ActsTrackWrapper(startParameters, anygctx);
349  m_actsPropResultWriterSvc->write<ActsTrackWrapper>(startWrapper);
350  delete startWrapper;
351  }
352  }
353  delete startParameters;
354  }
355 
356  end = xclock::now();
357  secs = std::chrono::duration_cast<std::chrono::milliseconds>(end-start).count() / milliseconds_to_seconds;
358  secs_per_ex = secs / n_extraps;
359 
360  ATH_MSG_INFO("ACTS : Time for " << n_extraps << " iterations: " << secs << "s (" << secs_per_ex << "s per extrapolation)");
361 
362  return StatusCode::SUCCESS;
363 }
364 
365 //============================================================================================
366 
367 
368 
Trk::ExtrapolatorComparisonTest::m_referenceSurfaceRadius
std::vector< double > m_referenceSurfaceRadius
Definition: ExtrapolatorComparisonTest.h:135
Trk::ExtrapolatorComparisonTest::m_minPhi
double m_minPhi
Minimal phi value.
Definition: ExtrapolatorComparisonTest.h:123
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
Trk::ExtrapolatorComparisonTest::ActsTrackWrapper
Definition: ExtrapolatorComparisonTest.h:92
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
Trk::ExtrapolatorComparisonTest::~ExtrapolatorComparisonTest
~ExtrapolatorComparisonTest()
Default Destructor.
Definition: ExtrapolatorComparisonTest.cxx:89
PerigeeSurface.h
Trk::ExtrapolatorComparisonTest::m_minEta
double m_minEta
Minimal eta value.
Definition: ExtrapolatorComparisonTest.h:125
Trk::ExtrapolatorComparisonTest::m_eventsPerExecute
int m_eventsPerExecute
Definition: ExtrapolatorComparisonTest.h:144
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
Trk::ExtrapolatorComparisonTest::ExtrapolatorComparisonTest
ExtrapolatorComparisonTest(const std::string &name, ISvcLocator *pSvcLocator)
Standard Athena-Algorithm Constructor.
Definition: ExtrapolatorComparisonTest.cxx:51
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
test_pyathena.pt
pt
Definition: test_pyathena.py:11
Trk::ExtrapolatorComparisonTest::finalize
StatusCode finalize() override
standard Athena-Algorithm method
Definition: ExtrapolatorComparisonTest.cxx:167
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::pion
@ pion
Definition: TrackingPrimitives.h:196
Trk::z0
@ z0
Definition: ParamDefs.h:64
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
Trk::DiscSurface
Definition: DiscSurface.h:54
ExtrapolatorComparisonTest.h
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::Perigee
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:33
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:83
ActsGeometryContext::context
Acts::GeometryContext context() const
Definition: ActsGeometryContext.h:45
Trk::ParticleHypothesis
ParticleHypothesis
Definition: ParticleHypothesis.h:25
Trk::ParametersT::associatedSurface
virtual const S & associatedSurface() const override final
Access to the Surface method.
Trk::ExtrapolatorComparisonTest::m_referenceSurfaceHalflength
std::vector< double > m_referenceSurfaceHalflength
Definition: ExtrapolatorComparisonTest.h:136
python.handimod.now
now
Definition: handimod.py:675
python.SystemOfUnits.millimeter
int millimeter
Definition: SystemOfUnits.py:53
Trk::ExtrapolatorComparisonTest::initialize
StatusCode initialize() override
standard Athena-Algorithm method
Definition: ExtrapolatorComparisonTest.cxx:104
ParticleGun_EoverP_Config.momentum
momentum
Definition: ParticleGun_EoverP_Config.py:63
Trk::theta
@ theta
Definition: ParamDefs.h:66
Trk::ExtrapolatorComparisonTest::m_sigmaD0
double m_sigmaD0
Sigma of distribution for D0.
Definition: ExtrapolatorComparisonTest.h:121
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::CylinderSurface
Definition: CylinderSurface.h:55
ParametersT.h
Trk::ExtrapolatorComparisonTest::m_sigmaZ0
double m_sigmaZ0
Sigma of distribution for Z0.
Definition: ExtrapolatorComparisonTest.h:122
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
CylinderSurface.h
Trk::ExtrapolatorComparisonTest::execute
StatusCode execute(const EventContext &ctx) const override
standard Athena-Algorithm method
Definition: ExtrapolatorComparisonTest.cxx:175
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::ExtrapolatorComparisonTest::m_actsPropResultWriterSvc
ServiceHandle< PropResultRootWriterSvc > m_actsPropResultWriterSvc
Definition: ExtrapolatorComparisonTest.h:147
MakeFileForMJB.ext
string ext
Definition: Moriond2016/MakeFileForMJB.py:41
Trk::ParametersBase
Definition: ParametersBase.h:55
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
ParticleHypothesis.h
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
Athena::Units
Definition: Units.h:45
EventPrimitives.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Trk::d0
@ d0
Definition: ParamDefs.h:63
charge
double charge(const T &p)
Definition: AtlasPID.h:756
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
Trk::ExtrapolatorComparisonTest::m_maxPt
double m_maxPt
Maximal p value.
Definition: ExtrapolatorComparisonTest.h:128
Trk::ExtrapolatorComparisonTest::m_maxEta
double m_maxEta
Maximal eta value.
Definition: ExtrapolatorComparisonTest.h:126
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Trk::ExtrapolatorComparisonTest::m_particleType
int m_particleType
the particle typre for the extrap.
Definition: ExtrapolatorComparisonTest.h:130
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
Trk::ExtrapolatorComparisonTest::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: ExtrapolatorComparisonTest.h:148
DiscSurface.h
Gaudi
=============================================================================
Definition: CaloGPUClusterAndCellDataMonitorOptions.h:273
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
Trk::phi
@ phi
Definition: ParamDefs.h:75
Trk::ExtrapolatorComparisonTest::m_atlasPropResultWriterSvc
ServiceHandle< PropResultRootWriterSvc > m_atlasPropResultWriterSvc
Definition: ExtrapolatorComparisonTest.h:146
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Logger.h
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
IActsTrackingGeometryTool.h
Trk::ExtrapolatorComparisonTest::m_minPt
double m_minPt
Minimal p value.
Definition: ExtrapolatorComparisonTest.h:127
Trk::ExtrapolatorComparisonTest::m_maxPhi
double m_maxPhi
Maximal phi value.
Definition: ExtrapolatorComparisonTest.h:124
xclock
std::chrono::steady_clock xclock
Definition: ExtrapolatorComparisonTest.cxx:47