CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/RecoTracker/ConversionSeedGenerators/interface/IdealHelixParameters.h

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 Given a track, evaluates the status of the track finding in the XY plane 
00011 the point of tangent of the circle to the reference point(in general the PrimaryVertex or the BeamSpot)
00012 
00013 The approach is the following.
00014 Given a track, 
00015 -extract the innermomentum at the innerpoint
00016 -evalaute the radius of curvature and the center of the circle
00017 -solving geometrical equation, evaluate the point of tangence to the circle, starting from the PV
00018 -evaluate the status at this point of tangence T
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   //  std::stringstream ss;
00062 
00063 };
00064 #endif