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.
Definition: Surface.h:56
KSymMatrix< 5 >::type TrackError
Track error matrix, dimension 5x5.
string dir
Propagator * clone() const override
Clone method.
Definition: PropYZLine.h:29
Base class for Kalman filter track propagator.
KVector< 5 >::type TrackVector
Track state vector, dimension 5.
General LArSoft Utilities.
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
PropDirection
Propagation direction enum.
Definition: Propagator.h:94