BOSS 6.6.4.p01
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcSagTraj.h
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: MdcSagTraj.h,v 1.3 2009/12/17 00:38:40 zhangy Exp $
4//
5// Description:
6// Class MdcSagTraj.
7// the flight length at the moment is the flight length of a linear
8// trajectory, the sag is approximated with a parabola (for the
9// moment, maybe at a later time we can replace with a more accurate
10// description, cosh for example)
11//
12//
13// Environment:
14// Software developed for the BaBar Detector at the SLAC B-Factory.
15//
16// Author List:
17// R. Stroili originator
18//
19//
20// Copyright Information:
21// Copyright (C) 1998 INFN & Padova University
22//
23// History:
24// Migration for BESIII MDC
25//
26//------------------------------------------------------------------------
27
28#ifndef DCHSAGTRAJ_H
29#define DCHSAGTRAJ_H
30
31//-------------
32// C Headers --
33//-------------
34extern "C" {
35}
36
37//---------------
38// C++ Headers --
39//---------------
40
41//----------------------
42// Base Class Headers --
43//----------------------
44#include "MdcGeom/TrkGeomTraj.h"
45
46//-------------------------------
47// Collaborating Class Headers --
48//-------------------------------
49#include "CLHEP/Geometry/Point3D.h"
50#ifndef ENABLE_BACKWARDS_COMPATIBILITY
52#endif
53#include "CLHEP/Vector/ThreeVector.h"
54using CLHEP::Hep3Vector;
55
56//------------------------------------
57// Collaborating Class Declarations --
58//------------------------------------
59class Trajectory;
60
61// ---------------------
62// -- Class Interface --
63// ---------------------
64
65class MdcSagTraj : public TrkGeomTraj {
66
67public:
68
69 // Constructors
70 MdcSagTraj(const double sag, const HepPoint3D& point1, const HepPoint3D& point2);
71 MdcSagTraj(const MdcSagTraj& traj);
72
73 MdcSagTraj* clone() const;
74 // Destructor
75 virtual ~MdcSagTraj( );
76
77 // Operators
79
80 double sag( void ) const { return _sag; }
81
82// needed implementations for intersection with a Surface
83 HepPoint3D position( double ) const;
84 Hep3Vector direction( double ) const;
85 double curvature( double f = 0. ) const;
86 Hep3Vector delDirect( double ) const;
87 const Hep3Vector& rawDirection( void ) const { return _direction; }
88 void getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction) const;
89 void getInfo(double fltLen, HepPoint3D& , Hep3Vector& direction,
90 Hep3Vector& delDirect) const;
91
92 virtual double distTo1stError(double s, double tol, int pathDir) const;
93 virtual double distTo2ndError(double s, double tol, int pathDir) const;
94 double deltaY(double fltLen) const { return (_a*fltLen+_b)*fltLen; }
95 // Support Visitor pattern (see TrkGeomTraj.h)
96 void accept(TrkGeomTrajVisitor& visitor) const;
97
98// virtual int operator==( const MdcSagTraj& ) const;
99// int operator!=( const MdcSagTraj& ) const;
100
101private:
102
103 // Data members
104 double _sag;
105 double _a;
106 double _b;
107 double _length;
108// double _a_H;
109// double _b_H;
110 HepPoint3D _start; // where the trajectory starts
111 HepPoint3D _stop; // where the trajectory stops
112 Hep3Vector _direction; // direction (unit) vector for
113 // null sag (straight line)
114
115 Hep3Vector deviation(double) const; // displacement from the line trajectory
116 // at a given flightlength
117 //Note: if your class needs a copy constructor or an assignment operator,
118 // make one of the following public and implement it.
119// MdcSagTraj( const MdcSagTraj& ); // Copy Constructor
120// MdcSagTraj& operator= ( const MdcSagTraj& ); // Assignment op
121
122};
123
124#endif // DCHSAGTRAJ_H
XmlRpcServer s
Definition: HelloServer.cpp:11
HepGeom::Point3D< double > HepPoint3D
Definition: MdcSagTraj.h:51
virtual ~MdcSagTraj()
Definition: MdcSagTraj.cxx:79
const Hep3Vector & rawDirection(void) const
Definition: MdcSagTraj.h:87
HepPoint3D position(double) const
Definition: MdcSagTraj.cxx:121
double curvature(double f=0.) const
Definition: MdcSagTraj.cxx:190
MdcSagTraj & operator=(const MdcSagTraj &)
Definition: MdcSagTraj.cxx:94
MdcSagTraj * clone() const
Definition: MdcSagTraj.cxx:84
double sag(void) const
Definition: MdcSagTraj.h:80
Hep3Vector delDirect(double) const
Definition: MdcSagTraj.cxx:146
void getInfo(double fltLen, HepPoint3D &, Hep3Vector &direction) const
Definition: MdcSagTraj.cxx:152
virtual double distTo2ndError(double s, double tol, int pathDir) const
Definition: MdcSagTraj.cxx:204
virtual double distTo1stError(double s, double tol, int pathDir) const
Definition: MdcSagTraj.cxx:196
double deltaY(double fltLen) const
Definition: MdcSagTraj.h:94
Hep3Vector direction(double) const
Definition: MdcSagTraj.cxx:132
void accept(TrkGeomTrajVisitor &visitor) const
Definition: MdcSagTraj.cxx:212