|
|
|||
File indexing completed on 2025-12-17 09:20:49
0001 #ifndef WEIGHTED_TRACK_ZERO_FIELD_H 0002 #define WEIGHTED_TRACK_ZERO_FIELD_H 0003 0004 #include "WeightedTrack.h" 0005 0006 class WeightedTrackZeroField : public WeightedTrack { 0007 public: 0008 WeightedTrackZeroField () = default; 0009 virtual ~WeightedTrackZeroField () = default; 0010 0011 PHObject* CloneMe() const override { return new WeightedTrackZeroField(*this); } 0012 0013 /// Sets member parameters (of derived classes which actually implement the track) using an array of double 0014 /// Unfortunately, helper members of derived classes must be declared mutable so this can be declared const 0015 /// All the following methods assume the parameters have been set using this method 0016 void set_parameters (double const* /*params*/) override; 0017 /// Mutates the members of the given array such that calling set_parameters would result in the same track parameterization (inverse of set_parameters) 0018 void get_parameters (double* /*params*/) const override; 0019 /// Returns the number of parameters needed for the fit, e.g. the minimum length of the array passed to set_parameters, get_parameters 0020 std::size_t get_n_parameters () const override { return 4; } 0021 /// Modifies the minimizer so it is ready to begin the fit optimization, including setting initial parameters and ranges 0022 void configure_minimizer (ROOT::Math::Minimizer& /*minimizer*/) override; 0023 0024 /// Returns the partial derivative of the track position w.r.t. the parameter given by index evaluated at the given path length 0025 /// Used as a helper to get_residual_derivatives, which accounts for the implicit dependence of the intersection on the path length 0026 Eigen::Vector3d get_partial_derivative (int /*index*/, double /*path_length*/) const override; 0027 0028 /// Evaluates the track position at the given path length 0029 Eigen::Vector3d get_position_at_path_length (double /*path_length*/) const override; 0030 /// Evaluates the track slope at the given path length 0031 Eigen::Vector3d get_slope_at_path_length (double /*path_length*/) const override; 0032 0033 /// Finds the path length that gives the intersection with the plane described by the given transform 0034 /// For use with the sensor_transform member of ClusterFitPoint to find track states 0035 double get_path_length_of_intersection (Eigen::Affine3d const& /*plane*/) const override; 0036 /// Finds the path length that gives the point of closest approach to the given point 0037 double get_path_length_of_pca (Eigen::Vector3d const& /*point*/) const override; 0038 0039 private: 0040 Eigen::Vector3d m_slope = Eigen::Vector3d::Zero(); 0041 Eigen::Vector3d m_intercept = Eigen::Vector3d::Zero(); 0042 0043 double m_cos_theta{1.0}; 0044 double m_sin_theta{0.0}; 0045 double m_cos_phi{1.0}; 0046 double m_sin_phi{0.0}; 0047 0048 ClassDefOverride(WeightedTrackZeroField, 1); 0049 }; 0050 0051 #endif//WEIGHTED_TRACK_ZERO_FIELD_H
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|