Belle II Software development
|
An algorithm to check if a hit is contained in a hyperbolic cosine hough box. More...
#include <HitInHyperBox.h>
Public Types | |
using | HoughBox = Box< DiscreteQ, DiscreteP, DiscreteZ0 > |
Hough space is 3D with axes q, p, z0 as described above. | |
Public Member Functions | |
Weight | operator() (const CDCRecoHit3D &recoHit, const HoughBox *hyperBox) |
Returns weight of the hit for the given hough box; in this algorithm - 1 if hit inside the box, NaN otherwise. | |
Static Public Member Functions | |
static bool | compareDistances (const HoughBox &hyperBox, const CDCRecoHit3D &lhsRecoHit, const CDCRecoHit3D &rhsRecoHit) |
Compares distances from two hits to the track represented by the given box. | |
static float | centerX (const HoughBox &hyperBox) |
Returns center value of the box along first (Q) axis. | |
static float | centerY (const HoughBox &hyperBox) |
Returns center value of the box along second (P) axis. | |
static float | centerZ (const HoughBox &hyperBox) |
Returns center value of the box along third (Z0) axis. | |
static float | deltaX (const HoughBox &hyperBox) |
Returns half width of the box along first (Q) axis. | |
static const char * | debugLine () |
ROOT expression of the track hypothesis. | |
Static Private Member Functions | |
static double | catZ (const double q, const double p, const double R) |
Returns z(R) for the catenary with parameters q = E/p_t and p = p_z/E. | |
An algorithm to check if a hit is contained in a hyperbolic cosine hough box.
The exact parameterization is z(R) = 1 / mu * (sqrt(1 - p * p) * cosh(R * mu / q + arcsinh(p / sqrt(1 - p * p))) - 1) + z0
q is p_t / E - transverse fraction of energy p is p_z / E - longitudinal fraction of energy mu is gcB / E - inverse of scale; ranges from 0.0375 for E=6GeV, g=0.5 to 2.25 for E=1GeV, g=5.0 z0 is z at R=0 z and R are in units of CDC size
If we apply a constraint z0=0, The tree will not perform well as mu is highly correlated to q (and p)
Instead we relax z0=0 and apply mu=q Then for a better continuity around g=0 (sign flip), we take 1/q as new q
Resulting parameterization is z(R) = q * (sqrt(1 - p * p) * cosh(R + arcsinh(p / sqrt(1 - p * p))) - 1) + z0 Which can still provide reasonable fits.
Additionally, box edges are behaving more or less on same scale near origin and near edges of CDC if z(R) = +-dQ + 1 / (q +- dQ) * (sqrt(1 - p * p) * cosh(R + arcsinh(p / sqrt(1 - p * p))) - 1) + z0
Definition at line 52 of file HitInHyperBox.h.
using HoughBox = Box<DiscreteQ, DiscreteP, DiscreteZ0> |
Hough space is 3D with axes q, p, z0 as described above.
Definition at line 56 of file HitInHyperBox.h.
|
inlinestaticprivate |
Returns z(R) for the catenary with parameters q = E/p_t and p = p_z/E.
Definition at line 106 of file HitInHyperBox.h.
|
inlinestatic |
Returns center value of the box along first (Q) axis.
Definition at line 114 of file HitInHyperBox.h.
|
inlinestatic |
Returns center value of the box along second (P) axis.
Definition at line 120 of file HitInHyperBox.h.
|
inlinestatic |
Returns center value of the box along third (Z0) axis.
Definition at line 126 of file HitInHyperBox.h.
|
inlinestatic |
Compares distances from two hits to the track represented by the given box.
The comparison is done based on reconstructed Z coordinates of hits and track Z position.
Definition at line 86 of file HitInHyperBox.h.
|
inlinestatic |
ROOT expression of the track hypothesis.
Definition at line 140 of file HitInHyperBox.h.
|
inlinestatic |
Returns half width of the box along first (Q) axis.
Definition at line 132 of file HitInHyperBox.h.
|
inline |
Returns weight of the hit for the given hough box; in this algorithm - 1 if hit inside the box, NaN otherwise.
Definition at line 59 of file HitInHyperBox.h.