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