LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
SurfXYZPlane.h
Go to the documentation of this file.
1 
76 #ifndef SURFXYZPLANE_H
77 #define SURFXYZPLANE_H
78 
80 
81 namespace trkf {
82 
83  class SurfXYZPlane : public SurfPlane {
84  public:
86  SurfXYZPlane();
87 
89  SurfXYZPlane(double x0, double y0, double z0, double phi, double theta);
90 
92  SurfXYZPlane(double x0, double y0, double z0, double nx, double ny, double nz);
93 
95  virtual ~SurfXYZPlane();
96 
97  // Accessors.
98  double x0() const { return fX0; }
99  double y0() const { return fY0; }
100  double z0() const { return fZ0; }
101  double phi() const { return fPhi; }
102  double theta() const { return fTheta; }
103 
105  virtual Surface* clone() const;
106 
108  virtual bool isTrackValid(const TrackVector& vec) const;
109 
111  virtual void toLocal(const double xyz[3], double uvw[3]) const;
112 
114  virtual void toGlobal(const double uvw[3], double xyz[3]) const;
115 
117  virtual void getPosition(const TrackVector& vec, double xyz[3]) const;
118 
120  virtual void getMomentum(const TrackVector& vec,
121  double mom[3],
122  TrackDirection dir = UNKNOWN) const;
123 
125  virtual bool isParallel(const Surface& surf) const;
126 
128  virtual double distanceTo(const Surface& surf) const;
129 
131  virtual bool isEqual(const Surface& surf) const;
132 
134  virtual std::ostream& Print(std::ostream& out) const;
135 
136  private:
137  // Static attributes.
138 
139  static double fPhiTolerance;
140  static double fThetaTolerance;
141  static double fSepTolerance;
142 
143  // Attributes.
144 
145  double fX0;
146  double fY0;
147  double fZ0;
148  double fPhi;
149  double fTheta;
150  };
151 }
152 
153 #endif
virtual void getPosition(const TrackVector &vec, double xyz[3]) const
Get position of track.
TrackDirection
Track direction enum.
Definition: Surface.h:54
virtual bool isEqual(const Surface &surf) const
Test two surfaces for equality, within tolerance.
double y0() const
Y origin.
Definition: SurfXYZPlane.h:99
virtual std::ostream & Print(std::ostream &out) const
Printout.
static double fPhiTolerance
Phi tolerance for parallel.
Definition: SurfXYZPlane.h:139
virtual bool isParallel(const Surface &surf) const
Test whether two surfaces are parallel, within tolerance.
static double fSepTolerance
Separation tolerance for equal.
Definition: SurfXYZPlane.h:141
virtual bool isTrackValid(const TrackVector &vec) const
Surface-specific tests of validity of track parameters.
virtual double distanceTo(const Surface &surf) const
Find perpendicular forward distance to a parallel surface.
double fX0
X origin.
Definition: SurfXYZPlane.h:145
double phi() const
Rot. angle about x-axis (wire angle).
Definition: SurfXYZPlane.h:101
double x0() const
X origin.
Definition: SurfXYZPlane.h:98
virtual void toLocal(const double xyz[3], double uvw[3]) const
Transform global to local coordinates.
SurfXYZPlane()
Default constructor.
KVector< 5 >::type TrackVector
Track state vector, dimension 5.
double theta() const
Rot. angle about y&#39;-axis (projected Lorentz angle).
Definition: SurfXYZPlane.h:102
virtual void toGlobal(const double uvw[3], double xyz[3]) const
Transform local to global coordinates.
double fY0
Y origin.
Definition: SurfXYZPlane.h:146
Base class for Kalman filter planar surfaces.
TDirectory * dir
Definition: macro.C:5
double fTheta
Rotation angle about y&#39;-axis (projected Lorentz angle).
Definition: SurfXYZPlane.h:149
static double fThetaTolerance
Theta tolerance for parallel.
Definition: SurfXYZPlane.h:140
double z0() const
Z origin.
Definition: SurfXYZPlane.h:100
virtual ~SurfXYZPlane()
Destructor.
double fPhi
Rotation angle about x-axis (wire angle).
Definition: SurfXYZPlane.h:148
virtual void getMomentum(const TrackVector &vec, double mom[3], TrackDirection dir=UNKNOWN) const
Get momentum vector of track.
virtual Surface * clone() const
Clone method.
double fZ0
Z origin.
Definition: SurfXYZPlane.h:147