BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/MdcPatRec/MdcGeom/include/MdcGeom/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// C++ Headers --
38//---------------
39
40//----------------------
41// Base Class Headers --
42//----------------------
43#include "MdcGeom/TrkGeomTraj.h"
44
45//-------------------------------
46// Collaborating Class Headers --
47//-------------------------------
48#include "CLHEP/Geometry/Point3D.h"
49#ifndef ENABLE_BACKWARDS_COMPATIBILITY
50typedef HepGeom::Point3D<double> HepPoint3D;
51#endif
52#include "CLHEP/Vector/ThreeVector.h"
53using CLHEP::Hep3Vector;
54
55//------------------------------------
56// Collaborating Class Declarations --
57//------------------------------------
58class Trajectory;
59
60// ---------------------
61// -- Class Interface --
62// ---------------------
63
64class MdcSagTraj : public TrkGeomTraj {
65
66public:
67 // Constructors
68 MdcSagTraj( const double sag, const HepPoint3D& point1, const HepPoint3D& point2 );
69 MdcSagTraj( const MdcSagTraj& traj );
70
71 MdcSagTraj* clone() const;
72 // Destructor
73 virtual ~MdcSagTraj();
74
75 // Operators
77
78 double sag( void ) const { return _sag; }
79
80 // needed implementations for intersection with a Surface
81 HepPoint3D position( double ) const;
82 Hep3Vector direction( double ) const;
83 double curvature( double f = 0. ) const;
84 Hep3Vector delDirect( double ) const;
85 const Hep3Vector& rawDirection( void ) const { return _direction; }
86 void getInfo( double fltLen, HepPoint3D&, Hep3Vector& direction ) const;
87 void getInfo( double fltLen, HepPoint3D&, Hep3Vector& direction,
88 Hep3Vector& delDirect ) const;
89
90 virtual double distTo1stError( double s, double tol, int pathDir ) const;
91 virtual double distTo2ndError( double s, double tol, int pathDir ) const;
92 double deltaY( double fltLen ) const { return ( _a * fltLen + _b ) * fltLen; }
93 // Support Visitor pattern (see TrkGeomTraj.h)
94 void accept( TrkGeomTrajVisitor& visitor ) const;
95
96 // virtual int operator==( const MdcSagTraj& ) const;
97 // int operator!=( const MdcSagTraj& ) const;
98
99private:
100 // Data members
101 double _sag;
102 double _a;
103 double _b;
104 double _length;
105 // double _a_H;
106 // double _b_H;
107 HepPoint3D _start; // where the trajectory starts
108 HepPoint3D _stop; // where the trajectory stops
109 Hep3Vector _direction; // direction (unit) vector for
110 // null sag (straight line)
111
112 Hep3Vector deviation( double ) const; // displacement from the line trajectory
113 // at a given flightlength
114 // Note: if your class needs a copy constructor or an assignment operator,
115 // make one of the following public and implement it.
116 // MdcSagTraj( const MdcSagTraj& ); // Copy Constructor
117 // MdcSagTraj& operator= ( const MdcSagTraj& ); // Assignment op
118};
119
120#endif // DCHSAGTRAJ_H
HepGeom::Point3D< double > HepPoint3D
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
XmlRpcServer s
virtual double distTo1stError(double s, double tol, int pathDir) const
HepPoint3D position(double) const
double curvature(double f=0.) const
MdcSagTraj & operator=(const MdcSagTraj &)
MdcSagTraj * clone() const
MdcSagTraj(const MdcSagTraj &traj)
Hep3Vector delDirect(double) const
void getInfo(double fltLen, HepPoint3D &, Hep3Vector &direction) const
virtual double distTo2ndError(double s, double tol, int pathDir) const
virtual ~MdcSagTraj()
MdcSagTraj(const double sag, const HepPoint3D &point1, const HepPoint3D &point2)
void getInfo(double fltLen, HepPoint3D &, Hep3Vector &direction, Hep3Vector &delDirect) const
Hep3Vector direction(double) const
void accept(TrkGeomTrajVisitor &visitor) const