All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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.
bool transformXYZPlane(double theta1, double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform xyz plane -&gt; yz plane.
KSymMatrix< 5 >::type TrackError
Track error matrix, dimension 5x5.
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.
Propagator * clone() const override
Clone method.
Definition: PropYZPlane.h:30
bool transformYZPlane(double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform yz plane -&gt; yz plane.
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.
Base class for Kalman filter track propagator.
KVector< 5 >::type TrackVector
Track state vector, dimension 5.
bool transformYZLine(double phi1, double phi2, TrackVector &vec, Surface::TrackDirection &dir, TrackMatrix *prop_matrix) const
Transform yz line -&gt; yz plane.
PropYZPlane(detinfo::DetectorPropertiesData const &detProp, double tcut, bool doDedx)
Definition: PropYZPlane.cxx:28
tuple dir
Definition: dropbox.py:28
KMatrix< 5, 5 >::type TrackMatrix
General 5x5 matrix.
auto const detProp
PropDirection
Propagation direction enum.
Definition: Propagator.h:94