 |
Belle II Software
release-05-01-25
|
17 #include "CLHEP/Matrix/Vector.h"
18 #include "CLHEP/Matrix/Matrix.h"
19 #ifndef CLHEP_POINT3D_H
20 #include "CLHEP/Geometry/Point3D.h"
23 #ifdef TRGCDC_SHORT_NAMES
24 #define TCLpar TRGCDCLpar
54 void circle(
double x1,
double y1,
double x2,
double y2,
55 double x3,
double y3);
62 CLHEP::HepVector
center()
const;
64 double s(
double x,
double y)
const;
66 inline double d(
double x,
double y)
const;
68 inline double dr(
double x,
double y)
const;
70 double s(
double r,
int dir = 0)
const;
72 double phi(
double r,
int dir = 0)
const;
74 inline int sd(
double r,
double x,
double y,
75 double limit,
double&
s,
double&
d)
const;
135 inline void rotate(
double c,
double s);
137 inline void move(
double x,
double y);
146 inline double check()
const;
148 CLHEP::HepMatrix
dldc()
const;
150 inline double d0(
double x,
double y)
const;
154 double x(
double r)
const;
156 double y(
double r)
const;
158 void xhyh(
double x,
double y,
double& xh,
double& yh)
const;
162 bool xy(
double,
double&,
double&,
int dir = 0)
const;
164 inline double r_max()
const;
170 double da()
const {
return 2 *
gamma() / (std::sqrt(
xi2()) + 1); }
172 inline double arcfun(
double xh,
double yh)
const;
258 double dd =
d0(
x,
y);
259 const double approx_limit = 0.2;
260 if (std::fabs(
m_kappa * dd) > approx_limit)
return -1;
261 return dd * (1 -
m_kappa * dd);
266 double dx =
xc() -
x;
267 double dy =
yc() -
y;
268 double r = 0.5 / std::fabs(
m_kappa);
269 return std::fabs(std::sqrt(dx * dx + dy * dy) - r);
274 if (
m_kappa == 0)
return 100000000.0;
285 double xi = std::sqrt(
xi2());
286 double xinv = 1.0 / xi;
287 double ar2kap = std::fabs(r2kap);
289 double a1 = ar2kap * cross * xinv;
290 double a2 = r2kap * (
m_alpha * xh +
m_beta * yh) * xinv + xi;
291 if (a1 >= 0 && a2 > 0 && a1 < 0.3) {
292 double arg2 = a1 * a1;
293 return cross * (1.0 + arg2 * (1. / 6. + arg2 * (3. / 40.))) * xinv;
295 double at2 = std::atan2(a1, a2);
296 if (at2 < 0) at2 += (2 * M_PI);
302 double limit,
double& s,
double& d)
const
305 double dd =
d0(
x,
y);
307 double d_cross_limit =
d * limit;
308 if (d_cross_limit < 0 || d_cross_limit > limit * limit)
return 0;
310 double rho = 1. / (-2 *
m_kappa);
311 double cosPhi = (rc * rc + rho * rho - r * r) / (-2 * rc * rho);
312 cosPhi = cosPhi > 1.0 ? 1.0 : cosPhi;
313 cosPhi = cosPhi < -1.0 ? -1.0 : cosPhi;
314 double phi = std::acos(cosPhi);
315 s = std::fabs(rho) *
phi;
316 if (0.0 ==
phi)
return 0;
317 d *= r / (std::fabs(rc) * std::sin(
phi));
319 if (fabs(
d) > fabs(limit))
return 0;
320 d_cross_limit =
d * limit;
321 if (d_cross_limit > limit * limit)
return 0;
327 CLHEP::HepVector a(5);
328 double dd =
d0(pivot.x(), pivot.y());
329 a(1) = dd * (
m_kappa * dd - 1);
330 a(2) = (
m_kappa > 0) ? std::atan2(
yc() - pivot.y(),
xc() - pivot.x()) + M_PI
331 : std::atan2(pivot.y() -
yc(), pivot.x() -
xc()) - M_PI;
Cpar(const TRGCDCLpar &)
constructor of Cpar class
double dr(double x, double y) const
const member functions
void move(double x, double y)
private member functions
friend int intersect(const TRGCDCLpar &, const TRGCDCLpar &, CLHEP::HepVector &, CLHEP::HepVector &)
intersection
bool xy(double, double &, double &, int dir=0) const
private const member functions
double beta() const
private const member functions
CLHEP::HepVector center() const
const member functions
double sfi() const
returns parameter of Cpar class
double y(double r) const
private const member functions
CLHEP::HepVector Hpar(const HepGeom::Point3D< double > &pivot) const
const member functions
double kr2g(double r) const
private const member functions
void circle(double x1, double y1, double x2, double y2, double x3, double y3)
circle
double m_cfi
parameter of Cpar class
double xi() const
returns parameter of Cpar class
virtual ~TRGCDCLpar()
Destructor.
double check() const
private const member functions
double cu() const
returns parameter of Cpar class
double m_alpha
data members
friend std::ostream & operator<<(std::ostream &o, TRGCDCLpar &)
ostream operator
double alpha() const
private const member functions
double m_cu
parameter of Cpar class
double phi(double r, int dir=0) const
const member functions
double x(double r) const
private const member functions
double radius() const
const member functions
void neg()
member functions
double r_max() const
private const member functions
static const double BELLE_ALPHA
belle alpha
double m_gamma
data members
double cfi() const
returns parameter of Cpar class
double d0(double x, double y) const
private const member functions
double yc() const
private const member functions
Abstract base class for different kinds of events.
double da() const
private const member functions
double gamma() const
private const member functions
double d(double x, double y) const
const member functions
double xc() const
private const member functions
double kappa() const
const member functions
double m_da
parameter of Cpar class
double m_fi
parameter of Cpar class
double xi2() const
private const member functions
int sd(double r, double x, double y, double limit, double &s, double &d) const
const member functions
double m_sfi
parameter of Cpar class
double fi() const
returns parameter of Cpar class
bool operator==(const TRGCDCLpar &) const
comparison operators
double m_kappa
data members
CLHEP::HepMatrix dldc() const
private const member functions
bool operator!=(const TRGCDCLpar &) const
comparison operators
double da() const
returns parameter of Cpar class
const TRGCDCLpar & operator=(const TRGCDCLpar &)
assignment operator(s)
void scale(double s)
private member functions
double m_beta
data members
double arcfun(double xh, double yh) const
private const member functions
void rotate(double c, double s)
private member functions
double s(double x, double y) const
const member functions
void xhyh(double x, double y, double &xh, double &yh) const
private const member functions