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