All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PropYZLine.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 ///
3 /// \file PropYZLine.h
4 ///
5 /// \brief Propagate to SurfYZLine surface.
6 ///
7 /// \author H. Greenlee
8 ///
9 /// Class for propagating to a destionation SurfYZLine surface.
10 ///
11 ////////////////////////////////////////////////////////////////////////
12 
13 #ifndef PROPYZLINE_H
14 #define PROPYZLINE_H
15 
17 
18 namespace detinfo {
19  class DetectorPropertiesData;
20 }
21 
22 namespace trkf {
23 
24  class PropYZLine : public trkf::Propagator {
25  public:
26  PropYZLine(detinfo::DetectorPropertiesData const& detProp, double tcut, bool doDedx);
27 
28  Propagator*
29  clone() const override
30  {
31  return new PropYZLine(*this);
32  }
33 
34  /// Propagate without error.
35  std::optional<double> short_vec_prop(KTrack& trk,
36  const std::shared_ptr<const Surface>& surf,
38  bool doDedx,
39  TrackMatrix* prop_matrix = 0,
40  TrackError* noise_matrix = 0) const override;
41 
42  /// Propagate without error to surface whose origin parameters coincide with track position.
43  std::optional<double> origin_vec_prop(KTrack& trk,
44  const std::shared_ptr<const Surface>& porient,
45  TrackMatrix* prop_matrix = 0) const override;
46 
47  private:
48  /// The following methods transform the track parameters from
49  /// initial surface to SurfYZLine origin surface, and generate a
50  /// propagation matrix. The first group of function parameters
51  /// are the orientation surface parameters of the initial surface.
52  /// The second group of function parameters are the orientation
53  /// parameters of the of the destination surface. The origin
54  /// parameters of the destination surface are assumed to match the
55  /// position of the track.
56 
57  /// Transform yz line -> yz line.
58 
59  bool transformYZLine(double phi1,
60  double phi2,
61  TrackVector& vec,
63  TrackMatrix* prop_matrix) const;
64 
65  /// Transform yz plane -> yz line.
66 
67  bool transformYZPlane(double phi1,
68  double phi2,
69  TrackVector& vec,
71  TrackMatrix* prop_matrix) const;
72  /// Transform xyz plane -> yz line.
73 
74  bool transformXYZPlane(double theta1,
75  double phi1,
76  double phi2,
77  TrackVector& vec,
79  TrackMatrix* prop_matrix) const;
80  };
81 }
82 
83 #endif
TrackDirection
Track direction enum.
bool transformXYZPlane(double theta1, double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform xyz plane -&gt; yz line.
KSymMatrix< 5 >::type TrackError
Track error matrix, dimension 5x5.
bool transformYZLine(double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform yz line -&gt; yz line.
std::optional< double > origin_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &porient, TrackMatrix *prop_matrix=0) const override
Propagate without error to surface whose origin parameters coincide with track position.
bool transformYZPlane(double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform yz plane -&gt; yz line.
Base class for Kalman filter track propagator.
KVector< 5 >::type TrackVector
Track state vector, dimension 5.
tuple dir
Definition: dropbox.py:28
Propagator * clone() const override
Clone method.
Definition: PropYZLine.h:29
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
PropYZLine(detinfo::DetectorPropertiesData const &detProp, double tcut, bool doDedx)
Definition: PropYZLine.cxx:28
std::optional< double > short_vec_prop(KTrack &trk, const std::shared_ptr< const Surface > &surf, Propagator::PropDirection dir, bool doDedx, TrackMatrix *prop_matrix=0, TrackError *noise_matrix=0) const override
Propagate without error.
auto const detProp
PropDirection
Propagation direction enum.
Definition: Propagator.h:94