ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFmHelix: a helper helix class                                      //
//                                                                       //
///////////////////////////////////////////////////////////////////////////
#ifndef ALIFMPHYSICALHELIX_H
#define ALIFMPHYSICALHELIX_H

#include "AliFmThreeVector.h"
#include "AliFmHelix.h"

class AliFmPhysicalHelix : public AliFmHelix {
 public:
  // Requires: momentum, origin, signed Magnetic Field
  //           and Charge of particle (+/- 1)
  AliFmPhysicalHelix(const AliFmThreeVector<double>& v1,
		     const AliFmThreeVector<double>& v2,
		     double x, double y);
    
  // curvature, dip angle, phase, origin, h
  AliFmPhysicalHelix(double curvature, double dipAngle, double phase,
		     const AliFmThreeVector<double>& origin, int h=-1);
  AliFmPhysicalHelix();
  
  ~AliFmPhysicalHelix();
  
  // Requires:  signed Magnetic Field
  AliFmThreeVector<double> Momentum(double x) const;     // returns the momentum at origin
  AliFmThreeVector<double> MomentumAt(double x, double y) const; // returns momemtum at S
  int                   Charge(double x)   const;     // returns charge of particle
  // 2d DCA to x,y point signed relative to curvature
  double CurvatureSignedDistance(double x, double y) ;
  // 2d DCA to x,y point signed relative to rotation 
  double GeometricSignedDistance(double x, double y) ;
  // 3d DCA to 3d point signed relative to curvature
  double CurvatureSignedDistance(const AliFmThreeVector<double>& v) ;
  // 3d DCA to 3d point signed relative to rotation
  double GeometricSignedDistance(const AliFmThreeVector<double>& v) ;
  
#ifdef __ROOT__
  ClassDef(AliFmPhysicalHelix,1)
#endif
};

#endif
 AliFmPhysicalHelix.h:1
 AliFmPhysicalHelix.h:2
 AliFmPhysicalHelix.h:3
 AliFmPhysicalHelix.h:4
 AliFmPhysicalHelix.h:5
 AliFmPhysicalHelix.h:6
 AliFmPhysicalHelix.h:7
 AliFmPhysicalHelix.h:8
 AliFmPhysicalHelix.h:9
 AliFmPhysicalHelix.h:10
 AliFmPhysicalHelix.h:11
 AliFmPhysicalHelix.h:12
 AliFmPhysicalHelix.h:13
 AliFmPhysicalHelix.h:14
 AliFmPhysicalHelix.h:15
 AliFmPhysicalHelix.h:16
 AliFmPhysicalHelix.h:17
 AliFmPhysicalHelix.h:18
 AliFmPhysicalHelix.h:19
 AliFmPhysicalHelix.h:20
 AliFmPhysicalHelix.h:21
 AliFmPhysicalHelix.h:22
 AliFmPhysicalHelix.h:23
 AliFmPhysicalHelix.h:24
 AliFmPhysicalHelix.h:25
 AliFmPhysicalHelix.h:26
 AliFmPhysicalHelix.h:27
 AliFmPhysicalHelix.h:28
 AliFmPhysicalHelix.h:29
 AliFmPhysicalHelix.h:30
 AliFmPhysicalHelix.h:31
 AliFmPhysicalHelix.h:32
 AliFmPhysicalHelix.h:33
 AliFmPhysicalHelix.h:34
 AliFmPhysicalHelix.h:35
 AliFmPhysicalHelix.h:36
 AliFmPhysicalHelix.h:37
 AliFmPhysicalHelix.h:38
 AliFmPhysicalHelix.h:39
 AliFmPhysicalHelix.h:40
 AliFmPhysicalHelix.h:41
 AliFmPhysicalHelix.h:42
 AliFmPhysicalHelix.h:43
 AliFmPhysicalHelix.h:44
 AliFmPhysicalHelix.h:45