From c8403f5a2ce8ea7cfb88cb902e1af5e61614d1f5 Mon Sep 17 00:00:00 2001
From: myliu <201916234@mail.sdu.edu.cn>
Date: Wed, 28 Oct 2020 22:27:24 +0800
Subject: [PATCH] Improve the phiFormXY functionand the calculation of DCA

---
 .../DetSegmentation/DetSegmentation/GridDriftChamber.h |  6 ++++--
 Detector/DetSegmentation/src/GridDriftChamber.cpp      | 10 +++++-----
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h b/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
index 188a1f40..769b6716 100644
--- a/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
+++ b/Detector/DetSegmentation/DetSegmentation/GridDriftChamber.h
@@ -44,7 +44,7 @@ public:
   virtual Vector3D position(const CellID& aCellID) const;
   virtual CellID cellID(const Vector3D& aLocalPosition, const Vector3D& aGlobalPosition,
                         const VolumeID& aVolumeID) const;
-  virtual double distanceTrackWire(const CellID& cID, const TVector3& hit_start, const TVector3& hit_end) const;
+  virtual double distanceTrackWire(const CellID& cID, const TVector3& hit_start/*, const TVector3& hit_end*/) const;
 
   double phi(const CellID& cID) const;
   inline double cell_Size() const { return m_cellSize; }
@@ -55,7 +55,9 @@ public:
   // Setters
 
   inline double phiFromXY(const Vector3D& aposition) const {
-    return std::atan2(aposition.Y, aposition.X) ;
+    double beta =  std::atan2(aposition.Y, aposition.X) ;
+    if( beta < 0 ) { beta = beta + 2 * M_PI; }
+    return beta;
   }
 
   inline void setGeomParams(int layer, double layerphi, double R, double eps, double offset) {
diff --git a/Detector/DetSegmentation/src/GridDriftChamber.cpp b/Detector/DetSegmentation/src/GridDriftChamber.cpp
index 09432fb8..d2ca3196 100644
--- a/Detector/DetSegmentation/src/GridDriftChamber.cpp
+++ b/Detector/DetSegmentation/src/GridDriftChamber.cpp
@@ -79,8 +79,8 @@ double GridDriftChamber::phi(const CellID& cID) const {
   return (_currentLayerphi * 0.5) + binToPosition(phiValue, _currentLayerphi, m_offsetPhi);
 }
 
-double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hit_start,
-                                           const TVector3& hit_end) const {
+double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hit_start/*,
+                                           const TVector3& hit_end*/) const {
 
   auto layerIndex = _decoder->get(cID, "layer");
   updateParams(layerIndex);
@@ -88,10 +88,10 @@ double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hi
   double phi_start = phi(cID);
   double phi_end = phi_start + returnAlpha();
 
-  TVector3 Wstart = returnWirePosition(phi_start, 1);
-  TVector3 Wend = returnWirePosition(phi_end, -1);
+  TVector3 Wstart = 10*returnWirePosition(phi_start, -1); // Convert from cm to mm
+  TVector3 Wend = 10*returnWirePosition(phi_end, 1);   // Convert from cm to mm
 
-  TVector3 a = hit_end - hit_start;
+//  TVector3 a = hit_end - hit_start;
   TVector3 b = Wend - Wstart;
   TVector3 c = Wstart - hit_start;
 
-- 
GitLab