File indexing completed on 2024-04-06 12:24:57
0001 #ifndef _TangentApproachInRPhi_H_
0002 #define _TangentApproachInRPhi_H_
0003
0004 #include "TrackingTools/PatternTools/interface/ClosestApproachOnHelices.h"
0005 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h"
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 class TangentApproachInRPhi : public ClosestApproachOnHelices {
0016 public:
0017 TangentApproachInRPhi() {
0018 status_ = false;
0019 intersection_ = false;
0020 }
0021
0022 bool calculate(const TrajectoryStateOnSurface& sta, const TrajectoryStateOnSurface& stb) override;
0023
0024 bool calculate(const FreeTrajectoryState& sta, const FreeTrajectoryState& stb) override;
0025
0026 bool status() const override { return status_; }
0027
0028
0029
0030
0031 std::pair<GlobalPoint, GlobalPoint> points() const override;
0032
0033
0034
0035 std::pair<GlobalTrajectoryParameters, GlobalTrajectoryParameters> trajectoryParameters() const;
0036
0037
0038 GlobalPoint crossingPoint() const override;
0039
0040
0041 float distance() const override;
0042
0043
0044 float perpdist() const;
0045
0046
0047
0048
0049 TangentApproachInRPhi* clone() const override { return new TangentApproachInRPhi(*this); }
0050
0051 private:
0052 bool calculate(const TrackCharge& chargeA,
0053 const GlobalVector& momentumA,
0054 const GlobalPoint& positionA,
0055 const TrackCharge& chargeB,
0056 const GlobalVector& momentumB,
0057 const GlobalPoint& positionB,
0058 const MagneticField& magField);
0059
0060
0061
0062
0063 GlobalTrajectoryParameters trajectoryParameters(const GlobalPoint& newpt,
0064 const GlobalTrajectoryParameters& oldpar) const;
0065
0066
0067 void circleParameters(const TrackCharge& charge,
0068 const GlobalVector& momemtum,
0069 const GlobalPoint& position,
0070 double& xc,
0071 double& yc,
0072 double& r,
0073 const MagneticField& magField) const;
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 int transverseCoord(double cxa,
0084 double cya,
0085 double ra,
0086 double cxb,
0087 double cyb,
0088 double rb,
0089 double& xg1,
0090 double& yg1,
0091 double& xg2,
0092 double& yg2) const;
0093
0094
0095 double zCoord(
0096 const GlobalVector& mom, const GlobalPoint& pos, double r, double xc, double yc, double xg, double yg) const;
0097
0098 private:
0099 bool status_;
0100 GlobalPoint posA, posB;
0101 GlobalTrajectoryParameters paramA, paramB;
0102 bool intersection_;
0103 };
0104
0105 #endif