PropXYZPlane.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 ///
3 /// \file PropXYZPlane.h
4 ///
5 /// \brief Propagate to SurfXYZPlane surface.
6 ///
7 /// \author H. Greenlee
8 ///
9 /// Class for propagating to a destionation SurfYZPlane surface.
10 ///
11 ////////////////////////////////////////////////////////////////////////
12 
13 #ifndef PROPXYZPLANE_H
14 #define PROPXYZPLANE_H
15 
17 
18 namespace detinfo {
19  class DetectorPropertiesData;
20 }
21 
22 namespace trkf {
23 
24  class PropXYZPlane : public trkf::Propagator {
25  public:
26  /// Constructor.
27  PropXYZPlane(detinfo::DetectorPropertiesData const& detProp, double tcut, bool doDedx);
28 
29  Propagator*
30  clone() const override
31  {
32  return new PropXYZPlane(*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 SurfXYZPlane 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 -> xyz plane.
59 
60  bool transformYZLine(double phi1,
61  double theta2,
62  double phi2,
63  TrackVector& vec,
65  TrackMatrix* prop_matrix) const;
66 
67  /// Transform yz plane -> xyz plane.
68 
69  bool transformYZPlane(double phi1,
70  double theta2,
71  double phi2,
72  TrackVector& vec,
74  TrackMatrix* prop_matrix) const;
75  /// Transform xyz plane -> xyz plane.
76 
77  bool transformXYZPlane(double theta1,
78  double phi1,
79  double theta2,
80  double phi2,
81  TrackVector& vec,
83  TrackMatrix* prop_matrix) const;
84  };
85 }
86 
87 #endif
TrackDirection
Track direction enum.
Definition: Surface.h:56
KSymMatrix< 5 >::type TrackError
Track error matrix, dimension 5x5.
Propagator * clone() const override
Clone method.
Definition: PropXYZPlane.h:30
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.
PropDirection
Propagation direction enum.
Definition: Propagator.h:94