File indexing completed on 2025-08-05 08:17:13
0001
0002 #ifndef ACTSPROPAGATOR_H
0003 #define ACTSPROPAGATOR_H
0004
0005 #include <trackbase/ActsGeometry.h>
0006
0007 #include <Acts/Definitions/Algebra.hpp>
0008 #include <Acts/EventData/TrackParameters.hpp>
0009
0010 #pragma GCC diagnostic push
0011 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
0012 #include <Acts/Propagator/EigenStepper.hpp>
0013 #pragma GCC diagnostic pop
0014 #pragma GCC diagnostic push
0015 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
0016 #include <Acts/Propagator/Propagator.hpp>
0017 #pragma GCC diagnostic pop
0018 #include <Acts/Propagator/Navigator.hpp>
0019
0020 #include <Acts/Utilities/Result.hpp>
0021
0022 #include <trackbase/ActsGeometry.h>
0023
0024 class SvtxTrack;
0025 class SvtxVertex;
0026 class SvtxVertexMap;
0027 class SvtxTrackState;
0028
0029 class ActsPropagator
0030 {
0031 public:
0032 using BoundTrackParam = Acts::BoundTrackParameters;
0033 using BoundTrackParamResult = Acts::Result<BoundTrackParam>;
0034
0035 using BoundTrackParamPair = std::pair<float, BoundTrackParam>;
0036 using BTPPairResult = Acts::Result<BoundTrackParamPair>;
0037 using SurfacePtr = std::shared_ptr<const Acts::Surface>;
0038 using Stepper = Acts::EigenStepper<>;
0039 using FastPropagator = Acts::Propagator<Stepper>;
0040 using SphenixPropagator = Acts::Propagator<Stepper, Acts::Navigator>;
0041
0042 ActsPropagator() {}
0043 ActsPropagator(ActsGeometry* geometry)
0044 : m_geometry(geometry)
0045 {
0046 }
0047 ~ActsPropagator() {}
0048
0049
0050
0051 SurfacePtr makeVertexSurface(const SvtxVertex* vertex);
0052 SurfacePtr makeVertexSurface(const Acts::Vector3& vertex);
0053 BoundTrackParamResult makeTrackParams(SvtxTrack* track,
0054 SvtxVertexMap* vertexMap);
0055 BoundTrackParamResult makeTrackParams(SvtxTrackState* state,
0056 int trackCharge,
0057 SurfacePtr surf);
0058
0059
0060
0061
0062
0063
0064 BTPPairResult propagateTrack(const Acts::BoundTrackParameters& params,
0065 const unsigned int sphenixLayer);
0066 BTPPairResult propagateTrack(const Acts::BoundTrackParameters& params,
0067 const SurfacePtr& surface);
0068
0069
0070
0071
0072 BTPPairResult propagateTrackFast(const Acts::BoundTrackParameters& params,
0073 const SurfacePtr& surface);
0074
0075 bool checkLayer(const unsigned int& sphenixlayer,
0076 unsigned int& actsvolume,
0077 unsigned int& actslayer);
0078 void verbosity(int verb) { m_verbosity = verb; }
0079 void setConstFieldValue(float field) { m_fieldval = field; }
0080 void constField() { m_constField = true; }
0081 void setOverstepLimit(const double overstep) { m_overstepLimit = overstep; }
0082 SphenixPropagator makePropagator();
0083 FastPropagator makeFastPropagator();
0084
0085 private:
0086 void printTrackParams(const Acts::BoundTrackParameters& params);
0087
0088 int m_verbosity = 0;
0089
0090 bool m_constField = false;
0091
0092 ActsGeometry* m_geometry = nullptr;
0093
0094 float m_fieldval = 1.4 * Acts::UnitConstants::T;
0095
0096
0097 float m_overstepLimit = 0.01 * Acts::UnitConstants::cm;
0098 };
0099
0100 #endif