11#include "CLHEP/Geometry/Point3D.h"
13#ifndef ENABLE_BACKWARDS_COMPATIBILITY
16#include "TrackUtil/Helix.h"
17#include "TrkReco/RkFitCylinder.h"
18#include "TrkReco/RkFitMaterial.h"
19#include "TrkReco/TRunge.h"
24 if ( dPhi[0] == 0 )
return -1;
26 if ( dPhi[1] == 0 )
return -1;
32 for (
int i = 0; i < 4 && j < 2; i++ )
37 if ( j < 2 )
return -1;
39 x = track.
helix().
x( ( dPhi[
n[0]] + dPhi[
n[1]] ) * .5 );
44 return fabs( track.
helix().
radius() * ( dPhi[
n[0]] - dPhi[
n[1]] ) *
45 sqrt( 1 + tanl * tanl ) );
52 const double ro = sqrt( point.x() * point.x() + point.y() * point.y() );
58 if ( dPhi[0] == 0 )
return -1;
60 if ( dPhi[1] == 0 )
return -1;
69 for (
int i = 0; i < 4 && j < 2; i++ )
75 if ( j < 2 )
return -1;
77 x = track.
helix().
x( ( dPhi[
n[0]] + dPhi[
n[1]] ) * .5 );
81 return fabs( track.
helix().
radius() * ( dPhi[
n[0]] - dPhi[
n[1]] ) *
82 sqrt( 1 + tanl * tanl ) );
88 double mass = 0.000511;
105 return ( r >=
ri_ - FLT_EPSILON && r <= ro_ + FLT_EPSILON && z >=
zb_ - FLT_EPSILON &&
106 z <=
zf_ + FLT_EPSILON );
115 return ( r <= ro_ + FLT_EPSILON && z >=
zb_ - FLT_EPSILON && z <=
zf_ + FLT_EPSILON );
HepGeom::Point3D< double > HepPoint3D
HepGeom::Point3D< double > HepPoint3D
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
double radius(void) const
returns radious of helix.
bool isInside2(const HepPoint3D &x) const
const RkFitMaterial * material_
bool isInside(const HepPoint3D &x) const
Check if the position x is inside the current cylinder.
void updateTrack(TRunge &track, double y[6]) const
double intersect(TRunge &track, HepPoint3D &x) const
Find intersection with Helix.
A class to represent a track in tracking.
Helix helix(void) const
returns helix class
void eloss(double path, const RkFitMaterial *material, double mass, double y[6], int index) const
double intersect_xy_plane(double z) const
double intersect_cylinder(double r) const