Go to the documentation of this file.00001 #ifndef IDEALHELIXPARAMETERS_H
00002 #define IDEALHELIXPARAMETERS_H
00003
00004 #include "DataFormats/TrackReco/interface/Track.h"
00005 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00006 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
00007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 class IdealHelixParameters{
00022
00023 public:
00024
00025 IdealHelixParameters():
00026 _magnField(0),_track(0),
00027 _refPoint (math::XYZVector(0,0,0)),
00028 _tangentPoint (math::XYZVector(0,0,0)),
00029 _MomentumAtTangentPoint(math::XYZVector(0,0,0)){};
00030 ~IdealHelixParameters(){};
00031
00032 void setMagnField(const MagneticField* magnField){_magnField=magnField;}
00033 void setData(const reco::Track* track, math::XYZVector refPoint=math::XYZVector(0,0,0));
00034 void setData(const reco::Track* track, math::XYZPoint ref);
00035
00036 bool isTangentPointDistanceLessThan(float rmax, const reco::Track* track, const math::XYZVector refPoint);
00037
00038 math::XYZVector GetCircleCenter() const {return _circleCenter;}
00039 math::XYZVector GetTangentPoint() const {return _tangentPoint;}
00040 math::XYZVector GetMomentumAtTangentPoint() const {return _MomentumAtTangentPoint;}
00041 float GetTransverseIPAtTangent() const {return _transverseIP;}
00042 float GetRotationAngle() const {return _rotationAngle;}
00043
00044 private:
00045
00046 void calculate();
00047 void evalCircleCenter();
00048 void evalTangentPoint();
00049 void evalMomentumatTangentPoint();
00050
00051 const MagneticField *_magnField;
00052 const reco::Track *_track;
00053 float _radius;
00054 math::XYZVector _circleCenter;
00055 math::XYZVector _refPoint;
00056 math::XYZVector _tangentPoint;
00057 math::XYZVector _MomentumAtTangentPoint;
00058 float _transverseIP;
00059 float _rotationAngle;
00060
00061
00062
00063 };
00064 #endif